OSDN Git Service

* config/rs6000/linux-unwind.h (ppc_fallback_frame_state): Point
[pf3gnuchains/gcc-fork.git] / gcc / ChangeLog
1 2007-10-20  Jakub Jelinek  <jakub@redhat.com>
2
3         * config/rs6000/linux-unwind.h (ppc_fallback_frame_state): Point
4         saved CR2 offset to low 32 bits of regs->ccr rather than the whole
5         64-bit register in 64-bit libgcc.
6
7 2007-10-20  Eric B. Weddington  <eweddington@cso.atmel.com>
8
9         * config/avr/avr.c (avr_mcu_types): Add at90pwm2b, at90pwm3b.
10         * config/avr/avr.h (LINK_SPEC): Likewise.
11         (CRT_BINUTILS_SPECS): Likewsie.
12         * config/avr/t-avr (MULTILIB_MATCHES): Likewise.
13
14 2007-10-20  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
15
16         * doc/invoke.texi (Warning Options): Move -w, -Werror, -Werror=
17         and -Wfatal-errors together.
18         
19 2007-10-20  Alan Modra  <amodra@bigpond.net.au>
20
21         PR target/33812
22         * config/rs6000/rs6000.c (rs6000_emit_epilogue): Revert 2007-05-16
23         change for vrsave, ie restore after frame pop.
24
25 2007-10-19  David S. Miller  <davem@davemloft.net>
26
27         * config/sparc/niagara2.md: Fix copyright notice.
28
29 2007-10-19  Sebastian Pop  <sebastian.pop@amd.com>
30
31         PR tree-optimization/23820
32         PR tree-optimization/24309
33         PR tree-optimization/33766
34         * testsuite/gcc.dg/tree-ssa/pr23820.c: New.
35         * testsuite/gcc.dg/tree-ssa/pr24309.c: New.
36         * testsuite/gcc.dg/tree-ssa/pr33766.c: New.
37         * testsuite/gcc.dg/tree-ssa/ltrans-3.c: XFAILed.
38         * tree-loop-linear.c (perfect_loop_nest_depth): New.
39         (linear_transform_loops): Use perfect_loop_nest_depth.
40         * lambda-code.c (perfect_nest_p): Outer loops in perfect nests 
41         should have a single condition: their exit.
42
43 2007-10-19  Richard Guenther  <rguenther@suse.de>
44
45         PR middle-end/33816
46         PR middle-end/32921
47         * stor-layout.c (layout_type): Assert that aggregates do not
48         have their alias sets set.
49         * alias.c (get_alias_set): Return alias set zero for incomplete
50         types, return the alias set of the element for incomplete array
51         types, but do not remember these.
52
53 2007-10-19  Richard Guenther  <rguenther@suse.de>
54
55         Revert
56         2007-10-19  Richard Guenther  <rguenther@suse.de>
57
58         PR middle-end/32921
59         * tree.c (build_array_type): Do not re-layout unbound array
60         types.
61
62 2007-10-19  Richard Guenther  <rguenther@suse.de>
63
64         PR middle-end/32921
65         * tree.c (build_array_type): Do not re-layout unbound array
66         types.
67
68 2007-10-19  Richard Sandiford  <rsandifo@nildram.co.uk>
69
70         * config/mips/mips.c (mips_canonicalize_comparison):  Check
71         mips_relational_operand_ok_p before trying to rewrite the test.
72         Only calculate PLUS_ONE if needed.
73         (mips_emit_int_relational): Don't call mips_relational_operand_ok_p
74         here.
75
76 2007-10-19  Richard Sandiford  <rsandifo@nildram.co.uk>
77
78         * config/mips/mips.c (mips16e_build_save_restore): Fix *OFFSET_PTR
79         calculation.
80
81 2007-10-19  Richard Sandiford  <rsandifo@nildram.co.uk>
82
83         * config/mips/mips.c (mips_call_tls_get_addr): Don't claim that
84         the call uses the incoming value of $2.
85
86 2007-10-19  Richard Sandiford  <rsandifo@nildram.co.uk>
87
88         * config/mips/mips.c (mips_call_tls_get_addr): Use gen_const_mem
89         rather then gen_rtx_MEM.
90         (mips_setup_incoming_varargs): Use gen_frame_mem rather than
91         gen_rtx_MEM.
92         (mips_set_return_address): Likewise.
93         (mips_restore_gp): Likewise.
94
95 2007-10-19  Richard Sandiford  <rsandifo@nildram.co.uk>
96
97         * config/mips/mips.c (gpr_mode): Delete.
98         (mips16e_build_save_restore): Use word_mode and UNITS_PER_WORD
99         instead of gpr_mode.
100         (mips_for_each_saved_reg): Likewise.
101         (mips_expand_prologue, mips_expand_epilogue): Likewise.
102         (override_options): Don't initialize gpr_mode.
103         * config/mips/mips.md (eh_return): Use word_mode instead of gpr_mode.
104
105 2007-10-19  Richard Sandiford  <rsandifo@nildram.co.uk>
106
107         * config/mips/mips.c (mips_hard_regno_nregs): Put the UNITS_PER_WORD
108         case last.
109         (mips_class_max_nregs): Calculate the smallest consituent register
110         size and use that to determine an upper bound on the number of
111         registers.
112
113 2007-10-19  Richard Sandiford  <rsandifo@nildram.co.uk>
114
115         * config/mips/mips.c (mips16_copy_fpr_return_value): New function,
116         split out from...
117         (mips_expand_epilogue): ...here.
118         (mips_mdebug_abi_name): New function, split out from...
119         (mips_file_start): ...here.
120         (mips_hard_regno_mode_ok_p): New function, split out from...
121         (override_options): ...here.
122         (mips_expand_builtin_1): New function, split out from...
123         (mips_expand_buitin): ...here.  Abort if we don't recognize
124         the function.
125
126 2007-10-19  Richard Sandiford  <rsandifo@nildram.co.uk>
127
128         * config/mips/mips.c (build_mips16_function_stub): Load the
129         target address into $1 before transfering the arguments.
130         Don't use ".set noreorder".
131         (build_mips16_call_stub): Likewise.
132
133 2007-10-19  Richard Sandiford  <rsandifo@nildram.co.uk>
134
135         * config/mips/mips.c (mips_output_32bit_xfer): New function.
136         (mips_output_64bit_xfer): Likewise.
137         (mips16_fp_args): Rename to...
138         (mips_output_args_xfer): ...this and replace the FROM_FP_P argument
139         with a DIRECTION argument.  Use mips_output_32bit_xfer and
140         mips_output_64bit_xfer.
141         (build_mips16_function_stub): Update accordingly.
142         (mips16_fpret_double): Delete.
143         (build_mips16_call_stub): Update after above changes.
144         Use mips_output_32bit_xfer.  Use mips_output_64bit_xfer instead
145         of mips16_fpret_double.  Use GP_REG_RETURN.
146
147 2007-10-19  Richard Sandiford  <rsandifo@nildram.co.uk>
148
149         * config/mips/mips.c (mips16_fp_args): Remove the FILE argument and
150         use asm_out_file instead.
151         (build_mips16_function_stub): Likewise.
152         (build_mips16_call_stub, mips_output_function_prologue): Update
153         accordingly.
154
155 2007-10-18  David S. Miller  <davem@davemloft.net>
156
157         Add Niagara-2 support.
158         * doc/invoke.texi: Document -m{cpu,tune}=niagara2.
159         * config.gcc: Add niagara2 to cpu and tune lists for sparc.
160         * config/sparc/sparc.md (sparc_cpu_attr): Add niagara2.
161         (include): Add inclusion of niagara2.md
162         * config/sparc/sparc.c (niagara2_costs): New.
163         (sparc_override_options): Add niagara2 entry to cpu_default[]
164         and cpu_table[].  Set align_functions to 32 on Niagara2.  Use
165         niagara2_costs when PROCESSOR_NIAGARA2.  Handle Niagara2 for
166         PARAM_SIMULTANEOUS_PREFETCHES and PARAM_L1_CACHE_LINE_SIZE.
167         (sparc_initialize_trampoline): Handle niagara2 like niagara.
168         (sparc64_initialize_trampoline): Likewise.
169         (sparc_use_sched_lookahead): Likewise.
170         (sparc_issue_rate): Likewise.
171         * config/sparc/sol2-bi.h: Handle TARGET_CPU_niagara2 and
172         mcpu=niagara2
173         * config/sparc/sparc.h (TARGET_CPU_niagara2): Define.
174         ({CPP,ASM}_CPU64_DEFAULT_SPEC): Set appropriately for
175         TARGET_CPU_niagara2.
176         (PROCESSOR_NIAGARA2): New.
177         (REGISTER_MOVE_COST): Handle PROCESSOR_NIAGARA2.
178         (BRANCH_COST): Likewise.
179         * config/sparc/linux64.h: Handle TARGET_CPU_niagara2.
180         * config/sparc/sol2.h: Likewise.
181         * config/sparc/niagara2.md: New file.
182
183 2007-10-18  Richard Sandiford  <rsandifo@nildram.co.uk>
184
185         * config/mips/mips.c (mips_frame_info): Remove gp_reg_size and
186         and fp_reg_size.
187         (mips_compute_frame_info): Remove associated code.
188         (mips16e_build_save_restore): Check num_fp instead of fp_reg_size.
189
190 2007-10-18  Richard Sandiford  <rsandifo@nildram.co.uk>
191
192         * config/mips/mips-protos.h (compute_frame_size): Delete.
193         * config/mips/mips.h: Update comments.
194         * config/mips/mips.c (mips_frame_info): Remove initialized.
195         (compute_frame_size): Rename to...
196         (mips_compute_frame_info): ...this and make static.  Remove the
197         SIZE argument and return no value.  Remove the setting of initialized.
198         Update rest of file accordingly.
199         (mips_set_return_address): Don't call compute_frame_size.
200         (mips_can_use_return_insn): Don't check df_regs_ever_live_p (31).
201         Don't call compute_frame_size.
202
203 2007-10-18  Richard Sandiford  <rsandifo@nildram.co.uk>
204
205         * config/mips/mips-protos.h (mips_frame_pointer_required): Declare.
206         * config/mips/mips.h (FRAME_POINTER_REQUIRED): Use
207         mips_hard_frame_pointer_required.
208         (CAN_ELIMINATE): Rely on FRAME_POINTER_REQUIRED to check for
209         large MIPS16 frames.
210         * config/mips/mips.c (mips_frame_pointer_required): New function.
211
212 2007-10-18  Richard Sandiford  <rsandifo@nildram.co.uk>
213
214         * config/mips/mips.c (mips_frame_info): Add arg_pointer_offset
215         and hard_frame_pointer_offset.
216         (mips_debugger_offset): Use hard_frame_pointer_offset.
217         (mips16e_collect_argument_save_p): Likewise.
218         (compute_frame_size): Initialize arg_pointer_offset and
219         hard_frame_pointer_offset.
220         (mips_initial_elimination_offset): Use them.
221         (mips_output_function_prologue): Use hard_frame_pointer_offset.
222         (mips_expand_prologue, mips_expand_epilogue): Likewise.
223
224 2007-10-18  Richard Sandiford  <rsandifo@nildram.co.uk>
225
226         * config/mips/mips.h (STARTING_FRAME_OFFSET): Remove rtl
227         profiling code.
228         * config/mips/mips.c (mips_frame_info): Give num_gp and num_fp type
229         "unsigned int" rather than "int" and put them with the other
230         register-related fields.  Put expanded comments above fields
231         rather than to their right.
232         (mips16e_mask_registers): Replace the GP_REG_SIZE_PTR argument
233         with a NUM_REGS_PTR argument.
234         (mips16e_save_restore_pattern_p): Update accordingly.
235         (compute_frame_size): Clarify frame diagram.  Rewrite.
236
237 2007-10-18  Richard Sandiford  <rsandifo@nildram.co.uk>
238
239         * config/mips/mips-ftypes.def: New file.
240         * config/mips/mips.c (MIPS_FTYPE_NAME1, MIPS_FTYPE_NAME2)
241         (MIPS_FTYPE_NAME3, MIPS_FTYPE_NAME4): New macros.
242         (mips_function_type): Redefine using mips-ftypes.def.
243         (dsp_bdesc): Use POINTER rather than PTR in the MIPS_*_FTYPE_* names.
244         (mips_builtin_vector_type): New function.
245         (MIPS_ATYPE_VOID, MIPS_ATYPE_INT, MIPS_ATYPE_POINTER, MIPS_ATYPE_SI)
246         (MIPS_ATYPE_USI, MIPS_ATYPE_DI, MIPS_ATYPE_SF, MIPS_ATYPE_DF)
247         (MIPS_ATYPE_V2SF, MIPS_ATYPE_V2HI, MIPS_ATYPE_V4QI, MIPS_FTYPE_ATYPES1)
248         (MIPS_FTYPE_ATYPES2, MIPS_FTYPE_ATYPES3, MIPS_FTYPE_ATYPES4): New
249         macros.
250         (mips_build_function_type): New function.
251         (mips_init_builtins): Use it to create types lazily.
252
253 2007-10-18  Richard Sandiford  <rsandifo@nildram.co.uk>
254
255         * config/mips/mips.h (set_volatile): Delete.
256         * config/mips/mips.c (set_volatile): Delete.
257         (mips_print_operand_punctuation): New function, split out from
258         print_operand.  Remove '%{', '%}', '%~', '%&' and '%!'.
259         Use the same character ordering in the code and the comments.
260         Use a recursive call to handle '*'.  Abort on unknown characters.
261         (mips_init_print_operand_punct): New function, split out from
262         override_options.
263         (mips_print_int_branch_condition): New function, split out from
264         print_operand.  Use GET_RTX_NAME.  Use output_operand_lossage
265         to report unexpected codes.
266         (mips_print_float_branch_condition): New function, split out from
267         print_operand.  Use output_operand_lossage to report unexpected codes.
268         (print_operand): Rework to use a case statement.  Use the
269         same letter ordering in the code and the comments.  Use
270         output_operand_lossage to report unexpected codes and
271         reverse_condition to handle inverted branch conditions.
272         (override_options): Use mips_init_print_operand_punct.
273
274 2007-10-18  Richard Sandiford  <rsandifo@nildram.co.uk>
275
276         * config/mips/mips.h: Move variable declarations to end of file and
277         enclose them all in #ifndef USED_FOR_TARGET.
278         * config/mips/mips.c: Reorder functions into more logical groups,
279         and so that callees appear before callers.  Put the targetm
280         initializer at the end of the file.  Remove forward static
281         declarations where possible.
282         (mips_init_builtins): Add "static" to definition.
283         (mips_expand_builtin, mips_mode_rep_extended): Likewise.
284
285 2007-10-18  Richard Sandiford  <rsandifo@nildram.co.uk>
286
287         * config/mips/mips.c (TARGET_MIN_ANCHOR_OFFSET): Delete.
288         (TARGET_MAX_ANCHOR_OFFSET): Delete.
289         (mips_cannot_force_const_mem): Don't check TARGET_HAVE_TLS.
290         (mips_set_mips16_mode): Initialize min_anchor_offset and
291         max_anchor_offset directly to constants.
292
293 2007-10-18  Richard Sandiford  <rsandifo@nildram.co.uk>
294
295         * config/mips/mips.c: Delete trailing whitespace.
296
297 2007-10-18  Richard Sandiford  <rsandifo@nildram.co.uk>
298
299         * config/mips/mips.c (mips_expand_call): Use FAKE_CALL_REGNO.
300         (mips_avoid_hazard): Allow multiple sets for HAZARD_DELAY,
301         and pick the first.
302         * config/mips/mips.md (load_call<mode>): Don't make the unspec
303         depend on FAKE_CALL_REGNO.  Set FAKE_CALL_REGNO.
304
305 2007-10-18  David Daney  <ddaney@avtrex.com>
306
307         * config/mips/linux-unwind.h (mips_fallback_frame_state): Use new
308         reg_offset variable to calculate register locations.
309
310 2007-10-18  Richard Guenther  <rguenther@suse.de>
311
312         * tree-ssa.c (uid_ssaname_map_eq): New function.
313         (uid_ssaname_map_has): Likewise.
314         (init_tree_ssa): Allocate default_defs as uid_ssaname map.
315         * tree-flow.h (struct gimple_df): Make default_defs a
316         uid_ssaname map.
317         * tree-dfa.c (gimple_default_def): Deal with it.
318         (set_default_def): Likewise.
319
320 2007-10-18  Richard Guenther  <rguenther@suse.de>
321
322         * tree-flow.h (struct gimple_df): Make referenced_vars
323         a uid_decl_map.
324         (uid_decl_map_eq): Declare.
325         (uid_decl_map_hash): Likewise.
326         * tree-ssa.c (uid_decl_map_eq): New function.
327         (uid_decl_map_hash): Likewise.
328         (init_tree_ssa): Make referenced_vars a uid_decl_map.
329         * tree-flow-inline.h (first_referenced_var): Deal with
330         the referenced_vars representation change.
331         (next_referenced_var): Likewise.
332         * tree-dfa.c (referenced_var_lookup): Likewise.
333         (referenced_var_check_and_insert): Likewise.
334         (remove_referenced_var): Likewise.
335
336 2007-10-18  Daniel Jacobowitz  <dan@codesourcery.com>
337
338         * config/mips/mips.c (mips_dwarf_register_span): New.
339         (TARGET_DWARF_REGISTER_SPAN): Define.
340
341 2007-10-18  Chen Liqin  <liqin@sunnorth.com.cn>
342
343         * config.gcc : update score-*-elf(extra_objs).
344         * config/score/mac.md : Remove.
345         * config/score/misc.md : Remove.
346         * config/score/score7.md : Remove.
347         * config/score/score-mdaux.h : Remove.
348         * config/score/score-mdaux.c : Remove.
349         * config/score/score-version.h : Remove.
350         * config/score/score-generic.md : New.
351         * config/score/score3.h : New.
352         * config/score/score3.c : New.
353         * config/score/score7.h : New.
354         * config/score/score7.c : New.
355         * config/score/mul-div.S : add flush_cache score3 support.
356         * config/score/elf.h : Fix some typos.
357         * config/score/score.md : merge score3 and score7 pattern.
358         * config/score/score.c : use to seperate which target it used.
359         * config/score/score.h : use to seperate the target macro.
360         * config/score/score.opt : remove -mmac option , add -mscore3,
361         -mscore3d and -march OPTION support.
362  
363 2007-10-17  Andrew Pinski  <andrew_pinski@playstation.sony.com>
364
365         * cfgexpand.c (expand_stack_vars): Add checking to make sure
366         that the offset of a variable is not greater than the size
367         of the paritition.
368
369 2007-10-17  Anatoly Sokolov <aesok@post.ru>
370
371         * config/avr/avr.c (avr_mcu_types): Add support for atmega48p, 
372         atmega88p, atmega168p and atmega328p devices.
373         * config/avr/avr.h (LINK_SPEC): (Ditto.).
374         (CRT_BINUTILS_SPECS): (Ditto.).
375         * config/avr/t-avr (MULTILIB_MATCHES): (Ditto.).
376
377 2007-10-17  Maxim Kuvyrkov  <maxim@codesourcery.com>
378
379         * sched-ebb.c: Surround code with '#ifdef INSN_SCHEDULING'.
380         * ddg.c: Ditto.
381         * sched-deps.c: Ditto.  Remove nested #ifdef's INSN_SCHEDULING.
382         * sched-int.h: Surround declarations with '#ifdef INSN_SCHEDULING'.
383         (print_insn): Move declaration to ...
384         * rtl.h (print_insn): ... here.
385
386 2007-10-17  Maxim Kuvyrkov  <maxim@codesourcery.com>
387
388         * config/m68k/m68k.h (m68k_sched_cpu, m68k_sched_attr_opx_type,
389         m68k_sched_attr_opy_type, m68k_sched_attr_size, m68k_sched_attr_op_mem,
390         m68k_sched_branch_type): Move declarations to ...
391         * config/m68/m68k-protos.h: ... here.
392
393 2007-10-17  Maxim Kuvyrkov  <maxim@codesourcery.com>
394
395         * genattrtab.c (main): Rearrange output of insn-attrtab.c headers.
396
397 2007-10-17  Eric B. Weddington  <eweddington@cso.atmel.com>
398
399         * config/avr/avr.c (avr_mcu_types): Add attiny48.
400         * config/avr/avr.h (LINK_SPEC): Likewise.
401         (CRT_BINUTILS_SPECS): Likewsie.
402         * config/avr/t-avr (MULTILIB_MATCHES): Likewise.
403
404 2007-10-17  Eric B. Weddington  <eweddington@cso.atmel.com>
405
406         * config/avr/avr.c (avr_mcu_types): Add attiny43u.
407         * config/avr/avr.h (CRT_BINUTILS_SPECS): Likewsie.
408         * config/avr/t-avr (MULTILIB_MATCHES): Likewise.
409
410 2007-10-17  Uros Bizjak  <ubizjak@gmail.com>
411
412         PR middle-end/33794
413         * reg-stack.c (move_for_stack_reg): Swap input argument of
414         UNSPEC_TAN insn to the top of the stack.
415
416 2007-10-17  Uros Bizjak  <ubizjak@gmail.com>
417
418         PR target/32961
419         * config/i386/i386.c (ix86_expand_builtin) [IX86_BUILTIN_PSLLWI128,
420         IX86_BUILTIN_PSLLDI128, BUILTIN_PSLLQI128, IX86_BUILTIN_PSRAWI128,
421         IX86_BUILTIN_PSRADI128, IX86_BUILTIN_PSRLWI128,
422         IX86_BUILTIN_PSRLDI128, IX86_BUILTIN_PSRLQI128]: Do not require
423         immediate shift value.
424         config/i386/emmintrin.h (_mm_slli_epi16, _mm_slli_epi32,
425         _mm_slli_epi64, _mm_srai_epi16, _mm_srai_epi32, _mm_srli_epi16,
426         _mm_srli_epi32, _mm_srli_epi64): Remove 'const' from count argument.
427         Remove macros for !__OPTIMIZE__ case.
428
429 2007-10-17  Daniel Berlin  <dberlin@dberlin.org>
430
431         * tree-ssa-structalias.c (rewrite_constraints): Don't test for
432         directness anymore.
433         (perform_var_substitution): Only DFS from real nodes. Don't test
434         for directness.
435         (unite_pointer_equivalences): Fix broken test.
436
437 2007-10-17  Alan Modra  <amodra@bigpond.net.au>
438
439         * config/rs6000/rs6000.c (rs6000_emit_epilogue): Correct
440         altivec sp_offset.  Rearrange sp_offset assignments to
441         correspond to stack adjustments.  Use frame_reg_rtx for
442         SPE register restores.  Correct SPE stack adjustment.
443
444 2007-10-17  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
445
446         * builtins.c (gimplify_va_arg_expr): Use inform for help message.
447         * toplev.c (check_global_declaration_1): Use appropriate warning
448         option instead of unnamed warning.
449         * stor-layout.c (layout_decl): Likewise.
450         * c-typeck.c (build_conditional_expr): Likewise.
451         (build_compound_expr): Fix wrong comment.
452         (build_binary_op): Use appropriate warning option instead of
453         unnamed warning.
454         * cfgexpand.c (tree_expand_cfg): Likewise.
455         * tree-optimize.c (tree_rest_of_compilation): Likewise.
456         * tree-cfg.c (remove_useless_stmts_warn_notreached): Likewise.
457         (execute_warn_function_return): Likewise.
458         * stmt.c (warn_if_unused_value): Likewise.
459
460 2007-10-16  Eric B. Weddington  <eweddington@cso.atmel.com>
461
462         * config/avr/avr.c (avr_mcu_types): Add at90pwm216, at90pwm316.
463         * config/avr/avr.h (LINK_SPEC): Likewise and remove regex for
464         similar devices.
465         (CRT_BINUTILS_SPECS): Likewsie.
466         * config/avr/t-avr (MULTILIB_MATCHES): Likewise.
467
468 2007-10-16  Amruth Laxman  <amruth.laxman@nsn.com>
469
470         PR target/33594
471         * config/sparc/sparc.h (LOCAL_ALIGNMENT): Define.
472
473 2007-10-16  Eric Botcazou  <ebotcazou@libertysurf.fr>
474
475         * dce.c (init_dce): Only initialize the obstacks for the fast pass.
476         (fini_dce): Only release them for the fast pass.
477         (end_ud_dce): Delete.
478         (rest_of_handle_ud_dce): Do not modify df_in_progress.
479         Call fini_dce instead of end_ud_dce.
480         (rest_of_handle_fast_dce): Do not modify df_in_progress.
481         (run_fast_df_dce): Reset df_in_progress to false on exit.
482
483 2007-10-16  Paolo Bonzini  <bonzini@gnu.org>
484             Maxim Kuvyrkov  <maxim@codesourcery.com>
485
486         * target.h (unspec_may_trap_p): New target hook.
487         * target-def.h (TARGET_UNSPEC_MAY_TRAP_P): New macro.
488         * targhooks.c (default_unspec_may_trap_p): Default implementation of
489         the hook.
490         * targhooks.h (default_unspec_may_trap_p): Declare it.
491         * doc/tm.texi (TARGET_UNSPEC_MAY_TRAP_P): Document new hook.
492         * rtlanal.c (may_trap_p_1): Use new hook.  Make global.
493         * rtl.h (may_trap_p_1): Declare.
494         
495         * config/ia64/ia64.c (ia64_unspec_may_trap_p): New function to
496         override default hook implementation.
497         (TARGET_UNSPEC_MAY_TRAP_P): Override default implementation of the
498         hook.
499
500 2007-10-16  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
501
502         * doc/invoke.texi (Wextra): Move it just after Wall, list the
503         options enabled by Wextra and mention Wuninitialized.
504         
505 2007-10-15  Nigel Stephens  <nigel@mips.com>
506
507         * config/mips/mips.h (LOCAL_ALIGNMENT): Define.
508
509 2007-10-15  Jakub Jelinek  <jakub@redhat.com>
510
511         PR tree-optimization/33136
512         * opts.c (decode_options): Don't enable flag_ipa_type_escape.
513
514 2007-10-15  Alexandre Oliva  <aoliva@redhat.com>
515
516         PR tree-optimization/33735
517         PR tree-optimization/33572
518         * tree-inline.c (update_ssa_across_abnormal_edges): Revert
519         2007-10-09's change.
520         * except.c (duplicate_eh_regions): Don't look for prev_try
521         beyond ERT_ALLOWED_EXCEPTIONS with an empty list.
522
523 2007-10-15  Alexandre Oliva  <aoliva@redhat.com>
524
525         PR middle-end/33706
526         * tree-inline.c (copy_bb): Use bsi_replace to replace a
527         __builtin_va_arg_pack-containing call stmt.
528
529 2007-10-15  Razya Ladelsky  <razya@il.ibm.com>
530
531         * matrix-reorg.c (gate_matrix_reorg): Don't comment out whole
532         program flag.
533
534 2007-10-15  Jakub Jelinek  <jakub@redhat.com>
535
536         PR tree-optimization/33619
537         * tree-ssa-ter.c (is_replaceable_p): Return false for all
538         calls.
539
540 2007-10-15  David Edelsohn  <edelsohn@gnu.org>
541
542         * config.gcc (powerpc-ibm-aix5*): Install altivec.h.
543
544 2007-10-15  Richard Guenther  <rguenther@suse.de>
545
546         * fold-const.c (extract_array_ref): Remove.
547         (fold_comparison): Handle POINTER_PLUS_EXPR with the
548         generic address expression comparison folding.  Remove
549         the folding that used extract_array_ref.
550
551 2007-10-15  Maxim Kuvyrkov  <maxim@codesourcery.com>
552
553         PR target/33133
554         * haifa-sched.c (process_insn_forw_deps_be_in_spec): Check if
555         speculation type of insn can be changed before trying to do that.
556
557 2007-10-15  Eric Botcazou  <ebotcazou@libertysurf.fr>
558
559         * dse.c (struct insn_info): Add 'frame_read' field.
560         (scan_insn): For the call to a const function, set frame_read if
561         reload has been run.
562         If the insn reads the frame, kill the frame related stores.
563         (scan_reads_nospill): Likewise.
564
565 2007-10-14  Jason Merrill  <jason@redhat.com>
566
567         * tree-eh.c (optimize_double_finally): Don't assume that the
568         cleanup we're duplicating is only one statement.
569
570 2007-10-14  Kazu Hirata  <kazu@codesourcery.com>
571
572         * config/fixed-bit.c, config/i386/cpuid.h, config/i386/i386.c,
573         config/i386/i386.md, config/i386/sse.md, function.c, jump.c,
574         modulo-sched.c, ra-conflict.c, toplev.c, tree-eh.c, tree-sra.c,
575         tree-ssa-dse.c, tree-vect-analyze.c, tree-vect-patterns.c,
576         tree-vect-transform.c: Fix comment typos.
577         * doc/extend.texi: Fix a typo.
578
579         * c-common.h: Remove the prototype for c_expand_body.
580         * c-tree.h: Remove the prototype for c_disregard_inline_limits.
581         * tree.h: Remove the prototype for fold_build_call_expr.
582
583         * c-objc-common.h (LANG_HOOKS_TREE_INLINING_CANNOT_INLINE_TREE_FN):
584         Remove.
585         * c-tree.h: Remove the prototype for c_cannot_inline_tree_fn.
586
587 2007-10-13  David Edelsohn  <edelsohn@gnu.org>
588
589         * config/rs6000/aix53.h: New file.
590         * config/rs6000/aix{41,43,51,52}.h (TARGET_ALTIVEC): Define to 0.
591         (TARGET_ALTIVEC_ABI): Same.
592         * config/rs6000/aix.h (TARGET_ALTIVEC): Delete.
593         (TARGET_ALTIVEC_ABI): Delete.
594         * config.gcc (powerpc-ibm-aix5*): Rename to aix5.2.  Add new
595         stanza defaulting to aix5.3.
596
597 2007-10-12  Nathan Froyd  <froydnj@codesourcery.com>
598
599         * config/i386/i386.md (SI_REG, DI_REG): New constants.
600         (strmov): Use defined constants.
601         (cmpstrnsi): Likewise.
602         * config/i386/i386.c (decide_alg): Use defined constants.
603         (ix86_expand_strlen): Likewise.
604
605 2007-10-12  Richard Sandiford  <rsandifo@nildram.co.uk>
606
607         * dse.c (find_shift_sequence): Reinstate "<= UNITS_PER_WORD" condition.
608         * var-tracking.c (micro_operation_def): Update comment on u.loc.
609         (mode_for_reg_attrs, var_lowpart): New functions.
610         (add_uses): Consider recording a lowpart of LOC for MO_USE.
611         (add_stores): Likewise MO_SET and MO_COPY.  If the source of a set
612         or copy is known, set LOC to the SET that performs the set, instead
613         of the destination.
614         (find_src_status, find_src_set_src): Remove LOC parameter.
615         Replace INSN with the source value.
616         (compute_bb_dataflow, emit_notes_in_bb): Check for a SET u.loc when
617         handling MO_SET and MO_COPY.  Update the calls to find_src_status
618         and find_src_set_src.
619
620 2007-10-12  Nathan Froyd  <froydnj@codesourcery.com>
621
622         PR 11001
623         * config/i386/i386.md (strmov): Check for esi and edi usage.
624         * config/i386/i386.c (decide_alg): Check whether we can use a
625         rep prefix and adjust algorithm choice accordingly.
626         (ix86_expand_strlen): Check for eax, ecx, and edi usage.
627
628 2007-10-12  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
629
630         * config/c4x/c4x.md (mulqi3, mulhi3): Use optab_libfunc.
631
632 2007-10-12  Kenneth Zadeck <zadeck@naturalbridge.com>
633
634         * global.c (build_insn_chain): Formatting fixes.
635
636 2007-10-12  Richard Guenther <rguenther@suse.de>
637
638         * tree-ssa-forwprop.c (forward_propagate_into_cond): For
639         combining both operands require either both have single uses
640         or combining to a constant.
641
642 2007-10-12  Richard Guenther  <rguenther@suse.de>
643
644         PR middle-end/26198
645         * tree-ssa-forwprop.c (can_propagate_from): Do not propagate from
646         a rhs with side-effects or which is a load.
647         (forward_propagate_into_cond): Also try combining both operands.
648
649 2007-10-12  Uros Bizjak  <ubizjak@gmail.com>
650
651         PR tree-optimization/33742
652         * tree-vect-transform.c (vectorizable_operation): Return false
653         if get_vectype_for_scalar_type for scalar_dest can't be determined.
654         (vectorizable_call): Same for rhs_type and lhs_type.
655
656 2007-10-12  Jakub Jelinek  <jakub@redhat.com>
657
658         PR tree-optimization/33645
659         * tree-ssa-live.c (mark_all_vars_used): Add data argument,
660         pass it to walk_tree.
661         (mark_all_vars_used_1): Pass data through to mark_all_vars_used.
662         When calling set_is_used on a VAR_DECL, if data is not NULL and
663         its DECL_UID is in the bitmap, call mark_all_vars_used on its
664         DECL_INITIAL after clearing the bit in bitmap.
665         (remove_unused_locals): Adjust mark_all_vars_used callers.
666         Instead of removing unused global vars from unexpanded_var_list
667         immediately record them in bitmap, call mark_all_vars_used on
668         all used global vars from unexpanded_var_list and only purge
669         global vars that weren't found used even during that step.
670  
671 2007-10-11  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
672
673         * gthr-posix.h (__gthread_active_init): Create detached instead of
674         joinable thread when testing whether threads are active on hppa-hpux.
675         * gthr-posix95.h (__gthread_active_init): Likewise.
676
677 2007-10-11  Kenneth Zadeck <zadeck@naturalbridge.com>
678
679         PR middle-end/33676
680         * global.c (build_insn_chain): Include insn that occur between
681         basic blocks.
682         
683 2007-10-11  Tom Tromey  <tromey@redhat.com>
684
685         * gengtype-yacc.y: Delete.
686
687 2007-10-11  Uros Bizjak  <ubizjak@gmail.com>
688
689         * config/i386/i386.md (AX_REG, DX_REG, CX_REG): New constants.
690         * config/i386/i386.c (ix86_function_arg_regno_p, function_arg_32,
691         function_value_32, function_value_64, function_value_ms_64,
692         setup_incoming_varargs_64, ix86_expand_prologue, ix86_expand_call,
693         legitimize_tls_address, x86_this_parameter, x86_output_mi_thunk):
694         Use new constants.
695
696 2007-10-11  Richard Guenther  <rguenther@suse.de>
697
698         * gcse.c (hash_scan_set): If the next nonnote insn is in
699         a different basic block insert the set.
700
701 2007-10-11  Richard Guenther  <rguenther@suse.de>
702
703         PR middle-end/33724
704         * tree-cfg.c (one_pointer_to_useless_type_conversion_p): New function.
705         (verify_gimple_expr): Use it to verify pointer-to types for
706         ADDR_EXPRs.
707
708 2007-10-11  Richard Guenther  <rguenther@suse.de>
709
710         PR c/33726
711         * c-typeck.c (build_array_ref): Do not strip qualifiers from
712         the array element type.
713
714 2007-10-11  Eric Botcazou  <ebotcazou@libertysurf.fr>
715
716         PR rtl-optimization/33638
717         * dse.c (struct insn_info): Remove 'stack_read' field,
718         add 'stack_pointer_based' field.
719         (record_store): For a store with non-constant base, record
720         whether it is stack pointer based.
721         (scan_insn): For the call to a const function, remove stack
722         pointer based stores from the list of local active stores.
723         (scan_reads_nospill): Delete code dealing with const functions.
724
725 2007-10-10  Peter Bergner  <bergner@vnet.ibm.com>
726
727         * ra-conflict.c (partial_bitnum, max_bitnum): Change type of variables
728         to HOST_WIDE_INT.
729         (conflict_p, set_conflict, set_conflicts): Likewise.
730         * global.c (global_alloc): Likewise.
731         * ra.h: Update prototypes.
732
733 2007-10-10  Wolfgang Gellerich  <gellerich@de.ibm.com>
734
735         * opth-gen.awk: Fixed generation of comment stating the origin
736           of options.h
737
738 2007-10-10  Kazu Hirata  <kazu@codesourcery.com>
739
740         Revert:
741         2007-10-09  Kazu Hirata  <kazu@codesourcery.com>
742         * longlong.h (count_leading_zeros): Replace '{' and '}' with '%{'
743         and '%}', respectively.
744
745         Revert:
746         2007-10-09  Kazu Hirata  <kazu@codesourcery.com>
747         * config/m68k/m68k.c (print_operand): Handle '{' and '}'.
748         * config/m68k/m68k.h (PRINT_OPERAND_PUNCT_VALID_P): Accept '{'
749         and '}'.
750         * config/m68k/m68k.md: Replace '{' with '%{' where '{' is
751         meant to be output.
752
753         Revert:
754         2007-10-07  Kazu Hirata  <kazu@codesourcery.com>
755         * config/m68k/m68k.c, config/m68k/m68k.md: Use the assembly
756         syntax for ASSEMBLER_DIALECT.
757         * config/m68k/m68k.h (ASSEMBLER_DIALECT): New.
758
759 2007-10-10  Revital Eres  <eres@il.ibm.com>
760
761         * modulo-sched.c (check_nodes_order): Dump the final order of
762         the nodes.
763         (get_sched_window): Add dump info.
764         (calculate_order_params): Dump order params of the nodes.
765
766 2007-10-09  Kenneth Zadeck <zadeck@naturalbridge.com>
767
768         PR middle-end/33669
769         * ra-conflict.c (record_one_conflict_between_regnos, 
770         set_conflicts_for_earlyclobber, global_conflicts): Improved logging.
771         (global_conflicts): Enhanced incorrect check.
772         
773 2007-10-09  Geoffrey Keating  <geoffk@apple.com>
774
775         * dwarf2out.c (output_call_frame_info): FDEs are always emitted
776         if flag_exceptions is not set.
777         * config/darwin.c (darwin_emit_unwind_label): Rewrite to use
778         assemble_name rather than incorrectly emulating it.
779
780         * doc/extend.texi (Deprecated Features): Mention that <? and >? and
781         friends are removed from G++.
782
783 2007-10-09  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
784
785         * c-opts.c (c_common_handle_option): -Wnontemplate-friend,
786         -Wwrite-strings and -Wmultichar are enabled by default, so Wall
787         enabling them is redundant. Don't check two times for
788         c_dialect_cxx.
789         
790 2007-10-09  H.J. Lu  <hongjiu.lu@intel.com>
791
792         * ra-conflict.c (record_one_conflict_between_regnos): Revert
793         the last change.
794         (set_conflicts_for_earlyclobber): Likewise.
795         (global_conflicts): Likewise.
796
797 2007-10-09  Kazu Hirata  <kazu@codesourcery.com>
798
799         * longlong.h (count_leading_zeros): Replace '{' and '}' with '%{'
800         and '%}', respectively.
801
802 2007-10-09  Kazu Hirata  <kazu@codesourcery.com>
803
804         * config/m68k/m68k.c (print_operand): Handle '{' and '}'.
805         * config/m68k/m68k.h (PRINT_OPERAND_PUNCT_VALID_P): Accept '{'
806         and '}'.
807         * config/m68k/m68k.md: Replace '{' with '%{' where '{' is
808         meant to be output.
809
810 2007-10-09  Richard Guenther  <rguenther@suse.de>
811
812         PR middle-end/33692
813         * gimplify.c (canonicalize_component_ref): Honor qualifiers
814         of referenced structure and component.
815
816 2007-10-09  Kenneth Zadeck <zadeck@naturalbridge.com>
817
818         PR middle-end/33669
819         * ra-conflict.c (record_one_conflict_between_regnos,
820         set_conflicts_for_earlyclobber, global_conflicts): Improved
821         logging.
822         (global_conflicts): Removed incorrect check.
823
824 2007-10-09  Richard Sandiford  <rsandifo@nildram.co.uk>
825
826         PR tree-optimization/33615
827         * tree-ssa-pre.c (compute_avail): Don't call make_values_for_stmt
828         if the statement might throw.  Fix formatting.
829
830 2007-10-09  Richard Sandiford  <rsandifo@nildram.co.uk>
831
832         PR tree-optimization/33615
833         * tree-ssa-loop-im.c (movement_possibility): Return MOVE_IMPOSSIBLE
834         if the rhs might throw.
835
836 2007-10-09  Jan Hubicka  <jh@suse.cz>
837
838         * invoke.texi (align-threshold, align-loop-iterations): Document.
839         * final.c: Include cfgloop.h, params.h
840         (compute_alignments): Dump decisions and compare them with loop
841         structure; honor given parameters.
842         (pass_compute_alignments): New dump file.
843         * params.def (PARAM_ALIGN_THRESHOLD, PARAM_ALIGN_LOOP_ITERATIONS): New.
844         * Makefile.in (final.o): Add dependency on cfgloop.h and params.h
845
846 2007-10-09  James E. Wilson  <wilson@specifix.com>
847
848         PR tree-optimization/33655
849         PR middle-end/22156
850         * tree-sra.c (bitfield_overlaps_p): When fld->element is INTEGER_CST,
851         convert it to bitsizetype before size_binop call.
852
853 2007-10-09  Alexandre Oliva  <aoliva@redhat.com>
854
855         PR tree-optimization/33572
856         * tree-inline.c (update_ssa_across_abnormal_edges): Tolerate
857         the absence of a corresponding edge from the exit block.
858
859 2007-10-09  Alexandre Oliva  <aoliva@redhat.com>
860
861         PR middle-end/22156
862         * tree-sra.c (instantiate_element): Use BYTES_BIG_ENDIAN for
863         bit-field layout.
864         (sra_build_assignment): Likewise.  Set up mask depending on
865         precision, not type.
866         (sra_build_bf_assignment): Use BYTES_BIG_ENDIAN.  Don't overflow
867         computing bit masks.
868         (sra_build_elt_assignment): Don't view-convert from signed to
869         unsigned.
870         (sra_explode_bitfield_assignment): Use bit-field type if
871         possible.  Use BYTES_BIG_ENDIAN.
872
873 2007-10-08  Alexandre Oliva  <aoliva@redhat.com>
874
875         PR middle-end/22156
876         * tree-sra.c (scalarize_lsdt): Fix thinko in testing whether
877         the original stmt can throw.
878         (sra_build_bf_assignment): Fix type mismatch when applying negated
879         mask.
880
881 2007-10-08  Geoffrey Keating  <geoffk@apple.com>
882
883         * config/darwin.h (DARWIN_REGISTER_TARGET_PRAGMAS): Register
884         '#pragma mark' to be executed at preprocessing time.
885
886 2007-10-08  Ollie Wild  <aaw@google.com>
887
888         * varasm.c (compare_constant): Removed call to
889         lang_hooks.expand_constant.
890         (copy_constants): Removed call to lang_hooks.expand_constant.
891         (compute_reloc_for_constant): Removed call to
892         lang_hooks.expand_constant.
893         (output_addressed_constants): Removed call to
894         lang_hooks.expand_constant.
895         (constructor_static_from_elts_p): Removed call to
896         lang_hooks.expand_constant.
897         (output_constant): Removed calls to lang_hooks.expand_constant.
898         * langhooks.h (struct lang_hooks): Removed field expand_constant.
899         * langhooks-def.h (lhd_return_tree): Removed.
900         (LANG_HOOKS_EXPAND_CONSTANT): Removed.
901         (LANG_HOOKS_INITIALIZER): Removed LANG_HOOKS_EXPAND_CONSTANT.
902         * langhooks.c (lhd_return_tree): Removed.
903
904 2007-10-08  Mark Shinwell  <shinwell@codesourcery.com>
905
906         * combine.c (setup_incoming_promotions): Ensure that
907         arguments that have not undergone mode promotions do not
908         incorrectly get marked as being sign- or zero-extended.
909
910 2007-10-08  Richard Guenther  <rguenther@suse.de>
911
912         PR middle-end/33693
913         PR middle-end/33695
914         PR middle-end/33697
915         * fold-const.c (fold_binary): Use correct types in folding
916         of a * (1 << b) to (a << b).  Likewise for ~A & ~B to ~(A | B)
917         and building of RROTATE_EXPR.
918
919 2007-10-08  Richard Guenther  <rguenther@suse.de>
920
921         PR middle-end/33691
922         PR middle-end/33694
923         PR middle-end/33696
924         * fold-const.c (fold_binary): Use the correct types when
925         folding (A | CST1) & CST2 to (A & CST2) | (CST1 & CST2).
926         (fold_binary): Use the correct types when folding
927         (-A) - B to (-B) - A.
928         (fold_unary): Use the correct types when folding ~(X).
929
930 2007-10-08  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
931
932         * doc/invoke.texi (Wall): fix formatting issues.
933         
934 2007-10-07  Richard Sandiford  <rsandifo@nildram.co.uk>
935
936         * simplify-rtx.c (simplify_binary_operation_1): Canonicalize
937         truncated shift counts.
938
939 2007-10-07  Kazu Hirata  <kazu@codesourcery.com>
940
941         * config/m68k/m68k.c, config/m68k/m68k.md: Use the assembly
942         syntax for ASSEMBLER_DIALECT.
943         * config/m68k/m68k.h (ASSEMBLER_DIALECT): New.
944
945 2007-10-06  Eric Botcazou  <ebotcazou@adacore.com>
946             Nathan Froyd  <froydnj@codesourcery.com>
947
948         * dwarf2out.c (dwarf2out_frame_init): Check for DWARF2_FRAME_INFO
949         when determining whether to record INCOMING_RETURN_ADDR_RTX.
950
951 2007-10-06  Eric Botcazou  <ebotcazou@adacore.com>
952
953         Revert:
954         2007-02-12  Eric Botcazou  <ebotcazou@adacore.com>
955
956         * tree.h (DECL_IGNORED_P): Document further effect for FUNCTION_DECL.
957         * cgraphunit.c (cgraph_expand_function): If DECL_IGNORED_P is set on
958         the function, temporarily point the debug interface to the null one.
959
960 2007-10-06  Alexandre Oliva  <aoliva@redhat.com>
961
962         PR tree-optimization/33655
963         PR middle-end/22156
964         * tree-sra.c (bitfield_overlaps_p): Handle array and complex
965         elements.
966
967 2007-10-06  Alexandre Oliva  <aoliva@redhat.com>
968
969         PR tree-optimization/33572
970         * tree-cfg.c (verify_stmts): Check for missing PHI defs.
971         * tree-inline.c (update_ssa_across_eh_edges): Renamed to...
972         (update_ssa_across_abnormal_edges): ... this.  Set slots in the
973         return PHI node.
974         (copy_edges_for_bb): Handle nonlocal label edges.
975         (make_nonlocal_label_edges): Deleted.
976         (optimize_inline_calls): Don't call it.
977
978 2007-10-05  Hans-Peter Nilsson  <hp@axis.com>
979
980         * gthr-single.h: Revert last change.
981
982 2007-10-05  Michael Matz  <matz@suse.de>
983
984         PR middle-end/33667
985         * lower-subreg.c (decompose_multiword_subregs): Use
986         validate_unshare_change().
987
988 2007-10-05  Peter Bergner  <bergner@vnet.ibm.com>
989
990         * ra-conflict.c: Include "sparseset.h".
991         (conflicts): Change to HOST_WIDEST_FAST_INT.
992         (allocnos_live): Redefine variable as a sparseset.
993         (SET_ALLOCNO_LIVE, CLEAR_ALLOCNO_LIVE, GET_ALLOCNO_LIVE): Delete macros.
994         (allocno_row_words): Removed global variable.
995         (partial_bitnum, max_bitnum, adjacency_pool, adjacency): New variables.
996         (CONFLICT_BITNUM, CONFLICT_BITNUM_FAST): New defines.
997         (conflict_p, set_conflict_p, set_conflicts_p): New functions.
998         (record_one_conflict_between_regnos): Cache allocno values and reuse.
999         Use set_conflict_p.
1000         (record_one_conflict): Update uses of allocnos_live to use
1001         the sparseset routines.  Use set_conflicts_p.
1002         (mark_reg_store): Likewise.
1003         (set_reg_in_live): Likewise.
1004         (global_conflicts): Update uses of allocnos_live.
1005         Use the new adjacency list to visit an allocno's neighbors
1006         rather than iterating over all possible allocnos.
1007         Call set_conflicts_p to setup conflicts rather than adding
1008         them manually.
1009         * global.c: Comments updated.  
1010         (CONFLICTP): Delete define.
1011         (regno_compare): New function.  Add prototype.
1012         (global_alloc): Sort the allocno to regno mapping according to
1013         which basic blocks the regnos are referenced in.  Modify the
1014         conflict bit matrix to a compressed triangular bitmatrix.
1015         Only allocate the conflict bit matrix and adjacency lists if
1016         we are actually going to allocate something.
1017         (expand_preferences): Use conflict_p.  Update uses of allocnos_live.
1018         (prune_preferences): Use the FOR_EACH_CONFLICT macro to visit an
1019         allocno's neighbors rather than iterating over all possible allocnos.
1020         (mirror_conflicts): Removed function.
1021         (dump_conflicts): Iterate over regnos rather than allocnos so
1022         that all dump output will be sorted by regno number.
1023         Use the FOR_EACH_CONFLICT macro.
1024         * ra.h: Comments updated.
1025         (conflicts): Update prototype to HOST_WIDEST_FAST_INT.
1026         (partial_bitnum, max_bitnum, adjacency, adjacency_pool): Add prototypes.
1027         (ADJACENCY_VEC_LENGTH, FOR_EACH_CONFLICT): New defines.
1028         (adjacency_list_d, adjacency_iterator_d): New types.
1029         (add_neighbor, adjacency_iter_init, adjacency_iter_done,
1030         adjacency_iter_next, regno_basic_block): New static inline functions.
1031         (EXECUTE_IF_SET_IN_ALLOCNO_SET): Removed define.
1032         (conflict_p): Add function prototype.
1033         * sparseset.h, sparseset.c: New files.
1034         * Makefile.in (OBJS-common): Add sparseset.o.
1035         (sparseset.o): New rule.
1036
1037 2007-10-05  Richard Guenther  <rguenther@suse.de>
1038
1039         PR middle-end/33666
1040         * fold-const.c (fold_unary): Do not fold (long long)(int)ptr
1041         to (long long)ptr.
1042
1043 2007-10-05  Michael Matz  <matz@suse.de>
1044
1045         PR inline-asm/33600
1046         * function.c (match_asm_constraints_1): Check for input
1047         being used in the outputs.
1048
1049 2007-10-05  Richard Guenther  <rguenther@suse.de>
1050
1051         * tree-cfg.c (verify_gimple_expr): Accept OBJ_TYPE_REF.
1052
1053 2007-10-05  Richard Sandiford  <rsandifo@nildram.co.uk>
1054
1055         PR target/33635
1056         * config/mips/mips.c (mips_register_move_cost): Rewrite to use
1057         subset checks.  Make the cost of FPR -> FPR moves depend on
1058         mips_mode_ok_for_mov_fmt_p.
1059
1060 2007-10-04  Doug Kwan  <dougkwan@google.com>
1061
1062         * gthr-posix.h (__gthread_cond_broadcast, __gthread_cond_wait,
1063         __gthread_cond_wait_recursive): Add to extend interface for POSIX
1064         conditional variables. (__GTHREAD_HAS_COND): Macro defined to signify
1065         support of conditional variables.
1066         * gthr-posix95.h (__gthread_cond_broadcast, __gthread_cond_wait,
1067         __gthread_cond_wait_recursive): Add to extend interface for POSIX
1068         conditional variables. (__GTHREAD_HAS_COND): Macro defined to signify
1069         support of conditional variables.
1070         * gthr-single.h (__gthread_cond_broadcast, __gthread_cond_wait,
1071         __gthread_cond_wait_recursive): Add to extend interface for POSIX
1072         conditional variables.
1073         * gthr.h: Update comments to document new interface.
1074
1075 2007-10-04  Geoffrey Keating  <geoffk@apple.com>
1076
1077         * cgraphunit.c (cgraph_build_static_cdtor): Don't set
1078         DECL_IGNORED_P.
1079
1080 2007-10-04  Anatoly Sokolov <aesok@post.ru>
1081
1082         * config/avr/avr.c (expand_epilogue): Don't set RTX_FRAME_RELATED_P.
1083
1084 2007-10-04  Richard Guenther  <rguenther@suse.de>
1085
1086         PR middle-end/33641
1087         * tree-cfg.c (verify_gimple_expr): Operand one of POINTER_PLUS_EXPR
1088         does not need to be of INTEGER_TYPE.
1089         (verify_gimple_2): New function split out from ...
1090         (verify_gimple_1): ... here.  ICE if there was an error during
1091         verification.
1092
1093 2007-10-04  Michael Matz  <matz@suse.de>
1094
1095         PR rtl-optimization/33653
1096         * dce.c (deletable_insn_p_1): Use volatile_refs_p().
1097         * dse.c (scan_insn): Same.
1098
1099 2007-10-04  Kazu Hirata  <kazu@codesourcery.com>
1100
1101         * config.gcc: Remove USE_GAS for m68k targets.
1102
1103 2007-10-04  Richard Guenther  <rguenther@suse.de>
1104
1105         PR tree-optimization/33627
1106         * tree-gimple.h (canonicalize_cond_expr_cond): Declare.
1107         * tree-gimple.c (canonicalize_cond_expr_cond): New function,
1108         split out from ...
1109         * tree-ssa-forwprop.c (combine_cond_expr_cond): ... here.
1110         * tree-ssa-ifcombine.c (ifcombine_iforif): Use it.
1111
1112 2007-10-04  Anatoly Sokolov <aesok@post.ru>
1113
1114         * config/avr/avr.c (commands_in_file, commands_in_prologues, 
1115         commands_in_epilogues): Remove variables.
1116         (avr_file_start): Remove unneded initializations of commands_in_file,
1117         commands_in_prologues and commands_in_epilogues variables.
1118         (avr_file_end): Remove dead code.
1119
1120 2007-10-04  Kazu Hirata  <kazu@codesourcery.com>
1121
1122         * config/m68k/m68k.c (m68k_output_movem): Use the MOTOROLA if
1123         MOTOROLA is to true.
1124
1125 2007-10-03  Richard Sandiford  <rsandifo@nildram.co.uk>
1126
1127         PR target/33635
1128         * config/mips/mips-protos.h (mips_split_64bit_move): Rename to...
1129         (mips_split_doubleword_move): ...this.
1130         * config/mips/mips.c (mips_subword): Extend to handle 64-bit words;
1131         use natural endianness for multi-format FPR values.
1132         (mips_split_64bit_move): Rename to...
1133         (mips_split_doubleword_move): ...this and extend to 64-bit words.
1134         Use move_doubleword_fpr* patterns for moves involving FPRs.
1135         (mips_save_reg): Update the call to mips_split_64bit_move.
1136         (mips_secondary_reload_class): Return NO_REGS for any reload of a
1137         nonzero constant into an FPR if the constant can be forced to memory.
1138         * config/mips/mips.md: Update the splitter calls to
1139         mips_split_64bit_move.
1140         (UNSPEC_LOAD_DF_LOW): Rename to...
1141         (UNSPEC_LOAD_LOW): ...this.
1142         (UNSPEC_LOAD_DF_HIGH): Rename to...
1143         (UNSPEC_LOAD_HIGH): ...this.
1144         (UNSPEC_STORE_DF_HIGH): Rename to...
1145         (UNSPEC_STORE_WORD): ...this.
1146         (SPLITF): New mode iterator.
1147         (HALFMODE): New mode attribute.
1148         (movtf): New expander.
1149         (*movtf_internal): New define_insn_and_split.
1150         (move_doubleword_fpr<mode>): New expander.
1151         (load_df_low, load_df_high, store_df_high, mthc1, mfhc1): Replace
1152         with...
1153         (load_low<mode>, load_high<mode>, store_word<mode>, mthc1<mode>)
1154         (mfhc1<mode>): ...these more general patterns.
1155
1156 2007-10-03  Alexandre Oliva  <aoliva@redhat.com>
1157
1158         * cfgrtl.c (rtl_block_ends_with_call_p): Skip notes at the end.
1159
1160 2007-10-03  Alexandre Oliva  <aoliva@redhat.com>
1161
1162         * gcse.c (hash_scan_set): Insert set in insn before note at
1163         the end of basic block.
1164
1165 2007-10-03  Sebastian Pop  <sebastian.pop@amd.com>
1166
1167         PR tree-optimization/33576
1168         * testsuite/gcc.dg/tree-ssa/pr33576.c: New.
1169         * tree-loop-linear.c (linear_transform_loops): Call remove_iv.
1170         * lambda.h (lambda_loopnest_to_gcc_loopnest): New parameter.
1171         (remove_iv): Declared.
1172         * lambda-code.c (remove_iv): Not static.
1173         (lambda_loopnest_to_gcc_loopnest): New parameter remove_ivs.
1174         Don't remove ivs there, save ivs in the buffer.
1175
1176 2007-10-03  Jason Merrill  <jason@redhat.com>
1177
1178         PR c++/15764
1179         * tree-eh.c (same_handler_p): New fn.
1180         (optimize_double_finally): New fn.
1181         (refactor_eh_r): New fn.
1182         (refactor_eh): New fn.
1183         (pass_refactor_eh): New pass.
1184         * tree-pass.h: Declare it.
1185         * passes.c (init_optimization_passes): Add it.
1186
1187 2007-10-03  Doug Kwan  <dougkwan@google.com>
1188         Richard Guenther  <rguenther@suse.de>
1189
1190         PR debug/31899
1191         * dwarf2out.c (reference_to_unused): Disable sanity checking,
1192         be conservative instead.
1193
1194 2007-10-03  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
1195
1196         PR fortran/26682
1197         * doc/invoke.texi (-fwhole-program): Document that Fortran
1198         doesn't support this option.
1199
1200 2007-10-02  Richard Sandiford  <rsandifo@nildram.co.uk>
1201
1202         PR middle-end/33617
1203         * expr.c (expand_expr_addr_expr_1): Pass CONSTRUCTORs to
1204         expand_expr.
1205
1206 2007-10-02  David Daney  <ddaney@avtrex.com>
1207
1208         * config/mips/mips.md (sync_compare_and_swap<mode>): Handle compare
1209         against constant zero.
1210         * config/mips/mips.h (MIPS_COMPARE_AND_SWAP):  Handle constant zero
1211         operand.
1212
1213 2007-09-02  Kenneth Zadeck <zadeck@naturalbridge.com>
1214
1215         * ra-conflict.c: New file.
1216         * ra.h: New file.
1217         * reload.c (push_reload, find_dummy_reload): Change DF_RA_LIVE
1218         usage to DF_LIVE usage.
1219         (reload): Remove reference to df_get_live_top.
1220         * rtlanal.c (subreg_nregs_with_regno): New function.  
1221         * df-scan.c (df_def_record_1, df_uses_record): Add code to set
1222         DF_REF_EXTRACT, DF_REF_STRICT_LOWER_PART, and DF_REF_SUBREG flags.
1223         (df_has_eh_preds): Removed.
1224         (df_bb_refs_collect, df_bb_refs_collect, df_bb_refs_collect,
1225         df_exit_block_uses_collect): Changed call from df_has_eh_preds to
1226         bb_has_eh_pred.
1227         * global.c (allocno, max_allocno, conflicts, allocno_row_words,
1228         reg_allocno, EXECUTE_IF_SET_IN_ALLOCNO_SET): Moved to ra.h
1229         (SET_ALLOCNO_LIVE, CLEAR_ALLOCNO_LIVE): Moved to ra-conflicts.c.
1230         (regs_set, record_one_conflict, record_conflicts, mark_reg_store,
1231         mark_reg_clobber, mark_reg_conflicts, mark_reg_death): Deleted.
1232         (global_alloc): Turn off rescanning insns after call to
1233         global_conflicts and added call to set_preferences.
1234         (global_conflicts): Moved to ra-alloc.c.
1235         (set_preferences_1, set_preferences): New function.
1236         (mirror_conflicts): Changed types for various variables.
1237         (mark_elimination): Change DF_RA_LIVE
1238         usage to DF_LIVE usage.
1239         (build_insn_chain): Rewritten from scratch and made local.
1240         (print_insn_chain, print_insn_chains): New functions.
1241         (dump_conflicts): Do not print conflicts for fixed_regs.
1242         (rest_of_handle_global_alloc): Turn off insn rescanning.
1243         * hard-reg-set.h: Fixed comment.
1244         * local-alloc.c (update_equiv_regs): Change DF_RA_LIVE
1245         usage to DF_LIVE usage and delete refs to TOP sets.
1246         (block_alloc): Mark regs as live if they are in the artificial
1247         defs at top of block.
1248         (find_stack_regs): New function.
1249         (rest_of_handle_local_alloc): Changed urec problem to live
1250         problem and do not turn off df rescanning.
1251         * df.h (DF_UREC, DF_UREC_BB_INFO, DF_LIVE_TOP, DF_RA_LIVE_IN,
1252         DF_RA_LIVE_TOP, DF_RA_LIVE_OUT, df_urec_bb_info, df_urec,
1253         df_urec_add_problem, df_urec_get_bb_info, df_has_eh_preds): Removed.
1254         (DF_CHAIN, DF_NOTE, DF_CHAIN): Renumbered.
1255         (DF_REF_EXTRACT, DF_REF_STRICT_LOWER_PART, DF_REF_SUBREG): New
1256         fields in df_ref_flags.  The rest have been renumbered.  
1257         * init-regs.c (initialize_uninitialized_regs): Enhanced debugging
1258         at -O1.
1259         * rtl.h (subreg_nregs_with_regno): New function.
1260         * df-problems.c: (df_get_live_out, df_get_live_in,
1261         df_get_live_top): Removed reference to DF_RA_LIVE.
1262         (df_lr_reset, df_lr_transfer_function, df_live_free_bb_info,
1263         df_live_alloc, df_live_reset, df_live_local_finalize,
1264         df_live_free): Make top set only if different from in set.
1265         (df_lr_top_dump, df_live_top_dump): Only print top set if
1266         different from in set.
1267         (df_lr_bb_local_compute): Removed unnecessary check.
1268         (df_urec_problem_data, df_urec_set_bb_info, df_urec_free_bb_info, 
1269         df_urec_alloc, df_urec_mark_reg_change, earlyclobber_regclass, 
1270         df_urec_check_earlyclobber, df_urec_mark_reg_use_for_earlyclobber,
1271         df_urec_mark_reg_use_for_earlyclobber_1, df_urec_bb_local_compute,
1272         df_urec_local_compute, df_urec_init, df_urec_local_finalize, 
1273         df_urec_confluence_n, df_urec_transfer_function, df_urec_free, 
1274         df_urec_top_dump, df_urec_bottom_dump, problem_UREC,
1275         df_urec_add_problem): Removed.
1276         (df_simulate_fixup_sets): Changed call from df_has_eh_preds to
1277         bb_has_eh_pred. 
1278         * Makefile.in (ra-conflict.o, ra.h): New dependencies.
1279         * basic_block.h (bb_has_abnormal_pred): New function.
1280         * reload1.c (compute_use_by_pseudos): Change DF_RA_LIVE
1281         usage to DF_LIVE usage.
1282         
1283 2007-10-02  Revital Eres  <eres@il.ibm.com>
1284
1285         * config/rs6000/predicates.md (easy_vector_constant): Return false
1286         for 750CL paired vectors.
1287         * config/rs6000/paired.md (movv2sf_paired): Fix move of easy
1288         vector constant.
1289         (vec_initv2sf): Add new description.
1290         (vconcatsf): Likewise.
1291         * config/rs6000/rs6000-protos.h: Declare paired_expand_vector_init.
1292         * config/rs6000/rs6000.c (paired_expand_vector_init): New function.
1293
1294 2007-10-01  Alexandre Oliva  <aoliva@redhat.com>
1295
1296         * tree-ssa-sink.c (sink_code_in_bb): Don't stop sinking after
1297         sinking the last stmt in a BB.
1298
1299 2007-10-01  Alexandre Oliva  <aoliva@redhat.com>
1300
1301         PR middle-end/22156
1302         * tree-sra.c (struct sra_elt): Add in_bitfld_block.
1303         (sra_hash_tree): Handle BIT_FIELD_REFs.
1304         (sra_elt_hash): Don't hash bitfld blocks.
1305         (sra_elt_eq): Skip them in parent compares as well.  Handle
1306         BIT_FIELD_REFs.
1307         (build_element_name_1): Handle BIT_FIELD_REFs.
1308         (instantiate_element): Propagate nowarn from parents.  Create
1309         BIT_FIELD_REF for variables that are widened by scalarization.
1310         Gimple-zero-initialize all bit-field variables that are not
1311         part of parameters that are going to be scalarized on entry.
1312         (instantiate_missing_elements_1): Return the sra_elt.
1313         (canon_type_for_field): New.
1314         (try_instantiate_multiple_fields): New.  Infer widest possible
1315         access mode from decl or member type, but clip it at word
1316         size, and only widen it if a field crosses an alignment
1317         boundary.
1318         (instantiate_missing_elements): Use them.
1319         (generate_one_element_ref): Handle BIT_FIELD_REFs.
1320         (scalar_bitfield_p): New.
1321         (sra_build_assignment): Optimize assignments from scalarizable
1322         BIT_FIELD_REFs.  Use BITS_BIG_ENDIAN to determine shift
1323         counts.
1324         (REPLDUP): New.
1325         (sra_build_bf_assignment): New.  Optimize assignments to
1326         scalarizable BIT_FIELD_REFs.
1327         (sra_build_elt_assignment): New.  Optimize BIT_FIELD_REF
1328         assignments to full variables.
1329         (generate_copy_inout): Use the new macros and functions.
1330         (generate_element_copy): Likewise.  Handle bitfld differences.
1331         (generate_element_zero): Don't recurse for blocks.  Use
1332         sra_build_elt_assignment.
1333         (generate_one_element_init): Take elt instead of var.  Use
1334         sra_build_elt_assignment.
1335         (generate_element_init_1): Adjust.
1336         (bitfield_overlap_info): New struct.
1337         (bitfield_overlaps_p): New.
1338         (sra_explode_bitfield_assignment): New.  Adjust widened
1339         variables to account for endianness.
1340         (sra_sync_for_bitfield_assignment): New.
1341         (scalarize_use): Re-expand assignment to/from scalarized
1342         BIT_FIELD_REFs.  Explode or sync needed members for
1343         BIT_FIELD_REFs accesses or assignments.  Use REPLDUP.
1344         (scalarize_copy): Use REPLDUP.
1345         (scalarize_ldst): Move assert before dereference.  Adjust EH
1346         handling.
1347         (dump_sra_elt_name): Handle BIT_FIELD_REFs.
1348
1349 2007-10-01  Paolo Bonzini  <bonzini@gnu.org>
1350
1351         * simplify-rtx.c (comparison_result, simplify_relational_operation_1):
1352         Rename CR_* constants to CMP_*.  Fix spacing.
1353
1354 2007-10-01  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
1355
1356         PR other/33585
1357         * Makefile.in (build_html_dir/gccinstall): gccinstall.texi needs
1358         to be processed with the special script doc/install.texi2html.
1359         
1360 2007-09-30  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
1361
1362         * doc/invoke.texi (Wall): List the options enabled by Wall.
1363         (Wstrict-aliasing): Add missing @option.
1364         
1365 2007-09-30  Richard Sandiford  <rsandifo@nildram.co.uk>
1366
1367         * config/mips/mips.c (mips_split_64bit_move): Use gen_rtx_REG_offset
1368         rather than gen_lowpart to change a register from DImode to DFmode.
1369         (mips_cannot_change_mode_class): Only allow FPRs to change mode if
1370         both FROM and TO are integer modes that are no bigger than 4 bytes.
1371         (mips_mode_ok_for_mov_fmt_p): New function.
1372         (mips_preferred_reload_class): Use it instead of FLOAT_MODE_P.
1373         (mips_secondary_reload_class): Tweak formatting and comments.
1374         Use reg_class_subset_p instead of direct comparisons with
1375         classes.  Only allow direct FPR<->FPR moves for modes that
1376         satisfy mips_mode_ok_for_mov_fmt_p.  Only allow loads and stores
1377         for 4- and 8-byte types.  Handle reloads in which X is an FPR.
1378         * config/mips/mips.md (*movdi_gp32_fp64): Remove f<-f alternative.
1379         (*movdi_64bit): Likewise.
1380         (*movsi_internal): Likewise.
1381         (*movhi_internal): Likewise.
1382         (*movqi_internal): Likewise.
1383
1384 2007-09-30  Diego Novillo  <dnovillo@google.com>
1385
1386         PR 33593
1387         * tree-ssa-ter.c (is_replaceable_p): Return false if STMT may
1388         throw an exception.
1389
1390 2007-09-30  Uros Bizjak  <ubizjak@gmail.com>
1391
1392         PR tree-optimization/33597
1393         * tree-vect-analyze.c (vect_build_slp_tree): Check if optab handler
1394         for LSHIFT_EXPR and RSHIFT_EXPR is available for vec_mode.
1395
1396 2007-09-28  Uros Bizjak  <ubizjak@gmail.com>
1397
1398         * config/i386/i386.c (ix86_expand_move): Use can_create_pseudo_p ()
1399         instead of variants of (!reload_in_progress && !reload_completed).
1400         (x86_expand_vector_move): Ditto.
1401
1402 2007-09-28  Ollie Wild  <aaw@google.com>
1403
1404         Revert
1405         2007-09-27  Ollie Wild  <aaw@google.com>
1406
1407         * varasm.c (compare_constant): Removed call to
1408         lang_hooks.expand_constant.
1409         (copy_constants): Removed call to lang_hooks.expand_constant.
1410         (compute_reloc_for_constant): Removed call to
1411         lang_hooks.expand_constant.
1412         (output_addressed_constants): Removed call to
1413         lang_hooks.expand_constant.
1414         (constructor_static_from_elts_p): Removed call to
1415         lang_hooks.expand_constant.
1416         (output_constant): Removed calls to lang_hooks.expand_constant.
1417         * langhooks.h (struct lang_hooks): Removed field expand_constant.
1418         * langhooks-def.h (lhd_return_tree): Removed.
1419         (LANG_HOOKS_EXPAND_CONSTANT): Removed.
1420         (LANG_HOOKS_INITIALIZER): Removed LANG_HOOKS_EXPAND_CONSTANT.
1421         * langhooks.c (lhd_return_tree): Removed.
1422
1423 2007-09-28  Andrew Pinski  <andrew_pinski@playstation.sony.com>
1424
1425         PR target/33347
1426         * config/spu/spu.c (spu_expand_insv): Call copy_rtx on the second
1427         argument to gen_selb.
1428
1429 2007-09-28  Chao-ying Fu  <fu@mips.com>
1430
1431         * libgcc-std.ver: Add fixed-point routines to GCC_4.3.0 section.
1432         * doc/libgcc.texi (Fixed-point fractional library routines):
1433         Fix typos for neg and cmp functions.
1434
1435 2007-09-28  Michael Matz  <matz@suse.de>
1436
1437         PR rtl-optimization/33552
1438         * function.c (match_asm_constraints_1): Check for overlap in
1439         inputs and replace all occurences.
1440
1441 2007-09-28  Richard Sandiford  <rsandifo@nildram.co.uk>
1442
1443         * config/mips/mips.c (override_options): Fix comment typo.
1444
1445 2007-09-28  Jie Zhang  <jie.zhang@analog.com>
1446
1447         * config.gcc (bfin*-linux-uclibc*): Set extra_parts
1448         to "crtbegin.o crtbeginS.o crtend.o crtendS.o".
1449         * config/bfin/t-bfin-linux (crti.o): Don't build.
1450         (crtn.o): Likewise.
1451         (EXTRA_MULTILIB_PARTS): Remove crti.o and crtn.o.
1452         * config/bfin/t-bfin-uclinux (crti.o): Don't build.
1453         (crtn.o): Likewise.
1454         (EXTRA_MULTILIB_PARTS): Remove crti.o and crtn.o.
1455
1456 2007-09-27  Ollie Wild  <aaw@google.com>
1457
1458         * varasm.c (compare_constant): Removed call to
1459         lang_hooks.expand_constant.
1460         (copy_constants): Removed call to lang_hooks.expand_constant.
1461         (compute_reloc_for_constant): Removed call to
1462         lang_hooks.expand_constant.
1463         (output_addressed_constants): Removed call to
1464         lang_hooks.expand_constant.
1465         (constructor_static_from_elts_p): Removed call to
1466         lang_hooks.expand_constant.
1467         (output_constant): Removed calls to lang_hooks.expand_constant.
1468         * langhooks.h (struct lang_hooks): Removed field expand_constant.
1469         * langhooks-def.h (lhd_return_tree): Removed.
1470         (LANG_HOOKS_EXPAND_CONSTANT): Removed.
1471         (LANG_HOOKS_INITIALIZER): Removed LANG_HOOKS_EXPAND_CONSTANT.
1472         * langhooks.c (lhd_return_tree): Removed.
1473
1474 2007-09-27  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
1475
1476         PR middle-end/33436
1477         * expr.c (emit_group_load_1): Split constant double when destination
1478         length is half source length.
1479
1480 2007-09-27  Richard Sandiford  <rsandifo@nildram.co.uk>
1481
1482         * config/mips/mips.h (PTF_AVOID_BRANCHLIKELY): New macro.
1483         (mips_cpu_info): Add tune_flags.
1484         (GENERATE_BRANCHLIKELY): Remove TARGET_SR71K check.
1485         * config/mips/mips.c (mips_cpu_info_table): Add tune_flags fields.
1486         Remove end marker.
1487         (override_options): Remove deprecation code.  Use branch-likely
1488         instructions for optimize_size or if the tuning flags do not
1489         suggest otherwise.  Tweak warning.
1490         (mips_matching_cpu_name_p, mips_parse_cpu): Use ARRAY_SIZE.
1491
1492 2007-09-27  Matthias Klose  <doko@ubuntu.com>
1493
1494         * config/i386/t-linux64 (MULTILIB_OSDIRNAMES): Use ../lib32 as the
1495         multilib osdirname if it exists.
1496         * config/rs6000/t-linux64 (MULTILIB_OSDIRNAMES): Likewise.
1497
1498 2007-09-27  Ian Lance Taylor  <iant@google.com>
1499
1500         PR tree-optimization/33565
1501         * tree-ssa-loop-ch.c (copy_loop_headers): Set TREE_NO_WARNING on
1502         assignments of comparisons.
1503         * tree-ssa-sccvn.c (simplify_binary_expression): Add stmt
1504         parameter.  Change caller.  Defer overflow warnings around call to
1505         fold_binary.
1506         * fold-const.c (fold_undefer_overflow_warnings): Don't warn if
1507         TREE_NO_WARNING is set on the statement.
1508         * tree-ssa-forwprop.c
1509         (tree_ssa_forward_propagate_single_use_vars): Don't test
1510         TREE_NO_WARNING when calling fold_undefer_overflow_warnings.
1511         * tree-cfg.c (fold_cond_expr_cond): Likewise.
1512
1513 2007-09-27  Joseph Myers  <joseph@codesourcery.com>
1514
1515         * config/rs6000/rs6000.c (rs6000_legitimize_address): Do not
1516         reduce offset by units of 0x10000 for SPE vector modes or modes
1517         used with E500 double instructions.
1518
1519 2007-09-04  Paolo Bonzini  <bonzini@gnu.org>
1520
1521         * simplify-rtx.c (comparison_result): New.
1522         (simplify_const_relational_operation): Use it instead of the five
1523         "equal|op[01]ltu?" variables; consequently remove redundant "else"s.
1524         Improve bounds-checking optimizations; remove subsumed POPCOUNT
1525         optimizations.  Extract nonzero_address_p optimizations into a
1526         separate "if" together with optimizations where op1 is const0_rtx.
1527         Optimize comparing an IOR with zero.  Simplify op0 RELOP op0 for
1528         floating-point arguments too when appropriate.  Hoist test for ABS
1529         outside the final switch statement.
1530         * cse.c (fold_rtx): Don't look for an IOR equivalent of
1531         folded_arg0 if we found a constant equivalent.  Remove
1532         transformations done in simplify-rtx.c for "op0 RELOP op0".
1533
1534 2007-09-27  Jakub Jelinek  <jakub@redhat.com>
1535
1536         * builtins.c (expand_builtin, expand_builtin_object_size,
1537         expand_builtin_memory_chk, maybe_emit_chk_warning,
1538         maybe_emit_sprintf_chk_warning): Use new %K format string specifier
1539         for diagnostics.
1540         * expr.c (expand_expr_real_1): Likewise.
1541         * langhooks-def.h (struct diagnostic_info): Add forward decl.
1542         (lhd_print_error_function): Add third argument.
1543         * langhooks.h (struct diagnostic_info): Add forward decl.
1544         (struct lang_hooks): Add third argument to print_error_function.
1545         * diagnostic.h (diagnostic_info): Add abstract_origin field.
1546         (diagnostic_last_function_changed, diagnostic_set_last_function): Add
1547         second argument.
1548         (diagnostic_report_current_function): Likewise.
1549         * toplev.c (announce_function): Pass NULL as second argument to
1550         diagnostic_set_last_function.
1551         * diagnostic.c (diagnostic_report_current_function): Add second
1552         argument, pass it as third argument to lang_hooks.print_error_function.
1553         (default_diagnostic_starter): Pass DIAGNOSTIC as second argument
1554         to diagnostic_report_current_function.
1555         (diagnostic_report_diagnostic): Initialize diagnostic->abstract_origin
1556         and message.abstract_origin.
1557         (verbatim): Initialize abstract_origin.
1558         * pretty-print.h (text_info): Add abstract_origin field.
1559         * pretty-print.c (pp_base_format): Handle %K.
1560         * langhooks.c (lhd_print_error_function): Add third argument.  If
1561         diagnostic->abstract_origin, print virtual backtrace.
1562         * c-format.c (gcc_diag_char_table, gcc_tdiag_char_table,
1563         gcc_cdiag_char_table, gcc_cxxdiag_char_table): Support %K.
1564         (init_dynamic_diag_info): Likewise.
1565
1566 2007-09-26  David Daney  <ddaney@avtrex.com>
1567
1568         PR target/33479
1569         * config/mips/mips.md (sync_compare_and_swap<mode>, sync_old_add<mode>,
1570         sync_new_add<mode>, sync_old_<optab><mode>, sync_new_<optab><mode>,
1571         sync_old_nand<mode>, sync_new_nand<mode>,
1572         sync_lock_test_and_set<mode>): Fix '&' constraint modifiers.
1573         Update length attributes.
1574         (sync_add<mode>, sync_sub<mode>, sync_old_sub<mode>,
1575         sync_new_sub<mode>, sync_<optab><mode>, sync_nand<mode>): Update
1576         length attributes.
1577         * config/mips/mips.h (MIPS_COMPARE_AND_SWAP, MIPS_SYNC_OP,
1578         MIPS_SYNC_OLD_OP, MIPS_SYNC_NEW_OP, MIPS_SYNC_NAND,
1579         MIPS_SYNC_OLD_NAND, MIPS_SYNC_NEW_NAND, MIPS_SYNC_EXCHANGE): Add
1580         post-loop sync.
1581
1582 2007-09-26  Richard Guenther  <rguenther@suse.de>
1583
1584         PR tree-optimization/33563
1585         * tree-ssa-dse.c (get_use_of_stmt_lhs): Rename to ...
1586         (get_kill_of_stmt_lhs): ... this.  Re-structure.  Handle
1587         aggregate stores.
1588         (dse_optimize_stmt): Call get_kill_of_stmt_lhs instead of
1589         get_use_of_stmt_lhs.
1590
1591 2007-09-26  Joseph Myers  <joseph@codesourcery.com>
1592
1593         PR c/25309
1594         * c-common.c (complete_array_type): Diagnose too-large arrays and
1595         set type to error_mark_node.
1596
1597 2007-09-26  Richard Guenther  <rguenther@suse.de>
1598
1599         PR tree-optimization/30375
1600         PR tree-optimization/33560
1601         * tree-ssa-dse.c (get_use_of_stmt_lhs): Give up on uses
1602         with calls.
1603
1604         Revert
1605         2006-05-22  Aldy Hernandez  <aldyh@redhat.com>
1606
1607         * tree-ssa-dse.c (aggregate_vardecl_d): New.
1608         (dse_global_data): Add aggregate_vardecl field.
1609         (dse_possible_dead_store_p): New.
1610         Add prev_defvar variable.
1611         Allow immediate uses and previous immediate uses to differ
1612         if they are setting different parts of the whole.
1613         (get_aggregate_vardecl): New.
1614         (dse_record_partial_aggregate_store): New.
1615         (dse_whole_aggregate_clobbered_p): New.
1616         (dse_partial_kill_p): New.
1617         Call dse_maybe_record_aggregate_store().
1618         When checking whether a STMT and its USE_STMT refer to the
1619         same memory address, check also for partial kills that clobber
1620         the whole.
1621         Move some variable definitions to the block where they are used.
1622         (aggregate_vardecl_hash): New.
1623         (aggregate_vardecl_eq): New.
1624         (aggregate_vardecl_free): New.
1625         (aggregate_whole_store_p): New.
1626         (tree_ssa_dse): Initialize and free aggregate_vardecl.
1627         Mark which aggregate stores we care about.
1628
1629 2007-09-25  DJ Delorie  <dj@redhat.com>
1630
1631         PR target/33551
1632         * config/m32c/m32c.c (m32c_immd_dbl_mov): Use INTVAL instead of
1633         XINT.
1634
1635 2007-09-25  Michael Meissner  <michael.meissner@amd.com>
1636
1637         PR target/33524
1638         * config/i386/i386.c (ix86_expand_sse5_unpack): Change to call
1639         gen_sse5_pperm_sign_v4si_v2di and gen_sse5_pperm_zero_v4si_v2di
1640         for vector int32 -> int64 conversions.  Don't write beyond the end
1641         of the allocated vector for int32 -> int64 conversions.
1642
1643 2007-09-25  Revital Eres  <eres@il.ibm.com>
1644
1645         * config/rs6000/paired.h (paired_sel): New.
1646         * config/rs6000/rs6000.c (bdesc_3arg): Add selv2sf4.
1647         (rs6000_expand_ternop_builtin): Pass zero const_double operand
1648         when expanding selv2sf.
1649         * config/rs6000/rs6000.h (rs6000_builtins): Add
1650         PAIRED_BUILTIN_SELV2SF4.
1651
1652 2007-09-25  Joseph Myers  <joseph@codesourcery.com>
1653
1654         PR c/32295
1655         * c-typeck.c (default_conversion): Call require_complete_type
1656         before perform_integral_promotions.
1657         (build_unary_op): Call require_complete_type except for ADDR_EXPR.
1658         (build_c_cast): Call require_complete_type except for casts to
1659         void types.
1660         (convert_for_assignment): Call require_complete_type.
1661
1662 2007-09-25  Revital Eres  <eres@il.ibm.com>
1663
1664         * config/spu/spu.md: Fix doloop pattern.
1665
1666 2007-09-25  Bernd Schmidt  <bernd.schmidt@analog.com>
1667
1668         * config/bfin/bfin.c (expand_prologue_reg_save,
1669         expand_epilogue_reg_restore): Code to save and restore I/M/B/L regs and
1670         ASTAT moved here...
1671         (expand_interrupt_handler_prologue, expand_interrupt_handler_epilogue):
1672         ... from here.  New argument ALL; callers changed.
1673         (n_regs_saved_by_prologue): Count ASTAT for plain saveall functions.
1674         (bfin_expand_prologue, bfin_expand_epilogue): Deal with functions that
1675         have the "saveall" attribute.
1676
1677 2007-09-25  Hans-Peter Nilsson  <hp@bitrange.com>
1678
1679         * config/mmix/mmix.h (FUNCTION_INCOMING_ARG_REGNO_P): Don't define
1680         bogus target macro.
1681         (INCOMING_REGNO, OUTGOING_REGNO): Define.
1682         * config/mmix/mmix.c (mmix_opposite_regno): New function.
1683         * config/mmix/mmix-protos.h (mmix_opposite_regno): Prototype.
1684
1685         * config/mmix/mmix.md ("*cmpcc_folded"): In condition, gate
1686         with REG_P tests before REGNO access.
1687
1688 2007-09-24  DJ Delorie  <dj@redhat.com>
1689
1690         PR target/31482
1691         * config/m32c/cond.md (stzx_reversed_<mode>): Add an output
1692         constraint.
1693         (movqicc_<code>_<mode>): Likewise.
1694         (movhicc_<code>_<mode>): Likewise.
1695
1696 2007-09-24  Rask Ingemann Lambertsen  <rask@sygehus.dk>
1697
1698         PR target/33184
1699         * config/m32c/m32c.c (m32c_eh_return_data_regno): Leave an address
1700         register for reload.
1701
1702 2007-09-24  Danny Smith  <dannysmith@user.sourceforge.net>
1703
1704         PR c++/14688
1705         * config/i386/i386.c (ix86_comp_type_attributes): Check
1706         METHOD_TYPE too.
1707
1708 2007-09-24  Roman Zippel <zippel@linux-m68k.org> 
1709
1710         * config/m68k/m68k.h (ASM_OUTPUT_ALIGN_WITH_NOP): New, use
1711         "move.l %a4,%a4" to produce nops.
1712         * config/m68k/m68k.c (override_options): Reset align options,
1713         if neccessary align macro isn't avaible.
1714
1715 2007-09-24  Roman Zippel <zippel@linux-m68k.org> 
1716
1717         config/m68k/linux.h (PREFERRED_STACK_BOUNDARY): New.
1718
1719 2007-09-24  Roman Zippel <zippel@linux-m68k.org> 
1720
1721         * config/m68k/m68k.c (strict_low_part_peephole_ok): Don't leave
1722         the basic block.
1723         * config/m68k/m68k.md (movsi_m68k): Allow certain constant when
1724         reload is completed.
1725         (peephole pattern): Convert most of them to RTL peephole pattern.
1726
1727 2007-09-24  Roman Zippel <zippel@linux-m68k.org> 
1728
1729         * config/m68k/m68k.c (notice_update_cc): Recognize fp compare
1730         (moved from fp compare patterns).
1731         * config/m68k/m68k.md (cmp<mode>, cmp<mode>_68881, cmp<mode>_cf):
1732         Cleanup predicates to relieve reload.
1733         (conditional_trap): Reject conditional trap with fp condition.
1734         * gcc/config/m68k/predicates.md (fp_src_operand): New, reject
1735         certain constants early.
1736
1737 2007-09-24  Roman Zippel <zippel@linux-m68k.org>
1738
1739         * gcc/final.c (final_scan_insn): Remove accidentally duplicated code.
1740
1741 2007-09-24  Andrew Pinski  <andrew_pinski@playstation.sony.com>
1742
1743         * config.gcc (powerpc*-*-*): --with-cpu=cell is a 64bit CPU.
1744         Allow --with-tune=cell and --with-cpu=cell.
1745
1746 2007-09-24  David Edelsohn  <edelsohn@gnu.org>
1747
1748         * config/rs6000/rs6000-protos.h (rs6000_emit_swrsqrtsf): Declare.
1749         * config/rs6000/rs6000.opt (swdiv): Change option to ...
1750         (recip): this.
1751         * config/rs6000/rs6000.c (rs6000_builtin_reciprocal): New
1752         function.
1753         (TARGET_BUILTIN_RECIPROCAL): Use it.
1754         (rs6000_builtin_expand): Expand recip, recipf, and rsqrtf.
1755         (rs6000_init_builtins): Initialize recip, recipf, and rsqrtf.
1756         (rs6000_emit_swrsqrtsf): New.
1757         * config/rs6000/rs6000.h (rs6000_builtins): Add recip, recipf, and
1758         rsqrtf. 
1759         * config/rs6000/rs6000.md (UNSPEC_RSQRT): Define.
1760         (divsf3): Remove swdiv support.
1761         (recipsf3): New.
1762         (rsqrtsf2): New.
1763         (rsqrt_internal1): New.
1764         (divdf3): Remove swdiv support.
1765         (reciptdf3): New.
1766
1767 2007-09-24  Jakub Jelinek  <jakub@redhat.com>
1768
1769         PR c++/33506
1770         * langhooks.h (struct lang_hooks_for_types): Add type_hash_eq
1771         field.
1772         * langhooks-def.h (LANG_HOOKS_TYPE_HASH_EQ): Define.
1773         (LANG_HOOKS_FOR_TYPES_INITIALIZER): Add LANG_HOOKS_TYPE_HASH_EQ.
1774         * tree.c (type_hash_eq): For FUNCTION_TYPE use
1775         lang_hooks.type.type_hash_eq in addition to generic tests.
1776
1777 2007-09-24  Pranav Bhandarkar  <pranav.bhandarkar@celunite.com>
1778         Ramana Radhakrishnan  <ramana@hercules.pun.celunite.com>
1779
1780         * tree-inline.h (eni_weights): Add field target_builtin_cost to
1781         reflect the cost per call to a target specific builtin.
1782         * tree-inline.c (estimate_num_insns_1): If it is a CALL_EXPR for a
1783         call to a target specific builtin, then use target_builtin_call_cost.
1784         (init_inline_once): Initialize target_builtin_call_cost field.
1785
1786 2007-09-24  Kai Tietz  <kai.tietz@onevision.com>
1787
1788         PR middle-end/33472
1789         * config/i386/i386.c (return_in_memory_ms_64): Handle return types for
1790         complex types.
1791
1792 2007-09-23  H.J. Lu  <hongjiu.lu@intel.com>
1793
1794         * configure.ac (ld_vers): Support GNU linker version xx.xx.*
1795         * configure: Regenerated.
1796
1797 2007-09-23  Ollie Wild  <aaw@google.com>
1798
1799         * fold-const.c (fold_binary): Fold BIT_AND_EXPR's with a pointer
1800         operand.
1801         (get_pointer_modulus_and_residue): New function.
1802
1803 2007-09-23  Richard Sandiford  <rsandifo@nildram.co.uk>
1804
1805         * config/mips/mips.c (build_mips16_call_stub): On 64-bit targets,
1806         combine an SC return value into a single register.
1807
1808 2007-09-23  Richard Sandiford  <rsandifo@nildram.co.uk>
1809
1810         * opth-gen.awk (target_flags_explicit): Declare.
1811         * toplev.h (target_flags_explicit): Delete declaration.
1812         * toplev.c (target_flags): Likewise.
1813         * config/mips/mips.h (mips_llsc_setting, mips_llsc): Delete.
1814         (GENERATE_SYNC, GENERATE_LL_SC): Redefine using target_explicit_flags.
1815         Never return true for TARGET_MIPS16.
1816         * config/mips/mips.c (mips_llsc): Delete.
1817         (mips_handle_option): Remove -mllsc handling.
1818         (mips_strip_unspec_address): Tweak comment.
1819         * config/mips/mips.opt (mllsc): Use a target mask.
1820
1821 2007-09-23  Richard Sandiford  <rsandifo@nildram.co.uk>
1822
1823         * doc/tm.texi (POINTERS_EXTEND_UNSIGNED): Document extensions to
1824         word_mode as well as Pmode.
1825
1826 2007-09-23  Richard Sandiford  <rsandifo@nildram.co.uk>
1827
1828         * function.c (assign_parm_setup_block): Explicitly convert BLKmode
1829         parameters from word_mode to the subword type if such a truncation
1830         is not a no-op.
1831
1832 2007-09-23  Jakub Jelinek  <jakub@redhat.com>
1833
1834         * configure.ac (MAKEINFO): Handle makeinfo version 4.10 and above.
1835         * configure: Regenerated.
1836
1837 2007-09-23  Jan Hubicka  <jh@suse.cz>
1838
1839         * params.def (INLINE_CALL_COST): Set to 12.
1840         * invoke.texi (inline-call-cost): Update default value.
1841
1842 2007-09-23  Eric Botcazou  <ebotcazou@adacore.com>
1843
1844         * config/alpha/alpha.md (movti): Use operand_subword for the split.
1845
1846 2007-09-23  Ayal Zaks  <zaks@il.ibm.com>
1847             Revital Eres  <eres@il.ibm.com>
1848
1849         * modulo-sched.c (doloop_register_get): Rewrite the loop which
1850         checks whether the count_reg is found outside the control part.
1851
1852 2007-09-23  Jakub Jelinek  <jakub@redhat.com>
1853
1854         * expr.c (expand_expr_real_1) <case CALL_EXPR>: Use get_callee_fndecl
1855         instead of checking CALL_EXPR_FN directly to test for builtins.
1856         If error or warning attributes are present, print
1857         error resp. warning.
1858         * c-common.c (handle_error_attribute): New function.
1859         (c_common_attribute_table): Add error and warning
1860         attributes.
1861         * doc/extend.texi: Document error and warning attributes.
1862
1863         * tree.h (block_nonartificial_location): New prototype.
1864         * tree.c (block_nonartificial_location): New function.
1865         * dwarf2out.c (gen_subprogram_die): Add DW_AT_artificial
1866         if artificial attribute is present on abstract inline decl.
1867         * c-common.c (handle_artificial_attribute): New function.
1868         (c_common_attribute_table): Add artificial attribute.
1869         * final.c (override_filename, override_linenum): New variables.
1870         (final_scan_insn): For DBX_DEBUG or SDB_DEBUG, set override_filename
1871         and override_linenum if inside of a block inlined from
1872         __attribute__((__artificial__)) function.
1873         (notice_source_line): Honor override_filename and override_linenum.
1874         * doc/extend.texi: Document __attribute__((__artificial__)).
1875         * config/i386/emmintrin.h: Add __artificial__ attribute to
1876         all __always_inline__ functions.
1877         * config/i386/mmintrin.h: Likewise.
1878         * config/i386/tmmintrin.h: Likewise.
1879         * config/i386/mm3dnow.h: Likewise.
1880         * config/i386/pmmintrin.h: Likewise.
1881         * config/i386/ammintrin.h: Likewise.
1882         * config/i386/xmmintrin.h: Likewise.
1883         * config/i386/smmintrin.h: Likewise.
1884         * config/i386/bmmintrin.h: Likewise.
1885         * config/i386/mmintrin-common.h: Likewise.
1886
1887         PR middle-end/28755
1888         * expr.c (expand_constructor): New function.
1889         (expand_expr_real_1) <case CONSTRUCTOR>: Call it.
1890         (expand_expr_real_1) <case ARRAY_REF>: Call it if VALUE is
1891         CONSTRUCTOR.
1892
1893 2007-09-23  Richard Sandiford  <rsandifo@nildram.co.uk>
1894
1895         * config/mips/mips.c (dump_constants_1): Generalize to include
1896         fractional and accumulator modes.
1897
1898 2007-09-23  Richard Sandiford  <rsandifo@nildram.co.uk>
1899
1900         * config/mips/mips.h (ISA_HAS_DSP, ISA_HAS_DSPR2): New macros.
1901         * config/mips/mips.c (mips_set_mips16_mode): Don't clear the DSP
1902         flags for MIPS16.
1903         (override_options): Check TARGET_HARD_FLOAT_ABI instead of
1904         TARGET_HARD_FLOAT when testing whether -mpaired-single is
1905         supported.
1906         (mips_conditional_register_usage): Check ISA_HAS_DSP instead of
1907         TARGET_DSP.
1908         * config/mips/constraints.md (ka): Check ISA_HAS_DSPR2 instead of
1909         TARGET_DSPR2.
1910         * config/mips/mips.md (ANYF): Require TARGET_HARD_FLOAT for V2SF.
1911         (mulv2sf3, movv2sf, movv2sf_hardfloat_64bit): Require
1912         TARGET_HARD_FLOAT.
1913         (<u>mulsidi3_32bit_internal, <u>msubsidi4, <u>maddsidi4): Check
1914         ISA_HAS_DSPR2 instead of TARGET_HAS_DSPR2.
1915         * config/mips/mips-dsp.md: Use ISA_HAS_DSP instead of TARGET_HAS_DSP
1916         throughout.
1917         * config/mips/mips-dspr2.md: Likewise ISA_HAS_DSPR2 and
1918         TARGET_HAS_DSPR2.
1919         * config/mips/mips-fixed.md: Use ISA_HAS_DSP and ISA_HAS_DSPR2
1920         instead of TARGET_HAS_DSP and TARGET_HAS_DSPR2.
1921         * config/mips/mips-ps-3d.md: Add TARGET_HARD_FLOAT to V2SF patterns.
1922
1923 2007-09-22  Jason Merrill  <jason@redhat.com>
1924
1925         PR c++/19407
1926         * attribs.c (lookup_attribute_spec): Split out...
1927         (decl_attributes): From here.
1928         * tree.h: Declare it.
1929
1930 2007-09-22  Richard Sandiford  <rsandifo@nildram.co.uk>
1931
1932         * doc/sourcebuild.texi: Document dg-add-options mips16_attribute.
1933
1934 2007-09-22  Eric Botcazou  <ebotcazou@adacore.com>
1935
1936         * tree-inline.c (remap_type_1): Correctly chain variants.
1937
1938 2007-09-22  Richard Guenther  <rguenther@suse.de>
1939
1940         PR tree-optimization/33146
1941         * fold-const.c (fold_binary): Use the original tree
1942         for negating.
1943         * tree.h (STRIP_SIGN_NOPS): Converting from or to pointer
1944         also changes "sign".
1945
1946 2007-09-22  Eric Botcazou  <ebotcazou@adacore.com>
1947
1948         PR target/32325
1949         * except.c (finish_eh_generation): Call commit_edge_insertions if
1950         there are insns queued on the entry edge.
1951         * config/alpha/alpha.c (alpha_gp_save_rtx): Insert the insns on
1952         the entry edge.
1953
1954 2007-09-22  Richard Sandiford  <rsandifo@nildram.co.uk>
1955
1956         * doc/sourcebuild.texi (dg-add-c99-runtime-options): Document.
1957
1958 2007-09-19  Michael Meissner  <michael.meissner@amd.com>
1959
1960         * gcc/config/i386/i386.c: Delete trailing whitespace.
1961         * gcc/config/i386/i386.h: Ditto.
1962         * gcc/config/i386/bmmintrin.h: Ditto.
1963         * gcc/config/i386/sync.md: Ditto.
1964         * gcc/config/i386/ppro.md: Ditto.
1965         * gcc/config/i386/mmx.md: Ditto.
1966         * gcc/config/i386/constraints.md: Ditto.
1967         * gcc/config/i386/sse.md: Ditto.
1968         * gcc/config/i386/athlon.md: Ditto.
1969         * gcc/config/i386/i386.md: Ditto.
1970
1971 2007-09-21  Richard Guenther  <rguenther@suse.de>
1972
1973         PR tree-optimization/33508
1974         * tree-ssa-alias.c (mark_aliases_call_clobbered): Avoid
1975         quadratic loop by keeping a bitmap of variables we have
1976         to clobber all subvariables for.
1977         (set_initial_properties): Likewise.
1978
1979 2007-09-21  Richard Sandiford  <rsandifo@nildram.co.uk>
1980
1981         * config/mips/t-sde (TARGET_LIBGCC2_CFLAGS): Delete.
1982
1983 2007-09-20  Nigel Stephens  <nigel@mips.com>
1984             Chao-ying Fu  <fu@mips.com>
1985
1986         * c-decl.c (finish_declspecs): When _Sat is used without
1987         _Fract or _Accum, set the default type to cts_fract.
1988         This avoids a warning of "type defaults to int".
1989
1990 2007-09-20  Joseph Myers  <joseph@codesourcery.com>
1991
1992         * c-decl.c (check_bitfield_type_and_width): Don't allow _Bool
1993         bit-fields wider than one bit.
1994
1995 2007-09-20  Jakub Jelinek  <jakub@redhat.com>
1996
1997         PR debug/33316
1998         * dwarf2out.c (modified_type_die): Handle TYPE_DECL with NULL
1999         DECL_NAME.
2000         * dbxout.c (dbxout_type): Likewise.
2001
2002         PR c/33238
2003         PR c/27301
2004         * gimplify.c (gimplify_vla_decl): New function.
2005         (gimplify_decl_expr): Move VLA decl handling to gimplify_vla_decl.
2006         Call it.
2007         (gimplify_target_expr): Handle variable length TARGET_EXPRs.
2008
2009 2007-09-20  Richard Sandiford  <rsandifo@nildram.co.uk>
2010
2011         * doc/invoke.texi (-minterlink-mips16): Document.
2012         * config/mips/mips.opt (minterlink-mips16): New option.
2013         * config/mips/mips.c (mips_function_ok_for_sibcall): Handle
2014         -minterlink-mips16
2015
2016 2007-09-20  Joseph Myers  <joseph@codesourcery.com>
2017
2018         * doc/extend.texi (Attribute Syntax): Remove old speculative
2019         future direction.
2020
2021 2007-09-20  Mark Shinwell  <shinwell@codesourcery.com>
2022
2023         * combine.c: Include cgraph.h.
2024         (setup_incoming_promotions): Rework to allow more aggressive
2025         elimination of sign extensions when all call sites of the
2026         current function are known to lie within the current unit.
2027
2028 2007-09-20  Richard Sandiford  <rsandifo@nildram.co.uk>
2029
2030         * dse.c (find_shift_sequence): No-op rework of control flow.
2031
2032 2007-09-19  Richard Sandiford  <rsandifo@nildram.co.uk>
2033
2034         * config/mips/mips.c (build_mips16_call_stub): Tidy.  Fix second
2035         GPR for DCmode on 64-bit targets.  Remove redundant fallback.
2036
2037 2007-09-19  Andrew Pinski  <andrew_pinski@playstation.sony.com>
2038
2039         * cfgexpand.c (dump_stack_var_partition): Use the correct
2040         index for the offset.
2041
2042 2007-09-19  Joseph Myers  <joseph@codesourcery.com>
2043
2044         * config/mips/sde.h: Switch to GPLv3.
2045
2046 2007-09-19  Eric Botcazou  <ebotcazou@adacore.com>
2047
2048         * tree-sra.c (decide_block_copy): Decide if there are groups.
2049
2050 2007-09-19  Roman Zippel <zippel@linux-m68k.org>
2051
2052         * config/m68k/m68k.c (output_move_himode): Remove jump table
2053         recognition.
2054         config/m68k/m68k.md (lea): Likewise.
2055         * config/m68k/m68k.c (print_operand_address): Use simple pc
2056         relative addressing.
2057
2058 2007-09-19  Bernd Schmidt  <bernd.schmidt@analog.com>
2059
2060         * doc/tm.texi (IS_ASM_LOGICAL_LINE_SEPARATOR): Document new argument.
2061         * final.c (IS_ASM_LOGICAL_LINE_SEPARATOR): Provide two-argument
2062         default definition.
2063         (asm_insn_count): Pass template as second argument to it.
2064         * config/avr/avr.h (IS_ASM_LOGICAL_LINE_SEPARATOR): Likewise.
2065         * config/pa/pa.h (IS_ASM_LOGICAL_LINE_SEPARATOR): Likewise.
2066         * config/stormy16/stormy16.h (IS_ASM_LOGICAL_LINE_SEPARATOR): Likewise.
2067         * config/cris/cris.h (IS_ASM_LOGICAL_LINE_SEPARATOR): Likewise.
2068         * config/sh/sh.c (IS_ASM_LOGICAL_LINE_SEPARATOR): Likewise.
2069         (sh_insn_length_adjustment): Pass template as second argument to it.
2070         * config/bfin/bfin.h (IS_ASM_LOGICAL_LINE_SEPARATOR): New macro.
2071
2072         * config/bfin/bfin.md (define_asm_attributes): New.
2073
2074 2007-09-19  Jie Zhang  <jie.zhang@analog.com>
2075
2076         * config.gcc (bfin*-linux-uclibc*): Add ./linux-sysroot-suffix.h
2077         to tm_file.
2078         * config/bfin/print-sysroot-suffix.sh: New.
2079         * config/bfin/t-bfin-elf (EXTRA_PARTS): Remove.
2080         (MULTILIB_OPTIONS, MULTILIB_DIRNAMES, MULTILIB_MATCHES,
2081         MULTILIB_EXCEPTIONS): Redefine with new multilibs.
2082         * config/bfin/t-bfin-uclinux (EXTRA_PARTS): Remove.
2083         (MULTILIB_OPTIONS, MULTILIB_DIRNAMES, MULTILIB_MATCHES,
2084         MULTILIB_EXCEPTIONS): Redefine with new multilibs.
2085         * config/bfin/t-bfin-linux (EXTRA_PARTS): Remove.
2086         (MULTILIB_OPTIONS, MULTILIB_DIRNAMES, MULTILIB_MATCHES,
2087         MULTILIB_EXCEPTIONS): Redefine with new multilibs.
2088         (linux-sysroot-suffix.h): New target.
2089         * config/bfin/bfin.opt (mcsync-anomaly): Use Var instead of Mask.
2090         (mspecld-anomaly): Likewise.
2091         * config/bfin/bfin-protos.h (enum bfin_cpu_type): Renamed from
2092         (enum bfin_cpu): ... this. Add BFIN_CPU_BF522, BFIN_CPU_BF525,
2093         BFIN_CPU_BF527, BFIN_CPU_BF538, BFIN_CPU_BF539, BFIN_CPU_BF542,
2094         BFIN_CPU_BF544, BFIN_CPU_BF548, and BFIN_CPU_BF549.
2095         (bfin_si_revision): Declare.
2096         (bfin_workarounds): Declare.
2097         (WA_SPECULATIVE_LOADS): Define.
2098         (ENABLE_WA_SPECULATIVE_LOADS): Define.
2099         (WA_SPECULATIVE_SYNCS): Define.
2100         (ENABLE_WA_SPECULATIVE_SYNCS): Define.
2101         * config/bfin/elf.h (STARTFILE_SPEC): Rename crt532.o to basiccrt.o.
2102         (LIB_SPEC): Add %s to the linker scripts.
2103         Use proper linker script for bf522, bf525, bf527,
2104         bf538, bf539, bf542, bf544, bf548, and bf549.
2105         * config/bfin/bfin.c (bfin_si_revision): Define.
2106         (bfin_workarounds): Define.
2107         (struct bfin_cpu): New.
2108         (bfin_cpus): New.
2109         (bfin_handle_option): Handle silicon revision part of -mcpu option.
2110         (override_options): Set bfin_workarounds.
2111         (length_for_loop): Replace TARGET_CSYNC_ANOMALY with
2112         ENABLE_WA_SPECULATIVE_SYNCS, TARGET_SPECLD_ANOMALY with
2113         ENABLE_WA_SPECULATIVE_LOADS.
2114         (bfin_reorg): Likewise.
2115         * config/bfin/bfin.h (TARGET_CPU_CPP_BUILTINS): Define
2116         macros for bf522, bf525, bf527, bf538, bf539,
2117         bf542, bf544, bf548, and bf549.
2118         Define __SILICON_REVISION__ and __WORKAROUND_* macros if needed.
2119         Don't define __ID_SHARED_LIB__ when -msep-data.
2120         (TARGET_DEFAULT): Define as 0.
2121         (DRIVER_SELF_SPECS): Add -mcpu=bf532 if no -mcpu option.
2122         * doc/invoke.texi (Blackfin Options): Document silicon
2123         revision part of -mcpu option and it now accepts bf522, bf525,
2124         bf527, bf538, bf539, bf542, bf544, bf548, and bf549.
2125
2126 2007-09-18  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
2127
2128         * alias.c (memory_modified_1): Deconstify.
2129         (memory_modified_in_insn_p): Don't use const_note_stores.
2130         * rtl.h (const_note_stores): Delete.
2131         * rtlanal.c (const_note_stores): Likewise.
2132
2133 2007-09-18  Richard Sandiford  <rsandifo@nildram.co.uk>
2134
2135         * dse.c (find_shift_sequence): Temporarily revert to forbidding
2136         word shifts.
2137
2138 2007-09-18  Rask Ingemann Lambertsen  <rask@sygehus.dk>
2139
2140         PR target/33388
2141         PR target/33397
2142         * config/fr30/fr30.md (addsi3): Check REG_P() before calling REGNO().
2143         (addsi_small_int): Likewise.
2144         (addsi_big_int): Use rtx_equal_p() instead of REGNO() comparison.
2145         (one_cmplsi2): Likewise.
2146         (negsi2): Delete.
2147         (enter_func): Expand insn using hard_frame_pointer_rtx and
2148         stack_pointer_rtx.
2149         (*enter_func): New.
2150         * config/fr30/fr30.c (fr30_expand_prologue): Check for
2151         hard_frame_pointer_rtx instead of using REGNO() check.
2152         Properly sign extend GEN_INT() argument.
2153
2154 2007-09-18  Roman Zippel <zippel@linux-m68k.org>
2155
2156         * config/m68k/m68k.c (override_options): Remove USE_GAS,
2157         use %. syntax.
2158         (output_dbcc_and_branch, output_scc_di): Replace all jbcc
2159         alternatives with just jcc.
2160         * config/m68k/m68k.md (addsi_lshrsi_31, beq0_di, bne0_di,
2161         bge0_di, blt0_di, bgtu, bltu, bgeu, bleu, bgtu_rev,
2162         bltu_rev, bgeu_rev, bleu_rev, jump, dbne_hi, dbne_si,
2163         dbge_hi, dbge_si): Likewise.
2164
2165 2007-09-18  Roman Zippel <zippel@linux-m68k.org>
2166
2167         * config/m68k/m68k.md (beq, bne, bgt, blt, bge, ble, bordered,
2168         bunordered, buneq, bunge, bungt, bunle, bunlt, bltgt, beq_rev,
2169         bne_rev, bgt_rev, blt_rev, bge_rev, ble_rev, bordered_rev,
2170         bunordered_rev, buneq_rev, bunge_rev, bungt_rev, bunle_rev,
2171         bunlt_rev, bltgt_rev): Replace all fbcc with fjcc.
2172
2173 2007-09-18  Maxim Kuvyrkov  <maxim@codesourcery.com>
2174
2175         * config/m68k/m68k-devices.def (51qe): New device.
2176         * config/m68k/m68k.c (FL_FOR_isa_c): Remove division unit.  Add it
2177         to all uses of FL_FOR_isa_c for compatibility.
2178         (all_microarchs): Add cfv1 microarchitecture.
2179         (m68k_handle_option): Handle m51qe option.
2180         * config/m68k/m68k.h (TARGET_CPU_CPP_BUILTINS): Handle 51QE.
2181         (TUNE_CFV1): New macro.
2182         (enum uarch_type): Add ucfv1.
2183         * doc/invoke.texi: Document 51qe device and cfv1 microarchitecture.
2184         
2185 2007-09-18  Richard Guenther  <rguenther@suse.de>
2186
2187         PR tree-optimization/31863
2188         * tree-ssa-structalias.c (create_variable_info_for): Always
2189         free the fieldstack.
2190
2191 2007-09-18  Dorit Nuzman  <dorit@il.ibm.com>
2192
2193         * opts.c (decode_options): Enable vectorization under -O3.
2194
2195 2007-09-18  Richard Guenther  <rguenther@suse.de>
2196
2197         PR tree-optimization/33340
2198         * tree-ssa-sccvn.c (set_ssa_val_to): Do not set values to
2199         SSA_NAMEs that occur in abnormal PHI nodes.
2200
2201 2007-09-17  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
2202
2203         * tree-cfg.c (is_ctrl_altering_stmt, tree_block_ends_with_call_p):
2204         Don't use const_get_call_expr_in.
2205         * tree-gimple.c (const_get_call_expr_in): Delete.
2206         * tree-gimple.h (const_get_call_expr_in): Likewise.
2207
2208 2007-09-18  Richard Sandiford  <rsandifo@nildram.co.uk>
2209
2210         * df-scan.c (df_notes_rescan): Do nothing if the instruction does
2211         not yet have a basic block.
2212         * dse.c (find_shift_sequence): Don't set DF_NO_INSN_RESCAN.
2213
2214 2007-09-18  Richard Sandiford  <rsandifo@nildram.co.uk>
2215
2216         * config/mips/mips.c (mips_file_start): Add ".previous" directives
2217         to both ".section"s.
2218
2219 2007-09-17  Richard Sandiford  <rsandifo@nildram.co.uk>
2220
2221         * config/mips/mips.c (mips_output_mi_thunk): Use
2222         mips_function_ok_for_sibcall and const_call_insn_operand
2223         to determine if a direct sibcall is allowed.  Use
2224         mips_classify_symbol to determine a global pointer is needed.
2225
2226 2007-09-17  Richard Sandiford  <rsandifo@nildram.co.uk>
2227
2228         * config/mips/mips.md (*clear_upper32): Use "W" as the memory operand.
2229
2230 2007-09-17  Chao-ying Fu  <fu@mips.com>
2231             Nigel Stephens  <nigel@mips.com>
2232
2233         * config/fixed-bit.h: New file.
2234         * config/fixed-bit.c: New file.
2235         * doc/libgcc.texi (Fixed-point fractional library routines): New node.
2236
2237 2007-09-18  Jakub Jelinek  <jakub@redhat.com>
2238
2239         * c-format.h (format_kind_info): Add alloc_char field.
2240         * c-format.c (scanf_flag_specs): Add 'm'.
2241         (scanf_flag_pairs): Add 'a', 'm' pair.
2242         (scan_char_table): Allow 'm' modifier for c, s, [, C and S.
2243         (format_types_orig): Add alloc_char fields.
2244         (check_format_info_main): Rename aflag to alloc_flag.
2245         Handle fki->alloc_char. modifier after width and before length
2246         modifiers.  Move FMT_FLAG_SCANF_A_KLUDGE handling before
2247         length modifiers as well.
2248         * config/sol2-c.c (solaris_format_types): Add alloc_char field.
2249
2250         PR middle-end/33423
2251         * builtins.c (expand_builtin_memory_chk): Handle COMPOUND_EXPRs
2252         returned by build_call_expr.
2253
2254 2007-09-17  Eric Botcazou  <ebotcazou@adacore.com>
2255
2256         * tree-sra.c (maybe_lookup_element_for_expr) <COMPONENT_REF>: Return
2257         NULL for variable-sized records too.
2258         (sra_walk_expr) <COMPONENT_REF>: Stop at variable-sized records too.
2259
2260 2007-09-17  Tom Tromey  <tromey@redhat.com>
2261
2262         * c-decl.c (pushdecl): Don't set DECL_LANG_SPECIFIC.
2263         (c_builtin_function): Likewise.
2264         (grokdeclarator): Likewise.
2265
2266 2007-09-17  Zdenek Dvorak  <ook@ucw.cz>
2267
2268         PR rtl-optimization/26449
2269         * loop-invariant.c (move_invariant_reg): Do not use force_operand.
2270         (seq_insns_valid_p): Removed.
2271
2272 2007-09-17  Eric Botcazou  <ebotcazou@adacore.com>
2273
2274         * tree-nomudflap.c (gate_mudflap): New static function.
2275         (pass_mudflap_1): Use it as gate function.
2276         (pass_mudflap_2): Likewise.
2277
2278 2007-09-17  Jan Hubicka  <jh@suse.cz>
2279
2280         PR middle-end/33348
2281         PR target/33406
2282         * loop-invariant.c (move_invariant_reg): Unshare sequence.
2283
2284 2007-09-17  Victor Kaplansky  <victork@il.ibm.com>
2285
2286         PR tree-optimization/33319
2287         * tree-vect-analyze.c (vect_same_range_drs): New.
2288         (vect_vfa_range_equal): New.
2289         (vect_is_duplicate_ddr): Removed.
2290         (vect_mark_for_runtime_alias_test): Do not perform marking when
2291         optimizing for size or max_param for alias checking is zero.
2292         Move the function before vect_analyze_data_ref_dependence.
2293         (vect_analyze_data_ref_dependence): Add call to
2294         vect_mark_for_runtime_alias_test in two cases when dependence
2295         is not clear.
2296         (vect_analyze_data_ref_dependences): Do not call to
2297         vect_mark_for_runtime_alias_test.
2298         (vect_prune_runtime_alias_test_list): New.
2299         (vect_analyze_loop): Add call to vect_prune_runtime_alias_test_list.
2300         * tree-vect-transform.c (vect_estimate_min_profitable_iters):
2301         Update vec_outside_cost.
2302         (vect_vfa_segment_size): More compact code, use TYPE_SIZE_UNIT.
2303         (vect_create_cond_for_alias_checks): Build the base address of data
2304         reference from DR_GROUP_FIRST_DR.
2305         (vect_loop_versioning): New.
2306         (vect_transform_loop): Add a call to vect_loop_versioning.
2307         Remove factored out code.
2308
2309 2007-09-16  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
2310
2311         PR middle-end/33273
2312         * expr.c (store_expr): Call adjust_address to change mode of dest_mem
2313         to BLKmode.
2314
2315 2007-09-16  Richard Sandiford  <rsandifo@nildram.co.uk>
2316
2317         * dse.c (find_shift_sequence): Allow word as well as subword shifts.
2318         Do the tentative shift expansion with the DF_NO_INSN_RESCAN flag set.
2319         Fix the call to insn_rtx_cost.  Skip access sizes that require a
2320         real truncation of the store register.  Use convert_move instead
2321         of gen_lowpart when narrowing the result.
2322         (replace_read): Use convert_move instead of gen_lowpart when
2323         narrowing the store rhs.
2324
2325 2007-09-16  Richard Sandiford  <rsandifo@nildram.co.uk>
2326
2327         * config/mips/mips.md (SHORT): Fix long line.
2328         (SUBDI): New mode iterator.  Extend the shift-and-truncate insns
2329         to QImode and HImode.
2330
2331 2007-09-16  Richard Sandiford  <rsandifo@nildram.co.uk>
2332
2333         * config/mips/mips.h (POINTERS_EXTEND_UNSIGNED): Define.
2334
2335 2007-09-15  Zdenek Dvorak  <ook@ucw.cz>
2336
2337         * tree-parloops.c: New file.
2338         * tree-ssa-operands.h (free_stmt_operands): Declare.
2339         * tree-ssa-loop-manip.c (split_loop_exit_edge): Return the new basic
2340         block.
2341         * tree-pass.h (pass_parallelize_loops): Declare.
2342         * omp-low.c (expand_omp_parallel, expand_omp_for): Update SSA form for
2343         virtual operands.
2344         (build_omp_regions_1): Allow analysing just a single OMP region and
2345         its subregions.
2346         ( build_omp_regions_root, omp_expand_local): New functions.
2347         (build_omp_regions): Add argument to build_omp_regions_1 call.
2348         * builtins.def (DEF_GOMP_BUILTIN): Initialize OMP builtins when
2349         autoparallelization is run.
2350         * timevar.def (TV_TREE_PARALLELIZE_LOOPS): New.
2351         * tree-ssa-loop.c (gate_tree_parallelize_loops, tree_parallelize_loops,
2352         pass_parallelize_loops): New.
2353         * common.opt (ftree-parallelize-loops): New.
2354         * tree-flow.h (omp_expand_local, tree_duplicate_sese_tail,
2355         parallelize_loops): Declare.
2356         (add_phi_args_after_copy, split_loop_exit_edge): Declaration changed.
2357         * Makefile.in (tree-parloops.o): Added.
2358         * tree-cfg.c (add_phi_args_after_copy_edge, tree_duplicate_sese_tail):
2359         New functions.
2360         (add_phi_args_after_copy_bb): Use add_phi_args_after_copy_edge.
2361         (add_phi_args_after_copy): Call add_phi_args_after_copy_edge for
2362         one extra edge as well.
2363         (tree_duplicate_sese_region): Add argument to add_phi_args_after_copy.
2364         Use VEC_free to free doms vector.
2365         (move_block_to_fn): Update loop info. Remove phi nodes for virtual
2366         operands.  Recompute operand caches in the new function.
2367         (move_sese_region_to_fn): Update loop info.
2368         * passes.c (init_optimization_passes): Add pass_parallelize_loops.
2369         * tree-ssa-operands.c (free_stmt_operands): New function.
2370
2371         * doc/passes.texi: Document autoparallelization.
2372         * doc/invoke.texi (-ftree-parallelize-loops): New option.
2373
2374 2007-09-15  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
2375
2376         PR target/33062
2377         * pa.c (function_value): Use GET_MODE_BITSIZE instead of
2378         TYPE_PRECISION.
2379
2380 2007-09-15  Dorit Nuzman  <dorit@il.ibm.com>
2381
2382         * tree-vect-transform.c (vect_get_vec_defs_for_stmt_copy): check if 
2383         the VEC is not NULL.
2384         (vectorizable_type_demotion, vectorizable_type_promotion): Check that 
2385         get_vectype_for_scalar_type succeeded.
2386         (vectorizable_conversion): Likewise.
2387
2388 2007-09-14  Jan Hubicka  <jh@suse.cz>
2389
2390         * config/i386/i386.md (*floatdi<mode>2_i387): Guard against
2391         TARGET_64BIT.
2392
2393 2007-09-14  Uros Bizjak  <ubizjak@gmail.com>
2394
2395         PR target/33438
2396         * config/i386/i386.md (fmodxf3): Copy operands[2] to temporary
2397         register when operands[2] equals operands[1].
2398         (remainderxf3): Ditto.
2399
2400 2007-09-14  Sandra Loosemore  <sandra@codesourcery.com>
2401             Nigel Stephens  <nigel@mips.com>
2402
2403         * doc/tm.texi (LIBGCC2_UNWIND_ATTRIBUTE): Document.
2404         * unwind-generic.h (LIBGCC2_UNWIND_ATTRIBUTE): Define.
2405         (_Unwind_RaiseException): Add LIBGCC2_UNWIND_ATTRIBUTE to
2406         declaration.
2407         (_Unwind_ForcedUnwind): Likewise.
2408         (_Unwind_Resume): Likewise.
2409         (_Unwind_Resume_or_Rethrow): Likewise.
2410         (_Unwind_Backtrace): Likewise.
2411         (_Unwind_SjLj_RaiseException): Likewise.
2412         (_Unwind_SjLj_ForcedUnwind): Likewise.
2413         (_Unwind_SjLj_Resume): Likewise.
2414         (_Unwind_SjLj_Resume_or_Rethrow): Likewise.
2415         * unwind.inc (_Unwind_RaiseException): Add LIBGCC2_UNWIND_ATTRIBUTE
2416         to definition.
2417         (_Unwind_ForcedUnwind): Likewise.
2418         (_Unwind_Resume): Likewise.
2419         (_Unwind_Resume_or_Rethrow): Likewise.
2420         (_Unwind_Backtrace): Likewise.
2421         * unwind-compat.c (_Unwind_Backtrace): Likewise.
2422         (_Unwind_ForcedUnwind): Likewise.
2423         (_Unwind_RaiseException): Likewise.
2424         (_Unwind_Resume): Likewise.
2425         (_Unwind_Resume_or_Rethrow): Likewise.
2426
2427         * config/mips/mips.h (LIBGCC2_UNWIND_ATTRIBUTE): Define to force
2428         nomips16 mode when IN_LIBGCC2 with hard float.
2429
2430 2007-09-14  Richard Sandiford  <rsandifo@nildram.co.uk>
2431
2432         * config/mips/sdemtk.opt: Update to GPLv3.
2433         * config/mips/sdemtk.h: Likewise.
2434
2435 2007-09-14  Nigel Stephens  <nigel@mips.com>
2436
2437         * config.gcc (mips*-*-linux*): Recognise mipsisa32r2 and set
2438         MIPS_ISA_DEFAULT appropriately.  Don't make soft-float the default
2439         for mipsisa32-*-linux*.
2440
2441 2007-09-14  Nigel Stephens  <nigel@mips.com>
2442             David Ung  <davidu@mips.com>
2443             Thiemo Seufer  <ths@mips.com>
2444             Richard Sandiford  <richard@codesourcery.com>
2445
2446         * config.gcc (mips*-sde-elf*): Add support for the SDE C libraries.
2447         * configure.ac: Add a mipssde threading type.
2448         * configure: Regenerate.
2449         * config/mips/sdemtk.h: New file.
2450         * config/mips/t-sdemtk: Likewise.
2451         * config/mips/sdemtk.opt: Likewise.
2452         * gthr-mipssde.h: Likewise.
2453         * config/mips/sde.h (FUNCTION_PROFILER): Move to config/mips/sdemtk.h.
2454         * config/mips/mips.h (MIPS_SAVE_REG_FOR_PROFILING_P): New macro.
2455         (MIPS_ICACHE_SYNC): New macro, split from ...
2456         * config/mips/mips.md (clear_cache): ...here.
2457         * config/mips/mips.c (mips_save_reg_p): Check
2458         MIPS_SAVE_REG_FOR_PROFILING_P on profiled functions.
2459         (build_mips16_function_stub): Use targetm.strip_name_encoding.
2460         (build_mips16_call_stub): Likewise.
2461
2462 2007-09-14  Richard Sandiford  <richard@codesourcery.com>
2463
2464         * Makefile.in (stmp-int-hdrs): Depend on fixinc_list.
2465
2466 2007-09-14  Jakub Jelinek  <jakub@redhat.com>
2467
2468         PR target/32337
2469         * config/ia64/ia64.c (find_gr_spill): Don't decrement
2470         current_frame_info.n_local_regs.  Don't return emitted local
2471         regs.
2472         (ia64_compute_frame_size): Improve unwind hack to put
2473         RP, PFS, FP in that order by allowing some of the registers
2474         been already emitted, as long as they are emitted to the
2475         desired register.
2476
2477 2007-09-14  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
2478
2479         * config/spu/vmx2spu.h (vec_extract, vec_insert, vec_lvlx,
2480         vec_lvlxl, vec_lvrx, vec_lvrxl, vec_promote, vec_splats,
2481         vec_stvlx, vec_stvlxl, vec_stvrx, vec_stvrxl): New intrinsics.
2482
2483 2007-09-13  Eric Christopher  <echristo@apple.com>
2484             Kenneth Zadeck <zadeck@naturalbridge.com>
2485
2486         * dse.c (find_shift_sequence): New function.
2487         (replace_read): Add case to remove read if it requires shift.
2488         * config/i386/i386.c (ix86_expand_prologue): Fixed typo in comment.
2489         
2490 2007-09-13  Tom Tromey  <tromey@redhat.com>
2491
2492         * c-common.c (fname_as_string): Update.
2493         * c-parser.c (c_parser) <lex_untranslated_string>: New field.
2494         (c_lex_one_token): Update.  Add 'parser' argument.
2495         (c_parser_simple_asm_expr): Update.
2496         (c_parser_attributes): Update.
2497         (c_parser_asm_statement): Update.
2498         (c_parser_asm_operands): Update.
2499         (c_parser_peek_token): Update.
2500         (c_parser_peek_2nd_token): Update.
2501         * c-lex.c (c_lex_string_translate): Remove.
2502         (c_lex_return_raw_strings): Likewise.
2503         (c_lex_with_flags): Added 'lex_flags' argument.
2504         (lex_string): Added 'translate' argument.
2505         * c-pragma.h (c_lex_with_flags): Update.
2506         (c_lex_string_translate, c_lex_return_raw_strings): Remove.
2507         (C_LEX_STRING_NO_TRANSLATE): New define.
2508         (C_LEX_RAW_STRINGS): Likewise.
2509
2510 2007-09-13  Bernd Schmidt  <bernd.schmidt@analog.com>
2511
2512         From Jie Zhang:
2513         * config/bfin/bfin.c (enum bfin_builtins): Add BFIN_BUILTIN_ONES,
2514         BFIN_BUILTIN_CPLX_MUL_16_S40, BFIN_BUILTIN_CPLX_MAC_16_S40,
2515         BFIN_BUILTIN_CPLX_MSU_16_S40, and BFIN_BUILTIN_CPLX_SQU.
2516         (bfin_init_builtins): Initialize __builtin_bfin_ones,
2517         __builtin_bfin_min_fr1x16, __builtin_bfin_max_fr1x16,
2518         __builtin_bfin_min_fr1x32, __builtin_bfin_max_fr1x32,
2519         __builtin_bfin_cmplx_add, __builtin_bfin_cmplx_sub,
2520         __builtin_bfin_cmplx_mul_s40, __builtin_bfin_cmplx_mac_s40,
2521         __builtin_bfin_cmplx_msu_s40 and __builtin_bfin_csqu_fr16.
2522         (bdesc_1arg): Add __builtin_bfin_ones.
2523         (bfin_expand_builtin): Expand __builtin_bfin_cmplx_mul_s40,
2524         __builtin_bfin_cmplx_mac_s40, __builtin_bfin_cmplx_msu_s40,
2525         and __builtin_bfin_csqu_fr16.
2526         * config/bfin/bfin.md (UNSPEC_ONES): New constant.
2527         (ones): New define_insn.
2528         (ssaddhi3_parts): New define_insn.
2529         (sssubhi3_parts): New define_insn.
2530         (flag_mulhi_parts): New define_insn.
2531
2532 2007-09-13  Seongbae Park <seongbae.park@gmail.com>
2533
2534         * common.opt (femit-class-debug-always): Turn off by default.
2535
2536 2007-09-13  Bernd Schmidt  <bernd.schmidt@analog.com>
2537
2538         * config/bfin/bfin.md (reload_outpdi, reload_inpdi): New patterns.
2539         * config/bfin/bfin.c (bfin_secondary_reload): Make sure we use them.
2540
2541 2007-09-13  James E. Wilson  <wilson@specifix.com>
2542
2543         PR tree-optimization/33389
2544         * tree-ssa-operands.c (append_vuse): If ann->in_vdef_list true,
2545         then set build_loads before returning.
2546
2547 2007-09-13  Sandra Loosemore  <sandra@codesourcery.com>
2548             David Ung  <davidu@mips.com>
2549
2550         * config/mips/mips.h (ASM_OUTPUT_REG_PUSH): Replace {d}subu with
2551         {d}addiu and a negative immediate such that it works with MIPS16
2552         instructions.
2553         
2554 2007-09-13  H.J. Lu  <hongjiu.lu@intel.com>
2555
2556         PR bootstrap/33418
2557         * configure.ac (ld_vers): Support Linux linker.
2558         * configure: Regenerated.
2559
2560 2007-09-13  Richard Sandiford  <richard@codesourcery.com>
2561             Sandra Loosemore <sandra@codesourcery.com>
2562
2563         * config/mips/mips.h (SYMBOL_FLAG_MIPS16_FUNC): Delete.
2564         (SYMBOL_REF_MIPS16_FUNC_P): Delete.
2565         * config/mips/mips.c (mips_attribute_table): Turn mips16 and
2566         nomips16 into decl attributes.
2567         (TARGET_INSERT_ATTRIBUTES): Override.
2568         (TARGET_MERGE_DECL_ATTRIBUTES): Likewise.
2569         (TARGET_FUNCTION_ATTRIBUTE_INLINABLE_P): Always return true.
2570         (mips_mips16_type_p, mips_nomips16_type_p): Delete in favor of...
2571         (mips_mips16_decl_p, mips_nomips16_decl_p): ...these new functions.
2572         (mips_comp_type_attributes): Remove mips16 and nomips16 handling.
2573         (mips_use_mips16_mode_p): Reimplement as a function that takes
2574         a decl and considers only decl attributes.  If the decl is nested
2575         function, use its parent attributes.
2576         (mips_function_ok_for_sibcall): Use mips_use_mips16_mode_p
2577         instead of SYMBOL_REF_MIPS16_FUNC_P.
2578         (mips_set_mips16_mode): Move call to sorry here from old
2579         mips_use_mips16_mode_p.
2580         (mflip_mips16_entry): New structure.
2581         (mflip_mips16_htab): New variable.
2582         (mflip_mips16_htab_hash, mflip_mips16_htab_eq): New functions.
2583         (mflip_mips16_use_mips16_p, mips_insert_attributes): Likewise.
2584         (mips_merge_decl_attributes): New function.
2585         (mips_set_current_function): Reinstate call to mips_set_mips16_mode.
2586         Use mips_use_mips16_mode_p.
2587         (mips_output_mi_thunk): Use mips_use_mips16_mode_p instead of
2588         SYMBOL_REF_MIPS16_FUNC_P.
2589         (mips_encode_section_info): Don't set SYMBOL_FLAG_MIPS16_FUNC.
2590
2591 2007-09-13  Richard Sandiford  <richard@codesourcery.com>
2592
2593         * c-parser.c (c_parser_struct_declaration): Check for a null return.
2594
2595 2007-09-13  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
2596
2597         PR driver/33309
2598         * gcc.c (xputenv): Make argument const, and use CONST_CAST.
2599
2600 2007-09-12  Michael Meissner  <michael.meissner@amd.com>
2601             Dwarakanath Rajagopal  <dwarak.rajagopal@amd.com>
2602             Tony Linthicum  <tony.linthicum@amd.com>
2603
2604         * tree.h (function_args_iterator): New type to iterate over
2605         function arguments.
2606         (FOREACH_FUNCTION_ARGS_PTR): Iterator macros for iterating over
2607         function arguments providing a pointer to the argument.
2608         (FOREACH_FUNCTION_ARGS): Iterator macros for iterating over
2609         function arguments providing the argument.
2610         (function_args_iter_init): Inline function to initialize
2611         function_args_iterator.
2612         (function_args_iter_cond_ptr): Inline function to return the next
2613         pointer to hold the argument.
2614         (function_args_iter_cond): Inline function to return the next
2615         argument.
2616         (function_args_iter_cond_next): Advance the function args
2617         iterator.
2618         (stdarg_p): New function, return true if variable argument
2619         function.
2620         (prototype_p): New function, return true if function is
2621         prototyped.
2622         (function_args_count): New function, count the number of arguments
2623         of a function.
2624
2625         * tree.c (stdarg_p): New function, return true if variable
2626         argument function.
2627         (prototype_p): New function, return true if function is
2628         prototyped.
2629
2630         * config/i386/i386.h (TARGET_SSE5): New macro for SSE5.
2631         (TARGET_ROUND): New macro for the round/ptest instructions which
2632         are shared between SSE4.1 and SSE5.
2633         (OPTION_MASK_ISA_ROUND): Ditto.
2634         (OPTION_ISA_ROUND): Ditto.
2635         (TARGET_FUSED_MADD): New macro for -mfused-madd swtich.
2636         (TARGET_CPU_CPP_BUILTINS): Add SSE5 support.
2637
2638         * config/i386/i386.opt (-msse5): New switch for SSE5 support.
2639         (-mfused-madd): New switch to give users control over whether the
2640         compiler optimizes to use the multiply/add SSE5 instructions.
2641
2642         * config/i386/i386.c (m_AMD_MULTIPLE): Rename from
2643         m_ATHLON_K8_AMDFAM10, and change all uses.
2644         (enum pta_flags): Add PTA_SSE5.
2645         (ix86_handle_option): Turn off 3dnow if -msse5.
2646         (override_options): Add SSE5 support.
2647         (print_operand): %Y prints comparison codes for SSE5 com/pcom
2648         instructions.
2649         (ix86_expand_sse_movcc): Add SSE5 support.
2650         (ix86_expand_sse5_unpack): New function to use pperm to unpack a
2651         vector type to the next largest size.
2652         (ix86_expand_sse5_pack): New function to use pperm to pack a
2653         vector type to the next smallest size.
2654         (IX86_BUILTIN_FMADDSS): New for SSE5 intrinsic.
2655         (IX86_BUILTIN_FMADDSD): Ditto.
2656         (IX86_BUILTIN_FMADDPS): Ditto.
2657         (IX86_BUILTIN_FMADDPD): Ditto.
2658         (IX86_BUILTIN_FMSUBSS): Ditto.
2659         (IX86_BUILTIN_FMSUBSD): Ditto.
2660         (IX86_BUILTIN_FMSUBPS): Ditto.
2661         (IX86_BUILTIN_FMSUBPD): Ditto.
2662         (IX86_BUILTIN_FNMADDSS): Ditto.
2663         (IX86_BUILTIN_FNMADDSD): Ditto.
2664         (IX86_BUILTIN_FNMADDPS): Ditto.
2665         (IX86_BUILTIN_FNMADDPD): Ditto.
2666         (IX86_BUILTIN_FNMSUBSS): Ditto.
2667         (IX86_BUILTIN_FNMSUBSD): Ditto.
2668         (IX86_BUILTIN_FNMSUBPS): Ditto.
2669         (IX86_BUILTIN_FNMSUBPD): Ditto.
2670         (IX86_BUILTIN_PCMOV_V2DI): Ditto.
2671         (IX86_BUILTIN_PCMOV_V4SI): Ditto.
2672         (IX86_BUILTIN_PCMOV_V8HI): Ditto.
2673         (IX86_BUILTIN_PCMOV_V16QI): Ditto.
2674         (IX86_BUILTIN_PCMOV_V4SF): Ditto.
2675         (IX86_BUILTIN_PCMOV_V2DF): Ditto.
2676         (IX86_BUILTIN_PPERM): Ditto.
2677         (IX86_BUILTIN_PERMPS): Ditto.
2678         (IX86_BUILTIN_PERMPD): Ditto.
2679         (IX86_BUILTIN_PMACSSWW): Ditto.
2680         (IX86_BUILTIN_PMACSWW): Ditto.
2681         (IX86_BUILTIN_PMACSSWD): Ditto.
2682         (IX86_BUILTIN_PMACSWD): Ditto.
2683         (IX86_BUILTIN_PMACSSDD): Ditto.
2684         (IX86_BUILTIN_PMACSDD): Ditto.
2685         (IX86_BUILTIN_PMACSSDQL): Ditto.
2686         (IX86_BUILTIN_PMACSSDQH): Ditto.
2687         (IX86_BUILTIN_PMACSDQL): Ditto.
2688         (IX86_BUILTIN_PMACSDQH): Ditto.
2689         (IX86_BUILTIN_PMADCSSWD): Ditto.
2690         (IX86_BUILTIN_PMADCSWD): Ditto.
2691         (IX86_BUILTIN_PHADDBW): Ditto.
2692         (IX86_BUILTIN_PHADDBD): Ditto.
2693         (IX86_BUILTIN_PHADDBQ): Ditto.
2694         (IX86_BUILTIN_PHADDWD): Ditto.
2695         (IX86_BUILTIN_PHADDWQ): Ditto.
2696         (IX86_BUILTIN_PHADDDQ): Ditto.
2697         (IX86_BUILTIN_PHADDUBW): Ditto.
2698         (IX86_BUILTIN_PHADDUBD): Ditto.
2699         (IX86_BUILTIN_PHADDUBQ): Ditto.
2700         (IX86_BUILTIN_PHADDUWD): Ditto.
2701         (IX86_BUILTIN_PHADDUWQ): Ditto.
2702         (IX86_BUILTIN_PHADDUDQ): Ditto.
2703         (IX86_BUILTIN_PHSUBBW): Ditto.
2704         (IX86_BUILTIN_PHSUBWD): Ditto.
2705         (IX86_BUILTIN_PHSUBDQ): Ditto.
2706         (IX86_BUILTIN_PROTB): Ditto.
2707         (IX86_BUILTIN_PROTW): Ditto.
2708         (IX86_BUILTIN_PROTD): Ditto.
2709         (IX86_BUILTIN_PROTQ): Ditto.
2710         (IX86_BUILTIN_PROTB_IMM): Ditto.
2711         (IX86_BUILTIN_PROTW_IMM): Ditto.
2712         (IX86_BUILTIN_PROTD_IMM): Ditto.
2713         (IX86_BUILTIN_PROTQ_IMM): Ditto.
2714         (IX86_BUILTIN_PSHLB): Ditto.
2715         (IX86_BUILTIN_PSHLW): Ditto.
2716         (IX86_BUILTIN_PSHLD): Ditto.
2717         (IX86_BUILTIN_PSHLQ): Ditto.
2718         (IX86_BUILTIN_PSHAB): Ditto.
2719         (IX86_BUILTIN_PSHAW): Ditto.
2720         (IX86_BUILTIN_PSHAD): Ditto.
2721         (IX86_BUILTIN_PSHAQ): Ditto.
2722         (IX86_BUILTIN_FRCZSS): Ditto.
2723         (IX86_BUILTIN_FRCZSD): Ditto.
2724         (IX86_BUILTIN_FRCZPS): Ditto.
2725         (IX86_BUILTIN_FRCZPD): Ditto.
2726         (IX86_BUILTIN_CVTPH2PS): Ditto.
2727         (IX86_BUILTIN_CVTPS2PH): Ditto.
2728         (IX86_BUILTIN_COMEQSS): Ditto.
2729         (IX86_BUILTIN_COMNESS): Ditto.
2730         (IX86_BUILTIN_COMLTSS): Ditto.
2731         (IX86_BUILTIN_COMLESS): Ditto.
2732         (IX86_BUILTIN_COMGTSS): Ditto.
2733         (IX86_BUILTIN_COMGESS): Ditto.
2734         (IX86_BUILTIN_COMUEQSS): Ditto.
2735         (IX86_BUILTIN_COMUNESS): Ditto.
2736         (IX86_BUILTIN_COMULTSS): Ditto.
2737         (IX86_BUILTIN_COMULESS): Ditto.
2738         (IX86_BUILTIN_COMUGTSS): Ditto.
2739         (IX86_BUILTIN_COMUGESS): Ditto.
2740         (IX86_BUILTIN_COMORDSS): Ditto.
2741         (IX86_BUILTIN_COMUNORDSS): Ditto.
2742         (IX86_BUILTIN_COMFALSESS): Ditto.
2743         (IX86_BUILTIN_COMTRUESS): Ditto.
2744         (IX86_BUILTIN_COMEQSD): Ditto.
2745         (IX86_BUILTIN_COMNESD): Ditto.
2746         (IX86_BUILTIN_COMLTSD): Ditto.
2747         (IX86_BUILTIN_COMLESD): Ditto.
2748         (IX86_BUILTIN_COMGTSD): Ditto.
2749         (IX86_BUILTIN_COMGESD): Ditto.
2750         (IX86_BUILTIN_COMUEQSD): Ditto.
2751         (IX86_BUILTIN_COMUNESD): Ditto.
2752         (IX86_BUILTIN_COMULTSD): Ditto.
2753         (IX86_BUILTIN_COMULESD): Ditto.
2754         (IX86_BUILTIN_COMUGTSD): Ditto.
2755         (IX86_BUILTIN_COMUGESD): Ditto.
2756         (IX86_BUILTIN_COMORDSD): Ditto.
2757         (IX86_BUILTIN_COMUNORDSD): Ditto.
2758         (IX86_BUILTIN_COMFALSESD): Ditto.
2759         (IX86_BUILTIN_COMTRUESD): Ditto.
2760         (IX86_BUILTIN_COMEQPS): Ditto.
2761         (IX86_BUILTIN_COMNEPS): Ditto.
2762         (IX86_BUILTIN_COMLTPS): Ditto.
2763         (IX86_BUILTIN_COMLEPS): Ditto.
2764         (IX86_BUILTIN_COMGTPS): Ditto.
2765         (IX86_BUILTIN_COMGEPS): Ditto.
2766         (IX86_BUILTIN_COMUEQPS): Ditto.
2767         (IX86_BUILTIN_COMUNEPS): Ditto.
2768         (IX86_BUILTIN_COMULTPS): Ditto.
2769         (IX86_BUILTIN_COMULEPS): Ditto.
2770         (IX86_BUILTIN_COMUGTPS): Ditto.
2771         (IX86_BUILTIN_COMUGEPS): Ditto.
2772         (IX86_BUILTIN_COMORDPS): Ditto.
2773         (IX86_BUILTIN_COMUNORDPS): Ditto.
2774         (IX86_BUILTIN_COMFALSEPS): Ditto.
2775         (IX86_BUILTIN_COMTRUEPS): Ditto.
2776         (IX86_BUILTIN_COMEQPD): Ditto.
2777         (IX86_BUILTIN_COMNEPD): Ditto.
2778         (IX86_BUILTIN_COMLTPD): Ditto.
2779         (IX86_BUILTIN_COMLEPD): Ditto.
2780         (IX86_BUILTIN_COMGTPD): Ditto.
2781         (IX86_BUILTIN_COMGEPD): Ditto.
2782         (IX86_BUILTIN_COMUEQPD): Ditto.
2783         (IX86_BUILTIN_COMUNEPD): Ditto.
2784         (IX86_BUILTIN_COMULTPD): Ditto.
2785         (IX86_BUILTIN_COMULEPD): Ditto.
2786         (IX86_BUILTIN_COMUGTPD): Ditto.
2787         (IX86_BUILTIN_COMUGEPD): Ditto.
2788         (IX86_BUILTIN_COMORDPD): Ditto.
2789         (IX86_BUILTIN_COMUNORDPD): Ditto.
2790         (IX86_BUILTIN_COMFALSEPD): Ditto.
2791         (IX86_BUILTIN_COMTRUEPD): Ditto.
2792         (IX86_BUILTIN_PCOMEQUB): Ditto.
2793         (IX86_BUILTIN_PCOMNEUB): Ditto.
2794         (IX86_BUILTIN_PCOMLTUB): Ditto.
2795         (IX86_BUILTIN_PCOMLEUB): Ditto.
2796         (IX86_BUILTIN_PCOMGTUB): Ditto.
2797         (IX86_BUILTIN_PCOMGEUB): Ditto.
2798         (IX86_BUILTIN_PCOMFALSEUB): Ditto.
2799         (IX86_BUILTIN_PCOMTRUEUB): Ditto.
2800         (IX86_BUILTIN_PCOMEQUW): Ditto.
2801         (IX86_BUILTIN_PCOMNEUW): Ditto.
2802         (IX86_BUILTIN_PCOMLTUW): Ditto.
2803         (IX86_BUILTIN_PCOMLEUW): Ditto.
2804         (IX86_BUILTIN_PCOMGTUW): Ditto.
2805         (IX86_BUILTIN_PCOMGEUW): Ditto.
2806         (IX86_BUILTIN_PCOMFALSEUW): Ditto.
2807         (IX86_BUILTIN_PCOMTRUEUW): Ditto.
2808         (IX86_BUILTIN_PCOMEQUD): Ditto.
2809         (IX86_BUILTIN_PCOMNEUD): Ditto.
2810         (IX86_BUILTIN_PCOMLTUD): Ditto.
2811         (IX86_BUILTIN_PCOMLEUD): Ditto.
2812         (IX86_BUILTIN_PCOMGTUD): Ditto.
2813         (IX86_BUILTIN_PCOMGEUD): Ditto.
2814         (IX86_BUILTIN_PCOMFALSEUD): Ditto.
2815         (IX86_BUILTIN_PCOMTRUEUD): Ditto.
2816         (IX86_BUILTIN_PCOMEQUQ): Ditto.
2817         (IX86_BUILTIN_PCOMNEUQ): Ditto.
2818         (IX86_BUILTIN_PCOMLTUQ): Ditto.
2819         (IX86_BUILTIN_PCOMLEUQ): Ditto.
2820         (IX86_BUILTIN_PCOMGTUQ): Ditto.
2821         (IX86_BUILTIN_PCOMGEUQ): Ditto.
2822         (IX86_BUILTIN_PCOMFALSEUQ): Ditto.
2823         (IX86_BUILTIN_PCOMTRUEUQ): Ditto.
2824         (IX86_BUILTIN_PCOMEQB): Ditto.
2825         (IX86_BUILTIN_PCOMNEB): Ditto.
2826         (IX86_BUILTIN_PCOMLTB): Ditto.
2827         (IX86_BUILTIN_PCOMLEB): Ditto.
2828         (IX86_BUILTIN_PCOMGTB): Ditto.
2829         (IX86_BUILTIN_PCOMGEB): Ditto.
2830         (IX86_BUILTIN_PCOMFALSEB): Ditto.
2831         (IX86_BUILTIN_PCOMTRUEB): Ditto.
2832         (IX86_BUILTIN_PCOMEQW): Ditto.
2833         (IX86_BUILTIN_PCOMNEW): Ditto.
2834         (IX86_BUILTIN_PCOMLTW): Ditto.
2835         (IX86_BUILTIN_PCOMLEW): Ditto.
2836         (IX86_BUILTIN_PCOMGTW): Ditto.
2837         (IX86_BUILTIN_PCOMGEW): Ditto.
2838         (IX86_BUILTIN_PCOMFALSEW): Ditto.
2839         (IX86_BUILTIN_PCOMTRUEW): Ditto.
2840         (IX86_BUILTIN_PCOMEQD): Ditto.
2841         (IX86_BUILTIN_PCOMNED): Ditto.
2842         (IX86_BUILTIN_PCOMLTD): Ditto.
2843         (IX86_BUILTIN_PCOMLED): Ditto.
2844         (IX86_BUILTIN_PCOMGTD): Ditto.
2845         (IX86_BUILTIN_PCOMGED): Ditto.
2846         (IX86_BUILTIN_PCOMFALSED): Ditto.
2847         (IX86_BUILTIN_PCOMTRUED): Ditto.
2848         (IX86_BUILTIN_PCOMEQQ): Ditto.
2849         (IX86_BUILTIN_PCOMNEQ): Ditto.
2850         (IX86_BUILTIN_PCOMLTQ): Ditto.
2851         (IX86_BUILTIN_PCOMLEQ): Ditto.
2852         (IX86_BUILTIN_PCOMGTQ): Ditto.
2853         (IX86_BUILTIN_PCOMGEQ): Ditto.
2854         (IX86_BUILTIN_PCOMFALSEQ): Ditto.
2855         (IX86_BUILTIN_PCOMTRUEQ): Ditto.
2856         (bdesc_ptest): Change OPTION_MASK_ISA_SSE4_1 to
2857         OPTION_MASK_ISA_ROUND for instructions that are shared between
2858         SSE4.1 and SSE5.
2859         (bdesc_2arg): Ditto.
2860         (bdesc_sse_3arg): Ditto.
2861         (enum multi_arg_type): New enum for describing the various SSE5
2862         intrinsic argument types.
2863         (bdesc_multi_arg): New table for SSE5 intrinsics.
2864         (ix86_init_mmx_sse_builtins): Add SSE5 intrinsic support.
2865         (ix86_expand_multi_arg_builtin): New function for creating SSE5
2866         intrinsics.
2867         (ix86_expand_builtin): Add SSE5 intrinsic support.
2868         (ix86_sse5_valid_op_p): New function to validate SSE5 3 and 4
2869         operand instructions.
2870         (ix86_expand_sse5_multiple_memory): New function to split the
2871         second memory reference from SSE5 instructions.
2872         (type_has_variadic_args_p): Delete in favor of stdarg_p.
2873         (ix86_return_pops_args): Use stdarg_p to determine if the function
2874         has variable arguments.
2875         (ix86_setup_incoming_varargs): Ditto.
2876         (x86_this_parameter): Ditto.
2877
2878         * config/i386/i386-protos.h (ix86_expand_sse5_unpack): Add
2879         declaration.
2880         (ix86_expand_sse5_pack): Ditto.
2881         (ix86_sse5_valid_op_p): Ditto.
2882         (ix86_expand_sse5_multiple_memory): Ditto.
2883
2884         * config/i386/i386.md (UNSPEC_SSE5_INTRINSIC): Add new UNSPEC
2885         constant for SSE5 support.
2886         (UNSPEC_SSE5_UNSIGNED_CMP): Ditto.
2887         (UNSPEC_SSE5_TRUEFALSE): Ditto.
2888         (UNSPEC_SSE5_PERMUTE): Ditto.
2889         (UNSPEC_SSE5_ASHIFT): Ditto.
2890         (UNSPEC_SSE5_LSHIFT): Ditto.
2891         (UNSPEC_FRCZ): Ditto.
2892         (UNSPEC_CVTPH2PS): Ditto.
2893         (UNSPEC_CVTPS2PH): Ditto.
2894         (PCOM_FALSE): Add new constant for true/false SSE5 comparisons.
2895         (PCOM_TRUE): Ditto.
2896         (COM_FALSE_S): Ditto.
2897         (COM_FALSE_P): Ditto.
2898         (COM_TRUE_S): Ditto.
2899         (COM_TRUE_P): Ditto.
2900         (type attribute): Add ssemuladd, sseiadd1, ssecvt1, sse4arg types.
2901         (unit attribute): Add support for ssemuladd, ssecvt1, sseiadd1 sse4arg
2902         types.
2903         (memory attribute): Ditto.
2904         (sse4_1_round<mode>2): Use TARGET_ROUND instead of TARGET_SSE4_1.
2905         Use SSE4_1_ROUND_* constants instead of hard coded numbers.
2906         (rint<mode>2): Use TARGET_ROUND instead of TARGET_SSE4_1.
2907         (floor<mode>2): Ditto.
2908         (ceil<mode>2): Ditto.
2909         (btrunc<mode>2): Ditto.
2910         (nearbyintdf2): Ditto.
2911         (nearbyintsf2): Ditto.
2912         (sse_setccsf): Disable if SSE5.
2913         (sse_setccdf): Ditto.
2914         (sse5_setcc<mode>): New support for SSE5 conditional move.
2915         (sse5_pcmov_<mode>): Ditto.
2916
2917         * config/i386/sse.md (SSEMODE1248): New mode iterator for SSE5.
2918         (SSEMODEF4): Ditto.
2919         (SSEMODEF2P): Ditto.
2920         (ssemodesuffixf4): New mode attribute for SSE5.
2921         (ssemodesuffixf2s): Ditto.
2922         (ssemodesuffixf2c): Ditto.
2923         (sserotatemax): Ditto.
2924         (ssescalarmode): Ditto.
2925         (sse_maskcmpv4sf3): Disable if SSE5.
2926         (sse_maskcmpv2df3): Ditto.
2927         (sse_vmmaskcmpv4sf3): Ditto.
2928         (sse5_fmadd<mode>4): Add SSE5 floating point multiply/add
2929         instructions.
2930         (sse5_vmfmadd<mode>4): Ditto.
2931         (sse5_fmsub<mode>4): Ditto.
2932         (sse5_vmfmsub<mode>4): Ditto.
2933         (sse5_fnmadd<mode>4): Ditto.
2934         (sse5_vmfnmadd<mode>4): Ditto.
2935         (sse5_fnmsub<mode>4): Ditto.
2936         (sse5_vmfnmsub<mode>4): Ditto.
2937         (sse5i_fmadd<mode>4): Ditto.
2938         (sse5i_fmsub<mode>4): Ditto.
2939         (sse5i_fnmadd<mode>4): Ditto.
2940         (sse5i_fnmsub<mode>4): Ditto.
2941         (sse5i_vmfmadd<mode>4): Ditto.
2942         (sse5i_vmfmsub<mode>4): Ditto.
2943         (sse5i_vmfnmadd<mode>4): Ditto.
2944         (sse5i_vmfnmsub<mode>4): Ditto.
2945         (mulv16qi3): Add SSE5 support.
2946         (mulv4si3): Ditto.
2947         (sse5_mulv4si3): New insn for 32-bit multiply support on SSE5.
2948         (sse2_mulv4si3): Disable if SSE5.
2949         (sse4_1_roundpd): Use TARGET_ROUND instead of TARGET_SSE4_1.
2950         (sse4_1_roundps): Ditto.
2951         (sse4_1_roundsd): Ditto.
2952         (sse4_1_roundss): Ditto.
2953         (sse_maskcmpv4sf3): Disable if SSE5 so the SSE5 instruction will
2954         be generated.
2955         (sse_maskcmpsf3): Ditto.
2956         (sse_vmmaskcmpv4sf3): Ditto.
2957         (sse2_maskcmpv2df3): Ditto.
2958         (sse2_maskcmpdf3): Ditto.
2959         (sse2_vmmaskcmpv2df3): Ditto.
2960         (sse2_eq<mode>3): Ditto.
2961         (sse2_gt<mode>3): Ditto.
2962         (sse5_pcmov_<mode>): Add SSE5 support.
2963         (vec_unpacku_hi_v16qi): Ditto.
2964         (vec_unpacks_hi_v16qi): Ditto.
2965         (vec_unpacku_lo_v16qi): Ditto.
2966         (vec_unpacks_lo_v16qi): Ditto.
2967         (vec_unpacku_hi_v8hi): Ditto.
2968         (vec_unpacks_hi_v8hi): Ditto.
2969         (vec_unpacku_lo_v8hi): Ditto.
2970         (vec_unpacks_lo_v8hi): Ditto.
2971         (vec_unpacku_hi_v4si): Ditto.
2972         (vec_unpacks_hi_v4si): Ditto.
2973         (vec_unpacku_lo_v4si): Ditto.
2974         (vec_unpacks_lo_v4si): Ditto.
2975         (sse5_pmacsww): New SSE5 intrinsic insn.
2976         (sse5_pmacssww): Ditto.
2977         (sse5_pmacsdd): Ditto.
2978         (sse5_pmacssdd): Ditto.
2979         (sse5_pmacssdql): Ditto.
2980         (sse5_pmacssdqh): Ditto.
2981         (sse5_pmacsdqh): Ditto.
2982         (sse5_pmacsswd): Ditto.
2983         (sse5_pmacswd): Ditto.
2984         (sse5_pmadcsswd): Ditto.
2985         (sse5_pmadcswd): Ditto.
2986         (sse5_pcmov_<move>): Conditional move support on SSE5.
2987         (sse5_phaddbw): New SSE5 intrinsic insn.
2988         (sse5_phaddbd): Ditto.
2989         (sse5_phaddbq): Ditto.
2990         (sse5_phaddwd): Ditto.
2991         (sse5_phaddwq): Ditto.
2992         (sse5_phadddq): Ditto.
2993         (sse5_phaddubw): Ditto.
2994         (sse5_phaddubd): Ditto.
2995         (sse5_phaddubq): Ditto.
2996         (sse5_phadduwd): Ditto.
2997         (sse5_phadduwq): Ditto.
2998         (sse5_phaddudq): Ditto.
2999         (sse5_phsubbw): Ditto.
3000         (sse5_phsubwd): Ditto.
3001         (sse5_phsubdq): Ditto.
3002         (sse5_pperm): Ditto.
3003         (sse5_pperm_sign_v16qi_v8hi): New insns for pack/unpack with SSE5.
3004         (sse5_pperm_zero_v16qi_v8hi): Ditto.
3005         (sse5_pperm_sign_v8hi_v4si): Ditto.
3006         (sse5_pperm_zero_v8hi_v4si): Ditto.
3007         (sse5_pperm_sign_v4si_v2di): Ditto.
3008         (sse5_pperm_sign_v4si_v2di): Ditto.
3009         (sse5_pperm_pack_v2di_v4si): Ditto.
3010         (sse5_pperm_pack_v4si_v8hi): Ditto.
3011         (sse5_pperm_pack_v8hi_v16qi): Ditto.
3012         (sse5_perm<mode>): New SSE5 intrinsic insn.
3013         (rotl<mode>3): Ditto.
3014         (sse5_rotl<mode>3): Ditto.
3015         (sse5_ashl<mode>3): Ditto.
3016         (sse5_lshl<mode>3): Ditto.
3017         (sse5_frcz<mode>2): Ditto.
3018         (sse5s_frcz<mode>2): Ditto.
3019         (sse5_cvtph2ps): Ditto.
3020         (sse5_cvtps2ph): Ditto.
3021         (sse5_vmmaskcmp<mode>3): Ditto.
3022         (sse5_com_tf<mode>3): Ditto.
3023         (sse5_maskcmp<mode>3): Ditto.
3024         (sse5_maskcmp_uns<mode>3): Ditto.
3025         (sse5_maskcmp_uns2<mode>3): Ditto.
3026         (sse5_pcom_tf<mode>3): Ditto.
3027         
3028         * config/i386/predicates.md (const_0_to_31_operand): New predicate
3029         to match 0..31.
3030         (sse5_comparison_float_operator): New predicate to match the
3031         comparison operators supported by the SSE5 com instruction.
3032         (ix86_comparison_int_operator): New predicate to match just the
3033         signed int comparisons.
3034         (ix86_comparison_uns_operator): New predicate to match just the
3035         unsigned int comparisons.
3036
3037         * doc/invoke.texi (-msse5): Add documentation.
3038         (-mfused-madd): Ditto.
3039
3040         * doc/extend.texi (x86 intrinsics): Document new SSE5 intrinsics.
3041
3042         * config.gcc (i[34567]86-*-*): Include bmmintrin.h and
3043         mmintrin-common.h.
3044         (x86_64-*-*): Ditto.
3045
3046         * config/i386/cpuid.h (bit_SSE5): Define SSE5 bit.
3047
3048         * config/i386/bmmintrin.h: New file, provide common x86 compiler
3049         intrinisics for SSE5.
3050
3051         * config/i386/smmintrin.h: Move instructions shared with SSE5 to
3052         mmintrin-common.h.
3053
3054         * config/i386/mmintrin-common.h: New file, to contain common
3055         instructions between SSE4.1 and SSE5.
3056
3057         * config/i386/netware.c (gen_stdcall_or_fastcall_decoration): Use
3058         FOREACH_FUNCTION_ARGS to iterate over the argument list.
3059         (gen_regparm_prefix): Ditto.
3060
3061         * config/i386/winnt.c (gen_stdcall_or_fastcall_suffix): Use
3062         FOREACH_FUNCTION_ARGS to iterate over the argument list.  Use
3063         prototype_p to determine if a function is prototyped.
3064
3065 2007-09-12  Janis Johnson  <janis187@us.ibm.com>
3066
3067         * config/dfp-bit.c (dfp_conversion_exception): New function.
3068         (DFP_TO_DFP) Add new variants to use direct conversions in decNumber.
3069         (DFP_TO_INT): Ditto.
3070         (INT_TO_DFP): Ditto.
3071         * config/dfp-bit.h (DEC_FLOAT_FROM_INT, DEC_FLOAT_TO_INT): New.
3072
3073 2007-09-12  Jakub Jelinek  <jakub@redhat.com>
3074
3075         PR target/32338
3076         * config/ia64/ia64.c (ia64_expand_epilogue): Emit blockage
3077         before sp restoration even when total_size is 0, but
3078         frame_pointer_needed.
3079
3080 2007-09-12  Bob Wilson  <bob.wilson@acm.org>
3081
3082         * config/xtensa/xtensa.c (machine_function): Add vararg_a7_copy.
3083         (xtensa_copy_incoming_a7): Use start_sequence instead of
3084         push_to_sequence.  Stash insns in vararg_a7_copy for builtin_saveregs.
3085         (xtensa_builtin_saveregs): Place code from vararg_a7_copy at the start
3086         of the saveregs sequence.
3087
3088 2007-09-12  Richard Sandiford  <richard@codesourcery.com>
3089
3090         * c-tree.h (grokfield): Add a "tree *" argument.
3091         * c-decl.c (grokdeclarator): Take a pointer to the decl's attributes.
3092         Chain nested decl attributes to it.  Don't call decl_attributes here.
3093         (groktypename): Pass grokdeclarator a pointer to the attribute list.
3094         (start_decl, grokparm, push_parm_decl, start_function): Likewise.
3095         (grokfield): Take a pointer to the decl's attributes and pass
3096         it to grokdeclarator.
3097         * c-parser.c (c_parser_struct_declaration): Update the calls to
3098         grokfield.  Call decl_attributes for anonymous struct and union
3099         fields.
3100
3101 2007-09-12  Jan Hubicka  <jh@suse.cz>
3102
3103         * c-objc-common.h (LANG_HOOKS_CALLGRAPH_EXPAND_FUNCTION): Kill.
3104
3105 2007-09-12  Ira Rosen  <irar@il.ibm.com>
3106
3107         PR tree-optimization/32377
3108         * tree-vect-analyze.c (vect_analyze_data_ref_dependence): Distinguish
3109         between positive and negative dependence distance using DDR_REVERSED_P.
3110
3111 2007-09-12  Dorit Nuzman  <dorit@il.ibm.com>
3112
3113         PR tree-optimization/33373
3114         * tree-vect-analyze (vect_determine_vectorization_factor): Call 
3115         TREE_INT_CST_LOW when comparing TYPE_SIZE_UNIT. 
3116
3117 2007-09-12  Jan Hubicka  <jh@suse.cz>
3118
3119         PR target/33393
3120         * i386.md (floatsisf2_mixed_memory, floatsisf2_sse_memory): Disable
3121         for !SSE_MATH
3122
3123 2007-09-12  Christian Bruel  <christian.bruel@st.com>
3124
3125         * sh.h (SH_DBX_REGISTER_NUMBER): Added fpscr, fixed sr/gbr regs.
3126         * linux-unwind.h (SH_DWARF_FRAME_GBR): fixed. 
3127         
3128 2007-09-12  Ira Rosen  <irar@il.ibm.com>
3129
3130         * tree-vect-transform.c (vect_get_slp_defs): Don't build a vector
3131         for oprnd1 if not required.
3132         (vectorizable_operation): Use scalar operand in SLP in case of 
3133         shift with scalar argument.
3134
3135 2007-09-12  Ira Rosen  <irar@il.ibm.com>
3136
3137         * params.def (PARAM_MIN_VECT_LOOP_BOUND): Change default and minimum 
3138         to 1.
3139
3140 2007-09-11  James E. Wilson  <wilson@specifix.com>
3141
3142         * defaults.h (DWARF2_UNWIND_INFO): Don't define if
3143         TARGET_UNWIND_INFO is defined.
3144         * config/ia64/ia64.h (INCOMING_RETURN_ADDR_RTX): Delete undef
3145         after definition.
3146
3147 2007-09-12  Kaz Kojima  <kkojima@gcc.gnu.org>
3148
3149         * config/sh/sh.c (calc_live_regs): Use
3150         current_function_saves_all_registers instead of
3151         current_function_has_nonlocal_label.
3152         (sh_allocate_initial_value): Likewise.
3153         (sh_get_pr_initial_val): Likewise.
3154         * config/sh/sh.h (SHMEDIA_REGS_STACK_ADJUST): Likewise.
3155         * config/sh/sh.md (load_ra): Likewise.
3156
3157 2007-09-12  Hans-Peter Nilsson  <hp@axis.com>
3158
3159         * config/cris/t-linux (LIMITS_H_TEST): Only define if not inhibit_libc.
3160
3161         PR target/33360
3162         * config/cris/cris.c (cris_expand_pic_call_address): Fix typo in
3163         GET_CODE (x) == CONST_INT to CONST_INT_P (x) transformation.
3164
3165 2007-09-12  Sa Liu  <saliu@de.ibm.com>
3166
3167         * config/spu/spu.c (spu_emit_branch_or_set): Handle NaN values as
3168         operands to DFmode GE or LE compares.
3169
3170 2007-09-12  Bernd Schmidt  <bernd.schmidt@analog.com>
3171
3172         * config/bfin/bfin.h (enum reg_class, REG_CLASS_CONTENTS,
3173         REG_CLASS_NAMES): Add P0REGS.
3174         (REGNO_REG_CLASS): Return it where appropriate.
3175         (REG_CLASS_FROM_CONSTRAINT): Add 'qA'.
3176         (CLASS_LIKELY_SPILLED_P): P0REGS is likely_spilled.
3177         * doc/md.texi (Blackfin family): Document 'q' constraints.
3178
3179 2007-09-11  Steve Kenton  <skenton@ou.edu>
3180
3181         * pa/linux-unwind.h: Guard with inhibit_libc.
3182         * pa/hpux-unwind.h: Likewise.
3183
3184 2007-09-11  David Daney  <ddaney@avtrex.com>
3185
3186         * doc/invoke.texi: Document new MIPS -mllsc and -mno-llsc options.
3187         * doc/install.texi: Document new --with-llsc and --without-llsc
3188         options.
3189         * config.gcc: Handle --with-llsc and --without-llsc configure options.
3190         * config/mips/mips.md (sync, memory_barrier): Wrap sync instrunction
3191         in %| and %- operand codes.  Depend on GENERATE_SYNC instead of
3192         ISA_HAS_SYNC.
3193         (sync_compare_and_swap<mode>, sync_add<mode>, sync_sub<mode>,
3194         sync_old_add<mode>, sync_old_sub<mode>, sync_new_add<mode>,
3195         sync_new_sub<mode>, sync_<optab><mode>, sync_old_<optab><mode>,
3196         sync_new_<optab><mode>, sync_nand<mode>, sync_old_nand<mode>,
3197         sync_new_nand<mode>, sync_lock_test_and_set<mode>): Depend on
3198         GENERATE_LL_SC instead of ISA_HAS_LL_SC.
3199         * config/mips/mips.opt (mllsc): New option.
3200         * config/mips/mips.c (mips_llsc): Define variable.
3201         (mips_handle_option): Handle mllsc option.
3202         (override_options): Set mips_print_operand_punct for '|' and '-'.
3203         (print_operand): Add new %| and %- operand codes.
3204         * config/mips/mips.h (mips_llsc_setting): New enum type.
3205         (mips_llsc): Declare.
3206         (OPTION_DEFAULT_SPECS): Add llsc handling.
3207         (GENERATE_SYNC): New macro.
3208         (GENERATE_LL_SC): New macro.
3209         (MIPS_COMPARE_AND_SWAP, MIPS_SYNC_OP, MIPS_SYNC_OLD_OP,
3210         MIPS_SYNC_NEW_OP, MIPS_SYNC_NAND, MIPS_SYNC_OLD_NAND,
3211         MIPS_SYNC_NEW_NAND, MIPS_SYNC_EXCHANGE): Wrap instructions
3212         in %| and %- operand codes.
3213
3214 2007-09-11  Eric Botcazou  <ebotcazou@adacore.com>
3215
3216         * tree-ssa-structalias.c (push_fields_onto_fieldstack): Deal with
3217         TYPE_NONALIASED_COMPONENT like with DECL_NONADDRESSABLE_P.
3218
3219 2007-09-11  Jason Merrill  <jason@redhat.com>
3220
3221         PR middle-end/27945
3222         * stor-layout.c (layout_decl): Do pack variable size fields.    
3223
3224 2007-09-11  Maxim Kuvyrkov  <maxim@codesourcery.com>
3225
3226         * config/m68k/predicates.md (movsi_const0_operand,
3227         non_symbolic_call_operand): New predicates.
3228
3229         * config/m68k/constraints.md (Cs, Ci, C0, Cj, CQ, CW, CZ, CS, Ap, Ac):
3230         New constraints.
3231         * doc/md.texi (Constraints for Particular Machines: Motorola 680x0):
3232         Document constraints N, O, P, R, S, T, Q, U, W, Cs, Ci, C0, Cj, CQ,
3233         CW, CZ, CS, Ap and Ac.
3234
3235         * config/m68k/m68k.md (UNSPEC_IB): New constant.
3236         (constraints.md): New include.
3237         (cpu, type, type1, opx, opy, opx_type, opy_type, size, opx_access,
3238         opx_mem, opy_mem, op_mem, guess, split): New attributes.
3239         (movdf_internal): Name pattern.  Fix to use alternatives.  Add split.
3240         Specify attributes.
3241         (pushdi): Add split.
3242         (tstsi_internal): Name pattern.  Fix to use alternatives.  Specify
3243         attributes.  Split tstsi_internal_68020_cf from it.
3244         (tstsi_internal_68020_cf): New pattern.
3245         (tsthi_internal, tstqi_internal): Name pattern.  Specify attributes.
3246         (tst<mode>_cf): Specify attributea.
3247         (cmpsi_cf): Name pattern.  Specify attributes.
3248         (cmp<mode>_68881, cmp<mode>_cf): Specify type attribute.
3249         (pushexthisi_const): Fix to use alternatives.  Specify
3250         attributes.
3251         (movsi_const0): Split movsi_const0_68000_10 and movsi_const0_68040_60
3252         from it.  Fix to use alternatives.  Specify attributes.
3253         (movsi_const0_68040_10, movsi_const0_68040_60): New patterns.
3254         (movsi_cf, movstrictqi_cf): Fix to use alternatives.  Specify
3255         attributes.
3256         (movsf_cf_soft): Specify attributes.
3257         (movdf_cf_soft): Add split.
3258         (pushasi, zero_extendhisi2_cf, zero_extendqisi2_cfv4,
3259         cfv4_extendhisi2, 68k_extendhisi2, extendqihi2, cfv4_extendqisi2,
3260         68k_extendqisi2, truncdfsf2_cf): Specify attributes.
3261         (truncdfsf2_68881): Name pattern.  Specify attributes.
3262         (floatsi<mode>2_cf, floathi<mode>2_68881, floathi<mode>2_cf,
3263         floatqi<mode>2_68881, floatqi<mode>2_cf, ftrunc<mode>2_cf,
3264         fix<mode>qi2_cf, fix<mode>hi2_cf, fix<mode>si2_cf, adddi_dishl32):
3265         Specify attributes.
3266         (addsi3_5200): Fix to use alternatives.  Specify attributes.
3267         Add splits.
3268         (add<mode>3_cf, subdi_dishl32): Specify attributes.
3269         (subsi3): Add alternative for subq.l.  Specify attributes.
3270         (sub<mode>3_cf, mulhi3, mulhisi3): Specify attributes.
3271         (mulhisisi3_s, mulsi3_68020, mulsi3_cf): Name pattern.  Specify
3272         attributes.
3273         (umulhisi3): Specify attributes.
3274         (mulhisisi3_z): Name pattern.  Specify attributes.
3275         (fmul<mode>3_cf, div<mode>3_cf, negsi2_internal, negsi2_5200,
3276         sqrt<mode>2_68881, clzsi2, one_cmplsi2_5200, subreghi1ashrdi_const32,
3277         subregsi1ashrdi_const32, ashrsi3, subreg1lshrdi_const32, lshrsi3,
3278         bsetmemqi): Specify attributes.
3279         (bsetmemqi_ext): Name pattern.  Specify attributes.
3280         (bclrmemqi): Specify attributes.
3281         (bclrmemqi_ext, scc, sls): Name pattern.  Specify attributes.
3282         (beq, bne, bgt, bgtu, blt, bltu, bge, bgeu, ble, bleu): Specify
3283         attributes.
3284         (beq2, bne2, bgt2, bgtu2, blt2, bltu2, bge2, bgeu2, ble2, bleu2): Name
3285         pattern.  Specify attributes.
3286         (jump): Specify attributes.
3287         (tablejump_internal): Name pattern.  Specify attributes.
3288         (call_value): Split into non_symbolic_call_value,
3289         symbolic_call_value_jsr, symbolic_call_value_bsr.  Fix to use
3290         alternatives.  Specify attributes.
3291         (non_symbolic_call_value, symbolic_call_value_jsr,
3292         symbolic_call_value_bsr): New patterns.
3293         (nop, return, unlink, indirect_jump): Specify attributes.
3294         (trap): Fix condition.  Specify attributes.
3295         (ib): New pattern.
3296
3297         * config/m68k/m68k.c (m68k_symbolic_call_var): New variable.
3298         (override_options): Initialize it.  Initialize m68k_sched_cpu.
3299         (CONST_METHOD): Rename to M68K_CONST_METHOD, move to m68k.h.
3300         (const_method): Make global, rename to m68k_const_method.
3301         (const_int_cost, output_move_const_into_data_reg): Update.
3302         (output_move_double): Parametrize to emit rtl code, rename to
3303         handle_move_double.
3304         (output_reg_adjust, emit_reg_adjust, output_compadr, output_movsi,
3305         emit_movsi): New static functions.
3306         (output_move_double): New function with semantics of old
3307         output_move_double.
3308         (m68k_emit_move_double): New function.
3309         (m68k_sched_cpu): New variable.
3310         (attr_op_type): New enum.
3311         (sched_guess_p): New variable.
3312         (sched_address_type, sched_operand_type, sched_attr_op_type):
3313         New static functions.
3314         (m68k_sched_attr_opx_type, m68k_sched_attr_opy_type,
3315         m68k_sched_attr_size, m68k_sched_attr_op_mem): New functions.
3316         (sched_branch_type): New static variable.
3317         (m68k_sched_branch_type): New function.
3318         * config/m68k/m68k.h (M68K_SYMBOLIC_CALL): New enum.
3319         (m68k_symbolic_call_var): Declare.
3320         (M68K_CONST_METHOD): Rename from CONST_METHOD.  Move here from m68k.c.
3321         (m68k_const_method, m68k_emit_move_double, m68k_sched_cpu,
3322         m68k_sched_attr_opx_type, m68k_sched_attr_opy_type,
3323         m68k_sched_attr_size, m68k_sched_attr_op_mem, m68k_sched_branch_type):
3324         Declare.
3325
3326 2007-09-11  Jakub Jelinek  <jakub@redhat.com>
3327
3328         * builtins.def (BUILT_IN_VA_ARG_PACK_LEN): New builtin.
3329         * builtins.c (expand_builtin) <case BUILT_IN_VA_ARG_PACK_LEN>: Issue
3330         error if __builtin_va_arg_pack_len () wasn't optimized out during
3331         inlining.
3332         * tree-inline.c (copy_bb): Replace __builtin_va_arg_pack_len ()
3333         with the number of inline's anonymous arguments.
3334         * doc/extend.texi: Document __builtin_va_arg_pack_len ().
3335
3336 2007-09-11  Zdenek Dvorak  <ook@ucw.cz>
3337
3338         * fold-const.c (extract_muldiv_1): Do not simplify
3339         var * c * c to var.
3340
3341 2007-09-11  Jan Hubicka <jh@suse.cz>
3342
3343         * i386.h (ix86_tune_indices): Add X86_TUNE_INTER_UNIT_CONVERSIONS.
3344         (TARGET_INTER_UNIT_CONVERSIONS): New.
3345         * i386.md (floatsi expanders): Remove redundant check for SImode
3346         source; offload to memory when asked for.
3347         (floatsisf2_mixed, floatsisf2_sse, floatsidf2_mixed, floatsidf2_sse
3348         floatdisf2_mixed, floatsisf2_sse, floatsidf2_mixed, floatsidf2_sse):
3349         Update conditions;
3350         (floatsisf2_mixed_memory, floatsisf2_sse_memory,
3351         floatsidf2_mixed_memory, floatsidf2_sse_memory
3352         floatdisf2_mixed_memory, floatsisf2_sse_memory,
3353         floatsidf2_mixed_memory, floatsidf2_sse_memory): New.
3354
3355 2007-09-11  Jan Hubicka <jh@suse.cz>
3356
3357         * toplev.c (process_options): all frontends now do unit-at-a-time.
3358         * cgraphunit.c: update comments.
3359         (cgraph_expand_function): call passmanager dirrectly; emit thunks.
3360         * c-decl.c (finish_function): use cgraph_add_new_function.
3361         * function.c (expand_function_end): We are always unit-at-a-time.
3362
3363 2007-09-11  Richard Sandiford  <richard@codesourcery.com>
3364
3365         * config/mips/mips.c (mips_set_mips16_mode): Use separate anchor
3366         settings for MIPS16.
3367         (mips_use_anchors_for_symbol_p): Use default_use_anchors_for_symbol_p.
3368
3369 2007-09-11  Richard Sandiford  <richard@codesourcery.com>
3370
3371         * config/mips/mips.c (mips_symbol_insns_1): Allow LEAs of
3372         SYMBOL_FORCE_TO_MEM constants.
3373         (mips_rtx_costs): Give a cost of 1 to force_to_mem_operands.
3374         (mips16_rewrite_pool_refs_info): New structure.
3375         (mips16_rewrite_pool_constant): New function, split out from...
3376         (mips16_rewrite_pool_refs): ...here.  Take a pointer to a
3377         mips16_rewrite_pool_refs_info structure rather than a pointer
3378         to a constant pool.  Force force_to_mem_operands into memory.
3379         (mips16_lay_out_constants): Update call to mips16_rewrite_pool_refs.
3380         * config/mips/predicates.md (force_to_mem_operand): New predicate.
3381         * config/mips/constraints.md (kf): New constraint.
3382         * config/mips/mips.md (*movdi_64bit_mips16): Add a d <- kf alternative.
3383         (*movsi_mips16): Likewise.
3384
3385 2007-09-11  Richard Sandiford  <richard@codesourcery.com>
3386             Nigel Stephens  <nigel@mips.com>
3387             David Ung  <davidu@mips.com>
3388
3389         * config/mips/mips.h (CONSTANT_POOL_COST): Move to...
3390         * config/mips/mips.c: ...here and set to 4 for TARGET_MIPS16.
3391         (mips16_constant_cost, mips_immediate_operand_p, mips_binary_cost)
3392         (mips_fp_mult_cost, mips_fp_div_cost, mips_sign_extend_cost)
3393         (mips_zero_extend_cost): New functions.
3394         (mips_rtx_costs): Treat COMPARE constants as having zero cost.
3395         Use the new functions.  Tweak many cost estimates, both here
3396         and in the new subroutines.  Return false when the cost of the
3397         operands has not been calculated.  Check for *clear_upper32.
3398         Check for floating-point multiply-add, reciprocal and rsqrt
3399         patterns.  Handle comparison and rotation codes.
3400
3401 2007-09-11  Danny Smith  <dannysmith@users.sourceforge.net>
3402
3403         * config/i386/cygming.h (TARGET_STRIP_NAME_ENCODING): Don't
3404         override default.
3405         * config/i386/i386.c (get_dllimport_decl): Don't strip
3406         FASTCALL_PREFIX.
3407
3408 2007-09-10  Janis Johnson  <janis187@us.ibm.com>
3409
3410         PR c/30013
3411         * config/dfp-bit.c: Don't skip TFmode conversions; move strto*
3412         declarations to top.
3413         (DFP_TO_BFP): Use for either XFmode or TFmode.
3414         (BFP_TO_DFP): Use for either XFmode or TFmode; always use cast
3415         of BFP_VIA_TYPE.
3416         * config/dfp-bit.h: Include float.h.
3417         (LONG_DOUBLE_HAS_XF_MODE, LONG_DOUBLE_HAS_TF_MODE): Define if long
3418         double is one of these modes, rather than using LIBGCC_HAS_*F_MODE
3419         which doesn't mean the same thing.
3420         (BFP_KIND): Use 4 to mean TFmode.
3421         (BFP_FMT): Specify the number of decimal digits based on the
3422         number of mantissa digits.
3423         (BFP_VIA_TYPE): Binary float type to use as cast for sprintf.
3424         (BFP_TO_DFP, DFP_TO_BFP): Define names for TFmode variants.
3425         (STR_TO_BFP): Use strtold for XFmode or TFmode.
3426         (TFtype): Define if TFmode is supported.
3427         * doc/libgcc.texi (Decimal float library routines): Document
3428         TF conversion functions.
3429
3430 2007-09-10  Chao-ying Fu  <fu@mips.com>
3431
3432         * config/mips/mips.c (mips_scalar_mode_supported_p): Declare.
3433         (TARGET_SCALAR_MODE_SUPPORTED_P): Define.
3434         (mips_emit_compare): Process fixed-point modes.
3435         (mips_pad_arg_upward): Support fixed-point types.
3436         (override_options): Allow fixed-point modes in accumulators.
3437         (mips_pass_by_reference): Pass DQ, UDQ, DA, and UDA modes in registers.
3438         (mips_vector_mode_supported_p): Support V2HQmode, V2UHQmode, V2HAmode,
3439         V2UHAmode, V4QQmode, and V4UQQmode when TARGET_DSP.
3440         (mips_scalar_mode_supported_p): New function to accept fixed-point
3441         modes if the width is not greater than two BITS_PER_WORD.
3442         * config/mips/mips.h (SHORT_FRACT_TYPE_SIZE, FRACT_TYPE_SIZE,
3443         LONG_FRACT_TYPE_SIZE, LONG_LONG_FRACT_TYPE_SIZE,
3444         SHORT_ACCUM_TYPE_SIZE, ACCUM_TYPE_SIZE, LONG_ACCUM_TYPE_SIZE,
3445         LONG_LONG_ACCUM_TYPE_SIZE): Define.
3446         * config/mips/mips.md ("d"): Update mode attribute for fixed-point
3447         modes.
3448         ("IMODE"): New mode attribute.
3449         (mips-fixed.md): Include.
3450         * config/mips/mips-modes.def: Create VECTOR_MODES for FRACT, UFRACT,
3451         ACCUM, UACCUM.
3452         * config/mips/mips-fixed.md: New file.
3453
3454 2007-09-11  Ben Elliston  <bje@au.ibm.com>
3455
3456         * config/spu/spu.md: Formatting fixes.
3457
3458 2007-09-10  Janis Johnson  <janis187@us.ibm.com>
3459
3460         * config/dfp-bit.c (dfp_unary_func): Delete.
3461         (dfp_unary_op): Delete.
3462         (dfp_binary_op): Use decFloat functions instead of decNumber
3463         functions for binary operations.
3464         (d32_binary_op): Convert 32-bit operands to 64 bits for evaluation.
3465         (dnn_binary_op): Call dfp_binary_op with decFloat rather than
3466         DFP_C_TYPE.
3467         (dfp_compare_op): Use decFloat functions insteadof decNumber
3468         functions for comparisons.
3469         (d32_compare_op): Convert 32-bit operands to 64 bits for evaluation.
3470         (dnn_binary_op): Call dfp_compare_op with decFloat rather than
3471         DFP_C_TYPE.
3472         (DFP_ADD, DFP_SUB, DFP_MULTIPLE, DFP_DIVIDE): Use macros for
3473         call to dxx_binary_op and decFloat function.
3474         (DFP_EQ, DFP_NE, DFP_LT, DFP_GT, DFP_LE, DFP_GE): Use macros for
3475         calls to dxx_binary_op and decFloat function.
3476         * config/dfp-bit.h: Include decFloat header files.
3477         (decFloat, DFP_BINARY_OP, DFP_COMPARE_OP, DEC_FLOAT_ADD,
3478         DEC_FLOAT_SUBTRACT, DEC_FLOAT_MULTIPLY, DEC_FLOAT_DIVIDE,
3479         DEC_FLOAT_COMPARE, DEC_FLOAT_IS_ZERO, DEC_FLOAT_IS_NAN,
3480         DEC_FLOAT_IS_SIGNED: Define for each of 3 operand widths.
3481
3482 2007-09-10  Harsha Jagasia <harsha.jagasia@amd.com>
3483             Jan Sjodin <jan.sjodin@amd.com>
3484
3485         * tree-vect-analyze.c (vect_analyze_operations): Change
3486         comparison of loop iterations with threshold to less than
3487         or equal to instead of less than. Reduce
3488         min_scalar_loop_bound by one.
3489         * tree-vect-transform.c (vect_estimate_min_profitable_iters): 
3490         Change prologue and epilogue iterations estimate to vf/2,
3491         when unknown at compile-time. Change versioning guard
3492         cost to taken_branch_cost. If peeling for alignment is
3493         unknown at compile-time, change peel guard costs to one
3494         taken branch and one not-taken branch per peeled loop.
3495         If peeling for alignment is known but number of scalar loop
3496         iterations is unknown at compile-time, change peel guard
3497         costs to one taken branch per peeled loop. Change the cost
3498         model equation to consider vector iterations as the loop
3499         iterations less the prologue and epilogue iterations.
3500         Change outside vector cost check to less than or equal to
3501         zero instead of equal to zero.
3502         (vect_do_peeling_for_loop_bound): Reduce
3503         min_scalar_loop_bound by one.
3504         * tree-vectorizer.h: Add TARG_COND_TAKEN_BRANCH_COST and
3505         TARG_COND_NOT_TAKEN_BRANCH_COST.        
3506         * config/i386/i386.h (processor_costs): Add
3507         scalar_stmt_cost, scalar_load_cost, scalar_store_cost,
3508         vec_stmt_cost, vec_to_scalar_cost, scalar_to_vec_cost,
3509         vec_align_load_cost, vect_unalign_load_cost,
3510         vec_store_cost, cond_taken_branch_cost,
3511         cond_not_taken_branch_cost.
3512         Define macros for x86 costs.
3513         * config/i386/i386.c:
3514         (size_cost): Set scalar_stmt_cost, scalar_load_cost,
3515         scalar_store_cost, vec_stmt_cost, vec_to_scalar_cost,
3516         scalar_to_vec_cost, vec_align_load_cost, 
3517         vect_unalign_load_cost, vec_store_cost,
3518         cond_taken_branch_cost, cond_not_taken_branch_cost to one. 
3519         (i386_cost, i486_cost, pentium_cost, pentiumpro_cost,
3520         geode_cost, k6_cost, athlon_cost, pentium4_cost, nocona_cost, 
3521         core2_cost, generic64_cost, generic32_cost): Set to default
3522         untuned costs.
3523         (k8_cost, amdfam10_cost): Costs for vectorization tuned.
3524         (x86_builtin_vectorization_cost): New.
3525
3526 2007-09-10  Janis Johnson  <janis187@us.ibm.com>
3527             Ben Elliston  <bje@au.ibm.com>
3528
3529         * dfp.c: Include decimal128Local.h; 
3530         (dfp_byte_swap): Remove.
3531         (encode_decimal32, decode_decimal32): Don't handle endianness.
3532         (encode_decimal64, decode_decimal64): Ditto.
3533         (encode_decimal128, decode_decimal128): Ditto.
3534         * config/dfp-bit.c (host_to_ieee32, ieee_to_host_32): Ditto.
3535         (__swap64): Remove.
3536         (host_to_ieee_64, ieee_to_host_64): Don't handle endianness.
3537         (__swap128): Remove
3538         (host_to_ieee_128, ieee_to_host_128): Don't handle endianness.
3539         * Makefile.in (DECNUM_H): Add decimal128Local.h.
3540
3541 2007-09-10  David Daney  <ddaney@avtrex.com>
3542
3543         * config/mips/mips.md (UNSPEC_MEMORY_BARRIER): New entry in
3544         define_constants.
3545         (memory_barrier): Rewrote as an insn that clobbers memory.
3546
3547 2007-09-10  Richard Sandiford  <richard@codesourcery.com>
3548
3549         * config/mips/mips.c (mips_global_pointer): Check
3550         call_really_used_regs instead of call_used_regs.
3551         (mips_save_reg_p): Likewise.  Save all call-saved registers
3552         if current_function_saves_all_registers.  Fix indentation.
3553         No longer treat $18 as a special case.
3554         (compute_frame_size): Guard FPR loop with TARGET_HARD_FLOAT.
3555
3556 2007-09-10  Richard Sandiford  <richard@codesourcery.com>
3557
3558         * config/mips/mips.h (MIPS_ARCH_FLOAT_SPEC): New macro.
3559         * config/mips/mips.c (mips_cpu_info_table): Mention it in the
3560         the introductory comment.
3561         (MIPS_MARCH_CONTROLS_SOFT_FLOAT): Delete.
3562         (override_options): Don't test for it.
3563         * config/mips/sde.h (MIPS_MARCH_CONTROLS_SOFT_FLOAT): Delete.
3564         (DRIVER_SELF_SPECS): Add MIPS_ARCH_FLOAT_SPEC.
3565         * config/mips/vr.h: As for config/mips/sde.h.
3566
3567 2007-09-10  Trevor Smigiel  <trevor_smigiel@playstation.sony.com>
3568             Revital Eres  <eres@il.ibm.com>
3569
3570         * target.h (struct gcc_target.sched): New field: sms_res_mii.
3571         (struct ddg): Define.
3572         * target-def.h (TARGET_SCHED_SMS_RES_MII): Define.
3573         (TARGET_SCHED): Add TARGET_SCHED_SMS_RES_MII.
3574         * config/spu/spu.c: Include ddg.h.
3575         (TARGET_SCHED_SMS_RES_MII): Define.
3576         (spu_sms_res_mii): New function to calculate mii.
3577         * modulo-sched (res_MII): Use it.
3578         * doc/tm.texi: Document TARGET_SCHED_SMS_RES_MII.
3579
3580 2007-09-10  Andreas Krebbel  <krebbel1@de.ibm.com>
3581
3582         * config/s390/s390.c (s390_dump_pool): Create copy of constant
3583         pool entries since they might hold values that must not be shared.
3584
3585 2007-09-10  Uros Bizjak  <ubizjak@gmail.com>
3586
3587         PR target/33369
3588         * gcc/config/i386/sse.md (ashr<mode>3): Change op2 mode to SImode.
3589         Use 'N' operand constraint for op2.
3590         (lshr<mode>3): Ditto.
3591         (ashl<mode>3): Ditto.
3592         (vec_shl_<mode>): Use const_0_to_255_mul_8_operand predicate for op2.
3593         (vec_shr_<mode>): Ditto.
3594         * gcc/config/i386/i386.c (ix86_expand_builtin) [IX86_BUILTIN_PSLL?128,
3595         IX86_BUILTIN_PSRA*?128, IX86_BUILTIN_PSRL?128]: Convert op1 to SImode.
3596
3597 2007-09-10  Andreas Krebbel  <krebbel1@de.ibm.com>
3598
3599         * config/s390/s390.md ("fixuns_trunc<BFP:mode><GPR:mode>2"):
3600         Change mode macro in the last real_2expN parameter to uppercase.
3601
3602 2007-09-10  Michael Matz  <matz@suse.de>
3603
3604         * tree-pass.h (pass_cselim): Declare new pass.
3605         * passes.c (init_optimization_passes): Link in pass_cselim.
3606         * tree-ssa-phiopt.c (tree_ssa_phiopt_worker): Renamed from
3607         tree_ssa_phiopt; add do_store_elim parameter, handle it by calling
3608         cond_store_replacement.
3609         (condstoretemp): New static variable.
3610         (cond_store_replacement): New function.
3611         (tree_ssa_phiopt, tree_ssa_cs_elim): New wrappers around
3612         tree_ssa_phiopt_worker.
3613         (struct name_to_bb): New.
3614         (get_non_trapping, name_to_bb_hash, name_to_bb_eq, add_or_mark_expr,
3615         nt_init_block, nt_fini_block): New static functions.
3616         (seen_ssa_names, nontrap_set): New static variables.
3617         (gate_cselim, pass_cselim): Define new pass.
3618         * common.opt (ftree-cselim): New flag.
3619         * toplev.c (process_options): Set flag_tree_cselim if required.
3620
3621 2007-09-10  Hans-Peter Nilsson  <hp@axis.com>
3622
3623         * simplify-rtx.c (simplify_relational_operation_1): For recent
3624         canonicalization, don't recurse if op1 equals both PLUS arguments.
3625
3626 2007-09-09  David Daney  <ddaney@avtrex.com>
3627
3628         * optabs.c (expand_sync_operation):  Use plus insn if minus
3629         CONST_INT_P(val).
3630         (expand_sync_fetch_operation):  Ditto.
3631
3632 2007-09-09  H.J. Lu  <hongjiu.lu@intel.com>
3633
3634         * i386.md (*floatsisf2_mixed_vector): Use cvtdq2ps instead
3635         of cvtpq2ps.
3636         (*floatsisf2_sse_vector): Likewise.
3637
3638 2007-09-09  Krister Walfridsson  <cato@df.lth.se>
3639
3640         * config/netbsd.h (HANDLE_PRAGMA_PACK_PUSH_POP): Define to 1.
3641
3642 2007-09-09  H.J. Lu  <hongjiu.lu@intel.com>
3643
3644         * config/i386/i386.h (ix86_tune_indices): Rename
3645         X86_USE_VECTOR_CONVERTS to X86_TUNE_USE_VECTOR_CONVERTS.
3646         (TARGET_USE_VECTOR_CONVERTS): Updated.
3647         * config/i386/i386.c: Likewise.
3648
3649 2007-09-09  Sandra Loosemore  <sandra@codesourcery.com>
3650             Nigel Stephens <nigel@mips.com>
3651
3652         * doc/invoke.texi (Overall Options):  Add .sx file extension
3653         as a synonym for .S.
3654         * cppspec.c (known_suffixes): Likewise.
3655         * gcc.c (default_compilers): Likewise.
3656
3657 2007-09-09  Rask Ingemann Lambertsen  <rask@sygehus.dk>
3658
3659         PR target/30315
3660         * config/i386/i386.h (CANONICALIZE_COMPARISON): Delete.
3661         * simplify-rtx.c (simplify_relational_operation_1): Add the
3662         canonicalization from i386.h.
3663         * doc/md.texi (Canonicalization of Instructions): Document it.
3664
3665 2007-09-09  Jan Hubicka  <jh@suse.cz>
3666             Dwarakanath Rajagopal <dwarak.rajagopal@amd.com>
3667
3668         * i386.h (ix86_tune_indices): Add X86_USE_VECTOR_CONVERTS.
3669         (TARGET_USE_VECTOR_CONVERTS): New.
3670         * i386.md: New post-reload splitters for converting SF to DF and DF to
3671         SF.
3672         (floatsi* expander): Special case vector conversions.
3673         (floatsisf2_mixed_vector, floatsisf2_sse_vector_nointernunit,
3674         floatsisf2_sse_vector_internunit, floatsisf2_sse_vector,
3675         floatsidf2_mixed_vector, floatsidf2_sse_vector): New.
3676         (floatsisf2_mixed, floatsisf2_sse, floatsidf2_mixed, floatsidf2_sse):
3677         Disable when doing vector converts.
3678         (floatsi<mode>2_i387): Disable when
3679         * sse.md (vec_dupv2df): Export.
3680         * i386.c (ix86_tune_features): Enable SSE conversions.
3681
3682 2007-09-09  Richard Guenther  <rguenther@suse.de>
3683
3684         * tree-ssa-operands.c (add_virtual_operand): Only mark
3685         stores as has_volatile_ops if alias information is not available.
3686
3687 2007-09-09  Revital Eres  <eres@il.ibm.com>
3688
3689         * doc/contrib.texi: Add myself.
3690
3691 2007-09-09  Ira Rosen  <irar@il.ibm.com>
3692
3693         * tree-vectorizer.h (stmt_vinfo_set_inside_of_loop_cost,
3694         stmt_vinfo_set_outside_of_loop_cost): New functions.
3695         * tree-vect-transform.c (vect_get_cost_fields): Remove.
3696         (vect_model_simple_cost): Call
3697         stmt_vinfo_set_inside/outside_of_loop_cost to set the relevant cost
3698         field instead of calling vect_get_cost_fields.
3699         (vect_model_store_cost, vect_model_load_cost): Likewise.
3700
3701 2007-09-09  Revital Eres  <eres@il.ibm.com>
3702
3703         * config/rs6000/rs6000.c (paired_init_builtins): Add const
3704         declaration to bdesc_paired_preds variable.
3705         (paired_expand_builtin): Likewise.
3706
3707 2007-09-09  Revital Eres  <eres@il.ibm.com>
3708
3709         * dbgcnt.def (sms_sched_loop): New counter.
3710         * modulo-sched.c: Use sms_sched_loop instead of
3711         MAX_SMS_LOOP_NUMBER to determine the maximum number of loops to
3712         perform swing modulo scheduling on.  Include dbgcnt.h.
3713         * Makefile.in: Add DBGCNT_H to modulo-sched.o.
3714         * params.def: Remove PARAM_MAX_SMS_LOOP_NUMBER.
3715
3716 2007-09-09  Uros Bizjak  <ubizjak@gmail.com>
3717
3718         * config/i386/i386.md (X87MODEF12, SSEMODEF): Remove mode iterators.
3719         Substitute all uses with ...
3720         (MODEF): New mode iterator.
3721
3722         (fix_trunc<mode>_fisttp_i387_1): Remove operand constraints
3723         from pre-regalloc define_insn_and_split splitter pattern.
3724         (*fix_trunc<mode>_i387_1): Ditto.
3725         (*fistdi2_1): Ditto.
3726         (*fist<mode>2_1): Ditto.
3727         (frndintxf2_floor): Ditto.
3728         (*fist<mode>2_floor_1): Ditto.
3729         (frndintxf2_ceil): Ditto.
3730         (*fist<mode>2_ceil_1): Ditto.
3731         (frndintxf2_trunc): Ditto.
3732         (frndintxf2_mask_pm): Ditto.
3733
3734         (prologue): Use (const_int 0) as never generated filler insn.
3735         (epilogue): Ditto.
3736         (sibcall_epilogue): Ditto.
3737         (eh_return_si): Ditto.
3738         (eh_return_di): Ditto.
3739
3740         (add<mode>3): Rename from adddf3 and addsf3.  Macroize expander
3741         using MODEF mode iterator.
3742         (sub<mode>3): Rename from subdf3 and subsf3.  Macroize expander
3743         using MODEF mode iterator.
3744         (mul<mode>3): Rename from muldf3 and mulsf3.  Macroize expander
3745         using MODEF mode iterator.
3746         (nearbyint<mode>2): Rename from nearbyintdf2 and nearbyintsf2.
3747         Macroize expander using MODEF mode iterator.
3748
3749         (zero_extendsidi2): Remove operand constraints from expander.
3750         (smuldi3_highpart): Ditto.
3751         (indirect_jump): Ditto.
3752         (tablejump): Ditto.
3753         (rsqrtsf2): Ditto.
3754         * config/i386/sse.md (storentv4sf): Ditto.
3755         (storentv2df): Ditto.
3756         (storentv2di): Ditto.
3757         (storentsi): Ditto.
3758         (sse2_cvtpd2ps): Ditto.
3759         (vec_interleave_highv16qi): Ditto.
3760         (vec_interleave_lowv16qi): Ditto.
3761         (vec_interleave_highv8hi): Ditto.
3762         (vec_interleave_lowv8hi): Ditto.
3763         (vec_interleave_highv4si): Ditto.
3764         (vec_interleave_lowv4si): Ditto.
3765         (vec_interleave_highv2di): Ditto.
3766         (vec_interleave_lowv2di): Ditto.
3767         (sse2_maskmovdqu): Ditto.
3768         * config/i386/mmx.md (mmx_maskmovq): Ditto.
3769
3770 2007-09-09  Ira Rosen  <irar@il.ibm.com>
3771
3772         * tree-vectorizer.h (enum vect_def_type): Start enumeration from 1.
3773         (struct _slp_tree, struct _slp_instance): Define new data structures
3774         along macros for their access.
3775         (struct _loop_vec_info): Define new fields: strided_stores,
3776         slp_instances, and slp_unrolling_factor along macros for their access.
3777         (enum slp_vect_type): New.
3778         (struct _stmt_vec_info): Define new field, slp_type, and macros for
3779         its access.
3780         (STMT_VINFO_STRIDED_ACCESS): New macro.
3781         (vect_free_slp_tree): Declare.
3782         (vectorizable_load): Add an argument of type slp_tree.
3783         (vectorizable_store, vectorizable_operation, vectorizable_conversion,
3784         vectorizable_assignment): Likewise.
3785         (vect_model_simple_cost, vect_model_store_cost, vect_model_load_cost):
3786         Declare (make extern).
3787         * tree-vectorizer.c (new_stmt_vec_info): Initialize the new field.
3788         (new_loop_vec_info): Likewise.
3789         (destroy_loop_vec_info): Free memory allocated for SLP structures.
3790         * tree-vect-analyze.c: Include recog.h.
3791         (vect_update_slp_costs_according_to_vf): New.
3792         (vect_analyze_operations): Add argument for calls to vectorizable_ ()
3793         functions. For not pure SLP stmts with strided access check that the
3794         group size is power of 2. Update the vectorization factor according to
3795         SLP. Call vect_update_slp_costs_according_to_vf.
3796         (vect_analyze_group_access): New.
3797         (vect_analyze_data_ref_access): Call vect_analyze_group_access.
3798         (vect_free_slp_tree): New functions.
3799         (vect_get_and_check_slp_defs, vect_build_slp_tree, vect_print_slp_tree,
3800         vect_mark_slp_stmts, vect_analyze_slp_instance, vect_analyze_slp,
3801         vect_make_slp_decision, vect_detect_hybrid_slp_stmts,
3802         vect_detect_hybrid_slp): Likewise.
3803         (vect_analyze_loop): Call vect_analyze_slp, vect_make_slp_decision
3804         and vect_detect_hybrid_slp.
3805         * tree-vect-transform.c (vect_estimate_min_profitable_iters): Take
3806         SLP costs into account.
3807         (vect_get_cost_fields): New function.
3808         (vect_model_simple_cost): Make extern, add SLP parameter and handle
3809         SLP.
3810         (vect_model_store_cost, vect_model_load_cost): Likewise.
3811         (vect_get_constant_vectors): New function.
3812         (vect_get_slp_vect_defs, vect_get_slp_defs,
3813         vect_get_vec_defs_for_stmt_copy, vect_get_vec_defs_for_stmt_copy,
3814         vect_get_vec_defs): Likewise.
3815         (vectorizable_reduction): Don't handle SLP for now.
3816         (vectorizable_call): Don't handle SLP for now. Add argument to
3817         vect_model_simple_cost.
3818         (vectorizable_conversion): Handle SLP (call vect_get_vec_defs to
3819         get SLPed and vectorized defs). Fix indentation and spacing.
3820         (vectorizable_assignment): Handle SLP.
3821         (vectorizable_induction): Don't handle SLP for now.
3822         (vectorizable_operation): Likewise.
3823         (vectorizable_type_demotion): Add argument to
3824         vect_model_simple_cost.
3825         (vectorizable_type_promotion): Likewise.
3826         (vectorizable_store, vectorizable_load): Handle SLP.
3827         (vectorizable_condition): Don't handle SLP for now.
3828         (vect_transform_stmt): Add a new argument for SLP. Check that there is
3829         no SLP transformation required for unsupported cases. Add SLP
3830         argument for supported cases.
3831         (vect_remove_stores): New function.
3832         (vect_schedule_slp_instance, vect_schedule_slp): Likewise.
3833         (vect_transform_loop): Schedule SLP instances.
3834         * Makefile.in: (tree-vect-analyze.o): Depend on recog.h.
3835
3836 2007-09-09  Andrew Haley  <aph@redhat.com>
3837
3838         * optabs.c (sign_expand_binop): Set libcall_gen = NULL in the fake
3839         signed optab.
3840
3841 2007-09-09  Hans-Peter Nilsson  <hp@axis.com>
3842
3843         Divide REG_LABEL notes into REG_LABEL_OPERAND and REG_LABEL_TARGET.
3844         * doc/rtl.texi (Insns): Specify when a label_ref makes a jump_insn.
3845         Similar for what label_refs can go in the JUMP_TARGET field.  Split
3846         REG_LABEL documentation into REG_LABEL_TARGET and REG_LABEL_OPERAND.
3847         * reload.c (find_reloads): Generate REG_LABEL_OPERAND, not
3848         REG_LABEL when replacing an operand with a LABEL_REF for a
3849         non-jump insn.
3850         (subst_reloads): When replacing a LABEL_REG with a register,
3851         instead of generating a REG_LABEL note, assert that there already
3852         is one or that the label is a known target for the insn.
3853         * rtlanal.c (computed_jump_p): Instead of looking for a REG_LABEL
3854         note, check the JUMP_LABEL field.  Remove "else" after return.
3855         * reorg.c (emit_delay_sequence): Replace case for REG_LABEL with
3856         cases for REG_LABEL_OPERAND and REG_LABEL_TARGET.
3857         (fill_slots_from_thread): Handle both REG_LABEL_OPERAND and
3858         REG_LABEL_TARGET notes, including the JUMP_TARGET field on JUMP_P
3859         insns.  Iterate over all notes; don't assume there's only one.
3860         * cse.c (recorded_label_ref): Adjust comment to refer to
3861         REG_LABEL_OPERAND.
3862         (cse_extended_basic_block): Do LABEL_REF check for all INSN_P
3863         insns, not just NONJUMP_INSN_P.
3864         (check_for_label_ref): For JUMP_P insns, check that the LABEL_REF
3865         isn't a jump target.
3866         * jump.c (rebuild_jump_labels): Adjust head comment.
3867         (init_label_info): Ditto.  Remove REG_LABEL_OPERAND notes only;
3868         don't reset REG_LABEL_TARGET notes, including the JUMP_LABEL field.
3869         (mark_all_labels): For JUMP_P insns without a target, check if the
3870         the target is noted on the previous nonjump insn.
3871         (mark_jump_label_1): New function, guts from mark_jump_label.
3872         <case IF_THEN_ELSE>: Handle first operand as a non-target when
3873         marking jump target labels.
3874         <case LABEL_REF>: Adjust for whether to generate a
3875         REG_LABEL_TARGET or a REG_LABEL_OPERAND note.
3876         For 'E' format rtl, iterate in descending element order.
3877         (delete_related_insns): Handle both REG_LABEL_TARGET and
3878         REG_LABEL_OPERAND notes.  For JUMP_P insns with labels with zero
3879         reference count, delete and fallthrough.  Move finding-next-
3880         non-deleted insn last in the function.  Look at all INSN_P insns
3881         for REG_LABEL_OPERAND notes.
3882         (redirect_jump_2): Assert that OLABEL equals the old JUMP_LABEL of
3883         JUMP.
3884         * print-rtl.c (print_rtx): For JUMP_P insns and a non-NULL
3885         JUMP_LABEL, output the INSN_UID of it.
3886         * gcse.c: Adjust comments as appropriate to say REG_LABEL_OPERAND
3887         and/or REG_LABEL_TARGET.
3888         (add_label_notes): Only add REG_LABEL_OPERAND notes.  Put in line
3889         with jump.c copy by only adding notes for labels actually
3890         referenced in the insn.
3891         * emit-rtl.c (try_split): Don't assume only NONJUMP_INSN_P need
3892         usage count increment; handle all INSN_P trial insns.
3893         (emit_copy_of_insn_after): Change to not copy REG_LABEL_OPERAND
3894         notes.
3895         * rtl.h (struct rtx_def) <volatil>: Adjust to mention
3896         REG_LABEL_TARGET and REG_LABEL_OPERAND.
3897         (LABEL_REF_NONLOCAL_P): Allow REG_LABEL_TARGET and
3898         REG_LABEL_OPERAND.
3899         * combine.c (distribute_notes): Adjust for REG_LABEL_TARGET on
3900         JUMP_P insns and REG_LABEL_OPERAND everywhere.
3901         * sched-rgn.c (is_cfg_nonregular): Check for REG_LABEL_OPERANDS
3902         on all INSN_P insns.
3903         * reg-notes.def (LABEL_TARGET, LABEL_OPERAND): Split from LABEL.
3904         * cfgrtl.c (delete_insn): Adjust to handle REG_LABEL_TARGET and
3905         REG_LABEL_OPERAND notes.
3906         * reload1.c (calculate_needs_all_insns): Adjust comments.
3907         (set_label_offsets): Adjust to look for REG_LABEL_OPERAND notes.
3908         * config/alpha/alpha.md (split for load of an address into a
3909         four-insn sequence on Unicos/Mk): Adjust to use
3910         REG_LABEL_OPERAND.
3911         * config/sh/sh.md (sh_reorg, final_prescan_insn): Ditto.
3912
3913 2007-09-09  Laurynas Biveinis  <laurynas.biveinis@gmail.com>
3914
3915         Revert:
3916         2007-09-05  Laurynas Biveinis  <laurynas.biveinis@gmail.com>
3917         * regrename.c (copyprop_hardreg_forward_1): New variable next. Use
3918         FOR_BB_INSNS_SAFE instead of for loop.
3919         * cse.c (cse_extended_basic_block): Likewise.
3920         * postreload.c (reload_cse_regs_1): New variable next. Make sure
3921         that the for loop does not invoke NEXT_INSN on a deleted insn.
3922         * function.c (instantiate_virtual_regs): Likewise.
3923         * lower-subreg.c (remove_retval_note): Likewise.
3924         (decompose_multiword_subregs): Use FOR_BB_INSNS_SAFE instead of
3925         FOR_BB_INSNS.
3926         * emit-rtl.c (remove_insn): Set NEXT_INSN and PREV_INSN to NULL on
3927         a deleted insn.
3928         * cfgrtl.c (delete_insn): Set JUMP_LABEL to NULL on a deleted
3929         insn, if it's a jump.
3930         (try_redirect_by_replacing_jump): New variable jump_p. Call
3931         tablejump_p before delete_insn_chain.
3932         * reload1.c (reload): New variable next. Make sure that the for
3933         loop does not invoke NEXT_INSN on a deleted insn.
3934         (fixup_eh_region_note): Make the loop terminate if i becomes NULL.
3935         (delete_output_reload): New variable prev. Make sure the the for
3936         loops do not invoke PREV_INSN on a deleted insn.
3937
3938 2007-09-08  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
3939
3940         * pa/constraints.md: Remove 'X' from unused letters comment.
3941
3942 2007-09-08  Richard Guenther  <rguenther@suse.de>
3943
3944         * tree-tailcall.c (find_tail_calls): If we don't have aliases
3945         computed check stmt_ann->references_memory instead of counting
3946         virtual operands.
3947  
3948 2007-09-08  Segher Boessenkool  <segher@kernel.crashing.org>
3949
3950         * cse.c (fold_rtx): Use validate_unshare_change() instead of
3951         validate_change() in one more case.
3952
3953 2007-09-08  Zdenek Dvorak  <ook@ucw.cz>
3954
3955         PR tree-optimization/32283
3956         * tree-ssa-loop-ivopts.c (may_eliminate_iv): Use
3957         estimated_loop_iterations.
3958         (determine_use_iv_cost_condition): Decrease cost of expressions
3959         used in iv elimination.
3960
3961 2007-09-08  Richard Guenther  <rguenther@suse.de>
3962
3963         * tree-cfg.c (verify_gimple_expr): Avoid building new
3964         pointer types, use TYPE_POINTER_TO if available instead.
3965
3966 2007-09-08  Uros Bizjak  <ubizjak@gmail.com>
3967
3968         PR target/33329
3969         PR rtl-optimization/26449
3970         * config/i386/sse.md (mulv4si3): Do not expand sse2 sequence.
3971         (*sse2_mulv4si3): New define_insn_and_split pattern. Split insn in
3972         split1 pass.
3973         (mulv16qi3): Implement as define_insn_and_split pattern instead of
3974         define_expand.  Split insn in split1 pass.
3975         (mulv2di3): Ditto.
3976
3977 2007-09-08  Dorit Nuzman  <dorit@il.ibm.com>
3978
3979         PR tree-optimization/33301
3980         * tree-vect-analyze (analyze_operations): Look at the type of the rhs
3981         when relevant.
3982
3983 2007-09-07  Zdenek Dvorak  <ook@ucw.cz>
3984
3985         PR tree-optimization/32183
3986         * Makefile.in (tree-ssa-reassoc.o): Also depend on $(CFGLOOP_H).
3987
3988         * tree-ssa-reassoc.c: Include cfgloop.h.
3989         (is_reassociable_op): Add a loop argument and return true only
3990         for inside loop.
3991         (linearize_expr): Updated.
3992         (should_break_up_subtract): Likewise.
3993         (linearize_expr_tree): Likewise.
3994         (init_reassoc): Call loop_optimizer_init with
3995         AVOID_CFG_MODIFICATIONS.  Remove calculate_dominance_info call
3996         with CDI_DOMINATORS.
3997         (fini_reassoc): Call loop_optimizer_finalize.
3998
3999 2007-09-07  Sterling Augustine  <sterling@tensilica.com>
4000
4001         * config/xtensa/lib2funcs.S (__xtensa_sync_caches): Use an ISYNC even
4002         if there is no i-cache.
4003
4004 2007-09-07  Richard Guenther  <rguenther@suse.de>
4005
4006         Reapply
4007         2007-09-06  Richard Guenther  <rguenther@suse.de>
4008
4009         PR tree-optimization/32586
4010         * tree-ssa-sccvn.c (simplify_binary_expression): Avoid
4011         folding if nothing changed.
4012         (simplify_unary_expression): New function.  Do tree combining
4013         on conversion like codes.
4014         (try_to_simplify): Call it.
4015
4016 2007-09-07  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
4017
4018         PR target/33286
4019         * gthr-posix.h (__gthread_active_p): Add implementation for hppa-hpux.
4020         (__gthread_active,__gthread_start, __gthread_active_init): New.
4021         * gthr-posix95.h: Likewise.
4022
4023 2007-09-07  Roman Zippel <zippel@linux-m68k.org>
4024
4025         * function.h (struct function): Rename calls_unwind_init
4026         to saves_all_registers.
4027         (current_function_saves_all_registers): Renamed from
4028         current_function_calls_unwind_init.
4029         * reload1.c (reload): Set current_function_saves_all_registers.
4030         * except.c (expand_builtin_unwind_init): Likewise.
4031         * config/m68k/m68k.c (m68k_save_reg): Use
4032         current_function_saves_all_registers to save pic register.
4033
4034 2007-09-07  Janis Johnson  <janis187@us.ibm.com>
4035
4036         config/m68k/m68k.c (floating_exact_log2): Update call to real_2expN.
4037         config/s390/s390.md (fixuns_trunc<BFP:mode><GPR:mode>2): Ditto.
4038
4039         Reapply reverted changes:
4040
4041         2007-09-06  Jan Hubicka  <jh@suse.cz>
4042  
4043         * config/i386.c (ix86_expand_lround, ix86_expand_round): Update call
4044         of real_2expN.
4045
4046         2007-09-06  Richard Sandiford  <richard@codesourcery.com>
4047
4048         * config/mips/mips.md (fixuns_truncdfsi2, fixuns_truncdfdi2)
4049         (fixuns_truncsfsi2, fixuns_truncsfdi2): Update calls to real_2expN.
4050
4051         2007-09-05  Janis Johnson  <janis187@us.ibm.com>
4052
4053         * optabs.c (expand_float): Convert unsigned integer as signed only
4054         if it provides sufficient accuracy; add mode argument to real_2expN.
4055         (expand_fix): Fix comment typos; extend binary float into mode
4056         wider than destination for converion to unsigned integer; add mode
4057         argument to real_2expN.
4058         * real.c (real_2expN): Add mode argument to special-case decimal
4059         float values.
4060         * real.h (real_2expN): Ditto.
4061         * fixed-value.c (check_real_for_fixed_mode): Add mode argument to
4062         real_2expN.
4063         (fixed_from_string): Ditto.
4064         (fixed_to_decimal): Ditto.
4065         (fixed_convert_from_real): Ditto.
4066         (real_convert_from_fixed): Ditto.
4067         * config/rs6000/rs6000.md (FP): Include DD and TD modes.
4068         * config/rs6000/dfp.md (extendddtd2, adddd3, addtd3, subdd3, subtd3,
4069         muldd3, multd3, divdd3, divtd3, cmpdd_internal1, cmptd_internal1,
4070         floatditd2, ftruncdd2, fixdddi2, ftrunctd2, fixddi2): New.
4071
4072 2007-09-07  Diego Novillo  <dnovillo@google.com>
4073
4074         * tree-flow.h (const_block_stmt_iterator): Remove.
4075         Update all users to use block_stmt_iterator.
4076         * tree-iterator.h (const_tree_stmt_iterator): Remove.
4077         Update all users to use tree_stmt_iterator.
4078
4079 2007-09-07  Sandra Loosemore  <sandra@codesourcery.com>
4080
4081         * config/mips/mips.c (mips_set_current_function): Temporarily
4082         make this a no-op to fix bootstrap errors, pending rewrite.
4083
4084 2007-09-07  Jan Hubicka  <jh@suse.cz>
4085
4086         * reorg.c (dbr_schedule): Move code removing placeholder USEs later
4087         in the pass.
4088
4089 2007-09-07  Dorit Nuzman  <dorit@il.ibm.com>
4090
4091         PR tree-optimization/33299
4092         * tree-vect-transform.c (vect_create_epilog_for_reduction): Update
4093         uses for all relevant loop-exit phis, not just the first.
4094
4095 2007-09-07  Richard Guenther  <rguenther@suse.de>
4096
4097         PR middle-end/33330
4098         * tree-ssa-operands.c (access_can_touch_variable): An access
4099         of the form (*p)[0] can touch a variable of same size.
4100
4101 2007-09-07  Jan Hubicka  <jh@suse.cz>
4102
4103         * passes.c (init_optimization_passes): Add simple dce and addressable
4104         passes.
4105         * tree-ssa.c (execute_update_addresses_taken): New function.
4106         (pass_update_address_taken): New.
4107         * tree-ssa-dse.c (execute_simple_dse): New function.
4108         (pass_simple_dse): New.
4109         * tree-pass.h (pass_simple_dse, pass_update_address_taken): Declare.
4110
4111 2007-09-07  Tobias Burnus  <burnus@net-b.de>
4112
4113         PR middle-end/33321
4114         * doc/invoke.texi: Fix -Wstrict-overflow= table.
4115
4116 2007-09-07  Richard Guenther  <rguenther@suse.de>
4117
4118         Revert
4119         2007-09-06  Richard Guenther  <rguenther@suse.de>
4120
4121         PR tree-optimization/32586
4122         * tree-ssa-sccvn.c (simplify_binary_expression): Avoid
4123         folding if nothing changed.
4124         (simplify_unary_expression): New function.  Do tree combining
4125         on conversion like codes.
4126         (try_to_simplify): Call it.
4127
4128 2007-09-07  Richard Guenther  <rguenther@suse.de>
4129             Uros Bizjak  <ubizjak@gmail.com>
4130
4131         PR tree-optimization/32821
4132         * tree_if_conv.c (combine_blocks): Use alloc_stmt_list instead of
4133         NULL in the call to set_bb_stmt_list.
4134
4135 2007-09-07  Richard Sandiford  <richard@codesourcery.com>
4136
4137         * config/mips/mips.c (build_mips16_call_stub): Emit all direct
4138         float calls here, rather than leaving some to the caller.
4139         Use call_internal_direct and call_value_internal_direct.
4140         * config/mips/mips.md (call_internal_direct): New pattern.
4141         (call_value_internal_direct): Likewise.
4142
4143 2007-09-07  Richard Sandiford  <richard@codesourcery.com>
4144
4145         * config/mips/mips.c (mips_base_move_loop_invariants): New variable.
4146         (mips_set_mips16_mode): Restore flag_move_loop_invariants, then set
4147         to 0 for MIPS16.
4148         (override_options): Set mips_base_move_loop_invariants.
4149
4150 2007-09-07  Richard Sandiford  <richard@codesourcery.com>
4151
4152         * config/mips/mips.opt (mcode-readable=): Move to keep list
4153         alphabetical.
4154
4155 2007-09-07  Richard Sandiford  <richard@codesourcery.com>
4156
4157         * doc/invoke.texi: Document the MIPS -mlocal-sdata, -mextern-sdata
4158         and -mgpopt options.  Adjust the -G documentation to match.
4159         * config/mips/mips.opt (mextern-data, mgpopt, mlocal-data): New.
4160         * config/mips/mips.c (mips_rtx_constant_in_small_data_p): New
4161         function, split out from mips_classify_symbol.  Return false for
4162         !TARGET_LOCAL_SDATA.
4163         (mips_classify_symbol): Call mips_rtx_constant_in_small_data_p.
4164         Only use GP-relative accesses for non-pool symbols if TARGET_GPOPT.
4165         (override_options): Check whether the -mgpopt setting is consistent
4166         with the other flags.
4167         (symbolic_expression_p): Delete.
4168         (mips_select_rtx_section): Use mips_rtx_constant_in_small_data_p
4169         and default_elf_select_rtx_section.
4170         (mips_in_small_data_p): Honor section attributes for MIPS16 too.
4171         Return false for local data unless TARGET_LOCAL_SDATA.  Likewise
4172         external data and TARGET_EXTERN_SDATA.
4173
4174 2007-09-07  Tobias Burnus  <burnus@net-b.de>
4175
4176         PR fortran/33303
4177         * doc/cpp.texi (Common Predefined Macros): Add __GFORTRAN__.
4178
4179 2007-09-05  Laurynas Biveinis  <laurynas.biveinis@gmail.com>
4180
4181         * regrename.c (copyprop_hardreg_forward_1): New variable next. Use
4182         FOR_BB_INSNS_SAFE instead of for loop.
4183         * cse.c (cse_extended_basic_block): Likewise.
4184         * postreload.c (reload_cse_regs_1): New variable next. Make sure
4185         that the for loop does not invoke NEXT_INSN on a deleted insn.
4186         * function.c (instantiate_virtual_regs): Likewise.
4187         * lower-subreg.c (remove_retval_note): Likewise.
4188         (decompose_multiword_subregs): Use FOR_BB_INSNS_SAFE instead of
4189         FOR_BB_INSNS.
4190         * emit-rtl.c (remove_insn): Set NEXT_INSN and PREV_INSN to NULL on
4191         a deleted insn.
4192         * cfgrtl.c (delete_insn): Set JUMP_LABEL to NULL on a deleted
4193         insn, if it's a jump.
4194         (try_redirect_by_replacing_jump): New variable jump_p. Call
4195         tablejump_p before delete_insn_chain.
4196         * reload1.c (reload): New variable next. Make sure that the for
4197         loop does not invoke NEXT_INSN on a deleted insn.
4198         (fixup_eh_region_note): Make the loop terminate if i becomes NULL.
4199         (delete_output_reload): New variable prev. Make sure the the for
4200         loops do not invoke PREV_INSN on a deleted insn.
4201
4202 2007-09-06  Zdenek Dvorak  <ook@ucw.cz>
4203
4204         * cgraphbuild.c (rebuild_cgraph_edges): Export.
4205         * cgraph.h (rebuild_cgraph_edges): Declare.
4206         * tree-pass.h (pass_expand_omp_ssa): New.
4207         * omp-low.c (find_omp_clause): Export.
4208         (copy_var_decl): Split from omp_copy_decl_2.
4209         (build_omp_barrier): Return the call to emit instead of emitting
4210         it directly.
4211         (lower_rec_input_clauses, expand_omp_single): Gimplify the result of
4212         build_omp_barrier.
4213         (extract_omp_for_data, expand_parallel_call, expand_omp_parallel,
4214         expand_omp_for_generic, expand_omp_for_static_nochunk,
4215         expand_omp_for_static_chunk, expand_omp_for, expand_omp_sections):
4216         Adapted to work on SSA form.
4217         (execute_expand_omp): Do not invalidate dominance information.
4218         (gate_expand_omp): Do not run with -fopenmp-ssa flag.
4219         (gate_expand_omp_ssa, pass_expand_omp_ssa): New.
4220         * gimplify.c (gimplify_omp_for): Ensure that the control variable is
4221         a gimple_reg.
4222         (force_gimple_operand): Allow gimplifying code expressions without
4223         value.
4224         * tree-predcom.c (mark_virtual_ops_for_renaming): Handle phi nodes.
4225         * common.opt (fopenmp-ssa): New.
4226         * tree-flow.h (find_omp_clause, copy_var_decl): Declare.
4227         * Makefile.in (tree-cfg.o): Add TREE_INLINE_H dependency.
4228         * tree-cfg.c: Include tree-inline.h.
4229         (struct move_stmt_d): Replace vars_to_remove by vars_map field.
4230         (replace_by_duplicate_decl, replace_ssa_name,
4231         mark_virtual_ops_in_region): New functions.
4232         (move_stmt_r, move_block_to_fn, move_sese_region_to_fn): Adapted
4233         to work on SSA form.
4234         * passes.c (init_optimization_passes): Add pass_expand_omp_ssa pass.
4235         * tree-ssa-operands.c (get_expr_operands): Handle operands of OMP
4236         constructs.
4237
4238 2007-09-06  Laurynas Biveinis  <laurynas.biveinis@gmail.com>
4239
4240         * tree-loop-linear.c: Include obstack.h.
4241         (linear_transform_loops): New obstack lambda_obstack.
4242         Initialize it, pass it to gcc_loopnest_to_lambda_loopnest,
4243         lambda_loopnest_transform, lambda_loopnest_to_gcc_loopnest calls
4244         and free afterwards.
4245         * lambda.h (struct obstack): New forward declaration.
4246         (lambda_linear_expression_new): New parameter of type struct
4247         obstack *.
4248         (lambda_loopnest_new): Likewise.
4249         (lambda_loopnest_transform): Likewise.
4250         (lambda_body_vector_new): Likewise.
4251         (lambda_body_vector_compute_new): Likewise.
4252         (gcc_loopnest_to_lambda_loopnest): Likewise.
4253         (lambda_loopnest_to_gcc_loopnest): Likewise.
4254         * lambda-code.c: Include obstack.h.
4255         (lambda_lattice_new): New parameter lambda_obstack.  Use it for
4256         allocation of ret.
4257         (lambda_body_vector_new): Likewise.
4258         (lambda_linear_expression_new): Likewise.
4259         (lambda_lattice_new): Likewise.
4260         (lambda_loopnest_new): Likewise.  Additionally use obstack to
4261         allocate LN_LOOPS(ret).
4262         (lambda_lattice_compute_base): New parameter lambda_obstack.  Pass
4263         it to lambda_lattice_new.
4264         (lambda_body_vector_compute_new): New parameter lambda_obstack.
4265         Pass it to lambda_body_vector_new.
4266         (lambda_lattice_compute_base): New paramater lambda_obstack.  Pass
4267         it to lambda_lattice_new.
4268         (compute_nest_using_fourier_motzkin): New parameter lambda_obstack.
4269         Pass it to lambda_loopnest_new, lambda_linear_expression_new.
4270         (lambda_compute_target_space): Likewise.
4271         (lambda_compute_auxillary_space): New parameter lambda_obstack.
4272         Pass it to lambda_lattice_compute_base and
4273         compute_nest_using_fourieer_motzkin.
4274         (lambda_loopnest_transform): New parameter lambda_obstack.  Pass
4275         it to lambda_lattice_compute_base, lambda_lattice_auxillary_space
4276         and lambda_lattice_compute_target_space.
4277         (gcc_tree_to_linear_expression): Nex parameter lambda_obstack.
4278         Pass it to lambda_linear_expression_new.
4279         (gcc_loop_to_lambda_loop): New parameter lambda_obstack.  Pass it
4280         to gcc_tree_to_linear_expression.
4281         (gcc_loopnest_to_lambda_loopnest): New parameter lambda_obstack.
4282         Pass it to gcc_loop_to_lambda_loop and lambda_loopnest_new.
4283         (lambda_loopnest_to_gcc_loopnest): New parameter lambda_obstack.
4284         Pass it to lambda_body_vector_new and
4285         lambda_body_vector_compute_new.
4286         * Makefile.in (tree-loop-linear.o): Add $(OBSTACK_H) dependency.
4287         (lambda-code.o): Likewise.
4288
4289 2007-09-06  Chao-ying Fu  <fu@mips.com>
4290
4291         * ginclude/stdfix.h: New file.
4292         * Makefile.in (USER_H): Add $(srcdir)/ginclude/stdfix.h.
4293         (convert.o): Add dependence on fixed-value.h.
4294         * c-convert.c (convert): Support FIXED_POINT_TYPE.
4295         * c-cppbuiltin.c (builtin_define_fixed_point_constants): New function
4296         to define fixed-point constants.
4297         (c_cpp_builtins): Define fixed-point constants.
4298         * convert.c (fixed-value.h): New include.
4299         (convert_to_real): Update comment to include fixed-point.
4300         Support FIXED_POINT_TYPE.
4301         (convert_to_integer): Update comment to include fixed-point.
4302         Support FIXED_POINT_TYPE.
4303         (convert_to_complex): Support FIXED_POINT_TYPE.
4304         (convert_to_fixed): New function.
4305         * convert.h (convert_to_fixed): Declare.
4306         * genopinit.c: Add comment about $Q for only fixed-point modes.
4307         (optabs): Add fract_optab, fractuns_optab, satfract_optab,
4308         satfractuns_optab, add_optab, ssadd_optab, usadd_optab, sub_optab,
4309         sssub_optab, ussub_optab, smul_optab, ssmul_optab, usmul_optab,
4310         ssmadd_widen_optab, usmadd_widen_optab, ssdiv_optab, udiv_optab,
4311         usdiv_optab, ssashl_optab, usashl_optab, neg_optab, ssneg_optab,
4312         usneg_optab for fixed-point modes.
4313         (gen_insn): Add force_fixed to track the $Q format for all fixed-point
4314         modes.
4315         * optabs.c (optab_for_tree_code): For *DIV_EXPR, LSHIFT_EXPR,
4316         PLUS_EXPR, MINUS_EXPR, MULT_EXPR, NEGATE_EXPR, return signed or
4317         unsigned saturation optabs, when type is saturating.
4318         (shift_optab_p): Return true for SS_ASHIFT or US_ASHIFT.
4319         (expand_fixed_convert): New function.
4320         (gen_fixed_libfunc, gen_signed_fixed_libfunc,
4321         gen_unsigned_fixed_libfunc, gen_int_fp_fixed_libfunc,
4322         gen_int_fp_signed_fixed_libfunc, gen_int_fixed_libfunc,
4323         gen_int_signed_fixed_libfunc, gen_int_unsigned_fixed_libfunc,
4324         gen_fract_conv_libfunc, gen_fractuns_conv_libfunc,
4325         gen_satfract_conv_libfunc, gen_satfractuns_conv_libfunc): New
4326         functions.
4327         (init_optabs): Initialize ssadd_optab, usadd_optab, sssub_optab,
4328         ussub_optab, ssmul_optab, usmul_optab, ssmadd_widen_optab,
4329         usmadd_widen_optab, ssmsub_widen_optab, usmsub_widen_optab,
4330         ssdiv_optab, usdiv_optab, ssashl_optab, usashl_optab, ssneg_optab,
4331         usneg_optab, fract_optab, fractuns_optab, satfract_optab,
4332         satfractuns_optab.
4333         Initialize fixed-point libraries, including add, ssadd, usadd, sub,
4334         sssub, ussub, mul, ssmul, usmul, div, ssdiv, udiv, usdiv, ashl,
4335         ssashl, usashl, ashr, lshr, neg, ssneg, usneg, cmp, fract, satfract,
4336         fractuns, satfractuns.
4337         * optabs.h (enum optab_index): Add OTI_ssadd, OTI_usadd, OTI_sssub,
4338         OTI_ussub, OTI_ssmul, OTI_usmul, OTI_ssdiv, OTI_usdiv, OTI_ssneg,
4339         OTI_usneg, OTI_ssashl, OTI_usashl, OTI_ssmadd_widen, OTI_usmadd_widen,
4340         OTI_ssmsub_widen,  OTI_usmsub_widen.
4341         (ssadd_optab, usadd_optab, sssub_optab, ussub_optab, ssmul_optab,
4342         usmul_optab, ssdiv_optab, usdiv_optab, ssneg_optab, usneg_optab,
4343         ssashl_optab, usashl_optab, ssmadd_widen_optab, usmadd_widen_optab,
4344         umsub_widen_optab, usmsub_widen_optab): Define.
4345         (enum convert_optab_index): Add COI_fract, COI_fractuns, COI_satfract,
4346         COI_satfractuns.
4347         (fract_optab, fractuns_optab, satfract_optab, satfractuns_optab):
4348         Define.
4349         (expand_fixed_convert): Declare.
4350         * expr.c (convert_move): Support the move of fixed-point modes.
4351         (emit_move_insn_1): Handle fixed-point mode to move via integer.
4352         (categorize_ctor_elements_1): Handle FIXED_CST.
4353         (count_type_elements): Handle FIXED_POINT_TYPE.
4354         (expand_expr_real_1): For VECTOR_CST, check MODE_VECTOR_FRACT,
4355         MODE_VECTOR_UFRACT, MODE_VECTOR_ACCUM, MODE_VECTOR_UACCUM.
4356         Support FIXED_CST.
4357         For PLUS_EXPR and MINUS_EXPR, support saturating and non-saturating
4358         multiply and add/subtract for fixed-point types.
4359         For MULT_EXPR, *DIV_EXPR, *SHIFT_EXPR, if the mode if a fixed-point
4360         mode, we jump to binop directly.
4361         Support FIXED_CONVERT_EXPR.
4362         (do_store_flag): Check FIXED_CST to put a constant second.
4363         (vector_mode_valid_p): Handle MODE_VECTOR_FRACT,
4364         MODE_VECTOR_UFRACT, MODE_VECTOR_ACCUM, MODE_VECTOR_UACCUM.
4365         (const_vector_from_tree): Support FIXED_CST.
4366         * doc/extend.texi (Fixed-Point): New node.
4367         * doc/md.texi (ssadd, usadd, sssub, ussub, ssmul, usmul, ssdiv, usdiv,
4368         ssmadd, usmadd, ssmsub, usmsub, ssashl, usashl, ssneg, usneg, fract,
4369         satfract, fractuns, satfractuns): Document them.
4370
4371 2007-09-07  Bernd Schmidt  <bernd.schmidt@analog.com>
4372
4373         * config/bfin/bfin.h (PREFERRED_RELOAD_CLASS): Don't reload autoinc
4374         addresses into I registers.
4375
4376 2007-09-06  Jan Hubicka  <jh@suse.cz>
4377             Andreas Tobler  <a.tobler@schweiz.org>
4378
4379         * config/darwin.c (machopic_indirect_data_reference): Avoid invalid
4380         sharing.
4381         (machopic_legitimize_pic_address): Likewise.
4382
4383 2007-09-06  Andrew Pinski  <andrew_pinski@playstation.sony.com>
4384             Jan Hubicka  <jh@suse.cz>
4385
4386         * config/spu/spu.md (floatsidf2): Use convert_optab_libfunc
4387         instead of ufloat_optab->handlers directly.
4388         (floatdidf2): Likewise.
4389
4390 2007-09-06  Sandra Loosemore  <sandra@codesourcery.com>
4391
4392         * config/mips/mips.c:  Include diagnostic.h.
4393         (mips_set_current_function): Check errorcount and sorrycount 
4394         before generating RTL.
4395
4396 2007-09-06  Richard Sandiford  <richard@codesourcery.com>
4397
4398         PR target/33256
4399         * config/mips/mips.c (mips_classify_symbolic_expression): New function.
4400         (mips_classify_address): Use it instead of mips_symbolic_constant_p.
4401         (print_operand_reloc): Likewise.
4402
4403 2007-09-06  Janis Johnson  <janis187@us.ibm.com>
4404
4405         Revert:
4406
4407         2007-09-06  Jan Hubicka  <jh@suse.cz>
4408  
4409         * i386.c (ix86_expand_lround, ix86_expand_round): Update call of
4410         real_2expN.
4411
4412         2007-09-06  Richard Sandiford  <richard@codesourcery.com>
4413
4414         * config/mips/mips.md (fixuns_truncdfsi2, fixuns_truncdfdi2)
4415         (fixuns_truncsfsi2, fixuns_truncsfdi2): Update calls to real_2expN.
4416
4417         2007-09-05  Janis Johnson  <janis187@us.ibm.com>
4418
4419         * optabs.c (expand_float): Convert unsigned integer as signed only
4420         if it provides sufficient accuracy; add mode argument to real_2expN.
4421         (expand_fix): Fix comment typos; extend binary float into mode
4422         wider than destination for converion to unsigned integer; add mode
4423         argument to real_2expN.
4424         * real.c (real_2expN): Add mode argument to special-case decimal
4425         float values.
4426         * real.h (real_2expN): Ditto.
4427         * fixed-value.c (check_real_for_fixed_mode): Add mode argument to
4428         real_2expN.
4429         (fixed_from_string): Ditto.
4430         (fixed_to_decimal): Ditto.
4431         (fixed_convert_from_real): Ditto.
4432         (real_convert_from_fixed): Ditto.
4433         * config/rs6000/rs6000.md (FP): Include DD and TD modes.
4434         * config/rs6000/dfp.md (extendddtd2, adddd3, addtd3, subdd3, subtd3,
4435         muldd3, multd3, divdd3, divtd3, cmpdd_internal1, cmptd_internal1,
4436         floatditd2, ftruncdd2, fixdddi2, ftrunctd2, fixddi2): New.
4437
4438 2007-09-06  Tom Tromey  <tromey@redhat.com>
4439
4440         * tree-cfg.c (remove_bb): Only warn if line is non-zero.
4441         * c-pch.c (c_common_read_pch): Restore current location after
4442         reading PCH file.
4443         * tree.c (expand_location): Update.
4444         (expr_filename): Changed return type.  Unified the two cases.
4445         (expr_lineno): Likewise.
4446         (annotate_with_file_line): Don't use EXPR_LINENO and EXPR_FILENAME
4447         as lvalues.
4448         * toplev.c (line_table): Changed type.
4449         (general_init): Update.
4450         (realloc_for_line_map): New function.
4451         (general_init): Allocate line_table using GC.
4452         * fix-header.c (line_table): Changed type.
4453         (read_scan_file): Update.
4454         (read_scan_file): Update.
4455         * c-ppoutput.c (maybe_print_line): Update.
4456         (print_line): Update.
4457         (cb_line_change): Update.
4458         (cb_define): Update.
4459         (pp_file_change): Update.
4460         * c-opts.c (c_common_init_options): Update.
4461         (finish_options): Update.
4462         (push_command_line_include): Update.
4463         * c-lex.c (cb_line_change): Update.
4464         (cb_def_pragma): Update.
4465         (cb_define): Update.
4466         (cb_undef): Update.
4467         (c_lex_with_flags): Use cpp_get_token_with_location.
4468         * input.h (line_table): Changed type.
4469         (location_from_locus): New macro.
4470         * tree.h (EXPR_FILENAME): No longer an lvalue.
4471         (EXPR_LINENO): Likewise.
4472         (expr_locus, set_expr_locus): Declare separately for
4473         USE_MAPPED_LOCATION.
4474         (expr_filename, expr_lineno): Changed return type.
4475         * gimplify.c (tree_to_gimple_tuple): Use SET_EXPR_LOCUS.
4476         * cfgexpand.c (expand_gimple_cond_expr): Use location_from_locus.
4477         (expand_gimple_basic_block): Likewise.
4478         * final.c (final_scan_insn): Use expanded_location.
4479
4480 2007-09-06  Richard Guenther  <rguenther@suse.de>
4481
4482         PR tree-optimization/32586
4483         * tree-ssa-sccvn.c (simplify_binary_expression): Avoid
4484         folding if nothing changed.
4485         (simplify_unary_expression): New function.  Do tree combining
4486         on conversion like codes.
4487         (try_to_simplify): Call it.
4488         * builtins.c (fold_builtin_cexp): Fold the built expressions.
4489         * fold-const.c (fold_unary): Test result of get_callee_fndecl().
4490
4491 2007-09-06  Jan Hubicka  <jh@suse.cz>
4492
4493         PR target/33318
4494         * cse.c (fold_rtx): Avoid invalid sharing.
4495
4496 2007-09-06  Richard Sandiford  <richard@codesourcery.com>
4497
4498         * config/mips/mips.md (fixuns_truncdfsi2, fixuns_truncdfdi2)
4499         (fixuns_truncsfsi2, fixuns_truncsfdi2): Update calls to real_2expN.
4500
4501 2007-09-06  Revital Eres  <eres@il.ibm.com>
4502
4503         * config/rs6000/rs6000.c (rs6000_legitimate_offset_address_p):
4504         Fix offsettable memory reference for 750CL.
4505
4506 2007-09-06  Pat Haugen  <pthaugen@us.ibm.com>
4507
4508         * reload.c (find_reloads_address_1): Try to preserve original
4509         base/index regclass of operands.
4510         * regrename.c (scan_rtx_address): Likewise.
4511         (replace_oldest_value_addr): Likewise.
4512
4513 2007-09-06  Richard Guenther  <rguenther@suse.de>
4514
4515         PR tree-optimization/33302
4516         * domwalk.c (walk_dominator_tree): The exit block is
4517         interesting even if it is not reachable.
4518
4519 2007-09-06  Richard Sandiford  <richard@codesourcery.com>
4520
4521         PR middle-end/33306
4522         * optabs.c (avoid_expensive_constant): Do nothing if MODE is VOIDmode.
4523
4524 2007-09-06  Basile Starynkevitch  <basile@starynkevitch.net>
4525
4526         * cfg.c (dump_bb_info, dump_edge_info): Added cfun test for 
4527         robustness.
4528
4529 2007-09-05  Ian Lance Taylor  <iant@google.com>
4530
4531         * tree-pretty-print.c (dump_decl_name): Cast LABEL_DECL_UID to int
4532         when printing.
4533         (dump_generic_node): Likewise.
4534         * print-rtl.c (print_decl_name): Likewise.
4535         * print-tree.c (print_node_brief): Likewise.
4536         (print_node): Likewise.
4537         * Makefile.in (RTL_BASE_H): Add alias.h.
4538         (TREE_H): Likewise.
4539
4540 2007-09-06  Jesper Nilsson  <jesper.nilsson@axis.com>
4541
4542         * longlong.h [__CRIS_arch_version >= 8] (count_trailing_zeros):
4543         Defined.
4544         * config/cris/cris.md (ctzsi2, cris_swap_bits): Implemented.
4545         * config/cris/cris.h (CTZ_DEFINED_VALUE_AT_ZERO): Defined.
4546
4547 2007-09-06  Jie Zhang  <jie.zhang@analog.com>
4548
4549         * config.gcc (tm_file): Add linux.h for bfin*-uclinux*.
4550         (tm_defines): Define UCLIBC_DEFAULT to 1.
4551         (extra_options): Add linux.opt.
4552         * config/bfin/linux.h (CPLUSPLUS_CPP_SPEC): Don't define.
4553         (CRT_CALL_STATIC_FUNCTION): Likewise.
4554         (NO_IMPLICIT_EXTERN_C): Likewise.
4555         (TARGET_OS_CPP_BUILTINS): Define as LINUX_TARGET_OS_CPP_BUILTINS.
4556         * config/bfin/elf.h (OBJECT_FORMAT_ELF): Don't define.
4557         * config/bfin/uclinux.h (CPLUSPLUS_CPP_SPEC): Don't define.
4558         (ENDFILE_SPEC): Don't define.
4559         (LIB_SPEC): Likewise.
4560         (CRT_CALL_STATIC_FUNCTION): Likewise.
4561         (NO_IMPLICIT_EXTERN_C): Likewise.
4562         (LINUX_TARGET_OS_CPP_BUILTINS): Likewise.
4563         (TARGET_OS_CPP_BUILTINS): Define as LINUX_TARGET_OS_CPP_BUILTINS.
4564
4565 2007-09-06  Jan Hubicka  <jh@suse.cz>
4566
4567         * i386.c (ix86_expand_lround, ix86_expand_round): Update call of
4568         real_2expN.
4569
4570 2007-09-06  Jan Hubicka  <jh@suse.cz>
4571
4572         * opts.c (common_handle_option): Enable inlining functions for
4573         -fprofile-generate.
4574
4575 2007-09-06  Jakub Jelinek  <jakub@redhat.com>
4576
4577         * builtin-attrs.def (ATTR_NONNULL_3): New.
4578         (DEF_FORMAT_ATTRIBUTE): Use just ATTR_NONNULL_##FA instead of
4579         ATTR_NOTHROW_NONNULL_##FA.
4580         (DEF_FORMAT_ATTRIBUTE_NOTHROW, DEF_FORMAT_ATTRIBUTE_BOTH): New macros.
4581         (ATTR_FORMAT_PRINTF_NOTHROW_2_0, ATTR_PRINTF_NOTHROW_2_3,
4582         ATTR_FORMAT_PRINTF_NOTHROW_3_0, ATTR_FORMAT_PRINTF_NOTHROW_3_4,
4583         ATTR_FORMAT_PRINTF_NOTHROW_4_0, ATTR_PRINTF_NOTHROW_4_5,
4584         ATTR_FORMAT_PRINTF_NOTHROW_5_0, ATTR_FORMAT_PRINTF_NOTHROW_5_6,
4585         ATTR_FORMAT_SCANF_NOTHROW_2_0, ATTR_FORMAT_SCANF_NOTHROW_2_3,
4586         ATTR_FORMAT_STRFTIME_NOTHROW_3_0, ATTR_FORMAT_STRFMON_NOTHROW_3_4):
4587         New.
4588         (ATTR_FORMAT_PRINTF_4_0, ATTR_PRINTF_4_5, ATTR_FORMAT_PRINTF_5_0,
4589         ATTR_FORMAT_PRINTF_5_6, ATTR_FORMAT_STRFTIME_3_0,
4590         ATTR_FORMAT_NOTHROW_3_4): Remove.
4591         * builtins.def (snprintf, sprintf, sscanf, vsnprintf, vsprintf,
4592         vsscanf, strfmon, strftime, __snprintf_chk, __sprintf_chk,
4593         __vsnprintf_chk, __vsprintf_chk): Use ATTR_FORMAT_*_NOTHROW_*
4594         instead of ATTR_FORMAT_*_*.
4595
4596 2007-09-06  Hans-Peter Nilsson  <hp@axis.com>
4597
4598         * config/cris/cris.c (cris_emit_movem_store): Call copy_rtx on
4599         parts re-used for REG_FRAME_RELATED_EXPR.
4600
4601 2007-09-05  Janis Johnson  <janis187@us.ibm.com>
4602
4603         * optabs.c (expand_float): Convert unsigned integer as signed only
4604         if it provides sufficient accuracy; add mode argument to real_2expN.
4605         (expand_fix): Fix comment typos; extend binary float into mode
4606         wider than destination for converion to unsigned integer; add mode
4607         argument to real_2expN.
4608         * real.c (real_2expN): Add mode argument to special-case decimal
4609         float values.
4610         * real.h (real_2expN): Ditto.
4611         * fixed-value.c (check_real_for_fixed_mode): Add mode argument to
4612         real_2expN.
4613         (fixed_from_string): Ditto.
4614         (fixed_to_decimal): Ditto.
4615         (fixed_convert_from_real): Ditto.
4616         (real_convert_from_fixed): Ditto.
4617         * config/rs6000/rs6000.md (FP): Include DD and TD modes.
4618         * config/rs6000/dfp.md (extendddtd2, adddd3, addtd3, subdd3, subtd3,
4619         muldd3, multd3, divdd3, divtd3, cmpdd_internal1, cmptd_internal1,
4620         floatditd2, ftruncdd2, fixdddi2, ftrunctd2, fixddi2): New.
4621
4622 2007-09-05  Ian Lance Taylor  <iant@google.com>
4623
4624         * init-regs.c (initialize_uninitialized_regs): Call
4625         emit_insn_before rather than add_insn_before.
4626
4627 2007-09-05  Jakub Jelinek  <jakub@redhat.com>
4628
4629         * builtins.def (BUILT_IN_VA_ARG_PACK): New built-in.
4630         * tree.h (CALL_EXPR_VA_ARG_PACK): Define.
4631         * tree-inline.h (copy_body_data): Add call_expr field.
4632         * tree-inline.c (expand_call_inline): Initialize call_expr.
4633         (copy_bb): Append anonymous inline fn arguments to arguments
4634         when inlining a CALL_EXPR_VA_ARG_PACK call.
4635         * builtins.c (expand_builtin): Issue an error if
4636         BUILT_IN_VA_ARG_PACK is seen during expand.
4637         (fold_call_expr, fold_builtin_call_array): Don't fold
4638         CALL_EXPR_VA_ARG_PACK CALL_EXPRs or calls with
4639         __builtin_va_arg_pack () call as last argument.
4640         * gimplify.c (gimplify_call_expr): If last argument to a vararg
4641         function is __builtin_va_arg_pack (), decrease number of call
4642         arguments and instead set CALL_EXPR_VA_ARG_PACK on the CALL_EXPR.
4643         * expr.c (expand_expr_real_1): Issue an error if
4644         CALL_EXPR_VA_ARG_PACK CALL_EXPR is seen during expand.
4645         * tree-pretty-print.c (dump_generic_node): Handle printing
4646         CALL_EXPR_VA_ARG_PACK bit on CALL_EXPRs.
4647         * doc/extend.texi (__builtin_va_arg_pack): Document.
4648
4649 2007-09-05  Adam Nemet  <anemet@caviumnetworks.com>
4650
4651         PR tree-optimization/21513
4652         * builtins.c (build_builtin_expect_predicate): New function.
4653         (fold_builtin_expect): Add argument for expected value.
4654         Distribute __builtin_expect over short-circuiting operations.
4655         Fold nested builtin_expects.
4656         (fold_builtin_2): Adjust call to fold_builtin_expect.
4657
4658 2007-09-05  Rask Ingemann Lambertsen  <rask@sygehus.dk>
4659
4660         PR web/32965
4661         PR tree-optimization/13756
4662         * doc/invoke.texi (Options That Control Optimization): Document
4663         -ftree-dse.
4664
4665 2007-09-05  Uros Bizjak  <ubizjak@gmail.com>
4666
4667         * gcc/config/i386/cpuid.h: New file.
4668         * gcc/config/i386/driver-i386.c: Include cpuid.h.
4669         (describe_cache): Shrink size and line strings to 100 bytes.
4670         (detect_caches_amd): Return "" for unsupported max_ext_level.
4671         Use __cpuid function.
4672         (detect_caches_intel): Return "" for unsupported max_level.
4673         Use __cpuid function.
4674         (host_detect_local_cpu): Change feature flag variables to
4675         unsigned int.  Initialize only extended feature flag variables.
4676         Use __get_cpuid_max to determine max supported cpuid level.
4677         Use __cpuid function to determine supported features.  Fix
4678         calculation of family id.  Remove is_amd and check signature
4679         directly.  Check for Geode signature.  Handle family 4 id.
4680         [PROCESSOR_GENERIC32]: New default for unknown family id.  Move
4681         cpu discovery code to lower part of the function.
4682         [PROCESSOR_PENTIUM, PROCESSOR_K6, PROCESSOR_ATHLON]: Do not tune
4683         for sub-architecture.
4684         [PROCESSOR_PENTIUMPRO]: Simplify cpu discovery code.
4685         [PROCESSOR_K8]: Add k8-sse3 architecture.
4686         [PROCESSOR_NOCONA]: Remove.
4687         [PROCESSOR_GENERIC64]: Ditto.
4688         * gcc/config/i386/x-i386 (driver-i386.o): Depend on cpuid.h.
4689         * gcc/config/i386/crtfastmath.c: Include cpuid.h.  Use __get_cpuid
4690         to check for SSE and FXSAVE support.
4691         * gcc/config/i386/t-crtfm (crtfastmath.o): Depend on cpuid.h.
4692         Add -minline-all-stringops.
4693         * gcc/config.gcc (i[34567]86-*-*): Add cpuid.h to extra_headers.
4694         (x86_64-*-*): Ditto.
4695
4696 2007-09-05  Jie Zhang  <jie.zhang@analog.com>
4697
4698         * config/bfin/linux-unwind.h: New file.
4699         * config/bfin/linux.h (MD_UNWIND_SUPPORT): Define.
4700         * config/bfin/uclinux.h (MD_UNWIND_SUPPORT): Define.
4701
4702 2007-09-05  Laurynas Biveinis  <laurynas.biveinis@gmail.com>
4703
4704         * Makefile.in (stmt.o): Add alloc-pool.h dependency.
4705         * stmt.c: Include alloc-pool.h.
4706         (struct case_node): Remove GTY marker.
4707         (add_case_node): New parameter case_node_pool.  Use it for
4708         allocation of r.
4709         (expand_case): New allocation pool case_node_pool.  Initialize it,
4710         pass to add_case_node and free it.
4711
4712 2007-09-05  Sandra Loosemore  <sandra@codesourcery.com>
4713             David Ung  <davidu@mips.com>
4714             Nigel Stephens <nigel@mips.com>
4715
4716         Add mips16/nomips16 function attributes and -mflip-mips16 option
4717         for testing mixed-mode compilation.
4718
4719         * config/mips/mips.opt (mflip-mips16): New.
4720
4721         * config/mips/mips.h (SYMBOL_FLAG_MIPS16_FUNC): Define.
4722         (SYMBOL_FLAG_MIPS16_FUNC_P): Define.
4723
4724         * config/mips/mips.c (mips_base_target_flags): New.
4725         (mips_base_mips16): New.
4726         (mips_base_schedule_insns): New.
4727         (mips_base_reorder_blocks_and_partition): New.
4728         (mips_base_align_loops): New.
4729         (mips_base_align_jumps): New.
4730         (mips_base_align_functions): New.
4731         (mips16_flipper): New.
4732         (mips_attribute_table): Add "mips16" and "nomips16" entries.
4733         (TARGET_SET_CURRENT_FUNCTION): Define.
4734         (mips_mips16_type_p, mips_nomips16_type_p): New.
4735         (mips_comp_type_attributes): Check mips16/nomips16 attributes.
4736         (mips_function_ok_for_sibcall): Make it deal with functions with
4737         mips16 attributes.
4738         (mips_init_split_addresses): New, split out from override_options.
4739         (mips_init_relocs): New, split out from override_options.
4740         (was_mips16_p): New.
4741         (mips_set_mips16_mode): New, split out from override_options.
4742         (mips_set_current_function): New.
4743         (override_options): Add sorry for unsupported mips16/pic
4744         combination.  Remove error for mips16/dsp combination.  Save
4745         base option settings.  
4746         (mips_file_start): Move mips16 mode setting output from here....
4747         (mips_output_function_prologue): ....to here.
4748         (mips_output_mi_thunk): Check for mips16 function.
4749         (build_mips16_function_stub): Don't set .mips16 here.
4750         (build_mips16_call_stub): Likewise.
4751         (mips_expand_builtin): Error in mips16 mode.
4752         (mips_use_mips16_mode_p): New.
4753         (mips_encode_section_info): Check for mips16 function, and set
4754         SYMBOL_REF_FLAGS accordingly.
4755
4756         * doc/extend.texi (Function Attributes): Document new
4757         mips16/nomips16 attributes.
4758         * doc/invoke.texi (Option Summary): Add -mflip-mips16.
4759         (MIPS Options): Document -mflip-mips16.
4760
4761 2007-09-05  Sandra Loosemore  <sandra@codesourcery.com>
4762
4763         * config/mips/mips.c (mips_legitimize_tls_address): Call sorry
4764         if we encounter TLS address in MIPS16 mode.
4765         (mips_legitimize_const_move): Check cannot_force_const_mem for
4766         the (const (plus symbol offset)) case; this forces invalid TLS
4767         address in MIPS16 mode to be caught by the above call to sorry.
4768         (override_options): Don't reset targetm.have_tls in MIPS16 mode,
4769         because that now enables emutls, which is not ABI compatible
4770         with native TLS in non-MIPS16 mode.
4771
4772 2007-09-05  Sandra Loosemore  <sandra@codesourcery.com>
4773
4774         Add target hook invoked when cfun changes.
4775
4776         * doc/tm.texi (TARGET_SET_CURRENT_FUNCTION): Document.
4777         * target.h (struct gcc_target): Add set_current_function.
4778         * target-def.h (TARGET_SET_CURRENT_FUNCTION): Define.
4779         (TARGET_INITIALIZER): Add initializer for set_current_function.
4780         * tree.h (push_struct_function): New.
4781         * tree-inline.h (push_cfun, pop_cfun): Move declarations to...
4782         * function.h: Here.
4783         (set_cfun): Declare.
4784         * tree-inline.c (cfun_stack, push_cfun, pop_cfun): Moved to...
4785         * function.c: Here.
4786         (push_function_context_to): Use allocate_struct_function
4787         to create null context, not init_dummy_function_start.  Use set_cfun.
4788         (pop_function_context_from): Use set_cfun.
4789         (in_dummy_function): New.
4790         (invoke_set_current_function_hook): New.
4791         (set_cfun): New.
4792         (push_cfun, pop_cfun): Use set_cfun.
4793         (push_struct_function): New.
4794         (allocate_struct_function): Call invoke_set_current_function_hook
4795         before returning.
4796         (prepare_function_start): Don't set cfun here.  Remove unused
4797         argument; fix all callers.
4798         (init_dummy_function_start): Fiddle with in_dummy_function.  Call
4799         push_struct_function.
4800         (init_function_start): Set cfun here.
4801         (expand_dummy_function_end): Fiddle with in_dummy_function.  Pop cfun.
4802         * omp-low.c (create_omp_child_function): Use push_struct_function
4803         and pop_cfun to save/restore state.
4804         (expand_omp_parallel): Remove unused saved_cfun variable.
4805         * cgraphunit.c (ipa_passes): Use set_cfun.
4806         * gimple-low.c (record_vars_into): Use push_cfun/pop_cfun here.
4807         * dwarf2out.c (dwarf2out_abstract_function): Likewise.
4808         * matrix-reorg.c (transform_allocation_sites): Likewise.
4809         (matrix_reorg): Use set_cfun.
4810         * gimplify.c (gimplify_function_tree): Use push_cfun/pop_cfun here.
4811         * tree-optimize.c (tree_rest_of_compilation): Remove one redundant
4812         assignment to cfun; use set_cfun for the other.
4813         * tree-cfg.c (move_sese_region_to_fn): Use set_cfun.
4814         (dump_function_to_file): Use push_cfun/pop_cfun here.
4815         * c-decl.c (finish_function): Use set_cfun.
4816
4817 2007-09-05  Kenneth Zadeck <zadeck@naturalbridge.com>
4818
4819         * regrename.c (rerename_optimize): Use deferred rescanning and
4820         insert explicit calls to rescan insns when changed.
4821         
4822 2007-09-05  Jan Hubicka  <jh@suse.cz>
4823
4824         * optabs.c (libfunc_entry): Change optab to integer.
4825         (hash_libfunc, convert_optab_libfunc, optab_libfunc,
4826         set_optab_libfunc, set_conv_libfunc): Use optable indexes instead
4827         of pointers for hashing.
4828
4829 2007-09-05  Jan Hubicka  <jh@suse.cz>
4830
4831         * regrename.c (pass_regrename, pass_cprop_hardreg): Add RTL sharing
4832         verifier.
4833         * fwprop.c (pass_rtl_fwprop, pass_rtl_fwprop_add): Likewise.
4834         * see.c (pass_see): Likewise.
4835         * tracer.c (pass_tracer): Likewise.
4836         * postreload-gcse.c (pass_gcse2): Likewise.
4837         * postreload.c (pass_postreload_cse): Likewise.
4838         * mode-switching.c (pass_mode_switching): Likewise.
4839         * modulo-sched.c (pass_sms): Likewise.
4840         * cse.c (cse_insn): Likewise.
4841         * web.c (pass_web): Likweise.
4842         * combine-stack-adj.c (pass_stack_adjustments): Likewise.
4843         * dce.c (pass_ud_rtl_dce, pass_fast_rtl_dce): Likewise.
4844         * loop-init.c (pass_rtl_loop_init): Likewise.
4845         (pass_rtl_loop_done, pass_rtl_move_loop_, pass_rtl_unswitch,
4846         pass_rtl_unroll_and, pass_rtl_doloop): Likewise.
4847         * global.c (pass_global_alloc): Likewise.
4848         * ifcvt.c (pass_rtl_ifcvt, pass_if_after_combine,
4849         pass_if_after_reload): Likewise.
4850         * reload.c (pass_peephole2, pass_split_for_shoren_branches): Likewise.
4851         * dse.c (pass_rtl_dse1, pass_rtl_dse2): Likewise.
4852         * regmove.c (pass_regmove): Likewise.
4853         * function.c (pass_thread_prologugues_epilogues): Likewise.
4854         * gcse.c (pass_gcse): Likewise.
4855         * rtl-factoring.c (pass_rtl_seqabstr): Likewise.
4856         * lower-subreg.c (pass_lower_subreg2): Likewise.
4857         * bt-load.c (pass_branch_target_load): Likewise.
4858         * emit-rtl.c (pass_unshare_all_rtl): Likewise.
4859         * cfgcleanup.c (pass_jump, pass_jump2): Likewise.
4860         * combine.c (pass_combine): Likewise.
4861         * bb-reorder.c (pass_duplicate_comp, pass_reorder_blocks): Likewise.
4862         (pass_partition_blocks): Likewise.
4863         * var-tracking.c (pass_variable_track): Likewise.
4864         * reg-stack.c (pass_stack_regs_run): Likewise.
4865         * sched-rgn.c (pass_sched, pass_sched2): Likewise.
4866         * passes.c (pass_postreload): Likewise.
4867         (execute_function_todo): Add TODO_verify_rtl_sharing handling code.
4868         * tree-pass.h (TODO_verify_rtl_sharing): New.
4869         (TODO_update_ssa, TODO_update_ssa_no_phi, TODO_update_ssa_full_phi,
4870         TODO_update_ssa_only_virtuals, TODO_remove_unused_locals,
4871         TODO_set_props, TODO_df_finish, TODO_df_verify,
4872         TODO_mark_first_instance, TODO_rebuild_alias): Renumber.
4873
4874 2007-09-05  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
4875
4876         * fold-const.c (all_ones_mask_p, sign_bit_p, simple_operand_p,
4877         fold_real_zero_addition_p, reorder_operands_p,
4878         div_if_zero_remainder, fold_undefer_overflow_warnings,
4879         int_binop_types_match_p, fold_convert_const_int_from_int,
4880         fold_convert_const_int_from_real,
4881         fold_convert_const_int_from_fixed,
4882         fold_convert_const_real_from_real,
4883         fold_convert_const_real_from_fixed,
4884         fold_convert_const_fixed_from_fixed,
4885         fold_convert_const_fixed_from_int,
4886         fold_convert_const_fixed_from_real, maybe_lvalue_p,
4887         fold_checksum_tree, fold_check_failed, print_fold_checksum,
4888         debug_fold_checksum, multiple_of_p): Constify.
4889         * tree-flow-inline.h (get_lineno): Likewise.
4890         * tree-flow.h (get_lineno): Likewise.
4891         * tree-object-size.c (compute_object_offset, addr_object_size,
4892         alloc_object_size, pass_through_call): Likewise.
4893         * tree-pretty-print.c (op_symbol, print_call_name,
4894         print_struct_decl, do_niy): Likewise.
4895         * tree.h (fold_undefer_overflow_warnings, multiple_of_p,
4896         debug_fold_checksum): Likewise.
4897
4898 2007-09-04  Steven Bosscher  <steven@gcc.gnu.org>
4899
4900         PR middle-end/33029
4901         * lower-subreg.c (resolve_clobber): If we remove a REG_LIBCALL
4902         note, remove the associated REG_RETVAL note.
4903
4904 2007-09-04  Andrew Pinski  <andrew_pinski@playstation.sony.com>
4905
4906         * config.gcc (powerpc*-*-*): Install
4907         spu2vmx.h, vec_types.h, and si2vmx.h headers.
4908         * config/rs6000/spu2vmx.h: New header.
4909         * config/rs6000/si2vmx.h: New header.
4910         * config/rs6000/vec_types.h: New header.
4911
4912 2007-09-05  Ben Elliston  <bje@au.ibm.com>
4913
4914         * varasm.c (initializer_constant_valid_p): Fix comment typo.
4915
4916 2007-09-05  Ben Elliston  <bje@au.ibm.com>
4917
4918         * config/rs6000/ppu_intrinsics.h (__ldarx): Use `Z' constraint,
4919         not `m' for *ptrp.
4920         (__stdcx): Make asm volatile.
4921         (__stwcx, __stdcx): Return only 0 or 1.
4922
4923 2007-09-05  Jan Hubicka  <jh@suse.cz>
4924
4925         Revert:
4926
4927         2007-09-04  Jan Hubicka  <jh@suse.cz>
4928         * tree-tailcall.c (eliminate_tail_call): Expect unrenamed return value.
4929
4930         2007-09-04  Richard Guenther  <rguenther@suse.de>
4931         * tree-ssa-operands.c (add_virtual_operand): Only mark
4932         stores as has_volatile_ops if alias information is not available.
4933
4934 2007-09-05  Jakub Jelinek  <jakub@redhat.com>
4935
4936         * config/rs6000/tramp.asm: Include config.h.
4937         Check __PIC__ or __pic__ macro instead of SHARED.
4938
4939         PR rtl-optimization/32300
4940         * see.c (see_copy_insn): New function.
4941         (see_def_extension_not_merged, see_merge_one_use_extension,
4942         see_merge_one_def_extension): Use it.  Avoid changing
4943         PREV_INSN/NEXT_INSN chains directly, insted emit insns
4944         into sequences.  Call df_insn_delete on temporary insns
4945         that won't be emitted into the insn stream.
4946         (rest_of_handle_see): Turn off DF_DEFER_INSN_RESCAN
4947         and run df_process_deferred_rescans () before run_fast_dce.
4948
4949         PR tree-optimization/33017
4950         * tree-data-ref.c (split_constant_offset) <case SSA_NAME>: Don't
4951         recurse for pure or const function calls.
4952
4953 2007-09-04  Laurynas Biveinis  <laurynas.biveinis@gmail.com>
4954
4955         * c-format.c: Include alloc-pool.h.
4956         (check_format_info_main): New argument fwt_alloc.  Use allocation
4957         pool instead of GC.  Remove GC deallocation code.
4958         (check_format_arg): Create allocation pool, pass it to
4959         check_format_info_main and free it afterwards.
4960         * Makefile.in (c-format.o): Add alloc-pool.h dependency.
4961
4962 2007-09-05  Ben Elliston  <bje@au.ibm.com>
4963
4964         * config/rs6000/ppu_intrinsics.h (__protected_stream_count):
4965         Rename count macro arugment for clarity.
4966         (__protected_unlimited_stream_set): Pass UG=1 to __dcbt_TH1000.
4967         (__protected_stream_set): Likewise, pass 0.
4968
4969 2007-09-04  Jan Hubicka  <jh@suse.cz>
4970
4971         * tree-tailcall.c (eliminate_tail_call): Expect unrenamed return value.
4972
4973 2007-09-04  Jan Hubicka  <jh@suse.cz>
4974
4975         * invoke.texi (-finline-small-functions): Document.
4976         * ipa-inline.c (cgraph_default_inline_p): Do not use DECL_INLINE
4977         when deciding what is inlinable.
4978         (cgraph_decide_recursive_inlining): Handle flag_inline_functions.
4979         (cgraph_decide_inlining_of_small_function): Handle new flags.
4980         (cgraph_decide_inlining_incrementally): Likewise.
4981         * opts.c (decode_options): Enable flag_inline_small_functions at -O2
4982         * common.opt (finline-small-functions): New.
4983         * Makefile.in (build/gengtype.o-warn): Work around PR29478
4984
4985 2007-09-04  Richard Guenther  <rguenther@suse.de>
4986
4987         * tree-ssa-operands.c (add_virtual_operand): Only mark
4988         stores as has_volatile_ops if alias information is not available.
4989
4990 2007-09-04  Andrew Haley  <aph@redhat.com>
4991
4992         * config/arm/libgcc-bpabi.ver: Add _Unwind_Backtrace as GCC_4.3.0.
4993
4994 2007-09-04  Andrew Haley  <aph@redhat.com>
4995
4996         * config/arm/libunwind.S (UNWIND_WRAPPER _Unwind_Backtrace): New.
4997         * config/arm/unwind-arm.h (__gnu_Unwind_Backtrace): New.
4998         * config/arm/unwind-arm.c (__gnu_Unwind_Backtrace): New.
4999
5000 2007-09-04  Emmanuel Thome  <Emmanuel.Thome@inria.fr>
5001
5002         PR c++/14178
5003         * common.opt: Mention ABI version 2 in comment.
5004
5005 2007-09-04  Jan Hubicka  <jh@suse.cz>
5006
5007         * optabs.c (debug_optab_libfunc): Update; make available to gdb.
5008         (libfunc_entry): New structure.
5009         (libfunc_hash): New hashtable.
5010         (hash_libfunc): New function.
5011         (eq_libfunc): New function.
5012         (convert_optab_libfunc): New function.
5013         (optab_libfunc): New function.
5014         (expand_binop, sign_expand_binop, expand_twoval_binop_libfunc,
5015         expand_unop, prepare_cmp_insn, prepare_float_insn, gen_add2_insn,
5016         expand_float, expand_fix, new_optab, new_convert_optab):
5017          Update for new libfunc API.
5018         (init_libfunc, init_integral_libfuncs,
5019         init_floating_libfuncs, init_interclass_conv_libfuncs
5020         init_intraclass_conv_libfuncs): Remove; reorganize all logic to:
5021         (gen_libfunc, gen_int_libfunc, gen_fp_libfunc, gen_int_fp_libfunc,
5022         gen_intv_fp_libfunc, gen_interclass_conv_libfunc,
5023         gen_int_to_fp_conv_libfunc, gen_ufloat_conv_libfunc,
5024         gen_int_to_fp_nondecimal_conv_libfunc, gen_fp_to_int_conv_libfunc,
5025         gen_intraclass_conv_libfunc, gen_trunc_conv_libfunc,
5026         gen_extend_conv_libfunc): New.
5027         (init_one_libfunc): Revamp for hashtables.
5028         (set_conv_libfunc): Likewise.
5029         (init_optabs): Initialize hashtable; use lazy initialization where
5030         possible.
5031         * optabs.h (optab_handlers): Move out of GGC.
5032         (optab, convert_optab): Move out of GGC; add lazy gen info.
5033         (code_to_optab, convert_optab_table, optab_table): Move out of GGC.
5034         (optab_libfunc, convert_optab_libfunc): New.
5035         * builtins.c (expand_builtin_powi): Update for new API.
5036         * expr.c (convert_move): Likewise.
5037         * expmed.c (expand_divmod): Likewise.
5038
5039 2007-09-04  Daniel Jacobowitz  <dan@codesourcery.com>
5040
5041         * config/rs6000/rs6000.c (rs6000_stack_info): Allocate space for the
5042         GOT pointer only if there is a constant pool.  Use the allocated space
5043         for SPE also.
5044
5045 2007-09-04  Daniel Jacobowitz  <dan@codesourcery.com>
5046
5047         * config/rs6000/linux-unwind.h (ppc_fallback_frame_state): Correct
5048         typo for AltiVec.
5049
5050 2007-09-04  Revital Eres  <eres@il.ibm.com>
5051             Richard Guenther  <rguenther@suse.de>
5052             R. Clint Whaley  <whaley@cs.utsa.edu>
5053
5054         * doc/invoke.texi (-fassociative-math, -freciprocal-math):
5055         Document new flags.
5056         * tree-tailcall.c (process_assignment): Use -fassociative-math
5057         when reodering operands of floating-point type.
5058         * fold-const.c (fold_comparison, fold_binary): Use
5059         -fassociative-math and -freciprocal-math instead of
5060         -funsafe-math-optimization flag.
5061         * toplev.h (set_unsafe_math_optimizations_flags): Declare function.
5062         * tree-ssa-math-opts.c (gate_cse_reciprocals): Use
5063         -freciprocal-math instead of -funsafe-math-optimizations.
5064         * opts.c (set_fast_math_flags): Set -freciprocal-math and
5065         -fassociative-math when -ffast-math is set.
5066         (set_unsafe_math_optimizations_flags): New Function
5067         to set -freciprocal-math and -fassociative-math when
5068         -funsafe-math-optimizations is set.
5069         (common_handle_option): Call it.
5070         * tree-vectorizer.c (vect_is_simple_reduction): Use
5071         -fassociative-math when doing reduction on floats.
5072         * loop-unroll.c (analyze_insn_to_expand_var): Use
5073         -fassociative-math when expanding an accumulator of type float.
5074         * simplify-rtx.c (simplify_binary_operation_1): Use
5075         -fassociative-math and -freciprocal-math when reordeing operands
5076         of floating-point type.
5077         * combine.c (combine_simplify_rtx): Likewise.
5078         * tree-ssa-reassoc.c (break_up_subtract_bb, reassociate_bb):
5079         Likewise.
5080         * common.opt (-fassociative-math, -freciprocal-math): New flags.
5081
5082 2007-09-04  Paolo Carlini  <pcarlini@suse.de>
5083
5084         PR c++/18608
5085         * doc/install.texi (--enable-__cxa_atexit): Fix typo.
5086
5087 2007-09-04  Jan Hubicka  <jh@suse.cz>
5088
5089         * regrename.c(copyprop_hardreg_forward_1): Unshare when doing copyprop.
5090
5091 2007-09-04  Jan Hubicka  <jh@suse.cz>
5092
5093         * regrename.c (build_def_use): Don't share RTL between MATCH_OPERATOR
5094         and corresponding MATCH_DUP.
5095
5096 2007-09-04  Uros Bizjak  <ubizjak@gmail.com>
5097
5098         PR middle-end/33187
5099         * combine.c (subst): Do not try to simplify X if it represents load
5100         of FP constant from the constant pool via float extension.
5101
5102 2007-09-04  Ben Elliston  <bje@au.ibm.com>
5103
5104         * c-opts.c: Include "tm_p.h".
5105         * Makefile.in (c-opts.o): Add $(TM_P_H) as a dependency.
5106
5107 2007-09-04  Richard Guenther  <rguenther@suse.de>
5108
5109         PR tree-optimization/33291
5110         * tree-pretty-print.c (dump_generic_node): Dump all
5111         qualifiers for pointer types, not only first.  Dump
5112         qualifiers for aggregate types as well.
5113         * tree-ssa-ccp.c (maybe_fold_offset_to_array_ref): Always
5114         use the canonical type for building ARRAY_REFs.
5115         * gimplify.c (canonicalize_addr_expr): Clean up.  The
5116         correct validness check is compatibility of the pointer
5117         types.  Always use the canonical type for building
5118         ARRAY_REFs and ADDR_EXPRs.
5119         * tree-ssa-forwprop.c (forward_propagate_addr_expr): Revert
5120         change that disabled propagation of ADDR_EXPRs into statements
5121         with volatile ops.
5122
5123 2007-09-03  Zack Weinberg  <zack@codesourcery.com>
5124
5125         * config/arm/arm.md (mulsidi3, umulsidi3, mulsi3_highpart)
5126         (umulsi3_highpart): Make into expanders; existing insns are
5127         now named *[insn]_nov6.  Add stars to existing [insn]_v6
5128         counterparts' names.
5129
5130 2007-09-03  Daniel Jacobowitz  <dan@codesourcery.com>
5131
5132         * Makefile.in (DRIVER_DEFINES, gcc.o, gccspec.o, protoize.o)
5133         (unprotoize.o): Remove SHLIB_MULTILIB.
5134
5135 2007-09-03  Eric Weddington  <eweddington@cso.atmel.com>
5136
5137         * doc/extend.texi: Document progmem attribute for AVR.
5138
5139 2007-09-03  Anatoly Sokolov <aesok@post.ru>
5140
5141         PR target/28902
5142         * config/avr/avr.h (TARGET_VTABLE_ENTRY_ALIGN): Define.
5143
5144 2007-09-03  Zack Weinberg  <zack@codesourcery.com>
5145
5146         * optabs.c (expand_ffs): Initialize val and defined_at_zero
5147         to avoid warnings.
5148
5149         * optabs.c: Remove unnecessary forward declarations.
5150         (expand_unop_direct): New, broken out of expand_unop.
5151         (expand_doubleword_clz): New.
5152         (expand_ctz): Move above expand_ffs.  Use
5153         start_sequence, end_sequence, add_equal_note, and
5154         expand_unop_direct.  Add more commentary.
5155         (expand_ffs): Try both ctz optab and expand_ctz.
5156         Generate a test and branch if the hardware doesn't give us
5157         a useful value for input zero.  Style improvements similar to
5158         expand_ctz.
5159
5160         * config/arm/arm.md (ffssi2, ctzsi2): Delete.
5161
5162 2007-09-03  Zack Weinberg  <zack@codesourcery.com>
5163
5164         * config.gcc: Delete stanza for arm-semi-aof and
5165         armel-semi-aof targets.
5166         * config/arm/arm-protos.h
5167         * config/arm/arm.c
5168         * config/arm/arm.h: Delete all #ifdef AOF_ASSEMBLER blocks;
5169         make all #ifndef AOF_ASSEMBLER blocks unconditional.  Also
5170         delete aof_pic_label and remove mention of AOF in comments.
5171         * config/arm/arm.md: Delete patterns used only for AOF assembly.
5172         * config/arm/aof.h
5173         * config/arm/semiaof.h
5174         * config/arm/t-semi: Delete file.
5175
5176 2007-09-03  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
5177
5178         * system.h (CONST_CAST2, CONST_CAST_TREE, CONST_CAST_RTX,
5179         CONST_CAST_BB): New macros for type-specific casts.
5180         (CONST_CAST): Add a TYPE parameter and define it in terms of
5181         CONST_CAST2.
5182
5183         * c-decl.c (c_make_fname_decl): Supply a TYPE for CONST_CAST.
5184         * c-lex.c (cb_ident, lex_string): Likewise,
5185         * c-typeck.c (free_all_tagged_tu_seen_up_to): Likewise,
5186         * config/i386/i386.c (ix86_function_regparm,
5187         ix86_function_sseregparm): Use CONST_CAST_TREE.
5188         * config/mmix/mmix.c (mmix_encode_section_info): Supply a TYPE for
5189         CONST_CAST.
5190         * gcc.c (set_spec, read_specs, for_each_path, execute, do_spec_1,
5191         give_switch, set_multilib_dir): Likewise,
5192         * gengtype-parse.c (string_seq, typedef_name): Likewise,
5193         * gimple-low.c (block_may_fallthru): Use CONST_CAST_TREE.
5194         * jump.c (reversed_comparison_code_parts): Use CONST_CAST_RTX.
5195         * passes.c (execute_one_pass): Supply a TYPE for CONST_CAST.
5196         * prefix.c (update_path): Likewise,
5197         * pretty-print.c (pp_base_destroy_prefix): Likewise,
5198         * rtlanal.c (keep_with_call_p): Use CONST_CAST_RTX.
5199         * tree-cfg.c (tree_can_merge_blocks_p,
5200         tree_block_ends_with_condjump_p): Use CONST_CAST_BB.
5201         * tree-eh.c (lookup_stmt_eh_region_fn): USe CONST_CAST_TREE.
5202         * tree.c (build_string): Supply a TYPE for CONST_CAST.
5203         (attribute_list_contained): Use CONST_CAST_TREE.
5204
5205 2007-09-03  Krister Walfridsson  <cato@df.lth.se>
5206
5207         * config/netbsd-elf.h (USE_LD_AS_NEEDED): Define.
5208
5209 2007-09-03  Richard Sandiford  <richard@codesourcery.com>
5210
5211         PR middle-end/33290
5212         * optabs.c (avoid_expensive_constant): Canonicalize CONST_INTs
5213         before forcing them into a register.
5214
5215 2007-09-03  Richard Sandiford  <richard@codesourcery.com>
5216
5217         * config/mips/mips.md (fetchop_bit): Use define_code_iterator
5218         rather than define_code_macro.
5219
5220 2007-09-03  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
5221
5222         * gcc.c (xputenv): New function.
5223         (putenv_from_prefixes): Use xputenv instead of putenv.
5224         (process_command): Use xputenv instead of putenv.
5225         (set_collect_gcc_options): Use xputenv instead of putenv.
5226         (main): Use xputenv instead of putenv.
5227
5228 2007-09-03  Jesper Nilsson  <jesper.nilsson@axis.com>
5229
5230         * config/cris/cris.h (TARGET_HAS_SWAP): Defined to describe
5231         availability of swap instruction.
5232         * config/cris/cris.md (bswapsi2): Implement using swap instruction.
5233
5234 2007-09-03  Revital Eres  <eres@il.ibm.com>
5235
5236         * doc/invoke.texi (-fmodulo-sched-allow-regmoves): Update
5237         Documentation.
5238
5239 2007-09-03  Vladimir Yanovsky  <yanov@il.ibm.com>
5240             Ayal Zaks  <zaks@il.ibm.com>
5241             Revital Eres  <eres@il.ibm.com>
5242
5243         * modulo-sched.c (ps_insert_empty_row, verify_partial_schedule,
5244         compute_split_row): New functions.
5245         (ps_unschedule_node): Remove.
5246         (normalize_sched_times): Iterate over the already scheduled
5247         insns instead of the number of nodes.
5248         (MAX_SPLIT_NUM): New definition.
5249         (sms_schedule_by_order): Change the scheduling heuristic to
5250         avoid useless increases of initiation interval ii.
5251         (get_sched_window): Add dump printouts.
5252
5253 2007-09-02  David Daney  <ddaney@avtrex.com>
5254
5255         * config/mips/mips.md (UNSPEC_COMPARE_AND_SWAP, UNSPEC_SYNC_OLD_OP,
5256         UNSPEC_SYNC_NEW_OP, UNSPEC_SYNC_EXCHANGE): New define_constants.
5257         (optab, insn): Add more attributes.
5258         (fetchop_bit): New code macro.
5259         (immediate_insn): New code macro attribute.
5260         (sync): Change condition to ISA_HAS_SYNC.
5261         (rdhwr): Change predicate for operand 0 to register_operand.
5262         (memory_barrier): New expand.
5263         (sync_compare_and_swap<mode>, sync_add<mode>, sync_sub<mode>,
5264         sync_old_add<mode>, sync_old_sub<mode>, sync_new_add<mode>,
5265         sync_new_sub<mode>, sync_<optab><mode>, sync_old_<optab><mode>,
5266         sync_new_<optab><mode>, sync_nand<mode>, sync_old_nand<mode>,
5267         sync_new_nand<mode>, sync_lock_test_and_set<mode>): New insns.
5268         * config/mips/mips.h (ISA_HAS_SYNC, ISA_HAS_LL_SC): New ISA predicates.
5269         (MIPS_COMPARE_AND_SWAP, MIPS_SYNC_OP, MIPS_SYNC_OLD_OP,
5270         MIPS_SYNC_NEW_OP, MIPS_SYNC_NAND, MIPS_SYNC_OLD_NAND,
5271         MIPS_SYNC_NEW_NAND, MIPS_SYNC_EXCHANGE): New Macros.
5272         
5273 2007-09-03  Jesper Nilsson  <jesper.nilsson@axis.com>
5274             Hans-Peter Nilsson  <hp@axis.com>
5275
5276         * config/cris/cris.h (TARGET_HAS_LZ, CLZ_DEFINED_VALUE_AT_ZERO):
5277         Defined to describe availability and behavior of CLZ.
5278         * config/cris/cris.md (clzsi2): Implement using lz instruction.
5279         * config/cris/cris.opt: Tweak comment for "-metrax4".
5280         * config/cris/arit.c (LZ): When defined, define as __builtin_clz.
5281         * longlong.h [__CRIS__ && __CRIS_arch_version >= 3]
5282         (count_leading_zeros): Define.
5283
5284 2007-09-01  Laurynas Biveinis  <laurynas.biveinis@gmail.com>
5285
5286         * ggc-page.c (ggc_pch_read): Call validate_free_objects.
5287
5288 2007-09-02  Joseph Myers  <joseph@codesourcery.com>
5289
5290         PR middle-end/33272
5291         * c-decl.c (grokdeclarator): Apply qualifiers to type of parameter
5292         decayed from array.
5293
5294 2007-09-01  Kazu Hirata  <kazu@codesourcery.com>
5295
5296         * config/arm/arm.c, config/rs6000/ppu_intrinsics.h,
5297         config/spu/spu.c, df-scan.c, fixed-value.c, fold-const.c,
5298         ginclude/tgmath.h, haifa-sched.c, optabs.c, recog.c,
5299         sched-deps.c, sched-int.h, system.h, target.h,
5300         tree-ssa-live.c, tree-vect-transform.c, tree-vectorizer.c,
5301         tree.def: Fix comment typos.
5302
5303 2007-09-01  Kazu Hirata  <kazu@codesourcery.com>
5304
5305         * config/m68k/m68k.c (TARGET_DEFAULT_TARGET_FLAGS): Remove.
5306         (override_options): Turn on -mstrict-align on non-ColdFire
5307         targets.
5308         * config/m68k/m68k.h (BIGGEST_ALIGNMENT): Update a comment.
5309
5310 2007-09-01  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
5311
5312         * c-common.c (const_strip_array_types): Delete.
5313         * c-common.h (const_strip_array_types): Likewise.
5314         * emit-rtl.c (const_next_insn, const_previous_insn,
5315         const_next_nonnote_insn, const_prev_nonnote_insn,
5316         const_next_real_insn, const_prev_real_insn,
5317         const_next_active_insn, const_prev_active_insn, const_next_label,
5318         const_prev_label): Delete.
5319         * gimple-low.c (block_may_fallthru): Use expr_last.
5320         * jump.c (reversed_comparison_code_parts): Use prev_nonnote_insn.
5321         * rtl.h (const_previous_insn, const_next_insn,
5322         const_prev_nonnote_insn, const_next_nonnote_insn,
5323         const_prev_real_insn, const_next_real_insn,
5324         const_prev_active_insn, const_next_active_insn, const_prev_label,
5325         const_next_label): Delete.
5326         * rtlanal.c (keep_with_call_p): Use next_nonnote_insn.
5327         * system.h (CONST_CAST): Update comment.
5328         * tree-cfg.c (tree_can_merge_blocks_p): Use last_stmt.
5329         (const_first_stmt, const_last_stmt): Delete.
5330         (tree_block_ends_with_condjump_p): Use last_stmt.
5331         * tree-flow.h (const_first_stmt, const_last_stmt): Delete.
5332         * tree-iterator.c (const_expr_first, const_expr_last,
5333         const_expr_only): Delete.
5334         * tree.c (const_lookup_attribute): Likewise.
5335         (attribute_list_contained): Use lookup_attribute.
5336         * tree.h (const_lookup_attribute, const_expr_first,
5337         const_expr_last, const_expr_only): Delete.
5338
5339 2007-09-01  Richard Guenther  <rguenther@suse.de>
5340
5341         * tree-ssa-alias.c (create_name_tags): Use TYPE_VOLATILE
5342         instead of TREE_THIS_VOLATILE.
5343         * tree-ssa-operands.c (add_virtual_operand): Do not set
5344         has_volatile_ops.  Do not check s_ann for NULL.
5345         (get_indirect_ref_operands): Likewise.
5346         (get_expr_operands): Likewise.  For all reference trees
5347         set has_volatile_ops based on TREE_THIS_VOLATILE.  Also
5348         check base of reference for TREE_THIS_VOLATILE.
5349
5350 2007-09-01  Richard Guenther  <rguenther@suse.de>
5351
5352         * tree-cfg.c (verify_gimple_expr): Fix check for conversions
5353         between integral types.  Also allow conversions between
5354         pointer types.
5355
5356 2007-08-31  Andrew Pinski  <andrew_pinski@playstation.sony.com>
5357
5358         * optabs.c (prepare_float_lib_cmp): Use
5359         libgcc_cmp_return_mode instead of word_mode.
5360         * config/dfp-bit.h: Likewise.
5361         * config/fp-bit.h: Likewise.
5362         * config/spu/spu.c (spu_libgcc_cmp_return_mode):
5363         New function.
5364         (spu_libgcc_shift_count_mode): New function.
5365         (TARGET_LIBGCC_CMP_RETURN_MODE): Define.
5366         (TARGET_LIBGCC_SHIFT_COUNT_MODE): Define.
5367
5368 2007-08-31  Joseph Myers  <joseph@codesourcery.com>
5369
5370         * tree-pretty-print.c: Include output.h.
5371         (dump_decl_name, dump_generic_node): Use %wd with pp_printf, not
5372         HOST_WIDE_INT_PRINT_DEC.
5373         * Makefile.in (tree-pretty-print.o): Add dependency on output.h.
5374
5375 2007-08-31  Zdenek Dvorak  <ook@ucw.cz>
5376
5377         PR rtl-optimization/33224
5378         * loop-iv.c (latch_dominating_def): Check that the definition belongs
5379         to the analysed region.
5380
5381 2007-08-31  Richard Guenther  <rguenther@suse.de>
5382
5383         * function.c (allocate_struct_function): Do not set
5384         current_function_returns_pointer.
5385         * function.h (struct var_refs_queue): Remove.
5386         (struct simple_obstack_stack): Likewise.
5387         (struct function): Remove fixup_var_refs_queue member.
5388         Remove returns_pointer flag.
5389         (current_function_returns_pointer): Remove define.
5390
5391 2007-08-31  Nick Clifton  <nickc@redhat.com>
5392
5393         * tree-ssa-coalesce.c (compare_pairs): Use the elements as
5394         secondary keys in order to obtain a stable sort.
5395
5396 2007-08-31  Nick Clifton  <nickc@redhat.com>
5397
5398         PR target/33132
5399         * config/m32r/constraints.md: Add W constraint for integer zero.
5400         * config/m32r/m32r.md (get_pc): Use W and i constraints.
5401         Fix length calculation by using alternatives.
5402
5403 2007-08-31  Richard Sandiford  <richard@codesourcery.com>
5404
5405         * optabs.c (shift_optab_p, commutative_optab_p): New functions,
5406         split out from expand_binop.
5407         (avoid_expensive_constant): New function.
5408         (expand_binop_directly): Remove commutative_op argument and
5409         (expand_binop_directly): Remove commutative_op argument and
5410         call cummutative_optab_p instead.  Do not change op0 or op1
5411         when swapping xop0 and xop1.  Apply avoid_expensive_constant
5412         to each argument after potential swapping.  Enforce the
5413         canonical order of commutative operands.
5414         (expand_binop): Use shift_optab_p and commutative_optab_p.
5415         Update the calls to expand_binop_directly.  Only force constants
5416         into registers when widening an operation.  Only swap operands
5417         once a direct expansion has been rejected.
5418         (expand_twoval_binop): Only force constants into registers when
5419         using a direct expansion.
5420
5421 2007-08-31  Maxim Kuvyrkov  <maxim@codesourcery.com>
5422
5423         * sched-deps.c (update_dep): Mark arguments with ATTRIBUTE_UNUSED.
5424         (sched_analyze_insn): Don't postprocess speculative dependencies when
5425         target has no scheduling.
5426         * tree-vect-transform.c (vect_estimate_min_profitable_iters): Fix
5427         'uninitialized' warning.
5428
5429 2007-08-31  Richard Guenther  <rguenther@suse.de>
5430
5431         * tree.c (build_complex_type): Always set TYPE_NAME for
5432         comples types.
5433
5434 2007-08-31  Olivier Hainque  <hainque@adacore.com>
5435
5436         * config/rs6000/xcoff.h (XCOFF_CSECT_DEFAULT_ALIGNMENT_STR): New
5437         internal macro. Default alignment factor for csect directives, chosen
5438         to match what BIGGEST_ALIGNMENT allows.
5439         (DATA_SECTION_ASM_OP): Use it.
5440         * config/rs6000/rs6000.c
5441         (rs6000_xcoff_output_readonly_section_asm_op):
5442         Use XCOFF_CSECT_DEFAULT_ALIGNMENT_STR.
5443         (rs6000_xcoff_output_readwrite_section_asm_op): Likewise.
5444         
5445 2007-08-31  Olivier Hainque  <hainque@adacore.com>
5446
5447         * dbxout.c (dbxout_block): Move declaration within the first
5448         #if defined (DBX_DEBUGGING_INFO) block.  Rearrange another such
5449         block to include the definition, together with the associated
5450         helpers.
5451
5452 2007-08-31  David Edelsohn  <edelsohn@gnu.org>
5453             Revital Eres  <eres@il.ibm.com>
5454
5455         * doc/invoke.texi (-mpaired): Document flag.
5456         * config.gcc: Include paired.h in powerpc extra_headers and
5457         750cl.h in powerpc-*-linux*paired*.
5458         * config/rs6000/rs6000.opt (-mpaired): New flag.
5459         * config/rs6000/rs6000.c (paired_init_builtins,
5460         paired_expand_builtin, paired_expand_lv_builtin,
5461         paired_expand_stv_builtin, paired_expand_predicate_builtin):
5462         New functions to support the paired single builtin functions.
5463         (rs6000_hard_regno_mode_ok): Handle PAIRED_VECTOR_MODE.
5464         (def_builtin, bdesc_3arg, bdesc_2arg, bdesc_1arg): Add paired
5465         single builtins.
5466         (bdesc_paired_preds): New structure for paired predicate
5467         instructions.
5468         (rs6000_expand_builtin): Expand paired single builtins.
5469         (rs6000_init_builtins): Init paired single builtins.
5470         (rs6000_common_init_builtins): Add v2sf_ftype_v2sf_v2sf_v2sf.
5471         Rename v2sf_ftype_v2sf_v2sf to v2sf_ftype_v2sf_v2sf_spe
5472         and v2sf_ftype_v2sf_spe to v2sf_ftype_v2sf.  Add new types
5473         v2sf_ftype_v2sf_v2sf and v2sf_ftype_v2sf.
5474         (rs6000_vector_mode_supported_p): Support paired vector mode.
5475         * config/rs6000/rs6000.h: (UNITS_PER_PAIRED_WORD,
5476         PAIRED_VECTOR_MODE, PAIRED_SIMD_REGNO_P, TARGET_PAIRED_FLOAT):
5477         New.
5478         (LOCAL_ALIGNMENT): Handle PAIRED_VECTOR_MODE.
5479         (DATA_ALIGNMENT): Likewise.
5480         (UNITS_PER_SIMD_WORD): Handle PAIRED_VECTOR_MODE.
5481         (rs6000_builtins): Add PAIRED builtins.
5482         * config/rs6000/rs6000.md: Include paired.md.
5483         * config/rs6000/paired.h: New.
5484         * config/rs6000/paired.md: New.
5485         * config/rs6000/750cl.h: New.
5486         * config/rs6000/spe.md: Recognize movv2sf instruction for 750cl.
5487
5488 2007-08-30  Ollie Wild  <aaw@google.com>
5489
5490         * c-opts.c (c_common_handle_option): Support -fno-directives-only.
5491         * gcc.c (default_compilers): Add -fno-directives-only to
5492         @assembler-with-cpp.
5493
5494 2007-08-30  Sandra Loosemore  <sandra@codesourcery.com>
5495
5496         PR middle-end/33211
5497
5498         * regclass.c (initial_fixed_regs): Revert previous change and make
5499         it const again.
5500         (initial_call_used_regs): Likewise.
5501         (initial_call_really_used_regs): Delete, reverting previous addition.
5502         (initial_reg_names): Likewise.
5503         (init_reg_sets): Revert previous change.
5504         (saved_fixed_regs): New.
5505         (saved_call_used_regs): New.
5506         (saved_call_really_used_regs): New.
5507         (saved_reg_names): New.
5508         (save_register_info): New.
5509         (restore_register_info): New.
5510         (init_reg_sets_1): Replace reset of register info with call to
5511         restore_register_info.
5512         * rtl.h (save_register_info): Declare.
5513         * toplev.c (backend_init): Call save_register_info.
5514
5515 2007-08-30  Laurynas Biveinis  <laurynas.biveinis@gmail.com>
5516
5517         * tree-ssa-propagate.c (set_rhs): Remove the copied annotation
5518         from the original statement.
5519
5520 2007-08-30  Chao-ying Fu  <fu@mips.com>
5521
5522         * c-lex.c (interpret_fixed): Declare.
5523         (interpret_float): Process _Fract and _Accum.
5524         (interpret_fixed): New function.
5525         * final.c (output_addr_const): Process CONST_FIXED.
5526         * simplify-rtx.c (simplify_const_unary_operation): Handle US_NEG.
5527         (simplify_binary_operation_1): Handle US_ASHIFT, SS_MULT, US_MULT,
5528         SS_DIV, US_DIV.
5529         (simplify_const_binary_operation): Handle SS_MULT, US_MULT, SS_DIV,
5530         US_DIV, US_ASHIFT.
5531         (simplify_immed_subreg): Support CONST_FIXED.
5532         Process MODE_FRACT, MODE_UFRACT, MODE_ACCUM, MODE_UACCUM.
5533         (simplify_subreg): Support CONST_FIXED.
5534
5535 2007-08-30  Andrew Pinski  <andrew_pinski@playstation.sony.com>
5536
5537         * config/rs6000/ppu_intrinsics.h: New file.
5538         * config.gcc (powerpc*-*-* <extra_headers>): Install
5539         ppu_intrinsics.h.
5540
5541 2007-08-30  Kenneth Zadeck <zadeck@naturalbridge.com>
5542
5543         * cfg.c (dump_flow_info): Change to also print entry and exit
5544         block info.
5545         * print-rtl.c (print_rtl_single): Allow to print rtl with
5546         -fdump-unnumbered.
5547         
5548 2007-08-30  Kenneth Zadeck <zadeck@naturalbridge.com>
5549
5550         * df-core.h (df_dump_region): New function.
5551         * df.h (df_dump_region): New function.
5552         * loop-invariant.c (find_defs): Add call to df_dump_region.
5553         * loop-iv.c (iv_analysis_loop_init): Changed call from df_dump to
5554         df_dump_region.
5555         
5556 2007-08-30  Jakub Jelinek  <jakub@redhat.com>
5557
5558         PR target/33168
5559         * config/rs6000/rs6000.c (rs6000_elf_in_small_data_p): Return
5560         true if any of the compare_section_name calls returned true,
5561         rather than if any returned false.
5562
5563 2007-08-30  Richard Guenther  <rguenther@suse.de>
5564
5565         PR tree-optimization/33199
5566         * tree-ssa-structalias.c (handle_lhs_call): New function.
5567         (find_func_aliases): In non-IPA mode make sure that for
5568         calls that return a pointer we add a constraint for the
5569         result to point to anything.
5570
5571 2007-08-30  Richard Guenther  <rguenther@suse.de>
5572
5573         * doc/invoke.texi (-mveclibabi): Document new target option.
5574         * config/i386/i386.opt (-mveclibabi): New target option.
5575         * config/i386/i386.c (ix86_veclib_handler): Handler for
5576         vectorization library support.
5577         (override_options): Handle the -mveclibabi option, initialize
5578         the vectorization library handler.
5579         (ix86_builtin_vectorized_function): As fallback call the
5580         vectorization library handler, if set.
5581         (ix86_veclibabi_acml): New static function for ACML ABI style
5582         vectorization support.
5583
5584 2007-08-30  Jakub Jelinek  <jakub@redhat.com>
5585
5586         * config/rs6000/rs6000.c (rs6000_emit_sync): For QI or HI mode
5587         used_m, even if it is 32-bit aligned, adjust used_m MEM to have
5588         SImode and update m.  Don't run gen_lowpart_common on arbitrary
5589         memory address, force it to register first.
5590
5591         PR middle-end/32758
5592         * dce.c (dce_process_block): Don't delete setters of
5593         artificially used registers.
5594
5595 2007-08-30  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
5596
5597         * config/s390/s390.md ("*add<mode>3_alc_carry1_cc",
5598         "*add<mode>3_alc_carry1_cconly", "*add<mode>3_alc_carry2_cc",
5599         "*add<mode>3_alc_carry2_cconly"): New insn definitions.
5600
5601 2007-08-30  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
5602
5603         * config/s390/s390.c (s390_expand_addcc): Emit canonical alc
5604         pattern.
5605         * config/s390/s390.md ("*add<mode>3_alc_cc", "*add<mode>3_alc",
5606         "addti3", "*adddi3_31z", "*scond<mode>"): Make alc pattern canonical.
5607
5608 2007-08-29  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
5609
5610         * system.h: Activate -Wcast-qual as warning-only.
5611
5612 2007-08-29  Paolo Bonzini  <bonzini@gnu.org>
5613
5614         PR target/33168
5615         * config/rs6000/rs6000.c (compare_section_name): New function.
5616         (rs6000_elf_in_small_data_p): Compare section prefixes instead
5617         of full name.
5618
5619 2007-08-29  Olivier Hainque  <hainque@adacore.com>
5620
5621         * xcoffout.c: #include debug.h.
5622         * Makefile.in (xcoffout.o): Add debug.h dependency.
5623
5624 2007-08-29  Uros Bizjak  <ubizjak@gmail.com>
5625
5626         * simplify-rtx.c (simplify_binary_operation_1) [VEC_SELECT]:
5627         Change CONST_VECTOR_ELT to XVECEXP in elem calculation.
5628
5629 2007-08-29  Richard Guenther  <rguenther@suse.de>
5630
5631         * tree-pretty-print.c (dump_generic_node): Print
5632         label DECL_UID as D.%u.
5633         * tree-dfa.c (dump_variable): Print DECL_UID as D.%u.
5634
5635 2007-08-29  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
5636
5637         * gcc/builtin-types.def (BT_FN_PTR_PTR_SIZE): New type.
5638         * gcc/builtins.def (BUILT_IN_REALLOC): New builtin.
5639
5640 2007-08-29  Douglas Gregor  <doug.gregor@gmail.com>
5641
5642         PR c++/33194
5643         * tree.c (build_type_attribute_qual_variant): Set canonical types
5644         on the final, unqualified attribute variant before building the
5645         qualified version.
5646
5647 2007-08-29  Jie Zhang  <jie.zhang@analog.com>
5648
5649         * config/bfin/bfin.c (bfin_expand_builtin): Fix the argument
5650         order of __builtin_bfin_cmplx_mac and __builtin_bfin_cmplx_msu.
5651
5652 2007-08-29  Jie Zhang  <jie.zhang@analog.com>
5653
5654         Revert
5655         2007-08-29  Jie Zhang  <jie.zhang@analog.com>
5656         * config/bfin/bfin.md (composev2hi): Put operands into vector
5657         with correct order.
5658
5659 2007-08-29  Jie Zhang  <jie.zhang@analog.com>
5660
5661         * config/bfin/bfin.md (composev2hi): Put operands into vector
5662         with correct order.
5663
5664 2007-08-29  Jie Zhang  <jie.zhang@analog.com>
5665
5666         * config/bfin/bfin.c (bfin_expand_call): Inline PLT with l1_text
5667         attribute when appropriate.
5668         (bfin_handle_l1_text_attribute): New.
5669         (bfin_handle_l1_data_attribute): New.
5670         (bfin_attribute_table): Add attributes: l1_text, l1_data,
5671         l1_data_A and l1_data_B.
5672         * doc/extend.texi (node Function Attributes): Document l1_text
5673         function attribute.
5674         (Variable Attributes): Add Blackfin subsection. Document l1_data,
5675         l1_data_A and l1_data_B variable attributes.
5676
5677 2007-08-28  Jie Zhang  <jie.zhang@analog.com>
5678
5679         * config/bfin/bfin.opt (minline-plt): Add.
5680         * config/bfin/bfin.c (bfin_expand_call): Inline PLT when emit
5681         call to global functions.
5682         * doc/invoke.texi (Option Summary): Mention -minline-plt.
5683         (Blackfin Options): Document -minline-plt.
5684
5685 2007-08-28  Nathan Sidwell  <nathan@codesourcery.com>
5686
5687         * config/m68k/m68k.c (m68k_get_function_kind): Assert we're never
5688         given a non-function.
5689         (m68k_ok_for_sibcall_p): Only sibcall functions of the same kind.
5690
5691 2007-08-28  DJ Delorie  <dj@redhat.com>
5692
5693         * config/sh/sh.c (sh_gimplify_va_arg_expr): Fix sh2a support.
5694
5695 2007-08-28  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
5696
5697         * system.h (CONST_CAST): Avoid union for gcc-4.0.x.
5698
5699 2007-08-28  Richard Guenther  <rguenther@suse.de>
5700
5701         * tree.h (struct tree_function_decl): Increase size of
5702         function_code bitfield.
5703
5704 2007-08-28  Nathan Sidwell  <nathan@codesourcery.com>
5705             Kazu Hirata  <kazu@codesourcery.com>
5706
5707         * gcc/config/m68k/linux.h
5708         (M68K_HONOR_TARGET_STRICT_ALIGNMENT): Redefine as 0.
5709         * config/m68k/m68k.c (TARGET_RETURN_IN_MEMORY): New.
5710         (m68k_return_in_memory): New.
5711         * gcc/config/m68k/m68k.h (M68K_HONOR_TARGET_STRICT_ALIGNMENT):
5712         New.
5713
5714 2007-08-28  Uros Bizjak  <ubizjak@gmail.com>
5715
5716         PR target/32661
5717         * simplify-rtx.c (simplify_binary_operation_1) [VEC_SELECT]:
5718         Simplify nested VEC_SELECT (with optional VEC_CONCAT operator as
5719         operand) when top VEC_SELECT extracts scalar element.
5720         * config/i386/sse.md (*vec_extract_v4si_mem): New pattern.
5721         (*vec_extract_v4sf_mem): Ditto.
5722
5723 2007-08-28  Jakub Jelinek  <jakub@redhat.com>
5724
5725         PR middle-end/32370
5726         * passes.c (init_optimization_passes): Move pass_df_finish
5727         after pass_postreload sublist.
5728
5729         PR rtl-optimization/33148
5730         * simplify-rtx.c (simplify_unary_operation_1): Only optimize
5731         (neg (lt X 0)) if X has scalar int mode.
5732
5733         PR debug/32914
5734         * dwarf2out.c (rtl_for_decl_init): If vector decl has CONSTRUCTOR
5735         initializer, use build_vector_from_ctor if possible to create
5736         VECTOR_CST out of it.  If vector initializer is not VECTOR_CST
5737         even after this, return NULL.
5738
5739 2007-08-28  Gabriel Dos Reis  <gdr@integrable-solutions.net>
5740
5741         * c-pretty-print.c (pp_c_constant): Handle COMPLEX_CST.
5742
5743 2007-08-28  Richard Guenther  <rguenther@suse.de>
5744
5745         * tree.h (DECL_DISREGARD_INLINE_LIMITS): New.
5746         (struct tree_function_decl): Make function_code a bitfield.
5747         Add disregard_inline_limits flag.
5748         * cgraphunit.c (cgraph_process_new_functions): Check
5749         DECL_DISREGARD_INLINE_LIMITS instead of disregard_inline_limits_p.
5750         (cgraph_preserve_function_body_p): Likewise.
5751         * ipa-inline.c (compute_inline_parameters): Likewise.
5752         * c-decl.c (finish_function): Set DECL_DISREGARD_INLINE_LIMITS
5753         for GNU C extern inline functions.
5754         (merge_decls): Merge DECL_DISREGARD_INLINE_LIMITS.
5755         * tree-inline.c (disregard_inline_limits_p): Remove.
5756         * tree-inline.h (disregard_inline_limits_p): Likewise.
5757         * c-common.c (handle_always_inline_attribute): Set
5758         DECL_DISREGARD_INLINE_LIMITS.
5759         * langhooks.c (add_builtin_function): Verify the function code
5760         fits in the bitfield.
5761
5762 2007-08-28  Mircea Namolaru  <namolaru@il.ibm.com>
5763             Vladimir Yanovsky  <yanov@il.ibm.com>
5764             Revital Eres  <eres@il.ibm.com>
5765             Andrey Belevantsev  <abel@ispras.ru>
5766
5767         * config/spu/spu.md: Recognize doloop pattern when -fmodulo-sched
5768         is set.
5769         * modulo-sched.c: Add documentation regarding do-loop.
5770         (doloop_register_get): Change number of arguments to support
5771         the new do-loop pattern and check whether COUNT_REG has no other
5772         occurences in the loop besides in the control part.
5773         (duplicate_insns_of_cycles): Do not duplicate the insn which
5774         changes count_reg as it is already adjusted.
5775         (generate_prolog_epilog): New argument to support the new
5776         do-loop pattern.  Change the subtract instruction to use
5777         expand_simple_binop.  Call duplicate_insns_of_cycles with new
5778         argument.
5779         (sms_schedule): Call doloop_register_get and
5780         generate_prolog_epilog with new argument.  Do not handle loops
5781         with single sets insns with subreg in their lhs.
5782         * loop-doloop.c (doloop_optimize): Support for another do-loop
5783         pattern.
5784         (doloop_condition_get): Gets an instruction instead of a pattern
5785         and change the return condition when the do-loop pattern is
5786         not parallel.
5787         * ddg.c (create_ddg_dep_from_intra_loop_link): Handle only reg
5788         deps when considering to not create edges.
5789
5790 2007-08-27  Alexandre Oliva  <aoliva@redhat.com>
5791
5792         * doc/extend.texi (gnu_inline funtion attribute): Document C++
5793         behavior.
5794
5795 2007-08-27  Jason Merrill  <jason@redhat.com>
5796
5797         PR c++/31337
5798         * gimplify.c (gimplify_modify_expr): Discard the assignment of 
5799         zero-sized types after calling gimplify_modify_expr_rhs.
5800
5801 2007-08-27  Sandra Loosemore  <sandra@codesourcery.com>
5802
5803         * regclass.c (init_reg_autoinc): Fix typo.
5804
5805 2007-08-27  Daniel Berlin  <dberlin@dberlin.org>
5806         
5807         Fix PR tree-optimization/33173
5808         * tree-ssa-alias.c (find_used_portions): Fix reversed test.
5809
5810 2007-08-27  H.J. Lu  <hongjiu.lu@intel.com>
5811
5812         PR target/31385
5813         * config/i386/i386.h (VALID_DFP_MODE_P): New.
5814         * config/i386/i386.c (ix86_hard_regno_mode_ok): Allow DFP in
5815         GPR.
5816
5817 2007-08-27  Sandra Loosemore  <sandra@codesourcery.com>
5818             David Ung  <davidu@mips.com>
5819             Nigel Stephens <nigel@mips.com>
5820
5821         Separate target-specific initialization from general
5822         back-end initialization.
5823
5824         * toplev.c (init_alignments): New, split out from...
5825         (process_options): ...here.
5826         (backend_init_target): New, split out from...
5827         (backend_init): ...here.
5828         (lang_dependent_init_target): New, split out from...
5829         (lang_dependent_init): ...here.
5830         (target_reinit): New.
5831         * toplev.h (target_reinit): Declare.
5832         * expr.c (init_expr_target): Renamed from init_expr_once, since it
5833         now can be called more than once.  Update comments.
5834         * expr.h (init_expr_target): Likewise.
5835         * alias.c (init_alias_target): Renamed from init_alias_once, since it
5836         now can be called more than once.  Explicitly zero
5837         static_reg_base_value.
5838         * emit-rtl.c (init_emit_regs): New, split out from...
5839         (init_emit_once): Here.
5840         * regclass.c (initial_fixed_regs, initial_call_used_regs): Make
5841         non-const, so that changes from command-line arguments can overwrite
5842         values provided by the static initializers.
5843         (initial_call_really_used_regs): New, used similarly to the above.
5844         (initial_reg_names): Likewise.
5845         (last_mode_for_init_move_cost): Promoted function-local static to
5846         file-scope static to make it accessible outside init_move_cost.
5847         (init_reg_sets): Do not initialize fixed_regs and call_used_regs yet.
5848         Do not initialize inv_reg_alloc_order yet, either.  Do initialize
5849         reg_names since it is needed for parsing command-line options.
5850         (init_move_cost): Use last_mode_for_init_move_cost instead of
5851         function-local static.
5852         (init_reg_sets_1): Initialize fixed_regs, call_used_regs, and
5853         call_really_used_regs now.  Reinitialize reg_names.  Also
5854         initialize inv_reg_alloc_order.  Zero reg_class_subunion and
5855         reg_class_superunion.  Clear losing_caller_save_reg_set.
5856         Preserve global registers if called more than once.  Reset
5857         move cost, may_move_in_cost, may_move_out_cost, and
5858         last_mode_for_init_move_cost.
5859         (init_reg_modes_target): Renamed from init_reg_modes_once, since it
5860         can now be invoked more than once.  Update comments.
5861         (init_regs): Update comments.
5862         (fix_register): Update initial_fixed_regs, initial_call_used_regs,
5863         and initial_call_really_used_regs, instead of the non-initial 
5864         variables.  This allows us to save the command-line register settings
5865         after target reinitialization.
5866         (init_reg_autoinc): Zero forbidden_inc_dec_classes.
5867         * rtl.h (init_emit_regs): Declare.
5868         (init_reg_modes_target, init_alias_target): Renamed as described
5869         above.
5870         * reload1.c (init_reload): Update comments.
5871         * optabs.c (init_optabs): Likewise.
5872         * cfgloopanal.c (init_set_costs): Explicitly zero target_avail_regs.
5873         
5874 2007-08-26  Chao-ying Fu  <fu@mips.com>
5875
5876         * rtl.h (XCNMPFV): Preserve const-ness of parameters through use of
5877         __typeof().
5878
5879 2007-08-26  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
5880
5881         * alias.c (memory_modified_1, memory_modified_in_insn_p):
5882         Constify.
5883         * basic-block.h (tree_predicted_by_p, rtl_predicted_by_p):
5884         Likewise.
5885         * bb-reorder.c (copy_bb_p): Likewise.
5886         * cfghooks.c (can_remove_branch_p, can_merge_blocks_p,
5887         predicted_by_p, can_duplicate_block_p, block_ends_with_call_p,
5888         block_ends_with_condjump_p): Likewise.
5889         * cfghooks.h (can_remove_branch_p, can_merge_blocks_p,
5890         predicted_by_p, can_duplicate_block_p, block_ends_with_call_p,
5891         block_ends_with_condjump_p): Likewise.
5892         * cfglayout.c (cfg_layout_can_duplicate_bb_p): Likewise.
5893         * cfgrtl.c (can_delete_note_p, can_delete_label_p,
5894         rtl_can_merge_blocks, cfg_layout_can_merge_blocks_p,
5895         rtl_block_ends_with_call_p, rtl_block_ends_with_condjump_p,
5896         need_fake_edge_p, rtl_can_remove_branch_p): Likewise.
5897         * dbxout.c (dbx_debug_hooks, xcoff_debug_hooks): Use
5898         debug_true_const_tree instad of debug_true_tree.
5899         * debug.c (do_nothing_debug_hooks): Likewise.
5900         * debug.h (ignore_block, debug_true_const_tree): Constify.
5901         * dwarf2out.c (stack_adjust_offset, clobbers_queued_reg_save,
5902         dwarf2out_ignore_block, is_pseudo_reg, is_tagged_type,
5903         decl_ultimate_origin, block_ultimate_origin, lookup_decl_loc,
5904         same_dw_val_p, add_ranges, is_subrange_type, type_is_enum,
5905         dbx_reg_number, is_based_loc, field_type,
5906         simple_type_align_in_bits, simple_decl_align_in_bits,
5907         simple_type_size_in_bits, field_byte_offset, insert_float,
5908         type_tag, member_declared_type, is_redundant_typedef,
5909         secname_for_decl, is_inlined_entry_point): Likewise.
5910         * emit-rtl.c (const_next_insn, const_previous_insn,
5911         const_next_nonnote_insn, const_prev_nonnote_insn,
5912         const_next_real_insn, const_prev_real_insn,
5913         const_next_active_insn, const_prev_active_insn, const_next_label,
5914         const_prev_label): Likewise.
5915         * except.h (lookup_stmt_eh_region_fn, lookup_stmt_eh_region):
5916         Likewise.
5917         * haifa-sched.c (may_trap_exp, haifa_classify_insn,
5918         find_set_reg_weight, no_real_insns_p, find_set_reg_weight,
5919         sched_insn_is_legitimate_for_speculation_p): Likewise.
5920         * jump.c (reversed_comparison_code_parts,
5921         reversed_comparison_code, reversed_comparison, condjump_label):
5922         Likewise.
5923         * predict.c (rtl_predicted_by_p, tree_predicted_by_p): Likewise.
5924         * reg-stack.c (stack_regs_mentioned_p, stack_regs_mentioned):
5925         Likewise.
5926         * rtl.h (const_previous_insn, const_next_insn,
5927         const_prev_nonnote_insn, const_next_nonnote_insn,
5928         const_prev_real_insn, const_next_real_insn,
5929         const_prev_active_insn, const_next_active_insn, const_prev_label,
5930         const_next_label, modified_between_p, modified_in_p,
5931         const_note_storeskeep_with_call_p, condjump_label,
5932         reversed_comparison, reversed_comparison_code,
5933         reversed_comparison_code_parts, memory_modified_in_insn_p,
5934         stack_regs_mentioned): Likewise.
5935         * rtlanal.c (modified_between_p, modified_in_p, const_note_stores,
5936         keep_with_call_p): Likewise.
5937         * sched-deps.c (deps_may_trap_p, sched_get_condition,
5938         conditions_mutex_p, sched_insns_conditions_mutex_psd_next_list,
5939         sd_lists_size, sd_lists_empty_p): Likewise.
5940         * sched-int.h (sched_insns_conditions_mutex_p,
5941         haifa_classify_insn, no_real_insns_p,
5942         sched_insn_is_legitimate_for_speculation_p, sd_next_list,
5943         sd_lists_size, sd_lists_empty_p): Likewise.
5944         * sdbout.c (sdb_debug_hooks): Likewise.
5945         * tree-cfg.c (tree_can_merge_blocks_p, is_ctrl_altering_stmt,
5946         stmt_ends_bb_p, tree_can_remove_branch_p, tree_can_duplicate_bb_p,
5947         -tree_block_ends_with_call_p, tree_block_ends_with_condjump_p):
5948         Likewise.
5949         * tree-eh.c (lookup_stmt_eh_region_fn, lookup_stmt_eh_region,
5950         tree_can_throw_internal): Likewise.
5951         * tree-flow-inline.h (phi_nodes): Likewise.
5952         * tree-flow.h (phi_nodesstmt_ends_bb_p, is_ctrl_altering_stmt,
5953         tree_can_throw_internal, lookup_stmt_eh_region): Likewise.
5954         * tree-gimple.c (const_get_call_expr_in): Likewise.
5955         * tree-gimple.h (const_get_call_expr_in): Likewise.
5956         * tree.c (const_lookup_attribute, attribute_list_equal,
5957         attribute_list_contained): Likewise.
5958         * tree.h (attribute_list_equal, attribute_list_contained,
5959         const_lookup_attribute): Likewise.
5960         * vmsdbgout.c (vmsdbgout_ignore_block): Likewise.
5961
5962 2007-08-26  Bernhard Fischer  <aldot@gcc.gnu.org>
5963
5964         * tree-ssa-sccvn.c, tree-ssa-sccvn.h, tree-vn.c,
5965         tree-ssa-pre.c: Remove unnecessary trailing whitespace.
5966
5967 2007-08-26  H.J. Lu  <hongjiu.lu@intel.com>
5968
5969         PR target/32991
5970         * config/alpha/constraints.md: Delete "svn:mime-type" property
5971         with svn propdel "svn:mime-type".
5972
5973 2007-08-26  H.J. Lu  <hongjiu.lu@intel.com>
5974
5975         PR middle-end/33181
5976         * ifcvt.c (noce_get_alt_condition): Make sure that the previous
5977         non NOTE insn doesn't cross basic block.
5978         (noce_try_abs): Likewise.
5979         (noce_process_if_block): Likewise.
5980
5981 2007-08-26  David Edelsohn  <edelsohn@gnu.org>
5982
5983         PR target/33151
5984         * config/rs6000/predicates.md (offsettable_mem_operand): Memory
5985         operand without auto-inc-dec.
5986         * config/rs6000/rs6000.md (floatsidf2_internal): Use
5987         offsettable_mem_operand.
5988         (floatunssidf2_internal): Same.
5989         (fix_truncdfsi2_internal): Same.
5990         (floatsidf_ppc64): Same.
5991         (floatunssidf_ppc64): Same.
5992         (fix_trunctfsi2_internal): Same.
5993
5994 2007-08-26  Bernhard Fischer  <aldot@gcc.gnu.org>
5995
5996         PR bootstrap/30620
5997         * Makefile.in (libbackend.o): Add gcov-iov.h dependency and
5998         pass defines needed for version.c.
5999
6000 2007-08-25  Joseph Myers  <joseph@codesourcery.com>
6001
6002         * configure.ac (--debug-prefix-map check): Change assembler
6003         version presumed to have feature to 2.18.
6004         * configure: Regenerate.
6005
6006 2007-08-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
6007
6008         * c-common.c (vector_types_convertible_p,
6009         decl_with_nonnull_addr_p, c_promoting_integer_type_p,
6010         self_promoting_args_p): Constify.
6011         * c-common.h (has_c_linkage, decl_with_nonnull_addr_p,
6012         c_promoting_integer_type_p, self_promoting_args_p,
6013         anon_aggr_type_p, vector_types_convertible_p): Likewise.
6014         * c-decl.c (anon_aggr_type_p): Likewise.
6015         * * c-dump.c (dump_stmt): Likewise.
6016         * c-objc-common.c (has_c_linkage): Likewise.
6017         * c-tree.h (same_translation_unit_p): Likewise.
6018         * c-typeck.c (null_pointer_constant_p,
6019         tagged_types_tu_compatible_p, function_types_compatible_p,
6020         type_lists_compatible_p, lvalue_or_else, lvalue_p,
6021         comptypes_internal, struct tagged_tu_seen_cache,
6022         same_translation_unit_p, alloc_tagged_tu_seen_cache,
6023         c_size_in_bytes): Likewise.
6024         * ggc-common.c (compare_ptr_data, hash_descriptor, eq_descriptor,
6025         hash_ptr, eq_ptr): Likewise.
6026         * langhooks-def.h (lhd_decl_ok_for_sibcall,
6027         LANG_HOOKS_OMP_PRIVATIZE_BY_REFERENCE): Likewise.
6028         * langhooks.c (lhd_decl_ok_for_sibcall): Likewise.
6029         * langhooks.h (ok_for_sibcall, omp_privatize_by_reference):
6030         Likewise.
6031         * optabs.c (optab_for_tree_code): Likewise.
6032         * optabs.h (optab_for_tree_code): Likewise.
6033         * rtl.h (simplify_rtx): Likewise.
6034         * simplify-rtx.c (simplify_rtx): Likewise.
6035         * tree-dump.c (queue, queue_and_dump_index, queue_and_dump_type,
6036         dump_flag, dump_node): Likewise.
6037         * tree-dump.h (struct dump_info, dump_stmt, queue_and_dump_index,
6038         queue_and_dump_type, dump_flag): Likewise.
6039         * tree-flow.h (vect_can_force_dr_alignment_p): Likewise.
6040         * tree-pass.h (dump_node): Likewise.
6041         * tree-vectorizer.c (vect_can_force_dr_alignment_p,
6042         supportable_narrowing_operation): Likewise.
6043         * tree-vectorizer.h (vect_can_force_dr_alignment_p,
6044         supportable_narrowing_operation): Likewise.
6045         * tree-vrp.c (needs_overflow_infinity, supports_overflow_infinity,
6046         is_negative_overflow_infinity, is_positive_overflow_infinity,
6047         is_overflow_infinity, vrp_val_is_max, vrp_val_is_min,
6048         nonnull_arg_p, get_value_range, vrp_operand_equal_p,
6049         update_value_range, add_equivalence, ssa_name_nonnegative_p,
6050         ssa_name_nonzero_p, fp_predicate): Likewise.
6051         * tree.c (auto_var_in_fn_p, empty_body_p): Likewise.
6052         * tree.h (empty_body_p, auto_var_in_fn_p, ssa_name_nonzero_p,
6053         ssa_name_nonnegative_p): Likewise.
6054
6055 2007-08-25  Hans Kester  <hans.kester@ellips.nl>
6056
6057         * config.gcc : Add x86_64-elf target.
6058
6059 2007-08-25  Jakub Jelinek  <jakub@redhat.com>
6060
6061         * expr.c (store_expr): Fix order of store_by_pieces arguments.
6062
6063 2007-08-24  Sandra Loosemore  <sandra@codesourcery.com>
6064             Nigel Stephens <nigel@mips.com>
6065
6066         PR target/11787
6067
6068         * doc/tm.texi (SET_RATIO, SET_BY_PIECES_P): Document new macros.
6069         (STORE_BY_PIECES_P): No longer applies to __builtin_memset.
6070         * expr.c (SET_BY_PIECES_P): Define.
6071         (can_store_by_pieces, store_by_pieces): Add MEMSETP argument; use
6072         it to decide whether to use SET_BY_PIECES_P or STORE_BY_PIECES_P.
6073         (store_expr): Pass MEMSETP argument to can_store_by_pieces and
6074         store_by_pieces.
6075         * expr.h (SET_RATIO): Define.
6076         (can_store_by_pieces, store_by_pieces): Update prototypes.
6077         * builtins.c (expand_builtin_memcpy): Pass MEMSETP argument to
6078         can_store_by_pieces/store_by_pieces.
6079         (expand_builtin_memcpy_args): Likewise.
6080         (expand_builtin_strncpy): Likewise.
6081         (expand_builtin_memset_args): Likewise.  Also remove special case
6082         for optimize_size so that can_store_by_pieces/SET_BY_PIECES_P can
6083         decide what to do instead.
6084         * value-prof.c (tree_stringops_transform): Pass MEMSETP argument
6085         to can_store_by_pieces.
6086
6087         * config/sh/sh.h (SET_BY_PIECES_P): Clone from STORE_BY_PIECES_P.
6088         * config/s390/s390.h (SET_BY_PIECES_P): Likewise.
6089
6090         * config/mips/mips.opt (mmemcpy): Change from Var to Mask.
6091         * config/mips/mips.c (override_options): Make -Os default to -mmemcpy.
6092         * config/mips/mips.h (MIPS_CALL_RATIO): Define.
6093         (MOVE_RATIO, CLEAR_RATIO, SET_RATIO): Define.
6094         (STORE_BY_PIECES_P): Define.
6095
6096 2007-08-24  Tom Tromey  <tromey@redhat.com>
6097
6098         * varpool.c (varpool_last_needed_node): Fix comment typo.
6099         * c-decl.c (duplicate_decls): Fix comment typo.
6100         (clone_underlying_type): Update comment.
6101
6102 2007-08-24  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
6103
6104         * config/alpha/alpha.c (alpha_mangle_type, decl_has_samegp,
6105         alpha_in_small_data_p, alpha_split_complex_arg,
6106         alpha_stdarg_optimize_hook, TARGET_ASM_CAN_OUTPUT_MI_THUNK):
6107         Constify.
6108         * config/arm/arm-protos.h (arm_mangle_type): Likewise.
6109         * config/arm/arm.c (arm_comp_type_attributes, arm_mangle_type):
6110         Likewise.
6111         * config/bfin/bfin.c (funkind, bfin_comp_type_attributes,
6112         TARGET_ASM_CAN_OUTPUT_MI_THUNK): Likewise.
6113         * config/darwin-protos.h (darwin_binds_local_p): Likewise.
6114         * config/darwin.c (darwin_binds_local_p): Likewise.
6115         * config/frv/frv.c (frv_string_begins_with, frv_in_small_data_p):
6116         Likewise.
6117         * config/i386/i386-protos.h (i386_pe_binds_local_p,
6118         i386_pe_valid_dllimport_attribute_p): Likewise.
6119         * config/i386/i386.c (ix86_function_regparm,
6120         ix86_comp_type_attributes, ix86_ms_bitfield_layout_p,
6121         x86_can_output_mi_thunk, ix86_mangle_type,
6122         TARGET_USE_BLOCKS_FOR_CONSTANT_P): Likewise.
6123         * config/i386/winnt.c (i386_pe_valid_dllimport_attribute_p,
6124         i386_pe_binds_local_p): Likewise.
6125         * config/ia64/ia64.c
6126         (ia64_first_cycle_multipass_dfa_lookahead_guard_spec,
6127         ia64_needs_block_p, ia64_in_small_data_p, ia64_mangle_type,
6128         ia64_invalid_conversion, ia64_invalid_unary_op,
6129         ia64_invalid_binary_op, TARGET_ASM_CAN_OUTPUT_MI_THUNK):
6130         Likewise.
6131         * config/m32c/m32c.c (m32c_comp_type_attributes): Likewise.
6132         * config/m32r/m32r.c (m32r_in_small_data_p): Likewise.
6133         * config/m68k/m68k.c (TARGET_ASM_CAN_OUTPUT_MI_THUNK): Likewise.
6134         * config/mips/mips.c (mips_use_blocks_for_constant_p,
6135         mips_in_small_data_p, mips_use_anchors_for_symbol_p,
6136         mips_comp_type_attributes, TARGET_ASM_CAN_OUTPUT_MI_THUNK,
6137         mips_near_type_p, mips_far_type_p, mips_global_symbol_p,
6138         mips_symbol_binds_local_p, mips_classify_symbol): Likewise.
6139         * config/pa/pa.c (pa_commutative_p): Likewise.
6140         * config/rs6000/rs6000-protos.h (rs6000_elf_in_small_data_p):
6141         Likewise.
6142         * config/rs6000/rs6000.c (rs6000_invalid_within_doloop,
6143         rs6000_ms_bitfield_layout_p, rs6000_mangle_type,
6144         rs6000_use_blocks_for_constant_p,
6145         rs6000_vector_alignment_reachable, rs6000_is_opaque_type,
6146         invalid_arg_for_unprototyped_fn, TARGET_ASM_CAN_OUTPUT_MI_THUNK,
6147         TARGET_SPLIT_COMPLEX_ARG, rs6000_elf_in_small_data_p): Likewise.
6148         * config/s390/s390.c (s390_mangle_type,
6149         TARGET_ASM_CAN_OUTPUT_MI_THUNK, TARGET_INVALID_WITHIN_DOLOOP):
6150         Likewise.
6151         * config/score/score.c (TARGET_ASM_CAN_OUTPUT_MI_THUNK,
6152         th_in_small_data_p): Likewise.
6153         * config/sh/sh.c (sh_ms_bitfield_layout_p,
6154         sh_dwarf_calling_convention, TARGET_ASM_CAN_OUTPUT_MI_THUNK):
6155         Likewise.
6156         * config/sparc/sparc.c (sparc_can_output_mi_thunk,
6157         sparc_mangle_type): Likewise.
6158         * config/spu/spu.c (spu_vector_alignment_reachable): Likewise.
6159         * config/xtensa/xtensa.c (TARGET_SPLIT_COMPLEX_ARG): Likewise.
6160         * emit-rtl.c (const_fixed_htab_hash, const_fixed_htab_eq):
6161         Likewise.
6162         * hooks.c (hook_bool_mode_const_rtx_false,
6163         hook_bool_mode_const_rtx_true,
6164         hook_bool_const_tree_hwi_hwi_const_tree_false,
6165         hook_bool_const_tree_hwi_hwi_const_tree_true,
6166         hook_int_const_tree_0, hook_int_const_tree_const_tree_1,
6167         hook_constcharptr_const_tree_null,
6168         hook_constcharptr_const_rtx_null,
6169         hook_constcharptr_const_tree_const_tree_null,
6170         hook_constcharptr_int_const_tree_null,
6171         hook_constcharptr_int_const_tree_const_tree_null): New.
6172         (hook_bool_mode_rtx_false, hook_bool_mode_rtx_true,
6173         hook_bool_tree_hwi_hwi_tree_false,
6174         hook_bool_tree_hwi_hwi_tree_true, hook_int_tree_0,
6175         hook_int_tree_tree_1, hook_constcharptr_tree_null,
6176         hook_constcharptr_rtx_null, hook_constcharptr_tree_tree_null,
6177         hook_constcharptr_int_tree_null,
6178         hook_constcharptr_int_tree_tree_null): Delete.
6179         (default_can_output_mi_thunk_no_vcall): Constify.
6180         * hooks.h (hook_bool_mode_rtx_false, hook_bool_mode_rtx_true,
6181         hook_bool_tree_hwi_hwi_tree_false,
6182         hook_bool_tree_hwi_hwi_tree_true, hook_int_tree_0,
6183         hook_int_tree_tree_1, hook_constcharptr_tree_null,
6184         hook_constcharptr_rtx_null, hook_constcharptr_tree_tree_null,
6185         hook_constcharptr_int_tree_null,
6186         hook_constcharptr_int_tree_tree_null): Delete.
6187         (hook_bool_mode_const_rtx_false, hook_bool_mode_const_rtx_true,
6188         hook_bool_const_tree_hwi_hwi_const_tree_false,
6189         hook_bool_const_tree_hwi_hwi_const_tree_true,
6190         hook_int_const_tree_0, hook_int_const_tree_const_tree_1,
6191         hook_constcharptr_const_tree_null,
6192         hook_constcharptr_const_rtx_null,
6193         hook_constcharptr_const_tree_const_tree_null,
6194         hook_constcharptr_int_const_tree_null,
6195         hook_constcharptr_int_const_tree_const_tree_null): New.
6196         (default_can_output_mi_thunk_no_vcall): Constify.
6197         * integrate.c (function_attribute_inlinable_p): Likewise.
6198         * integrate.h (function_attribute_inlinable_p): Likewise.
6199         * jump.c (rtx_renumbered_equal_p): Likewise.
6200         * output.h (decl_readonly_section, categorize_decl_for_section,
6201         default_use_anchors_for_symbol_p, default_binds_local_p,
6202         default_binds_local_p_1): Likewise.
6203         * rtl.h (rtx_renumbered_equal_p, decl_default_tls_model):
6204         Likewise.
6205         * target-def.h (TARGET_ASM_CAN_OUTPUT_MI_THUNK,
6206         TARGET_VALID_DLLIMPORT_ATTRIBUTE_P, TARGET_VECTOR_OPAQUE_P,
6207         TARGET_COMMUTATIVE_P, TARGET_USE_BLOCKS_FOR_CONSTANT_P,
6208         TARGET_COMP_TYPE_ATTRIBUTES,
6209         TARGET_FUNCTION_ATTRIBUTE_INLINABLE_P,
6210         TARGET_MS_BITFIELD_LAYOUT_P, TARGET_MANGLE_TYPE,
6211         TARGET_IN_SMALL_DATA_P, TARGET_INVALID_CONVERSION,
6212         TARGET_INVALID_UNARY_OP, TARGET_INVALID_BINARY_OP,
6213         TARGET_DWARF_CALLING_CONVENTION): Likewise.
6214         * target.h (can_output_mi_thunk, needs_block_p,
6215         first_cycle_multipass_dfa_lookahead_guard_spec,
6216         vector_alignment_reachable, comp_type_attributes,
6217         function_attribute_inlinable_p, ms_bitfield_layout_p, mangle_type,
6218         commutative_p, use_blocks_for_constant_p,
6219         use_anchors_for_symbol_p, in_small_data_p, binds_local_p,
6220         vector_opaque_p, dwarf_calling_convention, stdarg_optimize_hook,
6221         invalid_within_doloop, valid_dllimport_attribute_p,
6222         split_complex_arg, invalid_arg_for_unprototyped_fn,
6223         invalid_conversion, invalid_unary_op, invalid_binary_op):
6224         Likewise.
6225         * targhooks.c (default_invalid_within_doloop,
6226         hook_invalid_arg_for_unprototyped_fn,
6227         default_builtin_vector_alignment_reachable): Likewise.
6228         (hook_bool_rtx_commutative_p): Delete.
6229         (hook_bool_const_rtx_commutative_p): New.
6230         * targhooks.h (default_invalid_within_doloop,
6231         default_builtin_vector_alignment_reachable,
6232         hook_invalid_arg_for_unprototyped_fn): Constify.
6233         (hook_bool_rtx_commutative_p): Delete.
6234         (hook_bool_const_rtx_commutative_p): New.
6235         * varasm.c (bss_initializer_p, decl_default_tls_model,
6236         categorize_decl_for_section, decl_readonly_section,
6237         default_use_anchors_for_symbol_p, default_binds_local_p,
6238         default_binds_local_p_1): Constify.
6239
6240 2007-08-24  Jie Zhang  <jie.zhang@analog.com>
6241
6242         * config/bfin/bfin.h (TARGET_CPU_CPP_BUILTINS): Define
6243         __NO_BUILTIN if -fno-builtin.
6244
6245 2007-08-24  Jie Zhang  <jie.zhang@analog.com>
6246
6247         * config/bfin/bfin.c (print_operand): Report error instead of
6248         ICE for wrong operand.
6249
6250 2007-08-24  Michael Matz  <matz@suse.de>
6251
6252         * Makefile.in (GTFILES_H): Use $(patsubst) instead of $(subst).
6253
6254 2007-08-24  Richard Guenther  <rguenther@suse.de>
6255
6256         PR middle-end/33166
6257         * tree-ssa.c (useless_type_conversion_p): Split into a
6258         recursive and a non-recursive part.
6259         (useless_type_conversion_p_1): New function.
6260         * tree-ssa-ccp.c (fold_stmt_r): Make sure that the result
6261         from maybe_fold_offset_to_reference is trivially convertible
6262         to the desired type before doing the simplification.
6263
6264 2007-08-24  Jakub Jelinek  <jakub@redhat.com>
6265
6266         * expr.c (store_expr): Optimize initialization of an array
6267         with STRING_CST.
6268         * expr.h (builtin_strncpy_read_str): New prototype.
6269         * builtins.c (builtin_strncpy_read_str): Remove prototype.
6270         No longer static.
6271
6272 2007-08-24  Uros Bizjak  <ubizjak@gmail.com>
6273
6274         PR middle-end/33157
6275         * ifcvt.c (noce_find_if_block): Do not clear if_info.cond_earliest
6276         field when initializing if_info structure.
6277
6278 2007-08-24  Richard Guenther  <rguenther@suse.de>
6279
6280         * Makefile.in (tree-inline.o): Add $(TARGET_H) and $(INTEGRATE_H)
6281         dependencies.
6282         * c-objc-common.c (c_cannot_inline_tree_fn): Remove.
6283         * langhooks.c (lhd_tree_inlining_cannot_inline_tree_fn): Likewise.
6284         * tree-inline.c (inlinable_function_p): Fold in common parts of
6285         the cannot_inline_tree_fn langhook.
6286         * langhooks-def.h (lhd_tree_inlining_cannot_inline_tree_fn): Remove.
6287         (LANG_HOOKS_TREE_INLINING_CANNOT_INLINE_TREE_FN): Likewise.
6288         (LANG_HOOKS_TREE_INLINING_INITIALIZER): Remove initializer for
6289         cannot_inline_tree_fn langhook.
6290         * langhooks.h (struct lang_hooks_for_tree_inlining): Remove
6291         cannot_inline_tree_fn member.
6292
6293 2007-08-24  Richard Guenther  <rguenther@suse.de>
6294
6295         * expr.c (get_inner_reference): Do computation of bitoffset
6296         from offset in a way we can detect overflow reliably.
6297
6298 2007-08-24  Jie Zhang  <jie.zhang@analog.com>
6299
6300         * crtstuff.c (USE_PT_GNU_EH_FRAME): Don't define for uClibc.
6301
6302 2007-08-24  Jie Zhang  <jie.zhang@analog.com>
6303
6304         * config/bfin/bfin.opt (mfast-fp): Add.
6305         * config/bfin/linux.h (LINK_GCC_C_SEQUENCE_SPEC): Let
6306         libbffastfp override libgcc if -mfast-fp.
6307         * config/bfin/bfin.h (LINK_GCC_C_SEQUENCE_SPEC): Likewise.
6308         * doc/invoke.texi (Option Summary): Mention -mfast-fp.
6309         (Blackfin Options): Document -mfast-fp.
6310
6311 2007-08-24  Jakub Jelinek  <jakub@redhat.com>
6312
6313         PR tree-optimization/32573
6314         PR middle-end/32946
6315         * tree-data-ref.c (initialize_data_dependence_relation): Clear
6316         DDR_SUBSCRIPTS, DDR_DIR_VECTS and DDR_DIST_VECTS at the beginning.
6317         (finalize_ddr_dependent): Clear DDR_SUBSCRIPTS after freeing it.
6318         (build_classic_dist_vector): Return false rather than true if
6319         DDR_ARE_DEPENDENT is non-NULL at the beginning.  Return false
6320         if either subscript_dependence_tester_1 or build_classic_dist_vector_1
6321         returned false.  Don't call save_dist_v before calling
6322         build_classic_dist_vector_1.
6323         (free_dependence_relation): Don't guard freeing DDR_SUBSCRIPTS
6324         with NULL DDR_ARE_DEPENDENT.  Also free DDR_DIST_VECTS and/or
6325         DDR_DIR_VECTS vectors.
6326
6327 2007-08-23  Brian Sidebotham  <brian.sidebotham@gmail.com>
6328
6329         * configure.ac (leb128): Modify sed statement to work with any
6330         binutils version string.
6331         * configure: Regenerate
6332
6333 2007-08-23  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
6334
6335         * config/arc/arc-protos.h arc_select_cc_mode, gen_compare_reg):
6336         Wrap in RTX_CODE macro guard.
6337         * config/arm/pe.c (arm_dllexport_p, arm_dllimport_p,
6338         arm_dllexport_name_p, arm_dllimport_name_p, arm_mark_dllexport,
6339         arm_mark_dllimport, arm_pe_encode_section_info,
6340         arm_pe_unique_section): Use ISO-C function declarations.
6341         * config/c4x/c4x-c.c (c4x_parse_pragma, c4x_pr_CODE_SECTION,
6342         c4x_pr_DATA_SECTION, c4x_pr_FUNC_IS_PURE,
6343         c4x_pr_FUNC_NEVER_RETURNS, c4x_pr_INTERRUPT, c4x_pr_ignored):
6344         Likewise.
6345         * config/iq2000/iq2000.h (ASM_OUTPUT_SKIP): Fix format warning.
6346         * config/m68hc11/m68hc11.h (ASM_OUTPUT_EXTERNAL): Undef before
6347         defining.
6348         * config/mips/mips.h (ASM_DECLARE_OBJECT_NAME): Fix format
6349         warnings.
6350         * config/mn10300/mn10300.h (OUTPUT_ADDR_CONST_EXTRA): Likewise.
6351         * config/pdp11/pdp11.c (pdp11_output_function_epilogue): Likewise.
6352         (register_move_cost): Use ISO-C function declarations.
6353         * config/pdp11/pdp11.h (PRINT_OPERAND): Fix format warnings.
6354         * config/score/score-protos.h (score_declare_object): Add
6355         ATTRIBUTE_PRINTF_4.
6356         * config/score/score.h (ASM_DECLARE_OBJECT_NAME): Fix format
6357         warnings.
6358         * final.c (profile_function): Avoid empty if-bodies.
6359         
6360         
6361         * calls.c (must_pass_in_stack_var_size,
6362         must_pass_in_stack_var_size_or_pad): Constify.
6363         * config/alpha/alpha-protos.h (function_value): Likewise.
6364         * config/alpha/alpha.c (alpha_return_in_memory,
6365         alpha_pass_by_reference, function_value,
6366         unicosmk_must_pass_in_stack, TARGET_PROMOTE_FUNCTION_ARGS,
6367         TARGET_PROMOTE_FUNCTION_RETURN, TARGET_PROMOTE_PROTOTYPES):
6368         Likewise.
6369         * config/arc/arc.c (arc_return_in_memory, arc_pass_by_reference,
6370         TARGET_PROMOTE_FUNCTION_ARGS, TARGET_PROMOTE_FUNCTION_RETURN,
6371         TARGET_PROMOTE_PROTOTYPES): Likewise.
6372         * config/arm/arm-protos.h (arm_return_in_memory,
6373         arm_pad_arg_upward, arm_function_value): Likewise.
6374         * config/arm/arm.c (arm_pass_by_reference,
6375         arm_promote_prototypes, arm_return_in_msb, arm_must_pass_in_stack,
6376         TARGET_PROMOTE_FUNCTION_ARGS, TARGET_PROMOTE_FUNCTION_RETURN,
6377         arm_function_value, arm_return_in_memory, arm_pad_arg_upward):
6378         Likewise.
6379         * config/arm/arm.h (ARM_DECLARE_FUNCTION_NAME): Likewise.
6380         * config/avr/avr-protos.h (avr_function_value): Likewise.
6381         * config/avr/avr.c (avr_return_in_memory,
6382         gas_output_limited_string, gas_output_ascii, avr_function_value,
6383         avr_return_in_memory): Likewise.
6384         * config/bfin/bfin-protos.h (bfin_return_in_memory): Likewise.
6385         * config/bfin/bfin.c (bfin_pass_by_reference,
6386         bfin_return_in_memory, TARGET_PROMOTE_PROTOTYPES,
6387         TARGET_PROMOTE_FUNCTION_ARGS, TARGET_PROMOTE_FUNCTION_RETURN):
6388         Likewise.
6389         * config/cris/cris.c (cris_pass_by_reference,
6390         TARGET_PROMOTE_FUNCTION_ARGS): Likewise.
6391         * config/crx/crx.c (crx_return_in_memory): Likewise.
6392         * config/darwin.c (function_base, machopic_function_base_name):
6393         Likewise.
6394         * config/fr30/fr30.c (fr30_must_pass_in_stack,
6395         TARGET_PROMOTE_PROTOTYPES): Likewise.
6396         * config/frv/frv.c (frv_must_pass_in_stack): Likewise.
6397         * config/h8300/h8300.c (h8300_return_in_memory): Likewise.
6398         * config/i386/i386-protos.h (ix86_return_in_memory,
6399         ix86_sol10_return_in_memory): Likewise.
6400         * config/i386/i386.c (ix86_function_value,
6401         ix86_function_sseregparm, ix86_must_pass_in_stack,
6402         type_natural_mode, classify_argument, examine_argument,
6403         construct_container, ix86_pass_by_reference, function_value_32,
6404         function_value_64, ix86_function_value_1, return_in_memory_32,
6405         return_in_memory_64, return_in_memory_ms_64,
6406         ix86_return_in_memory, ix86_sol10_return_in_memory,
6407         TARGET_PROMOTE_PROTOTYPES): Likewise.
6408         * config/ia64/ia64-protos.h (ia64_function_value,
6409         ia64_hpux_function_arg_padding): Likewise.
6410         * config/ia64/ia64.c (hfa_element_mode, ia64_return_in_memory,
6411         ia64_function_value, bundle_state_hash, bundle_state_eq_p,
6412         ia64_hpux_function_arg_padding): Likewise.
6413         * config/iq2000/iq2000-protos.h (function_arg,
6414         iq2000_function_value): Likewise.
6415         * config/iq2000/iq2000.c (iq2000_return_in_memory,
6416         iq2000_pass_by_reference, TARGET_PROMOTE_FUNCTION_ARGS,
6417         TARGET_PROMOTE_FUNCTION_RETURN, TARGET_PROMOTE_PROTOTYPES,
6418         function_arg, iq2000_function_value): Likewise.
6419         * config/m32c/m32c-protos.h (m32c_function_value,
6420         m32c_promote_function_return): Likewise.
6421         * config/m32c/m32c.c (m32c_pass_by_reference,
6422         m32c_promote_prototypes, m32c_promote_function_return,
6423         m32c_function_value): Likewise.
6424         * config/m32r/m32r.c (m32r_return_in_memory,
6425         m32r_pass_by_reference, TARGET_PROMOTE_PROTOTYPES,
6426         m32r_in_small_data_p): Likewise.
6427         * config/m68hc11/m68hc11-protos.h (m68hc11_function_arg_padding):
6428         Likewise.
6429         * config/m68hc11/m68hc11.c (m68hc11_return_in_memory,
6430         m68hc11_function_arg_padding): Likewise.
6431         * config/m68k/m68k-protos.h (m68k_function_value): Likewise.
6432         * config/m68k/m68k.c (TARGET_PROMOTE_PROTOTYPES,
6433         m68k_function_value): Likewise.
6434         * config/mcore/mcore-protos.h (mcore_num_arg_regs,
6435         mcore_function_value): Likewise.
6436         * config/mcore/mcore.c (handle_structs_in_regs,
6437         mcore_return_in_memory, TARGET_PROMOTE_FUNCTION_ARGS,
6438         TARGET_PROMOTE_FUNCTION_RETURN, TARGET_PROMOTE_PROTOTYPES,
6439         mcore_num_arg_regs, mcore_function_value): Likewise.
6440         * config/mips/mips-protos.h (mips_pad_arg_upward,
6441         mips_function_value): Likewise.
6442         * config/mips/mips.c (mips_fpr_return_fields, mips_return_in_msb,
6443         mips_return_in_memory, mips_pass_by_reference, mips_callee_copies,
6444         TARGET_PROMOTE_FUNCTION_ARGS, TARGET_PROMOTE_FUNCTION_RETURN,
6445         TARGET_PROMOTE_PROTOTYPES, mips_pad_arg_upward,
6446         mips_function_value): Likewise.
6447         * config/mmix/mmix-protos.h (mmix_function_outgoing_value):
6448         Likewise.
6449         * config/mmix/mmix.c (mmix_pass_by_reference,
6450         TARGET_PROMOTE_FUNCTION_ARGS, mmix_function_outgoing_value,
6451         mmix_encode_section_info): Likewise.
6452         * config/mn10300/mn10300-protos.h (mn10300_function_value):
6453         Likewise.
6454         * config/mn10300/mn10300.c (mn10300_return_in_memory,
6455         mn10300_pass_by_reference, TARGET_PROMOTE_PROTOTYPES,
6456         mn10300_function_value): Likewise.
6457         * config/mt/mt-protos.h (mt_function_value): Likewise.
6458         * config/mt/mt.c (mt_pass_by_reference, mt_function_value,
6459         mt_pass_in_stack, TARGET_PROMOTE_PROTOTYPES): Likewise.
6460         * config/pa/pa-protos.h (function_arg_padding, function_value,
6461         pa_return_in_memory): Likewise.
6462         * config/pa/pa.c (pa_pass_by_reference,
6463         TARGET_PROMOTE_FUNCTION_RETURN, TARGET_PROMOTE_PROTOTYPES,
6464         function_arg_padding, function_value, pa_return_in_memory):
6465         Likewise.
6466         * config/pdp11/pdp11.c (pdp11_return_in_memory): Likewise.
6467         * config/rs6000/rs6000-protos.h (rs6000_function_value,
6468         function_arg_padding): Likewise.
6469         * config/rs6000/rs6000.c (rs6000_return_in_memory,
6470         rs6000_darwin64_record_arg_recurse, rs6000_darwin64_record_arg,
6471         rs6000_pass_by_reference, rs6000_must_pass_in_stack,
6472         TARGET_PROMOTE_FUNCTION_ARGS, TARGET_PROMOTE_FUNCTION_RETURN,
6473         function_arg_padding, altivec_expand_dst_builtin,
6474         altivec_expand_builtin, rs6000_expand_builtin, spe_init_builtins,
6475         altivec_init_builtins, rs6000_common_init_builtins,
6476         rs6000_function_value): Likewise.
6477         * s390/s390-protos.h (s390_function_value): Likewise.
6478         * config/s390/s390.c (s390_function_arg_size,
6479         s390_pass_by_reference, s390_return_in_memory,
6480         s390_function_value, TARGET_PROMOTE_FUNCTION_ARGS,
6481         TARGET_PROMOTE_FUNCTION_RETURN): Likewise.
6482         * config/score/score-protos.h (score_function_value): Likewise.
6483         * config/score/score.c (score_arg_partial_bytes,
6484         TARGET_PROMOTE_FUNCTION_ARGS, TARGET_PROMOTE_FUNCTION_RETURN,
6485         TARGET_PROMOTE_PROTOTYPES, score_return_in_memory,
6486         score_pass_by_reference, score_add_offset, score_function_value):
6487         Likewise.
6488         * config/sh/sh-protos.h (sh_attr_renesas_p,
6489         sh_promote_prototypes): Likewise.
6490         * config/sh/sh.c (sh_return_in_memory, sh_pass_by_reference,
6491         sh_callee_copies, sh_promote_prototypes, shcompact_byref,
6492         sh_attr_renesas_p): Likewise.
6493         * config/sparc/sparc-protos.h (function_value,
6494         function_arg_padding): Likewise.
6495         * config/sparc/sparc.c (sparc_promote_prototypes,
6496         sparc_return_in_memory, sparc_pass_by_reference,
6497         TARGET_PROMOTE_FUNCTION_ARGS, TARGET_PROMOTE_FUNCTION_RETURN,
6498         function_arg_record_value_2, function_arg_record_value_1,
6499         function_arg_record_value, function_arg_record_value,
6500         function_arg_padding, function_value): Likewise.
6501         * config/spu/spu-protos.h (spu_function_value): Likewise.
6502         * config/spu/spu.c (spu_pass_by_reference, spu_return_in_memory,
6503         spu_function_value): Likewise.
6504         * config/stormy16/stormy16-protos.h (xstormy16_function_value):
6505         Likewise.
6506         * config/stormy16/stormy16.c (xstormy16_return_in_memory,
6507         xstormy16_function_value, TARGET_PROMOTE_FUNCTION_ARGS,
6508         TARGET_PROMOTE_FUNCTION_RETURN, TARGET_PROMOTE_PROTOTYPES):
6509         Likewise.
6510         * config/v850/v850.c (v850_return_in_memory,
6511         v850_pass_by_reference, TARGET_PROMOTE_PROTOTYPES): Likewise.
6512         * config/vax/vax.c (TARGET_PROMOTE_PROTOTYPES): Likewise.
6513         * config/xtensa/xtensa.c (xtensa_return_in_msb,
6514         xtensa_return_in_memory, TARGET_PROMOTE_FUNCTION_ARGS,
6515         TARGET_PROMOTE_FUNCTION_RETURN, TARGET_PROMOTE_PROTOTYPES):
6516         Likewise.
6517         * explow.c (promote_mode, hard_function_value): Likewise.
6518         * expr.h (hard_function_value, promote_mode): Likewise.
6519         * function.c (aggregate_value_p): Likewise.
6520         * hooks.c (hook_bool_const_tree_true): New.
6521         * hooks.h (hook_bool_const_tree_true): New.
6522         * sdbout.c (SET_KNOWN_TYPE_TAG, plain_type_1): Constify.
6523         * target-def.h (TARGET_PROMOTE_FUNCTION_ARGS,
6524         TARGET_PROMOTE_FUNCTION_RETURN, TARGET_PROMOTE_PROTOTYPES,
6525         TARGET_RETURN_IN_MSB): Likewise.
6526         * target.h (promote_function_args, promote_function_return,
6527         promote_prototypes, return_in_memory, return_in_msb,
6528         pass_by_reference, must_pass_in_stack, callee_copies,
6529         function_value): Likewise.
6530         * targhooks.c (default_return_in_memory,
6531         hook_pass_by_reference_must_pass_in_stack,
6532         hook_callee_copies_named,
6533         hook_bool_CUMULATIVE_ARGS_mode_tree_bool_false,
6534         hook_bool_CUMULATIVE_ARGS_mode_tree_bool_true,
6535         default_function_value): Likewise. 
6536         * targhooks.h (default_return_in_memory,
6537         hook_pass_by_reference_must_pass_in_stack,
6538         hook_callee_copies_named,
6539         hook_bool_CUMULATIVE_ARGS_mode_tree_bool_false,
6540         hook_bool_CUMULATIVE_ARGS_mode_tree_bool_true,
6541         default_function_value): Likewise.
6542         * tree-ssa-structalias.c (const_equiv_class_label_t): New.
6543         (equiv_class_label_hash, equiv_class_label_eq): Constify.
6544         * tree-vectorizer.c (bb_in_loop_p): Likewise.
6545         * tree.c (needs_to_live_in_memory): Likewise.
6546         * tree.h (struct tree_type, needs_to_live_in_memory,
6547         aggregate_value_p, must_pass_in_stack_var_size,
6548         must_pass_in_stack_var_size_or_pad): Likewise.
6549         * vmsdbgout.c (write_debug_addr, write_debug_delta4,
6550         write_debug_string, ASM_OUTPUT_DEBUG_STRING, write_rtnbeg,
6551         lookup_filename): Likewise.
6552
6553 2007-08-23  Uros Bizjak  <ubizjak@gmail.com>
6554
6555         PR target/17390
6556         * config/i386/i386.c (ix86_expand_fp_compare): Expand fp comparison to
6557         fake fcomi i387 instruction for !TARGET_CMOVE.
6558         (ix86_expand_branch): Expand natural sequence with one jump for
6559         all targets, not only TARGET_CMOVE.
6560         * config/i386/i386.md (*cmpfp_0_cc): New define_insn_and_split
6561         pattern to implement fake fcomi sequence.  Split instruction after
6562         reload to correct compare sequences.
6563         (*cmpfp_xf_cc): Ditto.
6564         (*cmpfp_<mode>_cc): Ditto.
6565         (*cmpfp_u_cc): Ditto.
6566         (*cmpfp_<mode>_cc): Ditto.
6567
6568 2007-08-23  Richard Guenther  <rguenther@suse.de>
6569
6570         * tree-pretty-print.c (dump_generic_node): Annotate
6571         GIMPLE_MODIFY_STMTs with volatile ops with "{v}".
6572
6573 2007-08-23  Richard Guenther  <rguenther@suse.de>
6574
6575         * builtins.c (expand_builtin_mathfn): Wrap argument in
6576         save_expr directly instead of re-building the call.
6577         (expand_builtin_mathfn_2): Likewise.
6578         (expand_builtin_mathfn_3): Likewise.
6579         (expand_builtin_interclass_mathfn): Likewise.
6580         (expand_builtin_int_roundingfn): Set arg.
6581         (expand_builtin_int_roundingfn_2): Likewise.
6582
6583 2007-08-23  Paolo Bonzini  <bonzini@gnu.org>
6584
6585         * config/i386/sse.md (*sse_and<mode>3, *sse_ior<mode>3,
6586         *sse_nand<mode>3, *sse_xor<mode>3): New.
6587
6588 2007-08-23  Uros Bizjak  <ubizjak@gmail.com>
6589
6590         * config/i386/i386.h (PRINT_OPERAND_PUNCT_VALID_P): Add ';' code.
6591         * config/i386/i386.c (print_operand): Handle ';' code.  Output
6592         semicolon for TARGET_MACHO.
6593         * config/i386/sync.md (*sync_compare_and_swap<mode>): Use '%;' to
6594         emit semicolon after 'lock' prefix.
6595         (sync_double_compare_and_swap<mode>): Ditto.
6596         (*sync_double_compare_and_swapdi_pic): Ditto.
6597         (*sync_compare_and_swap_cc<mode>): Ditto.
6598         (sync_double_compare_and_swap_cc<mode>): Ditto.
6599         (*sync_double_compare_and_swap_ccdi_pic): Ditto.
6600         (sync_old_add<mode>): Ditto.
6601         (sync_add<mode>): Ditto.
6602         (sync_sub<mode>): Ditto.
6603         (sync_ior<mode>): Ditto.
6604         (sync_and<mode>): Ditto.
6605         (sync_xor<mode>): Ditto.
6606
6607 2007-08-22  Chao-ying Fu  <fu@mips.com>
6608
6609         * rtl.c (rtx_code_size): Check CONST_FIXED to calcualte correct sizes
6610         in DEF_RTL_EXPR.
6611         (copy_rtx): Handle CONST_FIXED.
6612         (rtx_equal_p): Likewise.
6613         * rtl.h (fixed_value.h): New include.
6614         (rtx_def): Add a new field of fixed_value to u.
6615         (XCNMPFV): Define for accessing fixed_value.
6616         (CONST_FIXED_VALUE, CONST_FIXED_VALUE_HIGH, CONST_FIXED_VALUE_LOW):
6617         Define.
6618         * rtl.def (CONST_FIXED): New constant.
6619         (SS_MULT, US_MULT, SS_DIV, US_DIV, FRACT_CONVERT,
6620         UNSIGNED_FRACT_CONVERT, SAT_FRACT, UNSIGNED_SAT_FRACT, US_NEG,
6621         US_ASHIFT): New codes.
6622         * doc/rtl.texi (Expressions): Document const_fixed, us_neg, ss_mult,
6623         us_mult, ss_div, us_div, us_ashift, fract_convert, sat_fract,
6624         unsigned_fract_convert, unsigned_sat_fract): Document them.
6625         * varasm.c (assemble_integer): Extend to support fixed-point constants
6626         by using different machine classes.
6627         (decode_addr_const): Handle FIXED_CST.
6628         (const_hash_1): Likewise.
6629         (compare_constant): Likewise.
6630         (copy_constant): Likewise.
6631         (const_rtx_hash_1): Handle CONST_FIXED.
6632         (output_constant_pool_2): Handle MODE_FRACT, MODE_UFRACT, MODE_ACCUM,
6633         MODE_UACCUM, MODE_VECTOR_FRACT, MODE_VECTOR_UFRACT, MODE_VECTOR_ACCUM,
6634         MODE_VECTOR_UACCUM.
6635         (initializer_constant_valid_p): Handle FIXED_CST.
6636         (output_constant): Support FIXED_POINT_TYPE.
6637         * gengenrtl.c (excluded_rtx): Check CONST_FIXED to exclude.
6638         * cse.c (hash_rtx): Support CONST_FIXED.
6639         (exp_equiv_p): Likewise.
6640         (cannon_reg): Likewise.
6641         (fold_rtx): Likewise.
6642         (equiv_constant): Likewise.
6643         (cse_process_notes_1): Likewise.
6644         (count_reg_usage): Likewise.
6645         * cselib.c (entry_and_rtx_equal_p): Check CONST_FIXED.
6646         (rtx_equal_for_cselib_p): Handle CONST_FIXED.
6647         (wrap_constant): Check CONST_FIXED.
6648         (cselib_hash_rtx): Support CONST_FIXED.
6649         (cselib_subst_to_values): Likewise.
6650         * df-scan.c (df_uses_record): Likewise.
6651         * gcse.c (want_to_gcse_p): Likewise.
6652         (oprs_unchanged_p): Likewise.
6653         (oprs_not_set_p): Likewise.
6654         (compute_transp): Likewise.
6655         (extract_mentioned_regs_helper): Likewise.
6656         * genemit.c (gen_exp): Likewise.
6657         * local-alloc.c (equiv_init_varies_p): Likewise.
6658         (contains_replace_regs): Likewise.
6659         (memref_referenced_p): Likewise.
6660         * loop-invariant.c (check_maybe_invariant): Likewise.
6661         (hash_invariant_expr_1): Likewise.
6662         (invariant_expr_equal_p): Likewise.
6663         * postreload-gcse.c (oprs_unchanged_p): Likewise.
6664         * regclass.c (reg_scan_mark_refs): Likewise.
6665         * regrename.c (scan_rtx): Likewise.
6666         * resource.c (mark_referenced_resources): Likewise.
6667         (mark_set_resources): Likewise.
6668         * rtlanal.c (rtx_unstable_p): Likewise.
6669         (rtx_varies_p): Likewise.
6670         (count_occurrences): Likewise.
6671         (reg_mentioned_p): Likewise.
6672         (modified_between_p): Likewise.
6673         (modified_in_p): Likewise.
6674         (volatile_insn_p): Likewise.
6675         (volatile_refs_p): Likewise.
6676         (side_effects_p): Likewise.
6677         (may_trap_p_1): Likewise.
6678         (inequality_comparisons_p): Likewise.
6679         (computed_jump_p_1): Likewise.
6680         (commutative_operand_precedence): Likewise.
6681         * sched-deps.c (sched_analyze_2): Likewise.
6682         * sched-vis.c (print_value): Likewise.
6683         * reload.c (operands_match_p): Likewise.
6684         (subst_reg_equivs): Likewise.
6685         * reload1.c (eliminate_regs_1): Likewise.
6686         (elimination_effects): Likewise.
6687         (scan_paradoxical_subregs): Likewise.
6688         * alias.c (rtx_equal_for_memref_p): Likewise.
6689         * Makefile.in (RTL_BASE_H): Add fixed-value.h.
6690         * emit-rtl.c (const_fixed_htab): New hash table.
6691         (const_fixed_htab_hash, const_fixed_htab_eq, lookup_const_fixed):
6692         Declare.
6693         (const_fixed_htab_hash, const_fixed_htab_eq, lookup_const_fixed,
6694         const_fixed_from_fixed_value): New functions.
6695         (verify_rtx_sharing): Handle CONST_FIXED.
6696         (copy_rtx_if_shared_1): Likewise.
6697         (reset_used_flags): Likewise.
6698         (set_used_flags): Likewise.
6699         (copy_insn_1): Likewise.
6700         (init_emit_once): Create const_fixed_htab.
6701         Store fixed-point scalar and vector zero and one to const_tiny_rtx.
6702
6703 2007-08-22  Zdenek Dvorak  <ook@ucw.cz>
6704
6705         PR tree-optimization/32949
6706         * tree-ssa-loop-niter.c (scev_probably_wraps_p): Test nowrap_type_p
6707         before failing for ivs with non-constant step.
6708
6709 2007-08-22  Hans-Peter Nilsson  <hp@axis.com>
6710
6711         * doc/md.texi (Iterators): Renamed from Macros.  All contents
6712         changed to reflect rename of respectively define_code_macro and
6713         define_mode_macro to define_code_iterator and define_mode_iterator.
6714         (Mode Iterators, Code Iterators): Similar.
6715         * read-rtl.c (struct iterator_group, struct iterator_traverse_data)
6716         (uses_mode_iterator_p, apply_mode_iterator, uses_code_iterator_p)
6717         (apply_iterator_to_string, uses_iterator_p, apply_iterator_traverse)
6718         (initialize_iterators, find_iterator, check_code_iterator)
6719         (map_attr_string, apply_mode_maps, apply_iterator_to_rtx, add_mapping)
6720         (read_mapping, read_rtx_1): Similar.
6721         * config/alpha/sync.md, config/alpha/alpha.md, config/frv/frv.md,
6722         config/s390/s390.md, config/m32c/blkmov.md, config/m32c/m32c.md,
6723         config/spu/spu.md, config/sparc/sparc.md, config/sparc/sync.md,
6724         config/i386/i386.md, config/i386/mmx.md, config/i386/sse.md,
6725         config/i386/sync.md, config/crx/crx.md, config/xtensa/xtensa.md,
6726         config/cris/cris.c, config/cris/cris.md, config/ia64/sync.md,
6727         config/ia64/div.md, config/ia64/vect.md, config/ia64/ia64.md,
6728         config/m68k/m68k.md, config/rs6000/spe.md, config/rs6000/altivec.md,
6729         config/rs6000/sync.md, config/rs6000/rs6000.md,
6730         config/arm/vec-common.md, config/arm/neon.md, config/arm/iwmmxt.md,
6731         config/arm/arm.md, config/mips/mips-dsp.md, config/mips/mips.md,
6732         config/vax/vax.md, config/bfin/bfin.md: Similar.
6733
6734 2007-08-22  David Daney  <ddaney@avtrex.com>
6735
6736         * doc/install.texi (Testing): Mention testing on a simulator.
6737
6738 2007-08-22  Janis Johnson  <janis187@us.ibm.com>
6739
6740         * config/dfp-bit.c (DFP_TO_DFP): Check for overflow.
6741
6742         * doc/libgcc.texi (Decimal float library routines): Fix formatting
6743         and rearrange floating point conversion functions into different
6744         categories.
6745
6746 2007-08-22  Maxim Kuvyrkov  <maxim@codesourcery.com>
6747
6748         * target.h (struct gcc_target.sched: dfa_pre_advance_cycle,
6749         dfa_post_advance_cycle): New scheduler hooks.
6750         * target-def.h (TARGET_SCHED_DFA_PRE_ADVANCE_CYCLE,
6751         TARGET_SCHED_DFA_POST_ADVANCE_CYCLE): New macros to initialize
6752         new hooks.
6753         (TARGET_SCHED): Use them.
6754         * doc/tm.texi (TARGET_SCHED_DFA_PRE_ADVANCE_CYCLE,
6755         TARGET_SCHED_DFA_POST_ADVANCE_CYCLE): Document new hooks.
6756         * haifa-sched.c (advance_one_cycle): Invoke new hooks.
6757
6758         * genautomata.c (insn_has_dfa_reservation_p): New DFA interface
6759         function to facilitate debugging.
6760         (INSN_HAS_DFA_RESERVATION_P_FUNC_NAME): New macro.
6761         (output_insn_has_dfa_reservation_p): New static function to output
6762         insn_has_dfa_reservation_p ().
6763         (write_automata): Use it.
6764         * genattr.c (main): Output declaration for
6765         insn_has_dfa_reservation_p ().
6766
6767 2007-08-22  Christian Bruel  <christian.bruel@st.com>   
6768             Richard Guenther <rguenther@suse.de>
6769         
6770         * fold-const.c (fold_binary): Optimize A-A if -ffinite-math-only.
6771         * simplify_rtx (simplify_binary_operation_1): Likewise.
6772                 
6773 2007-08-22  Rask Ingemann Lambertsen  <rask@sygehus.dk>
6774
6775         PR rtl-optimization/32557
6776         * df-problems.c (df_note_bb_compute): Use mws->start_regno instead
6777         of REGNO (mws->mw_reg).
6778
6779 2007-08-22  Richard Guenther  <rguenther@suse.de>
6780
6781         PR middle-end/33007
6782         * builtins.c (expand_builtin_int_roundingfn): Replace call
6783         argument wrapped with SAVE_EXPR directly.
6784         (expand_builtin_int_roundingfn_2): Likewise.
6785
6786 2007-08-22  Richard Guenther  <rguenther@suse.de>
6787
6788         * tree-inline.c (inlinable_function_p): Restore disregarding
6789         inline limits for GNU extern inline functions.
6790
6791 2007-08-22  Richard Guenther  <rguenther@suse.de>
6792
6793         PR middle-end/32563
6794         * tree.c (host_integerp): Treat sizetype as signed as it is
6795         sign-extended.
6796
6797 2007-08-21  Ian Lance Taylor  <iant@google.com>
6798
6799         PR tree-optimization/33134
6800         * tree-vrp.c (adjust_range_with_scev): Call
6801         set_value_range_to_value.
6802
6803 2007-08-21  Aldy Hernandez  <aldyh@redhat.com>
6804
6805         * value-prof.h (gimple_remove_histogram_value): Remove duplicate
6806         prototype.
6807         
6808 2007-08-21  Aldy Hernandez  <aldyh@redhat.com>
6809
6810         * tree-flow-inline.h (next_imm_use_stmt): Remove unecessary
6811         whitespace.
6812
6813 2007-08-21  Nathan Froyd  <froydnj@codesourcery.com>
6814
6815         * config/rs6000/rs6000.c (expand_block_clear): Add TARGET_SPE
6816         cases to set eight bytes at a time.
6817         (expand_block_move): Likewise.
6818         
6819 2007-08-21  Jakub Jelinek  <jakub@redhat.com>
6820
6821         PR debug/32610
6822         * dwarf2out.c (gen_decl_die): Don't call
6823         gen_tagged_type_instantiation_die if decl doesn't have tagged type.
6824
6825 2007-08-21  Paul Brook  <paul@codesourcery.com>
6826             Nathan Sidwell  <nathan@codesourcery.com>
6827             Mark Mitchell  <mark@codesourcery.com>
6828             Joseph Myers  <joseph@codesourcery.com>
6829
6830         * configure.ac: Add --with-pkgversion and --with-bugurl.
6831         * configure: Regenerate.
6832         * doc/install.texi: Document them.
6833         * version.c (version_string): Remove VERSUFFIX.
6834         (VERSUFFIX): Remove.
6835         (pkgversion_string): New.
6836         (bug_report_url): Do not hard-code initializer.
6837         * version.h (pkgversion_string): Declare.
6838         * Makefile.in (PKGVERSION_s, BUGURL_s, PKGVERSION, BUGURL_TEXI):
6839         Define.
6840         (version.o): Define PKGVERSION and BUGURL.
6841         (gcc-vers.texi): Define VERSION_PACKAGE and BUGURL.
6842         (%.pod): Define BUGURL.
6843         * gcc.c (process_command, main): Use pkgversion_string.
6844         * toplev.c (compile_file, print_version): Likewise.
6845         * protoize.c (main): Likewise.
6846         * gcov.c (print_version): Likewise.  Update copyright date.
6847         * gcov-dump.c (print_version): Likewise.  Update copyright date.
6848         * mips-tdump.c (main): Likewise.  Update copyright date.
6849         * mips-tfile.c (main): Likewise.  Update copyright date.
6850         * doc/include/gcc-common.texi: Include VERSION_PACKAGE as subtitle.
6851         * doc/bugreport.texi: Use BUGURL for bug-reporting instructions;
6852         shorten description.
6853         * doc/gcc.texi: Include VERSION_PACKAGE in version description.
6854         * doc/gccint.texi: Likewise.
6855         * doc/invoke.texi: Use BUGURL for bug-reporting instructions.
6856         Update copyright date.
6857
6858 2007-08-21  Uros Bizjak  <ubizjak@gmail.com>
6859
6860         * config/i386/i386.c (ix86_expand_clear): Use FLAGS_REG.
6861         (ix86_expand_strlensi_unroll_1): Ditto.
6862         (ix86_expand_branch): Use FLAGS_REG and FPSR_REG.
6863         (ix86_expand_carry_flag_compare): Update comment.
6864
6865 2007-08-21  Jakub Jelinek  <jakub@redhat.com>
6866
6867         PR middle-end/32912
6868         * fold-const.c (fold_unary): Optimize BIT_NOT_EXPR of VECTOR_CST.
6869         (fold_binary): Handle vectors in X | ~X and X ^ ~X optimizations.
6870
6871 2007-08-21  Richard Guenther  <rguenther@suse.de>
6872
6873         * fold-const.c (fold_binary): Revert removing of index +p PTR folding.
6874
6875 2007-08-21  Richard Guenther  <rguenther@suse.de>
6876
6877         PR middle-end/33122
6878         * fold-const.c (fold_binary): Remove index +p PTR folding.
6879         Fix types of POINTER_PLUS_EXPR generated by folding of
6880         (PTR +p B) +p A.
6881
6882 2007-08-20  Chao-ying Fu  <fu@mips.com>
6883
6884         * c-common.h (enum rid): Add new enumeration values of RID_SAT,
6885         RID_FRACT, and RID_ACCUM.  RID_SAT needs to be inserted before
6886         RID_ONEWAY, so that it can be checked in declspecs_add_type.
6887         (c_common_fixed_point_type_for_size): Declare.
6888         * c-parser.c (reswords): Add _Fract, _Accum, and _Sat.
6889         (c_token_starts_typename): Handle RID_FRACT, RID_ACCUM, and RID_SAT.
6890         (c_token_starts_declspecs): Likewise.
6891         (c_parser_declspecs): Likewise.
6892         (c_parser_attributes): Likewise.
6893         * c-tree.h (enum c_typespec_keyword): Add cts_fract and cts_accum.
6894         (c_declspecs): Add saturating_p.
6895         * c-decl.c (build_null_declspecs): Initialize saturating_p.
6896         (declspecs_add_type): Avoid using complex with _Fract, _Accum, or
6897         _Sat.  Handle RID_SAT.
6898         Avoid using void, bool, char, int, float, double, _Decimal32,
6899         _Decimal64, _Decimal128, and complex with _Sat.
6900         Handle RID_FRACT and RID_ACCUM.
6901         Make sure _Sat is used with _Fract or _Accum.
6902         (finish_declspecs): Handle cts_fract and cts_accum.
6903         * c-common.c (fixed-value.h): New include.
6904         (constant_expression_warning): Handle FIXED_CST.
6905         (overflow_warning): Likewise.
6906         (warnings_for_convert_and_check): Likewise.
6907         (c_common_fixed_point_type_for_size): New.
6908         (c_common_type_for_mode): Handle fixed-point modes to
6909         return various saturating/non-saturating, signed/unsigned types.
6910         (c_common_signed_or_unsigned_type): Support fixed-point types.
6911         (shorten_compare): Check fixed-point zero.
6912         Handle FIXED_POINT_TYPE.
6913         (c_common_truthvalue_conversion): Handle FIXED_CST.
6914         Handle FIXED_POINT_TYPE.
6915         (c_common_nodes_and_builtins): Record builtin types for fixed-point
6916         types.
6917         (handle_mode_attribute): Handle fixed-point modes.  Need to check
6918         if the signness of base type and fixed-point modes are consistent.
6919         (handle_vector_size_attribute): Handle fixed-point modes.
6920         (same_scalar_type_ignoring_signedness): Handle FIXED_POINT_TYPE.
6921         (warn_for_div_by_zero): Check fixed-point zero.
6922         * c-typeck.c (c_common_type): Check FIXED_POINT_TYPE.  Build
6923         a common fixed-point type based on fbit, ibit, sign, and saturation.
6924         (build_unary_op): Allow FIXED_POINT_TYPE for CONVERT_EXPR,
6925         NEGATE_EXPR, TRUTH_NOT_EXPR, PREINCREMENT_EXPR, POSTINCREMENT_EXPR,
6926         PREDECREMENT_EXPR, and POSTDECREMENT_EXPR.
6927         (convert_for_assignment): Support FIXED_POINT_TYPE.
6928         (digest_init): Handle FIXED_POINT_TYPE.
6929         (build_binary_op): Support FIXED_POINT_TYPE in *_DIV_EXPR,
6930         TRUTH_ANDIF_EXPR, TRUTH_ORIF_EXPR, TRUTH_AND_EXPR, TRUTH_OR_EXPR,
6931         TRUTH_XOR_EXPR, RSHIFT_EXPR, LSHIFT_EXPR, EQ_EXPR, NE_EXPR, LE_EXPR,
6932         GE_EXPR, LT_EXPR, GT_EXPR.
6933         * target-def.h (TARGET_FIXED_POINT_SUPPORTED_P): New.
6934         (TARGET_INITIALIZER): Add TARGET_FIXED_POINT_SUPPORTED_P.
6935         * target.h (gcc_target): Add fixed_point_supported_p.
6936         * targhooks.c (default_scalar_mode_supported_p): Handle MODE_FRACT,
6937         MODE_UFRACT, MODE_ACCUM, and MODE_UACCUM.
6938         (default_fixed_point_supported_p): Define.
6939         * targhooks.h (default_fixed_point_supported_p): Declare.
6940         * doc/tm.texi (TARGET_FIXED_POINT_SUPPORTED_P): Add.
6941         * doc/install.texi (Configuration): Add --enable-fixed-point.
6942         * configure.ac (--enable-fixed-point): New to enable fixed-point
6943         arithmetic extension to C.  For mips targets, we enable it by default.
6944         * configure, config.in: Regenerate.
6945
6946 2007-08-20  Pawel Sikora  <pluto@pld-linux.org>
6947
6948         * doc/invoke.texi (-Wnon-virtual-dtor): Update documentation.
6949
6950 2007-08-20  David Edelsohn  <edelsohn@gnu.org>
6951
6952         * dwarf2out.c (text_section_used): Move declaration outside ifdef
6953         DWARF2_DEBUGGING_INFO.
6954         (cold_text_section_used): Same.
6955         (cold_text_section): Same.
6956
6957 2007-08-20  Richard Guenther  <rguenther@suse.de>
6958
6959         * c-typeck.c (convert_for_assignment): Use the type of
6960         the member for the initialization.
6961
6962 2007-08-20  Richard Guenther  <rguenther@suse.de>
6963
6964         * c-objc-common.c (c_disregard_inline_limits): Remove.
6965         * c-objc-common.h (c_disregard_inline_limits): Likewise.
6966         * cgraphunit.c (cgraph_process_new_functions): Call
6967         disregard_inline_limits_p.
6968         (cgraph_preserve_function_body_p): Likewise.
6969         * ipa-inline.c (compute_inline_parameters): Likewise.
6970         * langhooks-def.h (lhd_tree_inlining_disregard_inline_limits):
6971         Remove.
6972         (LANG_HOOKS_TREE_INLINING_DISREGARD_INLINE_LIMITS): Remove.
6973         (LANG_HOOKS_TREE_INLINING_INITIALIZER): Remove initializer for
6974         disregard_inline_limits langhook.
6975         * langhooks.c (lhd_tree_inlining_disregard_inline_limits):
6976         Remove.
6977         * langhooks.h (lang_hooks_for_tree_inlining): Remove
6978         disregard_inline_limits langhook.
6979         * tree-inline.c (disregard_inline_limits_p): New function.
6980         * tree-inline.h (disregard_inline_limits_p): Declare.
6981
6982 2007-08-20  Richard Guenther  <rguenther@suse.de>
6983
6984         * langhooks-def.h (lhd_tree_inlining_auto_var_in_fn_p): Remove.
6985         (LANG_HOOKS_TREE_INLINING_AUTO_VAR_IN_FN_P): Likewise.
6986         (LANG_HOOKS_TREE_INLINING_INITIALIZER): Remove initializer for
6987         auto_var_in_fn_p langhook.
6988         * langhooks.c (lhd_tree_inlining_auto_var_in_fn_p): Rename and
6989         move ...
6990         * tree.c (auto_var_in_fn_p): ... here.
6991         (find_var_from_fn): Call auto_var_in_fn_p directly.
6992         * langhooks.h (lang_hooks_for_tree_inlining): Remove
6993         auto_var_in_fn_p langhook.
6994         * tree-inline.c (remap_decls): Call auto_var_in_fn_p directly.
6995         (copy_body_r): Likewise.
6996         (self_inlining_addr_expr): Likewise.
6997         * tree.h (auto_var_in_fn_p): Declare.
6998
6999 2007-08-20  Richard Guenther  <rguenther@suse.de>
7000
7001         * tree.c (WALK_SUBTREE): Call walk_tree_1.
7002         (walk_type_fields): Take lh parameter.
7003         (walk_tree): Rename to ...
7004         (walk_tree_1): ... this.  Do not call the walk_subtrees
7005         langhook but the now passed callback.  Pass lh on recursion.
7006         (walk_tree_without_duplicates): Rename to ...
7007         (walk_tree_without_duplicates_1): ... this.  Take lh parameter
7008         and call walk_tree_1.
7009         * tree.h (walk_tree_lh): New typedef.
7010         (walk_tree_1): Declare.
7011         (walk_tree_without_duplicates_1): Likewise.
7012         (walk_tree): New define to walk_tree_1 with NULL lh parameter.
7013         (walk_tree_without_duplicates): New define to
7014         walk_tree_without_duplicates_1 with NULL lh parameter.
7015         * langhooks.c (lhd_tree_inlining_walk_subtrees): Remove.
7016         * langhooks.h (lang_hooks_for_tree_inlining): Remove walk_subtrees
7017         langhook.
7018         * langhooks-def.h (lhd_tree_inlining_walk_subtrees): Remove.
7019         (LANG_HOOKS_TREE_INLINING_WALK_SUBTREES): Likewise.
7020         (LANG_HOOKS_TREE_INLINING_INITIALIZER): Remove walk_subtrees
7021         initializer.
7022
7023 2007-08-20  Andrew Pinski  <andrew_pinski@playstation.sony.com>
7024
7025         PR middle-end/30564
7026         * tree-inline.c (optimize_inline_calls): Move the cgraph checking
7027         code in front of the compacting of basic blocks.
7028         Move the folding of statements inbetween the cgraph checking
7029         and compacting of basic blocks.
7030
7031 2007-08-19  Andrew Pinski  <andrew_pinski@playstation.sony.com>
7032            Serge Belyshev  <belyshev@depni.sinp.msu.ru>
7033
7034         PR target/32522
7035         * config/alpha/alpha.c (va_list_skip_additions): Check for
7036         POINTER_PLUS_EXPR in addition to PLUS_EXPR.
7037         (alpha_stdarg_optimize_hook): Look for POINTER_PLUS_EXPR instead of
7038         PLUS_EXPR when checking ap.__base.
7039         (alpha_va_start): Create POINTER_PLUS_EXPR instead of PLUS_EXPR
7040         when doing addition on pointer types.  Use size_int instead of
7041         build_int_cst.
7042         (alpha_gimplify_va_arg_1): Likewise, but use sizetype instead of
7043         ptr_type in the second operand.
7044
7045 2007-08-19  Andrew Pinski  <pinskia@gmail.com>
7046
7047         PR target/33115
7048         * config/i386/darwin.h (CC1_SPEC): Add %(cc1_cpu) in front.
7049
7050 2007-08-19  Andrew Pinski  <andrew_pinski@playstation.sony.com>
7051
7052         PR middle-end/32940
7053         * cfgexpand.c  (expand_one_register_var): Mark pointer
7054         DECL_ARTIFICIAL as REG_POINTER also.
7055         * stmt.c (expand_decl): Likewise.
7056
7057 2007-08-19  Daniel Berlin  <dberlin@dberlin.org>
7058
7059         Fix PR 32772
7060         Fix PR 32716
7061         Fix PR 32328
7062         Fix PR 32303
7063
7064         * tree-flow.h (struct stmt_ann_d): Remove makes_clobbering_call.
7065         * tree-ssa-alias.c (init_transitive_clobber_worklist): Add
7066         on_worklist argument and avoid adding things to worklist multiple
7067         times.
7068         (add_to_worklist): Ditto.
7069         (mark_aliases_call_clobbered): Mark entire structure clobbered if
7070         single SFT is clobbered.
7071         (set_initial_properties): Ditto.
7072         (compute_call_clobbered): Update for changes to function
7073         arguments.
7074         (create_overlap_variables_for): Always create SFT for offset 0.
7075         (create_structure_vars): Handle PHI's, since we are in SSA form at
7076         this point.
7077         * tree-ssa-loop-ivopts.c (get_ref_tag): Don't return subvars.
7078         * tree-ssa-operands.c (access_can_touch_variable): Don't handle
7079         TARGET_MEM_REF.
7080         (add_vars_for_offset): Figure out aliases from access + points-to.
7081         (add_virtual_operand): Use add_vars-for_offset.
7082         (get_tmr_operands): Update for NMT changes, rewrite to be correct.
7083         (add_call_clobber_ops): Remove makes_clobbering_call set.
7084         (get_expr_operands): Always pass through the INDIRECT_REF
7085         reference.
7086         * tree-ssa-structalias.c (struct constraint_graph): Remove
7087         variables member.
7088         Add pe, pe_rep, pointer_label, loc_label, pointed_by, points_to,
7089         address_taken, pt_used, number_incoming.
7090         (FIRST_ADDR_NODE): Removed.
7091         (merge_graph_nodes): Remove broken code for the moment.
7092         (init_graph): New function.
7093         (build_pred_graph): Remove code to init_graph.
7094         Add location equivalence support.
7095         (struct scc_info): Rename roots to deleted.
7096         (scc_visit): Ditto.
7097         (init_scc_info): Ditto
7098         (init_topo_info): Use graph->size.
7099         (compute_topo_order): Ditto.
7100         (do_da_constraint): Removed.
7101         (do_sd_constraint): Remove calls to find().
7102         set_union_with_increment should always get 0 as last arg here.
7103         (do_complex_constraint): Replace do_da_constraint with assert.
7104         Stop calling find.
7105         (struct equiv_class_label): New.
7106         (pointer_equiv_class_table): Ditto.
7107         (location_equiv_class_table): Ditto.
7108         (equiv_class_label_hash): Ditto.
7109         (equiv_class_label_eq): Ditto
7110         (equiv_class_lookup): Ditto.
7111         (equiv_class_ladd): Ditto.
7112         (pointer_equiv_class): Ditto.
7113         (location_equiv_class): Ditto.
7114         (condense_visit): Rename and rewrite from label_visit to do only
7115         SCC related stuff for HU.
7116         (label_visit): Do HU work for HU.
7117         (perform_var_substitution): Update to do HU and location
7118         equivalence.
7119         (free_var_substitution_info): Update to free HU and location
7120         equivalence structures.  */
7121         (find_equivalent_node): Update for pointer but not location
7122         equivalence.
7123         (unite_pointer_equivalences): New function.
7124         (move_complex_constraints): Rewrite to only do moving.
7125         (rewrite_constraints): Split out of move_complex_constraints.
7126         (solve_graph): Use graph->size.
7127         (process_constraint_1): Add from_call argument, use it.
7128         Split *a = &b into two constraints.
7129         (process_constraint): Use new process_constraint_1.
7130         (get_constraint_for_component_ref): Handle bitmaxsize == -1 case.
7131         (get_constraint_for): Handle non-pointer integers properly.
7132         Remove code that used to handle structures.
7133         (handle_ptr_arith): Fix a few bugs in pointer arithmetic handling
7134         with unknown addends.
7135         (handle_rhs_call): New function.
7136         (find_func_aliases): Use handle_rhs_call.
7137         (set_uids_in_ptset): Add an assert.
7138         (set_used_smts): Fix bug in not considering unified vars.
7139         (compute_tbaa_pruning): Stop initing useless iteration_obstack.
7140         (compute_points_to_sets): Update for other function changes.
7141         (delete_points_to_sets): Ditto.
7142         (ipa_pta_execute): Ditto.
7143         (pass_ipa_pta): We need to update SSA after ipa_pta.
7144         
7145 2007-08-19  Jan Hubicka  <jh@suse.cz>
7146
7147         * i386.md: Replace "rim" and "mri" constraints by "g".
7148
7149 2007-08-19  Joseph Myers  <joseph@codesourcery.com>
7150
7151         * dwarf2out.c (text_section_used, cold_text_section_used,
7152         cold_text_section, dwarf2out_note_section_used): New.
7153         (dwarf2out_init): Initialize cold_text_section.
7154         (dwarf2out_switch_text_section, dwarf2out_begin_function): Call
7155         dwarf2out_note_section_used.
7156         (size_of_aranges): Only count entry for text section if it was
7157         used.  Count entry for cold text section if it was used.
7158         (output_aranges): Only output entries for text section and cold
7159         text section if they were used.
7160
7161 2007-08-19  Andrew Pinski  <pinskia@gmail.com>
7162
7163         * tree-pretty-print.c (debug_generic_expr): Add a comment about
7164         the function.
7165         (debug_generic_stmt): Likewise.
7166         (debug_tree_chain): Likewise.
7167
7168 2007-08-19  Dorit Nuzman  <dorit@il.ibm.com>
7169
7170         * tree-data-refs.c (split_constant_offset): Expose.
7171         * tree-data-refs.h (split_constant_offset): Add declaration.
7172
7173         * tree-vectorizer.h (dr_alignment_support): Renamed
7174         dr_unaligned_software_pipeline to dr_explicit_realign_optimized.
7175         Added a new value dr_explicit_realign.
7176         (_stmt_vec_info): Added new fields: dr_base_address, dr_init,
7177         dr_offset, dr_step, and dr_aligned_to, along with new access
7178         functions for these fields: STMT_VINFO_DR_BASE_ADDRESS,
7179         STMT_VINFO_DR_INIT, STMT_VINFO_DR_OFFSET, STMT_VINFO_DR_STEP, and
7180         STMT_VINFO_DR_ALIGNED_TO.
7181
7182         * tree-vectorizer.c (vect_supportable_dr_alignment): Add
7183         documentation.
7184         In case of outer-loop vectorization with non-fixed misalignment - use
7185         the dr_explicit_realign scheme instead of the optimized realignment
7186         scheme.
7187         (new_stmt_vec_info): Initialize new fields.
7188
7189         * tree-vect-analyze.c (vect_compute_data_ref_alignment): Handle the
7190         'nested_in_vect_loop' case. Change verbosity level.
7191         (vect_analyze_data_ref_access): Handle the 'nested_in_vect_loop' case.
7192         Don't fail on zero step in the outer-loop for loads.
7193         (vect_analyze_data_refs): Call split_constant_offset to calculate
7194         base, offset and init relative to the outer-loop.
7195
7196         * tree-vect-transform.c (vect_create_data_ref_ptr): Replace the unused
7197         BSI function argument with a new function argument - at_loop.
7198         Simplify the condition that determines STEP. Takes additional argument
7199         INV_P. Support outer-loop vectorization (handle the
7200         nested_in_vect_loop case), including zero step in the outer-loop. Call
7201         vect_create_addr_base_for_vector_ref with additional argument.
7202         (vect_create_addr_base_for_vector_ref): Takes additional argument LOOP.
7203         Updated function documentation. Handle the 'nested_in_vect_loop' case.
7204         Fixed and simplified calculation of step.
7205         (vectorizable_store): Call vect_create_data_ref_ptr with loop instead
7206         of bsi, and with additional argument. Call bump_vector_ptr with
7207         additional argument. Fix typos. Handle the 'nested_in_vect_loop' case.
7208         (vect_setup_realignment): Takes additional arguments INIT_ADDR and
7209         DR_ALIGNMENT_SUPPORT. Returns another value AT_LOOP. Handle the case
7210         when the realignment setup needs to take place inside the loop.
7211         Support the dr_explicit_realign scheme. Allow generating the optimized
7212         realignment scheme for outer-loop vectorization. Added documentation.
7213         (vectorizable_load): Support the dr_explicit_realign scheme. Handle
7214         the 'nested_in_vect_loop' case, including loads that are invariant in
7215         the outer-loop and the realignment schemes. Handle the case when the
7216         realignment setup needs to take place inside the loop. Call
7217         vect_setup_realignment with additional arguments.  Call
7218         vect_create_data_ref_ptr with additional argument and with loop instead
7219         of bsi. Fix 80-column overflow. Fix typos. Rename PHI_STMT to PHI.
7220         (vect_gen_niters_for_prolog_loop): Call
7221         vect_create_addr_base_for_vector_ref with additional arguments.
7222         (vect_create_cond_for_align_checks): Likewise.
7223         (bump_vector_ptr): Updated to support the new dr_explicit_realign
7224         scheme: takes additional argument bump; argument ptr_incr is now
7225         optional; updated documentation.
7226         (vect_init_vector): Takes additional argument (bsi). Use it, if
7227         available, to insert the vector initialization.
7228         (get_initial_def_for_induction): Pass additional argument in call to
7229         vect_init_vector.
7230         (vect_get_vec_def_for_operand): Likewise.
7231         (vect_setup_realignment): Likewise.
7232         (vectorizable_load): Likewise.
7233
7234 2007-08-19  Dorit Nuzman  <dorit@il.ibm.com>
7235
7236         * tree-vectorizer.h (vect_is_simple_reduction): Takes a loop_vec_info
7237         as argument instead of struct loop.
7238         (nested_in_vect_loop_p): New function.
7239         (vect_relevant): Add enum values vect_used_in_outer_by_reduction and
7240         vect_used_in_outer.
7241         (is_loop_header_bb_p): New. Used to differentiate loop-header phis
7242         from other phis in the loop.
7243         (destroy_loop_vec_info): Add additional argument to declaration.
7244
7245         * tree-vectorizer.c (supportable_widening_operation): Also check if
7246         nested_in_vect_loop_p (don't allow changing the order in this case).
7247         (vect_is_simple_reduction): Takes a loop_vec_info as argument instead
7248         of struct loop. Call nested_in_vect_loop_p and don't require
7249         flag_unsafe_math_optimizations if it returns true.
7250         (new_stmt_vec_info): When setting def_type for phis differentiate 
7251         loop-header phis from other phis.
7252         (bb_in_loop_p): New function.
7253         (new_loop_vec_info): Inner-loop phis already have a stmt_vinfo, so
7254         just update their loop_vinfo.  Order of BB traversal now matters -
7255         call dfs_enumerate_from with bb_in_loop_p.
7256         (destroy_loop_vec_info): Takes additional argument to control whether
7257         stmt_vinfo of the loop stmts should be destroyed as well.
7258         (vect_is_simple_reduction): Allow the "non-reduction" use of a
7259         reduction stmt to be defines by a non loop-header phi.
7260         (vectorize_loops): Call destroy_loop_vec_info with additional argument.
7261
7262         * tree-vect-transform.c (vectorizable_reduction): Call
7263         nested_in_vect_loop_p. Check for multitypes in the inner-loop.
7264         (vectorizable_call): Likewise.
7265         (vectorizable_conversion): Likewise.
7266         (vectorizable_operation): Likewise.
7267         (vectorizable_type_promotion): Likewise.
7268         (vectorizable_type_demotion): Likewise.
7269         (vectorizable_store): Likewise.
7270         (vectorizable_live_operation): Likewise.
7271         (vectorizable_reduction): Likewise. Also pass loop_info to
7272         vect_is_simple_reduction instead of loop.
7273         (vect_init_vector): Call nested_in_vect_loop_p.
7274         (get_initial_def_for_reduction): Likewise.
7275         (vect_create_epilog_for_reduction): Likewise.
7276         (vect_init_vector): Check which loop to work with, in case there's an
7277         inner-loop.
7278         (get_initial_def_for_inducion): Extend to handle outer-loop
7279         vectorization. Fix indentation.
7280         (vect_get_vec_def_for_operand): Support phis in the case vect_loop_def.
7281         In the case vect_induction_def get the vector def from the induction
7282         phi node, instead of calling get_initial_def_for_inducion.
7283         (get_initial_def_for_reduction): Extend to handle outer-loop 
7284         vectorization.
7285         (vect_create_epilog_for_reduction): Extend to handle outer-loop
7286         vectorization.
7287         (vect_transform_loop): Change assert to just skip this case.  Add a
7288         dump printout.
7289         (vect_finish_stmt_generation): Add a couple asserts.
7290
7291         (vect_estimate_min_profitable_iters): Multiply
7292         cost of inner-loop stmts (in outer-loop vectorization) by estimated
7293         inner-loop bound.
7294         (vect_model_reduction_cost): Don't add reduction epilogue cost in case
7295         this is an inner-loop reduction in outer-loop vectorization.
7296
7297         * tree-vect-analyze.c (vect_analyze_scalar_cycles_1): New function.
7298         Same code as what used to be vect_analyze_scalar_cycles, only with
7299         additional argument loop, and loop_info passed to
7300         vect_is_simple_reduction instead of loop.
7301         (vect_analyze_scalar_cycles): Code factored out into
7302         vect_analyze_scalar_cycles_1. Call it for each relevant loop-nest.
7303         Updated documentation.
7304         (analyze_operations): Check for inner-loop loop-closed exit-phis during
7305         outer-loop vectorization that are live or not used in the outerloop,
7306         cause this requires special handling.
7307         (vect_enhance_data_refs_alignment): Don't consider versioning for
7308         nested-loops.
7309         (vect_analyze_data_refs): Check that there are no datarefs in the
7310         inner-loop.
7311         (vect_mark_stmts_to_be_vectorized): Also consider vect_used_in_outer
7312         and vect_used_in_outer_by_reduction cases.
7313         (process_use): Also consider the case of outer-loop stmt defining an
7314         inner-loop stmt and vice versa.
7315         (vect_analyze_loop_1): New function.
7316         (vect_analyze_loop_form): Extend, to allow a restricted form of nested
7317         loops.  Call vect_analyze_loop_1.
7318         (vect_analyze_loop): Skip (inner-)loops within outer-loops that have
7319         been vectorized.  Call destroy_loop_vec_info with additional argument.
7320
7321         * tree-vect-patterns.c (vect_recog_widen_sum_pattern): Don't allow
7322         in the inner-loop when doing outer-loop vectorization. Add
7323         documentation and printout.
7324         (vect_recog_dot_prod_pattern): Likewise. Also add check for
7325         GIMPLE_MODIFY_STMT (in case we encounter a phi in the loop).
7326
7327 2007-08-18  Andrew Pinski  <pinskia@gmail.com>
7328
7329         * tree-affine.h (print_aff): New prototype.
7330         (debug_aff): Likewise.
7331         * tree-affine.c (print_aff): New function.
7332         (debug_aff): Likewise.
7333
7334 2007-08-18  Paul Brook  <paul@codesourcery.com>
7335             Joseph Myers  <joseph@codesourcery.com>
7336
7337         * common.opt (-fdebug-prefix-map=): New option.
7338         * opts.c: Include debug.h.
7339         (common_handle_option): Handle -fdebug-prefix-map.
7340         * final.c: Include ggc.h.
7341         (struct debug_prefix_map, debug_prefix_maps, add_debug_prefix_map,
7342         remap_debug_filename): New.
7343         * Makefile.in (final.o, opts.o): Update dependencies.
7344         * debug.h (remap_debug_filename, add_debug_prefix_map): Declare.
7345         * configure.ac: Check for assembler --debug-prefix-map support.
7346         * configure, config.in: Regenerate.
7347         * gcc.c (ASM_MAP): Define conditional on HAVE_AS_DEBUG_PREFIX_MAP.
7348         (ASM_DEBUG_SPEC): Include ASM_MAP.
7349         * doc/install.texi (--with-debug-prefix-map): Document.
7350         * doc/invoke.texi (-fdebug-prefix-map): Document.
7351         * dbxout.c (dbxout_init, dbxout_start_source_file,
7352         dbxout_source_file): Call remap_debug_filename.
7353         * dwarf2out.c (add_comp_dir_attribute, maybe_emit_file,
7354         dwarf2out_start_source_file, dwarf2out_finish): Call
7355         remap_debug_filename.
7356         (file_table_relative_p): Do not check d->emitted_number.
7357         * toplev.c (output_file_directive): Call remap_debug_filename.
7358         * vmsdbgout.c (write_srccorr): Call remap_debug_filename.
7359         * xcoffout.c (xcoffout_source_file): Call remap_debug_filename.
7360
7361 2007-08-17  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
7362
7363         * loop-invariant.c (find_invariants_to_move): Add missing macro
7364         argument.
7365
7366 2007-08-17  Tom Tromey  <tromey@redhat.com>
7367
7368         * tree.h (struct tree_label_decl): Removed old "java" fields.
7369
7370 2007-08-17  Richard Sandiford  <richard@codesourcery.com>
7371             Nigel Stephens  <nigel@mips.com>
7372
7373         * config/mips/sde.h (DRIVER_SELF_SPECS): Add commas.
7374         Treat -mno-data-in-code and -mcode-xonly as aliases for
7375         -mcode-readable=no and -mcode-readable=pcrel respectively.
7376         * config/mips/t-sde (TARGET_LIBGCC2_CFLAGS): Add -mcode-xonly.
7377         (MULTILIB_OPTIONS): Add -mcode-readable=no multilibs.
7378         (MULTILIB_DIRNAMES): Update accordingly.
7379
7380 2007-08-17  H.J. Lu  <hongjiu.lu@intel.com>
7381
7382         * Makefile.in (version.o): Depend on $(REVISION) only if
7383         REVISION_s is defined.
7384
7385 2007-08-17  Sa Liu  <saliu@de.ibm.com>
7386             Ulrich Weigand  <uweigand@de.ibm.com>
7387
7388         PR middle-end/32970
7389         * tree.c (reconstruct_complex_type): For a pointer to a vector,
7390         use build_qualified_type to retain qualifiers of the base type.
7391
7392 2007-08-17  Chen Liqin  <liqin@sunnorth.com.cn>
7393
7394         * config/score/score.md : Update pattern tablejump.
7395         * config/score/score.c : Update score_initialize_trampoline 
7396         function.
7397         * config/score/score.h (TRAMPOLINE_TEMPLATE): Added macro.
7398         (TRAMPOLINE_INSNS, TRAMPOLINE_SIZE) Update macro.
7399         * doc/contrib.texi: Add my entry.
7400
7401 2007-08-16  H.J. Lu  <hongjiu.lu@intel.com>
7402
7403         * Makefile.in (REVISION): New.
7404         (REVISION_c): New.
7405         (REVISION_s): New.
7406         (version.o): Also depend on $(REVISION). Add
7407         -DREVISION=$(REVISION_s).
7408
7409         * version.c (version_string): Add REVISION.
7410
7411 2007-08-16  Seongbae Park <seongbae.park@gmail.com>
7412
7413         * tree-eh.c (lower_try_finally_onedest): Reset the locus
7414         of GOTO that's relocated to a different block.
7415
7416 2007-08-16  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
7417
7418         * c-common.c (const_strip_array_types): New.
7419         * c-common.h (lang_missing_noreturn_ok_p): Delete.
7420         (const_strip_array_types): New.
7421         * c-objc-common.c (c_disregard_inline_limits,
7422         c_warn_unused_global_decl): Constify.
7423         * c-tree.h (c_disregard_inline_limits, c_warn_unused_global_decl,
7424         c_vla_type_p, c_incomplete_type_error): Likewise.
7425         * c-typeck.c (c_incomplete_type_error, c_vla_type_p): Likewise.
7426         * hooks.c (hook_bool_const_tree_false): New.
7427         * hooks.h (hook_bool_const_tree_false): Likewise.
7428         * langhooks-def.h (lhd_warn_unused_global_decl,
7429         lhd_incomplete_type_error, lhd_expr_size,
7430         lhd_tree_inlining_disregard_inline_limits,
7431         lhd_tree_inlining_auto_var_in_fn_p, lhd_tree_dump_type_quals,
7432         LANG_HOOKS_GENERIC_TYPE_P, LANG_HOOKS_TYPE_MAX_SIZE): Constify.
7433         * langhooks.c (lhd_warn_unused_global_decl,
7434         lhd_incomplete_type_error,
7435         lhd_tree_inlining_disregard_inline_limits,
7436         lhd_tree_inlining_auto_var_in_fn_p, lhd_tree_dump_type_quals,
7437         lhd_expr_size): Likewise.
7438         * langhooks.h (lang_hooks_for_tree_inlining,
7439         lang_hooks_for_tree_dump, lang_hooks_for_types,
7440         lang_hooks_for_decls, lang_hooks): Likewise.
7441         * pointer-set.c (pointer_set_t, pointer_set_create,
7442         pointer_set_contains, insert_aux, pointer_set_insert,
7443         pointer_set_traverse, pointer_map_t, pointer_map_create,
7444         pointer_map_contains, pointer_map_insert, pointer_map_traverse):
7445         Likewise.
7446         * pointer-set.h (pointer_set_contains, pointer_set_insert,
7447         pointer_set_traverse, pointer_map_contains, pointer_map_insert,
7448         pointer_map_traverse): Likewise.
7449         * predict.c (assert_is_empty): Likewise.
7450         * tree-affine.c (free_name_expansion): Likewise.
7451         * tree-cfg.c (edge_to_cases_cleanup): Likewise.
7452         * tree.c (size_in_bytes, max_int_size_in_bytes): Likewise.
7453         * tree.h (size_in_bytes, max_int_size_in_bytes): Likewise.
7454
7455 2007-08-16  Victor Kaplansky <victork@il.ibm.com>
7456
7457         * tree-vectorizer.c (new_loop_vec_info): Initialize new 
7458         field.
7459         (destroy_loop_vec_info): Add call to VEC_free.
7460         * tree-vectorizer.h (may_alias_ddrs): Define.
7461         (LOOP_VINFO_MAY_ALIAS_DDRS): Define.
7462         * tree-vect-analyze.c (vect_analyze_data_ref_dependence):
7463         Change reporting to dump.
7464         (vect_is_duplicate_ddr): New.
7465         (vect_mark_for_runtime_alias_test): New.
7466         (vect_analyze_data_ref_dependences) Add call to
7467         vect_mark_for_runtime_alias_test.
7468         (vect_enhance_data_refs_alignment): Define local variable
7469         vect_versioning_for_alias_required, don't perform
7470         peeling for alignment if versioning for alias is
7471         required.
7472         (vect_enhance_data_refs_alignment): Use
7473         PARAM_VECT_MAX_VERSION_FOR_ALIGNMENT_CHECKS instead of
7474         PARAM_VECT_MAX_VERSION_CHECKS.
7475         * tree-vect-transform.c
7476         (vect_create_cond_for_alias_checks): New.
7477         (vect_transform_loop): Add call to
7478         vect_create_cond_for_alias_checks.
7479         (vect_vfa_segment_size): New.
7480         * params.def (PARAM_VECT_MAX_VERSION_FOR_ALIGNMENT_CHECKS):
7481         Rename.
7482         (PARAM_VECT_MAX_VERSION_FOR_ALIAS_CHECKS): Define.
7483         * gcc/doc/invoke.texi
7484         (vect-max-version-for-alignment-checks): Document.
7485         (vect-max-version-for-alias-checks): Document.
7486         (vect-max-version-checks): Remove.
7487      
7488 2007-08-16  Uros Bizjak  <ubizjak@gmail.com>
7489
7490         * config/i386/i386.md (*rep_movdi_rex64): Emit "rep" prefix on
7491         the same line as the instruction for all asm dialects.
7492         (*rep_movsi): Ditto.
7493         (*rep_movsi_rex64): Ditto.
7494         (*rep_movqi): Ditto.
7495         (*rep_movqi_rex64): Ditto.
7496         (*rep_stosdi_rex64): Ditto.
7497         (*rep_stossi): Ditto.
7498         (*rep_stossi_rex64): Ditto.
7499         (*rep_stosqi): Ditto.
7500         (*rep_stosqi_rex64): Ditto.
7501         (*cmpstrnqi_nz_1): Ditto.
7502         (*cmpstrnqi_nz_rex_1): Ditto.
7503         (*cmpstrnqi_1): Ditto.
7504         (*cmpstrnqi_rex_1): Ditto.
7505         (*strlenqi_1): Ditto.
7506         (*strlenqi_rex_1): Ditto.
7507         * config/i386/sync.md (*sync_compare_and_swap<mode>): Emit "lock"
7508         prefix on the same line as the instruction for all asm dialects.
7509         (sync_double_compare_and_swap<mode>): Ditto.
7510         (*sync_double_compare_and_swapdi_pic): Ditto.
7511         (*sync_compare_and_swap_cc<mode>): Ditto.
7512         (sync_double_compare_and_swap_cc<mode>): Ditto.
7513         (*sync_double_compare_and_swap_ccdi_pic): Ditto.
7514         (sync_old_add<mode>): Ditto.
7515         (sync_add<mode>): Ditto.
7516         (sync_sub<mode>): Ditto.
7517         (sync_ior<mode>): Ditto.
7518         (sync_and<mode>): Ditto.
7519         (sync_xor<mode>): Ditto.
7520
7521 2007-08-16  Richard Sandiford  <richard@codesourcery.com>
7522
7523         PR middle-end/32897
7524         * reload.c (find_reloads): Check that the memory returned by
7525         find_reloads_toplev was not the result of forcing a constant
7526         to memory.
7527         (find_reloads_toplev): Always use simplify_gen_subreg to get
7528         the subreg of a constant.  If the result is also a constant,
7529         but not a legitimate one, force it into the constant pool
7530         and reload its address.
7531
7532 2007-08-15  David Edelsohn  <edelsohn@gnu.org>
7533
7534         * config/rs6000/rs6000.c (rs6000_rtx_costs): Add CLZ, CTZ, and
7535         POPCOUNT.
7536
7537 2007-08-15  Daniel Jacobowitz  <dan@codesourcery.com>
7538
7539         * config/rs6000/rs6000.c (rs6000_file_start): Output a .gnu_attribute
7540         directive for the current vector ABI.
7541
7542 2007-08-15  Steve Ellcey  <sje@cup.hp.com>
7543
7544         PR target/32963
7545         * caller-save.c (reg_save_code): Set invalide status on restore code.
7546         
7547 2007-08-15  Diego Novillo  <dnovillo@google.com>
7548
7549         * tree-ssa-alias.c (compute_memory_partitions): Use
7550         alias_bitmap_obstack to allocate bitmaps.
7551         (reset_alias_info): Factor out of init_alias_info.
7552         Mark all name tags not associated to an SSA name for renaming.
7553         (init_alias_info): Call it.
7554         (create_name_tags): Tidy.  Add comments.
7555         (dump_points_to_info_for): Do not call get_mem_sym_stats_for.
7556
7557 2007-08-15  Maxim Kuvyrkov  <maxim@codesourcery.com>
7558
7559         * config/mips/mips.c (vr4130_swap_insns_p): Use new interface to
7560         scheduler dependencies.
7561
7562 2007-08-15  Rask Ingemann Lambertsen  <rask@sygehus.dk>
7563
7564         * config/i386/i386.md (subsi3_carry_zext): Remove "m" constraint for
7565         "register_operand".
7566         (*iorsi_1_zext): Likewise.
7567         (*iorsi_1_zext_imm): Likewise.
7568         * config/i386/sse.md: (*sse4_1_extractps): Use "nonimmediate_operand"
7569         with "rm"/"xm" constraint.
7570         (sse2_vmsqrtv2df2): Likewise.
7571
7572 2007-08-15  Jakub Jelinek  <jakub@redhat.com>
7573
7574         PR middle-end/33074
7575         * emit-rtl.c (try_split): Use INSN_LIST instead of EXPR_LIST for
7576         REG_LIBCALL note.
7577
7578 2007-08-14  Daniel Berlin  <dberlin@dberlin.org>
7579
7580         * tree-pass.h (PROP_pta): Removed.
7581         (TODO_rebuild_alias): New.
7582         (pass_may_alias): Removed.
7583         * tree-ssa-ccp.c (execute_fold_all_builtins): Only rebuild
7584         aliasing if we changed something.
7585         * tree-ssa-alias.c (compute_may_aliases): Make non-static.  Update
7586         SSA internally.
7587         (pass_may_alias): Removed.
7588         (create_structure_vars): Return TODO_rebuild_alias.
7589         * tree-ssa-pre.c (do_pre): Return TODO_rebuild_alias.
7590         * tree-sra.c (tree_sra): Only rebuild aliasing if something
7591         changed.
7592         (tree_sra_early): We never affect aliasing right now.
7593         * tree-flow.h (compute_may_aliases): New prototype.
7594         * passes.c: Remove pass_may_alias from the passes.
7595         (execute_function_todo): Support TODO_rebuild_alias.    
7596
7597 2007-08-14  Kai Tietz  <kai.tietz@onevision.com>
7598
7599         * i386.c: (legitimize_address): Move dllimported variable check
7600         infront of legitimizing pic address of CONST symbols.
7601
7602 2007-08-14  Steve Ellcey  <sje@cup.hp.com>
7603
7604         PR tree-optimization/32941
7605         * tree-eh.c (struct leh_tf_state): Add goto_queue_map field.
7606         (goto_queue_cmp): Remove.
7607         (find_goto_replacement): Change search method.
7608         (maybe_record_in_goto_queue): Add assert.
7609         (lower_try_finally): Remove qsort call, add pointer_map_destroy call.
7610         * Makefile.in (tree-eh.o): Add pointer-set.h dependency.
7611
7612 2007-08-14  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
7613
7614         * alias.c (component_uses_parent_alias_set): Constify.
7615         * alias.h (component_uses_parent_alias_set): Likewise.
7616         * cfgrtl.c (print_rtl_with_bb): Likewise.
7617         * double-int.c (tree_to_double_int, double_int_fits_to_tree_p,
7618         mpz_get_double_int): Likewise.
7619         * double-int.h (double_int_fits_to_tree_p, tree_to_double_int,
7620         mpz_get_double_int): Likewise.
7621         * expr.c (is_aligning_offset, undefined_operand_subword_p,
7622         mostly_zeros_p, all_zeros_p, safe_from_p, is_aligning_offset):
7623         Likewise.
7624         * expr.h (safe_from_p): Likewise.
7625         * gimple-low.c (try_catch_may_fallthru, block_may_fallthru):
7626         Likewise.
7627         * gimplify.c (should_carry_locus_p, zero_sized_field_decl,
7628         zero_sized_type, goa_lhs_expr_p): Likewise.
7629         * omp-low.c (is_variable_sized, use_pointer_for_field): Likewise.
7630         * rtl.h (print_rtl_with_bb): Likewise.
7631         * sched-vis.c (print_exp, print_value, print_pattern): Likewise.
7632         * tree-cfg.c (const_first_stmt, const_last_stmt): New.
7633         * tree-flow-inline.h (bb_stmt_list): Constify.
7634         (cbsi_start, cbsi_last, cbsi_end_p, cbsi_next, cbsi_prev,
7635         cbsi_stmt): New.
7636         * tree-flow.h (const_block_stmt_iterator, cbsi_start, cbsi_last,
7637         const_first_stmt, const_last_stmt): New.
7638         (block_may_fallthru, empty_block_p): Constify.
7639         * tree-iterator.c (EXPR_FIRST_BODY, EXPR_LAST_BODY,
7640         EXPR_ONLY_BODY): New.
7641         (expr_first, expr_last, expr_only): Use macro for body.
7642         (const_expr_first, const_expr_last, const_expr_only): New.
7643         * tree-iterator.h (const_tree_stmt_iterator, ctsi_start,
7644         ctsi_last, ctsi_end_p, ctsi_one_before_end_p, ctsi_next,
7645         ctsi_prev, ctsi_stmt): New.
7646         * tree-scalar-evolution.c (get_loop_exit_condition): Constify.
7647         * tree-scalar-evolution.h (get_loop_exit_condition): Likewise.
7648         * tree-ssa-loop-niter.c (loop_only_exit_p,
7649         derive_constant_upper_bound): Likewise.
7650         * tree-ssa-phiopt.c (empty_block_p): Likewise.
7651         * tree-ssa-threadupdate.c (redirection_block_p): Likewise.
7652         * tree-vectorizer.c (slpeel_can_duplicate_loop_p): Likewise.
7653         * tree-vectorizer.h (slpeel_can_duplicate_loop_p): Likewise.
7654         * tree-vrp.c (vrp_bitmap_equal_p): Likewise.
7655         * tree.c (get_type_static_bounds): Likewise.
7656         * tree.h (const_expr_first, const_expr_last, const_expr_only): New.
7657         (get_type_static_bounds): Constify.
7658
7659 2007-08-14  Rask Ingemann Lambertsen  <rask@sygehus.dk>
7660
7661         PR target/30315
7662         * config/i386/i386.h (CANONICALIZE_COMPARISON): New.
7663         * config/i386/i386.md (plusminus)(addsub)(SWI): New.
7664         (*<addsub><mode>3_cc_overflow): New.
7665         (*add<mode>3_cconly_overflow): New.
7666         (*sub<mode>3_cconly_overflow): New.
7667         (*<addsub>si3_zext_cc_overflow): New.
7668         * config/i386/predicates.md (fcmov_comparison_operator): Accept
7669         CCCmode for LTU, GTU, LEU and GEU.
7670         (ix86_comparison_operator): Likewise.
7671         (ix86_carry_flag_operator): Carry flag is set if LTU or GTU in CCCmode.
7672         * config/i386/i386.c (put_condition_code): Support CCCmode.
7673         (ix86_cc_mode): Use CCCmode when testing for overflow of PLUS
7674         or MINUS expressions.
7675
7676 2007-08-14  Andrew Pinski  <pinskia@gmail.com>
7677
7678         PR c/30428
7679         * c-typeck.c (build_binary_op): Disallow vector float types with
7680         BIT_IOR_EXPR, BIT_AND_EXPR, and BIT_XOR_EXPR.
7681
7682 2007-08-14  Maxim Kuvyrkov  <maxim@codesourcery.com>
7683
7684         * sched-int.h (struct _dep): Rename field 'kind' to 'type'.
7685         (DEP_KIND): Rename to DEP_TYPE.  Update all uses.
7686         (dep_def): New typedef.
7687         (init_dep_1, sd_debug_dep): Declare functions.
7688         (DEP_LINK_KIND): Rename to DEP_LINK_TYPE.
7689         (debug_dep_links): Remove.
7690         (struct _deps_list): New field 'n_links'.
7691         (DEPS_LIST_N_LINKS): New macro.
7692         (FOR_EACH_DEP_LINK): Remove.
7693         (create_deps_list, free_deps_list, delete_deps_list): Remove
7694         declaration.
7695         (deps_list_empty_p, debug_deps_list, add_back_dep_to_deps_list): Ditto.
7696         (find_link_by_pro_in_deps_list, find_link_by_con_in_deps_list): Ditto.
7697         (copy_deps_list_change_con, move_dep_link): Ditto.
7698         (struct haifa_insn_data): Split field 'back_deps' into 'hard_back_deps'
7699         and 'spec_back_deps'.  New field 'resolved_forw_deps'.  Remove field
7700         'dep_count'.
7701         (INSN_BACK_DEPS): Remove.
7702         (INSN_HARD_BACK_DEPS, INSN_SPEC_BACK_DEPS, INSN_RESOLVED_FORW_DEPS):
7703         New macros.
7704         (INSN_DEP_COUNT): Remove.
7705         (enum DEPS_ADJUST_RESULT): Add new constant DEP_NODEP.  Fix comments.
7706         (spec_info, haifa_recovery_block_was_added_during_scheduling_p):
7707         Declare global variables.
7708         (deps_pools_are_empty_p, sched_free_deps): Declare functions.
7709         (add_forw_dep, compute_forward_dependences): Remove declarations.
7710         (add_or_update_back_dep, add_or_update_back_forw_dep): Ditto.
7711         (add_back_forw_dep, delete_back_forw_dep): Ditto.
7712         (debug_ds, sched_insn_is_legitimate_for_speculation_p): Declare
7713         functions.
7714         (SD_LIST_NONE, SD_LIST_HARD_BACK, SD_LIST_SPEC_BACK, SD_LIST_FORW):
7715         New constants.
7716         (SD_LIST_RES_BACK, SD_LIST_RES_FORW, SD_LIST_BACK): Ditto.
7717         (sd_list_types_def): New typedef.
7718         (sd_next_list): Declare function.
7719         (struct _sd_iterator): New type.
7720         (sd_iterator_def): New typedef.
7721         (sd_iterator_start, sd_iterator_cond, sd_iterator_next): New inline
7722         functions.
7723         (FOR_EACH_DEP): New cycle wrapper.
7724         (sd_lists_size, sd_lists_empty_p, sd_init_insn, sd_finish_insn):
7725         Declare functions.
7726         (sd_find_dep_between, sd_add_dep, sd_add_or_update_dep): Ditto.
7727         (sd_resolve_dep, sd_copy_back_deps, sd_delete_dep, sd_debug_lists):
7728         Ditto.
7729
7730         * sched-deps.c (init_dep_1): Make global.
7731         (DUMP_DEP_PRO, DUMP_DEP_CON, DUMP_DEP_STATUS, DUMP_DEP_ALL): New
7732         constants.
7733         (dump_dep): New static function.
7734         (dump_dep_flags): New static variable.
7735         (sd_debug_dep): New function.
7736         (add_to_deps_list, remove_from_deps_list): Update 'n_links' field of
7737         the list.
7738         (move_dep_link): Use remove_from_deps_list (), instead of
7739         detach_dep_link ().
7740         (dep_links_consistent_p, dump_dep_links, debug_dep_links): Remove.
7741         (dep_link_is_detached_p): New static function.
7742         (deps_obstack, dl_obstack, dn_obstack): Remove.  Use dn_pool, dl_pool
7743         instead.
7744         (dn_pool, dl_pool): New alloc_pools.
7745         (dn_pool_diff, dl_pool_diff): New static variables.
7746         (create_dep_node, delete_dep_node): New static function.
7747         (create_deps_list): Make it static.  Use alloc_pool 'dl_pool'.
7748         (deps_list_empty_p): Make it static.  Use 'n_links' field.
7749         (deps_pools_are_empty_p): New static function.
7750         (alloc_deps_list, delete_deps_list): Remove.
7751         (dump_deps_list, debug_deps_list, add_back_dep_to_deps_list): Remove.
7752         (find_link_by_pro_in_deps_list, find_link_by_con_in_deps_list): Ditto.
7753         (copy_deps_list_change_con): Remove.  Use sd_copy_back_deps () instead.
7754         (forward_dependency_cache): Remove.
7755         (maybe_add_or_update_back_dep_1, add_or_update_back_dep_1): Remove
7756         'back' from the names.  Change signature to use dep_t instead of
7757         equivalent quad.
7758         (add_back_dep): Ditto.  Make global.
7759         (check_dep_status): Rename to check_dep ().
7760         (sd_next_list, sd_lists_size, sd_lists_empty_p, sd_init_insn):
7761         New functions.
7762         (sd_finish_insn): Ditto.
7763         (sd_find_dep_between_no_cache): New static function.
7764         (sd_find_dep_between): New function.
7765         (ask_dependency_caches, set_dependency_caches): New static functions.
7766         (update_dependency_caches, change_spec_dep_to_hard, update_dep): Ditto.
7767         (add_or_update_dep_1): Separate pieces of functionality into
7768         ask_dependency_caches (), update_dependency_caches (),
7769         change_spec_dep_to_hard (), update_dep ().
7770         (get_back_and_forw_lists): New static function.
7771         (sd_add_dep): Separate setting of dependency caches into
7772         set_dependency_caches ().
7773         (sd_add_or_update_dep, sd_resolve_dep, sd_copy_back_deps):
7774         New functions.
7775         (sd_delete_dep): Ditto.
7776         (DUMP_LISTS_SIZE, DUMP_LISTS_DEPS, DUMP_LISTS_ALL): New constants.
7777         (dump_lists): New static function.
7778         (sd_debug_lists): New debug function.
7779         (delete_all_dependences, fixup_sched_groups): Update to use
7780         sd_* infrastructure.
7781         (sched_analyze_2): Create data-speculative dependency only if
7782         data-speculation is enabled.
7783         (sched_analyze_insn): If insn cannot be speculative, make all its
7784         dependencies non-speculative.
7785         (sched_analyze): Use sd_init_insn ().
7786         (add_forw_dep, compute_forward_dependencies): Remove.
7787         (delete_dep_nodes_in_back_deps): New static function.
7788         (sched_free_deps): New function.
7789         (init_dependency_caches): Init alloc_pools.
7790         (extend_depedency_caches): Update after removing of
7791         forward_dependency_cache.
7792         (free_dependency_caches): Ditto.  Free alloc_pools.
7793         (adjust_add_sorted_back_dep, adjust_back_add_forw_dep): Remove.
7794         (delete_forw_dep, add_or_update_back_dep, add_or_update_back_forw_dep):
7795         Ditto.
7796         (add_back_forw_dep, delete_back_forw_dep): Ditto.
7797         (add_dependence): Use init_dep ().
7798         (get_dep_weak_1): New static function.
7799         (get_dep_weak): Move logic to get_dep_weak_1 ().
7800         (dump_ds): New static function moved from haifa-sched.c:
7801         debug_spec_status ().
7802         (debug_ds): New debug function.
7803         (check_dep_status): Rename to check_dep ().  Update to check whole
7804         dependencies.
7805
7806         * haifa-sched.c (spec_info): Make global.
7807         (added_recovery_block_p): Rename to
7808         'haifa_recovery_block_was_added_during_current_schedule_block_p'.
7809         (haifa_recovery_block_was_added_during_scheduling_p): New variable.
7810         (dep_cost, priority, rank_for_schedule, schedule_insn): Update
7811         to use new interfaces.
7812         (ok_for_early_queue_removal): Ditto.
7813         (schedule_block): Initialize logical uids of insns emitted by the
7814         target.
7815         (sched_init): Initialize new variable.
7816         (fix_inter_tick, try_ready, fix_tick_ready): Update to use new
7817         interfaces.
7818         (extend_global): Initialize insn data.
7819         (init_h_i_d): Remove code that is now handled in sd_init_insn ().
7820         (process_insn_forw_deps_be_in_spec): Change signature.  Update to use
7821         new interfaces.
7822         (add_to_speculative_block): Update to use new interfaces.
7823         (create_recovery_block): Set new variables.
7824         (create_check_block_twin, fix_recovery_deps): Update to use new
7825         interfaces.
7826         (sched_insn_is_legitimate_for_speculation_p): New function.
7827         (speculate_insn): Move checking logic to
7828         sched_insn_is_legitimate_for_speculation_p ().
7829         (sched_remove_insn): Finalize sched-deps information of instruction.
7830         (clear_priorities, add_jump_dependencies): Update to use new
7831         interfaces.
7832         (debug_spec_status): Rename to dump_ds () and move to sched-deps.c.
7833         
7834         * sched-rgn.c (set_spec_fed, find_conditional_protection): Update
7835         to use new interfaces.
7836         (is_conditionally_protected, is_pfree, is_prisky) Ditto.
7837         (new_ready): Try to use control speculation only if it is available.
7838         (add_branch_dependences): Update to use new interfaces.
7839         (compute_block_backward_dependences): Rename to
7840         compute_block_dependences ().  Call
7841         targetm.sched.dependencies_evaluation_hook ().
7842         (free_block_dependencies): New static function.
7843         (debug_dependencies): Update to use new interfaces.
7844         (schedule_region): Remove separate computation of forward dependencies.
7845         Move call of targetm.sched.dependencies_evaluation_hook () to
7846         compute_block_dependences ().  Free dependencies at the end of
7847         scheduling the region.
7848
7849         * sched-ebb.c (earliest_block_with_similiar_load): Update to use
7850         new interfaces.
7851         (add_deps_for_risky_insns): Ditto.
7852         (schedule_ebb): Remove separate computation of forward dependencies.
7853         Free dependencies at the end of scheduling the ebb.
7854
7855         * ddg.c (create_ddg_dependence): Update to use new interfaces.
7856         (build_intra_loop_deps): Ditto.  Remove separate computation of
7857         forward dependencies.  Free sched-deps dependencies.
7858
7859         * config/ia64/ia64.c (ia64_dependencies_evaluation_hook): Update
7860         to use new interfaces.
7861         (ia64_dfa_new_cycle, ia64_gen_check): Ditto.
7862
7863         * config/rs6000/rs6000.c (rs6000_is_costly_dependence): Update to use
7864         new interfaces.
7865         (is_costly_group): Ditto.
7866
7867 2007-08-14  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
7868
7869         * alias.c (rtx_equal_for_memref_p): Constify.
7870         * basic-block.h (const_edge, const_basic_block): New.
7871         (reg_set_to_hard_reg_set, dfs_enumerate_from, single_succ_p,
7872         single_pred_p, single_succ_edge, single_pred_edge, single_succ,
7873         single_pred, maybe_hot_bb_p, probably_cold_bb_p,
7874         probably_never_executed_bb_p, edge_probability_reliable_p,
7875         br_prob_note_reliable_p, forwarder_block_p, flow_nodes_print,
7876         inside_basic_block_p, control_flow_insn_p, dominated_by_p):
7877         Likewise.
7878         * bb-reorder.c (better_edge_p, push_to_next_round_p): Likewise.
7879         * bt-load.c (basic_block_freq, insn_sets_btr_p, can_move_up):
7880         Likewise.
7881         * cfganal.c (flow_active_insn_p, forwarder_block_p,
7882         flow_nodes_print, dfs_enumerate_from): Likewise.
7883         * cfgbuild.c (count_basic_blocks, inside_basic_block_p,
7884         control_flow_insn_p, count_basic_blocks): Likewise.
7885         * cfgloop.c (flow_bb_inside_loop_p, glb_enum_p,
7886         get_loop_body_with_size, loop_exit_edge_p): Likewise.
7887         * cfgloop.h (flow_bb_inside_loop_p, num_loop_insns,
7888         average_num_loop_insns, loop_exit_edge_p,
7889         just_once_each_iteration_p, can_duplicate_loop_p): Likewise.
7890         * cfgloopanal.c (just_once_each_iteration_p, num_loop_insns,
7891         average_num_loop_insns, seq_cost): Likewise.
7892         * cfgloopmanip.c (rpe_enum_p, can_duplicate_loop_p): Likewise.
7893         * dominance.c (dominated_by_p): Likewise.
7894         * emit-rtl.c (validate_subreg): Likewise.
7895         * except.c (can_throw_internal, can_throw_external): Likewise.
7896         * except.h (can_throw_internal, can_throw_external): Likewise.
7897         * gcse.c (gcse_constant_p, oprs_unchanged_p, oprs_anticipatable_p,
7898         oprs_available_p, hash_expr, expr_equiv_p, oprs_not_set_p,
7899         compute_transp, load_killed_in_block_p, reg_killed_on_edge,
7900         simple_mem, store_ops_ok, load_kills_store, find_loads,
7901         store_killed_in_insn, store_killed_after, store_killed_before,
7902         gcse_mem_operand, implicit_set_cond_p, store_killed_in_pat):
7903         Likewise.
7904         * ifcvt.c (count_bb_insns, cheap_bb_rtx_cost_p, noce_operand_ok,
7905         noce_mem_write_may_trap_or_fault_p): Likewise.
7906         * pointer-set.c (pointer_set_contains, pointer_map_contains):
7907         Likewise.
7908         * pointer-set.h (pointer_set_contains, pointer_map_contains):
7909         Likewise.
7910         * predict.c (can_predict_insn_p, maybe_hot_bb_p,
7911         probably_cold_bb_p, probably_never_executed_bb_p,
7912         edge_probability_reliable_p, br_prob_note_reliable_p,
7913         can_predict_insn_p): Likewise.
7914         * regclass.c (reg_set_to_hard_reg_set): Likewise.
7915         * resource.c (return_insn_p): Likewise.
7916         * rtl.h (reg_set_between_p, reg_set_p, validate_subreg):
7917         Likewise.
7918         * rtlanal.c (reg_set_between_p, reg_set_p): Likewise.
7919         * tracer.c (count_insns, ignore_bb_p, better_p): Likewise.
7920         * tree-cfg.c (verify_gimple_unary_expr, verify_gimple_binary_expr,
7921         verify_gimple_modify_stmt): Likewise.
7922         * tree-chrec.c (is_not_constant_evolution,
7923         is_multivariate_chrec_rec, is_multivariate_chrec,
7924         chrec_contains_symbols, chrec_contains_undetermined,
7925         tree_contains_chrecs, evolution_function_is_affine_multivariate_p,
7926         evolution_function_is_univariate_p, avoid_arithmetics_in_type_p,
7927         eq_evolutions_p, scev_direction): Likewise.
7928         * tree-chrec.h (automatically_generated_chrec_p, tree_is_chrec,
7929         eq_evolutions_p, is_multivariate_chrec, chrec_contains_symbols,
7930         chrec_contains_symbols_defined_in_loop,
7931         chrec_contains_undetermined, tree_contains_chrecs,
7932         evolution_function_is_affine_multivariate_p,
7933         evolution_function_is_univariate_p, chrec_zerop,
7934         evolution_function_is_constant_p, evolution_function_is_affine_p,
7935         evolution_function_is_affine_or_constant_p,
7936         tree_does_not_contain_chrecs, chrec_type): Likewise.
7937         * tree-data-ref.c (tree_fold_divides_p,
7938         object_address_invariant_in_loop_p, dr_may_alias_p,
7939         ziv_subscript_p, siv_subscript_p, gcd_of_steps_may_divide_p,
7940         same_access_functions, constant_access_functions,
7941         access_functions_are_affine_or_constant_p, find_vertex_for_stmt):
7942         Likewise.
7943         * tree-flow.h (scev_direction): Likewise.
7944         * tree-gimple.c (is_gimple_stmt): Likewise.
7945         * tree-outof-ssa.c (identical_copies_p, identical_stmt_lists_p):
7946         Likewise.
7947         * tree-pretty-print.c (op_prio): Likewise.
7948         * tree-scalar-evolution.c (chrec_contains_symbols_defined_in_loop,
7949         analyzable_condition, backedge_phi_arg_p): Likewise.
7950         * tree-scalar-evolution.h (get_chrec_loop): Likewise.
7951         * tree-ssa-operands.c (get_name_decl, operand_build_cmp): Likewise.
7952         * tree-ssa-threadupdate.c (dbds_continue_enumeration_p):
7953         Likewise.
7954
7955 2007-08-13  Dan Hipschman  <dsh@google.com>
7956
7957         PR c/32953
7958         * c-format.c (check_format_arg): Move check for zero-length
7959         format strings below the check for unterminated strings.
7960
7961 2007-08-13  Andrew Pinski  <pinskia@gmail.com>
7962
7963         PR C/30427
7964         * c-typeck.c (build_unary_op <case BIT_NOT_EXPR>): Reject vector float
7965         types.
7966
7967 2007-08-13  Nick Clifton  <nickc@redhat.com>
7968
7969         * config/arm/arm_neon.h: Revert GPLv3 patch to this file.
7970
7971 2007-08-12  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
7972
7973         PR fortran/32860
7974         * c-format.c (gcc_gfc_length_specs): New array.
7975         (gcc_gfc_char_table): Add unsigned specifier, and references to
7976         the l length modifier.
7977         (format_types_orig): Use the new gcc_gfc_length_specs.
7978
7979 2007-08-12  Sa Liu  <saliu@de.ibm.com>
7980
7981         * emit-rtl.c (try_split): Relink the insns with REG_LIBCALL note
7982         and with REG_RETVAL note after split.
7983
7984 2007-08-11  David Daney  <ddaney@avtrex.com>
7985
7986         * config/mips/mips.c (mips_sched_reorder): Mark cycle parameter
7987         as ATTRIBUTE_UNUSED.
7988
7989 2007-08-11  David Edelsohn  <edelsohn@gnu.org>
7990             Segher Boessenkool  <segher@kernel.crashing.org>
7991
7992         * config/rs6000/rs6000.h (CC1_CPU_SPEC): Define as empty string if
7993         HAVE_LOCAL_CPU_DETECT not defined.
7994
7995 2007-08-11  Jan Hubicka  <jh@suse.cz>
7996
7997         * cgraphunit.c (record_cdtor_fn): Declare all cdtors always inlined.
7998         (cgraph_process_new_functions): Honor previous value of
7999         disregard_inline_limits.
8000         * ipa-inline.c (compute_inline_parameters): Likewise.
8001
8002 2007-08-11  Ian Lance Taylor  <iant@google.com>
8003
8004         * alias.h (alias_set_type): Define new type.
8005         (ALIAS_SET_MEMORY_BARRIER): Use it.
8006         * rtl.h: Include alias.h.
8007         (struct mem_attrs): Use alias_set_type.
8008         * tree.h: Include alias.h
8009         (struct tree_type): Use alias_set_type.
8010         (struct tree_struct_field_tag): Likewise.
8011         (struct tree_decl_common): Likewise.
8012         * alias.c (struct alias_set_entry): Use alias_set_type.
8013         (get_alias_set_entry, alias_set_subset_of): Likewise.
8014         (alias_sets_conflict_p): Likewise.
8015         (alias_sets_must_conflict_p): Likewise.
8016         (objects_must_conflict_p): Likewise.
8017         (get_alias_set, new_alias_set): Likewise.
8018         (record_alias_subset, record_component_aliases): Likewise.
8019         (varargs_set, frame_set): Change to alias_set_type.
8020         (get_varargs_alias_set): Use alias_set_type.
8021         (get_frame_alias_set): Likewise.
8022         * builtins.c (setjmp_alias_set): Change to alias_set_type.
8023         * dse.c (struct store_info): Use alias_set_type.
8024         (struct read_info, struct clear_alias_mode_holder): Likewise.
8025         (clear_alias_set_lookup, canon_address): Likewise.
8026         (record_store, check_mem_read_rtx): Likewise.
8027         (dse_record_singleton_alias_set): Likewise.
8028         (dse_invalidate_singleton_alias_set): Likewise.
8029         * emit-rtl.c (get_mem_attrs): Likewise.
8030         (set_mem_attributes_minus_bitpos): Likewise.
8031         (set_mem_alias_set): Likewise.
8032         * expr.c (store_constructor_field, store_field): Likewise.
8033         * gimplify.c (struct gimplify_init_ctor_preeval_data): Likewise.
8034         * langhooks.c (lhd_get_alias_set): Likewise.
8035         * langhooks-def.h (lhd_get_alias_set): Likewise.
8036         * reload1.c (alter_reg): Likewise.
8037         * tree-flow.h (struct fieldoff): Likewise.
8038         * tree-ssa-alias.c (struct alias_map_d): Likewise.
8039         (may_alias_p, get_smt_for, create_sft): Likewise.
8040         * tree-ssa-alias-warnings.c (nonstandard_alias_types_p): Likewise.
8041         * tree-ssa-structalias.c (set_uids_in_ptset): Likewise.
8042         (merge_smts_into): Likewise.
8043         * varasm.c (const_alias_set): Likewise.
8044         * c-common.c (strict_aliasing_warning): Likewise.
8045         (c_common_get_alias_set): Likewise.
8046         * dse.h (dse_record_singleton_alias_set): Update declaration.
8047         (dse_invalidate_singleton_alias_set): Likewise.
8048         * emit-rtl.h (set_mem_alias_set): Likewise.
8049         * c-common.h (c_common_get_alias_set): Likewise.
8050         * print-rtl.c (print_rtx): Cast MEM_ALIAS_SET when printing it.
8051         * print-tree.c (print_node): Likewise.
8052         * config/alpha/alpha.c (alpha_sr_alias_set): Change to
8053         alias_set_type.
8054         (alpha_setup_incoming_varargs): Use alias_set_type.
8055         * config/i386/i386.c (setup_incoming_varargs_64): Use
8056         alias_set_type.
8057         (setup_incoming_varargs_ms_64): Likewise.
8058         (ix86_GOT_alias_set): Likewise.
8059         * config/mn10300/mn10300.c (mn10300_builtin_saveregs): Likewise.
8060         * config/rs6000/rs6000.c (setup_incoming_varargs): Likewise.
8061         (set): Change to alias_set_type.
8062         (get_TOC_alias_set): Use alias_set_type.
8063         * config/rs6000/rs6000-protos.h (get_TOC_alias_set): Update
8064         declaration.
8065         * config/sh/sh.c (sh_builtin_saveregs): Use alias_set_type.
8066         * config/sparc/sparc.c (sparc_sr_alias_set): Change to
8067         alias_set_type.
8068         (struct_value_alias_set): Likewise.
8069         * Makefile.in (GTFILES): Add $(srcdir)/alias.h.
8070
8071 2007-08-11  Richard Sandiford  <richard@codesourcery.com>
8072
8073         * config/vxworks-dummy.h (TARGET_VXWORKS): Define.
8074         * config/vxworks.h (TARGET_VXWORKS): Override.
8075         * config/mips/mips.h (TARGET_CPU_CPP_BUILTINS): Don't define
8076         "mips" if TARGET_VXWORKS.
8077
8078 2007-08-11  Richard Sandiford  <richard@codesourcery.com>
8079
8080         * calls.c (avoid_likely_spilled_reg): New function.
8081         (expand_call): Use it.
8082
8083 2007-08-11  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
8084
8085         * c-typeck.c (build_c_cast): Add OPT_Wcast_qual to warnings.
8086
8087 2007-08-10  Adam Nemet  <anemet@caviumnetworks.com>
8088
8089         * config/mips/predicates.md (const_call_insn_operand): Invoke
8090         SYMBOL_REF_LONG_CALL_P only on SYMBOL_REFs.
8091
8092 2007-08-10  David Edelsohn  <edelsohn@gnu.org>
8093
8094         PR target/33042
8095         * config/rs6000/driver-rs6000.c: Include link.h.
8096         Use ElfW instead of wordsize-specif typedef.
8097
8098 2007-08-10  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
8099
8100         * system.h (CONST_CAST): New.
8101         * c-decl.c (c_make_fname_decl): Use it.
8102         * c-lex.c (cb_ident, lex_string): Likewise.
8103         * c-typeck.c (free_all_tagged_tu_seen_up_to): Likewise.
8104         * gcc.c (set_spec, read_specs, for_each_path, execute, do_spec_1,
8105         give_switch, set_multilib_dir): Likewise.
8106         * gengtype-parse.c (string_seq, typedef_name): Likewise.
8107         * passes.c (execute_one_pass): Likewise.
8108         * prefix.c (update_path): Likewise.
8109         * pretty-print.c (pp_base_destroy_prefix): Likewise.
8110         * tree.c (build_string): Likewise.
8111
8112 2007-08-10  Aldy Hernandez  <aldyh@redhat.com>
8113
8114         * tree-flow-inline.h (is_exec_stmt): Remove.
8115         (is_label_stmt): Remove.
8116         * tree-flow.h: Remove prototypes for is_exec_stmt, get_filename, and
8117         is_label_stmt.
8118
8119 2007-08-10  Andreas Krebbel  <krebbel1@de.ibm.com>
8120
8121         * lower-subreg.c (resolve_shift_zext): Don't adjust
8122         src_reg_num for wordmode operands.
8123
8124 2007-08-10  Sandra Loosemore  <sandra@codesourcery.com>
8125             David Ung  <davidu@mips.com>
8126
8127         * config/mips/mips.c (TARGET_SCHED_INIT): Define.
8128         (TARGET_SCHED_REORDER2): Define.
8129         (mips_maybe_swap_ready): New.
8130         (mips_last_74k_agen_insn): New.
8131         (mips_74k_agen_init): New.
8132         (mips_74k_agen_reorder): New function to group loads and stores
8133         in the ready queue.
8134         (mips_sched_init): New.  
8135         (mips_sched_reorder): Don't do initialization here.  Call
8136         mips_74k_agen_reorder.
8137         (mips_variable_issue): Call mips_74k_agen_init.
8138
8139 2007-08-10  Aldy Hernandez  <aldyh@redhat.com>
8140
8141         * tree-flow-inline.h (get_filename): Remove.
8142
8143 2007-08-10  Richard Sandiford  <richard@codesourcery.com>
8144
8145         * config/mips/mips-protos.h (mips_address_insns): Add a boolean
8146         argument.
8147         (mips_fetch_insns): Delete in favor of...
8148         (mips_load_store_insns): ...this new function.
8149         * config/mips/mips.c (mips_address_insns): Add a boolean argument
8150         to say whether multiword moves _might_ be split.
8151         (mips_fetch_insns): Delete in favor of...
8152         (mips_load_store_insns): ...this new function.
8153         (mips_rtx_costs): Update the call to mips_address_insns.
8154         (mips_address_cost): Likewise.
8155         * config/mips/mips.md (length): Use mips_load_store_insns instead
8156         of mips_fetch_insns.
8157         * config/mips/constraints.md (R): Use mips_address_insns rather
8158         than mips_fetch_insns.  Assume that the move never needs to be split.
8159
8160 2007-08-09  Sandra Loosemore  <sandra@codesourcery.com>
8161
8162         * config/mips/mips.opt (mhard-float, msoft-float): Make these
8163         control TARGET_HARD_FLOAT_ABI and TARGET_SOFT_FLOAT_ABI, rather
8164         than TARGET_HARD_FLOAT and TARGET_SOFT_FLOAT.  
8165         * config/mips/mips.h (mips16_hard_float): Delete.
8166         (TARGET_HARD_FLOAT_ABI, TARGET_SOFT_FLOAT_ABI): Delete these
8167         definitions, and replace with....
8168         (TARGET_HARD_FLOAT, TARGET_SOFT_FLOAT): Define.
8169         * config/mips/mips.c (mips16_hard_float): Delete.  Replace
8170         all references with (TARGET_MIPS16 && TARGET_HARD_FLOAT_ABI).
8171         (MIPS_MARCH_CONTROLS_SOFT_FLOAT): Update comments.
8172         (override_options): Replace MASK_SOFT_FLOAT references with
8173         MASK_SOFT_FLOAT_ABI.  Delete twiddling with MASK_SOFT_FLOAT
8174         and mips16_hard_float when TARGET_MIPS16.
8175         
8176 2007-08-09  Andrew Pinski  <andrew_pinski@playstation.sony.com>
8177
8178         PR c/32796
8179         * c-typeck.c (build_binary_op): Check for non pointer types before
8180         calling int_fits_type_p.
8181
8182 2007-08-09  Andrew Pinski  <andrew_pinski@playstation.sony.com>
8183
8184         PR middle-end/32813
8185         * fold-const.c (omit_one_operand): Return only the ommitted expression
8186         if the result is an empty statement.
8187         (pedantic_omit_one_operand): Likewise.
8188
8189 2007-08-09  Daniel Berlin  <dberlin@dberlin.org>
8190
8191         * c-typeck.c (readonly_error): Improve error for assignment.
8192         
8193         * c-pretty-print.c (pp_c_additive_expression): Handle pointer-plus
8194         expression. 
8195         (pp_c_expression): Ditto.
8196
8197 2007-08-09  Simon Baldwin  <simonb@google.com>
8198
8199         * simplify-rtx.c (simplify_binary_operation_1): Removed erroneous
8200         break that was preventing simplify_associative_operation() for xor.
8201
8202 2007-08-09  Sandra Loosemore  <sandra@codesourcery.com>
8203             Nigel Stephens  <nigel@mips.com>
8204
8205         * doc/tm.texi (CLZ_DEFINED_VALUE_AT_ZERO, CTZ_DEFINED_VALUE_AT_ZERO):
8206         Document change in interpretation of value from boolean to
8207         tri-state integer.
8208         * optabs.c (expand_ffs, expand_ctz): New functions to compute
8209         ffs and ctz using clz.
8210         (expand_unop): Call them.
8211         * config/rs6000/rs6000.h (CLZ_DEFINED_VALUE_AT_ZERO): Fix its
8212         result value.
8213         (CTZ_DEFINED_VALUE_AT_ZERO): Likewise.
8214         * config/mips/mips.h (CLZ_DEFINED_VALUE_AT_ZERO): Likewise, to
8215         enable the new ffs expansion on this target.
8216
8217 2007-08-09  Jan Hubicka  <jh@suse.cz>
8218
8219         * optabs.c (expand_widen_pattern_expr): Use optabs accestors.
8220         (expand_ternary_op): Likewise.
8221         (expand_vec_shift_expr): Likewise.
8222         (expand_binop_directly): Likewise.
8223         (expand_binop): Likewise.
8224         (sign_expand_binop): Likewise.
8225         (expand_twoval_unop): Likewise.
8226         (expand_twoval_binop): Likewise.
8227         (expand_twoval_binop_libfunc): Likewise.
8228         (widen_clz): Likewise.
8229         (widen_bswap): Likewise.
8230         (expand_parity): Likewise.
8231         (expand_unop): Likewise.
8232         (expand_abs_nojump): Likewise.
8233         (expand_copysign): Likewise.
8234         (emit_no_conflict_block): Likewise.
8235         (emit_libcall_block): Likewise.
8236         (can_compare_p): Likewise.
8237         (prepare_cmp_insn): Likewise.
8238         (emit_cmp_and_jump_insn_1): Likewise.
8239         (prepare_float_lib_cmp): Likewise.
8240         (emit_conditional_add): Likewise.
8241         (gen_add2_insn): Likewise.
8242         (have_add2_insn): Likewise.
8243         (gen_sub2_insn): Likewise.
8244         (have_sub2_insn): Likewise.
8245         (can_extend_p): Likewise.
8246         (can_fix_p): Likewise.
8247         (can_float_p): Likewise.
8248         (expand_float): Likewise.
8249         (expand_fix): Likewise.
8250         (expand_sfix_optab): Likewise.
8251         (new_optab): Likewise.
8252         (new_convert_optab): Likewise.
8253         (init_libfuncs): Likewise.
8254         (init_interclass_conv_libfuncs): Likewise.
8255         (init_intraclass_conv_libfuncs): Likewise.
8256         (set_conv_libfunc): Likewise.
8257         (init_optabs): Likewise.
8258         (debug_optab_libfuncs): Likewise.
8259         (gen_cond_trap): Likewise.
8260         * optabs.h (optab_handler, convert_optab_hanlder): New.
8261         * genopinit.c: Update optabs generation table.
8262         * reload.c (find_reloads_address_1): Use optabs accestors.
8263         * builtins.c (expand_builtin_mathfn): Likewise.
8264         (expand_builtin_mathfn_2): Likewise.
8265         (expand_builtin_mathfn_3): Likewise.
8266         (expand_builtin_interclass_mathfn): Likewise.
8267         (expand_builtin_sincos): Likewise.
8268         (expand_builtin_cexpi): Likewise.
8269         (expand_builtin_powi): Likewise.
8270         (expand_builtin_strlen): Likewise.
8271         * dojump.c (do_jump): Likewise.
8272         * expr.c (convert_move): Likewise.
8273         (move_by_pieces): Likewise.
8274         (move_by_pieces_ninsns): Likewise.
8275         (can_store_by_pieces): Likewise.
8276         (store_by_pieces_1): Likewise.
8277         (emit_move_via_integer): Likewise.
8278         (emit_move_complex): Likewise.
8279         (emit_move_ccmode): Likewise.
8280         (emit_move_insn_1): Likewise.
8281         (emit_single_push_insn): Likewise.
8282         (store_constructor): Likewise.
8283         (expand_expr_real_1): Likewise.
8284         (do_store_flag): Likewise.
8285         * ada/misc.c (gnat_compute_largest_alignment): Likewise.
8286         (enumerate_modes): Likewise.
8287         * tree-vectorizer.c (vect_supportable_dr_alignment): Likewise.
8288         (supportable_widening_operation): Likewise.
8289         (supportable_narrowing_operation): Likewise.
8290         * expmed.c (store_bit_field_1): Likewise.
8291         (extract_bit_field_1): Likewise.
8292         (expand_mult_highpart_optab): Likewise.
8293         (expand_smod_pow2): Likewise.
8294         (expand_divmod): Likewise.
8295         (emit_store_flag): Likewise.
8296         * tree-vect-patterns.c
8297         (vect_pattern_recog_1): Likewise.
8298         * tree-ssa-loop-prefetch.c
8299         (nontemporal_store_p): Likewise.
8300         * tree-vect-transform.c (vect_model_reduction_cost): Likewise.
8301         (vect_create_epilog_for_reduction): Likewise.
8302         (vectorizable_reduction): Likewise.
8303         (vectorizable_operation): Likewise.
8304         (vect_strided_store_supported): Likewise.
8305         (vectorizable_store): Likewise.
8306         (vect_strided_load_supported): Likewise.
8307         (vectorizable_load): Likewise.
8308         * combine.c (simplify_comparison): Likewise.
8309         * tree-vect-generic.c
8310         (type_for_widest_vector_mode): Likewise.
8311         (expand_vector_operations_1): Likewise.
8312         * config/spu/spu.c (spu_expand_mov): Likewise.
8313         (spu_emit_vector_compare): Likewise.
8314         * config/rs6000/rs6000.c
8315         (rs6000_emit_vector_compare): Likewise.
8316         * stmt.c (add_case_node): Likewise.
8317         * reload1.c (gen_reload):
8318
8319 2007-08-09  Michael Matz  <matz@suse.de>
8320
8321         * tree.h (fixed_zerop): Declare as taking a const_tree.
8322         * tree.c (fixed_zerop): Take a const_tree.
8323
8324 2007-08-09  Ira Rosen  <irar@il.ibm.com>
8325
8326         * tree-vect-transform.c (vectorizable_store): Remove call to
8327         copy_virtual_operands() and call mark_symbols_for_renaming() for
8328         the created vector store.
8329         (vect_setup_realignment): Don't call copy_virtual_operands() and
8330         update_vuses_to_preheader(). 
8331         (vectorizable_load): Don't call copy_virtual_operands(). 
8332         (update_vuses_to_preheader): Remove.
8333
8334 2007-08-08  Chao-ying Fu  <fu@mips.com>
8335
8336         * tree.def (FIXED_POINT_TYPE): New type.
8337         (FIXED_CST): New constant.
8338         (FIXED_CONVERT_EXPR): New expr.
8339         * doc/c-tree.texi (Types): Document FIXED_POINT_TYPE.
8340         (Expressions): Document FIXED_CST and FIXED_CONVERT_EXPR.
8341         * tree.h (struct tree_base): Add saturating_flag.
8342         Remove one bit of spare for saturating_flag.
8343         (NUMERICAL_TYPE_CHECK): Support FIXED_POINT_TYPE.
8344         (NON_SAT_FIXED_POINT_TYPE_P, SAT_FIXED_POINT_TYPE_P,
8345         FIXED_POINT_TYPE_P): Define.
8346         (TYPE_SATURATING): Define.
8347         (TREE_FIXED_CST_PTR, TREE_FIXED_CST): Define.
8348         (struct tree_fixed_cst): New.
8349         (TYPE_IBIT, TYPE_FBIT): Define.
8350         (tree_node): Add fixed_cst.
8351         (enum tree_index): Add new enumeration values of
8352         TI_SAT_SFRACT_TYPE, TI_SAT_FRACT_TYPE, TI_SAT_LFRACT_TYPE,
8353         TI_SAT_LLFRACT_TYPE, TI_SAT_USFRACT_TYPE, TI_SAT_UFRACT_TYPE,
8354         TI_SAT_ULFRACT_TYPE, TI_SAT_ULLFRACT_TYPE, TI_SFRACT_TYPE,
8355         TI_FRACT_TYPE, TI_LFRACT_TYPE, TI_LLFRACT_TYPE, TI_USFRACT_TYPE,
8356         TI_UFRACT_TYPE, TI_ULFRACT_TYPE, TI_ULLFRACT_TYPE,
8357         TI_SAT_SACCUM_TYPE, TI_SAT_ACCUM_TYPE, TI_SAT_LACCUM_TYPE,
8358         TI_SAT_LLACCUM_TYPE, TI_SAT_USACCUM_TYPE, TI_SAT_UACCUM_TYPE,
8359         TI_SAT_ULACCUM_TYPE, TI_SAT_ULLACCUM_TYPE, TI_SACCUM_TYPE,
8360         TI_ACCUM_TYPE, TI_LACCUM_TYPE, TI_LLACCUM_TYPE, TI_USACCUM_TYPE,
8361         TI_UACCUM_TYPE, TI_ULACCUM_TYPE, TI_ULLACCUM_TYPE,
8362         TI_QQ_TYPE, TI_HQ_TYPE,_TYPE, TI_SQ_TYPE, TI_DQ_TYPE, TI_TQ_TYPE,
8363         TI_UQQ_TYPE, TI_UHQ_TYPE, TI_USQ_TYPE, TI_UDQ_TYPE, TI_UTQ_TYPE,
8364         TI_SAT_QQ_TYPE, TI_SAT_HQ_TYPE, TI_SAT_SQ_TYPE, TI_SAT_DQ_TYPE,
8365         TI_SAT_TQ_TYPE, TI_SAT_UQQ_TYPE, TI_SAT_UHQ_TYPE, TI_SAT_USQ_TYPE,
8366         TI_SAT_UDQ_TYPE, TI_SAT_UTQ_TYPE, TI_HA_TYPE, TI_SA_TYPE, TI_DA_TYPE,
8367         TI_TA_TYPE, TI_UHA_TYPE, TI_USA_TYPE, TI_UDA_TYPE, TI_UTA_TYPE,
8368         TI_SAT_HA_TYPE, TI_SAT_SA_TYPE, TI_SAT_DA_TYPE, TI_SAT_TA_TYPE,
8369         TI_SAT_UHA_TYPE, TI_SAT_USA_TYPE, TI_SAT_UDA_TYPE, TI_SAT_UTA_TYPE.
8370         (sat_short_fract_type_node, sat_fract_type_node,
8371         sat_long_fract_type_node, sat_long_long_fract_type_node,
8372         sat_unsigned_short_fract_type_node, sat_unsigned_fract_type_node,
8373         sat_unsigned_long_fract_type_node,
8374         sat_unsigned_long_long_fract_type_node, short_fract_type_node,
8375         fract_type_node, long_fract_type_node, long_long_fract_type_node,
8376         unsigned_short_fract_type_node, unsigned_fract_type_node,
8377         unsigned_long_fract_type_node, unsigned_long_long_fract_type_node,
8378         sat_short_accum_type_node, sat_accum_type_node,
8379         sat_long_accum_type_node, sat_long_long_accum_type_node,
8380         sat_unsigned_short_accum_type_node, sat_unsigned_accum_type_node,
8381         sat_unsigned_long_accum_type_node,
8382         sat_unsigned_long_long_accum_type_node, short_accum_type_node,
8383         accum_type_node, long_accum_type_node, long_long_accum_type_node,
8384         unsigned_short_accum_type_node, unsigned_accum_type_node,
8385         unsigned_long_accum_type_node, unsigned_long_long_accum_type_node,
8386         qq_type_node, hq_type_node, sq_type_node, dq_type_node, tq_type_node,
8387         uqq_type_node, uhq_type_node, usq_type_node, udq_type_node,
8388         utq_type_node, sat_qq_type_node, sat_hq_type_node, sat_sq_type_node,
8389         sat_dq_type_node, sat_tq_type_node, sat_uqq_type_node,
8390         sat_uhq_type_node, sat_usq_type_node, sat_udq_type_node,
8391         sat_utq_type_node, ha_type_node, sa_type_node, da_type_node,
8392         ta_type_node, uha_type_node, usa_type_node, uda_type_node,
8393         uta_type_node, sat_ha_type_node, sat_sa_type_node, sat_da_type_node,
8394         sat_ta_type_node, sat_uha_type_node, sat_usa_type_node,
8395         sat_uda_type_node, sat_uta_type_node): New macro.
8396         (make_fract_type, make_accum_type): Declare.
8397         (make_signed_fract_type, make_unsigned_fract_type,
8398         make_sat_signed_fract_type, make_sat_unsigned_fract_type,
8399         make_signed_accum_type, make_unsigned_accum_type,
8400         make_sat_signed_accum_type, make_sat_unsigned_accum_type,
8401         make_or_reuse_signed_fract_type, make_or_reuse_unsigned_fract_type,
8402         make_or_reuse_sat_signed_fract_type,
8403         make_or_reuse_sat_unsigned_fract_type, make_or_reuse_signed_accum_type,
8404         make_or_reuse_unsigned_accum_type, make_or_reuse_sat_signed_accum_type,
8405         make_or_reuse_sat_unsigned_accum_type): New macro.
8406         (fixed_zerop): Declare.
8407         * defaults.h (SHORT_FRACT_TYPE_SIZE, FRACT_TYPE_SIZE,
8408         LONG_FRACT_TYPE_SIZE, LONG_LONG_FRACT_TYPE_SIZE,
8409         SHORT_ACCUM_TYPE_SIZE, ACCUM_TYPE_SIZE, LONG_ACCUM_TYPE_SIZE,
8410         LONG_LONG_ACCUM_TYPE_SIZE): Define.
8411         * treestruct.def: Add TS_FIXED_CST.
8412         * Makefile.in (c-pretty-print.o): Add dependence on fixed-value.h.
8413         (tree.o): Likewise.
8414         (tree-dump.o): Likewise.
8415         (print-tree.o): Likewise.
8416         (tree-pretty-print.o): Likewise.
8417         (fold-const.o): Likewise.
8418         * tree-complex.c (some_nonzerop): Handle FIXED_CST.
8419         * tree-gimple.c (is_gimple_formal_tmp_rhs): Handle FIXED_CST.
8420         (is_gimple_min_invariant): Handle FIXED_CST.
8421         * stor-layout.c (int_mode_for_mode): Handle MODE_FRACT, MODE_UFRACT,
8422         MODE_ACCUM, MODE_UACCUM, MODE_VECTOR_FRACT, MODE_VECTOR_UFRACT,
8423         MODE_VECTOR_ACCUM, MODE_VECTOR_UACCUM.
8424         (layout_type): Handle FIXED_POINT_TYPE.
8425         (make_fract_type, make_accum_type): New functions.
8426         * tree-browser.c (browse_tree): Handle FIXED_POINT_TYPE.
8427         * tree-dump.c (fixed-value.h): New include.
8428         (dump_fixed): New function.
8429         (dequeue_and_dump): Handle FIXED_POINT_TYPE and FIXED_CST.
8430         * tree-inline.c (remap_type_1): Handle FIXED_POINT_TYPE.
8431         (estimate_num_insns_1): Handle FIXED_CST and FIXED_CONVERT_EXPR.
8432         * tree-pretty-print.c (fixed-value.h): New include.
8433         (dump_generic_node): Handle FIXED_POINT_TYPE, FIXED_CST, and
8434         FIXED_CONVERT_EXPR.
8435         * tree-scalar-evolution.c (get_scalar_evolution): Handle FIXED_CST.
8436         * tree-ssa-loop-im.c (for_each_index): Handle FIXED_CST.
8437         * tree-ssa-pre.c (poolify_tree): Handle FIXED_CST.
8438         * tree-ssa-reassoc.c (break_up_subtract_bb): We can do reassociation
8439         for non-saturating fixed-point types.
8440         (reassociate_bb): Likewise.
8441         * emit-rtl.c (fixed-value.h): New include.
8442         (fconst0, fconst1): New array.
8443         (init_emit_once): Initialize fconst0 and fconst1 for fixed-point modes.
8444         * tree-vect-generic.c expand_vector_operation): Support
8445         MODE_VECTOR_FRACT, MODE_VECTOR_UFRACT, MODE_VECTOR_ACCUM, and
8446         MODE_VECTOR_UACCUM.
8447         (type_for_widest_vector_mode): Add one parameter for the 
8448         saturating flag.
8449         Check scalar FRACT, UFRACT, ACCUM, and UACCUM mode to select their
8450         vector mode.
8451         Pass the satp parameter to type_for_mode for fixed-point types.
8452         (expand_vector_operations_1): Pass the saturating flag to
8453         type_for_widest_vector_mode.
8454         Support MODE_VECTOR_FRACT, MODE_VECTOR_UFRACT, MODE_VECTOR_ACCUM,
8455         and MODE_VECTOR_UACCUM.
8456         * tree-vect-transform.c (vect_is_simple_cond): Support FIXED_CST.
8457         (vectorizable_condition): Likewise.
8458         * tree.c (fixed-value.h): New include.
8459         (tree_code_size): Support FIXED_CST.
8460         (build_fixed): New function.
8461         (build_one_cst): Support FIXED_POINT_TYPE for accum types.
8462         (fixed_zerop): New function.
8463         (tree_node_structure): Support FIXED_CST.
8464         (type_contains_placeholder_1): Support FIXED_POINT_TYPE.
8465         (build_type_attribute_qual_variant): Handle FIXED_POINT_TYPE.
8466         (type_hash_eq): Handle FIXED_POINT_TYPE.
8467         (simple_cst_equal): Support FIXED_CST.
8468         (iterative_hash_expr): Handle FIXED_CST.
8469         (get_unwidened): Make sure type is not FIXED_POINT_TYPE.
8470         (get_narrower): Likewise.
8471         (variably_modified_type_p): Handle FIXED_POINT_TYPE.
8472         (make_or_reuse_fract_type, make_or_reuse_accum_type): New functions.
8473         (build_common_tree_nodes_2): Use MAKE_FIXED_TYPE_NODE_FAMILY and
8474         MAKE_FIXED_MODE_NODE macros to initialize fixed-point type
8475         nodes.
8476         (build_vector_type_for_mode): Handle MODE_VECTOR_FRACT,
8477         MODE_VECTOR_UFRACT, MODE_VECTOR_ACCUM, MODE_VECTOR_UACCUM.
8478         (initializer_zerop): Support FIXED_CST.
8479         (walk_tree): Handle FIXED_CST and FIXED_POINT_TYPE.
8480         * dwarf2out.c (base_type_die): Use DW_ATE_signed_fixed or
8481         DW_ATE_unsigned_fixed to describe FIXED_POINT_TYPE.
8482         (is_base_type): Handle FIXED_POINT_TYPE.
8483         (add_type_attribute): Handle FIXED_POINT_TYPE.
8484         (gen_type_die_with_usage): Handle FIXED_POINT_TYPE.
8485         * print-tree.c (fixed-value.h): New include.
8486         (print_node_brief): Support FIXED_CST.
8487         (print_node): Support FIXED_POINT_TYPE and FIXED_CST.
8488         * c-pretty-print.c (fixed-value.h): New include.
8489         (pp_c_type_specifier): Handle FIXED_POINT_TYPE.  Need to pass
8490         TYPE_SATURATING to c_common_type_for_mode for fixed-point modes.
8491         (pp_c_direct_abstract_declarator): Handle FIXED_POINT_TYPE.
8492         Support fixed-point types for inner items in VECTOR_TYPE.
8493         (pp_c_direct_declarator): Likewise.
8494         (pp_c_declarator): Likewise.
8495         (pp_c_fixed_constant): New function.
8496         (pp_c_constant): Handle FIXED_CST.
8497         (pp_c_primary_expression): Likewise.
8498         (pp_c_expression): Likewise.
8499         * fold-const.c (fixed-value.h): New include.
8500         (negate_expr_p): Return true for FIXED_CST.
8501         (fold_negate_expr): Support FIXED_CST.
8502         (split_tree): Support FIXED_CST.
8503         (const_binop): Support FIXED_CST.
8504         (fold_convert_const_int_from_fixed): New function to convert from
8505         fixed to int.
8506         (fold_convert_const_real_from_fixed): New function to convert from
8507         fixed to real.
8508         (fold_convert_const_fixed_from_fixed): New function to convert from
8509         fixed to another fixed.
8510         (fold_convert_const_fixed_from_int): New function to convert from
8511         int to fixed.
8512         (fold_convert_const_fixed_from_real): New function to convert from
8513         real to fixed.
8514         (fold_convert_const): Support conversions from fixed to int, from
8515         fixed to real, from fixed to fixed, from int to fixed, and from real
8516         to fixed.
8517         (fold_convert): Support FIXED_CST and FIXED_POINT_TYPE.
8518         (operand_equal_p): Support FIXED_CST.
8519         (make_range): For fixed-point modes, we need to pass the
8520         saturating flag as the 2nd parameter.
8521         (tree_swap_operands_p): Handle FIXED_CST.
8522         (fold_plusminus_mult_expr): For fract modes, we cannot generate
8523         constant 1.
8524         (fold_unary): Support FIXED_CONVERT_EXPR.
8525         (fold_binary): Handle FIXED_CST.
8526         Make sure the type is not saturating, before associating operations.
8527         Ex: A + B + C, A * B * C, (A1 * C1) +/- (A2 * C2).
8528         (tree_expr_nonnegative_warnv_p): Handle FIXED_CST.
8529         (fold_negate_const): Support FIXED_CST.
8530         (fold_relational_const): Support FIXED_CST.
8531         * gimplify.c (omp_firstprivatize_type_sizes): Handle FIXED_POINT_TYPE.
8532         (gimplify_expr): Handle FIXED_CST.
8533         (gimplify_type_sizes): Handle FIXED_POINT_TYPE.
8534         * ipa-prop.c (ipa_callsite_compute_param): Support FIXED_CST.
8535         * ipa-type-escape.c (type_to_consider): Handle FIXED_POINT_TYPE.
8536         * doc/tm.texi (Type Layout): Document SHORT_FRACT_TYPE_SIZE,
8537         FRACT_TYPE_SIZE, LONG_FRACT_TYPE_SIZE, LONG_LONG_FRACT_TYPE_SIZE,
8538         SHORT_ACCUM_TYPE_SIZE, ACCUM_TYPE_SIZE, LONG_ACCUM_TYPE_SIZE,
8539         LONG_LONG_ACCUM_TYPE_SIZE.
8540         * dbxout.c (dbxout_type): Handle FIXED_POINT_TYPE.
8541         * c-aux-info.c (gen_type): Handle FIXED_POINT_TYPE.
8542         * tree-sra.c (is_sra_scalar_type): Support FIXED_POINT_TYPE.
8543         * expmed.c (extract_bit_field): Support MODE_FRACT, MODE_UFRACT,
8544         MODE_ACCUM, and MODE_UACCUM.
8545         * tree-vectorizer.c (vect_is_simple_reduction): Check for saturating
8546         fixed-point types to disable reduction.
8547         * explow.c (promote_mode): Support FIXED_POINT_TYPE.
8548
8549 2007-08-08  David Edelsohn  <edelsohn@gnu.org>
8550
8551         * config/rs6000/x-rs6000: New file.
8552         * config/rs6000/darwin.h (CC1_SPEC): Add cc1_cpu.
8553         * config/rs6000/rs6000.h (EXTRA_SPECS): Add cc1_cpu.
8554         (EXTRA_SPEC_FUNCTIONS): Define.
8555         (HAVE_LOCAL_CPU_DETECT): Define.
8556         (CC1_CPU_SPEC): Define.
8557         * config/rs6000/driver-rs6000.c: New file.
8558         * config/rs6000/aix.h (CC1_SPEC): Define.
8559         * config/rs6000/sysv4.h (CC1_SPEC): Add cc1_cpu.
8560         * config.host: Add x-rs6000 to host_xmake_file if host and target
8561         are rs6000 or powerpc.
8562
8563 2007-08-08  Paolo Bonzini <paolo.bonzini@lu.unisi.ch>
8564
8565         * config/i386/t-crtstuff (CRTSTUFF_T_CFLAGS): Use +=.
8566
8567 2007-08-08  Richard Sandiford  <richard@codesourcery.com>
8568             Sandra Loosemore  <sandra@codesourcery.com>
8569             Chao-ying Fu  <fu@mips.com>
8570             Nigel Stephens  <nigel@mips.com>
8571             David Ung  <davidu@mips.com>
8572
8573         * doc/invoke.texi (-mcode-readable): Document.
8574         * config/mips/mips.opt (mcode-readable): New option.
8575         * config/mips/mips-protos.h (SYMBOL_32_HIGH): New symbol type.
8576         * config/mips/mips.h (mips_code_readable_setting): New enum.
8577         (mips_code_readable): Declare.
8578         (TARGET_MIPS16_TEXT_LOADS, TARGET_MIPS16_PCREL_LOADS): New macros.
8579         (TARGET_MIPS16_SHORT_JUMP_TABLES): New macro.
8580         (JUMP_TABLES_IN_TEXT_SECTION): Use it.
8581         (CASE_VECTOR_MODE, CASE_VECTOR_PC_RELATIVE): Likewise.  Remove
8582         boiler-plate comments.
8583         (ASM_OUTPUT_ADDR_DIFF_ELT): Use TARGET_MIPS16_SHORT_JUMP_TABLES.
8584         * config/mips/mips.c (mips_code_readable): New variable.
8585         (mips_classify_symbol): Only return SYMBOL_PC_RELATIVE for
8586         MIPS16 labels if TARGET_MIPS16_SHORT_JUMP_TABLES.  Use both the
8587         context and -mcode-readable setting to restrict the use of
8588         SYMBOL_PC_RELATIVE for MIPS16 constant pool references.
8589         Only return TARGET_FORCE_TO_MEM if PC-relative loads are allowed.
8590         (mips_symbolic_constant_p): Handle SYMBOL_32_HIGH.
8591         (mips_blocks_for_constant_p): Only return false for
8592         TARGET_MIPS16_PCREL_LOADS.
8593         (mips_symbol_insns_1): Treat HIGHs as 2 extended instructions
8594         for MIPS16.  Handle SYMBOL_32_HIGH.
8595         (mips_const_insns): Allow HIGHs for MIPS16 too.
8596         (mips_unspec_address_offset): New function, split out from...
8597         (mips_unspec_address): ...here.
8598         (mips_output_move): Handle MIPS16 HIGH moves.  Use "li" to load
8599         16-bit symbolic constants.  Assert approropiate conditions for
8600         using the "la" and "dla" macros.
8601         (mips_handle_option): Handle -mcode-readable=.
8602         (override_options): Use %hi/%lo relocations for TARGET_MIPS16 too.
8603         Set up mips_lo_relocs[SYMBOL_32_HIGH].
8604         (mips_strip_unspec_address): New function, split out from...
8605         (print_operand_reloc): ...here.
8606         (print_operand): Pass constants through mips_strip_unspec_address.
8607         (print_operand_address): Likewise.
8608         (mips_output_mi_thunk): Remove guard of mips16_lay_out_constants.
8609         (mips_select_rtx_section): Remove MIPS16 handling.
8610         (mips16_gp_pseudo_reg): Check currently_expanding_to_rtl.
8611         (mips16_rewrite_pool_refs): Wrap the labels in an address UNSPEC.
8612         (mips16_lay_out_constants): Do nothing unless
8613         TARGET_MIPS16_PCREL_LOADS.
8614         (mips_avoid_hazards): Remove guard of mips16_lay_out_constants.
8615         * config/mips/mips.md: Split HIGHs for MIPS16.
8616         (tablejump): Use TARGET_MIPS16_SHORT_JUMP_TABLES.
8617
8618 2007-08-08  Richard Sandiford  <richard@codesourcery.com>
8619
8620         * config/mips/mips-protos.h (mips_emit_move): Declare.
8621         * config/mips/mips.c (mips_emit_move): New function.
8622         (mips_force_temporary): Use mips_emit_move instead of emit_move_insn.
8623         (mips_legitimize_const_move): Likewise.
8624         (mips_legitimize_move): Likewise.
8625         (mips_split_64bit_move): Likewise.
8626         (mips_restore_gp): Likewise.
8627         (mips_load_call_address): Likewise.
8628         (mips_emit_fcc_reload): Likewise.
8629         (mips_set_return_address): Likewise.
8630         (mips_block_move_straight): Likewise.
8631         (mips_block_move_loop): Likewise.
8632         (mips_setup_incoming_varargs): Likewise.
8633         (mips_save_reg): Likewise.
8634         (mips_expand_prologue): Likewise.
8635         (mips_restore_reg): Likewise.
8636         (mips_expand_epilogue): Likewise.
8637         (mips_output_mi_thunk): Likewise.
8638         (build_mips16_call_stub): Likewise.
8639         (mips_builtin_branch_and_move): Likewise.
8640         * config/mips/mips.h (INITIALIZE_TRAMPOLINE): Likewise.
8641         * config/mips/mips.md (fixuns_truncdfsi2): Likewise.
8642         (fixuns_truncdfdi2): Likewise.
8643         (fixuns_truncsfsi2): Likewise.
8644         (fixuns_truncsfdi2): Likewise.
8645         (loadgp_absolute): Likewise.
8646         (builtin_setjmp_setup): Likewise.
8647         (builtin_longjmp): Likewise.
8648         (untyped_call): Likewise.
8649
8650 2007-08-08  Richard Sandiford  <richard@codesourcery.com>
8651
8652         * config/mips/mips-protos.h (mips_split_symbol): Add a mode and
8653         an "rtx *" argument.  Return a bool.
8654         * config/mips/mips.c (mips_split_symbol): Accept arbitrary source
8655         values and return true if they can be split.  Take the same kind of
8656         mode argument as mips_symbol_insns.  Add a "lo_sum_out" parameter
8657         and store the lo_sum there if nonnull.  Use the symbol type to
8658         determine whether a $gp or HIGH is needed.
8659         (mips_legitimize_address): Update call to mips_split_symbol and
8660         simplify accordingly.
8661         (mips_legitimize_const_move): Likewise.
8662         * config/mips/mips.md: In the combine define_split,
8663         check mips_split_symbol instead of splittable_symbolic_operand.
8664         Update use of mips_split_symbol in the generator code.
8665         * config/mips/predicates.md (splittable_symbolic_operand): Delete.
8666
8667 2007-08-08  Richard Sandiford  <richard@codesourcery.com>
8668
8669         * config/mips/mips.c (mips_symbolic_address_p): Delete.
8670         (mips_symbol_insns_1): New function, split out from...
8671         (mips_symbol_insns): ...here.  Take a mode argument.  Treat loads
8672         and stores separately from load addresses.
8673         (mips_classify_address): Replace uses of mips_symbolic_address_p
8674         with uses of mips_symbol_insns.
8675         (mips_address_insns): Update calls to mips_symbol_insns.
8676         (mips_const_insns): Likewise.
8677         (mips_legitimize_address): Likewise.
8678
8679 2007-08-08  Richard Sandiford  <richard@codesourcery.com>
8680
8681         * config/mips/mips-protos.h (SYMBOL_FORCE_TO_MEM): New symbol type.
8682         * config/mips/mips.c (mips_classify_symbol): Skip TARGET_ABICALLS
8683         block for locally-binding symbols if TARGET_ABSOLUTE_ABICALLS.
8684         Return SYMBOL_FORCE_TO_MEM instead of SYMBOL_ABSOLUTE for
8685         non-call contexts if TARGET_MIPS16.
8686         (mips_symbolic_constant_p): Handle SYMBOL_FORCE_TO_MEM.
8687         (mips_symbolic_address_p): Likewise.  Remove special TARGET_MIPS16
8688         code for SYMBOL_ABSOLUTE.
8689         (mips_symbol_insns): Likewise.
8690
8691 2007-08-08  Richard Sandiford  <richard@codesourcery.com>
8692
8693         * config/mips/mips-protos.h (mips_symbol_context): New enumeration.
8694         * config/mips/mips.c (mips_classify_symbol): Take a context argument.
8695         (mips_symbolic_constant_p): Likewise.  Update the call to
8696         mips_classify_symbol.
8697         (mips_classify_address): Update the calls to mips_symbolic_constant_p.
8698         (mips_const_insns): Likewise.  Update the call to mips_classify_symbol.
8699         (mips_legitimize_address): Update the call to mips_symbolic_constant_p.
8700         (print_operand_reloc): Add a context argument.  Update the call to
8701         mips_symbolic_constant_p.
8702         (print_operand): Update the calls to print_operand_reloc.
8703         (print_operand_address): Use print_operand_reloc rather than
8704         print_operand.
8705         (mips_rewrite_small_data_p): Add a context argument.  Update the call
8706         to mips_symbolic_constant_p.
8707         (mips_small_data_pattern_1): Make DATA the containing mem.
8708         Update the call to mips_rewrite_small_data_p.
8709         (mips_rewrite_small_data_1): Likewise.
8710         (mips_use_anchors_for_symbol_p): Update the call to
8711         mips_symbolic_constant_p.
8712         * config/mips/predicates.md (const_call_insn_operand): Likewise.
8713         (splittable_symbolic_operand): Likewise.
8714         (move_operand): Likewise.
8715         (absolute_symbolic_operand): Likewise.
8716         (got_disp_operand): Likewise.
8717         (got_page_ofst_operand): Likewise.
8718
8719 2007-08-08  Richard Sandiford  <richard@codesourcery.com>
8720
8721         * config/mips/mips-protos.h (SYMBOL_GENERAL): Rename to...
8722         (SYMBOL_ABSOLUTE): ...this.
8723         (SYMBOL_SMALL_DATA): Rename to...
8724         (SYMBOL_GP_RELATIVE): ...this.
8725         (SYMBOL_CONSTANT_POOL): Rename to...
8726         (SYMBOL_PC_RELATIVE): ...this.
8727         * config/mips/mips.c (mips_classify_symbol, mips_symbolic_constant_p)
8728         (mips_symbolic_address_p, mips_symbol_insns, override_options)
8729         (mips_rewrite_small_data_p, mips_use_anchors_for_symbol_p): Update
8730         after above changes.
8731         * config/mips/predicates.md (const_call_insn_operand): Likewise.
8732         (general_symbolic_operand): Rename to...
8733         (absolute_symbolic_operand): ...this.
8734         * config/mips/mips.md: Update after above changes.
8735
8736 2007-08-08  Vladimir Yanovsky  <yanov@il.ibm.com>
8737             Revital Eres  <eres@il.ibm.com>
8738
8739         * ddg.c (print_ddg): Add dump information.
8740         * modulo-sched.c (print_node_sched_params): Add parameter and
8741         verbosity.
8742         (calculate_maxii): Remove function.
8743         (undo_generate_reg_moves): Likewise.
8744         (undo_permute_partial_schedule): Likewise.
8745         (kernel_number_of_cycles): Likewise.
8746         (MAXII_FACTOR): New definition to calculate the upper bound of II.
8747         (sms_schedule): Use it.  Remove profitability checks.
8748         (sms_schedule_by_order): Fix order of nodes within the cycle.
8749
8750 2007-08-08  Samuel Thibault  <samuel.thibault@ens-lyon.org>
8751
8752         * config/i386/gnu.h (STARTFILE_SPEC): Use gcrt0.o in profile mode, add
8753         -profile option, add pie support.
8754         (ENDFILE_SPEC): New spec.
8755         * config/gnu.h (LIB_SPEC): Add -profile option.
8756
8757 2007-08-08  Samuel Thibault  <samuel.thibault@ens-lyon.org>
8758
8759         * config/i386/gnu.h (CPP_SPEC): Add -pthread option.
8760         * config/gnu.h (LIB_SPEC): Likewise.
8761
8762 2007-08-07  Yaz Saito  <saito@google.com>
8763             Ian Lance Taylor  <iant@google.com>
8764
8765         * common.opt (finstrument-functions-exclude-function-list): New
8766         option.
8767         (finstrument-functions-exclude-file-list): New option.
8768         * opts.c (char_p): Define and DEF_VEC.
8769         (flag_instrument_functions_exclude_functions): New static
8770         variable.
8771         (flag_instrument_functions_exclude_files): New static variable.
8772         (add_instrument_functions_exclude_list): New static function.
8773         (flag_instrument_functions_exclude_p): New function.
8774         (common_handle_option): Handle new options.
8775         * flags.h (flag_instrument_functions_exclude_p): Declare.
8776         * gimplify.c (gimplify_function_tree): Call
8777         flag_instrument_functions_exclude_p.
8778         * doc/invoke.texi (Option Summary): Mention new options.
8779         (Code Gen Options): Document new options.
8780
8781 2007-08-07  Ian Lance Taylor  <iant@google.com>
8782
8783         PR rtl-optimization/32776
8784         * lower-subreg.c (resolve_clobber): Call resolve_reg_notes.
8785         (resolve_use): Likewise.
8786         (decompose_multiword_subregs): Remove "changed" local variable.
8787
8788 2007-08-07  Carlos O'Donell  <carlos@codesourcery.com>
8789
8790         * configure.ac: Define HAVE_GNU_AS if $gas_flag is yes.
8791         * configure: Regenerate.
8792         * config.in: Regenerate.
8793         * gcc.c [HAVE_GNU_AS]: Add "%{v} %{w:-W} %{I*} " to asm_options
8794         spec string.
8795
8796 2007-08-07  Ian Lance Taylor  <iant@google.com>
8797
8798         * lower-subreg.c (resolve_clobber): If the clobber has a LIBCALL
8799         note, just delete the insn.
8800
8801 2007-08-07  Andreas Schwab  <schwab@suse.de>
8802
8803         PR bootstrap/32973
8804         * gengtype-lex.l: Ignore backslash/newline pair while scanning a
8805         struct definition.
8806
8807 2007-08-07  Andreas Krebbel  <krebbel1@de.ibm.com>
8808
8809         * lower-subreg.c (resolve_subreg_use): Remove assertion.
8810         (find_decomposable_shift_zext, resolve_shift_zext): New functions.
8811         (decompose_multiword_subregs): Use the functions above to decompose
8812         multiword shifts and zero-extends.
8813
8814 2007-08-07  Rask Ingemann Lambertsen  <rask@sygehus.dk>
8815
8816         * doc/sourcebuild.texi (Test Directives): Fix "compile" and
8817         "assemble" descriptions which were swapped.
8818
8819 2007-08-06  Chao-ying Fu  <fu@mips.com>
8820
8821         * fixed-value.h: New file.
8822         * fixed-value.c: New file.
8823         * Makefile.in (OBJS-common): Add fixed-value.o.
8824         (fixed-value.o): New rule.
8825         (GTFILES): Add fixed-value.h.
8826         * double-int.c (double_int_scmp): We should use unsigned HOST_WIDE_INT
8827         to compare a.low and b.low.
8828         * gengtype.c (main): Handle FIXED_VALUE_TYPE type as scalar typedef.
8829
8830 2007-08-06  H.J. Lu  <hongjiu.lu@intel.com>
8831             Daniel Jacobowitz  <dan@codesourcery.com>
8832
8833         PR target/31868
8834         * config.gcc (x86_64-*-freebsd*): Add i386/t-crtstuff to
8835         tmake_file.
8836         (x86_64-*-netbsd*): Likewise.
8837         (x86_64-*-linux*): Likewise.
8838         (x86_64-*-kfreebsd*-gnu): Likewise.
8839         (x86_64-*-knetbsd*-gnu): Likewise.
8840         (i[34567]86-*-solaris2.1[0-9]*): Likewise.
8841
8842         * config/i386/t-linux64 (CRTSTUFF_T_CFLAGS): Removed.
8843
8844         * config/i386/t-crtstuff (CRTSTUFF_T_CFLAGS): Update comments.
8845         Add -fno-asynchronous-unwind-tables.
8846
8847         * config/t-freebsd (CRTSTUFF_T_CFLAGS_S): Add $(CRTSTUFF_T_CFLAGS).
8848         * config/t-libc-ok (CRTSTUFF_T_CFLAGS_S): Likewise.
8849         * config/t-lynx (CRTSTUFF_T_CFLAGS_S): Likewise.
8850         * config/t-netbsd (CRTSTUFF_T_CFLAGS_S): Likewise.
8851         * config/t-svr4 (CRTSTUFF_T_CFLAGS_S): Likewise.
8852
8853 2007-08-06  Steve Ellcey  <sje@cup.hp.com>
8854
8855         * config/ia64/ia64.c (ia64_c_mode_for_suffix): New.
8856         (TARGET_C_MODE_FOR_SUFFIX): New.
8857
8858 2007-08-06  Steve Ellcey  <sje@cup.hp.com>
8859
8860         * config/ia64/div.md (m2subrf4_cond): Change 'g' to 'G'.
8861
8862 2007-08-06  Steve Ellcey  <sje@cup.hp.com>
8863
8864         * config/ia64/ia64.h (MODES_TIEABLE_P): Fix typo.
8865
8866 2007-08-06  H.J. Lu  <hongjiu.lu@intel.com>
8867
8868         * config/i386/i386.md: Check TARGET_ macros and optimize_size
8869         before checking function returns in conditional expressions.
8870
8871 2007-08-06  Alfred Minarik  <a.minarik@aon.at>
8872
8873         PR pch/13676
8874         * doc/invoke.texi: Add .hp, .hxx, .hpp, .h, .HPP, .tcc as c++ header.
8875
8876 2008-08-05  Andrew Pinski  <andrew_pinski@playstation.sony.com>
8877
8878         PR middle-end/32988
8879         * tree.c (build2_stat): Instead of checking for INTEGER_TYPE, check
8880         for INTEGRAL_TYPE_P.
8881
8882 2008-08-05  Paolo Bonzini  <bonzini@gnu.org>
8883
8884         * configure.ac: Remove --enable-checking=df from default settings.
8885         * tree-pass.h (TODO_df_verify): New.  Shift TODO_mark_first_instance.
8886         * df-core.c (df_finish_pass) [ENABLE_CHECKING]: Schedule verification
8887         if the parameter is true.
8888         (df_analyze) [!ENABLE_DF_CHECKING]: Also do verification if the
8889         DF_VERIFY_SCHEDULED flag is true.
8890         * df.h (enum df_changeable_flags): Add DF_VERIFY_SCHEDULED.
8891         (df_finish_pass): Adjust prototype.
8892         * passes.c (execute_todo): Schedule verification if TODO_df_verify is
8893         true.
8894
8895         * see.c (pass_see): Add TODO_df_verify.
8896         * loop-init.c (pass_rtl_move_loop_invariants): Add TODO_df_verify.
8897         * global.c (rest_of_handle_global_alloc): Schedule verification
8898         after the pass.
8899         * local-alloc.c (rest_of_handle_local_alloc): Schedule verification
8900         before the pass.
8901         * function.c (pass_thread_prologue_and_epilogue): Add TODO_df_verify.
8902         * gcse.c (rest_of_handle_gcse): Adjust call to df_finish_pass.
8903         * loop-iv.c (iv_analysis_done): Schedule verification after the pass.
8904
8905         * config/sh/sh.c (sh_output_mi_thunk): Remove dead code.
8906         * config/ia64/ia64.c (ia64_reorg): Adjust call to df_finish_pass.
8907         * config/bfin/bfin.c (bfin_reorg): Adjust call to df_finish_pass.
8908
8909 2007-08-05  Vladimir Yanovsky  <yanov@il.ibm.com>
8910             Revital Eres <eres@il.ibm.com>
8911
8912         * doc/invoke.texi (-fmodulo-sched-allow-regmoves): Document new
8913         flag.
8914         * ddg.c (create_ddg_dependence): Rename to...
8915         (create_ddg_dep_from_intra_loop_link): This.  Do not check
8916         for interloop edges.  Do not create anti dependence edge when
8917         a true dependence edge exists in the opposite direction and
8918         -fmodulo-sched-allow-regmoves is set.
8919         (build_intra_loop_deps): Call create_ddg_dep_from_intra_loop_link.
8920         (add_cross_iteration_register_deps): Create anti dependence edge
8921         when -fno-modulo-sched-allow-regmoves is set.
8922         * common.opt (-fmodulo-sched-allow-regmoves): New flag.
8923
8924 2007-08-04  Richard Sandiford  <richard@codesourcery.com>
8925
8926         * config/arm/arm.md (movsi): Add braces.
8927
8928 2007-08-04  Andrew Pinski  <andrew_pinski@playstation.sony.com>
8929
8930         PR middle-end/32780
8931         * fold-const.c (fold_binary <case MINUS_EXPR>): Fix the type of
8932         operands for the folding of "A - (A & B)" into "~B & A"; cast them
8933         to type.
8934
8935 2007-08-03  Zdenek Dvorak  <ook@ucw.cz>
8936
8937         * tree-ssa-threadupdate.c (thread_through_all_blocks): Use loops'
8938         state accessor functions.
8939         * cfgloopmanip.c (remove_path, create_preheaders,
8940         force_single_succ_latches, fix_loop_structure): Ditto.
8941         * tree-ssa-loop-manip.c (rewrite_into_loop_closed_ssa,
8942         tree_duplicate_loop_to_header_edge): Ditto.
8943         * cfgloopanal.c (mark_irreducible_loops): Ditto.
8944         * loop-init.c (loop_optimizer_init, loop_optimizer_finalize):
8945         Ditto.
8946         * tree-cfgcleanup.c (cleanup_tree_cfg_noloop, repair_loop_structures,
8947         cleanup_tree_cfg): Ditto.
8948         * tree-cfg.c (tree_merge_blocks): Ditto.
8949         * cfgloop.c (rescan_loop_exit, record_loop_exits,
8950         release_recorded_exits, get_loop_exit_edges, verify_loop_structure,
8951         loop_preheader_edge, single_exit): Ditto.
8952         (flow_loops_find): Do not clear loops->state.
8953         * cfgloop.h (loops_state_satisfies_p, loops_state_set,
8954         loops_state_clear): New functions.
8955
8956 2007-08-03  Andrew Pinski  <andrew_pinski@playstation.sony.com>
8957
8958         PR middle-end/32399
8959         * tree-ssa-address.c (add_to_parts): Use POINTER_PLUS_EXPR
8960         when adding to the base and convert ELT to sizetype instead of type.
8961
8962 2007-08-03  Andrew Pinski  <andrew_pinski@playstation.sony.com>
8963
8964         PR middle-end/32304
8965         * ipa-reference.c (has_proper_scope_for_analysis): Return false when
8966         the decl's type has TYPE_NEEDS_CONSTRUCTING set.
8967
8968 2007-08-03  Andrew Pinski  <andrew_pinski@playstation.sony.com>
8969
8970         PR middle-end/32935
8971         * fold-convert.c (fold_negate_expr <NOP_EXPR>): Convert back to the
8972          correct type the negate expression.
8973
8974 2007-08-03  Jan Hubicka  <jh@suse.cz>
8975
8976         * i386.c (setup_incoming_varargs_64): Tolerate 64bit preferred
8977         stack boundary.
8978
8979 2007-08-03  David Edelsohn  <edelsohn@gnu.org>
8980
8981         * config/rs6000/rs6000.c (struct processor_cost): Change
8982         l1_cache_lines to l1_cache_size.  Add l2_cache_size.
8983         (*_cost): Convert l1 cache information to kilobytes.  Add l2 cache
8984         information.
8985         (rios1_costs, rios2_cost): Correct cache line size.
8986         (rs6000_override_options): Set l2-cache-size parameter.
8987
8988 2007-08-03  Andrew Pinski  <andrew_pinski@playstation.sony.com>
8989             Diego Novillo  <dnovillo@google.com>
8990
8991         PR 31521
8992         * tree-vrp.c (simplify_div_or_mod_using_ranges): Also simplify
8993         if the range includes 0.
8994
8995 2007-08-03  Ben Elliston  <bje@au.ibm.com>
8996
8997         * config/spu/spu.md (dftsv, dftsv_celledp): Attach the appropriate
8998         mode to unspec expressions to silence a warning from the generator
8999         programs.
9000         
9001 2007-08-02  Steve Ellcey  <sje@cup.hp.com>
9002
9003         * config/ia64/constraints.md ("U"): Make constraint vector only.
9004
9005 2007-08-02  Nathan Froyd  <froydnj@codesourcery.com>
9006
9007         PR middle-end/25446
9008         * c-objc-common.c (c_cannot_inline_tree_fn): Check for an
9009         always_inline attribute on the function decl.
9010
9011 2007-08-02  Nathan Froyd  <froydnj@codesourcery.com>
9012
9013         PR middle-end/25445
9014         * varasm.c (default_binds_local_p_1): Consult flag_whole_program
9015         if we are compiling with -fPIC.
9016
9017 2007-08-02  Sandra Loosemore  <sandra@codesourcery.com>
9018             Nigel Stephens  <nigel@mips.com>
9019
9020         * longlong.h [__mips__] (count_leading_zeros, COUNT_LEADING_ZEROS_0):
9021         Define for MIPS32 and MIPS64.
9022
9023 2007-08-02  Nick Clifton  <nickc@redhat.com>
9024
9025         * config/host-hpux.c: Change copyright header to refer to version
9026         3 of the GNU General Public License and to point readers at the
9027         COPYING3 file and the FSF's license web page.
9028         * config/alpha/predicates.md, config/alpha/vms-ld.c,
9029         config/alpha/linux.h, config/alpha/alpha.opt,
9030         config/alpha/linux-elf.h, config/alpha/vms.h, config/alpha/elf.h,
9031         config/alpha/vms-unwind.h, config/alpha/ev4.md,
9032         config/alpha/ev6.md, config/alpha/alpha.c, config/alpha/vms-cc.c,
9033         config/alpha/alpha.h, config/alpha/sync.md,
9034         config/alpha/openbsd.h, config/alpha/alpha.md,
9035         config/alpha/alpha-modes.def, config/alpha/ev5.md,
9036         config/alpha/alpha-protos.h, config/alpha/freebsd.h,
9037         config/alpha/osf5.h, config/alpha/netbsd.h, config/alpha/vms64.h,
9038         config/alpha/constraints.md, config/alpha/osf.h,
9039         config/alpha/xm-vms.h, config/alpha/unicosmk.h, config/linux.h,
9040         config/frv/predicates.md, config/frv/frv.h, config/frv/linux.h,
9041         config/frv/frv.md, config/frv/frv.opt, config/frv/frv-modes.def,
9042         config/frv/frv-asm.h, config/frv/frv-protos.h,
9043         config/frv/frv-abi.h, config/frv/frv.c, config/s390/tpf.h,
9044         config/s390/s390.c, config/s390/predicates.md, config/s390/s390.h,
9045         config/s390/linux.h, config/s390/tpf.md, config/s390/tpf.opt,
9046         config/s390/2064.md, config/s390/2084.md, config/s390/s390.md,
9047         config/s390/s390.opt, config/s390/s390-modes.def,
9048         config/s390/fixdfdi.h, config/s390/constraints.md,
9049         config/s390/s390-protos.h, config/s390/s390x.h, config/elfos.h,
9050         config/dbxcoff.h, config/m32c/predicates.md, config/m32c/cond.md,
9051         config/m32c/m32c.c, config/m32c/minmax.md, config/m32c/blkmov.md,
9052         config/m32c/m32c-pragma.c, config/m32c/m32c.h,
9053         config/m32c/prologue.md, config/m32c/m32c.abi,
9054         config/m32c/muldiv.md, config/m32c/bitops.md, config/m32c/mov.md,
9055         config/m32c/addsub.md, config/m32c/m32c.md, config/m32c/m32c.opt,
9056         config/m32c/t-m32c, config/m32c/m32c-modes.def,
9057         config/m32c/jump.md, config/m32c/shift.md,
9058         config/m32c/m32c-protos.h, config/libgloss.h,
9059         config/spu/spu-protos.h, config/spu/predicates.md,
9060         config/spu/spu-builtins.h, config/spu/spu.c,
9061         config/spu/spu-builtins.def, config/spu/spu-builtins.md,
9062         config/spu/spu.h, config/spu/spu-elf.h, config/spu/constraints.md,
9063         config/spu/spu.md, config/spu/spu-c.c, config/spu/spu.opt,
9064         config/spu/spu-modes.def, config/spu/t-spu-elf, config/interix.h,
9065         config/sparc/hypersparc.md, config/sparc/predicates.md,
9066         config/sparc/linux.h, config/sparc/sp64-elf.h,
9067         config/sparc/supersparc.md, config/sparc/cypress.md,
9068         config/sparc/openbsd1-64.h, config/sparc/openbsd64.h,
9069         config/sparc/niagara.md, config/sparc/sparc.md,
9070         config/sparc/long-double-switch.opt, config/sparc/ultra3.md,
9071         config/sparc/sparc.opt, config/sparc/sync.md,
9072         config/sparc/sp-elf.h, config/sparc/sparc-protos.h,
9073         config/sparc/ultra1_2.md, config/sparc/biarch64.h,
9074         config/sparc/sparc.c, config/sparc/little-endian.opt,
9075         config/sparc/sysv4-only.h, config/sparc/sparc.h,
9076         config/sparc/linux64.h, config/sparc/freebsd.h,
9077         config/sparc/sol2.h, config/sparc/rtemself.h,
9078         config/sparc/netbsd-elf.h, config/sparc/vxworks.h,
9079         config/sparc/sparc-modes.def, config/sparc/sparclet.md,
9080         config/sparc/sysv4.h, config/vx-common.h, config/netbsd-aout.h,
9081         config/flat.h, config/m32r/m32r.md, config/m32r/predicates.md,
9082         config/m32r/little.h, config/m32r/m32r.c, config/m32r/m32r.opt,
9083         config/m32r/linux.h, config/m32r/constraints.md,
9084         config/m32r/m32r.h, config/m32r/m32r-protos.h, config/vxworks.opt,
9085         config/darwin-c.c, config/darwin.opt, config/i386/i386.h,
9086         config/i386/cygming.h, config/i386/linux.h, config/i386/cygwin.h,
9087         config/i386/i386.md, config/i386/netware-crt0.c,
9088         config/i386/sco5.h, config/i386/mmx.md, config/i386/vx-common.h,
9089         config/i386/kaos-i386.h, config/i386/winnt-stubs.c,
9090         config/i386/netbsd64.h, config/i386/djgpp.h, config/i386/gas.h,
9091         config/i386/sol2.h, config/i386/constraints.md,
9092         config/i386/netware-libgcc.c, config/i386/sysv5.h,
9093         config/i386/predicates.md, config/i386/geode.md,
9094         config/i386/x86-64.h, config/i386/kfreebsd-gnu.h,
9095         config/i386/freebsd64.h, config/i386/vxworksae.h,
9096         config/i386/pentium.md, config/i386/lynx.h, config/i386/i386elf.h,
9097         config/i386/rtemself.h, config/i386/netbsd-elf.h,
9098         config/i386/ppro.md, config/i386/k6.md, config/i386/netware.c,
9099         config/i386/netware.h, config/i386/i386-modes.def,
9100         config/i386/sysv4-cpp.h, config/i386/i386-interix.h,
9101         config/i386/cygwin1.c, config/i386/djgpp.opt, config/i386/uwin.h,
9102         config/i386/unix.h, config/i386/ptx4-i.h, config/i386/xm-djgpp.h,
9103         config/i386/att.h, config/i386/winnt.c, config/i386/beos-elf.h,
9104         config/i386/sol2-10.h, config/i386/darwin64.h, config/i386/sse.md,
9105         config/i386/i386.opt, config/i386/bsd.h, config/i386/cygming.opt,
9106         config/i386/xm-mingw32.h, config/i386/linux64.h,
9107         config/i386/openbsdelf.h, config/i386/xm-cygwin.h,
9108         config/i386/sco5.opt, config/i386/darwin.h, config/i386/mingw32.h,
9109         config/i386/winnt-cxx.c, config/i386/i386-interix3.h,
9110         config/i386/nwld.c, config/i386/nwld.h, config/i386/host-cygwin.c,
9111         config/i386/cygwin2.c, config/i386/i386-protos.h,
9112         config/i386/sync.md, config/i386/openbsd.h,
9113         config/i386/host-mingw32.c, config/i386/i386-aout.h,
9114         config/i386/nto.h, config/i386/biarch64.h,
9115         config/i386/i386-coff.h, config/i386/freebsd.h,
9116         config/i386/driver-i386.c, config/i386/knetbsd-gnu.h,
9117         config/i386/host-i386-darwin.c, config/i386/vxworks.h,
9118         config/i386/crtdll.h, config/i386/i386.c, config/i386/sysv4.h,
9119         config/darwin-protos.h, config/linux.opt, config/sol2.c,
9120         config/sol2.h, config/sh/symbian.c, config/sh/sh-protos.h,
9121         config/sh/linux.h, config/sh/elf.h, config/sh/superh.h,
9122         config/sh/sh4.md, config/sh/coff.h, config/sh/newlib.h,
9123         config/sh/embed-elf.h, config/sh/symbian-pre.h, config/sh/rtems.h,
9124         config/sh/kaos-sh.h, config/sh/sh4a.md, config/sh/constraints.md,
9125         config/sh/sh64.h, config/sh/sh.opt, config/sh/symbian-post.h,
9126         config/sh/sh-c.c, config/sh/predicates.md, config/sh/sh.c,
9127         config/sh/sh.h, config/sh/shmedia.md, config/sh/sh-modes.def,
9128         config/sh/little.h, config/sh/sh1.md, config/sh/sh4-300.md,
9129         config/sh/superh64.h, config/sh/rtemself.h,
9130         config/sh/netbsd-elf.h, config/sh/sh.md, config/sh/vxworks.h,
9131         config/usegas.h, config/svr3.h, config/pdp11/pdp11-protos.h,
9132         config/pdp11/2bsd.h, config/pdp11/pdp11.md, config/pdp11/pdp11.c,
9133         config/pdp11/pdp11.opt, config/pdp11/pdp11-modes.def,
9134         config/pdp11/pdp11.h, config/avr/rtems.h, config/avr/avr-protos.h,
9135         config/avr/predicates.md, config/avr/constraints.md,
9136         config/avr/avr.md, config/avr/avr.c, config/avr/avr.opt,
9137         config/avr/avr.h, config/sol2-protos.h, config/dbxelf.h,
9138         config/lynx.opt, config/crx/crx.h, config/crx/crx-protos.h,
9139         config/crx/crx.md, config/crx/crx.c, config/crx/crx.opt,
9140         config/c4x/c4x-c.c, config/c4x/c4x.c, config/c4x/c4x.opt,
9141         config/c4x/c4x-modes.def, config/c4x/rtems.h,
9142         config/c4x/predicates.md, config/c4x/c4x.h,
9143         config/c4x/c4x-protos.h, config/c4x/c4x.md, config/kfreebsd-gnu.h,
9144         config/xtensa/predicates.md, config/xtensa/xtensa.c,
9145         config/xtensa/linux.h, config/xtensa/xtensa.h,
9146         config/xtensa/elf.h, config/xtensa/xtensa.md,
9147         config/xtensa/xtensa.opt, config/xtensa/constraints.md,
9148         config/xtensa/xtensa-protos.h, config/dbx.h,
9149         config/stormy16/predicates.md, config/stormy16/stormy16.md,
9150         config/stormy16/stormy16.c, config/stormy16/stormy16.opt,
9151         config/stormy16/stormy16.h, config/stormy16/stormy16-protos.h,
9152         config/host-solaris.c, config/fr30/fr30.h,
9153         config/fr30/predicates.md, config/fr30/fr30-protos.h,
9154         config/fr30/fr30.md, config/fr30/fr30.c, config/fr30/fr30.opt,
9155         config/vxworksae.h, config/sol2-c.c, config/lynx.h,
9156         config/m68hc11/m68hc11-protos.h, config/m68hc11/predicates.md,
9157         config/m68hc11/m68hc11.md, config/m68hc11/m68hc11.c,
9158         config/m68hc11/m68hc11.opt, config/m68hc11/m68hc11.h,
9159         config/m68hc11/m68hc12.h, config/openbsd-oldgas.h,
9160         config/host-linux.c, config/interix3.h, config/cris/cris.c,
9161         config/cris/predicates.md, config/cris/linux.h,
9162         config/cris/cris.h, config/cris/aout.h, config/cris/cris.md,
9163         config/cris/linux.opt, config/cris/cris.opt, config/cris/elf.opt,
9164         config/cris/aout.opt, config/cris/cris-protos.h,
9165         config/vxworks-dummy.h, config/netbsd.h, config/netbsd-elf.h,
9166         config/iq2000/iq2000.h, config/iq2000/predicates.md,
9167         config/iq2000/iq2000-protos.h, config/iq2000/iq2000.md,
9168         config/iq2000/iq2000.c, config/iq2000/iq2000.opt,
9169         config/host-darwin.c, config/mt/mt.md, config/mt/mt.c,
9170         config/mt/mt.opt, config/mt/t-mt, config/mt/mt.h,
9171         config/mt/mt-protos.h, config/svr4.h, config/host-darwin.h,
9172         config/chorus.h, config/mn10300/mn10300.c,
9173         config/mn10300/mn10300.opt, config/mn10300/predicates.md,
9174         config/mn10300/mn10300.h, config/mn10300/linux.h,
9175         config/mn10300/constraints.md, config/mn10300/mn10300-protos.h,
9176         config/mn10300/mn10300.md, config/ia64/predicates.md,
9177         config/ia64/itanium1.md, config/ia64/unwind-ia64.h,
9178         config/ia64/ia64-c.c, config/ia64/sync.md, config/ia64/ia64.c,
9179         config/ia64/itanium2.md, config/ia64/ia64.h, config/ia64/vect.md,
9180         config/ia64/freebsd.h, config/ia64/ia64.md,
9181         config/ia64/ia64-modes.def, config/ia64/constraints.md,
9182         config/ia64/hpux.h, config/ia64/ia64-protos.h, config/windiss.h,
9183         config/gofast.h, config/rtems.h, config/sol2-10.h,
9184         config/m68k/predicates.md, config/m68k/m68k.md,
9185         config/m68k/linux.h, config/m68k/m68k-modes.def,
9186         config/m68k/print-sysroot-suffix.sh, config/m68k/m68k-protos.h,
9187         config/m68k/coff.h, config/m68k/m68k-none.h, config/m68k/ieee.opt,
9188         config/m68k/openbsd.h, config/m68k/m68k-aout.h,
9189         config/m68k/m68k.opt, config/m68k/m68020-elf.h,
9190         config/m68k/m68kelf.h, config/m68k/m68k-devices.def,
9191         config/m68k/uclinux-oldabi.h, config/m68k/m68k.c,
9192         config/m68k/constraints.md, config/m68k/rtemself.h,
9193         config/m68k/netbsd-elf.h, config/m68k/m68k.h,
9194         config/m68k/uclinux.h, config/rs6000/power4.md,
9195         config/rs6000/host-darwin.c, config/rs6000/6xx.md,
9196         config/rs6000/linux.h, config/rs6000/eabi.h,
9197         config/rs6000/aix41.opt, config/rs6000/xcoff.h,
9198         config/rs6000/secureplt.h, config/rs6000/linuxspe.h,
9199         config/rs6000/eabialtivec.h, config/rs6000/8540.md,
9200         config/rs6000/darwin8.h, config/rs6000/kaos-ppc.h,
9201         config/rs6000/windiss.h, config/rs6000/603.md,
9202         config/rs6000/aix41.h, config/rs6000/cell.md,
9203         config/rs6000/mpc.md, config/rs6000/aix43.h, config/rs6000/beos.h,
9204         config/rs6000/gnu.h, config/rs6000/rtems.h, config/rs6000/aix.opt,
9205         config/rs6000/darwin.md, config/rs6000/darwin64.h,
9206         config/rs6000/default64.h, config/rs6000/7xx.md,
9207         config/rs6000/darwin.opt, config/rs6000/spe.md,
9208         config/rs6000/rs6000.opt, config/rs6000/rs6000-c.c,
9209         config/rs6000/rios2.md, config/rs6000/linuxaltivec.h,
9210         config/rs6000/7450.md, config/rs6000/linux64.h,
9211         config/rs6000/constraints.md, config/rs6000/440.md,
9212         config/rs6000/darwin.h, config/rs6000/host-ppc64-darwin.c,
9213         config/rs6000/rs6000.c, config/rs6000/aix52.h,
9214         config/rs6000/rs6000.h, config/rs6000/power6.md,
9215         config/rs6000/predicates.md, config/rs6000/altivec.md,
9216         config/rs6000/aix64.opt, config/rs6000/rios1.md,
9217         config/rs6000/rs6000-modes.def, config/rs6000/rs64.md,
9218         config/rs6000/eabisim.h, config/rs6000/sysv4le.h,
9219         config/rs6000/darwin7.h, config/rs6000/dfp.md,
9220         config/rs6000/linux64.opt, config/rs6000/sync.md,
9221         config/rs6000/vxworksae.h, config/rs6000/power5.md,
9222         config/rs6000/lynx.h, config/rs6000/biarch64.h,
9223         config/rs6000/rs6000.md, config/rs6000/sysv4.opt,
9224         config/rs6000/eabispe.h, config/rs6000/e500.h,
9225         config/rs6000/freebsd.h, config/rs6000/rs6000-protos.h,
9226         config/rs6000/netbsd.h, config/rs6000/e500-double.h,
9227         config/rs6000/aix.h, config/rs6000/vxworks.h,
9228         config/rs6000/40x.md, config/rs6000/aix51.h,
9229         config/rs6000/sysv4.h, config/arc/arc-protos.h, config/arc/arc.md,
9230         config/arc/arc.c, config/arc/arc.opt, config/arc/arc-modes.def,
9231         config/arc/arc.h, config/mcore/mcore-elf.h,
9232         config/mcore/mcore-protos.h, config/mcore/predicates.md,
9233         config/mcore/mcore.md, config/mcore/mcore.c,
9234         config/mcore/mcore.opt, config/mcore/mcore.h,
9235         config/mcore/mcore-pe.h, config/darwin.c, config/freebsd-nthr.h,
9236         config/score/predicates.md, config/score/score-version.h,
9237         config/score/score-protos.h, config/score/misc.md,
9238         config/score/elf.h, config/score/score.c, config/score/mac.md,
9239         config/score/score7.md, config/score/score.h,
9240         config/score/score-conv.h, config/score/score-mdaux.c,
9241         config/score/score.md, config/score/score.opt,
9242         config/score/score-modes.def, config/score/score-mdaux.h,
9243         config/score/mul-div.S, config/arm/uclinux-elf.h,
9244         config/arm/semi.h, config/arm/ecos-elf.h, config/arm/arm1020e.md,
9245         config/arm/symbian.h, config/arm/linux-elf.h,
9246         config/arm/arm1026ejs.md, config/arm/arm1136jfs.md,
9247         config/arm/elf.h, config/arm/aout.h, config/arm/arm.c,
9248         config/arm/thumb2.md, config/arm/vec-common.md, config/arm/coff.h,
9249         config/arm/strongarm-pe.h, config/arm/arm.h,
9250         config/arm/cortex-a8-neon.md, config/arm/semiaof.h,
9251         config/arm/cortex-a8.md, config/arm/uclinux-eabi.h,
9252         config/arm/arm-modes.def, config/arm/linux-eabi.h,
9253         config/arm/rtems-elf.h, config/arm/neon-schedgen.ml,
9254         config/arm/arm-cores.def, config/arm/arm-protos.h,
9255         config/arm/vfp.md, config/arm/aof.h, config/arm/linux-gas.h,
9256         config/arm/wince-pe.h, config/arm/neon.md,
9257         config/arm/constraints.md, config/arm/neon.ml,
9258         config/arm/xscale-elf.h, config/arm/strongarm-coff.h,
9259         config/arm/arm.opt, config/arm/arm926ejs.md,
9260         config/arm/predicates.md, config/arm/iwmmxt.md,
9261         config/arm/arm_neon.h, config/arm/unknown-elf.h,
9262         config/arm/kaos-arm.h, config/arm/bpabi.h, config/arm/pe.opt,
9263         config/arm/neon-testgen.ml, config/arm/arm.md,
9264         config/arm/xscale-coff.h, config/arm/pe.c,
9265         config/arm/arm-generic.md, config/arm/pe.h,
9266         config/arm/kaos-strongarm.h, config/arm/freebsd.h,
9267         config/arm/neon-docgen.ml, config/arm/netbsd.h, config/arm/fpa.md,
9268         config/arm/strongarm-elf.h, config/arm/cirrus.md,
9269         config/arm/netbsd-elf.h, config/arm/vxworks.h,
9270         config/arm/neon-gen.ml, config/kaos.h, config/darwin-driver.c,
9271         config/pa/predicates.md, config/pa/pa64-hpux.h,
9272         config/pa/pa-hpux.opt, config/pa/som.h, config/pa/pa-hpux1010.opt,
9273         config/pa/pa-hpux1111.opt, config/pa/pa-pro-end.h,
9274         config/pa/elf.h, config/pa/fptr.c, config/pa/pa64-linux.h,
9275         config/pa/pa.md, config/pa/pa.opt, config/pa/pa-hpux.h,
9276         config/pa/pa-hpux10.h, config/pa/pa-hpux11.h,
9277         config/pa/pa-hpux1010.h, config/pa/pa-protos.h,
9278         config/pa/pa-osf.h, config/pa/pa-hpux1111.h, config/pa/pa-64.h,
9279         config/pa/milli64.S, config/pa/pa.c, config/pa/pa-linux.h,
9280         config/pa/pa.h, config/pa/pa32-linux.h, config/pa/pa64-hpux.opt,
9281         config/pa/pa64-regs.h, config/pa/pa-modes.def,
9282         config/pa/constraints.md, config/darwin9.h, config/mips/4100.md,
9283         config/mips/linux.h, config/mips/elfoabi.h, config/mips/elf.h,
9284         config/mips/sdb.h, config/mips/windiss.h, config/mips/rtems.h,
9285         config/mips/3000.md, config/mips/iris5.h, config/mips/5000.md,
9286         config/mips/7000.md, config/mips/9000.md, config/mips/4600.md,
9287         config/mips/linux64.h, config/mips/elforion.h,
9288         config/mips/constraints.md, config/mips/generic.md,
9289         config/mips/predicates.md, config/mips/4300.md,
9290         config/mips/mips-ps-3d.md, config/mips/iris.h, config/mips/24k.md,
9291         config/mips/mips.md, config/mips/mips.opt, config/mips/4k.md,
9292         config/mips/5k.md, config/mips/vr4120-div.S,
9293         config/mips/openbsd.h, config/mips/iris6.h, config/mips/4000.md,
9294         config/mips/mips-protos.h, config/mips/6000.md,
9295         config/mips/mips.c, config/mips/mips.h, config/mips/r3900.h,
9296         config/mips/74k.md, config/mips/netbsd.h, config/mips/vxworks.h,
9297         config/mips/mips-modes.def, config/mips/vr.h,
9298         config/soft-fp/t-softfp, config/openbsd.h, config/ptx4.h,
9299         config/freebsd-spec.h, config/vax/vax.c, config/vax/openbsd.h,
9300         config/vax/vax.h, config/vax/elf.h, config/vax/vax.md,
9301         config/vax/bsd.h, config/vax/vax.opt, config/vax/vax-modes.def,
9302         config/vax/openbsd1.h, config/vax/netbsd.h,
9303         config/vax/vax-protos.h, config/vax/netbsd-elf.h,
9304         config/vax/vaxv.h, config/vax/ultrix.h, config/freebsd.h,
9305         config/h8300/rtems.h, config/h8300/predicates.md,
9306         config/h8300/h8300.c, config/h8300/h8300.h, config/h8300/elf.h,
9307         config/h8300/h8300.md, config/h8300/h8300.opt,
9308         config/h8300/coff.h, config/h8300/h8300-protos.h,
9309         config/v850/v850.md, config/v850/predicates.md,
9310         config/v850/v850-c.c, config/v850/v850.c, config/v850/v850.opt,
9311         config/v850/v850.h, config/v850/v850-protos.h, config/vxworks.c,
9312         config/knetbsd-gnu.h, config/sol2-6.h, config/vxworks.h,
9313         config/mmix/mmix.h, config/mmix/predicates.md,
9314         config/mmix/mmix-protos.h, config/mmix/mmix.md,
9315         config/mmix/mmix.c, config/mmix/mmix.opt,
9316         config/mmix/mmix-modes.def, config/bfin/bfin.opt,
9317         config/bfin/rtems.h, config/bfin/bfin-modes.def,
9318         config/bfin/predicates.md, config/bfin/bfin-protos.h,
9319         config/bfin/bfin.c, config/bfin/bfin.h, config/bfin/bfin.md:
9320         Likewise.
9321
9322 2007-08-02  Richard Sandiford  <richard@codesourcery.com>
9323
9324         * emit-rtl.c (reset_used_decls): Rename to...
9325         (set_used_decls): ...this.  Set the used flag rather than clearing it.
9326         (unshare_all_rtl_again): Update accordingly.  Set flags on argument
9327         DECL_RTLs rather than resetting them.
9328
9329 2007-08-02  Andreas Krebbel  <krebbel1@de.ibm.com>
9330
9331         * config/s390/s390.md ("*xordi3_cconly"): Change xr to xg.
9332
9333 2007-08-01  Sandra Loosemore  <sandra@codesourcery.com>
9334
9335         * reload.c (find_reloads_address_part): Pass correct MEMREFLOC
9336         argument to find_reloads_address.
9337
9338 2007-08-01  Daniel Jacobowitz  <dan@codesourcery.com>
9339
9340         PR tree-optimization/32919
9341         * tree-ssa-sccvn.c (visit_phi): Do not visit abnormal PHIs.
9342         * tree-ssa-coalesce.c (ssa_conflicts_dump): New.
9343         (coalesce_ssa_name): Call it.
9344
9345 2007-08-01  Sandra Loosemore  <sandra@codesourcery.com>
9346             David Ung  <davidu@mips.com>
9347
9348         * config/mips/mips16.S (__mips16_unordsf2, __mips16_floatunsisf): New.
9349         (__mips16_unorddf2, __mips16_floatunsidf): New.
9350         * config/mips/mips.c (mips_init_libfuncs): Add optab entries for
9351         above functions.
9352         * config/mips/t-libgcc-mips16 (LIB1ASMFUNCS): Add new functions.
9353
9354 2007-08-01  Zdenek Dvorak  <ook@ucw.cz>
9355
9356         * tree-pretty-print.c (dump_generic_node): Dump OMP_SECTIONS_SWITCH.
9357         Display new operands of OMP_SECTIONS and OMP_CONTINUE.
9358         * tree.h (OMP_SECTIONS_CONTROL): New macro.
9359         (OMP_DIRECTIVE_P): Add OMP_SECTIONS_SWITCH.
9360         * omp-low.c (get_ws_args_for, determine_parallel_type,
9361         expand_omp_for_generic, expand_omp_for_static_nochunk,
9362         expand_omp_for_static_chunk, expand_omp_for, expand_omp_sections):
9363         Work with more precise CFG.
9364         (build_omp_regions_1): Handle OMP_SECTIONS_SWITCH.
9365         (lower_omp_sections): Emit OMP_SECTIONS_SWITCH.  Add arguments to
9366         OMP_CONTINUE.
9367         * tree-gimple.c (is_gimple_stmt): Handle OMP_SECTIONS_SWITCH.
9368         * gimple-low.c (lower_stmt): Ditto.
9369         * tree-inline.c (estimate_num_insns_1): Ditto.
9370         * tree.def (OMP_SECTIONS, OMP_CONTINUE): Added new operands.
9371         (OMP_SECTIONS_SWITCH): New.
9372         * tree-cfgcleanup.c (cleanup_omp_return): New.
9373         (cleanup_tree_cfg_bb): Call cleanup_omp_return.
9374         * tree-cfg.c (make_edges): Create back edges for OMP_CONTINUE
9375         and exit edge for OMP_FOR.  Handle OMP_SECTIONS_SWITCH.
9376         (tree_redirect_edge_and_branch): Handle omp constructs.
9377
9378         * fortran/trans-openmp.c (gfc_trans_omp_sections): Build OMP_SECTIONS
9379         with three arguments.
9380
9381 2007-08-01  Zdenek Dvorak  <ook@ucw.cz>
9382
9383         * tree-cfg.c (tree_merge_blocks): Preserve loop exit phi nodes only
9384         in loop closed ssa.
9385
9386 2007-08-01  Zdenek Dvorak  <ook@ucw.cz>
9387
9388         * tree-ssa-threadupdate.c (thread_through_all_blocks): Record that
9389         the loop structures may need fixing.
9390         * tree-cfgcleanup.c (cleanup_tree_cfg_noloop, repair_loop_structures):
9391         New functions.
9392         (cleanup_tree_cfg_loop): Removed.
9393         (cleanup_tree_cfg): If loops need fixing, call repair_loop_structures.
9394         * tree-predcom.c (tree_predictive_commoning): Return TODO_cleanup_cfg
9395         instead of running cleanup_tree_cfg_loop.
9396         * cfgloop.h (LOOPS_NEED_FIXUP): New constant.
9397         * tree-flow.h (cleanup_tree_cfg_loop): Declaration removed.
9398         (tree_predictive_commoning): Declaration changed.
9399         * passes.c (execute_function_todo): Do not use cleanup_tree_cfg_loop.
9400
9401 2007-08-01  Zdenek Dvorak  <ook@ucw.cz>
9402
9403         * doc/invoke.texi (l1-cache-size): Update documentation.
9404         (l2-cache-size): Document.
9405         * params.h (L2_CACHE_SIZE): New macro.
9406         * tree-ssa-loop-prefetch.c (L1_CACHE_SIZE_BYTES): Reflect
9407         that L1_CACHE_SIZE is in kB now.
9408         (L2_CACHE_SIZE_BYTES): New macro.
9409         (tree_ssa_prefetch_arrays): Show size in kB.
9410         * config/i386/i386.h (struct processor_costs): Add l1_cache_size
9411         and l2_cache_size fields.
9412         * config/i386/driver-i386.c (describe_cache): Detect cache size
9413         in kB.
9414         * config/i386/i386.c (size_cost, i386_cost, i486_cost,pentium_cost,
9415         pentiumpro_cost, geode_cost, k6_cost, athlon_cost, k8_cost,
9416         amdfam10_cost, pentium4_cost, nocona_cost, core2_cost,
9417         generic64_cost, generic32_cost): Add l1_cache_size and l2_cache_size.
9418         (override_options): Set l1-cache-size and l2-cache-size to default
9419         values if not specified otherwise.
9420         * params.def (PARAM_L1_CACHE_SIZE): Change to set in kB.
9421         (PARAM_L2_CACHE_SIZE): New.
9422
9423 2007-08-01  Nigel Stephens  <nigel@mips.com>
9424             David Ung  <davidu@mips.com>
9425             Thiemo Seufer  <ths@mips.com>
9426             Chris Dearman  <chris@mips.com>
9427             Richard Sandiford  <richard@codesourcery.com>
9428
9429         * config.gcc (mips*-sde-elf*): New stanza.
9430         (mipsisa32-*-elf*, mipsisa32el-*-elf*, mipsisa32r2-*-elf*)
9431         (mipsisa32r2el-*-elf*, mipsisa64-*-elf*, mipsisa64el-*-elf*)
9432         (mipsisa64sb1-*-elf*, mipsisa64sb1el-*-elf*, mips-*-elf*)
9433         (mipsel-*-elf*, mips64-*-elf*, mips64el-*-elf*, mips64orion-*-elf*)
9434         (mips64orionel-*-elf*, mips*-*-rtems*, mips-wrs-windiss)
9435         (mipstx39-*-elf*, mipstx39el-*-elf*): Add mips/t-libgcc-mips16
9436         to tmake_file.
9437         * config/mips/sde.h: New file.
9438         * config/mips/t-libgcc-mips16: Likewise.
9439         * config/mips/t-sde: Likewise.
9440         * config/mips/linux.h (TARGET_OS_CPP_BUILTINS): Remove settings
9441         of _ABIN32, _ABI64, _ABIO32, _MIPS_SIM, _MIPS_SZLONG, _MIPS_SZPTR,
9442         _MIPS_FPSET and _MIPS_SZINT.
9443         * config/mips/iris.h (TARGET_OS_CPP_BUILTINS): Likewise.
9444         * config/mips/elfoabi.h (DRIVER_SELF_SPECS): Remove separate
9445         insertion of a default -mips option.  Use MIPS_32BIT_OPTION_SPEC.
9446         * config/mips/t-isa3264 (LIB1ASMSRC, LIB1ASMFUNCS): Delete.
9447         * config/mips/t-r3900 (LIB1ASMSRC, LIB1ASMFUNCS): Likewise.
9448         * config/mips/t-elf (LIB1ASMSRC, LIB1ASMFUNCS): Likewise.
9449         * config/mips/mips.h (TARGET_CPU_CPP_BUITINS): Define _ABIO32,
9450         _ABIN32, _ABI64, _ABIO64, _MIPS_SIM, _MIPS_SZINT, _MIPS_SZLONG,
9451         _MIPS_SZPTR and _MIPS_FPSET.
9452         (MIPS_ISA_LEVEL_SPEC): Inject the default -mips option if no
9453         architecture is specified.
9454         (MIPS_32BIT_OPTION_SPEC): New macro.
9455
9456 2007-07-31  Dan Hipschman  <dsh@google.com>
9457
9458         * gcc.c (end_going_arg): New function.
9459         (do_spec_2): Use it.
9460         (do_spec_1): Use it.
9461
9462 2007-07-31  H.J. Lu  <hongjiu.lu@intel.com>
9463
9464         * ddg.c (add_cross_iteration_register_deps): Declare bb_info
9465         only if ENABLE_CHECKING is defined.
9466
9467 2007-07-31  Kenneth Zadeck <zadeck@naturalbridge.com>
9468
9469         * df.h (DF_RU, DF_RU_BB_INFO, df_ru_bb_info, df_ru,
9470         df_ru_add_problem, df_ru_get_bb_info): Removed.
9471         (DF_RD, DF_UREC, DF_CHAIN, DF_NOTE): Renumbered.
9472         * df-problems.c (df_ru_problem_data, df_ru_set_bb_info,
9473         df_ru_free_bb_info, df_ru_alloc,
9474         df_ru_bb_local_compute_process_def,
9475         df_ru_bb_local_compute_process_use, df_ru_bb_local_compute,
9476         df_ru_local_compute, df_ru_init_solution, df_ru_confluence_n,
9477         df_ru_transfer_function, df_ru_free, df_ru_start_dump,
9478         df_ru_top_dump, df_ru_bottom_dump, df_problem problem_RU,
9479         df_ru_add_problem): Removed.
9480
9481 2007-07-31  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
9482
9483         PR target/32847
9484         * pa.md (casesi32): Use match_scratch.  Revise insn condition.
9485         (casesi32p, casesi64p): Likewise.
9486         (casesi): Adjust for above.
9487
9488 2007-07-31  Richard Sandiford  <richard@codesourcery.com>
9489
9490         * mode-switching.c (create_pre_exit): Don't search past calls.
9491
9492 2007-07-31  Sandra Loosemore  <sandra@codesourcery.com>
9493
9494         * config/mips/mips.h (ISA_HAS_SYNCI): Add !TARGET_MIPS16 test.
9495
9496 2007-07-31  Revital Eres  <eres@il.ibm.com>
9497
9498         * ddg.c (add_deps_for_def): Rename to...
9499         (add_cross_iteration_register_deps): This.  Change implementation
9500         to use only reaching def and def-use chains to construct the
9501         inter loop dependencies.
9502         (add_deps_for_use): Remove function.
9503         (build_inter_loop_deps): Call add_cross_iteration_register_deps
9504         function to build the inter loop dependencies.
9505         * modulo-sched.c (sms_schedule): Build only
9506         reaching def and def-use chains for the propose of the ddg
9507         construction.
9508
9509 2007-07-31  Julian Brown  <julian@codesourcery.com>
9510
9511         * config/arm/neon.md (vec_set<mode>_internal, vec_setv2di_internal):
9512         New define_insns. Use correct RTL.
9513         (vec_set<mode>): Write as expander.
9514
9515 2007-07-31  Razya Ladelsky  <razya@il.ibm.com>
9516
9517         * matrix-reorg.c (analyze_matrix_allocation_site): Avoid referring 
9518         to an unallocated space.
9519
9520 2007-07-30  Jan Sjodin  <jan.sjodin@amd.com>
9521
9522         * tree-data-ref.c
9523         (split_constant_offset): Enable split_constant_offset to extract
9524         constants from other statements.
9525         * tree-vect-transform.c
9526         (vect_create_addr_base_for_vector_ref): Generate data_ref_base
9527         to a temp var. Force base_offset to be simple.
9528
9529 2007-07-30  Seongbae Park <seongbae.park@gmail.com>
9530
9531         * df-scan.c (df_scan_verify): Remove artificial limit on
9532         the number of blocks for verification.
9533         * df-problems.c (df_lr_bb_local_compute, df_simulate_find_defs,
9534         df_simulate_defs): Avoid unnecessary insn checking for defs.
9535
9536 2007-07-29  Mark Mitchell  <mark@codesourcery.com>
9537
9538         * config/m68k/lb1sf68.asm (FUNC): New macro.
9539         (__mulsi3): Use it.
9540         (__udivsi3): Likewise.
9541         (__divsi3): Likewise.
9542         (__umodsi3): Likewise.
9543         (__modsi3): Likewise.
9544         (__subdf3): Likewise.
9545         (__adddf3): Likewise.
9546         (__muldf3): Likewise.
9547         (__divdf3): Likewise.
9548         (__negdf2): Likewise.
9549         (__cmpdf2): Likewise.
9550         (__subsf3): Likewise.
9551         (__addsf3): Likewise.
9552         (__mulsf3): Likewise.
9553         (__divsf3): Likewise.
9554         (__negsf2): Likewise.
9555         (__cmpsf2): Likewise.
9556         (__eqdf2): Likewise.
9557         (__nedf2): Likewise.
9558         (__gtdf2): Likewise.
9559         (__gedf2): Likewise.
9560         (__ltdf2): Likewise.
9561         (__ledf2): Likewise.
9562         (__eqsf2): Likewise.
9563         (__nesf2): Likewise.
9564         (__gtsf2): Likewise.
9565         (__gesf2): Likewise.
9566         (__ltsf2): Likewise.
9567         (__lesf2): Likewise.
9568
9569 2007-07-30  Ollie Wild  <aaw@google.com>
9570
9571         * c-ppoutput.c (print_lines_directives_only): New function.
9572         (scan_translation_unit_directives_only): New function.
9573         (preprocess_file): Add call to scan_translation_unit_directives_only.
9574         * c-opts.c (c_common_handle_option): Add OPT_fdirectives_only.
9575         (sanitize_cpp_opts): Add default flag_dump_macros setting for
9576         -fdirectives-only.  Add errors for -fdirectives-only conflict with
9577         -Wunused-macros and -traditional.
9578         (finish_options): Add builtin macro initialization for
9579         -fdirectives-only + -fpreprocessed.
9580         * c.opt (fdirectives-only): New.
9581         * doc/cppopts.texi (fdirectives-only): New.
9582
9583 2007-07-30  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
9584
9585         * alias.c (record_set, memory_modified_1): Constify.
9586         * bt-load.c (note_btr_set): Likewise.
9587         * caller-save.c (mark_set_regs, add_stored_regs): Likewise.
9588         * combine.c (set_nonzero_bits_and_sign_copies,
9589         expand_field_assignment, record_dead_and_set_regs_1,
9590         use_crosses_set_p, reg_dead_at_p_1, can_combine_p,
9591         likely_spilled_retval_1): Likewise.
9592         * config/frv/frv.c (frv_registers_update_1, frv_io_check_address,
9593         frv_io_handle_set): Likewise.
9594         * config/mips/mips.c (mips_sim_record_set,
9595         vr4130_true_reg_dependence_p_1): Likewise.
9596         * config/mt/mt.c (insn_dependent_p_1): Likewise.
9597         * config/s390/s390.c (s390_reg_clobbered_rtx): Likewise.
9598         * config/sh/sh.c (flow_dependent_p_1): Likewise.
9599         * cselib.c (cselib_invalidate_rtx_note_stores): Likewise.
9600         * dce.c (mark_nonreg_stores_1, mark_nonreg_stores_2): Likewise.
9601         * ddg.c (mark_mem_store): Likewise.
9602         * df-problems.c (df_urec_mark_reg_change): Likewise.
9603         * function.c (update_epilogue_consts): Likewise.
9604         * gcse.c (record_set_info, record_last_set_info,
9605         mems_conflict_for_gcse_p, canon_list_insert, reg_set_info,
9606         reg_clear_last_set): Likewise.
9607         * global.c (mark_reg_store, mark_reg_clobber, reg_becomes_live):
9608         Likewise.
9609         * jump.c (reversed_comparison_code_parts): Likewise.
9610         * local-alloc.c (validate_equiv_mem_from_store, no_equiv,
9611         reg_is_set): Likewise.
9612         * loop-iv.c (mark_altered): Likewise.
9613         * mode-switching.c (reg_becomes_live): Likewise.
9614         * optabs.c (no_conflict_move_test): Likewise.
9615         * postreload-gcse.c (record_last_set_info, find_mem_conflicts):
9616         Likewise.
9617         * postreload.c (reload_combine_note_store, move2add_note_store):
9618         Likewise.
9619         * regmove.c (flags_set_1): Likewise.
9620         * regrename.c (note_sets, kill_clobbered_value, kill_set_value):
9621         Likewise.
9622         * reload1.c (mark_not_eliminable, forget_old_reloads_1):
9623         Likewise. 
9624         * resource.c (update_live_status): Likewise.
9625         * rtl.h (set_of, note_stores): Likewise.
9626         * rtlanal.c (set_of_1, parms_set, struct set_of_data, set_of,
9627         note_stores, parms_set): Likewise.
9628         * sched-rgn.c (sets_likely_spilled_1): Likewise.
9629         * stack-ptr-mod.c (notice_stack_pointer_modification_1):
9630         Likewise. 
9631         * var-tracking.c (count_stores, add_stores): Likewise.
9632
9633 2007-07-30  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
9634
9635         * alias.c (mems_in_disjoint_alias_sets_p,
9636         fixed_scalar_and_varying_struct_p, aliases_everything_p,
9637         nonoverlapping_component_refs_p, nonoverlapping_memrefs_p,
9638         write_dependence_p, mems_in_disjoint_alias_sets_p,
9639         read_dependence, true_dependence, canon_true_dependence,
9640         anti_dependence, output_dependence): Constify.
9641         * combine.c (extended_count): Likewise.
9642         * cse.c (cse_rtx_varies_p, hash_rtx, exp_equiv_p): Likewise.
9643         * cselib.c (get_value_hash, references_value_p,
9644         cselib_reg_set_mode, cselib_rtx_varies_p): Likewise.
9645         * cselib.h (cselib_reg_set_mode, references_value_p): Likewise.
9646         * emit-rtl.c (mem_expr_equal_p, active_insn_p): Likewise.
9647         * function.c (contains, prologue_epilogue_contains,
9648         sibcall_epilogue_contains): Likewise. 
9649         * jump.c (simplejump_p, condjump_p, condjump_in_parallel_p,
9650         pc_set, any_uncondjump_p, any_condjump_p, onlyjump_p,
9651         only_sets_cc0_p, sets_cc0_p, rtx_renumbered_equal_p, true_regnum,
9652         reg_or_subregno): Likewise.
9653         * recog.c (asm_noperands): Likewise.
9654         * reload1.c (function_invariant_p): Likewise.
9655         * rtl.h (mem_expr_equal_p, active_insn_p, rtx_varies_p,
9656         rtx_addr_varies_p, asm_noperands, exp_equiv_p, hash_rtx,
9657         condjump_p, any_condjump_p, any_uncondjump_p, pc_set,
9658         simplejump_p, onlyjump_p, only_sets_cc0_p, sets_cc0_p,
9659         true_regnum, reg_or_subregno, condjump_in_parallel_p,
9660         extended_count, prologue_epilogue_contains,
9661         sibcall_epilogue_contains, function_invariant_p, true_dependence,
9662         canon_true_dependence, read_dependence, anti_dependence,
9663         output_dependence): Likewise.
9664         * rtlanal.c (rtx_varies_p, rtx_addr_varies_p): Likewise.
9665
9666 2007-07-30  Julian Brown  <julian@codesourcery.com>
9667
9668         * config/arm/neon.md (V_ext): New mode attribute.
9669         (neon_vget_lane<mode>): Replace with define_expand.
9670         (neon_vget_lane<mode>_sext_internal)
9671         (neon_vget_lane<mode>_zext_internal): New define_insns for double
9672         and quad precision vectors.
9673         (neon_vget_lanedi): Add bounds check. Remove dead comment.
9674         * config/arm/neon.ml (get_lane): Make 32-bit get-lane intrinsics
9675         have typeless 32-bit result.
9676
9677 2007-07-30  Andrew Pinski  <andrew_pinski@playstation.sony.com>
9678
9679         PR tree-opt/32527
9680         * tree-affine.h (aff_tree): The type of rest is sizetype for types
9681         of pointers.
9682         * tree-affine.c (aff_combination_scale): If type is a pointer type,
9683         use sizetype for rest.
9684         (aff_combination_add_elt): Likewise. Don't specialize pointer types.
9685         (aff_combination_convert): Don't convert rest for pointer types.
9686
9687 2007-07-28  Daniel Berlin  <dberlin@dberlin.org>
9688
9689         * Makefile.in (tree-ssa-alias.o): Add alloc-pool.h
9690
9691         * tree-ssa-alias.c: Add alloc-pool.h.
9692         (init_alias_info): Free alias_bitmap_obstack.
9693         (delete_alias_info): Call delete_mem_ref_stats.
9694         (get_mem_sym_stats_for): Use alloc_pool.
9695         (init_mem_ref_stats): Do not delete mem_ref_stats here.
9696         (delete_mem_sym_stats): Removed.
9697         
9698 2007-07-29  Sebastian Pop  <sebpop@gmail.com>
9699
9700         * tree-data-ref.c (add_multivariate_self_dist): Parametric access
9701         functions cannot be represented as classical distance vectors.
9702
9703 2007-07-29  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
9704
9705         * attribs.c (hash_attr, eq_attr, init_attributes): Constify.
9706         * builtins.c (validate_arg, builtin_mathfn_code,
9707         validate_arglist): Likewise.
9708         * calls.c (call_expr_flags): Likewise.
9709         * combine.c (reg_nonzero_bits_for_combine,
9710         reg_num_sign_bit_copies_for_combine, get_last_value,
9711         reg_truncated_to_mode): Likewise.
9712         * emit-rtl.c (subreg_lowpart_p): Likewise.
9713         * expr.c (highest_pow2_factor_for_target,
9714         categorize_ctor_elements_1, categorize_ctor_elements,
9715         count_type_elements, contains_packed_reference,
9716         highest_pow2_factor, highest_pow2_factor_for_target): Likewise.
9717         * fold-const.c (may_negate_without_overflow_p, int_const_binop,
9718         fold_convertible_p, operand_equal_p, tree_swap_operands_p,
9719         native_encode_int, native_encode_real, native_encode_complex,
9720         native_encode_vector, native_encode_expr, native_interpret_int,
9721         native_interpret_real, native_interpret_complex,
9722         native_interpret_vector, native_interpret_expr): Likewise.
9723         * function.c (use_register_for_decl): Likewise.
9724         * gimplify.c (get_name): Likewise.
9725         * langhooks-def.h (lhd_return_null_const_tree): New.
9726         (LANG_HOOKS_GET_CALLEE_FNDECL): Use it.
9727         * langhooks.c (lhd_return_null_const_tree): New.
9728         * langhooks.h (lang_get_callee_fndecl): Constify.
9729         * output.h (constructor_static_from_elts_p): Likewise.
9730         * rtl-factoring.c (gen_symbol_ref_rtx_for_label): Likewise.
9731         * rtl.h (nonzero_bits, num_sign_bit_copies, truncated_to_mode,
9732         subreg_lowpart_p, noop_move_p, struct rtl_hooks): Likewise.
9733         * rtlanal.c (cached_nonzero_bits, nonzero_bits1,
9734         cached_num_sign_bit_copies, num_sign_bit_copies1, noop_move_p,
9735         nonzero_bits, num_sign_bit_copies, truncated_to_mode): Likewise.
9736         * rtlhooks-def.h (reg_nonzero_bits_general,
9737         reg_num_sign_bit_copies_general, reg_truncated_to_mode_general):
9738         Likewise. 
9739         * rtlhooks.c (reg_num_sign_bit_copies_general,
9740         reg_nonzero_bits_general, reg_truncated_to_mode_general):
9741         Likewise. 
9742         * stmt.c (warn_if_unused_value, is_body_block): Likewise.
9743         * stor-layout.c (mode_for_size_tree): Likewise.
9744         * tree-ssa-loop-im.c (memref_eq): Likewise.
9745         * tree-ssa-loop-ivopts.c (tree_int_cst_sign_bit): Likewise.
9746         * tree.c (contains_placeholder_p, type_list_equal,
9747         simple_cst_equal, get_callee_fndecl, operand_equal_for_phi_arg_p):
9748         Likewise. 
9749         * tree.h (tree_int_cst_sign_bit, may_negate_without_overflow_p,
9750         mode_for_size_tree, categorize_ctor_elements, count_type_elements,
9751         contains_placeholder_p, contains_packed_reference,
9752         get_callee_fndecl, operand_equal_for_phi_arg_p,
9753         warn_if_unused_value, is_body_block, native_encode_expr,
9754         native_interpret_expr, fold_convertible_p, operand_equal_p,
9755         int_const_binop, tree_swap_operands_p, builtin_mathfn_code,
9756         validate_arglist, simple_cst_equal, type_list_equal,
9757         use_register_for_decl, call_expr_flags, get_name,
9758         highest_pow2_factor): Likewise.
9759         (const_call_expr_arg_iterator_d,
9760         init_const_call_expr_arg_iterator, next_const_call_expr_arg,
9761         first_const_call_expr_arg, more_const_call_expr_args_p,
9762         FOR_EACH_CONST_CALL_EXPR_ARG): New.
9763         * varasm.c (constructor_static_from_elts_p): Constify.
9764
9765 2007-07-28  Kazu Hirata  <kazu@codesourcery.com>
9766
9767         * cfglayout.c, config/arm/arm.c, config/arm/cortex-a8.md,
9768         config/arm/neon-schedgen.ml, config/arm/neon.ml,
9769         config/arm/vec-common.md, config/ia64/div.md, cselib.c,
9770         df-core.c, df.h, dominance.c, optabs.c, opts.c, reg-stack.c,
9771         regstat.c, target.h, tree-ssa-live.c, tree-ssa-pre.c,
9772         tree-vect-transform.c, tree.def: Fix comment typos.  Follow
9773         spelling conventions.
9774         * doc/invoke.texi: Follow spelling conventions.
9775
9776 2007-07-29  Vladimir Yanovsky  <yanov@il.ibm.com>
9777             Revital Eres  <eres@il.ibm.com>
9778
9779         * modulo-sched.c (sms_schedule): Avoid loops which includes
9780         auto-increment instructions.
9781
9782 2007-07-28  Richard Guenther  <rguenther@suse.de>
9783
9784         PR middle-end/32920
9785         * fold-const.c (fold_cond_expr_with_comparison): Convert
9786         operand zero of MIN/MAX_EXPR to correct type.
9787
9788 2007-07-28  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
9789
9790         * calls.c (special_function_p, setjmp_call_p, alloca_call_p,
9791         flags_from_decl_or_type): Constify.
9792         * gcc.c (do_spec_1): Likewise.
9793         * print-tree.c (dump_addr, print_node_brief): Likewise.
9794         * tree-cfg.c (stmt_starts_bb_p, is_ctrl_stmt, computed_goto_p,
9795         simple_goto_p, tree_can_make_abnormal_goto, stmt_starts_bb_p,
9796         tree_purge_all_dead_eh_edges): Likewise.
9797         * tree-flow.h (is_ctrl_stmt, computed_goto_p, simple_goto_p,
9798         tree_can_make_abnormal_goto, tree_purge_all_dead_eh_edges):
9799         Likewise. 
9800         * tree.c (expr_location, expr_has_location, expr_locus,
9801         expr_filename, expr_lineno, get_inner_array_type,
9802         fields_compatible_p): Likewise.
9803         * tree.h (get_inner_array_type, fields_compatible_p,
9804         expr_location, expr_has_location, expr_locus, expr_filename,
9805         expr_lineno, dump_addr, print_node_brief, flags_from_decl_or_type,
9806         setjmp_call_p, alloca_call_p): Likewise.
9807
9808 2007-07-28  Daniel Berlin  <dberlin@dberlin.org>
9809
9810         * timevar.def: Add TV_CALL_CLOBBER, TV_FLOW_SENSITIVE,
9811         TV_FLOW_INSENSITIVE.
9812
9813         * tree-ssa-alias.c (compute_call_clobbered): Push/pop
9814         TV_CALL_CLOBBER.
9815         (compute_flow_sensitive_aliasing): Ditto for TV_FLOW_SENSITIVE.
9816         (compute_flow_insensitive_aliasing): Ditto for
9817         TV_FLOW_INSENSITIVE.    
9818
9819 2007-07-27  Jan Hubicka  <jh@suse.cz>
9820
9821         * config/i386/i386.c (register_move_cost): Remove accidentally
9822         comitted #if 0 block.
9823
9824         * attribs.c: Include hashtab.h
9825         (attribute_hash): New.
9826         (substring): New structure.
9827         (extract_attribute_substring, substring_hash, hash_attr, eq_attr):
9828         New function.
9829         (init_attributes): Initialize attribute hash.
9830         (decl_attributes): Use attribute hash.
9831         * Makefile.in (attribs.c): Depend on hashtab.h.
9832
9833 2007-07-27  Steve Ellcey  <sje@cup.hp.com>
9834
9835         * config/ia64/vect.md (vec_initv2si): Remove bad BIG_ENDIAN test.
9836
9837 2007-07-27  Richard Sandiford  <richard@codesourcery.com>
9838
9839         * doc/invoke.texi (mdsp, mdspr2): Document the __mips_dsp,
9840         __mips_dspr2 and __mips_dsp_rev macros.
9841         * config/mips/mips.h (TARGET_CPU_CPP_BUILTINS): Define __mips_dsp_rev.
9842
9843 2007-07-27  Douglas Gregor  <doug.gregor@gmail.com>
9844         
9845        * c-common.h (enum rid): Add RID_DECLTYPE, update RID_LAST_CXX0X.
9846
9847 2007-07-26  Kenneth Zadeck <zadeck@naturalbridge.com>
9848
9849         PR middle-end/32749
9850         
9851         * df-problems.c (df_create_unused_note): Removed do_not_gen parm
9852         and the updating of the live and do_not_gen sets.
9853         (df_note_bb_compute): Added updating of live and do_not_gen sets
9854         for regular defs so that the case of clobber inside conditional
9855         call is processed correctly.
9856         
9857 2007-07-27  Zdenek Dvorak  <dvorakz@suse.cz>
9858
9859         * config/rs6000/rs6000.c (rs6000_gimplify_va_arg): Generate the
9860         operands with compatible type.
9861
9862 2007-07-27  Richard Sandiford  <richard@codesourcery.com>
9863
9864         * expr.h (store_bit_field): Don't return a value.
9865         * expmed.c (check_predicate_volatile_ok): New function.
9866         (store_bit_field_1): New function, extracted from store_bit_field.
9867         Take a fallback_p argument and return true if the operation succeeded.
9868         Only use store_fixed_bit_field if fallback_p.  Don't recompute
9869         mode_for_extraction; use op_mode instead.  Try forcing memories
9870         into registers if the insv expander fails.
9871         (store_bit_field): Use store_bit_field_1 with fallback_p true.
9872         Don't return a value.
9873         (convert_extracted_bit_field): New function, extracted from
9874         store_bit_field.
9875         (extract_bit_field_1): Likewise.  Take a fallback_p argument
9876         and return NULL if the operation succeeded.  Only use
9877         extract_fixed_bit_field if fallback_p.  Only calculate one
9878         extraction mode.  Combine code for extv and extzv.  Try forcing
9879         memories into registers if the ext(z)v expander fails.
9880         (extract_bit_field): Use extract_bit_field_1 with fallback_p true.
9881
9882 2007-07-27  Richard Sandiford  <rsandifo@nildram.co.uk>
9883
9884         * df.h (df_mw_hardreg): Turn df_ref_type and df_ref_flags
9885         into bitfields.
9886         (df_ref): Likewise.  Put regno with other integer fields.
9887
9888 2007-07-27  Richard Sandiford  <rsandifo@nildram.co.uk>
9889
9890         * df.h (df_mw_hardreg): Remove "loc" field.
9891         * df-scan.c (df_ref_record): Don't set it.  Remove redundant
9892         local variable.
9893         * df-problems.c (df_whole_mw_reg_unused_p): New function,
9894         split out from df_set_unused_notes_for_mw.  Return false for
9895         partial references.  Assert that mw_reg is a REG when returning true.
9896         (df_set_unused_notes_for_mw): Use it.  Use mw_reg instead of *loc.
9897         (df_whole_mw_reg_dead_p): New function, split out from
9898         df_set_dead_notes_for_mw.  Return false for partial references.
9899         Assert that mw_reg is a REG when returning true.
9900         (df_set_dead_notes_for_mw): Use it.  Use mw_reg instead of *loc.
9901         Remove redundant bitmap check.
9902
9903 2007-07-26  H.J. Lu  <hongjiu.lu@intel.com>
9904
9905         * config/ia64/t-ia64 ($(T)crtbegin.o): Removed.
9906         ($(T)crtend.o): Likwise.
9907         ($(T)crtbeginS.o): Likwise.
9908         ($(T)crtendS.o): Likwise.
9909         ($(T)crtfastmath.o): Likwise.
9910
9911 2007-07-26  Zdenek Dvorak  <dvorakz@suse.cz>
9912
9913         * dominance.c (dom_computed, n_bbs_in_dom_tree): Removed.
9914         * function.h (dom_computed, n_bbs_in_dom_tree): New macros.
9915         * basic-block.h (struct control_flow_graph): Added x_dom_computed
9916         and x_n_bbs_in_dom_tree fields.
9917
9918 2007-07-26  Steve Ellcey  <sje@cup.hp.com>
9919
9920         PR tree-optimization/32087
9921         * tree-ssa-loop-manip.c (tree_transform_and_unroll_loop):
9922         Do not call scale_bbs_frequencies_int with prob of zero.
9923
9924 2007-07-26  Julian Brown  <julian@codesourcery.com>
9925
9926         * config/arm/arm-protos.h (neon_lane_bounds, neon_const_bounds)
9927         (neon_element_bits): Add prototypes.
9928         * config/arm/arm.c (bounds_check, neon_lane_bounds)
9929         (neon_const_bounds, neon_element_bits): New functions.
9930         * config/arm/neon.md (neon_vget_lane<mode>, neon_vget_lanedi)
9931         (neon_vget_lanev2di, neon_vset_lane<mode>, neon_vset_lanedi)
9932         (neon_vset_lanev2di, neon_vdup_lane<mode>, neon_vdup_lanedi)
9933         (neon_vdup_lanev2di, neon_vcvt_n<mode>, neon_vmul_lane<mode>)
9934         (neon_vmull_lane<mode>, neon_vqdmull_lane<mode>)
9935         (neon_vqdmulh_lane<mode>, neon_vmla_lane<mode>)
9936         (neon_vmlal_lane<mode>, neon_vqdmlal_lane<mode>)
9937         (neon_vmls_lane<mode>, neon_vmlsl_lane<mode>)
9938         (neon_vqdmlsl_lane<mode>, neon_vext<mode>, neon_vshr_n<mode>)
9939         (neon_vshrn_n<mode>, neon_vqshrn_n<mode>, neon_vqshrun_n<mode>)
9940         (neon_vshl_n<mode>, neon_vshl_n<mode>, neon_vqshl_n<mode>)
9941         (neon_vqshlu_n<mode>, neon_vshll_n<mode>, neon_vsra_n<mode>)
9942         (neon_vsri_n<mode>, neon_vsli_n<mode>): Add bounds checks.
9943
9944 2007-07-26  Nathan Froyd  <froydnj@codesourcery.com>
9945
9946         * config/vxworks.h (VXWORKS_LINK_SPEC): Fix typo.
9947         (HAVE_AS_GNU_ATTRIBUTE): Undefine.
9948
9949 2007-07-26  Mark Shinwell  <shinwell@codesourcery.com>
9950             Julian Brown  <julian@codesourcery.com>
9951
9952         * config/arm/arm.c (arm_mac_accumulator_is_mul_result): New.
9953         * config/arm/arm-protos.h (arm_mac_accumulator_is_mul_result): New.
9954         * config/arm/cortex-a8.md: New.
9955         * config/arm/cortex-a8-neon.md: New.
9956         * config/arm/neon-schedgen.ml: New.
9957         * config/arm/neon.md (vqh_mnem): New.
9958         (neon_type): New.
9959         (Is_float_mode): New.
9960         (Scalar_mul_8_16): New.
9961         (Is_d_reg): New.
9962         (V_mode_nunits): New.
9963         (All instruction patterns): Annotate with neon_type attribute
9964         values.
9965         * config/arm/arm.md: Include cortex-a8.md.
9966         (insn): Add smmla, umaal, smlald, smlsld, clz, mrs, msr and xtab
9967         values.
9968         Annotate instruction patterns accordingly.
9969         (generic_sched): Do not use generic scheduling for Cortex-A8.
9970         (generic_vfp): Do not use generic VFP scheduling for Cortex-A8.
9971
9972 2007-07-26  Daniel Jacobowitz  <dan@codesourcery.com>
9973
9974         * fold-const.c (fold_read_from_constant_string): Use
9975         build_int_cst_type.
9976         * tree-ssa-ccp.c (fold_const_aggregate_ref): Likewise.
9977
9978 2007-07-26  Nick Clifton  <nickc@redhat.com>
9979
9980         * tree-ssa-operands.h: Change copyright header to refer to version
9981         3 of the GNU General Public License and to point readers at the
9982         COPYING3 file and the FSF's license web page.
9983         * tree-vrp.c, regrename.c, attribs.c, loop-unswitch.c,
9984         sched-ebb.c, fwprop.c, tree-loop-linear.c, dwarf2asm.c,
9985         tree-into-ssa.c, dwarf2asm.h, tree-ssa-loop-im.c, sbitmap.c,
9986         targhooks.c, tree-dump.c, tree-complex.c, sbitmap.h, targhooks.h,
9987         tree-dump.h, regstat.c, see.c, machmode.h, hooks.c, cgraphbuild.c,
9988         hooks.h, genrecog.c, tree-ssa-threadupdate.c, gen-protos.c,
9989         flags.h, rtlhooks.c, gencheck.c, tree-ssa-loop-niter.c,
9990         opts-common.c, dbgcnt.def, tree-pretty-print.c, tracer.c,
9991         gengtype.c, mkconfig.sh, gengtype.h, tree-ssa-loop-unswitch.c,
9992         cgraph.c, c-lex.c, cgraph.h, libfuncs.h, cfgloopmanip.c,
9993         rtl-error.c, optabs.c, postreload-gcse.c, tree-ssa-loop-manip.c,
9994         optabs.h, genmddeps.c, defaults.h, postreload.c, value-prof.c,
9995         tree-ssa-loop-ch.c, tree-tailcall.c, gengenrtl.c, value-prof.h,
9996         genopinit.c, tree.c, tree.h, reload.c, tree-pass.h, ipa-cp.c,
9997         reload.h, bitmap.c, bitmap.h, tree-scalar-evolution.c,
9998         c-config-lang.in, tree-scalar-evolution.h, target.h, cppspec.c,
9999         rtlanal.c, ddg.c, lambda-mat.c, mips-tdump.c, ddg.h,
10000         tree-phinodes.c, mips-tfile.c, pointer-set.c, pointer-set.h,
10001         diagnostic.c, final.c, diagnostic.h, builtins.c, genoutput.c,
10002         gcc.c, lists.c, tree-ssa-alias-warnings.c, gcc.h, cfghooks.c,
10003         input.h, gensupport.c, fold-const.c, cfghooks.h, insn-notes.def,
10004         gensupport.h, builtin-attrs.def, sync-builtins.def, params.c,
10005         cfgloopanal.c, params.h, graphds.c, omp-low.c, tree-ssa-dse.c,
10006         graphds.h, gcov.c, cfg.c, genextract.c, ipa-reference.c,
10007         genautomata.c, tree-ssa-uncprop.c, auto-inc-dec.c, toplev.c,
10008         tree-gimple.c, ipa-reference.h, vmsdbgout.c, errors.c, toplev.h,
10009         reorg.c, tree-gimple.h, tree-chrec.c, pretty-print.c, errors.h,
10010         real.c, tree-chrec.h, pretty-print.h, debug.c, real.h, genemit.c,
10011         omega.c, c-cppbuiltin.c, genmultilib, debug.h, omega.h,
10012         tree-ssa-sccvn.c, genconfig.c, tree-ssa-sccvn.h, cgraphunit.c,
10013         regs.h, df-scan.c, vec.c, hosthooks-def.h, vec.h,
10014         tree-ssa-copyrename.c, scan.c, builtin-types.def, tree-ssa-ccp.c,
10015         scan.h, mode-classes.def, haifa-sched.c, dominance.c, dojump.c,
10016         double-int.c, gcov-io.c, dbxout.c, builtins.def, double-int.h,
10017         dbxout.h, tree-ssa-loop-ivopts.c, df-core.c, mode-switching.c,
10018         gengtype-lex.l, tree-nomudflap.c, modulo-sched.c, c-objc-common.c,
10019         hosthooks.h, c-objc-common.h, caller-save.c, graph.c,
10020         ipa-pure-const.c, graph.h, c-format.c, cse.c, fix-header.c,
10021         c-format.h, web.c, tree-stdarg.c, genpeep.c, tree-stdarg.h,
10022         tree-ssa-math-opts.c, xcoffout.c, tree-ssa-dom.c, tree-nrv.c,
10023         xcoffout.h, tree-ssa-propagate.c, ipa-utils.c,
10024         tree-ssa-propagate.h, tree-ssa-alias.c, loop-init.c, ipa-utils.h,
10025         gimple-low.c, rtl.def, c-tree.h, tree-ssa-sink.c, ipa-inline.c,
10026         mkmap-symver.awk, machmode.def, c-pch.c, cfganal.c, global.c,
10027         alloc-pool.c, c-semantics.c, alloc-pool.h, jump.c, ifcvt.c,
10028         dwarf2out.c, expr.c, cfgbuild.c, tree-browser.c, dwarf2out.h,
10029         expr.h, longlong.h, opts.c, gcov-iov.c, opts.h, dwarf2.h,
10030         genattrtab.c, genconditions.c, genattr.c, optc-gen.awk,
10031         timevar.def, tree-ssa-loop-ivcanon.c, hard-reg-set.h, predict.c,
10032         tree-ssa-loop.c, host-default.c, predict.h, recog.c, dbgcnt.c,
10033         recog.h, dbgcnt.h, c-aux-info.c, tree-ssa-address.c, timevar.c,
10034         dse.c, lcm.c, tree-ssa-ifcombine.c, timevar.h, dse.h,
10035         matrix-reorg.c, tree-vn.c, treestruct.def, fp-test.c, c-decl.c,
10036         tree-eh.c, c-errors.c, c-pretty-print.c, regmove.c,
10037         lambda-trans.c, c-pretty-print.h, et-forest.c, et-forest.h,
10038         ebitmap.c, configure.ac, local-alloc.c, function.c, langhooks.c,
10039         ebitmap.h, cppdefault.c, tree-vectorizer.c, function.h,
10040         langhooks.h, print-rtl.c, cppdefault.h, df.h, tree-vectorizer.h,
10041         sdbout.c, stor-layout.c, sdbout.h, rtlhooks-def.h, read-rtl.c,
10042         gcse.c, ipa-type-escape.c, vmsdbg.h, alias.c, gengtype-parse.c,
10043         ipa-type-escape.h, domwalk.c, alias.h, tree-if-conv.c, profile.c,
10044         init-regs.c, domwalk.h, ipa.c, gccbug.in, tree-data-ref.c,
10045         loop-unroll.c, tree-data-ref.h, tree-flow-inline.h, tree-affine.c,
10046         mkmap-flat.awk, tree-affine.h, tree-vect-analyze.c, c.opt, ggc.h,
10047         opt-gather.awk, c-typeck.c, gimplify.c, coretypes.h, exec-tool.in,
10048         insn-addr.h, tree-ssa-phiopt.c, c-pragma.c, c-pragma.h, calls.c,
10049         tree-ssa-coalesce.c, genmodes.c, loop-doloop.c, predict.def,
10050         dwarf.h, tree.def, rtl-factoring.c, lower-subreg.c, expmed.c,
10051         bt-load.c, ggc-common.c, genflags.c, tree-dfa.c, except.c,
10052         coverage.c, except.h, emit-rtl.c, cfgexpand.c, coverage.h,
10053         stringpool.c, cselib.c, emit-rtl.h, tree-cfgcleanup.c, c-opts.c,
10054         cselib.h, cfgcleanup.c, simplify-rtx.c, tree-ssa-pre.c, explow.c,
10055         tree-ssa-live.c, tree-sra.c, tree-ssa-live.h, tree-predcom.c,
10056         loop-invariant.c, genpreds.c, protoize.c, opth-gen.awk, c-dump.c,
10057         lambda.h, loop-iv.c, tree-mudflap.c, ipa-prop.c, print-tree.c,
10058         tree-mudflap.h, tree-ssa-copy.c, ipa-prop.h, cfglayout.c,
10059         tree-ssa-forwprop.c, c-convert.c, cfglayout.h, common.opt,
10060         ggc-zone.c, ggc-page.c, c-omp.c, tree-ssa-dce.c, gencodes.c,
10061         varasm.c, tree-vect-patterns.c, libada-mk.in, tree-ssa-ter.c,
10062         sched-deps.c, tree-nested.c, c-ppoutput.c, tree-ssa.c,
10063         target-def.h, tree-ssa-loop-prefetch.c, lambda-code.c,
10064         omp-builtins.def, rtl.c, regclass.c, stab.def, intl.c, rtl.h,
10065         intl.h, tree-inline.c, conditions.h, tree-inline.h, integrate.c,
10066         sched-int.h, tree-iterator.c, integrate.h, tree-iterator.h,
10067         genchecksum.c, tree-optimize.c, output.h, tree-vect-transform.c,
10068         tree-object-size.c, combine.c, tree-outof-ssa.c, addresses.h,
10069         bb-reorder.c, stack-ptr-mod.c, resource.c, var-tracking.c,
10070         cfgloop.c, system.h, resource.h, ggc-none.c, tree-profile.c,
10071         cfgloop.h, c-gimplify.c, c-common.c, opt-functions.awk,
10072         tree-vect-generic.c, tree-flow.h, df-problems.c, scan-decls.c,
10073         c-common.h, config.gcc, reg-stack.c, tlink.c, main.c, stub-objc.c,
10074         fixproto, config.host, Makefile.in, gccspec.c, sched-rgn.c,
10075         vecprim.h, basic-block.h, tree-ssa-structalias.c,
10076         tree-ssa-structalias.h, c-common.def, sched-vis.c, tree-cfg.c,
10077         passes.c, genconstants.c, c-incpath.c, c-incpath.h,
10078         struct-equiv.c, c-parser.c, tree-ssa-reassoc.c, varray.c, sreal.c,
10079         varray.h, dfp.c, sreal.h, combine-stack-adj.c, dfp.h,
10080         reg-notes.def, cfgrtl.c, config.build, varpool.c, gengtype-yacc.y,
10081         stmt.c, dce.c, tree-browser.def, prefix.c, statistics.h,
10082         params.def, dce.h, c-lang.c, gcov-dump.c, prefix.h,
10083         tree-ssanames.c, collect2.c, collect2.h, tree-ssa-threadedge.c,
10084         convert.c, convert.h, langhooks-def.h, reload1.c,
10085         tree-ssa-operands.c: Likewise.
10086
10087 2007-07-26  Jan Hubicka  <jh@suse.cz>
10088
10089         * tree-ssa-live.c: Include debug.h and flags.h.
10090         (mark_scope_block_unused): New function.
10091         (remove_unused_scope_block_p): New function.
10092         (remove_unused_locals): Remove unused blocks too.
10093
10094 2007-07-25  Ian Lance Taylor  <iant@google.com>
10095
10096         * combine.c (combine_max_regno): Remove.  Remove all uses.
10097         (struct reg_stat_struct): Rename from struct reg_stat.
10098         (reg_stat_type): Define, and declare VECs.
10099         (reg_stat): Change from pointer to VEC.  Change all uses.
10100         (combine_split_insns): New static function.
10101         (try_combine, find_split_point): Call it instead of split_insns.
10102
10103 2007-07-25  Zdenek Dvorak  <dvorakz@suse.cz>
10104
10105         * cfghooks.c (split_block): Fix the information about loop latch.
10106
10107 2007-07-25  Zdenek Dvorak  <dvorakz@suse.cz>
10108
10109         * cfgloopmanip.c (fix_loop_structure): Call force_single_succ_latches.
10110
10111 2007-07-25  Zdenek Dvorak  <dvorakz@suse.cz>
10112
10113         * tree-ssa-threadupdate.c (create_edge_and_update_destination_phis):
10114         Scan the new edge for loop exit info.
10115
10116 2007-07-25  Andreas Tobler  <a.tobler@schweiz.org>
10117
10118         * config/darwin.c: Include debug.h.
10119
10120 2007-07-25  Steve Ellcey  <sje@cup.hp.com>
10121
10122         PR target/32218
10123         * tree-vect-patterns.c (vect_pattern_recog_1): Check for valid type.
10124
10125 2007-07-25  Steve Ellcey  <sje@cup.hp.com>
10126
10127         * config/ia64/ia64.h (HARD_REGNO_NREGS): Handle RFmode.
10128         (HARD_REGNO_MODE_OK): Ditto.
10129         (MODES_TIEABLE_P): Ditto.
10130         (HARD_REGNO_CALLER_SAVE_MODE): Ditto.
10131         (CLASS_MAX_NREGS): Ditto.
10132         * config/ia64/ia64.c (ia64_print_operand_address): Add R format.
10133         * config/ia64/ia64.md (divsf3_internal_thr): Removed.
10134         (divdf3_internal_thr): Removed.
10135         * config/ia64/div.md: New file.
10136         * config/ia64/constraints.md: Add H constraint.
10137
10138 2007-07-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
10139
10140         * sbitmap.c (sbitmap_verify_popcount, sbitmap_alloc_with_popcount,
10141         sbitmap_copy, sbitmap_copy_n, sbitmap_equal, sbitmap_empty_p,
10142         sbitmap_union_of_diff_cg, sbitmap_union_of_diff, sbitmap_not,
10143         sbitmap_difference, sbitmap_any_common_bits, sbitmap_a_and_b_cg,
10144         sbitmap_a_and_b, sbitmap_a_xor_b_cg, sbitmap_a_xor_b,
10145         sbitmap_a_or_b_cg, sbitmap_a_or_b, sbitmap_a_subset_b_p,
10146         sbitmap_a_or_b_and_c_cg, sbitmap_a_or_b_and_c,
10147         sbitmap_a_and_b_or_c_cg, sbitmap_a_and_b_or_c,
10148         sbitmap_first_set_bit, sbitmap_last_set_bit, dump_sbitmap,
10149         dump_sbitmap_file, debug_sbitmap, popcount_table,
10150         sbitmap_popcount): Constify.
10151         * sbitmap.h (const_sbitmap, const_sbitmap_ptr): New.
10152         (sbitmap_iterator, sbitmap_iter_init, dump_sbitmap,
10153         dump_sbitmap_file, sbitmap_copy, sbitmap_copy_n, sbitmap_equal,
10154         sbitmap_empty_p, sbitmap_union_of_diff, sbitmap_union_of_diff_cg,
10155         sbitmap_difference, sbitmap_not, sbitmap_a_or_b_and_c,
10156         sbitmap_a_or_b_and_c_cg, sbitmap_a_and_b_or_c,
10157         sbitmap_a_and_b_or_c_cg, sbitmap_any_common_bits, sbitmap_a_and_b,
10158         sbitmap_a_and_b_cg, sbitmap_a_or_b, sbitmap_a_or_b_cg,
10159         sbitmap_a_xor_b, sbitmap_a_xor_b_cg, sbitmap_a_subset_b_p,
10160         sbitmap_first_set_bit, sbitmap_last_set_bit, debug_sbitmap,
10161         sbitmap_popcount, sbitmap_verify_popcount): Constify.
10162
10163 2007-07-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
10164
10165         * bitmap.c (hash_descriptor, eq_descriptor, bitmap_element_zerop,
10166         bitmap_copy, bitmap_clear_bit, popcount_table, bitmap_count_bits,
10167         bitmap_first_set_bit, bitmap_and, bitmap_and_into,
10168         bitmap_elt_copy, bitmap_and_compl, bitmap_and_compl_into,
10169         bitmap_compl_and_into, bitmap_elt_ior, bitmap_ior,
10170         bitmap_ior_into, bitmap_xor, bitmap_xor_into, bitmap_equal_p,
10171         bitmap_intersect_p, bitmap_intersect_compl_p,
10172         bitmap_ior_and_compl, bitmap_ior_and_compl_into,
10173         debug_bitmap_file, debug_bitmap, bitmap_print, bitmap_hash):
10174         Constify.
10175         * bitmap.h (bitmap_copy, bitmap_equal_p, bitmap_intersect_p,
10176         bitmap_intersect_compl_p, bitmap_count_bits, bitmap_and,
10177         bitmap_and_into, bitmap_and_compl, bitmap_and_compl_into,
10178         bitmap_compl_and_into, bitmap_ior, bitmap_ior_into, bitmap_xor,
10179         bitmap_xor_into, bitmap_ior_and_compl, bitmap_ior_and_compl_into,
10180         debug_bitmap, debug_bitmap_file, bitmap_print,
10181         bitmap_first_set_bit, bitmap_hash, bmp_iter_set_init,
10182         bmp_iter_and_init, bmp_iter_and_compl_init): Likewise.
10183
10184 2007-07-25  Daniel Berlin  <dberlin@dberlin.org>
10185
10186         * config/darwin.c (darwin_override_options): Additional fix for
10187         debug info formats that don't support var tracking.
10188
10189 2007-07-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
10190
10191         * cselib.c (entry_and_rtx_equal_p): Constify.
10192         * gengtype.c (output_mangled_typename, write_types, write_local):
10193         Likewise.
10194         * gengtype.h (const_type_p): New.
10195         * see.c (eq_descriptor_extension, hash_descriptor_extension):
10196         Constify.
10197         * tlink.c (scan_linker_output): De-constify.
10198         * tree-ssa-loop-im.c (memref_eq): Constify.
10199         * tree-ssa-structalias.c (const_shared_bitmap_info_t): New.
10200         (shared_bitmap_hash, shared_bitmap_eq): Constify.
10201
10202 2007-07-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
10203
10204         * c-common.c (fname_as_string, c_type_hash): Constify.
10205         * c-typeck.c (free_all_tagged_tu_seen_up_to): Likewise.
10206         * cgraph.c (edge_hash, edge_eq): Likewise.
10207         * dwarf2out.c (decl_die_table_eq, decl_loc_table_eq): Likewise.
10208         * emit-rtl.c (mem_attrs_htab_eq, reg_attrs_htab_hash,
10209         reg_attrs_htab_eq): Likewise.
10210         * except.c (t2r_eq, t2r_hash, ttypes_filter_eq, ehl_hash, ehl_eq):
10211         Likewise.
10212         * genautomata.c (const_reserv_sets_t, const_unit_decl_t,
10213         const_decl_t, const_state_t, const_automata_list_el_t): New.
10214         (first_out_arc, DECL_UNIT, DECL_BYPASS, DECL_AUTOMATON, DECL_EXCL,
10215         DECL_PRESENCE, DECL_ABSENCE, DECL_RESERV, DECL_INSN_RESERV,
10216         automaton_decl_hash, automaton_decl_eq_p, insn_decl_hash,
10217         insn_decl_eq_p, decl_hash, decl_eq_p, alt_state_cmp,
10218         reserv_sets_cmp, reserv_sets_eq, state_hash, state_eq_p,
10219         automata_list_hash, automata_list_eq_p, compare_states_for_equiv,
10220         compare_max_occ_cycle_nums, out_state_arcs_num,
10221         compare_transition_els_num, units_cmp, state_reservs_cmp):
10222         Constify.
10223         * genmodes.c (cmp_modes): Likewise.
10224         * ggc-common.c (saving_htab_hash, saving_htab_eq): Likewise.
10225         * gimplify.c (compare_case_labels): Likewise.
10226         * ipa-type-escape.c (get_name_of_type, type_brand_s): Likewise.
10227         * loop-unroll.c (si_info_hash, ve_info_hash): Likewise.
10228         * matrix-reorg.c (mtt_info_hash): Likewise.
10229         * postreload-gcse.c (hash_expr_for_htab, expr_equiv_p): Likewise.
10230         * rtl-factoring.c (const_p_hash_bucket, const_p_hash_elem): New.
10231         (htab_hash_bucket, htab_hash_elem): Constify.
10232         * tree-browser.c (TB_parent_eq): Likewise.
10233         * tree-scalar-evolution.c (hash_scev_info): Likewise.
10234         * tree-ssa-alias.c (sort_tags_by_id): Likewise.
10235         * tree-ssa-coalesce.c (const_coalesce_pair_p): New.
10236         (coalesce_pair_map_hash, coalesce_pair_map_eq, compare_pairs):
10237         Constify.
10238         * tree-ssa-dom.c (avail_expr_hash, avail_expr_eq): Likewise.
10239         * tree-ssa-pre.c (const_expr_pred_trans_t): New.
10240         (expr_pred_trans_hash, expr_pred_trans_eq): Constify.
10241         * tree-ssa-sccvn.c (const_vn_binary_op_t, const_vn_unary_op_t,
10242         const_vn_phi_t, const_vn_reference_op_t, const_vn_reference_t):
10243         New.
10244         (vn_reference_op_eq, vn_reference_hash, vn_reference_eq,
10245         vn_unary_op_hash, vn_unary_op_eq, vn_binary_op_hash,
10246         vn_binary_op_eq, vn_phi_hash, vn_phi_eq): Constify.
10247         * tree-ssa-threadupdate.c (redirection_data_hash,
10248         redirection_data_eq): Likewise. 
10249         * tree-ssa-uncprop.c (equiv_hash, equiv_eq): Likewise.
10250         * tree-ssa.c (var_ann_eq): Likewise.
10251         * tree-vrp.c (compare_case_labels): Likewise.
10252         * tree.c (int_cst_hash_hash, int_cst_hash_eq,
10253         tree_map_base_marked_p, type_hash_marked_p, tree_check_failed,
10254         tree_not_check_failed, tree_class_check_failed,
10255         tree_range_check_failed, tree_not_class_check_failed,
10256         omp_clause_check_failed, omp_clause_range_check_failed,
10257         tree_contains_struct_check_failed, tree_operand_check_failed):
10258         Likewise. 
10259         * tree.h (tree_contains_struct_check_failed, tree_check_failed,
10260         tree_not_check_failed, tree_class_check_failed,
10261         tree_range_check_failed, tree_not_class_check_failed,
10262         tree_operand_check_failed, omp_clause_operand_check_failed,
10263         tree_operand_length): Likewise. 
10264         * var-tracking.c (const_variable): New.
10265         (variable_htab_hash, variable_htab_eq): Constify.
10266         * varasm.c (const_desc_hash): Likewise.
10267
10268 2007-07-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
10269
10270         * expr.c (handled_component_p): Constify.
10271         * fold-const.c (fit_double_type): Likewise.
10272         * real.h (real_value_from_int_cst): Likewise.
10273         * tree-flow-inline.h (gimple_in_ssa_p,
10274         gimple_aliases_computed_p, gimple_addressable_vars,
10275         gimple_call_clobbered_vars, gimple_referenced_vars,
10276         gimple_global_var, gimple_nonlocal_all, gimple_var_anns,
10277         end_htab_p, end_referenced_vars_p, var_ann, function_ann,
10278         may_aliases, end_readonly_imm_use_p, has_zero_uses,
10279         has_single_use, single_imm_use, num_imm_uses, is_exec_stmt,
10280         is_label_stmt, is_global_var, phi_ssa_name_p,
10281         factoring_name_p, is_call_clobbered, tree_common_ann,
10282         op_iter_done, end_imm_use_stmt_p, end_imm_use_on_stmt_p,
10283         unmodifiable_var_p, array_ref_contains_indirect_ref,
10284         ref_contains_array_ref, lookup_subvars_for_var,
10285         var_can_have_subvars, overlap_subvar, gimple_ssa_operands,
10286         gimple_mem_ref_stats): Likewise.
10287         * tree-flow.h (tree_common_ann, var_ann, function_ann,
10288         may_aliases, is_exec_stmt, is_label_stmt,
10289         ref_contains_array_ref, array_ref_contains_indirect_ref,
10290         var_can_have_subvars, overlap_subvar, is_call_clobbered,
10291         unmodifiable_var_p): Likewise.
10292         * tree-gimple.c (is_gimple_min_invariant): Likewise.
10293         * tree-gimple.h (is_gimple_min_invariant): Likewise. 
10294         * tree.c (type_hash_list, attribute_hash_list, tree_size,
10295         cst_and_fits_in_hwi, real_value_from_int_cst,
10296         build_real_from_int_cst, integer_zerop, integer_onep,
10297         integer_all_onesp, integer_pow2p, integer_nonzerop, tree_log2,
10298         tree_floor_log2, real_zerop, real_onep, real_twop,
10299         real_minus_onep, really_constant_p, purpose_member, chain_member,
10300         list_length, fields_length, int_size_in_bytes, bit_position,
10301         int_bit_position, byte_position, int_byte_position, expr_align,
10302         array_type_nelts, tree_node_structure,
10303         type_contains_placeholder_1, iterative_hash_pointer,
10304         is_attribute_with_length_p, is_attribute_p, check_qualified_type,
10305         tree_map_base_eq, type_hash_list, type_hash_eq,
10306         attribute_hash_list, type_num_arguments, tree_int_cst_equal,
10307         tree_int_cst_lt, tree_int_cst_compare, host_integerp,
10308         tree_low_cst, tree_int_cst_msb, tree_int_cst_sgn,
10309         simple_cst_list_equal, compare_tree_int, iterative_hash_expr,
10310         int_fits_type_p, get_containing_scope, decl_function_context,
10311         decl_type_context, omp_clause_operand_check_failed,
10312         initializer_zerop, int_cst_value, num_ending_zeros): Likewise.
10313         * tree.h (omp_clause_operand_check_failed, tree_size,
10314         build_real_from_int_cst, array_type_nelts, purpose_member,
10315         tree_int_cst_equal, tree_int_cst_lt, tree_int_cst_compare,
10316         host_integerp, tree_low_cst, tree_int_cst_msb, tree_int_cst_sgn,
10317         is_attribute_p, check_qualified_type, expr_align,
10318         int_size_in_bytes, bit_position, int_bit_position, byte_position,
10319         int_byte_position, list_length, fields_length, initializer_zerop,
10320         integer_zerop, integer_onep, integer_all_onesp, integer_pow2p,
10321         integer_nonzerop, cst_and_fits_in_hwi, num_ending_zeros,
10322         tree_node_structure, handled_component_p, get_containing_scope,
10323         decl_function_context, decl_type_context, real_zerop,
10324         type_num_arguments, fit_double_type, really_constant_p,
10325         int_fits_type_p, tree_log2, tree_floor_log2, iterative_hash_expr,
10326         compare_tree_int, chain_member, simple_cst_list_equal, real_onep,
10327         real_twop, real_minus_onep, int_cst_value): Likewise.
10328
10329 2007-07-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
10330
10331         * cfglayout.c (insn_scope, insn_line): Constify.
10332         * emit-rtl.c (const_int_htab_hash, const_int_htab_eq,
10333         const_double_htab_hash, const_double_htab_eq,
10334         mem_attrs_htab_hash): Likewise.
10335         * loop-iv.c (biv_eq): Likewise.
10336         * print-rtl.c (print_rtx, print_decl_name, print_mem_expr,
10337         print_inline_rtx, debug_rtx, debug_rtx_list, debug_rtx_range,
10338         debug_rtx_find, print_rtl, print_rtl_single, print_simple_rtl):
10339         Likewise. 
10340         * rtl-error.c (location_for_asm, diagnostic_for_asm,
10341         error_for_asm, warning_for_asm, _fatal_insn,
10342         _fatal_insn_not_found): Likewise. 
10343         * rtl.c (rtx_size, shared_const_p, shallow_copy_rtx_stat,
10344         rtx_equal_p, rtl_check_failed_bounds, rtl_check_failed_type1,
10345         rtl_check_failed_type2, rtl_check_failed_code1,
10346         rtl_check_failed_code2, rtl_check_failed_code_mode,
10347         rtvec_check_failed_bounds, rtl_check_failed_flag): Likewise.
10348         * rtl.h (rtl_check_failed_bounds, rtl_check_failed_type1,
10349         rtl_check_failed_type2, rtl_check_failed_code1,
10350         rtl_check_failed_code2, rtl_check_failed_code_mode,
10351         rtvec_check_failed_bounds, rtl_check_failed_flag, LABEL_KIND,
10352         SET_LABEL_KIND, rhs_regno, subreg_lsb, subreg_regno, subreg_nregs,
10353         shared_const_p, rtx_size, shallow_copy_rtx_stat, rtx_equal_p,
10354         get_pool_mode, insn_line, insn_file, simplify_replace_rtx,
10355         mode_signbit_p, rtx_addr_can_trap_p, nonzero_address_p,
10356         rtx_unstable_p, get_integer_term, get_related_value,
10357         offset_within_block_p, reg_mentioned_p, count_occurrences,
10358         reg_referenced_p, reg_used_between_p, no_labels_between_p,
10359         single_set_2, multiple_sets, set_noop_p, refers_to_regno_p,
10360         reg_overlap_mentioned_p, dead_or_set_p, dead_or_set_regno_p,
10361         find_reg_note, find_regno_note, find_reg_equal_equiv_note,
10362         find_constant_src, find_reg_fusage, find_regno_fusage,
10363         pure_call_p, remove_note, side_effects_p, volatile_refs_p,
10364         volatile_insn_p, may_trap_p, may_trap_after_code_motion_p,
10365         may_trap_or_fault_p, inequality_comparisons_p, tablejump_p,
10366         computed_jump_p, auto_inc_p, in_expr_list_p,
10367         remove_node_from_expr_list, loc_mentioned_in_p,
10368         label_is_jump_target_p, reversed_comparison_code_parts,
10369         debug_rtx, debug_rtx_list, debug_rtx_range, debug_rtx_find,
10370         print_mem_expr, print_rtl, print_simple_rtl, print_rtl_single,
10371         print_inline_rtx): Likewise.
10372         * rtlanal.c (covers_regno_p, covers_regno_no_parallel_p,
10373         computed_jump_p_1, nonzero_bits1, rtx_unstable_p,
10374         rtx_addr_can_trap_p_1, rtx_addr_can_trap_p, nonzero_address_p,
10375         get_integer_term, get_related_value, offset_within_block_p,
10376         count_occurrences, reg_mentioned_p, no_labels_between_p,
10377         reg_used_between_p, reg_referenced_p, single_set_2,
10378         multiple_sets, set_noop_p, refers_to_regno_p,
10379         reg_overlap_mentioned_p, dead_or_set_p,
10380         covers_regno_no_parallel_p, covers_regno_p,
10381         dead_or_set_regno_p, find_reg_note, find_regno_note,
10382         find_reg_equal_equiv_note, find_constant_src, find_reg_fusage,
10383         find_regno_fusage, pure_call_p, remove_note, in_expr_list_p,
10384         remove_node_from_expr_list, volatile_insn_p, volatile_refs_p,
10385         side_effects_p, may_trap_p_1, may_trap_p,
10386         may_trap_after_code_motion_p, may_trap_or_fault_p,
10387         inequality_comparisons_p, tablejump_p, computed_jump_p_1,
10388         computed_jump_p, auto_inc_p, loc_mentioned_in_p, subreg_lsb,
10389         subreg_regno, subreg_nregs, label_is_jump_target_p): Likewise.
10390         * simplify-rtx.c (neg_const_int, plus_minus_operand_p,
10391         mode_signbit_p, simplify_replace_rtx, plus_minus_operand_p):
10392         Likewise. 
10393         * toplev.h (_fatal_insn_not_found, _fatal_insn, error_for_asm,
10394         warning_for_asm): Likewise.
10395         * tree.h (print_rtl): Likewise.
10396         * varasm.c (get_pool_mode): Likewise.
10397
10398 2007-07-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
10399
10400         * c-lex.c (c_lex_with_flags, lex_string): Constify.
10401         * c-ppoutput.c (print_line, pp_dir_change): Likewise.
10402         * c-typeck.c (free_all_tagged_tu_seen_up_to): Likewise.
10403         * cfg.c (bb_copy_original_hash, bb_copy_original_eq): Likewise.
10404         * cfgloop.c (loop_exit_hash, loop_exit_eq): Likewise.
10405         * ddg.c (compare_sccs): Likewise.
10406         * df-scan.c (df_ref_compare, df_mw_compare): Likewise.
10407         * dfp.c (decimal_real_from_string, decimal_to_decnumber,
10408         decimal_to_binary, decimal_do_compare, decimal_real_to_decimal,
10409         decimal_do_fix_trunc, decimal_real_to_integer,
10410         decimal_real_to_integer2, decimal_real_maxval): Likewise.
10411         * dse.c (const_group_info_t): New.
10412         (invariant_group_base_eq, invariant_group_base_hash): Constify.
10413         * dwarf2out.c (const_dw_die_ref): New.
10414         (decl_die_table_hash, decl_die_table_eq, file_info_cmp): Constify.
10415         * tree-browser.c (TB_parent_eq): Likewise.
10416         * unwind-dw2-fde.c (__register_frame_info_bases,
10417         __deregister_frame_info_bases, fde_unencoded_compare, fde_split,
10418         add_fdes, linear_search_fdes, binary_search_unencoded_fdes):
10419         Likewise.
10420         * unwind-dw2-fde.h (get_cie, next_fde): Likewise.
10421         * unwind-dw2.c (uw_frame_state_for): Likewise.
10422         * value-prof.c (histogram_hash, histogram_eq): Likewise.
10423         * value-prof.h (const_histogram_value): New.
10424
10425 2007-07-25  Richard Sandiford  <richard@codesourcery.com>
10426
10427         * config/mips/mips.c (machine_function): Add
10428         initialized_mips16_gp_pseudo_p.
10429         (mips16_gp_pseudo_reg): Do not emit the initialization of
10430         mips16_gp_pseudo_rtx when being called from the gimple cost-
10431         calculation routines; emit it on the first use outside those
10432         routines.
10433
10434 2007-07-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
10435
10436         * coretypes.h (const_bitmap, const_rtx, const_rtvec, const_tree):
10437         New.
10438         
10439         * rtl.h (RTL_CHECK1, RTL_CHECK2, RTL_CHECKC1, RTL_CHECKC2,
10440         RTVEC_ELT, XWINT, XCWINT, XCMWINT, XCNMPRV, BLOCK_SYMBOL_CHECK,
10441         RTL_FLAG_CHECK1, RTL_FLAG_CHECK2, RTL_FLAG_CHECK3,
10442         RTL_FLAG_CHECK4, RTL_FLAG_CHECK5, RTL_FLAG_CHECK6,
10443         RTL_FLAG_CHECK7, RTL_FLAG_CHECK8, LABEL_KIND, SET_LABEL_KIND):
10444         Preserve const-ness of parameters through use of __typeof(),
10445         also constify and tidy.
10446         
10447         * tree.h (TREE_CHECK, TREE_NOT_CHECK, TREE_CHECK2,
10448         TREE_NOT_CHECK2, TREE_CHECK3, TREE_NOT_CHECK3, TREE_CHECK4,
10449         NON_TREE_CHECK4, TREE_CHECK5, TREE_NOT_CHECK5,
10450         CONTAINS_STRUCT_CHECK, TREE_CLASS_CHECK, TREE_RANGE_CHECK,
10451         OMP_CLAUSE_SUBCODE_CHECK, OMP_CLAUSE_RANGE_CHECK, EXPR_CHECK,
10452         GIMPLE_STMT_CHECK, NON_TYPE_CHECK, TREE_VEC_ELT_CHECK,
10453         PHI_NODE_ELT_CHECK, OMP_CLAUSE_ELT_CHECK, TREE_OPERAND_CHECK,
10454         TREE_OPERAND_CHECK_CODE, GIMPLE_STMT_OPERAND_CHECK,
10455         TREE_RTL_OPERAND_CHECK, TREE_CHAIN, TREE_TYPE): Likewise.
10456
10457 2007-07-25  Julian Brown  <julian@codesourcery.com>
10458             Mark Shinwell  <shinwell@codesourcery.com>
10459
10460         * config/alpha/alpha.c (alpha_mangle_fundamental_type): Rename to...
10461         (alpha_mangle_type): This.
10462         (TARGET_MANGLE_FUNDAMENTAL_TYPE): Don't define.
10463         (TARGET_MANGLE_TYPE): Define this instead.
10464         * config/arm/arm-protos.h (arm_mangle_type): Add prototype.
10465         * config/arm/arm.c (TARGET_MANGLE_TYPE): Define target hook.
10466         (arm_init_neon_builtins): Fix comment.
10467         (arm_mangle_map_entry): New.
10468         (arm_mangle_map): New.
10469         (arm_mangle_type): New.
10470         * config/i386/i386.c (ix86_mangle_fundamental_type): Rename to...
10471         (ix86_mangle_type): This. Use TYPE_MAIN_VARIANT and restrict
10472         mangled types to VOID_TYPE, BOOLEAN_TYPE, INTEGER_TYPE, REAL_TYPE.
10473         (TARGET_MANGLE_FUNDAMENTAL_TYPE): Don't define.
10474         (TARGET_MANGLE_TYPE): Define this instead.
10475         * config/ia64/ia64.c (ia64_mangle_fundamental_type): Rename to...
10476         (ia64_mangle_type): This. Use TYPE_MAIN_VARIANT  and restrict
10477         mangled types to VOID_TYPE, BOOLEAN_TYPE, INTEGER_TYPE, REAL_TYPE.
10478         (TARGET_MANGLE_FUNDAMENTAL_TYPE): Don't define.
10479         (TARGET_MANGLE_TYPE): Define this instead.
10480         * config/rs6000/rs6000.c (rs6000_mangle_fundamental_type): Rename
10481         to...
10482         (rs6000_mangle_type): This. Use TYPE_MAIN_VARIANT.
10483         (TARGET_MANGLE_FUNDAMENTAL_TYPE): Don't define.
10484         (TARGET_MANGLE_TYPE): Define this instead.
10485         * config/s390/s390.c (s390_mangle_fundamental_type): Rename to...
10486         (s390_mangle_type): This.
10487         (TARGET_MANGLE_FUNDAMENTAL_TYPE): Don't define.
10488         (TARGET_MANGLE_TYPE): Define this instead.
10489         * config/sparc/sparc.c (sparc_mangle_fundamental_type): Rename to...
10490         (sparc_mangle_type): This.
10491         (TARGET_MANGLE_FUNDAMENTAL_TYPE): Don't define.
10492         (TARGET_MANGLE_TYPE): Define this instead.
10493         * cp/mangle.c (write_type): Call mangle_type target hook on all
10494         types before mangling.  Use original type, not main variant, as
10495         argument.
10496         * target-def.h (TARGET_MANGLE_FUNDAMENTAL_TYPE): Rename hook to...
10497         (TARGET_MANGLE_TYPE): This.
10498         * target.h (gcc_target): Rename mangle_fundamental_type to
10499         mangle_type.
10500         * doc/tm.texi (TARGET_MANGLE_FUNDAMENTAL_TYPE): Rename section to...
10501         (TARGET_MANGLE_TYPE): This. Note slightly different semantics.
10502
10503 2007-07-25  Julian Brown  <julian@codesourcery.com>
10504             Paul Brook  <paul@codesourcery.com>
10505             Joseph Myers  <joseph@codesourcery.com>
10506             Mark Shinwell  <shinwell@codesourcery.com>
10507
10508         * Makefile.in (TEXI_GCC_FILES): Add arm-neon-intrinsics.texi.
10509         * config.gcc (arm*-*-*): Add arm_neon.h to extra headers.
10510         (with_fpu): Allow --with-fpu=neon.
10511         * config/arm/aof.h (ADDITIONAL_REGISTER_NAMES): Add Q0-Q15.
10512         * config/arm/aout.h (ADDITIONAL_REGISTER_NAMES): Add Q0-Q15.
10513         * config/arm/arm-modes.def (EI, OI, CI, XI): New modes.
10514         * config/arm/arm-protos.h (neon_immediate_valid_for_move)
10515         (neon_immediate_valid_for_logic, neon_output_logic_immediate)
10516         (neon_pairwise_reduce, neon_expand_vector_init, neon_reinterpret)
10517         (neon_emit_pair_result_insn, neon_disambiguate_copy)
10518         (neon_vector_mem_operand, neon_struct_mem_operand, output_move_quad)
10519         (output_move_neon): Add prototypes.
10520         * config/arm/arm.c (FL_NEON): New flag for NEON processor capability.
10521         (all_fpus): Add FPUTYPE_NEON.
10522         (fp_model_for_fpu): Add NEON field.
10523         (arm_return_in_memory): Return vectors <= 16 bytes in ARM registers.
10524         (arm_arg_partial_bytes): Allow NEON vectors to be passed partially
10525         in registers.
10526         (arm_legitimate_address_p): Don't support fancy addressing for NEON
10527         structure moves.
10528         (thumb2_legitimate_address_p): Likewise.
10529         (neon_valid_immediate): Recognize and prepare constants suitable for
10530         NEON instructions.
10531         (neon_immediate_valid_for_move): New function. Recognize and prepare
10532         immediates for NEON move instructions.
10533         (neon_immediate_valid_for_logic): New function. Recognize and
10534         prepare immediates for NEON logic instructions.
10535         (neon_output_logic_immediate): New function. Create asm string
10536         suitable for outputting immediate logic instructions.
10537         (neon_pairwise_reduce): New function. Implement reduction using
10538         pairwise operations.
10539         (neon_expand_vector_init): New function. Expand a (possibly
10540         non-constant) vector initialization.
10541         (neon_vector_mem_operand): New function. Memory operands supported
10542         for quad-word loads/stores to/from ARM or NEON registers. Don't
10543         allow base+offset addressing for core regs.
10544         (neon_struct_mem_operand): New function. Valid mems for NEON
10545         structure moves.
10546         (coproc_secondary_reload_class): Enable NEON registers to be loaded
10547         from neon_vector_mem_operand addresses without a secondary register.
10548         (add_minipool_forward_ref): Handle >8-byte minipool entries.
10549         (add_minipool_backward_ref): Likewise.
10550         (dump_minipool): Likewise.
10551         (push_minipool_fix): Likewise.
10552         (output_move_quad): New function. Output quad-word moves, loads and
10553         stores using ARM registers.
10554         (output_move_vfp): Add support for vectors in VFP (NEON) D
10555         registers.
10556         (output_move_neon): Output a NEON load/store to/from a quadword
10557         register.
10558         (arm_print_operand): Implement new codes:
10559         - 'c' for unadorned integers (without a # sign).
10560         - 'J', 'K' for reg+2/reg+3, reg+3/reg+2 in little/big-endian
10561         mode.
10562         - 'e', 'f' for the low and high D parts of a NEON Q register.
10563         - 'q' outputs a NEON Q register.
10564         - 'h' outputs ranges of D registers for VLDM/VSTM etc.
10565         - 'T' prints NEON opcode features from a coded bitmask.
10566         - 'F' is similar to T, but signed/unsigned codes both print as
10567         'i'.
10568         - 't' is similar to T, but 'u' is printed instead of 'p'.
10569         - 'O' prints 'r' if NEON instruction should perform rounding (as
10570         specified by bitmask), else prints nothing.
10571         - '#' is a punctuation character to stop operand numbers from
10572         running together with following digits in the assembler
10573         strings for instructions (when using mode attributes).
10574         (arm_assemble_integer): Handle extra NEON vector modes. Permute
10575         constant vectors in big-endian mode, where necessary.
10576         (arm_hard_regno_mode_ok): Allow vectors in VFP/NEON registers.
10577         Handle EI, OI, CI, XI modes.
10578         (ashlv4hi3, ashlv2si3, lshrv4hi3, lshrv2si3, ashrv4hi3)
10579         (ashrv2si3): Rename IWMMXT2_BUILTINs to...
10580         (ashlv4hi3_iwmmxt, ashlv2si3_iwmmxt, lshrv4hi3_iwmmxt)
10581         (lshrv2si3_iwmmxt, ashrv4hi3_iwmmxt, ashrv2si3_iwmmxt): New names.
10582         (neon_builtin_type_bits): Add enumeration, one bit for each vector
10583         type.
10584         (v8qi_UP, v4hi_UP, v2si_UP, v2sf_UP, di_UP, v16qi_UP, v8hi_UP)
10585         (v4si_UP, v4sf_UP, v2di_UP, ti_UP, ei_UP, oi_UP, UP): Define macros
10586         to turn v8qi, etc. into bits defined above.
10587         (neon_itype): New enumeration. Classifications of NEON builtins.
10588         (neon_builtin_datum): Define struct. Contains information about
10589         a single builtin (with multiple modes).
10590         (CF): Define helper macro for...
10591         (VAR1...VAR10): Define builtins with a type, name and 1-10 different
10592         modes.
10593         (neon_builtin_data): New array. Define information about builtins
10594         for use during initialization/expansion.
10595         (arm_init_neon_builtins): New function.
10596         (arm_init_builtins): Call arm_init_neon_builtins if TARGET_NEON is
10597         true.
10598         (neon_builtin_compare): New function.
10599         (locate_neon_builtin_icode): New function. Find an insn code for a
10600         builtin given a function code for that builtin. Also return type of
10601         builtin (NEON_BINOP, NEON_UNOP etc.).
10602         (builtin_arg): New enumeration. Types of arguments for builtins.
10603         (arm_expand_neon_args): New function. Expand a generic NEON builtin.
10604         Takes a variable argument list of builtin_arg types, terminated by
10605         NEON_ARG_STOP.
10606         (arm_expand_neon_builtin): New function. Expand a NEON builtin.
10607         (neon_reinterpret): New function. Expand NEON reinterpret intrinsic.
10608         (neon_emit_pair_result_insn): New function. Support returning pairs
10609         of vectors via a pointer.
10610         (neon_disambiguate_copy): New function. Set up operands for a
10611         multi-word copy such that registers do not get clobbered.
10612         (arm_expand_builtin): Call arm_expand_neon_builtin if fcode >=
10613         ARM_BUILTIN_NEON_BASE.
10614         (arm_file_start): Set float-abi attribute for NEON.
10615         (arm_vector_mode_supported_p): Enable NEON vector modes.
10616         (arm_mangle_map_entry): New.
10617         (arm_mangle_map): New.
10618         (arm_mangle_vector_type): New.
10619         * config/arm/arm.h (TARGET_CPU_CPP_BUILTINS): Define __ARM_NEON__
10620         when appropriate.
10621         (TARGET_NEON): New macro. Target supports NEON.
10622         (fputype): Add FPUTYPE_NEON.
10623         (UNITS_PER_SIMD_WORD): Define. Allow quad-word registers to be used
10624         for vectorization based on command-line arg.
10625         (NEON_REGNO_OK_FOR_NREGS): Define.
10626         (VALID_NEON_DREG_MODE, VALID_NEON_QREG_MODE)
10627         (VALID_NEON_STRUCT_MODE): Define.
10628         (PRINT_OPERAND_PUNCT_VALID_P): '#' is valid punctuation.
10629         (arm_builtins): Add ARM_BUILTIN_NEON_BASE.
10630         * config/arm/arm.md (VUNSPEC_POOL_16): Insert constant for unspec.
10631         (consttable_16): Add pattern for outputting 16-byte minipool
10632         entries.
10633         (movv2si, movv4hi, movv8qi): Remove blank expanders (redefined in
10634         vec-common.md).
10635         (vec-common.md, neon.md): Include md files.
10636         * config/arm/arm.opt (mvectorize-with-neon-quad): Add option.
10637         * config/arm/constraints.md (constraint "Dn", "Dl", "DL"): Define.
10638         (memory_constraint "Ut", "Un", "Us"): Define.
10639         * config/arm/iwmmxt.md (VMMX, VSHFT): New mode macros.
10640         (MMX_char): New mode attribute.
10641         (addv8qi3, addv4hi3, addv2si3): Remove. Replace with...
10642         (*add<mode>3_iwmmxt): New insn pattern.
10643         (subv8qi3, subv4hi3, subv2si3): Remove. Replace with...
10644         (*sub<mode>3_iwmmxt): New insn pattern.
10645         (mulv4hi3): Rename to...
10646         (*mulv4hi3_iwmmxt): This.
10647         (smaxv8qi3, smaxv4hi3, smaxv2si3, umaxv8qi3, umaxv4hi3)
10648         (umaxv2si3, sminv8qi3, sminv4hi3, sminv2si3, uminv8qi3)
10649         (uminv4hi3, uminv2si3): Remove. Replace with...
10650         (*smax<mode>3_iwmmxt, *umax<mode>3_iwmmxt, *smin<mode>3_iwmmxt)
10651         (*umin<mode>3_iwmmxt): These.
10652         (ashrv4hi3, ashrv2si3, ashrdi3_iwmmxt): Replace with...
10653         (ashr<mode>3_iwmmxt): This new pattern.
10654         (lshrv4hi3, lshrv2si3, lshrdi3_iwmmxt): Replace with...
10655         (lshr<mode>3_iwmmxt): This new pattern.
10656         (ashlv4hi3, ashlv2si3, ashldi3_iwmmxt): Replace with...
10657         (ashl<mode>3_iwmmxt): This new pattern.
10658         * config/arm/neon-docgen.ml: New file. Generate documentation for
10659         intrinsics.
10660         * config/arm/neon-gen.ml: New file. Generate arm_neon.h header.
10661         * config/arm/arm_neon.h: New (autogenerated).
10662         * config/arm/neon-testgen.ml: New file. Generate NEON tests
10663         automatically.
10664         * config/arm/neon.md: New file. Define NEON instructions.
10665         * config/arm/neon.ml: New file. Abstract description of NEON
10666         instructions, used to generate arm_neon.h header, documentation and
10667         tests.
10668         * config/arm/t-arm (MD_INCLUDES): Add vec-common.md, neon.md.
10669         * vec-common.md: New file. Shared parts for iWMMXt and NEON vector
10670         support.
10671         * doc/extend.texi (ARM Built-in Functions): Rename and remove
10672         extraneous comma.
10673         (ARM NEON Intrinsics): New subsection.
10674         * doc/arm-neon-intrinsics.texi: New (autogenerated).
10675
10676 2007-07-25  Danny Smith   <dannysmith@users.sourceforge.net>
10677
10678         * config/i386/i386-protos.h (i386_pe_asm_file_end): Remove
10679         prototype.
10680
10681 2007-07-24  Jan Hubicka  <jh@suse.cz>
10682
10683         * regclass.c (move_table): New type.
10684         (move_cost, may_move_in_cost, may_move_out_cost): Use it.
10685         (init_move_cost): Break out from ...
10686         (init_reg_sets_1): ... here; simplify computation of
10687         have_regs-of_mode and contains_reg_of_mode.
10688         (record_reg_classes): Unswitch internal loops.
10689         (copy_cost): Trigger lazy initialization of move cost
10690         (record_address_regs): Likewise.
10691
10692 2007-07-24  Daniel Berlin  <dberlin@dberlin.org>
10693
10694         * config/darwin.c (darwin_override_options): Don't force on
10695         flag_var_tracking_uninit when no debug info is requested.
10696
10697 2007-07-25  Zdenek Dvorak  <dvorakz@suse.cz>
10698
10699         * cfgloop.c (init_loops_structure): New function.
10700         (flow_loops_find): Create root of the loop tree unconditionally.
10701
10702 2007-07-24  Daniel Jacobowitz  <dan@codesourcery.com>
10703
10704         * tree-ssa-ccp.c (fold_const_aggregate_ref): Use fold_convert.
10705
10706 2007-07-24  Jan Hubicka  <jh@suse.cz>
10707
10708         * caller-save.c: Include ggc.h, gt-caller-save.h
10709         (reg_save_code, reg_restore_code): Rename to ...
10710         (cached_reg_save_code, cached_reg_restore_code): ... those.
10711         (savepat, restpat, test_reg, test_mem, saveinsn, restinsn): New.
10712         (reg_save_code, reg_restore_code): New functions.
10713         (init_caller_save): Do not intialize
10714         reg_save_code/reg_restore_code tables.
10715         * Makefile.in: (gt-caller-save.h): New.
10716
10717 2007-07-24  Andreas Krebbel  <krebbel1@de.ibm.com>
10718
10719         * tree-ssa-ifcombine.c (ifcombine_ifandif): Use a ONE operand
10720         with the mode of the original operand instead of
10721         integer_one_node.
10722
10723 2007-07-23  Jan Hubicka  <jH@suse.cz>
10724
10725         * i386.c (ix86_secondary_memory_needed): Break out to...
10726         (inline_secondary_memory_needed): ... here.
10727         (ix86_memory_move_cost): Break out to ...
10728         (inline_memory_move_cost): ... here; add support for IN value of 2 for
10729         maximum of input and output; fix handling of Q_REGS on 64bit.
10730         (ix86_secondary_memory_needed): Microoptimize.
10731
10732 2007-07-23  Sebastian Pop  <sebpop@gmail.com>
10733
10734         * tree-data-ref.c (find_vertex_for_stmt, create_rdg_edge_for_ddr,
10735         create_rdg_edges_for_scalar, create_rdg_edges, create_rdg_vertices,
10736         stmts_from_loop, known_dependences_p, build_rdg): New.
10737         * tree-data-ref.h: Depends on graphds.h.
10738         (rdg_vertex, RDGV_STMT, rdg_dep_type, rdg_edge, RDGE_TYPE): New.
10739         (build_rdg): Declared.
10740         * Makefile.in (TREE_DATA_REF_H): Depends on graphds.h.
10741
10742 2007-07-23  Daniel Berlin  <dberlin@dberlin.org>
10743
10744         * tree-ssa-propagate.c (valid_gimple_expression_p): Match up with
10745         ccp_min_invariant.
10746
10747 2007-07-23  Peter Bergner  <bergner@vnet.ibm.com>
10748             Jakub Jelinek  <jakub@redhat.com>
10749
10750         PR middle-end/PR28690
10751         * optabs.c (expand_binop): (emit_cmp_and_jump_insns): Allow
10752         EQ compares.
10753         * rtlanal.c (commutative_operand_precedence): Prefer both REG_POINTER
10754         and MEM_POINTER operands over REG and MEM operands.
10755         (swap_commutative_operands_p): Change return value to bool.
10756         * rtl.h: Update the corresponding prototype.
10757         * tree-ssa-address.c (gen_addr_rtx): Use simplify_gen_binary
10758         instead of gen_rtx_PLUS.
10759         * simplify-rtx.c (simplify_plus_minus_op_data_cmp): Change return
10760         value to bool.  Change function arguments to rtx's and update code
10761         to match.
10762         (simplify_plus_minus): Update the simplify_plus_minus_op_data_cmp
10763         calls to match the new declaration.
10764         * simplify-rtx.c (simplify_associative_operation): Don't
10765         reorder simplify_binary_operation arguments.
10766
10767 2007-07-23  Richard Sandiford  <richard@codesourcery.com>
10768
10769         * config/mips/mips.c (override_options): Use mips_costs to derive
10770         the default branch cost.
10771         * config/mips/mips.h (BRANCH_COST): Use mips_branch_cost rather
10772         than mips_costs.
10773         * config/mips/mips.opt (mbranch-cost=): New option.
10774         * doc/invoke.texi (-mbranch-cost): Document new MIPS option.
10775
10776 2007-07-23  Richard Sandiford  <richard@codesourcery.com>
10777
10778         * config/mips/mips.h (GR_REG_CLASS_P, COP_REG_CLASS_P): Delete.
10779         (SECONDARY_MEMORY_NEEDED): Delete commented-out definition.
10780         * config/mips/mips.c (mips_register_move_cost): Use reg_class_subset_p
10781         instead of GR_REG_CLASS_P and COP_REG_CLASS_P.
10782
10783 2007-07-23  Richard Sandiford  <richard@codesourcery.com>
10784
10785         * config/mips/constraints.md (ks): New constraint.
10786         * config/mips/mips.md (*add<mode>3_sp1, *add<mode>3_sp2): Fold into...
10787         (*add<mode>3_mips16): ...here.
10788
10789 2007-07-21  Uros Bizjak  <ubizjak@gmail.com>
10790
10791         * optabs.h (enum optab_index): Add new OTI_signbit.
10792         (signbit_optab): Define corresponding macro.
10793         (enum insn_code signbit_optab[]): Remove array.
10794         * optabs.c (init_optabs): Initialize signbit_optab using init_optab.
10795         (expand_copysign_absneg): If back end provides signbit insn, use it
10796         instead of bit operations on floating point argument.
10797         * builtins.c (enum insn_code signbit_optab[]): Remove array.
10798         (expand_builtin_signbit): Check signbit_optab->handlers[].insn_code
10799         for availability of signbit insn.
10800
10801         * config/i386/i386.md (signbit<mode>2): New insn pattern to implement
10802         signbitf, signbit and signbitl built-ins as inline x87 intrinsics when
10803         SSE mode is not active.
10804         (isinf<mode>2): Disable for mfpmath=sse,387.
10805
10806 2007-07-22  Ben Elliston  <bje@au.ibm.com>
10807
10808         * regclass.c (invalid_mode_change_p): Attach ATTRIBUTE_UNUSED to
10809         `class' parameter.
10810         * struct-equiv.c (note_local_live): Likewise for `y_regno'.
10811
10812 2007-07-20  Richard Guenther  <rguenther@suse.de>
10813
10814         * tree-cfg.c (verify_expr): COND_EXPRs can have any
10815         integral typed condition.
10816         * tree-ssa.c (useless_type_conversion_p): Do not preserve
10817         booleanness.  Only preserve conversions from a non-base
10818         type to a base type, not in general between types with
10819         different TYPE_MIN_VALUE or TYPE_MAX_VALUE.
10820         * tree.def (COND_EXPR): Document that the condition
10821         can be of any integral type.
10822
10823 2007-07-20  Nigel Stephens  <nigel@mips.com>
10824             Richard Sandiford  <richard@codesourcery.com>
10825
10826         * config/mips/mips.h (mips_dwarf_regno): Declare.
10827         (DBX_REGISTER_NUMBER): Remove redundant brackets.
10828         (HI_REGNUM, LO_REGNUM): Define in an endian-dependent way.
10829         (AC1HI_REGNUM, AC1LO_REGNUM, AC2HI_REGNUM, AC2LO_REGNUM)
10830         (AC3HI_REGNUM, AC3LO_REGNUM, ACC_HI_REG_P): Delete.
10831         (reg_class): Rename HI_REG to MD0_REG and LO_REG to MD1_REG.
10832         (REG_CLASS_NAMES): Update accordingly.
10833         * config/mips/mips.c (mips_dwarf_regno): New array.
10834         (mips_regno_to_class): Rename HI_REG to MD0_REG and LO_REG to MD1_REG.
10835         (mips_subword): Remove special handling for accumulator registers.
10836         (override_options): Initiailize mips_dwarf_regno.  Remove use
10837         of ACC_HI_REG_P.
10838         (mips_swap_registers): New function.
10839         (mips_conditional_register_usage): Swap accumulator registers
10840         around if TARGET_LITTLE_ENDIAN.
10841         (mips_cannot_change_mode_class): Remove special treatment of ACC_REGS.
10842         * config/mips/constraints.md (h, l): Use the endianness to choose
10843         between MD0_REG and MD1_REG.
10844         * config/mips/mips.md (*mfhilo_<mode>_macc): Use a fixed-string,
10845         alternative-dependent template.
10846
10847 2007-07-20  Richard Sandiford  <richard@codesourcery.com>
10848
10849         * config/arm/arm.md (movsi): Use can_create_pseudo_p instead of
10850         no_new_pseudos.
10851
10852 2007-07-20  Zdenek Dvorak  <dvorakz@suse.cz>
10853
10854         * function.c (thread_prologue_and_epilogue_insns): Fix exit
10855         predecessor fallthru flags.
10856
10857 2007-07-20  Zdenek Dvorak  <dvorakz@suse.cz>
10858
10859         * tree-ssa-loop-niter.c (assert_loop_rolls_lt): Convert the operands
10860         of compare to the same type.
10861         * cfgloopmanip.c (add_loop): Update information about loop exits.
10862         (loop_version): Remove the innermost loop requirement.
10863         * tree-ssa-loop-manip.c (determine_exit_conditions): Convert bounds
10864         to sizetype for pointers.
10865
10866 2007-07-18  H.J. Lu  <hongjiu.lu@intel.com>
10867
10868         * Makefile.in (D32PBIT_FUNCS): Add _sd_to_tf and _tf_to_sd.
10869         (D64PBIT_FUNCS): Add _dd_to_tf and _tf_to_dd.
10870         (D128PBIT_FUNCS): Add _td_to_tf and _tf_to_td.
10871
10872         * config/dfp-bit.c: Empty for TFmode conversions.
10873
10874 2007-07-18  Caroline Tice  <ctice@apple.com>
10875         
10876         * var-tracking.c (find_src_status): Check for  COND_EXEC insns
10877         and handle them correctly; check that src is not NULL before
10878         trying to use it.
10879         (find_src_set_src): Likewise.
10880         
10881 2007-07-18  Bob Wilson  <bob.wilson@acm.org>
10882         
10883         * config/xtensa/xtensa.c (xtensa_expand_mask_and_shift): New.
10884         (struct alignment_context, init_alignment_context): New.
10885         (xtensa_expand_compare_and_swap, xtensa_expand_atomic): New.
10886         * config/xtensa/xtensa.h (XCHAL_HAVE_RELEASE_SYNC): Add default.
10887         (XCHAL_HAVE_S32C1I): Likewise.
10888         (TARGET_RELEASE_SYNC, TARGET_S32C1I): New.
10889         * config/xtensa/xtensa.md (UNSPECV_MEMW): New constant.
10890         (UNSPECV_S32RI, UNSPECV_S32C1I): Likewise.
10891         (ATOMIC, HQI): New macros.
10892         (memory_barrier, *memory_barrier): New.
10893         (sync_lock_releasesi): New.
10894         (sync_compare_and_swapsi, sync_compare_and_swap<mode>): New.
10895         (sync_lock_test_and_set<mode>): New.
10896         (sync_<atomic><mode>): New.
10897         (sync_old_<atomic><mode>, sync_new_<atomic><mode>): New.
10898         * config/xtensa/xtensa-protos.h (xtensa_expand_compare_and_swap): New.
10899         (xtensa_expand_atomic): New.
10900         
10901 2007-07-18  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
10902
10903         PR target/30652
10904
10905         * builtins.c (expand_builtin_interclass_mathfn): Provide a generic
10906         transformation for builtin ISNORMAL.
10907         (expand_builtin): Handle BUILT_IN_ISNORMAL.
10908         * builtins.def (BUILT_IN_ISNORMAL): New.
10909         * doc/extend.texi: Document isnormal.
10910
10911 2007-07-18  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
10912
10913         PR target/30652
10914
10915         * builtins.c (expand_builtin_interclass_mathfn): Allow for missing
10916         optabs infrastructure.  Provide generic implementation for
10917         FINITE/ISFINITE.
10918         (expand_builtin): Handle FINITE/ISFINITE.
10919         (fold_builtin_classify): Make ISFINITE canonical instead of FINITE.
10920         (fold_builtin_1): Likewise.
10921
10922         * builtins.def (BUILT_IN_ISFINITE): New.
10923
10924         * doc/extend.texi: Document isfinite.
10925
10926 2007-07-18  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
10927
10928         PR target/30652
10929         PR middle-end/20558
10930
10931         * builtins.c (expand_builtin_interclass_mathfn): Provide a
10932         generic fallback for isinf.
10933         * c-cppbuiltin.c (builtin_define_float_constants): Move FP max
10934         calculation code ...
10935         * real.c (get_max_float): ... to here.
10936         * real.h (get_max_float): New.
10937
10938 2007-07-18  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
10939
10940         PR middle-end/32668
10941
10942         * builtin-attrs.def (ATTR_TYPEGENERIC,
10943         ATTR_CONST_NOTHROW_TYPEGENERIC): New.
10944
10945         * builtins.def (BUILT_IN_ISINF, BUILT_IN_ISNAN,
10946         BUILT_IN_ISGREATER, BUILT_IN_ISGREATEREQUAL, BUILT_IN_ISLESS,
10947         BUILT_IN_ISLESSEQUAL, BUILT_IN_ISLESSGREATER,
10948         BUILT_IN_ISUNORDERED): Use ATTR_CONST_NOTHROW_TYPEGENERIC.
10949
10950         * c-common.c (handle_type_generic_attribute): New.
10951         (c_common_attribute_table): Add "type generic".
10952
10953         * c-typeck.c (convert_arguments): Handle "type generic" functions.
10954
10955 2007-07-18  Daniel Berlin  <dberlin@dberlin.org>
10956
10957         * tree-ssa-sccvn.c (try_to_simplify): Use valid_gimple_expression
10958         * tree-ssa-propagate (valid_gimple_expression): Handle ADDR_EXPR
10959         properly.
10960
10961 2007-07-18  Rask Ingemann Lambertsen  <rask@sygehus.dk>
10962
10963         PR target/32808
10964         * config/cris/cris.c (cris_print_index): Don't use XEXP before
10965         checking that the operand is an expression.
10966
10967 2007-07-19  Christoph von Wittich  <Christoph_vW@reactos.org>
10968             Danny Smith  <dannysmith@users.sourceforge.net>
10969
10970         PR/other 30335
10971         * config/i386/host-mingw32.c (mingw32_gt_pch_use_address): Put
10972         file mapping object in local namespace if Windows version later
10973         than NT4
10974
10975 2007-07-18  Richard Sandiford  <richard@codesourcery.com>
10976
10977         * config/arm/arm-protos.h (arm_cannot_force_const_mem): Declare.
10978         * config/arm/arm.c (TARGET_CANNOT_FORCE_CONST_MEM): Redefine to
10979         arm_cannot_force_const_mem.
10980         (arm_cannot_force_const_mem): New function.
10981         * config/arm/arm.h (ARM_OFFSETS_MUST_BE_WITHIN_SECTIONS_P): New macro.
10982         (LEGITIMATE_CONSTANT_P): Test arm_cannot_force_const_mem instead
10983         of arm_tls_referenced_p.
10984         * config/arm/arm.md (movsi): Split out-of-section constants when
10985         ARM_OFFSETS_MUST_BE_WITHIN_SECTIONS_P.
10986         * config/arm/vxworks.h (ARM_OFFSETS_MUST_BE_WITHIN_SECTIONS_P): Define.
10987
10988 2007-07-18  Richard Sandiford  <richard@codesourcery.com>
10989
10990         * config/mips/mips.md (clear_cache): Treat the size argument as Pmode.
10991
10992 2007-07-18  Richard Sandiford  <richard@codesourcery.com>
10993
10994         * config/mips/mips.md (*extendqihi2): Convert the destination
10995         to SImode.
10996
10997 2007-07-17  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
10998
10999         * config/pa/fptr.c: Update license header.
11000         * config/pa/milli64.S: Likewise.
11001
11002 2007-07-17  Nick Clifton  <nickc@redhat.com>
11003
11004         * COPYING_v3: New file.  Contains version 3 of the GNU General
11005         Public License.
11006         * COPYING.LIB_v3: New file.  Contains version 3 of the GNU
11007         Lesser General Public License.
11008         * doc/include/gpl_v3.texi: New file.  Contains version 3 of
11009         the GNU General Public License.
11010
11011 2007-07-17  Zdenek Dvorak  <dvorakz@suse.cz>
11012
11013         PR rtl-optimization/32773
11014         * cfglayout.c (force_one_exit_fallthru): New function.
11015         (cfg_layout_finalize): Use it.
11016
11017 2007-07-16  Richard Guenther  <rguenther@suse.de>
11018             Uros Bizjak  <ubizjak@gmail.com>
11019
11020         * tree-if-conv.c (find_phi_replacement_condition): Unshare "*cond"
11021         before forcing it to gimple operand.
11022
11023 2007-07-16  Sandra Loosemore  <sandra@codesourcery.com>
11024             David Ung  <davidu@mips.com>
11025
11026         * config/mips/mips.h (TUNE_24K): Define.
11027         (TUNE_MACC_CHAINS): Add TUNE_24K.
11028         * config/mips/mips.md: (*mul_acc_si, *mul_sub_si): Change type to
11029         imadd.
11030         * config/mips/74k.md (r74k_int_mult): Split madd/msub to ..
11031         (r74k_int_madd): .. this new reservation.
11032         (define_bypass): Fixed bypasses for r74k_int_madd to use
11033         mips_linked_madd_p.
11034         * config/mips/24k.md (define_bypass): Define new
11035         r24k_int_mul3->r24k_int_madd bypass using mips_linked_madd_p.
11036
11037 2007-07-16  Sandra Loosemore  <sandra@codesourcery.com>
11038             Nigel Stephens  <nigel@mips.com>
11039
11040         * config/mips/mips.md: Include 20kc.md.
11041         * config/mips/20kc.md: New file.
11042         * config/mips/mips.c (mips_rtx_cost_data): Fill in 20Kc costs.
11043         (mips_adjust_cost): Tweak for 20Kc.
11044         (mips_issue_rate): Likewise.
11045         * config/mips/mips.h (TUNE_20KC): Define.
11046
11047 2007-07-16  David Edelsohn  <edelsohn@gnu.og>
11048
11049         * config/rs6000/rs6000.c (struct processor_cost): Add
11050         cache_line_size, l1_cache_lines, and simultaneous_prefetches
11051         fields.
11052         (*_cost): Add cache information.
11053         (rs6000_override_options): Set cache parameters.
11054
11055 2007-07-16  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
11056
11057         PR bootstrap/3456
11058         * config.gcc (mips-sgi-irix[56]*): Enable pthread support.
11059         * doc/install.texi (mips-sgi-irix6): pthread support works now.
11060
11061 2007-07-16  Paul Brook  <paul@codesourcery.com>
11062
11063         PR target/32753
11064         * config/arm/cirrus.md (cirrus_arm_movsi_insn): Remove dead insn.
11065         (cirrus_thumb2_movsi_insn): Ditto.
11066
11067 2007-07-15  Geoffrey Keating  <geoffk@apple.com>
11068
11069         * config/rs6000/darwin-fallback.c (interpret_libc): Change
11070         CR2_REGNO to R_CR2.
11071
11072 2007-07-15  Andrew Haley  <aph@redhat.com>
11073
11074         * unwind-sjlj.c (_Unwind_GetIPInfo): Check for context->fc != NULL
11075         before looking in the context.
11076
11077 2007-07-15  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
11078
11079         PR middle-end/32398
11080         PR middle-end/32769
11081         * pa-protos.h (pa_eh_return_handler_rtx): Declare.
11082         * pa.c (pa_extra_live_on_entry, rp_saved): Declare.
11083         (TARGET_EXTRA_LIVE_ON_ENTRY): Define.
11084         (pa_output_function_prologue): Use rp_saved and
11085         current_function_is_leaf to generate .CALLINFO statement.
11086         (hppa_expand_prologue): Set rp_saved.
11087         (hppa_expand_epilogue): Use rp_saved.
11088         (pa_extra_live_on_entry, pa_eh_return_handler_rtx): New functions.
11089         * pa.h (EH_RETURN_HANDLER_RTX): Use pa_eh_return_handler_rtx.
11090
11091 2007-07-14  Dirk Mueller  <dmueller@suse.de>
11092
11093         * omega.c (coalesce): Fix memory leak on early exit.
11094         * matrix-reorg.c (check_allocation_function): Likewise.
11095         * tree-vect-transform.c (vect_get_new_vect_var): free result
11096         of concat().
11097         * bb-reorder.c (find_rarely_executed_basic_blocks_and_crossing_edges):
11098         pass pointer to edge vector
11099         (partition_hot_cold_basic_blocks): Fix memory leak.
11100         * collect2.c (prefix_from_string): Free temporary storage.
11101         * reload1.c (fixup_abnormal_edges): Free sbitmap.
11102
11103 2007-07-14  Kaz Kojima  <kkojima@gcc.gnu.org>
11104
11105         * config/sh/sh.h (DO_GLOBAL_CTORS_BODY): Add void to prototype.
11106         (DO_GLOBAL_DTORS_BODY): Likewise.
11107
11108 2007-07-14  Sandra Loosemore  <sandra@codesourcery.com>
11109             Nigel Stephens  <nigel@mips.com>
11110
11111         * config/mips/mips.c (mips_classify_symbol): Don't return
11112         SYMBOL_SMALL_DATA for constant pool addresses if
11113         TARGET_EMBEDDED_DATA is true.
11114
11115 2007-07-14  Uros Bizjak  <ubizjak@gmail.com>
11116
11117         * config/i386/i386.c (init_mmx_sse_builtins): Define all builtins
11118         except __builtin_ia32_emms, __builtin_ia32_ldmxcsr,
11119         __builtin_ia32_stmxcsr, __builtin_ia32_maskmovq, __builtin_ia32_loadups,
11120         __builtin_ia32_storeups, __builtin_ia32_loadhps, __builtin_ia32_loadlps,
11121         __builtin_ia32_storehps, __builtin_ia32_storelps,
11122         __builtin_ia32_movntps, __builtin_ia32_movntq, __builtin_ia32_sfence,
11123         __builtin_ia32_femms, __builtin_ia32_maskmovdqu, __builtin_ia32_loadupd,
11124         __builtin_ia32_storeupd, __builtin_ia32_loadhpd, __builtin_ia32_loadlpd,
11125         __builtin_ia32_movnti, __builtin_ia32_movntpd, __builtin_ia32_movntdq,
11126         __builtin_ia32_clflush, __builtin_ia32_lfence, __builtin_ia32_mfence,
11127         __builtin_ia32_loaddqu, __builtin_ia32_storedqu, __builtin_ia32_monitor,
11128         __builtin_ia32_mwait, __builtin_ia32_lddqu, __builtin_ia32_movntdqa,
11129         __builtin_ia32_movntsd and __builtin_ia32_movntss as const builtins
11130         using def_builtin_const.
11131
11132 2007-07-14  Eric Botcazou  <ebotcazou@adacore.com>
11133
11134         PR tree-optimization/32705
11135         * tree-ssa-sccvn.c (set_ssa_val_to): Accept VN_TOP as value number.
11136         (simplify_binary_expression): Use SSA_VAL consistently.
11137
11138 2007-07-13  David Edelsohn  <edelsohn@gnu.org>
11139
11140         * config/rs6000/spe.md (SPE_ACC_REGNO): Delete definition.
11141         (SPEFSCR_REGNO): Delete definition.
11142         * config/rs6000/rs6000.c: LINK_REGISTER_REGNUM -> LR_REGNO.
11143         COUNT_REGISTER_REGNUM -> CTR_REGNO.
11144         * config/rs6000/rs6000.h: Do not define *_REGNO.
11145         LINK_REGISTER_REGNUM -> LR_REGNO.
11146         COUNT_REGISTER_REGNUM -> CTR_REGNO.
11147         * config/rs6000/predicates.md: LINK_REGISTER_REGNUM ->  LR_REGNO.
11148         COUNT_REGISTER_REGNUM -> CTR_REGNO.
11149         * config/rs6000/linux-unwind.h: Define R_LR, R_CR2, R_VR0,
11150         R_VRSAVE, R_VSCR. Use them.
11151         * config/rs6000/darwin-fallback.c: Define R_LR, R_CTR, R_CR2,
11152         R_XER, R_VR0, R_VRSAVE, R_VSCR, R_SPEFSCR.  Use them.
11153         * config/rs6000/rs6000.md: Define REGNO constants.  Use them.
11154         * config/rs6000/aix.h: Define R_LR.  Use it.
11155         
11156 2007-07-13  Caroline Tice  <ctice@apple.com>
11157         
11158         * toplev.c (process_options): Turn flag_var_tracking_uninit off when
11159         flag_var_tracking is explicitly turned off (i.e. when variable
11160         tracking is not feasible); otherwise, turn flag_var_tracking on when
11161         flag_var_tracking_uninit is on.
11162         * rtl.def (VAR_LOCATION): Add a new integer subfield to VAR_LOCATION
11163         note definitions, to allow recording of initialization status in the
11164         notes.
11165         * dwarf2out.c (dwarf_stack_op_name): Add case for DW_OP_GNU_uninit.
11166         (add_var_loc_to_decl): Add comparison of NOTE_VAR_LOCATION_STATUS to
11167         determine if two note locations are equal.
11168         (output_loc_list): Don't output list entries whose start & end labels
11169         are the same.
11170         (reg_loc_descriptor): Add parameter for initialization status; pass it
11171         to other loc descriptor functions.
11172         (one_reg_loc_descriptor): Add parameter for initialization status;
11173         check its value and add DW_OP_GNU_uninit to returned loc descr if
11174         appropriate.
11175         (multiple_reg_loc_descriptor): Add parameter for initialization
11176         status;
11177         pass init status argument to other loc descriptor functions; check
11178         value of intialization parameter and add DW_OP_GNU_uninit to returned
11179         loc descr if appropriate.
11180         (based_loc_descr): Add parameter for initialization status; add new
11181         variable for return value; check value of initialization parameter and
11182         add DW_OP_GNU_uninit to returned loc descr if appropriate.
11183         (concatn_mem_loc_descriptor): Add parameter for initialization status;
11184         pass init status argument to other loc descriptor functions; check
11185         value of intialization parameter and add DW_OP_GNU_uninit to returned
11186         loc descr if appropriate.
11187         (mem_loc_descriptor): Likewise.
11188         (concat_loc_descriptor): Likewise.
11189         (concatn_loc_descriptor): Likewise.
11190         (loc_descriptor): Add parameter for initialization status; pass it as
11191         argument to other loc descriptor function calls.
11192         (loc_descriptor_from_tree_1): Add appropriate initialization status
11193         to loc descriptor function calls.
11194         (add_location_or_const_value_attribute): Get initialization status
11195         from VAR_LOCATION note; add initialization status to loc descriptor
11196         function calls.
11197         * dwarf2.h (enum dwarf_location_atom): New op, DW_OP_GNU_uninit.
11198         * print-rtl.c (print_rtx): When printing a VAR_LOCATION note, if
11199         status is uninitialized, add "[uninint]" to output.
11200         * common.opt (fvar-tracking-uninit): New option, similar to
11201         fvar-tracking, to turn on tracking of uninitialized variables; creates
11202         a new global flag, flag_var_tracking_uninit.
11203         * rtl.h (NOTE_VAR_LOCATION_STATUS): New macro for accessing new field.
11204         (enum var_init_status): New type, for var initialization status field.
11205         * var-tracking.c (struct location_chain_def): Two new fields, init,
11206         for initialization status, and set_src for the assignment value expr.
11207         (unshare_variable): New parameter for initialization status;
11208         initialize new init and set_src fields.
11209         (var_reg_set): New parameters for initialization status and value;
11210         pass them to set_variable_part.
11211         (var_mem_set): Likewise.
11212         (get_init_value): New function.
11213         (var_reg_delete_and_set): New initialization status & value
11214         parameters; add call to get_init_value if status is unknown; pass new
11215         parameters to clobber_variable_part and var_reg_set.
11216         (var_mem_delete_and_set): Likewise.
11217         (var_reg_delete): Pass null set_src value to clobber_variable_part.
11218         (var_mem_delete): Likewise.
11219         (variable_union): Pass status to unshare_variable; initialize new init
11220         and set_src fields. If flag_var_tracking_uninit is not set, force
11221         status to initialized.
11222         (add_stores): Store insn, rather than NEXT_INSN(insn), so it can be
11223         used later to get the set_src value.
11224         (find_src_status): New function.
11225         (find_src_set_src): New function.
11226         (compute_bb_dataflow): Pass init status to calls to var_reg_set,
11227         var_mem_set, var_reg_delete_and_set and var_mem_delete_and_set; for
11228         MO_SET, get set_src value and pass it to var_reg_delete_and_set
11229         and var_mem_delete_and_set.
11230         (dump_variable): Print out "[uninit]" if appropriate.
11231         (set_variable_part): Add new initialization and set_src parameters;
11232         pass status to unshare_variable; set node->init and node- >set_src
11233         fields and modify slot in hash table appropriately; save the init and
11234         set_src values if appropriate and assign to the new node.
11235         (clobber_variable_part): New set_src parameter; if two nodes have
11236         same variable and same location but different set_src (assignment)
11237         values, clobber old node.
11238         (delete_variable_part): Pass init status to unshare_variable.
11239         (emit_note_insn_var_location): Add initialized var; assign var's init
11240         status to new 'initialized'; pass new init status field to calls to
11241         gen_rtx_VAR_LOCATION. If flag_var_tracking_uninit is not set, force
11242         status to initialized.
11243         (emit_notes_in_bb): Pass initialization status to calls to
11244         var_reg_set, var_mem_set, var_reg_delete_and_set and
11245         var_mem_delete_and_set; for MO_SET, get set_src value and pass it to
11246         var_reg_delete_and_set and var_mem_delete_and_set; call
11247         emit_notes_for_changes on NEXT_INSN(insn) rather than on insn, to
11248         make up for change in add_stores.
11249         (vt_add_function_parameters): Add status to calls to
11250         set_variable_part.
11251         * config/darwin.c (darwin_override_options): Turn on uninitialized
11252         tracking automatically, if var_tracking is on and the system is
11253         10.5 or higher.
11254         
11255 2007-07-13  Sa Liu  <saliu@de.ibm.com>
11256
11257         * config.gcc: Add options for arch and tune on SPU.
11258         * config/spu/predicates.md: Add constant operands 0 and 1.
11259         * config/spu/spu-builtins.def: Add builtins for double precision 
11260         floating point comparison: si_dfceq, si_dfcmeq, si_dfcgt, si_dfcmgt, 
11261         si_dftsv, spu_cmpeq_13, spu_cmpabseq_1, spu_cmpgt_13, spu_cmpabsgt_1,
11262         spu_testsv.
11263         * config/spu/spu-c.c: Define __SPU_EDP__ when builtins invoked with 
11264         a CELLEDP target.
11265         * config/spu/spu-protos.h: Add new function prototypes. 
11266         * config/spu/spu.c (spu_override_options): Check options -march and
11267         -mtune.
11268         (spu_comp_icode): Add comparison code for DFmode and vector mode.
11269         (spu_emit_branch_or_set): Use the new code for DFmode and vector 
11270         mode comparison.
11271         (spu_const_from_int): New.  Create a vector constant from 4 ints.
11272         (get_vec_cmp_insn): New.  Get insn index of vector compare instruction.
11273         (spu_emit_vector_compare): New.  Emit vector compare.
11274         (spu_emit_vector_cond_expr): New.  Emit vector conditional expression.
11275         * config/spu/spu.h: Add options -march and -mtune.  Define processor
11276         types PROCESSOR_CELL and PROCESSOR_CELLEDP.  Define macro
11277         CANONICALIZE_COMPARISON.
11278         * config/spu/spu.md: Add new insns for double precision compare
11279         and double precision vector compare.  Add vcond and smax/smin patterns
11280         to enable DFmode vector conditional expression.
11281         * config/spu/spu.opt: Add options -march and -mtune.
11282         * config/spu/spu_internals.h: Add builtins for CELLEDP target:
11283         si_dfceq, si_dfcmeq, si_dfcgt, si_dfcmgt, si_dftsv.  Add builtin for
11284         both CELL and CELLEDP targets: spu_testsv.
11285         * config/spu/spu_intrinsics.h: Add flag mnemonics for test special 
11286         values.
11287
11288 2007-07-13  Richard Guenther  <rguenther@suse.de>
11289
11290         PR tree-optimization/32721
11291         * tree-ssa-ccp.c (maybe_fold_stmt_indirect): Preserve
11292         TREE_THIS_VOLATILE on the folded reference.
11293         * tree-ssa-operands.c (get_expr_operands): Set has_volatile_ops
11294         if the array reference has TREE_THIS_VOLATILE set.
11295
11296 2007-07-13  H.J. Lu  <hongjiu.lu@intel.com>
11297
11298         PR other/32188
11299         * doc/libgcc.texi: Update DFP intrinsics for DPD and BID.
11300
11301 2007-07-13  Andreas Schwab  <schwab@suse.de>
11302
11303         * gengtype-lex.l: Allow declarations to be indented.
11304
11305 2007-07-12  Geoffrey Keating  <geoffk@apple.com>
11306
11307         * ginclude/tgmath.h: New.
11308         * config.gcc: Use GCC's tgmath.h on non-glibc systems.
11309         * doc/sourcebuild.texi (Headers): Document use_gcc_tgmath.
11310         * configure.ac (STMP_FIXPROTO): Honor use_gcc_tgmath.
11311         * configure: Regenerate.
11312
11313 2007-07-13  Kaz Kojima  <kkojima@gcc.gnu.org>
11314
11315         * config/sh/linux-unwind.h (sh_fallback_frame_state): Use
11316         correct index when setting register save state for xd
11317         registers.
11318
11319 2007-07-13  Kaz Kojima  <kkojima@gcc.gnu.org>
11320
11321         * config/sh/sh.c (mark_use): Remove.
11322
11323 2007-07-12  Paul Brook  <paul@codesourcery.com>
11324
11325         * config/arm/arm.c (thumb1_compute_save_reg_mask): Make sure scratch
11326         reg does not overlap return value.
11327
11328 2007-07-12  Daniel Berlin  <dberlin@dberlin.org>
11329
11330         * tree-ssa-pre.c (get_expression_vuses): Move out side-effect.
11331         (set_expression_vuses): Ditto.
11332         (init_pre): Initialize expression_vuses.
11333
11334 2007-07-12  Zdenek Dvorak  <dvorakz@suse.cz>
11335
11336         * config/i386/sse.md (storentdf, storentsf): New.
11337
11338 2007-07-12  Geoffrey Keating  <geoffk@apple.com>
11339
11340         * builtins.c (get_pointer_alignment): Honor DECL_ALIGN on a
11341         FUNCTION_DECL.
11342         * tree.c (build_decl_stat): Move code from here...
11343         (make_node_stat): ... to here.  Don't uselessly clear DECL_USER_ALIGN.
11344         (expr_align): Honor DECL_ALIGN on a FUNCTION_DECL.  Add comment
11345         about using DECL_ALIGN of LABEL_DECL and CONST_DECL.
11346         * tree.h (DECL_USER_ALIGN): Fix misplaced comment.
11347         * varasm.c (assemble_start_function): Use DECL_ALIGN instead of
11348         FUNCTION_BOUNDARY.
11349
11350 2007-07-12  Dorit Nuzman  <dorit@il.ibm.com>
11351             Devang Patel  <dpatel@apple.com>
11352
11353         PR tree-optimization/25413
11354         * targhooks.c (default_builtin_vector_alignment_reachable): New.
11355         * targhooks.h (default_builtin_vector_alignment_reachable): New.
11356         * tree.h (contains_packed_reference): New.
11357         * expr.c (contains_packed_reference): New.
11358         * tree-vect-analyze.c (vector_alignment_reachable_p): New.
11359         (vect_enhance_data_refs_alignment): Call
11360         vector_alignment_reachable_p.
11361         * target.h (vector_alignment_reachable): New builtin.
11362         * target-def.h (TARGET_VECTOR_ALIGNMENT_REACHABLE): New.
11363         * config/rs6000/rs6000.c (rs6000_vector_alignment_reachable): New.
11364         (TARGET_VECTOR_ALIGNMENT_REACHABLE): Define.
11365
11366 2007-07-12  Dorit Nuzman  <dorit@il.ibm.com>
11367
11368         * target.h (builtin_vectorization_cost): Add new target builtin.
11369         * target-def.h (TARGET_VECTORIZE_BUILTIN_VECTORIZATION_COST): New.
11370         * tree-vectorizer.h (TARG_SCALAR_STMT_COST): New.
11371         (TARG_SCALAR_LOAD_COST, TARG_SCALAR_STORE_COST): New.
11372         * tree-vect-analyze.c (vect_analyze_slp_instance): Initisliaze
11373         uninitialized variables.
11374         * tree-vect-transform.c (cost_for_stmt): New function.
11375         (vect_estimate_min_profitable_iters): Call cost_for_stmt instead of
11376         using cost 1 for all scalar stmts. Be less conservative when
11377         estimating the number of prologue/epulogue iterations. Call
11378         targetm.vectorize.builtin_vectorization_cost. Return
11379         min_profitable_iters-1.
11380         (vect_model_reduction_cost): Use TARG_SCALAR_TO_VEC_COST for
11381         initialization cost instead of TARG_VEC_STMT_COST. Use
11382         TARG_VEC_TO_SCALAR_COST instead of TARG_VEC_STMT_COST for reduction
11383         epilogue code. Fix epilogue cost computation.
11384         * config/spu/spu.c (spu_builtin_vectorization_cost): New.
11385         (TARGET_VECTORIZE_BUILTIN_VECTORIZATION_COST): Implement.
11386         * config/spu/spu.h (TARG_COND_BRANCH_COST, TARG_SCALAR_STMT_COST):
11387         (TARG_SCALAR_LOAD_COST, TARG_SCALAR_STORE_COST, TARG_VEC_STMT_COST):
11388         (TARG_VEC_TO_SCALAR_COST, TARG_SCALAR_TO_VEC, TARG_VEC_LOAD_COST):
11389         (TARG_VEC_UNALIGNED_LOAD_COST, TARG_VEC_STORE_COST): Define.
11390
11391 2007-07-12  Richard Guenther  <rguenther@suse.de>
11392
11393         * gimplify.c (gimplify_conversion): Make sure that the result
11394         from maybe_fold_offset_to_reference is trivially convertible
11395         to the desired type before doing the simplification.
11396         (gimplify_expr): Likewise.
11397         * fold-const.c (fold_binary): Use the correct types for
11398         building the simplified expression.
11399
11400 2007-07-12  Zdenek Dvorak  <dvorakz@suse.cz>
11401
11402         PR rtl-optimization/32729
11403         * cfghooks.c (can_duplicate_block_p): Do not forbid duplicating blocks
11404         that fallthru to exit.
11405
11406 2007-07-12  Kaz Kojima  <kkojima@gcc.gnu.org>
11407
11408         * config/sh/sh.md (symGOTOFF2reg): Add missing parenthesis.
11409         (symDTPOFF2reg): Likewise.
11410
11411 2007-07-11  Daniel Berlin  <dberlin@dberlin.org>
11412
11413         PR tree-optimization/32663
11414         
11415         * tree.h (VALUE_HANDLE_VUSES): Remove.
11416         (struct tree_value_handle): Remove vuses.
11417
11418         * tree-vn.c (create_value_handle_for_expr): Don't set
11419         VALUE_HANDLE_VUSES. 
11420
11421         * tree-ssa-pre.c (expression_vuses): New.
11422         (alloc_expression_id): Set up expression_vuses.
11423         (get_expression_vuses): New.
11424         (set_expression_vuses): Ditto.
11425         (clear_expression_ids): Modify for expression_vuses.
11426         (phi_translate_1): Ditto.
11427         (phi_translate_set): Ditto.
11428         (value_dies_in_block_x): Ditto
11429         (valid_in_sets): Ditto.
11430         (add_to_sets): Ditto.
11431         (find_existing_value_expr): Ditto.
11432         (create_value_handle_for_expr): Ditto.
11433         (make_values_for_stmt): Ditto.
11434         (vuse_equiv): Remove.
11435
11436 2007-07-11  Alexandre Oliva  <aoliva@redhat.com>
11437
11438         * Makefile.in (mostlyclean): Remove object files.
11439
11440 2007-07-11  Kenneth Zadeck <zadeck@naturalbridge.com>
11441
11442         * toplev.c (no_new_pseudos): Deleted.
11443         * rtl.h (no_new_pseudos): Deleted.
11444         * tree-pass.h (pass_no_new_pseudos): Deleted. 
11445         * passes.c (pass_no_new_pseudos): Deleted.
11446         * final.c (rest_of_clean_state): Removed no_new_pseudos.
11447         (rest_of_no_new_pseudos, pass_no_new_pseudos): Deleted.
11448         * struct-equiv.c (rtx_equiv_p): Replaced no_new_pseudos with 
11449         reload_completed.
11450         * cfgcleanup.c (try_crossjump_to_edge): Ditto. 
11451         * rtlhooks.c (gen_lowpart_general): Ditto.
11452         * optabs.c (prepare_operand): Ditto.
11453         * mode-switching.c (rest_of_handle_mode_switching): Deleted set of
11454         no_new_pseudos.
11455         * modulo-sched.c (rest_of_handle_sms): Ditto.
11456         * see.c (rest_of_handle_see): Ditto.
11457         * ifcvt.c (if_convert): Ditto.
11458         (gate_handle_if_after_combine): Replaced no_new_pseudos with 
11459         reload_completed.
11460         * init-regs.c (gate_initialize_regs): Deleted set of
11461         no_new_pseudos.
11462         * lower-subreg.c (decompose_multiword_subregs): Ditto. 
11463         * bb-reorder.c (rest_of_handle_partition_blocks): Ditto.
11464         * doc/md.texi: Changed no_new_pseudos to can_create_pseudo_p.
11465         
11466 2007-07-11  Uros Bizjak  <ubizjak@gmail.com>
11467
11468         PR target/32661
11469         * config/i386/sse.md (*sse2_storeq_rex64): Handle 64bit mem->reg moves.
11470         (*vec_extractv2di_1_sse2): Disable for TARGET_64BIT.
11471         (*vec_extractv2di_1_rex64): New insn pattern.
11472
11473 2007-07-11  David Daney  <ddaney@avtrex.com>
11474
11475         * config/mips/linux-unwind.h (mips_fallback_frame_state): Rewrite
11476         return address calculation.  Substitute DWARF_ALT_FRAME_RETURN_COLUMN
11477         for SIGNAL_UNWIND_RETURN_COLUMN.
11478         * config/mips/mips.h (SIGNAL_UNWIND_RETURN_COLUMN): Remove.
11479         (DWARF_FRAME_REGNUM): Rewrite.
11480         (DWARF_ALT_FRAME_RETURN_COLUMN) Define.
11481
11482 2007-07-11  Nick Clifton  <nickc@redhat.com>
11483
11484         * config/m32r/m32r.h (INITIALIZE_TRAMPOLINE): Revert previous
11485         delta and use gen_int_mode in place of GET_INT instead.
11486
11487 2007-07-11  Uros Bizjak  <ubizjak@gmail.com>
11488
11489         * reg-stack.c (struct tree_opt_pass pass_stack_regs): Nullify name
11490         and letter field.
11491
11492 2007-07-11  Douglas Gregor  <doug.gregor@gmail.com>
11493
11494         * params.def (PARAM_VERIFY_CANONICAL_TYPES): Remove.
11495         (PARAM_USE_CANONICAL_TYPES): New; decides whether to use canonical 
11496         types or not.
11497         * params.h (VERIFY_CANONICAL_TYPES): Remove.
11498         (USE_CANONICAL_TYPES): New.
11499         * doc/invoke.texi (verify-canonical-types): Remove.
11500         (use-canonical-types): Add.
11501
11502 2007-07-11  Ulrich Weigand  <uweigand@de.ibm.com>
11503
11504         * config/spu/spu.c (spu_optimization_options): Remove setting of
11505         parameter PARAM_MAX_COMPLETELY_PEEL_TIMES.
11506         (spu_override_options): Move it here.
11507
11508 2007-07-11  Richard Sandiford  <richard@codesourcery.com>
11509
11510         * config/mips/mips.h (MIPS_ISA_LEVEL_SPEC): Handle -m4ksc and -m4ksd.
11511         * config/mips/mips.c (mips_cpu_info_table): Mention
11512         MIPS_ISA_LEVEL_SPEC in the comment.
11513
11514 2007-07-11  Eric Botcazou  <ebotcazou@adacore.com>
11515
11516         PR tree-optimization/32713
11517         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Handle REAL_CST.
11518
11519 2007-07-11  Paolo Carlini  <pcarlini@suse.de>
11520
11521         PR middle-end/30482
11522         * c-opts.c (c_common_post_options): Do not change flag_complex_method
11523         conditional to flag_isoc99.
11524         (c_common_init_options): Do it here, unconditionally.
11525
11526 2007-07-11  Eric Botcazou  <ebotcazou@adacore.com>
11527
11528         PR tree-optimization/32589
11529         * doc/tree-ssa.texi (Rough GIMPLE Grammar): Add missing rule.
11530         * tree-gimple.c (is_gimple_min_invariant): Clarify head comment.
11531         * tree-ssa-propagate.c (valid_gimple_expression_p): New
11532         predicate, extracted from...
11533         (set_rhs): ...here.  Call it for the expression on entry.
11534         * tree-ssa-propagate.h (valid_gimple_expression_p): Declare.
11535         * tree-ssa-sccvn.c: Include tree-ssa-propagate.h.
11536         (simplify_binary_expression): Use valid_gimple_expression_p
11537         to validate the simplification.
11538         * Makefile.in (tree-ssa-sccvn.o): Depends on tree-ssa-propagate.h.
11539
11540 2007-07-11  Danny Smith  <dannysmith@users.sourceforge.net>
11541
11542         * config/i386/cygming.h (PREFERRED_DEBUGGING_TYPE): Define to
11543         DWARF2_DEBUG on 32 bit target too.
11544         (DWARF2_UNWIND_INFO): Reorganize 64-bit vs 32-bit definition. 
11545
11546 2007-07-11  Nick Clifton  <nickc@redhat.com>
11547
11548         * config/m32r/m32r.h (INITIALIZE_TRAMPOLINE): Provide alternative
11549         version for 64-bit hosts.
11550
11551 2007-07-10  David Daney  <ddaney@avtrex.com>
11552
11553         * config/mips/mips.h (ISA_HAS_SYNCI): New target capability
11554         predicate.
11555         (INITIALIZE_TRAMPOLINE): Emit clear_cache insn instead of  library
11556         call.
11557         * config/mips/mips.c (mips_expand_synci_loop): New function.
11558         * config/mips/mips.md (UNSPEC_CLEAR_HAZARD): New constant.
11559         (UNSPEC_RDHWR): Same.
11560         (UNSPEC_SYNCI): Same.
11561         (UNSPEC_SYNC): Same.
11562         (clear_cache): New expand.
11563         (sync): New insn.
11564         (synci): Same.
11565         (rdhwr): Same.
11566         (clear_hazard): Same.
11567         * config/mips/mips-protos.h (mips_expand_synci_loop): Declare
11568         function.
11569         * testsuite/gcc.target/mips/clear-cache-1.c: New test.
11570         * testsuite/gcc.target/mips/clear-cache-2.c: New test.
11571
11572 2007-07-10  Ian Lance Taylor  <iant@google.com>
11573
11574         * emit-rtl.c (gen_reg_rtx): Check can_create_pseudo_p rather than
11575         no_new_pseudos.
11576
11577 2007-07-10  David Daney  <ddaney@avtrex.com>
11578
11579         * builtins.def (BUILT_IN_CLEAR_CACHE): New builtin.
11580         * builtins.c (expand_builtin___clear_cache): New function.
11581         (expand_builtin): Call expand_builtin___clear_cache for
11582         BUILT_IN_CLEAR_CACHE case.
11583         * doc/extend.texi (__builtin___clear_cache): Document new builtin.
11584         * doc/md.texi (clear_cache): Document new instruction pattern.
11585         * testsuite/gcc.dg/builtins-64.c: New test.
11586
11587 2007-07-11  Hans-Peter Nilsson  <hp@axis.com>
11588
11589         * config/cris/cris.md ("movsi"): Fix typo in last change.
11590
11591 2007-07-09  Geoffrey Keating  <geoffk@apple.com>
11592
11593         PR 32617
11594         * c-common.c (c_alignof_expr): Look at DECL_ALIGN of
11595         FUNCTION_DECLs.
11596         (handle_aligned_attribute): Allow use on FUNCTION_DECLs.
11597         * varasm.c (assemble_start_function): Honor DECL_ALIGN
11598         for FUNCTION_DECLs.  Don't use align_functions_log if
11599         DECL_USER_ALIGN.
11600         * print-tree.c (print_node): Print DECL_ALIGN and DECL_USER_ALIGN
11601         even for FUNCTION_DECLs.
11602         * c-decl.c (merge_decls): Propagate DECL_ALIGN even for
11603         FUNCTION_DECLs.
11604         * tree.h (DECL_ALIGN): Update for new location of 'align'.
11605         (DECL_FUNCTION_CODE): Update for new location and name of
11606         'function_code'.
11607         (DECL_OFFSET_ALIGN): Update for new location of 'off_align'.
11608         (struct tree_decl_common): Move 'align' and 'off_align' out
11609         of union, ensure they're still on a 32-bit boundary.  Remove
11610         other fields in union 'u1'.
11611         (struct tree_function_decl): Add field 'function_code' replacing
11612         'u1.f' in tree_decl_common.
11613         * tree.c (build_decl_stat): Set initial value of DECL_ALIGN.
11614         * doc/extend.texi (Function Attributes): Add 'aligned' attribute.
11615         (Variable Attributes): Cross-reference 'aligned' attribute
11616         to Function Attributes.
11617         * flags.h (force_align_functions_log): Delete.
11618         * toplev.c (force_align_functions_log): Delete.
11619
11620 2007-07-10  Uros Bizjak  <ubizjak@gmail.com>
11621
11622         PR target/32708
11623         * config/i386/sse.md (vec_concatv2di): Disable for TARGET_64BIT.
11624         (*vec_concatv2di_rex): New insn pattern.
11625
11626 2007-07-10  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
11627
11628         PR target/32538
11629         * config/mips/iris6.h (LIBGCC_SPEC): Add libm.
11630
11631 2007-07-10  Ian Lance Taylor  <iant@google.com>
11632
11633         Replace no_new_pseudos in backends.
11634         * rtl.h (can_create_pseudo_p): Define.
11635         * config/darwin.c (machopic_indirect_data_reference): Use
11636         can_create_pseudo_p () instead of no_new_pseudos.
11637         (machopic_indirect_data_reference): Likewise.
11638         (machopic_legitimize_pic_address): Likewise.
11639         * config/alpha/alpha.c (alpha_legitimize_address): Likewise.
11640         (alpha_emit_set_const_1): Likewise.
11641         (alpha_emit_set_const): Likewise.
11642         (alpha_emit_conditional_move): Likewise.
11643         (alpha_split_conditional_move): Likewise.
11644         * config/alpha/alpha.md (various splitters): Likewise.
11645         (movti): Likewise.
11646         * config/arm/arm.c (legitimize_pic_address): Likewise.
11647         (arm_load_pic_register): Likewise.
11648         * config/arm/arm.md (addsi3, subsi3, andsi3, iorsi3): Likewise.
11649         (movdi, movsi, movhi, movqi, movsf, movdf): Likewise.
11650         * config/bfin/bfin.c (legitimize_pic_address): Likewise.
11651         * config/cris/cris.c (cris_expand_pic_call_address): Likewise.
11652         * config/cris/cris.md (movsi): Likewise.
11653         * config/frv/frv.md (symGOT2reg_hilo): Likewise.
11654         (symGOTOFF2reg_hilo): Likewise.
11655         (symGPREL2reg, symGPREL2reg_hilo): Likewise.
11656         * config/h8300/h8300.md (insv, extzv): Likewise.
11657         * config/i386/i386.c (ix86_expand_move): Likewise.
11658         (ix86_expand_vector_move): Likewise.
11659         (ix86_prepare_fp_compare_args): Likewise.
11660         (ix86_expand_carry_flag_compare): Likewise.
11661         * config/i386/i386.md (tls_dynamic_gnu2_32): Likewise.
11662         (tls_dynamic_gnu2_combine_32): Likewise.
11663         (tls_dynamic_gnu2_64, tls_dynamic_gnu2_combine_64): Likewise.
11664         * config/ia64/ia64.c (ia64_expand_move): Likewise.
11665         (ia64_expand_movxf_movrf): Likewise.
11666         * config/m32c/m32c.c (m32c_prepare_move): Likewise.
11667         (m32c_split_move): Likewise.
11668         (m32c_expand_insv): Likewise.
11669         * config/m68k/m68k.md (movsi): Likewise.
11670         * config/mips/mips.c (mips_force_temporary): Likewise.
11671         (mips_split_symbol): Likewise.
11672         (mips_move_integer): Likewise.
11673         (mips_legitimize_const_move): Likewise.
11674         * config/mn10300/mn10300.md (movsi): Likewise.
11675         * config/pa/pa.c (emit_move_sequence): Likewise.
11676         * config/rs6000/rs6000.c (rs6000_emit_move): Likewise.
11677         (rs6000_got_register): Likewise.
11678         (create_TOC_reference): Likewise.
11679         (rs6000_machopic_legitimize_pic_address): Likewise.
11680         * config/rs6000/rs6000.md (add<mode>3): Likewise.
11681         (various splitters): Likewise.
11682         (iorsi3, xorsi3, iordi3, xordi3): Likewise.
11683         (movsi_got): Likewise.
11684         * config/s390/s390.c (emit_symbolic_move): Likewise.
11685         * config/s390/s390.md (movhi, movqi): Likewise.
11686         (load_multiple, store_multiple): Likewise.
11687         * config/score/score.c (score_force_temporary): Likewise.
11688         * config/sh/sh.c (prepare_move_operands): Likewise.
11689         (prepare_cbranch_operands): Likewise.
11690         (emit_fpu_switch): Likewise.
11691         (fpscr_set_from_mem): Likewise.
11692         * config/sh/sh.md (movdicc, movsicc, movsicc_umin): Likewise.
11693         (adddi3, subsi3): Likewise.
11694         (various splitters): Likewise.
11695         (divsi_inv_fp_combine): Likewise.
11696         (symGOT_load, symGOTOFF2reg, symDTPOFF2reg): Likewise.
11697         (seq, slt, sle, sgt, sge, sgtu, sltu, sleu, sgeu): Likewise.
11698         (sne): Likewise.
11699         * config/sh/predicates.md (xor_operand): Likewise.
11700         * config/sparc/sparc.c (legitimize_tls_address): Likewise.
11701         * config/sparc/sparc.md (movsi_pic_label_ref): Likewise.
11702         (movdi_pic_label_ref): Likewise.
11703         * config/spu/spu.c (spu_split_immediate): Likewise.
11704         * config/alpha/alpha.md (various splitters): Remove test
11705         !no_new_pseudos || reload_completed.
11706         * config/ia64/ia64.c (ia64_output_mi_thunk): Don't set
11707         no_new_pseudos.
11708         * config/m68k/m68k.c (m68k_output_mi_thunk): Likewise.
11709         * config/mips/mips.c (mips_output_mi_thunk): Likewise.
11710         * config/rs6000/rs6000.c (rs6000_output_mi_thunk): Likewise.
11711         * config/score/score.c (th_output_mi_thunk): Likewise.
11712         * config/sh/sh.c (sh_output_mi_thunk): Likewise.
11713         * config/sparc/sparc.c (sparc_output_mi_thunk): Likewise.
11714
11715 2007-07-10  Kaz Kojima  <kkojima@gcc.gnu.org>
11716
11717         PR rtl-optimization/32664
11718         * mode-switching.c (create_pre_exit): Skip barrier insns.
11719
11720 2007-07-10  Zdenek Dvorak  <dvorakz@suse.cz>
11721
11722         * tree-scalar-evolution.c (scev_const_prop): Add arguments to
11723         force_gimple_operand_bsi.
11724         * tree-ssa-loop-ivopts.c (rewrite_use_nonlinear_expr,
11725         rewrite_use_compare): Ditto.
11726         * tree-ssa-address.c (gimplify_mem_ref_parts, create_mem_ref):
11727         Ditto.
11728         * tree-ssa-ifcombine.c (ifcombine_ifandif): Ditto.
11729         * tree-ssa-loop-prefetch.c (issue_prefetch_ref): Ditto.
11730         * lambda-code.c (replace_uses_equiv_to_x_with_y): Ditto.
11731         * tree-profile.c (prepare_instrumented_value,
11732         tree_gen_interval_profiler, tree_gen_pow2_profiler,
11733         tree_gen_one_value_profiler, tree_gen_ic_profiler,
11734         tree_gen_ic_func_profiler, tree_gen_average_profiler,
11735         tree_gen_ior_profiler): Ditto.
11736         * tree-ssa-reassoc.c (negate_value): Ditto.
11737         * matrix-reorg.c (transform_access_sites, transform_allocation_sites):
11738         Use force_gimple_operand_bsi.
11739         * tree-vect-transform.c (vect_update_ivs_after_vectorizer): Ditto.
11740         * tree-if-conv.c (add_to_dst_predicate_list,
11741         find_phi_replacement_condition): Ditto.
11742         * gimplify.c (force_gimple_operand_bsi): Add before and m arguments.
11743         Call mark_symbols_for_renaming for new statements.
11744         * tree-flow.h (force_gimple_operand_bsi): Declaration changed.
11745
11746 2007-07-10  Zdenek Dvorak  <dvorakz@suse.cz>
11747
11748         * cfghooks.c (remove_edge): New function.
11749         (redirect_edge_and_branch, remove_branch, merge_blocks): Updated
11750         loop exit rescans.
11751         * cfghooks.h (remove_edge): Declare.
11752         * cfg.c (remove_edge): Renamed to remove_edge_raw.
11753         * basic-block.h (remove_edge): Declaration changed to remove_edge_raw.
11754
11755 2007-07-09  Wolfgang Gellerich  <gellerich@de.ibm.com>
11756
11757         * optabs.h: Added declaration for signbit_optab.  
11758         * optabs.c: (init_optabs): Added initialization for signbit_optab.
11759         * genoptinit.c (optabs): Added entry for signbit insns.  
11760         * builtins.c (expand_builtin_signbit): Added code to use a signbit
11761         insn, if available.  
11762         * config/s390/s390.h (S390_TDC_SIGNBIT_SET): New constant.  
11763         * config/s390/s390.md (signbit<mode>2): New expander.  
11764
11765 2007-07-09  Richard Guenther  <rguenther@suse.de>
11766
11767         PR middle-end/32698
11768         * fold-const.c (fold_plusminus_mult_expr): Move constant
11769         arguments second to allow decomposing.
11770
11771 2007-07-09  Alexandre Oliva  <aoliva@oliva.athome.lsd.ic.unicamp.br>
11772
11773         Revert:
11774         2007-07-06  Alexandre Oliva  <aoliva@redhat.com>
11775         PR debug/23551
11776         * tree-ssa-copyrename.c (copy_rename_partition_coalesce):
11777         Disregard DECL_FROM_INLINE.
11778
11779 2007-07-09  Uros Bizjak  <ubizjak@gmail.com>
11780
11781         PR target/27855
11782         * doc/invoke.texi: Add ftree-reassoc flag.
11783         * common.opt (ftree-reassoc): New flag.
11784         * tree-ssa-reassoc.c (gate_tree_ssa_reassoc): New static function.
11785         (struct tree_opt_pass pass_reassoc): Use gate_tree_ssa_reassoc.
11786
11787 2007-07-09  Uros Bizjak  <ubizjak@gmail.com>
11788
11789         PR tree-optimization/32681
11790         * tree-if-conv.c (find_phi_replacement_condition): Use the condition
11791         saved in second_edge->aux when first_bb is a loop header.
11792
11793 2007-07-09  Jan HUbicka  <jh@suse.cz>
11794
11795         * cse.c (cse_insn): Avoid invalid sharing on trial replacement.
11796
11797 2007-07-09  Richard Guenther  <rguenther@suse.de>
11798
11799         * c-decl.c (start_function): Do not promote return type.
11800
11801 2007-07-08  Daniel Franke  <franke.daniel@gmail.com>
11802
11803         * function.c (do_warn_unused_parameter): Do not warn if
11804         TREE_NO_WARNING is set.
11805
11806 2007-07-08  Andreas Schwab  <schwab@suse.de>
11807
11808         * doc/invoke.texi (DEC Alpha/VMS Options): Fix typo.
11809
11810 2007-07-08  Sandra Loosemore  <sandra@codesourcery.com>
11811
11812         Revert this patch:
11813         2007-07-06  Sandra Loosemore  <sandra@codesourcery.com>
11814
11815         * c-opts.c (c_common_handle_option): Make DOLLARS_IN_IDENTIFIERS
11816         apply to assembly language, too.
11817         * doc/tm.texi (DOLLARS_IN_IDENTIFIERS): Update.
11818
11819 2007-07-07  Daniel Berlin  <dberlin@dberlin.org>
11820
11821         Revert (note the sccvn portions are *not* reverted)
11822         2007-07-06  Daniel Berlin  <dberlin@dberlin.org>
11823
11824         Fix PR tree-optimization/23488
11825
11826         * tree-vn.c (set_value_handle): Use decl_vh_map for decl value
11827         handles.
11828         * tree-flow-inline.h (get_value_handle): Ditto.
11829         * tree-ssa-pre.c (decl_vh_map): New.
11830         (decl_node_pool): New.
11831         (can_value_number_operation): Support DECL_P.
11832         (can_PRE_operation): Ditto.
11833         (create_expression_by_pieces): Ditto.
11834         (find_existing_value_expr): Modify to differnetiate between
11835         addressing and top level.
11836         (create_value_handle_for_expr): Handle DECL's.
11837         (poolify_tree): Ditto.
11838         (make_values_for_phi): Don't insert into PHI_GEN during FRE.
11839         (make_values_for_stmt): Handle DECL's properly.
11840         (init_pre): Reorg to not init useless things during FRE.
11841         (fini_pre): Ditto.
11842         * tree-flow.h: Include pointer-set.h.
11843         (decl_vh_map): Declare.
11844         * Makefile.in (TREE_FLOW_H): Add pointer-set.h
11845
11846 2007-07-07 Eric Weddington  <eweddington@cso.atmel.com>
11847
11848         * config/avr/constraints.md (define_memory_constraint "Q"): Fix
11849         the constraint description.
11850         * doc/md.texi: Update documentation of AVR constraints.
11851
11852 2007-07-07  Kazu Hirata  <kazu@codesourcery.com>
11853
11854         * auto-inc-dec.c, config/arm/arm.c,
11855         config/m32r/constraints.md, config/mips/mips.md,
11856         config/rs6000/rs6000.c, cselib.c, dce.c, df-core.c,
11857         df-problems.c, df-scan.c, df.h, dse.c, gimplify.c,
11858         tree-if-conv.c, tree-ssa-sccvn.c, tree-ssa.c: Fix comment
11859         typos.  Follow spelling conventions.
11860         * doc/invoke.texi, doc/rtl.texi: Fix typos.
11861
11862         * cfgrtl.c (delete_insn_chain_and_edges): Remove.
11863         * rtl.h: Remove the prototype for delete_insn_chain_and_edges.
11864
11865         * tree-ssa-operands.c (realloc_vop, realloc_vdef,
11866         realloc_vuse): Remove.
11867         * tree-ssa-operands.h: Remove the prototype for realloc_vdef
11868         and realloc_vuse.
11869
11870 2007-07-06  Daniel Berlin  <dberlin@dberlin.org>
11871
11872         Fix PR tree-optimization/23488
11873
11874         * tree-ssa-sccvn.c (expr_has_constants): Handle tcc_declaration.
11875         (try_to_simplify): Ditto.
11876         (visit_use): Ditto.
11877         * tree-vn.c (set_value_handle): Use decl_vh_map for decl value
11878         handles.
11879         * tree-flow-inline.h (get_value_handle): Ditto.
11880         * tree-ssa-pre.c (decl_vh_map): New.
11881         (decl_node_pool): New.
11882         (can_value_number_operation): Support DECL_P.
11883         (can_PRE_operation): Ditto.
11884         (create_expression_by_pieces): Ditto.
11885         (find_existing_value_expr): Modify to differnetiate between
11886         addressing and top level.
11887         (create_value_handle_for_expr): Handle DECL's.
11888         (poolify_tree): Ditto.
11889         (make_values_for_phi): Don't insert into PHI_GEN during FRE.
11890         (make_values_for_stmt): Handle DECL's properly.
11891         (init_pre): Reorg to not init useless things during FRE.
11892         (fini_pre): Ditto.
11893         * tree-flow.h: Include pointer-set.h.
11894         (decl_vh_map): Declare.
11895         * Makefile.in (TREE_FLOW_H): Add pointer-set.h
11896                 
11897 2007-07-06  Sandra Loosemore  <sandra@codesourcery.com>
11898
11899         * c-opts.c (c_common_handle_option): Make DOLLARS_IN_IDENTIFIERS
11900         apply to assembly language, too.
11901         * doc/tm.texi (DOLLARS_IN_IDENTIFIERS): Update.
11902
11903 2007-07-06  Ian Lance Taylor  <iant@google.com>
11904             Zack Weinberg  <zackw@panix.com>
11905
11906         PR middle-end/32441
11907         * builtins.c (std_expand_builtin_va_start): Don't use make_tree.
11908
11909 2007-07-06  Richard Sandiford  <richard@codesourcery.com>
11910
11911         * config/sh/sh.md (*prefetch_i4): Disable for TARGET_VXWORKS_RTP.
11912         (prefetch): Likewise if "pref" would be used.
11913
11914 2007-07-06  Josh Conner  <jconner@apple.com>
11915
11916         PR middle-end/32602
11917         PR middle-end/32603
11918         * calls.c (store_one_arg): Handle arguments which are partially
11919         on the stack when detecting argument overlap.
11920
11921 2007-07-06  Bernd Schmidt  <bernd.schmidt@analog.com>
11922
11923         * reload1.c (choose_reload_regs): Set reload_spill_index for regs
11924         chosen during find_reloads.
11925
11926 2007-07-06  Richard Guenther  <rguenther@suse.de>
11927
11928         * gimplify.c (gimplify_call_expr): Prefer DECL_ARGUMENTS over
11929         TYPE_ARG_TYPES for verification of argument types.  Use
11930         DECL_ARG_TYPE instead of the PARM_DECL type.  Take excess
11931         parameters as variable arguments.
11932
11933 2007-07-06  Andreas Krebbel  <krebbel1@de.ibm.com>
11934
11935         * libgcc2.h (word_type): Type definition removed.
11936         (cmp_return_type, shift_count_type): Type definitions added.
11937         (__lshrdi3, __ashldi3, __ashrdi3): word_type of second parameter
11938         replaced with shift_count_type.
11939         (__cmpdi2, __ucmpdi2): word_type of return type replaced with
11940         cmp_return_type.
11941         * libgcc2.c (__udivmoddi4, __moddi3): Type of local variable c
11942         changed from word_type to Wtype.
11943         (__lshrdi3, __ashldi3, __ashrdi3): word_type of second parameter
11944         replaced with shift_count_type.
11945         (__cmpdi2, __ucmpdi2): word_type of return type replaced with
11946         cmp_return_type.
11947         * c-common.c (handle_mode_attribute): Handling for libgcc_cmp_return
11948         and libgcc_shift_count attribute added.
11949         * target-def.h (TARGET_LIBGCC_CMP_RETURN_MODE,
11950         TARGET_LIBGCC_SHIFT_COUNT_MODE): New target hooks defined.
11951         (TARGET_INITIALIZER): New target hooks added.
11952         * targhooks.c (default_libgcc_cmp_return_mode,
11953         default_libgcc_shift_count_mode): Default implementations for the new
11954         target hooks added.
11955         * targhooks.h (default_libgcc_cmp_return_mode,
11956         default_libgcc_shift_count_mode): Function prototypes added.
11957         * target.h (struct gcc_target): Fields for the new target hooks added.
11958         * optabs.c (expand_binop): Use shift_count_mode when expanding shift
11959         as library call.
11960         (prepare_cmp_insn): Use cmp_return_mode when expanding comparison as
11961         library call.
11962
11963         * doc/tm.texi (TARGET_LIBGCC_CMP_RETURN_MODE,
11964         TARGET_LIBGCC_SHIFT_COUNT_MODE): Documentation added.
11965
11966         * config/s390/s390.c (s390_libgcc_cmp_return_mode,
11967         s390_libgcc_shift_count_mode): Functions added.
11968         (TARGET_LIBGCC_CMP_RETURN_MODE, TARGET_LIBGCC_SHIFT_COUNT_MODE):
11969         Target hooks defined.
11970
11971 2007-07-06  Richard Sandiford  <richard@codesourcery.com>
11972
11973         * config/mips/mips.c (compute_frame_size): Restore the original
11974         gp_sp_offset for !GENERATE_MIPS16E_SAVE_RESTORE and remove the
11975         fp_size term from the GENERATE_MIPS16E_SAVE_RESTORE calculation.
11976         Document why the difference is needed.
11977
11978 2007-07-06  Richard Guenther  <rguenther@suse.de>
11979
11980         * c-common.c (boolean_increment): Use correctly typed
11981         constant.
11982
11983 2007-07-06  Richard Sandiford  <richard@codesourcery.com>
11984
11985         * config/mips/mips.c (mips16e_save_restore_pattern_p): Check that
11986         the topmost argument register is not also included in the save mask.
11987         (mips16e_collect_argument_save_p): Take a pointer to the argument
11988         register, rather than a pointer to the number of arguments.
11989         (mips16e_collect_argument_saves): Only include argument saves
11990         that aren't in the register mask.
11991
11992 2007-07-06  Uros Bizjak  <ubizjak@gmail.com>
11993
11994         PR rtl-optimization/32450
11995         * function.c (thread_prologue_and_epilogue_insns): Emit blockage insn
11996         to ensure that instructions are not moved into the prologue when
11997         profiling is on.  Remove unused prologue_end variable.
11998         (expand_function_end): Emit blockage insn instead of ASM_INPUT rtx
11999         as a scheduling barrier.
12000
12001 2007-07-06  Alexandre Oliva  <aoliva@redhat.com>
12002
12003         PR debug/23551
12004         * tree-ssa-copyrename.c (copy_rename_partition_coalesce):
12005         Disregard DECL_FROM_INLINE.
12006
12007 2007-07-05  Adam Nemet  <anemet@caviumnetworks.com>
12008
12009         * rtlanal.c (num_sign_bit_copies1): Improve cases of ANDing or
12010         IORing with a constant.
12011
12012 2007-07-05  Seongbae Park  <seongbae.park@gmail.com>
12013
12014         PR rtl-optimization/32475
12015         * df-scan.c (df_def_record_1): Add a use of the stack pointer
12016         for every definition of the stack pointer.
12017
12018 2007-07-05  Richard Earnshaw  <rearnsha@arm.com>
12019
12020         * arm.c (vfp3_const_double_index): Copy signed results of
12021         REAL_VALUE_TO_INT into unsigned vars.
12022
12023 2007-07-05  Richard Guenther  <rguenther@suse.de>
12024
12025         PR middle-end/32639
12026         * alias.c (get_alias_set): Tread METHOD_TYPE the same as
12027         FUNCTION_TYPE.
12028         * tree-ssa.c (useless_type_conversion_p): Check canonical
12029         types early.
12030
12031 2007-07-05 Anatoly Sokolov <aesok@post.ru>
12032
12033         * config/avr/avr.md (zero_extendqihi2, zero_extendqisi2, 
12034         zero_extendhisi2): Change to define_insn_and_split. 
12035         (zero_extendqidi2, zero_extendhidi2, zero_extendsidi2): New.
12036
12037 2007-07-05  Paolo Bonzini  <bonzini@gnu.org>
12038
12039         * function.c (match_asm_constraints_1, rest_of_match_asm_constraints,
12040         pass_match_asm_constraints): New.
12041         * passes.c (init_optimization_passes): Add new pass.
12042         * stmt.c (expand_asm_operands): Set cfun->has_asm_statement.
12043         * function.h (struct function): Add has_asm_statement bit.
12044         (current_function_has_asm_statement): New.
12045         * tree-pass.h (pass_match_asm_constraints): New.
12046
12047 2007-07-05  Richard Sandiford  <rsandifo@nildram.co.uk>
12048
12049         * config/mips/mips.c (mips_file_start): Avoid declaration
12050         after code.
12051
12052 2007-07-05  Sandra Loosemore  <sandra@codesourcery.com>
12053
12054         * optabs.c (expand_binop_directly): Fix signed/unsigned comparison.
12055
12056 2007-07-05  Uros Bizjak  <ubizjak@gmail.com>
12057
12058         * rtl.def (NOTE): Change print format string to print
12059         operand 5 as a note insn name.
12060
12061 2007-07-05  Sandra Loosemore  <sandra@codesourcery.com>
12062             David Ung  <davidu@mips.com>
12063
12064         * config/mips/mips.c (mips_cpu_info): Add 4ksc and 4ksd processors.
12065         * doc/invoke.texi: (MIPS Options): Document them.
12066
12067 2007-07-05  Sandra Loosemore  <sandra@codesourcery.com>
12068             David Ung  <davidu@mips.com>
12069
12070         Add support for SmartMIPS ASE.
12071
12072         * optabs.c (expand_binop_directly): New, broken out from...
12073         (expand_binop): Here.  Make it try rotating in the other
12074         direction even when the second operand isn't constant.
12075         * config/mips/mips.md (*lwxs): New.
12076         * config/mips/mips.opt (msmartmips): New.
12077         * config/mips/mips.c (mips_lwxs_address_p): New.
12078         (mips_rtx_costs): Make it recognize scaled indexed addressing.
12079         * config/mips/mips.h (TARGET_CPU_CPP_BUILTINS): Define
12080         __mips_smartmips when compiling for TARGET_SMARTMIPS.
12081         (ISA_HAS_ROR): Define for TARGET_SMARTMIPS.
12082         (ISA_HAS_LWXS): New.
12083         (ASM_SPEC): Add -msmartmips/-mno-smartmips.
12084         * doc/invoke.texi (MIPS Options): Document -msmartmips/-mno-smartmips.
12085         * testsuite/gcc.target/mips/smartmips-lwxs.c: New test case.
12086         * testsuite/gcc.target/mips/smartmips-ror-1.c: New test case.
12087         * testsuite/gcc.target/mips/smartmips-ror-2.c: New test case.
12088         * testsuite/gcc.target/mips/smartmips-ror-3.c: New test case.
12089         * testsuite/gcc.target/mips/smartmips-ror-4.c: New test case.
12090
12091 2007-07-05  Dorit Nuzman  <dorit@il.ibm.com>
12092
12093         * tree-vectorizer.c (new_loop_vec_info): Initialize
12094         LOOP_VINFO_COST_MODEL_MIN_ITERS.
12095         * tree-vectorizer.h (_loop_vec_info): Added new filed
12096         min_profitable_iters.
12097         (LOOP_VINFO_COST_MODEL_MIN_ITERS): New access macro to above new field.
12098         (TARG_SCALAR_TO_VEC_COST): Define cost of scalar to vector operation.
12099         * tree-vect-analyze.c (vect_analyze_operations): Set
12100         LOOP_VINFO_COST_MODEL_MIN_ITERS.
12101         * tree-vect-transform.c (vect_estimate_min_profitable_iters): Use
12102         VEC_length to determine if there are any LOOP_VINFO_MAY_MISALIGN_STMTS.
12103         Fix calculation of peel_iters_prologue. Move consideration of epilogue
12104         and prologue cost to after they are computed.
12105         (vect_model_induction_cost): Use TARG_SCALAR_TO_VEC_COST instead of
12106         TARG_VEC_STMT_COST.
12107         (vect_model_simple_cost): Takes additional argument dt. Consider cost
12108         of creating vectors from scalars according to dt.
12109         (vect_model_store_cost): Likewise.
12110         (vectorizable_call): Use dt array instead of scalar dt. Call
12111         vect_model_simple_cost with additional argument dt.
12112         (vectorizable_assignment): Likewise.
12113         (vectorizable_operation): Likewise.
12114         (vectorizable_type_demotion): Likewise.
12115         (vectorizable_type_promotion): Likewise.
12116         (vectorizable_store): Use dt array instead of scalar dt. Call
12117         vect_model_store_cost with additional argument dt.
12118         (vect_do_peeling_for_loop_bound): Don't call
12119         vect_estimate_min_profitable_iters. Instead, lookup
12120         LOOP_VINFO_COST_MODEL_MIN_ITERS. Don't always print
12121         "may not be profitable".
12122
12123 2007-07-05  Dorit Nuzman  <dorit@il.ibm.com>
12124
12125         PR testsuite/32014
12126         * config/rs6000/altivec.md (UNSPEC_VUPKHS_V4SF, UNSPEC_VUPKLS_V4SF):
12127         (UNSPEC_VUPKHU_V4SF, UNSPEC_VUPKLU_V4SF): New.
12128         (vec_unpacks_float_hi_v8hi, vec_unpacks_float_lo_v8hi): New patterns.
12129         (vec_unpacku_float_hi_v8hi, vec_unpacku_float_lo_v8hi): New patterns. 
12130
12131 2007-07-05  Zdenek Dvorak  <dvorakz@suse.cz>
12132
12133         * config/i386/i386.c (ix86_address_cost): Do not consider more complex
12134         addressing modes cheaper.
12135
12136 2007-07-05  Alexandre Oliva  <aoliva@redhat.com>
12137
12138         * dwarf2out.c (dw_ranges_by_label_ref): New typedef.
12139         (dw_ranges_struct): Rename block_num to num.  Adjust.
12140         (dw_ranges_by_label_struct): New.
12141         (ranges_by_label, ranges_by_label_allocated,
12142         ranges_by_label_in_use): New variables.
12143         (add_ranges_num): Factored most of the code out of...
12144         (add_ranges): ... this one.  Rewrite in terms of the former.
12145         (add_ranges_by_labels): New.
12146         (output_ranges): Output by-label ranges.
12147         (dwarf2out_finish): Output range for multiple-section
12148         compile_unit.  Output standard DW_AT_low_pc in addition to
12149         unexpected DW_AT_entry_pc.
12150
12151 2007-07-04  Daniel Berlin  <dberlin@dberlin.org>
12152
12153         PR tree-optimization/32604
12154         PR tree-optimization/32606
12155
12156         * tree-ssa-pre.c (bb_bitmap_sets): Removed antic_safe_loads.
12157         (compute_antic_safe): Removed.
12158         (ANTIC_SAFE_LOADS): Ditto.
12159         (compute_antic_aux): Don't print ANTIC_SAFE_LOADS.
12160         (execute_pre): Don't call compute_antic_safe.
12161         (vuse_equiv): New function.
12162         (make_values_for_stmt): Use it
12163         * tree-ssa-sccvn.c (set_ssa_val_to): Remove assert, since it is
12164         not always true.
12165
12166 2007-07-04 Anatoly Sokolov <aesok@post.ru>
12167
12168         PR target/31331
12169         * config/avr/avr.c (avr_naked_function_p): Handle receiving a type
12170         rather than a decl. 
12171         (avr_attribute_table): Make "naked" attribute apply to function types
12172         rather than to decls.
12173         (avr_handle_fntype_attribute): New function.
12174
12175 2007-07-04  Joseph Myers  <joseph@codesourcery.com>
12176
12177         * target-def.h (TARGET_INITIALIZER): Remove trailing whitespace
12178         after \.
12179
12180 2007-07-04  David Ung  <davidu@mips.com>
12181             Joseph Myers  <joseph@codesourcery.com>
12182
12183         * config/mips/mips.md (type): Add logical, signext and move.
12184         (one_cmpl<mode>2, *and<mode>3, *and<mode>3_mips16, *ior<mode>3,
12185         *ior<mode>3_mips16, two unnamed insns after *ior<mode>3_mips16,
12186         *nor<mode>3, "Combiner patterns to optimize truncate/zero_extend
12187         combinations", *zero_extend<SHORT:mode><GPR:mode>2,
12188         *zero_extendqihi2, *extend<SHORT:mode><GPR:mode>2_mips16e,
12189         *extend<SHORT:mode><GPR:mode>2_se<SHORT:size>, *movdi_64bit,
12190         *movdi_64bit_mips16, *movsi_internal, *movsi_mips16, movcc,
12191         *movhi_internal, *movhi_mips16, *movqi_internal, *movqi_mips16,
12192         *movsf_hardfloat, *movsf_softfloat, *movsf_mips16,
12193         *movdf_hardfloat_64bit, *movdf_hardfloat_32bit,
12194         movv2sf_hardfloat_64bit): Use the new types.
12195         (*movdi_32bit, *movdi_gp32_fp64, *movdi_32bit_mips16,
12196         *movdf_softfloat, *movdf_mips16): Use "multi".
12197         (extendqihi2): Replace with a define_expand.
12198         (*extendqihi2_mips16e, *extendqihi2, *extendqihi2_seb): New.
12199         Based on extend<SHORT:mode><GPR:mode>2 patterns.
12200         * config/mips/74k.md (r74k_int_logical): New reservation and
12201         bypasses.
12202         (r74k_int_arith): Remove "slt".
12203         * config/mips/24k.md, config/mips/4130.md, config/mips/4k.md,
12204         config/mips/5400.md, config/mips/5500.md, config/mips/5k.md,
12205         config/mips/7000.md, config/mips/9000.md, config/mips/generic.md,
12206         config/mips/sb1.md, config/mips/sr71k.md: Add new types to
12207         reservations for "arith".
12208
12209 2007-07-04  Richard Guenther  <rguenther@suse.de>
12210
12211         * tree-ssa.c (useless_type_conversion_p): Add handling for
12212         scalar float and vector types.  Only call the types_compatible_p
12213         langhook for aggregate types as last resort.  Follow the
12214         rules.
12215
12216 2007-07-04  Richard Guenther  <rguenther@suse.de>
12217
12218         * tree-inline.c (estimate_num_insns_1): Treat CONVERT_EXPR
12219         the same as NOP_EXPR.
12220
12221 2007-07-04  Nick Clifton  <nickc@redhat.com>
12222
12223         * target.h (struct gcc_target): Add target_help field.
12224         * target-def.h (TARGET_HELP): New.
12225         (TARGET_INITIALIZER): Use TARGET_HELP.
12226         * opts.c (command_handle_option): Invoke target_help function, if
12227         defined, when the user has specified --target-help on the command
12228         line.
12229         * doc/invoke.texi: Mention that --target-help might print
12230         additional information.
12231         * doc/tm.texi: Document TARGET_HELP hook.
12232
12233         * arm.c (TARGET_HELP): Override default definition.
12234         (arm_target_help): New - display a wrapped list of cores and
12235         architectures supported.
12236
12237 2007-07-04  Rask Ingemann Lambertsen  <rask@sygehus.dk>
12238
12239         * config/v850/v850.c (expand_prologue): Make sure
12240         GEN_INT() argument is sign extended rather than zero extended.
12241         (expand_epilogue): Likewise.
12242         (output_move_double): Delete.
12243         * config/v850/v850-protos.h (output_move_double): Delete.
12244         * config/v850/v850.md (movdi): Delete.
12245         (*movdi_internal): Delete.
12246         (movdf): Delete.
12247         (*movdf_internal): Delete.
12248
12249 2007-07-04  Richard Sandiford  <richard@codesourcery.com>
12250
12251         * config/sh/vxworks.h (SUBTARGET_OVERRIDE_OPTIONS): Reject -mrelax
12252         unless compiling RTP PIC.
12253
12254 2007-07-04  Richard Guenther  <rguenther@suse.de>
12255
12256         PR tree-optimization/32482
12257         * tree-ssa-ifcombine.c (recognize_single_bit_test): Use the
12258         original ssa name if we didn't find a shift expression.
12259         Fix shift constant for bit zero test.
12260
12261 2007-07-04  Richard Sandiford  <richard@codesourcery.com>
12262
12263         * config/sh/lib1funcs.asm (ic_invalidate): Align constant pool.
12264
12265 2007-07-04  Richard Sandiford  <richard@codesourcery.com>
12266
12267         * config.gcc (arm-wrs-vxworks): Don't include svr4.h.
12268         * config/vxworks.h (PTRDIFF_TYPE, SIZE_TYPE, TARGET_POSIX_IO): Define.
12269         * config/arm/vxworks.h (ASM_SPEC): Delete.
12270         (SUBTARGET_EXTRA_ASM_SPEC): Define.
12271
12272 2007-07-04  Sebastian Pop  <sebpop@gmail.com>
12273
12274         * tree-data-ref.h (data_dependence_relation): New flag reversed_p.
12275         (DDR_REVERSED_P): New.
12276         * tree-data-ref.c (initialize_data_dependence_relation,
12277         build_classic_dist_vector): Set DDR_REVERSED_P.
12278
12279 2007-07-04  Sebastian Pop  <sebpop@gmail.com>
12280
12281         PR middle-end/32457
12282         * tree-data-ref.c (analyze_siv_subscript_cst_affine,
12283         compute_overlap_steps_for_affine_1_2, analyze_subscript_affine_affine,
12284         init_omega_for_ddr_1): Use non conservative number of iterations
12285         estimations.
12286         (analyze_subscript_affine_affine): Use HOST_WIDE_INT instead of int.
12287         (analyze_siv_subscript): Remove FIXME and reinitialization of 
12288         last_conflicts to chrec_dont_know.
12289         * testsuite/gfortran.dg/vect/pr32457.f90: New.
12290
12291 2007-07-04  Douglas Gregor  <doug.gregor@gmail.com>
12292
12293         * tree.c (maybe_canonicalize_argtypes): Improve description.
12294
12295 2007-07-04  Douglas Gregor  <doug.gregor@gmail.com>
12296
12297         * tree.c (maybe_canonicalize_argtypes): New.
12298         (build_function_type): Set canonical type.
12299         (build_method_type_directly): Ditto.
12300         (reconstruct_complex_type): Rebuild the METHOD_TYPE node
12301         properly.
12302
12303 2007-07-03  Andrew Pinski  <andrew_pinski@playstation.sony.com>
12304
12305         * tree-ssa-loop-ivopts.c (strip_offset_1): Treat POINTER_PLUS_EXPR
12306         like PLUS_EXPR.
12307         (rewrite_use_nonlinear_expr): Likewise.
12308
12309 2007-07-03  Seongbae Park  <seongbae.park@gmail.com>
12310
12311         * rtl.def (UNSPEC, USE, CLOBBER): More comments.
12312
12313 2007-07-04  Ben Elliston  <bje@au.ibm.com>
12314
12315         * dwarf2out.c: Move DWARF2 abbreviation glossary closer to the top
12316         of this file.
12317
12318         * c-objc-common.c (c_types_compatible_p): Fix indentation.
12319
12320         * doc/tm.texi (Run-time Target): Capitalise "CPU".
12321         (Exception Handling): Likewise.
12322
12323 2007-07-03  Jan Hubicka  <jh@suse.cz>
12324
12325         * ifcvt.c (find_cond_trap): Avoid invalid RTL sharing.
12326
12327 2007-07-03  Eric Christopher  <echristo@apple.com>
12328
12329         * doc/cppopts.texi: Add conflicting option note to -dM.
12330         * doc/invoke.texi: Add note about possible conflicts with
12331         -E for -dCHARS and note that -dM will not produce
12332         any results if there is no machine dependent reorg.
12333         
12334 2007-07-03  Geoffrey Keating  <geoffk@apple.com>
12335
12336         * tree.h (DECL_ALIGN): Back out previous change.
12337
12338 2007-07-03  Joseph Myers  <joseph@codesourcery.com>
12339
12340         * configure.ac: Test for .dtprelword support on MIPS.
12341         * configure, config.in: Regenerate.
12342         * config/mips/mips.c (mips_output_dwarf_dtprel): New.
12343         (TARGET_ASM_OUTPUT_DWARF_DTPREL): Define.
12344
12345 2007-07-03  Julian Brown  <julian@codesourcery.com>
12346
12347         * config.gcc (with_fpu): Allow --with-fpu=vfp3.
12348         * config/arm/aout.h (REGISTER_NAMES): Add D16-D31.
12349         * config/arm/aof.h (REGISTER_NAMES): Add D16-D31.
12350         * config/arm/arm.c (FL_VFPV3): New flag for VFPv3 processor
12351         capability.
12352         (all_fpus): Add FPUTYPE_VFP3.
12353         (fp_model_for_fpu): Add VFPv3 field.
12354         (arm_rtx_costs_1): Give cost to VFPv3 constants.
12355         (vfp3_const_double_index): New function. Return integer index of
12356         VFPv3 constant suitable for fconst[sd] insns, or -1 if constant
12357         isn't suitable.
12358         (vfp3_const_double_rtx): New function. True if VFPv3 is enabled
12359         and argument represents a valid RTX for a VFPv3 constant.
12360         (vfp_output_fldmd): Split fldmd with > 16 registers in the list into
12361         two instructions.
12362         (vfp_emit_fstmd): Similar, for fstmd.
12363         (arm_print_operand): Implement new code 'G' for VFPv3 floating-point
12364         constants, represented as integer indices.
12365         (arm_hard_regno_mode_ok): Use VFP_REGNO_OK_FOR_SINGLE,
12366         VFP_REGNO_OK_FOR_DOUBLE macros.
12367         (arm_regno_class): Handle VFPv3 d0-d7, low, high register split.
12368         (arm_file_start): Set float-abi attribute for VFPv3, and output
12369         correct ".fpu" assembler directive.
12370         (arm_dbx_register_numbering): Add FIXME.
12371         * config/arm/arm.h (TARGET_VFP3): New macro. Target supports VFPv3.
12372         (fputype): Add FPUTYPE_VFP3.
12373         (FIXED_REGISTERS): Add 32 registers for D16-D31.
12374         (CALL_USED_REGISTERS): Likewise.
12375         (CONDITIONAL_REGISTER_USAGE): Add note about conditional definition
12376         of LAST_VFP_REGNUM. Make D16-D31 caller-saved, if present.
12377         (LAST_VFP_REGNUM): Extend available VFP registers for VFPv3.
12378         (D7_VFP_REGNUM): New.
12379         (LAST_LO_VFP_REGNUM, FIRST_HI_VFP_REGNUM, LAST_HI_VFP_REGNUM)
12380         (VFP_REGNO_OK_FOR_SINGLE, VFP_REGNO_OK_FOR_SINGLE)
12381         (VFP_REGNO_OK_FOR_DOUBLE): Define new macros.
12382         (FIRST_PSEUDO_REGISTER): Shift up to 128 to accommodate VFPv3.
12383         (REG_ALLOC_ORDER): Adjust for VFPv3.
12384         (reg_class): Add VFP_D0_D7_REGS, VFP_LO_REGS, VFP_HI_REGS.
12385         (REG_CLASS_NAMES): Add entries corresponding to VFP_D0_D7_REGS,
12386         VFP_LO_REGS, VFP_HI_REGS.
12387         (REG_CLASS_CONTENTS): Likewise. Extend contents for VFP_REGS.
12388         (IS_VFP_CLASS): Define macro.
12389         (SECONDARY_OUTPUT_RELOAD_CLASS, SECONDARY_INPUT_RELOAD_CLASS): Use
12390         IS_VFP_CLASS.
12391         (REGISTER_MOVE_COST): Likewise.
12392         * config/arm/arm-protos.h (vfp3_const_double_rtx): Add prototype.
12393         * config/arm/vfp.md (VFPCC_REGNUM): Redefine as 127.
12394         (*arm_movsi_vfp, *thumb2_movsi_vfp, *movsfcc_vfp)
12395         (*thumb2_movsfcc_vfp, *abssf2_vfp, *negsf2_vfp, *addsf3_vfp)
12396         (*subsf3_vfp, *divsf_vfp, *mulsf_vfp, *mulsf3negsf_vfp)
12397         (*mulsf3addsf_vfp, *mulsf3subsf_vfp, *mulsf3negsfaddsf_vfp)
12398         (*extendsfdf2_vfp, *truncdfsf2_vfp, *truncsisf2_vfp)
12399         (*truncsidf2_vfp, fixuns_truncsfsi2, fixuns_truncdfsi2)
12400         (*floatsisf2_vfp, *floatsidf2_vfp, floatunssisf2)
12401         (floatunssidf2, *sqrtsf2_vfp, *cmpsf_split_vfp)
12402         (*cmpsf_trap_split_vfp, *cmpsf_vfp, *cmpsf_trap_vfp): Use 't'
12403         where appropriate for single-word registers.
12404         (*movsf_vfp, *thumb2_movsf_vfp, *movdf_vfp, *thumb2_movdf_vfp):
12405         As above. Fix type attributes.
12406         * config/arm/constraints.md (register_contraint "t"): Define.
12407         (register_constraint "w"): Change to D0-D15, or D0-D31 for
12408         VFPv3/NEON.
12409         (register_constraint "x"): Define.
12410         (constraint "Dv"): Define.
12411
12412 2007-07-03  Geoffrey Keating  <geoffk@apple.com>
12413
12414         * tree.h (DECL_ALIGN): Prevent use on a FUNCTION_DECL.
12415
12416 2007-07-03  Tom Tromey  <tromey@redhat.com>
12417
12418         * c-parser.c (objc_pq_context): Removed.
12419         (objc_need_raw_identifier): Likewise.
12420         (c_parser) <objc_pq_context>: New field.
12421         <objc_need_raw_identifier>: Likewise.
12422         (OBJC_NEED_RAW_IDENTIFIER): Removed.
12423         (c_lex_one_token): Update.
12424         (c_parser_objc_protocol_definition): Update.
12425         (c_parser_objc_method_definition): Update.
12426         (c_parser_objc_methodproto): Update.
12427         (c_parser_declspecs): Update.
12428
12429 2007-07-03  David Ung  <davidu@mips.com>
12430
12431         * config/mips/mips.c (mips_issue_rate): Return 4 for 74K processors.
12432
12433 2007-07-03  David Ung  <davidu@mips.com>
12434             Richard Sandiford  <richard@codesourcery.com>
12435
12436         * doc/invoke.texi: Document -march=74kf3_2.
12437         * config/mips/mips.h (PROCESSOR_74KF3_2): New processor_type.
12438         (TUNE_74K): Check for it.
12439         * config/mips/mips.c (mips_cpu_info): Add 74kf3_2.
12440         (mips_rtx_cost_data): Add an entry for PROCESSOR_74KF3_2.
12441         * config/mips/mips.md (cpu): Add 74kf3_2.
12442         * config/mips/74k.md (r74k_int_logical, r74k_int_arith, r74k_int_nop)
12443         (r74k_int_cmove, r74k_int_mult, r74k_int_mul3, r74k_int_mfhilo)
12444         (r74k_int_mthilo, r74k_int_div, r74k_int_call, r74k_int_jump)
12445         (r74k_int_load, r74k_int_store, r74k_unknown, r74k_multi): Add
12446         74kf3_2 to the CPU list.
12447         (r74kf3_2_fadd, r74kf3_2_fmove, r74kf3_2_fload, r74kf3_2_fstore)
12448         (r74kf3_2_fmul_sf, r74kf3_2_fmul_df, r74kf3_2_fdiv_sf)
12449         (r74kf3_2_fdiv_df, r74kf3_2_frsqrt_sf, r74kf3_2_frsqrt_df)
12450         (r74kf3_2_fcmp, r74kf3_2_fcvt, r74kf3_2_fxfer_to_c1)
12451         (r74kf3_2_fxfer_from_c1): New insn reservations.
12452
12453 2007-07-03  Richard Sandiford  <richard@codesourcery.com>
12454             David Ung  <davidu@mips.com>
12455
12456         * doc/invoke.texi: Replace -march=24kf with -march=24kf2_1 and
12457         -march=24kx with -march=24kf1_1.  Likewise 24ke[fx], 34k[fx]
12458         and 74k[fx].  Document aliases for the new options.
12459         * config/mips/mips.h (PROCESSOR_24KF): Rename to...
12460         (PROCESSOR_24KF2_1): ...this.
12461         (PROCESSOR_24KX): Rename to...
12462         (PROCESSOR_24KF1_1): ...this.
12463         (PROCESSOR_74KF): Rename to...
12464         (PROCESSOR_74KF2_1): ...this.
12465         (PROCESSOR_74KX): Rename to...
12466         (PROCESSOR_74KF1_1): ...this.
12467         (TUNE_74K): Update PROCESSOR_* names.
12468         * config/mips/mips.c (mips_cpu_info): Add 24kf2_1 as a synonym
12469         for 24kf.  Add 24kf1_1 and 24kfx as synonyms for 24kx.  Likewise
12470         the 24ke*, 34k* and 74k* processors.  Update PROCESSOR_* names.
12471         (mips_rtx_cost_data): Update processor names in comments.
12472         (mips_issue_rate): Update PROCESSOR_* names.
12473         * config/mips/mips.md (cpu): Rename 24kf to 24kf2_1, 24kx to
12474         24kf1_1, 74kf to 74kf2_1 and 74kx to 74kf1_1.
12475         * config/mips/24k.md: Rename FPU-related r24k_* insn reservations
12476         to r24kf2_1_*.  Rename r24kx_* insn reservations to r24kf1_1_*.
12477         Update cpu attribute names.
12478         (r24k_fpu_iss): Rename this reservation to...
12479         (r24kf2_1_fpu_iss): ...this and update all uses.
12480         (r24kx_fpu_iss): Rename this reservation to...
12481         (r24kf1_1_fpu_iss): ...this and update all uses.
12482         * config/mips/74k.md: Rename FPU-related r74kf_* insn reservations
12483         to r74kf2_1_*.  Rename r74kx_* insn reservations to r74kf1_1_*.
12484         Update cpu attribute names.
12485
12486 2007-07-01  Kaz Kojima  <kkojima@gcc.gnu.org>
12487
12488         * config/m32r/constraints.md: New file.
12489         * config/m32r/m32r.c: Include tm-constrs.h.
12490         (small_data_operand): Use satisfies_constraint_* instead of macro.
12491         (addr24_operand, gen_compare): Likewise.
12492         * config/m32r/m32r.h (REG_CLASS_FROM_LETTER): Remove.
12493         (INT8_P, UPPER16_P, UINT32_P, UINT5_P, INVERTED_SIGNED_8BIT,
12494         CONST_OK_FOR_LETTER_P, CONST_DOUBLE_OK_FOR_LETTER_P,
12495         EXTRA_CONSTRAINT): Likewise.
12496         * config/m32r/m32r.md: Include constraints.md.
12497         (*movsi_insn): Use satisfies_constraint_* instead of macro.
12498         (andsi3, iorsi3, xorsi3, seq_insn+1, sne): Likewise.
12499         * config/m32r/predicates.md (conditional_move_operand): Likewise.
12500         (two_insn_const_operand, int8_operand, uint16_operand,
12501         reg_or_int16_operand, reg_or_uint16_operand,
12502         reg_or_cmp_int16_operand, cmp_int16_operand,
12503         seth_add3_operand): Likewise.
12504
12505 2007-07-03  Eric Christopher  <echristo@gmail.com>
12506
12507         * libgcc2.h: Conditionally declare __bswapsi2 and
12508         __bswapdi2.
12509         
12510 2007-07-03  H.J. Lu  <hongjiu.lu@intel.com>
12511
12512         * ddg.c (check_sccs): Define only if ENABLE_CHECKING is
12513         defined.
12514
12515 2007-07-03  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
12516
12517         PR target/28307
12518         * gthr-posix.h [SUPPORTS_WEAK && GTHREAD_USE_WEAK]
12519         (__gthrw_pragma): Provide default definition.
12520         (__gthrw2): Use it.
12521         * gthr-posix.c (__gthrw_pragma): Define.
12522
12523 2007-07-03  Daniel Berlin  <dberlin@dberlin.org>
12524
12525         * tree-ssa-sccvn.c (set_ssa_val_to): Check for operand_equal_p
12526         before declaring inequality.
12527
12528 2007-07-03  Rask Ingemann Lambertsen  <rask@sygehus.dk>
12529
12530         * combine.c (recog_for_combine): Log the success or failure of
12531           matching new insn patterns against the machine description in
12532           detailed dumps.
12533
12534 2007-07-03  Revital Eres  <eres@il.ibm.com>
12535
12536         * ddg.c (print_sccs): New function.
12537         (check_sccs): New function.
12538         (create_ddg_all_sccs): Use it.
12539         * ddg.h (print_sccs): Declare.
12540         * modulo-sched.c (sms_order_nodes): Call print_sccs.
12541
12542 2007-07-03  Uros Bizjak  <ubizjak@gmail.com>
12543
12544         * targhooks.h (default_mode_for_suffix): New function declaration.
12545         * targhooks.c (default_mode_for_suffix): New default target hook.
12546         * target.h (struct c): New structure in the targetm struct.
12547         (mode_for_suffix): New target hook as part of struct c.
12548         target-def.h (TARGET_C_MODE_FOR_SUFFIX): Define as
12549         default_mode_for_suffix.
12550         (TARGET_C): New define.
12551         * c-lex.c: Include "target.h".
12552         (interpret_float): Use targetm.c.mode_for_suffix to determine
12553         the mode for a given non-standard suffix.
12554         Makefile.in (c-lex.o): Depend on $(TARGET_H).
12555
12556         * config/i386/i386.c (ix86_c_mode_for_suffix): New static function.
12557         (TARGET_C_MODE_FOR_SUFFIX): Define to ix86_c_mode_for_suffix.
12558
12559         * doc/extend.texi (Floating Types): New node.  Document __float80 and
12560         __float128 types.  Document 'w', 'W', 'q' and 'Q' suffixes.
12561
12562 2007-07-03  Kaz Kojima  <kkojima@gcc.gnu.org>
12563
12564         PR target/32506
12565         * config/sh/sh.md (udivsi3_i1_media): Use target_reg_operand
12566         predicate instead of target_operand.
12567         (divsi3_i1_media, divsi3_media_2): Likewise.
12568
12569 2007-07-02  Eric Botcazou  <ebotcazou@adacore.com>
12570
12571         * tree.h (alias_sets_might_conflict_p): Rename into
12572         alias_sets_must_conflict_p.
12573         * alias.c (alias_sets_might_conflict_p): Likewise.
12574         (alias_sets_conflict_p): Use it.
12575         (objects_must_conflict_p): Likewise.
12576         * c-common.c (strict_aliasing_warning): Adjust.
12577
12578 2007-07-02  Andrew Pinski  <andrew_pinski@playstation.sony.com>
12579
12580         * rtlhooks.c (gen_lowpart_if_possible): Check for
12581         invalid subreg before calling gen_lowpart_SUBREG.
12582
12583 2007-07-02  Geoffrey Keating  <geoffk@apple.com>
12584
12585         * config/darwin9.h: Add copyright notice.
12586         (LINK_COMMAND_SPEC): Add comment.
12587         (DARWIN_LIBSYSTEM_HAS_UNWIND): Define.
12588         * config/rs6000/darwin.h (MD_UNWIND_SUPPORT): Conditionalise on
12589         DARWIN_LIBSYSTEM_HAS_UNWIND.
12590
12591 2007-07-02  Jakub Jelinek  <jakub@redhat.com>
12592
12593         PR libgomp/32468
12594         * omp-low.c (check_combined_parallel): New function.
12595         (lower_omp_parallel): Call it via walk_stmts, set
12596         OMP_PARALLEL_COMBINED if appropriate.
12597         (determine_parallel_type): If OMP_FOR resp. OMP_SECTIONS
12598         isn't the only statement in WS_ENTRY_BB or OMP_RETURN
12599         the only one in PAR_EXIT_BB and not OMP_PARALLEL_COMBINED,
12600         don't consider it as combined parallel.
12601
12602 2007-07-02  Richard Sandiford  <richard@codesourcery.com>
12603
12604         * configure.ac (gcc_gxx_include_dir): Use $(libsubdir_to_prefix).
12605         (gcc_tooldir): Likewise.
12606         * configure: Regenerate.
12607         * Makefile.in (libsubdir_to_prefix): New variable, based on the
12608         old configure.ac gcc_tooldir setting.
12609         (prefix_to_exec_prefix): New variable.
12610         (DRIVER_DEFINES): Use $(libsubdir_to_prefix)$(prefix_to_exec_prefix)
12611         rather than $(unlibsubdir)/../ to derive TOOLDIR_BASE_PREFIX.
12612
12613 2007-07-02  Daniel Berlin  <dberlin@dberlin.org>
12614
12615         Fix PR tree-optimization/32583
12616         Fix PR tree-optimization/32584
12617         * tree-ssa-pre.c (phi_translate): Always pass seen bitmap.
12618         (phi_translate_set): Use phi_translate directly now.
12619         (make_values_for_stmt): Don't value number RHS if we already know
12620         it is constant.
12621
12622 2007-07-02  Steve Ellcey  <sje@cup.hp.com>
12623             Jim Wilson <wilson@specifix.com>
12624
12625         PR target/31684
12626         * haifa-sched.c (add_to_speculative_block): Change copy_rtx to
12627         copy_insn.
12628
12629 2007-07-02  Sandra Loosemore  <sandra@codesourcery.com>
12630             Richard Sandiford  <richard@codesourcery.com>
12631             Nigel Stephens  <nigel@mips.com>
12632
12633         * config/mips/mips-protos.h (mips16e_save_restore_info): New struct.
12634         (mips16e_output_save_restore): Declare.
12635         (mips16e_save_restore_pattern_p): Likewise.
12636         * config/mips/mips.h (GENERATE_MIPS16E_SAVE_RESTORE): New macro.
12637         * config/mips/mips.c (MIPS_MAX_FIRST_STACK_STEP): Return 0x7f8
12638         for GENERATE_MIPS16E_SAVE_RESTORE.  Return 0x400 for TARGET_MIPS16
12639         && !GENERATE_MIPS16E_SAVE_RESTORE && !TARGET_64BIT.
12640         (BITSET_P): New global macro, extracted from...
12641         (mips_for_each_saved_reg): ...here.
12642         (mips16e_save_restore_info): New struct.
12643         (mips16e_s2_s8_regs, mips16e_a0_a3_regs): New variables.
12644         (mips16e_save_restore_regs): New variable.
12645         (mips_split_plus, mips16e_find_first_register): New functions.
12646         (mips16e_mask_registers): New function.
12647         (compute_frame_size): Expand the commentary before the function.
12648         Enforce the MIPS16e save and restore register range restrictions.
12649         Pad the general register save area at the low end.
12650         (mips16e_save_restore_reg, mips16e_build_save_restore)
12651         (mips16e_save_restore_pattern_p, mips16e_add_register_range)
12652         (mips16e_output_save_restore, mips16e_collect_propagate_value)
12653         (mips16e_collect_argument_save, mips16e_collect_argument_saves):
12654         New functions.
12655         (mips_expand_prologue, mips_expand_epilogue): Handle
12656         GENERATE_MIPS16E_SAVE_RESTORE.
12657         * config/mips/mips.md (*mips16e_save_restore): New pattern.
12658
12659 2007-07-02  Uros Bizjak  <ubizjak@gmail.com>
12660
12661         PR tree-optimization/31966
12662         PR tree-optimization/32533
12663         * tree-if-conv.c (add_to_dst_predicate_list): Use "edge", not
12664         "basic_block" description as its third argument.  Update function
12665         calls to get destination bb from "edge" argument.  Save "cond" into
12666         aux field of the edge.  Update prototype for changed arguments.
12667         (if_convertible_loop_p): Clear aux field of incoming edges if bb
12668         contains phi node.
12669         (find_phi_replacement_condition): Operate on incoming edges, not
12670         on predecessor blocks.  If there is a condition saved in the
12671         incoming edge aux field, AND it with incoming bb predicate.
12672         Return source bb of the first edge.
12673         (clean_predicate_lists): Clean aux field of outgoing node edges.
12674         (tree_if_conversion): Do not initialize cond variable. Move
12675         variable declaration into the loop.
12676         (replace_phi_with_cond_gimple_modify_stmt): Remove unneded
12677         initializations of new_stmt, arg0 and arg1 variables.
12678
12679 2007-07-02  Jakub Jelinek  <jakub@redhat.com>
12680
12681         * tree-nrv.c (dest_safe_for_nrv_p): Grok any handled_component_p,
12682         SSA_NAMEs, RESULT_DECLs and PARM_DECLs.
12683
12684 2007-07-02  Richard Guenther  <rguenther@suse.de>
12685
12686         * tree-ssa.c (useless_type_conversion_p): Document
12687         future intent as defining the middle-end type system.
12688         Re-structure to call langhook last, group by type class,
12689         mark questionable parts.
12690
12691 2007-07-02  Richard Guenther  <rguenther@suse.de>
12692
12693         * tree-flow.h (types_compatible_p): Declare.
12694         * tree-ssa.c (types_compatible_p): New function.
12695         * ipa-type-escape.c (discover_unique_type): Use
12696         types_compatible_p instead of lang_hooks.types_compatible_p.
12697         * tree-ssa-copyrename.c (copy_rename_partition_coalesce): Likewise.
12698         * tree-vn.c (expressions_equal_p): Likewise.
12699         * tree.c (fields_compatible_p): Likewise.
12700         * tree-ssa-dom.c (avail_expr_eq): Likewise.
12701         (cprop_operand): Use useless_type_conversion_p instead of
12702         lang_hooks.types_compatible_p.
12703         * tree-inline.c (setup_one_parameter): Likewise.
12704         (declare_return_variable): Likewise.
12705         * tree-nrv.c (tree_nrv): Likewise.
12706         * tree-ssa-ccp.c (maybe_fold_offset_to_array_ref): Likewise.
12707         (maybe_fold_offset_to_component_ref): Likewise.
12708         (maybe_fold_offset_to_reference): Likewise.
12709         * tree-ssa-copy.c (may_propagate_copy): Likewise.
12710         (merge_alias_info): Likewise.
12711         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Likewise.
12712         * tree-ssa-phiopt.c (conditional_replacement): Likewise.
12713         * tree-ssa-reassoc.c (optimize_ops_list): Likewise.
12714         * tree-tailcall.c (find_tail_calls): Likewise.
12715         * tree-vect-generic.c (expand_vector_operations_1): Likewise.
12716         * gimplify.c (canonicalize_addr_expr): Likewise.
12717         (fold_indirect_ref_rhs): Likewise.
12718         (gimplify_addr_expr): Likewise.  Swap parameters to cpt_same_type.
12719         (cpt_same_type): Likewise.
12720         (check_pointer_types_r): Swap parameters to cpt_same_type
12721         where appropriate.
12722         * fold-const.c (fold_convert): Revert fix for PR15988.
12723         * tree-inline.c (setup_one_parameter): Instead fix it here by
12724         using fold_build1 instead of fold_convert and checking for
12725         error_mark_node.  Convert only if the conversion is necessary.
12726
12727 2007-07-02  Joseph Myers  <joseph@codesourcery.com>
12728
12729         * configure.ac: Check for .gnu_attribute on Power.
12730         * configure: Regenerate.
12731         * config/rs6000/rs6000.c (rs6000_file_start): If supported, output
12732         attribute for floating-point ABI.
12733
12734 2007-07-02  Ira Rosen  <irar@il.ibm.com>
12735
12736         PR tree-optimization/32230
12737         PR tree-optimization/32477
12738         * tree-vect-analyze.c (vect_analyze_data_refs): Fail if base 
12739         address is a constant.
12740
12741 2007-07-02  Richard Sandiford  <richard@codesourcery.com>
12742
12743         * config.gcc (mipsisa32-*-elf*, mipsisa32el-*-elf*)
12744         (mipsisa32r2-*-elf*, mipsisa32r2el-*-elf*)
12745         (mipsisa64-*-elf*, mipsisa64el-*-elf*): Combine top-level
12746         stanzas.  Use the first part of the triplet to set MIPS_ISA_DEFAULT.
12747         Remove redundant setting of MASK_FLOAT64 and MASK_64BIT for the
12748         64-bit targets.  Add support for *-elfoabi*.
12749         * config/mips/t-isa3264 (MULTILIB_OPTIONS, MULTILIB_DIRNAMES): Use
12750         different settings if $(tm_defines) does not select the EABI.
12751         (MULTILIB_EXCLUSIONS): Define in those circumstances.
12752         * config/mips/mips.h (MIPS_ISA_LEVEL_OPTION_SPEC): New macro.
12753         (MIPS_ARCH_OPTION_SPEC): Likewise.
12754         (MIPS_ISA_LEVEL_SPEC): Likewise.
12755         (OPTION_DEFAULT_SPECS): Use MIPS_ARCH_OPTION_SPEC.
12756         * config/mips/elfoabi.h: New file.
12757
12758 2007-07-02  Richard Guenther  <rguenther@suse.de>
12759
12760         * tree-flow.h (tree_ssa_useless_type_conversion_1): Rename to ...
12761         (useless_type_conversion_p): ... this.
12762         * tree-ssa.c (tree_ssa_useless_type_conversion_1): Rename to ...
12763         (useless_type_conversion_p): ... this.
12764         * builtins.c (fold_builtin_memory_op): Rename
12765         tree_ssa_useless_type_conversion_1 to useless_type_conversion_p.
12766         * tree-cfg.c (verify_expr): Likewise.
12767         * tree-ssa-address.c (tree_ssa_useless_type_conversion_1): Likewise.
12768         * tree-ssa-ccp.c (ccp_fold): Likewise.
12769         * tree-ssa-copy.c (may_propagate_copy): Likewise.
12770         * tree-ssa-dom.c (eliminate_redundant_computations): Likewise.
12771         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Likewise.
12772         * tree-ssa-loop-niter.c (refine_bounds_using_guard): Likewise.
12773         * tree-ssa-pre.c (eliminate): Likewise.
12774         * tree-ssa.c (delete_tree_ssa): Likewise.
12775         (tree_ssa_useless_type_conversion): Likewise.
12776         * tree.c (build2_stat): Likewise.
12777
12778 2007-07-01  Daniel Berlin  <dberlin@dberlin.org>
12779
12780         Fix PR tree-optimization/32571
12781         * tree-ssa-sccvn.c (visit_use): Shortcut copies to avoid
12782         simplifying them.
12783
12784 2007-07-01  Daniel Berlin  <dberlin@dberlin.org>
12785
12786         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Handle constants
12787         and other expected operations explicitly, change default to
12788         gcc_unreachable. 
12789
12790 2007-07-01  Daniel Jacobowitz  <dan@codesourcery.com>
12791
12792         * config/arm/arm.c (arm_cannot_copy_insn_p): Do not expect a
12793         PARALLEL.
12794         * config/arm/arm.md (pic_add_dot_plus_four, pic_add_dot_plus_eight)
12795         (tls_load_dot_plus_eight): Move the label number into the unspec.
12796         * config/arm/thumb2.md (pic_load_dot_plus_four): Likewise.
12797
12798 2007-07-01  Andreas Schwab  <schwab@suse.de>
12799
12800         * dwarf2out.c (initial_return_save): Define only if used.
12801
12802 2007-07-01  Kenneth Zadeck <zadeck@naturalbridge.com>
12803
12804         Unreverting Richard's Revert of:
12805
12806         2007-06-27  Richard Sandiford  <richard@codesourcery.com>
12807
12808         * dce.c (deletable_insn_p_1): New function, split out from...
12809         (deletable_insn_p): ...here.  Only treat bare USEs and CLOBBERs
12810         specially, not those inside PARALLELs.  Remove BODY argument
12811         and adjust recursive call accordingly.
12812         (prescan_insns_for_dce): Update call to delete_insn_p.
12813
12814 2007-07-01  Vladimir Yanovsky  <yanov@il.ibm.com>
12815             Revital Eres  <eres@il.ibm.com>
12816
12817         * ddg.c (create_ddg_all_sccs): Fix missed
12818         initialization of scc_nodes.
12819
12820 2007-07-01  Uros Bizjak  <ubizjak@gmail.com>
12821
12822         PR middle-end/32559
12823         * fold-const.c (fold-binary) [PLUS_EXPR]: Convert ~X + X to 1 or
12824         X + ~X to 1 only for INTEGRAL_TYPE_P type.
12825
12826 2007-06-30  Joseph Myers  <joseph@codesourcery.com>
12827
12828         * configure.ac: Check for .gnu_attribute on MIPS.
12829         * configure, config.in: Regenerate.
12830         * config/mips/mips.c (mips_file_start): If supported, output
12831         attribute for floating-point ABI.
12832
12833 2007-06-30  Uros Bizjak  <ubizjak@gmail.com>
12834
12835         PR target/32433
12836         * config/i386/i386.md (ffssi2): Expand as ffs_cmove for TARGET_CMOVE.
12837         (ffs_cmove): New expander to expand using ctz pattern.
12838         (*ffs_cmove): Remove pattern.
12839         (*ffs_no_cmove): Enable only for !TARGET_CMOVE.
12840         (ffsdi2): Expand using ctz pattern.
12841         (*ffs_rex64): Remove pattern.
12842
12843 2007-06-30  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
12844
12845         PR rtl-optimization/32296
12846         * pa.md (return): Delete pattern.
12847         (return_internal): Remove "(const_int 1)" from pattern.
12848         (epilogue): Use return_internal pattern for trivial returns.
12849         * pa-protos.h (hppa_can_use_return_insn_p): Delete declaration.
12850         * pa.c (hppa_can_use_return_insn_p): Delete function.  Include "df.h".
12851
12852 2007-06-30  Daniel Berlin  <dberlin@dberlin.org>
12853
12854         * tree-ssa-pre.c (is_exception_related): New function
12855         (can_value_number_operation): Use it.
12856
12857 2007-06-30  Daniel Berlin  <dberlin@dberlin.org>
12858         
12859         Fix PR tree-optimization/32540
12860         Fix PR tree-optimization/31651
12861
12862         * tree-ssa-sccvn.c: New file.
12863
12864         * tree-ssa-sccvn.h: Ditto.
12865         
12866         * tree-vn.c: Include tree-ssa-sccvn.h
12867         (val_expr_paid_d): Removed.
12868         (value_table): Ditto.
12869         (vn_compute): Ditto.
12870         (val_expr_pair_hash): Ditto.
12871         (val_expr_pair_expr_eq): Ditto.
12872         (copy_vuses_from_stmt): Ditto.
12873         (vn_delete): Ditto.
12874         (vn_init): Ditto.
12875         (shared_vuses_from_stmt): Ditto.
12876         (print_creation_to_file): Moved up.
12877         (sort_vuses): Ditto.
12878         (sort_vuses_heap): Ditto.
12879         (set_value_handle): Make non-static.
12880         (make_value_handle): Ditto.
12881         (vn_add): Rewritten to use sccvn lookups.
12882         (vn_add_with_vuses): Ditto.
12883         (vn_lookup): Ditto (and second argument removed).
12884         (vn_lookup_with_vuses): Ditto.
12885         (vn_lookup_or_add): Ditto (and second argument removed);
12886         (vn_lookup_or_add_with_vuses): Ditto.
12887         (vn_lookup_with_stmt): New.
12888         (vn_lookup_or_add_with_stmt): Ditto.
12889         (create_value_handle_for_expr): Ditto.
12890
12891         * tree-ssa-pre.c: Include tree-ssa-sccvn.h.
12892         (seen_during_translate): New function.
12893         (phi_trans_lookup): Use iterative_hash_expr, not vn_compute.
12894         (phi_trans_add): Ditto.
12895         (constant_expr_p): FIELD_DECL is always constant.
12896         (phi_translate_1): Renamed from phi_translate, add seen bitmap.
12897         Use constant_expr_p.
12898         Avoid infinite recursion on mutually valued expressions.
12899         Change callers of vn_lookup_or_add.
12900         (phi_translate): New function.
12901         (compute_antic_safe): Allow phi nodes.
12902         (create_component_ref_by_pieces): Update for FIELD_DECL change.
12903         (find_or_generate_expression): Rewrite slightly.
12904         (create_expression_by_pieces): Updated for vn_lookup_or_add
12905         change.
12906         Update VN_INFO for new names.
12907         (insert_into_preds_of_block): Update for new names.
12908         (add_to_exp_gen): New function.
12909         (add_to_sets): Use vn_lookup_or_add_with_stmt.
12910         (find_existing_value_expr): Rewrite to changed vn_lookup.
12911         (create_value_expr_from): Ditto, and use add_to_exp_gen.
12912         (try_look_through_load): Removed.
12913         (try_combine_conversion): Ditto.
12914         (get_sccvn_value): New function.
12915         (make_values_for_phi): Ditto.
12916         (make_values_for_stmt): Ditto.
12917         (compute_avail): Rewritten for vn_lookup_or_add changes and to use
12918         SCCVN.
12919         (init_pre): Update for SCCVN changes.
12920         (fini_pre): Ditto.
12921         (execute_pre): Ditto.
12922
12923         * tree-flow.h (make_value_handle): Declare.
12924         (set_value_handle): Ditto.
12925         (sort_vuses_heap): Ditto.
12926         (vn_lookup_or_add_with_stmt): Ditto.
12927         (vn_lookup_with_stmt): Ditto.
12928         (vn_compute): Remove.
12929         (vn_init): Ditto.
12930         (vn_delete): Ditto.
12931         (vn_lookup): Update arguments.
12932
12933         * Makefile.in (tree-ssa-pre.o): Add tree-ssa-sccvn.h
12934         (tree-vn.o): Ditto.
12935         (tree-ssa-sccvn.o): New.
12936         (OBJS-common): Add tree-ssa-sccvn.o
12937         
12938 2007-06-30  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
12939
12940         PR c/4076
12941         * c-typeck.c (build_external_ref): Don't mark as used if called
12942         from itself.
12943         * calls.c (rtx_for_function_call): Likewise.
12944         
12945 2007-06-30  Richard Sandiford  <richard@codesourcery.com>
12946
12947         Revert:
12948
12949         2007-06-27  Richard Sandiford  <richard@codesourcery.com>
12950
12951         * dce.c (deletable_insn_p_1): New function, split out from...
12952         (deletable_insn_p): ...here.  Only treat bare USEs and CLOBBERs
12953         specially, not those inside PARALLELs.  Remove BODY argument
12954         and adjust recursive call accordingly.
12955         (prescan_insns_for_dce): Update call to delete_insn_p.
12956
12957 2007-06-30  Rask Ingemann Lambertsen <rask@sygehus.dk>
12958
12959         * combine.c (combine_validate_cost): New parameter NEWOTHERPAT.
12960         (try_combine): Move potential calls to undo_all() so they happen
12961         before we commit to using the combined insns.
12962
12963 2006-06-30  Jan Hubicka  <jh@suse.cz>
12964
12965         * loop-unroll.c (unroll_loop_runtime_iterations): Unshare newly emit
12966         code.
12967
12968 2006-06-30  Thomas Neumann  <tneumann@users.sourceforge.net>
12969
12970         * ipa.c (cgraph_postorder): Cast according to the coding conventions.
12971         (cgraph_remove_unreachable_nodes): Likewise.
12972         * ipa-cp.c (ipcp_propagate_stage): Use BOTTOM instead of integer 0.
12973         * ipa-inline.c (update_caller_keys): Cast according to the coding
12974         conventions.
12975         (cgraph_decide_recursive_inlining): Likewise.
12976         (cgraph_decide_inlining_of_small_function): Likewise.
12977         (try_inline): Likewise.
12978         (cgraph_decide_inlining_incrementally): Likewise.
12979         * ipa-pure-const.c (get_function_state): Likewise.
12980         (scan_function): Likewise.
12981         (analyze_function): Likewise.
12982         (static_execute): Likewise.
12983         * ipa-reference.c (scan_for_static_refs): Likewise.
12984         (merge_callee_local_info): Likewise.
12985         (analyze_function): Use type safe memory macros.
12986         (static_execute): Likewise. Cast according to the coding conventions.
12987         * ipa-type-escape.c (scan_for_regs): Cast according to the coding
12988         conventions.
12989         * ipa-utils.c (searchc): Likewise. Avoid using C++ keywords as variable
12990         names.
12991         (ipa_utils_reduced_inorder): Likewise. Use type safe memory macros.
12992         * ipa-utils.h (struct ipa_dfa_info): Avoid using C++ keywords as
12993         variable names.
12994
12995 2007-06-29  Andrew Pinski  <andrew_pinski@playstation.sony.com>
12996
12997         PR middle-end/30024
12998         * emit-rtl.c (init_emit_once): Intilize const_tiny_rtx[0]
12999         for complex modes (both int and real).
13000
13001 2007-06-29  Jan Hubicka  <jh@suse.cz>
13002
13003         * cse.c: Rever accidentally comitted TODO_verify_rtl_sharing change.
13004
13005 2007-06-29  Jan Hubicka  <jh@suse.cz>
13006
13007         PR middle-end/32372
13008         * cse.c (cse_insn): Avoid invalid sharing in between register note and
13009         the insn pattern.
13010
13011 2007-06-29  Anatoly Sokolov <aesok@post.ru>
13012
13013         PR target/32335
13014         * config/avr/avr.c: Include dataflow header file.
13015         (expand_prologue): Adjust for prologue insn change.
13016         * config/avr/avr.md (call_prologue_saves): Only modify REG_SP once
13017         inside a insn.
13018
13019 2007-06-29  Richard Guenther  <rguenther@suse.de>
13020
13021         PR middle-end/32493
13022         * gimplify.c (gimplify_call_expr): Ignore variable argument parts
13023         during type verification.
13024
13025 2007-06-29  Jan Hubicka  <jh@suse.cz>
13026
13027         * recog.c (validate_change_rtx_1): Unshare TO argument.
13028
13029 2007-06-29  Uros Bizjak  <ubizjak@gmail.com>
13030
13031         PR tree-optimization/24659
13032         * tree-vect-transform.c (vectorizable_call): Handle
13033         (nunits_in == nunits_out / 2) and (nunits_out == nunits_in / 2) cases.
13034
13035         * config/i386/sse.md (vec_pack_sfix_v2df): New expander.
13036         * config/i386/i386.c (enum ix86_builtins)
13037         [IX86_BUILTIN_VEC_PACK_SFIX]: New constant.
13038         (struct bdesc_2arg) [__builtin_ia32_vec_pack_sfix]: New builtin
13039         description.
13040         (ix86_init_mmx_sse_builtins): Define all builtins with 2 arguments as
13041         const using def_builtin_const.
13042         (ix86_expand_binop_builtin): Remove bogus assert() that insn wants
13043         input operands in the same modes as the result.
13044         (ix86_builtin_vectorized_function): Handle BUILT_IN_LRINT.
13045
13046 2007-06-29  Richard Sandiford  <rsandifo@nildram.co.uk>
13047
13048         * df-problems.c (df_set_unused_notes_for_mw): Fix formatting.
13049         (df_set_dead_notes_for_mw): Likewise.
13050
13051 2007-06-29  Eric Botcazou  <ebotcazou@adacore.com>
13052
13053         * c-common.c (pointer_int_sum): Do the negation in sizetype.
13054
13055 2007-06-28  DJ Delorie  <dj@redhat.com>
13056
13057         * config/m32c/m32c.h (OVERRIDE_OPTIONS): Omit unneeded semicolon.
13058
13059 2007-06-28  Geoffrey Keating  <geoffk@apple.com>
13060
13061         * doc/invoke.texi (C++ Dialect Options): Document
13062         fvisibility-ms-compat.
13063         * c.opt (fvisibility-ms-compat): New.
13064
13065 2007-06-28  Andrew Pinski  <andrew_pinski@playstation.sony.com>
13066
13067         PR tree-opt/32417
13068         * tree-affine.c (aff_combination_add_elt): Handle
13069         pointer addition specially.
13070
13071 2007-06-28  Jakub Jelinek  <jakub@redhat.com>
13072
13073         * config/rs6000/rs6000.c (rs6000_function_ok_for_sibcall): Ensure
13074         decl is non-external for AIX ABI.
13075
13076 2007-06-28  David Edelsohn  <edelsohn@gnu.org>
13077
13078         * config/rs6000/predicates.md (current_file_function_operand):
13079         Ensure the symbol is non-external for AIX ABI.
13080
13081 2007-06-28  Nick Clifton  <nickc@redhat.com>
13082
13083         * common.opt (fipa-matrix-reorg): Add Optimization attribute.
13084         (fdce, fdse, fpredictive-commoning): Likewise.
13085
13086 2007-06-28 Francois-Xavier Coudert <fxcoudert@gcc.gnu.org>
13087
13088         PR other/31400
13089         * gcc.c (process_command): Recognize the new -static-libgfortran
13090         option.
13091
13092 2007-06-27  Rask Ingemann Lambertsen  <rask@sygehus.dk>
13093
13094         PR target/32418
13095         * config/m32c/m32c.c (m32c_eh_return_stackadj_rtx): Dataflow fix:
13096         Use a call clobbered hard reg instead of a pseudo reg.
13097
13098 2007-06-27  Kaz Kojima  <kkojima@gcc.gnu.org>
13099
13100         * config/sh/sh.md (load_gbr): Use correct operand constraint.
13101
13102 2007-06-27  Kaz Kojima  <kkojima@gcc.gnu.org>
13103
13104         PR target/32479
13105         * config/sh/sh.md (udivsi3): Don't wrap the sequence with
13106         REG_LIBCALL and REG_RETVAL notes.
13107         (divsi3, mulsi3): Likewise.
13108         (mulhisi3): Likewise.  Use emit_libcall_block.
13109         (umulhisi3, smulsi3_highpart, umulsi3_highpart_i): Likewise.
13110
13111 2007-06-27  Seongbae Park  <seongbae.park@gmail.com>
13112
13113         PR rtl-optimization/32481
13114         * combine.c (adjust_for_new_dest): Rescan the changed insn.
13115
13116 2007-06-27  Richard Sandiford  <richard@codesourcery.com>
13117
13118         * dce.c (deletable_insn_p_1): New function, split out from...
13119         (deletable_insn_p): ...here.  Only treat bare USEs and CLOBBERs
13120         specially, not those inside PARALLELs.  Remove BODY argument
13121         and adjust recursive call accordingly.
13122         (prescan_insns_for_dce): Update call to delete_insn_p.
13123
13124 2007-06-27  Richard Guenther  <rguenther@suse.de>
13125
13126         PR middle-end/32492
13127         * tree.h (fold_convertible_p): Declare.
13128         * fold-const.c (fold_convertible_p): New function.
13129         * gimplify.c (gimplify_call_expr): Use fold_convertible_p
13130         instead of lang_hooks.types_compatible_p.
13131
13132 2007-06-26  Jan Hubicka  <jh@suse.cz>
13133
13134         * fwprop.c (try_fwprop_subst): Use validate_unshare_change.
13135         * postreload.c (reload_cse_simplify_set): Instead of copying the rtx
13136         early use validate_unshare_change.
13137         (reload_combine): Likewise.
13138         * recog.c (change_t): New field unshare.
13139         (validate_change_1): Rename from validate_change; add argument unshare.
13140         (validate_change): Turn into wrapper of validate_change_1; update
13141         prototype for bools.
13142         (validate_unshare_change): New.
13143         (confirm_change_group): Unshare changes if asked for; avoid unnecesary
13144         calls of df_insn_rescan.
13145         * recog.h (validate_change): Replace ints by bools.
13146         (validate_unshare_change): Declare.
13147
13148 2007-06-26  Kenneth Zadeck <zadeck@naturalbridge.com>
13149
13150         * tree.def (VEC_WIDEN_MULT_LO_EXPR): Corrected string name.
13151         
13152 2007-06-26  Steve Ellcey  <sje@cup.hp.com>
13153
13154         * builtins.c (expand_builtin_next_arg): Change Pmode to ptr_mode.
13155
13156 2007-06-25  Jan Hubicka  <jh@suse.cz>
13157
13158         * ipa-inline.c (cgraph_mark_inline): Assert that we never inline
13159         uninlinable call.
13160         (cgraph_decide_inlining_of_small_function, cgraph_decide_inlining,
13161         cgraph_decide_inlining_incrementally): Move uninlinability checks to
13162         places other call site specific checks are performed.
13163
13164 2007-06-25  Andrew Pinski  <andrew_pinski@playstation.sony.com>
13165
13166         PR tree-opt/32421
13167         * tree-vect-transform.c (vectorizable_operation): Convert
13168         POINTER_PLUS_EXPR over to PLUS_EXPR.
13169
13170 2007-06-25  Chao-ying Fu  <fu@mips.com>
13171
13172         * doc/rtl.texi (Machine Modes): Document QQ, HQ, SQ, DQ, TQ,
13173         UQQ, UHQ, USQ, UDQ, UTQ, HA, SA, DA, TA, UHA, USA, UDA, and UTAmodes.
13174         Document MODE_FRACT, MODE_UFRACT, MODE_ACCUM, MODE_UACCUM.
13175         Document GET_MODE_IBIT, and GET_MODE_FBIT.
13176
13177         * machmode.h (VECTOR_MODE_P): Test MODE_VECTOR_FRACT,
13178         MODE_VECTOR_UFRACT, MODE_VECTOR_ACCUM, MODE_VECTOR_UACCUM.
13179         (SCALAR_FRACT_MODE_P, SCALAR_UFRACT_MODE_P, ALL_SCALAR_FRACT_MODE_P,
13180         SCALAR_ACCUM_MODE_P, SCALAR_UACCUM_MODE_P, ALL_SCALAR_ACCUM_MODE_P,
13181         SIGNED_SCALAR_FIXED_POINT_MODE_P, UNSIGNED_SCALAR_FIXED_POINT_MODE_P,
13182         ALL_SCALAR_FIXED_POINT_MODE_P, FRACT_MODE_P, UFRACT_MODE_P,
13183         ALL_FRACT_MODE_P, ACCUM_MODE_P, UACCUM_MODE_P, ALL_ACCUM_MODE_P,
13184         SIGNED_FIXED_POINT_MODE_P, UNSIGNED_FIXED_POINT_MODE_P,
13185         ALL_FIXED_POINT_MODE_P): New define.
13186         (CLASS_HAS_WIDER_MODES_P): Test MODE_FRACT, MODE_UFRACT, MODE_ACCUM,
13187         MODE_UACCUM.
13188         (GET_MODE_IBIT, GET_MODE_FBIT): New define.
13189
13190         * mode-classes.def (MODE_FRACT, MODE_UFRACT, MODE_ACCUM, MODE_UACCUM,
13191         MODE_VECTOR_FRACT, MODE_VECTOR_UFRACT, MODE_VECTOR_ACCUM,
13192         MODE_VECTOR_UACCUM): New mode classes.
13193
13194         * machmode.def: Document FRACT_MODE, UFRACT_MODE, ACCUM_MODE,
13195         UACCUM_MODE, ADJUST_IBIT, and ADJUST_FBIT.
13196         Add QQ, HQ, SQ, DQ, TQ, UQQ, UHQ, USQ, UDQ, UTQ, HA, SA, DA, TA, UHA,
13197         USA, UDA, and UTA.
13198
13199         * genmodes.c (struct mode_data): Add ibit and fbit fields.
13200         (blank_mode): Initialize ibit and fbit.
13201         (adj_ibit, adj_fbit): New to adjust ibit and fbit.
13202         (vector_class): Handle MODE_FRACT, MODE_UFRACT, MODE_ACCUM,
13203         MODE_UACCUM.
13204         (new_adjust): Change required_class to required_class_from and
13205         required_class_to for testing within a range.
13206         (complete_mode): Handle MODE_FRACT, MODE_UFRACT, MODE_ACCUM,
13207         MODE_UACCUM, MODE_VECTOR_FRACT, MODE_VECTOR_UFRACT, MODE_VECTOR_ACCUM,
13208         MODE_VECTOR_UACCUM.
13209         (FRACT_MODE, UFRACT_MODE, ACCUM_MODE, UACCUM_MODE): New define.
13210         (make_fixed_point_mode): New.
13211         (_ADD_ADJUST): Change C to C1 and C2.
13212         (ADJUST_BYTESIZE, ADJUST_ALIGNMENT, ADJUST_FLOAT_FORMAT): Change to
13213         use a range for machine classes.
13214         (ADJUST_IBIT, ADJUST_FBIT): New.
13215         (emit_insn_modes_h): Output defines of CONST_MODE_IBIT and
13216         CONST_MODE_FBIT.
13217         (emit_mode_adjustments): Handle MODE_VECTOR_FRACT, MODE_VECTOR_UFRACT,
13218         MODE_VECTOR_ACCUM, MODE_VECTOR_UACCUM.
13219         Emit adjustment for ibit and fbit.
13220         (emit_mode_ibit, emit_mode_fbit): New.
13221         (emit_insn_modes_c): Add emit_mode_ibit and emit_mode_fbit.
13222
13223 2007-06-25  Nathan Froyd  <froydnj@codesourcery.com>
13224
13225         * config/rs6000/spe.md (*frob_ti_tf_2): Specify an input_operand
13226         as the source of the set.
13227
13228 2007-06-25  Roman Zippel <zippel@linux-m68k.org>
13229
13230         * config/m68k/m68k.h (DATA_REGNO_P, ADDRESS_REGNO_P, INT_REGNO_P,
13231         FP_REGNO_P): Use IN_RANGE.
13232         (REGNO_OK_FOR_DATA_P, REGNO_OK_FOR_FP_P): Remove.
13233         (REGNO_OK_FOR_INDEX_NONSTRICT_P, REGNO_OK_FOR_BASE_NONSTRICT_P): New.
13234         (DATA_REG_P): Use DATA_REGNO_P.
13235         (FP_REG_P): Use FP_REGNO_P.
13236         (ADDRESS_REG_P): Use ADDRESS_REGNO_P.
13237         * config/m68k/m68k.c (m68k_legitimate_base_reg_p): Use
13238         REGNO_OK_FOR_INDEX_NONSTRICT_P, REGNO_OK_FOR_BASE_NONSTRICT_P.
13239
13240 2007-06-24  Jan Hubicka  <jh@suse.cz>
13241
13242         PR middle-end/30563
13243         * cgraphunit.c (cgraph_analyze_function): Fix ordering problem.
13244
13245 2007-06-24  Sebastian Pop  <sebpop@gmail.com>
13246
13247         PR middle-end/32461
13248         * fold-const.c (fold_binary): Strip nops of operand 0
13249         of BIT_NOT_EXPR before calling operand_equal_p.
13250         * testsuite/gcc.dg/tree-ssa/pr32461-1.c: New.
13251         * testsuite/gcc.dg/tree-ssa/pr32461-2.c: New.
13252
13253 2007-06-23  Mark Mitchell  <mark@codesourcery.com>
13254
13255         * doc/extend.texi: Document that dllimport and dllexport imply
13256         default visibility.
13257         * tree.c (handle_dll_attribute): Set DECL_VISIBILITY on the
13258         imported or exported declaration, including type declarations.
13259         * c-common.c (handle_visibility_attribute): Check for conflicts
13260         with dllimport/dllexport.
13261         (c_determine_visibility): Handle dllimport/dllexport as an
13262         explicit visibility atttribute.
13263
13264 2007-06-23  Richard Guenther  <rguenther@suse.de>
13265
13266         PR tree-optimization/16876
13267         PR middle-end/29478
13268         * tree.h (CALL_CANNOT_INLINE_P): New macro to access static_flag
13269         for CALL_EXPRs.
13270         * tree-inline.c (initialize_inlined_parameters): Do not call
13271         lang_hooks.tree_inlining.convert_parm_for_inlining.
13272         * cgraphbuild.c (initialize_inline_failed): Set inline failed
13273         reason for mismatched types.
13274         * gimplify.c (gimplify_call_expr): Verify the call expression
13275         arguments match the called function type signature.  Otherwise
13276         mark the call expression to be not considered for inlining
13277         using CALL_CANNOT_INLINE_P flag.
13278         * ipa-inline.c (cgraph_mark_inline): Honor CALL_CANNOT_INLINE_P on the
13279         edges call expression.
13280         (cgraph_decide_inlining_of_small_function): Likewise.
13281         (cgraph_decide_inlining): Likewise.
13282         * c-objc-common.h (LANG_HOOKS_TREE_INLINING_CONVERT_PARM_FOR_INLINING):
13283         Remove define.
13284         * c-tree.h (c_convert_parm_for_inlining): Remove declaration.
13285         * c-typeck.c (c_convert_parm_for_inlining): Remove.
13286         * langhooks-def.h (lhd_tree_inlining_convert_parm_for_inlining):
13287         Remove declaration.
13288         (LANG_HOOKS_TREE_INLINING_CONVERT_PARM_FOR_INLINING): Remove define.
13289         * langhooks.c (lhd_tree_inlining_convert_parm_for_inlining):
13290         Remove.
13291         * langhooks.h (struct lang_hooks_for_tree_inlining): Remove
13292         convert_parm_for_inlining member.
13293
13294 2007-06-23  Richard Earnshaw  <rearnsha@arm.com>
13295
13296         PR target/31152
13297         * arm.md (negscc): Match the correct operand for optimized LT0 test.
13298         Remove optimization for GT.
13299
13300 2007-06-23  Kenneth Zadeck <zadeck@naturalbridge.com>
13301
13302         PR middle-end/32437
13303         * dce.c (deletable_insn_p): Add extra parameter and recurse if insn
13304         is a PARALLEL.
13305         (prescan_insns_for_dce): Add extra parameter.
13306         
13307 2007-06-23  Jan Hubicka  <jh@suse.cz>
13308
13309         PR middle-end/31541
13310         * gimplify.c (mark_addressable): New function.
13311         (gimplify_modify_expr_rhs, gimplify_addr_expr, gimplify_expr): Use it.
13312
13313 2007-06-22  Uros Bizjak  <ubizjak@gmail.com>
13314
13315         PR middle-end/32374
13316         * expr.c (store_constructor): Do not clobber non-zeroed memory. 
13317
13318 2007-06-22  Uros Bizjak  <ubizjak@gmail.com>
13319
13320         PR target/32413
13321         * config/i386/i386.c (ix86_register_move_cost): Rise the cost of
13322         moves between MMX/SSE registers to at least 8 units to prevent
13323         ICE caused by non-tieable SI/HI/QImodes in SSE registers. 
13324
13325 2007-06-22  Uros Bizjak  <ubizjak@gmail.com>
13326
13327         * config/i386/i386.c (override_options): Correct x86_sahf
13328         setting condition.
13329
13330 2007-06-21  David Daney  <ddaney@avtrex.com>
13331
13332         PR target/32406
13333         * config/mips/mips.md (define_constants): Rename UNSPEC_EH_RECEIVER
13334         to UNSPEC_NONLOCAL_GOTO_RECEIVER globally.
13335         (exception_receiver): Renamed to ...
13336         (nonlocal_goto_receiver): ... this.
13337
13338 2007-06-22  Roman Zippel <zippel@linux-m68k.org>
13339
13340         * df-scan.c (df_read_modify_subreg_p): Use REGMODE_NATURAL_SIZE.
13341         (df_def_record_1): Set (DF_REF_READ_WRITE | DF_REF_PARTIAL) for
13342         partial register accesses.
13343
13344 2007-06-21  Adam Nemet  <anemet@caviumnetworks.com>
13345
13346         * fold-const.c (debug_fold_checksum): Move it under
13347         ENABLE_FOLD_CHECKING.
13348
13349 2007-06-21  Sebastian Pop  <sebpop@gmail.com>
13350
13351         PR middle-end/20623
13352         * tree.h (debug_fold_checksum): Declared.
13353         * fold-const.c (build_fold_addr_expr_with_type_1): New.
13354         (build_fold_addr_expr_with_type, build_fold_addr_expr): Use 
13355         build_fold_addr_expr_with_type_1.
13356         (fold_addr_expr, debug_fold_checksum): New.
13357         (fold_checksum_tree): Don't fold TREE_CHAIN of an SSA_NAME.
13358         (fold_unary, fold_comparison, split_address_to_core_and_offset):
13359         Use fold_addr_expr.
13360         
13361 2007-06-21  Sebastian Pop  <sebpop@gmail.com>
13362
13363         PR tree-optimization/19590
13364         * tree-vrp.c (adjust_range_with_scev): Set the range when the result
13365         of scev is a constant.
13366
13367 2007-06-21  Kenneth Zadeck <zadeck@naturalbridge.com>
13368
13369         * df-problems.c (df_note_bb_compute): Made computation of live
13370         info consistent with df_lr.
13371
13372 2007-06-21  Richard Guenther  <rguenther@suse.de>
13373
13374         PR tree-optimization/32453
13375         * tree-vrp.c (extract_range_from_assert): Build POINTER_PLUS_EXPR
13376         for pointer anti-range.
13377
13378 2007-06-21  H.J. Lu  <hongjiu.lu@intel.com>
13379
13380         * config/i386/i386.c (processor_target_table): Increase maximum
13381         skip from 7 byte to 10 byte for Pentium Pro, Core 2 Duo and
13382         default 64bit.
13383
13384         * config/i386/linux.h (ASM_OUTPUT_MAX_SKIP_ALIGN): Ensure 8
13385         byte alignment if > 8 byte alignment is preferred.
13386         * config/i386/x86-64.h (ASM_OUTPUT_MAX_SKIP_ALIGN): Likewise.
13387
13388 2007-06-21  Jakub Jelinek  <jakub@redhat.com>
13389
13390         PR tree-optimization/31866
13391         * tree-ssa-coalesce.c (create_outofssa_var_map): Do nothing
13392         if ASM_EXPR's input is not a SSA_NAME.
13393
13394         PR middle-end/32362
13395         * omp-low.c (lookup_decl_in_outer_ctx): Don't ICE if t is NULL,
13396         but decl is a global var, instead return decl.
13397         * gimplify.c (gimplify_adjust_omp_clauses_1): Add shared clauses
13398         even for is_global_var decls, if they are private in some outer
13399         context.
13400
13401 2007-06-21  Richard Guenther  <rguenther@suse.de>
13402
13403         PR tree-optimization/32451
13404         * tree-ssa-threadupdate.c (thread_single_edge): Fixup edge flags.
13405
13406 2007-06-21  Christian Bruel  <christian.bruel@st.com>
13407
13408         * config/sh/sh-protos.h (sh_loads_bankedreg_p): Declare.
13409         * config/sh/sh.c (sh_loads_bankedreg_p): New function.
13410         (push_regs): Changed saving order or banked registers.
13411         (sh_expand_epilogue): Likewise.
13412         * config/sh/sh.h (BANKED_REGISTER_P): New macro.
13413         (FIRST_BANKED_REG): Likewise.
13414         (LAST_BANKED_REG): Likewise.
13415         * config/sh/sh.md (banked) New attribute.
13416         (in_delay_slot): Check banked attribute.
13417         
13418 2007-06-20  Sebastian Pop  <sebpop@gmail.com>
13419
13420         PR tree-optimization/32075
13421         * tree-data-ref.c (subscript_dependence_tester_1, 
13422         analyze_miv_subscript, analyze_overlapping_iterations,
13423         add_distance_for_zero_overlaps, build_classic_dist_vector,
13424         subscript_dependence_tester_1, analyze_overlapping_iterations,
13425         subscript_dependence_tester, access_functions_are_affine_or_constant_p,
13426         compute_affine_dependence, compute_all_dependences): Pass loop_nest 
13427         to evolution_function_is_affine_multivariate_p.
13428
13429 2007-06-20  Eric Botcazou  <ebotcazou@libertysurf.fr>
13430
13431         * df-scan.c (df_get_call_refs): Be prepared for MEMs inside CLOBBERs.
13432
13433 2007-06-20  Rask Ingemann Lambertsen  <rask@sygehus.dk>
13434
13435         PR target/32335
13436         * config/m32c/m32c.c (m32c_emit_epilogue): Use new HImode epilogue
13437         for TARGET_A16.
13438         * config/m32c/prologue.md (epilogue_exitd_16): New.
13439         (epilogue_reit_16): New.
13440         (epilogue_exitd): Rename to epilogue_exitd_24.
13441         (epilogue_reit): Rename to epilogue_reit_24.
13442
13443 2007-06-20  Seongbae Park  <seongbae.park@gmail.com>
13444             Maxim Kuvyrkov  <mkuvyrkov@ispras.ru>
13445
13446         * dbgcnt.def (global_alloc_at_func, global_alloc_at_reg):
13447         New counters.
13448         * haifa-sched.c (queue_to_ready): Don't requeue next insn
13449         if dbg_cnt (sched_insn) reaches the limit.
13450         (choose_ready): New parameter INSN_PTR and new return value.
13451         (schedule_block): Handle dbg_cnt (sched_insn). Handle
13452         the new return value from choose_ready.
13453         * global.c (global_aloc): New dbgcnt global_alloc_at_reg.
13454         (rest_of_handle_global_alloc): New global_alloc_at_func.
13455
13456 2007-06-20  Adam Nemet  <anemet@caviumnetworks.com>
13457
13458         PR tree-optimization/25737
13459         * tree.h (struct tree_struct_field_tag): Add new field alias_set.
13460         (SFT_NONADDRESSABLE_P, SFT_ALIAS_SET): New macros.
13461         * tree-flow.h (struct fieldoff): Add new field alias_set.
13462         * tree-ssa-structalias.c (push_fields_onto_fieldstack): Add new
13463         argument addressable_type.  Set alias_set of fieldoff.
13464         * tree-ssa-alias.c (create_sft): Add new argument alias_set.
13465         (create_overlap_variables_for): Pass alias_set from fieldoff to
13466         create_sft.
13467         * alias.c (get_alias_set): Use alias_set from SFT if set.
13468
13469 2007-06-20  Hui-May Chang  <hm.chang@apple.com>
13470
13471         * config/i386/darwin.h (ASM_OUTPUT_COMMON): Print the size
13472         of a variable as an unsigned HOST_WIDE_INT integer.
13473
13474 2007-06-20  Zdenek Dvorak  <dvorakz@suse.cz>
13475
13476         PR rtl-optimization/32405
13477         * loop-iv.c (iv_get_reaching_def): Fail for partial defs.
13478
13479 2007-06-20  Jakub Jelinek  <jakub@redhat.com>
13480
13481         * Makefile.in (omega.o): Depend on $(DIAGNOSTIC_H).
13482
13483         PR middle-end/31959
13484         * builtins.c: Include diagnostic.h.
13485         (expand_builtin_expect): Make gcc_assert more permissive.
13486         * Makefile.in (builtins.o): Depend on $(DIAGNOSTIC_H).
13487
13488         PR inline-asm/32109
13489         * gimplify.c (gimplify_asm_expr): Issue error if type is addressable
13490         and !allows_mem.
13491
13492         PR middle-end/32285
13493         * calls.c (precompute_arguments): Also precompute CALL_EXPR arguments
13494         if ACCUMULATE_OUTGOING_ARGS.
13495
13496 2007-06-19  Rask Ingemann Lambertsen  <rask@sygehus.dk>
13497
13498         * config/m68hc11/m68hc11.c: Include dataflow header file.
13499         (m68hc11_reorg): Port to dataflow.
13500
13501 2007-06-19  Kenneth Zadeck <zadeck@naturalbridge.com>
13502
13503         * df.h (DF_FIRST_OPTIONAL_PROBLEM): Removed.
13504         (struct df_problem.free_blocks_on_set_blocks): New field.
13505         (struct dataflow.optional_p): New field.
13506         (df_bb_regno_last_use_find, df_insn_regno_def_p): Removed.
13507         (df_live_set_all_dirty): New function.
13508         * df-scan.c (df_scan_alloc): Initialize optional_p.
13509         (problem_SCAN): Initialize free_blocks_on_set_blocks.
13510         * df-core.c (df_set_blocks): Removed use of
13511         DF_FIRST_OPTIONAL_PROBLEM.  Now uses
13512         df_problem.free_blocks_on_set_blocks to determine which blocks are
13513         recycled.
13514         (df_remove_problem): Removed use of DF_FIRST_OPTIONAL_PROBLEM.
13515         (df_finish_pass): Removed use of DF_FIRST_OPTIONAL_PROBLEM.  Now
13516         uses dataflow.optional_p to determine if problem should be
13517         deleted.
13518         (rest_of_handle_df_initialize): Only start live problem if 
13519         -02 or above.
13520         (df_bb_regno_last_use_find, df_insn_regno_def_p): Removed.
13521         * df-problems.c (df_ru_alloc, df_rd_alloc, df_lr_alloc,
13522         df_live_alloc, df_urec_alloc, df_note_alloc): set optional_p.
13523         (problem_RU, problem_RD, problem_LR, problem_UREC, problem_CHAIN,
13524         problem_NOTE): Initialize free_blocks_on_set_blocks.
13525         (df_lr_bb_local_compute): Recompute luids if df_live problem is
13526         not active.
13527         (df_live_set_all_dirty, df_note_alloc): New function.
13528         * regrename.c (merge_overlapping_regs): Change DF_LIVE_* to
13529         df_get_live_*.
13530         * sched_ebb.c (compute_jump_reg_dependencies): Ditto.
13531         * postreload.c (reload_combine): Ditto.
13532         * cse.c (cse_extended_basic_block): Ditto.
13533         * regmove.c (mark_flags_life_zones): Ditto.
13534         * rtlfactoring.c (split_blocks_after_seqs, split_pattern_seq,
13535         erase_matching_seqs): Ditto.
13536         * bt-load.c (compute_defs_uses_and_gen): Ditto.
13537         * integrate (allocate_initial_values): Ditto.
13538         * combine.c (reg_dead_at_p): Ditto.
13539         * resource.c (mark_target_live_regs): Ditto.
13540         * sched-rgn.c (check_live_1, update_live_1): Ditto.
13541         * config/sh/sh.c (find_r0_life_regions): Ditto.
13542         * global.c (rest_of_handle_global_alloc): Only add back df_live
13543         for -O > 1.
13544         * local-alloc.c (rest_of_handle_local_alloc): Only remove
13545         df_live for -O > 1.
13546         * ifcvt.c (dead_or_predicable): Change DF_LIVE_* to
13547         df_get_live_*.
13548         (if_convert): Make sure df_live is there at -O == 1.
13549         (pass_if_after_combine): Cleanup flags.
13550         * init-regs.c (initialize_uninitialized_regs): Make sure df_live
13551         is there at -O == 1.
13552         
13553 2007-06-19  Seongbae Park  <seongbae.park@gmail.com>
13554
13555         * config/arm/arm.c (arm_get_frame_offsets): Set
13556         offsets->locals_base to avoid negative stack size.
13557         (thumb1_expand_prologue): Assert on negative stack size.
13558
13559 2007-06-19  Sebastian Pop  <sebpop@gmail.com>
13560
13561         PR tree-optimization/32367
13562         * tree-chrec.h (build_polynomial_chrec): Verify that the left hand side 
13563         of the chrec has no evolution in that loop.
13564         * testsuite/gcc.dg/tree-ssa/pr32367.c: New.
13565
13566 2007-06-19  Bob Wilson  <bob.wilson@acm.org>
13567
13568         * config/xtensa/xtensa.c: Include "df.h".
13569         (xtensa_builtin_saveregs): Use adjust_address instead of
13570         change_address.
13571         (xtensa_va_start): Invoke make_tree with sizetype for
13572         expand_builtin_saveregs and then convert the result to a pointer.
13573         Use POINTER_PLUS_EXPR.  Use size_int instead of build_int_cst.
13574         (xtensa_gimplify_va_arg_expr): Use size_int instead of build_int_cst.
13575         Subtract argument size from index value as integers and then use
13576         POINTER_PLUS_EXPR to add the result to the array address.
13577         
13578 2007-06-19  Rask Ingemann Lambertsen  <rask@sygehus.dk>
13579
13580         PR target/32335
13581         * config/m32c/m32c.c: Include dataflow header file.
13582         (m32c_emit_prologue): Adjust for prologue insn change.
13583         * config/m32c/prologue.md (prologue_enter_16): Only modify SP_REGNO
13584         once inside a PARALLEL. Assume frame size passed in operand 0
13585         includes space to save the fb register.
13586         (prologue_enter_24): Likewise.
13587         (epilogue_exitd): Only modify SP_REGNO once inside a PARALLEL.
13588
13589 2007-06-19  David Daney  <ddaney@avtrex.com
13590
13591         PR target/32313
13592         * config/mips/mips.md (cprestore): Mark $gp as used.
13593
13594 2007-06-19  Rask Ingemann Lambertsen  <rask@sygehus.dk>
13595
13596         PR target/32369
13597         * config/frv/frv.c (frv_ifcvt_modify_tests): Dataflow merge fix.
13598         (frv_ifcvt_modify_insn): Likewise.
13599
13600 2007-06-19  Richard Guenther  <rguenther@suse.de>
13601
13602         * tree-ssa-structalias.c (handle_ptr_arith): Make sure to
13603         only handle positive offsets that fit in a HOST_WIDE_INT.
13604
13605 2007-06-19  Uros Bizjak  <ubizjak@gmail.com>
13606
13607         * config/i386/i386.c (ix86_emit_swsqrtsf): Filter out infinity
13608         result of rsqrt insn for zero input argument to avoid NaN.
13609
13610 2007-06-19  Richard Guenther  <rguenther@suse.de>
13611
13612         PR middle-end/31950
13613         * tree-ssa-alias-warnings.c (ffan_walker): Punt on MTAGs.
13614
13615 2007-06-19  Jakub Jelinek  <jakub@redhat.com>
13616
13617         PR tree-optimization/32353
13618         * tree-ssa-structalias.c (set_uids_in_ptset): Also handle RESULT_DECL.
13619
13620 2007-06-19  Nick Clifton  <nickc@redhat.com>
13621
13622         * config/m32r/linux.h (LIB_SPEC): Always imply -lpthread for -pthread.
13623
13624 2007-06-18  Uros Bizjak  <ubizjak@gmail.com>
13625
13626         PR target/32389
13627         * config/i386/i386.h (enum ix86_stack_slot): Add SLOT_VIRTUAL.
13628         * config/i386/i386.c (assign_386_stack_local): Assert that
13629         SLOT_VIRTUAL is valid only before virtual regs are instantiated.
13630         (ix86_expand_builtin) [IX86_BUILTIN_LDMXCSR, IX86_BUILTIN_STMXCSR]:
13631         Use SLOT_VIRTUAL stack slot instead of SLOT_TEMP.
13632         * config/i386/i386.md (truncdfsf2, truncxf<mode>2): Ditto.
13633
13634 2007-06-18  Steve Ellcey  <sje@cup.hp.com>
13635
13636         * config/ia64/ia64.h (LIBGCC2_TF_CEXT): New.
13637
13638 2007-06-18  Seongbae Park  <seongbae.park@gmail.com>
13639
13640         PR rtl-optimization/32321
13641         * gcse.c (replace_store_insn): Update the note before
13642         calling emit_insn_after.
13643
13644 2007-06-18  Kenneth Zadeck <zadeck@naturalbridge.com>
13645
13646         PR middle-end/32355
13647         * gcse (rest_of_handle_gcse): Add call to df_finish_pass after
13648         cse_main.
13649         * df-problems.c (df_note_bb_compute): Fix dumping info.
13650         
13651 2007-06-18  Kazu Hirata  <kazu@codesourcery.com>
13652
13653         * config/m68k/m68k.c (m68k_expand_epilogue): Emit a return
13654         insn with emit_jump_insn.
13655
13656 2007-06-18  Uros Bizjak  <ubizjak@gmail.com>
13657
13658         PR tree-optimization/32383
13659         * targhooks.c (default_builtin_reciprocal): Add new bool argument.
13660         * targhooks.h (default_builtin_reciprocal): Update prototype.
13661         * target.h (struct gcc_target): Update builtin_reciprocal.
13662         * doc/tm.texi (TARGET_BUILTIN_RECIPROCAL): Update description.
13663         * tree-ssa-math-opts (execute_cse_reciprocals): Skip statements
13664         where arg1 is not SSA_NAME.  Pass true to targetm.builtin_reciprocal
13665         when fndecl is in BUILT_IN_MD class.
13666         (execute_convert_to_rsqrt): Ditto.
13667
13668         * config/i386/i386.c (ix86_builtin_reciprocal): Update for new bool
13669         argument.  Convert IX86_BUILTIN_SQRTPS code only when md_fn is true.
13670         Convert BUILT_IN_SQRTF code only  when md_fn is false.
13671
13672 2007-06-18  Kaz Kojima  <kkojima@gcc.gnu.org>
13673
13674         * bt-load.c (move_btr_def): Fix the order of arguments
13675         to validate_replace_rtx.
13676
13677 2007-06-18  Nathan Sidwell  <nathan@codesourcery.com>
13678
13679         * config/m68k/m68k-devices.def: Add 54450..54455.
13680
13681 2007-06-17  Uros Bizjak  <ubizjak@gmail.com>
13682
13683         PR rtl-optimization/32366
13684         * simplify-rtx.c (simplify_unary_operation_1) [FLOAT_TRUNCATE,
13685         FLOAT_EXTEND]: Prevent non-scalar modes from entering
13686         significand_size.
13687
13688 2007-06-17  Kenneth Zadeck <zadeck@naturalbridge.com>
13689
13690         PR middle-end/32349
13691         * modulo-sched (generate_reg_moves): Added rescan parameter and if
13692         this is true, rescan insn being modified.
13693         (sms_schedule): Added rescan parameter.
13694         (rest_of_handle_sms): Moved freeing of dominance info to before
13695         getting out of cfg_layout.
13696         
13697 2007-06-17  Nathan Sidwell  <nathan@codesourcery.com>
13698
13699         * config/m68k/m68k.h (ISA_HAS_FF1, ISA_HAS_MVS_MVZ): New.
13700         * config/m68k/m68k.md: Use ISA_HAS_FF1 and ISA_HAS_MVS_MVZ as
13701         appropriate.
13702
13703         * config/m68k/m68k.c (all_isas): Remove FL_CF_FPU and
13704         FL_CF_EMAC from the entry for isac.
13705
13706         * config/m68k/predicates.md (const_call_operand): Adjust comment.
13707         (const_sibcall_operand): New.
13708         (sibcall_operand): Use it.
13709         * config/m68k/m68k.c (FL_FOR_isa_c): Not ISA_B compatible.
13710         (m68k_isas): ISAC does not imply FPU or EMAC.
13711         (override_options): Add ISA_C logic for symbolic jump & call.
13712
13713 2007-06-17  Eric Botcazou  <ebotcazou@libertysurf.fr>
13714
13715         * config/sparc/sparc.c (sparc_vis_init_builtins): Retrieve the
13716         return mode from the builtin itself.
13717         (sparc_fold_builtin): Fix cast of zero constant.
13718
13719 2007-06-16  Uros Bizjak  <ubizjak@gmail.com>
13720
13721         * targhooks.c (default_builtin_reciprocal): New default target hook.
13722         * targhooks.h (default_builtin_reciprocal): Add prototype.
13723         * hooks.c (hook_tree_tree_bool_null): Remove hook.
13724         * hooks.h (hook_tree_tree_bool_null): Remove prototype.
13725         * target-def.h (TARGET_BUILTIN_RECIPROCAL): Define as
13726         default_builtin_reciprocal.
13727
13728 2007-06-16  Uros Bizjak  <ubizjak@gmail.com>
13729
13730         PR middle-end/31723
13731         * hooks.c (hook_tree_tree_bool_null): New hook.
13732         * hooks.h (hook_tree_tree_bool_null): Add prototype.
13733         * tree-pass.h (pass_convert_to_rsqrt): Declare.
13734         * passes.c (init_optimization_passes): Add pass_convert_to_rsqrt.
13735         * tree-ssa-math-opts.c (execute_cse_reciprocals): Scan for a/func(b)
13736         and convert it to reciprocal a*rfunc(b).
13737         (execute_convert_to_rsqrt): New function.
13738         (gate_convert_to_rsqrt): New function.
13739         (pass_convert_to_rsqrt): New pass definition.
13740         * target.h (struct gcc_target): Add builtin_reciprocal.
13741         * target-def.h (TARGET_BUILTIN_RECIPROCAL): New define.
13742         (TARGET_INITIALIZER): Initialize builtin_reciprocal with
13743         TARGET_BUILTIN_RECIPROCAL.
13744         * doc/tm.texi (TARGET_BUILTIN_RECIPROCAL): Document.
13745
13746         * config/i386/i386.h (TARGET_RECIP): New define.
13747         * config/i386/i386.md (divsf3): Expand by calling ix86_emit_swdivsf
13748         for TARGET_SSE_MATH and TARGET_RECIP when flag_finite_math_only and
13749         flag_unsafe_math_optimizations are set, flag_trapping_math is unset
13750         and not optimizing for size.
13751         (*rcpsf2_sse): New insn pattern.
13752         (*rsqrtsf2_sse): Ditto.
13753         (rsqrtsf2): New expander.  Expand by calling ix86_emit_swsqrtsf
13754         for TARGET_SSE_MATH and TARGET_RECIP when flag_finite_math_only and
13755         flag_unsafe_math_optimizations are set, flag_trapping_math is unset
13756         and not optimizing for size.
13757         (sqrt<mode>2): Expand SFmode operands by calling ix86_emit_swsqrtsf
13758         for TARGET_SSE_MATH and TARGET_RECIP when flag_finite_math_only and
13759         flag_unsafe_math_optimizations are set, flag_trapping_math is unset
13760         and not optimizing for size.
13761         * config/i386/sse.md (divv4sf): Expand by calling ix86_emit_swdivsf
13762         for TARGET_SSE_MATH and TARGET_RECIP when flag_finite_math_only and
13763         flag_unsafe_math_optimizations are set, flag_trapping_math is unset
13764         and not optimizing for size.
13765         (*sse_rsqrtv4sf2): Do not export.
13766         (sqrtv4sf2): Ditto.
13767         (sse_rsqrtv4sf2): New expander.  Expand by calling ix86_emit_swsqrtsf
13768         for TARGET_SSE_MATH and TARGET_RECIP when flag_finite_math_only and
13769         flag_unsafe_math_optimizations are set, flag_trapping_math is unset
13770         and not optimizing for size.
13771         (sqrtv4sf2): Ditto.
13772         * config/i386/i386.opt (mrecip): New option.
13773         * config/i386/i386-protos.h (ix86_emit_swdivsf): Declare.
13774         (ix86_emit_swsqrtsf): Ditto.
13775         * config/i386/i386.c (IX86_BUILTIN_RSQRTF): New constant.
13776         (ix86_init_mmx_sse_builtins): __builtin_ia32_rsqrtf: New
13777         builtin definition.
13778         (ix86_expand_builtin): Expand IX86_BUILTIN_RSQRTF using
13779         ix86_expand_unop1_builtin.
13780         (ix86_emit_swdivsf): New function.
13781         (ix86_emit_swsqrtsf): Ditto.
13782         (ix86_builtin_reciprocal): New function.
13783         (TARGET_BUILTIN_RECIPROCAL): Use it.
13784         (ix86_vectorize_builtin_conversion): Rename from
13785         ix86_builtin_conversion.
13786         (TARGET_VECTORIZE_BUILTIN_CONVERSION): Use renamed function.
13787         * doc/invoke.texi (Machine Dependent Options): Add -mrecip to
13788         "i386 and x86_64 Options" section.
13789         (Intel 386 and AMD x86_64 Options): Document -mrecip.
13790
13791 2007-06-15  Andrew Pinski <andrew_pinski@playstation.sony.com>
13792             Zdenek Dvorak <dvorakz@suse.cz>
13793             Richard Guenther  <rguenther@suse.de>
13794             Kaz Kojima  <kkojima@gcc.gnu.org>
13795
13796         * tree-vrp.c (compare_values_warnv): Convert val2 to
13797         the type of val1.
13798         (extract_range_from_assert): Create
13799         POINTER_PLUS_EXPR for pointer types.
13800         (extract_range_from_binary_expr): Handle
13801         only POINTER_PLUS_EXPR, MIN_EXPR, and MAX_EXPR
13802         for pointer types.
13803         * doc/c-tree.texi (POINTER_PLUS_EXPR): Document.
13804         * tree-ssa-loop-niter.c (split_to_var_and_offset): Handle
13805         POINTER_PLUS_EXPR as PLUS_EXPR.
13806         (number_of_iterations_lt_to_ne):
13807         For pointer types, use sizetype when
13808         creating MINUS_EXPR/PLUS_EXPRs.
13809         (assert_loop_rolls_lt): For pointer types, use sizetype when
13810         creating MINUS_EXPR/PLUS_EXPRs.
13811         (number_of_iterations_le): Likewise.
13812         (expand_simple_operations): POINTER_PLUS_EXPR are simple also.
13813         (derive_constant_upper_bound): Handle POINTER_PLUS_EXPR just
13814         like PLUS_EXPR and MINUS_EXPR.
13815         * tree-pretty-print.c (dump_generic_node): Handle
13816         POINTER_PLUS_EXPR.
13817         (op_prio): Likewise.
13818         (op_symbol_1): Likewise.
13819         * optabs.c (optab_for_tree_code): Likewise.
13820         * tree-ssa-loop-manip.c (create_iv): Handle pointer base
13821         specially.
13822         * tree-tailcall.c (process_assignment): Mention
13823         POINTER_PLUS_EXPR in a TODO comment.
13824         * tree.c (build2_stat): Assert when trying to use PLUS_EXPR or 
13825         MINUS_EXPR with a pointer. Also assert for POINTER_PLUS_EXPR
13826         not used with a pointer and an integer type.
13827         * tree-scalar-evolution.c (add_to_evolution_1): Convert the
13828         increment using chrec_convert_rhs instead of chrec_convert.
13829         (follow_ssa_edge_in_rhs): Handle POINTER_PLUS_EXPR like
13830         PLUS_EXPR except for the right hand side's type will be
13831         sizetype.
13832         (interpret_rhs_modify_stmt): Handle POINTER_PLUS_EXPR.
13833         (fold_used_pointer_cast): Kill.
13834         (pointer_offset_p): Kill.
13835         (fold_used_pointer): Kill.
13836         (pointer_used_p): Kill.
13837         (analyze_scalar_evolution_1 <case GIMPLE_MODIFY_STMT>): Don't
13838         call fold_used_pointer.
13839         (instantiate_parameters_1): Convert the increment
13840         using chrec_convert_rhs instead of chrec_convert.
13841         Handle POINTER_PLUS_EXPR as PLUS_EXPR.
13842         * builtins.c (get_pointer_alignment): Handle POINTER_PLUS_EXPR
13843         instead of PLUS_EXPR.
13844         (expand_builtin_strcat): Create a POINTER_PLUS_EXPR instead of
13845         PLUS_EXPR for pointers.
13846         (std_gimplify_va_arg_expr): Likewise.
13847         (fold_builtin_memory_op): Likewise.
13848         (fold_builtin_strstr): Likewise.
13849         (fold_builtin_strchr): Likewise.
13850         (fold_builtin_strrchr): Likewise.
13851         (fold_builtin_strpbrk): Likewise.
13852         (expand_builtin_memory_chk): Likewise.
13853         (fold_builtin_memory_chk): Likewise.
13854         (std_expand_builtin_va_start): Use
13855         sizetype for the call to make_tree and then convert
13856         to the pointer type.
13857         (fold_builtin_memchr): Use POINTER_PLUS_EXPR
13858         instead of PLUS_EXPR for adding to a pointer.
13859         (std_gimplify_va_arg_expr): Use fold_build2 for
13860         the creating of POINTER_PLUS_EXPR.  For the BIT_AND_EXPR, cast
13861         the operands to sizetype first and then cast the BIT_AND_EXPR
13862         back to the pointer type.
13863         * fold-const.c (build_range_check): Handle pointer types
13864         specially.
13865         (extract_array_ref): Look for POINTER_PLUS_EXPR instead
13866         of PLUS_EXPR's. Make sure the offset is converted to
13867         sizetype.
13868         (try_move_mult_to_index): Strip the NOPs from the offset.
13869         Remove code argument and replace all uses with PLUS_EXPR.
13870         (fold_to_nonsharp_ineq_using_bound): Handle pointer types
13871         specially. Don't use a pointer type for MINUS_EXPR.
13872         (fold_unary): Handle for (T1)(X op Y),
13873         only p+ as that is the only as that can be handled for
13874         binary operators now.
13875         (fold_binary <case POINTER_PLUS_EXPR>): Add folding of
13876         POINTER_PLUS_EXPR.
13877         <case PLUS_EXPR>: Add folding of PTR+INT into
13878         PTR p+ INT.
13879         Don't call try_move_mult_to_index.
13880         <case MINUS_EXPR>: Fold (PTR0 p+ A) - (PTR1 p+ B)
13881         into (PTR0 - PTR1) + (A - B). Fold (PTR0 p+ A) - PTR1 into
13882         (PTR0 - PTR1) + A iff (PTR0 - PTR1) simplifies.
13883         Don't call try_move_mult_to_index.
13884         (tree_expr_nonnegative_warnv_p): Handle POINTER_PLUS_EXPR.
13885         (tree_expr_nonzero_p): Likewise.
13886         (fold_indirect_ref_1): Look at POINTER_PLUS_EXPR instead
13887         of PLUS_EXPR for the complex expression folding.
13888         * tree-chrec.c (chrec_fold_plus_poly_poly): If the
13889         first chrec is a pointer type, then the second should
13890         be sizetype and not the first's type.
13891         For POINTER_PLUS_EXPR, use a different right hand side type.
13892         Handle POINTER_PLUS_EXPR like PLUS_EXPR.
13893         (chrec_fold_plus_1): For POINTER_PLUS_EXPR, use a
13894         different right hand side type.
13895         Handle POINTER_PLUS_EXPR like PLUS_EXPR.
13896         (chrec_fold_plus): For pointer types, use POINTER_PLUS_EXPR
13897         instead of PLUS_EXPR.
13898         When either operand is zero, convert the other operand.
13899         (chrec_apply): Use chrec_convert_rhs
13900         on the argument x instead of chrec_convert.
13901         (reset_evolution_in_loop): For pointer types, the new_evol
13902         should be sizetype.
13903         (convert_affine_scev): For POINTER_PLUS_EXPR, use a
13904         different right hand side type.
13905         Handle POINTER_PLUS_EXPR like PLUS_EXPR.
13906         (chrec_convert_rhs): New function.
13907         (chrec_convert_aggressive): For POINTER_PLUS_EXPR, use a
13908         different right hand side type.
13909         Handle POINTER_PLUS_EXPR like PLUS_EXPR.
13910         * tree-chrec.h (chrec_convert_rhs): New prototype.
13911         (build_polynomial_chrec): For pointer types, the right hand
13912         * tree-ssa-ccp.c (maybe_fold_stmt_indirect): Look for
13913         POINTER_PLUS_EXPR instead of PLUS_EXPR's.
13914         Remove subtraction case as it is always addition now.
13915         Make sure the offset is converted to sizetype.
13916         (fold_stmt_r): Don't handle PLUS_EXPR/MINUS_EXPR specially.
13917         Handle POINTER_PLUS_EXPR like PLUS_EXPR was handled before.
13918         * tree-ssa-loop-ivopts.c (determine_base_object): Abort for 
13919         PLUS_EXPR in pointer type.
13920         Handle POINTER_PLUS_EXPR.
13921         (tree_to_aff_combination): Likewise.
13922         (force_expr_to_var_cost): Likewise.
13923         (force_expr_to_var_cost): Likewise. Create a POINTER_PLUS_EXPR
13924         instead of PLUS_EXPR for pointers.
13925         * c-format.c (check_format_arg): Handle POINTER_PLUS_EXPR
13926         instead of PLUS_EXPR of pointer types.
13927         * tree-stdarg.c (va_list_counter_bump): Handle POINTER_PLUS_EXPR
13928         as PLUS_EXPR.
13929         (check_va_list_escapes): Likewise.
13930         (check_all_va_list_escapes): Likewise.
13931         * dwarf2out.c (loc_descriptor_from_tree_1):
13932         Handle POINT_PLUS_EXPR as a PLUS_EXPR.
13933         * expr.c (expand_expr_real_1): Handle POINTER_PLUS_EXPR.
13934         (string_constant): Likewise.
13935         * tree-ssa-address.c (tree_mem_ref_addr): When adding
13936         the offset to the base, use POINTER_PLUS_EXPR.
13937         (add_to_parts): Convert the index to sizetype.
13938         (create_mem_ref): Create A POINTER_PLUS_EXPR for the one case.
13939         * matrix-reorg.c (collect_data_for_malloc_call): Stmt
13940         will now only be either INDIRECT_REF and POINTER_PLUS_EXPR.
13941         Offset only holds something for PLUS_EXPR.
13942         (ssa_accessed_in_tree): Handle POINTER_PLUS_EXPR just as
13943         a PLUS_EXPR.
13944         (analyze_transpose): POINTER_PLUS_EXPR will only show up now
13945         and not PLUS_EXPR.
13946         (analyze_accesses_for_modify_stmt): Likewise.
13947         Remove comment about the type being integral type as it is
13948         wrong now.
13949         (can_calculate_expr_before_stmt): Handle POINTER_PLUS_EXPR as
13950         PLUS_EXPR.
13951         (transform_access_sites): POINTER_PLUS_EXPR will only show up now
13952         and not PLUS_EXPR.
13953         Correct the type which the artimentic is done in (is now
13954         sizetype).
13955         Reindent one loop.
13956         * tree-data-ref.c (split_constant_offset): Handle
13957         POINTER_PLUS_EXPR
13958         * tree-affine.c (tree_to_aff_combination): Likewise.
13959         * c-typeck.c (build_unary_op): For pointers create the increment
13960         as a sizetype. Create a POINTER_PLUS_EXPR instead of PLUS_EXPR
13961         for pointers.
13962         * gimplify.c (gimplify_self_mod_expr): Create a
13963         POINTER_PLUS_EXPR instead of PLUS_EXPR for pointers.
13964         (gimplify_omp_atomic_fetch_op): Handle POINTER_PLUS_EXPR.
13965         * tree.def (POINTER_PLUS_EXPR): New tree code.
13966         * tree-predcom.c (ref_at_iteration): If we have a pointer
13967         type do the multiplication in sizetype.
13968         * tree-mudflap.c (mf_xform_derefs_1): Create a
13969         POINTER_PLUS_EXPR instead of PLUS_EXPR for pointers.
13970         * tree-ssa-forwprop.c 
13971         (forward_propagate_addr_into_variable_array_index):
13972         Don't expect there to be a cast for the index as that
13973         does not exist anymore.
13974         (forward_propagate_addr_expr_1): Check for POINTER_PLUS_EXPR
13975         instead of PLUS_EXPR.
13976         Don't check for the first operand of the POINTER_PLUS_EXPR
13977         was the index as it cannot be.
13978         Call forward_propagate_addr_into_variable_array_index with
13979         the SSA_NAME instead of the statement.
13980         * varasm.c (const_hash_1): Handle POINTER_PLUS_EXPR.
13981         (compare_constant): Likewise.
13982         (copy_constant): Likewise.
13983         (compute_reloc_for_constant): Likewise.
13984         (output_addressed_constants): Likewise.
13985         (initializer_constant_valid_p): Likewise.
13986         * tree-ssa.c (tree_ssa_useless_type_conversion_1):
13987         Convert the MIN/MAX of the inner type to the outer
13988         type before comparing them.
13989         * tree-ssa-loop-prefetch.c (idx_analyze_ref): Handle
13990         POINTER_PLUS_EXPR instead of PLUS_EXPR.
13991         (issue_prefetch_ref): Create a POINTER_PLUS_EXPR instead
13992         of PLUS_EXPR for pointers.
13993         * tree-inline.c (estimate_num_insns_1): Handle
13994         POINTER_PLUS_EXPR.
13995         * tree-vect-transform.c (vect_create_addr_base_for_vector_ref): 
13996         Create a POINTER_PLUS_EXPR instead of PLUS_EXPR for pointers.
13997         (bump_vector_ptr): Create a POINTER_PLUS_EXPR
13998         instead of PLUS_EXPR for the pointer increment statement.
13999         (vect_update_ivs_after_vectorizer): For pointer types, create
14000         POINTER_PLUS_EXPR instead of PLUS_EXPR and also create
14001         MULT_EXPR in sizetype.
14002         (vect_gen_niters_for_prolog_loop): Add a cast when creating
14003         byte_misalign.
14004         * tree-object-size.c (plus_expr_object_size): Handle
14005         POINTER_PLUS_EXPR instead of PLUS_EXPR.  Removing all the extra
14006         code which is trying to figure out which side is a pointer and 
14007         is the index.
14008         (check_for_plus_in_loops_1): Likewise.
14009         (check_for_plus_in_loops): Likewise.
14010         * c-common.c (pointer_int_sum): Create a
14011         POINTER_PLUS_EXPR instead of PLUS_EXPR for pointers.
14012         * tree-ssa-structalias.c (handle_ptr_arith): Handle
14013         only POINTER_PLUS_EXPR.  Removing all the extra
14014         code which is trying to figure out which side is a pointer and 
14015         is the index.
14016         * tree-cfg.c (verify_expr): Add extra checking for pointers and
14017         PLUS_EXPR and MINUS_EXPR.
14018         Also add checking to make sure the operands of POINTER_PLUS_EXPR
14019         are correct.
14020         * config/frv/frv.c (frv_expand_builtin_va_start): Use sizetype
14021         with make_tree, instead of a pointer type.
14022         * config/s390/s390.c (s390_va_start): Use POINTER_PLUS_EXPR
14023         for pointers instead of PLUS_EXPR.
14024         (s390_gimplify_va_arg): Likewise.
14025         * config/spu/spu.c (spu_va_start): Create POINTER_PLUS_EXPR
14026         instead of PLUS_EXPR when doing addition on pointer
14027         types.  Use sizetype for the second operand.
14028         (spu_gimplify_va_arg_expr): Likewise.
14029         * config/sparc/sparc.c (sparc_gimplify_va_arg): Use 
14030         POINTER_PLUS_EXPR instead of PLUS_EXPR when the operand was
14031         a pointer.  Don't create a BIT_AND_EXPR for pointer types.
14032         * config/i386/i386.c (ix86_va_start): Use POINTER_PLUS_EXPR
14033         for the pointer addition and also use size_int/sizetype
14034         for the offset.
14035         (ix86_gimplify_va_arg): Likewise.
14036         Perform BIT_AND_EXPR on sizetype arguments.
14037         * config/sh/sh.c (sh_va_start): Call make_tree with sizetype
14038         and convert its result to a pointer type.  Use POINTER_PLUS_EXPR
14039         for the pointer additions and also use size_int for the offsets.
14040         (sh_gimplify_va_arg_expr): Use POINTER_PLUS_EXPR for the pointer
14041         additions and also use size_int for the offsets.  Perform
14042         BIT_AND_EXPR on sizetype arguments.
14043         * config/ia64/ia64.c (ia64_gimplify_va_arg): Use
14044         POINTER_PLUS_EXPR for pointers and create the
14045         BIT_AND_EXPR in sizetype.
14046         * config/rs6000/rs6000.c (rs6000_va_start): Use POINTER_PLUS_EXPR
14047         instead of PLUS_EXPR for pointer addition.
14048         (rs6000_va_start): Likewise.
14049         Also use sizetype for the offset.
14050         * config/pa/pa.c (reloc_needed): Handle POINTER_PLUS_EXPR
14051         as PLUS_EXPR/MINUS_EXPR.
14052         (hppa_gimplify_va_arg_expr): Don't create MINUS_EXPR or
14053         PLUS_EXPR for pointers, instead use POINTER_PLUS_EXPR.
14054         Don't use BIT_AND_EXPR on a pointer type, convert the
14055         expression to sizetype first.
14056         * config/mips/mips.c (mips_va_start): Use POINTER_PLUS_EXPR
14057         for pointers.
14058         (mips_gimplify_va_arg_expr): Likewise.
14059         Don't create BIT_AND_EXPR in a pointer type.
14060
14061 2007-06-15  Eric Christopher  <echristo@apple.com>
14062
14063         * config.gcc (i?86-*-darwin*): Add t-crtfm and t-crtpc.
14064         (x86_64-*-darwin*): Ditto.
14065         * config/i386/darwin.h (CRTEND_SPEC): New. Add support
14066         for above.
14067
14068 2007-06-15  Matthew Wilcox <matthew@wil.cx>
14069
14070         * doc/extend.texi: Document behavior of __attribute__((aligned))
14071         on typedefs.
14072
14073 2007-06-15  Mark Mitchell  <mark@codesourcery.com>
14074
14075         * rtlanal.c (note_stores): Improve documentation.
14076
14077 2007-06-15  Bernd Schmidt  <bernd.schmidt@analog.com>
14078
14079         * config/bfin/elf.h (ASM_GENERATE_INTERNAL_LABEL,
14080         LOCAL_LABEL_PREFIX): Delete.
14081         * config/bfin/bfin.c (TARGET_ASM_INTERNAL_LABEL): Delete.
14082         (bfin_internal_label): Delete.
14083
14084 2007-06-15  Uros Bizjak  <ubizjak@gmail.com>
14085
14086         * libgcc2.c (CEXT): When compiling L_multc3 and L_divtc3,
14087         define to "l" if LIBGCC_LONG_DOUBLE_SIZE == 128,
14088         otherwise define to LIBGCC2_TF_CEXT.
14089         * config/i386/linux64.h (LIBGCC2_HAS_TF_MODE): New define.
14090         (LIBGCC_TF_CEXT): Ditto.
14091         (TF_SIZE): Ditto.
14092
14093 2007-06-14  Seongbae Park  <seongbae.park@gmail.com>
14094
14095         PR rtl-optimization/32339
14096         * df-scan.c (df_uses_record): Don't modify flags but just add to
14097         it for df_ref_record.
14098
14099 2007-06-14  Andrew Pinski  <andrew_pinski@playstation.sony.com>
14100
14101         * tree-mudflap.c: Fix whitespace issues.
14102
14103 2007-06-15  Kazu Hirata  <kazu@codesourcery.com>
14104
14105         * config/m68k/m68k.c (ASM_DOT, ASM_DOTW, ASM_DOTL): Remove.
14106
14107 2007-06-14  Eric Christopher  <echristo@apple.com>
14108
14109         * config/i386/sse.md (movdi_to_sse): Rewrite body.
14110         (movv4sf): Use gcc_unreachable instead of abort.
14111
14112 2007-06-14  Uros Bizjak  <ubizjak@gmail.com>
14113
14114         PR target/32268
14115         * config/i386/sfp-machine.h (CMPtype): New define.
14116         (mach stubs): Use CMPtype instead of int as a return type.
14117
14118 2007-06-14  Uros Bizjak  <ubizjak@gmail.com>
14119
14120         * config/soft-fp/eqdf2.c, config/soft-fp/eqsf2.c,
14121         config/soft-fp/eqtf2.c, config/soft-fp/gedf2.c,
14122         config/soft-fp/gesf2.c, config/soft-fp/getf2.c,
14123         config/soft-fp/ledf2.c, config/soft-fp/lesf2.c,
14124         config/soft-fp/letf2.c, config/soft-fp/unorddf2.c,
14125         config/soft-fp/unordsf2.c, config/soft-fp/unordtf2.c,
14126         config/soft-fp/soft-fp.h: Update from glibc CVS.
14127
14128 2007-06-14  Bernd Schmidt  <bernd.schmidt@analog.com>
14129
14130         * config/bfin/uclinux.h (MFWRAP_SPEC): New.
14131
14132 2007-06-14  Rask Ingemann Lambertsen  <rask@sygehus.dk>
14133
14134         PR target/32341
14135         * config/v850/v850.c: Include dataflow header file.
14136         (substitute_ep_register): Fix typo.
14137
14138 2007-06-14  Paolo Bonzini  <bonzini@gnu.org>
14139
14140         * configure.ac: Fix earlier checkin.
14141         * configure: Regenerated.
14142
14143 2007-06-14  Paolo Bonzini  <bonzini@gnu.org>
14144
14145         * acinclude.m4 (gcc_AC_CHECK_PROG_VER): Remove.
14146         * aclocal.m4: Regenerate.
14147         * configure.ac: Use ACX_PROG_CC_WARNING_OPTS,
14148         ACX_PROG_CC_WARNINGS_ARE_ERRORS,
14149         ACX_PROG_CC_WARNING_ALMOST_PEDANTIC, ACX_CHECK_PROG_VER.
14150         * configure: Regenerate.
14151         * Makefile.in (LOOSE_WARN): Subst loose_warn.
14152
14153         * Makefile.in (quickstrap): Build libgcc too.
14154
14155 2007-06-14  Paolo Bonzini  <bonzini@gnu.org>
14156
14157         * configure.ac: Add --enable-checking=df.  Explicitly mention that
14158         the variables are initialized as for "release".
14159         * df-core.c: Use it.
14160         * configure: Regenerate.
14161         * config.in: Regenerate.
14162
14163 2007-06-14  Bob Wilson  <bob.wilson@acm.org>
14164
14165         * config/xtensa/xtensa.c (xtensa_expand_nonlocal_goto): Use
14166         validate_replace_rtx instead of replace_rtx.
14167         (xtensa_expand_prologue): Call df_insn_rescan after replace_rtx.
14168
14169 2007-06-14  Danny Smith  <dannysmith@users.sourceforge.net>
14170
14171         * config/i386/cygming.h (DWARF_FRAME_REGNUM): Define.
14172         (DWARF2_UNWIND_INFO): Override default if configured with
14173         SJLJ EH disabled.
14174         * config/i386/cygwin.h (STARTFILE_SPEC): Add crtbegin.o.
14175         (ENDFILE_SPEC): Add crtend.o.
14176         * config/i386/mingw32.h (STARTFILE_SEC): Add crtbegin.o.
14177         (ENDFILE_SPEC): Add crtend.o.
14178         (TARGET_USE_JCR_SECTION): Define.
14179         (MD_UNWIND_SUPPORT): Define for 32-bit target.
14180
14181         * config/i386/cygming-crtbegin.c: New file.
14182         * config/i386/cygming-crtend.c: New file.
14183
14184 2007-06-14  Pascal Obry Pascal Obry  <obry@adacore.com>
14185
14186         * config/i386/w32-unwind.h: New file.
14187
14188 2007-06-13  Eric Christopher  <echristo@apple.com>
14189
14190         * config/i386/darwin.h (PREFERRED_STACK_BOUNDARY): Don't let
14191         the user set a value below STACK_BOUNDARY.
14192
14193 2007-06-13  Thiemo Seufer  <ths@networkno.de>
14194
14195         * config/mips/linux.h, config/mips/linux64.h (LIB_SPEC): Always
14196         imply -lpthread for -pthread.
14197
14198 2007-06-13  Kazu Hirata  <kazu@codesourcery.com>
14199
14200         * basic-block.h: Remove the prototype for
14201         free_basic_block_vars.
14202         * cfglayout.h: Remove the prototype for
14203         insn_locators_initialize.
14204         * tree.h: Remove the prototype for emit_line_note.
14205
14206         * tree-ssa-pre.c (mergephitemp): Remove.
14207         (init_pre): Don't use mergephitemp.
14208
14209 2007-06-13  Eric Christopher  <echristo@apple.com>
14210
14211         * config/i386/i386.c (override_options): If we've specified
14212         an arch then don't use TARGET_SUBTARGET_ISA_DEFAULTs.
14213
14214 2007-06-13  Bob Wilson  <bob.wilson@acm.org>
14215
14216         * df-scan.c (df_get_entry_block_def_set): Check if STATIC_CHAIN_REGNUM
14217         is defined.
14218
14219 2007-06-13  Bernd Schmidt  <bernd.schmidt@analog.com>
14220
14221         * config/bfin/bfin.h (EH_RETURN_HANDLER_RTX): Use gen_frame_mem.
14222         * config/bfin/bfin.md (UNSPEC_VOLATILE_STORE_EH_HANDLER): New constant.
14223         (eh_store_handler): New pattern.
14224         (eh_return): Emit it instead of a plain move.
14225
14226 2007-06-13  Uros Bizjak  <ubizjak@gmail.com>
14227
14228         * config/i386/i386.c (ix86_init_mmx_sse_builtins)
14229         [__builtin_infq, __builtin_fabsq]: Define usign def_builtin.
14230         [__builtin_ia32_rsqrtps, __builtin_ia32_rsqrtss]: Define using
14231         def_builtin_const.
14232
14233 2007-06-13  Bernd Schmidt  <bernd.schmidt@analog.com>
14234
14235         * config/bfin/bfin.c (gen_one_bundle): Delete unused local variables.
14236         (find_next_insn_start, find_load): New functions.
14237         (bfin_reorg): Use them to deal with the fact that parallel insns are
14238         no longer represented as a SEQUENCE.
14239
14240 2007-06-13  Eric Botcazou  <ebotcazou@libertysurf.fr>
14241
14242         * config/sparc/sparc.c (sparc_override_options): Initialize
14243         fpu mask correctly.
14244
14245 2007-06-13  Dave Korn  <dave.korn@artimi.com>
14246
14247         * config/i386/i386.c (ix86_eax_live_at_start_p): Use
14248         df_get_live_out.
14249
14250 2007-06-13  Kazu Hirata  <kazu@codesourcery.com>
14251
14252         * auto-inc-dec.c, c-incpath.c, config/c4x/libgcc.S,
14253         config/sh/divcost-analysis, dbgcnt.def, df-core.c,
14254         df-problems.c, df-scan.c, df.h, dominance.c, dse.c, regstat.c,
14255         tree-data-ref.c, tree-ssa-loop-im.c, tree-ssa-loop-prefetch.c,
14256         tree-vect-transform.c: Fix comment typos.  Follow spelling
14257         conventions.
14258
14259 2007-06-12  Seongbae Park  <seongbae.park@gmail.com>
14260
14261        * df-scan.c (df_get_exit-block_use_set): Always add the stack pointer
14262        to the exit block use set.
14263        (df_insn_delete, df_insn_rescan): Fixed spelling of "deferring". 
14264        * gcse.c (cpro_jump): Don't emit barrier in cfglayout mode.
14265        * config/sparc/sparc.c (sparc_check_64): Check df != NULL.
14266
14267 2007-06-12  Seongbae Park  <seongbae.park@gmail.com>
14268
14269         * opts.c (common_handle_option): Handle new option -fdbg-cnt-list.
14270         * dbgcnt.c (dbg_cnt_set_limit_by_name): Return value
14271         to indicate an error.
14272         (dbg_cnt_process_single_pair, dbg_cnt_list_all_counters):
14273         New functions.
14274         (dbg_cnt_process_opt): Print an error on a bad argument.
14275         * dbgcnt.h (dbg_cnt_list_all_counters): New function declaration.
14276         * common.opt (-fdbg-cnt-list): New.
14277         * doc/invoke.texi (-fdbg-cnt-list,-fdbg-cnt=): New.
14278
14279 2007-06-12  Eric Botcazou  <ebotcazou@adacore.com>
14280
14281         * tree-ssa-alias.c (finalize_ref_all_pointers): Clear pt_anything
14282         flag on ref-all pointers.
14283
14284 2007-06-12  Andrew Pinski  <andrew_pinski@playstation.sony.com>
14285
14286         PR middle-end/31579
14287         * expr.c (expand_expr_addr_expr_1): Call expand_expr
14288         for the offset with the modifier as EXPAND_INITIALIZER
14289         if the modifier is EXPAND_INITIALIZER.
14290         (expand_expr_real_1 <case INTEGER_CST>): Don't force to
14291         a register if we had an overflow.
14292
14293 2007-06-12  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
14294
14295         * real.c (real_isfinite): New.
14296         (real_sqrt): Use it.
14297         * real.h (real_isfinite): New.
14298         * builtins.c: Use it.
14299
14300 2007-06-12  Ian Lance Taylor  <iant@google.com>
14301             Daniel Berlin  <dberlin@dberlin.org>
14302
14303         PR libstdc++/29286
14304         * tree.def: Add CHANGE_DYNAMIC_TYPE_EXPR.
14305         * tree.h (CHANGE_DYNAMIC_TYPE_NEW_TYPE): Define.
14306         (CHANGE_DYNAMIC_TYPE_LOCATION): Define.
14307         (DECL_NO_TBAA_P): Define.
14308         (struct tree_decl_common): Add no_tbaa_flag field.
14309         * tree-ssa-structalias.c (struct variable_info): Add
14310         no_tbaa_pruning field.
14311         (new_var_info): Initialize no_tbaa_pruning field.
14312         (unify_nodes): Copy no_tbaa_pruning field.
14313         (find_func_aliases): Handle CHANGE_DYNAMIC_TYPE_EXPR.
14314         (dump_solution_for_var): Print no_tbaa_pruning flag.
14315         (set_uids_in_ptset): Add no_tbaa_pruning parameter.  Change all
14316         callers.
14317         (compute_tbaa_pruning): New static function.
14318         (compute_points_to_sets): Remove CHANGE_DYNAMIC_TYPE_EXPR nodes.
14319         Call compute_tbaa_pruning.
14320         * tree-ssa-alias.c (may_alias_p): Test no_tbaa_flag for pointers.
14321         * gimplify.c (gimplify_expr): Handle CHANGE_DYNAMIC_TYPE_EXPR.
14322         * gimple-low.c (lower_stmt): Likewise.
14323         * tree-gimple.c (is_gimple_stmt): Likewise.
14324         * tree-ssa-operands.c (get_expr_operands): Likewise.
14325         * tree-ssa-dce.c (mark_stmt_if_obviously_necessary): Likewise.
14326         * tree-inline.c (estimate_num_insns_1): Likewise.
14327         (copy_result_decl_to_var): Likewise.
14328         * expr.c (expand_expr_real_1): Likewise.
14329         * tree-pretty-print.c (dump_generic_node): Likewise.
14330         * tree-inline.c (copy_decl_to_var): Copy DECL_NO_TBAA_P flag.
14331         * omp-low.c (omp_copy_decl_2): Likewise.
14332         * print-tree.c (print_node): Print DECL_NO_TBAA_P flag.
14333         * doc/c-tree.texi (Expression trees): Document
14334         CHANGE_DYNAMIC_TYPE_EXPR.
14335
14336 2007-06-12  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
14337
14338         * fold-const.c (fold_binary): Guard (X-X) -> 0 transformation
14339         with !HONOR_NANS and !HONOR_INFINITIES.
14340         * simplify-rtx.c (simplify_binary_operation_1): Likewise.
14341
14342 2007-06-12  Tristan Gingold  <gingold@adacore.com>
14343
14344         * gcov.c: Comments updated.
14345         (source_info): Add file_time field.
14346         (source_index): New variable.
14347         (mutiple_files): New variable.
14348         (generate_results): New function extracted from process_file.
14349         (process_file): Save and restore chain of functions, generate
14350         results and free structures only if not merging results.
14351         (release_structures): File names are now freed in create_file_names
14352         (create_file_names): Free previous file names.
14353         (find_source): File date is now read here and modifications in
14354         source files is checked here.
14355         (read_graph_file): Only reverse order of functions for the current
14356         object file.
14357         (make_gcov_file_name): Do not generate long names if input_name is
14358         NULL.
14359         (output_lines): If merging results do not display graph, data and
14360         runs informations.
14361         Checking source file modification is done in find_source.
14362
14363         * doc/gcov.texi: Append an s to sourcefile.
14364
14365 2007-06-12  Bernd Schmidt  <bernd.schmidt@analog.com>
14366
14367         * config/bfin/bfin.md (UNSPEC_NOP): New constant.
14368         (forced_nop): New pattern.
14369         * config/bfin/bfin.c: Include "df.h".
14370         (add_to_reg): Use df_regs_ever_live_p instead of regs_ever_live.
14371         (bfin_discover_loop): Use df_get_live_in instead of
14372         global_live_at_start.
14373         (bfin_reorder_loops): Pass 0 to cfg_layout_initialize.  Call
14374         df_analyze when done.
14375         (gen_one_bundle): Don't generate SEQUENCE insns, just put modes on
14376         the insns.  Use QImode for the final insn in a bundle.  Call
14377         df_insn_rescan on generated NOPs; use gen_forced_nop instead of
14378         gen_nop.
14379         (reorder_var_tracking_notes): New function.
14380         (bfin_reorg): Pass no argument to split_all_insns.  Don't call
14381         update_life_info.  Call df_analyze after scheduling and bundle
14382         generation.  Call reorder_var_tracking_notes if generating these
14383         notes.  Call df_finish_pass at the end.
14384
14385 2007-06-12  Dirk Mueller  <dmueller@suse.de>
14386
14387         * optabs.c (debug_optab_libfuncs): fix gcc_assert to
14388         a comparison, not an assignment.
14389
14390 2007-06-12  Olivier Hainque  <hainque@adacore.com>
14391
14392         * tree-nested.c (convert_local_reference): Handle VIEW_CONVERT_EXPR.
14393         Request walking the subtrees only, leaving the current is_lhs/val_only
14394         untouched.
14395         (convert_non_local_reference): Likewise.
14396
14397 2007-06-12  Nathan Sidwell  <nathan@codesourcery.com>
14398
14399         * config/m68k/m68k-devices.def (52221, 52223, 5253): New.
14400
14401 2007-06-12  Richard Guenther  <rguenther@suse.de>
14402
14403         PR tree-optimization/15353
14404         PR tree-optimization/31657
14405         * passes.c (init_optimization_passes): Add pass_tree_ifcombine.
14406         * timevar.def: Add TV_TREE_IFCOMBINE.
14407         * tree-pass.h (pass_tree_ifcombine): Declare.
14408         * tree-ssa-ifcombine.c: New file.
14409         * tree-ssa-phiopt.c (blocks_in_phiopt_order): Export.
14410         * tree-flow.h (blocks_in_phiopt_order): Declare.
14411         * Makefile.in (OBJS-common): Add tree-ssa-ifcombine.o.
14412         (tree-ssa-ifcombine.o): New dependencies.
14413
14414 2007-06-12  Uros Bizjak  <ubizjak@gmail.com>
14415
14416         PR rtl-optimization/32293
14417         * combine.c (simplify_if_then_else): Truncate return from
14418         nonzero_bits() to correct mode.
14419
14420 2007-06-12  Uros Bizjak  <ubizjak@gmail.com>
14421
14422         * fold-const (fold_binary) [RDIV_EXPR]: Also optimize a/cbrt(b/c)
14423         into a*cbrt(c/b) if flag_unsafe_math_optimizations is set.
14424
14425 2007-06-11  Diego Novillo  <dnovillo@google.com>
14426
14427         * Makefile.in (reload1.o-warn): Remove.
14428
14429 2007-06-11  Seongbae Park <seongbae.park@gmail.com>
14430
14431         * combine.c (subst): Use reg_overlap_mentioned_p
14432         instead of comparing register numbers directly.
14433
14434 2007-06-11  Kenneth Zadeck <zadeck@naturalbridge.com>
14435
14436         * reload1.c (mark_home_live_1): Use the mode parameter.
14437
14438 2007-06-11  Kenneth Zadeck <zadeck@naturalbridge.com>
14439
14440         * df-scan.c (df_insn_delete, df_insn_rescan, df_insn_rescan_all,
14441         df_process_deferred_rescans, df_notes_rescan): Fixed spelling of
14442         word "deferred".
14443         * df-core.c: Ditto.
14444
14445 2007-06-11  Daniel Berlin  <dberlin@dberlin.org>
14446
14447         * Merge dataflow-branch into mainline (see ChangeLog.dataflow)
14448
14449 2007-06-11  Uros Bizjak  <ubizjak@gmail.com>
14450
14451         * config/i386/i386.md ("*movtf_internal): Penalize moves to and
14452         from integer registers.
14453         (FP mode splitters): Handle TFmode.
14454
14455 2007-06-11  Eric Botcazou  <ebotcazou@adacore.com>
14456
14457         * tree-ssa-structalias.c (find_what_p_points_to): Return false
14458         for ref-all pointers that point-to anything.
14459
14460 2007-06-11  Joseph Myers  <joseph@codesourcery.com>
14461
14462         * config/arm/arm.c (arm_output_dwarf_dtprel,
14463         TARGET_ASM_OUTPUT_DWARF_DTPREL): New.
14464
14465 2007-06-11  Bernd Schmidt  <bernd.schmidt@analog.com>
14466
14467         * config/bfin/bfin.md (movdi_insn, movsi_insn, movv2hi_insn,
14468         movhi_insn, movqi_insn, movsf_insn, movdf_insn): Don't allow constant
14469         to memory moves.
14470
14471 2007-06-11  Rafael Avila de Espindola  <espindola@google.com>
14472
14473         * tree.c (signed_or_unsigned_type_for): New.
14474         (unsigned_type_for): Use signed_or_unsigned_type_for.
14475         (signed_type_for): Use signed_or_unsigned_type_for.
14476         * tree.h (signed_or_unsigned_type_for): New.
14477         (get_signed_or_unsigned_type): Remove.
14478         * fold-const.c (fold_negate_expr): Use signed_type_for instead of
14479         lang_hooks.types.signed_type
14480         (size_diffop): Likewise.
14481         (all_ones_mask_p): Likewise.
14482         (build_range_check): Likewise.
14483         (fold_cond_expr_with_comparison): Likewise.
14484         (fold_cond_expr_with_comparison): Likewise.
14485         (unextend): Likewise.
14486         (extract_muldiv_1): Likewise.
14487         (fold_single_bit_test_into_sign_test): Likewise.
14488         (fold_binary): Likewise.
14489         (fold_ternary): Likewise.
14490         (operand_equal_for_comparison_p): Use signed_or_unsigned_type_for
14491         instead of get_signed_or_unsigned_type.
14492         * c-objc-common.h (LANG_HOOKS_SIGNED_TYPE): Remove.
14493         (LANG_HOOKS_SIGNED_OR_UNSIGNED_TYPE): Remove.
14494         * expr.c (signed_or_unsigned_type_for): Use
14495         signed_or_unsigned_type_for instead of get_signed_or_unsigned_type.
14496         * langhooks.c (get_signed_or_unsigned_type): Remove.
14497         (lhd_signed_or_unsigned_type): Remove.
14498         * langhooks.h (lang_hooks_for_types): Remove signed_type and
14499         signed_or_unsigned_type.
14500         (lhd_signed_or_unsigned_type): Remove.
14501         * expmed.c (make_tree): Use signed_type_for instead of
14502         lang_hooks.types.signed_type.
14503         * c-common.c (same_scalar_type_ignoring_signedness): Use
14504         c_common_signed_type instead of lang_hooks.types.signed_type.
14505         (c_common_unsigned_type): New.
14506         (c_common_signed_type): Just call c_common_signed_or_unsigned_type.
14507         (shorten_compare): Use c_common_unsigned_type instead of
14508         c_common_signed_or_unsigned_type.
14509         (c_common_nodes_and_builtins): Use c_common_unsigned_type instead of
14510         unsigned_type_for.
14511         * convert.c (convert_to_integer): Use signed_type_for instead of
14512         lang_hooks.types.signed_type.
14513         * langhooks-def.h (LANG_HOOKS_SIGNED_OR_UNSIGNED_TYPE): Remove.
14514         (LANG_HOOK_FOR_TYPES_INITIALIZER): Remove LANG_HOOKS_SIGNED_TYPE and
14515         LANG_HOOKS_SIGNED_OR_UNSIGNED_TYPE.
14516         * c-format.c (check_format_types): Use c_common_unsigned_type
14517         instead of unsigned_type_for.
14518         * c-decl.c (groakdeclarator): Likewise.
14519         * c-typeck.c (convert_for_assignment): Likewise.
14520         * c-common.h (c_common_unsigned_type): New.
14521
14522 2007-06-11  Uros Bizjak  <ubizjak@gmail.com>
14523
14524         PR target/32280
14525         * config/i386/sse.md ("sse2_ashlti", "sse2_lshrti3"): Move ...
14526         * config/i386/i386.md ("sse2_ashlti", "sse2_lshrti3"): ... to here.
14527
14528 2007-06-11  Uros Bizjak  <ubizjak@gmail.com>
14529
14530         PR middle-end/32279
14531         * fold-const (fold_binary) [RDIV_EXPR]: Optimize a/sqrt(b/c)
14532         into a*sqrt(c/b) if flag_unsafe_math_optimizations is set.
14533
14534 2007-06-10  Jan Sjodin  <jan.sjodin@amd.com>
14535             Sebastian Pop  <sebpop@gmail.com>
14536
14537         * lambda-code.c (remove_iv): New.
14538         (lambda_loopnest_to_gcc_loopnest): Use remove_iv.
14539
14540 2007-06-10  Zdenek Dvorak  <dvorakz@suse.cz>
14541
14542         * tree-data-ref.c (dr_analyze_alias): Handle case smt is NULL.
14543         * tree-predcom.c (mark_virtual_ops_for_renaming): Exported.
14544         * tree-ssa-loop-prefetch.c: Include optabs.h.
14545         (FENCE_FOLLOWING_MOVNT): New macro.
14546         (struct mem_ref): Add independent_p and storent_p fields.
14547         (record_ref): Initalize the new fields.
14548         (gather_memory_references_ref): Return true if the reference
14549         could be analysed.
14550         (gather_memory_references): Check whether all memory accesses
14551         in loop were recorded.
14552         (should_issue_prefetch_p): Return false for nontemporal stores.
14553         (nontemporal_store_p, mark_nontemporal_store, emit_mfence_after_loop,
14554         may_use_storent_in_loop_p, mark_nontemporal_stores): New functions.
14555         (determine_loop_nest_reuse): Detect independent memory references.
14556         (loop_prefetch_arrays): Call mark_nontemporal_stores.
14557         * tree-flow.h (mark_virtual_ops_for_renaming): Declare.
14558         * Makefile.in (tree-ssa-loop-prefetch.o): Add OPTABS_H dependency.
14559         * config/i386/i386.h (x86_mfence): Declare.
14560         (FENCE_FOLLOWING_MOVNT): Return x86_mfence.
14561         * config/i386/i386.c (x86_mfence): New variable.
14562         (ix86_init_mmx_sse_builtins): Initialize x86_mfence.
14563
14564         * tree-pretty-print.c (dump_generic_node): Mark nontemporal stores.
14565         * optabs.c (init_optabs): Initialize storent_optab.
14566         * optabs.h (enum optab_index): Add OTI_storent.
14567         (storent_optab): Declare.
14568         * genopinit.c (optabs): Add initialization for storent_optab.
14569         * tree.h (MOVE_NONTEMPORAL): New macro.
14570         * expr.c (expand_assignment, store_expr, store_constructor_field,
14571         store_constructor, store_field, expand_expr_real_1): Propagate
14572         nontemporality of the expanded store.
14573         (emit_storent_insn): New function.
14574         * expr.h (expand_assignment, store_expr): Declaration changed.
14575         * function.c (assign_parm_setup_reg): Pass false as nontemporality
14576         to expand_assignment.
14577         * stmt.c (expand_asm_expr): Ditto.
14578         * calls.c (initialize_argument_information): Pass false as
14579         nontemporality to store_expr.
14580         * config/i386/sse.md (storentv4sf, storentv2df, storentv2di,
14581         storentsi): New.
14582
14583 2007-06-09  Daniel Berlin  <dberlin@dberlin.org>
14584
14585         * tree-ssa-structalias.c (set_uids_in_ptset): Add is_deref'd
14586         parameter, use it.
14587         (find_what_p_points_to): Pass new parameter to set_uids_in_ptset.
14588
14589 2007-06-09  Daniel Berlin  <dberlin@dberlin.org>
14590
14591         * tree-data-ref.c (dr_may_alias_p): Check that decl_a != decl_b,
14592         and allow DECL_P here.
14593
14594 2007-06-09  Zdenek Dvorak  <dvorakz@suse.cz>
14595
14596         * tree-scalar-evolution.c (follow_ssa_edge_in_rhs,
14597         follow_ssa_edge_in_condition_phi, follow_ssa_edge): Keep more precise
14598         track of the size of the expression.
14599         * cfghooks.c (merge_blocks): Remove block from loops structure only
14600         after call of the merge_blocks hook.
14601
14602 2007-06-09  Tom Tromey  <tromey@redhat.com>
14603
14604         * c-decl.c (grokdeclarator): Added 'deprecated_state' argument.
14605         (deprecated_state): Removed.
14606         (start_decl): Update.
14607         (enum deprecated_states): Moved earlier.
14608         (groktypename): Update.
14609         (push_parm_decl): Likewise.
14610         (grokfield): Likewise.
14611         (start_function): Likewise.
14612
14613 2007-06-09  Ian Lance Taylor  <iant@google.com>
14614
14615         PR tree-optimization/32169
14616         * tree-vrp.c (extract_range_from_unary_expr): For NOP_EXPR and
14617         CONVERT_EXPR, check whether min and max both converted to an
14618         overflow infinity representation.
14619
14620 2007-06-08  Eric Botcazou  <ebotcazou@adacore.com>
14621
14622         * reload1.c (fixup_abnormal_edges): Clear bb field for insns
14623         not inserted on the edge.
14624
14625 2007-06-08  Bob Wilson  <bob.wilson@acm.org>
14626
14627         * config/xtensa/lib1funcs.asm (__udivsi3): Use hardware divide
14628         instructions if they are supported.
14629         (__divsi3, __umodsi3, __modsi3): Likewise.
14630         (__ashldi3, __ashrdi3, __lshrdi3): New.
14631         * config/xtensa/t-xtensa (LIB1ASMFUNCS): Add DImode shift functions.
14632
14633 2007-06-08  Harsha Jagasia <harsha.jagasia@amd.com>
14634             Tony Linthicum <tony.linthicum@amd.com>
14635
14636         * doc/invoke.texi: Add fvect-cost-model flag.
14637         * common.opt (fvect-cost-model): New flag.
14638         * tree-vectorizer.c (new_stmt_vec_info): Initialize inside and outside
14639         cost fields in stmt_vec_info struct for STMT.
14640         * tree-vectorizer.h (stmt_vec_info): Define inside and outside cost
14641         fields in stmt_vec_info struct and access functions for the same.
14642         (TARG_COND_BRANCH_COST): Define cost of conditional branch.
14643         (TARG_VEC_STMT_COST): Define cost of any vector operation, excluding
14644         load, store and vector to scalar operation.
14645         (TARG_VEC_TO_SCALAR_COST): Define cost of vector to scalar operation.
14646         (TARG_VEC_LOAD_COST): Define cost of aligned vector load.
14647         (TARG_VEC_UNALIGNED_LOAD_COST): Define cost of misasligned vector load.
14648         (TARG_VEC_STORE_COST): Define cost of vector store.
14649         (vect_estimate_min_profitable_iters): Define new function.
14650         * tree-vect-analyze.c (vect_analyze_operations): Add a compile-time
14651         check to evaluate if loop iterations are less than minimum profitable
14652         iterations determined by cost model or minimum vect loop bound defined
14653         by user, whichever is more conservative.
14654         * tree-vect-transform.c (vect_do_peeling_for_loop_bound): Add a
14655         run-time check to evaluate if loop iterations are less than minimum
14656         profitable iterations determined by cost model or minimum vect loop
14657         bound defined by user, whichever is more conservative.
14658         (vect_estimate_min_profitable_iterations): New function to estimate
14659         mimimimum iterartions required for vector version of loop to be
14660         profitable over scalar version.
14661         (vect_model_reduction_cost): New function.
14662         (vect_model_induction_cost): New function.
14663         (vect_model_simple_cost): New function.
14664         (vect_cost_strided_group_size): New function.
14665         (vect_model_store_cost): New function.
14666         (vect_model_load_cost): New function.
14667         (vectorizable_reduction): Call vect_model_reduction_cost during
14668         analysis phase.
14669         (vectorizable_induction): Call vect_model_induction_cost during
14670         analysis phase.
14671         (vectorizable_load): Call vect_model_load_cost during analysis phase.
14672         (vectorizable_store): Call vect_model_store_cost during analysis phase.
14673         (vectorizable_call, vectorizable_assignment, vectorizable_operation,
14674         vectorizable_promotion, vectorizable_demotion): Call
14675         vect_model_simple_cost during analysis phase.
14676
14677 2007-06-08  Simon Baldwin  <simonb@google.com>
14678
14679         * reg-stack.c (get_true_reg): Readability change.  Moved default case
14680         label into direct switch statement scope.
14681
14682 2007-06-08  Simon Baldwin  <simonb@google.com>
14683
14684         * tree-flow-inline.h (var_ann): Replaced erroneous '=' assignment
14685         in gcc_assert() with '==' comparison.
14686
14687 2007-06-08  Uros Bizjak  <ubizjak@gmail.com>
14688
14689         * config/i386/i386.c (override_options): Merge TARGET_SSE4_2 and
14690         TARGET_ABM handling of x86_popcnt variable.
14691
14692 2007-06-08  Uros Bizjak  <ubizjak@gmail.com>
14693
14694         * doc/extend.texi (X86 Built-in Functions): Document __builtin_fabsq,
14695         __builtin_copysignq and __builtin_infq built-in functions.
14696
14697 2007-06-08  Uros Bizjak  <ubizjak@gmail.com>
14698
14699         * doc/extend.texi (X86 Built-in Functions): Add missing `@item's in
14700         SSE4.2 section.  Correct built-in function names in SSE4A section.
14701
14702 2007-06-08  Uros Bizjak  <ubizjak@gmail.com>
14703
14704         PR tree-optimization/32243
14705         * tree-vect-transform.c (vectorizable_type_promotion): Move check
14706         for ncopies after ratio check between nunits_out and nunits_in.
14707         (vectorizable_type_demotion): Remove single-use variable "scalar_type".
14708
14709 2007-06-08  Dorit Nuzman  <dorit@il.ibm.com>
14710
14711         PR tree-optimization/32224
14712         * tree-vect-analyze.c (vect_determine_vectorization_factor): Fail
14713         vectorization upon a non GIMPLE_MODIFY_STMT.
14714
14715 2007-06-08  Christian Bruel  <christian.bruel@st.com>
14716
14717         PR target/29953
14718         * config/sh/sh.md (doloop_end): New pattern and splitter.
14719         * loop-iv.c (simple_rhs_p): Check for hardware registers.
14720
14721 2007-06-08  Zdenek Dvorak  <dvorakz@suse.cz>
14722
14723         PR middle-end/32209
14724         * dominance.c (debug_dominance_tree, debug_dominance_tree_1): New
14725         functions.
14726         (verify_dominators): Do not change dominance tree.
14727
14728 2007-06-08  Kaz Kojima  <kkojima@gcc.gnu.org>
14729
14730         * config/sh/constraints.md: New file.
14731         * config/sh/sh.c: Include tm-constrs.h.
14732         (reg_class_from_letter): Remove.
14733         (prepare_cbranch_operands): Use satisfies_constraint_*
14734         function instead of macro.
14735         (andcosts, broken_move, sh_secondary_reload): Likewise.
14736         * config/sh/predicates.md (trapping_target_operand): Likewise.
14737         (and_operand, arith_operand, arith_reg_or_0_operand,
14738         cmp_operand, logical_operand, target_operand,
14739         ua_address_operand, ua_offset, xor_operand): Likewise.
14740         * config/sh/sh.md: Include constraints.md.
14741         (*movsicc_t_false): Use satisfies_constraint_* function
14742         instead of macro.
14743         (*movsicc_t_true, ashlsi3_std, ashlhi3_k, lshrsi3_m,
14744         lshrsi3_k, movsi_const_16bit+2, *movhi_media+1,
14745         movdi_const_16bit+1, beq, bne, *ptb): Likewise.
14746         * config/sh/sh.h (reg_class_from_letter): Remove prototype.
14747         (OVERRIDE_OPTIONS): Don't modify reg_class_from_letter.
14748         (REG_CLASS_FROM_CONSTRAINT): Remove.
14749         (CONSTRAINT_LEN, CONST_OK_FOR_I20, CONST_OK_FOR_I,
14750         CONST_OK_FOR_J, CONST_OK_FOR_K16, CONST_OK_FOR_K,
14751         CONST_OK_FOR_P27, CONST_OK_FOR_P, CONST_OK_FOR_M,
14752         CONST_OK_FOR_N, CONST_OK_FOR_CONSTRAINT_P,
14753         CONST_DOUBLE_OK_FOR_LETTER_P): Likewise.
14754         (SECONDARY_INOUT_RELOAD_CLASS): Use satisfies_constraint_*
14755         function instead of macro.
14756         (SECONDARY_INPUT_RELOAD_CLASS): Likewise.
14757         (EXTRA_CONSTRAINT_Q, EXTRA_CONSTRAINT_A,
14758         EXTRA_CONSTRAINT_Bsc, EXTRA_CONSTRAINT_B,
14759         EXTRA_CONSTRAINT_Css, EXTRA_CONSTRAINT_Csu): Remove.
14760         (IS_PC_RELATIVE_LOAD_ADDR_P): New macro.
14761         (IS_LITERAL_OR_SYMBOLIC_S16_P): Likewise.
14762         (IS_LITERAL_OR_SYMBOLIC_U16_P): Likewise.
14763         (IS_NON_EXPLICIT_CONSTANT_P): Likewise.
14764         (EXTRA_CONSTRAINT_Csy, EXTRA_CONSTRAINT_Z, EXTRA_CONSTRAINT_W,
14765         EXTRA_CONSTRAINT_Cpg, EXTRA_CONSTRAINT_C,
14766         EXTRA_MEMORY_CONSTRAINT, EXTRA_CONSTRAINT_Sr0,
14767         EXTRA_CONSTRAINT_Sua, EXTRA_CONSTRAINT_S,
14768         EXTRA_CONSTRAINT_STR): Likewise.
14769         (GO_IF_LEGITIMATE_INDEX): Fix indentation.
14770
14771 2007-06-07  Geoffrey Keating  <geoffk@apple.com>
14772
14773         * config/i386/darwin.h (STACK_BOUNDARY): Define.
14774
14775 2007-06-07  Simon Martin  <simartin@users.sourceforge.net>
14776
14777         PR c++/30759
14778         * c-common.h (flag_cpp0x): Replaced by...
14779         (cxx_dialect): ... this new variable specifying the C++ dialect that
14780         is used.
14781         * c-common.c (flag_cpp0x): Removed.
14782         (cxx_dialect): Defined.
14783         * c-cppbuiltin.c (c_cpp_builtins): flag_cpp0x rewritten in terms of
14784         cxx_dialect.
14785         * c-opts.c (c_common_post_options): Likewise.
14786         (set_std_cxx98): Set cxx_dialect to cxx98.
14787         (set_std_cxx0x): Set cxx_dialect to cxx0x.
14788
14789 2007-06-07  Geoffrey Keating  <geoffk@apple.com>
14790             Hui-May Chang <hm.chang@apple.com>
14791
14792         * doc/invoke.texi (Darwin Options): Update documentation for
14793         -mmacosx-version-min.
14794         * config.gcc (*-*-darwin*): Set extra_gcc_objs.
14795         * config/darwin-driver.c: New file.
14796         * config/darwin.h (GCC_DRIVER_HOST_INITIALIZATION): New.
14797         * config/t-darwin (darwin-driver.o): New rule.
14798
14799         * config/darwin-c.c (version_as_macro): Ignore low digit.
14800
14801 2007-06-07  Uros Bizjak  <ubizjak@gmail.com>
14802
14803         * config/i386/i386.md (standard sse constant splitter): Handle TFmode.
14804         (negtf2, abstf2, *absnegtf2_sse): New insn patterns.
14805         (CSGNMODE): New mode macro.
14806         (CSGNVMODE): New mode attribute.
14807         (copysign<mode>3): Rename from copysingsf3 and copysigndf3.  Macroize
14808         expander using CSGNMODE mode macro.  Handle TFmode.
14809         (copysign<mode>3_const): Rename from copysignsf3_const and
14810         copysigndf3_const.  Macroize pattern using CSGNMODE mode macro.
14811         Handle TFmode.
14812         (copysign<mode>3_var): Rename from copysignsf3_var and
14813         copysigndf3_var.  Macroize pattern using CSGNMODE mode macro.
14814         Handle TFmode.
14815         (copysign<mode>3_var splitter): Macroize pattern using CSGNMODE
14816         mode macro.  Handle TFmode.
14817         * config/i386/sse.md (andtf3, *andtf3, *nandtf3): New insn patterns.
14818         (iortf3, *iortf3): Ditto.
14819         (xortf3, *xortf3): Ditto.
14820         * config/i386/i386.c (ix86_build_signbit_mask): Create scalar
14821         TFmode and TImode masks.
14822         (ix86_expand_copysign): Expand TFmode copysign insn.
14823         (IX86_BUILTIN_INFQ): New.
14824         (IX86_BUILTIN_FABSQ): Ditto.
14825         (IX86_BUILTIN_COPYSIGNQ): Ditto.
14826         (ix86_init_mmx_sse_builtins) [__builtin_infq]: New builtin definition.
14827         [__builtin_fabsq]: Ditto.
14828         [__builtin_copysignq]: Ditto.
14829         (ix86_expand_builtin) [IX86_BUILTIN_INFQ]: Expand builtin.
14830         [IX86_BUILTIN_FABSQ]: Expand builtin using ix86_expand_unop_builtin().
14831         [IX86_BUILTIN_COPYSIGNQ]: Expand builtin using
14832         ix86_expand_binop_builtin().
14833
14834 2007-06-07  Bob Wilson  <bob.wilson@acm.org>
14835
14836         * config/xtensa/lib1funcs.asm: Clean up whitespace.
14837
14838 2007-06-07  Steve Ellcey  <sje@cup.hp.com>
14839
14840         PR target/31850
14841         * rtl.h (push_to_sequence2): New.
14842         * emit-rtl.c (push_to_sequence2): New.
14843         * function.c (assign_parm_data_all): Add new fields.
14844         (assign_parm_setup_block): Call push_to_sequence2 instead of
14845         push_to_sequence.
14846         (assign_parm_setup_reg): Ditto.
14847         (assign_parm_setup_stack): Ditto.
14848         (assign_parms_unsplit_complex): Ditto.
14849         (assign_parms): Change field name.
14850
14851 2007-06-07  Zdenek Dvorak  <dvorakz@suse.cz>
14852
14853         PR tree-optimization/32220
14854         * tree-predcom.c (eliminate_temp_copies): Handle the case that loop
14855         phi node is reached before defining statement.
14856
14857 2007-06-06  Andrew Pinski  <andrew_pinski@playstation.sony.com>
14858
14859         PR tree-opt/32231
14860         * tree-vect-transform.c (vectorizable_call): Call update_stmt
14861         after changing the right hand side of the assignment.
14862
14863 2007-06-06  Eric Christopher  <echristo@apple.com>
14864
14865         * config.gcc (i?86-*-darwin*): Remove arch parameter.
14866         (x86_64-*-darwin*): Ditto.
14867         * config/i386/darwin.h (TARGET_SUBTARGET32_ISA_DEFAULT): Define.
14868         (TARGET_SUBTARGET64_ISA_DEFAULT): Ditto.
14869
14870 2007-06-06  Thomas Neumann  <tneumann@users.sourceforge.net>
14871
14872         * tree-ssa-alias-warnings.c (maybe_add_match): Cast according to the
14873         coding conventions.
14874         (add_key): Likewise.
14875         * tree-ssa.c (init_tree_ssa): Use type safe memory macros.
14876         * tree-ssa-ccp.c (ccp_fold_builtin): Avoid using C++ keywords as
14877         variable names.
14878         * tree-ssa-coalesce.c (find_coalesce_pair): Use type safe memory
14879         macros.
14880         (add_cost_one_coalesce): Likewise.
14881         * tree-ssa-copy.c (merge_alias_info): Avoid using C++ keywords as
14882         variable names. Rename orig to orig_name for consistency.
14883         * tree-ssa-dom.c (dom_thread_across_edge): Cast according to the
14884         coding conventions.
14885         (cprop_into_successor_phis): Avoid using C++ keywords as variable
14886         names.
14887         (record_equivalences_from_stmt): Likewise.
14888         * tree-ssa-dse.c (dse_initialize_block_local_data): Cast according to
14889         the coding conventions.
14890         (memory_ssa_name_same): Likewise.
14891         (dse_optimize_stmt): Likewise.
14892         (dse_record_phis): Likewise.
14893         (dse_finalize_block): Likewise.
14894         * tree-ssa-loop-im.c (outermost_invariant_loop_expr): Avoid using C++
14895         keywords as variable names.
14896         (may_move_till): Cast according to the coding conventions.
14897         (force_move_till_expr): Avoid using C++ keywords as variable names.
14898         (force_move_till): Cast according to the coding conventions.
14899         (memref_hash): Likewise.
14900         (memref_eq): Likewise.
14901         (gather_mem_refs_stmt): Likewise.
14902         * tree-ssa-loop-ivopts.c (contains_abnormal_ssa_name_p): Avoid
14903         using C++ keywords as variable names.
14904         (idx_find_step): Cast according to the coding conventions.
14905         (idx_record_use): Likewise.
14906         (find_depends): Likewise.
14907         (prepare_decl_rtl): Likewise.
14908         (mbc_entry_hash): Likewise.
14909         (mbc_entry_eq): Likewise.
14910         * tree-ssa-loop-niter.c (SWAP): Use the correct the type for tmp.
14911         (simplify_replace_tree): Avoid using C++ keywords as variable names.
14912         (idx_infer_loop_bounds): Cast according to the coding conventions.
14913         * tree-ssa-loop-prefetch.c (idx_analyze_ref): Likewise.
14914         * tree-ssa-math-opts.c (occ_new ): Likwise.
14915         * tree-ssanames.c (duplicate_ssa_name_ptr_info): Use type safe memory
14916         macros.
14917         * tree-ssa-operands.c (add_def_op): Avoid using C++ keywords as
14918         variable names.
14919         (add_use_op): Likewise.
14920         (add_vop): Likewise.
14921         (add_vuse_op): Likewise.
14922         (add_vdef_op): Likewise.
14923         (get_expr_operands): Likewise.
14924         (push_stmt_changes): Use type safe memory macros.
14925         * tree-ssa-phiopt.c (replace_phi_edge_with_variable): Avoid using C++
14926         keywords as variable names.
14927         (conditional_replacement): Likewise.
14928         (minmax_replacement): Likewise.
14929         (abs_replacement): Likewise.
14930         * tree-ssa-pre.c (create_expression_by_pieces): Cast according to the
14931         coding conventions.
14932         (insert_fake_stores): Avoid using C++ keywords as variable names.
14933         * tree-ssa-reassoc.c (add_to_ops_vec): Cast according to the coding
14934         conventions.
14935         * tree-ssa-structalias.c (heapvar_lookup): Likewise.
14936         (heapvar_insert): Use type safe memory macros.
14937         (new_var_info): Cast according to the coding conventions.
14938         (new_constraint): Likewise.
14939         (remove_preds_and_fake_succs): Use type safe memory macros.
14940         * tree-ssa-threadupdate.c (thread_block): Cast according to the coding
14941         conventions.
14942         (thread_single_edge): Likewise.
14943         (thread_through_loop_header): Likewise.
14944
14945 2007-06-06  Eric Christopher  <echristo@apple.com>
14946
14947         * config/i386/i386.c (override_options): Move handling
14948         of TARGET_SUBTARGET* earlier.
14949
14950 2007-06-06  Paolo Bonzini  <bonzini@gnu.org>
14951
14952         * genmodes.c (tagged_printf, emit_insn_modes_h): Don't
14953         use %n on printf.
14954
14955 2007-06-06  Zdenek Dvorak  <dvorakz@suse.cz>
14956
14957         * haifa-sched.c (restore_bb_notes): Clear bb field of the notes
14958         emited outside of basic block.
14959         * cfgbuild.c (find_bb_boundaries): Clear bb field for insns between
14960         the created blocks.
14961         * rtl.h (delete_insn_chain): Declaration changed.
14962         * cfgrtl.c (delete_insn_chain): Add option to clear bb field for
14963         non-removed insns.
14964         (rtl_delete_block, rtl_merge_blocks): Pass true to delete_insn_chain.
14965         (delete_insn_chain_and_edges, try_redirect_by_replacing_jump,
14966         rtl_tidy_fallthru_edge, cfg_layout_merge_blocks): Pass false
14967         to delete_insn_chain.
14968         (rtl_verify_flow_info_1): Verify that the insns in header and footer
14969         do not have bb field set.
14970         (rtl_verify_flow_info): Verify that insns between basic blocks do not
14971         have bb field set.
14972         * recog.c (peephole2_optimize): Add argument to delete_insn_chain call.
14973         * cfgcleanup.c (try_optimize_cfg): Ditto.
14974
14975 2007-06-06  Thomas Neumann  <tneumann@users.sourceforge.net>
14976
14977         * lambda-code.c (struct lambda_lattice_s): Add a name to the struct.
14978         (lambda_body_vector_new): Use type safe memory macros.
14979         (lambda_linear_expression_new): Likewise.
14980         (lambda_loopnest_new): Likewise.
14981         (lambda_lattice_new): Likewise.
14982         (replace_uses_equiv_to_x_with_y): Cast according to the coding
14983         conventions. Use type safe memory macros.
14984         * lambda.h (struct lambda_trans_matrix_s): Add a name to the struct.
14985         (lambda_body_vector_s): Likewise.
14986         * lambda-mat.c (lambda_matrix_new): Use type safe memory macros.
14987         * lambda-trans.c (lambda_trans_matrix_new): Likewise.
14988
14989 2007-06-06  Richard Guenther  <rguenther@suse.de>
14990
14991         * tree-ssa-forwprop.c (forward_propagate_into_cond): Return 2
14992         if we need to schedule cfg_cleanup.
14993         (tree_ssa_forward_propagate_single_use_vars): Do so.
14994
14995 2007-06-06  Ian Lance Taylor  <iant@google.com>
14996
14997         * fold-const.c (merge_ranges): If range_successor or
14998         range_predecessor fail, just return 0.
14999
15000 2007-06-06  Uros Bizjak  <ubizjak@gmail.com>
15001
15002         PR tree-optimization/32216
15003         * tree-vectorizer.c (supportable_widening_operation): Determine
15004         signedness of FIX_TRUNC_EXPR from output operand.
15005         (supportable_narrowing_operation): Ditto.
15006         * tree-vect-generic.c (expand_vector_operations_1): Determine
15007         signedness of VEC_UNPACK_FLOAT_HI_EXPR and VEC_UNPACK_FLOAT_LO_EXPR
15008         from input operand.
15009
15010 2007-06-06  Thomas Neumann  <tneumann@users.sourceforge.net>
15011
15012         * config/i386/i386.c (enum pta_flags): Move out of struct scope...
15013         (struct pta): ...from here. Change flags to unsigned to avoid
15014         excessive casting (as it is used as a bit mask).
15015         (override_options): Add casts according to the coding convenventions.
15016         (x86_64_elf_unique_section): Likewise.
15017         (examine_argument): Avoid using C++ keywords as variable names.
15018         (construct_container): Likewise.
15019         (legitimize_pic_address): Likewise.
15020         (get_dllimport_decl): Cast according to the coding conventions. Use
15021         type safe memory macros.
15022         (legitimize_address): Cast according to the coding conventions.
15023         (emit_i387_cw_initialization): Corrected the type of slot to enum
15024         ix86_stack_slot.
15025         (ix86_init_machine_status): Use type safe memory macros.
15026         (bdesc_pcmpestr): Use UNKNOWN instead of integer 0.
15027         (bdesc_pcmpistr): Likewise.
15028         (bdesc_crc32): Likewise.
15029         (bdesc_sse_3arg): Likewise.
15030         (bdesc_2arg): Likewise.
15031         (bdesc_1arg): Likewise.
15032         (ix86_expand_sse_pcmpestr): Cast according to the coding conventions.
15033         (ix86_expand_sse_pcmpistr): Likewise.
15034         (ix86_expand_vec_set_builtin): Use EXPAND_NORMAL instead of integer 0.
15035         (ix86_builtin_vectorized_function): Change the type of fn to unsigned
15036         int to match the langhook definition.
15037         (ix86_builtin_conversion): Change the type of code to unsigned init to
15038         match the langhook definition.
15039         (ix86_preferred_reload_class): Avoid using C++ keywords as variable
15040         names.
15041         (ix86_preferred_output_reload_class): Likewise.
15042         (ix86_cannot_change_mode_class): Likewise.
15043         (ix86_memory_move_cost): Likewise.
15044         (ix86_rtx_costs): Cast the outer_code parameter to enum rtx_code to
15045         avoid excessive casting later on.
15046         (x86_output_mi_thunk): Avoid using C++ keywords as variable names.
15047
15048 2007-06-06  Uros Bizjak  <ubizjak@gmail.com>
15049
15050         * config/i386/sse.md (sse4_2_pcmpestr_cconly): Prefer pcmpestrm
15051         as flags setting insn.
15052         (sse4_2_pcmpistr_cconly): Prefer pcmpistrm as flags setting insn.
15053
15054 2007-06-06  Uros Bizjak  <ubizjak@gmail.com>
15055
15056         * config/i386/i386.md (UNSPEC_ROUNDP, UNSPEC_ROUNDS): Remove.
15057         (UNSPEC_ROUND): New.
15058         ("sse4_1_round<mode>2"): New insn pattern.
15059         ("rint<mode>2"): Expand using "sse4_1_round<mode>2" pattern for
15060         SSE4.1 targets.
15061         ("floor<mode>2"): Rename from floordf2 and floorsf2.  Macroize
15062         expander using SSEMODEF mode macro.  Expand using
15063         "sse4_1_round<mode>2" pattern for SSE4.1 targets.
15064         ("ceil<mode>2"): Rename from ceildf2 and ceilsf2.  Macroize
15065         expander using SSEMODEF mode macro.  Expand using
15066         "sse4_1_round<mode>2" pattern for SSE4.1 targets.
15067         ("btrunc<mode>2"): Rename from btruncdf2 and btruncsf2.  Macroize
15068         expander using SSEMODEF mode macro.  Expand using
15069         "sse4_1_round<mode>2" pattern for SSE4.1 targets.
15070         * config/i386/sse.md ("sse4_1_roundpd", "sse4_1_roundps"): Use
15071         UNSPEC_ROUND instead of UNSPEC_ROUNDP.
15072         ("sse4_1_roundsd", "sse4_1_roundss"): Use UNSPEC_ROUND instead of
15073         UNSPEC_ROUNDS.
15074
15075 2007-06-06  Jan Sjodin  <jan.sjodin@amd.com>
15076             Sebastian Pop  <sebpop@gmail.com>
15077
15078         * lambda.h (build_linear_expr): New.
15079         * lambda-code.c (lbv_to_gcc_expression, lle_to_gcc_expression):
15080         Use build_linear_expr, call fold and force_gimple_operand.
15081         (lambda_loopnest_to_gcc_loopnest): Check that there is
15082         something to insert.
15083         * testsuite/gcc.dg/tree-ssa/ltrans-6.c: New.
15084
15085 2007-06-05  Joerg Wunsch  <j.gnu@uriah.heep.sax.de>
15086
15087         PR preprocessor/23479
15088         * doc/extend.texi: Document the 0b-prefixed binary integer
15089         constant extension.
15090
15091 2007-06-05  Uros Bizjak  <ubizjak@gmail.com>
15092
15093         PR tree-optimization/32215
15094         * tree-vectorizer.c (supportable_widening_operation): Return false
15095         for unsupported FIX_TRUNC_EXPR tree code.
15096         (supportable_narrowing_operation): Ditto for FLOAT_EXPR tree code.
15097
15098 2007-06-06  Nathan Froyd  <froydnj@codesourcery.com>
15099
15100         * config/rs6000/rs6000.h (FIXED_SCRATCH): Use r0 as a scratch
15101         register on SPE targets.  Change documentation to reflect
15102         reality.
15103         * config/rs6000/rs6000.c (rs6000_conditional_register_usage):
15104         Change FIXED_SCRATCH to 14 and document why we're keeping r14
15105         out of the register allocation pool.
15106         (rs6000_reg_live_or_pic_offset_p): New function.
15107         (rs6000_emit_prologue): Move the actual saving of LR up to free
15108         r0 for holding r11.  Split saving of SPE 64-bit registers into
15109         its own case.  Ensure that offsets will always be in-range for
15110         'evstdd' by using r11 as a scratch register to point at the start
15111         of the SPE save area.  Save r11 if necessary, as it is the static
15112         chain register.
15113         (rs6000_emit_epilogue): Split restoring of SPE 64-bit registers
15114         into its own case.  Ensure that offsets will always be in-range
15115         for 'evldd' by using r11 as a scratch register to point at the
15116         start of the SPE save area.  Also adjust r11 when restoring
15117         the stack pointer to compensate for pre-loading r11.
15118
15119 2007-06-05  Thomas Neumann  <tneumann@users.sourceforge.net>
15120
15121         * cfg.c (init_flow): Use type safe memory macros.
15122         (alloc_block): Likewise.
15123         (unchecked_make_edge): Likewise.
15124         (dump_flow_info): Avoid using C++ keywords as variable names.
15125         (copy_original_table_clear): Cast according to the coding conventions.
15126         (copy_original_table_set): Likewise.
15127         * cfgexpand (label_rtx_for_bb): Likewise.
15128         (expand_gimple_basic_block): Likewise.
15129         * cfghooks.c (dump_bb): Likewise.
15130         (lv_adjust_loop_header_phi): Avoid using C++ keywords as
15131         variable names.
15132         (lv_add_condition_to_bb): Likewise.
15133         * cfglayout (relink_block_chain): Cast according to the coding
15134         conventions.
15135         (fixup_reorder_chain): Likewise.
15136         (fixup_fallthru_exit_predecessor): Likewise.
15137         * cfgloop.c (glb_enum_p): Likewise.
15138         (get_exit_description): Likewise.
15139         (dump_recorded_exit): Likewise.
15140         * cfgloop.h (enum loop_estimation): Move out of struct scope...
15141         (struct loop): ... from here.
15142         * cfgloopmanip.c (rpe_enum_p): Cast according to the coding
15143         conventions.
15144         * cfgrtl.c (rtl_create_basic_block): Likewise.
15145         (rtl_split_block): Likewise.
15146         (rtl_dump_bb): Likewise.
15147         (cfg_layout_split_block): Likewise.
15148         (init_rtl_bb_info): Use typesafe memory macros.
15149
15150         * graphds.h (struct graph_edge): Renamed edge to graph_edge.
15151         * graphds.h: Updated all usages of edge to graph_edge.
15152         * graphds.c: Likewise.
15153         * cfgloopanal.c: Likewise.
15154
15155 2007-06-05  Ian Lance Taylor  <iant@google.com>
15156
15157         * tree-vrp.c (compare_values_warnv): Check TREE_NO_WARNING on a
15158         PLUS_EXPR or MINUS_EXPR node before setting *strict_overflow_p.
15159         (extract_range_from_assert): Set TREE_NO_WARNING when creating an
15160         expression.
15161         (test_for_singularity): Likewise.
15162
15163 2007-06-05  H.J. Lu  <hongjiu.lu@intel.com>
15164
15165         * config/i386/constraints.md ("Y2"): Replaced by ...
15166         ("Yt"): This.
15167         * config/i386/i386.md: Likewise.
15168         * config/i386/mmx.md: Likewise.
15169         * config/i386/sse.md: Likewise.
15170
15171 2007-06-05  H.J. Lu  <hongjiu.lu@intel.com>
15172
15173         * config/i386/constraints.md ("z"): Replaced by ...
15174         ("Y0"): This.
15175         * config/i386/sse.md (sse4_1_blendvpd): Likewise.
15176         (sse4_1_blendvps): Likewise.
15177         (sse4_1_pblendvb): Likewise.
15178         (sse4_2_pcmpestr): Likewise.
15179         (sse4_2_pcmpestrm): Likewise.
15180         (sse4_2_pcmpestr_cconly): Likewise.
15181         (sse4_2_pcmpistr): Likewise.
15182         (sse4_2_pcmpistrm): Likewise.
15183         (sse4_2_pcmpistr_cconly): Likewise.
15184
15185 2007-06-05  Razya Ladelsky  <razya@il.ibm.com>
15186
15187         * matrix-reorg.c (transform_access_sites): Fix computation.
15188         (transform_allocation_sites): Same.
15189
15190 2007-06-05  Uros Bizjak  <ubizjak@gmail.com>
15191
15192         * config/i386/i386.c (override_options): Use
15193         TARGET_SUBTARGET32_ISA_DEFAULT to select default ix86_isa_flags.
15194
15195 2007-06-05  Uros Bizjak  <ubizjak@gmail.com>
15196
15197         * config/i386/predicates.md (reg_not_xmm0_operand): New predicate.
15198         (nonimm_not_xmm0_operand): Ditto.
15199         * config/i386/sse.md ("sse4_1_blendvpd"): Use "reg_not_xmm0_operand"
15200         as operand[0] and operand[1] predicate.  Use "nonimm_not_xmm0_operand"
15201         as operand[2] predicate.  Require "z" class XMM register for
15202         operand[3].  Adjust asm template.
15203         ("sse4_1_blendvpd"): Ditto.
15204         ("sse4_1_pblendvb"): Ditto.
15205         * config/i386/i386.c (ix86_expand_sse_4_operands_builtin): Do not
15206         force op2 into xmm0 register for variable blend instructions.
15207
15208 2007-06-04  Tom Tromey  <tromey@redhat.com>
15209
15210         * c-tree.h (start_enum): Update.
15211         (build_enumerator): Likewise.
15212         * c-decl.c (enum_next_value): Removed.
15213         (enum_overflow): Likewise.
15214         (start_enum): Add c_enum_contents argument.  Don't use globals.
15215         (build_enumerator): Likewise.
15216         * c-tree.h (struct c_enum_contents): New struct.
15217
15218 2007-06-04  Tom Tromey  <tromey@redhat.com>
15219
15220         * c-common.c (c_common_get_alias_set): Fix indentation.
15221
15222 2007-06-04  Ian Lance Taylor  <iant@google.com>
15223
15224         * tree-vrp.c (adjust_range_with_scev): When loop is not expected
15225         to overflow, reduce overflow infinity to regular infinity.
15226         (vrp_var_may_overflow): New static function.
15227         (vrp_visit_phi_node): Check vrp_var_may_overflow.
15228
15229 2007-06-04  Kazu Hirata  <kazu@codesourcery.com>
15230
15231         * stor-layout.c (layout_type): Remove duplicate code.
15232
15233 2007-06-04  Uros Bizjak  <ubizjak@gmail.com>
15234
15235         PR c/32191
15236         * c-common.c (c_define_builtins): Call targetm.init_builtins ()
15237         before build_common_builtin_nodes ().
15238
15239 2007-06-04  Steve Ellcey  <sje@cup.hp.com>
15240
15241         PR target/31733
15242         * cfgrtl.c (rtl_verify_flow_info): Skip notes when looking for barrier.
15243
15244 2007-06-04  Jan Hubicka  <jh@suse.cz>
15245
15246         * tree-predcom.c (replace_ref_with, initialize_root_vars_lm,
15247         reassociate_to_the_same_stmt): Call build_gimple_modify_stmt
15248         instead of _stat version.
15249
15250 2007-06-03  Zdenek Dvorak  <dvorakz@suse.cz>
15251
15252         PR tree-optimization/32194
15253         * tree-predcom.c (determine_offset): Check that both references have
15254         the same type.
15255
15256 2007-06-03  Zdenek Dvorak  <dvorakz@suse.cz>
15257
15258         * cfgloopmanip.c (remove_path, loopify, duplicate_loop_to_header_edge):
15259         Change dom_bbs to vector.  Add argument to iterate_fix_dominators call.
15260         * loop-unroll.c (unroll_loop_runtime_iterations): Ditto.
15261         * tree-cfg.c (tree_duplicate_sese_region): Change doms to vector.
15262         Add argument to iterate_fix_dominators call.
15263         (remove_edge_and_dominated_blocks): Pass vector to bbs_to_fix_dom.
15264         * gcse.c (hoist_code): Change domby to vector.
15265         * cfghooks.c (make_forwarder_block): Change doms_to_fix to vector.
15266         Add argument to iterate_fix_dominators call.
15267         * loop-doloop.c (doloop_modify): Changed recount_dominator to
15268         recompute_dominator.
15269         * lambda-code.c (perfect_nestify): Ditto.
15270         * cfgloopanal.c: Include graphds.h.
15271         (struct edge, struct vertex, struct graph, dump_graph, new_graph,
15272         add_edge, dfs, for_each_edge, free_graph): Moved to graphds.c.
15273         (mark_irreducible_loops): Use graphds_scc.  Remove argument from
15274         add_edge call.
15275         * graphds.c: New file.
15276         * graphds.h: New file.
15277         * dominance.c: Include vecprim.h, pointer-set.h and graphds.h.
15278         (get_dominated_by, get_dominated_by_region): Change return type to
15279         vector.
15280         (verify_dominators): Recompute all dominators and compare the results.
15281         (recount_dominator): Renamed to ...
15282         (recompute_dominator): ... this.  Do not check that the block is
15283         dominated by entry.
15284         (iterate_fix_dominators): Reimplemented.
15285         (prune_bbs_to_update_dominators, root_of_dom_tree,
15286         determine_dominators_for_sons): New functions.
15287         * et-forest.c (et_root): New function.
15288         * et-forest.h (et_root): Declare.
15289         * Makefile.in (graphds.o): Add.
15290         (cfgloopanal.o): Add graphds.h dependency.
15291         (dominance.o): Add graphds.h, vecprim.h and pointer-set.h dependency.
15292         * basic-block.h (get_dominated_by, get_dominated_by_region,
15293         iterate_fix_dominators): Declaration changed.
15294         (recount_dominator): Renamed to ...
15295         (recompute_dominator): ... this.
15296         * tree-ssa-threadupdate.c (thread_block): Free dominance info.
15297         (thread_through_all_blocks): Do not free dominance info.
15298
15299 2007-06-03  Andreas Schwab  <schwab@suse.de>
15300
15301         * config/m68k/m68k.c (override_options): Don't override
15302         REAL_MODE_FORMAT.
15303         * config/m68k/m68k-modes.def (SF, DF): Define to use
15304         motorola_single_format and motorola_double_format, resp.
15305         * real.c (motorola_single_format): Renamed from
15306         coldfire_single_format.
15307         (motorola_double_format): Renamed from coldfire_double_format.
15308         (encode_ieee_extended): Generate a proper canonical NaN image
15309         respecting canonical_nan_lsbs_set.
15310         (ieee_extended_motorola_format): Set canonical_nan_lsbs_set to
15311         true.
15312         * real.h: Adjust declarations.
15313
15314 2007-06-03  Kaz Kojima  <kkojima@gcc.gnu.org>
15315
15316         PR target/32163
15317         * config/sh/sh.md (symGOT_load): Don't schedule insns when
15318         the symbol is generated with the stack protector.
15319
15320 2007-06-03  Kazu Hirata  <kazu@codesourcery.com>
15321
15322         * config/m68k/m68k.c (m68k_attribute_table): Add "interrupt".
15323         (m68k_get_function_kind): Return m68k_fk_interrupt_handler on
15324         "interrupt".
15325         * doc/extend.texi (interrupt): Mention m68k.
15326
15327 2007-06-02  Uros Bizjak  <ubizjak@gmail.com>
15328
15329         * config/i386/i386.c (ix86_expand_sse_4_operands_builtin): Call
15330         safe_vector_operand() if input operand is VECTOR_MODE_P operand.
15331         (ix86_expand_sse_pcmpestr): Do not check operands for
15332         "register_operand", when insn operand predicate is "register_operand".
15333         (ix86_expand_sse_pcmpistr): Ditto.
15334
15335 2007-06-02  H.J. Lu  <hongjiu.lu@intel.com>
15336             Uros Bizjak  <ubizjak@gmail.com>
15337
15338         * config/i386/i386.h (enum reg_class) [SSE_FIRST_REG]: New.
15339         (SSE_CLASS_P): Use reg_class_subset_p between SSE_REGS.
15340         (REG_CLASS_NAMES): Add "FIRST_SSE_REG" string.
15341         (REG_CLASS_CONTENTS): Add members of FIRST_SSE_REG class.
15342         * config/i386/constraints.md ("z"): New register constraint
15343         for members of SSE_FIRST_REG class.
15344         * config/i386/i386-modes.def (CCA, CCC, CCO, CCS): New compare modes.
15345         * config/i386/i386.c (regclass_map): Change class of %xmm0 to
15346         SSE_FIRST_REG class.
15347         (put_condition_code) [EQ, NE]: Output suffixes for new compare modes.
15348         (ix86_cc_modes_compatible): Handle CCA, CCC, CCO and CCS modes.
15349         (IX86_BUILTIN_PCMPESTRI128): New for SSE4.2.
15350         (IX86_BUILTIN_PCMPESTRM128): Likewise.
15351         (IX86_BUILTIN_PCMPESTRA128): Likewise.
15352         (IX86_BUILTIN_PCMPESTRC128): Likewise.
15353         (IX86_BUILTIN_PCMPESTRO128): Likewise.
15354         (IX86_BUILTIN_PCMPESTRS128): Likewise.
15355         (IX86_BUILTIN_PCMPESTRZ128): Likewise.
15356         (IX86_BUILTIN_PCMPISTRI128): Likewise.
15357         (IX86_BUILTIN_PCMPISTRM128): Likewise.
15358         (IX86_BUILTIN_PCMPISTRA128): Likewise.
15359         (IX86_BUILTIN_PCMPISTRC128): Likewise.
15360         (IX86_BUILTIN_PCMPISTRO128): Likewise.
15361         (IX86_BUILTIN_PCMPISTRS128): Likewise.
15362         (IX86_BUILTIN_PCMPISTRZ128): Likewise.
15363         (struct builtin_description): Change "flag" field to unsigned.
15364         (bdesc_pcmpestr): New builtin description table.
15365         (bdesc_pcmpistr): Likewise.
15366         (ix86_init_mmx_sse_builtins): Define int_ftype_v16qi_int_v16qi_int_int,
15367         v16qi_ftype_v16qi_int_v16qi_int_int and int_ftype_v16qi_v16qi_int.
15368         Initialize pcmp[ei]str[im] insns for SSE4.2.
15369         (ix86_expand_sse_pcmpestr): New subroutine of ix86_expand_builtin.
15370         (ix86_expand_sse_pcmpistr): Likewise.
15371         (ix86_expand_builtin): Expand pcmp[ei]str[im] builtins for SSE4.2.
15372         * config/i386/i386.md (UNSPEC_PCMPESTR): New for SSE4.2.
15373         (UNSPEC_PCMPISTR): Likewise.
15374         * config/i386/sse.md (sse4_2_pcmpestr): New insn patern and splitter.
15375         (sse4_2_pcmpestri):New isns pattern.
15376         (sse4_2_pcmpestrm): Likewise.
15377         (sse4_2_pcmpestr_cconly): Likewise.
15378         (sse4_2_pcmpistr): New insn patern and splitter.
15379         (sse4_2_pcmpistri):New isns pattern.
15380         (sse4_2_pcmpistrm): Likewise.
15381         (sse4_2_pcmpistr_cconly): Likewise.
15382         * config/i386/smmintrin.h: Enable pcmp[ei]str[im] intrinsics
15383         in SSE4.2.
15384
15385 2007-06-01  David Daney  <ddaney@avtrex.com>
15386
15387         * config/mips/mips.c (mips_output_mi_thunk): Only load gp if not
15388         LOADGP_ABSOLUTE and not binds_local_p.
15389
15390 2007-06-01  Geoffrey Keating  <geoffk@apple.com>
15391
15392         * config/darwin.h (LINK_SPEC): Pass -fpie through to the linker.
15393
15394 2007-06-01  Ian Lance Taylor  <iant@google.com>
15395
15396         * tree-vrp.c (compare_name_with_value): Always set
15397         used_strict_overflow if we get a result from the variable itself.
15398
15399 2007-06-01  Ian Lance Taylor  <iant@google.com>
15400
15401         PR rtl-optimization/31455
15402         * lower-subreg.c (find_decomposable_subregs): Don't decompose
15403         subregs which have a cast between modes which are not tieable.
15404
15405 2007-06-01  Uros Bizjak  <ubizjak@gmail.com>
15406
15407         * expr.c (force_operand) [DIV, MOD, UDIV, UMOD, ASHIFTRT]: Remove
15408         breaks after return statements.
15409
15410 2007-06-01  Kaz Kojima  <kkojima@gcc.gnu.org>
15411
15412         * config/sh/sh.c (fpscr_set_from_mem): Call get_free_reg
15413         only after no_new_pseudos.
15414
15415 2007-05-31  Eric Christopher  <echristo@apple.com>
15416
15417         * expr.c (convert_move): Assert that we don't have a BLKmode
15418         operand.
15419         (store_expr): Handle BLKmode moves by calling emit_block_move.
15420
15421 2007-05-31  Daniel Berlin  <dberlin@dberlin.org>
15422
15423         * c-typeck.c (build_indirect_ref): Include type in error message.
15424         (build_binary_op): Pass types to binary_op_error.
15425         * c-common.c (binary_op_error): Take two type arguments, print out
15426         types with error.
15427         * c-common.h (binary_op_error): Update prototype.
15428
15429 2007-05-31  H.J. Lu  <hongjiu.lu@intel.com>
15430
15431         * config/i386/i386.c: Correct coments on -mno-sse4.
15432
15433 2007-05-31  H.J. Lu  <hongjiu.lu@intel.com>
15434
15435         * config.gcc (i[34567]86-*-*): Add nmmintrin.h to extra_headers.
15436         (x86_64-*-*): Likewise.
15437         * config/i386/i386.c (OPTION_MASK_ISA_MMX_UNSET): New.
15438         (OPTION_MASK_ISA_3DNOW_UNSET): Likewise.
15439         (OPTION_MASK_ISA_SSE_UNSET): Likewise.
15440         (OPTION_MASK_ISA_SSE2_UNSET): Likewise.
15441         (OPTION_MASK_ISA_SSE3_UNSET): Likewise.
15442         (OPTION_MASK_ISA_SSSE3_UNSET): Likewise.
15443         (OPTION_MASK_ISA_SSE4_1_UNSET): Likewise.
15444         (OPTION_MASK_ISA_SSE4_2_UNSET): Likewise.
15445         (OPTION_MASK_ISA_SSE4): Likewise.
15446         (OPTION_MASK_ISA_SSE4_UNSET): Likewise.
15447         (OPTION_MASK_ISA_SSE4A_UNSET): Likewise.
15448         (ix86_handle_option): Use OPTION_MASK_ISA_*_UNSET.  Handle SSE4.2.
15449         (override_options): Support SSE4.2.
15450         (ix86_build_const_vector): Support SImode and DImode.
15451         (ix86_build_signbit_mask): Likewise.
15452         (ix86_expand_int_vcond): Support V2DImode.
15453         (IX86_BUILTIN_CRC32QI): New for SSE4.2.
15454         (IX86_BUILTIN_CRC32HI): Likewise.
15455         (IX86_BUILTIN_CRC32SI): Likewise.
15456         (IX86_BUILTIN_CRC32DI): Likewise.
15457         (IX86_BUILTIN_PCMPGTQ): Likewise.
15458         (bdesc_crc32): Likewise.
15459         (bdesc_sse_3arg): Likewise.
15460         (ix86_expand_crc32): Likewise.
15461         (ix86_init_mmx_sse_builtins): Support SSE4.2.
15462         (ix86_expand_builtin): Likewise.
15463         * config/i386/i386.h (TARGET_CPU_CPP_BUILTINS): Define
15464         __SSE4_2__ for -msse4.2.
15465         * config/i386/i386.md (UNSPEC_CRC32): New for SSE4.2.
15466         (CRC32MODE): Likewise.
15467         (crc32modesuffix): Likewise.
15468         (crc32modeconstraint): Likewise.
15469         (sse4_2_crc32<mode>): Likewise.
15470         (sse4_2_crc32di): Likewise.
15471         * config/i386/i386.opt (msse4.2): New for SSE4.2.
15472         (msse4): Likewise.
15473         * config/i386/nmmintrin.h: New. The dummy SSE4.2 intrinsic header file.
15474         * config/i386/smmintrin.h: Add SSE4.2 intrinsics.
15475         * config/i386/sse.md (sse4_2_gtv2di3): New pattern for SSE4.2.
15476         (vcond<mode>): Use SSEMODEI instead of SSEMODE124.
15477         (vcondu<mode>): Likewise.
15478         * doc/extend.texi: Document SSE4.2 built-in functions.
15479         * doc/invoke.texi: Document -msse4.2/-msse4.
15480
15481 2007-05-31  Zdenek Dvorak  <dvorakz@suse.cz>
15482
15483         PR tree-optimization/32160
15484         * tree-predcom.c (predcom_tmp_var): New function.  Mark created
15485         variable as gimple reg.
15486         (initialize_root_vars, initialize_root_vars_lm): Use predcom_tmp_var.
15487
15488 2007-05-31  Kazu Hirata  <kazu@codesourcery.com>
15489
15490         * gcc.c (main): Don't consider linker options when issuing the
15491         warning about a linker input file not being used.
15492
15493 2007-05-30  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
15494
15495         * tree-vrp.c (compare_names): Initialize sop.
15496
15497 2007-05-30  Dirk Mueller  <dmueller@suse.de>
15498
15499         * cgraphunit.c (cgraph_analyze_function): Remove
15500         computation of inline parameters.
15501
15502 2007-05-30  Uros Bizjak  <ubizjak@gmail.com>
15503
15504         * config/i386/darwin.h (TARGET_SUBTARGET_DEFAULT): Undef before define.
15505
15506 2007-05-30  Richard Sandiford  <richard@codesourcery.com>
15507
15508         * config.gcc (arm-wrs-vxworks): Remove dbxelf.h from tm_file.
15509         Add vx-common.h.  Include vxworks.h between vx-common.h and
15510         arm/vxworks.h.
15511         * config/vx-common.h (DWARF2_UNWIND_INFO): Undefine before
15512         redefining.
15513         * config/vxworks.h (TARGET_ASM_CONSTRUCTOR): Likewise.
15514         (TARGET_ASM_DESTRUCTOR): Likewise.
15515         * config/arm/vxworks.h (TARGET_OS_CPP_BUILTINS): Check arm_arch_xscale
15516         instead of arm_is_xscale.  Use VXWORKS_OS_CPP_BUILTINS.
15517         (OVERRIDE_OPTIONS, SUBTARGET_CPP_SPEC): Define.
15518         (CC1_SPEC): Add -tstrongarm.  Line up backslashes.
15519         (VXWORKS_ENDIAN_SPEC): Define.
15520         (ASM_SPEC): Add VXWORKS_ENDIAN_SPEC.
15521         (LIB_SPEC, STARTFILE_SPEC, ENDFILE_SPEC): Redefine to their
15522         VXWORKS_* equivalents.
15523         (LINK_SPEC): Likewise, but add VXWORKS_ENDIAN_SPEC.
15524         (ASM_FILE_START): Delete.
15525         (TARGET_VERSION): Reformat.
15526         (FPUTYPE_DEFAULT, FUNCTION_PROFILER): Define.
15527         (DEFAULT_STRUCTURE_SIZE_BOUNDARY): Define.
15528         * config/arm/t-vxworks (LIB1ASMSRC, LIB1ASMFUNCS): Define.
15529         (FPBIT, DPBIT): Define.
15530         (fp-bit.c, dp-bit.c): New rules.
15531         (MULTILIB_OPTIONS): Add strongarm, -mrtp and -mrtp/-fPIC multilibs.
15532         (MULTILIB_MATCHES, MULTILIB_EXCEPTIONS): Define.
15533         * config/arm/arm-protos.h (arm_emit_call_insn): Declare.
15534         * config/arm/arm.h: Include vxworks-dummy.h.
15535         * config/arm/arm.c (arm_elf_asm_constructor, arm_elf_asm_destructor):
15536         Mark with ATTRIBUTE_UNUSED.
15537         (arm_override_options): Do not allow VxWorks RTP PIC to be used
15538         for Thumb.  Force r9 to be the PIC register for VxWorks RTPs and
15539         make it incompatible with -msingle-pic-base.
15540         (arm_function_ok_for_sibcall): Return false for calls that might
15541         go through a VxWorks PIC PLT entry.
15542         (require_pic_register): New function, split out from...
15543         (legitimize_pic_address): ...here.  Do not use GOTOFF accesses
15544         for VxWorks RTPs.
15545         (arm_load_pic_register): Handle the VxWorks RTP initialization
15546         sequence.  Use pic_reg as a shorthand for cfun->machine->pic_reg.
15547         (arm_emit_call_insn): New function.
15548         (arm_assemble_integer): Do not use GOTOFF accesses for VxWorks RTP.
15549         * config/arm/arm.md (UNSPEC_PIC_OFFSET): New unspec number.
15550         (pic_offset_arm): New pattern.
15551         (call, call_value): Use arm_emit_call_insn.
15552         (call_internal, call_value_internal): New expanders.
15553         * config/arm/lib1funcs.asm (__PLT__): Define to empty for
15554         VxWorks unless __PIC__.
15555
15556 2007-05-30  Eric Christopher  <echristo@gmail.com>
15557
15558         * genrecog.c: Include regs.h in generated file.
15559         * genemit.c: Ditto. Fix up formatting.
15560         * config/mn10300/constraints.md: New.
15561         * config/mn10300/mn10300.md: Include.
15562         * config/mn10300/mn10300.c(mn10300_secondary_reload_class):
15563         Fix up for removed macro.
15564         * config/mn10300/predicates.md (call_address_operand): Ditto.
15565         * config/mn10300/mn10300.h (REG_CLASS_FROM_LETTER): Delete.
15566         (CONST_OK_FOR_I): Ditto.
15567         (CONST_OK_FOR_J): Ditto.
15568         (CONST_OK_FOR_K): Ditto.
15569         (CONST_OK_FOR_L): Ditto.
15570         (CONST_OK_FOR_M): Ditto.
15571         (CONST_OK_FOR_N): Ditto.
15572         (CONST_DOUBLE_OK_FOR_LETTER_P): Ditto.
15573         (OK_FOR_Q): Ditto.
15574         (OK_FOR_R): Ditto.
15575         (OK_FOR_T): Ditto.
15576         (EXTRA_CONSTRAINT): Ditto.
15577
15578 2007-05-30 Uros Bizjak <ubizjak@gmail.com>
15579
15580         * config/i386/i386.h (MASK_64BIT, MASK_MMX, MASK_3DNOW*, MASK_SSE*):
15581         Remove defines.
15582         * config/i386/biarch.h (TARGET_64BIT_DEFAULT): Define to
15583         OPTION_MASK_ISA_64BIT.
15584         * config/i386/i386.c: Rename MASK_* macros to OPTION_MASK_ISA_*.
15585
15586 2007-05-30  Richard Guenther  <rguenther@suse.de>
15587
15588         PR middle-end/32152
15589         * gimplify.c (gimplify_omp_atomic_pipeline): Use correct
15590         types for comparison.
15591         * fold-const.c (fold_comparison): Call maybe_canonicalize_comparison
15592         with original typed arguments.
15593         * config/i386/i386.c (ix86_gimplify_va_arg): Fix type mismatches.
15594
15595 2007-05-30  Jakub Jelinek  <jakub@redhat.com>
15596
15597         PR tree-optimization/31769
15598         * except.c (duplicate_eh_regions): Clear prev_try if
15599         ERT_MUST_NOT_THROW region is inside of ERT_TRY region.
15600
15601 2007-05-30  Zdenek Dvorak  <dvorakz@suse.cz>
15602
15603         * tree-scalar-evolution.c (scev_const_prop): Do not create labels.
15604         * tree-ssa-sink.c (statement_sink_location): Return basic block and
15605         bsi of the location where statements should be inserted.
15606         (sink_code_in_bb): Take bsi from statement_sink_location.
15607         * lambda-code.c (lambda_loopnest_to_gcc_loopnest): Use bsi_after_labels
15608         instead of bsi_start.
15609         * tree-profile.c (tree_gen_ic_func_profiler): Pass BSI_NEW_STMT to
15610         bsi_insert_after.
15611         * tree-cfg.c (bsi_move_after): Pass BSI_NEW_STMT to bsi_insert_after.
15612         (bsi_move_before): Document inconsistency with bsi_move_after.
15613         (tree_redirect_edge_and_branch): Do not create labels if not necessary.
15614
15615 2007-05-30 Uros Bizjak <ubizjak@gmail.com>
15616
15617         * config/i386/i386.h (TARGET_ABM): New define.
15618         (TARGET_POPCNT): Ditto.
15619         (TARGET_64BIT, TARGET_MMX, TARGET_3DNOW, TARGET_3DNOW_A, TARGET_SSE*):
15620         New temporary defines to redefine from OPTION_ISA_* defines.
15621         (MASK_64BIT, MASK_MMX, MASK_3DNOW, MASK_3DNOW_A, MASK_SSE*):
15622         New temporary defines to redefine from OPTION_MASK_ISA_* defines.
15623         (ix86_isa_flags): New extern int declaration.
15624         (TARGET_SUBTARGET_DEFAULT): New define.
15625         (TARGET_SUBTARGET_ISA_DEFAULT): Ditto.
15626         (TARGET_SUBTARGET32_DEFAULT): Ditto.
15627         (TARGET_SUBTARGET32_ISA_DEFAULT): Ditto.
15628         (TARGET_SUBTARGET64_ISA_DEFAULT): Ditto.
15629         * config/i386/unix.h: Undef TARGET_SUBTARGET_DEFAULT before define.
15630         * config/i386/darwin.h: Change TARGET_64BIT define to
15631         OPTION_ISA_64BIT.
15632
15633         * config/i386/i386.opt (m3dnowa): Define as undocumented option
15634         using existing "ix86_isa_flags" varible.
15635         (m32, m64): Use existing "ix86_isa_flags" variable.
15636         (mmmx, m3dnow): Ditto.
15637         (msse, msse2, msse3, mssse3, msse4.1, msse4a): Ditto.
15638         (mabm): Define as non-negative option using "x86_abm" variable.
15639         (mpopcnt): Define as non-negative option using "x86_popcnt" variable.
15640
15641         * config/i386/i386.c (ix86_arch_features) [X86_ARCH_CMOVE]:
15642         Rewrite feature test bitmap.
15643         (ix86_isa_flags): New initialized global int varible.
15644         (ix86_isa_flags_explicit): New static int variable.
15645         (ix86_handle_option): Set "ix86_isa_flags_explicit" when mmmx, m3dnow,
15646         msse, msse2, msse3, msse4.1 and msse4a option is processed.  Change
15647         i86_isa_flags and ix86_isa_flags_explicit, not target_flags and
15648         target_flags_explicit.
15649         (override_options): Remove "target_enable" and "target_disable" fields
15650         from "struct ptt". Update processor_target_table accordingly. Remove
15651         PTA_PREFETCH_SSE from processor_alias_table entry if PTE_SSE is
15652         defined and rearrange PTA_* bits.  Use "ix86_isa_flags" instead of
15653         "target_flags" and "ix86_isa_flags_explicit" instead of
15654         "target_flags_explicit" when masked with MASK_64BIT, MASK_MMX,
15655         MASK_3DNOW, MASK_3DNOW_A or MASK_SSE*.  Set "x86_abm" to true when
15656         PTA_ABM is set in processor_alias_table flags entry.  Set "x86_popcnt"
15657         to true when either of PTA_POPCNT or PTA_ABM is set in
15658         processor_alias_table flags entry.  Set "x86_prefetch_sse" to true
15659         when either of PTA_PREFETCH_SSE or PTA_SSE is set in
15660         processor_alias_table flags entry.  Remove handling of
15661         "target_enable" and "target_disable" fields of processor_target_table.
15662         Mask "target_flags" with TARGET_SUBTARGET32_DEFAULT for 32-bit
15663         targets or with TARGET_SUBTARGET64_DEFAULT for 64-bit targets.
15664         Mask "ix86_isa_flags" with TARGET_SUBTARGET32_ISA_DEFAULT for 32-bit
15665         targets or with TARGET_SUBTARGET64_ISA_DEFAULT for 64-bit targets.
15666         (def_builtin): Mask "mask" variable with "ix86_isa_flags", not
15667         "target_flags".
15668         (TARGET_DEFAULT_TARGET_FLAGS): Do not include TARGET_64BIT_DEFAULT.
15669
15670 2007-05-29  David Daney  <ddaney@avtrex.com>
15671
15672         PR gcc/31975
15673         * config/mips/mips.c (mips_output_mi_thunk): Emit
15674         NOTE_INSN_PROLOGUE_END at beginning of the thunk.
15675
15676 2007-05-29  Hui-May Chang  <hm.chang@apple.com>
15677         * config/i386/i386.c (ix86_function_regparm): Added checking of
15678         ix86_force_align_arg_pointer to determine the number of
15679         register parameters.
15680
15681 2007-05-29  Zdenek Dvorak  <dvorakz@suse.cz>
15682
15683         * tree-vectorizer.h (DR_MISALIGNMENT): Cast aux to integer.
15684         (SET_DR_MISALIGNMENT): New.
15685         * tree-vect-analyze.c (vect_compute_data_ref_alignment,
15686         vect_update_misalignment_for_peel, vect_enhance_data_refs_alignment):
15687         Use SET_DR_MISALIGNMENT.
15688         * tree-predcom.c (split_data_refs_to_components): Cast dr->aux from
15689         pointer.
15690         * tree-data-ref.c (create_data_ref, compute_all_dependences,
15691         find_loop_nest): Export.
15692         * tree-data-ref.h (struct data_reference): Change aux field to pointer.
15693         (create_data_ref, compute_all_dependences, find_loop_nest): Declare.
15694         * tree-ssa-loop-prefetch.c: Include tree-data-ref.h.
15695         (L1_CACHE_SIZE_BYTES, L2_CACHE_SIZE_BYTES, NONTEMPORAL_FRACTION):
15696         New macros.
15697         (struct mem_ref): Add field reuse_distance.
15698         (find_or_create_group, record_ref): Use XNEW instead of xcalloc.
15699         Initialize reuse_distance field.
15700         (issue_prefetch_ref): Select temporality of prefetch according to
15701         reuse_distance.
15702         (volume_of_references, volume_of_dist_vector, add_subscript_strides,
15703         self_reuse_distance, determine_loop_nest_reuse): New functions.
15704         (loop_prefetch_arrays): Call determine_loop_nest_reuse.
15705         (tree_ssa_prefetch_arrays): Dump L2 cache size.
15706         * Makefile.in (tree-ssa-loop-prefetch.o): Add TREE_DATA_REF_H
15707         dependency.
15708
15709 2007-05-29  Daniel Berlin  <dberlin@dberlin.org>
15710
15711         * tree-ssa-alias.c: Add aliasing overview.
15712
15713 2007-05-29  Zuxy Meng  <zuxy.meng@gmail.com>
15714             Danny Smith  <dannysmith@users.sourceforge.net>
15715
15716         PR target/29498
15717         * config/i386/t-crtfm: Compile crtfastmath.o with
15718         -minline-all-stringops.
15719         * config/i386/cygwin.h (ENDFILE_SPECS): Add crtfastmath.o.
15720         * config/i386/mingw32.h (ENDFILE_SPECS): Add crtfastmath.o.
15721
15722 2007-05-28  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
15723
15724         * doc/md.texi: Document constraints on HP PA-RISC.
15725
15726         * pa/constraints.md: New file.
15727         * pa.md: Include constraints.md.
15728         * pa.c (cint_ok_for_move): Avoid using CONST_OK_FOR_LETTER_P.
15729         (integer_store_memory_operand, ldil_cint_p): New functions.
15730         * pa-protos.h (integer_store_memory_operand, ldil_cint_p): Declare.
15731         * pa.h (CONST_OK_FOR_LETTER_P, CONST_DOUBLE_OK_FOR_LETTER_P,
15732         IS_RELOADING_PSEUDO_P, EXTRA_CONSTRAINT): Remove.
15733         * pa32-regs.h (REG_CLASS_FROM_LETTER): Remove.
15734         * pa64-regs.h (REG_CLASS_FROM_LETTER): Remove.
15735
15736 2007-05-28  Andrew Pinski  <Andrew_pinski@playstation.sony.com>
15737
15738         PR c/31339
15739         * c-typeck.c (build_unary_op <case PREINCREMENT_EXPR,
15740         case POSTINCREMENT_EXPR, case PREDECREMENT_EXPR,
15741         case POSTDECREMENT_EXPR>): Return the error_mark_node
15742         if either the real or imaginary parts would an
15743         error_mark_node.
15744
15745 2007-05-28  Daniel Berlin  <dberlin@dberlin.org>
15746
15747         * tree-ssa-dce.c (eliminate_unnecessary_stmts): Release LHS SSA
15748         name when we remove it from a call.
15749
15750 2007-05-28  Kazu Hirata  <kazu@codesourcery.com>
15751
15752         * targhooks.c (default_narrow_bitfield): Remove.
15753         * targhooks.h: Remove the prototype for
15754         default_narrow_bitfield.
15755
15756         * langhooks-def.h: Remove the prototype for
15757         hook_get_alias_set_0.
15758         * langhooks.c (hook_get_alias_set_0): Remove.
15759
15760         * global.c (EXECUTE_IF_CONFLICT): Remove.
15761
15762 2007-05-28  Andrew Pinski  <andrew_pinski@playstation.sony.com>
15763
15764         PR tree-opt/32100
15765         * fold-const.c (tree_expr_nonnegative_warnv_p): Don't
15766         return true when truth_value_p is true and the type
15767         is of signed:1.
15768
15769 2007-05-28  Gerald Pfeifer  <gerald@pfeifer.com>
15770
15771         * doc/install.texi (Prerequisites): We no longer require Autoconf
15772         2.13 for the top-level.
15773
15774 2007-05-28  Uros Bizjak  <ubizjak@gmail.com>
15775
15776         * target/i386/i386.c (ix86_expand_vector_move): Expand unaligned
15777         memory access via x86_expand_vector_move_misalign() only for
15778         TImode values on 32-bit targets.
15779
15780 2007-05-28  Razya Ladelsky  <razya@il.ibm.com>
15781
15782         * matrix-reorg.c: New file. Implement matrix flattening and
15783         transposing optimization.
15784         * tree-pass.h: Add matrix reorg pass.
15785         * common.opt: Add fipa-mreorg flag.
15786         * Makefile.in: Add matrix-reorg.c.
15787         * passes.c: Add matrix reorg pass.
15788         * varpool.c (add_new_static_var): New function.
15789         * cgraph.h (add_new_static_var): Declare.
15790
15791 2007-05-27  Eric Christopher  <echristo@apple.com>
15792
15793         * config/rs6000/rs6000.c (rs6000_emit_prologue): Update
15794         sp_offset depending on stack size. Save r12 depending
15795         on registers we're saving later.
15796         (rs6000_emit_epilogue): Update sp_offset depending only
15797         on stack size.
15798
15799 2007-05-27  Zdenek Dvorak  <dvorakz@suse.cz>
15800
15801         * tree-vrp.c (execute_vrp): Do not check whether current_loops == NULL.
15802         * tree-chrec.c (evolution_function_is_invariant_rec_p): Ditto.
15803         * ifcvt.c (if_convert): Ditto.
15804         * tree-ssa-threadupdate.c (thread_block): Ditto.
15805         (thread_through_all_blocks): Ditto.  Assert that loops were analysed.
15806         * tree-ssa-loop-manip.c (rewrite_into_loop_closed_ssa,
15807         verify_loop_closed_ssa): Check number_of_loops instead of
15808         current_loops.
15809         * predict.c (tree_estimate_probability): Ditto.
15810         * tree-if-conv.c (main_tree_if_conversion): Ditto.
15811         * tree-ssa-loop-ch.c (copy_loop_headers): Ditto.
15812         * modulo-sched.c (sms_schedule): Ditto.
15813         * tree-scalar-evolution.c (scev_const_prop): Ditto.
15814         (scev_finalize): Do not do anything if scev analysis was not
15815         initialized.
15816         * cfgloopanal.c (mark_irreducible_loops): Do not check whether
15817         current_loops == NULL.
15818         (mark_loop_exit_edges): Check number_of_loops instead of current_loops.
15819         * loop-init.c (loop_optimizer_init): Do not free current_loops when
15820         there are no loops.
15821         (loop_optimizer_finalize): Assert that loops were analyzed.
15822         (rtl_move_loop_invariants, rtl_unswitch, rtl_unroll_and_peel_loops,
15823         rtl_doloop): Check number_of_loops instead of current_loops.
15824         * tree-ssa-loop.c (tree_loop_optimizer_init): Do not check whether
15825         current_loops == NULL.
15826         (tree_ssa_loop_init, tree_ssa_loop_im, tree_ssa_loop_unswitch,
15827         gate_tree_vectorize tree_linear_transform, check_data_deps,
15828         tree_ssa_loop_ivcanon, tree_ssa_empty_loop, tree_ssa_loop_bounds,
15829         tree_complete_unroll, tree_ssa_loop_prefetch, tree_ssa_loop_ivopts):
15830         Check number_of_loops instead of current_loops.
15831         (tree_ssa_loop_done): Do not check whether current_loops == NULL.
15832         * tree-ssa-pre.c (fini_pre): Do not take do_fre argument.  Always
15833         free loops if available.
15834         (execute_pre): Do not pass do_fre to fini_pre.
15835
15836 2007-05-27  Tobias Burnus  <burnus@net-b.de>
15837
15838         PR middle-end/32083
15839         * real.c (mpfr_from_real): Fix sign of -Inf.
15840
15841 2007-05-27  H.J. Lu  <hongjiu.lu@intel.com>
15842
15843         * tree-vect-transform.c (vectorizable_conversion): Initialize
15844         tree_code variables to ERROR_MARK.
15845         (vectorizable_type_demotion): Likewise.
15846         (vectorizable_type_promotion): Likewise.
15847
15848 2007-05-26  Uros Bizjak  <ubizjak@gmail.com>
15849
15850         PR target/32065
15851         * config/i386/i386.md (movti): Handle push operands via
15852         ix86_expand_push().
15853
15854 2007-05-26  Kazu Hirata  <kazu@codesourcery.com>
15855
15856         * basic-block.h: Remove the prototype for merge_seq_blocks.
15857         * cfgcleanup.c (merge_seq_blocks): Remove.
15858
15859         * tree-flow.h: Remove the prototype for is_aliased_with.
15860         * tree-ssa-alias.c (is_aliased_with): Remove.
15861
15862 2007-05-26  H.J. Lu  <hongjiu.lu@intel.com>
15863
15864         * config/i386/i386-protos.h (ix86_expand_sse4_unpack): New.
15865
15866         * config/i386/i386.c (ix86_expand_sse4_unpack): New.
15867
15868         * config/i386/sse.md (vec_unpacku_hi_v16qi): Call
15869         ix86_expand_sse4_unpack if SSE4.1 is enabled.
15870         (vec_unpacks_hi_v16qi): Likewise.
15871         (vec_unpacku_lo_v16qi): Likewise.
15872         (vec_unpacks_lo_v16qi): Likewise.
15873         (vec_unpacku_hi_v8hi): Likewise.
15874         (vec_unpacks_hi_v8hi): Likewise.
15875         (vec_unpacku_lo_v8hi): Likewise.
15876         (vec_unpacks_lo_v8hi): Likewise.
15877         (vec_unpacku_hi_v4si): Likewise.
15878         (vec_unpacks_hi_v4si): Likewise.
15879         (vec_unpacku_lo_v4si): Likewise.
15880         (vec_unpacks_lo_v4si): Likewise.
15881
15882 2007-05-26  Kazu Hirata  <kazu@codesourcery.com>
15883
15884         * c-typeck.c, config/arm/arm.c, config/darwin.c,
15885         config/sh/symbian.c, gcc.c, ipa-cp.c, ipa-inline.c, loop-iv.c,
15886         omega.c, tree-ssa-loop-niter.c, treestruct.def: Fix typos and
15887         follow spelling conventions in various
15888         warning/error/diagnostic messages.
15889
15890         * config/i386/i386.c, config/pa/pa.c, config/spu/spu.c,
15891         df-problems.c, df-scan.c, domwalk.c, ebitmap.c, ebitmap.h,
15892         fold-const.c, gcc.c, ipa-type-escape.c, omega.c, omega.h,
15893         tree-ssa-coalesce.c, tree-ssa-live.c, tree-ssa-structalias.c,
15894         tree-vrp.c: Fix comment typos.  Follow spelling conventions.
15895         * doc/tm.texi: Follow spelling conventions.
15896
15897 2007-05-25  Andrew Pinski  <andrew_pinski@playstation.sony.com>
15898
15899         PR tree-opt/32090
15900         * tree-ssa-forwprop.c
15901         (forward_propagate_addr_into_variable_array_index): Remove
15902         the lhs argument.  Use the type of def_rhs instead of lhs.
15903         (forward_propagate_addr_expr_1): Update use of
15904         forward_propagate_addr_into_variable_array_index.
15905
15906 2007-05-25  Sandra Loosemore  <sandra@codesourcery.com>
15907             Nigel Stephens  <nigel@mips.com>
15908
15909         * config/mips/mips.c (mips_attribute_table): Add "near" and "far"
15910         function attributes, "far" being an alias for "long_call".
15911         (TARGET_COMP_TYPE_ATTRIBUTES): Define as mips_comp_type_attributes.
15912         (mips_near_type_p, mips_far_type_p): New.
15913         (mips_comp_type_attributes): New function to check that attributes
15914         attached to a function type are compatible.
15915         (mips_output_mi_thunk): Test SYMBOL_REF_LONG_CALL_P() rather than
15916         TARGET_LONG_CALLS when deciding whether we can do a direct sibcall
15917         to the target function of the thunk.
15918         (mips_encode_section_info): Check for "near" and "far" function
15919         attributes, and always set the SYMBOL_FLAG_LONG_CALL bit explicitly.
15920
15921         * config/mips/predicates.md (const_call_insn_operand): Test only
15922         SYMBOL_REF_LONG_CALL_P() and not TARGET_LONG_CALLS.
15923
15924         * doc/extend.texi (Function Attributes): Document MIPS "near" and
15925         "far" attributes.
15926
15927         * testsuite/gcc.target/mips/near-far-1.c: New test case.
15928         * testsuite/gcc.target/mips/near-far-2.c: New test case.
15929         * testsuite/gcc.target/mips/near-far-3.c: New test case.
15930         * testsuite/gcc.target/mips/near-far-4.c: New test case.
15931
15932 2007-05-25  Eric Christopher  <echristo@apple.com>
15933
15934         * config.gcc: Add i386/t-fprules-softfp64 and soft-fp/t-softfp
15935         to x86-darwin configurations.
15936         * config/i386/t-darwin: Add softfp support.
15937         * config/i386/t-darwin64: Ditto.
15938         * config/i386/sfp-machine.h: If mach then don't use
15939         aliasing, emit a stub to call.
15940
15941 2007-05-25  Kazu Hirata  <kazu@codesourcery.com>
15942
15943         * cfglayout.c, cgraphunit.c, config/avr/avr.c, fold-const.c,
15944         haifa-sched.c, optabs.h, tree-affine.c, tree-data-ref.c,
15945         tree-predcom.c, tree-ssa-alias-warnings.c,
15946         tree-ssa-forwprop.c, tree-vect-analyze.c, tree-vrp.c: Fix
15947         comment typos.  Follow spelling conventions.
15948         * doc/cpp.texi, doc/invoke.texi: Fix typos.
15949
15950 2007-05-26  Uros Bizjak  <ubizjak@gmail.com>
15951
15952         PR target/32065
15953         * target/i386/i386.c (ix86_expand_vector_move): Force SUBREGs of
15954         constants into memory.  Expand unaligned memory references for
15955         SSE modes via x86_expand_vector_move_misalign() function.
15956
15957 2007-05-25  Uros Bizjak  <ubizjak@gmail.com>
15958
15959         * config/i386/sse.md (*vec_extractv2di_1_sse2): Do not calculate
15960         "memory" attribute for "sseishft" type insn without operands[2].
15961
15962 2007-05-25  Dirk Mueller  <dmueller@suse.de>
15963             Marcus Meissner <meissner@suse.de>
15964
15965         * doc/extend.texi (alloc_size): New attribute.
15966         * c-common.c (handle_alloc_size_attribute): New.
15967         * tree-object-size.c (alloc_object_size): Use alloc_size
15968         attribute, if available.
15969
15970 2007-05-25  H.J. Lu  <hongjiu.lu@intel.com>
15971
15972         * config/i386/i386.c (__builtin_ia32_vec_ext_v2df): Mark it
15973         with MASK_SSE2.
15974         (__builtin_ia32_vec_ext_v2di): Likewise.
15975         (__builtin_ia32_vec_ext_v4si): Likewise.
15976         (__builtin_ia32_vec_ext_v8hi): Likewise.
15977         (__builtin_ia32_vec_ext_v16qi): Likewise.
15978         (__builtin_ia32_vec_set_v8hi): Likewise.
15979
15980 2007-05-25  H.J. Lu  <hongjiu.lu@intel.com>
15981
15982         * config/i386/sse.md (*vec_extractv2di_1_sse2): Correct shift.
15983
15984 2007-05-25  Richard Sandiford  <richard@codesourcery.com>
15985
15986         * config/arm/arm-protos.h (arm_encode_call_attribute): Delete.
15987         (arm_is_longcall_p): Rename to...
15988         (arm_is_long_call_p): ...this.  Take a single tree argument and
15989         return a bool.
15990         * config/arm/arm.h (CALL_SHORT, CALL_LONG, CALL_NORMAL): Delete.
15991         (CUMULATIVE_ARGS): Remove call_cookie.
15992         (SHORT_CALL_FLAG_CHAR, LONG_CALL_FLAG_CHAR, ENCODED_SHORT_CALL_ATTR_P)
15993         (ENCODED_LONG_CALL_ATTR_P): Delete.
15994         (ARM_NAME_ENCODING_LENGTHS): Remove SHORT_CALL_FLAG_CHAR and
15995         LONG_CALL_FLAG_CHAR cases.
15996         (ARM_DECLARE_FUNCTION_SIZE): Delete.
15997         * config/arm/elf.h (ASM_DECLARE_FUNCTION_SIZE): Don't use
15998         ARM_DECLARE_FUNCTION_SIZE.
15999         * config/arm/arm.c (arm_init_cumulative_args): Don't set call_cookie.
16000         (arm_function_arg): Return const0_rtx for VOIDmode arguments.
16001         (arm_encode_call_attribute, current_file_function_operand): Delete.
16002         (arm_function_in_section_p): New function.
16003         (arm_is_longcall_p): Rename to...
16004         (arm_is_long_call_p): ...this.  Take the target function as a single
16005         argument and return a bool.  Do not rely on call cookies.  Check
16006         whether the target symbol is in the same section as the current
16007         function, not just the same compilation unit.
16008         (arm_function_ok_for_sibcall): Use arm_is_long_call_p.
16009         (arm_encode_section_info): Don't encode a call type.
16010         * config/arm/arm.md (call, call_value): Update calls to
16011         arm_is_long(_)call_p.  Simplify logic.
16012         (*call_symbol, *call_value_symbol, *call_insn, *call_value_insn):
16013         Update calls to arm_is_long(_)call_p.
16014
16015 2007-05-25  Richard Guenther  <rguenther@suse.de>
16016
16017         PR tree-optimization/31982
16018         * tree-ssa-forwprop.c
16019         (forward_propagate_addr_into_variable_array_index): Handle arrays
16020         with element size one.
16021
16022 2007-05-24  Andrew Pinski  <andrew_pinski@playstation.sony.com>
16023
16024         * config/spu/spu.md (smulsi3_highpart): Unshare the rtl chain.
16025         (umulsi3_highpart): Likewise.
16026
16027 2007-05-24  Ian Lance Taylor  <iant@google.com>
16028
16029         PR rtl-optimization/32069
16030         * regclass.c (regclass): Don't crash if the entry in regno_reg_rtx
16031         is NULL.
16032
16033 2007-05-24  Ollie Wild  <aaw@google.com>
16034
16035         * doc/cpp.texi (Common Predefined Macros): Add __COUNTER__
16036         description.
16037
16038 2007-05-24  Richard Sandiford  <rsandifo@nildram.co.uk>
16039
16040         * postreload-gcse.c (reg_changed_after_insn_p): New function.
16041         (oprs_unchanged_p): Use it to check all registers in a REG.
16042         (record_opr_changes): Look for clobbers in CALL_INSN_FUNCTION_USAGE.
16043         (reg_set_between_after_reload_p): Delete.
16044         (reg_used_between_after_reload_p): Likewise.
16045         (reg_set_or_used_since_bb_start): Likewise.
16046         (eliminate_partially_redundant_load): Use reg_changed_after_insn_p
16047         and reg_used_between_p instead of reg_set_or_used_since_bb_start.
16048         Use reg_set_between_p instead of reg_set_between_after_reload_p.
16049         * rtlanal.c (reg_set_p): Check whether REG overlaps
16050         regs_invalidated_by_call, rather than just checking the
16051         membership of REGNO (REG).
16052
16053 2007-05-24  Zdenek Dvorak  <dvorakz@suse.cz>
16054
16055         * doc/passes.texi: Document predictive commoning.
16056         * doc/invoke.texi (-fpredictive-commoning): Document.
16057         * opts.c (decode_options): Enable flag_predictive_commoning on -O3.
16058         * tree-ssa-loop-im.c (get_lsm_tmp_name): Export.  Allow
16059         adding indices to the generated name.
16060         (schedule_sm): Pass 0 to get_lsm_tmp_name.
16061         * tree-ssa-loop-niter.c (stmt_dominates_stmt_p): Export.
16062         * tree-pretty-print.c (op_symbol_1): Renamed to ...
16063         (op_symbol_code): ... and exported.
16064         (dump_omp_clause, op_symbol): Use op_symbol_code
16065         instead of op_symbol_1.
16066         * tree-pass.h (pass_predcom): Declare.
16067         * timevar.def (TV_PREDCOM): New timevar.
16068         * tree-ssa-loop.c (run_tree_predictive_commoning,
16069         gate_tree_predictive_commoning, pass_predcom): New.
16070         * tree-data-ref.c (find_data_references_in_loop): Find the
16071         references in dominance order.
16072         (canonicalize_base_object_address): Ensure that the result has
16073         pointer type.
16074         (dr_analyze_innermost): Export.
16075         (create_data_ref): Code to fail for references with invariant
16076         address moved ...
16077         (find_data_references_in_stmt): ... here.
16078         * tree-data-ref.h (dr_analyze_innermost): Declare.
16079         * tree-affine.c: Include tree-gimple.h and hashtab.h.
16080         (aff_combination_find_elt, name_expansion_hash,
16081         name_expansion_eq, tree_to_aff_combination_expand,
16082         double_int_constant_multiple_p, aff_combination_constant_multiple_p):
16083         New functions.
16084         * tree-affine.h (aff_combination_constant_multiple_p,
16085         tree_to_aff_combination_expand): Declare.
16086         * tree-predcom.c: New file.
16087         * common.opt (fpredictive-commoning): New option.
16088         * tree-flow.h (op_symbol_code, tree_predictive_commoning,
16089         stmt_dominates_stmt_p, get_lsm_tmp_name): Declare.
16090         * Makefile.in (tree-predcom.o): Add.
16091         (tree-affine.o): Add TREE_GIMPLE_H dependency.
16092         * passes.c (init_optimization_passes): Add dceloop after
16093         copy propagation in loop optimizer.  Add predictive commoning
16094         to loop optimizer passes.
16095
16096 2007-05-24  H.J. Lu  <hongjiu.lu@intel.com>
16097
16098         * target-def.h (TARGET_MANGLE_DECL_ASSEMBLER_NAME): Correct
16099         default hook.
16100
16101 2007-05-24  Jan Hubicka  <jh@suse.cz>
16102
16103         * gengenrtl.c (gendecl, gendef): Output the gens annotated for
16104         statistics.
16105         (genheader): Include statistics.h.
16106
16107         * doc/invoke.texi (-fdump-unnumbered): Update docs when line number
16108         notes are gone.
16109         * print-rtl.c (flag_dump_unnumbered): Update comments.
16110         (print_rtl): Fix my previous change.
16111         * emit-rtl.c (emit_note_before, emit_note_after): Clear out note
16112         specific data.
16113
16114 2007-05-24  Zdenek Dvorak  <dvorakz@suse.cz>
16115
16116         PR middle-end/32018
16117         * tree-ssa-threadupdate.c (thread_through_loop_header): Use
16118         set_loop_copy.
16119         (thread_through_all_blocks): Call initialize_original_copy_tables
16120         and free_original_copy_tables.
16121         * cfgloopmanip.c (duplicate_loop, duplicate_loop_to_header_edge):
16122         Use set_loop_copy.
16123         * tree-cfg.c (tree_duplicate_sese_region): Ditto.
16124         * cfghooks.c (duplicate_block): Use get_loop_copy.
16125         * cfg.c: Include cfgloop.h.
16126         (loop_copy): New hash table.
16127         (initialize_original_copy_tables): Initialize loop_copy table.
16128         (free_original_copy_tables): Free loop_copy table.
16129         (copy_original_table_clear, copy_original_table_set,
16130         set_loop_copy, get_loop_copy): New functions.
16131         (set_bb_original, set_bb_copy): Use copy_original_table_set.
16132         * cfgloop.h (struct loop): Remove copy field.
16133         * Makefile.in (cfg.o): Add CFGLOOP_H dependency.
16134         * basic-block.h (set_loop_copy, get_loop_copy): Declare.
16135
16136 2007-05-24  H.J. Lu  <hongjiu.lu@intel.com>
16137
16138         * config/i386/i386.c (ix86_handle_option): Handle SSE4.1 for
16139         -msse/-msse2/-msse3.
16140
16141 2007-05-24  H.J. Lu  <hongjiu.lu@intel.com>
16142
16143         * config/i386/i386.c (ix86_init_mmx_sse_builtins): Mark
16144         __builtin_ia32_vec_set_v2di with MASK_64BIT.
16145
16146 2007-05-24  Danny Smith  <dannysmith@users.sourceforge.net>
16147
16148         PR target/27067
16149         * doc/tm.texi (TARGET_MANGLE_DECL_ASSEMBLER_NAME): Document.
16150         * targhooks.h (default_mangle_decl_assembler_name): Declare
16151         default hook.
16152         * targhooks.c (default_mangle_decl_assembler_name): Define
16153         default hook.
16154         * target-def.h (TARGET_MANGLE_DECL_ASSEMBLER_NAME) New. Set to
16155         default hook.
16156         * target.h (struct gcc_target): Add mangle_decl_assembler_name field.
16157         * langhooks.c (lhd_set_decl_assembler_name): Call
16158         targetm.mangle_decl_assembler_name for names with global scope.
16159
16160         * config/i386/cygming.h (TARGET_MANGLE_DECL_ASSEMBLER_NAME) Override
16161         default.
16162         (ASM_OUTPUT_DEF_FROM_DECLS): Simplify to use DECL_ASSEMBLER_NAME.
16163         * config/i386/i386-protos.h (i386_pe_mangle_decl_assembler_name):
16164         Declare.
16165         * config/i386/winnt.c (i386_pe_maybe_mangle_decl_assembler_name):
16166         New. Factored out of i386_pe_encode_section_info.
16167         (gen_stdcall_or_fastcall_suffix): Get name identifier as argument.
16168         Move check for prior decoration of stdcall
16169         symbols to i386_pe_encode_section_info.
16170         (i386_pe_encode_section_info): Adjust call to
16171         gen_stdcall_or_fastcall_suffix.  Use
16172         i386_pe_maybe_mangle_decl_assembler_name, if needed.
16173         (i386_pe_mangle_decl_assembler_name): New. Wrap
16174         i386_pe_maybe_mangle_decl_assembler_name.
16175
16176 2007-05-16  Rafael Avila de Espindola  <espindola@google.com>
16177
16178         * c-common.c (c_common_signed_or_unsigned_type): Delay the check for
16179         INTEGRAL_TYPE_P and TYPE_UNSIGNED.
16180         * langhooks.c (get_signed_or_unsigned_type): Don't check for
16181         INTEGRAL_TYPE_P or TYPE_UNSIGNED.
16182         (lhd_signed_or_unsigned_type): Check for INTEGRAL_TYPE_P and
16183         TYPE_UNSIGNED.
16184
16185 2007-05-23  Sandra Loosemore  <sandra@codesourcery.com>
16186             Nigel Stephens  <nigel@mips.com>
16187             Richard Sandiford  <richard@codesourcery.com>
16188
16189         Fix up MIPS16 hard float and add support for complex.
16190
16191         * config/mips/mips.h (TARGET_HARD_FLOAT_ABI): New.
16192         (TARGET_SOFT_FLOAT_ABI): New.
16193         (TARGET_CPU_CPP_BUILTINS): Define __mips_hard_float and
16194         __mips_soft_float to reflect the ABI in use, not whether the
16195         FPU is directly accessible (e.g., in MIPS16 mode).
16196         (UNITS_PER_HWFPVALUE): Use TARGET_SOFT_FLOAT_ABI.
16197         (UNITS_PER_FPVALUE): Likewise.
16198
16199         * config/mips/mips.c (mips_expand_call): Remove redundant
16200         TARGET_MIPS16 check.
16201         (mips_arg_regno): New.
16202         (function_arg_advance): When setting bits in cum->fp_code for
16203         MIPS16, don't subtract 1 from cum->arg_number, since it is now
16204         zero-based.
16205         (function_arg): Use mips_arg_regno.
16206         (mips_return_mode_in_fpr_p): New.
16207         (mips16_call_stub_mode_suffix): New.
16208         (mips16_cfun_returns_in_fpr_p): New.
16209         (mips_save_reg_p): Use mips16_cfun_returns_in_fpr_p.
16210         (mips_output_function_prologue): Test mips16_hard_float, not
16211         !TARGET_SOFT_FLOAT, to decide when a function stub is required.
16212         (mips_expand_epilogue): Call MIPS16 helper routines to copy
16213         return value into a floating-point register.
16214         (mips_can_use_return_insn): Use mips16_cfun_returns_in_fpr_p.
16215         (mips_function_value): Rewrite to use mips_return_mode_in_fpr_p.
16216         (mips16_fp_args): Handle MIPS32r2 ISA which supports
16217         TARGET_FLOAT64, and use mfhc1/mthc1 to copy the most significant
16218         word of double arguments from or to the high bits of 64-bit
16219         floating point registers.
16220         (build_mips16_function_stub): Fill in DECL_RESULT for stubdecl.
16221         (mips16_fpret_double): New helper function.
16222         (build_mips16_call_stub): Use mips16_return_mode_in_fpr_p.  Add
16223         support for complex modes.  Fill in DECL_RESULT for stubdecl.
16224         (mips_init_libfuncs): Remove redundant TARGET_MIPS16 check.
16225
16226         * config/mips/mips16.S
16227         (RET, ARG1, ARG2): New.
16228         (MERGE_GPRf, MERGE_GPRt): New.
16229         (DELAYt, DELAYf): New.
16230         (MOVE_SF_BYTE0, MOVE_SI_BYTE0): New.
16231         (MOVE_SF_BYTE4, MOVE_SF_BYTE8): New.
16232         (MOVE_DF_BYTE0, MOVE_DF_BYTE8): New.
16233         (MOVE_SF_RET, MOVE_SC_RET, MOVE_DF_RET, MOVE_DC_RET, MOVE_SI_RET): New.
16234         (SFOP): Renamed to...
16235         (OPSF3): This, and macro-ified.  Updated all uses.
16236         (SFOP2): Renamed to...
16237         (OPSF2): This, and macro-ified.  Updated all uses.
16238         (SFCMP): Renamed to...
16239         (CMPSF): This, and macro-ified.  Updated all uses.
16240         (SFREVCMP): Renamed to...
16241         (REVCMPSF): This, and macro-ified.  Updated all uses.
16242         (__mips16_floatsisf, __mips16_fix_truncsfsi): Macro-ified.
16243         (LDDBL1, LDDBL2, RETDBL): Deleted.
16244         (DFOP): Renamed to...
16245         (OPDF3): This, and macro-ified.  Updated all uses.
16246         (DFOP2): Renamed to...
16247         (OPDF2): This, and macro-ified.  Updated all uses.
16248         (__mips16_extendsfdf2, __mips16_truncdfsf2): Macro-ified.
16249         (DFCMP): Renamed to...
16250         (CMPDF): This, and macro-ified.  Updated all uses.
16251         (DFREVCMP): Renamed to...
16252         (REVCMPDF): This, and macro-ified.  Updated all uses.
16253         (__mips16_floatsidf, __mips16_fix_truncdfsi): Macro-ified.
16254         (RET_FUNCTION): New.
16255         (__mips16_ret_sf, __mips16_ret_df): Macro-ified.
16256         (__mips16_ret_sc, __mips16_ret_dc): New.
16257         (STUB_ARGS_0, STUB_ARGS_1, STUB_ARGS_5, STUB_ARGS_9, STUB_ARGS_2,
16258         STUB_ARGS_6, STUB_ARGS_10): New.
16259         (CALL_STUB_NO_RET): New.
16260         (__mips16_call_stub_1): Macro-ified.
16261         (__mips16_call_stub_5): Macro-ified.
16262         (__mips16_call_stub_2): Macro-ified.
16263         (__mips16_call_stub_6): Macro-ified.
16264         (__mips16_call_stub_9): Macro-ified.
16265         (__mips16_call_stub_10): Macro-ified.
16266         (CALL_STUB_RET): New.
16267         (__mips16_call_stub_sf_0): Macro-ified.
16268         (__mips16_call_stub_sf_1): Macro-ified.
16269         (__mips16_call_stub_sf_5): Macro-ified.
16270         (__mips16_call_stub_sf_2): Macro-ified.
16271         (__mips16_call_stub_sf_6): Macro-ified.
16272         (__mips16_call_stub_sf_9): Macro-ified.
16273         (__mips16_call_stub_sf_10): Macro-ified.
16274         (__mips16_call_stub_df_0): Macro-ified.
16275         (__mips16_call_stub_df_1): Macro-ified.
16276         (__mips16_call_stub_df_5): Macro-ified.
16277         (__mips16_call_stub_df_2): Macro-ified.
16278         (__mips16_call_stub_df_6): Macro-ified.
16279         (__mips16_call_stub_df_9): Macro-ified.
16280         (__mips16_call_stub_df_10): Macro-ified.
16281         (__mips16_call_stub_sc_0): New.
16282         (__mips16_call_stub_sc_1): New.
16283         (__mips16_call_stub_sc_5): New.
16284         (__mips16_call_stub_sc_2): New.
16285         (__mips16_call_stub_sc_6): New.
16286         (__mips16_call_stub_sc_9): New.
16287         (__mips16_call_stub_sc_10): New.
16288         (__mips16_call_stub_dc_0): New.
16289         (__mips16_call_stub_dc_1): New.
16290         (__mips16_call_stub_dc_5): New.
16291         (__mips16_call_stub_dc_2): New.
16292         (__mips16_call_stub_dc_6): New.
16293         (__mips16_call_stub_dc_9): New.
16294         (__mips16_call_stub_dc_10): New.
16295
16296         * config/mips/t-elf (LIB1ASMFUNCS): Add MIPS16 floating-point stubs.
16297         * config/mips/t-isa3264 (LIB1ASMFUNCS): Likewise.
16298         * config/mips/t-r2900 (LIB1ASMFUNCS): Likewise.
16299
16300 2007-05-23  Ian Lance Taylor  <iant@google.com>
16301
16302         * doc/invoke.texi (Invoking GCC): Document that the order of the
16303         -l option matters.
16304
16305 2007-05-23  Chen Liqin  <liqin@sunnorth.com.cn>
16306
16307         PR target/30987
16308         * config/score/misc.md (bitclr_c, bitset_c, bittgl_c): Remove.
16309         * config/score/predicate.md (const_pow2, const_npow2): Remove.
16310         * config/score/score.h (ASM_OUTPUT_EXTERNAL): Add ASM_OUTPUT_EXTERNAL
16311         undef.
16312
16313         PR target/30474
16314         * config/score/score.c (score_print_operand): Make sure that only
16315         lower bits are used.
16316
16317 2007-05-22  Ian Lance Taylor  <iant@google.com>
16318
16319         * tree-vrp.c (avoid_overflow_infinity): New static function,
16320         broken out of set_value_range_to_value.
16321         (set_value_range_to_value): Call avoid_overflow_infinity.
16322         (extract_range_from_assert): Likewise.
16323
16324 2007-05-22  Andrew Pinski  <andrew_pinski@playstation.sony.com>
16325
16326         PR middle-end/31095
16327          * builtins.c (expand_builtin_memmove_args): Strip nops that don't
16328         change the type before looking for a COMPOUND_EXPR.
16329
16330 2007-05-22  Ian Lance Taylor  <iant@google.com>
16331
16332         * lower-subreg.c (decompose_multiword_subregs): If we change an
16333         insn, call remove_retval_note on it.
16334
16335 2007-05-22  Richard Sandiford  <rsandifo@nildram.co.uk>
16336
16337         * regs.h (end_hard_regno): New function.
16338         (END_HARD_REGNO, END_REGNO): New macros.
16339         (add_to_hard_reg_set): New function.
16340         (remove_from_hard_reg_set): Likewise.
16341         (in_hard_reg_set_p): Likewise.
16342         (overlaps_hard_reg_set_p): Likewise.
16343         * bt-load.c (find_btr_reference): Use overlaps_hard_reg_set_p.
16344         (note_btr_set): Use END_HARD_REGNO.
16345         * caller-save.c (setup_save_areas): Use end_hard_regno.
16346         (mark_set_regs): Use END_HARD_REGNO.
16347         (add_stored_regs): Use end_hard_regno.
16348         (mark_referenced_regs): Use add_to_hard_reg_set.
16349         * combine.c (update_table_tick): Use END_REGNO.
16350         (record_value_for_reg): Likewise.
16351         (record_dead_and_set_regs): Likewise.
16352         (get_last_value_validate): Likewise.
16353         (use_crosses_set_p): Likewise.
16354         (reg_dead_at_p_1): Likewise.
16355         (reg_dead_at_p): Likewise.
16356         (mark_used_regs_combine): Use add_to_hard_reg_set.
16357         (move_deaths): Use END_HARD_REGNO.
16358         (reg_bitfield_target_p): Use end_hard_regno.
16359         (distribute_notes): Use END_HARD_REGNO.
16360         * cse.c (mention_regs): Use END_REGNO.
16361         (insert): Use add_to_hard_reg_set.
16362         (invalidate): Use END_HARD_REGNO.
16363         (invalidate_for_call): Likewise.
16364         (exp_equiv_p): Use END_REGNO.
16365         (cse_insn): Likewise.
16366         * cselib.c (cselib_invalidate_regno): Use end_hard_regno.
16367         * df-problems.c (df_urec_mark_reg_change): Use END_HARD_REGNO.
16368         * df-scan.c (df_ref_record): Use END_HARD_REGNO.
16369         * function.c (keep_stack_depressed): Use end_hard_regno.
16370         * global.c (global_alloc): Use end_hard_regno.
16371         (global_conflicts): Use add_to_hard_reg_set instead of
16372         mark_reg_live_nc.
16373         (find_reg): Likewise.
16374         (mark_reg_store): Likewise.
16375         (mark_reg_conflicts): Likewise.
16376         (mark_reg_death): Use remove_from_hard_reg_set.
16377         (mark_reg_live_nc): Delete.
16378         (set_preference): Use end_hard_regno.
16379         * local-alloc.c (mark_life): Use add_to_hard_reg_set and
16380         remove_from_hard_reg_set.
16381         (post_mark_life): Use add_to_hard_reg_set.
16382         * mode-switching.c (reg_dies): Use remove_from_hard_reg_set.
16383         (reg_becomes_live): Use add_to_hard_reg_set.
16384         * recog.c (reg_fits_class_p): Use in_hard_reg_set_p.
16385         (peep2_find_free_register): Use add_to_hard_reg_set.
16386         * reg-stack.c (convert_regs_exit): Use END_HARD_REGNO.
16387         * regclass.c (record_reg_classes): Use in_hard_reg_set_p.
16388         * regrename.c (note_sets): Use add_to_hard_reg_set.
16389         (clear_dead_regs): Use remove_from_hard_reg_set.
16390         (regrename_optimize): Use add_to_hard_reg_set.
16391         (find_oldest_value_reg): Use in_hard_reg_set_p.
16392         * reload.c (push_reload): Use in_hard_reg_set_p and end_hard_regno.
16393         (hard_reg_set_here_p): Use end_hard_regno.
16394         (decompose): Likewise.
16395         (reg_overlap_mentioned_for_reload_p): Use END_HARD_REGNO.
16396         (find_equiv_reg): Use in_hard_reg_set_p and end_hard_regno.
16397         * reload1.c (compute_use_by_pseudos): Use add_to_hard_reg_set.
16398         (mark_home_live): Use end_hard_regno.
16399         (spill_hard_reg): Likewise.
16400         (clear_reload_reg_in_use): Likewise.
16401         * reorg.c (delete_prior_computation): Use END_REGNO.
16402         * resource.c (update_live_status): Use END_HARD_REGNO.
16403         (mark_referenced_resources): Use add_to_hard_reg_set.
16404         (mark_set_resources): Likewise.
16405         (mark_target_live_regs): Likewise.  Use remove_from_hard_reg_set.
16406         * rtlanal.c (refers_to_regno_p): Use END_REGNO.
16407         (reg_overlap_mentioned_p): Likewise.
16408         (dead_or_set_p): Likewise.  Use an exclusive upper loop bound.
16409         (covers_regno_no_parallel_p): Use END_REGNO.
16410         (find_regno_note): Likewise.
16411         (find_reg_fusage): Use END_HARD_REGNO.
16412         * stmt.c (decl_overlaps_hard_reg_set_p): Use overlaps_hard_reg_set_p.
16413         * var-tracking.c (emit_note_insn_var_location): Use end_hard_regno.
16414
16415 2007-05-22  Richard Sandiford  <rsandifo@nildram.co.uk>
16416
16417         * mode-switching.c (reg_dies): Change type of second argument to
16418         "HARD_REG_SET *".
16419         (optimize_mode_switching): Update accordingly.
16420
16421 2007-05-22  Richard Sandiford  <richard@codesourcery.com>
16422
16423         * hard-reg-set.h (GO_IF_HARD_REG_SUBSET, GO_IF_HARD_REG_EQUAL): Delete
16424         in favor of...
16425         (hard_reg_subset_p, hard_reg_sets_equal_p, hard_reg_sets_intersect_p)
16426         (hard_reg_set_empty_p): ...these new functions.
16427         * bt-load.c (choose_btr): Use hard_reg_subset_p instead of
16428         GO_IF_HARD_REG_SUBSET.
16429         * cfgcleanup.c (old_insns_match_p): Use hard_reg_sets_equal_p
16430         instead of GO_IF_HARD_REG_EQUAL.
16431         * df-problems.c (df_urec_local_compute): Use hard_reg_set_empty_p
16432         instead of GO_IF_HARD_REG_EQUAL.
16433         * global.c (find_reg): Use hard_reg_set_empty_p instead of
16434         GO_IF_HARD_REG_SUBSET.
16435         (modify_reg_pav): Use hard_reg_set_empty_p instead of
16436         GO_IF_HARD_REG_EQUAL.
16437         * local-alloc.c (find_free_reg): Use hard_reg_subset_p instead
16438         of GO_IF_HARD_REG_SUBSET.
16439         * reg-stack.c (change_stack, convert_regs_1): Use hard_reg_sets_equal_p
16440         instead of GO_IF_HARD_REG_EQUAL.
16441         * regclass.c (init_reg_sets_1, reg_scan_mark_refs): Use
16442         hard_reg_subset_p instead of GO_IF_HARD_REG_SUBSET.
16443         (reg_classes_intersect_p): Use hard_reg_sets_intersect_p instead
16444         of GO_IF_HARD_REG_SUBSET,
16445         * reload1.c (finish_spills): Use hard_reg_subset_p instead of
16446         GO_IF_HARD_REG_SUBSET.
16447         * struct-equiv.c (death_notes_match_p): Use hard_reg_sets_equal_p
16448         instead of GO_IF_HARD_REG_EQUAL.
16449         * config/sh/sh.c (push_regs, calc_live_regs): Use
16450         hard_reg_sets_intersect_p instead of hard_regs_intersect_p.
16451         (hard_regs_intersect_p): Delete.
16452
16453 2007-05-22  Janis Johnson  <janis187@us.ibm.com>
16454
16455         * doc/sourcebuild.texi (Test Directives) Add dg-message.
16456
16457 2007-05-22  H.J. Lu  <hongjiu.lu@intel.com>
16458             Richard Henderson  <rth@redhat.com>
16459
16460         * config.gcc (i[34567]86-*-*): Add smmintrin.h to
16461         extra_headers.
16462         (x86_64-*-*): Likewise.
16463
16464         * i386/i386-modes.def (V2QI): New.
16465
16466         * config/i386/i386.c (ix86_handle_option): Handle SSE4.1 and
16467         SSE4A.
16468         (override_options): Support SSE4.1.
16469         (IX86_BUILTIN_BLENDPD): New for SSE4.1.
16470         (IX86_BUILTIN_BLENDPS): Likewise.
16471         (IX86_BUILTIN_BLENDVPD): Likewise.
16472         (IX86_BUILTIN_BLENDVPS): Likewise.
16473         (IX86_BUILTIN_PBLENDVB128): Likewise.
16474         (IX86_BUILTIN_PBLENDW128): Likewise.
16475         (IX86_BUILTIN_DPPD): Likewise.
16476         (IX86_BUILTIN_DPPS): Likewise.
16477         (IX86_BUILTIN_INSERTPS128): Likewise.
16478         (IX86_BUILTIN_MOVNTDQA): Likewise.
16479         (IX86_BUILTIN_MPSADBW128): Likewise.
16480         (IX86_BUILTIN_PACKUSDW128): Likewise.
16481         (IX86_BUILTIN_PCMPEQQ): Likewise.
16482         (IX86_BUILTIN_PHMINPOSUW128): Likewise.
16483         (IX86_BUILTIN_PMAXSB128): Likewise.
16484         (IX86_BUILTIN_PMAXSD128): Likewise.
16485         (IX86_BUILTIN_PMAXUD128): Likewise.
16486         (IX86_BUILTIN_PMAXUW128): Likewise.
16487         (IX86_BUILTIN_PMINSB128): Likewise.
16488         (IX86_BUILTIN_PMINSD128): Likewise.
16489         (IX86_BUILTIN_PMINUD128): Likewise.
16490         (IX86_BUILTIN_PMINUW128): Likewise.
16491         (IX86_BUILTIN_PMOVSXBW128): Likewise.
16492         (IX86_BUILTIN_PMOVSXBD128): Likewise.
16493         (IX86_BUILTIN_PMOVSXBQ128): Likewise.
16494         (IX86_BUILTIN_PMOVSXWD128): Likewise.
16495         (IX86_BUILTIN_PMOVSXWQ128): Likewise.
16496         (IX86_BUILTIN_PMOVSXDQ128): Likewise.
16497         (IX86_BUILTIN_PMOVZXBW128): Likewise.
16498         (IX86_BUILTIN_PMOVZXBD128): Likewise.
16499         (IX86_BUILTIN_PMOVZXBQ128): Likewise.
16500         (IX86_BUILTIN_PMOVZXWD128): Likewise.
16501         (IX86_BUILTIN_PMOVZXWQ128): Likewise.
16502         (IX86_BUILTIN_PMOVZXDQ128): Likewise.
16503         (IX86_BUILTIN_PMULDQ128): Likewise.
16504         (IX86_BUILTIN_PMULLD128): Likewise.
16505         (IX86_BUILTIN_ROUNDPD): Likewise.
16506         (IX86_BUILTIN_ROUNDPS): Likewise.
16507         (IX86_BUILTIN_ROUNDSD): Likewise.
16508         (IX86_BUILTIN_ROUNDSS): Likewise.
16509         (IX86_BUILTIN_PTESTZ): Likewise.
16510         (IX86_BUILTIN_PTESTC): Likewise.
16511         (IX86_BUILTIN_PTESTNZC): Likewise.
16512         (IX86_BUILTIN_VEC_EXT_V16QI): Likewise.
16513         (IX86_BUILTIN_VEC_SET_V2DI): Likewise.
16514         (IX86_BUILTIN_VEC_SET_V4SF): Likewise.
16515         (IX86_BUILTIN_VEC_SET_V4SI): Likewise.
16516         (IX86_BUILTIN_VEC_SET_V16QI): Likewise.
16517         (bdesc_ptest): New.
16518         (bdesc_sse_3arg): Likewise.
16519         (bdesc_2arg): Likewise.
16520         (bdesc_1arg): Likewise.
16521         (ix86_init_mmx_sse_builtins): Support SSE4.1.  Handle SSE builtins
16522         with 3 args.
16523         (ix86_expand_sse_4_operands_builtin): New.
16524         (ix86_expand_unop_builtin): Support 2 arg builtins with a constant
16525         smaller than 8 bits as the 2nd arg.
16526         (ix86_expand_sse_ptest): New.
16527         (ix86_expand_builtin): Support SSE4.1. Support 3 arg SSE builtins.
16528         (ix86_expand_vector_set): Support SSE4.1.
16529         (ix86_expand_vector_extract): Likewise.
16530
16531         * config/i386/i386.h (TARGET_CPU_CPP_BUILTINS): Define
16532         __SSE4_1__ for -msse4.1.
16533
16534         * config/i386/i386.md (UNSPEC_BLENDV): New for SSE4.1.
16535         (UNSPEC_INSERTPS): Likewise.
16536         (UNSPEC_DP): Likewise.
16537         (UNSPEC_MOVNTDQA): Likewise.
16538         (UNSPEC_MPSADBW): Likewise.
16539         (UNSPEC_PHMINPOSUW): Likewise.
16540         (UNSPEC_PTEST): Likewise.
16541         (UNSPEC_ROUNDP): Likewise.
16542         (UNSPEC_ROUNDS): Likewise.
16543
16544         * config/i386/i386.opt (msse4.1): New for SSE4.1.
16545
16546         * config/i386/predicates.md (const_pow2_1_to_2_operand): New.
16547         (const_pow2_1_to_32768_operand): Likewise.
16548
16549         * config/i386/smmintrin.h: New. The SSE4.1 intrinsic header
16550         file.
16551
16552         * config/i386/sse.md (*vec_setv4sf_sse4_1): New pattern for
16553         SSE4.1.
16554         (sse4_1_insertps): Likewise.
16555         (*sse4_1_extractps): Likewise.
16556         (sse4_1_ptest): Likewise.
16557         (sse4_1_mulv2siv2di3): Likewise.
16558         (*sse4_1_mulv4si3): Likewise.
16559         (*sse4_1_smax<mode>3): Likewise.
16560         (*sse4_1_umax<mode>3): Likewise.
16561         (*sse4_1_smin<mode>3): Likewise.
16562         (*sse4_1_umin<mode>3): Likewise.
16563         (sse4_1_eqv2di3): Likewise.
16564         (*sse4_1_pinsrb): Likewise.
16565         (*sse4_1_pinsrd): Likewise.
16566         (*sse4_1_pinsrq): Likewise.
16567         (*sse4_1_pextrb): Likewise.
16568         (*sse4_1_pextrb_memory): Likewise.
16569         (*sse4_1_pextrw_memory): Likewise.
16570         (*sse4_1_pextrq): Likewise.
16571         (sse4_1_blendpd): Likewise.
16572         (sse4_1_blendps): Likewise.
16573         (sse4_1_blendvpd): Likewise.
16574         (sse4_1_blendvps): Likewise.
16575         (sse4_1_dppd): Likewise.
16576         (sse4_1_dpps): Likewise.
16577         (sse4_1_movntdqa): Likewise.
16578         (sse4_1_mpsadbw): Likewise.
16579         (sse4_1_packusdw): Likewise.
16580         (sse4_1_pblendvb): Likewise.
16581         (sse4_1_pblendw): Likewise.
16582         (sse4_1_phminposuw): Likewise.
16583         (sse4_1_extendv8qiv8hi2): Likewise.
16584         (*sse4_1_extendv8qiv8hi2): Likewise.
16585         (sse4_1_extendv4qiv4si2): Likewise.
16586         (*sse4_1_extendv4qiv4si2): Likewise.
16587         (sse4_1_extendv2qiv2di2): Likewise.
16588         (*sse4_1_extendv2qiv2di2): Likewise.
16589         (sse4_1_extendv4hiv4si2): Likewise.
16590         (*sse4_1_extendv4hiv4si2): Likewise.
16591         (sse4_1_extendv2hiv2di2): Likewise.
16592         (*sse4_1_extendv2hiv2di2): Likewise.
16593         (sse4_1_extendv2siv2di2): Likewise.
16594         (*sse4_1_extendv2siv2di2): Likewise.
16595         (sse4_1_zero_extendv8qiv8hi2): Likewise.
16596         (*sse4_1_zero_extendv8qiv8hi2): Likewise.
16597         (sse4_1_zero_extendv4qiv4si2): Likewise.
16598         (*sse4_1_zero_extendv4qiv4si2): Likewise.
16599         (sse4_1_zero_extendv2qiv2di2): Likewise.
16600         (*sse4_1_zero_extendv2qiv2di2): Likewise.
16601         (sse4_1_zero_extendv4hiv4si2): Likewise.
16602         (*sse4_1_zero_extendv4hiv4si2): Likewise.
16603         (sse4_1_zero_extendv2hiv2di2): Likewise.
16604         (*sse4_1_zero_extendv2hiv2di2): Likewise.
16605         (sse4_1_zero_extendv2siv2di2): Likewise.
16606         (*sse4_1_zero_extendv2siv2di2): Likewise.
16607         (sse4_1_roundpd): Likewise.
16608         (sse4_1_roundps): Likewise.
16609         (sse4_1_roundsd): Likewise.
16610         (sse4_1_roundss): Likewise.
16611         (mulv4si3): Don't expand for SSE4.1.
16612         (smax<mode>3): Likewise.
16613         (umaxv4si3): Likewise.
16614         (uminv16qi3): Likewise.
16615         (umin<mode>3): Likewise.
16616         (umaxv8hi3): Rewrite.  Only enabled for SSE4.1.
16617
16618         * doc/extend.texi: Document SSE4.1 built-in functions.
16619
16620         * doc/invoke.texi: Document -msse4.1.
16621
16622 2007-05-22  Nathan Sidwell  <nathan@codesourcery.com>
16623
16624         * config/m68k/linux.h (ASM_SPEC): Add asm_pcrel_spec.
16625         * config/m68k/m68k-none.h (ASM_SPEC): Don't override here.
16626         * config/m68k/m68k.h (ASM_PCREL_SPEC): New.
16627         (ASM_SPEC): Add asm_pcrel_spec.
16628         (EXTRA_SPECS): Add asm_pcrel_spec.
16629
16630 2007-05-21  David Daney  <ddaney@avtrex.com>
16631
16632         * doc/install.texi (Building a cross compiler): Add requirements
16633         for Java cross compiler.
16634
16635 2007-05-21  Andrew Pinski  <andrew_pinski@playstation.sony.com>
16636
16637         PR middle-end/31995
16638         * tree-chrec.c (evolution_function_is_affine_multivariate_p):
16639         Add loopno argument.  Use evolution_function_is_invariant_rec_p
16640         instead of evolution_function_is_constant_p.
16641         Update calls to evolution_function_is_affine_multivariate_p.
16642         * tree-chrec.h (evolution_function_is_affine_multivariate_p):
16643         Add loopno argument.
16644         * tree-scalar-evolution.c (gather_chrec_stats): Call
16645         evolution_function_is_affine_multivariate_p with a loop
16646         number of 0.
16647         * tree-data-ref.c (analyze_miv_subscript): Likewise.
16648         (analyze_overlapping_iterations): Likewise.
16649         (access_functions_are_affine_or_constant_p): Likewise.
16650         (build_classic_dist_vector_1): If the access functions
16651         are equal, don't do anything.
16652
16653 2007-05-21  Paolo Bonzini  <bonzini@gnu.org>
16654             Paolo Carlini  <pcarlini@suse.de>
16655             Uros Bizjak  <ubizjak@gmail.com>
16656
16657         * c-cppbuiltin.c (c_cpp_builtins): Define
16658         __GCC_HAVE_SYNC_COMPARE_AND_SWAP_1, __GCC_HAVE_SYNC_COMPARE_AND_SWAP_2,
16659         __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4, __GCC_HAVE_SYNC_COMPARE_AND_SWAP_8,
16660         __GCC_HAVE_SYNC_COMPARE_AND_SWAP_16, if appropriate.
16661         * doc/cpp.texi ([Standard Predefined Macros]): Document.
16662
16663 2007-05-21  Mike Stump  <mrs@apple.com>
16664
16665         * config/darwin.h (LINK_COMMAND_SPEC): Add .cxx/.cp for dsymutil
16666         handling as well.
16667         * config/darwin9.h (LINK_COMMAND_SPEC): Likewise.
16668
16669 2007-05-21  Uros Bizjak  <ubizjak@gmail.com>
16670
16671         * config/i386/tmmintrin.h (_mm_alignr_epi8): Provide macro
16672         implementation if __OPTIMIZE__ is not defined.
16673         (_mm_alignr_pi8): Ditto.
16674         * config/i386/ammintrin.h (_mm_extracti_si64): Ditto.
16675         (_mm_inserti_si64): Ditto.
16676         * config/i386/emmintrin.h (_mm_shuffle_pd): Ditto.
16677         (_mm_slli_epi16): Ditto.
16678         (_mm_slli_epi32): Ditto.
16679         (_mm_slli_epi64): Ditto.
16680         (_mm_srai_epi16): Ditto.
16681         (_mm_srai_epi32): Ditto.
16682         (_mm_srli_si128): Ditto.
16683         (_mm_slli_si128): Ditto.
16684         (_mm_srli_epi16): Ditto.
16685         (_mm_srli_epi32): Ditto.
16686         (_mm_srli_epi64): Ditto.
16687         (_mm_extract_epi16): Ditto.
16688         (_mm_insert_epi16): Ditto.
16689         (_mm_shufflehi_epi16): Ditto.
16690         (_mm_shufflelo_epi16): Ditto.
16691         (_mm_shuffle_epi32): Ditto.
16692         * config/i386/xmmintrin.h (_mm_extract_pi16): Ditto.
16693         (_m_pextrw): Ditto.
16694         (_mm_insert_pi16): Ditto.
16695         (_m_pinsrw): Ditto.
16696         (_mm_shuffle_pi16): Ditto.
16697         (_m_pshufw): Ditto.
16698         (_mm_shufle_ps): Ditto.
16699         (_mm_prefetch): Ditto.
16700
16701 2007-05-21  Andreas Krebbel  <krebbel1@de.ibm.com>
16702
16703         * defaults.h (IBM_FLOAT_FORMAT): Macro definition removed.
16704         * doc/tm.texi (IBM_FLOAT_FORMAT): Documentation entry removed.
16705         * real.c (encode_i370_single, decode_i370_single,
16706         encode_i370_double, decode_i370_double): Functions removed.
16707         (i370_single_format, i370_double_format): Initializations removed.
16708         (real_maxval, round_for_format, exact_real_truncate, significand_size):
16709         Consider the log2_b field to always be one.
16710         (ieee_single_format, mips_single_format, coldfire_single_format,
16711         ieee_double_format, mips_double_format, coldfire_double_format,
16712         ieee_extended_motorola_format, ieee_extended_intel_96_format,
16713         ieee_extended_intel_128_format, ieee_extended_intel_96_round_53_format,
16714         ibm_extended_format, mips_extended_format, ieee_quad_format,
16715         mips_quad_format, vax_f_format, vax_d_format, vax_g_format,
16716         decimal_single_format, decimal_double_format, decimal_quad_format,
16717         c4x_single_format, c4x_extended_format, real_internal_format): Remove
16718         initialization of log2_b.
16719         * real.h (i370_single_format, i370_double_format): Declarations
16720         removed.
16721         * c-cppbuiltin.c (builtin_define_float_constants): Consider the log2_b
16722         field to always be one.
16723
16724 2007-05-21  Andreas Schwab  <schwab@suse.de>
16725
16726         * config/ia64/ia64.c (emit_predicate_relation_info): Fix use of
16727         NOTE_INSN_BASIC_BLOCK_P.
16728         (process_for_unwind_directive): Likewise.
16729
16730 2007-05-21  Nathan Sidwell  <nathan@codesourcery.com>
16731
16732         * builtins.c (expand_builtin_setjmp_setup): Update comment.
16733         * function.h (struct function): Move va_list_gpr_size,
16734         va_list_fpr_size, function_frequency to front of bitfields.  Add
16735         calls_unwind_init.
16736         (current_function_calls_unwind_init): New.
16737         * except.c (expand_builtin_unwind_init): Set
16738         current_function_calls_unwind_init not
16739         current_function_has_nonlocal_label.
16740         * reload1.c (has_nonexceptional_receiver): New.
16741         (reload): Use it and current_function_calls_unwind_init to
16742         determine whether call-saved regs must be saved.
16743
16744 2007-05-20  Jan Hubicka  <jh@suse.cz>
16745
16746         * gengtype.c (adjust_field_rtx_def): Use NOTE_KIND instead of
16747         NOTE_LINE_NUMBER; use NOTE_INSN_BASIC_BLOCK_P when possible.
16748         * ddg.c (create_ddg): LIkewise.
16749         * final.c (final): Remove hunk moving line number notes around since
16750         they are no longer present at this stage.
16751         (final_scan_insn): Use NOTE_KIND instead of
16752         NOTE_LINE_NUMBER; use NOTE_INSN_BASIC_BLOCK_P when possible.
16753         (output_asm_label): Likewise.
16754         * reorg.c (dbr_schedule): Likewise.
16755         * haifa-sched.c (unlink_other_notes): Likewise.
16756         * mode-switching.c (optimize_mode_switching): Likewise.
16757         * graph.c (start_bb): Likewise.
16758         * rtl.def (NOTE): Update description.
16759         * jump.c (squeeze_notes): Delete.
16760         (mark_jump_label): Use NOTE_KIND instead of NOTE_LINE_NUMBER; use
16761         NOTE_INSN_BASIC_BLOCK_P when possible.
16762         * ifcvt.c (dead_or_predicable): Remove call of squeeze_notes.
16763         * dwarf2out.c (gen_label_die): Use NOTE_KIND instead of
16764         NOTE_LINE_NUMBER; use NOTE_INSN_BASIC_BLOCK_P when possible.
16765         (dwarf2out_var_location): Likewise.
16766         * cfgbuild.c (make_edges): Likewise.
16767         (find_basic_blocks_1): Likewise.
16768         * function.c (reorder_blocks_1): Likewise.
16769         (epilogue_done): Likewise.
16770         (reposition_prologue_and_epilogue_notes): Likewise.
16771         * print-rtl.c (print_rtx): Likewise; drop code for printing
16772         line number notes.
16773         (print_rtl): Likewise.
16774         (print_rtl_single): Likewise.
16775         * gcse.c (insert_insn_start_bb): Likewise.
16776         * alias.c (init_alias_analysis): Likewise.
16777         * calls.c (fixup_tail_calls): Likewise.
16778         * except.c (sjlj_emit_function_enter): Likewise.
16779         * emit-rtl.c (add_insn_after): Likeiwse.
16780         (emit_label_before): Likewise.
16781         (emit_label_after): Likewise.
16782         (emit_note_before, emit_note_after, emit_note): Update
16783         parameter to be enum insn_note; do not deal with source
16784         files.
16785         * cfgcleanup.c (merge_blocks_move_predecessor_nojumps):
16786         Use NOTE_KIND instead of NOTE_LINE_NUMBER; use NOTE_INSN_BASIC_BLOCK_P
16787         when possible.
16788         (merge_blocks_move_successor_nojumps): Simplify now when
16789         we don't have BLOCK notes.
16790         (try_optimize_cfg): Likewise.
16791         * cfglayout.c (skip_insns_after_block): Likewise.
16792         (record_effective_endpoints): Likewise.
16793         (duplicate_insn_chain): Likewise.
16794         * varasm.c (output_constant_pool_1): Likewise.
16795         * sched-deps.c (sched_analyze): Likewise.
16796         * rtl.c (NOTE_INSN_MAX_isnt_negative_adjust_NOTE_INSN_BIAS):
16797         Exterminate.
16798         (note_insn_name): Simplify now when NOTE_INSN_BIAS is gone.
16799         * rtl.h (NOTE_SOURCE_LOCATION, NOTE_EXPANDED_LOCATION): Exterminate.
16800         (SET_INSN_DELETED): Simplify.
16801         (NOTE_LINE_NUMBER): Exterminate.
16802         (NOTE_LINE_KIND): New.
16803         (NOTE_INSN_BASIC_BLOCK_P): Update.
16804         (enum insn_note): Simplify.
16805         (GET_NOTE_INSN_NAME) Simplify.
16806         (emit_note_before, emit_note_after, emit_note): Update prototype.
16807         (squeeze_notes): Remove.
16808         * sched-int.h (NOTE_NOT_BB_P): Update.
16809         * resource.c (mark_target_live_regs): Update.
16810         * sched-rgn.c (debug_dependencies): Update.
16811         * sched-vis.c (print_insn): Update.
16812         * config/alpha/alpha.c (alpha_handle_trap_shadows): Update.
16813         * config/i386/i386.c (ix86_output_function_epilogue): Update.
16814         * config/sh/sh.c (sh_adjust_unroll_max): Function dead since gcc 4.0.0.
16815         (TARGET_ADJUST_UNROLL_MAX): Likewise.
16816         (split_branches): Update.
16817         (sh_optimize_target_register_callee_saved): Remove hunk dead since gcc
16818         4.0.0.
16819         (sh_adjust_unroll_max): Exterminate.
16820         * config/c4x/c4x.c (c4x_reorg): Use SET_INSN_DELETED.
16821         * config/m68hc11/m68hc11.c (m68hc11_check_z_replacement): Likewise.
16822         (m68hc11_reorg): Likewise.
16823         * config/ia64/ia64.c (emit_insn_group_barriers): Update.
16824         (emit_predicate_relation_info): Update.
16825         (process_for_unwind_directive): Update.
16826         * config/rs6000/rs6000.c (rs6000_output_function_epilogue): Update.
16827         (output_call): Update.
16828         * config/pa/pa.c (output_lbranch): Update.
16829         (output_millicode_call): Update.
16830         (output_call): Update.
16831         (pa_combine_instructions): Update.
16832         * config/mips/mips.c (mips16_gp_pseudo_reg): Update.
16833         * config/bfin/bfin.c (gen_one_bundle): Update.
16834         * cfgrtl.c (can_delete_note_p): Update.
16835         (delete_insn): Update.
16836         (rtl_merge_blocks): Update.
16837         (commit_one_edge_insertion): Update.
16838         (rtl_verify_flow_info): Update.
16839         * stmt.c (expand_case): Do not call squeeze_notes.
16840
16841 2007-05-20  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
16842
16843         PR middle-end/7651
16844         PR c++/11856
16845         PR c/12963
16846         PR c/23587
16847         PR other/29694
16848         * c.opt (Wtype-limits): New.
16849         * doc/invoke.texi (Wtype-limits): Document it.
16850         (Wextra): Enabled by -Wextra.
16851         * c-opts.c (c_common_post_options): Enabled by -Wextra.
16852         * c-common.c (shorten_compare): Warn with Wtype-limits.
16853
16854 2007-05-20  Uros Bizjak  <ubizjak@gmail.com>
16855
16856         * config/i386/tmmintrin.h (_mm_alignr_epi32): Implement as always
16857         inlined function, not as a macro.
16858         (_mm_alignr_pi8): Ditto.
16859         * config/i386/ammintrin.h (_mm_extracti_si64): Ditto.
16860         (_mm_inserti_si64): Ditto.
16861         * config/i386/emmintrin.h (_mm_shuffle_pd): Ditto.
16862         (_mm_extract_epi16): Ditto.
16863         (_mm_insert_epi16): Ditto.
16864         (_mm_shufflehi_epi16): Ditto.
16865         (_mm_shufflelo_epi16): Ditto.
16866         (_mm_shuffle_epi32): Ditto.
16867         * config/i386/xmmintrin.h (_mm_set_ss): Use 0.0f for float constant.
16868         * config/386/mm3dnow.h: Add __attribute__((__always_inline__)) to
16869         all functions.
16870         (_m_from_float): Add __extension__ to conversion.  Use 0.0f for
16871         float constant.
16872         (_m_to_float): Use C89 compatible assignment.
16873
16874 2007-05-20  Martin Michlmayr  <tbm@cyrius.com>
16875
16876         PR target/32007
16877         * config/arm/lib1funcs.asm: Define __ARM_ARCH__ on v2/v3 machines.
16878
16879 2007-05-20  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
16880
16881         PR middle-end/7651
16882         * doc/invoke.texi (Wreturn-type): Complete description.
16883         (Wextra): Delete item about return-type warning.
16884         * c-decl.c: Delete redundant Wextra warning.
16885
16886 2007-05-20  Uros Bizjak  <ubizjak@gmail.com>
16887
16888         PR target/31585
16889         * config/i386/pmmintrin.h: Do not include xmmintrin.h
16890         * config/i386/xmmintrin.h (_mm_extract_pi16): Implement as always
16891         inlined function, not as a macro.
16892         (_mm_prefetch): Ditto.
16893         (_m_pextrw): Ditto.
16894         (_mm_insert_pi16): Ditto.
16895         (_m_pinsrw): Ditto.
16896         (_mm_shuffle_pi16): Ditto.  Add const to __N argument.
16897         (_m_pshufw): Ditto. Add const to __N argument.
16898         (_mm_shufle_ps): Ditto.  Add const to __mask argument.
16899         * config/i386/emmintrin.h (_mm_slli_epi16): Add const to __B argument.
16900         (_mm_slli_epi32): Ditto.
16901         (_mm_srli_si128): Implement as always inlined function, not as a
16902         macro.  Add __inline to function declaration.
16903         (_mm_slli_si128): Ditto.
16904
16905 2007-05-19  Uros Bizjak  <ubizjak@gmail.com>
16906
16907         * config/i386/sfp-machine.h (FP_EX_INVALID, FP_EX_DENORM,
16908         FP_EXP_DIVZERO, FP_EX_OVERFLOW, FP_EX_UNDERFLOW, FP_EX_INEXACT):
16909         New constants.
16910         (struct fenv): New structure.
16911         (FP_HANDLE_EXCEPTIONS): New define.
16912         (FP_RND_NEAREST, FP_RND_ZERO, FP_RND_PINF, FP_RND_MINF): New constants.
16913         (_FP_DECL_EXP): New define.
16914         (FP_INIT_ROUNDMODE): New define.
16915         (FP_ROUNDMODE): New define.
16916
16917 2007-05-19  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
16918
16919         * doc/invoke.texi (Warning Options): Add -Wconversion-sign.
16920         (Wconversion): Update description.
16921         (Wconversion-sign): New.
16922         * c.opt (Wconversion-sign): New.
16923         * c-opts.c (c_common_post_options): Uninitialized Wconversion-sign
16924         means disabled for C++. Otherwise, take the status of Wconversion.
16925         * c-common.c (conversion_warning): Warn with either Wconversion or
16926         Wconversion-sign.
16927         (warnings_for_convert_and_check): Conditions are already checked by
16928         conversion_warning.
16929         (convert_and_check): Don't check warnings if the conversion failed.
16930
16931 2007-05-19 Andy Hutchinson <HutchinsonAndy@netscape.net>
16932            Anatoly Sokolov <aesok@dol.ru>
16933
16934         * config/avr/avr-protos.h (expand_prologue, expand_epilogue,
16935         avr_epilogue_uses) : Add declaration.
16936         * config/avr/predicates.md (avr_sp_immediate_operand): New predicate.
16937         * config/avr/constraints.md (R): New constraint.
16938         config/avr/avr.md (SREG_ADDR, UNSPEC_SEI, UNSPEC_CLI,
16939         UNSPECV_PROLOGUE_SAVES, UNSPECV_EPILOGUE_RESTORES): New constants.
16940         (*pop1, *pop2, *pop3, *pop4, *pop5): Combine into ...
16941         (*addhi3_sp_R_pc2, *addhi3_sp_R_pc3): ... these patterns.
16942         (*movhi_sp, popqi, pophi, enable_interrupt, disable_interrupt,
16943         call_prologue_saves, epilogue_restores, return_from_epilogue,
16944         return_from_main_epilogue, return_from_interrupt_epilogue,
16945         return_from_naked_epilogue, prologue, epilogue): New patterns.
16946         (jump): Handle symbol reference.
16947         * config/avr/avr.c (out_adj_frame_ptr, out_set_stack_ptr,
16948         avr_output_function_prologue, avr_output_function_epilogue): Remove
16949         functions.
16950         (avr_init_machine_status, expand_prologue, expand_epilogue,
16951         avr_asm_function_end_prologue, avr_epilogue_uses,
16952         avr_asm_function_begin_epilogue): New functions.
16953         (prologue_size, epilogue_size, jump_tables_size): Remove global
16954         variables.
16955         (TARGET_ASM_FUNCTION_PROLOGUE, TARGET_ASM_FUNCTION_EPILOGUE): Remove.
16956         (TARGET_ASM_FUNCTION_END_PROLOGUE): Define.
16957         (TARGET_ASM_FUNCTION_BEGIN_EPILOGUE): Define.
16958         (avr_override_options): Initialise init_machine_status.
16959         (output_movhi): Handle all stack pointer loads.
16960         (out_movqi_r_mr, out_movqi_mr_r): Handle SREG_ADDR address.
16961         (avr_output_addr_vec_elt): Do not use variable jump_tables_size.
16962         * config/avr/avr.h (AVR_2_BYTE_PC, AVR_3_BYTE_PC): New.
16963         (EPILOGUE_USES) Redefine.
16964         (machine_function) Declare.
16965
16966 2007-05-19  Richard Sandiford  <richard@codesourcery.com>
16967
16968         * config/mips/mips.c (mips_offset_within_alignment_p): Tweak comment.
16969         Use a single return statement.
16970
16971 2007-05-19  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
16972
16973         PR middle-end/30250
16974         * builtins.c (do_mpfr_lgamma_r): New.
16975         (fold_builtin_2): Handle builtin gamma_r/lgamma_r.
16976         * tree.h (CASE_FLT_FN_REENT): New.
16977
16978 2007-05-18  Geoffrey Keating  <geoffk@apple.com>
16979
16980         * dwarf2out.c (print_die): Use '%ld' not '%lu' to print a 'long'.
16981         (output_die): Use 'unsigned long' with %x.
16982         * sched-vis.c (print_value): Use 'unsigned HOST_WIDE_INT' and
16983         HOST_WIDE_INT_PRINT_HEX to print HOST_WIDE_INT.
16984         * tree-dump.c (dump_pointer): Use 'unsigned long' for %lx.
16985
16986         * unwind-dw2.c (uw_identify_context): Use the CFA, not the IP.
16987
16988 2007-05-18  H.J. Lu  <hongjiu.lu@intel.com>
16989
16990         PR target/31989
16991         PR target/31681
16992         PR target/31666
16993         * config/i386/i386.c (init_cumulative_args): Set maybe_vaarg to
16994         true if function has no argument.
16995
16996 2007-05-18  DJ Delorie  <dj@redhat.com>
16997
16998         * config/mips/mips.c (mips_offset_within_alignment_p): New.
16999         (mips_symbolic_constant_p): Call it for TPREL and DTPREL symbols.
17000
17001 2007-05-18  Uros Bizjak  <ubizjak@gmail.com>
17002
17003         * longlong.h (__x86_64__): Add definitions for add_ssaaaa,
17004         sub_ddmmss, umul_ppmm, udiv_qrnnd, count_leading_zeros and
17005         count_trailing_zeros.
17006         (__i386__): Implement count_leading_zeros using __builtin_clz().
17007         Implement count_trailing_zeros usign __builtin_ctz().
17008
17009 2007-05-18  Richard Sandiford  <richard@codesourcery.com>
17010
17011         * config/i386/vxworks.h (ASM_PREFERRED_EH_DATA_FORMAT): Undefine.
17012
17013 2007-05-18  Uros Bizjak  <ubizjak@gmail.com>
17014
17015         PR middle-end/31344
17016         * expr.c (emit_move_change_mode): Change mode of push operands here.
17017
17018 2007-05-17  Ian Lance Taylor  <iant@google.com>
17019
17020         PR tree-optimization/31953
17021         * tree-vrp.c (set_value_range_to_value): Add equiv parameter.
17022         Change all callers.
17023         (set_value_range_to_null): Call set_value_range_to_value.
17024         (extract_range_from_comparison): Likewise.
17025
17026 2007-05-17  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
17027
17028         * toplev.c (print_version): Output GMP/MPFR version info.
17029
17030         * builtins.c (CASE_MATHFN_REENT): New macro.
17031         (mathfn_built_in): Use it.
17032         * builtins.def (BUILT_IN_GAMMA_R, BUILT_IN_GAMMAF_R,
17033         BUILT_IN_GAMMAL_R, BUILT_IN_LGAMMA_R, BUILT_IN_LGAMMAF_R,
17034         BUILT_IN_LGAMMAL_R): New.
17035         * doc/extend.texi: Document new builtins.
17036
17037         PR middle-end/31796
17038         * builtins.c (do_mpfr_remquo): New.
17039         (fold_builtin_2): Handle BUILT_IN_DREM/BUILT_IN_REMAINDER.
17040         (fold_builtin_3): Handle BUILT_IN_REMQUO.
17041
17042         PR middle-end/30251
17043         * builtins.c (fold_builtin_1): Handle y0, y1.
17044         (fold_builtin_2): Handle yn.
17045
17046         PR middle-end/30251
17047         * builtins.c (do_mpfr_bessel_n): New.
17048         (fold_builtin_1): Handle BUILT_IN_J0 and BUILT_IN_J1.
17049         (fold_builtin_2): Handle BUILT_IN_JN.
17050
17051 2007-05-17  Danny Smith  <dannysmith@users.sourceforge.net>
17052
17053         PR target/31965
17054         * config/i386/mingw32.h (_INTEGRAL_MAX_BITS): Define builtin as
17055         TYPE_PRECISION (intmax_type_node).
17056
17057 2007-05-17  Steve Ellcey  <sje@cup.hp.com>
17058
17059         PR target/31850
17060         * reload.c (subst_reloads): Remove checking.
17061
17062 2007-05-17  Eric Botcazou  <ebotcazou@libertysurf.fr>
17063
17064         PR rtl-optimization/31691
17065         * combine.c (simplify_set): Build a new src pattern instead of
17066         substituting its operands in the COMPARE case.
17067
17068 2007-05-17  Zdenek Dvorak  <dvorakz@suse.cz>
17069
17070         * tree-vrp.c (finalize_jump_threads): Do not care about dominance info.
17071         (execute_vrp): Preserve loops through jump threading.
17072         * tree-ssa-threadupdate.c (thread_single_edge,
17073         dbds_continue_enumeration_p, determine_bb_domination_status,
17074         thread_through_loop_header): New functions.
17075         (create_edge_and_update_destination_phis,
17076         create_edge_and_update_destination_phis): Set loops for the new blocks.
17077         (prune_undesirable_thread_requests): Removed.
17078         (redirect_edges): Do not pretend that redirect_edge_and_branch can
17079         create new blocks.
17080         (thread_block): Do not call prune_undesirable_thread_requests.
17081         Update loops.
17082         (mark_threaded_blocks): Select edges to thread here.
17083         (thread_through_all_blocks): Take may_peel_loop_headers argument.
17084         Thread edges through loop headers independently.
17085         * cfgloopmanip.c (create_preheader, mfb_keep_just): Export.
17086         * tree-pass.h (TODO_mark_first_instance): New.
17087         (first_pass_instance): Declare.
17088         * cfghooks.c (duplicate_block): Put the block to the original loop
17089         if copy is not specified.
17090         * tree-ssa-dom.c (tree_ssa_dominator_optimize): Preserve loops through
17091         jump threading.  Pass may_peel_loop_headers to
17092         thread_through_all_blocks according to first_pass_instance.
17093         * cfgloop.h (create_preheader): Declare.
17094         * tree-flow.h (thread_through_all_blocks): Declaration changed.
17095         * basic-block.h (mfb_keep_just, mfb_kj_edge): Declare.
17096         * passes.c (first_pass_instance): New variable.
17097         (next_pass_1): Set TODO_mark_first_instance.
17098         (execute_todo): Set first_pass_instance.
17099
17100 2007-05-17  Uros Bizjak  <ubizjak@gmail.com>
17101
17102         PR tree-optimization/24659
17103         * optabs.h (enum optab_index): Add OTI_vec_unpacks_float_hi,
17104         OTI_vec_unpacks_float_lo, OTI_vec_unpacku_float_hi,
17105         OTI_vec_unpacku_float_lo, OTI_vec_pack_sfix_trunc and
17106         OTI_vec_pack_ufix_trunc.
17107         (vec_unpacks_float_hi_optab): Define new macro.
17108         (vec_unpacks_float_lo_optab): Ditto.
17109         (vec_unpacku_float_hi_optab): Ditto.
17110         (vec_unpacku_float_lo_optab): Ditto.
17111         (vec_pack_sfix_trunc_optab): Ditto.
17112         (vec_pack_ufix_trunc_optab): Ditto.
17113         * genopinit.c (optabs): Implement vec_unpack[s|u]_[hi|lo]_optab
17114         and vec_pack_[s|u]fix_trunc_optab using
17115         vec_unpack[s|u]_[hi\lo]_* and vec_pack_[u|s]fix_trunc_* patterns
17116         * tree-vectorizer.c (supportable_widening_operation): Handle
17117         FLOAT_EXPR and CONVERT_EXPR.  Update comment.
17118         (supportable_narrowing_operation): New function.
17119         * tree-vectorizer.h (supportable_narrowing_operation): Prototype.
17120         * tree-vect-transform.c (vectorizable_conversion): Handle
17121         (nunits_in == nunits_out / 2) and (nunits_out == nunits_in / 2) cases.
17122         (vect_gen_widened_results_half): Move before vectorizable_conversion.
17123         (vectorizable_type_demotion): Call supportable_narrowing_operation()
17124         to check for target support.
17125         * optabs.c (optab_for_tree_code) Return vec_unpack[s|u]_float_hi_optab
17126         for VEC_UNPACK_FLOAT_HI_EXPR, vec_unpack[s|u]_float_lo_optab
17127         for VEC_UNPACK_FLOAT_LO_EXPR and vec_pack_[u|s]fix_trunc_optab
17128         for VEC_PACK_FIX_TRUNC_EXPR.
17129         (expand_binop): Special case mode of the result for
17130         vec_pack_[u|s]fix_trunc_optab.
17131         (init_optabs): Initialize vec_unpack[s|u]_[hi|lo]_optab and
17132         vec_pack_[u|s]fix_trunc_optab.
17133
17134         * tree.def (VEC_UNPACK_FLOAT_HI_EXPR, VEC_UNPACK_FLOAT_LO_EXPR,
17135         VEC_PACK_FIX_TRUNC_EXPR): New tree codes.
17136         * tree-pretty-print.c (dump_generic_node): Handle
17137         VEC_UNPACK_FLOAT_HI_EXPR, VEC_UNPACK_FLOAT_LO_EXPR and
17138         VEC_PACK_FIX_TRUNC_EXPR.
17139         (op_prio): Ditto.
17140         * expr.c (expand_expr_real_1): Ditto.
17141         * tree-inline.c (estimate_num_insns_1): Ditto.
17142         * tree-vect-generic.c (expand_vector_operations_1): Ditto.
17143
17144         * config/i386/sse.md (vec_unpacks_float_hi_v8hi): New expander.
17145         (vec_unpacks_float_lo_v8hi): Ditto.
17146         (vec_unpacku_float_hi_v8hi): Ditto.
17147         (vec_unpacku_float_lo_v8hi): Ditto.
17148         (vec_unpacks_float_hi_v4si): Ditto.
17149         (vec_unpacks_float_lo_v4si): Ditto.
17150         (vec_pack_sfix_trunc_v2df): Ditto.
17151
17152         * doc/c-tree.texi (Expression trees) [VEC_UNPACK_FLOAT_HI_EXPR]:
17153         Document.
17154         [VEC_UNPACK_FLOAT_LO_EXPR]: Ditto.
17155         [VEC_PACK_FIX_TRUNC_EXPR]: Ditto.
17156         * doc/md.texi (Standard Names) [vec_pack_sfix_trunc]: Document.
17157         [vec_pack_ufix_trunc]: Ditto.
17158         [vec_unpacks_float_hi]: Ditto.
17159         [vec_unpacks_float_lo]: Ditto.
17160         [vec_unpacku_float_hi]: Ditto.
17161         [vec_unpacku_float_lo]: Ditto.
17162
17163 2007-05-16  Uros Bizjak  <ubizjak@gmail.com>
17164
17165         * soft-fp/README: Update for new files.
17166         * soft-fp/floattisf.c: New file.
17167         * soft-fp/floattidf.c: New file.
17168         * soft-fp/floattitf.c: New file.
17169         * soft-fp/floatuntisf.c: New file.
17170         * soft-fp/floatuntidf.c: New file.
17171         * soft-fp/floatuntitf.c: New file.
17172         * soft-fp/fixsfti.c: New file.
17173         * soft-fp/fixdfti.c: New file.
17174         * soft-fp/fixtfti.c: New file.
17175         * soft-fp/fixunssfti.c: New file.
17176         * soft-fp/fixunsdfti.c: New file.
17177         * soft-fp/fixunstfti.c: New file.
17178         * soft-fp/extendxftf.c: New file.
17179         * soft-fp/trunctfxf.c: New file.
17180
17181         * libgcc-std.ver (__extendxftf2): Added to GCC_4.3.0 section.
17182         (__trunctfxf2): Ditto.
17183
17184         * config/i386/libgcc-x86_64-glibc.ver (__addtf3, __divtf3, __eqtf2,
17185         __extenddftf2, __extendsftf2, __fixtfdi, __fixtfsi, __fixtfti,
17186         __fixunstfdi, __fixunstfsi, __fixunstfti, __floatditf, __floatsitf,
17187         __floattitf, __floatunditf, __floatunsitf, __floatuntitf, __getf2,
17188         __letf2, __multf3, __negtf2, __subtf3, __trunctfdf2, __trunctfsf2,
17189         __unordtf2): Exclude and add to GCC_4.3.0 section for x86_64 targets.
17190
17191         * config/i386/t-fprules-softfp64: New file.
17192         * config/i386/sfp-machine.h: New file.
17193         * config.gcc (x86_64-*-linux*, x86_64-*-kfreebsd*-gnu,
17194         x86_64-*-knetbsd*-gnu): Add i386/t-fprules-softfp64
17195         and soft-fp/t-softfp to tmake_file.
17196         (i[34567]86-*-linux*, i[34567]86-*-kfreebsd*-gnu,
17197         i[34567]86-*-knetbsd*-gnu): Ditto for --enable-targets=all.
17198
17199         * config/i386/t-linux64 (softfp_wrap_start): New.
17200         (softfp_wrap_end): New.
17201         * config/i386/i386.c (ix86_scalar_mode_supported): TFmode is
17202         supported for TARGET_64BIT.
17203
17204 2007-05-16  Rafael Avila de Espindola  <espindola@google.com>
17205
17206         * c-common.c (c_common_signed_or_unsigned_type): Emulate
17207         c_common_unsigned_type behavior.
17208
17209 2007-05-16  Paolo Bonzini  <bonzini@gnu.org>
17210
17211         * config/i386/i386.c (legitimize_tls_address): Mark __tls_get_addr
17212         calls as pure.
17213
17214 2007-05-16  Eric Christopher  <echristo@apple.com>
17215
17216         * config/rs6000/rs6000.c (rs6000_emit_prologue): Move altivec register
17217         saving after stack push. Set sp_offset whenever we push.
17218         (rs6000_emit_epilogue): Move altivec register restore before
17219         stack push.
17220
17221 2007-05-16  Richard Sandiford  <richard@codesourcery.com>
17222
17223         * configure.ac: Allow sysroots to be relocated under $prefix as
17224         well as $exec_prefix.
17225         * configure: Regenerate.
17226
17227 2007-05-16  Richard Sandiford  <richard@codesourcery.com>
17228
17229         Revert:
17230
17231         2007-05-12  Richard Sandiford  <richard@codesourcery.com>
17232
17233         * configure.ac (gcc_gxx_include_dir): Use $(libsubdir_to_prefix).
17234         (gcc_tooldir): Likewise.
17235         * configure: Regenerate.
17236         * Makefile.in (libsubdir_to_prefix): New variable, based on the
17237         old configure.ac gcc_tooldir setting.
17238         (prefix_to_exec_prefix): New variable.
17239         (DRIVER_DEFINES): Use $(libsubdir_to_prefix)$(prefix_to_exec_prefix)
17240         rather than $(unlibsubdir)/../ to derive TOOLDIR_BASE_PREFIX.
17241
17242 2007-05-14  Janis Johnson  <janis187@us.ibm.com>
17243
17244         * c-typeck.c (build_binary_op): Return early for error.
17245
17246 2007-05-15  Zdenek Dvorak  <dvorakz@suse.cz>
17247
17248         * tree-ssa-loop-niter.c (record_estimate): Use GGC_NEW to allocate
17249         struct nb_iter_bound.
17250         (free_numbers_of_iterations_estimates_loop): Use ggc_free.
17251         * gengtype.c (open_base_files): Add cfhloop.h to the list of includes.
17252         * cfgloopmanip.c (place_new_loop): Vector larray is gc-allocated.
17253         * tree-scalar-evolution.c: Include gt-tree-scalar-evolution.h.
17254         (struct scev_info_str, scalar_evolution_info): Add GTY markers.
17255         (new_scev_info_str): Use GGC_NEW to allocate struct scev_info_str.
17256         (del_scev_info): Use ggc_free.
17257         (scev_initialize): Allocate scalar_evolution_info in gc memory.
17258         * loop-init.c: Include ggc.h.
17259         (loop_optimizer_init): Use GGC_CNEW to allocate struct loops.
17260         (loop_optimizer_finalize): Use ggc_free.
17261         * tree-ssa-loop.c (pass_tree_unswitch, pass_vectorize,
17262         pass_linear_transfom, pass_empty_loop, pass_complete_unroll,
17263         pass_iv_optimize): Add TODO_ggc_collect.
17264         * function.h (struct function): Remove skip marker from
17265         x_current_loops.
17266         * cfgloop.c: Include ggc.h.
17267         (flow_loops_free, flow_loop_free): Free the loop descriptions in gc
17268         memory.
17269         (establish_preds): Vector superloops is gc allocated.
17270         (alloc_loop): Allocate loop using GGC_CNEW.  Allocate head of
17271         loop->exits list.
17272         (flow_loops_find): Vector larray is gc allocated.
17273         (loop_exit_free): Use ggc_free.
17274         (rescan_loop_exit): Use GGC_NEW to allocate struct loop_exit.  Reflect
17275         that head of exits list is now not a part of struct loop.
17276         (record_loop_exits): Allocate exits table in gc memory.
17277         (get_loop_exit_edges, verify_loop_structure, single_exit): Reflect
17278         that head of exits list is now not a part of struct loop.
17279         * cfgloop.h (struct lpt_decision, struct nb_iter_bound,
17280         struct loop_exit): Add GTY marker.
17281         (struct loop): Add GTY marker.  Make superloops vector gc allocated.
17282         Add skip marker to aux field.  Make head of exits list a separate
17283         object.
17284         (struct loops): Add GTY marker.  Make larray vector gc allocated.
17285         Add param marker to exits table.
17286         (get_loops): Type changed.
17287         * Makefile.in (tree-scalar-evolution.o): Add
17288         gt-tree-scalar-evolution.h dependency.
17289         (cfgloop.o, loop-init.o): Add ggc.h dependency.
17290         (GTFILES): Add cfgloop.h and tree-scalar-evolution.c.
17291         * basic-block.h (struct basic_block_def): Remove skip marker from
17292         loop_father field.
17293
17294 2007-05-14  Uros Bizjak  <ubizjak@gmail.com>
17295
17296         * builtins.c (expand_builtin_mathfn): Use EXPAND_NORMAL instead
17297         of 0 in the call to expand_expr().
17298         (expand_builtin_mathfn_3): Ditto.
17299         (expand_builtin_interclass_mathfn): Ditto.
17300         (expand_builtin_cexpi): Ditto.
17301         (expand_builtin_int_roundingfn): Ditto.
17302         (expand_builtin_int_roundingfn_2): Ditto.
17303         (expand_builtin_pow): Ditto.
17304         (expand_builtin_powi): Ditto.
17305         (expand_builtin_bswap): Ditto.
17306         (expand_builtin_unop): Ditto.
17307         (expand_builtin_fabs): Ditto.
17308         (get_builtin_sync_mem): Use NULL_RTX instead of NULL in
17309         the call to expand_expr().
17310         (expand_builtin_sync_operation): Ditto.
17311         (expand_builtin_compare_and_swap): Ditto.
17312         (expand_builtin_lock_test_and_set): Ditto.
17313         * except.c (expand_builtin_eh_return_data_regno): Use EXPAND_NORMAL
17314         instead of 0 in the call to expand_expr().
17315         (expand_builtin_extract_return_addr): Ditto.
17316         (expand_builtin_eh_return): Ditto.
17317         (expand_eh_return): Ditto.
17318         * explow.c (expr_size): Ditto.
17319         * expr.c (optimize_bitfield_assignment_op): Ditto.
17320         (expand_assignement): Ditto.
17321         (store_expr): Ditto.
17322         (store_field): Ditto.
17323         (expand_expr_addr_expr_1): Use NULL_RTX instead of NULL in
17324         the call to expand_expr().
17325         (expand_expr_real_1) [COMPLEX_CST]: Use EXPAND_NORMAL instead of 0
17326         in the call to expand_expr().
17327         [CONSTRUCTOR, PLUS_EXPR, MINUS_EXPR, NEGATE_EXPR, ABS_EXPR,
17328         BIT_NOT_EXPR, LSHIFT_EXPR, LT_EXPR, TRUTH_NOT_EXPR]: Ditto.
17329         [VEC_UNPACK_HI_EXPR, VEC_UNPACK_LO]: Use expand_normal() instead
17330         of expand_expr().
17331         * optabs.c (expand_vec_shift_expr): Ditto.
17332         (expand_vec_cond_expr): Ditto.
17333         (vector_compare_rtx): Use EXPAND_STACK_PARM instead of 1 in the
17334         call to expand_expr().
17335         * stmt.c (expand_return): Use EXPAND_NORMAL instead of 0
17336         in the call to expand_expr().
17337
17338 2007-05-14  Dave Korn  <dave.korn@artimi.com>
17339
17340         * genautomata.c (gen_regexp_el): Allocate correct size for regexp.
17341
17342 2007-05-14  Rafael Avila de Espindola  <espindola@google.com>
17343
17344         * c-common.c (warnings_for_convert_and_check): Use unsigned_type_for
17345         instead of c_common_unsigned_type.
17346         (c_common_unsigned_type): Remove.
17347         (shorten_compare): Use c_common_signed_or_unsigned_type instead of
17348         c_common_unsigned_type.
17349         (c_common_nodes_and_builtins): Use unsigned_type_for instead of
17350         c_common_unsigned_type.
17351         * c-common.h (c_common_unsigned_type): Remove.
17352         * c-decl.c (grokdeclarator): Use unsigned_type_for instead of
17353         c_common_unsigned_type.
17354         * c-format.c (check_format_types): Use unsigned_type_for instead of
17355         c_common_unsigned_type.
17356         * c-objc-common.h (LANG_HOOKS_UNSIGNED_TYPE): Remove.
17357         * c-typeck.c (convert_for_assignment): Use unsigned_type_for instead
17358         of c_common_unsigned_type.
17359         * convert.c (convert_to_integer): Use unsigned_type_for instead of
17360         lang_hooks.types.unsigned_type.
17361         * expmed.c (make_tree): Use unsigned_type_for instead of
17362         lang_hooks.types.unsigned_type.
17363         * fold-const.c (fold_negate_expr): Use unsigned_type_for instead of
17364         lang_hooks.types.unsigned_type.
17365         (build_range_check): Likewise.
17366         (fold_unary): Likewise.
17367         (fold_binary): Likewise.
17368         (fold_ternary): Likewise.
17369         * langhooks-def.h (LANG_HOOKS_UNSIGNED_TYPE): Remove.
17370         * langhooks.h (lang_hooks_for_types): Remove unsigned_type.
17371         * tree.c (get_unsigned_type): New.
17372         (unsigned_type_for): Use get_unsigned_type instead of
17373         lang_hooks.types.unsigned_type.
17374
17375 2007-05-14  Kazu Hirata  <kazu@codesourcery.com>
17376
17377         * config/m68k/m68k-protos.h: Rename m68k_interrupt_function_p
17378         to m68k_get_function_kind.  Update its prototype.
17379         * config/m68k/m68k.c (m68k_attribute_table): Add an entry for
17380         interrupt_thread.
17381         (m68k_interrupt_function_p): Return enum m68k_function_type
17382         instead of bool.  Rename to m68k_get_function_kind.
17383         (m68k_handle_fndecl_attribute): Reject interrupt_thread if the
17384         target is not fido.
17385         (m68k_compute_frame_layout): Don't mark any register for save
17386         if an interrupt_thread attribute is specified.
17387         (m68k_hard_regno_rename_ok): Update a use of
17388         m68k_interrupt_function_p.
17389         * config/m68k/m68k.h (EPILOGUE_USES): Update a use of
17390         m68k_interrupt_function_p.
17391         (m68k_function_type): New.
17392         * config/m68k/m68k.md (*return): Output a 'sleep' instruction
17393         for a function with an interrupt_thread attribute.
17394         * doc/extend.texi: Document the interrupt_thread attribute.
17395
17396 2007-05-13  Daniel Berlin  <dberlin@dberlin.org>
17397
17398         Fix PR tree-optimization/31911
17399         * tree-ssa-pre.c (phi_translate): Make sure to cache results even
17400         if they didn't change the expression.
17401
17402 2007-05-13  Zdenek Dvorak  <dvorakz@suse.cz>
17403
17404         * tree-scalar-evolution.c (resolve_mixers): Exported.
17405         * tree-scalar-evolution.h (resolve_mixers): Declare.
17406         * tree-data-ref.c (object_analysis, ptr_decl_may_alias_p,
17407         ptr_ptr_may_alias_p, may_alias_p, record_ptr_differ_p,
17408         record_record_differ_p, record_array_differ_p, array_ptr_differ_p,
17409         base_object_differ_p, base_addr_differ_p, analyze_array_indexes,
17410         init_array_ref, init_pointer_ref, analyze_indirect_ref,
17411         strip_conversion, analyze_offset_expr, address_analysis,
17412         object_analysis, analyze_offset): Removed.
17413         (dr_analyze_innermost, dr_analyze_indices, dr_analyze_alias,
17414         split_constant_offset, canonicalize_base_object_address,
17415         object_address_invariant_in_loop_p, disjoint_objects_p,
17416         dr_may_alias_p, dr_address_invariant_p): New functions.
17417         (create_data_ref): Use dr_analyze_innermost, dr_analyze_indices
17418         and dr_analyze_alias.
17419         (initialize_data_dependence_relation): Use dr_may_alias_p
17420         and object_address_invariant_in_loop_p.
17421         (compute_self_dependence): Handle the case when
17422         DDR_ARE_DEPENDENT (ddr) is chrec_dont_know.
17423         (find_data_references_in_stmt): Restrict the analysis of data
17424         references to the given loop nest.
17425         (find_data_references_in_loop): Made static.  Pass loop nest to
17426         find_data_references_in_stmt.
17427         (compute_data_dependences_for_loop): Use DR_VOPS.
17428         (free_data_ref): Free DR_VOPS.
17429         * tree-data-ref.h (struct first_location_in_loop): Replaced by ...
17430         (struct innermost_loop_behavior): ... new.
17431         (struct base_object_info): Replaced by ...
17432         (struct indices): ... new.
17433         (struct dr_alias): New.
17434         (enum data_ref_type): Removed.
17435         (struct data_reference): Consist of struct innermost_loop_behavior,
17436         struct indices and struct dr_alias.
17437         (DR_SET_ACCESS_FNS, DR_FREE_ACCESS_FNS): Removed.
17438         (DR_MEMTAG): Renamed to ...
17439         (DR_SYMBOL_TAG): ... this.
17440         (find_data_references_in_loop): Declaration removed.
17441         * tree-vect-analyze.c (vect_compute_data_ref_alignment): Use DR_INIT
17442         instead of DR_OFFSET_MISALIGNMENT.  DR_ALIGNED_TO is never NULL.
17443         (vect_analyze_data_refs): Use DR_SYMBOL_TAG instead of DR_MEMTAG.
17444         * tree-vect-transform.c (vect_create_data_ref_ptr): Ditto.
17445
17446 2007-05-13  Revital Eres  <eres@il.ibm.com>
17447
17448         * tree-ssa-dse.c (get_use_of_stmt_lhs): New function
17449         which walks virtual def-use chains to find redundant stores.
17450         (dse_optimize_stmt): Call it.
17451
17452 2007-05-12  Steven Bosscher  <steven@gcc.gnu.org>
17453
17454         * gcse.c (gcse_main): Do jump bypassing in CPROP2.
17455         * passes.c (init_optimization_passes): Move pass_jump_bypass
17456         after loop2.
17457
17458         * basic-block.h (bb_has_eh_pred): Fix style issue.
17459
17460 2007-05-12  Steven Bosscher  <steven@gcc.gnu.org>
17461
17462         PR rtl-optimization/31848
17463         * loop-invariant.c (move_invariant_reg): If we move an insn
17464         with a REG_EQUAL note, and that insn is not always executed,
17465         remove the REG_EQUAL note.
17466
17467 2007-05-12  Richard Guenther  <rguenther@suse.de>
17468
17469         PR tree-optimization/31797
17470         * tree-ssa-forwprop.c (forward_propagate_addr_expr): Do not
17471         propagate into a stmt that has volatile ops.
17472
17473 2007-05-12  Richard Sandiford  <richard@codesourcery.com>
17474
17475         * configure.ac (gcc_gxx_include_dir): Use $(libsubdir_to_prefix).
17476         (gcc_tooldir): Likewise.
17477         * configure: Regenerate.
17478         * Makefile.in (libsubdir_to_prefix): New variable, based on the
17479         old configure.ac gcc_tooldir setting.
17480         (prefix_to_exec_prefix): New variable.
17481         (DRIVER_DEFINES): Use $(libsubdir_to_prefix)$(prefix_to_exec_prefix)
17482         rather than $(unlibsubdir)/../ to derive TOOLDIR_BASE_PREFIX.
17483
17484 2007-05-11  Silvius Rus  <rus@google.com>
17485
17486         * Makefile.in (OBJS-common): Add tree-ssa-alias-warnings.o.
17487         * c-common.c (strict_aliasing_warning): Modify -Wstrict-aliasing logic.
17488         * c-common.h (strict_aliasing_warning): Change return type.
17489         * c-opts.c (c_common_handle_option): Add call to set_Wstrict_aliasing.
17490         * c-typeck.c (build_indirect_ref): Add call to strict_aliasing_warning.
17491         (build_c_cast): Condition call to strict_aliasing_warning.
17492         * doc/invoke.texi: Update description of -Wstrict-aliasing[=n].
17493         * flags.h (set_Wstrict_aliasing): Declare.
17494         * opts.c (set_Wstrict_alising): Define, add call to.
17495         * tree-flow.h (strict_aliasing_warning_backend): Declare.
17496         * tree-ssa-alias-warnings.c: New file.
17497         * tree-ssa-alias.c (compute_may_aliases): Add call to
17498         strict_aliasing_warning_backend.
17499
17500 2007-05-11  Zdenek Dvorak  <dvorakz@suse.cz>
17501
17502         * tree-loop-linear.c (gather_interchange_stats, try_interchange_loops):
17503         Use loop_depth and loop_outer accessor functions.
17504         * tree-ssa-loop-im.c (outermost_invariant_loop, set_level,
17505         determine_invariantness_stmt, move_computations_stmt): Ditto.
17506         * cfgloopmanip.c (fix_bb_placement, fix_loop_placement, remove_path,
17507         add_loop, loopify, unloop, fix_loop_structure): Ditto.
17508         * tree-ssa-loop-manip.c (find_uses_to_rename_use): Ditto.
17509         * tree-scalar-evolution.c (interpret_loop_phi,
17510         compute_scalar_evolution_in_loop, analyze_scalar_evolution_in_loop,
17511         instantiate_parameters_1, scev_const_prop): Ditto.
17512         * cfghooks.c (make_forwarder_block): Ditto.
17513         * cfgloopanal.c (mark_irreducible_loops, mark_loop_exit_edges): Ditto.
17514         * modulo-sched.c (loop_canon_p): Ditto.
17515         * tree-vectorizer.c (slpeel_tree_duplicate_loop_to_edge_cfg,
17516         slpeel_can_duplicate_loop_p): Ditto.
17517         * lambda-code.c (invariant_in_loop_and_outer_loops): Ditto.
17518         * tree-cfg.c (tree_duplicate_sese_region): Ditto.
17519         * cfgloop.c (flow_loop_dump, flow_loop_nodes_find, rescan_loop_exit,
17520         cancel_loop, verify_loop_structure): Ditto.
17521         (flow_loop_nested_p, superloop_at_depth, flow_loop_free,
17522         add_bb_to_loop, remove_bb_from_loops, find_common_loop): Use the
17523         superloops vector instead of "pred" array.
17524         (establish_preds): Take father loop as an argument.  Initialize the
17525         superloops vector.
17526         (flow_loop_tree_node_add): Pass father loop to establish_preds.
17527         Do not initialize loop->outer.
17528         (flow_loop_tree_node_remove): Truncate the superloops vector.
17529         * cfgloop.h (struct loop): Removed field "outer", fields "depth" and
17530         "pred" merged to "superloops" vector.
17531         (loop_depth, loop_outer): New.
17532         (fel_init): Use loop_outer.
17533
17534 2007-05-11  Jan Hubicka  <jh@suse.cz>
17535
17536         * cgraphunit.c: Include gt-cgraphunit.h
17537         (static_ctors, static_dtors): New static vars.
17538         (record_cdtor_fn, build_cdtor, cgraph_build_cdtor_fns): New functions,
17539         based on implementation in c-common.c
17540         (cgraph_finalize_function): Call record_cdtor_fn.
17541         (cgraph_optimize): Call cgraph_build_cdtor_fns.
17542         * decl.c (finish_function): Do not call c_record_cdtor_fn.
17543         (c_write_global_declarations): Do not call c_build_cdtor_fns.
17544         * c-common.c (static_ctors, static_dtors, c_record_cdtor_fn,
17545         build_cdtor, c_build_cdtor_fns): Remove.
17546         * c-common.h (static_ctors, static_dtors, c_record_cdtor_fn,
17547         c_build_cdtor_fns): Remove prototype.
17548
17549 2007-05-11  Paolo Carlini  <pcarlini@suse.de>
17550
17551         PR other/31852
17552         * builtin-types.def: Add BT_FN_PTR_CONST_PTR_INT_SIZE.
17553         * builtins.def: Add BUILT_IN_MEMCHR, use the latter.
17554         * builtins.c (fold_builtin_memchr): New.
17555         (expand_builtin_memchr): Call the latter.
17556         (expand_builtin, fold_builtin_3): Deal with BUILT_IN_MEMCHR.
17557         * doc/extend.texi ([Other built-in functions provided by GCC]):
17558         Document memchr.
17559
17560 2007-05-11  Andreas Krebbel  <krebbel1@de.ibm.com>
17561
17562         * config/s390/s390.md (GPR0_REGNUM, FPR0_REGNUM, FPR2_REGNUM,
17563         PFPO_CONVERT, PFPO_OP_TYPE_SF, PFPO_OP_TYPE_DF, PFPO_OP_TYPE_TF,
17564         PFPO_OP_TYPE_SD, PFPO_OP_TYPE_DD, PFPO_OP_TYPE_TD, PFPO_OP0_TYPE_SHIFT,
17565         PFPO_OP1_TYPE_SHIFT): Constants added.
17566         (DFP_ALL): Mode macro defined.
17567         ("*trunc<BFP:mode><DFP_ALL:mode>2", "*trunc<DFP_ALL:mode><BFP:mode>2",
17568         "*extend<BFP:mode><DFP_ALL:mode>2", "*extend<DFP_ALL:mode><BFP:mode>2"):
17569         Insn definitions added.
17570         ("trunc<BFP:mode><DFP_ALL:mode>2", "trunc<DFP_ALL:mode><BFP:mode>2",
17571         "extend<BFP:mode><DFP_ALL:mode>2", "extend<DFP_ALL:mode><BFP:mode>2"):
17572         Expanders added.
17573
17574 2007-05-10  Zdenek Dvorak  <dvorakz@suse.cz>
17575
17576         PR tree-optimization/31885
17577         * tree-chrec.c (chrec_contains_undetermined): Do not consider
17578         NULL_TREE to be undetermined.
17579         (automatically_generated_chrec_p): Return false for NULL.
17580
17581 2007-05-08  Bernd Schmidt  <bernd.schmidt@analog.com>
17582
17583         * config/bfin/bfin.h (MOVE_RATIO): Define.
17584
17585 2007-05-10  Richard Sandiford  <richard@codesourcery.com>
17586
17587         * config.gcc (sparc-wrs-vxworks): New target.
17588         * config/sparc/vxworks.h, config/sparc/t-vxworks: New files.
17589         * config/sparc/sparc-protos.h (sparc_emit_call_insn): Declare.
17590         * config/sparc/sparc.h: Include vxworks-dummy.h.
17591         (PRINT_OPERAND_ADDRESS): Extend SYMBOL_REF handling to
17592         include LABEL_REFs too.
17593         * config/sparc/sparc.c (sparc_expand_move): Don't assume that
17594         _GLOBAL_OFFSET_TABLE_ - label_ref is a link-time constant on
17595         VxWorks.
17596         (legitimize_pic_address): Handle LABEL_REFs like SYMBOL_REFs
17597         on VxWorks.
17598         (load_pic_register): Use gen_vxworks_load_got for VxWorks.
17599         (sparc_emit_call_insn): New function.
17600         (sparc_function_ok_for_sibcall): Restrict sibcalls to locally-binding
17601         functions when generating VxWorks PIC.
17602         * config/sparc/sparc.md (vxworks_load_got): New pattern.
17603         (call, call_value): Use sparc_emit_call_insn instead of
17604         emit_call_insn.
17605
17606 2007-05-09  Bob Wilson  <bob.wilson@acm.org>
17607
17608         * config/xtensa/xtensa.c (xtensa_output_literal): Don't use #if.
17609
17610 2007-05-09  Bob Wilson  <bob.wilson@acm.org>
17611
17612         * config/xtensa/xtensa.c (xtensa_output_literal): Mask out high bits
17613         for floating-point values if HOST_BITS_PER_LONG > 32.  Use
17614         split_double instead of operand_subword.
17615
17616 2007-05-08  Bernd Schmidt  <bernd.schmidt@analog.com>
17617
17618         * config/bfin/bfin.h (LOCAL_ALIGNMENT): Define.
17619         * config/bfin/bfin.c (bfin_local_alignment): New function.
17620         * config/bfin/bfin-protos.h (bfin_local_alignment): Declare it.
17621
17622 2007-05-08  Chao-ying Fu  <fu@mips.com>
17623
17624         * doc/md.texi (msub@var{m}@var{n}4, usub@var{m}@var{n}4): Document.
17625         * optabs.h (OTI_smsub_widen, OTI_umsub_widen): New optab_indexes.
17626         (smsub_widen_optab, umsub_widen_optab): Define.
17627         * optabs.c (init_optabs): Initialize smsub_widen_optab and
17628         umsub_widen_optab.
17629         * genopinit.c (optabs): Fill in smsub_widen_optab and
17630         umsub_widen_optab.
17631         * expr.c (expand_expr_real_1): Try to use smsub_widen_optab
17632         and umsub_widen_optab to implement multiply-subtract sequences.
17633         * config/mips/mips.md (*msac<u>_di): Rename to...
17634         (<u>msubsidi4): ...this.  Extend condition to include
17635         GENERATE_MADD_MSUB and TARGET_DSPR2.  Change the constraint
17636         of operand 0 to "ka" and use the three-operand form of msub<u>
17637         for TARGET_DSPR2.
17638         * config/mips/mips-dspr2.md (mips_msub, mips_msubu): Convert
17639         to define_expands.
17640
17641 2007-05-08  Kaz Kojima  <kkojima@gcc.gnu.org>
17642
17643         PR rtl-optimization/28011
17644         * reload.c (push_reload): Set dont_share if IN appears in OUT
17645         also when IN is a PLUS rtx.
17646         (reg_overlap_mentioned_for_reload_p): Return true if X and IN
17647         are same PLUS rtx.
17648
17649 2007-05-08  Kazu Hirata  <kazu@codesourcery.com>
17650
17651         * emit-rtl.c (unshare_all_rtl_1): Don't copy DECL_RTL.  Don't
17652         call unshare_all_decls.
17653         (unshare_all_rtl): Adjust the call to unshare_all_rtl_1.
17654         (unshare_all_decls): Remove.
17655
17656 2007-05-08  Simon Martin  <simartin@users.sourceforge.net>
17657
17658         PR 31847
17659         * tree-dump.c (dump_options): Don't use TDF_DIAGNOSTIC in "*-all" tree
17660         dumps.
17661
17662 2007-05-08  Sandra Loosemore  <sandra@codesourcery.com>
17663             Nigel Stephens  <nigel@mips.com>
17664
17665         * config/mips/mips.h (MAX_FPRS_PER_FMT): Renamed from FP_INC.
17666         Update comments and all uses.
17667         (MIN_FPRS_PER_FMT): Define.
17668         * config/mips/mips.c (function_arg): Fix to correctly handle
17669         the -mips32r2 -mfp64 -mabi=32 case.
17670         (override_options): Enable use of odd-numbered registers for
17671         SFmode values on MIPS32.
17672         (mips_save_reg_p): Save whole floating-point register pair if
17673         either half is used.
17674         (compute_frame_size): Fix comment.
17675
17676 2007-05-08  Jie Zhang  <jie.zhang@analog.com>
17677
17678         * config/bfin/bfin-protos.h (bfin_expand_epilogue): Add a third
17679         argument of type bool.
17680         * config/bfin/bfin.c (add_to_reg): Add epilogue_p as a fourth
17681         argument. Safely select temporary P register according to it.
17682         (do_link): Change call site of add_to_reg accordingly.
17683         (do_unlink): Add epilogue_p as a fourth argument and pass it
17684         to add_to_reg.
17685         (expand_interrupt_handler_epilogue): Change call of do_unlink
17686         accordingly.
17687         (bfin_expand_prologue): Add a third argument sibcall_p.
17688         * config/bfin/bfin.md (epilogue): Change call of
17689         bfin_expand_epilogue accordingly.
17690         (sibcall_epilogue): Likewise.
17691         (eh_return_internal): Likewise.
17692
17693         * config/bfin/bfin-protos.h (enum bfin_cpu): Add
17694         BFIN_CPU_BF534, BFIN_CPU_BF536 and BFIN_CPU_BF561.
17695         * config/bfin/bfin.c (bfin_handle_option): Handle
17696         -mcpu=bf534, -mcpu=bf536 and -mcpu=bf561.
17697         * config/bfin/bfin.h (TARGET_CPU_CPP_BUILTINS):
17698         Support bf534, bf536 and bf561.
17699         * doc/invoke.texi (Blackfin Options): Document -mcpu and -msim.
17700
17701 2007-05-08  Uros Bizjak  <ubizjak@gmail.com>
17702
17703         PR target/31854
17704         * config/i386/i386.c (ix86_function_regparm): Process local
17705         functions only when TREE_CODE (decl) equals FUNCTION_DECL.
17706
17707 2007-05-07  Mike Stump  <mrs@apple.com>
17708
17709         * doc/invoke.texi (Warning Options): Document that -Wempty-body
17710         also checks for and while statements in C++.
17711
17712 2007-05-07  Nathan Froyd  <froydnj@codesourcery.com>
17713
17714         * gcc.c (at_file_supplied): New variable.
17715         (main): Set it if we expanded argv.
17716         (do_spec_1): Pass an @-file to the linker if we were called with
17717         an @-file argument and HAVE_GNU_LD.
17718         * collect2.c (at_file_supplied): New variable.
17719         (response_file): New variable.
17720         (collect_exit): Unlink response_file if necessary.
17721         (handler): Likewise.
17722         (do_wait): Likewise.
17723         (main): Set at_file_supplied if we expanded argv.
17724         (collect_execute): Pass an @-file to subprocesses if we were called
17725         with an @-file argument.
17726         * configure.ac: Add define for HAVE_GNU_LD.
17727         * configure: Regenerate.
17728         * config.in: Regenerate.
17729
17730 2007-05-07  Naveen.H.S  <naveen.hs@kpitcummins.com>
17731
17732         * config/m32c/muldiv.md (mulhisi3_c): Limit the mode of the 2nd
17733         operand to HI mode.
17734         (mulsi3): New.
17735         (divsi3): New.
17736         (udivsi3): New.
17737
17738 2007-05-07  Jayant Sonar  <jayants@kpitcummins.com>
17739
17740         * config/m32c/m32c.c (SYMBOL_FLAG_FUNCVEC_FUNCTION): Define.
17741         (TARGET_ENCODE_SECTION_INFO): Re-define.
17742         (m32c_encode_section_info): New
17743         (function_vector_handler): New
17744         (current_function_special_page_vector): New
17745         (m32c_special_page_vector_p): New.
17746         * config/m32c/m32c-protos.h (m32c_special_page_vector_p):
17747         Prototype.
17748         * config/m32c/jump.md: Added instruction JSRS for functions
17749         with attribute "function_vector".
17750         * doc/extend.texi (function_vector): Added description
17751         for M16C, M32C targets.
17752
17753 2007-05-07  DJ Delorie  <dj@redhat.com>
17754
17755         PR 31794
17756         * config/m32c/shift.md (ashlpsi3_i, ashrpsi3_i, ashlpsi3,
17757         ashrpsi3, lshrpsi3): Update shift count constraint.
17758
17759 2007-05-07  Danny Smith  <dannysmith@users.sourceforge.net>
17760             Nathan Froyd  <froydnj@codesourcery.com>
17761
17762         PR 22133
17763         * c-incpath.c (add_path): Strip trailing path separators.
17764
17765 2007-05-07  Eric Botcazou  <ebotcazou@adacore.com>
17766
17767         * tree-ssa-dom.c (tree_ssa_dominator_optimize): Reset cfg_altered.
17768         Free dominance info before purging EH edges.
17769         (eliminate_degenerate_phis): Likewise.
17770         (propagate_rhs_into_lhs): Set cfg_altered to true instead of 1.
17771
17772 2007-05-07  Jan Hubicka  <jh@suse.cz>
17773
17774         * gimplify.c (gimplify_expr): Do not crash when folding
17775         (void *)(int)&a + 4.
17776
17777 2007-05-07  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
17778
17779         PR driver/31694
17780         * c-opts.c (lang_fortran): Make it non static.
17781         * c-common.h (lang_fortran): New prototype.
17782         * c-cppbuiltin.c (c_cpp_builtins): Create a __GFORTRAN__ if the
17783         -lang-fortran option was passed by the driver.
17784
17785 2007-05-06  Eric Botcazou  <ebotcazou@adacore.com>
17786
17787         * timevar.c (timevar_print): Test ENABLE_ASSERT_CHECKING instead
17788         of ASSERT_CHECKING.  Tweak message.
17789
17790 2007-05-06  Revital Eres  <eres@il.ibm.com>
17791
17792         PR 30957
17793         * loop-unroll.c (insert_var_expansion_initialization):
17794         Initialize the expansions with -zero instead of +zero.
17795
17796 2007-05-05  Aurelien Jarno  <aurelien@aurel32.net>
17797
17798         * config/pa/pa.md: Split tgd_load, tld_load and tie_load
17799         into pic and non-pic versions. Mark r19 as used for
17800         tgd_load_pic, tld_load_pic and tie_load_pic. Mark r27 as used
17801         for tgd_load, tld_load and tie_load .
17802         * config/pa/pa.c (legitimize_tls_address): Emit pic or non-pic
17803         version of tgd_load, tld_load and tie_load depending on the
17804         value of flag_pic.
17805
17806 2007-05-04  Ulrich Drepper  <drepper@redhat.com>
17807             Jakub Jelinek  <jakub@redhat.com>
17808
17809         * crtstuff.c (HIDDEN_DTOR_LIST_END): New macro.
17810         (__do_global_dtors_aux): Use more paranoid loop to run
17811         destructors if HIDDEN_DTOR_LIST_END.
17812         (__DTOR_END__): Export as a hidden symbol when HIDDEN_DTOR_LIST_END.
17813
17814 2007-05-04  Jakub Jelinek  <jakub@redhat.com>
17815
17816         * varasm.c (align_variable): Don't increase alignment for
17817         DECL_THREAD_LOCAL_P variables above BITS_PER_WORD through
17818         DATA_ALIGNMENT or CONSTANT_ALIGNMENT.
17819
17820 2007-05-04  Josh Conner  <jconner@apple.com>
17821
17822         * basic-block.h (cdi_direction): Assign values to all enumeration
17823         constants.
17824         (dom_computed): Remove.
17825         (dom_info_state): New.
17826         (set_dom_info_availability): New.
17827         * tree-ssa-loop-im.c (determine_invariantness): Initialize
17828         walk_data.dom_direction.
17829         * cfghooks.c (delete_basic_block): Use dom_info_available_p()
17830         instead of dom_computed[].
17831         (split_edge): Likewise.
17832         (create_basic_block): Likewise.
17833         (merge_blocks): Likewise.
17834         * ifcvt.c (find_if_header): Likewise.
17835         * tree-cfgcleanup.c (cleanup_tree_cfg): Likewise.
17836         * tree-ssa-dce.c (remove_dead_stmt): Likewise.
17837         * tree-ssa.c (verify_ssa): Likewise.
17838         * tree-cfg.c (tree_verify_flow_info): Likewise.
17839         (remove_edge_and_dominated_blocks): Likewise.
17840         * dominance.c (dom_computed): Make static.
17841         (calc_dfs_tree_nonrec): Change third param to a bool.
17842         (calc_dfs_tree): Change second param to a bool.
17843         (calc_idioms): Change second param to a bool.  Use
17844         dom_convert_dir_to_idx.
17845         (init_dom_info): Validate dir before using.
17846         (dom_convert_dir_to_idx): New.
17847         (calculate_dominance_info): Use dom_convert_dir_to_idx.  New
17848         variable 'reverse' used for calling calc_dfs_tree and calc_idoms.
17849         (free_dominance_info): Use dom_convert_dir_to_idx.
17850         (get_immediate_dominator): Likewise.
17851         (set_immediate_dominator): Likewise.
17852         (get_dominated_by): Likewise.
17853         (redirect_immediate_dominators): Likewise.
17854         (nearest_common_denominator): Likewise.
17855         (dominated_by_p): Likewise.
17856         (bb_dom_dfs_in): Likewise.
17857         (bb_dom_dfs_out): Likewise.
17858         (recount_dominator): Likewise.
17859         (iterate_fix_dominators): Likewise.
17860         (add_to_dominance_info): Likewise.
17861         (delete_from_dominance_info): Likewise.
17862         (first_dom_son): Likewise.
17863         (next_dom_son): Likewise.
17864         (dom_info_available_p): Likewise.
17865         (dom_info_state): New.
17866         (set_dom_info_availability): New.
17867
17868 2007-05-04  Andreas Krebbel  <krebbel1@de.ibm.com>
17869
17870         * config/s390/s390.md ("fix_trunc<mode>di2", "fix_trunc<mode>si2"):
17871         Expander removed.
17872         ("fix_trunc<DSF:mode><GPR:mode>2"): Expander added.
17873
17874 2007-05-04  Bob Wilson  <bob.wilson@acm.org>
17875
17876         * config/xtensa/xtensa.md (adddi3, adddi_carry): Delete.
17877         (subdi3, subdi_carry): Delete.
17878
17879 2007-05-04  Jan Hubicka  <jh@suse.cz>
17880             Richard Guenther  <rguenther@suse.de>
17881
17882         * opts.c (decode_options): Do not fiddle with inlining
17883         parameters in case of optimizing for size.
17884         * ipa-inline.c (cgraph_decide_recursive_inlining): When optimizing
17885         for size do nothing.
17886         (cgraph_decide_inlining_of_small_function): When optimizing for
17887         size never inline functions increasing caller size.
17888         (cgraph_early_inlining): Inline for size when optimizing for size.
17889
17890 2007-05-04  Bernd Schmidt  <bernd.schmidt@analog.com>
17891
17892         * config/bfin/bfin.md (<optab>di3): Now a define_expand which expands
17893         logical operations piecewise.
17894         (<optab>di_zesidi_di, <optab>di_sesidi_di, negdi2, one_cmpldi2,
17895         zero_extendsidi2, subdi_di_zesidi, subdi_zesidi_di, subdi_di_sesidi,
17896         subdi_sesidi_di): Delete.
17897         (add_with_carry): Produce carry in CC instead of a DREG to shorten
17898         the generated sequence.  Allow three-reg add in constraints.  Rewrite
17899         the rtl expression for carry to avoid zero_extend of a constant.
17900         (sub_with_carry): New pattern.
17901         (adddi3, subdi3): Change into define_expand.  For subtract, generate a
17902         different sequence not involving jumps.
17903         (notbi): Now a named pattern.
17904
17905 2007-05-04  Bradley Lucier  <lucier@math.purdue.edu>
17906
17907         * doc/invoke.texi (i386 and x86-64 Options) [-mpc32, -mpc64, -mpc80]:
17908         Add the note about a significant loss of accuracy of some
17909         mathematical routines when these options are used.
17910
17911 2007-05-04  Maxim Kuvyrkov  <mkuvyrkov@ispras.ru>
17912
17913         * haifa-sched.c (rtx_vec_t): New typedef.
17914         (contributes_to_priority_p): Extract piece of priority () into new
17915         static function.
17916         (priority): Use the function.  Add assertion.
17917         (rank_for_schedule, set_priorities): Add assertion to check that
17918         insn's priority is initialized.
17919         (clear_priorities, calc_priorities): Change signature.  Make it update
17920         all relevant insns.  Update all callers ('add_to_speculative_block ()'
17921         and 'create_block_check_twin ()').
17922         * sched-int.h (struct haifa_insn_data): Remove field 'priority_known'.
17923         Add new field 'priority_status'.
17924         (INSN_PRIORITY_STATUS): New macro.
17925         (INSN_PRIORITY_KNOWN): Change to use INSN_PRIORITY_STATUS.
17926
17927 2007-05-04  Maxim Kuvyrkov  <mkuvyrkov@ispras.ru>
17928
17929         * sched-ebb.c (debug_ebb_dependencies): New static function.
17930         (init_ready_list): Use it.
17931
17932         * sched-rgn.c (debug_dependencies): Split into 'debug_dependencies ()'
17933         with changed signature and 'debug_rgn_dependencies ()'.
17934         (debug_rgn_dependencies): New static function.
17935         (init_ready_list): Use it.
17936
17937         * sched-int.h (debug_dependencies): Declare.
17938
17939 2007-05-04  Andreas Krebbel  <krebbel1@de.ibm.com>
17940
17941         * libgcc-std.ver (__ffssi2): Added to GCC_4.3.0 section.
17942
17943 2007-05-04  Dirk Mueller  <dmueller@suse.de>
17944
17945         * c.opt(Wmain,ffreestanding): Enable for C++,ObjC++.
17946
17947 2007-05-03  Jan Hubicka  <jh@suse.cz>
17948
17949         * fold-const.c (fold_unary): Convert (T1)(X op Y) into
17950         ((T1)X op (T1)Y), for pointer type in more cases than before.
17951
17952         * gimplify.c (gimplify_expr): Fold (void *)&a + 4.
17953
17954         * tree-object-size.c (plus_expr_object_size): When operand size is
17955         unknown, return unknown.
17956
17957 2007-05-03  Dirk Mueller  <dmueller@suse.de>
17958
17959         * doc/invoke.texi (-m386,-m486,-mpentium,-mpentiumpro): Remove.
17960
17961         * config/i386/i386.h (CC1_CPU_SPEC): Remove handling for deprecated
17962         options.
17963
17964         * config/i386/i386.opt (m386,m486,mpentium,mpentiumpro): Remove.
17965
17966 2007-05-03  Janis Johnson  <janis187@us.ibm.com>
17967
17968         * doc/sourcebuild.texi (Test Directives) Clarify dg-excess-errors.
17969
17970 2007-05-03  Joseph Myers  <joseph@codesourcery.com>
17971
17972         * config/soft-fp/double.h, config/soft-fp/extended.h,
17973         config/soft-fp/floatundidf.c, config/soft-fp/floatundisf.c,
17974         config/soft-fp/floatunsidf.c, config/soft-fp/floatunsisf.c,
17975         config/soft-fp/op-2.h, config/soft-fp/op-4.h,
17976         config/soft-fp/op-common.h, config/soft-fp/quad.h: Update from
17977         glibc CVS.
17978
17979 2007-05-03  Ian Lance Taylor  <iant@google.com>
17980
17981         * config/rs6000/rs6000.c (rs6000_override_options): Don't set
17982         MASK_PPC_GFXOPT for 8540 or 8548.
17983
17984 2007-05-03  Uros Bizjak  <ubizjak@gmail.com>
17985
17986         * tree-vect-transform.c (vect_update_inits_of_drs): Use
17987         vect_print_dump_info() to output debug information.
17988
17989 2007-05-03  Uros Bizjak  <ubizjak@gmail.com>
17990
17991         PR target/31768
17992         * config/i386/i386.c (print_operand) ['z']: Output 'w' for
17993         operands of size 2 when operand is not MEM_P.
17994
17995 2007-05-03  Zdenek Dvorak  <dvorakz@suse.cz>
17996
17997         PR tree-optimization/30565
17998         * lambda-code.c (perfect_nestify): Fix updating of dominators.
17999
18000 2007-05-03  Bernd Schmidt  <bernd.schmidt@analog.com>
18001
18002         * config/bfin/bfin.md (addpdi3, us_truncpdisi2): New patterns.
18003         (umulsi3_highpart): Use them.
18004         * config/bfin/lib1funcs.asm (__umulsi3_highpart): Use unsigned move
18005         for final accumulator to D regisster tranfser.
18006
18007 2007-05-03  Dorit Nuzman  <dorit@il.ibm.com>
18008
18009         PR tree-optimization/31699
18010         * tree-vect-analyze.c (vect_update_misalignment_for_peel): Remove
18011         wrong code.
18012         (vect_enhance_data_refs_alignment): Compute peel amount using
18013         TYPE_VECTOR_SUBPARTS instead of vf.
18014         * tree-vect-transform.c (vect_gen_niters_for_prolog_loop): Likewise.
18015
18016 2007-05-02  Brooks Moses  <brooks.moses@codesourcery.com>
18017
18018         PR bootstrap/31776
18019         * system.h: Remove inclusion of double-int.h
18020         * tree.h: Include double-int.h
18021         * gengtype.c: Likewise
18022         * cfgloop.h: Likewise
18023         * Makefile.in: Adjust dependencies on double-int.h
18024
18025 2007-05-02  Eric Christopher  <echristo@apple.com>
18026
18027         * config/darwin.h (TARGET_OPTION_TRANSLATE_TABLE): Translate
18028         -shared to -Zdynamiclib.
18029
18030 2007-05-02  Seongbae Park  <seongbae.park@gmail.com>
18031
18032         PR c++/31663
18033         * c-common.c (strip_pointer_or_array_types): New function.
18034         * c-common.h (strip_pointer_or_array_types): New function declaration.
18035
18036 2007-05-03  Zdenek Dvorak  <dvorakz@suse.cz>
18037
18038         PR tree-optimization/31771
18039         * tree-cfg.c (move_block_to_fn): Assign bb to the correct index.
18040
18041 2007-05-02  Paul Brook  <paul@codesourcery.com>
18042
18043         * config/arm/bpabi.S (aeabi_lcmp): Fix result on overflow.
18044
18045 2007-05-02  Andrew Pinski  <andrew_pinski@playstation.sony.com>
18046
18047         PR middle-end/29715
18048         * fold-const.c (fold_comparision): Remove the "foo++ == CONST"
18049         transformation.
18050
18051 2007-05-02  Nick Clifton  <nickc@redhat.com>
18052
18053         * config/frv/predicates.md (symbolic_operand): Accept CONSTs.
18054
18055 2007-05-02  Richard Guenther  <rguenther@suse.de>
18056
18057         PR tree-optimization/31146
18058         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): New
18059         argument, single_use_p.  If we have a single use that is
18060         a conversion to the definition rhs type, propagate that rhs.
18061         (forward_propagate_addr_expr): Pass single_use_p argument
18062         to forward_propagate_addr_expr_1.
18063
18064 2007-05-01  H.J. Lu  <hongjiu.lu@intel.com>
18065
18066         * config/i386/i386.c (ix86_expand_sse_comi): Remove unused
18067         variable.
18068
18069 2007-05-01  Dwarakanath Rajagopal <dwarak.rajagopal@amd.com>
18070
18071         * doc/invoke.texi: Fix typo, 'AMD Family 10h core' instead of
18072         'AMD Family 10 core'.
18073
18074 2007-05-01  Dwarakanath Rajagopal <dwarak.rajagopal@amd.com>
18075
18076         * config/i386/i386.c (override_options): Accept k8-sse3, opteron-sse3
18077         and athlon64-sse3 as improved versions of k8, opteron and athlon64
18078         with SSE3 instruction set support.
18079         * doc/invoke.texi: Likewise.
18080
18081 2007-05-01  Dwarakanath Rajagopal <dwarak.rajagopal@amd.com>
18082
18083         * config/i386/i386.c (override_options): Tuning 32-byte loop
18084         alignment for amdfam10 architecture. Increasing the max loop
18085         alignment to 24 bytes.
18086
18087 2007-05-01  Kazu Hirata  <kazu@codesourcery.com>
18088
18089         * config/m68k/constraints.md: New.
18090         * config/m68k/m68k.h (REG_CLASS_FROM_LETTER,
18091         CONST_OK_FOR_LETTER_P, CONST_DOUBLE_OK_FOR_LETTER_P,
18092         EXTRA_CONSTRAINT): Remove.
18093         * config/m68k/m68k.md: Include constraints.md.
18094         * expr.c (expand_expr_real_1): Copy DECL_RTL before using it.
18095
18096 2007-05-01  Ian Lance Taylor  <iant@google.com>
18097
18098         PR tree-optimization/31739
18099         * tree-vrp.c (vrp_val_is_max): New static function.
18100         (vrp_val_is_min): New static function.
18101         (set_value_range_to_value): Use TYPE_{MAX,MIN}_VALUE rather than
18102         copying the node.
18103         (set_value_range): Use vrp_val_is_{max,min}.
18104         (extract_range_from_assert): Likewise.
18105         (extract_range_from_binary_expr): Likewise.
18106         (extract_range_from_unary_expr): Likewise.
18107         (dump_value_range, vrp_meet): Likewise.
18108         (vrp_visit_phi_node): Likewise.
18109         * tree.c (build_distinct_type_copy): Revert change of 2007-04-27.
18110
18111 2007-05-01  Mark Mitchell  <mark@codesourcery.com>
18112
18113         * config/i386/gmon-sol2.c (size_t): New type.
18114         (intptr_t): Likewise.
18115         (s_textsize): Declare as size_t.
18116         (sbrk): Declare.
18117         (monstartup): Use size_t for sizes.
18118         (_mcount): Save and restore registers.
18119         (internal_mcount): Pass 0 as the first argument to monstartup
18120         in 64-bit mode.
18121         (moncontrol): Convert pointer to appropriately sized integer
18122         before passing to profil.
18123
18124 2007-05-01  Joseph Myers  <joseph@codesourcery.com>
18125
18126         * config/rs6000/darwin-ldouble.c (__gcc_qunord): Define if
18127         __NO_FPRS__, not just if _SOFT_DOUBLE.
18128         * config/rs6000/libgcc-ppc-glibc.ver (__gcc_qunord): Likewise.
18129         * config/rs6000/rs6000.c (rs6000_init_libfuncs): Use __gcc_qunord
18130         also for E500 double.
18131         * config/rs6000/rs6000.md (buneq, bunge, bungt, bunle, bunlt,
18132         suneq, sunge, sungt, sunle, sunlt): Disable for (TARGET_HARD_FLOAT
18133         && !TARGET_FPRS).
18134
18135 2007-05-01  Richard Guenther  <rguenther@suse.de>
18136
18137         * tree-ssa-loop-manip.c (ip_normal_pos): Check if last stmt
18138         is NULL.
18139
18140 2007-05-01  Joseph Myers  <joseph@codesourcery.com>
18141
18142         * config/rs6000/libgcc-ppc-glibc.ver (__gcc_qgt): Fix typo.
18143
18144 2007-05-01  Jan Hubicka  <jh@suse.cz>
18145
18146         * tree-vectorize.c (vect_is_simple_use): gimple_min_invariant is
18147         invariant.
18148
18149 2007-05-01  Jan Hubicka  <jh@suse.cz>
18150
18151         * tree.h (maybe_fold_offset_to_component_ref): Remove.
18152         (maybe_fold_offset_to_reference): Declare.
18153         * fold-const.c (fold_unary): Do not fold
18154         (type *)&A into &A->field_of_type_and_offset_0
18155         * tree-ssa-ccp.c (maybe_fold_offset_to_array_ref): When base type
18156         size is unknown, give up.
18157         (maybe_fold_offset_to_component_ref): Ignore firelds with unknown
18158         offsets.
18159         (maybe_fold_offset_to_reference): New.
18160         (maybe_fold_stmt_indirect): Use it.
18161         (fold_stmt_r): Fold (type *)&A+offset into A->field_if_type_and_offset.
18162         * gimplify.c (gimplify_conversion): Canonicalize conversions to
18163         field references.
18164         (gimplify_expr): Likewise for plus_expr.
18165
18166 2007-05-01  Zdenek Dvorak  <dvorakz@suse.cz>
18167
18168         * tree-ssa-loop-ivopts.c (rewrite_use_nonlinear_expr): Use
18169         bsi_after_labels.  Always insert statements before bsi.
18170         * tree-vect-transform.c (vect_create_epilog_for_reduction): Ditto.
18171         * predict.c (apply_return_prediction): Check for empty blocks.
18172         * cfgexpand.c (lab_rtx_for_bb): New variable.
18173         (label_rtx_for_bb): Do not create new tree labels.
18174         (expand_gimple_basic_block): Add labels recorded in lab_rtx_for_bb.
18175         (tree_expand_cfg): Initialize lab_rtx_for_bb.
18176         * tree-cfg.c (build_tree_cfg): Call cleanup_dead_labels after
18177         creating edges.
18178         (label_for_bb): Add field used.
18179         (update_eh_label, main_block_label): Mark the label used.
18180         (cleanup_dead_labels): Remove unused labels.
18181
18182 2007-05-01  Richard Guenther  <rguenther@suse.de>
18183
18184         * tree-vrp.c (set_value_range): Do not allocate equiv bitmap
18185         if it is not about to be set.
18186         (get_value_range): Do not pre-allocate equiv bitmap.
18187         (update_value_range): No need to clear equiv field.
18188         (add_equivalence): Change prototype to get bitmap pointer.
18189         Allocate bitmap here if it is not already.
18190         (extract_range_from_assert): Do not allocate bitmap here.
18191         Update callers to add_equivalence.
18192         (extract_range_from_ssa_name): Likewise.
18193         (get_vr_for_comparison): New static helper.
18194         (compare_name_with_value): Handle NULL equiv bitmap by
18195         peeling the first iteration of the comparison loop.
18196         Use get_vr_for_comparison.
18197         (compare_names): Handle NULL equiv bitmaps by using fake
18198         ones.  Use get_vr_for_comparison.
18199
18200 2007-04-30  Brooks Moses  <brooks.moses@codesourcery.com>
18201
18202         * double-int.c (mpz_set_double_int): Moved from
18203         tree-ssa-loop-niter.c.
18204         (mpz_get_double_int): Likewise; also, add option to wrap
18205         out-of-range integers.
18206         * double-int.h: New prototypes for above.
18207         * tree.c (get_static_type_bounds): Moved from
18208         tree-ssa-loop-niter.c; now returns TYPE_MIN_VALUE and
18209         TYPE_MAX_VALUE if they exist..
18210         * tree.h: New prototype for above.
18211         * tree-ssa-loop-niter.c: Adjust mpz_to_double_int and
18212         get_type_bounds calls.
18213         (mpz_set_double_int): Move to double-int.c.
18214         (get_type_bounds): Move to tree.c, rename to
18215         get_static_type_bounds.
18216         (mpz_to_double_int): Move to double-int.c, rename to
18217         mpz_get_double_int.
18218
18219 2007-04-30  Bob Wilson  <bob.wilson@acm.org>
18220
18221         * config/xtensa/lib1funcs.asm (__umodsi3, __modsi3): Rearrange so that
18222         DIV0 exception can fall through to a normal return.
18223
18224 2007-04-30  Alexandre Oliva  <aoliva@redhat.com>
18225
18226         PR middle-end/22156
18227         Temporarily revert:
18228         2007-04-06  Andreas Tobler  <a.tobler@schweiz.org>
18229         * tree-sra.c (sra_build_elt_assignment): Initialize min/maxshift.
18230         2007-04-05  Alexandre Oliva  <aoliva@redhat.com>
18231         * tree-sra.c (try_instantiate_multiple_fields): Needlessly
18232         initialize align to silence bogus warning.
18233         2007-04-05  Alexandre Oliva  <aoliva@redhat.com>
18234         * tree-sra.c (struct sra_elt): Add in_bitfld_block.  Remove
18235         all_no_warning.
18236         (struct sra_walk_fns): Remove use_all parameter from use.
18237         (sra_hash_tree): Handle BIT_FIELD_REFs.
18238         (sra_elt_hash): Don't hash bitfld blocks.
18239         (sra_elt_eq): Skip them in parent compares as well.  Handle
18240         BIT_FIELD_REFs.
18241         (sra_walk_expr): Don't maintain or pass down use_all_p.
18242         (scan_use): Remove use_all parameter.
18243         (scalarize_use): Likewise.  Re-expand assignment to
18244         BIT_FIELD_REF of gimple_reg.  De-scalarize before input or
18245         output, and re-scalarize after output.  Don't mark anything
18246         for no warning.
18247         (scalarize_ldst): Adjust.
18248         (scalarize_walk_gimple_modify_statement): Likewise.
18249         (build_element_name_1): Handle BIT_FIELD_REFs.
18250         (instantiate_element): Don't warn for any element whose parent
18251         is used as a whole.
18252         (instantiate_missing_elements_1): Return the sra_elt.
18253         (canon_type_for_field): New.
18254         (try_instantiate_multiple_fields): New.
18255         (instantiate_missing_elemnts): Use them.
18256         (mark_no_warning): Removed.
18257         (generate_one_element_ref): Handle BIT_FIELD_REFs.
18258         (REPLDUP, sra_build_elt_assignment): New.
18259         (generate_copy_inout): Use them.
18260         (generate_element_copy): Likewise.  Handle bitfld differences.
18261         (generate_element_zero): Don't recurse for blocks.  Use
18262         sra_build_elt_assignment.
18263         (generate_one_element_int): Take elt instead of var.  Use
18264         sra_build_elt_assignment.
18265         (generate_element_init_1): Adjust.
18266         (scalarize_use, scalarize_copy): Use REPLDUP.
18267         (scalarize_ldst): Move assert before dereference.
18268         (dump_sra_elt_name): Handle BIT_FIELD_REFs.
18269
18270 2007-04-30  Andrew Pinski  <andrew_pinski@playstation.sony.com>
18271
18272         PR C++/31721
18273         * tree.c (reconstruct_complex_type): Reconstruct a reference
18274         correctly.
18275         Also use the same mode for the pointer as the old pointer type.
18276
18277 2007-04-30  Francois-Xavier Coudert  <coudert@clipper.ens.fr>
18278
18279         * doc/trouble.texi (Interoperation): Remove note about Ultrix
18280         Fortran compiler.
18281
18282 2007-04-29  Zdenek Dvorak  <dvorakz@suse.cz>
18283
18284         PR rtl-optimization/31676
18285         * df-scan.c (record_nonlocal_goto_receiver_defs): New function.
18286         (df_refs_record): Call it.
18287
18288 2007-04-29  Bernd Schmidt  <bernd.schmidt@analog.com>
18289
18290         * rtl.def (SS_ABS): New code.
18291         * config/bfin/bfin.c (print_operand): New modifier 'v'.
18292         (enum bfin_builtins): Add BFIN_BUILTIN_SUM_2X16, BFIN_BUILTIN_ABS_1x32,
18293         BFIN_BUILTIN_ROUND_1x32, BFIN_BUILTIN_MULT_1x32x32,
18294         BFIN_BUILTIN_MULT_1x32x32NS, BFIN_BUILTIN_SSASHIFT_1x32.
18295         (bfin_init_builtins): Define them.
18296         (bdesc_1arg, bdesc_2arg): Add some of them here, ...
18297         (bfin_expand_builtin): ... and handle the others here.
18298         * config/bfin/bfin.md (ssabssi2, ssroundsi2, ssashiftsi3,
18299         flag_mul_macv2hi_parts_acconly_andcc0): New patterns.
18300         (ss_absv2hi2): Renamed from absv2hi; use ss_abs code.
18301         (ssashiftv2hi3, ssashifthi3, lshiftv2hi3, lshifthi3): Shift count
18302         operand is only HImode.
18303
18304 2007-04-29  Steven Bosscher  <steven@gcc.gnu.org>
18305
18306         * regclass.c (scan_one_insn): Remove splitting of
18307         two address insns.
18308
18309 2007-04-28  Sandra Loosemore  <sandra@codesourcery.com>
18310             Nigel Stephens  <nigel@mips.com>
18311
18312         * config/mips/mips.h (SLOW_BYTE_ACCESS): Turn off for MIPS16.
18313
18314 2007-04-28  Jan Hubicka  <jh@suse.cz>
18315
18316         * config/alpha/alpha.c (alpha_output_mi_thunk_osf): Use
18317         insn_locators_alloc instead of insn_locators_initialize;
18318         call reset_block_changes.
18319         * config/sparc/sparc.c (sparc_output_mi_thunk): Likewise.
18320         * config/sh/sh.c (sparc_output_mi_thunk): Likewise.
18321         * config/is64/ia64.c (ia64_output_mi_thunk): Likewise.
18322         * config/rs6000/rs6000.c (rs6000_output_mi_thunk): Likewise.
18323         * config/score/score.c (th_output_mi_thunk): Likewise.
18324         * config/mips/mips.c (mips_output_mi_thunk): Likewise.
18325         * cfglyaout.c (set_curr_insn_source_location, set_curr_insn_block):
18326         tolerate uninitialized locator info.
18327
18328         Re-apply:
18329         * function.c (init_function_start): Don't init line number info.
18330         (expand_function_end): Update.
18331         (reset_block_changes, record_block_change, finalize_block_changes,
18332         check_block_change, free_block_changes): Kill.
18333         * function.h (reset_block_changes, record_block_change,
18334         finalize_block_changes, check_block_change, free_block_changes):
18335         Remove prototypes.
18336         (struct function): Remove ib_boundaries_block.
18337         * emit-rtl.c (make_insn_raw, make_jump_insn_raw, make_call_insn_raw):
18338         Use curr_insn_locator to initialize locator.
18339         (emit_line_note): Remove.
18340         * cfgexpand.c (expand_gimple_cond_expr): Update.
18341         (construct_exit_block): Likewise.
18342         (tree_expand_cfg): Initialize/finalize locators.
18343         * expr.c (expand_expr_real): Update.
18344         * cfglayout.c (line_locators_locs, line_locators_lines,
18345         file_locators_locs, file_locators_files): Remove.
18346         (set_block_levels): Move to cfgexpand.c.
18347         (insn_locators_initialize): Remove.
18348         (pass_insn_locators_initialize): Remove.
18349         (locations_locators_locs, locations_locators_vals): New static vars.
18350         (curr_location, last_location, curr_block, last_block, curr_rtl_loc):
18351         Likewise.
18352         (insn_locators_alloc, insn_locators_finalize,
18353         set_curr_insn_source_location, set_curr_insn_block, curr_insn_locator):
18354         New functions.
18355         (locator_location): New.
18356         (locator_line, locator_file): Rewrite.
18357         * rtl.h (emit_line_note): Kill.
18358         (insn_locators_alloc, insn_locators_finalize,
18359         set_curr_insn_source_location, set_curr_insn_block, curr_insn_locator):
18360         Declare.
18361         * tree-inline.c (initialize_cfun): Do not initialize
18362         ib_boundaries_block.
18363         * passes.c (pass_insn_locators_initialize): Remove.
18364
18365 2007-04-28  Zdenek Dvorak  <dvorakz@suse.cz>
18366
18367         * tree-cfg.c (move_block_to_fn): Release bb from dominance
18368         info.  Update last_basic_block correctly.
18369
18370 2007-04-27  Kaz Kojima  <kkojima@gcc.gnu.org>
18371
18372         PR target/31701
18373         * config/sh/sh.c (output_stack_adjust): Avoid using the frame
18374         register itself to hold the offset constant.  Tell flow the use
18375         of r4 and r5 when they are used.
18376
18377 2007-04-27  Richard Guenther  <rguenther@suse.de>
18378
18379         * tree-ssa-forwprop.c (forward_propagate_into_cond): Keep track
18380         if we simplified anything.
18381         (tree_ssa_forward_propagate_single_use_vars): Defer overflow
18382         warnings until we did a simplification and the stmt was not
18383         marked as TREE_NO_WARNING.
18384
18385 2007-04-27  Mike Stump  <mrs@apple.com>
18386
18387         * config/rs6000/darwin.h (ALWAYS_PUSH_CONSTS_USING_REGS_P): Remove.
18388
18389 2007-04-27  Ian Lance Taylor  <iant@google.com>
18390
18391         PR middle-end/31710
18392         * tree.c (build_distinct_type_copy): If TYPE_MIN_VALUE or
18393         TYPE_MAX_VALUE exist, convert them to the new type.
18394
18395 2007-04-27  Zdenek Dvorak  <dvorakz@suse.cz>
18396
18397         * tree-cfgcleanup.c (cleanup_tree_cfg): Verify dominance info
18398         if it claims to be available.
18399         * tree-ssa-dce.c (remove_dead_stmt): Mark cfg as altered when
18400         edge is redirected.
18401         (perform_tree_ssa_dce): Always free postdominators.
18402
18403 2007-04-27  Richard Henderson  <rth@redhat.com>
18404
18405         * config/alpha/predicates.md (aligned_memory_operand): Mark
18406         as define_special_predicate.
18407         (unaligned_memory_operand, normal_memory_operand): Likewise.
18408         (reg_or_unaligned_mem_operand): Remove.
18409         (any_memory_operand): Match the documentation and check for
18410         non-renumbered pseudos during reload.
18411         * config/alpha/alpha.c (alpha_secondary_reload): Rename from
18412         alpha_secondary_reload_class, update to new interface, make static.
18413         Handle CQImode like HImode.  Remove FP subreg check.
18414         (alpha_expand_mov): Use replace_equiv_address.
18415         (alpha_expand_mov_nobwx): Use any_memory_operand.
18416         (TARGET_SECONDARY_RELOAD): New.
18417         * config/alpha/alpha.h (SECONDARY_INPUT_RELOAD_CLASS): Remove.
18418         (SECONDARY_OUTPUT_RELOAD_CLASS): Remove.
18419         * config/alpha/sync.md (I12MODE, I48MODE, modesuffix): Move ...
18420         * config/alpha/alpha.md: ... here.
18421         (RELOAD12, reloadmode): New.
18422         (movcqi): New.
18423         (reload_in<RELOAD12>): Macro-ize from reload_inqi, reload_inhi.
18424         Don't handle the aligned case here.
18425         (reload_out<RELOAD12>): Macro-ize from reload_outqi, reload_outhi.
18426         (reload_in<I12MODE>_aligned): Macro-ize from reload_inqi_help,
18427         reload_inhi_help.  Don't expect a scratch register.
18428         (reload_out<I12MODE>_aligned): Macro-ize from reload_outqi_help,
18429         reload_outhi_help.
18430         * config/alpha/alpha-protos.h (alpha_secondary_reload_class): Remove.
18431
18432 2007-04-27  Richard Guenther  <rguenther@suse.de>
18433
18434         * tree-ssa-forwprop.c (get_prop_dest_stmt): Fix comment typo.
18435
18436 2007-04-27  Richard Guenther  <rguenther@suse.de>
18437
18438         PR tree-optimization/30965
18439         PR tree-optimization/30978
18440         * Makefile.in (tree-ssa-forwprop.o): Depend on $(FLAGS_H).
18441         * tree-ssa-forwprop.c (forward_propagate_into_cond_1): Remove.
18442         (find_equivalent_equality_comparison): Likewise.
18443         (simplify_cond): Likewise.
18444         (get_prop_source_stmt): New helper.
18445         (get_prop_dest_stmt): Likewise.
18446         (can_propagate_from): Likewise.
18447         (remove_prop_source_from_use): Likewise.
18448         (combine_cond_expr_cond): Likewise.
18449         (forward_propagate_comparison): New function.
18450         (forward_propagate_into_cond): Rewrite to use fold for
18451         tree combining.
18452         (tree_ssa_forward_propagate_single_use_vars): Call
18453         forward_propagate_comparison to propagate comparisons.
18454
18455 2007-04-27  Richard Guenther  <rguenther@suse.de>
18456
18457         PR tree-optimization/31715
18458         * tree-ssa-ccp.c (maybe_fold_offset_to_array_ref): Make
18459         sure to do computation on the offset in an appropriate
18460         signed type.
18461
18462 2007-04-27  Richard Sandiford  <richard@codesourcery.com>
18463
18464         * reload.h (elimination_target_reg_p): Declare.
18465         * reload.c (find_reloads): Don't apply the reg_rtx move
18466         optimization if the SET_DEST satisfies elimination_target_reg_p.
18467         * reload1.c (elimination_target_reg_p): New function.
18468         (gen_reload): In the move/add2 fallback, make sure that op0
18469         does not overlap the destination register.
18470
18471 2007-04-27  Zdenek Dvorak  <dvorakz@suse.cz>
18472
18473         * tree-ssa-loop-im.c (determine_invariantness_stmt): Attempt to
18474         transform only GIMPLE_MODIFY_STMTs.
18475         * tree-complex.c (expand_complex_operations_1): Ditto.
18476         (expand_complex_div_wide): Do not create gotos in COND_EXPR branches.
18477         * tree-ssa-loop-manip.c (build_if_stmt): Removed.
18478         (tree_transform_and_unroll_loop): Do not create gotos in COND_EXPR
18479         branches.
18480         * value-prof.c (tree_divmod_fixed_value, tree_mod_pow2,
18481         tree_mod_subtract, tree_ic, tree_stringop_fixed_value): Ditto.
18482         * omp-low.c (expand_parallel_call, expand_omp_for_generic,
18483         expand_omp_for_static_chunk, expand_omp_for_static_nochunk): Ditto.
18484         * tree-vectorizer.c (slpeel_make_loop_iterate_ntimes,
18485         slpeel_add_loop_guard): Ditto.
18486         * tree-mudflap.c (mf_build_check_statement_for): Ditto.
18487         * lambda-code.c (perfect_nestify): Ditto.
18488         * tree-iterator.c (tsi_split_statement_list_before): Fix splitting
18489         before the first statement.
18490         * tree-optimize.c (execute_free_datastructures): Fix comments.
18491         (execute_free_cfg_annotations): Do not call disband_implicit_edges.
18492         * tree-flow.h (disband_implicit_edges): Declaration removed.
18493         * tree-cfg.c (make_cond_expr_edges): Remove gotos from COND_EXPR
18494         branches.
18495         (cleanup_dead_labels, tree_redirect_edge_and_branch): Handle
18496         COND_EXPRs without gotos.
18497         (disband_implicit_edges, has_label_p): Removed.
18498         (tree_verify_flow_info): Verify that COND_EXPR branches are empty.
18499         (tree_lv_add_condition_to_bb): Do not create gotos in COND_EXPR
18500         branches.
18501         * tree.c (build3_stat): Mark COND_EXPRs used as statements as having
18502         side effects.
18503         * tree-pretty-print.c (dump_implicit_edges): Dump implicit edges
18504         also for COND_EXPRs.
18505         * cfgexpand.c (label_rtx_for_bb): New function.
18506         (expand_gimple_cond_expr): Do not expect gotos in COND_EXPR branches.
18507         Use label_rtx_for_bb to find the labels.
18508         (expand_gimple_basic_block): Remove RETURN_EXPR at the end of the
18509         last block.  Detect fallthru edges.
18510
18511 2007-04-26  Ian Lance Taylor  <iant@google.com>
18512
18513         PR target/28675
18514         * reload.c (find_reloads_subreg_address): If the address was valid
18515         in the original mode but not in the new mode, reload the whole
18516         address.
18517
18518 2007-04-27  Zdenek Dvorak  <dvorakz@suse.cz>
18519
18520         * tree-cfgcleanup.c (cfgcleanup_altered_bbs): New global variable.
18521         (remove_fallthru_edge): Use remove_edge_and_dominated_blocks.
18522         (cleanup_control_expr_graph): Do not invalidate dominance info.
18523         Record altered blocks.
18524         (cleanup_control_flow, cleanup_forwarder_blocks): Removed.
18525         (cleanup_control_flow_bb, split_bbs_on_noreturn_calls,
18526         cleanup_tree_cfg_bb): New functions.
18527         (remove_forwarder_block): Do not maintain the worklist of blocks.
18528         Record altered blocks.
18529         (cleanup_tree_cfg_1): Iterate over cfgcleanup_altered_bbs,
18530         not over whole cfg.
18531         (cleanup_tree_cfg): Do not iterate cleanup_tree_cfg_1.  Only call
18532         delete_unreachable_blocks if dominators are not available.
18533         * tree-inline.c (optimize_inline_calls): Free dominance information
18534         earlier.
18535         * tree-flow.h (remove_edge_and_dominated_blocks,
18536         cfgcleanup_altered_bbs): Altered.
18537         * tree-cfg.c (replace_uses_by, tree_merge_blocks): Record altered
18538         blocks.
18539         (get_all_dominated_blocks, remove_edge_and_dominated_blocks): New
18540         functions.
18541         (tree_purge_dead_eh_edges): Use remove_edge_and_dominated_blocks,
18542         do not invalidate dominators.
18543
18544 2007-04-26  Anatoly Sokolov <aesok@post.ru>
18545
18546         * config/avr/avr.c (avr_mcu_types): Add support for ATmega8HVA and
18547         ATmega16HVA devices. Move AT90USB82 device to 'avr5' architecture.
18548         * config/avr/avr.h (LINK_SPEC, CRT_BINUTILS_SPECS): (Ditto.).
18549         * config/avr/t-avr (MULTILIB_MATCHES): (Ditto.).
18550
18551 2007-04-26  Steve Ellcey  <sje@cup.hp.com>
18552
18553         * config/ia64/ia64.md (ip_value): Fix itanium_class attribute.
18554
18555 2007-04-26  Richard Guenther  <rguenther@suse.de>
18556
18557         PR tree-optimization/31703
18558         * tree-ssa-loop-im.c (rewrite_bittest): Make sure to use
18559         the right type for the target of the bittest.
18560
18561 2007-04-26  Richard Sandiford  <richard@codesourcery.com>
18562
18563         * config/i386/vx-common.h (RETURN_IN_MEMORY): Use
18564         ix86_sol10_return_in_memory.
18565
18566 2007-04-26  Richard Sandiford  <richard@codesourcery.com>
18567
18568         * config/i386/i386.c (ix86_sol10_return_in_memory): Remove unused
18569         variables.
18570
18571 2007-04-26  Jakub Jelinek  <jakub@redhat.com>
18572
18573         PR c++/31598
18574         * tree-inline.c (copy_body_r): Don't touch TREE_TYPE of OMP_CLAUSE.
18575
18576         PR tree-optimization/30558
18577         * tree-eh.c (lower_eh_filter): If EH_FILTER_MUST_NOT_THROW
18578         clear this_state.prev_try.
18579
18580 2007-04-26  Richard Sandiford  <richard@codesourcery.com>
18581             Mark Mitchell  <mark@codesourcery.com>
18582
18583         * config/i386/i386-protos.h (ix86_sol10_return_in_memory): Declare.
18584         * config/i386/i386.c (ix86_sol10_return_in_memory): New function.
18585         * config/i386/sol2-10.h (RETURN_IN_MEMORY): Use it.
18586
18587 2007-04-26  Richard Sandiford  <richard@codesourcery.com>
18588
18589         PR driver/31107
18590         * doc/invoke.texi (%:print-asm-header): Document.
18591         * gcc.c (asm_options): Use %:print-asm-header() for --target-help
18592         and -ftarget-help.
18593         (static_spec_functions): Add print-asm-header.
18594         (main): Print a banner before the --target-help linker options.
18595         (print_asm_header_spec_function): New function.
18596
18597 2007-04-25  Kaz Kojima  <kkojima@gcc.gnu.org>
18598
18599         PR target/31403
18600         * config/sh/sh.md (movsi_ie): Fix length for TARGET_SH2A.
18601         (movsf_ie): Likewise.
18602
18603 2007-04-25  Paolo Carlini  <pcarlini@suse.de>
18604
18605         * doc/extend.texi ([Type Traits]): Adjust per N2255.
18606
18607 2007-04-25  Bob Wilson  <bob.wilson@acm.org>
18608
18609         * config/xtensa/lib1funcs.asm (__udivsi3, __divsi3): Throw an
18610         exception for divide-by-zero.
18611         (__umodsi3, __modsi3): Likewise.
18612
18613 2007-04-25  Dirk Mueller  <dmueller@suse.de>
18614
18615         * c-typeck.c (build_compound_expr): Annotate warning()
18616         call with OPT_Wunused_value.
18617         * tree-ssa.c (warn_uninit): Annotate warning with
18618         OPT_Wunintialized.
18619         * c-common.c (handle_sentinel_attribute): Annotate warning
18620         call with OPT_Wattributes.
18621
18622 2007-04-25  Thiemo Seufer  <ths@mips.com>
18623
18624         * config/mips/mips.opt (mdmx, mmt, mno-mdmx): New options.
18625         (mips16): Fix typo.
18626         * config/mips/mips.h (ASM_SPEC): Pass -mmt/-mno-mt and -mdmx/-mno-mdmx
18627         on to the assembler.  Improve handling of -mno-mips16.  Add handling
18628         of -mno-mips3d, -mno-dsp, -mno-dspr2.
18629         * doc/invoke.texi (MIPS Options): Whitespace cleanup.  Fix wrong use
18630         of @itemx.  Document -mno-dsp, -mno-dspr2, -mno-paired-single, -mdmx,
18631         -mno-mdmx, -mno-mips3d, -mmt and -mno-mt.
18632
18633 2007-04-25  Danny Smith  <dannysmith.users.sourceforge.net>
18634
18635         PR target/31680
18636         * config/i386/winnt.c (i386_pe_file_end): Strip only
18637         USER_LABEL_PREFIX when writing export name.
18638
18639 2007-04-25  Richard Sandiford  <richard@codesourcery.com>
18640
18641         * config.gcc (sh-wrs-vxworks): Don't include dbxelf.h.  Include
18642         sh/elf.h, vx-common.h and vxworks.h.
18643         * config/sh/sh.h: Include config/vxworks-dummy.h.
18644         (SUBTARGET_OVERRIDE_OPTIONS): Define.
18645         (OVERRIDE_OPTIONS): Use it.
18646         * config/sh/sh.md (GOTaddr2picreg): Add suport for VxWorks RTPs.
18647         (vxworks_picreg): New pattern.
18648         * config/sh/vxworks.h (TARGET_OS_CPP_BUILTINS): Use
18649         VXWORKS_OS_CPP_BUILTINS.
18650         (LIB_SPEC, LINK_SPEC, STARTFILE_SPEC, ENDFILE_SPEC): Redefine
18651         to their VXWORKS_* equivalents.
18652         (SUBTARGET_OVERRIDE_OPTIONS, SUBTARGET_CPP_SPEC): Define.
18653         (SUBTARGET_LINK_EMUL_SUFFIX, FUNCTION_PROFILER): Define.
18654         * config/sh/lib1funcs.asm (NO_FPSCR_VALUES): Define for VxWorks PIC.
18655         (set_fpscr, ic_invalidate): Add VxWorks PIC sequences.
18656         * config/sh/t-vxworks (MULTILIB_OPTIONS): Add m4a, -mrtp and
18657         -mrtp/-fPIC multilibs.
18658         (MULTILIB_EXCEPTIONS): Generalize globs accordingly.
18659         (MULTILIB_MATCHES, EXTRA_MULTILIB_PARTS): Define.
18660         (MULTILIB_OSDIRNAMES): Delete.
18661
18662 2007-04-25  Anatoly Sokolov <aesok@post.ru>
18663
18664         PR target/18989
18665         * config/avr/avr.h (ASM_OUTPUT_ALIGN): Redefine.
18666
18667 2007-04-24  Brooks Moses  <brooks.moses@codesourcery.com>
18668
18669         * real.c (mpfr_from_real): Handle Inf and NaN, and allow the
18670         rounding mode to be specified by the caller.
18671         (real_to_mpfr) Likewise.
18672         * real.h: Update mpfr_from_real, mpfr_to_real prototypes to
18673         include new arguments.
18674         * builtins.c: Update mpfr_from_real, mpfr_to_real calls.
18675
18676 2007-04-24  Ian Lance Taylor  <iant@google.com>
18677
18678         PR tree-optimization/31605
18679         * tree-vrp.c (set_value_range): Check that min and max are not
18680         both overflow infinities.
18681         (set_value_range_to_value): New static function.
18682         (extract_range_from_binary_expr): Call set_value_range_to_value.
18683         (extract_range_from_cond_expr): Likewise.
18684         (extract_range_from_expr): Likewise.
18685         (extract_range_from_unary_expr): Likewise.  Don't create a range
18686         which overflows on both sides.
18687         (vrp_meet): Check for a useless range.
18688         (vrp_visit_phi_node): If we see a constant which looks like an
18689         overflow infinity, turn off the TREE_OVERFLOW flag.
18690
18691 2007-04-24  Ian Lance Taylor  <iant@google.com>
18692
18693         * flow.c (elim_reg_cond): Handle a comparison of a subreg.
18694
18695 2007-04-24  Simon Martin  <simartin@users.sourceforge.net>
18696
18697         PR diagnostic/25923
18698         * tree-pass.h (TDF_DIAGNOSTIC): New dump control to specify that a
18699         diagnostic message is being built.
18700         * tree-pretty-print.c (dump_generic_node): Only write the
18701         formatted text into BUFFER's stream if we are not building a
18702         diagnostic message.
18703         * toplev.c (default_tree_printer): Pass TDF_DIAGNOSTIC to
18704         dump_generic_node.
18705         * Makefile.in (toplev.o): Depend on tree-pass.h.
18706
18707 2007-04-24  Ian Lance Taylor  <iant@google.com>
18708
18709         PR tree-optimization/31602
18710         * tree-ssa-loop-ch.c (copy_loop_headers): Set TREE_NO_WARNING for
18711         conditionals in the copied loop header.
18712         * tree-cfg.c (fold_cond_expr_cond): Don't issue undefined overflow
18713         warnings if TREE_NO_WARNING is set.
18714         * doc/invoke.texi (Warning Options): Clarify that
18715         -Wstrict-overflow does not warn about loops.
18716
18717 2007-04-24  Janis Johnson  <janis187@us.ibm.com>
18718
18719         * config/rs6000/rs6000.c (function_arg_advance): For 32-bit ELF ABI,
18720         expand on the comment about _Decimal128 arguments and check the
18721         integer result of the modulus operation; for 64-bit ELF ABI, ensure
18722         that _Decimal128 argument uses even/odd register pair.
18723         (function_arg): Ditto.
18724
18725 2007-04-24  Hui-May Chang <hm.chang@apple.com>
18726
18727         * reload1.c (merge_assigned_reloads) : Do not merge a RELOAD_OTHER
18728         instruction with a RELOAD_FOR_OPERAND_ADDRESS instruction.
18729
18730 2007-04-24  Richard Guenther  <rguenther@suse.de>
18731             Olga Golovanevsky  <olga@il.ibm.com>
18732
18733         * fold-const.c (multiple_of_p): Check for bottom
18734         to be zero.
18735
18736 2007-04-24  Richard Henderson  <rth@redhat.com>
18737
18738         * libgcc2.h (AVOID_FP_TYPE_CONVERSION): Rename from
18739         IS_IBM_EXTENDED.  Also define in terms of WIDEST_HARDWARE_FP_SIZE.
18740         * libgcc2.c (__floatdisf): Avoid double-word arithmetic when
18741         looking for non-zero bits shifted out.  Avoid a recursive call
18742         when constructing the scalar.
18743         (__floatundisf): Likewise.
18744
18745 2007-04-24  Nathan Froyd  <froydnj@codesourcery.com>
18746
18747         * dwarf2out.c (field_byte_offset): Move the existing logic
18748         under the control of PCC_BITFIELD_TYPE_MATTERS and just use
18749         the bit offset of the field if !PCC_BITFIELD_TYPE_MATTERS.
18750
18751 2007-04-24  Andreas Krebbel  <krebbel1@de.ibm.com>
18752
18753         PR target/31641
18754         * config/s390/s390.c (s390_expand_setmem): Don't ICE for constant
18755         length argument of 0 for memset.
18756         (s390_expand_movmem, s390_expand_setmem, s390_expand_cmpmem): Use
18757         unsigned shift instead of the signed variant.
18758
18759 2007-04-24  Andreas Krebbel  <krebbel1@de.ibm.com>
18760
18761         * config/s390/s390.md ("*cmp<mode>_ccs_0_ibm", "*cmp<mode>_ccs_ibm",
18762         "fix_trunc<BFP:mode><GPR:mode>2_ieee", "fix_truncdfsi2_ibm",
18763         "floatsidf2_ibm", "floatsisf2", "truncdfsf2_ieee", "truncdfsf2_ibm",
18764         "*trunctfdf2_ieee", "*trunctfdf2_ibm", "*trunctfsf2_ieee",
18765         "*trunctfsf2_ibm", "extendsfdf2_ieee", "extendsfdf2_ibm",
18766         "*extenddftf2_ieee", "*extenddftf2_ibm", "*extendsftf2_ieee",
18767         "*extendsftf2_ibm", "*add<mode>3", "*add<mode>3_ibm", "*sub<mode>3_ibm",
18768         "*mul<mode>3", "*mul<mode>3_ibm", "*div<mode>3", "*div<mode>3_ibm",
18769         "*neg<mode>2_ibm", "*abs<mode>2_ibm"): Insn definitions removed.
18770         ("fix_trunc<BFP:mode><GPR:mode>2_bfp", "floatsi<mode>2",
18771         "truncdfsf2", "trunctf<mode>2", "add<mode>3", "sub<mode>3",
18772         "mul<mode>3", "div<mode>3"): Insn definitions added.
18773         ("fixuns_trunc<BFP:mode><GPR:mode>2", "fix_trunc<mode>di2",
18774         "fix_trunc<mode>si2"): gen_fix_trunc<BFP:mode><GPR:mode>2_ieee renamed
18775         to gen_fix_trunc<BFP:mode><GPR:mode>2_bfp.
18776         ("fix_truncdfsi2", "floatsitf2", "truncdfsf2", "trunctfdf2",
18777         "trunctfsf2", "extendsfdf2", "extenddftf2", "extendsftf2", "add<mode>3",
18778         "sub<mode>3", "mul<mode>3", "div<mode>3"): Expander removed.
18779         ("fix_trunc<mode>si2", "extend<DSF:mode><BFP:mode>2"): Expander added.
18780         * config/s390/s390.h (TARGET_IBM_FLOAT, TARGET_IEEE_FLOAT,
18781         TARGET_FLOAT_FORMAT): Macro definitions removed.
18782         (FP_REGNO_P): No special case for !TARGET_IEEE_FLOAT anymore.
18783         * config/s390/s390.c (struct processor_costs, z900_cost, z990_cost,
18784         z9_109_cost): Remove fields for hexfloat instructions: dxr, ddr and der.
18785         (s390_rtx_costs): Remove !TARGET_IEEE_FLOAT special branches.
18786         (s390_gen_rtx_const_DI): Function removed.
18787         * config/s390/s390-protos.h (s390_gen_rtx_const_DI): Prototype removed.
18788
18789 2007-04-24  Richard Sandiford  <richard@codesourcery.com>
18790
18791         * optabs.c (set_conv_libfunc): Prefer libgcc2's __ffsMM2 functions
18792         over an external ffs function.
18793
18794 2007-04-24  Chao-ying Fu  <fu@mips.com>
18795             Richard Sandiford  <richard@nildram.co.uk>
18796
18797         * doc/md.texi (madd@var{m}@var{n}4, umadd@var{m}@var{n}4): Document.
18798         * optabs.h (OTI_smadd_widen, OTI_umadd_widen): New optab_indexes.
18799         (smadd_widen_optab, umadd_widen_optab): Define.
18800         * optabs.c (init_optabs): Initialize smadd_widen_optab and
18801         umadd_widen_optab.
18802         * genopinit.c (optabs): Fill in smadd_widen_optab and
18803         umadd_widen_optab.
18804         * expr.c (expand_expr_real_1): Try to use smadd_widen_optab
18805         and umadd_widen_optab to implement multiply-add sequences.
18806         * config/mips/mips.md (*<su>mul_acc_di): Rename to...
18807         (<u>maddsidi4): ...this.  Extend condition to include
18808         GENERATE_MADD_MSUB and TARGET_DSPR2.  Change the constraint
18809         of operand 0 to "ka" and use the three-operand form of madd<u>
18810         for TARGET_DSPR2.
18811         * config/mips/mips-dspr2.md (mips_madd, mips_maddu): Convert
18812         to define_expands.
18813         * config/mips/constraints.md (ka): New register constraint.
18814
18815 2007-04-24  Jan Hubicka  <j@suse.cz>
18816
18817         Revert:
18818
18819         2007-04-23  Jan Hubicka  <jh@suse.cz>
18820         * function.c (init_function_start): Don't init line number info.
18821         (expand_function_end): Update.
18822         (reset_block_changes, record_block_change, finalize_block_changes,
18823         check_block_change, free_block_changes): Kill.
18824         * function.h (reset_block_changes, record_block_change,
18825         finalize_block_changes, check_block_change, free_block_changes):
18826         Remove prototypes.
18827         (struct function): Remove ib_boundaries_block.
18828         * emit-rtl.c (make_insn_raw, make_jump_insn_raw, make_call_insn_raw):
18829         Use curr_insn_locator to initialize locator.
18830         (emit_line_note): Remove.
18831         * cfgexpand.c (expand_gimple_cond_expr): Update.
18832         (construct_exit_block): Likewise.
18833         (tree_expand_cfg): Initialize/finalize locators.
18834         * expr.c (expand_expr_real): Update.
18835         * cfglayout.c (line_locators_locs, line_locators_lines,
18836         file_locators_locs, file_locators_files): Remove.
18837         (set_block_levels): Move to cfgexpand.c.
18838         (insn_locators_initialize): Remove.
18839         (pass_insn_locators_initialize): Remove.
18840         (locations_locators_locs, locations_locators_vals): New static vars.
18841         (curr_location, last_location, curr_block, last_block, curr_rtl_loc):
18842         Likewise.
18843         (insn_locators_alloc, insn_locators_finalize,
18844         set_curr_insn_source_location, set_curr_insn_block, curr_insn_locator):
18845         New functions.
18846         (locator_location): New.
18847         (locator_line, locator_file): Rewrite.
18848         * rtl.h (emit_line_note): Kill.
18849         (insn_locators_alloc, insn_locators_finalize,
18850         set_curr_insn_source_location, set_curr_insn_block, curr_insn_locator):
18851         Declare.
18852         * tree-inline.c (initialize_cfun): Do not initialize
18853         ib_boundaries_block.
18854         * passes.c (pass_insn_locators_initialize): Remove.
18855
18856 2007-04-24  Daniel Franke  <franke.daniel@gmail.com>
18857
18858         * doc/invoke.texi: Removed leading '-' from option index entries.
18859
18860 2007-04-23  Zdenek Dvorak  <dvorakz@suse.cz>
18861
18862         * tree-phinodes.c (reserve_phi_args_for_new_edge, remove_phi_node):
18863         Use phi_nodes_ptr.
18864         (create_phi_node): Use set_phi_nodes.
18865         * omp-low.c (expand_omp_parallel): Use bb_stmt_list.
18866         * tree-if-conv.c (process_phi_nodes): Use set_phi_nodes.
18867         (combine_blocks): Use bb_stmt_list and set_bb_stmt_list.
18868         * tree-flow-inline.h (phi_nodes, set_phi_nodes,
18869         (bsi_start, bsi_last): Use bb_stmt_list.
18870         (phi_nodes_ptr, bb_stmt_list, set_bb_stmt_list): New functions.
18871         * cfgexpand.c (expand_gimple_basic_block): Use bb_stmt_list.
18872         Traverse the statements using tsi iterator.
18873         * basic-block.h (struct basic_block_def): Fields stmt_list
18874         and phi_nodes moved to ...
18875         (struct tree_bb_info): ... new structure.
18876         * tree-cfg.c (create_bb): Allocate il.tree.  Use set_bb_stmt_list.
18877         (tree_merge_blocks): Use bb_stmt_list and set_bb_stmt_list.
18878         (remove_bb): Handle blocks with NULL stmt list.  Clear il.tree field.
18879         (tree_verify_flow_info): Verify that il.tree is not set for
18880         entry and exit block.
18881         (tree_split_block): Use set_bb_stmt_list.
18882
18883 2007-04-23  Mike Stump  <mrs@apple.com>
18884
18885         * config/i386/i386.c (ix86_tune_features
18886         [X86_TUNE_DEEP_BRANCH_PREDICTION]: Prefer call over thunks on
18887         nocona and core2.
18888
18889 2007-04-23  H.J. Lu  <hongjiu.lu@intel.com>
18890
18891         * config/i386/i386.md (prefix_extra): New attribute.
18892         (length): Add prefix_extra.
18893
18894         * onfig/i386/sse.md (sse2_movdqu): Set prefix_data16.
18895         (sse2_movntv2di): Likewise.
18896         (sse2_cvtps2dq): Likewise.
18897         (sse2_cvtpd2pi): Likewise.
18898         (sse2_cvttpd2pi): Likewise.
18899         (*sse2_cvtpd2ps): Likewise.
18900         (*add<mode>3): Likewise.
18901         (sse2_ssadd<mode>3): Likewise.
18902         (sse2_usadd<mode>3): Likewise.
18903         (*sub<mode>3): Likewise.
18904         (sse2_sssub<mode>3): Likewise.
18905         (sse2_ussub<mode>3): Likewise.
18906         (*mulv8hi3): Likewise.
18907         (*smulv8hi3_highpart): Likewise.
18908         (*umulv8hi3_highpart): Likewise.
18909         (sse2_umulv2siv2di3): Likewise.
18910         (sse2_pmaddwd): Likewise.
18911         (ashr<mode>3): Likewise.
18912         (lshr<mode>3): Likewise.
18913         (ashl<mode>3): Likewise.
18914         (sse2_ashlti3): Likewise.
18915         (sse2_lshrti3): Likewise.
18916         (*umaxv16qi3): Likewise.
18917         (*smaxv8hi3): Likewise.
18918         (*uminv16qi3): Likewise.
18919         (*sminv8hi3): Likewise.
18920         (sse2_eq<mode>3): Likewise.
18921         (sse2_gt<mode>3): Likewise.
18922         (*and<mode>3): Likewise.
18923         (sse2_nand<mode>3): Likewise.
18924         (*ior<mode>3): Likewise.
18925         (*xor<mode>3): Likewise.
18926         (sse2_packsswb): Likewise.
18927         (sse2_packssdw): Likewise.
18928         (sse2_packuswb): Likewise.
18929         (sse2_punpckhbw): Likewise.
18930         (sse2_punpcklbw): Likewise.
18931         (sse2_punpckhwd): Likewise.
18932         (sse2_punpcklwd): Likewise.
18933         (sse2_punpckhdq): Likewise.
18934         (sse2_punpckldq): Likewise.
18935         (sse2_punpckhqdq): Likewise.
18936         (sse2_punpcklqdq): Likewise.
18937         (*sse2_pinsrw): Likewise.
18938         (*sse2_pextrw): Likewise.
18939         (sse2_pshufd_1): Likewise.
18940         (sse2_uavgv16qi3): Likewise.
18941         (sse2_uavgv8hi3): Likewise.
18942         (sse2_psadbw): Likewise.
18943         (sse2_pmovmskb): Likewise.
18944         (*sse2_maskmovdqu): Likewise.
18945         (*sse2_maskmovdqu_rex64): Likewise.
18946         (sse4a_extrqi): Likewise.
18947         (sse4a_extrq): Likewise.
18948         (sse3_lddqu): Set prefix_rep.
18949         (sse3_addsubv4sf3): Likewise.
18950         (sse3_haddv4sf3): Likewise.
18951         (sse3_hsubv4sf3): Likewise.
18952         (sse_cvtss2si): Likewise.
18953         (sse_cvtss2si_2): Likewise.
18954         (sse_cvtss2siq): Likewise.
18955         (sse_cvtss2siq_2): Likewise.
18956         (sse_cvttss2si): Likewise.
18957         (sse_cvttss2siq): Likewise.
18958         (sse2_cvttps2dq): Likewise.
18959         (sse3_movshdup): Likewise.
18960         (sse3_movsldup): Likewise.
18961         (sse2_cvtsd2si): Likewise.
18962         (sse2_cvtsd2si_2): Likewise.
18963         (sse2_cvtsd2siq): Likewise.
18964         (sse2_cvtsd2siq_2): Likewise.
18965         (sse2_cvttsd2si): Likewise.
18966         (sse2_cvttsd2siq): Likewise.
18967         (*sse2_cvtpd2dq): Likewise.
18968         (*sse2_cvttpd2dq): Likewise.
18969         (sse2_pshuflw_1): Likewise.
18970         (sse2_pshufhw_1): Likewise.
18971         (sse4a_insertqi): Likewise.
18972         (sse4a_insertq): Likewise.
18973         (ssse3_phaddwv8hi3): Set prefix_data16 and prefix_extra.
18974         (ssse3_phadddv4si3): Likewise.
18975         (ssse3_phaddswv8hi3): Likewise.
18976         (ssse3_phsubwv8hi3): Likewise.
18977         (ssse3_phsubdv4si3): Likewise.
18978         (ssse3_phsubswv8hi3): Likewise.
18979         (ssse3_pmaddubswv8hi3): Likewise.
18980         (ssse3_pmulhrswv8hi3): Likewise.
18981         (ssse3_pshufbv16qi3): Likewise.
18982         (ssse3_psign<mode>3): Likewise.
18983         (ssse3_palignrti): Likewise.
18984         (abs<mode>2): Likewise.
18985         (ssse3_phaddwv4hi3): Set prefix_extra.
18986         (ssse3_phadddv2si3): Likewise.
18987         (ssse3_phaddswv4hi3): Likewise.
18988         (ssse3_phsubwv4hi3): Likewise.
18989         (ssse3_phsubdv2si3): Likewise.
18990         (ssse3_phsubswv4hi3): Likewise.
18991         (ssse3_pmaddubswv4hi3): Likewise.
18992         (ssse3_pmulhrswv4hi3): Likewise.
18993         (ssse3_pshufbv8qi3): Likewise.
18994         (ssse3_psign<mode>3): Likewise.
18995         (ssse3_palignrdi): Likewise.
18996         (abs<mode>2): Likewise.
18997         (sse2_cvtdq2ps): Set mode to V4SF instead of V2DF.
18998         (*vec_dupv2df): Set mode to V2DF instead of V4SF.
18999         (sse2_pmovmskb): Set mode to SI instead of V2DF.
19000
19001 2007-04-23  Nick Clifton  <nickc@redhat.com>
19002
19003         * params.def: Fix formatting of emacs local variables.
19004
19005 2007-04-23  H.J. Lu  <hongjiu.lu@intel.com>
19006
19007         * config/i386/sse.md (sse2_stored): Don't split to inter-unit
19008         move if inter-unit move isn't allowed.
19009         Don't split moving the first element of V2DI to DI to inter-unit
19010         move if inter-unit move isn't allowed.
19011
19012 2007-04-23  Richard Guenther  <rguenther@suse.de>
19013
19014         * tree-ssa-sink.c (execute_sink_code): Calculate CDI_DOMINATORS
19015         and CDI_POST_DOMINATORS separately.
19016
19017 2007-04-23  Nick Clifton  <nickc@redhat.com>
19018
19019         * c.opt (Wformat-contains-nul): Add warning attribute.
19020
19021 2007-04-23  Jan Hubicka  <jh@suse.cz>
19022
19023         * function.c (init_function_start): Don't init line number info.
19024         (expand_function_end): Update.
19025         (reset_block_changes, record_block_change, finalize_block_changes,
19026         check_block_change, free_block_changes): Kill.
19027         * function.h (reset_block_changes, record_block_change,
19028         finalize_block_changes, check_block_change, free_block_changes):
19029         Remove prototypes.
19030         (struct function): Remove ib_boundaries_block.
19031         * emit-rtl.c (make_insn_raw, make_jump_insn_raw, make_call_insn_raw):
19032         Use curr_insn_locator to initialize locator.
19033         (emit_line_note): Remove.
19034         * cfgexpand.c (expand_gimple_cond_expr): Update.
19035         (construct_exit_block): Likewise.
19036         (tree_expand_cfg): Initialize/finalize locators.
19037         * expr.c (expand_expr_real): Update.
19038         * cfglayout.c (line_locators_locs, line_locators_lines,
19039         file_locators_locs, file_locators_files): Remove.
19040         (set_block_levels): Move to cfgexpand.c.
19041         (insn_locators_initialize): Remove.
19042         (pass_insn_locators_initialize): Remove.
19043         (locations_locators_locs, locations_locators_vals): New static vars.
19044         (curr_location, last_location, curr_block, last_block, curr_rtl_loc):
19045         Likewise.
19046         (insn_locators_alloc, insn_locators_finalize,
19047         set_curr_insn_source_location, set_curr_insn_block, curr_insn_locator):
19048         New functions.
19049         (locator_location): New.
19050         (locator_line, locator_file): Rewrite.
19051         * rtl.h (emit_line_note): Kill.
19052         (insn_locators_alloc, insn_locators_finalize,
19053         set_curr_insn_source_location, set_curr_insn_block, curr_insn_locator):
19054         Declare.
19055         * tree-inline.c (initialize_cfun): Do not initialize
19056         ib_boundaries_block.
19057         * passes.c (pass_insn_locators_initialize): Remove.
19058
19059 2007-04-22  Andrew Pinski  <andrew_pinski@playstation.sony.com>
19060
19061         PR middle-end/31448
19062         * expr.c (reduce_to_bit_field_precision): Handle
19063         CONST_INT rtx's.
19064
19065 2007-04-22  Uros Bizjak  <ubizjak@gmail.com>
19066
19067         PR tree-optimization/24659
19068         * optabs.h (enum optab_index) [OTI_vec_unpacks_hi,
19069         OTI_vec_unpacks_lo]: Update comment to mention floating point operands.
19070         (vec_pack_trunc_optab): Rename from vec_pack_mod_optab.
19071         * genopinit.c (optabs): Rename vec_pack_mod_optab
19072         to vec_pack_trunc_optab.
19073         * tree-vect-transform.c (vectorizable_type_demotion): Do not fail
19074         early for scalar floating point operands for NOP_EXPR.
19075         (vectorizable_type_promotion): Ditto.
19076         * optabs.c (optab_for_tree_code) [VEC_PACK_TRUNC_EXPR]: Return
19077         vec_pack_trunc_optab.
19078         (expand_binop): Rename vec_float_trunc_optab to vec_pack_mod_optab.
19079
19080         * tree.def (VEC_PACK_TRUNC_EXPR): Rename from VEC_PACK_MOD_EXPR.
19081         * tree-pretty-print.c (dump_generic_node) [VEC_PACK_TRUNC_EXPR]:
19082         Rename from VEC_PACK_MOD_EXPR.
19083         (op_prio) [VEC_PACK_TRUNC_EXPR]: Ditto.
19084         * expr.c (expand_expr_real_1): Ditto.
19085         * tree-inline.c (estimate_num_insns_1): Ditto.
19086         * tree-vect-generic.c (expand_vector_operations_1): Ditto.
19087
19088         * config/i386/sse.md (vec_unpacks_hi_v4sf): New expander.
19089         (vec_unpacks_lo_v4sf): Ditto.
19090         (vec_pack_trunc_v2df): Ditto.
19091         (vec_pack_trunc_v8hi): Rename from vec_pack_mod_v8hi.
19092         (vec_pack_trunc_v4si): Rename from vec_pack_mod_v4si.
19093         (vec_pack_trunc_v2di): Rename from vec_pack_mod_v2di.
19094
19095         * config/rs6000/altivec.md (vec_pack_trunc_v8hi): Rename from
19096         vec_pack_mod_v8hi.
19097         (vec_pack_trunc_v4si): Rename from vec_pack_mod_v4si.
19098
19099         * doc/c-tree.texi (Expression trees) [VEC_PACK_TRUNC_EXPR]:
19100         Rename from VEC_PACK_MOD_EXPR.  This expression also represent
19101         packing of floating point operands.
19102         [VEC_UNPACK_HI_EXPR, VEC_UNPACK_LO_EXPR]: These expression also
19103         represent unpacking of floating point operands.
19104         * doc/md.texi (Standard Names) [vec_pack_trunc]: Update documentation.
19105         [vec_unpacks_hi]: Ditto.
19106         [vec_unpacks_lo]: Ditto.
19107
19108 2007-04-22  Jan Hubicka  <jh@suse.cz>
19109
19110         * final.c (rest_of_handle_final): Call
19111         targetm.asm_out.constructor/targetm.asm_out.destructor
19112         * cgraphunit.c (cgraph_build_static_cdtor): Don't do it here; set
19113         proper priority via decl_*_priority_insert.
19114         * c-common.c (c_expand_body): Likewise.
19115
19116 2007-04-22  Richard Guenther  <rguenther@suse.de>
19117
19118         PR tree-optimization/29789
19119         * tree-ssa-loop-im.c (stmt_cost): Adjust cost of shifts.
19120         (rewrite_reciprocal): New helper split out from
19121         determine_invariantness_stmt.
19122         (rewrite_bittest): Likewise.
19123         (determine_invariantness_stmt): Rewrite (A >> B) & 1 to
19124         A & (1 << B) if (1 << B) is loop invariant but (A >> B)
19125         is not.
19126
19127 2007-04-22  Revital Eres  <eres@il.ibm.com>
19128
19129         * loop-unroll.c (var_to_expand): New field to support also
19130         insns of the form x = something + x.
19131         (analyze_insn_to_expand_var): Use it.
19132         (expand_var_during_unrolling): Likewise.
19133
19134 2007-04-21  Zdenek Dvorak  <dvorakz@suse.cz>
19135
19136         * predict.c: Include pointer-set.h.
19137         (bb_predictions): New variable.
19138         (tree_predicted_by_p, tree_predict_edge,
19139         remove_predictions_associated_with_edge): Use bb_predictions map
19140         instead of bb->predictions.
19141         (clear_bb_predictions, assert_is_empty): New functions.
19142         (combine_predictions_for_bb): Use bb_predictions map.  Call
19143         clear_bb_predictions.
19144         (tree_estimate_probability): Create and free bb_predictions map.
19145         * Makefile.in (predict.o): Add pointer-set.h dependency.
19146         * basic-block.h (struct basic_block_def): Remove predictions
19147         field.
19148         * cfgrtl.c (rtl_verify_flow_info_1): Do not check bb->predictions.
19149
19150 2007-04-21  Kaz Kojima  <kkojima@gcc.gnu.org>
19151
19152         PR target/31480
19153         * config/sh/sh.md (length): Check if prev_nonnote_insn (insn)
19154         is null.
19155
19156 2007-04-21  Andrew Pinski  <andrew_pinski@playstation.sony.com>
19157
19158         * timevar.c (timevar_print): Change reference of --disable-checking to
19159         --enable-checking=release.  Also warn if assert checking is disabled.
19160
19161 2007-04-21  Andrew Pinski  <andrew_pinski@playstation.sony.com>
19162
19163         PR C/30265
19164         * c-gimplifier.c (gimplify_compound_literal_expr): Mark the
19165         decl as addressable if the compound literal was marked as
19166         addressable.
19167         Mark the decl as a gimple register if it is a complex or
19168         vector decl and does not live in memory.
19169
19170 2007-04-21  Andrew Pinski  <andrew_pinski@playstation.sony.com>
19171
19172         * tree.h (GIMPLE_TUPLE_P): Also true for PHI_NODEs.
19173         (GENERIC_NEXT): New function macro.
19174         (PHI_CHAIN): Use phi_node's new chain variable.
19175         (tree_phi_node): Change tree_common to tree_base
19176         and add the chain field.
19177         * tree-phinodes.c (make_phi_node): Don't set
19178         TREE_TYPE on the new node.
19179         * c-decl.c (lang_tree_node): Use GENERIC_NEXT
19180         instead of checking GIMPLE_TUPLE_P in chain_next.
19181         * tree-vect-transform.c
19182         (get_initial_def_for_induction): Look at
19183         PHI_RESULT_TREE for the type of the phi node.
19184         (update_vuses_to_preheader): Use PHI_CHAIN
19185         instead of TREE_CHAIN on the phi node.
19186         * tree-ssa-structalias.c (compute_points_to_sets):
19187         Likewise.
19188         (ipa_pta_execute): Likewise.
19189
19190 2007-04-21  Richard Guenther  <rguenther@suse.de>
19191
19192         PR middle-end/31136
19193         * fold-const.c (fold_unary): Call fold_convert_const on the
19194         original tree.
19195
19196 2007-04-21  Alexandre Oliva  <aoliva@redhat.com>
19197
19198         * gcse.c (store_killed_in_insn): Handle PARALLELs.
19199         (store_killed_in_pat): New.
19200
19201 2007-04-20  Richard Henderson  <rth@redhat.com>
19202
19203         PR target/31628
19204         * config/i386/i386.c (type_has_variadic_args_p): Look for any
19205         TREE_LIST with a void_type_node value, not void_list_node exactly.
19206
19207 2007-04-21  Douglas Gregor  <doug.gregor@gmail.com>
19208
19209         * doc/standards.texi: Re-arrange into language-specific
19210         subsections. Add a C++ section, documenting which standards we
19211         support.
19212
19213 2007-04-21  Zdenek Dvorak  <dvorakz@suse.cz>
19214
19215         * tree-ssa-structalias.c (delete_points_to_sets): Free graph->complex.
19216         * tree-ssa-operands.c (finalize_ssa_vuse_ops): Free new_ops.
19217
19218 2007-04-20  Daniel Jacobowitz  <dan@codesourcery.com>
19219
19220         * config/rs6000/sysv4.h (STARTFILE_DEFAULT_SPEC): Include
19221         ecrti.o and crtbegin.o.
19222         (LIB_DEFAULT_SPEC): Include -lc.
19223         (ENDFILE_DEFAULT_SPEC): Include crtend.o and ecrtn.o.
19224
19225 2007-04-20  Richard Henderson  <rth@redhat.com>
19226
19227         PR target/28623
19228         * config/alpha/alpha.c (get_unaligned_address): Remove extra_offset
19229         argument; update all callers.
19230         (get_unaligned_offset): New.
19231         * config/alpha/alpha.md (extendqidi2, extendhidi2): Don't use
19232         get_unaligned_address, just pass on the address directly.
19233         (unaligned_extendqidi): Use gen_lowpart instead of open-coding
19234         the subreg in the helper patterns.
19235         (unaligned_extendqidi_le): Use get_unaligned_offset.
19236         (unaligned_extendqidi_be, unaligned_extendhidi_le): Likewise.
19237         (unaligned_extendhidi_be): Likewise.
19238         (unaligned_extendhidi): Tidy.
19239         * config/alpha/alpha-protos.h: Update.
19240
19241 2007-04-20  Richard Henderson  <rth@redhat.com>
19242
19243         * config/alpha/alpha.h (CPP_SPEC, CPP_SUBTARGET_SPEC): Remove.
19244         (EXTRA_SPECS, SUBTARGET_EXTRA_SPECS): Remove.
19245         * config/alpha/linux.h (CPP_SPEC): Undef before redefine.
19246         * config/alpha/linux-elf.h (EXTRA_SPECS): Rename SUBTARGET_EXTRA_SPECS.
19247         * config/alpha/freebsd.h (EXTRA_SPECS): Rename SUBTARGET_EXTRA_SPECS.
19248         (CPP_SPEC): Don't include %(cpp_subtarget).
19249         * config/alpha/netbsd.h (CPP_SPEC): Rename CPP_SUBTARGET_SPEC.
19250         (EXTRA_SPECS): Rename SUBTARGET_EXTRA_SPECS.
19251         * config/alpha/osf.h (CPP_SPEC, EXTRA_SPECS): Similarly.
19252
19253 2007-04-20  Jakub Jelinek  <jakub@redhat.com>
19254
19255         * config/i386/i386.c (bdesc_2arg): Use ORDERED rather than UNORDERED
19256         for __builtin_ia32_cmpordss.
19257
19258         PR tree-optimization/31632
19259         * fold-const.c (fold_binary): Use op0 and op1 instead of arg0
19260         and arg1 for optimizations of comparison against min/max values.
19261         Fold arg0 to arg1's type for optimizations of comparison against
19262         min+1 and max-1 values.
19263
19264 2007-04-19  Bernd Schmidt  <bernd.schmidt@analog.com>
19265
19266         * reload.c (combine_reloads): When trying to use a dying register,
19267         check whether it's uninitialized and don't use if so.
19268
19269 2007-04-19  Brooks Moses  <brooks.moses@codesourcery.com>
19270
19271         * fold-const.c: Remove prototypes for native_encode_expr and
19272         native_interpret_expr.
19273         (native_encode_expr): Make non-static.
19274         (native_interpret_expr): Likewise.
19275         * tree.h: Add prototypes for the above.
19276
19277 2007-04-19  Joseph Myers  <joseph@codesourcery.com>
19278
19279         * config/rs6000/spe.md (*frob_tf_ti, *frob_ti_tf, *frob_ti_tf_2,
19280         *mov_si<mode>_e500_subreg0, *mov_si<mode>_e500_subreg0_2,
19281         *mov_sitf_e500_subreg8, *mov_sitf_e500_subreg8_2, spe_extenddftf2,
19282         spe_fix_trunctfsi2_internal, spe_negtf2_internal, cmptfeq_gpr,
19283         tsttfeq_gpr, cmptfgt_gpr, tsttfgt_gpr, cmptflt_gpr, tsttflt_gpr):
19284         Add length attributes.
19285
19286 2007-04-19  Janis Johnson  <janis187@us.ibm.com>
19287
19288         * ginclude/float.h: Check that __STDC_WANT_DEC_FP__ is defined,
19289         not that it is 1.
19290
19291         * c-cppbuiltin.c (c_cpp_builtins): Remove definition of
19292         __STDC_WANT_DEC_FP__.
19293
19294 2007-04-19  Joseph Myers  <joseph@codesourcery.com>
19295
19296         * configure.ac: Allow both powerpc*-*-linux* and powerpc*-*-gnu*
19297         for long double compatibility.
19298         * configure: Regenerate.
19299
19300 2007-04-19  Eric Botcazou  <ebotcazou@libertysurf.fr>
19301
19302         PR rtl-optimization/29841
19303         * cfgbuild.c (control_flow_insn_p): Return TRUE for unconditional
19304         trap instructions.
19305         * sched-deps.c (sched_analyze_insn): Prevent all non-jump instructions
19306         that may cause control flow transfer from being moved.
19307
19308 2007-04-18  Jan Hubicka  <jh@suse.cz>
19309
19310         * fold-const.c (div_if_zero_remainder): Do signed divide for pointer
19311         types.
19312
19313 2007-04-18  Eric Christopher  <echristo@apple.com>
19314
19315         * config/rs6000/darwin.md (load_macho_picbase): Use link register
19316         only. Update operands.
19317         * config/rs6000/rs6000.c (rs6000_emit_prologue): Update caller.
19318         * config/rs6000/rs6000.md (builtin_setjmp_receiver): Ditto. Move from
19319         link register to pic register.
19320
19321 2007-04-18  Dirk Mueller  <dmueller@suse.de>
19322
19323         PR diagnostic/31227
19324         * tree-vrp.c (search_for_addr_array): New.
19325         (check_array_bounds): Suppress warning about
19326         address taken of array refs if its not de-referenced.
19327
19328 2007-04-18  Dorit Nuzman  <dorit@il.ibm.com>
19329
19330         * tree-vectorizer.c (destroy_loop_vec_info): Set loop->aux to NULL.
19331         * tree-vect-analyze.c (vect_analyze_loop_form): Set loop->aux.
19332
19333         * tree-vectorizer.h (NITERS_KNOWN_P): New.
19334         * tree-vect-analyze.c (vect_analyze_loop_form): Call NITERS_KNOWN_P
19335         instead of LOOP_VINFO_INT_NITERS to avoid having to geneate loop_info.
19336
19337         * tree-vect-analyze.c (vect_determine_vectorization_factor): Add
19338         dump print.
19339         (vect_analyze_operations): Fix indenetation.  Fix a comment.  Fix a
19340         print message.
19341         (vect_analyze_scalar_cycles): Fix indentation.
19342         (vect_enhance_data_refs_alignment): Fix check in case of peeling.
19343         (vect_mark_relevant): Include phis in relevance analysis.
19344
19345         * tree-vect-transform.c (vect_transform_loop): Add an assert.
19346
19347 2007-04-18  Anatoly Sokolov <aesok@post.ru>
19348
19349         * config/avr/avr.c (ptrreg_to_str): Replace error() with
19350         output_operand_lossage().
19351
19352 2007-04-18  Dorit Nuzman  <dorit@il.ibm.com>
19353
19354         * tree-vect-transform.c (get_initial_def_for_reduction): Clean away
19355         the unused code for reduction without adjust-in-epilog to simplify the
19356         function.
19357
19358 2007-04-18  Wolfgang Gellerich  <gellerich@de.ibm.com>
19359
19360         * config/s390/s390.h (S390_TDC_POSITIVE_ZERO): New constant.
19361         (S390_TDC_NEGATIVE_ZERO): New constant.
19362         (S390_TDC_POSITIVE_NORMALIZED_NUMBER): New constant.
19363         (S390_TDC_NEGATIVE_NORMALIZED_NUMBER): New constant.
19364         (S390_TDC_POSITIVE_DENORMALIZED_NUMBER): New constant.
19365         (S390_TDC_NEGATIVE_DENORMALIZED_NUMBER): New constant.
19366         (S390_TDC_POSITIVE_INFINITY): New constant.
19367         (S390_TDC_NEGATIVE_INFINITY): New constant.
19368         (S390_TDC_POSITIVE_QUIET_NAN): New constant.
19369         (S390_TDC_NEGATIVE_QUIET_NAN): New constant.
19370         (S390_TDC_POSITIVE_SIGNALING_NAN): New constant.
19371         (S390_TDC_NEGATIVE_SIGNALING_NAN): New constant.
19372         (S390_TDC_INFINITY): New constant.
19373         * config/s390/s390.c (s390_canonicalize_comparison): Renamed
19374         UNSPEC_CMPINT to UNSPEC_CCU_TO_INT, added a UNSPEC_CCU_TO_INT-like
19375         optimization for UNSPEC_CCZ_TO_INT.
19376         * config/s390/s390.md ("*TDC_insn_<mode>"): New insn.
19377         ("*ccz_to_int"): New insn.
19378         ("isinf<mode>2"): New insn.
19379         (UNSPEC_CMPINT): Renamed to UNSPEC_CCU_TO_INT.
19380         (UNSPEC_CCU_TO_INT): New constant, replaces UNSPEC_CMPINT.
19381         (UNSPEC_CCZ_TO_INT): New constant.
19382
19383 2007-04-18  Richard Guenther  <rguenther@suse.de>
19384
19385         PR tree-optimization/19431
19386         PR tree-optimization/21463
19387         * tree-pass.h (pass_phiprop): Declare.
19388         * passes.c (init_optimization_passes): New phiprop pass.
19389         * tree-ssa-forwprop.c (struct phiprop_d): New structure.
19390         (phivn_valid_p): New helper function.
19391         (phiprop_insert_phi): Likewise.
19392         (propagate_with_phi): Likewise.
19393         (tree_ssa_phiprop): New propagator propagating loads
19394         through phi nodes if profitable.
19395
19396 2007-04-18  Dorit Nuzman  <dorit@il.ibm.com>
19397
19398         * tree-vect-analyze.c (process_use): New function.
19399         (vect_mark_stmts_to_be_vectorized): Factor out code to process_use.
19400         Check phis in all bbs.
19401         * tree-vectorizer.c (vect_is_simple_use): Remove a no longer relavant
19402         assert.
19403
19404 2007-04-18  Bernd Schmidt  <bernd.schmidt@analog.com>
19405
19406         * reload1.c (eliminte_regs_in_insn): Use REG_EQUIV notes the same way
19407         we use REG_EQUAL.
19408
19409 2007-04-17  Anatoly Sokolov <aesok@post.ru>
19410
19411         PR target/30483
19412         * config/avr/avr.c (ptrreg_to_str): Replace gcc_unreachable() with
19413         error().
19414
19415 2007-04-17  H.J. Lu  <hongjiu.lu@intel.com>
19416
19417         * config/i386/sse.md (sse_vmaddv4sf3): Use register_operand
19418         on "0".
19419         (sse_vmmulv4sf3): Likewise.
19420         (sse2_vmaddv2df3): Likewise.
19421         (sse2_vmmulv2df3): Likewise.
19422
19423 2007-04-17  Zdenek Dvorak  <dvorakz@suse.cz>
19424
19425         PR rtl-optimization/31360
19426         * cfgloopanal.c (target_small_cost, target_pres_cost): Removed.
19427         (target_reg_cost): New.
19428         (init_set_costs): Initialize target_reg_cost.  Add comments
19429         regarding the rationale of the costs.
19430         (global_cost_for_size): Renamed to...
19431         (estimate_reg_pressure_cost): ... and simplify.  Decrease importance
19432         of register pressure.
19433         * tree-ssa-loop-ivopts.c (ivopts_global_cost_for_size): Use
19434         estimate_reg_pressure_cost.  Add number of ivs.
19435         (determine_set_costs): Dump target_reg_cost.
19436         * loop-invariant.c (gain_for_invariant): Use
19437         estimate_reg_pressure_cost.  Removed n_inv_uses argument.
19438         (best_gain_for_invariant, find_invariants_to_move): Remove
19439         n_inv_uses.
19440         * cfgloop.h (target_small_cost, target_pres_cost): Removed.
19441         (target_reg_cost): Declare.
19442         (global_cost_for_size): Declaration removed.
19443         (estimate_reg_pressure_cost): Declare.
19444
19445 2007-04-17  Peter Bergner  <bergner@vnet.ibm.com>
19446
19447         * config/rs6000/rs6000.c (rs6000_hard_regno_mode_ok): Force TDmode
19448         regnos into even/odd register pairs.
19449         * config/rs6000/rs6000.h [SLOW_UNALIGNED_ACCESS]: Treat DDmode and
19450         TDmode similar to the other floating point modes.
19451         [SECONDARY_MEMORY_NEEDED]: Treat DDmode similar to DFmode.
19452         * config/rs6000/dfp.md (negdd2, absdd2, negtd2, abstd2): New
19453         define_expand's.
19454         (negdd2_fpr, absdd2_fpr, nabsdd2_fpr, negtd2_fpr, abstd2_fpr,
19455         nabstd2_fpr, movdd_hardfloat64_mfpgpr): New define_insn's.
19456         (movdd_hardfloat64): Use TARGET_MFPGPR.
19457
19458 2007-04-17  Bernd Schmidt  <bernd.schmidt@analog.com>
19459
19460         * reload1.c (delete_output_reload): Don't count output in n_inherited.
19461
19462         Revert
19463         2005-01-05  Richard Henderson  <rth@redhat.com>
19464         PR rtl-opt/10692
19465         * reload1.c (do_input_reload): Restrict the optimization deleteing
19466         a previous output reload to RELOAD_FOR_INPUT.
19467
19468 2007-04-17  Dorit Nuzman  <dorit@il.ibm.com>
19469
19470         * tree-vectorizer.h (stmt_vec_info_type): Add enum value
19471         induc_vec_info_type.
19472         (vectorizable_induction): New function declaration.
19473         * tree-vect-transform.c (get_initial_def_for_induction): No need to
19474         check if already vectorized.  Find first place in BB where new stmts
19475         can be inserted.  Takes only one argument.
19476         (vectorizable_induction): New function.
19477         (vect_transform_stmt): Add case for induc_vec_info_type to call
19478         vectorizable_induction.
19479         (vect_transform_loop): Consider phis for vectorization.
19480         * tree-vect-analyze.c (vect_determine_vectorization_factor): Simplify
19481         condition.
19482         (analyze_operations): Call vectorizable_induction when analyzing phis.
19483         Fix comment.
19484         (vect_mark_stmts_to_be_vectorized): Remove redundant checks.
19485         (vect_mark_relevant): Include phis in relevance analysis.
19486         (vect_mark_stmts_to_be_vectorize): Likewise.
19487         * tree-vect-patterns.c (widened_name_p): Remove obsolete asserts.
19488
19489 2007-04-16  Lawrence Crowl  <crowl@google.com>
19490
19491         * doc/invoke.texi (Debugging Options): Add documentation for the
19492         -femit-struct-debug options -femit-struct-debug-baseonly,
19493         -femit-struct-debug-reduced, and
19494         -femit-struct-debug-detailed[=...].
19495
19496         * c-opts.c (c_common_handle_option): Add
19497         OPT_femit_struct_debug_baseonly, OPT_femit_struct_debug_reduced,
19498         and OPT_femit_struct_debug_detailed_.
19499         * c.opt: Add specifications for
19500         -femit-struct-debug-baseonly, -femit-struct-debug-reduced,
19501         and -femit-struct-debug-detailed[=...].
19502         * opts.c (set_struct_debug_option): Parse the
19503         -femit-struct-debug-... options.
19504         * opts.c (matches_main_base, main_input_basename,
19505         main_input_baselength, base_of_path, matches_main_base): Add
19506         variables and functions to compare header base name to compilation
19507         unit base name.
19508         * opts.c (should_emit_struct_debug): Add to determine to emit a
19509         structure based on the option.
19510         (dump_struct_debug) Also disabled function to debug this
19511         function.
19512         * opts.c (handle_options): Save the base name of the
19513         compilation unit.
19514
19515         * langhooks-def.h (LANG_HOOKS_GENERIC_TYPE_P): Define.
19516         (LANG_HOOKS_FOR_TYPES_INITIALIZER): Add.
19517         This hook indicates if a type is generic.  Set it by default
19518         to "never generic".
19519         * langhooks.h (struct lang_hooks_for_types): Add a new hook
19520         to determine if a struct type is generic or not.
19521         * cp/cp-tree.h (class_tmpl_impl_spec_p): Declare a C++ hook.
19522         * cp/tree.c (class_tmpl_impl_spec_p): Implement the C++ hook.
19523         * cp/cp-lang.c (LANG_HOOKS_GENERIC_TYPE_P): Override null C hook
19524         with live C++ hook.
19525
19526         * flags.h (enum debug_info_usage): Add an enumeration to describe
19527         a program's use of a structure type.
19528         * dwarf2out.c (gen_struct_or_union_type_die): Add a new parameter
19529         to indicate the program's usage of the type.  Filter structs based
19530         on the -femit-struct-debug-... specification.
19531         (gen_type_die): Split into two routines, gen_type_die and
19532         gen_type_die_with_usage.  gen_type_die is now a wrapper
19533         that assumes direct usage.
19534         (gen_type_die_with_usage): Replace calls to gen_type_die
19535         with gen_type_die_with_usage adding the program usage of
19536         the referenced type.
19537         (dwarf2out_imported_module_or_decl): Suppress struct debug
19538         information using should_emit_struct_debug when appropriate.
19539
19540 2007-04-16  Ian Lance Taylor  <iant@google.com>
19541
19542         PR tree-optimization/31522
19543         * tree-vrp.c (vr_phi_edge_counts): New static variable.
19544         (vrp_initialize): Allocate vr_phi_edge_counts.
19545         (vrp_visit_phi_node): Don't push to infinity if we saw a new
19546         executable edge.  Drop test for all constants.
19547         (vrp_finalize): Free vrp_phi_edge_counts.
19548
19549         * doc/cpp.texi (Common Predefined Macros): Clarify description of
19550         __GNUC_GNU_INLINE__ and __GNUC_STDC_INLINE__.
19551
19552         * tree-ssa-propagate.c (cfg_blocks_add): Insert blocks with fewer
19553         predecessors at head rather than tail.
19554
19555 2007-04-16  Matthias Klose  <doko@debian.org>
19556
19557         * config/alpha/linux.h (CPP_SPEC): Define.
19558         * config/arm/linux-gas.h (SUBTARGET_CPP_SPEC): Extend.
19559
19560 2007-04-16  Aldy Hernandez  <aldyh@redhat.com>
19561
19562         * function.h: Remove sequence_stack extern declaration.
19563
19564 2007-04-16  Kazu Hirata  <kazu@codesourcery.com>
19565
19566         * config/m68k/m68k.h (LONG_DOUBLE_TYPE_SIZE): Change to 64 on
19567         TARGET_FIDOA.
19568         (LIBGCC2_LONG_DOUBLE_TYPE_SIZE): Change to 64 if __mfido__ is
19569         defined.
19570
19571 2007-04-16  Anatoly Sokolov <aesok@post.ru>
19572
19573         * config/avr/avr.c (avr_arch_types): Rearranging  array.
19574         (enum avr_arch): Add.
19575         (avr_mcu_types): Use avr_arch enumeration constants instead of
19576         numbers.
19577         * config/avr/avr.h (LINK_SPEC): Simplify.
19578
19579 2007-04-16  Kazu Hirata  <kazu@codesourcery.com>
19580
19581         * config/m68k/m68k.c (m68k_libcall_value,
19582         m68k_function_value): Use macros for register names more.
19583
19584         * config/m68k/m68k.h (FRAME_POINTER_REGNUM): Use A6_REG
19585         instead.
19586         (M68K_REGNAME): Use A6_REG.
19587         * config/m68k/m68k.md (FP_REG): Rename to A6_REG.
19588
19589 2007-04-16  Maxim Kuvyrkov  <mkuvyrkov@ispras.ru>
19590
19591         PR middle-end/28071
19592         * sched-int.h (struct deps): Split field 'pending_lists_length' into
19593         'pending_read_list_length' and 'pending_write_list_length'.  Update
19594         comment.
19595         * sched-deps.c (add_insn_mem_dependence): Change signature.  Update
19596         to handle two length counters instead of one.  Update all uses.
19597         (flush_pending_lists, sched_analyze_1, init_deps): Update to handle
19598         two length counters instead of one.
19599         * sched-rgn.c (propagate_deps): Update to handle two length counters
19600         instead of one.
19601
19602 2007-04-16  H.J. Lu  <hongjiu.lu@intel.com>
19603
19604         PR target/31582
19605         * config/i386/i386.c (ix86_expand_vec_set_builtin): Make a
19606         copy of source, pass it to ix86_expand_vector_set and return
19607         it as target.
19608
19609 2007-04-16  David Ung  <davidu@mips.com>
19610             Joseph Myers  <joseph@codesourcery.com>
19611
19612         * config/mips/mips.h (PROCESSOR_74KC, PROCESSOR_74KF,
19613         PROCESSOR_74KX, TUNE_74K, GENERATE_MADD_MSUB): Define.
19614         * config/mips/mips.c (mips_cpu_info_table, mips_rtx_cost_data):
19615         Add 74K processor information.
19616         * config/mips/mips.md: Include 74k.md.
19617         (cpu): Add 74kc,74kf,74kx.
19618         (ISA_HAS_MADD_MSUB): Change to GENERATE_MADD_MSUB throughout.
19619         * config/mips/74k.md: New.
19620         * doc/invoke.texi (MIPS Options): Document 74K support.
19621
19622 2007-04-16  Dorit Nuzman  <dorit@il.ibm.com>
19623
19624         * tree-vect-analyze.c (vect_analyze_operations): Reorganize calls to
19625         vectorizable_* functions.
19626         * tree-vect-transform.c (vectorizable_call): Add check for
19627         STMT_VINFO_RELEVANT_P, STMT_VINFO_DEF_TYPE and STMT_VINFO_LIVE_P.
19628         (vectorizable_store): likewise.
19629         (vectorizable_conversion): Add check for STMT_VINFO_DEF_TYPE.
19630         Add comments.
19631         (vectorizable_operation, vectorizable_type_demotion): Likewise.
19632         (vectorizable_type_promotion, vectorizable_load): Likewise.
19633         (vectorizable_live_operation, vectorizable_condition): Likewise.
19634         (vectorizable_assignment): Add check for STMT_VINFO_DEF_TYPE and
19635         STMT_VINFO_LIVE_P.
19636         (vect_transform_stmt): Reorganize calls to vectorizable_* functions.
19637
19638 2007-04-15  Kazu Hirata  <kazu@codesourcery.com>
19639
19640         * config/m68k/linux.h (FUNCTION_VALUE_REGNO_P): Use macros for
19641         register numbers more.
19642         * config/m68k/m68k.h (STACK_POINTER_REGNUM,
19643         FRAME_POINTER_REGNUM, STATIC_CHAIN_REGNUM,
19644         M68K_STRUCT_VALUE_REGNUM, FUNCTION_VALUE, LIBCALL_VALUE,
19645         FUNCTION_VALUE_REGNO_P): Likewise.
19646         * config/m68k/m68kelf.h (M68K_STRUCT_VALUE_REGNUM,
19647         STATIC_CHAIN_REGNUM): Likewise.
19648         * config/m68k/m68kemb.h (FUNCTION_VALUE_REGNO_P): Likewise.
19649         * config/m68k/netbsd-elf.h (M68K_STRUCT_VALUE_REGNUM,
19650         STATIC_CHAIN_REGNUM, FUNCTION_VALUE_REGNO_P): Likewise.
19651         * config/m68k/m68k.md (FP_REG): New.
19652
19653 2007-04-15  Kazu Hirata  <kazu@codesourcery.com>
19654
19655         * config/m68k/m68k.h (PREFERRED_STACK_BOUNDARY): Prefer 32-bit
19656         alignment on fido.
19657
19658 2007-04-15  Kazu Hirata  <kazu@codesourcery.com>
19659
19660         * config/i386/i386.c, config/s390/s390.c, config/s390/s390.md,
19661         tree-ssa-loop-niter.c, tree-ssa-structalias.c, tree-vrp.c: Fix
19662         comment typos.
19663
19664 2007-04-11  Zdenek Dvorak  <dvorakz@suse.cz>
19665
19666         * tree-ssa-loop-prefetch.c (loop_prefetch_arrays): Ignore
19667         cold loops.
19668
19669 2007-04-14  Andrew Pinski  <andrew_pinski@playstation.sony.com>
19670
19671         PR c/31520
19672         * c-decl.c (finish_decl): Grab the type of the decl after the call
19673         to store_init_value.
19674
19675 2007-04-14  Steven Bosscher  <steven@gcc.gnu.org>
19676
19677         * common.opt (fforward-propagate): Fix "Optimization" annotation.
19678
19679 2007-04-14  Jakub Jelinek  <jakub@redhat.com>
19680
19681         PR c++/25874
19682         * omp-low.c (expand_omp_parallel): If child_cfun->cfg, free
19683         dominators, post dominators and cleanup cfg before returning.
19684
19685 2007-04-14  Bernd Schmidt  <bernd.schmidt@analog.com>
19686
19687         * config/bfin/bfin.h (MODES_TIEABLE_P): Allow more modes to be tied.
19688         * config/bfin/bfin.md (movsi_insn): Delete two unused alternatives.
19689
19690 2007-04-14  Kazu Hirata  <kazu@codesourcery.com>
19691
19692         * config.gcc: Recognize fido.
19693         * config/m68k/m68k-devices.def (fidoa): New.
19694         * config/m68k/m68k.h (TARGET_CPU_CPP_BUILTINS): Define
19695         __mfido__.
19696         (FL_FIDOA, TARGET_FIDOA): New.
19697         * config/m68k/m68k.opt (mfidoa): New.
19698
19699 2007-04-13  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
19700
19701         PR middle-end/31322
19702         * dwarf2out.c (output_call_frame_info): Call assemble_external_libcall
19703         when a personality function is used.
19704
19705 2007-04-13  Bob Wilson  <bob.wilson@acm.org>
19706
19707         * config/xtensa/xtensa.c (xtensa_expand_builtin): Use CALL_EXPR_FN.
19708
19709 2007-04-13  Mike Stump  <mrs@apple.com>
19710
19711         * config/darwin-c.c (handle_c_option): Handle -fapple-kext here so
19712         we can...
19713         * config/darwin.opt (fapple-kext): Make C++ only.
19714         * config/darwin.c (darwin_override_options): Remove code to ensure
19715         -fapple-kext is given for C++ only.
19716
19717 2007-04-13  Richard Sandiford  <richard@codesourcery.com>
19718
19719         * config/mips/vxworks.h (SUBTARGET_OVERRIDE_OPTIONS): Define.
19720         * config/mips/mips.c (override_options): Call
19721         SUBTARGET_OVERRIDE_OPTIONS, if defined.
19722
19723 2007-04-13  H.J. Lu  <hongjiu.lu@intel.com>
19724
19725         * config/i386/i386.opt (msvr3-shlib): Removed.
19726
19727         * doc/invoke.texi: Remove -msvr3-shlib.
19728
19729 2007-04-13  H.J. Lu  <hongjiu.lu@intel.com>
19730
19731         * config/i386/i386.opt (mpopcnt): Replace "popcount" instruction
19732         with "popcnt" instruction.
19733
19734 2007-04-13  Richard Guenther  <rguenther@suse.de>
19735
19736         PR tree-optimization/21258
19737         * tree-vrp.c (compare_case_labels): New helper.
19738         (find_switch_asserts): New function.
19739         (find_assert_locations): Call it for SWITCH_EXPRs.
19740
19741 2007-04-13  Uros Bizjak  <ubizjak@gmail.com>
19742
19743         * config/i386/i386.h (X87_FLOAT_MODE_P): Check for TARGET_80387.
19744         * config/i386/i386.md (*cmpfp0): Remove check for TARGET_80387, this
19745         check is now implied in X87_FLOAT_MODE_P.
19746         (*cmpfp_u, *cmpfp_<mode>, *cmpfp_i_i387): Ditto.
19747         (*cmpfp_iu_387, fix_trunc<mode>_fisttp_i386_1): Ditto.
19748         (fix_trunc<mode>_i386_fisttp): Ditto.
19749         (fix_trunc<mode>_i387_fisttp_with_temp): Ditto.
19750         (*fix_trunc<mode>_i387_1, fix_truncdi_i387): Ditto.
19751         (fix_truncdi_i387_with_temp, fix_trunc<mode>_i387): Ditto.
19752         (fix_trunc<mode>_i387_with_temp, *fp_jcc_1_387): Ditto.
19753         (*fp_jcc_2_387, *fp_jcc_5_387, *fp_jcc_6_387): Ditto.
19754         (*fp_jcc_7_387, *fp_jcc_8<mode>_387): Ditto.
19755         (unnamed_splitters): Ditto.
19756         * config/i386/i386.c (function_value_32): Generate FIRST_FLOAT_REG
19757         for X87_FLOAT_MODE_P mode.  Override FIRST_FLOAT_REG with
19758         FIRST_SSE_REG for local functions when SSE math is enabled or
19759         for functions with sseregparm attribute.
19760         (standard_80387_constant_p): Return -1 if mode is not
19761         X87_FLOAT_MODE_P.
19762         (ix86_cc_mode): Assert that scalar mode is not DECIMAL_FLOAT_MODE_P.
19763         (ix86_expand_compare): Ditto.
19764         (ix86_expand_carry_flag_compare): Ditto.
19765         (ix86_expand_int_movcc): Check for SCALAR_FLOAT_MODE_P instead
19766         of FLOAT_MODE_P for cmp_mode and assert that cmp_mode is not
19767         DECIMAL_FLOAT_MODE_P.
19768         (ix86_preferred_output_reload_class): Use X87_FLOAT_MODE_P instead
19769         of SCALAR_FLOAT_MODE_P.
19770         (ix86_rtx_costs) [PLUS] Remove FLOAT_MODE_P and fall through to ...
19771         [MINUS]: ... here.  Add SSE_FLOAT_MODE_P and X87_FLOAT_MODE_P
19772         checks before FLOAT_MODE_P.
19773         [MULT]: Add SSE_FLOAT_MODE_P and X87_FLOAT_MODE_P checks
19774         before FLOAT_MODE_P.
19775         [DIV]: Ditto.
19776         [NEG]: Ditto.
19777         [ABS]: Ditto.
19778         [SQRT]: Ditto.
19779         [FLOAT_EXTEND]: Use SSE_FLOAT_MODE_P.
19780
19781 2007-04-12  Paolo Bonzini  <bonzini@gnu.org>
19782             Charles Wilson  <libtool@cwilson.fastmail.fm>
19783
19784         * Makefile.in (stamp-as, stamp-collect-ld, stamp-nm): Remove.
19785         (libgcc.mvars): Don't depend on them.
19786         * configure.ac (as, collect-ld, nm): Create from exec-tool.in.
19787         * exec-tool.in: New.
19788
19789 2007-04-12  Brooks Moses  <brooks.moses@codesourcery.com>
19790
19791         * doc/invoke.text (--help): Document --help=common.
19792
19793 2007-04-12  Thomas Neumann  <tneumann@users.sourceforge.net>
19794
19795         * stub-objc.c (objc_build_keyword_decl): Avoid C++ keywords.
19796
19797 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
19798
19799         * Makefile.in (insn-emit.o): Depend on $(INTEGRATE_H).
19800         * genemit.c (main): Emit #include "integrate.h".
19801         * config/mips/mips-protos.h (SYMBOL_HALF): New mips_symbol_type.
19802         (LOADGP_RTP): New mips_loadgp_style.
19803         * config/mips/mips.h: Include config/vxworks-dummy.h.
19804         (TARGET_RTP_PIC): New macro.
19805         (TARGET_USE_GOT): Return true for TARGET_RTP_PIC.
19806         (TARGET_USE_PIC_FN_ADDR_REG): Return true for TARGET_VXWORKS_RTP.
19807         (ASM_OUTPUT_ADDR_DIFF_ELT): Emit function-relative case tables
19808         for TARGET_RTP_PIC.
19809         * config/mips/vxworks.h (SUBTARGET_ASM_SPEC): Define.  Pass down
19810         -mvxworks-pic when using -mrtp and a PIC option.
19811         * config/mips/mips.c (mips_classify_symbol): Return SYMBOL_GOT_DISP
19812         for RTP PIC.
19813         (mips_symbolic_constant_p, mips_symbolic_address_p)
19814         (mips_symbol_insns): Handle SYMBOL_HALF.
19815         (override_options): Warn about -G and -mrtp being used together.
19816         Initialize mips_lo_relocs[SYMBOL_HALF].
19817         (mips_current_loadgp_style): Return LOADGP_RTP for RTP PIC.
19818         (mips_emit_loadgp): Handle LOADGP_RTP.
19819         (mips_in_small_data_p): Return false for TARGET_VXWORKS_RTP.
19820         * config/mips/mips.md (loadgp_rtp): New insn and splitter.
19821         (tablejump): Handle function-relative case table entries if
19822         TARGET_RTP_PIC.
19823         * config/mips/predicates.md (symbol_ref_operand): New predicate.
19824
19825 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
19826
19827         * config/mips/mips.md (load_call<mode>): Allow any general register.
19828         destination.
19829         (sibcall_value_internal, sibcall_value_multiple_internal)
19830         (call_value_internal, call_value_split, call_value_multiple_internal)
19831         (call_value_multiple_split): Remove constraints from operand 0.
19832
19833 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
19834
19835         * config/mips/mips-protos.h: In comments, refer to loadgp_absolute
19836         rather than loadgp_noshared.
19837         * config/mips/mips.c (mips_emit_loadgp): Use gen_loadgp_absolute
19838         instead of gen_loadgp_noshared.  Use gen_loadgp_newabi instead of
19839         gen_loadgp.
19840         * config/mips/mips.md (loadgp): Rename to...
19841         (loadgp_newabi): ...this.
19842         (loadgp_noshared): Rename to...
19843         (loadgp_absolute): ...this.
19844
19845 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
19846
19847         * config/mips/mips.c (mips_ok_for_lazy_binding_p): Always return
19848         false for locally-binding symbols.
19849         (mips_dangerous_for_la25_p): Check mips_global_symbol_p.
19850
19851 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
19852
19853         * config/mips/mips-protos.h (SYMBOL_GOT_LOCAL): Rename to...
19854         (SYMBOL_GOT_PAGE_OFST): ...this.
19855         (SYMBOL_GOT_GLOBAL): Rename to...
19856         (SYMBOL_GOT_DISP): ...this.
19857         (SYMBOL_GOTOFF_GLOBAL): Rename to...
19858         (SYMBOL_GOTOFF_DISP): ...this.  Update comments accordingly.
19859         * config/mips/mips.c (mips_global_symbol_p): New function.
19860         (mips_symbol_binds_local_p): Likewise.
19861         (mips_classify_symbol): Rename SYMBOL_GOT_GLOBAL to SYMBOL_GOT_DISP
19862         and SYMBOL_GOT_LOCAL to SYMBOL_GOT_PAGE_OFST.  Use
19863         mips_global_symbol_p and mips_symbol_binds_local_p.
19864         (mips_symbolic_constant_p, mips_symbolic_address_p, mips_symbol_insns)
19865         (override_options): Rename SYMBOL_GOT_GLOBAL to SYMBOL_GOT_DISP,
19866         SYMBOL_GOT_LOCAL to SYMBOL_GOT_PAGE_OFST and SYMBOL_GOTOFF_GLOBAL to
19867         SYMBOL_GOTOFF_DISP.
19868         (mips_ok_for_lazy_binding_p): New function.
19869         (mips_load_call_address, mips_expand_call): Use it.
19870         (mips_dangerous_for_la25_p): Likewise.
19871         * config/mips/mips.md (*xgot_hi<mode>, *xgot_lo<mode>)
19872         (*got_disp<mode>): Use got_disp_operand instead of
19873         global_got_operand.  Use SYMBOL_GOTOFF_DISP instead of
19874         SYMBOL_GOTOFF_GLOBAL.
19875         (*got_page<mode>): Use got_page_ofst_operand instead of
19876         local_got_operand.
19877         * config/mips/predicates.md (const_call_insn_operand): Use
19878         SYMBOL_GOT_DISP instead of SYMBOL_GOT_GLOBAL.
19879         (global_got_operand): Rename to...
19880         (got_disp_operand): ...this and use SYMBOL_GOT_DISP instead of
19881         SYMBOL_GOT_GLOBAL.
19882         (local_got_operand): Rename to...
19883         (got_page_ofst_operand): ...this and use SYMBOL_GOT_PAGE_OFST instead
19884         of SYMBOL_GOT_LOCAL.
19885
19886 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
19887
19888         * config/mips/mips.h (TARGET_SPLIT_CALLS): Check
19889         TARGET_CALL_CLOBBERED_GP.
19890         (TARGET_SIBCALLS): Check TARGET_USE_GOT instead of TARGET_ABICALLS.
19891         (TARGET_USE_GOT, TARGET_CALL_CLOBBERED_GP): New macros.
19892         (TARGET_CALL_SAVED_GP, TARGET_USE_PIC_FN_ADDR_REG): Likewise.
19893         (STARTING_FRAME_OFFSET): Check TARGET_CALL_CLOBBERED_GP instead
19894         of TARGET_ABICALLS && !TARGET_NEWABI.
19895         (MIPS_CALL): Check TARGET_USE_GOT instead of TARGET_ABICALLS.
19896         * config/mips/mips.c (mips_load_call_address): Check
19897         TARGET_CALL_SAVED_GP instead of TARGET_NEWABI.
19898         (mips_global_pointer): Check TARGET_USE_GOT instead of TARGET_ABICALLS.
19899         Check TARGET_CALL_SAVED_GP instead of TARGET_NEWABI.
19900         (mips_save_reg_p): Check TARGET_CALL_SAVED_GP instead of
19901         TARGET_ABICALLS && TARGET_NEWABI.
19902         (mips_current_loadgp_style): Check TARGET_USE_GOT instead of
19903         TARGET_ABICALLS.
19904         (mips_expand_prologue): Check TARGET_OLDABI instead of !TARGET_NEWABI.
19905         (mips_expand_epilogue): Check TARGET_CALL_SAVED_GP instead of
19906         TARGET_ABICALLS && TARGET_NEWABI.
19907         (mips_output_mi_thunk): Check TARGET_USE_GOT instead of
19908         TARGET_ABICALLS.  Check TARGET_CALL_SAVED_GP instead of
19909         TARGET_NEWABI.  Use TARGET_USE_PIC_FN_ADDR_REG to decide
19910         whether indirect calls must use $25.
19911         (mips_extra_live_on_entry): Check TARGET_GOT instead of
19912         TARGET_ABICALLS.
19913         * config/mips/mips.md (jal_macro): Check flag_pic and
19914         TARGET_CALL_CLOBBERED_GP instead of TARGET_ABICALLS and TARGET_NEWABI.
19915         (builtin_setjmp_setup, builtin_longjmp): Check TARGET_USE_GOT
19916         instead of TARGET_ABICALLS.
19917         (exception_receiver): Check TARGET_CALL_CLOBBERED_GP instead of
19918         TARGET_ABICALLS && TARGET_OLDABI.
19919         (load_call<mode>): Check TARGET_USE_GOT instead of TARGET_ABICALLS.
19920         (sibcall): In the comment above the define_insn, mention
19921         TARGET_USE_PIC_FN_ADDR_REG instead of TARGET_ABICALLS.
19922         * config/mips/constraints.md (c): Check TARGET_USE_PIC_FN_ADDR_REG
19923         instead of TARGET_ABICALLS.
19924
19925 2007-04-12  Bernd Schmidt  <bernd.schmidt@analog.com>
19926
19927         * doc/md.texi (Blackfin family constraints): Document PA and PB.
19928         * config/bfin/bfin.h (CONST_OK_FOR_P): Handle PA and PB.
19929         (MACFLAGS_MATCH_P): New macro.
19930         * config/bfin/bfin.c (print_operand): Handle MACFLAG_IS_M.
19931         (bfin_secondary_reload): Treat EVEN_AREGS and ODD_AREGS like AREGS.
19932         * config/bfin/bfin.md (MACFLAG_IS_M): New constant.  Renumber some of
19933         the other MACFLAG constants.
19934         (sum_of_accumulators, lshrpdi3, ashrpdi3): New patterns.
19935         (flag_machi): Tighten constraints.  Renumber some of the operands.
19936         (flag_machi_acconly): Tighten constraints.  Correct operand numbers in
19937         output template.
19938         (flag_machi_parts_acconly): New pattern.
19939         (flag_macinithi): Tighten constraints.  Allow any accumulator to be
19940         used.
19941         (flag_macinit1hi): Tighten constraints.
19942         (flag_mul_macv2hi_parts_acconly): New pattern.
19943
19944         * config/bfin/lib1funcs.asm (___umulsi3_highpart, __smulsi3_highpart):
19945         Use a more efficient implementation.
19946         * config/bfin/bfin.md (umulsi3_highpart, smulsi3_highpart): Emit
19947         inline sequences when not optimizing for size.
19948
19949         * config/bfin/bfin.md (movhi_low2high, movhi_high2high, movhi_low2low,
19950         movhi_high2low): Delete, merge functionality into...
19951         (packv2hi): ... this pattern.
19952
19953         2007-02-11  Jie Zhang  <jie.zhang@analog.com>
19954         * config/bfin/bfin.opt (msim): New option.
19955         (mcpu=): New option.
19956         * config/bfin/bfin-protos.h (enum bfin_cpu): New.
19957         (bfin_cpu_t): Typedef of enum bfin_cpu.
19958         (bfin_cpu_type): New declaration.
19959         * config/bfin/elf.h (STARTFILE_SPEC): Add support for
19960         -msim and -mcpu= options.
19961         (LIB_SPEC): Likewise.
19962         * config/bfin/bfin.c (bfin_cpu_type): Define.
19963         (bfin_handle_option): Handle -mcpu= option.
19964         * config/bfin/bfin.h (DEFAULT_CPU_TYPE): Define as BFIN_CPU_BF532.
19965         (TARGET_CPU_CPP_BUILTINS): Define __ADSPBF531__, __ADSPBF532__,
19966         __ADSPBF533__ or __ADSPBF537__ according to the cpu type.
19967
19968 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
19969
19970         * config.gcc (*-*-vxworks*): Don't add to tm_files in this stanza.
19971         (arm-wrs-vxworks, mips-wrs-vxworks, powerpc-wrs-vxworks)
19972         (powerpc-wrs-vxworksae): Use ${tm_file}.
19973         (i[4567]86-wrs-vxworks, i[4567]86-wrs-vxworksae): Add svr4.h
19974         after elfos.h.  Remove i386/sysv4.h and add i386/vx-common.h.
19975         * config/i386/vx-common.h: New file.
19976
19977 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
19978
19979         * config/vxworks.h (VXWORKS_STARTFILE_SPEC): Use -l:crt0.o instead
19980         of crt0.o%s.
19981
19982 2007-04-12  Andreas Krebbel  <krebbel1@de.ibm.com>
19983
19984         * config/s390/s390.md ("trunctddd2"): Use TDmode for the target of
19985         ldxtr.
19986
19987 2007-04-12  Douglas Gregor  <doug.gregor@gmail.com>
19988
19989         PR c++/31078
19990         PR c++/31103
19991         * c-common.c (c_build_qualified_type): Set canonical type
19992         appropriately.
19993
19994 2007-04-12  Richard Guenther  <rguenther@suse.de>
19995
19996         * tree-pretty-print.c (dump_generic_node): Print ARRAY_REF
19997         lower bound and element size if lower bound is not zero
19998         or either of the ARRAY_REF operands is set.
19999
20000 2007-04-12  Richard Guenther  <rguenther@suse.de>
20001
20002         PR tree-optimization/24689
20003         PR tree-optimization/31307
20004         * fold-const.c (operand_equal_p): Compare INTEGER_CST array
20005         indices by value.
20006         * gimplify.c (canonicalize_addr_expr): To be consistent with
20007         gimplify_compound_lval only set operands two and three of
20008         ARRAY_REFs if they are not gimple_min_invariant.  This makes
20009         it never at this place.
20010         * tree-ssa-ccp.c (maybe_fold_offset_to_array_ref): Likewise.
20011
20012 2007-04-11  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
20013
20014         * pa.c (pa_som_asm_init_sections): Ensure that cfun->machine is not
20015         null before emitting a .nsubspa directive.
20016
20017 2007-04-11  Diego Novillo  <dnovillo@redhat.com>
20018
20019         * tree-ssa-alias.c (dump_mem_ref_stats): Do not call
20020         need_to_partition_p if there are no memory statements in the
20021         function.
20022
20023 2007-04-11  Zdenek Dvorak  <dvorakz@suse.cz>
20024
20025         * tree-data-ref.c (chrec_steps_divide_constant_p): Removed.
20026         (gcd_of_steps_may_divide_p): New function.
20027         (analyze_miv_subscript): Use gcd_of_steps_may_divide_p.
20028
20029 2007-04-11  Bernd Schmidt  <bernd.schmidt@analog.com>
20030
20031         * reload.c (find_reloads_toplev, find_reloads_address,
20032         find_reloads_address_1, find_reloads_subreg_address): Use rtx_equal_p,
20033         not a pointer equality test, to decide if we need to call
20034         push_reg_equiv_alt_mem.
20035
20036 2007-04-11  Sebastian Pop  <sebastian.pop@inria.fr>
20037
20038         * tree-data-ref.c (affine_function_zero_p, constant_access_functions,
20039         insert_innermost_unit_dist_vector, add_distance_for_zero_overlaps):
20040         New.
20041         (build_classic_dist_vector): Call add_distance_for_zero_overlaps.
20042
20043 2007-04-11  Zdenek Dvorak  <dvorakz@suse.cz>
20044
20045         * tree-data-ref.c (add_multivariate_self_dist): Force the distance
20046         vector to be positive.
20047
20048 2007-04-11  Diego Novillo  <dnovillo@redhat.com>
20049
20050         PR 30735
20051         PR 31090
20052         * doc/invoke.texi: Document --params max-aliased-vops and
20053         avg-aliased-vops.
20054         * tree-ssa-operands.h (get_mpt_for, dump_memory_partitions,
20055         debug_memory_partitions): Move to tree-flow.h
20056         * params.h (AVG_ALIASED_VOPS): Define.
20057         * tree-ssa-alias.c (struct mp_info_def): Remove.  Update all
20058         users.
20059         (mp_info_t): Likewise.
20060         (get_mem_sym_stats_for): New.
20061         (set_memory_partition): Move from tree-flow-inline.h.
20062         (mark_non_addressable): Only clear the set of symbols for the
20063         partition if it exists.
20064         (dump_memory_partitions): Move from tree-ssa-operands.c
20065         (debug_memory_partitions): Likewise.
20066         (need_to_partition_p): New.
20067         (dump_mem_ref_stats): New.
20068         (debug_mem_ref_stats): New.
20069         (dump_mem_sym_stats): New.
20070         (debug_mem_sym_stats): New.
20071         (update_mem_sym_stats_from_stmt): New.
20072         (compare_mp_info_entries): New.
20073         (mp_info_cmp): Call it.
20074         (sort_mp_info): Change argument to a list of mem_sym_stats_t
20075         objects.
20076         (get_mpt_for): Move from tree-ssa-operands.c.
20077         (find_partition_for): New.
20078         (create_partition_for): Remove.
20079         (estimate_vop_reduction): New.
20080         (update_reference_counts): New.
20081         (build_mp_info): New.
20082         (compute_memory_partitions): Refactor.
20083         Document new heuristic.
20084         Call build_mp_info, update_reference_counts,
20085         find_partition_for and estimate_vop_reduction.
20086         (compute_may_aliases): Populate virtual operands before
20087         calling debugging dumps.
20088         (delete_mem_sym_stats): New.
20089         (delete_mem_ref_stats): New.
20090         (init_mem_ref_stats): New.
20091         (init_alias_info): Call it.
20092         (maybe_create_global_var): Remove alias_info argument.
20093         Get number of call sites and number of pure/const call sites
20094         from gimple_mem_ref_stats().
20095         (dump_alias_info): Call dump_memory_partitions first.
20096         (dump_points_to_info_for): Show how many times a pointer has
20097         been dereferenced.
20098         * opts.c (decode_options): For -O2 set --param
20099         max-aliased-vops to 500.
20100         For -O3 set --param max-aliased-vops to 1000 and --param
20101         avg-aliased-vops to 3.
20102         * fortran/options.c (gfc_init_options): Remove assignment to
20103         MAX_ALIASED_VOPS.
20104         * tree-flow-inline.h (gimple_mem_ref_stats): New.
20105         * tree-dfa.c (dump_variable): Dump memory reference
20106         statistics.
20107         Dump NO_ALIAS* settings.
20108         (referenced_var_lookup): Tidy.
20109         (mem_sym_stats): New.
20110         * tree-ssa-copy.c (may_propagate_copy): Return true if DEST
20111         and ORIG are different SSA names for a memory partition.
20112         * tree-ssa.c (delete_tree_ssa): Call delete_mem_ref_stats.
20113         * tree-flow.h (struct mem_sym_stats_d): Define.
20114         (mem_sym_stats_t): Define.
20115         (struct mem_ref_stats_d): Define.
20116         (struct gimple_df): Add field mem_ref_stats.
20117         (enum noalias_state): Define.
20118         (struct var_ann_d): Add bitfield noalias_state.
20119         (mem_sym_stats, delete_mem_ref_stats, dump_mem_ref_stats,
20120         debug_mem_ref_stats, debug_memory_partitions,
20121         debug_mem_sym_stats): Declare.
20122         * tree-ssa-structalias.c (update_alias_info): Update call
20123         sites, pure/const call sites and asm sites in structure
20124         returned by gimple_mem_ref_stats.
20125         Remove local variable IS_POTENTIAL_DEREF.
20126         Increase NUM_DEREFS if the memory expression is a potential
20127         dereference.
20128         Call update_mem_sym_stats_from_stmt.
20129         If the memory references memory, call
20130         update_mem_sym_stats_from_stmt for all the direct memory
20131         symbol references found.
20132         (intra_create_variable_infos): Set noalias_state field for
20133         pointer arguments according to the value of
20134         flag_argument_noalias.
20135         * tree-ssa-structalias.h (struct alias_info): Remove fields
20136         num_calls_found and num_pure_const_calls_found.
20137         (update_mem_sym_stats_from_stmt): Declare.
20138         * params.def (PARAM_MAX_ALIASED_VOPS): Change description.
20139         Set default value to 100.
20140         (PARAM_AVG_ALIASED_VOPS): Define.
20141
20142 2007-04-11  Richard Guenther  <rguenther@suse.de>
20143
20144         PR middle-end/31530
20145         * simplify-rtx.c (simplify_binary_operation_1): Do not simplify
20146         a * -b + c as c - a * b if we honor sign dependent rounding.
20147
20148 2007-04-11  Bernd Schmidt  <bernd.schmidt@analog.com>
20149
20150         * config/bfin/bfin-protos.h (bfin_expand_movmem): Renamed from
20151         bfin_expand_strmov.
20152         * config/bfin/bfin.c (bfin_expand_prologue, bfin_delegitimize_address,
20153         bfin_function_ok_for_sibcall, split_load_immediate): Remove unused
20154         variables.
20155         (initialize_trampoline): Don't use old-style function definition.
20156         (bfin_secondary_reload): Mark IN_P argument as unused.
20157
20158 2007-04-10  Sebastian Pop  <sebastian.pop@inria.fr>
20159
20160         PR tree-optimization/31343
20161         * tree-chrec.h (chrec_zerop): Moved before build_polynomial_chrec.
20162         (build_polynomial_chrec): Return a scalar when the evolution is zero.
20163         * testsuite/gcc.dg/vect/pr31343.c: New.
20164
20165 2007-04-10  Eric Christopher  <echristo@apple.com>
20166
20167         * config/i386/i386.h (X87_FLOAT_MODE_P): New.
20168         * config/i386/i386.md (*cmpfp0): Use.
20169         (*cmpfp_u, *cmpfp_<mode>, *cmpfp_i_i387): Ditto.
20170         (*cmpfp_iu_387, fix_trunc<mode>_fisttp_i386_1): Ditto.
20171         (fix_trunc<mode>_i386_fisttp): Ditto.
20172         (fix_trunc<mode>_i387_fisttp_with_temp): Ditto.
20173         (*fix_trunc<mode>_i387_1, fix_truncdi_i387): Ditto.
20174         (fix_truncdi_i387_with_temp, fix_trunc<mode>_i387): Ditto.
20175         (fix_trunc<mode>_i387_with_temp, *fp_jcc_1_387): Ditto.
20176         (*fp_jcc_2_387, *fp_jcc_5_387, *fp_jcc_6_387): Ditto.
20177         (*fp_jcc_7_387, *fp_jcc_8<mode>_387): Ditto.
20178         (unnamed_splitters): Ditto.
20179         * config/i386/i386.c (output_fix_trunc): Assert that
20180         we're not being passed a TFmode operand.
20181
20182 2007-04-10  Zdenek Dvorak  <dvorakz@suse.cz>
20183
20184         PR tree-optimization/31526
20185         * tree-inline.c (copy_cfg_body): Use last_basic_block instead of
20186         n_basic_blocks to find newly added blocks.
20187
20188 2007-04-10  Uros Bizjak  <ubizjak@gmail.com>
20189
20190         * config/i386/i386.md (fix_trunc<mode>di_sse): Remove "x" from "xm"
20191         alternative.
20192         (fix_trunc<mode>si_sse): Ditto.
20193         (*floatsisf2_mixed, *floatsisf2_sse): Ditto.
20194         (*floatsidf2_mixed, *floatsidf2_sse): Ditto.
20195         (*floatdisf2_mixed, *floatdisf2_sse): Ditto.
20196         (*floatdidf2_mixed, *floatdidf2_sse): Ditto.
20197         (floathi<mode>2): Rename from floathisf2 and floathidf2. Macroize
20198         expander using SSEMODEF mode macro.
20199         (floatsi<mode>2): Rename from floatsisf2 and floashidf2. Macroize
20200         expander using SSEMODEF mode macro.
20201         (*floathi<mode>2_i387): Rename from *floathisf2_i387 and
20202         *floathidf2_i387. Macroize insn using X87MODEF12 mode macro.
20203         (*floatsi<mode>2_i387): Rename from *floatsisf2_i387 and
20204         *floatsidf2_i387. Macroize insn using X87MODEF12 mode macro.
20205         (*floatdi<mode>2_i387): Rename from *floatdisf2_i387 and
20206         *floatdidf2_i387. Macroize insn using X87MODEF12 mode macro.
20207         (float<mode>xf2): Rename from floathixf2, floatsixf2 and floatdixf2.
20208         Macroize insn using X87MODEF mode macro.
20209
20210 2007-04-09  H.J. Lu  <hongjiu.lu@intel.com>
20211
20212         * config/i386/sse.md (sse2_pinsrw): Removed.
20213         (sse2_pextrw): Renamed to ...
20214         (*sse2_pextrw): This.
20215
20216 2007-04-09  Jan Hubicka  <jh@suse.cz>
20217
20218         PR target/27869
20219         * config/i386/sse.md
20220         (sse_vmaddv4sf3, sse_vmmulv4sf3): Remove '%' modifier.
20221         (sse_vmsmaxv4sf3_finite, sse_vmsminv4sf3_finite): Remove.
20222         (sse2_vmaddv2df3, sse2_vmmulv2df3): Remove '%' modifier.
20223         (sse2_vmsmaxv2df3_finite, sse2_vmsminv2df3_finite): Remove.
20224
20225 2007-04-09  Jan Hubicka  <jh@suse.cz>
20226
20227         * tree-ssa-ccp (maybe_fold_offset_to_component_ref): Recurse into
20228         multiple fields of union.
20229
20230 2007-04-09  Zdenek Dvorak  <dvorakz@suse.cz>
20231
20232         * cfgloopmanip.c (create_preheader): Do not use loop_preheader_edge.
20233         (create_preheaders): Check that loops are available.
20234         (fix_loop_structure): Clean up, improve comments.
20235         * tree-ssa-loop-manip.c (rewrite_into_loop_closed_ssa):
20236         Check that loops are available.  Set LOOP_CLOSED_SSA to the loops
20237         state flags.
20238         * tree-scalar-evolution.c (scev_finalize): Clear scalar_evolution_info.
20239         * predict.c (tree_estimate_probability): Do not call
20240         calculate_dominance_info.  Call create_preheaders.
20241         * tree-cfgcleanup.c (cleanup_tree_cfg_loop): Only call
20242         rewrite_into_loop_closed_ssa if LOOP_CLOSED_SSA is set in loops state
20243         flags.
20244         * cfgloop.c (loop_preheader_edge): Assert that loops have preheaders.
20245         * cfgloop.h (LOOP_CLOSED_SSA): New constant.
20246         * tree-cfg.c (tree_split_edge): Make an assert more precise.
20247         * tree-ssa-threadedge.c (thread_across_edge): Comment the function
20248         arguments.
20249
20250 2007-04-08  Jan Hubicka  <jh@suse.cz>
20251
20252         * tree.h (maybe_fold_offset_to_component_ref): Declare.
20253         * tree-ssa-ccp.c (maybe_fold_offset_to_component_ref): Export.
20254         * fold-const.c (fold_unary): Use it.
20255
20256 2007-04-08  Andrew Pinski  <andrew_pinski@playstation.sony.com>
20257
20258         * varasm.c (assemble_variable): Remove call to
20259         lang_hooks.decls.prepare_assemble_variable.
20260         * langhooks-def.h (LANG_HOOKS_PREPARE_ASSEMBLE_VARIABLE): Kill.
20261         (LANG_HOOKS_DECLS): Remove LANG_HOOKS_PREPARE_ASSEMBLE_VARIABLE.
20262         * langhooks.h (lang_hooks_for_decls): Remove
20263         prepare_assemble_variable.
20264
20265 2007-04-08  Mike Stump  <mrs@apple.com>
20266
20267         * config/i386/i386.c: Use inc/dec on Core2.
20268
20269 2007-04-08  Steven Bosscher  <steven@gcc.gnu.org>
20270
20271         * langhooks.c (lhd_tree_inlining_add_pending_fn_decls,
20272         lhd_tree_inlining_anon_aggr_type_p, lhd_tree_inlining_start_inlining,
20273         lhd_tree_inlining_end_inlining): Remove.
20274         * langhooks.h (struct lang_hooks_for_tree_inlining): Remove then
20275         add_pending_fn_decls, anon_aggr_type_p, start_inlining, and
20276         end_inlining hooks.
20277         * langhooks-def.h (lhd_tree_inlining_add_pending_fn_decls,
20278         lhd_tree_inlining_anon_aggr_type_p, lhd_tree_inlining_start_inlining,
20279         lhd_tree_inlining_end_inlining): Remove prototypes.
20280         (LANG_HOOKS_TREE_INLINING_ADD_PENDING_FN_DECLS,
20281         LANG_HOOKS_TREE_INLINING_ANON_AGGR_TYPE_P,
20282         LANG_HOOKS_TREE_INLINING_START_INLINING,
20283         LANG_HOOKS_TREE_INLINING_END_INLINING): Remove.
20284
20285         * c-objc-common.h (LANG_HOOKS_TREE_INLINING_ANON_AGGR_TYPE_P): Do
20286         not set it.
20287
20288 2007-04-08  Anatoly Sokolov <aesok@post.ru>
20289
20290         PR target/29932
20291         * config/avr/predicates.md (io_address_operand): Delete predicate.
20292         (low_io_address_operand): Don't use 'mode' argument.
20293         (higth_io_address_operand): Rename ...
20294         (high_io_address_operand): ... to this. Don't use 'mode' argument.
20295         * config/avr/avr.md (*sbix_branch_tmp, *sbix_branch_tmp_bit7): Adjust
20296         for above change.
20297
20298 2007-04-07  Daniel Berlin  <dberlin@dberlin.org>
20299
20300         Revert change removing staticp.
20301
20302 2007-04-07  Anatoly Sokolov <aesok@post.ru>
20303
20304         PR target/30289
20305         * config/avr/avr.md (*clrmemqi, *clrmemhi): Mark operand 4 as
20306         earlyclobber.
20307
20308 2007-04-07  Bruce Korb  <bkorb@gnu.org>
20309
20310         * c.opt: Add -Wformat-contains-nul.
20311         * c-format.c (set_Wformat): Set warn_format_contains_nul to the
20312           -Wformat setting.
20313         (check_format_info_main): Check OPT_Wformat_contains_nul before emitting
20314         the NUL byte warning.
20315
20316 2007-04-07  H.J. Lu  <hongjiu.lu@intel.com>
20317
20318         * config/i386/i386.c (ix86_handle_option): Handle SSSE3.
20319
20320 2007-04-06  Daniel Berlin  <dberlin@dberlin.org>
20321
20322         * tree.c (staticp): No longer use staticp langhook.
20323         * langhooks.c (lhd_staticp): Removed.
20324         * langhooks.h (struct lang_hooks): Remove staticp.
20325         * c-common.c (c_staticp): Remove.
20326         * c-common.h (c_staticp): Ditto.
20327         * langhooks-defs.h (lhd_staticp): Ditto.
20328         (LHD_HOOKS_STATICP): Ditto
20329         * tree.h (gcc_assert_lowered): New macro.
20330
20331 2007-04-06  Zdenek Dvorak  <dvorakz@suse.cz>
20332
20333         * tree-ssa-loop-niter.c (idx_infer_loop_bounds): Add and use
20334         argument "reliable".
20335         (infer_loop_bounds_from_ref, infer_loop_bounds_from_array):
20336         Add argument "reliable".  Propagate it through calls.
20337         (infer_loop_bounds_from_undefined): Derive number of iterations
20338         estimates from references in blocks that do not dominate loop latch.
20339         (gcov_type_to_double_int): New function.
20340         (estimate_numbers_of_iterations_loop): Use gcov_type_to_double_int
20341         and expected_loop_iterations_unbounded.
20342         * cfgloopanal.c (expected_loop_iterations_unbounded): New function.
20343         (expected_loop_iterations): Use expected_loop_iterations_unbounded.
20344         * tree-data-ref.c (estimated_loop_iterations): Export.
20345         (get_references_in_stmt): Fix -- do not return addresses of local
20346         objects.
20347         * cfgloop.h (expected_loop_iterations_unbounded,
20348         estimated_loop_iterations): Declare.
20349
20350 2007-04-06  Andreas Tobler  <a.tobler@schweiz.org>
20351
20352         * tree-sra.c (sra_build_elt_assignment): Initialize min/maxshift.
20353
20354 2007-04-06  Uros Bizjak  <ubizjak@gmail.com>
20355
20356         * config/i386/i386.md (extend<mode>xf2): Rename from extendsfxf2
20357         and extenddfxf2. Macroize expander using X87MODEF12 mode macro.
20358         (*truncdfsf_mixed, *truncdfsf_i387, *truncdfsf2_i387_1):
20359         Use output_387_reg_move().
20360         (*truncxf<mode>2): Rename from *truncxfsf2 and truncxfdf2. Macroize
20361         expander using X87MODEF12 mode macro.
20362         (*truncxfsf2_mixed): Combine alternatives, ignore "r" alternative when
20363         choosing register preferences.  Use output_387_reg_move().
20364         (*truncxfdf2_mixed): Combine alternatives, use "r" alternative
20365         instead of "x".  Use output_387_reg_move().
20366         (*truncxf<mode>2_i387_noop): Rename from *truncxfsf2_i387_noop and
20367         *truncxfdf2_i387_noop.  Macroize insn using X87MODEF12 mode macro.
20368         (*truncxf<mode>2_i387): Rename from *truncxfsf2_i387 and
20369         *truncxfdf2_i387.  Macroize insn using X87MODEF12 mode macro.
20370         Use output_387_reg_move().
20371         (*truncxf?f_mixed splitter): Macroize splitter using X87MODEF12
20372         mode macro.
20373         (*truncxf?f_i387 splitter): Ditto.
20374
20375 2007-04-06  Daniel Berlin  <dberlin@dberlin.org>
20376
20377         * langhooks-def.h (LANG_HOOKS_INITIALIZER): Remove
20378         LANG_HOOKS_SAFE_FROM_P.
20379         * expr.c (safe_from_p): Remove langhook call.
20380         * langhooks.h (lang_hooks): Remove safe_from_p.
20381         (lhd_safe_from_p): Remove prototype.
20382         * langhooks.c (lhd_safe_from_p): Remove.
20383
20384 2007-04-06  Jan Hubicka  <jh@suse.cz>
20385
20386         * cgraphunit.c (decide_is_function_needed): Do not keep always_inline
20387         functions.
20388
20389 2007-04-06  Uros Bizjak  <ubizjak@gmail.com>
20390
20391         * config/i386/i386.c (output_387_reg_move): Handle memory operand[0].
20392         * config/i386/i386.md (*movsf_1, *movdf_nointeger,
20393         *movdf_integer_rex64, *movdf_integer, *movxf_nointeger,
20394         *movxf_integer): Use output_387_reg_move() for x87 reg->mem
20395         alternative.
20396         (*extendsfdf2_mixed, *extendsfdf2_i387, *extendsfxf2_i387,
20397         *extenddfxf2_i387, *truncdfsf_fast_mixed): Ditto.
20398
20399 2007-04-05  Richard Henderson  <rth@redhat.com>
20400
20401         * config/alpha/alpha.c (print_operand) [+]: Remove.
20402         (alpha_end_function): Print nop if call at end of function.
20403         * config/alpha/alpha.h (PRINT_OPERAND_PUNCT_VALID_P): Remove +.
20404         * config/alpha/alpha.md (UNSPEC_LDGP1): New.
20405         (call_osf_1_er_noreturn, call_value_osf_1_er_noreturn): New.
20406         (call_osf_2_er_nogp, call_value_osf_2_er_nogp): New.
20407         (call_osf_2_er, call_value_osf_2_er): Merge the ldgp highpart into
20408         the call pattern. Update peepholes to match.
20409
20410 2007-04-05  Janis Johnson  <janis187@us.ibm.com>
20411
20412         * doc/extend.texi (Other Builtins): Add decimal float variants
20413         of signbit.
20414         * builtins.def: Ditto.
20415         * builtins.c (expand_builtin): Ditto.
20416
20417 2007-04-05  Uros Bizjak  <ubizjak@gmail.com>
20418             H.J. Lu  <hongjiu.lu@intel.com>
20419
20420         PR target/31478
20421         * config/i386/sse.md (sse2_umulv2siv2di3): Use V4SImode instead
20422         of V8HImode when calling ix86_binary_operator_ok.
20423         (sse2_pmaddwd): Call ix86_binary_operator_ok.
20424         (sdot_prodv8hi): Operands 1 and 2 must be register.
20425
20426 2007-04-05  Alexandre Oliva  <aoliva@redhat.com>
20427
20428         * tree-sra.c (try_instantiate_multiple_fields): Needlessly
20429         initialize align to silence bogus warning.
20430
20431 2007-04-05  Alexandre Oliva  <aoliva@redhat.com>
20432
20433         PR middle-end/22156
20434         * tree-sra.c (struct sra_elt): Add in_bitfld_block.  Remove
20435         all_no_warning.
20436         (struct sra_walk_fns): Remove use_all parameter from use.
20437         (sra_hash_tree): Handle BIT_FIELD_REFs.
20438         (sra_elt_hash): Don't hash bitfld blocks.
20439         (sra_elt_eq): Skip them in parent compares as well.  Handle
20440         BIT_FIELD_REFs.
20441         (sra_walk_expr): Don't maintain or pass down use_all_p.
20442         (scan_use): Remove use_all parameter.
20443         (scalarize_use): Likewise.  Re-expand assignment to
20444         BIT_FIELD_REF of gimple_reg.  De-scalarize before input or
20445         output, and re-scalarize after output.  Don't mark anything
20446         for no warning.
20447         (scalarize_ldst): Adjust.
20448         (scalarize_walk_gimple_modify_statement): Likewise.
20449         (build_element_name_1): Handle BIT_FIELD_REFs.
20450         (instantiate_element): Don't warn for any element whose parent
20451         is used as a whole.
20452         (instantiate_missing_elements_1): Return the sra_elt.
20453         (canon_type_for_field): New.
20454         (try_instantiate_multiple_fields): New.
20455         (instantiate_missing_elemnts): Use them.
20456         (mark_no_warning): Removed.
20457         (generate_one_element_ref): Handle BIT_FIELD_REFs.
20458         (REPLDUP, sra_build_elt_assignment): New.
20459         (generate_copy_inout): Use them.
20460         (generate_element_copy): Likewise.  Handle bitfld differences.
20461         (generate_element_zero): Don't recurse for blocks.  Use
20462         sra_build_elt_assignment.
20463         (generate_one_element_int): Take elt instead of var.  Use
20464         sra_build_elt_assignment.
20465         (generate_element_init_1): Adjust.
20466         (scalarize_use, scalarize_copy): Use REPLDUP.
20467         (scalarize_ldst): Move assert before dereference.
20468         (dump_sra_elt_name): Handle BIT_FIELD_REFs.
20469
20470 2007-04-05  Steven Bosscher  <steven@gcc.gnu.org>
20471
20472         * regmove.c: Fix unused variable warnings due to previous commit.
20473
20474 2007-04-05  Steven Bosscher  <steven@gcc.gnu.org>
20475
20476         * regmove.c (STACK_GROWS_DOWNWARD): Don't boolean-ize.
20477         (regmove_bb_head): Remove.
20478         (copy_src_to_dest): Don't update regmove_bb_head and BB_HEAD.
20479         (regmove_optimize): Don't do unnecessary CFG fixes for non-existing
20480         problems with fixup_match_1.
20481         Don't initialize/free regmove_bb_head.
20482
20483         (reg_is_remote_constant_p): If an insn is in the same basic block
20484         but not before INSN, consider it remote, too.
20485
20486 2007-04-05  Anatoly Sokolov <aesok@post.ru>
20487
20488         PR target/25448
20489         * config/avr/avr.c (avr_handle_fndecl_attribute): Use the
20490         DECL_ASSEMBLER_NAME, not the DECL_NAME.
20491
20492 2007-04-05  H.J. Lu  <hongjiu.lu@intel.com>
20493
20494         * config/i386/i386.h (TARGET_CPU_CPP_BUILTINS): Reformat.
20495         (CONDITIONAL_REGISTER_USAGE): Likewise.
20496
20497 2007-04-04  Richard Henderson  <rth@redhat.com>
20498
20499         * config/alpha/lib1funcs.asm: Remove unused file.
20500
20501 2007-04-04  Brooks Moses  <brooks.moses@codesourcery.com>
20502
20503         PR other/31356
20504         * opts.c (print_specific_help): Fix --help=<language>
20505         header line.
20506         (common_handle_option): Support --help=common.
20507
20508 2007-04-04  Brooks Moses  <brooks.moses@codesourcery.com>
20509
20510         PR other/31353
20511         * gcc.c (main): Do not run the linker if
20512         print_subprocess_help indicates that it shouldn't be
20513         run.
20514
20515 2007-04-04  Brooks Moses  <brooks.moses@codesourcery.com>
20516
20517         PR doc/31355
20518         * doc/invoke.texi (--help=): Document <languages> value, fix
20519         formatting in tables of values.
20520
20521 2007-04-04  Danny Smith  <dannysmith.users.sourceforge.net>
20522
20523         * config/i386/winnt-cxx.c (i386_pe_type_dllimport_p): Don't ignore
20524         dllimport attribute of virtual methods.
20525
20526 2007-04-04  Chen Liqin  <liqin@sunnorth.com.cn>
20527
20528         * config/score/crti.asm: Change _bss_start to __bss_start.
20529         * config/score/score.h (CONDITIONAL_REGISTER_USAGE): Added.
20530         (OUTGOING_REG_PARM_STACK_SPACE) update.
20531         * config/score/score.opt: add options to make backend support
20532         score5, score5u, score7 and score7d.
20533         * config/score/score.md: Likewise.
20534         * config/score/misc.md: Likewise.
20535         * config/score/mac.md: Likewise.
20536         * doc/invoke.texi: Likewise.
20537         * doc/md.texi: update constraints define.
20538
20539 2007-04-03  Richard Henderson  <rth@redhat.com>
20540
20541         * expr.c (store_expr): If get_signed_or_unsigned_type doesn't yield
20542         an appropriate type, use the mode instead.
20543
20544 2007-04-03  Richard Sandiford  <richard@codesourcery.com>
20545
20546         * config.gcc (mips-wrs-vxworks): Add vx-common.h to tm_file.
20547         Set the default --with-arch setting to mips2.
20548         * config/mips/t-vxworks (MULTILIB_OPTIONS, MULTILIB_MATCHES)
20549         (MULTILIB_EXCEPTIONS): Redefine with new multilibs.
20550         (MULTILIB_OSDIRNAMES): Delete.
20551         (MULTILIB_DIRNAMES): Define.
20552         * config/mips/vxworks.h (LINK_SPEC): Add VXWORKS_LINK_SPEC.
20553         (LIB_SPEC, STARTFILE_SPEC, ENDFILE_SPEC): Define.
20554         (TARGET_OS_CPP_BUILTINS): Incorporate old SUBTARGET_CPP_SPEC
20555         definitions, except for _WRS_R3K_EXC_SUPPORT.  Call
20556         VXWORKS_OS_CPP_BUILTINS.
20557         (SUBTARGET_CPP_SPEC): Redefine to VXWORKS_ADDITIONAL_CPP_SPEC.
20558         (MIPS_DEBUGGING_INFO): Undefine.
20559         (FUNCTION_PROFILER): Define to VXWORKS_FUNCTION_PROFILER.
20560
20561 2007-04-03  Jakub Jelinek  <jakub@redhat.com>
20562
20563         PR middle-end/30704
20564         * fold-const.c (native_encode_real): Encode real.c provided longs
20565         as a series of 32-bit native integers.
20566         (native_interpret_real): Interpret buffer as a series of 32-bit
20567         native integers.
20568
20569 2007-04-03  Richard Guenther  <rguenther@suse.de>
20570
20571         * genpreds.c (write_insn_constraint_len): Write function
20572         optimized for CONSTRAINT_LEN implementation.
20573         (write_tm_preds_h): Output insn_constraint_len inline and
20574         use it for CONSTRAINT_LEN.
20575         (write_insn_preds_c): Don't output insn_constraint_len.
20576         * doc/md.texi (define_register_constraint): Document multi-letter
20577         constraints shall have the same length if they start with the same
20578         letter.
20579
20580 2007-04-03  Uros Bizjak  <ubizjak@gmail.com>
20581
20582         PR target/31175
20583         * config/i386/i386.md (isinf<mode>2): Expand only when
20584         TARGET_C99_FUNCTIONS is set.
20585
20586 2007-04-03  Uros Bizjak  <ubizjak@gmail.com>
20587
20588         * config.gcc (i[34567]86-*-linux*): Add i386/t-crtpc to tm-file.
20589         (x86_64-*-linux*): Ditto.
20590         * config/i386/i386.opt (mpc): New option.
20591         * config/i386/i386.c (overrride_options): Handle
20592         ix87_precision_string.
20593         * config/i386/crtprec.c: New file.
20594         * config/i386/t-crtpc: Ditto.
20595         * config/i386/linux.h (ENDFILE_SPEC): Add handling of -mpc32, -mpc64
20596         and -mpc80 options.
20597         * config/i386/linux64.h (ENDFILE_SPEC): Ditto.
20598         * config/i386/t-linux64 (EXTRA_MULTILIB_PARTS): Add
20599         crtprec32.o, crtprec64.o and crtprec80.o.
20600
20601         * doc/invoke.texi (Machine Dependent Options): Add -mpc32, -mpc64
20602         and -mpc80 options.
20603         (i386 and x86-64 Options): Document -mpc32, -mpc64 and -mpc80 options.
20604
20605 2007-04-02  Eric Christopher  <echristo@apple.com>
20606
20607         * doc/invoke.texi (i386 and x86-64 Options): Document -m64
20608         limitations on darwin.
20609
20610 2007-04-02  Anatoly Sokolov <aesok@post.ru>
20611
20612         PR target/31137
20613         * config/avr/avr.c (avr_rtx_costs): Add missing 'break' statements.
20614
20615 2007-04-02  Dave Korn  <dave.korn@artimi.com>
20616
20617         * doc/tm.texi (FUNCTION_MODE): Update and extend documentation.
20618
20619 2007-04-02  Dave Korn  <dave.korn@artimi.com>
20620
20621         * libgcc2.h (exception_descriptor): Don't forward-declare.
20622         (__get_eh_table_language, __get_eh_table_version): Delete
20623         prototypes of long-dead functions.
20624
20625 2007-04-01  Daniel Berlin  <dberlin@dberlin.org>
20626
20627         * ebitmap.h: New file
20628         * ebitmap.c: New file
20629         * Makefile.in (ebitmap.o): New target.
20630
20631 2007-04-01  Jan Hubicka  <jh@suse.cz>
20632
20633         * emit-rtl.c (emit_insn_before_setloc): Do not ICE when asked to emit
20634         before very first instruction.
20635
20636 2007-04-01  Jan Hubicka  <jh@suse.cz>
20637
20638         * ggc-page.c (ggc_print_statistics): Fix formatting string to avoid
20639         waring on 64bit hosts.
20640         * bitmap.h: Fix typo in bitmap_head_def.
20641
20642 2007-04-01  Steven Bosscher  <steven@gcc.gnu.org>
20643
20644         PR rtl-optimization/31391
20645         * cfgcleanup.c (try_optimize_cfg): If a removed label is turned
20646         into a DELETED_LABEL note, and the label is in an empty basic
20647         block, update BB_END as well as BB_HEAD.
20648
20649 2007-04-01  Richard Henderson  <rth@redhat.com>
20650
20651         PR tree-optimization/31169
20652         * tree-vrp.c (extract_range_from_binary_expr) <RSHIFT_EXPR>: Drop
20653         to varying if the range is outside [0,  prec-1].
20654
20655 2007-04-01  Richard Sandiford  <richard@codesourcery.com>
20656
20657         PR target/31388
20658         * config/mips/mips.md (load_const_gp): New insn.
20659         * config/mips/mips.c (mips_split_symbol): Avoid using or creating
20660         the MIPS16 GP pseudo register if no_new_pseudos.
20661         (mips16_gp_pseudo_reg): Use gen_load_const_gp.
20662
20663 2007-03-31  Andrew Pinski  <andrew_pinski@playstation.sony.com>
20664
20665         PR target/31364
20666         * config/rs6000/rs6000.md (call): Convert to LR hard reg for
20667         secureplt.
20668         (call_value): Likewise.
20669
20670 2007-03-31  Wolfgang Bangerth  <bangerth@dealii.org>
20671             Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
20672
20673         PR 14737
20674         * doc/invoke.texi: (optimization options): Reword description
20675         of -ffast-math. Document its primary purpose.
20676
20677 2007-03-31  Richard Guenther  <rguenther@suse.de>
20678
20679         * omp-low.c (splay-tree.h): Include.
20680         (lookup_decl): Replace splay-tree usage by pointer-map.
20681         (maybe_lookup_decl): Likewise.
20682         (new_omp_context): Likewise.
20683         (delete_omp_context): Likewise.
20684         * gimplify.c (splay-tree.h): Include.
20685         * tree-inline.c (insert_decl_map): Replace splay-tree usage by
20686         pointer-map.
20687         (remap_ssa_name): Likewise.
20688         (remap_decl): Likewise.
20689         (remap_type_1): Likewise.
20690         (remap_type): Likewise.
20691         (copy_body_r): Likewise.
20692         (expand_call_inline): Likewise.
20693         (clone_body): Likewise.
20694         (copy_tree_r): Likewise.
20695         (remap_save_expr): Likewise.
20696         (unsave_r): Likewise.
20697         (unsave_expr_now): Likewise.
20698         (tree_function_versioning): Likewise.
20699         (build_duplicate_type): Likewise.
20700         * tree-inline.h (pointer-set.h): Include instead of splay-tree.h.
20701         (struct copy_body_data): Replace splay-tree by pointer-map.
20702         * Makefile.in (TREE_INLINE_H): Depend on pointer-map.h,
20703         not $(SPLAY_TREE_H).
20704         (gimplify.o): Depend on $(SPLAY_TREE_H).
20705         (omp-low.p): Likewise.
20706
20707 2007-03-31  Anatoly Sokolov <aesok@post.ru>
20708
20709         * config/avr/predicates.md (even_register_operand,
20710         odd_register_operand): New predicates.
20711         * config/avr/avr.md (movw peephole2): New.
20712         (movw_r peephole2): New.
20713
20714 2007-03-30  Rafael Avila de Espindola  <espindola@google.com>
20715
20716         * tree.h (get_signed_or_unsigned_type): New.
20717         * fold-const.c (operand_equal_for_comparison_p): Use
20718         get_signed_or_unsigned_type instead of
20719         lang_hooks.types.signed_or_unsigned_type.
20720         * expr.c (store_expr): Ditto.
20721         * langhooks.c (get_signed_or_unsigned_type): New.
20722         (lhd_signed_or_unsigned_type): New.
20723         * langhooks.h (lhd_signed_or_unsigned_type): New.
20724         * langhooks-def.h (LANG_HOOKS_SIGNED_OR_UNSIGNED_TYPE): Define.
20725
20726 2007-03-30  Richard Henderson  <rth@redhat.com>
20727
20728         * tree-ssa-loop-ivopts.c: Include target.h.
20729         (produce_memory_decl_rtl): Pass the rtx through encode_section_info.
20730         (get_address_cost): Force SYMBOL_FLAG_LOCAL set.
20731         (force_expr_to_var_cost): Use produce_memory_decl_rtl.
20732         * Makefile.in (tree-ssa-loop-ivopts.o): Depend on TARGET_H.
20733
20734 2007-03-30  Richard Henderson  <rth@redhat.com>
20735             Kai Tietz  <kai.tietz@onevision.com>
20736
20737         * config/i386/cygming.h (DWARF2_DEBUGGING_INFO): Enable by
20738         default for 64-bit.
20739         (PREFERRED_DEBUGGING_TYPE): Prefer dwarf2 for 64-bit.
20740         (TARGET_64BIT_MS_ABI): New.
20741         (DBX_REGISTER_NUMBER): Handle 64-bit.
20742         (SIZE_TYPE, PTRDIFF_TYPE): Use long long for 64-bit.
20743         (LONG_TYPE_SIZE): Force to 32.
20744         (REG_PARM_STACK_SPACE): New.
20745         (OUTGOING_REG_PARM_STACK_SPACE): New.
20746         (REGPARM_MAX, SSE_REGPARM_MAX): New.
20747         (HANDLE_PRAGMA_PUSH_POP_MACRO): New.
20748         (STACK_BOUNDARY): Use 128 for 64-bit.
20749         * config/i386/cygwin.asm: Use push/ret to preserve call stack.
20750         Add 64-bit implementation.
20751         * config/i386/gthr-win32.c (__gthr_win32_key_create): Mark dtor
20752         argument unused.
20753         * config/i386/i386.c (x86_64_ms_abi_int_parameter_registers): New.
20754         (override_options): Set ix86_cmodel for TARGET_64BIT_MS_ABI.
20755         Warn for -mregparm, -mrtd in 64-bit mode; force ix86_regparm
20756         for 64-bit; use TARGET_SUBTARGET64_DEFAULT.
20757         (ix86_handle_cconv_attribute): Don't warn when ignoring if
20758         TARGET_64BIT_MS_ABI.
20759         (ix86_function_arg_regno_p): Handle TARGET_64BIT_MS_ABI.
20760         (ix86_pass_by_reference): Likewise.
20761         (ix86_function_value_regno_p): Likewise.
20762         (ix86_build_builtin_va_list): Likewise.
20763         (ix86_va_start, ix86_gimplify_va_arg): Likewise.
20764         (function_arg_advance_ms_64): New.
20765         (function_arg_advance): Call it.
20766         (function_arg_ms_64): New.
20767         (function_arg): Call it.
20768         (function_value_ms_64): New.
20769         (ix86_function_value_1): Call it.
20770         (return_in_memory_ms_64): New.
20771         (ix86_return_in_memory): Call it.
20772         (setup_incoming_varargs_ms_64): New.
20773         (ix86_setup_incoming_varargs): Call it.
20774         (ix86_expand_prologue): Handle 64-bit stack probing.
20775         (legitimize_pic_address): Handle TARGET_64BIT_MS_ABI.
20776         (output_pic_addr_const): Likewise.
20777         (x86_this_parameter): Likewise.
20778         (x86_output_mi_thunk): Likewise.
20779         (x86_function_profiler): Likewise.
20780         (TARGET_STRICT_ARGUMENT_NAMING): New.
20781         * config/i386/i386.h (TARGET_SUBTARGET64_DEFAULT): New.
20782         (TARGET_64BIT_MS_ABI): New.
20783         (CONDITIONAL_REGISTER_USAGE): Handle TARGET_64BIT_MS_ABI.
20784         * config/i386/i386.md (allocate_stack_worker): Remove.
20785         (allocate_stack_worker_32): Rename from allocate_stack_worker_1;
20786         describe the clobber of eax without a match_scratch.
20787         (allocate_stack_worker_postreload): Remove.
20788         (allocate_stack_worker_64): Rename from allocate_stack_worker_rex64;
20789         describe the clobbers of rax, r10, r11 properly; use __chkstk symbol.
20790         (allocate_stack_worker_rex64_postreload): Remove.
20791         (allocate_stack): Handle 64-bit.
20792         * config/i386/i386elf (TARGET_SUBTARGET_DEFAULT): Remove.
20793         * config/i386/mingw32.h (TARGET_VERSION): Set correctly for 64-bit.
20794         (EXTRA_OS_CPP_BUILTINS): Handle 64-bit.
20795         (STANDARD_INCLUDE_DIR): Handle TARGET_64BIT_DEFAULT.
20796         (STANDARD_STARTFILE_PREFIX_1): Likewise.
20797         * config/i386/unix.h (TARGET_SUBTARGET64_DEFAULT): New.
20798         * config.build (x86_64-*-mingw*): New host.
20799         * config.host (x86_64-*-mingw*): New host.
20800         * config.gcc (x86_64-*-mingw*): New target.
20801         * gthr-win32.h (__gthread_key_create): Mark dtor unused.
20802
20803 2007-03-30  Richard Henderson  <rth@redhat.com>
20804             Kai Tietz  <kai.tietz@onevision.com>
20805
20806         * c-pragma.c (struct def_pragma_macro_value): New.
20807         (struct def_pragma_macro): New.
20808         (pushed_macro_table): New.
20809         (dpm_hash, dpm_eq): New.
20810         (handle_pragma_push_macro, handle_pragma_pop_macro): New.
20811         (init_pragma): Install them.
20812         * doc/tm.texi (HANDLE_PRAGMA_PUSH_POP_MACRO): New.
20813
20814 2007-03-30  Anatoly Sokolov <aesok@post.ru>
20815
20816         * config/avr/avr.c (avr_override_options): Clear
20817         'flag_delete_null_pointer_checks'.
20818
20819 2007-03-30  Paolo Carlini  <pcarlini@suse.de>
20820
20821         PR c++/26099
20822         * c-common.h (enum rid): Add RID_HAS_NOTHROW_ASSIGN,
20823         RID_HAS_NOTHROW_CONSTRUCTOR, RID_HAS_NOTHROW_COPY,
20824         RID_HAS_TRIVIAL_ASSIGN, RID_HAS_TRIVIAL_CONSTRUCTOR,
20825         RID_HAS_TRIVIAL_COPY, RID_HAS_TRIVIAL_DESTRUCTOR,
20826         RID_HAS_VIRTUAL_DESTRUCTOR, RID_IS_ABSTRACT, RID_IS_BASE_OF,
20827         RID_IS_CONVERTIBLE_TO, RID_IS_CLASS, RID_IS_EMPTY, RID_IS_ENUM,
20828         RID_IS_POD, RID_IS_POLYMORPHIC, RID_IS_UNION, as
20829         C++ extensions.
20830         * doc/extend.texi (Extensions to the C++ Language): Add Type Traits.
20831
20832 2007-03-30  Steven Bosscher  <steven@gcc.gnu.org>
20833
20834         * regmove.c: Move all of pass_stack_adjustments from here...
20835         * combine-stack-adj.c: ...to this new file.
20836         * Makefile.in: Add rules for combine-stack-adj.o.
20837
20838 2007-03-30  Zdenek Dvorak  <dvorakz@suse.cz>
20839
20840         PR tree-optimization/31383
20841         * tree-data-ref.c (affine_function_equal_p): Do not require the
20842         vectors to have the same length.
20843
20844 2007-03-30  Jan Hubicka  <jh@suse.cz>
20845
20846         PR middle-end/30700
20847         * dwarf2out.c (reference_to_unused): Ask cgraph for functions
20848         availablility; add more sanity checking; ask varpool only about
20849         VAR_DECL.
20850
20851 2007-03-29  Richard Henderson  <rth@redhat.com>
20852
20853         * unwind-generic.h (_sleb128_t, _uleb128_t): Don't use HAVE_LONG_LONG
20854         to decide, but __SIZEOF_LONG_LONG__.
20855
20856 2007-03-29  Richard Henderson  <rth@redhat.com>
20857
20858         * emutls.c (struct __emutls_array): New.
20859         (emutls_destroy): Use it instead of casting element 0 from void*.
20860         (__emutls_get_address): Likewise.
20861
20862 2007-03-29  Richard Henderson  <rth@redhat.com>
20863
20864         * varasm.c (initializer_constant_valid_p): Don't deny
20865         DECL_DLLIMPORT_P on functions.
20866
20867         * config/i386/cygming.h: Remove function declarations.
20868         (SUBTARGET_ENCODE_SECTION_INFO): Don't undef first.
20869         (ASM_OUTPUT_LABELREF): Remove.
20870         (COMMON_ASM_OP): Remove.
20871         (ASM_OUTPUT_COMMON): Remove.
20872         (ASM_OUTPUT_ALIGNED_DECL_COMMON): New.
20873         (ASM_DECLARE_OBJECT_NAME): Use i386_pe_maybe_record_exported_symbol.
20874         (ASM_DECLARE_FUNCTION_NAME): Likewise.
20875         * config/i386/i386-interix.h (SUBTARGET_ENCODE_SECTION_INFO):
20876         Rename from TARGET_ENCODE_SECTION_INFO.
20877         * config/i386/netware.h: Likewise.
20878         * config/i386/i386-protos.h: Update.
20879         * config/i386/i386.c (ix86_function_ok_for_sibcall): Turn ifdef
20880         of TARGET_DLLIMPORT_DECL_ATTRIBUTES into straight if.
20881         (legitimate_constant_p): Reject dllimports.
20882         (dllimport_map, get_dllimport_decl): New.
20883         (legitimize_dllimport_symbol): New.
20884         (legitimize_address, ix86_expand_move): Use it.
20885         (TARGET_BINDS_LOCAL_P): Redefine for TARGET_DLLIMPORT_DECL_ATTRIBUTES.
20886         * config/i386/i386.h (DLL_IMPORT_EXPORT_PREFIX): Remove.
20887         (SYMBOL_FLAG_DLLIMPORT, SYMBOL_REF_DLLIMPORT_P): New.
20888         (SYMBOL_FLAG_DLLEXPORT, SYMBOL_REF_DLLEXPORT_P): New.
20889         * config/i386/predicates.md (constant_call_address_operand): Only
20890         accept symbols; reject dllimport_p symbols.
20891         * config/i386/uwin.h (ASM_DECLARE_FUNCTION_NAME): Use
20892         i386_pe_maybe_record_exported_symbol.
20893         * config/i386/winnt.c (DLL_IMPORT_PREFIX, DLL_EXPORT_PREFIX): Remove.
20894         (i386_pe_determine_dllexport_p): Rename from i386_pe_dllexport_p.
20895         (i386_pe_determine_dllimport_p): Rename from i386_pe_dllimport_p;
20896         trust the setting of DECL_DLLIMPORT_P.
20897         (i386_pe_dllexport_name_p, i386_pe_dllimport_name_p): Remove.
20898         (i386_pe_mark_dllexport, i386_pe_mark_dllimport): Remove.
20899         (gen_stdcall_or_fastcall_suffix): Return NULL if no change required;
20900         tidy the argument scanning loop.
20901         (i386_pe_encode_section_info): Set SYMBOL_FLAG_DLLIMPORT and
20902         SYMBOL_FLAG_DLLEXPORT in SYMBOL_REF_FLAGS.
20903         (i386_pe_strip_name_encoding): Remove.
20904         (i386_pe_binds_local_p): New.
20905         (i386_pe_strip_name_encoding_full): Use default_strip_name_encoding.
20906         (i386_pe_output_labelref): Remove.
20907         (i386_pe_asm_output_aligned_decl_common): New.
20908         (i386_pe_maybe_record_exported_symbol): Rename from
20909         i386_pe_record_exported_symbol; check for dllexported symbols.
20910
20911 2007-03-29  Zack Weinberg  <zack@mrtock.ucsd.edu>
20912
20913         * gengtype.c (oprintf): Mostly revert changes from 2007-03-26;
20914         add comment explaining why vsnprintf cannot be used.
20915
20916 2007-03-29  Douglas Gregor  <doug.gregor@gmail.com>
20917
20918         PR tree-optimization/30666
20919         * tree.c (build_complex_type): When creating type names for DWARF2
20920         debug info, create TYPE_DECLs for TYPE_NAME instead of
20921         IDENTIFIER_NODEs.
20922         (build_common_tree_nodes_2): Use build_complex_type when building
20923         predefined complex types, to preserve canonical types.
20924
20925 2007-03-29  Steven Bosscher  <steven@gcc.gnu.org>
20926
20927         * ifcvt.c (struct noce_if_info): Add then_else_reversed field.
20928         (noce_get_alt_condition): Look at it to determine whether to
20929         reverse the condition or not.
20930         (noce_get_condition): Substitute the truth for lies.
20931         (noce_find_if_block): Set the then_else_reversed field.
20932
20933 2007-03-29  Lars Poeschel <larsi@wh2.tu-dresden.de>
20934
20935         * config/fr30/fr30.md (movdi): Do not accept immediates as the
20936         destination of this insn.
20937         * config/fr30/fr30.c (fr30_move_double): Use emit_move_insn rather
20938         than calling gen_rtx_SET directly.  Use r0 to hold the value of
20939         'address + 4' rather than a stack based temporary which can be
20940         mis-optimized away.
20941
20942 2007-03-29  Andreas Krebbel  <krebbel1@de.ibm.com>
20943
20944         * config/s390/s390.c (s390_secondary_input_reload_class,
20945         s390_secondary_output_reload_class): Functions removed.
20946         (s390_secondary_reload): New function.
20947         (TARGET_SECONDARY_RELOAD): Target macro defined.
20948         * config/s390/s390.h (SECONDARY_INPUT_RELOAD_CLASS,
20949         SECONDARY_OUTPUT_RELOAD_CLASS): Macro definitions removed.
20950         * config/s390/s390.md ("reload_outti", "reload_outdi",
20951         "reload_indi", "reload_insi", "reload_out<mode>", "reload_in<mode>",
20952         "reload_out<mode>"): Expanders removed.
20953         ("reload<mode>_plus", "reload<mode>_nonoffmem_in",
20954         "reload<mode>_nonoffmem_out"): Expanders added.
20955
20956 2007-03-29  Andreas Krebbel  <krebbel1@de.ibm.com>
20957
20958         * regmove.c (optimize_reg_copy_1): Don't perform DEST->SRC repair
20959         action if SRC->DEST replacement failed anyway.
20960
20961 2007-03-28  Mike Stump  <mrs@apple.com>
20962
20963         * config/darwin9.h (ASM_OUTPUT_ALIGNED_COMMON): Add.
20964         * config/darwin.h (MAX_OFILE_ALIGNMENT): Fix.
20965         * config/rs6000/darwin.h (ASM_OUTPUT_ALIGNED_COMMON): Removed #undef.
20966
20967 2007-03-28  Dwarakanath Rajagopal  <dwarak.rajagopal@amd.com>
20968
20969         * config.gcc: Accept barcelona as a variant of amdfam10.
20970         * config/i386/i386.c (override_options): Likewise.
20971         * doc/invoke.texi: Likewise.
20972
20973 2007-03-28  Eric Botcazou  <ebotcazou@adacore.com>
20974
20975         * tree-dfa.c (get_ref_base_and_extent): Do not expect positive
20976         offsets for BIT_FIELD_REF and COMPONENT_REF.
20977
20978 2007-03-28  Richard Guenther  <rguenther@suse.de>
20979
20980         * tree.c (is_global_var): Move ...
20981         * tree-flow-inline.h (is_global_var): ... here.
20982         * tree.h (is_global_var): Remove declaration.
20983
20984 2007-03-28  Uros Bizjak  <ubizjak@gmail.com>
20985
20986         * config/i386/i386.h (X86_TUNE_PROMOTE_HIMODE_IMUL): New tuning
20987         option.
20988         (TARGET_TUNE_PROMOTE_HIMODE_IMUL): New define. Use new tuning option.
20989         * config/i386/i386.c (ix86_tune_features): Initialize new
20990         tuning option.
20991         * config/i386/predicates.md (promotable_binary_operator): Use
20992         TARGET_TUNE_PROMOTE_HIMODE_IMUL.
20993
20994 2007-03-28  Grigory Zagorodnev <grigory_zagorodnev@linux.intel.com>
20995
20996         PR target/31380
20997         * config/i386/sse.md (uminv16qi3): Use UMIN instead of UMAX.
20998
20999 2007-03-28  Lars Poeschel <larsi@wh2.tu-dresden.de>
21000
21001         * config/fr30/fr30.md (movsi_internal): Change destination
21002         constraint from m to V and add m to the end.
21003
21004 2007-03-28  Christian Bruel  <christian.bruel@st.com>
21005
21006         * config/sh/sh.md (movsi_i): Fix type attribute.
21007
21008 2007-03-28  Christian Bruel  <christian.bruel@st.com>
21009
21010         * config/sh/sh.md (movsi_ie): Fix memory constraints attribute length.
21011         (movsf_ie): Likewise.
21012
21013 2007-03-28  Christian Bruel  <christian.bruel@st.com>
21014
21015         * config.gcc: Add sh4-300 to multilib.
21016         * config/sh/t-mlib-sh4-300: New file.
21017
21018 2007-03-28  Andreas Krebbel  <krebbel1@de.ibm.com>
21019
21020         * config/s390/s390.md ("fix_trunc<mode>di2"): New expander.
21021         ("fix_trunc<DFP:mode>di2_dfp"): New insn definition renamed from
21022         fix_trunc<mode>di2.
21023         ("fixuns_truncdddi2", "fixuns_trunctddi2"): Use
21024         fix_trunc<DFP:mode>di2_dfp instead of fix_trunc<mode>di2.
21025         ("fix_truncdfsi2", "fix_truncsfsi2", "fixuns_truncdddi2",
21026         "fixuns_trunctddi2"): Whitespace fix.
21027
21028 2007-03-28  Kaz Kojima  <kkojima@gcc.gnu.org>
21029
21030         * config/sh/sh.h (CALL_COOKIE_RET_TRAMP_SHIFT): Move after
21031         the definition of struct sh_args.
21032         (CALL_COOKIE_RET_TRAMP, CALL_COOKIE_STACKSEQ_SHIFT,
21033         CALL_COOKIE_INT_REG_GET): Likewise.
21034
21035 2007-03-28  Steven Bosscher  <steven@gcc.gnu.org>
21036
21037         * ifcvt.c (cond_exec_find_if_block): Return FALSE if no
21038         transformations are applied successfully.
21039
21040 2007-03-27  Douglas Gregor  <doug.gregor@gmail.com>
21041
21042         * tree.c (tree_contains_struct): Permit 512 tree codes.
21043         * tree.h (tree_contains_struct): Ditto.
21044         (MAX_TREE_CODES): Ditto.
21045         (struct tree_base): Make CODE 16 bits, instead of 8 bits. Add
21046         SPARE member to store remaining padding bits.
21047
21048 2007-03-27  Anatoly Sokolov <aesok@post.ru>
21049
21050         * config/avr/avr.c (avr_mcu_types): Move at90usb82 device to 'avr4'
21051         architecture.
21052
21053 2007-03-27  Janis Johnson  <janis187@us.ibm.com>
21054
21055         * configure.ac: Fix assembler test for powerpc*-linux decimal float.
21056         * configure: Regenerate.
21057
21058         * configure: Regenerate using the correct version of autoconf.
21059
21060 2007-03-27  Anatoly Sokolov  <aesok@post.ru>
21061
21062         * config/avr/avr.c (avr_hard_regno_mode_ok): Disallow QImode in stack
21063         pointer regs.
21064         * config/avr/avr.h (REGISTER_NAMES): Rename "__SPL__" and "__SPH__"
21065         regs to "__SP_L__" and "__SP_H__".
21066
21067 2007-03-27  Richard Guenther  <rguenther@suse.de>
21068
21069         * tree-dfa.c (get_ref_base_and_extent): Replace bit_offset and
21070         computations with it with a HOST_WIDE_INT variable.
21071
21072 2007-03-26  Mike Stump  <mrs@apple.com>
21073
21074         * config/rs6000/darwin.h (DARWIN_MINVERSION_SPEC): Add
21075         objective-c-header, objective-c++-header and objc++-cpp-output
21076         support.
21077         * config/i386/darwin.h (DARWIN_MINVERSION_SPEC): Likewise.
21078
21079 2007-03-26  Richard Henderson  <rth@redhat.com>
21080
21081         PR target/31361
21082         * config/i386/i386.c (IX86_BUILTIN_PSLLDQ128, IX86_BUILTIN_PSLLW128,
21083         IX86_BUILTIN_PSLLD128, IX86_BUILTIN_PSLLQ128, IX86_BUILTIN_PSRAW128,
21084         IX86_BUILTIN_PSRAD128, IX86_BUILTIN_PSRLW128, IX86_BUILTIN_PSRLD128,
21085         IX86_BUILTIN_PSRLQ128): New.
21086         (ix86_init_mmx_sse_builtins): Add them.
21087         (ix86_expand_builtin): Expand them.
21088         * config/i386/sse.md (ashr<mode>3, lshr<mode>3, ashl<mode>3): Make
21089         operand 2 be TImode.
21090         * config/i386/emmintrin.h (_mm_slli_epi64, _mm_srai_epi16,
21091         _mm_srai_epi32, _mm_srli_epi16, _mm_srli_epi32,
21092         _mm_srli_epi64): Mark __B const.
21093         (_mm_srli_si128, _mm_srli_si128): Fix disabled inline versions.
21094         (_mm_sll_epi16, _mm_sll_epi32, _mm_sll_epi64, _mm_sra_epi16,
21095         _mm_sra_epi32, _mm_srl_epi16, _mm_srl_epi32, _mm_srl_epi64): Use
21096         new two-vector shift builtins.
21097
21098 2007-03-26  Ian Lance Taylor  <iant@google.com>
21099
21100         PR tree-optimization/31345
21101         * tree-vrp.c (extract_range_from_binary_expr): Turn ranges like
21102         [+INF, +INF(OVF)] into VARYING.
21103
21104 2007-03-26  Zack Weinberg  <zackw@panix.com>
21105
21106         * gengtype-parse.c: New file.
21107         * gengtype-yacc.y: Delete.
21108         * gengtype-lex.l: Don't include gengtype-yacc.h.
21109         Define YY_DECL and yyterminate appropriately for recursive
21110         descent parser.  yylval is now a string out-parameter to yylex.
21111         (HWS, EOID): New shorthand.
21112         (IWORD): Add a couple more types.
21113         (yylex): Add a setup stanza.  Remove the complex rules for
21114         detecting GTY'ed types and typedefs; replace with simple
21115         keyword detectors.  Adjust everything for the changed
21116         definition of yylval.  Ignore all pp-directives, not just #define.
21117         (yyerror): Delete.
21118         (parse_file): Rename yybegin; do not call yyparse.
21119         (yyend): New.
21120         * gengtype.c (xasprintf): Export again.
21121         (this_file): New.  Use everywhere __FILE__ was being used.
21122         (get_lang_bitmap): Special case types defined in gengtype.c.
21123         (do_typedef, new_structure): Suppress definition of certain types.
21124         (new_structure): Improve diagnostics of duplicate definitions.
21125         Make sure location_s is associated with input.h.
21126         (nreverse_pairs, define_location_structures): New functions.
21127         (main): Improve tagging of kludge types.  Remove old kludges
21128         for input.h types; use define_location_structures.
21129         * gengtype.h: Update prototypes.  Define token codes here.
21130         * Makefile.in: Remove all references to gengtype-yacc.
21131         Add rules for gengtype-parse.o.  Adjust rules for gengtype-lex.o
21132         and gengtype.
21133         * bitmap.h (struct bitmap_head_def): Coalesce definitions,
21134         add GTY((skip)) to the field that's only conditionally there.
21135         * doc/install.texi: Document that Bison is no longer required
21136         unless building treelang.
21137
21138         * gengtype.c: Don't include gtyp-gen.h.
21139         (srcdir): Declare here.
21140         (base_files, lang_dir_names): Allocate dynamically.
21141         (gt_files, num_gt_files, num_lang_dirs): New globals.
21142         (measure_input_list, read_input_line, read_input_list)
21143         (set_lang_bitmap): New functions.
21144         (get_base_file_bitmap): Rename get_lang_bitmap and drastically
21145         simplify, relying on read_input_list to set up the bitmaps.
21146         (main): Arguments are no longer unused.  Check for correct number
21147         of command line arguments, set srcdir and srcdir_len, then call
21148         read_input_list, before doing anything else.  No need to worry
21149         about duplicates in main loop.
21150         * configure.ac: Simplify the calculation of all_gtfiles.
21151         Put language tags in there.  Don't set or substitute
21152         all_gtfiles_files_langs or all_gtfiles_files_frags.
21153         * Makefile.in: Revamp the way gengtype is invoked, now that it
21154         takes a file on its command line with a much simpler format.
21155         Remove or replace with gtyp-input.list all references to gtyp-gen.h.
21156         (GTFILES): Remove duplicates and C source files.
21157         * c-config-lang.in, cp/config-lang.in, objc/config-lang.in
21158         * objcp/config-lang.in: Add c-pragma.h to gtfiles.
21159         * configure: Regenerate.
21160
21161         * gengtype.h: Remove all type definitions to gengtype.c; leave
21162         only definitions of options_p, type_p, and pair_p as opaque
21163         pointers.  Update prototypes.
21164         * gengtype.c: Many type definitions moved here from gengtype.h.
21165         Consolidate type definitions at the top of the file.
21166         (xvasprintf): Delete.
21167         (xasprintf): Make static.
21168         (create_nested_pointer_option): Add 'next' parameter.
21169         (create_field_all, create_field_at): New functions.
21170         (create_field): Now a thin wrapper around create_field_all.
21171         (create_optional_field): Rename create_optional_field_ and add
21172         line argument.  Original name is now a macro which supplies
21173         __LINE__.
21174         (oprintf): Use vsnprintf directly.
21175         (close_output_files): Use fatal rather than perror/exit.
21176         (note_def_vec, note_def_vec_alloc): Use create_field_at.
21177         (main): Set progname.  Don't use exit.
21178         * gengtype-yacc.y (struct_fields): Use create_field_at.
21179         (option, optionseqopt): Delete.
21180         (optionseq): Consolidate productions from option here so we
21181         can use the first argument to create_option.
21182
21183         * gengtype-lex.l: Distinguish unions from structures in the
21184         token type.  Don't call find_structure; return the tag as a string.
21185         * gengtype-yacc.y: Add new token types ENT_TYPEDEF_UNION and
21186         ENT_UNION.  Type of these, ENT_TYPEDEF_STRUCT, and ENT_STRUCT is
21187         string.  Reorganize typedef_struct production accordingly.
21188         Use create_nested_ptr_option.
21189         * gengtype.c (create_nested_ptr_option): New function.
21190         * gengtype.h: Declare it.
21191
21192         * gengtype.h (struct type): Replace 'sc' with boolean, scalar_is_char.
21193         (string_type): Don't declare.
21194         (do_scalar_typedef): Declare.
21195         (create_scalar_type): Update prototype.
21196         * gengtype.c (string_type): Make static.
21197         (scalar_nonchar, scalar_char): New.
21198         (do_scalar_typedef): Export.  Always use scalar_nonchar for the type.
21199         (resolve_typedef): Use scalar_nonchar for error recovery.
21200         (create_scalar_type): Remove name_len field.  Return scalar_char
21201         or scalar_nonchar as appropriate.
21202         (adjust_field_type): Look at scalar_is_char boolean to decide whether
21203         to use string_type.
21204         (throughout): Use scalar_nonchar instead of calling
21205         create_scalar_type, whenever possible.
21206         (main): Initialize scalar_char and scalar_nonchar before calling
21207         gen_rtx_next.
21208         * gengtype-lex.l: Adjust for removal of second argument to
21209         create_scalar_type.  Use yylval.s instead of yylval.t when
21210         returning SCALAR.
21211         * gengtype-yacc.y: Type of SCALAR is string.  Call
21212         create_scalar_type from type:SCALAR rule.  Adjust for removal of
21213         second argument to create_scalar_type.
21214
21215         * vec.h: Remove all #if IN_GENGTYPE blocks.
21216         Add comment saying that changes may require adjustments to gengtype.
21217         * gengtype.c: Don't include coretypes.h or tm.h.
21218         Add comment to inclusion of errors.h.
21219         (note_def_vec, note_def_vec_alloc): New functions.
21220         * gengtype.h: Declare new functions.
21221         * gengtype-lex.l: Don't include coretypes.h.
21222         (YY_INPUT, macro_input, push_macro_expansion, mangle_macro_name):
21223         Delete.
21224         (update_lineno): Remove unnecessary prototype.
21225         (DEF_VEC_* rules): Simplify using note_def_vec / note_def_vec_alloc.
21226         (VEC rule): Just return VEC_TOKEN.
21227         * gengtype-yacc.y (VEC_TOKEN): New token type.
21228         (type): Add a production for VEC(a,b).
21229         * Makefile.in: Update dependencies.
21230
21231         * gengtype-lex.l: Remove rules for parsing pointer-to-function
21232         typedefs that use the old PARAMS macro.
21233
21234         * gengtype-lex.l: Remove all rules and states relating to yacc
21235         input files.
21236         * gengtype-yacc.y: Similarly.
21237         * gengtype.c (note_yacc_type): Delete function.
21238         * gengtype.h: Update prototypes.
21239
21240 2007-03-26  Joseph Myers  <joseph@codesourcery.com>
21241
21242         * tree-pretty-print.c (dump_generic_node): Report precision of
21243         unnamed integer types.
21244
21245 2007-03-26  Steven Bosscher  <steven@gcc.gnu.org>
21246
21247         * ifcvt.c (noce_try_store_flag_constants): Don't check
21248         no_new_pseudos here.
21249         (noce_try_store_flag_constants): Don't check no_new_pseudos.
21250         (noce_try_addcc, noce_try_store_flag_mask, noce_try_cmove_arith,
21251         noce_try_cmove_arith, noce_try_minmax, noce_try_abs,
21252         noce_try_sign_mask): Likewise.
21253         (if_convert): Check no_new_pseudos here.
21254
21255         (cond_exec_process_if_block, noce_process_if_block, find_if_block):
21256         Remove prototypes.
21257         (struct noce_if_info): Add then_bb, else_bb, join_bb members.
21258         (noce_get_condition): Handle new then_else_reversed argument.
21259         (noce_init_if_info): Remove, fold into noce_find_if_block.
21260         (noce_process_if_block): Take a struct noce_if_info as the
21261         argument.  Don't set up one based on ce_if_info.  Update pointer
21262         references accordingly.
21263         (cond_move_process_if_block): Likewise.
21264         (process_if_block): Removed.
21265         (find_if_block): Removed.  Move functionality two new functions,
21266         noce_find_if_block and cond_exec_find_if_block.
21267         (noce_find_if_block): New function.  Be aware of IF-THEN-JOIN
21268         blocks and the symmetric IF-ELSE-JOIN case.
21269         (cond_exec_find_if_block): Also new function mostly based on old
21270         find_if_block and process_if_block.
21271         (find_if_header): Replace find_if_block call with separately
21272         guarded calls to noce_find_if_block and cond_exec_find_if_block.
21273         (find_cond_trap): Update noce_get_condition call.
21274         (dead_or_predicable): Likewise.
21275
21276 2007-03-26  Jakub Jelinek  <jakub@redhat.com>
21277
21278         * config/i386/i386.c (IX86_BUILTIN_CMPNEPD, IX86_BUILTIN_CMPNESD):
21279         Remove.
21280         (IX86_BUILTIN_PSLLW128, IX86_BUILTIN_PSLLD128, IX86_BUILTIN_PSLLQ128,
21281         IX86_BUILTIN_PSRAW128, IX86_BUILTIN_PSRAD128, IX86_BUILTIN_PSRLW128,
21282         IX86_BUILTIN_PSRLD128, IX86_BUILTIN_PSRLQ128): Remove.
21283         (ix86_init_mmx_sse_builtins): Remove v8hi_ftype_v8hi_v2di and
21284         v4si_ftype_v4si_v2di.  Remove __builtin_ia32_psllw128,
21285         __builtin_ia32_pslld128, __builtin_ia32_psllq128,
21286         __builtin_ia32_psrlw128, __builtin_ia32_psrld128,
21287         __builtin_ia32_psrlq128, __builtin_ia32_psraw128 and
21288         __builtin_ia32_psrad128 builtins.
21289
21290 2007-03-26  Uros Bizjak  <ubizjak@gmail.com>
21291
21292         * reg-stack.c (replace_reg): Use IN_RANGE macro in gcc_assert().
21293         * config/i386/constraints.md
21294         (define_constraint "I"): Use IN_RANGE macro.
21295         (define_constraint "J"): Ditto.
21296         (define_constraint "K"): Ditto.
21297         (define_constraint "M"): Ditto.
21298         (define_constraint "N"): Ditto.
21299         (define_constraint "O"): Ditto.
21300         * config/i386/predicates.md
21301         (define_predicate "register_no_elim_operand"): Use IN_RANGE macro.
21302         (define_predicate "const_0_to_3_operand"): Ditto.
21303         (define_predicate "const_0_to_7_operand"): Ditto.
21304         (define_predicate "const_0_to_15_operand"): Ditto.
21305         (define_predicate "const_0_to_63_operand"): Ditto.
21306         (define_predicate "const_0_to_255_operand"): Ditto.
21307         (define_predicate "const_1_to_31_operand"): Ditto.
21308         (define_predicate "const_2_to_3_operand"): Ditto.
21309         (define_predicate "const_4_to_7_operand"): Ditto.
21310
21311 2007-03-25  David Edelsohn  <edelsohn@gnu.org>
21312
21313         * config/rs6000/rs6000.c (rs6000_emit_prologue): Always clobber LR
21314         in SImode for save_world.
21315         * config/rs6000/altivec.md (save_world, restore_world): Convert to
21316         LR hard reg.
21317
21318 2007-03-25  Dorit Nuzman  <dorit@il.ibm.com>
21319
21320         PR tree-optimization/30784
21321         * fold-const.c (fold_ternary): Handle CONSTRUCTOR in case
21322         BIT_FIELD_REF.
21323
21324 2007-03-25  Revital Eres  <eres@il.ibm.com>
21325
21326         * tree-if-conv.c (if_convertible_gimple_modify_stmt_p):
21327           Fold movement_possibility function into it.
21328
21329 2007-03-25  David Edelsohn  <edelsohn@gnu.org>
21330
21331         * config/rs6000/darwin.md (load_macho_picbase): Ignore operand 0.
21332         (load_macho_picbase_{si,di}): Convert to LR hard reg.
21333         (call_indirect_nonlocal_darwin64): Same.
21334         (call_nonlocal_darwin64): Same.
21335         (call_value_indirect_nonlocal_darwin64): Same.
21336         (call_value_nonlocal_darwin64): Same.
21337         (sibcall_nonlocal_darwin64): Same.
21338         (sibcall_value_nonlocal_darwin64): Same.
21339         (sibcall_symbolic_64): Same.
21340         (sibcall_value_symbolic_64): Same.
21341         * config/rs6000/rs6000.c (rs6000_legitimize_tls_address): Remove
21342         LR pseudo.
21343         (rs6000_emit_load_toc_table): Same.
21344         * config/rs6000/altivec.md (restore_world): Convert to LR hard reg.
21345         * config/rs6000/rs6000.md (mulh_call): Convert to LR hard reg.
21346         (mull_call): Same.
21347         (divss_call): Same.
21348         (divus_call): Same.
21349         (quoss_call): Same.
21350         (quous_call): Same.
21351         (load_toc_v4_pic_si): Same
21352         (load_toc_v4_PIC_1): Same.
21353         (load_toc_v4_PIC_1b): Same.
21354         (call_indirect_aix{32,64}): Same.
21355         (call_value_indirect_aix{32,64}): Same.
21356         (call): Same.
21357         (call_value): Same.
21358         (call_local{32,64}): Same.
21359         (call_value_local{32,64}): Same.
21360         (call_indirect_nonlocal_aix{32,64}): Same.
21361         (call_nonlocal_aix{32,64}): Same.
21362         (call_value_indirect_nonlocal_aix{32,64}): Same.
21363         (call_value_nonlocal_aix{32,64}): Same.
21364         (call_indirect_nonlocal_sysv<mode>): Same.
21365         (call_nonlocal_sysv<mode>): Same.
21366         (call_value_indirect_nonlocal_sysv<mode>): Same.
21367         (call_value_nonlocal_sysv<mode>): Same.
21368         (sibcall): Same.
21369         (sibcall_local{32,64}): Same.
21370         (sibcall_value_local{32,64}): Same.
21371         (sibcall_nonlocal_aix{32,64}): Same.
21372         (sibcall_value_nonlocal_aix{32,64}): Same.
21373         (sibcall_nonlocal_sysv<mode>): Same.
21374         (sibcall_value): Same.
21375         (sibcall_value_nonlocal_sysv<mode>): Same.
21376
21377 2007-03-24  Paul Brook  <paul@codesourcery.com>
21378
21379         * config/arm/lib1funcs.asm (div0): Use ARM_FUNC_START and do_push.
21380         * config/arm/linux-eabi.h: Remove legacy syscall hack.
21381
21382 2007-03-24  Richard Henderson  <rth@redhat.com>
21383
21384         * config/ia64/constraints.md: New file.
21385         * config/ia64/predicates.md: Replace CONST_OK_FOR_? with
21386         satisfies_constraint_?.
21387         * config/ia64/ia64.c (ia64_move_ok, ia64_legitimate_constant_p,
21388         ia64_reload_gp, spill_restore_mem, ia64_expand_prologue,
21389         ia64_expand_epilogue, ia64_split_return_addr_rtx, ia64_rtx_costs,
21390         ia64_output_mi_thunk): Likewise.
21391         (ia64_const_ok_for_letter_p): Remove.
21392         (ia64_const_double_ok_for_letter_p): Remove.
21393         (ia64_extra_constraint): Remove.
21394         * config/ia64/ia64.h (REG_CLASS_FROM_LETTER): Remove.
21395         (CONST_OK_FOR_I, CONST_OK_FOR_J, CONST_OK_FOR_K, CONST_OK_FOR_L,
21396         CONST_OK_FOR_M, CONST_OK_FOR_N, CONST_OK_FOR_O, CONST_OK_FOR_P,
21397         CONST_OK_FOR_LETTER_P, CONST_DOUBLE_OK_FOR_G,
21398         CONST_DOUBLE_OK_FOR_LETTER_P, EXTRA_CONSTRAINT,
21399         EXTRA_MEMORY_CONSTRAINT): Remove.
21400         * config/ia64/ia64.md: Include constriants.md.  Replace
21401         CONST_OK_FOR_? with satisfies_constraint_?.
21402
21403 2007-03-23  Michael Meissner  <michael.meissner@amd.com>
21404             H.J. Lu  <hongjiu.lu@intel.com>
21405
21406         * config/dfp-bit.h (DPD_BID_NAME): New macro to give either the
21407         DPD or BID name.
21408         (name macros): Use DPD_BID_NAME to convert names properly.
21409
21410         * optabs.c (DECIMAL_PREFIX): Prefix string to use for the current
21411         decimal floating point format.
21412         (init_floating_libfuncs): Change decimal functions so that they
21413         have a "bid_" prefix if the decimal system uses the BID format,
21414         and "dpd_" prefix if the decimal system uses the DPD format.
21415         (init_interclass_conv_libfuncs): Ditto.
21416         (init_intraclass_conv_libfuncs): Ditto.
21417
21418         * config.in (ENABLE_DECIMAL_BID_FORMAT): New macro to say we are
21419         using the BID format.
21420
21421         * configure.ac (ENABLE_DECIMAL_BID_FORMAT): Set to 1/0 to say
21422         whether we are using the BID decimal format.
21423         * configure: Regenerate.
21424
21425         * c-cppbuiltin.c (c_cpp_builtins): Define __STDC_WANT_DEC_FP__ if
21426         the compiler has decimal floating point enabled.  Define
21427         __DECIMAL_BID_FORMAT__ if BID decimal floating point is used
21428         instead of DPD.
21429
21430         * config.in (ENABLE_DECIMAL_BID_FORMAT): New macro to say we are
21431         using the BID format.
21432
21433         * configure.ac (ENABLE_DECIMAL_BID_FORMAT): Set to 1/0 to say
21434         whether we are using the BID decimal format.
21435         * configure: Regenerate.
21436
21437         * c-cppbuiltin.c (c_cpp_builtins): Define __STDC_WANT_DEC_FP__ if
21438         the compiler has decimal floating point enabled.  Define
21439         __DECIMAL_BID_FORMAT__ if BID decimal floating point is used
21440         instead of DPD.
21441
21442         * doc/install.texi (--enable-decimal-float): Document BID and DPD
21443         options, and that it is enabled for i386/x86_64 systems.
21444
21445         * Makefile.in (enable_decimal_float): New.
21446         (DECNUMFMT): New.
21447         (DECNUMINC): Add  -I$(DECNUMFMT).
21448         (DECNUM_H): Mov decimal32.h, decimal64.h and decimal128.h
21449         to $(DECNUMFMT) from $(DECNUM).
21450
21451         * configure.ac: Support * --enable-decimal-float={no,yes,bid,dpd}.
21452         Substitute enable_decimal_float.
21453         * configure: Regenerated.
21454
21455         PR other/30529
21456         * config/dfp-bit.c (__dec_byte_swap): Use uint32_t instead of
21457         unsigned long.
21458
21459         * configure.ac: Enable decimal float for x86_64-*-linux*.
21460         * configure: Regenerated.
21461
21462         PR other/30530
21463         * dfp.c (decimal_real_arithmetic): Use decimal128FlipSign and
21464         decimal128ClearSign to flip and clear the sign bit in decimal128.
21465         (decimal_real_maxval): Set decimal128SetSign to set the sign
21466         bit in decimal128.
21467
21468 2007-03-23  Ian Lance Taylor  <iant@google.com>
21469
21470         * fold-const.c (fold_binary): Correct warning for X - c >= X.
21471
21472 2007-03-23  Ian Lance Taylor  <iant@google.com>
21473
21474         * tree-dump.c (dump_files): Correct comment.
21475
21476 2007-03-23  Ian Lance Taylor  <iant@google.com>
21477
21478         * tree-vrp.c (operand_less_p): Ignore fold overflow warnings.
21479
21480 2007-03-23  Steven Bosscher  <steven@gcc.gnu.org>
21481
21482         * tracer.c (tracer): Don't take FLAGS argument.  Assert we are
21483         in cfglayout mode.  Don't go into and out of cfglayout mode.
21484         Link the blocks in the order of the constructed traces.
21485         (rest_of_handle_tracer): Adjust call to tracer.
21486         * loop-init.c (rtl_loop_init): Assert we are in cfglayout mode.
21487         Don't go into cfglayout mode.
21488         (rtl_loop_done): Don't go out of cfglayout mode.
21489         * cfglayout.c (relink_block_chain): New function, split out from...
21490         (fixup_reorder_chain): ...here.  Remove redundant checking.
21491         (cfg_layout_finalize): Don't clear the header, footer, and aux
21492         fields here, move the code to do so to relink_block_chain.  Likewise
21493         for free_original_copy_tables.
21494         * rtl.h (tracer): Update prototype.
21495         * bb-reorder.c (reorder_basic_blocks): Don't take FLAGS argument.
21496         Assert we are in cfglayout mode.  Don't go into and out of cfglayout
21497         mode.  Use relink_block_chain to serialize the CFG according to the
21498         new basic block order.  Move targetm.cannot_modify_jumps_p check from
21499         here...
21500         (gate_handle_reorder_blocks): ...to here.
21501         (duplicate_computed_gotos): Move targetm.cannot_modify_jumps_p check
21502         from here...
21503         (gate_duplicate_computed_gotos): ...to here.
21504         (rest_of_handle_reorder_blocks): Don't see if anything has changed,
21505         something always changes when going into and out of cfglayout mode.
21506         Perform an expensive cfg cleanup while going into cfglayout mode.
21507         Always update liveness information on HAVE_conditional_execution
21508         targets.  Reserialize the basic blocks and go out of cfglayout mode.
21509         * reg-stack.c: Include cfglayout.h.
21510         (rest_of_handle_stack_regs): Go into and out of cfglayout mode around
21511         the call to reorder_basic_blocks.
21512         * basic-block.h (reorder_basic_blocks): Update prototype.
21513         (relink_block_chain): New prototype.
21514         * passes.c (pass_outof_cfg_layout_mode): Move after cse2.
21515
21516 2007-03-23  Joseph Myers  <joseph@codesourcery.com>
21517
21518         * config/mips/mips.md (type, hazard, *movdi_32bit,
21519         *movdi_gp32_fp64, *movdi_64bit, *movsi_internal, movcc,
21520         *movhi_internal, *movqi_internal, *movsf_hardfloat,
21521         *movdf_hardfloat_64bit, *movdf_hardfloat_32bit, *movdf_softfloat,
21522         movv2sf_hardfloat_64bit, load_df_low, load_df_high, store_df_high,
21523         mthc1, mfhc1): Change xfer instruction type to mfc and mtc, as
21524         applicable.
21525         (movcc): Change first xfer to multi.
21526         * config/mips/24k.md, config/mips/4100.md, config/mips/4300.md,
21527         config/mips/5000.md, config/mips/5400.md, config/mips/5500.md,
21528         config/mips/5k.md, config/mips/7000.md, config/mips/9000.md,
21529         config/mips/generic.md: Change reservations using "xfer" to use
21530         "mfc,mtc".
21531         * config/mips/sb1.md (ir_sb1_mtxfer): Use "mtc" instead of
21532         using match_operand.
21533         (ir_sb1_mfxfer): Use "mfc" instead of using match_operand.
21534         * config/mips/sr71k.md (ir_sr70_xfer_from): Use "mfc" instead of
21535         examining mode.
21536         (ir_sr70_xfer_to): Use "mtc" instead of examining mode.
21537
21538 2007-03-22  Richard Henderson  <rth@redhat.com>
21539
21540         * config/i386/i386.c: Remove unnecessary function declarations.
21541         Move targetm definition, and all related macros, to the end of
21542         the file.  Resort some functions to put definitions before uses.
21543         (ix86_attribute_table): Make static.  Move to end of file.
21544         (ix86_gimplify_va_arg): Make static.
21545
21546 2007-03-22  Richard Henderson  <rth@redhat.com>
21547
21548         * config/i386/i386.c (ix86_function_regparm): Early exit for 64-bit;
21549         don't increase local_regparm with force_align_arg_pointer check.
21550         (ix86_function_sseregparm): Assert 32-bit.
21551         (type_has_variadic_args_p): New.
21552         (ix86_return_pops_args): Early exit for 64-bit.  Reindent; use
21553         type_has_variadic_args_p.
21554         (ix86_function_arg_regno_p): Use == 0 instead of ! test for eax.
21555         (init_cumulative_args): Remove TARGET_DEBUG_ARG.  Remove zero_cum;
21556         use memset instead.  Do maybe_vaarg check first; skip attribute
21557         tests if true; skip attribute tests for 64-bit.
21558         (construct_container): Remove TARGET_DEBUG_ARG.
21559         (function_arg_advance_32, function_arg_advance_64): Split out ...
21560         (function_arg_advance): ... from here.
21561         (function_arg_32, function_arg_64): Split out ...
21562         (function_arg): ... from here.
21563         (ix86_pass_by_reference): Tidy.
21564         (ix86_function_value_regno_p): Rearrange w/ switch on regno.
21565         (function_value_32): New, from parts of ix86_function_value
21566         and ix86_value_regno.
21567         (function_value_64): New, from parts of ix86_function_value
21568         and ix86_libcall_value.
21569         (ix86_function_value_1): New.
21570         (ix86_function_value, ix86_libcall_value): Use it.
21571         (return_in_memory_32, return_in_memory_64): Split out ...
21572         (ix86_return_in_memory): ... from here.
21573         (ix86_struct_value_rtx): Skip for 64-bit.
21574         (ix86_libcall_value, ix86_value_regno): Remove.
21575         (setup_incoming_varargs_64): Split out ...
21576         (ix86_setup_incoming_varargs): ... from here.
21577         (ix86_va_start): Remove TARGET_DEBUG_ARG.
21578         (legitimate_address_p, legitimize_address): Remove TARGET_DEBUG_ADDR.
21579         * config/i386/i386-protos.h (ix86_function_value): Remove.
21580         * config/i386/i386.opt (TARGET_DEBUG_ADDR, TARGET_DEBUG_ARG): Remove.
21581
21582 2007-03-22  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
21583
21584         PR other/23572
21585         * c-lex.c (interpret_float): On overflow, emit pedantic warning if
21586         infinities not supported, otherwise emit warning if -Woverflow. On
21587         underflow, emit warning if -Woverflow.
21588         * real.c (real_from_string): Return -1 if underflow, +1 if overflow
21589         and 0 otherwise.
21590         * real.h (real_from_string): Update declaration
21591
21592 2007-03-22  Kai Tietz  <kai.tietz@onevision.com>
21593             Richard Henderson  <rth@redhat.com>
21594
21595         * defaults.h (OUTGOING_REG_PARM_STACK_SPACE): Provide default.
21596         * calls.c (compute_argument_block_size, expand_call,
21597         emit_library_call_value_1): Don't ifdef OUTGOING_REG_PARM_STACK_SPACE.
21598         * expr.c (block_move_libcall_safe_for_call_parm): Likewise.
21599         * function.c (STACK_DYNAMIC_OFFSET): Likewise.
21600         * doc/tm.texi (OUTGOING_REG_PARM_STACK_SPACE): Update.
21601         * config/alpha/unicosmk.h, config/bfin/bfin.h, config/iq2000/iq2000.h,
21602         config/mips/mips.h, config/mn10300/mn10300.h, config/mt/mt.h,
21603         config/pa/pa.h, config/rs6000/rs6000.h, config/score/score.h,
21604         config/spu/spu.h, config/v850/v850.h (OUTGOING_REG_PARM_STACK_SPACE):
21605         Set to 1.
21606
21607 2007-03-22  Joseph Myers  <joseph@codesourcery.com>
21608
21609         * c-incpath.c (add_sysroot_to_chain): New.
21610         (merge_include_chains): Add sysroot argument.  Call
21611         add_sysroot_to_chain if sysrooted.
21612         (register_include_chains): Update call to merge_include_chains.
21613         * doc/cppopts.texi: Document use of '=' in include directory
21614         arguments.
21615
21616 2007-03-22  Uros Bizjak  <ubizjak@gmail.com>
21617
21618         * config/i386/i386.md (cmp<mode>): Rename from cmpsf and cmpdf.
21619         Macroize expander using SSEMODEF mode macro.  Use SSE_FLOAT_MODE_P.
21620         (*cmpfp_<mode>): Rename from *cmpfp_sf and *cmpfp_df. Macroize
21621         insn pattern using X87MODEF12 mode macro.
21622
21623 2007-03-21  Seongbae Park <seongbae.park@gmail.com>
21624
21625         * regmove.c (regmove_optimize): Use reg_mentioned_p
21626         instead of reg_overlap_mentioned_p for DST.
21627
21628 2007-03-21  Mike Stump  <mrs@apple.com>
21629
21630         * c.opt: Fixup for Objective-C/C++.
21631
21632 2007-03-21  Steve Ellcey  <sje@cup.hp.com>
21633
21634         * explow.c (convert_memory_address): Fold memory reference when
21635         POINTERS_EXTEND_UNSIGNED < 0
21636
21637 2007-03-21  Richard Henderson  <rth@redhat.com>
21638
21639         PR target/31245
21640         * config/i386/emmintrin.h (__m128i, __m128d): Mark may_alias.
21641         * config/i386/mmintrin.h (__m64): Likewise.
21642         * config/i386/xmmintrin.h (__m128): Likewise.
21643
21644 2007-03-21  Richard Sandiford  <richard@codesourcery.com>
21645
21646         * config/vxworks.h (VXWORKS_ADDITIONAL_CPP_SPEC): Remove -D options.
21647         (VXWORKS_OS_CPP_BUILTINS): Define.
21648         * config/i386/vxworks.h (VXWORKS_CPU_DEFINE): Fold into...
21649         (TARGET_OS_CPP_BUILTINS): ...here.  Use VXWORKS_OS_CPP_BUILTINS.
21650
21651 2007-03-21  Richard Sandiford  <richard@codesourcery.com>
21652
21653         * rtl.h (constant_pool_reference_p): Delete.
21654         (find_constant_src): Declare.
21655         * rtlanal.c (find_constant_src): New function.
21656         * simplify-rtx.c (constant_pool_reference_p): Delete.
21657         * config/i386/i386.md: Use find_constant_src instead of
21658         constant_pool_reference_p/avoid_constant_pool_reference pairs.
21659
21660 2007-03-21  Richard Sandiford  <richard@codesourcery.com>
21661
21662         * doc/invoke.texi (-fpie, -fPIE): Document __pie__ and __PIE__.
21663         * c-cppbuiltin.c (c_cpp_builtins): Define them.
21664
21665 2007-03-20  Mark Mitchell  <mark@codesourcery.com>
21666
21667         * config/arm/elf.h (TARGET_ASM_DESTRUCTOR): Define.
21668         * config/arm/arm.c (arm_elf_asm_cdtor): New function.
21669         (arm_elf_asm_constructor): Use it.
21670         (arm_elf_asm_destructor): New function.
21671
21672 2007-03-20  Bernd Schmidt  <bernd.schmidt@analog.com>
21673
21674         * jump.c (mark_jump_label): Treat SEQUENCE specially.
21675
21676 2007-03-20  Nathan Sidwell  <nathan@codesourcery.com>
21677
21678         * config/vxlib.c (tls_delete_hook): Use TCB for kernel tasks.
21679
21680 2007-03-19  Andrew Haley  <aph@redhat.com>
21681
21682         PR tree-optimization/31264
21683         * tree-vrp.c (register_edge_assert_for_1): Don't look though
21684         VIEW_CONVERT_EXPRs.
21685
21686 2007-03-19  Paolo Bonzini  <bonzini@gnu.org>
21687
21688         PR rtl-optimization/30907
21689         * fwprop.c (forward_propagate_into): Never propagate inside a loop.
21690         (fwprop_init): Always call loop_optimizer_initialize.
21691         (fwprop_done): Always call loop_optimizer_finalize.
21692         (fwprop): We always have loop info now.
21693         (gate_fwprop_addr): Remove.
21694         (pass_fwprop_addr): Use gate_fwprop as gate.
21695
21696         PR rtl-optimization/30841
21697         * df-problems.c (df_ru_local_compute, df_rd_local_compute,
21698         df_chain_alloc): Call df_reorganize_refs unconditionally.
21699         * df-scan.c (df_rescan_blocks, df_reorganize_refs): Change
21700         refs_organized to refs_organized_size.
21701         (df_ref_create_structure): Use refs_organized_size instead of
21702         bitmap_size if refs had been organized, and keep refs_organized_size
21703         up-to-date.
21704         * df.h (struct df_ref_info): Change refs_organized to
21705         refs_organized_size.
21706         (DF_DEFS_SIZE, DF_USES_SIZE): Use refs_organized_size instead of
21707         bitmap_size.
21708
21709 2007-03-19  Mark Mitchell  <mark@codesourcery.com>
21710
21711         * except.c (output_function_exception_table): Do not reference the
21712         EH personality routine for functions that do not require an
21713         exception table.
21714
21715 2007-03-20  Jakub Jelinek  <jakub@redhat.com>
21716
21717         PR c/30762
21718         * c-typeck.c (convert_for_assignment): Call comptypes for
21719         RECORD_TYPE or UNION_TYPE.
21720
21721         PR inline-asm/30505
21722         * reload1.c (reload): Do invalid ASM checking after
21723         cleanup_subreg_operands.
21724
21725 2007-03-19  Jeff Law  <law@redhat.com>
21726
21727         * tree-cfg.c (find_taken_edge): Tighten conditions for
21728         optimizing computed gotos.
21729
21730 2007-03-19  Michael Matz  <matz@suse.de>
21731
21732         * builtins.c (expand_builtin_sync_operation,
21733         expand_builtin_compare_and_swap,
21734         expand_builtin_lock_test_and_set): Care for extending CONST_INTs
21735         correctly.
21736
21737         * config/i386/sync.md (sync_double_compare_and_swapdi_pic,
21738         sync_double_compare_and_swap_ccdi_pic): Use "SD" as constraint
21739         for operand 3.
21740
21741 2007-03-19  Andreas Krebbel  <krebbel1@de.ibm.com>
21742
21743         * doc/tm.texi: Add brackets around the return type of
21744         TARGET_SECONDARY_RELOAD.
21745
21746 2007-03-19  Andrew Pinski  <andrew_pinski@playstation.sony.com>
21747         Richard Guenther  <rguenther@suse.de>
21748
21749         PR tree-optimization/31254
21750         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1):
21751         Use handled_component_p () where appropriate.  Continue
21752         propagating into the rhs if we propagated into an INDIRECT_REF
21753         on the lhs.
21754
21755 2007-03-19  Andreas Krebbel  <krebbel1@de.ibm.com>
21756
21757         * config/s390/s390.md (op_type attribute): RRR instruction type added.
21758         (FP, DFP, SD_SF, DD_DF, TD_TF): New mode macros.
21759         (xde, xdee): Mode attributes adjusted to support DFP modes.
21760         (RRer, f0, op1, Rf, bt, bfp, HALF_TMODE): New mode attributes added.
21761         ("cmp<mode>", "*cmp<mode>_css_0", "*cmp<mode>_ccs", TF move splitters,
21762         DF move splitters, "floatdi<mode>2", "add<mode>3", "*add<mode>3",
21763         "*add<mode>3_cc", "*add<mode>3_cconly", "sub<mode>3", "*sub<mode>3",
21764         "*sub<mode>3_cc", "*sub<mode>3_cconly", "mul<mode>3", "*mul<mode>3",
21765         "div<mode>3", "*div<mode>3", "*neg<mode>2_nocc", "*abs<mode>2_nocc",
21766         "*negabs<mode>2_nocc", "copysign<mode>3"): Adjusted to support DFP
21767         numbers.
21768         ("*movtf_64", "*movtf_31", "*movdf_64dfp", "*movdf_64", "*movdf_31",
21769         "movsf"): Insn definitions removed.
21770         ("*mov<mode>_64", "*mov<mode>_31", "mov<mode>", "*mov<mode>_64dfp",
21771         "*mov<mode>_64", "*mov<mode>_31", "fix_trunc<DFP:mode>di2",
21772         "trunctddd2", "truncddsd2", "extendddtd2", "extendsddd2"): Insn
21773         definitions added.
21774         ("fixuns_truncdddi2", "fixuns_trunctddi2", "mov<mode>",
21775         "reload_in<mode>", "reload_out<mode>"): Expander added.
21776         ("movtf", "movdf", "reload_outtf", "reload_outdf", "reload_intf"):
21777         Expander removed.
21778
21779 2007-03-19  Andreas Krebbel  <krebbel1@de.ibm.com>
21780
21781         * config/s390/s390.md: Only non-functional changes.  Renamed
21782         FPR mode macro to BFP all over the file.
21783
21784 2007-03-19  Andreas Krebbel  <krebbel1@de.ibm.com>
21785
21786         * config/s390/s390.md (UNSPEC_COPYSIGN): New constant.
21787         (op_type attribute): RRF instruction type added.
21788         (fT0): New mode attribute.
21789         ("*movdi_64dfp", "*movdf_64dfp", "*neg<mode>2_nocc", "*abs<mode>2_nocc",
21790         "*negabs<mode>2_nocc", "copysign<mode>3"): Insn definitions added.
21791         * config/s390/s390.h (SECONDARY_MEMORY_NEEDED): Due to a new
21792         instruction no secondary memory is needed when moving DFmode values
21793         between GPRs and FPRs.
21794
21795 2007-03-19  Andreas Krebbel  <krebbel1@de.ibm.com>
21796
21797         * config/s390/s390.opt ("mhard-float", "msoft-float"): Bit value
21798         inverted and documentation adjusted.
21799         ("mhard-dfp", "msoft-dfp"): New options.
21800         * config/s390/s390.c (s390_handle_arch_option): New architecture
21801         switch: z9-ec.
21802         (override_options): Sanity checks for the new options added.
21803         * config.gcc: New architecture switch: z9-ec.
21804         * config/s390/s390.h (processor_flags): PF_DFP added.
21805         (TARGET_CPU_DFP, TARGET_DFP): Macro definitions added.
21806         (TARGET_DEFAULT): Due to the s390.opt changes hard float is enabled
21807         when the bit is NOT set so remove it from the defaults.
21808
21809 2007-03-19  Andreas Krebbel  <krebbel1@de.ibm.com>
21810
21811         * genemit.c (main): Print include statement for dfp.h.
21812         * dfp.h (decimal_real_arithmetic): Hide prototype if tree_code enum
21813         is not available.
21814
21815 2007-03-19  Hans-Peter Nilsson  <hp@axis.com>
21816
21817         * config/cris/t-elfmulti (EXTRA_MULTILIB_PARTS): Do not define here.
21818
21819 2007-03-19  Kaz Kojima  <kkojima@gcc.gnu.org>
21820
21821         PR target/31022
21822         * config/sh/sh.c (sh_adjust_cost): Use the result of single_set
21823         instead of PATTERN.
21824
21825 2007-03-18  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
21826
21827         * pa.c (output_deferred_plabels, output_bb, output_millicode_call,
21828         attr_length_call, output_call, output_indirect_call): Cleanup
21829         formatting of targetm calls.
21830
21831 2007-03-19  Hans-Peter Nilsson  <hp@axis.com>
21832
21833         * config/cris/cris.h (HANDLE_PRAGMA_PACK_PUSH_POP): Define to 1.
21834
21835 2007-03-18  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
21836
21837         * pa.md: Add fpstore_load and store_fpload instruction types.  Provide
21838         reservation, bypass and anti-bypass descriptions for these
21839         instructions.  Update move patterns.
21840         * pa.c (hppa_fpstore_bypass_p): Check for both TYPE_FPSTORE_LOAD and
21841         TYPE_FPSTORE.
21842
21843 2007-03-18  Dorit Nuzman  <dorit@il.ibm.com>
21844
21845         * tree-vect-transform.c (get_initial_def_for_induction): Replace
21846         GET_MODE_NUNITS with TYPE_VECTOR_SUBPARTS.
21847         (get_initial_def_for_reduction): Likewise.
21848
21849 2007-03-16  Daniel Berlin  <dberlin@dberlin.org>
21850
21851         Fix PR tree-optimization/29922
21852         * tree-ssa-pre.c (bb_bitmap_sets): Remove RVUSE_* members.
21853         (get_representative): Removed.
21854         (value_dies_in_block_x): Update for rvuse removal.
21855         (valid_in_sets): Update for renaming of vuses_dies_in_block_x.
21856         (compute_antic_aux): Handle when PHI nodes appear in
21857         non-single-successors.
21858         (dump_bitmap_of_names): Removed.
21859         (compute_antic_safe): Renamed and removed rvuse calculation.
21860         Calculate only antic safe.
21861         (insert_into_preds_of_block): Remove assert.
21862         (execute_pre): Update for renamed functions.
21863         (defer_or_phi_translate_block): New function.
21864
21865 2007-03-17  Kazu Hirata  <kazu@codesourcery.com>
21866
21867         * config/arm/arm.c, config/arm/thumb2.md, config/m68k/m68k.c,
21868         config/spu/spu.c, omega.h, passes.c, predict.c: Fix comment
21869         typos.
21870         * doc/cpp.texi, doc/extend.texi, doc/invoke.texi: Fix typos.
21871         Follow spelling conventions.
21872
21873         * tree-data-ref.h: Remove the prototype for analyze_array.
21874
21875 2007-03-17  Dorit Nuzman  <dorit@il.ibm.com>
21876
21877         PR tree-optimization/31041
21878         * tree-vect-transform.c (get_initial_def_for_induction): Call
21879         force_gimple_operand.
21880
21881 2007-03-17  Olga Golovanevsky  <olga@il.ibm.com>
21882
21883         * ipa-type-escape.c (look_for_casts) : Revert code to use
21884         handled_component_p due to ada test a-numaux.adb.
21885
21886 2007-03-17  Kazu Hirata  <kazu@codesourcery.com>
21887
21888         * final.c (final_scan_insn): Alter the condition of a
21889         conditional trap if we have nonstandard CC.
21890
21891 2007-03-16  Alexandre Oliva  <aoliva@redhat.com>
21892
21893         * configure.ac: Remove excess quoting from asm line 0 test.
21894         * configure: Rebuilt.
21895
21896 2007-03-16  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
21897
21898         * doc/invoke.texi (-Wconversion): Document warnings specific to C++.
21899         * c-common.c (convert_and_check): Move warning logic to...
21900         (warnings_for_convert_and_check): ...here. Define.
21901         * c-common.h (warnings_for_convert_and_check): Declare.
21902
21903 2007-03-16  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
21904
21905         * pa.c (attr_length_call): Partially revert change of 2007-03-09.
21906         (output_call): Likewise.
21907
21908 2007-03-16  Richard Sandiford  <richard@codesourcery.com>
21909
21910         * config/vxworks.h (SUPPORTS_INIT_PRIORITY): Define.
21911
21912 2007-03-16  Richard Sandiford  <richard@codesourcery.com>
21913
21914         * config/vx-common.h (WINT_TYPE, WINT_TYPE_SIZE): Define.
21915
21916 2007-03-16  Uros Bizjak  <ubizjak@gmail.com>
21917
21918         * config/i386/i386.c (override_options): Add PTA_NO_SAHF to k8,
21919         opteron, athlon-64 and athlon-fx processor_alias_table entries.
21920
21921 2007-03-16  Sebastian Pop  <sebastian.pop@inria.fr>
21922
21923         PR tree-optimization/31183
21924         * tree-loop-linear.c (gather_interchange_stats, try_interchange_loops):
21925         Use double_int instead of unsigned int for representing access_strides.
21926         * testsuite/gcc.dg/tree-ssa/pr31183.c: New.
21927
21928 2007-03-16  Richard Guenther  <rguenther@suse.de>
21929
21930         PR tree-optimization/31146
21931         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Restructure
21932         to allow recursion of forward_propagate_addr_expr.
21933         (forward_propagate_addr_into_variable_array_index): Likewise.
21934         (forward_propagate_addr_expr): Likewise.
21935         (tree_ssa_forward_propagate_single_use_vars): Likewise.
21936         (forward_propagate_addr_expr_1): Recurse on simple copies
21937         instead of propagating into them.  Do so for useless conversions
21938         as well.
21939         (forward_propagate_addr_expr): Clean up unused statements after
21940         recursion.
21941
21942 2007-03-16  Richard Guenther  <rguenther@suse.de>
21943
21944         * builtins.c (expand_builtin_cexpi): Use the right argument
21945         for the expansion via cexp.
21946
21947 2007-03-16  Alexandre Oliva  <aoliva@redhat.com>
21948
21949         * configure.ac: Don't require ELF binutils to tolerate # 0 "".
21950         * configure: Rebuilt.
21951
21952 2007-03-16  Alexandre Oliva  <aoliva@redhat.com>
21953
21954         PR debug/29906
21955         * dwarf2out.c (force_type_die): Adjust comment.
21956         (dwarf2out_imported_module_or_decl): Handle base AT_import types.
21957
21958 2007-03-15  DJ Delorie  <dj@redhat.com>
21959
21960         * config/frv/predicates.md (minmax_operator): Don't check operands
21961         here.
21962
21963 2007-03-15  Zdenek Dvorak  <dvorakz@suse.cz>
21964
21965         * tree-ssa-loop-niter.c (record_estimate): Add "upper" argument.
21966         Update constant estimates of number of iterations.
21967         (record_nonwrapping_iv): Add "upper" argument.  "data_size_bounds_p"
21968         argument renamed to "realistic".
21969         (compute_estimated_nb_iterations): Removed.
21970         (record_niter_bound): New function.
21971         (idx_infer_loop_bounds): For possible but unlikely tail arrays,
21972         call record_nonwrapping_iv with upper = false.
21973         (infer_loop_bounds_from_signedness): Pass upper argument to
21974         record_nonwrapping_iv.
21975         (estimate_numbers_of_iterations_loop): Do not call
21976         compute_estimated_nb_iterations.  Record estimate based on profile
21977         information.  Initialize the constant estimates of number of
21978         iterations.
21979         * tree-data-ref.c (estimated_loop_iterations): Return the recorded
21980         estimates.
21981         * tree-ssa-loop-prefetch.c (loop_prefetch_arrays): Add dump when
21982         number of iterations is too small.
21983         * cfgloop.h (struct nb_iter_bound): Remove "realistic" field.
21984         (EST_NOT_AVAILABLE): Removed.
21985         (struct loop): Replace estimated_nb_iterations by any_upper_bound,
21986         nb_iterations_upper_bound, any_estimate and nb_iterations_estimate
21987         fields.
21988
21989 2007-03-15  Zdenek Dvorak  <dvorakz@suse.cz>
21990
21991         * tree-ssa-loop-niter.c (refine_bounds_using_guard, bound_difference):
21992         Handle NE_EXPR guards.
21993
21994 2007-03-15  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
21995
21996         PR c++/24924
21997         * c-opts.c (c_common_post_options): Handle C++ post-processing here.
21998         Set also -pedantic-errors by default for the  preprocessor unless
21999         -fpermissive is given.
22000
22001 2007-03-15  Richard Guenther  <rguenther@suse.de>
22002
22003         PR middle-end/29719
22004         PR middle-end/31161
22005         * builtins.c (expand_builtin_cexpi): As a fallback if we
22006         don't have builtins for sincos or cexp create a function
22007         declaration for cexp and expand to a call to that.
22008         (expand_builtin_int_roundingfn): Always fall
22009         back to floor/ceil and its variants even if they may be
22010         not available.
22011
22012 2007-03-15  Steven Bosscher  <steven@gcc.gnu.org>
22013
22014         PR middle-end/31159
22015         * cfglayout.c (fixup_reorder_chain): Postpone deleting dead
22016         jump tables, move the call to delete_dead_jumptables from here...
22017         (cfg_layout_finalize): ...to here.  But rebuild jump labels first.
22018         * cfgrtl.c (cfg_layout_can_merge_blocks_p): When not optimizing,
22019         don't allow merging of blocks that try_redirect_by_replacing_jump
22020         also does not handle when not optimizing.
22021
22022 2007-03-15  Uros Bizjak  <ubizjak@gmail.com>
22023             Francois-Xavier Coudert  <coudert@clipper.ens.fr>
22024
22025         * config/i386/i386.md (x86_sahf_1): Correctly handle
22026         HAVE_AS_IX86_SAHF.
22027
22028 2007-03-15  Uros Bizjak  <ubizjak@gmail.com>
22029
22030         PR target/31167
22031         * config/i386/i386.md (*addti3_1, *addti3_1 splitter): Use
22032         x86_64_general_operand as operand[2] predicate.  Remove "iF"
22033         from operand constraints and use "e" constraint instead.
22034         (*subti3_1, *subti3_1 splitter): Ditto.
22035         (*negti2_1, *negti2_1 splitter): Use nonimmediate_operand as
22036         operand[1] predicate.
22037
22038 2007-03-14  Sebastian Pop  <sebastian.pop@inria.fr>
22039
22040         * tree-loop-linear.c (gather_interchange_stats): For multidimensional
22041         arrays, multiply the access strides by the size of the sub-array.
22042         * testsuite/gcc.dg/tree-ssa/ltrans-5.c: New.
22043
22044 2007-03-14  Uros Bizjak  <ubizjak@gmail.com>
22045
22046         * configure.ac (HAVE_AS_IX86_SAHF): On x86 targets check whether
22047         the configured assembler supports the sahf mnemonic.
22048         * configure: Regenerate.
22049         * config.in: Regenerate.
22050
22051         * config/i386/i386.md (x86_sahf_1): Depending on HAVE_AS_IX86_SAHF,
22052         emit "sahf" or ".byte\t0x9e" as asm template.
22053
22054 2007-03-14  Michael Meissner  <michael.meissner@amd.com>
22055
22056         PR 31018
22057         * config/i386/i386.h (X86_TUNE_SHORTEN_X87_SSE): New tuning
22058         option to replace hard coded TARGET_xxx in md file.
22059         (X86_TUNE_AVOID_VECTOR_DECODE): Ditto.
22060         (X86_TUNE_SLOW_IMUL_IMM32_MEM): Ditto.
22061         (X86_TUNE_SLOW_IMUL_IMM8): Ditto.
22062         (X86_TUNE_MOVE_M1_VIA_OR): Ditto.
22063         (X86_TUNE_NOT_UNPAIRABLE): Ditto.
22064         (X86_TUNE_NOT_VECTORMODE): Ditto.
22065         (TUNE_SHORTEN_X87_SSE): Use new tuning option.
22066         (TUNE_AVOID_VECTOR_DECODE): Ditto.
22067         (TUNE_SLOW_IMUL_IMM32_MEM): Ditto.
22068         (TUNE_SLOW_IMUL_IMM8): Ditto.
22069         (TUNE_MOVE_M1_VIA_OR): Ditto.
22070         (TUNE_NOT_UNPAIRABLE): Ditto.
22071         (TUNE_NOT_VECTORMODE): Ditto.
22072
22073         * config/i386/i386.c (ix86_tune_features): Fill in new tuning
22074         options.
22075
22076         * config/i386/i386.md (fix_trunc?f?1_sse peephole2): Use new
22077         tuning options instead of hard coded TARGET_xxx.
22078         (fix ssemode peephole2's): Ditto.
22079         (imul peephole2's): Ditto.
22080         (movsi_or): Ditto.
22081         (movdi_or_rex64): Ditto.
22082         (move peephole2): Ditto.
22083         (not peephole2's): Ditto.
22084
22085 2007-03-14  Dirk Mueller  <dmueller@suse.de>
22086
22087         * c-common.h (empty_body_warning): Rename to empty_if_body_warning.
22088         * c-common.c (empty_if_body_warning): Rephrase diagnostic message.
22089         * c-parser.c (c_parser_if_body): Always add an empty statement in case
22090         of empty body.
22091         * c-parser.c (c_parser_do_statement): Warn about empty body in
22092         do/while statement.
22093         * c-typeck (c_finish_if_stmt): Call empty_if_body_warning.
22094         * doc/invoke.texi (-Wempty-body): Update documentation.
22095
22096 2007-03-14  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
22097
22098         PR c/21438
22099         * c-common.h (warn_for_div_by_zero): Declare.
22100         * c-common.c (warn_for_div_by_zero): Define.
22101         * c-typeck.c (build_binary_op): Call warn_for_div_zero instead of
22102         warning.
22103
22104 2007-03-14  Richard Sandiford  <richard@codesourcery.com>
22105
22106         * Makefile.in (PREPROCESSOR_DEFINES): Add directory terminators
22107         to PREFIX and STANDARD_PREFIX.
22108
22109 2007-03-14  Richard Sandiford  <richard@codesourcery.com>
22110             Phil Edwards  <phil@codesourcery.com>
22111
22112         * gthr-vxworks.h: Add an extern "C" wrapper for C++.
22113         (__gthread_once_t): Remove busy field for RTPs.
22114         (__GTHREAD_ONCE_INIT): Update accordingly.
22115
22116 2007-03-14  Richard Sandiford  <richard@codesourcery.com>
22117
22118         * doc/invoke.texi: Document VxWorks options.
22119
22120 2007-03-14  Uros Bizjak  <ubizjak@gmail.com>
22121
22122         * doc/invoke.texi (i386 and x86-64 Options): Clarify -msahf option.
22123
22124 2007-03-13  Seongbae Park <seongbae.park@gmail.com>
22125
22126         PR tree-optimization/30590
22127         * tree-nrv.c (tree_nrv): Check for the partial update of the
22128         return value.
22129
22130 2007-03-13  Alexandre Oliva  <aoliva@redhat.com>
22131
22132         * flags.h (flag_random_seed): Remove declaration, in favor of...
22133         * toplev.h (get_random_seed, set_random_seed): ... these.
22134         * tree.c (get_file_function_name): Use the former.
22135         * opts.c (common_handle_option): Use the latter.
22136         * toplev.c
22137
22138 2007-03-13  Steven Bosscher  <steven@gcc.gnu.org>
22139
22140         PR middle-end/31127
22141         * cse.c (cse_find_path): Do not bail out if a basic block that
22142         we already visited now becomes part of a path that starts at a
22143         different basic block.  Just disallow this, to make sure we
22144         visit each basic block at most once.
22145
22146 2007-03-13  Jan Hubicka  <jh@suse.cz>
22147
22148         * ipa-inline.c (cgraph_maybe_hot_edge_p): Look for hot/cold
22149         attributes, when profile esitmate is present, calls with very low
22150         frequency are cold.
22151
22152 2007-03-13  Zdenek Dvorak  <dvorakz@suse.cz>
22153
22154         PR tree-optimization/30730
22155         PR tree-optimization/26900
22156         * tree-ssa-loop-niter.c: Include gmp.h.
22157         (bounds): New type.
22158         (mpz_set_double_int, get_type_bounds, mpz_to_double_int,
22159         split_to_var_and_offset, determine_value_range,
22160         bound_difference_of_offsetted_base, refine_bounds_using_guard,
22161         bound_difference, bounds_add, bounds_negate,
22162         number_of_iterations_ne_max, dump_affine_iv): New functions.
22163         (number_of_iterations_ne, number_of_iterations_lt_to_ne,
22164         assert_loop_rolls_lt, assert_loop_rolls_le): Use bounds on the
22165         difference of initial and final value of control iv to validate
22166         results.
22167         (number_of_iterations_cond): Add loop parameter.  Determine bounds
22168         on the difference of the extremes of the control iv.  Add dumps.
22169         (expand_simple_operations): Handle phi nodes.
22170         (simplify_using_initial_conditions): Do not record used conditions.
22171         (number_of_iterations_exit): Pass loop to number_of_iterations_cond.
22172         Do not set additional_info.
22173         (implies_nonnegative_p, implies_ge_p): Removed.
22174         (derive_constant_upper_bound): Do not use parameter `additional'.
22175         (record_estimate): Parameter `additional' removed.  Parameter
22176         `i_bound' added.  Do not call derive_constant_upper_bound.
22177         (record_nonwrapping_iv): Use derive_constant_upper_bound to
22178         bound the number of iterations estimate.
22179         (estimate_numbers_of_iterations_loop): Pass the estimate from
22180         the number of iterations analysis to record_estimate.
22181         * tree.h (multiple_of_p): Declare.
22182         * tree-scalar-evolution.c (expression_expensive_p): Removed.
22183         (scev_const_prop): Do not check expression_expensive_p.
22184         * fold-const.c (multiple_of_p): Exported.
22185         * double-int.c (double_int_mask): Exported.
22186         * double-int.h (double_int_mask): Declare.
22187         * tree-flow.h (struct tree_niter_desc): Removed additional_info
22188         field.  Added max field.
22189
22190 2007-03-13  David Taylor  <taylor@candd.org>
22191
22192         PR driver/12448:
22193         * gcc.c (cpp_unique_options): If -MT or -MQ is seen, don't pass
22194         default -MQ.
22195
22196 2007-03-13  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
22197
22198         PR target/31123
22199         * pa.md (vdepi_ior): Don't allow zero length deposit.  Likewise for
22200         two unamed patterns.
22201
22202 2007-03-13  Uros Bizjak  <ubizjak@gmail.com>
22203
22204         * config/i386/i386.opt (mcx16, msahf): New options.
22205         * config/i386/i386.c (x86_cmpxchg16b, x86_sahf): Remove.
22206         (ix86_tune_features) [X86_TUNE_USE_SAHF]: Enable for m_GENERIC.
22207
22208         * config/i386/driver-i386.c (bit_LAHF_LM): New define.
22209         (host_detect_local_cpu): Detect cx16 and lahf_lm cpuid bits.
22210         Output -mcx16 and -msahf options when corresponding bit is set.
22211
22212         * doc/invoke.texi (i386 and x86-64 Options): Document -mcx16
22213         and -msahf options.
22214
22215 2007-03-13  Alexandre Oliva  <aoliva@redhat.com>
22216
22217         * configure.ac: Test for assembler tolerance to # 0 "".
22218         * configure, config.in: Rebuilt.
22219         * final.c (final_scan_insn): Emit it if HAVE_AS_LINE_ZERO.
22220
22221 2007-03-13  Geoffrey Keating  <geoffk@apple.com>
22222
22223         * doc/invoke.texi (Spec Files): Update for '%{,' spec.
22224
22225         * config/rs6000/darwin-fallback.c: Compile file only on powerpc.
22226         (handle_syscall): Handle direct system calls.
22227         * config/rs6000/darwin.h (HAS_MD_FALLBACK_FRAME_STATE_FOR): Delete.
22228
22229 2007-03-12  Brooks Moses  <brooks.moses@codesourcery.com>
22230
22231         * doc/invoke.texi: Fix cpp.info cross-reference.
22232         * doc/passes.texi: Fix gcc.info cross-reference.
22233
22234 2007-03-12  Zdenek Dvorak  <dvorakz@suse.cz>
22235
22236         PR tree-optimization/30835
22237         * lambda-code.c (can_convert_to_perfect_nest): Check whether
22238         bb_for_stmt is not NULL before accessing it.
22239
22240 2007-03-12  Joseph Myers  <joseph@codesourcery.com>
22241
22242         * gcc.c (main): Handle target_sysroot_hdrs_suffix being NULL for
22243         some multilibs.
22244
22245 2007-03-12  Brooks Moses  <brooks.moses@codesourcery.com>
22246
22247         PR 30635
22248         * doc/install.texi: Document --enable-stage1-languages
22249
22250 2007-03-12  Steven Bosscher  <steven@gcc.gnu.org>
22251
22252         * tree-pass.h (pass_into_cfg_layout_mode,
22253         pass_outof_cfg_layout_mode): Declare.
22254         * cfglayout.c (into_cfg_layout_mode, outof_cfg_layout_mode,
22255         pass_into_cfg_layout_mode, pass_outof_cfg_layout_mode): New.
22256         * passes.c (pass_into_cfg_layout_mode): Schedule before jump2.
22257         (pass_outof_cfg_layout_mode): Schedule after pass_rtl_ifcvt.
22258
22259 2007-03-12  Seongbae Park <seongbae.park@gmail.com>
22260
22261         * c-decl.c (warn_variable_length_array): New function.
22262         Refactored from grokdeclarator to handle warn_vla
22263         and handle unnamed array case.
22264         (grokdeclarator): Refactored VLA warning case.
22265         * c.opt (Wvla): New flag.
22266         * doc/invoke.texi (Wvla): New warning.
22267
22268 2007-03-12  Richard Henderson  <rth@redhat.com>
22269
22270         * config/alpha/alpha.c (alpha_elf_section_type_flags): New.
22271         (TARGET_SECTION_TYPE_FLAGS): New.
22272
22273 2007-03-12  Richard Henderson  <rth@redhat.com>
22274
22275         * config/darwin.c (machopic_reloc_rw_mask): New.
22276         * config/darwin-protos.h (machopic_reloc_rw_mask): Declare.
22277         * config/darwin.h (TARGET_ASM_RELOC_RW_MASK): New.
22278
22279 2007-03-12  Mark Mitchell  <mark@codesourcery.com>
22280
22281         * cppdefault.c (cpp_EXEC_PREFIX): New variable.
22282         * cppdefault.h (cpp_PREFIX): Document.
22283         (cpp_PREFIX_len): Likewise.
22284         (cpp_EXEC_PREFIX): New variable.
22285         * Makefile.in (PREPROCESSOR_DEFINES): Add STANDARD_EXEC_PREFIX.
22286         * c-incpath.c (add_standard_paths): Correct logic for relocating
22287         paths within prefix.
22288
22289 2007-03-12  Uros Bizjak  <ubizjak@gmail.com>
22290
22291         * config/i386/i386.md (fixuns_trunc<mode>hi2): Implement from
22292         fixuns_truncsfhi2 and fixuns_truncdfhi2 using SSEMODEF
22293         mode macro.
22294         (fix_trunc<mode>di_sse): Implement from fix_truncsfdi_sse and
22295         fix_truncdfdi_sse using SSEMODEF mode macro.
22296         (fix_trunc<mode>si_sse): Implement from fix_truncsfsi_sse and
22297         fix_truncdfsi_sse using SSEMODEF mode macro.
22298         (fix_trunc?f?i_sse peephole2): Implement using SSEMODEF mode macro.
22299         (fix_trunc?f?i_sse K8 peephole2): Fix register constraint.
22300
22301 2007-03-12  Richard Sandiford  <richard@codesourcery.com>
22302
22303         * config.gcc (i[4567]86-wrs-vxworks, i[4567]86-wrs-vxworksae): Add
22304         elfos.h to tm_file.
22305
22306 2007-03-12  Olga Golovanevsky  <olga@il.ibm.com>
22307
22308         * tree.h : Add multiple_of_p declaration.
22309         * fold-const.c (multiple_of_p): Make multiple_of_p public.
22310         * ipa-type-escape.c (results_of_malloc): Redundant.
22311         (visited_stmts): New. Visited stmt for walk_use_def_chains.
22312         (cast_type): Extended with new members.
22313         (check_cast): Returns cast_type.
22314         (cast): New structure for data of walk_use_def_chains.
22315         (is_malloc_result, is_cast_from_non_pointer_1,
22316         is_cast_from_non_pointer,
22317         is_array_access_through_pointer_and_index): New functions.
22318         (look_for_casts): Returns cast types.
22319         (check_call): Returns void.
22320         (okay_pointer_operation): Use support of pointer plus index,
22321         pointer plus constant and allow all multiplications.
22322
22323 2007-03-11  Richard Guenther  <rguenther@suse.de>
22324
22325         PR tree-optimization/31115
22326         * tree-vrp.c (extract_range_from_binary_expr): Make sure
22327         the shift count is positive and non-anti-range for RSHIFT_EXPR.
22328         A shift count of zero is not special as with *_DIV_EXPR.
22329         (vrp_int_const_binop): Handle RSHIFT_EXPR for determining overflow
22330         direction.
22331
22332 2007-03-11  Ian Lance Taylor  <iant@google.com>
22333
22334         * tree-vrp.c (vrp_int_const_binop): Handle PLUS_EXPR and
22335         the *_DIV_EXPR codes correctly with overflow infinities.
22336
22337 2007-03-11  Ira Rosen  <irar@il.ibm.com>
22338
22339         * tree-data-ref.c (analyze_offset): Add a return value (bool) to
22340         indicate success/failure of the analysis. Add negation to subtrahend
22341         in case of subtraction. Fail if both operands contain constants.
22342         (create_data_ref): Fail if analyze_offset fails.
22343
22344 2007-03-11  Uros Bizjak  <ubizjak@gmail.com>
22345
22346         * config/i386/i386.md (frndintxf2): Rename to ...
22347         (rintxf2): ... this. Remove expander having same name.
22348         (rintsf2, rintdf2): Implement using SSEMODEF macro.
22349         (roundsf2, rounddf2): Ditto.
22350         (lrint<mode>di2, lrint<mode>si2): Implement using SSEMODEI24 macro.
22351         (lround<mode>di2, lround<mode>si2): Ditto.
22352
22353 2007-03-11  Steven Bosscher  <steven@gcc.gnu.org>
22354
22355         * lower-subreg.c: Include except.h.
22356         (decompose_multiword_subregs): Verify that the only control flow
22357         insns we can split are loads to multi-words pseudos.
22358         Handle breaking such blocks after splitting, instead of calling
22359         find_many_sub_basic_blocks.
22360
22361         * loop-unroll.c (split_edge_and_insert): Don't set BB_SUPERBLOCK
22362         on the new basic block.  Add a lengthy comment explaining why we
22363         thought this was necessary.
22364         * cfglayout.c (cfg_layout_finalize): Don't break superblocks.
22365
22366 2007-03-10  Mark Mitchell  <mark@codesourcery.com>
22367
22368         PR c++/30924
22369         * tree.c (walk_type_fields): Recurse into the element type of
22370         ARRAY_TYPEs if there is a pointer set.
22371
22372 2007-03-10  Dirk Mueller  <dmueller@suse.de>
22373
22374         * c-common.c (warn_logical_operator): Fix condition.
22375
22376 2007-03-10  Tobias Schl�ter  <tobi@gcc.gnu.org>
22377
22378         * config/i386/darwin.h (DARWIN_MINVERSION_SPEC): Add missing
22379         quotation mark.
22380         * config/darwin.c (machopic_select_section): Remove superfluous
22381         argument in call to categorize_decl_for_section.  Remove unused
22382         variable shlib.
22383
22384 2007-03-10  Joseph Myers  <joseph@codesourcery.com>
22385
22386         * configure.ac (glibc_header_dir): Set using with_build_sysroot if
22387         defined.
22388         * configure: Regenerate.
22389
22390 2007-03-10  Uros Bizjak  <ubizjak@gmail.com>
22391
22392         PR target/31101
22393         * config/i386/i386.md (UNSPEC_C2_FLAG): New constant.
22394         (fpremxf4_i387, fprem1xf4_i387): Use UNSPEC_C2_FLAG.
22395         (fmodxf3, fmod<mode>3, remainderxf3, remainder<mode>3):
22396         Add LABEL_NUSES to emitted label.
22397         * config/i386/i386.c (ix86_emit_fp_unordered_jump): Add
22398         branch probability value to emitted jump insn.
22399         * reg-stack.c (subst_stack_regs_pat)[UNSPEC]: Handle UNSPEC_C2_FLAG.
22400         Do not check life information and do not re-arrange input operands
22401         for UNSPEC_FSCALE_EXP, UNSPEC_FPREM_U and UNSPEC_FPREM1_U.
22402
22403 2007-03-10  Kaz Kojima  <kkojima@gcc.gnu.org>
22404
22405         * config/sh/sh.c (sh_insn_length_adjustment): Adjust for
22406         the change of decode_asm_operands.
22407
22408 2007-03-10  Kaz Kojima  <kkojima@gcc.gnu.org>
22409
22410         * mode-switching.c (create_pre_exit): Skip blockage insn.
22411
22412 2007-03-09  Diego Novillo  <dnovillo@redhat.com>
22413
22414         * tree-pass.h (TODO_update_smt_usage): Remove.
22415         Update all users.
22416         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Remove
22417         argument SOME.
22418         Update all users.
22419
22420 2007-03-09  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
22421
22422         * pa.c (attr_length_call): Revise condition for long
22423         pc-relative branch.
22424         (output_call): Use "LONG_PIC_SDIFF" instruction sequence for long
22425         local calls on the SOM target.  Don't use "LONG_PIC_PCREL" call
22426         sequence on SOM target.
22427
22428 2007-03-09  Geoffrey Keating  <geoffk@apple.com>
22429
22430         * gcc.c: Document %{, in big comment at top.
22431         (input_suffix_matches): Remove special handling for .s and
22432         .S.
22433         (input_spec_matches): New.
22434         (handle_braces): Handle %{,.
22435         (validate_switches): ',' indicates a value which is not a switch.
22436         * config/alpha/osf.h (ASM_FINAL_SPEC): Use %{, rather than %{.
22437         to detect assembler input.
22438         * config/i386/sol2.h (CPP_SPEC): Likewise.
22439         * config/rs6000/sysv4.h (ASM_SPEC): Likewise.
22440         * config/rs6000/vxworks.h (ASM_SPEC): Likewise.
22441         * config/rs6000/lynx.h (ASM_SPEC): Likewise.
22442         * config/rs6000/linux64.h (ASM_SPEC_COMMON): Likewise.
22443         * config/i386/darwin.h (DARWIN_MINVERSION_SPEC): Objective-C plus
22444         -m64 causes deployment target to default to 10.5.
22445         * config/rs6000/darwin.h (DARWIN_MINVERSION_SPEC): Likewise.
22446
22447 2007-03-09  Richard Henderson  <rth@redhat.com>
22448
22449         PR target/26090
22450         * target.h (targetm.asm.out.reloc_rw_mask): New.
22451         * target-def.h (TARGET_ASM_RELOC_RW_MASK): New.
22452         (TARGET_ASM_OUT): Use it.
22453         * targhooks.c, targhooks.h (default_reloc_rw_mask): New.
22454         * varasm.c (categorize_decl_for_section): Remove shlib argument;
22455         use the new reloc_rw_mask target hook instead.
22456         (default_section_type_flags_1): Merge into...
22457         (default_section_type_flags): ... here.
22458         (decl_readonly_section_1): Merge into...
22459         (decl_readonly_section): ... here.
22460         (default_elf_select_section_1): Merge into...
22461         (default_elf_select_section): ... here.
22462         (default_unique_section_1): Merge into...
22463         (default_unique_section): ... here.
22464         (compute_reloc_for_rtx_1, compute_reloc_for_rtx): New.
22465         (default_select_rtx_section): Use it.
22466         (default_elf_select_rtx_section): Likewise.
22467         * output.h: Update to match.
22468         * doc/tm.texi (TARGET_ASM_RELOC_RW_MASK): New.
22469         * config/alpha/alpha.c (alpha_elf_reloc_rw_mask): New.
22470         (TARGET_ASM_RELOC_RW_MASK): New.
22471         * config/i386/i386.c (x86_64_elf_select_section): Adjust call
22472         to categorize_decl_for_section.
22473         (x86_64_elf_unique_section): Likewise.
22474         * config/ia64/hpux.h (TARGET_ASM_SELECT_SECTION,
22475         TARGET_ASM_UNIQUE_SECTION, TARGET_ASM_SELECT_RTX_SECTION): Remove.
22476         (TARGET_ASM_RELOC_RW_MASK): New.
22477         * config/ia64/ia64.c (ia64_rwreloc_select_section,
22478         ia64_rwreloc_unique_section, ia64_rwreloc_select_rtx_section): Remove.
22479         (ia64_hpux_reloc_rw_mask, ia64_reloc_rw_mask): New.
22480         (TARGET_RWRELOC): Remove.
22481         (ia64_section_type_flags): Adjust call to default_section_type_flags.
22482         * config/ia64/sysv4.h (TARGET_ASM_RELOC_RW_MASK): New.
22483         * config/rs6000/rs6000.c (rs6000_elf_section_type_flags): Remove.
22484         (rs6000_elf_select_section, rs6000_elf_unique_section): Remove.
22485         (rs6000_elf_reloc_rw_mask, rs6000_xcoff_reloc_rw_mask): New.
22486         (rs6000_xcoff_select_section): Use decl_readonly_section.
22487         (rs6000_xcoff_section_type_flags): Use default_section_type_flags.
22488         * config/rs6000/sysv4.h (TARGET_ASM_RELOC_RW_MASK): New.
22489         (TARGET_ASM_SELECT_SECTION, TARGET_ASM_UNIQUE_SECTION): Remove.
22490         (TARGET_SECTION_TYPE_FLAGS): Remove.
22491         * config/rs6000/xcoff.h (TARGET_ASM_RELOC_RW_MASK): New.
22492
22493 2007-03-09  Roger Sayle  <roger@eyesopen.com>
22494
22495         * fold-const.c (fold_comparison): Remove compile-time evaluation of
22496         complex constant equality/inequality comparisons for here.
22497         (fold_binary) <EQ_EXPR>: Simplify complex comparisons that are
22498         known at compile-time or can be simplified to a scalar comparison.
22499         (fold_relational_const): Move compile-time evaluation of complex
22500         constant equality/inequality comparisons to here.
22501
22502 2007-03-09  Alexandre Oliva  <aoliva@redhat.com>
22503
22504         PR rtl-optimization/30643
22505         * cse.c (cse_insn): Recompute dest_hash after insert_regs for
22506         dest_addr_elt.
22507         (fold_rtx): Recurse, like before 2006-11-03.
22508
22509 2007-03-09  DJ Delorie  <dj@redhat.com>
22510
22511         * config/m32c/t-m32c (m32c-pragma.o): Add TM_H dependency to
22512         m32c-pragma.o.
22513
22514 2007-03-09  Aldy Hernandez  <aldyh@redhat.com>
22515
22516         PR tree-optimization/30375
22517         * tree-ssa-dse.c (dse_possible_dead_store_p): Do not eliminate if
22518         LHS of statements is not the same.
22519         * testsuite/gcc.dg/tree-ssa/ssa-dse-10.c: New.
22520
22521 2007-03-09  Chao-ying Fu  <fu@mips.com>
22522
22523         * doc/extend.texi (MIPS DSP Built-in Functions): Document the DSP
22524         REV 2.
22525         * doc/invoke.texi (-mdspr2): Document new option.
22526         * config/mips/mips.md (UNSPEC_ABSQ_S_QB .. UNSPEC_DPSQX_SA_W_PH):
22527         New unspec for DSP REV 2.
22528         (<u>mulsidi3_32bit_internal): Check if !TARGET_DSPR2, because
22529         these instructions are extended in DSP REV 2.
22530         (mips-dspr2.md): Include.
22531         * config/mips/mips.opt (mdspr2): New option.
22532         * config/mips/mips.c (mips_function_type): Add MIPS_V4QI_FTYPE_V4QI,
22533         MIPS_SI_FTYPE_SI_SI_SI, MIPS_DI_FTYPE_DI_USI_USI, MIPS_DI_FTYPE_SI_SI,
22534         MIPS_DI_FTYPE_USI_USI, MIPS_V2HI_FTYPE_SI_SI_SI.
22535         (override_options): Check TARGET_DSPR2 to enable MASK_DSP.
22536         (CODE_FOR_mips_mul_ph): Define it to CODE_FOR_mulv2hi3.
22537         (dsp_bdesc): Add DSP REV 2 builtins.  Remove 32-bit only DSP builtins.
22538         (dsp_32only_bdesc): New description table for 32-bit only DSP REV 1
22539         and 2 builtins.
22540         (bdesc_map): Add one field of unsupported_target_flags.
22541         (bdesc_arrays): Update entries to have extra fields.  Add
22542         dsp_32only_bdesc.
22543         (mips_init_builtins): Initialize new function types.
22544         Check unsupported_target_fileds to filter out builtins.
22545         * config/mips/mips.h (TARGET_CPU_CPP_BUILTINS): Define __mips_dspr2 if
22546         TARGET_DSPR2.
22547         (ASM_SPEC): Pass mdspr2 to the assembler.
22548         * config/mips/mips-dspr2.md: New file.
22549
22550 2007-03-09  Sa Liu  <saliu@de.ibm.com>
22551
22552         * config/rs6000/altivec.md: Fix vcond patterns using if_then_else.
22553
22554 2007-03-09  Ian Lance Taylor  <iant@google.com>
22555
22556         * opts.c (common_handle_option): Treat -Wstrict-overflow (with no
22557         argument) like -Wstrict-overflow=2.
22558         * doc/invoke.texi (Warning Options): Update documentation.
22559
22560 2007-03-09  Dirk Mueller  <dmueller@suse.de>
22561
22562         PR c++/17946
22563         * doc/invoke.texi (-Wlogical-op): Document.
22564         * common.opt (-Wlogical-op): New.
22565         * c-common.h (warn_logical_operator): Declare.
22566         * c-common.c (warn_logical_operator): Define.
22567         * c-typeck.c (parser_build_binary_op): Call
22568         warn_logical_operator.
22569
22570 2007-03-09  Alexandre Oliva  <aoliva@redhat.com>
22571
22572         * rtl.h (gen_rtx_ASM_INPUT): Use "" instead of NULL file name.
22573         * final.c (final_scan_insn): Test for non-"" file name.
22574
22575 2007-03-09  Sebastian Pop  <sebastian.pop@inria.fr>
22576
22577         * doc/loop.texi: Document the Omega linear constraints solver.
22578         * doc/invoke.texi: Document -fcheck-data-deps, omega-max-vars,
22579         omega-max-geqs, omega-max-eqs, omega-max-wild-cards,
22580         omega-hash-table-size, omega-max-keys, and
22581         omega-eliminate-redundant-constraints.
22582         * tree-pass.h (pass_check_data_deps): Declared.
22583         * omega.c: New.
22584         * omega.h: New.
22585         * timevar.def (TV_CHECK_DATA_DEPS): Declared.
22586         * tree-ssa-loop.c (check_data_deps, gate_check_data_deps,
22587         pass_check_data_deps): New.
22588         * tree-data-ref.c (init_data_ref): Remove declaration.
22589         (dump_data_dependence_relation): Dump DDR_INNER_LOOP.
22590         (analyze_array): Renamed init_array_ref, move up initializations.
22591         (init_data_ref): Renamed init_pointer_ref.  Moved before its call.
22592         Removed arguments that are set to NULL.
22593         (analyze_indirect_ref): Correct indentation, correct call to
22594         init_pointer_ref.
22595         (object_analysis): Call init_array_ref instead of analyze_array.
22596         (initialize_data_dependence_relation): Initialize DDR_INNER_LOOP.
22597         (access_functions_are_affine_or_constant_p): Use DR_ACCESS_FNS instead
22598         of DR_ACCESS_FNS_ADDR.
22599         (init_omega_eq_with_af, omega_extract_distance_vectors,
22600         omega_setup_subscript, init_omega_for_ddr_1, init_omega_for_ddr,
22601         ddr_consistent_p): New.
22602         (compute_affine_dependence): Check consistency of ddrs when
22603         flag_check_data_deps is passed.
22604         (analyze_all_data_dependences): Uncomment.
22605         (tree_check_data_deps): New.
22606         * tree-data-ref.h: Include omega.h.
22607         (DR_ACCESS_FNS_ADDR): Removed.
22608         (data_dependence_relation): Add inner_loop.
22609         (DDR_INNER_LOOP): New.
22610         * common.opt (fcheck-data-deps): New.
22611         * tree-flow.h (tree_check_data_deps): Declare.
22612         * Makefile.in (TREE_DATA_REF_H): Depend on omega.h.
22613         (OBJS-common): Depend on omega.o.
22614         (omega.o): Define.
22615         * passes.c (pass_check_data_deps): Scheduled.
22616         * params.def (PARAM_OMEGA_MAX_VARS, PARAM_OMEGA_MAX_GEQS,
22617         PARAM_OMEGA_MAX_EQS, PARAM_OMEGA_MAX_WILD_CARDS,
22618         PARAM_OMEGA_HASH_TABLE_SIZE, PARAM_OMEGA_MAX_KEYS,
22619         PARAM_VECT_MAX_VERSION_CHECKS,
22620         PARAM_OMEGA_ELIMINATE_REDUNDANT_CONSTRAINTS): New.
22621
22622 2007-03-09  Richard Guenther  <rguenther@suse.de>
22623
22624         PR tree-optimization/30904
22625         PR middle-end/31058
22626         * tree-vrp.c (extract_range_from_binary_expr): Handle RSHIFT_EXPR
22627         the same way as *_DIV_EXPR.
22628
22629 2007-03-09  Alexandre Oliva  <aoliva@redhat.com>
22630
22631         * recog.c (decode_asm_operands): No mixed declarations and code.
22632
22633 2007-03-09  Alexandre Oliva  <aoliva@redhat.com>
22634
22635         * rtl.def (ASM_INPUT): Add location.
22636         * rtl.h (ASM_INPUT_SOURCE_LOCATION): New.
22637         (ASM_INPUT_SOURCE_FILE, ASM_INPUT_SOURCE_LINE): New.
22638         (decode_asm_operands): Add loc operand.
22639         (gen_rtx_ASM_INPUT, gen_rtx_ASM_INPUT_loc): Define.
22640         * stmt.c (expand_asm): Rename to...
22641         (expand_asm_loc): ... this.  Add locus argument.  Pass it on to
22642         gen_rtx_ASM_INPUT_loc.
22643         (expand_asm_expr): Adjust.
22644         * recog.c (decode_asm_operands): Add loc operand.
22645         (check_asm_operands, extract_insn): Adjust.
22646         * reload1.c (maybe_fix_stack_asms): Likewise.
22647         * final.c (asm_insn_count): Likewise.
22648         (final_scan_insn): Output # line before and after asm.
22649
22650 2007-03-09  Daniel Berlin  <dberlin@dberlin.org>
22651
22652         * tree-ssa-structalias.c (variable_info): Remove
22653         finished_solution.
22654         (new_var_info): Ditto.
22655         (shared_bitmap_info_t): New structure.
22656         (shared_bitmap_table): New variable.
22657         (shared_bitmap_hash): New function.
22658         (shared_bitmap_eq): Ditto
22659         (shared_bitmap_lookup): Ditto.
22660         (shared_bitmap_add): Ditto.
22661         (merge_smts_into): Change to take bitmap directly.
22662         (find_what_p_points_to): Rewrite to use shared bitmap hashtable.
22663         (init_alias_vars): Init shared bitmap hashtable.
22664         (delete_points_to_sets): Delete shared bitmap hashtable.
22665         * tree-ssa-operands.c (add_virtual_operand): Partially revert the
22666         is_aliased removal as a change that was still necessary was
22667         deleted.
22668
22669 2007-03-09  Uros Bizjak  <ubizjak@gmail.com>
22670
22671         * config/i386/i386.h (override_options): Conditionally disable
22672         x86_sahf for 64bit targets only.
22673
22674 2007-03-08  Andrew Pinski  <andrew_pinski@playstation.sony.com>
22675
22676         PR C/31072
22677         * c-decl.c (merge_decls): Don't call make_var_volatile.
22678         * varasm.c (make_var_volatile): Remove.
22679         * output.h (make_var_volatile): Remove.
22680
22681 2007-03-08  Zdenek Dvorak  <dvorakz@suse.cz>
22682
22683         PR tree-optimization/31085
22684         * tree-ssa-address.c (create_mem_ref): Fix test of type of base.
22685
22686 2007-03-08  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
22687
22688         * builtins.def (lceil, lceilf, lceill, lfloor, lfloorf, lfloorl,
22689         llceil, llceilf, llceill, llfloor, llfloorf, llfloorl): Mark with
22690         ATTR_CONST_NOTHROW_LIST.
22691
22692         * fold-const.c (tree_expr_nonnegative_warnv_p): Handle
22693         FIX_TRUNC_EXPR.
22694
22695 2007-03-08  Diego Novillo  <dnovillo@redhat.com>
22696
22697         * doc/tree-ssa.texi: Remove documentation for V_MUST_DEF.
22698
22699 2007-03-08  Geoffrey Keating  <geoffk@apple.com>
22700
22701         PR 31013
22702         * gccspec.c (lang_specific_driver): Do nothing when NEXT_OBJC_RUNTIME
22703         is declared.
22704         * config/darwin.h (REAL_LIBGCC_SPEC): When -fgnu-runtime is
22705         passed, use shared libgcc.
22706
22707 2007-03-08  Roger Sayle  <roger@eyesopen.com>
22708
22709         * tree-eh.c (do_return_redirection): Call build_gimple_modify_stmt
22710         instead of calling build2 with a GIMPLE_MODIFY_STMT.
22711         (honor_protect_cleanup_actions, lower_try_finally_switch):
22712         Likewise.
22713         * tree-if-conv.c (replace_phi_with_cond_gimple_modify_stmt,
22714         ifc_temp_var): Likewise.
22715         * tree-inline.c (setup_one_parameter): Likewise.
22716         * tree-mudflap.c (mf_decl_cache_locals,
22717         mf_build_check_statement_for): Likewise.
22718         * tree-nested.c (init_tmp_var, save_tmp_var,
22719         finalize_nesting_tree_1): Likewise.
22720         * tree-outof-ssa.c (insert_copy_on_edge,
22721         insert_backedge_copies): Likewise.
22722         * tree-profile.c (tree_gen_edge_profiler,
22723         tree_gen_ic_profiler): Likewise.
22724         * tree-scalar-evolution.c (scev_const_prop): Likewise.
22725         * tree-sra.c (sra_build_assignment): Likewise.
22726         * tree-ssa-loop-im.c (determine_invariantness_stmt): Likewise.
22727         * tree-ssa-math-opts.c (insert_reciprocals,
22728         execute_cse_sincos_1): Likewise.
22729         * tree-tailcall.c (adjust_accumulator_values,
22730         adjust_return_value): Likewise.
22731         * tree-vect-patterns.c (vect_pattern_recog_1): Likewise.
22732         * tree-vect-transform.c (vect_create_data_ref_ptr,
22733         bump_vector_ptr, vect_init_vector, get_initial_def_for_induction,
22734         vect_create_epilog_for_reduction, vectorizable_reduction,
22735         vectorizable_call, vectorizable_conversion,
22736         vectorizable_assignment, vectorizable_operation,
22737         vectorizable_type_demotion, vect_gen_widened_results_half,
22738         vect_permute_store_chain, vectorizable_store,
22739         vect_setup_realignment, vect_permute_load_chain,
22740         vectorizable_load, vectorizable_condition,
22741         vect_create_cond_for_align_checks): Likewise.
22742         * tree-vrp.c (build_assert_expr_for): Likewise.
22743
22744 2007-03-08  Ian Lance Taylor  <iant@google.com>
22745
22746         * tree-vrp.c: Include "intl.h".
22747         (usable_range_p): New static function.
22748         (compare_values_warnv): Don't test TYPE_OVERFLOW_UNDEFINED for
22749         overflowed values, juts set *strict_overflow_p.
22750         (compare_values): Only return -2 if one of the operands is not a
22751         constant.
22752         (compare_ranges): Call usable_range_p.
22753         (compare_range_with_value): Likewise.
22754         (vrp_evaluate_conditional_warnv): Rename from
22755         vrp_evaluate_conditional.  Make static.  Change all callers.
22756         (vrp_evaluate_conditional): New function.
22757         (simplify_div_or_mod_using_ranges): Issue warning about reliance
22758         on signed overflow.
22759         (simplify_abs_using_ranges): Likewise.
22760         (simplify_stmt_for_jump_threading): Add within_stmt parameter.
22761         * tree-ssa-dom.c (simplify_stmt_for_jump_threading): Add
22762         within_stmt parameter.
22763         * tree-ssa-propagate.c (fold_predicate_in): Update call to
22764         vrp_evaluate_conditional.
22765         * tree-ssa-threadedge.c
22766         (record_temporary_equivalences_from_stmts_at_dest): Change
22767         simplify parameter to take a second tree parameter.
22768         (simplify_control_stmt_condition): Likewise.
22769         (thread_across_edge): Likewise.
22770         * tree-flow.h (vrp_evaluate_conditional): Update declaration.
22771         (thread_across_edge): Likewise.
22772         * Makefile.in (tree-vrp.o): Depend upon intl.h.
22773
22774 2007-03-08  Uros Bizjak  <ubizjak@gmail.com>
22775
22776         * config/i386/i386.h (TARGET_SAHF): New define.
22777         * config/i386/i386.c (ix86_tune_features) [X86_TUNE_USE_SAHF]:
22778         Also enable for m_K8, m_AMDFAM10 and m_CORE2.
22779         (x86_sahf): New global variable.
22780         (override_options): Add PTA_NO_SAHF to pta_flags enum.  Recode
22781         pta_flags masks using shifts.  Add PTA_NO_SAHF to x86_64 and
22782         nocona processor flags.  Set x86_sahf when PTA_NO_SAHF is not set
22783         in processor flags.  Do not unconditionally disable TARGET_USE_SAHF
22784         for 64-bit.
22785         (ix86_fp_comparison_sahf_cost): Return high value for !TARGET_SAHF.
22786         (ix86_expand_fp_compare): Check for TARGET_CMOVE or TARGET_SAHF
22787         when expanding fcomi/sahf based tests.
22788         (ix86_emit_fp_unordered_jump): Check for TARGET_SAHF when
22789         expanding sahf based alternative. Emit sahf based sequence when
22790         optimizing for code size.
22791         * config/i386/i386.md (x86_sahf_1): Do not disable for
22792         TARGET_64BIT, enable for TARGET_SAHF.
22793
22794 2007-03-08  Martin Michlmayr  <tbm@cyrius.com>
22795
22796         * tree-ssa-coalesce.c (fail_abnormal_edge_coalesce): Remove
22797         spurious whitespace from error message.
22798
22799 2007-03-08  Volker Reichelt  <reichelt@netcologne.de>
22800
22801         PR c++/30852
22802         * c-common.c (fold_offsetof_1): Handle COMPOUND_EXPR.
22803
22804 2007-03-08  Alexandre Oliva  <aoliva@redhat.com>
22805
22806         * c-decl.c (grokdeclarator): Disable warnings for anonymous
22807         bitfields.
22808         * tree-sra.c (instantiate_element): Propagate disabled warnings
22809         from the element itself to the created variable.
22810
22811 2007-03-07  Richard Henderson  <rth@redhat.com>
22812
22813         PR target/30848
22814         * reg-stack.c (emit_swap_insn): If a malformed asm was seen,
22815         silently fix up the stack in the case of a missing register.
22816
22817 2007-03-07  Paul Brook  <paul@codesourcery.com>
22818
22819         * config/arm/libunwind.S: Add .arch/.object_arch for armv4 builds.
22820
22821 2007-03-07  Joseph Myers  <joseph@codesourcery.com>
22822
22823         * config/arm/unwind-arm.c (struct wmmxd_regs, struct wmmxc_regs):
22824         New.
22825         (phase1_vrs): Use them.
22826         (DEMAND_SAVE_WMMXD, DEMAND_SAVE_WMMXC): New.
22827         (__gnu_Unwind_Save_WMMXD, __gnu_Unwind_Restore_WMMXD,
22828         __gnu_Unwind_Save_WMMXC, __gnu_Unwind_Restore_WMMXC): Declare.
22829         (restore_non_core_regs): Call __gnu_Unwind_Restore_WMMXD and
22830         __gnu_Unwind_Restore_WMMXC if required.
22831         (_Unwind_VRS_Pop): Implement iWMMXt support.
22832         * config/arm/libunwind.S (gnu_Unwind_Restore_WMMXD,
22833         gnu_Unwind_Save_WMMXD, gnu_Unwind_Restore_WMMXC,
22834         gnu_Unwind_Save_WMMXC): Define.
22835
22836 2007-03-07  Richard Sandiford  <richard@codesourcery.com>
22837
22838         * config/vxworks.h (vxworks_override_options): Declare.
22839         (VXWORKS_OVERRIDE_OPTIONS): Use it.
22840         * config/vxworks.c: Include target.h and toplev.h.
22841         (vxworks_override_options): New function.
22842         * config/t-vxworks (vxworks.o): Depend on $(TARGET_H) and toplev.h.
22843
22844 2007-03-07  Andreas Krebbel  <krebbel1@de.ibm.com>
22845
22846         * config/s390/s390.c (override_options): Don't emit an error when
22847         -mstack-size is used without providing -mstack-guard.
22848         (s390_emit_prologue): Choose stack_guard value automatically if not
22849         provided via command line.
22850         * doc/invoke.texi: Adjust description of -mstack-guard and
22851         -mstack-size.
22852
22853 2007-03-07  Richard Sandiford  <richard@codesourcery.com>
22854
22855         * config/i386/i386.c (output_set_got): Add a GOT initialization
22856         sequence for VxWorks PIC.
22857         (legitimate_pic_address_disp_p): Allow UNSPEC_GOT wrappers
22858         around labels as well as symbols.  Use gotoff_operand instead
22859         of local_symbolic_operand.
22860         (legitimize_pic_address): Use gotoff_operand instead of
22861         local_symbolic_operand.  Use @GOT accesses for labels as
22862         well as symbols.
22863         (ix86_output_addr_diff_elt): Use PC-relative rather than
22864         GP-relative offsets for VxWorks PIC.
22865         (ix86_expand_move): Pass NULL_RTX to legitimize_pic_address unless
22866         no_new_pseudos.  Check whether the returned register is op0.
22867         * config/i386/i386.md (tablejump): Use PC-relative rather than
22868         GP-relative offsets for VxWorks PIC.
22869         * config/i386/predicates.md (gotoff_operand): New predicate.
22870
22871 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
22872
22873         * config/vxworks.h (VXWORKS_GOTT_BASE, VXWORKS_GOTT_INDEX): Undefine
22874         before defining.
22875         * config/vxworks-dummy.h: New file.
22876         * config/i386/i386.h: Include it.
22877
22878 2007-03-07  Alexandre Oliva  <aoliva@redhat.com>
22879
22880         * dwarf2out.c (is_inlined_entry_point): New
22881         (add_high_low_attributes): Emit DW_AT_entry_pc along with
22882         DW_AT_ranges if the first subblock is the entry point.
22883
22884 2007-03-06  David Daney  <ddaney@avtrex.com>
22885
22886         * doc/install.texi (mips-*-*): Change recommended binutils
22887         version.
22888
22889 2007-03-06  Anatoly Sokolov <aesok@post.ru>
22890
22891         * config/avr/avr.c (avr_mcu_types): Add support for ATmega325P,
22892         ATmega3250P, ATmega329P, ATmega3290P, AT90USB82 and AT90USB162
22893         devices.
22894         * config/avr/avr.h (LINK_SPEC, CRT_BINUTILS_SPECS): (Ditto.).
22895         * config/avr/t-avr (MULTILIB_MATCHES): (Ditto.).
22896
22897 2007-03-06  Jan Hubicka  <jh@suse.cz>
22898
22899         * errors.h (warning, error, fatal, internal_error): Mark as cold.
22900         * predict.c (maybe_hot_bb): Cold functions are never hot; hot
22901         functions are hot.
22902         (probably_cold_bb_p): Cold functions are cold.
22903         (probably_never_executed_bb_p): Cold functions are cold.
22904         (tree_bb_level_predictions): Predict calls to cold functions as not
22905         taken.
22906         (compute_function_frequency): Check hot/cold attributes.
22907         * function.h (function_frequency): Update comments.
22908         * predict.def (PRED_COLD_FUNCTION): Predict cold function.
22909         * c-common.c (handle_hot_attribute, handle_cold_attribute): New.
22910         (c_common_att): Add cold and hot.
22911
22912         * doc/extend.texi (hot,cold attributes): Document.
22913
22914 2007-03-06  Andrew Haley  <aph@redhat.com>
22915
22916         * function.c (expand_function_end): Move blockage to just after we
22917         emit the label for the naked return from the function.
22918
22919 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
22920
22921         * config/i386/att.h (ASM_OUTPUT_ASCII, ASM_OUTPUT_SKIP): Undefine
22922         before redefining.
22923
22924 2007-03-06  Jan Hubicka  <jh@suse.cz>
22925
22926         * reg-stack.c (reg_to_stack): Large models don't allow NAN to be
22927         loaded for constant large models.  Non-large 64bit PIC can do.
22928         * i386.h (CASE_VECTOR_MODE): Large PIC cases are 64bit.
22929         * cmodel.h: Add LARGE PIC.
22930         * i386.md (UNSPEC_PLTOFF): New.
22931         (UNSPEC_SET_RIP, UNSPEC_SET_GOT_OFFSET): New; renumber other
22932         unspecs as needed.
22933         (*call_1_rex64): Disable for large models.
22934         (*call_1_rex64_large): New.
22935         (*call_value_1_rex64): Disable for large models.
22936         (*call_value_1_rex64_large): New.
22937         (set_rip_rex4): New.
22938         (set_got_offset_rex64): New.
22939         * predicates.md (constant_call_address_operand): For large model
22940         constant calls are not possible.
22941         * i386-protos.h (construct_plt_address): Declare.
22942         * i386.c (override_options): Accept large models.
22943         (ix86_expand_prologue): Expand large PIC GOT pointer load.
22944         (legitimate_constant_p): Add new UNSPECs.
22945         (legitimate_pic_operand_p): Likewise.
22946         (legitimate_pic_address_disp_p): Disallow local symbols for large PICs.
22947         (legitimize_pic_address): Do easy RIP relative way for TLS only for
22948         non-large model.
22949         (output_pic_addr_const): Add PLTOFF.
22950         (ix86_output_addr_diff_elt): Output 64bit tables when needed.
22951         (ix86_expand_move): Legitimize pic address when in PIC mode.
22952         (construct_plt_address): New function.
22953         (ix86_expand_call): Offload the address to register and use GOT
22954         pointer for large model.
22955         * invoke.texi (mcmodel=large): Update documentation.
22956
22957 2007-03-06  Richard Henderson  <rth@redhat.com>
22958
22959         * config/i386/i386.c (x86_use_leave, x86_push_memory,
22960         x86_zero_extend_with_and, x86_movx, x86_double_with_add,
22961         x86_use_bit_test, x86_unroll_strlen, x86_deep_branch,
22962         x86_branch_hints, x86_use_sahf, x86_partial_reg_stall,
22963         x86_partial_flag_reg_stall, x86_use_himode_fiop, x86_use_simode_fiop,
22964         x86_use_mov0, x86_use_cltd, x86_read_modify_write, x86_read_modify,
22965         x86_split_long_moves, x86_promote_QImode, x86_fast_prefix,
22966         x86_single_stringop, x86_qimode_math, x86_promote_qi_regs,
22967         x86_himode_math, x86_promote_hi_regs, x86_sub_esp_4, x86_sub_esp_8,
22968         x86_add_esp_4, x86_add_esp_8, x86_integer_DFmode_moves,
22969         x86_partial_reg_dependency, x86_memory_mismatch_stall,
22970         x86_prologue_using_move, x86_epilogue_using_move, x86_shift1,
22971         x86_sse_partial_reg_dependency, x86_sse_split_regs,
22972         x86_sse_unaligned_move_optimal, x86_sse_typeless_stores,
22973         x86_sse_load0_by_pxor, x86_use_ffreep, x86_use_incdec,
22974         x86_inter_unit_moves, x86_ext_80387_constants, x86_four_jump_limit,
22975         x86_schedule, x86_use_bt, x86_pad_returns,
22976         x86_use_xchgb): Merge into ...
22977         (ix86_tune_features): ... here.  New array.
22978         (x86_cmove, x86_cmpxchg, x86_cmpxchg8b, x86_xadd,
22979         x86_bswap): Merge into ...
22980         (ix86_arch_features): ... here.  New array.
22981         (x86_3dnow_a): Remove.
22982         (x86_accumulate_outgoing_args): Make static.
22983         (x86_arch_always_fancy_math_387): Make static.
22984         (ix86_tune_mask, ix86_arch_mask): Move ...
22985         (override_options): ... to local variables here.  Apply the
22986         appropriate mask to each element of ix86_arch_features and
22987         ix86_tune_features.  Adjust TARGET_CMOVE and TARGET_USE_SAHF
22988         as were done in the old macros.
22989         (standard_80387_constant_p): Use TARGET_EXT_80387_CONSTANTS.
22990         * config/i386/i386.h (x86_use_leave, x86_push_memory,
22991         x86_zero_extend_with_and, x86_use_bit_test, x86_cmove, x86_deep_branch,
22992         x86_branch_hints, x86_unroll_strlen, x86_double_with_add,
22993         x86_partial_reg_stall, x86_movx, x86_use_himode_fiop,
22994         x86_use_simode_fiop, x86_use_mov0, x86_use_cltd, x86_use_xchgb,
22995         x86_read_modify_write, x86_read_modify, x86_split_long_moves,
22996         x86_promote_QImode, x86_single_stringop, x86_fast_prefix,
22997         x86_himode_math, x86_qimode_math, x86_promote_qi_regs,
22998         x86_promote_hi_regs, x86_integer_DFmode_moves, x86_add_esp_4,
22999         x86_add_esp_8, x86_sub_esp_4, x86_sub_esp_8,
23000         x86_partial_reg_dependency, x86_memory_mismatch_stall,
23001         x86_accumulate_outgoing_args, x86_prologue_using_move,
23002         x86_epilogue_using_move, x86_decompose_lea,
23003         x86_arch_always_fancy_math_387, x86_shift1,
23004         x86_sse_partial_reg_dependency, x86_sse_split_regs,
23005         x86_sse_unaligned_move_optimal, x86_sse_typeless_stores,
23006         x86_sse_load0_by_pxor, x86_use_ffreep, x86_inter_unit_moves,
23007         x86_schedule, x86_use_bt, x86_cmpxchg, x86_cmpxchg8b, x86_xadd,
23008         x86_use_incdec, x86_pad_returns, x86_bswap,
23009         x86_partial_flag_reg_stall): Remove.
23010         (enum ix86_tune_indices): New.
23011         (ix86_tune_features): New.
23012         (TARGET_USE_LEAVE, TARGET_PUSH_MEMORY, TARGET_ZERO_EXTEND_WITH_AND,
23013         TARGET_USE_BIT_TEST, TARGET_UNROLL_STRLEN,
23014         TARGET_DEEP_BRANCH_PREDICTION, TARGET_BRANCH_PREDICTION_HINTS,
23015         TARGET_DOUBLE_WITH_ADD, TARGET_USE_SAHF, TARGET_MOVX,
23016         TARGET_PARTIAL_REG_STALL, TARGET_PARTIAL_FLAG_REG_STALL,
23017         TARGET_USE_HIMODE_FIOP, TARGET_USE_SIMODE_FIOP, TARGET_USE_MOV0,
23018         TARGET_USE_CLTD, TARGET_USE_XCHGB, TARGET_SPLIT_LONG_MOVES,
23019         TARGET_READ_MODIFY_WRITE, TARGET_READ_MODIFY, TARGET_PROMOTE_QImode,
23020         TARGET_FAST_PREFIX, TARGET_SINGLE_STRINGOP, TARGET_QIMODE_MATH,
23021         TARGET_HIMODE_MATH, TARGET_PROMOTE_QI_REGS, TARGET_PROMOTE_HI_REGS,
23022         TARGET_ADD_ESP_4, TARGET_ADD_ESP_8, TARGET_SUB_ESP_4,
23023         TARGET_SUB_ESP_8, TARGET_INTEGER_DFMODE_MOVES,
23024         TARGET_PARTIAL_REG_DEPENDENCY, TARGET_SSE_PARTIAL_REG_DEPENDENCY,
23025         TARGET_SSE_UNALIGNED_MOVE_OPTIMAL, TARGET_SSE_SPLIT_REGS,
23026         TARGET_SSE_TYPELESS_STORES, TARGET_SSE_LOAD0_BY_PXOR,
23027         TARGET_MEMORY_MISMATCH_STALL, TARGET_PROLOGUE_USING_MOVE,
23028         TARGET_EPILOGUE_USING_MOVE, TARGET_SHIFT1, TARGET_USE_FFREEP,
23029         TARGET_INTER_UNIT_MOVES, TARGET_FOUR_JUMP_LIMIT, TARGET_SCHEDULE,
23030         TARGET_USE_BT, TARGET_USE_INCDEC, TARGET_PAD_RETURNS,
23031         TARGET_EXT_80387_CONSTANTS): Use it.
23032         (enum ix86_arch_indices): New.
23033         (ix86_arch_features): New.
23034         (TARGET_CMOVE, TARGET_CMPXCHG, TARGET_CMPXCHG8B, TARGET_XADD,
23035         TARGET_BSWAP): Use it.
23036         (ix86_tune_mask, ix86_arch_mask): Remove.
23037
23038 2007-03-06  Joseph Myers  <joseph@codesourcery.com>
23039
23040         PR bootstrap/31020
23041         * configure.ac (CROSS_SYSTEM_HEADER_DIR, build_system_header_dir):
23042         Define using $${sysroot_headers_suffix}.
23043         * configure: Regenerate.
23044         * cppdefault.c (cpp_include_defaults): Make FIXED_INCLUDE_DIR a
23045         multilib-suffixed directory if SYSROOT_HEADERS_SUFFIX_SPEC
23046         defined.
23047         * doc/invoke.texi (-print-sysroot-headers-suffix): Document.
23048         * gcc.c (print_sysroot_headers_suffix): New.
23049         (option_map): Include --print-sysroot-headers-suffix.
23050         (display_help): Mention -print-sysroot-headers-suffix.
23051         (process_command): Handle -print-sysroot-headers-suffix.
23052         (do_spec_1): Append multilib directory to include-fixed path if
23053         sysroot suffixes in use.
23054         (main): Handle -print-sysroot-headers-suffix.
23055         * Makefile.in (start.encap): Don't depend on xlimits.h
23056         (xlimits.h): Remove.
23057         (stmp-int-hdrs): Don't depend on xlimits.h.  Inline generation of
23058         limits.h for each multilib in fixinc_list.
23059         (fixinc_list, s-fixinc_list): New.
23060         (stmp-fixinc): Depend on fixinc_list.  If not copying headers,
23061         generate them for each multilib in fixinc_list.
23062         (stmp-fixproto): Use include-fixed.  Run fixproto for each
23063         multilib in fixinc_list.
23064         (mostlyclean): Don't remove xlimits.h.
23065         (clean): Remove include-fixed.
23066         (real-install-headers-tar, real-install-headers-cpio,
23067         real-install-headers-cp): Don't copy include, only include-fixed.
23068         (install-mkheaders): Depend on fixinc_list.  Don't depend on
23069         xlimits.h.  Save limits.h files for each multilib in fixinc_list.
23070         Always save mkinstalldirs.  Preserve ${sysroot_headers_suffix} in
23071         SYSTEM_HEADER_DIR setting in mkheaders.conf.
23072
23073 2007-03-06  Jan Hubicka  <jh@suse.cz>
23074
23075         * regstack.c (reg_to_stack): When in 64bit PIC mode, we still can load
23076         NANs easilly.
23077
23078 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
23079
23080         * configure.ac: Allow tm_file to contain build-directory files.
23081         * configure: Regenerate.
23082         * config.gcc (m68k-*-uclinux*): Add ./sysroot-suffix.h to tm_file.
23083         * config/m68k/t-uclinux (sysroot-suffix.h): New target.
23084         * config/m68k/print-sysroot-suffix.sh: New file.
23085
23086 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
23087
23088         * config/m68k/m68k.h (PIC_OFFSET_TABLE_REGNUM): Use the REGNO
23089         of pic_offset_table_rtx if reload_completed.
23090         (CONDITIONAL_REGISTER_USAGE): Use PIC_REG instead of
23091         PIC_OFFSET_TABLE_REGNUM.
23092         * config/m68k/m68k.c (TARGET_ASM_CAN_OUTPUT_MI_THUNK): Always
23093         return true.
23094         (m68k_save_reg): Use PIC_REG instead of PIC_OFFSET_TABLE_REGNO.
23095         (m68k_output_mi_thunk): Rewrite to use RTL.  Honor vcall_offset.
23096
23097 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
23098
23099         * config/m68k/m68k.c (m68k_save_reg): Save the PIC register in
23100         functions that call eh_return.
23101
23102 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
23103
23104         * config/m68k/m68k.c (m68k_save_reg): Save the PIC register in
23105         functions that need a constant pool.
23106
23107 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
23108
23109         PR target/28181
23110         * config/m68k/m68k-protos.h (m68k_secondary_reload_class): Declare.
23111         (m68k_preferred_reload_class): Likewise.
23112         * config/m68k/m68k.h (HARD_REGNO_MODE_OK): Remove duplicated comment.
23113         (SECONDARY_RELOAD_CLASS): Define.
23114         (PREFERRED_RELOAD_CLASS): Use m68k_preferred_reload_class.
23115         (LIMIT_RELOAD_CLASS): Delete.
23116         * config/m68k/m68k.c (m68k_regno_mode_ok): Don't prevent address
23117         registers from storing bytes.
23118         (m68k_secondary_reload_class): New function.
23119         (m68k_preferred_reload_class): Likewise.
23120
23121 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
23122
23123         * config/m68k/m68k.c (m68k_save_reg): Remove special case for
23124         leaf functions.
23125         (m68k_expand_prologue): Likewise.
23126
23127 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
23128
23129         * config/m68k/m68k-protos.h (output_sibcall): Declare.
23130         (mips_expand_epilogue): Add a bool parameter.
23131         (m68k_legitimize_sibcall_address): Declare.
23132         * config/m68k/m68k.c (TARGET_FUNCTION_OK_FOR_SIBCALL): Define.
23133         (m68k_expand_epilogue): Add a parameter to select between sibling
23134         and normal epilogues.  Only generate a return for the latter.
23135         (m68k_ok_for_sibcall_p): New function.
23136         (m68k_legitimize_sibcall_address, output_sibcall): New functions.
23137         * config/m68k/m68k.md (sibcall, *sibcall): New patterns.
23138         (sibcall_value, *sibcall_value): Likewise.
23139         (*call, *call_value): Require !SIBLING_CALL_P.
23140         (epilogue): Update call to m68k_expand_epilogue.
23141         (sibcall_epilogue): New pattern.
23142         * config/m68k/predicates.md (const_call_operand): Say that this
23143         predicate applies to sibling calls too.
23144         (sibcall_operand): New predicate.
23145
23146 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
23147
23148         * config/m68k/m68k.md (movsf_cf_soft): Provide the same non-mov3q
23149         alternatives as movsi_cf.
23150         (movsf_cf_hard): Add commentary.
23151
23152 2007-03-06  Kazu Hirata  <kazu@codesourcery.com>
23153             Richard Sandiford  <richard@codesourcery.com>
23154
23155         * config/m68k/m68k-protos.h (m68k_interrupt_function_p): Declare.
23156         (m68k_movem_pattern_p, m68k_output_movem): Likewise.
23157         (m68k_expand_prologue, m68k_expand_epilogue): Likewise.
23158         * config/m68k/m68k.h (EPILOGUE_USES): Define.  Treat all registers
23159         as being live on exit from an interrupt function.
23160         (PRINT_OPERAND_PUNCT_VALID_P): Return true for '?'.
23161         * config/m68k/m68k.c (MIN_MOVEM_REGS, MIN_FMOVEM_REGS): New macros.
23162         (m68k_frame): Remove reg_rev_mask and fpu_rev_mask.
23163         (TARGET_ASM_FUNCTION_PROLOGUE, TARGET_ASM_FUNCTION_EPILOGUE): Delete.
23164         (m68k_interrupt_function_p): Globalize.
23165         (m68k_compute_frame_layout): Remove reverse mask code.
23166         (m68k_emit_movem, m68k_set_frame_related): New functions.
23167         (m68k_output_function_prologue): Delete in favor of...
23168         (m68k_expand_prologue): ...this new function.
23169         (m68k_output_function_epilogue): Delete in favor of...
23170         (m68k_expand_epilogue): ...this new function.
23171         (m68k_split_offset, m68k_movem_pattern_p, m68k_output_movem): New
23172         functions.
23173         (print_operand): Handle %?.
23174         * config/m68k/m68k.md (UNSPEC_SIN, UNSPEC_COS): Remove excess space.
23175         (UNSPEC_GOT, A1_REG, PIC_REG, FP0_REG): New constants.
23176         (prologue, epilogue): New patterns.
23177         (return): Turn into a define_expand.
23178         (*return): New pattern, derived from old "return" pattern.  Use rte
23179         rather than rts for interrupt functions.  Only use rtd if the pop
23180         count is nonzero.
23181         (*m68k_store_multiple, *m68k_store_multiple_automod): New patterns.
23182         (*m68k_load_multiple, *m68k_load_multiple_automod): Likewise.
23183         (link, *link, unlink, *unlink, load_got): Likewise.
23184
23185 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
23186
23187         PR target/23482
23188         PR target/17114
23189         * config/m68k/m68k-protos.h (m68k_legitimate_base_reg_p): Declare.
23190         (m68k_legitimate_index_reg_p, m68k_legitimate_address_p): Likewise.
23191         (m68k_matches_q_p, m68k_matches_u_p): Likewise.
23192         * config/m68k/m68k.h (EXTRA_CONSTRAINT): Use m68k_matches_q_p
23193         and m68k_matches_u_p.
23194         (PCREL_GENERAL_OPERAND_OK, LEGITIMATE_BASE_REG_P): Delete.
23195         (INDIRECTABLE_1_ADDRESS_P, GO_IF_NONINDEXED_ADDRESS): Delete.
23196         (GO_IF_INDEXABLE_BASE, GO_IF_INDEXING, GO_IF_INDEXED_ADDRESS): Delete.
23197         (LEGITIMATE_INDEX_REG_P, LEGITIMATE_INDEX_P): Delete.
23198         (GO_IF_COLDFIRE_FPU_LEGITIMATE_ADDRESS): Delete.
23199         (REG_STRICT_P): New macro.
23200         (LEGITIMATE_PIC_OPERAND_P): Use REG_STRICT_P rather than
23201         PCREL_GENERAL_OPERAND_OK.
23202         (REG_OK_FOR_BASE_P): Merge definitions.  Use REG_STRICT_P and
23203         m68k_legitimate_base_reg_p.
23204         (REG_MODE_OK_FOR_INDEX_P): Likewise m68k_legitimate_index_reg_p.
23205         (GO_IF_LEGITIMATE_ADDRESS): Likewise m68k_legitimate_address_p.
23206         (PIC_CASE_VECTOR_ADDRESS): Update comment.
23207         * config/m68k/m68k.c (m68k_address): New structure.
23208         (m68k_legitimate_base_reg_p, m68k_legitimate_index_reg_p)
23209         (m68k_decompose_index, m68k_legitimate_constant_address_p)
23210         (m68k_jump_table_ref_p, m68k_decompose_address)
23211         (m68k_legitimate_address_p, m68k_legitimate_mem_p, m68k_matches_q_p)
23212         (m68k_matches_u_p): New functions.
23213         (print_operand_address): Rewrite to use m68k_decompose_index.
23214
23215 2007-03-05  David Taylor  <dtaylor@emc.com>
23216
23217         * gcc.c: Correct copyright date in --version output.
23218
23219 2007-03-05  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
23220
23221         * pa.md: In unamed move patterns, disparge copies between general
23222         and floating point registers using '?' modifier.  Don't include 'f'
23223         constraint for register preferences in DImode, SImode, HImode and
23224         QImode patterns.  Likewise for 'r' in DFmode and SFmode patterns.
23225         Remove constraints for copies between general and floating registers
23226         in soft-float DFmode pattern.
23227         (movdf): Fail if operand1 is a CONST_DOUBLE and operand0 is a hard
23228         floating register.
23229         (movsf): Likewise.
23230
23231 2007-03-05  Mike Stump  <mrs@apple.com>
23232
23233         * c-common.c (targetcm): Add.
23234         * c-opts.c (c_common_handle_option): Handle language specific
23235         target options.
23236         * opts.c (handle_option): Verify language for target options, if
23237         any are given.
23238         * opth-gen.awk: Add CL_LANG_ALL.
23239         * target-def.h (TARGET_HANDLE_C_OPTION): Add.
23240         (TARGETCM_INITIALIZER): Add.
23241         * target.h (struct gcc_targetcm): Add.
23242         (targetcm): Add.
23243         * targhooks.c (default_handle_c_option): Add.
23244         * targhooks.h (default_handle_c_option): Add.
23245         * doc/tm.texi (TARGET_HANDLE_C_OPTION): Add.
23246
23247         * config/darwin.opt (iframework): Add.
23248         * config/darwin.h (TARGET_HAS_TARGETCM): Add.
23249         * config/darwin-c.c (handle_c_option): Add.
23250         (TARGET_HANDLE_C_OPTION): Add.
23251         (targetcm): Add.
23252         * doc/invoke.texi (Darwin Options): Add -iframework.
23253
23254 2007-03-05  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
23255
23256         * convert.c (convert_to_integer): Fix nearbyint/rint -> *lrint
23257         conversion.
23258
23259 2007-03-05  Ian Lance Taylor  <iant@google.com>
23260
23261         * c.opt (fgnu89-inline): New option.
23262         * c-opts.c (c_common_post_options): Set default value for
23263         flag_gnu89_inline.
23264         * c-decl.c (WANT_C99_INLINE_SEMANTICS): Remove.
23265         (pop_scope): Check flag_gnu89_inline rather than flag_isoc99 for
23266         inline functions.
23267         (diagnose_mismatched_decls, merge_decls, start_decl): Likewise.
23268         (grokdeclarator, start_function): Likewise.
23269         * c-cppbuiltin.c (c_cpp_builtins): Define either
23270         __GNUC_GNU_INLINE__ or __GNUC_STDC_INLINE__.
23271         * doc/invoke.texi (Option Summary): Mention -fgnu89-inline.
23272         (C Dialect Options): Document -fgnu89-inline.
23273         * doc/extend.texi (Function Attributes): Explain what the
23274         gnu_inline attribute does.
23275         * doc/cpp.texi (Common Predefined Macros): Document
23276         __GNUC_GNU_INLINE__ and __GNUC_STDC_INLINE__.
23277
23278 2007-03-05  Ian Lance Taylor  <iant@google.com>
23279
23280         PR tree-optimization/31034
23281         * tree-vrp.c (extract_range_from_assert): Don't try to handle a
23282         half-range if the other side is an overflow infinity.
23283
23284 2007-03-05  Bernd Schmidt  <bernd.schmidt@analog.com>
23285
23286         * config.gcc (bfin*-uclinux*): Use t-bfin-uclinux.
23287         (bfin*-linux-uclibc*): New configuration.
23288         * config/linux.h (LINK_GCC_C_SEQUENCE_SPEC): Undefined before
23289         defining.
23290         * config/bfin/linux.h: New file.
23291         * config/bfin/libgcc-bfin.ver: New file.
23292         * config/bfin/t-bfin-uclinux: New file.
23293         * config/bfin/t-bfin-linux: New file.
23294         * config/bfin/uclinux.h (LINUX_TARGET_OS_CPP_BUILTINS): New macro.
23295         (TARGET_OS_CPP_BUILTINS): New macro.
23296
23297 2007-03-05  Richard Guenther  <rguenther@suse.de>
23298
23299         * fold-const.c (fold_binary): Remove duplicate folding
23300         of comparison of non-null ADDR_EXPR against null.
23301
23302 2007-03-05  Richard Guenther  <rguenther@suse.de>
23303             Dorit Nuzman  <dorit@il.ibm.com>
23304
23305         PR tree-optimization/26420
23306         * tree-vectorizer.c (vectorize_loops): Bail out early if there
23307         are no loops in the function.  Only print the number of
23308         vectorized loops if it is greater than zero or we are supposed
23309         to print information about unvectorized loops.
23310
23311 2007-03-05  Revital Eres  <eres@il.ibm.com>
23312
23313         * gcc.dg/var-expand1.c: New test.
23314         * loop-unroll.c (analyze_insn_to_expand_var): Add dump info
23315         when an accumulator is expanded.
23316
23317 2007-03-04  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
23318
23319         PR other/30465
23320         * c-common.c (convert_and_check): Don't give warnings for
23321         conversion if 'expr' already overflowed.
23322
23323 2007-03-04  Roger Sayle  <roger@eyesopen.com>
23324
23325         PR middle-end/30744
23326         * fold-const.c (fold_comparison): Enforce type consistency when
23327         transforming ~X op ~Y to Y op X, and ~X op C to X op' ~C.
23328
23329 2007-03-04  Zdenek Dvorak  <dvorakz@suse.cz>
23330
23331         * tree-ssa-address.c (create_mem_ref): Do not put an expression
23332         containing a cast to the base of TARGET_MEM_REF.
23333
23334 2007-03-04  Martin Michlmayr  <tbm@cyrius.com>
23335
23336         * tree.c (tree_contains_struct_check_failed): Remove spurious
23337         whitespace from error message.
23338
23339 2007-03-04 Andrew Pinski <andrew_pinski@playstation.sony.com>
23340
23341         PR target/30406
23342         * config/rs6000/rs6000.c (rs6000_function_value): Look at bit size
23343         instead of precision.
23344
23345 2007-03-04  Roman Zippel <zippel@linux-m68k.org>
23346             Nathan Sidwell  <nathan@codesourcery.com>
23347
23348         * emit-rtl.c (find_auto_inc): New.
23349         (try_split): recreate REG_INC notes,
23350         Use regular for loops rather than whiles.
23351
23352 2007-03-03  Andreas Schwab  <schwab@suse.de>
23353
23354         * configure.ac (HAVE_AS_REL16): Move test back to correct place.
23355         * configure: Regenerate.
23356
23357 2007-03-03  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
23358
23359         * builtins.def (ATTR_MATHFN_FPROUNDING): Rely on
23360         flag_rounding_math, not flag_unsafe_math_optimizations.
23361
23362         * c-pretty-print.c (pp_c_direct_abstract_declarator): Use
23363         fold_build2.
23364         * config/alpha/alpha.c (alpha_fold_builtin_zapnot,
23365         alpha_fold_vector_minmax): Likewise.
23366         * config/i386/i386.c (ix86_gimplify_va_arg): Likewise.
23367         * config/sparc/sparc.c (sparc_gimplify_va_arg): Likewise.
23368
23369 2007-03-02  Eric Botcazou  <ebotcazou@adacore.com>
23370
23371         * tree-sra.c (sra_walk_fns) <ldst>: Document new restriction.
23372         (sra_walk_modify_expr) <rhs_elt>: Treat the reference as a use
23373         if the lhs has side-effects.
23374         <lhs_elt>: Treat the reference as a use if the rhs has side-effects.
23375
23376 2007-03-02  Uros Bizjak  <ubizjak@gmail.com>
23377
23378         * config/i386/i386.h (TUNEMASK): Remove define.
23379         (ARCHMASK): Remove define.
23380         (TARGET_*): Use ix86_tune_mask variable instead of TUNEMASK.
23381          Use ix86_arch_mask variable instead of ARCHMASK.
23382         * config/i386/i386.c (override_options): Ditto.
23383         (standard_80387_constant_p): Ditto.
23384
23385 2007-03-02  Ian Lance Taylor  <iant@google.com>
23386
23387         Used signed infinities in VRP.
23388         * tree-vrp.c (uses_overflow_infinity): New static function.
23389         (supports_overflow_infinity): New static function.
23390         (make_overflow_infinity): New static function.
23391         (negative_overflow_infinity): New static function.
23392         (positive_overflow_infinity): New static function.
23393         (is_negative_overflow_infinity): New static function.
23394         (is_positive_overflow_infinity): New static function.
23395         (is_overflow_infinity): New static function.
23396         (overflow_infinity_range_p): New static function.
23397         (compare_values_warnv): New function split out of compare_values.
23398         (compare_value): Call it.
23399         (set_value_range_to_nonnegative): Add overflow_infinity
23400         parameter.  Change caller.
23401         (vrp_expr_computes_nonnegative): Add strict_overflow_p parameter.
23402         Change callers.
23403         (vrp_expr_computes_nonzero): Likewise.
23404         (compare_ranges, compare_range_with_value): Likewise.
23405         (compare_name_with_value, compare_names): Likewise.
23406         (vrp_evaluate_conditional): Likewise.
23407         (set_value_range): Handle infinity
23408         (vrp_operand_equal_p, operand_less_p): Likewise.
23409         (extract_range_from_assert): Likewise.
23410         (vrp_int_const_binop): Likewise.
23411         (extract_range_from_binary_expr): Likewise.
23412         (extract_range_from_unary_expr): Likewise.
23413         (extract_range_from_comparison): Likewise.
23414         (extract_range_from_expr): Likewise.
23415         (dump_value_range): Likewise.
23416         (vrp_visit_cond_stmt, vrp_visit_phi_node): Likewise.
23417         (test_for_singularity): Likewise.
23418         (vrp_int_const_binop): Remove inline qualifier.
23419         (adjust_range_with_scev): Add comment.
23420         * tree-flow.h (vrp_evaluate_conditional): Update declaration.
23421
23422 2007-03-02  Diego Novillo  <dnovillo@redhat.com>
23423
23424         * tree-ssa-structalias.c (could_have_pointers): Tidy.
23425         (get_constraint_for): Likewise.
23426         (do_structure_copy): Likewise.
23427         (find_func_aliases): Fix references to MODIFY_EXPR.
23428         (intra_create_variable_infos): Tidy.
23429         * tree-ssa-operands.c (add_virtual_operand): Add argument
23430         IS_CALL_SITE.
23431         When adding members of alias sets, if IS_CALL_SITE is true and
23432         the symbol is not call-clobbered, skip it.
23433         Adjust all callers.
23434
23435 2007-03-02  Eric Botcazou  <ebotcazou@adacore.com>
23436
23437         * config/alpha/alpha.c (alpha_gp_save_rtx): Insert the insns at the
23438         entry by means of emit_insn_at_entry.
23439
23440 2007-03-02  Richard Henderson  <rth@redhat.com>
23441
23442         * expr.h (promoted_input_arg): Remove decl.
23443         * function.c (promoted_input_arg): Merge into ...
23444         * combine.c (setup_incoming_promotions): ... only caller.
23445         Rearrange to avoid double loop.
23446
23447 2007-03-02  Ben Elliston  <bje@au.ibm.com>
23448             Peter Bergner  <bergner@vnet.ibm.com>
23449             Janis Johnson  <janis187@us.ibm.com>
23450
23451         * config/rs6000/dfp.md: New file.
23452         * config/rs6000/rs6000.md: Include dfp.md.
23453         (add<mode>3_internal1): Disable for DECIMAL_FLOAT_MODE_P operands.
23454         * config/rs6000/rs6000.c (rs6000_hard_regno_mode_ok): Handle DDmode
23455         and TDmode decimal float modes in FP registers.
23456         (num_insns_constant): Likewise.
23457         (rs6000_legitimate_offset_address_p): Likewise.
23458         (rs6000_legitimize_address): Likewise.
23459         (rs6000_legitimize_reload_address): Likewise.
23460         (rs6000_legitimate_address): Likewise.
23461         (rs6000_emit_move): Likewise.
23462         (function_arg_boundary): Likewise.
23463         (function_arg_advance): Likewise.
23464         (rs6000_darwin64_record_arg_recurse): Likewise.
23465         (function_arg): Likewise.
23466         (rs6000_gimplify_va_arg): Likewise.
23467         (rs6000_split_multireg_move): Likewise.
23468         (rs6000_output_function_epilogue): Likewise.
23469         (rs6000_output_function_epilogue): Likewise.
23470         (rs6000_register_move_cost): Likewise.
23471         (rs6000_function_value): Likewise.
23472         (rs6000_libcall_value): Likewise.
23473
23474 2007-03-02  Richard Sandiford  <richard@codesourcery.com>
23475
23476         * config/t-vxworks (LIMITS_H_TEST): Define to true for VxWorks.
23477
23478 2007-03-02  Richard Sandiford  <richard@codesourcery.com>
23479
23480         * config/t-vxworks (LIBGCC2_INCLUDES): Pass -nostdinc.
23481         Use $MULTIDIR to choose between the kernel and RTP headers,
23482         and use $WIND_BASE and $WIND_USR to locate them.
23483
23484 2007-03-02  Uros Bizjak  <ubizjak@gmail.com>
23485
23486         * config/i386/i386.c (override_options): Put initialization of
23487         ix86_tune_mask and ix86_arch_mask to the correct place.
23488
23489 2007-03-02  Uros Bizjak  <ubizjak@gmail.com>
23490             Michael Meissner  <michael.meissner@amd.com>
23491
23492         PR target/31019
23493         * config/i386/i386.h (TUNEMASK): Redefine to use ix86_tune_mask.
23494         (ARCHMASK): Define.
23495         (TARGET_CMOVE): Use ARCHMASK.
23496         (TARGET_CMPXCHG): Ditto.
23497         (TARGET_CMPXCHG8B): Ditto.
23498         (TARGET_XADD): Ditto.
23499         (TARGET_BSWAP): Ditto.
23500         * config/i386/i386.c (ix86_tune_mask): New global variable.
23501         (ix86_arch_mask): Ditto.
23502         (override_options): Initialize ix86_tune_mask and
23503         ix86_arch_mask. Use ARCHMASK to clear MASK_NO_FANCY_MATH_387 in
23504         target_flags.
23505
23506 2007-03-02  Ben Elliston  <bje@au.ibm.com>
23507
23508         PR 30992
23509         * config/dfp-bit.c (DFP_TO_INT): Initialise qval with "1.".
23510
23511 2007-03-02  Joseph Myers  <joseph@codesourcery.com>
23512
23513         * target.h (init_dwarf_reg_sizes_extra): New target hook.
23514         * target-def.h (TARGET_INIT_DWARF_REG_SIZES_EXTRA): New default.
23515         * doc/tm.texi (TARGET_INIT_DWARF_REG_SIZES_EXTRA): Document.
23516         * dwarf2out.c (expand_builtin_init_dwarf_reg_sizes): Call this
23517         hook.
23518         * config/rs6000/rs6000.c (TARGET_INIT_DWARF_REG_SIZES_EXTRA,
23519         rs6000_init_dwarf_reg_sizes_extra): New.
23520         * config/rs6000/linux-unwind.h (ppc_fallback_frame_state): Support
23521         SPE register high parts.
23522
23523 2007-03-01  Brooks Moses  <brooks.moses@codesourcery.com>
23524
23525         * Makefile.in: Add install-pdf target as
23526         copied from automake v1.10 rules.
23527         * configure.ac: Add install-pdf to target list.
23528         * configure: Regenerate.
23529
23530 2007-03-01  Paul Brook  <paul@codesourcery.com>
23531
23532         * config/arm/arm.c (arm_legitimate_index_p): Limit iWMMXt addressing
23533         modes to LDRD for DImode.
23534         (output_move_double): Fixup out of range ldrd/strd.
23535         (vfp_secondary_reload_class): Rename...
23536         (coproc_secondary_reload_class): ... to this.  Add wb argument.
23537         * config/arm/arm.h (SECONDARY_OUTPUT_RELOAD_CLASS): Use
23538         coproc_secondary_reload_class for CLASS_IWMMXT.
23539         (SECONDARY_INPUT_RELOAD_CLASS): Ditto.
23540         * arm-protos.h (coproc_secondary_reload_class): Update prototype.
23541
23542 2007-03-01  Zdenek Dvorak  <dvorakz@suse.cz>
23543
23544         * tree-ssa-loop-prefetch.c (determine_unroll_factor): Bound the
23545         unroll factor by the estimated number of iterations.
23546         (loop_prefetch_arrays): Do not prefetch in loops that iterate less
23547         than prefetch latency.
23548
23549         * config/i386/driver-i386.c (describe_cache, detect_caches_amd,
23550         decode_caches_intel, detect_caches_intel): New functions.
23551         (host_detect_local_cpu): Use detect_caches_amd and
23552         detect_caches_intel.
23553
23554 2007-03-01  Richard Henderson  <rth@redhat.com>
23555
23556         * expr.c (emit_move_complex_push): Export.
23557         (emit_move_complex_parts): Split out from ...
23558         (emit_move_complex): ... here.
23559         * expr.h (emit_move_complex_push, emit_move_complex_parts): Declare.
23560         * config/i386/i386.md (movcdi): New.
23561
23562 2007-03-01  Uros Bizjak  <ubizjak@gmail.com>
23563
23564         * config/i386/i386.c (ix86_modes_tieable_p): Fix typo, use also
23565         size of mode1 to check for tieable modes in MMX case.
23566
23567 2007-03-01  Richard Sandiford  <richard@codesourcery.com>
23568
23569         * Makefile.in (rtlanal.o): Depend on tree.h.
23570         * rtl.h (offset_within_section_p, split_const): Declare.
23571         * rtlanal.c: Include tree.h.
23572         (offset_within_block_p): New function, taken from
23573         mips_offset_within_object_p.
23574         (split_const): New function, taken from mips_split_const.
23575         * config/m68k/m68k-protos.h (m68k_illegitimate_symbolic_constant_p):
23576         Declare.
23577         * config/m68k/m68k.h (M68K_OFFSETS_MUST_BE_WITHIN_SECTIONS_P): Define.
23578         (CONSTANT_ADDRESS_P): Only accept legitimate constants.
23579         (LEGITIMATE_CONSTANT_P): Check m68k_illegitimate_symbolic_constant_p.
23580         * config/m68k/m68k.c (TARGET_CANNOT_FORCE_CONST_MEM): Define.
23581         (m68k_illegitimate_symbolic_constant_p): New function.
23582         * config/m68k/m68k.md (movsi): Remove misleading predicates.
23583         If M68K_OFFSETS_MUST_BE_WITHIN_SECTIONS_P and the source is a
23584         symbolic constant that might be outside the symbol's section,
23585         move the symbol first and then add the offset.
23586         * config/m68k/uclinux.h (M68K_OFFSETS_MUST_BE_WITHIN_SECTIONS_P):
23587         Override.
23588         * config/mips/mips.c (mips_split_const): Delete.
23589         (mips_offset_within_object_p): Delete.
23590         (mips_symbolic_constant_p): Use offset_within_section_p and
23591         split_const instead of mips_offset_within_object_p and
23592         mips_split_const.
23593         (mips_cannot_force_const_mem, mips_const_insns, mips_unspec_address)
23594         (mips_legitimize_const_move, print_operand_reloc)
23595         (mips_dangerous_for_la25_p): Use split_const instead of
23596         mips_split_const.
23597
23598 2007-02-28  Eric Christopher  <echristo@apple.com>
23599
23600         * Makefile.in (install-include-dir): Don't rm -rf include.
23601
23602 2007-02-28  Richard Guenther  <rguenther@suse.de>
23603
23604         PR middle-end/30364
23605         * fold-const.c (fold_binary): Do not associate expressions
23606         with more than one variable for integer types that do not wrap.
23607
23608 2007-02-28  Sandra Loosemore  <sandra@codesourcery.com>
23609
23610         * builtins.c (fold_builtin_call_list, fold_builtin_call_valist):
23611         Delete, and replace with...
23612         (fold_builtin_call_array): This.  Update callers to use it.
23613         * fold-const.c (fold_build_call_list): Delete, and replace with...
23614         (fold_build_call_array): This.
23615         (fold_build_call_list_initializer): Delete, and replace with...
23616         (fold_build_call_array_initializer): This.
23617         * tree.h: Update declarations to reflect above changes.
23618
23619         * c-typeck.c (build_function_call): Store converted arguments
23620         in a stack-allocated array instead of building a list.
23621         (convert_arguments): Store arguments in the array passed in as an
23622         argument, and return the actual number of arguments.
23623         * c-format.c: (check_function_format): Pass arguments in an
23624         array instead of a list.
23625         * c-common.c (check_function_nonnull): Likewise.
23626         (check_function_sentinel): Likewise.
23627         (check_function_arguments): Likewise.
23628         * c-common.h: Update declarations to reflect above changes.
23629
23630 2007-02-28  Jan Hubicka  <jh@suse.cz>
23631
23632         * predict.def (PRED_TREE_EARLY_RETURN, PRED_CONST_RETURN,
23633         PRED_NEGATIVE_RETURN): Update outcomes.
23634
23635 2007-02-28  Bernd Schmidt  <bernd.schmidt@analog.com>
23636
23637         * calls.c (emit_library_call_value_1): Handle partial registers
23638         correctly when building up CALL_INSN_FUNCTION_USAGE.
23639
23640 2007-02-27  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
23641
23642         * pa/predicates.md (move_src_operand): Allow zero for mode.
23643         * pa/pa.md: Fix constraints for zero CONST_DOUBLE in 64-bit DFmode
23644         move pattern.
23645
23646 2007-02-27  Uros Bizjak  <ubizjak@gmail.com>
23647
23648         PR target/30970
23649         * config/i386/sse.md (*mov<mode>_internal, *movv4sf_internal,
23650         *movv2df_internal): Enable pattern only for valid operand
23651         combinations.
23652         * config/i386/i386.c (ix86_modes_tieable_p): For SSE registers,
23653         tie only 128bit modes. For MMX registers, tie only 64bit modes.
23654
23655 2007-02-27  Mike Stump  <mrs@apple.com>
23656
23657         * config/darwin-crt3.c: Avoid compilation when compiling for a
23658         kext multilib.
23659
23660 2007-02-27  Joseph Myers  <joseph@codesourcery.com>
23661
23662         * Makefile.in (PREPROCESSOR_DEFINES, test-protoize-simple): Define
23663         FIXED_INCLUDE_DIR.
23664         (stmp-int-hdrs, stmp-fixinc, install-headers): Use include-fixed
23665         for fixed headers and limits.h.
23666         (install-include-dir, install-headers-tar, install-headers-cpio,
23667         install-headers-cp, real-install-headers-tar,
23668         real-install-headers-cpio, real-install-headers-cp): Handle
23669         include-fixed as well as include.
23670         (install-mkheaders): Don't install files that go only in include
23671         not include-fixed.
23672         * cppdefault.c (cpp_include_defaults): Separate FIXED_INCLUDE_DIR
23673         from GCC_INCLUDE_DIR.
23674         * gcc.c (process_command): Remove special -BstageN/ handling.
23675         (do_spec_1): Add include-fixed directories.
23676
23677 2007-02-27  Bernd Schmidt  <bernd.schmidt@analog.com>
23678
23679         * config/bfin/t-bfin-elf (LIB1ASMFUNCS): Add _umulsi3_highpart and
23680         _smulsi3_highpart.
23681         * config/bfin/lib1funcs.asm (___umulsi3_highpart, ___smulsi3_highpart):
23682         New functions.
23683         * config/bfin/bfin.md (smulsi3_highpart, umulsi3_highpart): New
23684         patterns.
23685
23686 2007-02-27  Mark Mitchell  <mark@codesourcery.com>
23687
23688         * c-common.c (get_priority): Add check for
23689         SUPPORTS_INIT_PRIORITY.
23690
23691 2007-02-27  Bernd Schmidt  <bernd.schmidt@analog.com>
23692
23693         * config/bfin/bfin.md (doloop_end): FAIL if counter reg isn't SImode.
23694
23695         * config/bfin/bfin.c: Include "cfglayout.h".
23696         (MAX_LSETUP_DISTANCE): New macro.
23697         (struct loop_info): New members incoming, incoming_src and
23698         incoming_dest.  Delete member predecessor.
23699         (length_for_loop): New function.
23700         (bfin_optimize_loop): Handle more different loop structures.
23701         (bfin_discover_loop): Rework detection of predecessor blocks by
23702         examining incoming edges.
23703         (bfin_discover_loops, bfin_free_loops): New functions, broken out of
23704         bfin_reorg_loops.
23705         (bfin_reorder_loops): New function.
23706         (bfin_reorg_loops): Use these three new functions.
23707
23708         * config/bfin/bfin.h (enum reg_class, REG_CLASS_NAMES,
23709         REG_CLASS_CONTENTS): Add D0REGS through D7REGS.
23710         (CONSTRAINT_LEN): Add entry for 'q'.
23711         (REG_CLASS_FROM_CONSTRAINT): Renamed from REG_CLASS_FROM_LETTER.
23712         Add 'q' constraints.
23713         (REGNO_REG_CLASS): For R0 through R7, return corresponding regclass.
23714         (CLASS_LIKELY_SPILLED_P): True for R0, R1 and R2.
23715
23716         * config/bfin/bfin.md (add_with_carry): New pattern.
23717         (s_or_u, su_optab, su_modifier): New code macros/attrs.
23718         (<su_optab>hisi_ll, <su_optab>hisi_lh, <su_optab>hisi_hl,
23719         <su_optab>hisi_hh): Renamed from mulhisi_xx patterns; macroized to
23720         support unsigned multiplies too.  Removed incorrect commutativity from
23721         operand 1 constraint where appropriate.
23722         (usmulhisi_ull, usmulhisi_ulh, usmulhisi_uhl, usmulhisi_uhh): New
23723         patterns.
23724         (<su_optab>hisi_ll_lh, <su_optab>hisi_ll_hl, <su_optab>hisi_ll_hh,
23725         <su_optab>hisi_lh_hl, <su_optab>hisi_lh_hh, <su_optab>hisi_hl_hh):
23726         New patterns.
23727         (usmulhisi_ll_lul, usmulhisi_ll_luh, usmulhisi_ll_hul,
23728         usmulhisi_ll_huh, usmulhisi_lh_lul, usmulhisi_lh_luh, usmulhisi_lh_hul,
23729         usmulhisi_lh_huh, usmulhisi_hl_lul, usmulhisi_hl_luh, usmulhisi_hl_hul,
23730         usmulhisi_hl_huh, usmulhisi_hh_lul, usmulhisi_hh_luh, usmulhisi_hh_hul,
23731         usmulhisi_hh_huh): New patterns.
23732
23733         * config/bfin/bfin.md (ssashiftv2hi3, ssashifthi3, lshiftv2hi3,
23734         lshifthi3): Fix output template to use half reg for operand 2.
23735
23736         * config/bfin/bfin.c (bfin_output_mi_thunk): Use R3 as scratch reg
23737         instead of R2.
23738
23739         * config/bfin/bfin.md (rotl16, rotlsi3, rotrsi3): New patterns.
23740
23741 2007-02-27  Andreas Schwab  <schwab@suse.de>
23742
23743         * Makefile.in (TEXI_GCCINSTALL_FILES): Add gcc-common.texi.
23744
23745 2007-02-27  Jan Hubicka  <jh@suse.cz>
23746
23747         * predict.c (last_basic_block_p): Remove.
23748         (tree_estimate_probability): Update return heuristic for commonized
23749         return blocks.
23750
23751 2007-02-26  Brooks Moses  <brooks.moses@codesourcery.com>
23752
23753         * Makefile.in (TEXI_GCCINSTALL_FILES): Add gcc-vers.texi dependency.
23754
23755 2007-02-26  Brooks Moses  <brooks.moses@codesourcery.com>
23756
23757         * doc/include/gcc-common.texi (versionsubtitle): New macro.
23758         * doc/cpp.texi: Standardize title page.
23759         * doc/cppinternals.texi: Likewise.
23760         * doc/gcc.texi: Standardize title page, remove version number
23761         from copyright page.
23762         * doc/gccint.texi: Likewise.
23763         * doc/install.texi: Standardize title page, add table of
23764         contents.
23765
23766 2007-02-26  Jan Hubicka  <jh@suse.cz>
23767
23768         * predict.def: Set outcomes according to more recent results.
23769         (PRED_LOOP_CONDITION, PRED_LOOP_PRECONDITIONING, PRED_LOOP_HEADER):
23770         Remove dead predictors.
23771         * predict.c (return_prediction): Fix pasto.
23772
23773 2007-02-27  Bernd Schmidt  <bernd.schmidt@analog.com>
23774
23775         * loop-iv.c (simplify_using_initial_values): Fix oversight in previous
23776         change; avoid a memory leak when returning early.
23777
23778 2007-02-26  Mark Mitchell  <mark@codesourcery.com>
23779
23780         * c-decl.c (static_ctors): Move to c-common.c.
23781         (static_dtors): Likewise.
23782         (finish_function): Use c_record_cdtor_fn.
23783         (build_cdtor): Move to c-common.c.
23784         (c_write_global_declarations): Use c_build_cdtor_fns.
23785         * c-common.h (static_ctors): Declare.
23786         (static_dtors): Likewise.
23787         (c_record_cdtor_fn): Likewise.
23788         (c_build_cdtor_fns): Likewise.
23789         * c-common.c (static_ctors): New variable.
23790         (static_dtors): Likewise.
23791         (c_record_cdtor_fn): New function.
23792         (build_cdtor): Move from c-decl.c
23793         (c_build_cdtor_fns): New function.
23794
23795         * output.h (assemble_addr_to_section): Declare.
23796         (get_cdtor_priority_section): Likewise.
23797         * varasm.c (assemble_addr_to_section): New function.
23798         (get_cdtor_priority_section): Likewise.
23799         (default_named_section_asm_out_destructor): Use them.
23800         (destor_dtor_section_asm_out_destructor): Likewise.
23801         (default_named_section_asm_out_constructor): Likewise.
23802         (default_ctor_section_asm_out_constructor): Likewise.
23803         * config.gcc (*-*-vxworks*): Include vxworks.o.
23804         * config/t-vxworks (vxworks.o): New target.
23805         * config/vxworks.h (ALWAYS_NUMBER_CTORS_SECTIONS): Remove.
23806         (TARGET_ASM_CONSTRUCTOR): Define.
23807         (TARGET_ASM_DESTRUCTOR): Likewise.
23808         (vxworks_asm_out_constructor): Declare.
23809         (vxworks_asm_out_destructor): Likewise.
23810
23811         * c-common.c (get_priority): Check that we have not just an
23812         INTEGER_CST, but an integer constant with integeral type.
23813
23814 2007-02-25  Uros Bizjak  <ubizjak@gmail.com>
23815
23816         PR tree-optimization/30938
23817         * tree-vect-transform.c (vectorizable_call): Fix off-by-one error:
23818         use &dt[nargs-1] instead of &dt[nargs] in the call to
23819         vect_is_simple_use().
23820
23821 2007-02-25  Ulrich Weigand  <uweigand@de.ibm.com>
23822
23823         * reload.c (find_reloads_address_1): Handle PLUS expressions resulting
23824         from register elimination as PRE_MODIFY / POST_MODIFY increments.
23825         Do not attempt to handle MEM inside auto-inc expressions.
23826         * reload1.c (eliminate_regs_1): Do not attempt to handle elimination
23827         of a register modified by an auto-inc expression.  However, do handle
23828         elimination of a register used as PRE_MODIFY / POST_MODIFY increment.
23829         (elimination_effects): Prohibit elimination of a register modified
23830         by an auto-inc expression.  Disable register elimination rules whose
23831         target register is modified by an auto-inc expression with variable
23832         increment.
23833
23834 2007-02-25  Zdenek Dvorak  <dvorakz@suse.cz>
23835
23836         * tree-ssa-loop-niter.c (compute_estimated_nb_iterations): Fix
23837         off-by-one error.
23838         (array_at_struct_end_p): New function.
23839         (idx_infer_loop_bounds): Use it.
23840         (estimate_numbers_of_iterations_loop): Export.
23841         * predict.c (predict_loops): Use estimated_loop_iterations_int.
23842         Do not use PRED_LOOP_EXIT on exits predicted by # of iterations.
23843         (tree_estimate_probability): Call record_loop_exits.
23844         * tree-data-ref.c (get_number_of_iters_for_loop): Replaced by ...
23845         (estimated_loop_iterations, estimated_loop_iterations_int,
23846         estimated_loop_iterations_tree): New functions.
23847         (analyze_siv_subscript_cst_affine,
23848         compute_overlap_steps_for_affine_1_2,
23849         analyze_subscript_affine_affine): Use estimated_loop_iterations_int.
23850         (analyze_miv_subscript): Use estimated_loop_iterations_tree.
23851         * predict.def (PRED_LOOP_ITERATIONS): Update comment.
23852         (PRED_LOOP_ITERATIONS_GUESSED): New.
23853         * cfgloop.c (record_loop_exits): Do nothing if there are no loops.
23854         * cfgloop.h (estimate_numbers_of_iterations_loop,
23855         estimated_loop_iterations_int): Declare.
23856
23857 2007-02-25  Mark Mitchell  <mark@codesourcery.com>
23858
23859         * doc/extend.texi: Document optional priority argument to
23860         constructors and destructors.
23861         * tree.c (init_priority_for_decl): Adjust GTY markers.
23862         (init_ttree): Use priority-info hash functions for
23863         init_priority_for_decl.
23864         (tree_map_eq): Rename to ...
23865         (tree_map_base_eq): ... this.
23866         (tree_map_marked_p): Rename to ...
23867         (tree_map_base_marked_p): ... this.
23868         (tree_map_base_hash): New function.
23869         (decl_init_priority_lookup): Rework.
23870         (decl_fini_priority_lookup): New function.
23871         (decl_priority_info): New function.
23872         (decl_init_priority_insert): Use it.
23873         (decl_fini_priority_insert): Likewise.
23874         (decl_restrict_base_lookup): Adjust for refactoring of tree_map
23875         hierarchy.
23876         (decl_restrict_base_insert): Likewise.
23877         (decl_debug_expr_insert): Likewise.
23878         (decl_value_expr_lookup): Likewise.
23879         (decl_value_expr_insert): Likewise.
23880         * tree.h (priority_type): New type.
23881         (decl_init_priority_lookup): Use priority_type.
23882         (decl_fini_priority_lookup): New function.
23883         (decl_init_priority_insert): Use priority_type.
23884         (decl_fini_priority_insert): New function.
23885         (DECL_HAS_INIT_PRIORITY): Tweak comments.
23886         (DECL_INIT_PRIORITY): Likewise.
23887         (SET_DECL_INIT_PRIORITY): Add comment.
23888         (DECL_FINI_PRIORITY): New macro.
23889         (SET_DECL_FINI_PRIORITY): Likewise.
23890         (DEFAULT_INIT_PRIORITY): Document.
23891         (MAX_INIT_PRIORITY): Likewise.
23892         (MAX_RESERVED_INIT_PRIORITY): Likewise.
23893         (tree_map_base): New type.
23894         (tree_map_base_eq): New function.
23895         (tree_map_base_hash): Likewise.
23896         (tree_map_base_marked_p): Likewise.
23897         (tree_map): Inherit from tree_map_base.
23898         (tree_map_eq): Make it a macro.
23899         (tree_map_marked_p): Likewise.
23900         (tree_int_map): Inherit from tree_map_base.
23901         (tree_int_map_eq): Make it a macro.
23902         (tree_int_map_hash): Likewise.
23903         (tree_int_map_marked_p): Likewise.
23904         (tree_priority_map): New type.
23905         (tree_priority_map_eq): New macro.
23906         (tree_priority_map_hash): Likewise.
23907         (tree_priority_map_marked_p): Likewise.
23908         * varasm.c (emults_decl): Adjust for refactoring of tree_map
23909         hierarchy.
23910         (emutls_common_1): Likewise.
23911         * lambda-code.c (replace_uses_equiv_to_x_with_y): Likewise.
23912         * tree-ssa-structalias.c (heapvar_lookup): Adjust for refactoring
23913         of tree_map hierarchy.
23914         * tree-cfg.c (move_stmt_r): Likewise.
23915         (new_label_mapper): Likewise.
23916         * c-tree.h (c_expand_body): Move to ...
23917         * c-common.h (c_expand_body): ... here.
23918         * c-decl.c (c_expand_body): Move to ...
23919         * c-common.c (c_expand_body): ... here.
23920         (c_common_attribute_table): Allow 1 argument for the constructor
23921         and destructor attributes.
23922         (get_priority): New function.
23923         (handle_constructor_attribute): Set DECL_INIT_PRIORITY.
23924         (handle_destructor_attribute): Set DECL_FINI_PRIORITY.
23925
23926 2007-02-24  Jan Hubicka  <jh@suse.cz>
23927
23928         PR middle-end/30509
23929         * tree-inline.c (copy_bb): Produce exact copy of EH info when
23930         copying for inlining.
23931
23932 2007-02-24  Uros Bizjak  <ubizjak@gmail.com>
23933             Jan Hubicka  <jh@suse.cz>
23934
23935         PR target/30778
23936         * i386.c (counter_mode): New function.
23937         (expand_set_or_movmem_via_loop): Use it.
23938         (expand_movmem_epilogue): Likewise; fix pasto.
23939         (ix86_expand_movmem): Do emit guard even for constant counts.
23940         (ix86_expand_setmem): Likewise.
23941
23942 2007-02-25  Nick Clifton  <nickc@redhat.com>
23943
23944         * config/frv/frv.h (ASM_OUTPUT_CASE_LABEL): Delete.
23945         (JUMP_TABLES_IN_TEXT_SECTION): Define.
23946
23947 2007-02-24  Uros Bizjak  <ubizjak@gmail.com>
23948
23949         PR target/30770
23950         * config/i386/i386.md (expand_movmem_epilogue): Fix typo, mask
23951         count argument with 0x10, not with 0x16.
23952         (expand_setmem_epilogue): Ditto.
23953
23954 2007-02-24  Mike Stump  <mrs@apple.com>
23955
23956         * config/i386/i386.c (output_pic_addr_const): Stubify optimized
23957         symbols.
23958
23959 2007-02-24  Richard Guenther  <rguenther@suse.de>
23960
23961         PR middle-end/30951
23962         * fold-const.c (fold_binary): Fold x +- CST op x for
23963         EQ_EXPR and NE_EXPR.
23964
23965 2007-02-24  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
23966
23967         * pa.md (muldi3): Force subregs to registers in 64-bit expander.
23968
23969 2007-02-24  Jan Hubicka  <jh@suse.cz>
23970
23971         * cgraphunit.c (decide_is_function_needed): Honor
23972         -fkeep-inline-functions.
23973
23974 2007-02-24  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
23975
23976         * builtins.c (fold_builtin_modf): New.
23977         (fold_builtin_2): Use it.
23978
23979 2007-02-24  Bernd Schmidt  <bernd.schmidt@analog.com>
23980
23981         * loop-iv.c (implies_p): Detect additional cases where A implies B.
23982         (determine_max_iter): Take additional LOOP arg; all callers changed.
23983         Lose broken logic dealing with PLUS.  Try to limit the upper bound by
23984         one using simplifications.
23985         (simplify_using_initial_values): Return if the expression becomes
23986         invalid due to altered regs.
23987
23988 2007-02-23  DJ Delorie  <dj@redhat.com>
23989
23990         * doc/tm.h (BIGGEST_ALIGNMENT): Clarify the purpose of this macro.
23991
23992 2007-02-23  Mike Stump  <mrs@apple.com>
23993
23994         * tlink.c (scan_linker_output): Parse linker messages from
23995         darwin9's linker better.
23996
23997 2007-02-23  Steve Ellcey  <sje@cup.hp.com>
23998
23999         PR debug/29614
24000         * varpool.c (varpool_assemble_pending_decls): Set
24001         varpool_last_needed_node to null.
24002
24003 2007-02-23  DJ Delorie  <dj@redhat.com>
24004
24005         * config/i386/i386.c (ix86_data_alignment): Don't specify an
24006         alignment bigger than the object file can handle.
24007
24008 2007-02-23  Uros Bizjak  <ubizjak@gmail.com>
24009
24010         PR target/30825
24011         * config/i386/i386.md (*movdi_1_rex64, zero_extendsidi2_32,
24012         zero_extendsidi2_rex64): Penalize MMX register<->memory moves.
24013         (*movsf_1): Penalize MMX moves.
24014
24015 2007-02-23  Bernd Schmidt  <bernd.schmidt@analog.com>
24016
24017         * config/bfin/bfin.md (doloop_end): Fail for loops that can iterate
24018         2^32-1 or more times unless flag_unsafe_loop_optimizations.
24019
24020         * loop-iv.c (determine_max_iter): Moved in front of its sole user.
24021
24022 2007-02-23  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
24023
24024         * builtins.c (fold_builtin_logb, fold_builtin_significand): New.
24025         (fold_builtin_1): Use them.
24026         * fold-const.c (tree_expr_nonnegative_warnv_p): Handle
24027         BUILT_IN_SIGNIFICAND.
24028
24029 2007-02-23  H.J. Lu  <hongjiu.lu@intel.com>
24030
24031         * config/i386/i386.c (bdesc_1arg): Initialize
24032         IX86_BUILTIN_MOVSHDUP and IX86_BUILTIN_MOVSLDUP with
24033         "__builtin_ia32_movshdup" and "__builtin_ia32_movsldup".
24034         (ix86_init_mmx_sse_builtins): Remove IX86_BUILTIN_MOVSHDUP
24035         and IX86_BUILTIN_MOVSLDUP.
24036
24037 2007-02-22  Paolo Bonzini  <bonzini@gnu.org>
24038
24039         PR rtl-optimization/30841
24040         * fwprop.c (propagate_rtx_1): Accept a VOIDmode replacement address.
24041
24042 2007-02-22  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
24043
24044         * builtins.c (fold_builtin_frexp): New.
24045         (fold_builtin_2): Use it.
24046
24047 2007-02-22  Mark Mitchell  <mark@codesourcery.com>
24048
24049         * doc/invoke.texi (Spec Files): Document getenv spec function.
24050
24051         * gcc.c (getenv_spec_function): New function.
24052         (static_spec_functions): Add it.
24053         * config/vxworks.h (VXWORKS_TARGET_DIR): Remove.
24054         (VXWORKS_ADDITIONAL_CPP_SPEC): Use getenv to find the VxWorks
24055         header files.
24056
24057 2007-02-22  Michael Matz  <matz@suse.de
24058
24059         PR c++/29433
24060         * dwarf2out.c (add_AT_string): Call ggc_strdup once per string.
24061         (type_tag): Use lang_hooks.dwarf_name instead of DECL_NAME.
24062
24063 2007-02-22  Ian Lance Taylor  <iant@google.com>
24064
24065         PR debug/30898
24066         * dwarf2out.c (concatn_mem_loc_descriptor): New static function.
24067         (mem_loc_descriptor): Call it.
24068
24069 2007-02-22  Zdenek Dvorak  <dvorakz@suse.cz>
24070             Ira Rosen  <irar@il.ibm.com>
24071
24072         * tree-data-ref.c (ptr_ptr_may_alias_p): Take alias sets into account.
24073
24074 2007-02-22  Ira Rosen  <irar@il.ibm.com>
24075
24076         PR tree-optimization/30843
24077         * tree-vect-transform.c (vect_transform_loop): Remove strided scalar
24078         stores only after all the group is vectorized.
24079
24080 2007-02-22  Dorit Nuzman  <dorit@il.ibm.com>
24081
24082         PR tree-optimization/30858
24083         * tree-vectorizer.c (vect_is_simple_reduction): Check that the stmts
24084         in the reduction cycle have a single use in the loop.
24085         * tree-vectorizer.h (relevant): Add documentation.
24086
24087 2007-02-20  Mike Stump  <mrs@apple.com>
24088
24089         * configure.ac (powerpc*-*-darwin*): #include <sys/cdefs.h>.
24090         * configure: Regenerate.
24091
24092 2007-02-21  Trevor Smigiel  <trevor_smigiel@playstation.sony.com>
24093
24094         Change the defaults of some parameters and options.
24095         * config/spu/spu-protos.h (spu_optimization_options): Declare.
24096         * config/spu/spu.c (spu_optimization_options): Add.
24097         (spu_override_options): Change params in spu_optimization_options.
24098         * config/spu/spu.h (OPTIMIZATION_OPTIONS): Define.
24099
24100         Register 127 is only 16 byte aligned when used as a frame pointer.
24101         * config/spu/spu-protos.h (spu_init_expanders): Declare.
24102         * config/spu/spu.c (spu_expand_prologue): Set REGNO_POINTER_ALIGN for
24103         HARD_FRAME_POINTER_REGNUM.
24104         (spu_legitimate_address): Use regno_aligned_for_reload.
24105         (regno_aligned_for_load): HARD_FRAME_POINTER_REGNUM is only 16 byte
24106         aligned when frame_pointer_needed is true.
24107         (spu_init_expanders): New.  Set alignment of HARD_FRAME_POINTER_REGNUM
24108         to 8 bits.
24109         * config/spu/spu.h (INIT_EXPANDERS): Define.
24110
24111         Make sure shift and rotate instructions have valid immediate operands.
24112         * config/spu/predicates.md (spu_shift_operand): Remove.
24113         * config/spu/spu.c (print_operand): Add [efghEFGH] modifiers.
24114         * config/spu/constraints.md (W, O): Extend range.
24115         * config/spu/spu.md (umask, nmask): Define.
24116         (ashl<mode>3, ashldi3, ashlti3_imm, shlqbybi_ti, shlqbi_ti, shlqby_ti,
24117         lshr<mode>3, rotm_<mode>, lshr<mode>3_imm, rotqmbybi_<mode>,
24118         rotqmbi_<mode>, rotqmby_<mode>, ashr<mode>3, rotma_<mode>,
24119         rotl<mode>3, rotlti3, rotqbybi_ti, rotqby_ti, rotqbi_ti): Use
24120         spu_nonmem_operand instead of spu_shift_operands.  Use new modifiers.
24121         (lshr<mode>3_reg): Fix rtl description.
24122
24123         Make sure mulhisi immediate operands are valid.
24124         * config/spu/predicates.md (imm_K_operand): Add.
24125         * config/spu/spu.md (mulhisi3_imm, umulhisi3_imm): Use imm_K_operand.
24126
24127         Generate constants using fsmbi and andi.
24128         * config/spu/spu.c (enum immediate_class): Add IC_FSMBI2.
24129         (print_operand, spu_split_immediate, classify_immediate,
24130         fsmbi_const_p): Handle IC_FSMBI2.
24131
24132         Correctly handle a CONST_VECTOR containing symbols.
24133         * config/spu/spu.c (print_operand): Handle HIGH correctly.
24134         (spu_split_immediate): Split CONST_VECTORs with -mlarge-mem.
24135         (immediate_load_p): Allow symbols that use 2 instructions to create.
24136         (classify_immediate, spu_builtin_splats): Don't accept a CONST_VECTOR
24137         with symbols when flag_pic is set.
24138         (const_vector_immediate_p): New.
24139         (logical_immediate_p, iohl_immediate_p, arith_immediate_p): Don't
24140         accept a CONST_VECTOR with symbols.
24141         (spu_legitimate_constant_p): Use const_vector_immediate_p.  Don't
24142         accept a CONST_VECTOR with symbols when flag_pic is set.  Handle HIGH
24143         correctly.
24144         * config/spu/spu.md (high, low): Delete.
24145         (low_<mode>): Define.
24146
24147         Remove INTRmode and INTR_REGNUM, which didn't work.
24148         * config/spu/spu.c (spu_conditional_register_usage): Remove reference
24149         of INTR_REGNUM.
24150         * config/spu/spu-builtins.md (spu_idisable, spu_ienable, set_intr,
24151         set_intr_pic, set_intr_cc, set_intr_cc_pic, set_intr_return, unnamed
24152         peephole2 pattern): Don't use INTR or 131.
24153         (movintrcc): Delete.
24154         * config/spu/spu.h (FIRST_PSEUDO_REGISTER, FIXED_REGISTERS,
24155         CALL_USED_REGISTERS, REGISTER_NAMES, INTR_REGNUM): Remove INTR_REGNUM.
24156         * config/spu/spu.md (UNSPEC_IDISABLE, UNSPEC_IENABLE): Remove.
24157         (UNSPEC_SET_INTR): Add.
24158         * config/spu/spu-modes.def (INTR): Remove.
24159
24160         More accurate warnings about run-time relocations.
24161         * config/spu/spu.c (reloc_diagnostic): Test in_section.
24162
24163         Correctly warn about immediate arguments to specific intrinsics.
24164         * config/spu/spu.c (spu_check_builtin_parm): Handle CONST_VECTORs.
24165         (spu_expand_builtin_1): Call spu_check_builtin_parm before checking
24166         the instruction predicate.
24167
24168         Fix tree check errors with latest update.
24169         * config/spu/spu.c (expand_builtin_args, spu_expand_builtin_1): Use
24170         CALL_EXPR_ARG.
24171         (spu_expand_builtin): Use CALL_EXPR_FN.
24172
24173         Add missing specific intrinsics.
24174         * config/spu/spu-builtins.def: Add si_bisled, si_bisledd and
24175         si_bislede.
24176         * config/spu/spu_internals.h: Ditto.
24177
24178         Fix incorrect operand modifiers.
24179         * config/spu/spu-builtins.md (spu_mpy, spu_mpyu): Remove use of %H.
24180         * config/spu/spu.md (xor<mode>3): Change %S to %J.
24181
24182         Optimize one case of zero_extend of a vec_select.
24183         * config/spu/spu.md (_vec_extractv8hi_ze): Add.
24184
24185         Accept any immediate for hbr.
24186         * config/spu/spu.md (hbr): Change s constraints to i.
24187
24188 2007-02-21  Paul Brook  <paul@codesourcery.com>
24189
24190         * config/arm/arm.c (thumb2_final_prescan_insn): Don't incrememnt
24191         condexec_count when skipping USE and CLOBBER.
24192
24193 2007-02-21  Nick Clifton  <nickc@redhat.com>
24194
24195         * common.opt (Warray-bounds): Add Warning attribute.
24196         (Wstrict-overflow, Wstrict-overflow=, Wcoverage-mismatch):
24197         Likewise.
24198         (fsized-zeroes): Add Optimization attribute.
24199         (fsplit-wide-types, ftree-scev-cprop): Likewise.
24200         * c.opt (Wc++0x-compat): Add Warning attribute.
24201
24202 2007-02-21  Ulrich Weigand  <uweigand@de.ibm.com>
24203
24204         PR middle-end/30761
24205         * reload1.c (eliminate_regs_in_insn): In the single_set special
24206         case, attempt to re-recognize the insn before falling back to
24207         having reload fix it up.
24208
24209 2007-02-20  Eric Christopher  <echristo@gmail.com>
24210
24211         * config/frv/frv.c (frv_read_argument): Take a tree and int argument.
24212         Rewrite accordingly.
24213         (frv_read_iacc_argument): Ditto.
24214         (frv_expand_set_builtin): Take a call instead of arglist, update for
24215         above changes.
24216         (frv_expand_unop_builtin): Ditto.
24217         (frv_expand_binop_builtin): Ditto.
24218         (frv_expand_cut_builtin): Ditto.
24219         (frv_expand_binopimm_builtin): Ditto.
24220         (frv_expand_voidbinop_builtin): Ditto.
24221         (frv_expand_int_void2arg): Ditto.
24222         (frv_expand_prefetches): Ditto.
24223         (frv_expand_voidtriop_builtin): Ditto.
24224         (frv_expand_voidaccop_builtin): Ditto.
24225         (frv_expand_load_builtin): Ditto.
24226         (frv_expand_store_builtin): Ditto.
24227         (frv_expand_mdpackh_builtin): Ditto.
24228         (frv_expand_mclracc_builtin): Ditto.
24229         (frv_expand_mrdacc_builtin): Ditto.
24230         (frv_expand_mwtacc_builtin): Ditto.
24231         (frv_expand_builtin): Remove usage of CALL_EXPR_ARGS, update
24232         calls for above.
24233
24234 2007-02-20  Janis Johnson  <janis187@us.ibm.com>
24235
24236         * doc/invoke.texi (RS/6000 and PowerPC Options): Add -mcmpb and -mdfp.
24237         * configure.ac (HAVE_GAS_CMPB): Check for assembler support of the
24238         cmpb instruction.
24239         (HAVE_GAS_DFP): Check for assembler support of decimal floating
24240         point instructions.
24241         * configure: Regenerate.
24242         * config.in: Regenerate.
24243         * config/rs6000/rs6000.opt (mcmpb, mdfp): New.
24244         * config/rs6000/rs6000.c (rs6000_override_options): Add CMPB and DFP
24245         masks to power6 and power6x and to POWERPC_MASKS.
24246         * config/rs6000/rs6000-c.c (rs6000_cpu_cpp_builtins): Define
24247         _ARCH_PWR6.
24248         * config/rs6000/rs6000.h: Check assembler support for CMPB and DFP.
24249         * config/rs6000/sysv4.opt (mprototype): Use variable, not mask.
24250         * config/rs6000/linux64.h (SUBSUBTARGET_OVERRIDE_OPTIONS):
24251         Access PROTOTYPE as variable, not mask.
24252
24253 2007-02-20  Steven Bosscher  <steven@gcc.gnu.org>
24254
24255         * rtl.h (remove_reg_equal_equiv_notes): New prototype.
24256         * rtlanal.c (remove_reg_equal_equiv_notes): New function.
24257         * combine.c (adjust_for_new_dest): Use it.
24258         * postreload.c (reload_combine): Likewise.
24259
24260 2007-02-20  Steven Bosscher  <steven@gcc.gnu.org>
24261
24262         * rtlanal.c (find_reg_equal_equiv_note): Do not find REG_EQ*
24263         notes on an insn with multiple sets, even if single_set returns
24264         non-NULL for that insn.
24265
24266 2007-02-20  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
24267
24268         * fold-const.c (tree_expr_nonnegative_warnv_p): Handle scalb,
24269         scalbn and scalbln.
24270
24271 2007-02-20  Geoffrey Keating  <geoffk@apple.com>
24272
24273         * config/darwin.h (LINK_SPEC): Default -mmacosx-version-min only
24274         if user didn't pass it.
24275         * config/i386/darwin.h (CC1_SPEC): Likewise.
24276         * config/rs6000/darwin.h (CC1_SPEC): Likewise.
24277         (DARWIN_MINVERSION_SPEC): Don't depend on user's setting of
24278         -mmacosx-version-min.
24279
24280 2007-02-20  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
24281             Uros Bizjak  <ubizjak@gmail.com>
24282
24283         * optabs.h (enum optab_index): Add new OTI_scalb.
24284         (scalb_optab): Define corresponding macro.
24285         * optabs.c (init_optabs): Initialize scalb_optab.
24286         * genopinit.c (optabs): Implement scalb_optab using scalb?f3
24287         patterns.
24288         * builtins.c (expand_builtin_mathfn_2, expand_builtin): Handle
24289         BUILT_IN_SCALB{,F,L}, BUILT_IN_SCALBN{,F,L} and BUILT_IN_SCALBLN{,F,L}.
24290         (expand_builtin): Expand BUILT_IN_SCALB{,F,L}, BUILT_IN_SCALBN{,F,L}
24291         and BUILT_IN_SCALBLN{,F,L} using expand_builtin_mathfn_2 if
24292         flag_unsafe_math_optimizations is set.
24293
24294         * config/i386/i386.md (scalbxf3, scalb<mode>3): New expanders
24295         to implement scalbf, scalb and scalbl built-ins as inline x87
24296         intrinsics.
24297
24298 2007-02-20  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
24299             DJ Delorie <dj@redhat.com>
24300
24301         PR other/30824
24302         * diagnostic.c (diagnostic_count_diagnostic): Move -Werror logic to...
24303         (diagnostic_report_diagnostic): ... here, and turn them into real
24304         errors. If warnings are inhibited, no need to do anything.
24305
24306 2007-02-20  Uros Bizjak  <ubizjak@gmail.com>
24307
24308         * config/i386/i386.md (expm1xf2): Reorder insn sequence for
24309         better code generation.
24310
24311 2007-02-20  Ben Elliston  <bje@au.ibm.com>
24312
24313         * config/m68hc11/m68hc11.h (OVERRIDE_OPTIONS): Remove extra ;.
24314
24315 2007-02-20  Kazu Hirata  <kazu@codesourcery.com>
24316
24317         * config/alpha/alpha.c, config/alpha/alpha.md,
24318         config/alpha/lib1funcs.asm, config/alpha/vms-crt0-64.c,
24319         config/alpha/vms-psxcrt0-64.c, config/arc/arc.c,
24320         config/arc/arc.h, config/arm/arm.c, config/arm/arm.md,
24321         config/arm/lib1funcs.asm: Follow spelling conventions.
24322
24323         * config/c4x/c4x.md, config/cris/cris.c, config/crx/crx.c,
24324         config/fr30/fr30.md, config/i386/i386.h,
24325         config/iq2000/iq2000.h, config/iq2000/predicates.md,
24326         config/pa/milli64.S, config/pa/pa.c, config/pa/pa.h,
24327         config/pa/pa.md, config/pa/pa32-regs.h, config/pa/pa64-regs.h,
24328         config/pdp11/pdp11.c, config/pdp11/pdp11.h,
24329         config/rs6000/altivec.md, config/rs6000/rs6000.c,
24330         config/s390/s390-modes.def, config/sparc/netbsd-elf.h,
24331         config/sparc/sparc.c, config/sparc/sparc.h,
24332         config/sparc/sparc.md, config/spu/constraints.md,
24333         config/spu/spu.c, config/stormy16/stormy16.md: Follow spelling
24334         conventions.
24335
24336 2007-02-20  Alan Modra  <amodra@bigpond.net.au>
24337
24338         PR target/29943
24339         * varasm.c (use_blocks_for_decl_p): Return false for decls with
24340         alias attribute.
24341
24342 2007-02-19  Kazu Hirata  <kazu@codesourcery.com>
24343
24344         * doc/invoke.texi (-ftree-lrs): Remove.
24345
24346 2007-02-19  Diego Novillo  <dnovillo@redhat.com>
24347
24348         * tree-ssa-pre.c (create_value_expr_from): Initialize POOL to
24349         NULL.
24350
24351 2007-02-19  Lee Millward  <lee.millward@codesourcery.com>
24352
24353         * config/ia64/ia64.c (ia64_expand_builtin): Use the
24354         new CALL_EXPR_FN macro for retrieving the function
24355         declaration of the input expression.
24356
24357 2007-02-19  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
24358
24359         * c.opt (Waddress): New.
24360         * common.opt (Walways-true): Delete.
24361         (Wstring-literal-comparison): Delete.
24362         * doc/invoke.texi (Warning Options): Delete -Walways-true and
24363         -Wstring-literal-comparison. Add -Waddress.
24364         (Waddress): New.
24365         (Walways-true): Delete.
24366         (Wstring-literal-comparison): Delete.
24367         * doc/extend.texi (#pragma GCC diagnostic): Use -Wformat
24368         consistently instead of -Walways-true in example.
24369         * c-opts.c (c_common_handle_option): -Waddress is enabled by -Wall.
24370         * c-typeck.c (parser_build_binary_op): Replace
24371         -Wstring-literal-comparison and -Walways-true with -Waddress.
24372         * c-common.c (c_common_truthvalue_conversion): Replace -Walways-true
24373         with -Waddress.
24374
24375 2007-02-19  Eric Botcazou  <ebotcazou@adacore.com>
24376
24377         * tree-cfg.c (dump_function_to_file): Be prepared for functions
24378         without DECL_STRUCT_FUNCTION initialized.
24379
24380 2007-02-19  Eric Botcazou  <ebotcazou@adacore.com>
24381
24382         * gimplify.c (gimplify_init_ctor_preeval_1): Detect potential overlap
24383         due to calls to functions taking pointers as parameters.
24384
24385 2007-02-19  Richard Henderson  <rth@redhat.com>
24386
24387         PR debug/29558
24388         * var-tracking.c (track_expr_p): Disallow AGGREGATE_TYPE_P
24389         in memory.
24390
24391 2007-02-19  Andreas Krebbel  <krebbel1@de.ibm.com>
24392
24393         * config/s390/s390.c (s390_call_saved_register_used,
24394         s390_function_ok_for_sibcall): Adjust the way CALL_EXPR arguments are
24395         accessed to the new scheme.
24396
24397 2007-02-19  Jan-Benedict Glaw  <jbglaw@lug-owl.de>
24398
24399         * config/cris/cris.c (cris_movem_load_rest_p, cris_store_multiple_op_p)
24400         (cris_print_index, cris_print_operand, cris_print_operand_address)
24401         (cris_reload_address_legitimized, cris_rtx_costs, cris_address_cost)
24402         (cris_side_effect_mode_ok, cris_valid_pic_const, cris_split_movdx)
24403         (cris_expand_pic_call_address): Use xxx_P predicate macros instead of
24404         GET_CODE () == xxx.
24405         * config/cris/cris.h (SECONDARY_RELOAD_CLASS, EXTRA_CONSTRAINT_Q,
24406         EXTRA_CONSTRAINT_T, BDAP_INDEX_P, BIAP_INDEX_P, SIMPLE_ADDRESS_P,
24407         GO_IF_LEGITIMATE_ADDRESS): Ditto.
24408         * config/cris/cris.md (define_insns: *btst, movdi, *mov_side<mode>)
24409         (*mov_sidesisf, *mov_side<mode>_mem, *mov_sidesisf_mem)
24410         (*clear_side<mode>, movsi, *movsi_internal, *ext_sideqihi)
24411         (*ext_side<mode>si, *op_side<mode>, *op_swap_side<mode>, addsi3)
24412         (*extopqihi_side, *extop<mode>si_side, *extopqihi_swap_side)
24413         (*extop<mode>si_swap_side, addi_mul, *addi,andsi3, andhi3, ashl<mode>3)
24414         (uminsi3, call, call_value): Ditto.
24415         (define_split: indir_to_reg_split, unnamed): Ditto.
24416
24417 2007-02-19  Dorit Nuzman  <dorit@il.ibm.com>
24418
24419         PR tree-optimization/30975
24420         * tree-vect-trasnform.c (vect_get_vec_def_for_stmt_copy): Remove
24421         wrong assert.
24422
24423 2007-02-18  Eric Christopher  <echristo@gmail.com>
24424
24425         * mips.c (mips_prepare_builtin_arg): Add argnum parameter.
24426         Remove use of arglist.
24427         (mips_expand_builtin): Remove use of arglist, pass in expr.
24428         (mips_expand_builtin_direct): Rewrite handling for arglist removal.
24429         (mips_expand_builtin_movtf): Ditto.
24430         (mips_expand_builtin_compare): Ditto.
24431
24432 2007-02-19  Alexandre Oliva  <aoliva@redhat.com>
24433
24434         * tree-sra.c (sra_build_assignment): Replace assertion
24435         checking with a comment explaining why it can't be done.
24436
24437 2007-02-18  Sandra Loosemore  <sandra@codesourcery.com>
24438
24439         PR middle-end/30833
24440         * tree-dump.c (dequeue_and_dump): Add tcc_vl_exp case missed
24441         during CALL_EXPR representation conversion.
24442         * tree-ssa-propagate.c (set_rhs): Likewise.
24443
24444 2007-02-19  Alexandre Oliva  <aoliva@redhat.com>
24445
24446         * tree-sra.c (sra_build_assignment): Disable assertion checking
24447         for now.
24448
24449 2007-02-18  Roger Sayle  <roger@eyesopen.com>
24450
24451         * function.c (gimplify_parameters): Call build_gimple_modify_stmt
24452         instead of calling build2 with a GIMPLE_MODIFY_STMT.
24453         * gimple-low.c (lower_function_body, lower_builtin_setjmp):
24454         Likewise.
24455         * gimplify.c (build_stack_save_restore, gimplify_return_expr,
24456         gimplify_decl_expr,  gimplify_self_mod_expr, gimplify_cond_expr,
24457         gimplify_init_ctor_eval_range, gimple_push_cleanup,
24458         gimplify_omp_for, gimplify_omp_atomic_pipeline,
24459         gimplify_omp_atomic_mutex, gimplify_expr, gimplify_one_sizepos,
24460         force_gimple_operand): Likewise.
24461         * ipa-cp.c (constant_val_insert): Likewise.
24462         * lambda-code.c (lbv_to_gcc_expression, lle_to_gcc_expression,
24463         lambda_loopnest_to_gcc_loopnest, replace_uses_equiv_to_x_with_y,
24464         perfect_nestify): Likewise.
24465         * langhooks.c (lhd_omp_assignment): Likewise.
24466         * omp-low.c (lower_rec_input_clauses, lower_reduction_clauses,
24467         lower_copyprivate_clauses, lower_send_clauses,
24468         lower_send_shared_vars, expand_parallel_call,
24469         expand_omp_for_generic, expand_omp_for_static_nochunk,
24470         expand_omp_for_static_chunk, expand_omp_sections,
24471         lower_omp_single_copy, lower_omp_for_lastprivate,
24472         lower_omp_parallel, init_tmp_var, save_tmp_var): Likewise.
24473         * value-prof.c (tree_divmod_fixed_value, tree_mod_pow2,
24474         tree_mod_subtract, tree_ic, tree_stringop_fixed_value):
24475         Likewise.
24476
24477 2007-02-19  Kazu Hirata  <kazu@codesourcery.com>
24478
24479         * config/sh/divtab.c, config/sh/sh.c, config/sh/sh.h,
24480         config/sh/sh.md: Follow spelling conventions.
24481
24482         * config/frv/frv.c, config/frv/frv.h, config/frv/frv.md,
24483         config/frv/predicates.md: Follow spelling conventions.
24484
24485         * config/m68k/linux-unwind.h: Fix a comment typo.
24486         * target.h: Follow spelling conventions.
24487
24488 2007-02-18  Roger Sayle  <roger@eyesopen.com>
24489
24490         PR rtl-optimization/28173
24491         * simplify-rtx.c (simplify_binary_operation_1) <IOR>: Optimize
24492         (X & C1) | C2 as C2 when (C1 & C2) == C1 and X has no side-effects.
24493         Optimize (X & C1) | C2 as X | C2 when (C1 | C2) == ~0.
24494         Canonicalize (X & C1) | C2 as (X & (C1 & ~C2)) | C2.
24495         <AND>: Canonicalize (X | C1) & C2 as (X & C2) | (C1 & C2).
24496
24497 2007-02-18  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
24498
24499         * builtins.c (fold_builtin_load_exponent): New.
24500         (fold_builtin_2): Use it.
24501
24502 2007-02-18  Steven Bosscher  <steven@gcc.gnu.org>
24503
24504         PR rtl-optimization/30773
24505         * local-alloc.c (update_equiv_regs): Do not set reg_equiv_init
24506         if we fail to attach a REG_EQUIV note.
24507
24508 2007-02-18  David Edelsohn  <edelsohn@gnu.org>
24509             Roger Sayle  <roger@eyesopen.com>
24510
24511         * config/rs6000/rs6000.md (bswapsi2): New define_insn and splitter.
24512
24513 2007-02-18  Sandra Loosemore  <sandra@codesourcery.com>
24514
24515         * calls.c (initialize_argument_information): Pass original EXP
24516         and STRUCT_VALUE_ADDR_VALUE instead of a list of arguments.  Move
24517         code to split complex arguments here, as part of initializing the
24518         ARGS array.
24519         (expand_call): Remove code that builds a list of arguments and
24520         inserts implicit arguments into it.  Instead, just count how many
24521         implicit arguments there will be so we can determine the size of
24522         the ARGS array, and let initialize_argument_information do the work.
24523         (split_complex_values): Delete unused function.
24524
24525 2007-02-18  Eric Botcazou  <ebotcazou@adacore.com>
24526
24527         * tree-eh.c (tree_could_trap_p): Handle VIEW_CONVERT_EXPR.
24528
24529 2007-02-18  Eric Botcazou  <ebotcazou@adacore.com>
24530
24531         * calls.c (mem_overlaps_already_clobbered_arg_p): Return true
24532         for arg pointer based indexed addressing.
24533
24534 2007-02-18  Kazu Hirata  <kazu@codesourcery.com>
24535
24536         * config/ia64/ia64.h, config/ia64/ia64.md,
24537         config/ia64/predicates.md, config/ia64/sysv4.h: Follow
24538         spelling conventions.
24539
24540 2007-02-18  Roman Zippel <zippel@linux-m68k.org>
24541
24542         * config/m68k/m68k.c (split_di): New.
24543         * config/m68k/m68k-protos.h: Declare split_di.
24544         * config/m68k/m68k.md (extendsidi2*,ashldi3*,ashrdi3*,lshrdi3*):
24545           Improve predicate handling and split constant shifts.
24546
24547 2007-02-18  Roman Zippel <zippel@linux-m68k.org>
24548
24549         * config/m68k/m68k.md (extv,extzv,insv): disable dynamic
24550         parameter for register bitfield operations, general predicates
24551         cleanup
24552
24553 2007-02-18  Roman Zippel <zippel@linux-m68k.org>
24554
24555         * config/m68k/linux.h (MD_UNWIND_SUPPORT): Define.
24556         * config/m68k/linux-unwind.h: New file.
24557
24558 2007-02-18  Kazu Hirata  <kazu@codesourcery.com>
24559
24560         * cfgloop.c, config/alpha/alpha.c, config/bfin/bfin.c,
24561         config/i386/athlon.md, config/ia64/ia64.md,
24562         config/rs6000/rs6000.c, config/s390/s390.c, config/spu/spu.md,
24563         df-problems.c, df.h, fold-const.c, ipa-cp.c, ipa-inline.c,
24564         ipa-prop.h, see.c, struct-equiv.c, tree-inline.c,
24565         tree-ssa-loop-niter.c, tree-vect-analyze.c,
24566         tree-vect-transform.c: Fix comment typos.
24567
24568 2007-02-17  Kazu Hirata  <kazu@codesourcery.com>
24569
24570         * sched-deps.c (find_insn_list): Remove.
24571         * sched-int.h: Remove the prototype for find_insn_list.
24572
24573 2007-02-16  Geoffrey Keating  <geoffk@apple.com>
24574
24575         * config/darwin.h (LINK_SPEC): Always pass -macosx_version_min
24576         to linker.
24577         (DARWIN_EXTRA_SPECS): Add %(darwin_minversion).
24578         * config/rs6000/darwin.h (SUBTARGET_OVERRIDE_OPTIONS): Just call
24579         darwin_rs6000_override_options.
24580         (C_COMMON_OVERRIDE_OPTIONS): Expect
24581         darwin_macosx_version_min to be non-NULL always.
24582         (TARGET_C99_FUNCTIONS): Likewise.
24583         (CC1_SPEC): Always pass -mmacosx-version-min to cc1*.
24584         (DARWIN_MINVERSION_SPEC): New.
24585         * config/rs6000/rs6000.c (darwin_rs6000_override_options): New.
24586         * config/i386/darwin.h (CC1_SPEC): Always pass -mmacosx-version-min
24587         to cc1*.
24588         (DARWIN_MINVERSION_SPEC): New.
24589         * config/darwin.opt (mmacosx-version-min): Initialize to non-NULL
24590         value.
24591         * config/darwin-c.c (darwin_cpp_builtins): Expect
24592         darwin_macosx_version_min to be non-NULL always.
24593
24594         * config/rs6000/rs6000.c: Clean up trailing whitespace.
24595
24596 2007-02-16  Uros Bizjak  <ubizjak@gmail.com>
24597
24598         * config/i386/i386.h (x86_use_xchgb): New.
24599         (TARGET_USE_XCHGB): New macro.
24600         * config/i386/i386.c (x86_use_xchgb): Set for PENT4.
24601         * config/i386/i386.md (*rotlhi3_1 splitter, *rotrhi3_1 splitter):
24602         Split after reload into bswaphi for shifts of 8.
24603         (bswaphi_lowpart): Generate rolw insn for HImode byte swaps.
24604         (*bswaphi_lowpart_1): Generate xchgb for Q registers for TARGET_XCHGB
24605         or when optimizing for size.
24606
24607 2007-02-16  Richard Guenther  <rguenther@suse.de>
24608             Christian Bruel  <christian.bruel@st.com>
24609
24610         * fold-const.c (tree_swap_operands_p): Treat SSA_NAMEs like
24611         DECLs but prefer SSA_NAMEs over DECLs.
24612
24613 2007-02-16  Richard Guenther  <rguenther@suse.de>
24614
24615         * tree-flow-inline.h (single_imm_use_p): Remove.
24616         (zero_imm_uses_p): Likewise.
24617         * tree-ssa-coalesce.c (create_outofssa_var_map): Use has_single_use
24618         instead of single_imm_use_p.
24619         * tree-cfg.c (replace_uses_by): Use has_zero_use instead of
24620         zero_imm_uses_p.
24621
24622 2007-02-16  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
24623
24624         PR other/27843
24625         * Makefile.in (SYSTEM_HEADER_DIR): Use single quotes to avoid
24626         nested double- and backquotes.
24627
24628 2007-02-15  Roger Sayle  <roger@eyesopen.com>
24629
24630         PR middle-end/30391
24631         * tree.c (expr_align): Handle MODIFY_EXPR.  GIMPLE_MODIFY_STMT
24632         should be unreachable.
24633         (build2_stat): Allow construction of MODIFY_EXPR at any time.
24634         For the time being redirect GIMPLE_MODIFY_STMT to the new
24635         (renamed) build_gimple_modify_stmt_stat.
24636         (build2_gimple_stat): Rename to...
24637         (build_gimple_modify_stmt_stat): Now longer take a CODE argument.
24638         Always build a GIMPLE_MODIFY_STMT node.
24639         * tree.h (build2_gimple, build2_gimple_stat): Delete.
24640         (build_gimple_modify_stmt, build_gimple_modify_stmt_stat): New
24641         declarations.
24642
24643         * tree-cfg.c (factor_computed_gotos, tree_merge_blocks,
24644         gimplify_val): Use build_gimple_modify_stmt instead of build2_gimple.
24645         * tree-complex.c (set_component_ssa_name, expand_complex_move,
24646         expand_complex_div_wide): Likewise.
24647         * tree-ssa-dom.c (record_equivalences_from_stmt): Likewise.
24648         * tree-ssa-loop-im.c (schedule_sm): Likewise.
24649         * tree-ssa-loop-ivopts.c (rewrite_use_nonlinear_expr): Likewise.
24650         * tree-ssa-loop-manip.c (create_iv): Likewise.
24651         * tree-ssa-phiopt.c (conditional_replacement, minmax_replacement,
24652         abs_replacement): Likewise.
24653         * tree-ssa-pre.c (create_expression_by_pieces, poolify_modify_stmt,
24654         realify_fake_stores): Likewise.
24655
24656         * builtins.c (std_expand_builtin_va_start): Build a MODIFY_EXPR
24657         node rather than a GIMPLE_MODIFY_STMT node.
24658         (std_gimpify_va_arg_expr, expand_builtin_va_copy,
24659         fold_builtin_memset, fold_builtin_memory_op, do_mpfr_sincos):
24660         Likewise.
24661         (integer_valued_real_p): Handle MODIFY_EXPR, not GIMPLE_MODIFY_STMT.
24662         * expr.c (expand_expr_real_1): Handle both MODIFY_EXPR and
24663         GIMPLE_MODIFY_STMT.
24664
24665 2007-02-15  Andrew Pinski  <andrew_pinski@playstation.sony.com>
24666
24667         PR middle-end/30433
24668         * fold-const.c (fold_comparison): Add back the
24669         folding of constant complex comparisions.
24670
24671 2007-02-15  Andrew Pinski  <andrew_pinski@playstation.sony.com>
24672
24673         PR middle-end/30729
24674         * stmt.c (warn_if_unused_value): VA_ARG_EXPR has side
24675         effects unknown to this function, return early.
24676
24677 2007-02-15  Ian Lance Taylor  <iant@google.com>
24678
24679         * lower-subreg.c (move_eh_region_note): New static function.
24680         (resolve_simple_move): Call it.
24681         (decompose_multiword_subregs): Track blocks for which we resolve a
24682         simple move which is also a control flow insn.  Pass them to
24683         find_many_sub_basic_blocks.
24684         (pass_lower_subreg): Add TODO_verify_flow.
24685         (pass_lower_subreg2): Likewise.
24686
24687 2007-02-15  Sandra Loosemore  <sandra@codesourcery.com>
24688             Brooks Moses  <brooks.moses@codesourcery.com>
24689             Lee Millward  <lee.millward@codesourcery.com>
24690
24691         * tree.h (enum tree_code_class): Add tcc_vl_exp.
24692         (VL_EXP_CLASS_P): New.
24693         (TREE_OPERAND_CHECK): Use TREE_OPERAND_LENGTH instead of
24694         TREE_CODE_LENGTH.
24695         (TREE_OPERAND_CHECK_CODE): Likewise.
24696         (GIMPLE_STMT_OPERAND_CHECK): Likewise.
24697         (TREE_RTL_OPERAND_CHECK): Likewise.
24698         (tree_operand_check_failed): Make second parameter the whole tree
24699         instead of its code.  Fixed callers.
24700         (VL_EXP_CHECK): New.
24701         (TREE_OPERAND_LENGTH): New.
24702         (VL_EXP_OPERAND_LENGTH): New.
24703         (CALL_EXPR_FN): New.
24704         (CALL_EXPR_STATIC_CHAIN): New.
24705         (CALL_EXPR_ARGS): New.
24706         (CALL_EXPR_ARG): New.
24707         (call_expr_nargs): New.
24708         (CALL_EXPR_ARGP): New.
24709         (build_nt_call_list): Declare.
24710         (build_vl_exp_stat): Declare.
24711         (build_vl_exp): New.
24712         (build_call_list): Declare.
24713         (build_call_nary): Declare.
24714         (build_call_valist): Declare.
24715         (build_call_array): Declare.
24716         (call_expr_arg): Declare.
24717         (call_expr_argp): Declare.
24718         (call_expr_arglist): Declare.
24719         (fold_build_call_list): Declare.
24720         (fold_build_call_list_initializer): Declare.
24721         (fold_call_expr): Declare to replace fold_builtin.
24722         (fold_builtin_fputs): Update to agree with modified definition.
24723         (fold_builtin_strcpy): Likewise.
24724         (fold_builtin_strncpy): Likewise.
24725         (fold_builtin_memory_chk): Likewise.
24726         (fold_builtin_stxcpy_chk): Likewise.
24727         (fold_builtin_strncpy_chk): Likewise.
24728         (fold_builtin_next_arg): Likewise.
24729         (fold_build_call_expr): Declare.
24730         (fold_builtin_call_list): Declare.
24731         (fold_builtin_call_valist): Declare.
24732         (build_call_expr): Declare.
24733         (validate_arglist): Update to agree with modified definition.
24734         (tree_operand_length): New.
24735         (call_expr_arg_iterator): New.
24736         (init_call_expr_arg_iterator): New.
24737         (next_call_expr_arg): New.
24738         (first_call_expr_arg): New.
24739         (more_call_expr_args_p): New.
24740         (FOR_EACH_CALL_EXPR_ARG): New.
24741
24742         * tree.c (tree_code_class_string): Add entries for tcc_vl_exp
24743         and tcc_gimple_stmt.
24744         (tree_code_size): Update documentation.  Use sizeof (tree) rather
24745         than sizeof (char *).
24746         (tree_size): Likewise.  Add case for tcc_vl_exp.
24747         (tree_node_structure): Add case for tcc_vl_exp.
24748         (contains_placeholder_p): Likewise.
24749         (substitute_in_expr): Likewise.
24750         (substitute_placeholder_in_expr): Likewise.
24751         (stabilize_reference_1): Likewise.
24752         (build3_stat): Remove logic for CALL_EXPRs.  Replace with assertion
24753         to diagnose breakage of this interface for constructing CALL_EXPRs.
24754         (build_nt): Add similar assertion here.
24755         (build_nt_call_list): New.
24756         (simple_cst_equal) <CALL_EXPR>: Rewrite to use new accessors.
24757         (iterative_hash_expr): Use TREE_OPERAND_LENGTH instead of
24758         TREE_CODE_LENGTH.
24759         (get_callee_fndecl): Use new CALL_EXPR accessors.
24760         (tree_operand_check_failed): Change parameters to pass entire node
24761         instead of its code, so that we can call TREE_OPERAND_LENGTH on it.
24762         (process_call_operands): New.
24763         (build_vl_exp_stat): New.
24764         (build_call_list): New.
24765         (build_call_nary): New.
24766         (build_call_valist): New.
24767         (build_call_array): New.
24768         (walk_tree): Use TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
24769         (call_expr_arglist): New.
24770
24771         * tree.def (CALL_EXPR): Change representation of CALL_EXPRs to use
24772         tcc_vl_exp instead of a fixed-size tcc_expression.
24773
24774         * doc/c-tree.texi (CALL_EXPR): Document new representation and
24775         accessors for CALL_EXPRs.
24776         (AGGR_INIT_EXPR): Likewise.
24777
24778 2007-02-15  Sandra Loosemore  <sandra@codesourcery.com>
24779             Brooks Moses  <brooks.moses@codesourcery.com>
24780             Lee Millward  <lee.millward@codesourcery.com>
24781
24782         * builtins.c (c_strlen): Return NULL_TREE instead of 0.
24783         (expand_builtin_nonlocal_goto): Change parameter to be entire
24784         CALL_EXPR instead of an arglist.  Use new CALL_EXPR accessors.
24785         (expand_builtin_prefetch): Likewise.
24786         (expand_builtin_classify_type): Likewise.
24787         (mathfn_built_in): Return NULL_TREE instead of 0.
24788         (expand_errno_check): Use new CALL_EXPR accessors.
24789         (expand_builtin_mathfn): Use new CALL_EXPR accessors and constructors.
24790         Return NULL_RTX instead of 0.
24791         (expand_builtin_mathfn_2): Likewise.
24792         (expand_builtin_mathfn_3): Likewise.
24793         (expand_builtin_interclass_mathfn): Likewise.
24794         (expand_builtin_sincos): Likewise.
24795         (expand_builtin_cexpi): Likewise.
24796         (expand_builtin_int_roundingfn): Likewise.
24797         (expand_builtin_int_roundingfn_2): Likewise.
24798         (expand_builtin_pow): Likewise.
24799         (expand_builtin_powi): Likewise.
24800         (expand_builtin_strlen): Pass entire CALL_EXPR as parameter instead
24801         of arglist, fixing callers appropriately.  Use new CALL_EXPR
24802         accessors and constructors.  Return NULL_RTX instead of 0.
24803         (expand_builtin_strstr): Likewise.
24804         (expand_builtin_strchr): Likewise.
24805         (expand_builtin_strrchr): Likewise.
24806         (expand_builtin_strpbrk): Likewise.
24807         (expand_builtin_memcpy): Likewise.
24808         (expand_builtin_mempcpy): Likewise.
24809         (expand_builtin_mempcpy_args): New.
24810         (expand_builtin_memmove): Similarly to expand_builtin_mempcpy.
24811         (expand_builtin_memmove_args): New.
24812         (expand_builtin_bcopy): Similarly to expand_builtin_mempcpy.
24813         (expand_movstr): Likewise.
24814         (expand_builtin_strcpy): Likewise.
24815         (expand_builtin_strcpy_args): New.
24816         (expand_builtin_stpcpy): Similarly to expand_builtin_strcpy.
24817         (expand_builtin_strncpy): Likewise.
24818         (expand_builtin_memset): Likewise.
24819         (expand_builtin_memset_args): New.
24820         (expand_builtin_bzero): Similarly to expand_builtin_memset.
24821         (expand_builtin_memcmp): Likewise.
24822         (expand_builtin_strcmp): Likewise.
24823         (expand_builtin_strncmp): Likewise.
24824         (expand_builtin_strcat): Likewise.
24825         (expand_builtin_strncat): Likewise.
24826         (expand_builtin_strspn): Likewise.
24827         (expand_builtin_strcspn): Likewise.
24828         (expand_builtin_args_info): Likewise.
24829         (expand_builtin_va_start): Likewise.
24830         (gimplify_va_arg_expr): Likewise.
24831         (expand_builtin_va_end): Likewise.
24832         (expand_builtin_va_copy): Likewise.
24833         (expand_builtin_frame_address): Likewise.
24834         (expand_builtin_alloca): Likewise.
24835         (expand_builtin_bswap): Likewise.
24836         (expand_builtin_unop): Likewise.
24837         (expand_builtin_fputs): Likewise.
24838         (expand_builtin_expect): Likewise.
24839         (expand_builtin_fabs): Likewise.
24840         (expand_builtin_copysign): Likewise.
24841         (expand_builtin_printf): Likewise.
24842         (expand_builtin_fprintf): Likewise.
24843         (expand_builtin_sprintf): Likewise.
24844         (expand_builtin_init_trampoline): Likewise.
24845         (expand_builtin_signbit): Likewise.
24846         (expand_builtin_fork_or_exec): Likewise.
24847         (expand_builtin_sync_operation): Likewise.
24848         (expand_builtin_compare_and_swap): Likewise.
24849         (expand_builtin_lock_test_and_set): Likewise.
24850         (expand_builtin_lock_release): Likewise.
24851         (expand_builtin): Likewise.
24852         (builtin_mathfn_code): Likewise.
24853
24854         (fold_builtin_constant_p): Pass call arguments individually instead
24855         of as an arglist, fixing callers appropriately.  Use new CALL_EXPR
24856         accessors and constructors.  Return NULL_TREE instead of 0.
24857         (fold_builtin_expect): Likewise.
24858         (fold_builtin_classify_type): Likewise.
24859         (fold_builtin_strlen): Likewise.
24860         (fold_builtin_nan): Likewise.
24861         (integer_valued_real_p): Likewise.
24862         (fold_trunc_transparent_mathfn): Likewise.
24863         (fold_fixed_mathfn): Likewise.
24864         (fold_builtin_cabs): Likewise.
24865         (fold_builtin_sqrt): Likewise.
24866         (fold_builtin_cbrt): Likewise.
24867         (fold_builtin_cos): Likewise.
24868         (fold_builtin_cosh): Likewise.
24869         (fold_builtin_tan): Likewise.
24870         (fold_builtin_sincos): Likewise.
24871         (fold_builtin_cexp): Likewise.
24872         (fold_builtin_trunc): Likewise.
24873         (fold_builtin_floor): Likewise.
24874         (fold_builtin_ceil): Likewise.
24875         (fold_builtin_round): Likewise.
24876         (fold_builtin_int_roundingfn): Likewise.
24877         (fold_builtin_bitop): Likewise.
24878         (fold_builtin_bswap): Likewise.
24879         (fold_builtin_logarithm): Likewise.
24880         (fold_builtin_hypot): Likewise.
24881         (fold_builtin_pow): Likewise.
24882         (fold_builtin_powi): Likewise.
24883         (fold_builtin_exponent): Likewise.
24884         (fold_builtin_memset): Likewise.
24885         (fold_builtin_bzero): Likewise.
24886         (fold_builtin_memory_op): Likewise.
24887         (fold_builtin_bcopy): Deleted; call site changed to invoke
24888         fold_builtin_memory_op directly.
24889         (fold_builtin_strcpy): Similarly as for fold_builtin_memory_op.
24890         (fold_builtin_strncpy): Likewise.
24891         (fold_builtin_memcmp): Likewise.
24892         (fold_builtin_strcmp): Likewise.
24893         (fold_builtin_strncmp): Likewise.
24894         (fold_builtin_signbit): Likewise.
24895         (fold_builtin_copysign): Likewise.
24896         (fold_builtin_isascii): Likewise.
24897         (fold_builtin_toascii): Likewise.
24898         (fold_builtin_isdigit): Likewise.
24899         (fold_builtin_fabs): Likewise.
24900         (fold_builtin_abs): Likewise.
24901         (fold_builtin_fmin_fmax): Likewise.
24902         (fold_builtin_carg): Likewise.
24903         (fold_builtin_classify): Likewise.
24904         (fold_builtin_unordered_cmp): Likewise.
24905
24906         (fold_builtin_0, fold_builtin_2, fold_builtin_3, fold_builtin_4):
24907         New functions split out from fold_builtin_1.
24908         (fold_builtin_n): New.
24909         (fold_builtin_varargs): New.
24910         (fold_builtin): Deleted.  Most callers changed to use fold_call_expr
24911         instead.
24912         (fold_call_expr): New.
24913         (build_function_call_expr): Rewrite to use new helper function.
24914         (fold_builtin_call_list): New.
24915         (build_call_expr): New.
24916         (fold_builtin_call_valist): New.
24917         (rewrite_call_expr): New.
24918         (validate_arg): New.
24919         (validate_arglist): Change parameter to be entire CALL_EXPR instead
24920         of an arglist.  Change return type to bool.  Use new CALL_EXPR
24921         accessors.
24922
24923         (fold_builtin_strstr): Pass call arguments individually instead
24924         of as an arglist, fixing callers appropriately.  Use new CALL_EXPR
24925         accessors and constructors.  Return NULL_TREE instead of 0.
24926         (fold_builtin_strchr): Likewise.
24927         (fold_builtin_strrchr): Likewise.
24928         (fold_builtin_strpbrk): Likewise.
24929         (fold_builtin_strcat): Likewise.
24930         (fold_builtin_strncat): Likewise.
24931         (fold_builtin_strspn): Likewise.
24932         (fold_builtin_strcspn): Likewise.
24933         (fold_builtin_fputs): Likewise.
24934         (fold_builtin_next_arg): Likewise.
24935         (fold_builtin_sprintf): Likewise.
24936
24937         (expand_builtin_object_size): Use new CALL_EXPR accessors.  Use
24938         NULL_RTX instead of 0.
24939         (expand_builtin_memory_chk): Likewise.
24940         (maybe_emit_chk_warning): Likewise.
24941         (maybe_emit_sprintf_chk_warning): Likewise.
24942
24943         (fold_builtin_object_size): Pass call arguments individually instead
24944         of as an arglist, fixing callers appropriately.  Use new CALL_EXPR
24945         accessors and constructors.  Return NULL_TREE instead of 0.
24946         (fold_builtin_memory_chk): Likewise.
24947         (fold_builtin_stxcpy_chk): Likewise.
24948         (fold_builtin_strncpy_chk): Likewise.
24949         (fold_builtin_strcat_chk): Likewise.
24950         (fold_builtin_strcat_chk): Likewise.
24951         (fold_builtin_strncat_chk): Likewise.
24952         (fold_builtin_sprintf_chk): Likewise.
24953         (fold_builtin_snprintf_chk): Likewise.
24954         (fold_builtin_printf): Likewise.
24955         (fold_builtin_vprintf): Likewise.
24956
24957         * fold-const.c (negate_expr_p): Use new CALL_EXPR accessors and
24958         constructors.
24959         (operand_equal_p): Add separate tcc_vl_exp/CALL_EXPR case.
24960         (make_range): Use TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
24961         (extract_muldiv_1): Add VL_EXP_CLASS_P case.
24962         (fold_mathfn_compare): Use new CALL_EXPR accessors and constructors.
24963         (fold_unary): Likewise.
24964         (fold_binary): Likewise.
24965         (fold_ternary): Remove CALL_EXPR case, since they are no longer
24966         ternary expressions.
24967         (fold): Add logic for tcc_vl_exp.
24968         (fold_checksum_tree): Make it know about tcc_vl_exp.  Use
24969         TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
24970         (fold_build3_stat): Add assertion to flag broken interface for
24971         constructing CALL_EXPRs.
24972         (fold_build_call_list): New.
24973         (fold_build_call_list_initializer): New.
24974         (tree_expr_nonnegative_p): Use new CALL_EXPR accessors and
24975         constructors.
24976         (fold_strip_sign_ops): Likewise.
24977
24978 2007-02-15  Sandra Loosemore  <sandra@codesourcery.com>
24979             Brooks Moses  <brooks.moses@codesourcery.com>
24980             Lee Millward  <lee.millward@codesourcery.com>
24981
24982         * tree-dump.c (dequeue_and_dump) <CALL_EXPR>: Use new CALL_EXPR
24983         accessors and dump arguments explicitly.
24984
24985         * tree-pretty-print.c (do_niy): Use TREE_OPERAND_LENGTH instead of
24986         TREE_CODE_LENGTH.
24987         (dump_generic_node): Use new CALL_EXPR accessors and walk arguments
24988         explicitly.
24989         (print_call_name): Use new CALL_EXPR accessors.
24990
24991         * print-tree.c (print_node): Add case tcc_vl_exp.  Print
24992         CALL_EXPR arguments explicitly instead of as a list.  Use
24993         TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
24994
24995         * tree-vrp.c (stmt_interesting_for_vrp): Use new CALL_EXPR accessors.
24996         (vrp_visit_stmt): Likewise.
24997
24998         * tree-ssa-loop-im.c (outermost_invariant_loop_expr): Make it
24999         know about tcc_vl_exp.  Use TREE_OPERAND_LENGTH instead of
25000         TREE_CODE_LENGTH.
25001         (force_move_till_expr): Likewise.
25002
25003         * targhooks.c (default_external_stack_protect_fail): Use
25004         build_call_expr instead of build_function_call_expr.
25005         (default_hidden_stack_protect_fail): Likewise.
25006
25007         * tree-complex.c (expand_complex_libcall): Use build_call_expr to
25008         build the call.
25009
25010         * cgraphbuild.c (build_cgraph_edges): Use new CALL_EXPR accessors
25011         and walk arguments explicitly.
25012
25013         * tree-ssa-loop-niter.c (simplify_replace_tree): Use
25014         TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
25015         (expand_simple_operations): Likewise.
25016         (infer_loop_bounds_from_array): Use new CALL_EXPR accessors.
25017
25018         * gengtype.c (adjust_field_tree_exp): Use TREE_OPERAND_LENGTH instead
25019         of TREE_CODE_LENGTH.
25020         (walk_type): Tweak walking of arrays not to blow up on CALL_EXPRs.
25021
25022         * optabs.c (expand_widen_pattern-expr): Use TREE_OPERAND_LENGTH
25023         instead of TREE_CODE_LENGTH.
25024
25025         * value_prof.c (tree_ic): Use new CALL_EXPR accessors.
25026         (tree_ic_transform): Likewise.
25027         (interesting_stringop_to_profile_p): Pass entire CALL_EXPR as
25028         parameter instead of arglist.  Fix callers.
25029         (tree_stringop_fixed_value): Use new CALL_EXPR accessors.
25030         (tree_stringops_transform): Likewise.
25031         (tree_indirect_call_to_profile): Likewise.
25032         (tree_stringops_values_to_profile): Likewise.
25033
25034         * tree-tailcall.c (find_tail_calls): Use new CALL_EXPR iterator.
25035         (eliminate_tail_call): Likewise.
25036
25037         * ipa-cp.c (ipcp_update_callgraph): Use new CALL_EXPR accessors.
25038
25039         * tree-scalar-evolution.c (chrec_contains_symbols_defined_in_loop):
25040         Use TREE_OPERAND_LENGTH and generalize to handle any number of
25041         operands.
25042         (instantiate_parameters_1): Can't handle tcc_vl_exp here.
25043
25044         * omp-low.c (build_omp_barrier): Use build_call_expr.
25045         (lower_rec_input_clauses): Likewise.
25046         (lower_reduction_clauses): Likewise.
25047         (expand_parallel_call): Likewise.
25048         (maybe_catch_exception): Likewise.
25049         (expand_omp_for_generic): Likewise.
25050         (expand_omp_for_static_nochunk): Likewise.
25051         (expand_omp_sections): Likewise.
25052         (lower_omp_single_simple): Likewise.
25053         (lower_omp_single_copy): Likewise.
25054         (lower_omp_master): Likewise.
25055         (lower_omp_ordered): Likewise.
25056         (lower_omp_critical): Likewise.
25057
25058         * ipa-reference.c (check-call): Use new CALL_EXPR iterator.
25059         (scan_for_static_refs): Create tcc_vl_exp case for CALL_EXPR.
25060
25061         * tree-gimple.c (is_gimple_call_addr): Fix doc.
25062         (recalculate_side_effects): Use TREE_OPERAND_LENGTH instead of
25063         TREE_CODE_LENGTH.  Add tcc_vl_exp case.
25064
25065         * tree-chrec.c (chrec_contains_symbols): Use TREE_OPERAND_LENGTH
25066         and generalize to handle any number of operands.
25067         (chrec_contains_undetermined): Likewise.
25068         (tree_contains_chrecs): Likewise.
25069         (evolution_function_is_invariant_rec_p): Use TREE_OPERAND_LENGTH.
25070
25071         * cgraphunit.c (update_call_expr): Use new CALL_EXPR accessors.
25072
25073         * tree-ssa-ccp.c (ccp_fold): Use new CALL_EXPR accessors.  Use
25074         fold_call_expr instead of fold_builtin.
25075         (ccp_fold_builtin): Likewise.  Update calls into builtins.c to
25076         match declarations there.
25077         (fold_stmt): Use new CALL_EXPR constructor and accessors.  Doc
25078         updates.
25079
25080         * tree-ssa-loop-ivopts.c (expr_invariant_in_loop_p): Use
25081         TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
25082
25083         * ipa-pure-const.c (check_call): Use new CALL_EXPR accessors.
25084         (scan_function): Add case tcc_vl_exp for CALL_EXPR.
25085
25086         * tree-stdarg.c (execute_optimize_stdarg): Use new CALL_EXPR
25087         accessors.
25088
25089         * tree-ssa-math-opts.c (execute_cse_sincos_1): Use build_call_expr.
25090         (execute_cse_sincos): Use new CALL_EXPR accessors.
25091
25092         * tree-ssa-alias.c (find_used_portions): Use new CALL_EXPR iterator.
25093
25094         * gimple-low.c (lower_function_body): Use build_call_expr.
25095         (lower_builtin_setjmp): Likewise.
25096
25097         * expr.c (emit_block_move_via_libcall): Use build_call_expr.
25098         (set_storage_via_libcall): Likewise.
25099         (safe_from_p): Add tcc_vl_exp case.  Use TREE_OPERAND_LENGTH
25100         instead of TREE_CODE_LENGTH.
25101         (expand_expr_real_1): Use new CALL_EXPR accessors.
25102
25103         * tree-browser.c (store_child_info): Use TREE_OPERAND_LENGTH and
25104         generalize to handle any number of operands.
25105         (TB_parent_eq): Likewise.
25106
25107         * predict.c (expr_expected_value): Use new CALL_EXPR accessors.
25108         (strip_builtin_expect): Likewise.
25109
25110         * function.c (gimplify_parameters): Use build_call_expr.
25111
25112         * tree-vectorizer.c (vect_is_simple_reduction): Use
25113         TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
25114
25115         * ipa-type-escape.c (check_call): Use new CALL_EXPR iterators.
25116         (scan_for_refs): Add case tcc_vl_exp for CALL_EXPR.
25117
25118         * tree-data-ref.c (get_references_in_stmt): Use new CALL_EXPR
25119         iterators.
25120
25121         * gimplify.c (build_stack_save_restore): Use build_call_expr.
25122         (gimplify_decl_expr): Likewise.
25123         (gimplify_call_expr): Use fold_call_expr instead of fold_builtin.
25124         Use new CALL_EXPR iterators.
25125         (gimplify_modify_expr_to_memcpy): Use build_call_expr.
25126         (gimplify_modify_expr_to_memset): Likewise.
25127         (gimplify_variable_sized_compare): Likewise.
25128         (gimplify_omp_atomic_fetch_op): Likewise.
25129         (gimplify_omp_atomic_pipeline): Likewise.
25130         (gimplify_omp_atomic_mutex): Likewise.
25131         (gimplify_function_tree): Likewise.
25132
25133         * calls.c (alloca_call_p): Use new CALL_EXPR accessors.
25134         (call_expr_flags): Likewise.
25135         (expand_call): Likewise.
25136
25137         * except.c (expand_builtin_eh_return_data_regno): Pass entire
25138         CALL_EXPR as parameter instead of arglist.  Use new CALL_EXPR
25139         accessors.
25140
25141         * coverage.c (create_coverage): Use build_call_expr.
25142
25143         * tree-ssa-pre.c (expression_node_pool, list_node_pool): Delete.
25144         (temp_call_expr_obstack): New.
25145         (pool_copy_list): Delete.
25146         (temp_copy_call_expr): New.
25147         (phi_translate): Add case tcc_vl_exp for CALL_EXPR.  Use new
25148         CALL_EXPR accessors.  Get rid of special goo for copying argument
25149         lists and use temp_copy_call_expr instead.
25150         (valid_in_sets): Add case tcc_vl_exp for CALL_EXPR.  Use new
25151         CALL_EXPR accessors.
25152         (create_expression_by_pieces): Likewise.  Use build_call_array
25153         to construct the result instead of fold_build3.
25154         (create_value_expr_from): Add tcc_vl_exp.  Delete special goo for
25155         dealing with argument lists.
25156         (init_pre): Remove references to expression_node_pool and
25157         list_node_pool.  Init temp_call_expr_obstack instead.
25158         (fini_pre): Remove references to expression_node_pool and
25159         list_node_pool.
25160
25161         * tree-sra.c (sra_walk_call_expr): Use new CALL_EXPR accessors
25162         and walk arguments explicitly instead of as a list.
25163
25164         * tree-mudflap.c (mf_build_check_statement_for): Use build_call_expr.
25165         (mx_register_decls): Likewise.
25166         (mudflap_register_call): Likewise.
25167         (mudflap_finish_file): Likewise.
25168
25169         * ipa-prop.c (ipa_callsite_compute_count): Use new CALL_EXPR accessors.
25170         (ipa_callsite_compute_param): Likewise.
25171
25172         * tree-vect-patterns.c (vect_recog_pow_pattern): Use new CALL_EXPR
25173         accessors and constructor.
25174
25175         * tree-nested.c (convert_nl_goto_reference): Use new CALL_EXPR
25176         accessors and constructor.
25177         (convert_tramp_reference): Likewise.
25178         (convert_call_expr): Likewise.
25179         (finalize_nesting_tree_1): Likewise.
25180
25181         * tree-ssa.c (tree_ssa_useless_type_conversion): Use new CALL_EXPR
25182         accessors.
25183
25184         * tree-ssa-loop-prefetch.c (issue_prefetch_ref): Use build_call_expr.
25185
25186         * tree-inline.c (initialize_inlined_parameters): Pass entire
25187         CALL_EXPR as parameter instead of arglist.  Use new CALL_EXPR
25188         accessors.
25189         (estimate_num_insns_1): Use new CALL_EXPR accessors.
25190         (expand_call_inline): Tidy up call to initialize_inlined_parameters.
25191
25192         * tree-vect-transform.c (vect_create_epilog_for_reduction): Use
25193         TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
25194         (vectorizable_reduction): Likewise.
25195         (vectorizable_call): Use new CALL_EXPR iterators.
25196         (vectorizable_conversion): Use build_call_expr.
25197         (vectorizable_operation): Use TREE_OPERAND_LENGTH.
25198         (vect_gen_widened_results_half): Use build_call_expr.
25199         (vect_setup_realignment): Likewise.
25200         (vectorizable_live_operation): Use TREE_OPERAND_LENGTH.
25201
25202         * tree-object-size.c (alloc_object_size): Use new CALL_EXPR accessors.
25203         (pass_through_call): Likewise.
25204         (compute_object_sizes): Likewise.  Use fold_call_expr instead of
25205         fold_builtin.
25206
25207         * tree-profile.c (tree_gen_interval_profiler): Use build_call_expr.
25208         (tree_gen_pow2_profiler): Likewise.
25209         (tree_gen_one_value_profiler): Likewise.
25210         (tree_gen_ic_func_profiler): Likewise.
25211         (tree_gen_average_profiler): Likewise.
25212         (tree_gen_ior_profiler): Likewise.
25213
25214         * tree-ssa-structalias.c (get_constraint_for): Add case tcc_vl_exp.
25215         (find_func_aliases): Use new CALL_EXPR accessors.  Add case
25216         tcc_vl_exp.  Use TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
25217
25218         * tree-ssa-reassoc.c (get_rank): Use TREE_OPERAND_LENGTH instead
25219         of TREE_CODE_LENGTH.
25220
25221         * stmt.c (warn_if_unused_value): Use TREE_OPERAND_LENGTH instead
25222         of TREE_CODE_LENGTH.
25223
25224         * convert.c (convert_to_real): Use new CALL_EXPR accessors and
25225         constructor.
25226         (convert_to_integer): Likewise.
25227
25228         * tree-ssa-operands.c (get_call_expr_operands): Use new CALL_EXPR
25229         accessors.
25230
25231 2007-02-15  Sandra Loosemore  <sandra@codesourcery.com>
25232             Brooks Moses  <brooks.moses@codesourcery.com>
25233             Lee Millward  <lee.millward@codesourcery.com>
25234
25235         * config/alpha/alpha.c (alpha_expand_builtin): Use new CALL_EXPR
25236         accessors.
25237         * config/frv/frv.c (frv_expand_builtin): Likewise.
25238         * config/s390/s390.c (s390_expand_builtin): Likewise.
25239
25240         * config/sparc/sparc.c (sparc_gimplify_va_arg): Use build_call_expr.
25241         (sparc_expand_builtin): Use new CALL_EXPR accessors.
25242
25243         * config/i386/i386.c (ix86_function_ok_for_sibcall): Likewise.
25244         (ix86_expand_binop_builtin): Pass entire CALL_EXPR as parameter
25245         instead of arglist.  Use new CALL_EXPR accessors on it.  Fix callers.
25246         (ix86_expand_store_builtin): Likewise.
25247         (ix86_expand_unop_builtin): Likewise.
25248         (ix86_expand_unop1_builtin): Likewise.
25249         (ix86_expand_sse_compare): Likewise.
25250         (ix86_expand_sse_comi): Likewise.
25251         (ix86_expand_vec_init_builtin): Likewise.
25252         (ix86_expand_vec_ext_builtin): Likewise.
25253         (ix86_expand_vec_set_builtin): Likewise.
25254         (ix86_expand_builtin): Use new CALL_EXPR accessors.
25255
25256         * config/sh/sh.c (sh_expand_builtin): Use new CALL_EXPR accessors.
25257         * config/c4x/c4x.c (c4x_expand_builtin): Likewise.
25258
25259         * config/iq2000/iq2000.c (expand_one_builtin): Pass entire CALL_EXPR
25260         instead of arglist.  Use new CALL_EXPR accessors.  Fix callers.
25261         (iq2000_expand_builtin): Use new CALL_EXPR accessors.
25262
25263         * config/rs6000/rs6000-c.c (altivec_build_resolved_builtin): Use
25264         build_call_expr.
25265         * config/rs6000/rs6000.c (rs6000_gimplify_va_arg): Likewise.
25266         (rs6000_expand_unop_builtin): Pass entire CALL_EXPR instead of
25267         arglist.  Use new CALL_EXPR accessors.  Fix callers.
25268         (altivec_expand_abs_builtin): Likewise.
25269         (rs6000_expand_binop_builtin): Likewise.
25270         (altivec_expand_predicate_builtin): Likewise.
25271         (altivec_expand_lv_builtin): Likewise.
25272         (spe_expand_stv_builtin): Likewise.
25273         (altivec_expand_stv_builtin): Likewise.
25274         (rs6000_expand_ternop_builtin): Likewise.
25275         (altivec_expand_ld_builtin): Use new CALL_EXPR accessors.
25276         (altivec_expand_st_builtin): Likewise.
25277         (altivec_expand_dst_builtin): Likewise.
25278         (altivec_expand_vec_init_builtin): Pass entire CALL_EXPR instead of
25279         arglist.  Use new CALL_EXPR accessors.  Fix callers.
25280         (altivec_expand_vec_set_builtin): Likewise.
25281         (altivec_expand_vec_ext_builtin): Likewise.
25282         (altivec_expand_builtin): Use new CALL_EXPR accessors.
25283         (spe_expand_builtin): Likewise.
25284         (spe_expand_predicate_builtin): Pass entire CALL_EXPR instead of
25285         arglist.  Use new CALL_EXPR accessors.  Fix callers.
25286         (spe_expand_evsel_builtin): Likewise.
25287         (rs6000_expand_builtin): Use new CALL_EXPR accessors.  VCFUX and
25288         FCFSX cases must construct whole new CALL_EXPR, not just arglist.
25289
25290         * config/arm/arm.c (arm_expand_binop_builtin): Pass entire CALL_EXPR
25291         instead of arglist.  Use new CALL_EXPR accessors.  Fix callers.
25292         (arm_expand_unop_builtin): Likewise.
25293         (arm_expand_builtin): Use new CALL_EXPR accessors.
25294
25295         * config/mips/mips.c (mips_expand_builtin): Use new CALL_EXPR
25296         accessors.
25297
25298         * config/bfin/bfin.c (bfin_expand_binop_builtin): Pass entire
25299         CALL_EXPR instead of arglist.  Use new CALL_EXPR accessors.
25300         Fix callers.
25301         (bfin_expand_unop_builtin): Likewise.
25302         (bfin_expand_builtin): Use new CALL_EXPR accessors.
25303
25304 2007-02-15  Sandra Loosemore  <sandra@codesourcery.com>
25305             Brooks Moses  <brooks.moses@codesourcery.com>
25306             Lee Millward  <lee.millward@codesourcery.com>
25307
25308         * c-semantics.c (build_stmt): Add internal diagnostic check.
25309
25310         * c-pretty-print.c (pp_c_postfix_expression): Use new CALL_EXPR
25311         accessors.  Print arguments explicitly instead of as a list.
25312
25313         * c-typeck.c (build_function_call): Use new CALL_EXPR constructors.
25314
25315         * c-omp.c (c_finish_omp_barrier): Use build_call_expr.
25316         (c_finish_omp_flish): Likewise.
25317
25318         * c-common.c (verify_tree): Use new CALL_EXPR accessors.  Traverse
25319         arguments explicitly instead of as a list.  Use TREE_OPERAND_LENGTH
25320         instead of TREE_CODE_LENGTH.
25321         (check_function_arguments_recurse): Use new CALL_EXPR accessors.
25322         (c_warn_unused_result): Likewise.
25323
25324 2007-02-15  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
25325
25326         PR c/26494
25327         * doc/invoke.texi (Warning Options): Remove
25328         -Werror-implicit-function-declaration.
25329         (Wimplicit-function-declaration): Update description.
25330         * opts.c (common_handle_option): Move handling of -Werror=* to...
25331         (enable_warning_as_error): ...here.
25332         * opts.h (enable_warning_as_error): Declare.
25333         * c-decl.c (implicit_decl_warning): Unless
25334         -Wno-implicit-function-declaration is given, emit a pedwarn if
25335         -std=c99 or emit a warning if -Wimplicit-function-declaration.
25336         * c.opt (Wimplicit-function-declaration): Replace
25337         mesg_implicit_function_declaration with
25338         warn_implicit_function_declaration.
25339         * c-opts.c (c_common_handle_option):
25340         -Werror-implicit-function-declaration is exactly equal as
25341         -Werror=implicit-function-declaration.
25342         (set_Wimplicit): Replace mesg_implicit_function_declaration with
25343         warn_implicit_function_declaration.
25344         (c_common_post_options): -Wimplict-function-declaration is enabled
25345         by default by -std=c99, otherwise is disabled by default.
25346         * c-objc-common.c (c_objc_common_init): Remove flawed logic.
25347
25348 2007-02-15  Eric Botcazou  <ebotcazou@adacore.com>
25349
25350         * gimplify.c (gimplify_modify_expr): During gimplification, attach a
25351         DECL on the rhs to a DECL on the lhs for debug info purposes if the
25352         former is ignored but not the latter.
25353
25354 2007-02-15  Eric Botcazou  <ebotcazou@adacore.com>
25355
25356         * expr.c (expand_expr_real_1) <normal_inner_ref>: If a temporary
25357         is made and the reference doesn't use the alias set of its type,
25358         do not create the temporary using that type.
25359
25360 2007-02-15  Aldy Hernandez  <aldyh@redhat.com>
25361
25362         * jump.c: Remove prototypes for delete_computation and
25363         delete_prior_computation.
25364
25365 2007-02-15  Paolo Bonzini  <bonzini@gnu.org>
25366
25367         * jump.c (get_label_after): Delete.
25368         (get_label_before, delete_computation, delete_jump,
25369         delete_prior_computation, follow_jumps): Move...
25370         * reorg.c (delete_computation, delete_prior_computation): ... here...
25371         (get_label_before, delete_jump): ... making these static ...
25372         (follow_jumps): ... and simplifying this since it only runs after
25373         reload.
25374         * rtl.h (get_label_after, get_label_before, delete_jump,
25375         follow_jumps): Delete prototypes.
25376
25377 2007-02-15  Paolo Bonzini  <bonzini@gnu.org>
25378
25379         * caller-save.c (save_call_clobbered_regs): Do not process sibcalls.
25380
25381 2007-02-15  Nick Clifton  <nickc@redhat.com>
25382
25383         * varasm.c (default_asm_output_anchor): Prepend * to . symbol in
25384         order to prevent it from being munged by the target.
25385
25386 2007-02-15  Uros Bizjak  <ubizjak@gmail.com>
25387
25388         * config/i386/i386.md: Remove misleading comment.
25389
25390 2007-02-15  Alexandre Oliva  <aoliva@redhat.com>
25391
25392         * config/frv/frv.md (reload_incc, reload_outcc, reload_incc_uns,
25393         reload_outcc_uns, reload_incc_nz, reload_outcc_nz): Remove
25394         invalid patterns.
25395
25396 2007-02-15  Alexandre Oliva  <aoliva@redhat.com>
25397
25398         * tree-sra.c (instantiate_missing_elements): Canonicalize
25399         bit-field types.
25400         (sra_build_assignment): New.
25401         (generate_copy_inout, generate_element_copy,
25402         generate_element_zero, generate_one_element_init): Use it.
25403
25404 2007-02-15  Alexandre Oliva  <aoliva@redhat.com>
25405
25406         * tree-sra.c (instantiate_missing_elements): Canonicalize
25407         bit-field types.
25408         (sra_build_assignment): New.
25409         (generate_copy_inout, generate_element_copy,
25410         generate_element_zero, generate_one_element_init): Use it.
25411
25412 2007-02-15  Alexandre Oliva  <aoliva@redhat.com>
25413
25414         * dwarf2out.c (dwarf2out_finish): Accept namespaces as context of
25415         limbo die nodes.
25416
25417 2007-02-14  Joseph Myers  <joseph@codesourcery.com>
25418
25419         * emit-rtl.c (set_mem_attributes_minus_bitpos): Treat complex
25420         types as aggregates not scalars.
25421         * function.c (assign_stack_temp_for_type): Likewise.
25422
25423 2007-02-14  Roger Sayle  <roger@eyesopen.com>
25424             Zdenek Dvorak  <dvorakz@suse.cz>
25425
25426         * tree-dump.c (dump_switch_p_1): Require exact match of the option
25427         name.
25428
25429 2007-02-14  Zdenek Dvorak  <dvorakz@suse.cz>
25430
25431         * passes.c (next_pass_1): Clear the next field of the copied
25432         pass structure.
25433
25434 2007-02-14  Richard Henderson  <rth@redhat.com>
25435
25436         * tree-sra.c (early_sra): New.
25437         (decl_can_be_decomposed_p): Deny va_list if early_sra.
25438         (tree_sra_early, pass_sra_early): New.
25439         * tree-pass.h (pass_sra_early): Declare.
25440         * passes.c (init_optimization_passes): Use it.
25441
25442 2007-02-14  Richard Guenther  <rguenther@suse.de>
25443
25444         * flags.h (issue_strict_overflow_warning): Convert to a macro.
25445
25446 2007-02-14  Dorit Nuzman  <dorit@il.ibm.com>
25447
25448          PR tree-optimization/30771
25449         * tree-vect-analyze.c (vect_determine_vectorization_factor): Traverse
25450         also phi nodes.
25451         (vect_analyze_operations): Induction phis can now be marked as
25452         used_in_loop.
25453         (vect_mark_stmts_to_be_vectorized): No special treatment for phis.
25454         Update documentation accordingly.
25455
25456 2007-02-14  Nick Clifton  <nickc@redhat.com>
25457
25458         * builtin-types.def (DEF_FUNCTION_TYPE_x): Do not imply that at
25459         most 3 arguments are supported.
25460         (DEF_FUNCTION_TYPE_VAR_5): Fix typo in its description.
25461
25462 2007-02-13  Seongbae Park <seongbae.park@gmail.com>
25463
25464         * bitmap.c (bitmap_and, bitmap_and_compl, bitmap_xor):
25465         Ensure dst->current is valid.
25466
25467 2007-02-13  Paul Brook  <paul@codesourcery.com>
25468
25469         * config.gcc: Add arm*-*-uclinux-*eabi.
25470         * config/arm/uclinux-elf.h (TARGET_OS_CPP_BUILTINS): Define.
25471         (SUBTARGET_EXTRA_LINK_SPEC): Define.
25472         (STARTFILE_SPEC, ENDFILE_SPEC): Remove broken -shared handling.
25473         (LINK_GCC_C_SEQUENCE_SPEC): Undef.
25474         (LINK_SPEC): Define.
25475         (LIB_SPEC): Define.
25476         * config/arm/arm.c (arm_override_options): Use r9 as EABI PIC
25477         register.
25478         * config/arm/uclinux-eabi.h: New file.
25479         * config/arm/linux-eabi.h (WCHAR_TYPE): Remove.
25480         * config/arm/linux-gas.h (WCHAR_TYPE): Use unsigned long on AAPCS
25481         based targets.
25482
25483 2007-02-13  Ian Lance Taylor  <iant@google.com>
25484
25485         * common.opt: Add Wstrict-overflow and Wstrict-overflow=.
25486         * flags.h (warn_strict_overflow): Declare.
25487         (enum warn_strict_overflow_code): Define.
25488         (issue_strict_overflow_warning): New static inline function.
25489         * opts.c (warn_strict_overflow): New variable.
25490         (common_handle_option): Handle OPT_Wstrict_overflow and
25491         OPT_Wstrict_overflow_.
25492         * c-opts.c (c_common_handle_option): Set warn_strict_overflow for
25493         OPT_Wall.
25494         * fold-const.c: Include intl.h.
25495         (fold_deferring_overflow_warnings): New static variable.
25496         (fold_deferred_overflow_warning): New static variable.
25497         (fold_deferred_overflow_code): New static variable.
25498         (fold_defer_overflow_warnings): New function.
25499         (fold_undefer_overflow_warnings): New function.
25500         (fold_undefer_and_ignore_overflow_warnings): New function.
25501         (fold_deferring_overflow_warnings_p): New function.
25502         (fold_overflow_warning): New static function.
25503         (make_range): Add strict_overflow_p parameter.  Change all
25504         callers.
25505         (extract_muldiv, extract_muldiv_1): Likewise.
25506         (fold_unary) [ABS_EXPR]: Check ABS_EXPR before calling
25507         tree_expr_nonnegative_p.
25508         (fold_negate_expr): Call fold_overflow_warning.
25509         (fold_range_test): Likewise.
25510         (fold_comparison): Likewise.
25511         (fold_binary): Likewise.  Call tree_expr_nonnegative_warnv_p
25512         instead of tree_expr_nonnegative_p.
25513         (tree_expr_nonnegative_warnv_p): Rename from
25514         tree_expr_nonnegative_p, add strict_overflow_p parameter.
25515         (tree_expr_nonnegative_p): New function.
25516         (tree_expr_nonzero_warnv_p): Rename from tree_expr_nonzero_p, add
25517         strict_overflow_p parameter.
25518         (tree_expr_nonzero_p): New function.
25519         * passes.c (verify_interpass_invariants): New static function.
25520         (execute_one_pass): Call it.
25521         * tree-ssa-loop-niter.c (expand_simple_operations): Ignore fold
25522         warnings.
25523         (number_of_iterations_exit, loop_niter_by_eval): Likewise.
25524         (estimate_numbers_of_iterations): Likewise.
25525         (scev_probably_wraps_p): Likewise.
25526         * tree-ssa-ccp.c: Include "toplev.h".
25527         (evaluate_stmt): Defer fold overflow warnings until we know we are
25528         going to optimize.
25529         (struct fold_stmt_r_data): Add stmt field.
25530         (fold_stmt_r): Defer fold overflow warnings until we know we
25531         optimized.
25532         (fold_stmt): Initialize stmt field of fold_stmt_r_data.
25533         (fold_stmt_inplace): Likewise.
25534         * tree-cfgcleanup.c: Include "toplev.h" rather than "errors.h".
25535         (cleanup_control_expr_graph): Defer fold overflow warnings until
25536         we know we are going to optimize.
25537         * tree-cfg.c (fold_cond_expr_cond): Likewise.
25538         * tree-ssa-threadedge.c (simplify_control_stmt_condition):
25539         Likewise.
25540         * tree-vrp.c (vrp_expr_computes_nonnegative): Call
25541         tree_expr_nonnegative_warnv_p instead of tree_expr_nonnegative_p.
25542         * tree-ssa-loop-manip.c (create_iv): Likewise.
25543         * c-typeck.c (build_conditional_expr): Likewise.
25544         (build_binary_op): Likewise.
25545         * tree-vrp.c (vrp_expr_computes_nonzero): Call
25546         tree_expr_nonzero_warnv_p instead of tree_expr_nonzero_p.
25547         (extract_range_from_unary_expr): Likewise.
25548         * simplify-rtx.c (simplify_const_relational_operation): Warn when
25549         assuming that signed overflow does not occur.
25550         * c-common.c (pointer_int_sum): Ignore fold overflow warnings.
25551         * tree.h (tree_expr_nonnegative_warnv_p): Declare.
25552         (fold_defer_overflow_warnings): Declare.
25553         (fold_undefer_overflow_warnings): Declare.
25554         (fold_undefer_and_ignore_overflow_warnings): Declare.
25555         (fold_deferring_overflow_warnings_p): Declare.
25556         (tree_expr_nonzero_warnv_p): Declare.
25557         * doc/invoke.texi (Option Summary): Add -Wstrict-overflow to list
25558         of warning options.
25559         (Warning Options): Document -Wstrict-overflow.
25560         * Makefile.in (tree-ssa-threadedge.o): Depend on toplev.h.
25561         (tree-ssa-ccp.o): Likewise.
25562         (tree-cfgcleanup.o): Change errors.h dependency to toplev.h.
25563         (fold-const.o): Depend on intl.h.
25564
25565 2007-02-13  Ian Lance Taylor  <iant@google.com>
25566
25567         PR middle-end/30751
25568         * lower-subreg.c (resolve_simple_move): Decompose subregs in
25569         addresses.
25570
25571 2007-02-13  Stuart Hastings  <stuart@apple.com>
25572
25573         * config/i386/i386.md (fixuns_truncdfhi2): Require SSE2.
25574
25575 2007-02-13  Richard Henderson  <rth@redhat.com>
25576
25577         * config/alpha/alpha.c (alpha_stdarg_optimize_hook): Strip
25578         handled_component_p before looking for the indirect_ref.
25579
25580 2007-02-13  Richard Henderson  <rth@redhat.com>
25581
25582         * config/i386/i386.md (bswapsi_1): Rename from bswapsi2,
25583         remove flags clobber.
25584         (bswapsi2): New expander, emit code for !TARGET_BSWAP.
25585         (bswaphi_lowpart): New.
25586         (bswapdi2): Rename from bswapdi2_rex, remove flags clobber,
25587         remove TARGET_BSWAP test.  Delete expander of the same name.
25588
25589         * optabs.c (widen_bswap, expand_doubleword_bswap): New.
25590         (expand_unop): Use them.
25591
25592 2007-02-13  Uros Bizjak  <ubizjak@gmail.com>
25593
25594         * config/i386/i386.md (cmpdi_ccno_1_rex64, *cmpsi_ccno_1,
25595         *cmphi_ccno_1, *cmpqi_ccno_1, *movsi_xor, *movstricthi_xor,
25596         *movstrictqi_xor, *movdi_xor_rex64, *ashldi3_1_rex64,
25597         *ashldi3_cmp_rex64, *ashldi3_cconly_rex64, ashlsi3, *ashlsi3_1_zext,
25598         *ashlsi3_cmp, *ashlsi3_cconly, *ashlsi3_cmp_zext, *ashlhi3_1_lea,
25599         *ashlhi3_1, *ashlhi3_cmp, *ashlhi3_cconly, *ashlqi3_1_lea,
25600         *ashlqi3_1, *ashlqi3_cmp, *ashlqi3_cconly): Remove equivalent
25601         assembler dialect choice from asm templates.
25602
25603 2007-02-12  Richard Henderson  <rth@redhat.com>
25604
25605         * config/i386/i386.md (fixuns_trunc<SSEMODEF>si_1): New insn.
25606         (fixuns_trunc<SSEMODEF>si2): Use it.
25607         * config/i386/sse.md (vec_setv4sf_0): Export.
25608         * config/i386/i386.c (ix86_build_const_vector): Export.
25609         (ix86_split_convert_uns_si_sse): Rename from
25610         ix86_expand_convert_uns_si_sse and rewrite as a splitter.
25611         * config/i386/i386-protos.h: Update.
25612
25613 2007-02-13  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
25614
25615         PR c/29521
25616         * c-typeck.c (c_finish_return): Improve warning message.
25617
25618 2007-02-12  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
25619
25620         * alias.c (find_symbolic_term): Delete unused function.
25621
25622 2007-02-12  Uros Bizjak  <ubizjak@gmail.com>
25623
25624         * config/i386/i386.md (paritydi2, paritysi2): New expanders.
25625         (paritydi2_cmp, paritydi2_cmp): New insn and split patterns.
25626         (*parityhi2_cmp, *parityqi2_cmp): New insn patterns.
25627
25628 2007-02-12  Eric Botcazou  <ebotcazou@adacore.com>
25629
25630         * tree.h (DECL_IGNORED_P): Document further effect for FUNCTION_DECL.
25631         * cgraphunit.c (cgraph_expand_function): If DECL_IGNORED_P is set on
25632         the function, temporarily point the debug interface to the null one.
25633
25634 2007-02-12  Eric Botcazou  <ebotcazou@adacore.com>
25635
25636         * dwarf2out.c (round_up_to_align): New static function.
25637         (field_byte_offset): Use it to round the offset.
25638
25639 2007-02-12  Richard Henderson  <rth@redhat.com>
25640
25641         * config/alpha/alpha.md (bswapsi2, bswapdi2): New.
25642         (inswl_const): Export.
25643
25644 2007-02-12  Richard Henderson  <rth@redhat.com>
25645
25646         * calls.c (emit_library_call_value_1): If PROMOTE_MODE modifed the
25647         result mode of the libcall, convert back to outmode.
25648
25649 2007-02-12  Roger Sayle  <roger@eyesopen.com>
25650
25651         * config/i386/i386.md (*bswapdi2_rex): Renamed from bswapdi2.
25652         (bswapdi2): New define_expand to implement 32-bit implementation.
25653
25654 2007-02-12  Nick Clifton  <nickc@redhat.com>
25655
25656         * doc/invoke.texi (Overall Options): Document --help=.
25657         * gcc.c (target_help_flag): Rename to print_subprocess_flag.
25658         (cc1_options): Pass --help= on to cc1.
25659         (display_help): Add description of --help=.
25660         (process_command): Add code to handle --help=.  Allow translated
25661         --help and --target-help switches to be passed on to compiler
25662         sub-process.
25663         (main): Remove unused if statement.
25664         * opts.c (columns): Remove.
25665         (LEFT_COLUMN): Define.
25666         (wrap_help): Add columns argument.
25667         (print_filtered_help): Change parameters to be an include bitmask,
25668         an exclude bitmask, an any bitmask and the column width.  Move the
25669         code to display the params list here.  Add code to display the
25670         status of options rather than their descriptions if the quiet flag
25671         is not active.
25672         (print_specific_help): Change parameters to be an include bitmask,
25673         an exclude bitmask and an any bitmask.  Move code to look up the
25674         column width here.  Decide upon the title for an options listing.
25675         (common_handle_options): Add code to handle --help=.  Adapt code
25676         for --help and --target-help to use the revised form of the
25677         print_specific_help function.
25678         (print_help): Delete.
25679         (print_param_help): Delete.
25680         (print_switch): Delete.
25681         * opts.h (cl_lang_count): Add prototype.
25682         (CL_PARAMS, CL_WARNING, CL_OPTIMIZATION, CL_MIN_OPTION_CLASS,
25683         CL_MAX_OPTION_CLASS): New defines.
25684         * optc-gen.awk: Add construction of cl_lang_count.
25685         * c.opt: Add Warning attribute to warning options and Optimization
25686         attribute to optimization options.
25687         * common.opt: Likewise.
25688         Add --help=.
25689         Add -fhelp and -ftarget-help as aliases for the transformed --help
25690         and --target-help options.
25691         * opt-functions.awk: Add code to handle Warning and Optimization
25692         attributes.
25693
25694 2007-02-12  Richard Henderson  <rth@redhat.com>
25695
25696         * config/alpha/constraints.md: New file.
25697         * config/alpha/alpha.c: Include tm-constrs.h.
25698         (alpha_const_ok_for_letter_p, alpha_const_double_ok_for_letter_p,
25699         alpha_extra_constraint): Remove.
25700         (alpha_emit_conditional_branch): Use satisfies_constraint_*.
25701         * config/alpha/alpha-protos.h: Update.
25702         * config/alpha/alpha.h (REG_CLASS_FROM_LETTER): Remove.
25703         (CONST_OK_FOR_LETTER_P, CONST_DOUBLE_OK_FOR_LETTER_P): Remove.
25704         (EXTRA_CONSTRAINT): Remove.
25705         * config/alpha/alpha.md: Include constraints.md.
25706         (adddi splitter): Use satisfies_constraint_*.
25707         * config/alpha/predicates.md (add_operand): Likewise.
25708         (sext_add_operand, addition_operation): Likewise.
25709
25710 2007-02-12  Dorit Nuzman  <dorit@il.ibm.com>
25711
25712         PR tree-optimization/29145
25713         * tree-data-ref.c (base_addr_differ_p): Make us more conservative
25714         in our handling of restrict qualified pointers.
25715
25716 2007-02-12  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
25717
25718         PR middle-end/7651
25719         * doc/invoke.texi (Wunused-value): Update description.
25720         (Wextra): Delete item.
25721         * opts.c (set_Wextra): Don't use the value of Wextra to set the
25722         value of Wunused-value.
25723         * c-typeck.c (c_process_expr_stmt): Don't check extra_warnings.
25724         (c_finish_stmt_expr): Don't check extra_warnings.
25725         (emit_side_effect_warnings): The caller is responsible to check
25726         warn_unused_value.
25727
25728 2007-02-11  Roger Sayle  <roger@eyesopen.com>
25729             Matt Thomas  <matt@3am-software.com>
25730
25731         * simplify-rtx.c (simplify_relational_operation_1): Correct typo.
25732
25733 2007-02-11  Roger Sayle  <roger@eyesopen.com>
25734
25735         * simplify-rtx.c (simplify_relational_operation_1): Optimize
25736         comparisons of POPCOUNT against zero.
25737         (simplify_const_relational_operation): Likewise.
25738
25739 2007-02-11  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
25740
25741         * doc/invoke.texi (Wextra): Delete outdated paragraph.
25742
25743 2007-02-11  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
25744
25745         * dwarf2out.c (root_type): Delete unused function.
25746
25747 2007-02-11  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
25748
25749         * genattrtab.c (contained_in_p): Delete unused function.
25750         (write_expr_attr_cache): Likewise.
25751
25752 2007-02-11  Jan Hubicka  <jh@suse.cz>
25753
25754         * ipa-inline.c (cgraph_edge_badness): Add "else" missing in the
25755         previous patch.
25756
25757 2007-02-11  Steven Bosscher  <steven@gcc.gnu.org>
25758
25759         * fwprop.c (try_fwprop_subst): Use set_unique_reg_note
25760         to add the REG_EQ* note.
25761         * see.c (see_merge_one_use_extension): Likewise.
25762         * local-alloc.c (update_equiv_regs): Likewise.  Also don't
25763         turn REG_EQUAL notes into REG_EQUIV notes if the target
25764         register may have more than one set.
25765         * function.c (assign_parm_setup_reg): Use set_unique_reg_note.
25766         * gcse.c (try_replace_reg): Likewise.
25767         * alias.c (init_alias_analysis): Use find_reg_equal_equiv_note.
25768         * calls.c (fixup_tail_calls): Likewise.  Abort if there is
25769         more than one REG_EQUIV note.
25770         * reload1.c (gen_reload): Use set_unique_reg_note.
25771
25772 2007-02-11  Uros Bizjak  <ubizjak@gmail.com>
25773
25774         * config/i386/i386.c (TARGET_VECTORIZE_BUILTIN_CONVERSION): Define.
25775         (ix86_builtin_conversion): New function.
25776
25777 2007-02-06  Mark Mitchell  <mark@codesourcery.com>
25778
25779         PR target/29487
25780         * tree.h (DECL_REPLACEABLE_P): New macro.
25781         * except.c (set_nothrow_function_flags): Likewise.
25782
25783 2007-02-11  Tehila Meyzels  <tehila@il.ibm.com>
25784             Ira Rosen  <irar@il.ibm.com>
25785             Dorit Nuzman  <dorit@il.ibm.com>
25786
25787         * doc/tm.texi (TARGET_VECTORIZE_BUILTIN_CONVERSION): New target hook.
25788         * targhooks.c (default_builtin_vectorized_conversion): New.
25789         * targhooks.h (default_builtin_vectorized_function): New declaration.
25790         * target.h (struct vectorize): Add builtin_conversion field.
25791         * tree-vectorizer.h (type_conversion_vec_info_type): New enum
25792         stmt_vec_info_type value.
25793         (vectorizable_conversion): New declaration.
25794         * tree-vect-analyze.c (vect_analyze_operations): Add
25795         vectorizable_conversion call.
25796         * target-def.h (TARGET_VECTORIZE_BUILTIN_CONVERSION): New.
25797         * tree-vect-transform.c (vectorizable_conversion): New function.
25798         (vect_transform_stmt): Add case for type_conversion_vec_info_type.
25799         * tree-vect-generic.c (expand_vector_operations_1): Consider correct
25800         mode.
25801         * config/rs6000/rs6000.c (rs6000_builtin_conversion): New.
25802         (TARGET_VECTORIZE_BUILTIN_CONVERSION): Defined.
25803         (rs6000_expand_builtin): Add handling a case of ALTIVEC_BUILTIN_VCFUX
25804         or ALTIVEC_BUILTIN_VCFSX.
25805
25806 2007-02-10  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
25807
25808         PR target/30634
25809         * pa.md (movdf): For 64-bit target, fail if operand 1 is a non-zero
25810         CONST_DOUBLE and operand 0 is a hard register.
25811         (movdi): For 64-bit target, remove code to force CONST_DOUBLE to
25812         memory.  Fail if operand 1 is a non-zero CONST_INT and operand 0
25813         is a hard floating-point register.
25814
25815 2007-02-10  Richard Henderson  <rth@redhat.com>
25816             Jakub Jelinek  <jakub@redhat.com>
25817             Alexandre Oliva  <aoliva@redhat.com>
25818
25819         * Makefile.in (libgcc-support, libgcc.mvars): Add emutls.c.
25820         * builtin-types.def (BT_WORD): Make unsigned.
25821         (BT_FN_VOID_PTR_WORD_WORD_PTR): New.
25822         * builtins.def (BUILT_IN_EMUTLS_GET_ADDRESS): New.
25823         (BUILT_IN_EMUTLS_REGISTER_COMMON): New.
25824         * c-decl.c (grokdeclarator): Don't error if !have_tls.
25825         * c-parser.c (c_parser_omp_threadprivate): Likewise.
25826         * dwarf2out.c (loc_descriptor_from_tree_1): Don't do anything for
25827         emulated tls.
25828         * expr.c (emutls_var_address): New.
25829         (expand_expr_real_1): Expand emulated tls.
25830         (expand_expr_addr_expr_1): Likewise.
25831         * libgcc-std.ver: Add __emutls_get_address, __emutls_register_common.
25832         * output.h (emutls_finish): Declare.
25833         * toplev.c (compile_file): Call it.
25834         * tree-ssa-address.c (gen_addr_rtx): Check for const-ness of the
25835         address before wrapping in CONST.
25836         * varasm.c (emutls_htab, emutls_object_type): New.
25837         (EMUTLS_VAR_PREFIX, EMUTLS_TMPL_PREFIX): New.
25838         (get_emutls_object_name, get_emutls_object_type): New.
25839         (get_emutls_init_templ_addr, emutls_decl): New.
25840         (emutls_common_1, emutls_finish): New.
25841         (assemble_variable): When emulating tls, swap decls; generate
25842         constructor for the emutls objects.
25843         (do_assemble_alias): When emulating tls, swap decl and target name.
25844         (default_encode_section_info): Don't add SYMBOL_FLAG_TLS_SHIFT
25845         for emulated tls.
25846         * varpool.c (decide_is_variable_needed): Look at force_output.
25847         Recurse for emulated tls.
25848         (cgraph_varpool_remove_unreferenced_decls): Remove checks redundant
25849         with decide_is_variable_needed.
25850         * emutls.c: New file.
25851         * config/sparc/sol2.h (ASM_DECLARE_OBJECT_NAME): Only emit
25852         tls_object for real tls.
25853
25854 2007-02-10  Kaz Kojima  <kkojima@gcc.gnu.org>
25855
25856         PR rtl-optimization/29599
25857         * reload1.c (eliminate_regs_in_insn): Take the destination
25858         mode into account when computing the offset.
25859
25860 2007-02-09  Stuart Hastings  <stuart@apple.com>
25861             Richard Henderson  <rth@redhat.com>
25862
25863         * config/i386/i386.h (TARGET_KEEPS_VECTOR_ALIGNED_STACK): New.
25864         * config/i386/darwin.h: (TARGET_KEEPS_VECTOR_ALIGNED_STACK): New.
25865         * config/i386/i386.md (fixuns_trunc<mode>si2, fixuns_truncsfhi2,
25866         fixuns_truncdfhi2): New.
25867         (fix_truncsfdi_sse): Call ix86_expand_convert_sign_didf_sse.
25868         (floatunsdidf2): Call ix86_expand_convert_uns_didf_sse.
25869         (floatunssisf2): Add call to ix86_expand_convert_uns_sisf_sse.
25870         (floatunssidf2): Allow nonimmediate source.
25871         * config/i386/sse.md (movdi_to_sse): New.
25872         (vec_concatv2di): Drop '*'.
25873         * config/i386/i386-protos.h (ix86_expand_convert_uns_si_sse,
25874         ix86_expand_convert_uns_didf_sse, ix86_expand_convert_uns_sidf_sse,
25875         ix86_expand_convert_uns_sisf_sse, ix86_expand_convert_sign_didf_sse):
25876         New.
25877         * config/i386/i386.c (ix86_expand_convert_uns_si_sse,
25878         ix86_expand_convert_uns_didf_sse, ix86_expand_convert_uns_sidf_sse,
25879         ix86_expand_convert_uns_sisf_sse, ix86_expand_convert_sign_didf_sse,
25880         ix86_build_const_vector, ix86_expand_vector_init_one_nonzero): New.
25881         (ix86_build_signbit_mask): Fix decl of v, refactor to call
25882         ix86_build_const_vector.
25883         (x86_emit_floatuns): Rewrite.
25884
25885 2007-02-10  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
25886
25887         * genautomata.c (longest_path_length): Delete unused function.
25888         (struct state): Delete unused longest_path_length.
25889         (UNDEFINED_LONGEST_PATH_LENGTH): Delete unused macro.
25890         (get_free_state): Delete unused.
25891
25892 2007-02-09  Jan Hubicka  <jh@suse.cz>
25893
25894         * params.def (PARAM_INLINE_UNIT_GROWTH): Set to 30.
25895         * doc/invoke.texi (inline-unit-growth): Update default value.
25896
25897         * Makefile.in (passes.o, ipa-inline.o): Add dependencies.
25898         * cgraphbuild.c (build_cgraph_edges): Compute frequencies.
25899         (rebuild_cgraph_edges): Likewise.
25900         * cgraph.c (cgraph_set_call_stmt): Add new argument frequency.
25901         (dump_cgraph_node): Dump frequencies.
25902         (cgraph_clone_edge): Add frequency scales.
25903         (cgraph_clone_node): Add freuqnecy.
25904         * cgraph.h (cgraph_edge): Add freuqnecy argument.
25905         (CGRAPH_FREQ_BASE, CGRAPH_FREQ_MAX): New constants.
25906         (cgraph_create_edge, cgraph_clone_edge, cgraph_clone_node): Update.
25907         * tree-pass.h (TODO_rebuild_frequencies): New constant.
25908         * cgraphunit.c (verify_cgraph_node): Verify frequencies.
25909         (cgraph_copy_node_for_versioning): Update call of cgraph_clone_edge.
25910         (save_inline_function_body): Likewise.
25911         * ipa-inline.c: inluce rtl.h
25912         (cgraph_clone_inlined_nods): Update call of cgraph_clone_node.
25913         (cgraph_edge_badness): Use frequencies.
25914         (cgraph_decide_recursive_inlining): Update clonning.
25915         (cgraph_decide_inlining_of_small_function): Dump frequency.
25916         * predict.c (estimate_bb_frequencies): Export.
25917         * predict.h (estimate_bb_frequencies): Declare.
25918         * tree-inline.c (copy_bb): Watch overflows.
25919         (expand_call_inline): Update call of cgraph_create_edge.
25920         (optimize_inline_calls): Use TODO flags to update frequnecies.
25921         * passes.h: Include predict.h
25922         (init_optimization_passes): Move profile ahead.
25923         (execute_function_todo): Handle TODO_rebuild_frequencies.
25924
25925 2007-02-09  Roger Sayle  <roger@eyesopen.com>
25926
25927         * config/alpha/alpha.c (emit_insxl): Force the first operand of
25928         the insbl or inswl pattern into a register.
25929
25930 2007-02-09  Roger Sayle  <roger@eyesopen.com>
25931
25932         * config/ia64/ia64.md (bswapdi2): New define_insn.
25933
25934 2007-02-09  Richard Henderson  <rth@redhat.com>
25935
25936         * config/i386/constraints.md (Ym): New constraint.
25937         * config/i386/i386.md (movsi_1): Change Y2 to Yi constraints.
25938         (movdi_1_rex64): Split sse and xmm general register moves from
25939         memory move alternatives.  Use conditional register constraints.
25940         (movsf_1, movdf_integer): Likewise.
25941         (zero_extendsidi2_32, zero_extendsidi2_rex64): Likewise.
25942         (movdf_integer_rex64): New.
25943         (pushsf_rex64): Fix output constraints.
25944         * config/i386/sse.md (sse2_loadld): Split rm alternative, use Yi.
25945         (sse2_stored): Likewise.
25946         (sse2_storeq_rex64): New.
25947         * config/i386/i386.c (x86_inter_unit_moves): Enable for not
25948         amd and not generic.
25949         (ix86_secondary_memory_needed): Don't bypass TARGET_INTER_UNIT_MOVES
25950         for optimize_size.  Remove SF/DFmode hack.
25951
25952 2007-02-09  Dwarakanath Rajagopal  <dwarak.rajagopal@amd.com>
25953
25954         * config/i386/driver-i386.c: Turn on -mtune=native for AMDFAM10.
25955         (bit_SSE4a): New.
25956
25957 2007-02-09  Nathan Sidwell  <nathan@codesourcery.com>
25958             Richard Sandiford  <richard@codesourcery.com>
25959
25960         * config.gcc (m68010-*-netbsdelf*, m68k*-*-netbsdelf*)
25961         (m68k*-*-openbsd*, m68k-*-linux*): Set default_cf_cpu.
25962         (m68k-*-aout*, m68k-*-coff*, m68k-*-uclinux*, m68k-*-rtems*): Add
25963         m68k/t-mlib to tmake_file.
25964         (m68020-*-elf*, m68k-*-elf*): Likewise.  Add t-m68kbare as well.
25965         (m68k*-*-*): Use --with-arch to pick a default for --with-cpu.
25966         (m680[012]0-*-*, m68k*-*-*): Add support for --with-arch.
25967         Allow it to be cf or m68k.  Set m68k_arch_family.  If that
25968         variable is not empty, add t-$m68k_arch_family to tmake_file.
25969         Add t-mlibs to tmake_file.
25970         * doc/install.texi: Document --with-arch=m68k and --with-arch=cf.
25971         * config/m68k/t-cf: New file.
25972         * config/m68k/t-m68k: Likewise.
25973         * config/m68k/t-mlibs: Likewise.
25974         * config/m68k/t-m68kbare (MULTILIB_OPTIONS, MULTILIB_DIRNAMES)
25975         (MULTILIB_MATCHES, MULTILIB_EXCEPTIONS): Delete.
25976         (M68K_MLIB_DIRNAMES, M68K_MLIB_OPTIONS): Define.
25977         * config/m68k/t-m68kelf (MULTILIB_OPTIONS, MULTILIB_DIRNAMES)
25978         (MULTILIB_MATCHES, MULTILIB_EXCEPTIONS, LIBGCC, INSTALL_LIBGCC):
25979         Delete.
25980         * config/m68k/t-openbsd (MULTILIB_OPTIONS, LIBGCC): Delete.
25981         (INSTALL_LIBGCC): Delete.
25982         (M68K_MLIB_DIRNAMES, M68K_MLIB_OPTIONS): Define.
25983         * config/m68k/t-rtems (MULTILIB_OPTIONS, MULTILIB_DIRNAMES)
25984         (MULTILIB_MATCHES, MULTILIB_EXCEPTIONS): Delete.
25985         (M68K_MLIB_CPU): Define.
25986         * config/m68k/t-uclinux (MULTILIB_OPTIONS, MULTILIB_DIRNAMES)
25987         (MULTILIB_MATCHES, MULTILIB_EXCEPTIONS): Delete.
25988         (M68K_MLIB_CPU, M68K_MLIB_OPTIONS, M68K_MLIB_DIRNAMES): Define.
25989
25990 2007-02-09  Zdenek Dvorak  <dvorakz@suse.cz>
25991             Richard Guenther  <rguenther@suse.de>
25992
25993         PR middle-end/23361
25994         * fold-const.c (fold_comparison): Handle obfuscated comparisons
25995         against INT_MIN/INT_MAX.
25996         * tree-ssa-loop-ivcanon.c (remove_empty_loop): Print to dump
25997         file if a loop is removed.
25998
25999 2007-02-09  Joseph Myers  <joseph@codesourcery.com>
26000
26001         * calls.c (store_one_arg): Pass correct alignment to
26002         emit_push_insn for non-BLKmode values.
26003         * expr.c (emit_push_insn): If STRICT_ALIGNMENT, copy to an
26004         unaligned stack slot via a suitably aligned slot.
26005
26006 2007-02-08  DJ Delorie  <dj@redhat.com>
26007
26008         * config/m32c/m32c.c (m32c_unpend_compare): Add default to silence
26009         warnings.
26010         (legal_subregs): Use unsigned char, make const.
26011         (m32c_illegal_subreg_p): Use ARRAY_SIZE.  Delete unused variables.
26012
26013 2007-02-08  Paul Brook  <paul@codesourcery.com>
26014
26015         * config/arm/lib1funcs.asm (RETLDM): Pop directly into PC when no
26016         special interworking needed.
26017
26018 2007-02-08  Harsha Jagasia  <harsha.jagasia@amd.com>
26019
26020         * config/i386/xmmintrin.h: Make inclusion of emmintrin.h
26021         conditional to __SSE2__.
26022         (Entries below should have been added to first ChangeLog
26023         entry for amdfam10 dated 2007-02-05)
26024         * config/i386/emmintrin.h: Generate #error if __SSE2__ is not
26025         defined.
26026         * config/i386/pmmintrin.h: Generate #error if __SSE3__ is not
26027         defined.
26028         * config/i386/tmmintrin.h: Generate #error if __SSSE3__ is not
26029         defined.
26030
26031 2007-02-08  DJ Delorie  <dj@redhat.com>
26032
26033         * config/m32c/m32c-protos.h (m32c_illegal_subreg_p): New.
26034         * config/m32c/m32c.c (legal_subregs): New.
26035         (m32c_illegal_subreg_p): New.
26036         * config/m32c/predicates.md (m32c_any_operand): Use it to reject
26037         unsupported subregs of hard regs.
26038
26039 2007-02-08  Jan Hubicka  <jh@suse.cz>
26040
26041         * tree-cfg.c (bsi_replace): Shortcut when replacing the statement with
26042         the same one; always update histograms.
26043
26044 2007-02-08  Diego Novillo  <dnovillo@redhat.com>
26045
26046         * passes.c (init_optimization_passes): Tidy comment.
26047
26048 2007-02-08  Roger Sayle  <roger@eyesopen.com>
26049
26050         * simplify-rtx.c (simplify_unary_operation_1) <POPCOUNT>: We can
26051         strip zero_extend, bswap and rotates from POCOUNT's argument.
26052         <PARITY>: Likewise, we can strip not, bswap, sign_extend,
26053         zero_extend and rotates from PARITY's argument.
26054         <BSWAP>: A byte-swap followed by a byte-swap is an identity.
26055         (simplify_const_unary_operation) <BSWAP>: Evaluate the byte-swap
26056         of an integer constant at compile-time.
26057
26058 2007-02-08  Diego Novillo  <dnovillo@redhat.com>
26059
26060         PR 30562
26061         * tree-flow.h (struct var_ann_d): Remove field 'is_used'.
26062         Update all users.
26063         * tree-ssa-alias.c (compute_is_aliased): Remove.  Update all
26064         users.
26065         (init_alias_info):
26066         * tree-ssa-live.c (remove_unused_locals): Do not remove
26067         TREE_ADDRESSABLE variables.
26068         * tree-ssa-structalias.c (compute_points_to_sets): Tidy.
26069         * tree-ssa-operands.c (add_virtual_operand): Remove argument
26070         FOR_CLOBBER.  Update all users.
26071         If VAR has an associated alias set, add a virtual operand for
26072         it if no alias is found to conflict with the memory reference.
26073
26074 2007-02-07  Jan Hubicka  <jh@suse.cz>
26075             Robert Kidd <rkidd@crhc.uiuc.edu>
26076
26077         * value-prof.c (visit_hist, free_hist): Return 1 instead of 0.
26078
26079 2007-02-07  Ian Lance Taylor  <iant@google.com>
26080
26081         * lower-subreg.c (simple_move): Reject PARTIAL_INT modes.
26082
26083 2007-02-07  Roger Sayle  <roger@eyesopen.com>
26084
26085         * config/rs6000/rs6000.md (ctz<mode>2, ffs<mode>2, popcount<mode>2,
26086         parity<mode>2, smulsi3_highpart, abstf2_internal, allocate_stack,
26087         tablejumpdi, movsi_to_cr_one): Remove constraints from
26088         define_expand's match_operands.
26089
26090 2007-02-07  Roger Sayle  <roger@eyesopen.com>
26091
26092         * global.c (compute_regsets): Move declatation of "i" inside of
26093         #ifdef ELIMINABLE_REGS to avoid unused variable bootstrap failure.
26094
26095 2007-02-07  Jakub Jelinek  <jakub@redhat.com>
26096
26097         PR c++/30703
26098         * gimplify.c (gimplify_scan_omp_clauses): Remove special casing
26099         of INDIRECT_REF <RESULT_DECL>.
26100
26101         * config/i386/i386.c (override_options): Set PTA_SSSE3 for core2.
26102
26103 2007-02-06  J"orn Rennecke  <joern.rennecke@arc.com>
26104             Kaz Kojima  <kkojima@gcc.gnu.org>
26105
26106         PR target/29746
26107         * config/sh/sh.c (expand_cbranchdi4): Use scratch register
26108         properly.
26109         (sh_initialize_trampoline): Add parentheses to avoid a warning.
26110
26111 2007-02-06  Zdenek Dvorak <dvorakz@suse.cz>
26112
26113         * doc/loop.texi: Document possibility not to perform disambiguation
26114         of loops with multiple latches.
26115         * cfgloopmanip.c (alp_enum_p): Removed.
26116         (add_loop): Handle subloops.  Use get_loop_body_with_size.
26117         (create_preheader): Do not allow ENTRY_BLOCK_PTR to be preheader.
26118         * cfghooks.c (redirect_edge_and_branch_force): Set dominator for
26119         the new forwarder block.
26120         (make_forwarder_block): Only call new_bb_cbk if it is not NULL.
26121         Handle the case latch is NULL.
26122         * tree-ssa-dom.c (tree_ssa_dominator_optimize): Avoid cfg
26123         modifications when marking loop exits.
26124         * ifcvt.c (if_convert): Ditto.  Mark loop exits even if cfg cannot
26125         be modified.
26126         * loop-init.c (loop_optimizer_init): Do not modify cfg.  Call
26127         disambiguate_loops_with_multiple_latches.
26128         * tree-cfgcleanup.c (cleanup_tree_cfg_loop): Calculate dominators
26129         before fix_loop_structure.
26130         * cfgloop.c: Include pointer-set.h and output.h.
26131         (canonicalize_loop_headers, HEADER_BLOCK, LATCH_EDGE,
26132         update_latch_info, mfb_keep_just, mfb_keep_nonlatch): Removed.
26133         (get_loop_latch_edges, find_subloop_latch_edge_by_profile,
26134         find_subloop_latch_edge_by_ivs, find_subloop_latch_edge,
26135         mfb_redirect_edges_in_set, form_subloop, merge_latch_edges,
26136         disambiguate_multiple_latches, get_loop_body_with_size,
26137         disambiguate_loops_with_multiple_latches): New functions.
26138         (flow_loop_dump): Dump multiple latch edges.
26139         (flow_loop_nodes_find): Handle loops with multiple latches.
26140         (flow_loops_find): Ditto. Do not call canonicalize_loop_headers.
26141         (glb_enum_p): Modified.
26142         (get_loop_body): Use get_loop_body_with_size.
26143         * cfgloop.h (LOOPS_HAVE_RECORDED_EXITS): New flag.
26144         (AVOID_CFG_MODIFICATIONS): New constant.
26145         (disambiguate_loops_with_multiple_latches, add_loop,
26146         get_loop_body_with_size): Declare.
26147         * Makefile.in (cfgloop.o): Add pointer-set.h and output.h.
26148
26149 2007-02-06  Seongbae Park <seongbae.park@gmail.com>
26150
26151         PR inline-asm/28686
26152         * global.c (compute_regsets): New function.
26153         (global_alloc): Refactored ELIMINABLE_REGSET
26154         and NO_GLOBAL_ALLOC_REGS computation out.
26155         (rest_of_handle_global_alloc): Call compute_regsets()
26156         for non-optimizing case.
26157
26158 2007-02-06  Richard Henderson  <rth@redhat.com>
26159
26160         * config/i386/constraints.md (Y2): Rename from Y.
26161         (Yi): New constraint.
26162         * config/i386/i386.md (movsi_1, movdi_2, pushdf_nointeger,
26163         pushdf_integer, movdf_nointeger, movdf_integer, zero_extendsidi2_32,
26164         zero_extendsidi2_rex64, truncxfdf2_mixed): Change Y constraints to Y2.
26165         (extendsfdf2_mixed, extendsfdf2_sse, truncdfsf_fast_mixed,
26166         truncdfsf_fast_sse, truncdfsf_mixed, fix_truncdfdi_sse,
26167         fix_truncdfsi_sse, floatsidf2_mixed, floatsidf2_sse,
26168         floatdidf2_mixed, floatdidf2_sse, absnegdf2_mixed,
26169         absnegdf2_sse, sse_setccdf, fop_df_comm_mixed, fop_df_comm_sse,
26170         fop_df_1_mixed, fop_df_1_sse): Change Y constraints to x.
26171         * config/i386/mmx.md (mov<MMXMODEI>_internal_rex64,
26172         mov<MMXMODEI>_internal, movv2sf_internal_rex64, movv2sf_internal,
26173         vec_extractv2si_1): Change Y constraints to Y2.
26174         * config/i386/sse.md (vec_setv4sf_0, vec_concatv2df, vec_dupv4si,
26175         vec_dupv2di, sse2_concatv2si, vec_concatv4si_1, vec_concatv2di):
26176         Change Y constraints to Y2.
26177         (sse2_loadld): Change Y constraints to x.
26178
26179 2007-02-06  Roger Sayle  <roger@eyesopen.com>
26180
26181         * config/rs6000/rs6000.md (popcount<mode>2): Rewrite.
26182         (parity<mode>2): New define_expand using rs6000_emit_parity.
26183         * config/rs6000/rs6000.c (rs6000_emit_popcount,
26184         rs6000_emit_parity): New functions.
26185         * config/rs6000/rs6000-protos.h (rs6000_emit_popcount,
26186         rs6000_emit_parity): Prototype here.
26187
26188 2007-02-06  Ian Lance Taylor  <iant@google.com>
26189
26190         * lower-subreg.c (simple_move_operand): Reject CONST.
26191         (resolve_clobber): Call validate_change rather than directly
26192         assigning to XEXP (pat, 0).
26193
26194 2006-02-06  Paolo Bonzini  <bonzini@gnu.org>
26195
26196         * Makefile.in (tree-ssa-loop-ivopts.o): Add pointer-set.h dependency.
26197         (tree-ssa-reassoc.o): Add pointer-set.h dependency.
26198         (tree-cfg.o): Remove hashtab.h dependency.
26199
26200         * tree-ssa-loop-ivopts.c: Include pointer-set.h.
26201         (struct ivopts_data): Change niters to pointer_map_t.
26202         (struct nfe_cache_elt, nfe_hash, nfe_eq): Delete.
26203         (niter_for_exit): Create pointer_map on demand.  Change for
26204         pointer_map API.
26205         (tree_ssa_iv_optimize_init): Initialize data->niters to NULL.
26206         (free_loop_data): Destroy data->niters if created and reset field.
26207         (tree_ssa_iv_optimize_finalize): Don't delete data->niters here.
26208         (tree_ssa_iv_optimize_loop): Check for presence of stale data.
26209
26210         * tree-ssa-reassoc.c: Include pointer-set.h.
26211         (bb_rank): Change to long *.
26212         (operand_rank): Change to pointer_map_t.
26213         (find_operand_rank): Return long, -1 if not found.  Declare as inline.
26214         (insert_operand_rank): Accept long.
26215         (operand_entry_hash, operand_entry_eq): Remove.
26216         (get_rank): Return long.  Adjust for changes above.
26217         (init_reassoc): Change rank type to long.  Adjust creation of bb_rank
26218         and operand_rank.
26219         (fini_reassoc): Delete operand_rank with pointer_map_destroy.
26220
26221         * tree-ssa-structalias.c (vi_for_tree): Change to pointer_map.
26222         (struct tree_vi, tree_vi_t, tree_vi_hash, tree_vi_eq): Delete.
26223         (insert_vi_for_tree): Rewrite for pointer_map API.  Assert argument
26224         is not NULL.
26225         (lookup_vi_for_tree): Rewrite for pointer_map API.  Return varinfo_t
26226         directly since it cannot be NULL.
26227         (get_vi_for_tree): Rewrite for pointer_map API.
26228         (find_what_p_points_to): Adjust for change to lookup_vi_for_tree.
26229         (init_alias_vars): Create vi_for_tree as pointer_map.
26230         (delete_points_to_sets): Delete vi_for_tree using pointer_map_destroy.
26231
26232         * tree-cfg.c: Don't include hashtab.h.
26233         (edge_to_cases): Declare as pointer_map.
26234         (struct edge_to_cases_elt, edge_to_cases_hash, edge_to_cases_eq):
26235         Delete.
26236         (edge_to_cases_cleanup): Rewrite as pointer_map_traverse callback.
26237         (start_recording_case_labels): Create edge_to_cases as pointer_map.
26238         (end_recoding_case_labels): Cleanup edge_to_cases manually before
26239         destroying it.
26240         (record_switch_edge): Delete.
26241         (get_cases_for_edge): Adjust for pointer_map API, inline
26242         record_switch_edge (rewritten for new API), remove goto.
26243
26244 2006-02-06  Paolo Bonzini  <bonzini@gnu.org>
26245
26246         * Makefile.in (tree-nested.o): Add pointer-set.h dependency.
26247         * tree-nested.c: Include pointer-set.h.
26248         (var_map_elt, var_map_eq, var_map_hash): Delete.
26249         (struct nesting_info): Remove GTY marker.  Change the two htab_t's
26250         to pointer_map_t's.
26251         (nesting_info_bitmap_obstack): New.
26252         (lookup_field_for_decl): Adjust for pointer_map API.
26253         (lookup_tramp_for_decl): Adjust for pointer_map API.
26254         (get_nonlocal_debug_decl): Adjust for pointer_map API.
26255         (get_local_debug_decl): Adjust for pointer_map API.
26256         (convert_nl_goto_reference): Adjust for pointer_map API.
26257         (convert_nl_goto_receiver): Adjust for pointer_map API.
26258         (create_nesting_tree): Create outside GGC space.  Create bitmap on
26259         the new obstack.  Create field_map and var_map as pointer_maps.
26260         (free_nesting_tree): Adjust for changes to create_nesting_tree.
26261         (root): Delete.
26262         (lower_nested_functions): Move root here, no need to NULL it.
26263         Initialize and release the obstack.
26264
26265 2007-02-06  Paolo Bonzini  <bonzini@gnu.org>
26266
26267         * tree.c (tree_int_map_hash, tree_int_map_eq, tree_int_map_marked_p):
26268         Remove prototypes and make them non-static.
26269         (struct tree_int_map): Remove.
26270         * tree.h (struct tree_int_map): Move here, turning TO into an
26271         unsigned int.
26272         (tree_int_map_hash, tree_int_map_eq, tree_int_map_marked_p): Declare.
26273
26274         * tree.h (TREE_COMPLEXITY): Remove.
26275         (struct tree_exp): Remove complexity field.
26276         * tree.c (build1_stat): Don't set it.
26277
26278 2007-02-06  Dorit Nuzman  <dorit@il.ibm.com>
26279             Victor Kaplansky  <victork@il.ibm.com>
26280
26281         * tree-vectorizer.c (vect_is_simple_use): Support induction.
26282         (vect_is_simple_reduction): Support reduction with induction as
26283         one of the operands.
26284         (vect_is_simple_iv_evolution): Fix formatting.
26285         * tree-vect-analyze.c (vect_mark_stmts_to_be_vectorized): Fix
26286         formatting.  Don't mark induction phis for vectorization.
26287         (vect_analyze_scalar_cycles): Analyze all inductions, then reductions.
26288         * tree-vect-transform.c (get_initial_def_for_induction): New function.
26289         (vect_get_vec_def_for_operand): Support induction.
26290         (vect_get_vec_def_for_stmt_copy): Fix formatting and add check for
26291         induction case.
26292         (vectorizable_reduction): Support reduction with induction as one of
26293         the operands.
26294         (vectorizable_type_demotion): Use def-type of stmt argument rather
26295         than dummy def-type.
26296
26297         * tree-ssa-loop.c (gate_scev_const_prop): Return the value of
26298         flag_tree_scev_cprop.
26299         * common.opt (tree-scev-cprop): New flag.
26300
26301         * tree-vect-transform.c (vect_create_destination_var): Use 'kind' in
26302         call to vect_get_new_vect_var.
26303
26304 2007-02-06  Ira Rosen  <irar@il.ibm.com>
26305
26306         * tree-vect-patterns.c (vect_recog_widen_mult_pattern): Check that
26307         vectype is not NULL.
26308         (vect_pattern_recog_1): Likewise.
26309
26310 2007-02-05  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
26311
26312         * fold-const.c (negate_expr_p): Handle CONJ_EXPR.
26313         (fold_negate_expr): Likewise.
26314
26315 2007-02-05  Alexandre Oliva  <aoliva@redhat.com>
26316
26317         PR debug/30189
26318         * dwarf2out.c (modified_type_die): Follow DECL_ORIGINAL_TYPE
26319         even if cv-qualification is the same.
26320
26321 2007-02-05  Geoffrey Keating  <geoffk@apple.com>
26322
26323         * config/rs6000/darwin-tramp.asm (__trampoline_setup): Call
26324         __enable_execute_stack on completion.
26325
26326 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
26327
26328         * config/i386/athlon.md (athlon_fldxf_k8, athlon_fld_k8,
26329         athlon_fstxf_k8, athlon_fst_k8, athlon_fist, athlon_fmov,
26330         athlon_fadd_load, athlon_fadd_load_k8, athlon_fadd, athlon_fmul,
26331         athlon_fmul_load, athlon_fmul_load_k8, athlon_fsgn,
26332         athlon_fdiv_load, athlon_fdiv_load_k8, athlon_fdiv_k8,
26333         athlon_fpspc_load, athlon_fpspc, athlon_fcmov_load,
26334         athlon_fcmov_load_k8, athlon_fcmov_k8, athlon_fcomi_load_k8,
26335         athlon_fcomi, athlon_fcom_load_k8, athlon_fcom): Added amdfam10.
26336
26337 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
26338
26339         * config/i386/i386.md (x86_sahf_1, cmpfp_i_mixed, cmpfp_i_sse,
26340         cmpfp_i_i387, cmpfp_iu_mixed, cmpfp_iu_sse, cmpfp_iu_387,
26341         swapsi, swaphi_1, swapqi_1, swapdi_rex64, fix_truncsfdi_sse,
26342         fix_truncdfdi_sse, fix_truncsfsi_sse, fix_truncdfsi_sse,
26343         x86_fldcw_1, floatsisf2_mixed, floatsisf2_sse, floatdisf2_mixed,
26344         floatdisf2_sse, floatsidf2_mixed, floatsidf2_sse,
26345         floatdidf2_mixed, floatdidf2_sse, muldi3_1_rex64, mulsi3_1,
26346         mulsi3_1_zext, mulhi3_1, mulqi3_1, umulqihi3_1, mulqihi3_insn,
26347         umulditi3_insn, umulsidi3_insn, mulditi3_insn, mulsidi3_insn,
26348         umuldi3_highpart_rex64, umulsi3_highpart_insn,
26349         umulsi3_highpart_zext, smuldi3_highpart_rex64,
26350         smulsi3_highpart_insn, smulsi3_highpart_zext, x86_64_shld,
26351         x86_shld_1, x86_64_shrd, sqrtsf2_mixed, sqrtsf2_sse,
26352         sqrtsf2_i387, sqrtdf2_mixed, sqrtdf2_sse, sqrtdf2_i387,
26353         sqrtextendsfdf2_i387, sqrtxf2, sqrtextendsfxf2_i387,
26354         sqrtextenddfxf2_i387): Added amdfam10_decode.
26355
26356         * config/i386/athlon.md (athlon_idirect_amdfam10,
26357         athlon_ivector_amdfam10, athlon_idirect_load_amdfam10,
26358         athlon_ivector_load_amdfam10, athlon_idirect_both_amdfam10,
26359         athlon_ivector_both_amdfam10, athlon_idirect_store_amdfam10,
26360         athlon_ivector_store_amdfam10): New define_insn_reservation.
26361         (athlon_idirect_loadmov, athlon_idirect_movstore): Added
26362         amdfam10.
26363
26364 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
26365
26366         * config/i386/athlon.md (athlon_call_amdfam10,
26367         athlon_pop_amdfam10, athlon_lea_amdfam10): New
26368         define_insn_reservation.
26369         (athlon_branch, athlon_push, athlon_leave_k8, athlon_imul_k8,
26370         athlon_imul_k8_DI, athlon_imul_mem_k8, athlon_imul_mem_k8_DI,
26371         athlon_idiv, athlon_idiv_mem, athlon_str): Added amdfam10.
26372
26373 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
26374
26375         * config/i386/athlon.md (athlon_sseld_amdfam10,
26376         athlon_mmxld_amdfam10, athlon_ssest_amdfam10,
26377         athlon_mmxssest_short_amdfam10): New define_insn_reservation.
26378
26379 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
26380
26381         * config/i386/athlon.md (athlon_sseins_amdfam10): New
26382         define_insn_reservation.
26383         * config/i386/i386.md (sseins): Added sseins to define_attr type
26384         and define_attr unit.
26385         * config/i386/sse.md: Set type attribute to sseins for insertq
26386         and insertqi.
26387
26388 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
26389
26390         * config/i386/athlon.md (sselog_load_amdfam10, sselog_amdfam10,
26391         ssecmpvector_load_amdfam10, ssecmpvector_amdfam10,
26392         ssecomi_load_amdfam10, ssecomi_amdfam10,
26393         sseaddvector_load_amdfam10, sseaddvector_amdfam10): New
26394         define_insn_reservation.
26395         (ssecmp_load_k8, ssecmp, sseadd_load_k8, seadd): Added amdfam10.
26396
26397 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
26398
26399         * config/i386/athlon.md (cvtss2sd_load_amdfam10,
26400         cvtss2sd_amdfam10, cvtps2pd_load_amdfam10, cvtps2pd_amdfam10,
26401         cvtsi2sd_load_amdfam10, cvtsi2ss_load_amdfam10,
26402         cvtsi2sd_amdfam10, cvtsi2ss_amdfam10, cvtsd2ss_load_amdfam10,
26403         cvtsd2ss_amdfam10, cvtpd2ps_load_amdfam10, cvtpd2ps_amdfam10,
26404         cvtsX2si_load_amdfam10, cvtsX2si_amdfam10): New
26405         define_insn_reservation.
26406
26407         * config/i386/sse.md (cvtsi2ss, cvtsi2ssq, cvtss2si,
26408         cvtss2siq, cvttss2si, cvttss2siq, cvtsi2sd, cvtsi2sdq,
26409         cvtsd2si, cvtsd2siq, cvttsd2si, cvttsd2siq,
26410         cvtpd2dq, cvttpd2dq, cvtsd2ss, cvtss2sd,
26411         cvtpd2ps, cvtps2pd): Added amdfam10_decode attribute.
26412
26413 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
26414
26415         * config/i386/athlon.md (athlon_ssedivvector_amdfam10,
26416         athlon_ssedivvector_load_amdfam10, athlon_ssemulvector_amdfam10,
26417         athlon_ssemulvector_load_amdfam10): New define_insn_reservation.
26418         (athlon_ssediv, athlon_ssediv_load_k8, athlon_ssemul,
26419         athlon_ssemul_load_k8): Added amdfam10.
26420
26421 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
26422
26423         * config/i386/i386.h (TARGET_SSE_UNALIGNED_MOVE_OPTIMAL): New macro.
26424         (x86_sse_unaligned_move_optimal): New variable.
26425
26426         * config/i386/i386.c (x86_sse_unaligned_move_optimal): Enable for
26427         m_AMDFAM10.
26428         (ix86_expand_vector_move_misalign): Add code to generate movupd/movups
26429         for unaligned vector SSE double/single precision loads for AMDFAM10.
26430
26431 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
26432
26433         * config/i386/i386.h (TARGET_AMDFAM10): New macro.
26434         (TARGET_CPU_CPP_BUILTINS): Add code for amdfam10.
26435         Define TARGET_CPU_DEFAULT_amdfam10.
26436         (TARGET_CPU_DEFAULT_NAMES): Add amdfam10.
26437         (processor_type): Add PROCESSOR_AMDFAM10.
26438
26439         * config/i386/i386.md: Add amdfam10 as a new cpu attribute to match
26440         processor_type in config/i386/i386.h.
26441         Enable imul peepholes for TARGET_AMDFAM10.
26442
26443         * config.gcc: Add support for --with-cpu option for amdfam10.
26444
26445         * config/i386/i386.c (amdfam10_cost): New variable.
26446         (m_AMDFAM10): New macro.
26447         (m_ATHLON_K8_AMDFAM10): New macro.
26448         (x86_use_leave, x86_push_memory, x86_movx, x86_unroll_strlen,
26449         x86_cmove, x86_3dnow_a, x86_deep_branch, x86_use_simode_fiop,
26450         x86_promote_QImode, x86_integer_DFmode_moves,
26451         x86_partial_reg_dependency, x86_memory_mismatch_stall,
26452         x86_accumulate_outgoing_args, x86_arch_always_fancy_math_387,
26453         x86_sse_partial_reg_dependency, x86_sse_typeless_stores,
26454         x86_use_ffreep, x86_use_incdec, x86_four_jump_limit,
26455         x86_schedule, x86_use_bt, x86_cmpxchg16b, x86_pad_returns):
26456         Enable/disable for amdfam10.
26457         (override_options): Add amdfam10_cost to processor_target_table.
26458         Set up PROCESSOR_AMDFAM10 for amdfam10 entry in
26459         processor_alias_table.
26460         (ix86_issue_rate): Add PROCESSOR_AMDFAM10.
26461         (ix86_adjust_cost): Add code for amdfam10.
26462
26463 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
26464
26465         * config/i386/i386.opt: Add new Advanced Bit Manipulation (-mabm)
26466         instruction set feature flag. Add new (-mpopcnt) flag for popcnt
26467         instruction. Add new SSE4A (-msse4a) instruction set feature flag.
26468         * config/i386/i386.h: Add builtin definition for SSE4A.
26469         * config/i386/i386.md: Add support for ABM instructions
26470         (popcnt and lzcnt).
26471         * config/i386/sse.md: Add support for SSE4A instructions
26472         (movntss, movntsd, extrq, insertq).
26473         * config/i386/i386.c: Add support for ABM and SSE4A builtins.
26474         Add -march=amdfam10 flag.
26475         * config/i386/ammintrin.h: Add support for SSE4A intrinsics.
26476         * doc/invoke.texi: Add documentation on flags for sse4a, abm, popcnt
26477         and amdfam10.
26478         * doc/extend.texi: Add documentation for SSE4A builtins.
26479
26480 2007-02-05  Bob Wilson  <bob.wilson@acm.org>
26481
26482         * config/xtensa/xtensa.c (constantpool_mem_p): Skip over SUBREGs.
26483
26484 2007-02-05  Richard Guenther  <rguenther@suse.de>
26485
26486         * tree-vectorizer.h (vectorizable_function): Add argument type
26487         argument, change return type.
26488         * tree-vect-patterns.c (vect_recog_pow_pattern): Adjust caller.
26489         * tree-vect-transform.c (vectorizable_function): Handle extra
26490         argument, return vectorized function decl.
26491         (build_vectorized_function_call): Remove.
26492         (vectorizable_call): Handle calls with result and argument types
26493         differing.  Handle loop vectorization factor correctly.
26494         * targhooks.c (default_builtin_vectorized_function): Adjust for
26495         extra argument.
26496         * targhooks.h (default_builtin_vectorized_function): Likewise.
26497         * target.h (builtin_vectorized_function): Add argument type
26498         argument.
26499         * config/i386/i386.c (ix86_builtin_vectorized_function): Handle
26500         extra argument, allow vectorizing of lrintf.
26501         * doc/tm.texi (TARGET_VECTORIZE_BUILTIN_VECTORIZED_FUNCTION): Adjust
26502         documentation of target hook.
26503
26504 2007-02-05  Hans-Peter Nilsson  <hp@axis.com>
26505
26506         PR target/30665
26507         * config/cris/cris.md ("*andsi_movu", "*andsi_clear", "*andhi_movu")
26508         ("*andhi_clear", andu (casesi+45)): For size-changed operand where
26509         memory is allowed, require !side_effects_p, not just !MEM_VOLATILE_P.
26510
26511 2007-02-05  Roger Sayle  <roger@eyesopen.com>
26512
26513         * fold-const.c (fold_unary) <REAL_PART>: Test for availability of
26514         BUILT_IN_COS before simplifying REAL_PART(CEXPI)) to COS.
26515         <IMAG_PART>: Likewise, check for availability of BUILT_IN_SIN.
26516         * builtins.c (fold_builtin_sincos): Check for TARGET_C99_FUNCTIONS
26517         before canonicalizing sincos to cexpi.
26518         (fold_builtin_cexp): Likewise, for canonicalizing cexp to cexpi.
26519
26520 2007-02-05  Roger Sayle  <roger@eyesopen.com>
26521
26522         * config/alpha/alpha.c (alpha_add_builtins): New Helper function.
26523         Set TREE_READONLY and TREE_NOTHROW directly, not via attributes.
26524         (alpha_init_builtins): Use alpha_add_builtins to process tables.
26525
26526 2007-02-05  Roger Sayle  <roger@eyesopen.com>
26527
26528         * mips-tfile.c (initialize_init_file): Correct endianness test.
26529
26530 2007-02-05  Kazu Hirata  <kazu@codesourcery.com>
26531
26532         * config/m68k/m68k.md (pushdi-1, pushdi, movsi+1): Don't use
26533         the 'y' constraint.
26534
26535 2007-02-05  Richard Sandiford  <richard@codesourcery.com>
26536
26537         * dwarf2out.c (dwarf2out_frame_debug_expr): Record the register
26538         saves in a PARALLEL before the register assignments.
26539
26540 2007-02-05  Richard Sandiford  <richard@codesourcery.com>
26541
26542         * doc/tm.texi (DWARF_ALT_FRAME_RETURN_COLUMN): Do not require
26543         DWARF_FRAME_RETURN_COLUMN to be a general register.
26544         * dwarf2out.c (init_return_column_size): New function, split from...
26545         (expand_builtin_init_dwarf_reg_sizes): ...here.  Allow both
26546         DWARF_FRAME_RETURN_COLUMN and DWARF_ALT_FRAME_RETURN_COLUMN
26547         to be nongeneral registers.
26548         * config/m68k/m68k.h (DWARF_FRAME_REGNUM): Only map FP and
26549         integer registers.
26550         (DWARF_FRAME_REGISTERS, DWARF_FRAME_RETURN_COLUMN): Define.
26551         (DWARF_ALT_FRAME_RETURN_COLUMN): Define.
26552
26553 2007-02-04  Zdenek Dvorak <dvorakz@suse.cz>
26554
26555         * cfgcleanup.c (try_optimize_cfg): Avoid removing ENTRY_BLOCK_PTR.
26556
26557 2007-02-04  Zdenek Dvorak <dvorakz@suse.cz>
26558
26559         * cfgloopmanip.c (loop_delete_branch_edge): Removed.
26560         (remove_path): Use can_remove_branch_p and remove_branch instead
26561         of loop_delete_branch_edge.
26562         * tree-ssa-loop-manip.c (scale_dominated_blocks_in_loop): New function.
26563         (tree_transform_and_unroll_loop): Remove dead branches immediately.
26564         Update profile using scale_dominated_blocks_in_loop.
26565         * cfghooks.c (can_remove_branch_p, remove_branch): New functions.
26566         * cfghooks.h (struct cfg_hooks): Add can_remove_branch_p.
26567         (can_remove_branch_p, remove_branch): Declare.
26568         * tree-cfg.c (tree_can_remove_branch_p): New function.
26569         (tree_cfg_hooks): Add tree_can_remove_branch_p.
26570         * cfgrtl.c (rtl_can_remove_branch_p): New function.
26571         (rtl_cfg_hooks, cfg_layout_rtl_cfg_hook): Add rtl_can_remove_branch_p.
26572
26573 2007-02-05  Jan Hubicka  <jh@suse.cz>
26574
26575         PR middle-end/30696
26576         * ipa-inline.c (cgraph_clone_inlined_nodes): When there are unanalyzed
26577         nodes in cgraph, don't remove offline copy of the function.
26578
26579 2007-02-04  Jan Hubicka  <jh@suse.cz>
26580
26581         * tree-sra.c (sra_walk_expr): Add linebreaks. BITFIELD_REFs into
26582         vectors might cause maybe_lookup_element_for_expr to be called
26583         on non-sra-candidate.
26584
26585 2007-02-04  Kazu Hirata  <kazu@codesourcery.com>
26586
26587         * config/bfin/bfin-modes.def, config/bfin/bfin.c,
26588         config/bfin/bfin.md, config/bfin/predicates.md: Follow
26589         spelling conventions.
26590
26591 2007-02-04  Richard Guenther  <rguenther@suse.de>
26592
26593         PR middle-end/30636
26594         * fold-const.c (try_move_mult_to_index): Make sure to not
26595         overflow one dimension of a multi-dimensional array access.
26596
26597 2007-02-04  Jan Hubicka  <jh@suse.cz>
26598
26599         * passes.c (init_optimization_passes): Reindent.
26600
26601 2007-02-04  Jan Hubicka  <jh@suse.cz>
26602             Eric Botcazou  <ebotcazou@adacore.com>
26603
26604         * tree-optimize.c (has_abnormal_outgoing_edge_p): Move to...
26605         (execute_fixup_cfg): Break out the abnormal goto code.
26606         * tree-inline.c (has_abnormal_outgoing_edge_p): ...here.
26607         (make_nonlocal_label_edges): Move here from execute_fixup_cfg.
26608         (optimize_inline_calls): Call make_nonlocal_label_edges.
26609
26610 2007-02-04  Jan Hubicka  <jh@suse.cz>
26611
26612         * tree-ssa-copyrename.c (copy_rename_partition_coalesce): Return
26613         true when something was changed.
26614         (rename_ssa_copies): When something was changed, do
26615         TODO_remove_unused_locals.
26616         * tree-ssa-forwprop.c (tree_ssa_forward_propagate_single_use_value):
26617         add TODO_remove_unused_locals when instruction was removed.
26618
26619 2007-02-04  Jan Hubicka  <jh@suse.cz>
26620
26621         * ipa-inline.c (try_inline): Improve debug output; work on already
26622         inline edges too.
26623         (cgraph_decide_inlining_incrementally): Indent; improve debug output;
26624         call try_inline for already inlined edges too when flattening;
26625         inline also functions that make callee growth but overall unit size
26626         reduce.
26627
26628 2007-02-04  Kazu Hirata  <kazu@codesourcery.com>
26629
26630         * config/m32c/bitops.md, config/m32c/jump.md,
26631         config/m32c/m32c.c, config/m32c/m32c.h, config/m32r/m32r.c,
26632         config/m32r/m32r.h, config/m32r/m32r.md,
26633         config/m32r/predicates.md, config/m68hc11/larith.asm,
26634         config/m68hc11/m68hc11.c, config/m68hc11/m68hc11.h,
26635         config/m68k/m68k.h, config/mcore/mcore.md, config/mips/4k.md,
26636         config/mips/mips-protos.h, config/mips/mips.c,
26637         config/mips/mips.h, config/mips/mips.md, config/mips/mips16.S,
26638         config/mn10300/mn10300.h, config/mn10300/predicates.md,
26639         config/mt/mt.c, config/mt/mt.h, config/mt/mt.md: Follow
26640         spelling conventions.
26641
26642         * config/v850/v850.c, config/v850/v850.h, config/v850/v850.md:
26643         Follow spelling conventions.
26644
26645 2007-02-03  Douglas Gregor  <doug.gregor@gmail.com>
26646
26647         * c-opts.c (c_common_post_options): If C++0x mode is enabled, don't
26648         warn about C++0x compatibility.
26649
26650 2007-02-04  Kazu Hirata  <kazu@codesourcery.com>
26651
26652         * config/h8300/h8300.c, config/h8300/h8300.h,
26653         config/h8300/h8300.md: Follow spelling conventions.
26654
26655 2007-02-03  Uros Bizjak  <ubizjak@gmail.com>
26656
26657         PR middle-end/30667
26658         * combine.c (try_combine): Do not substitute source operand
26659         with constants wider than 2 * HOST_BITS_PER_WIDE_INT.
26660
26661 2007-02-03  Jan Hubicka  <jh@suse.cz>
26662
26663         PR gcov-profile/30650
26664         * value-prof.c (stringop_block_profile): Fix handling of size counter;
26665         do not divide by zero for never executed counters.
26666         (tree_find_values_to_profile): Fix counters.
26667         * gcov-ui.h (GCOV_COUNTER_AVERAGE, GCOV_COUNTER_IOR): Fix comments.
26668
26669 2007-02-03  Ian Lance Taylor  <iant@google.com>
26670
26671         * lower-subreg.c (simple_move_operand): New static function,
26672         broken out of simple_move.  Reject LABEL_REF, SYMBOL_REF, and HIGH
26673         operands.
26674         (simple_move): Call simple_move_operand.
26675         (find_decomposable_subregs): Add special handling of MEMs.
26676         (can_decompose_p): Rename from cannot_decompose_p.  Reverse
26677         meaning of return value.  If we see a hard register, test whether
26678         it can store a word_mode value.  Change all callers.
26679
26680 2007-02-03  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
26681
26682         * pa.md (addvdi3, addvsi3, subvdi3, subvsi3, negvdi2, negvsi2): New
26683         ftrapv insns and expanders.
26684         (subdi3): Change define_expand operand 1 to arith11_operand, and
26685         operand 2 to reg_or_0_operand.  Change constraints of 64-bit insn
26686         pattern to handle reg_or_0 operands.  Revise 32-bit insn pattern to
26687         handle 11-bit constants and reg_or_0 operands in operands 1 and 2,
26688         respectively.
26689
26690         PR middle-end/30174
26691         * varasm.c (notice_global_symbol): Treat global objects as weak when
26692         flag_shlib is true.
26693
26694 2007-02-03  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
26695
26696         * emit-rtl.c (dconstpi): Delete.
26697         (dconstsqrt2): New.
26698         (init_emit_once): Delete dconstpi and init dconstsqrt2.
26699         * real.h (dconstpi): Delete.
26700         (dconstsqrt2): New.
26701         * builtins.c (fold_builtin_cabs): Use dconstsqrt2.
26702         (fold_builtin_hypot): Likewise.
26703
26704 2007-02-03  Tom Tromey  <tromey@redhat.com>
26705
26706         PR driver/30246
26707         * gcc.c (cpp_unique_options): Any of -ggdb3, -gstabs3,
26708         -gcoff3, -gxcoff3, -gvms3 implies -dD.
26709
26710 2007-02-03  Kazu Hirata  <kazu@codesourcery.com>
26711
26712         * c-decl.c, config/avr/avr.c, config/avr/avr.h,
26713         config/m68k/m68k.c, config/m68k/netbsd-elf.h,
26714         config/mn10300/mn10300.c, config/pdp11/pdp11.h,
26715         config/rs6000/cell.md, config/rs6000/darwin.h,
26716         config/sh/sh.md, config/sh/sh4-300.md, config/spu/spu.c,
26717         config/spu/spu.md, cselib.c, expr.c, haifa-sched.c, hwint.h,
26718         jump.c, reload.c, sched-deps.c, sched-int.h, tree-inline.c,
26719         tree-profile.c, tree-ssa-live.h, tree-vrp.c: Fix comment
26720         typos.  Follow spelling conventions.
26721         * doc/invoke.texi: Follow spelling conventions.
26722
26723 2007-02-03  Roger Sayle  <roger@eyesopen.com>
26724
26725         * simplify-rtx.c (simplify_relational_operation_1): Implement some
26726         canonicalization transformations that attempt to simplify integer
26727         constant comparisons to become comparisons against zero.
26728
26729 2007-02-03  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
26730
26731         * builtins.c (fold_builtin_cabs): Fold cabs(x+xi) into
26732         fabs(x)*sqrt(2).
26733         * fold-const.c (fold_binary): Fix comment typos.  Fold complex
26734         (x,0)-(0,y) into (x,-y).  Likewise (0,y)-(x,0) into (-x,y).
26735
26736 2007-02-02  Mike Stump  <mrs@apple.com>
26737
26738         * config/darwin9.h (DARWIN_LINKER_GENERATES_ISLANDS): Add.
26739         * config/rs6000/rs6000.c (DARWIN_GENERATE_ISLANDS): Add.
26740         (output_call): Use DARWIN_GENERATE_ISLANDS to decide when to
26741         generate a branch island.
26742
26743 2007-02-02  Bob Wilson  <bob.wilson@acm.org>
26744
26745         * config/xtensa/xtensa.c (smalloffset_mem_p): Use BASE_REG_P.
26746         (xtensa_legitimate_address_p): New.
26747         (xtensa_legitimize_address): New.
26748         (xtensa_output_addr_const_extra): New.
26749         * config/xtensa/xtensa.h (REG_OK_STRICT_FLAG): Define.
26750         (BASE_REG_P): New.
26751         (REG_OK_FOR_BASE_P): Use BASE_REG_P.
26752         (GO_IF_LEGITIMATE_ADDRESS): Move code to xtensa_legitimate_address_p.
26753         (LEGITIMIZE_ADDRESS): Move code to xtensa_legitimize_address.
26754         (OUTPUT_ADDR_CONST_EXTRA): Move code to xtensa_output_addr_const_extra.
26755         * config/xtensa/xtensa-protos.h (xtensa_legitimate_address_p): New.
26756         (xtensa_legitimize_address): New.
26757         (xtensa_output_addr_const_extra): New.
26758
26759 2007-02-02  Steve Ellcey  <sje@cup.hp.com>
26760
26761         * config/ia64/ia64.c (ia64_print_operand): Fix compare strings.
26762
26763 2007-02-02  Ian Lance Taylor  <iant@google.com>
26764
26765         * expmed.c (expand_divmod): Add comment.
26766
26767 2007-02-02  Kazu Hirata  <kazu@codesourcery.com>
26768
26769         * emit-rtl.c (renumber_insns): Remove.
26770         * flags.h: Remove the extern for flag_renumber_insns.
26771         * rtl.h: Remove the prototype for renumber_insns.
26772         * toplev.c (flag_renumber_insns): Remove.
26773
26774 2007-02-02  Hui-May Chang  <hm.chang@apple.com>
26775
26776         Revert for x86 darwin:
26777         2005-06-19  Uros Bizjak  <uros@kss-loka.si>
26778
26779         * config/i386/i386.c (ix86_function_arg_regno_p): Put back the
26780         code before the following patch under TARGET_MACHO.
26781         (ix86_function_value_regno_p): Likewise.
26782
26783 2007-02-02  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
26784
26785         * fold-const.c (negate_expr_p, fold_negate_expr): Handle
26786         COMPLEX_EXPR.
26787
26788 2007-02-02  Maxim Kuvyrkov  <mkuvyrkov@ispras.ru>
26789
26790         PR target/29682
26791         * config/ia64/ia64.c (ia64_speculate_insn): Restrict to memory
26792         loads to general or fp registers.  Add comments.
26793         * config/ia64/ia64.md (reg_pred_prefix): Add comment.
26794
26795 2007-02-02  Paolo Bonzini  <bonzini@gnu.org>
26796
26797         * pointer-set.c (insert_aux): Only return insertion slot.
26798         (pointer_set_insert): Adjust.
26799         (pointer_set_traverse, struct pointer_map_t, pointer_map_create,
26800         pointer_map_destroy, pointer_map_insert, pointer_map_contains,
26801         pointer_map_traverse): New.
26802         * pointer-set.h (pointer_set_traverse, struct pointer_map_t,
26803         pointer_map_create,  pointer_map_destroy, pointer_map_insert,
26804         pointer_map_contains, pointer_map_traverse): Declare.
26805
26806 2007-02-02  Jakub Jelinek  <jakub@redhat.com>
26807
26808         PR middle-end/30473
26809         * builtins.c (fold_builtin_sprintf): Do not attempt to optimize
26810         sprintf (str, "%s").  Do not optimize sprintf (str, "nopercent", p++).
26811
26812 2007-02-02  Maxim Kuvyrkov  <mkuvyrkov@ispras.ru>
26813
26814         * sched-int.h (ds_to_dk, dk_to_ds): Declare functions.
26815
26816         (struct _dep): New type.
26817         (dep_t): New typedef.
26818         (DEP_PRO, DEP_CON, DEP_KIND): New access macros.
26819         (DEP_STATUS): New access macro.  The macro with the same name was
26820         renamed to DEP_LINK_STATUS.
26821         (dep_init): Declare function
26822
26823         (struct _dep_link): New type.
26824         (dep_link_t): New typedef.
26825         (DEP_LINK_NODE, DEP_LINK_NEXT, DEP_LINK_PREV_NEXTP): New access macros.
26826         (DEP_LINK_DEP, DEP_LINK_PRO, DEP_LINK_CON, DEP_LINK_KIND): New macros.
26827         (DEP_LINK_STATUS): New macro.
26828         (debug_dep_links): New debug function.
26829
26830         (struct _deps_list): New type.
26831         (deps_list_t): New typedef.
26832         (DEPS_LIST_FIRST): New access macro.
26833         (FOR_EACH_DEP_LINK): New cycle macro.
26834         (create_deps_list, free_deps_list, delete_deps_list): Declare
26835         functions.
26836         (deps_list_empty_p, debug_deps_list, add_back_dep_to_deps_list): Ditto.
26837         (find_link_by_pro_in_deps_list, find_link_by_con_in_deps_list): Ditto.
26838         (copy_deps_list_change_con): Ditto.
26839
26840         (move_dep_link): Declare function.
26841
26842         (struct _dep_node): New type.
26843         (dep_node_t): New typedef.
26844         (DEP_NODE_BACK, DEP_NODE_DEP, DEP_NODE_FORW): New access macros.
26845
26846         (struct haifa_insn_data.back_deps): New field to hold backward
26847         dependencies of the insn.
26848         (struct haifa_insn_data.depend): Rename to forw_deps.  Change its type
26849         to deps_list_t.
26850         (struct haifa_insn_data.resolved_deps): Rename to resolved_back_deps.
26851         Change its type to deps_list_t.
26852         (INSN_BACK_DEPS): New access macro to use instead of LOG_LINKS.
26853         (INSN_DEPEND): Rename to INSN_FORW_DEPS.
26854         (RESOLVED_DEPS): Rename to INSN_RESOLVED_BACK_DEPS.
26855
26856         (INSN_COST): Move to haifa-sched.c.  Use insn_cost () instead.
26857
26858         (DEP_STATUS): Rename to DEP_LINK_STATUS.  Fix typo in the comment.
26859
26860         (add_forw_dep, delete_back_forw_dep, insn_cost): Update declaration
26861         and all callers.
26862         (dep_cost): Declare.
26863
26864         * sched-deps.c (CHECK): New macro to (en/dis)able sanity checks.
26865         (ds_to_dk, dk_to_ds): New functions.
26866
26867         (init_dep_1): New static function.
26868         (init_dep): New function.
26869         (copy_dep): New static function.
26870
26871         (dep_link_consistent_p, attach_dep_link, add_to_deps_list): New static
26872         functions.
26873         (detach_dep_link): New static function.
26874         (move_dep_link): New function.
26875
26876         (dep_links_consistent_p, dump_dep_links): New static functions.
26877         (debug_dep_links): New debugging function.
26878
26879         (deps_obstack, dl_obstack, dn_obstack): New static variables.
26880
26881         (alloc_deps_list, init_deps_list): New static functions.
26882         (create_deps_list): New function.
26883         (clear_deps_list): New static function.
26884         (free_deps_list, delete_deps_list, deps_list_empty_p): New functions.
26885         (deps_list_consistent_p, dump_deps_list): New static functions.
26886         (debug_deps_list): New function.
26887         (add_back_dep_to_deps_list, find_link_by_pro_in_deps_list): New
26888         functions.
26889         (find_link_by_con_in_deps_list, copy_deps_list_change_con): Ditto.
26890
26891         (maybe_add_or_update_back_dep_1, add_or_update_back_dep_1): Update to
26892         use new scheduler dependencies lists.
26893         (add_back_dep, delete_all_dependences, fixup_sched_groups): Ditto.
26894         (sched_analyze): Ditto.  Initialize dependencies lists.
26895         (add_forw_dep, compute_forward_dependences): Update to use new
26896         scheduler dependencies lists.
26897
26898         (init_dependency_caches): Init deps_obstack.
26899         (free_dependency_caches): Free deps_obstack.
26900
26901         (adjust_add_sorted_back_dep, adjust_back_add_forw_dep): Update to use
26902         new scheduler dependencies lists.
26903         (delete_forw_dep, add_or_update_back_forw_dep): Ditto.
26904         (add_back_forw_dep, delete_back_forw_dep): Ditto.
26905
26906         * sched-rgn.c (set_spec_fed, find_conditional_protection, is_pfree):
26907         Update to use new scheduler dependencies lists.
26908         (is_conditionally_protected, is_prisky, add_branch_dependences): Ditto.
26909         (debug_dependencies): Ditto.
26910         (schedule_region): Update comments.
26911
26912         * sched-ebb.c (earliest_block_with_similiar_load): Update to use new
26913         scheduler dependencies lists.
26914         (schedule_ebb): Update comments.
26915
26916         * rtl.def (DEPS_LIST): Remove.
26917
26918         * lists.c (unused_deps_list): Remove.
26919         (free_list): Update assertions.
26920
26921         (alloc_DEPS_LIST, free_DEPS_LIST_list, free_DEPS_LIST_node): Remove.
26922         (remove_free_DEPS_LIST_elem, copy_DEPS_LIST_list): Ditto.
26923
26924         * rtl.h (free_DEPS_LIST_list, alloc_DEPS_LIST): Remove declarations.
26925         (remove_free_DEPS_LIST_elem, copy_DEPS_LIST_list): Ditto.
26926
26927         * haifa-sched.c (comments): Update.
26928         (insn_cost1): Remove.  Inline the code into insn_cost ().
26929         (insn_cost): Update to use new scheduler dependencies lists.  Move
26930         processing of the dependency cost to dep_cost ().
26931         (dep_cost): New function.  Use it instead of insn_cost () when
26932         evaluating cost of the dependency.  Use compatible interface to
26933         interact with the target.
26934         (priority): Update to use new scheduler dependencies lists.
26935         (rank_for_schedule): Ditto.  Optimize heuristic that prefers the insn
26936         with greater number of insns that depend on the insn.
26937         (schedule_insn): Update to use new scheduler dependencies lists.  Add
26938         code to free backward dependencies lists.  Inline and optimize code
26939         from resolve_dep () - see PR28071.
26940         (ok_for_early_queue_removal): Update to use new scheduler dependencies
26941         lists.  Update call to targetm.sched.is_costly_dependence hook.
26942
26943         (fix_inter_tick, try_ready, fix_tick_ready): Update to use new
26944         scheduler dependencies lists.
26945
26946         (resolve_dep): Remove.  Move the logic to schedule_insn ().
26947         (init_h_i_d): Initialize dependencies lists.
26948
26949         (process_insn_depend_be_in_spec): Rename to
26950         process_insn_forw_deps_be_in_spec.  Update to use new scheduler
26951         dependencies lists.
26952         (add_to_speculative_block, create_check_block_twin, fix_recovery_deps):
26953         Update to use new scheduler dependencies lists.
26954         (clear_priorities, calc_priorities, add_jump_dependencies): Ditto.
26955
26956         * ddg.c (create_ddg_dependence, create_ddg_dep_no_link): Update to use
26957         new scheduler dependencies lists.
26958         (build_intra_loop_deps): Ditto.
26959
26960         * target.h (struct _dep): Declare to use in
26961         gcc_target.sched.is_costly_dependence.
26962         (struct gcc_target.sched.adjust_cost): Fix typo.
26963         (struct gcc_target.sched.is_costly_dependence): Change signature to
26964         use single dep_t parameter instead of an equivalent triad.
26965         (struct gcc_target.sched.adjust_cost_2): Remove.
26966
26967         * target-def.h (TARGET_SCHED_ADJUST_COST_2): Remove.
26968
26969         * reg-notes.def (DEP_TRUE, DEP_OUTPUT, DEP_ANTI): Update comments.
26970
26971         * doc/tm.texi (TARGET_SCHED_IS_COSTLY_DEPENDENCE): Update
26972         documentation.
26973         (TARGET_SCHED_ADJUST_COST_2): Remove documentation.
26974
26975         * doc/rtl.texi (LOG_LINKS): Remove part about instruction scheduler.
26976         (REG_DEP_TRUE): Document.
26977
26978         * config/ia64/ia64.c (ia64_adjust_cost_2): Rename to ia64_adjust_cost.
26979         Change signature to correspond to the targetm.sched.adjust_cost hook.
26980         Update use in TARGET_SCHED_ADJUST_COST_2.
26981         (TARGET_SCHED_ADJUST_COST_2): Rename to TARGET_SCHED_ADJUST_COST.
26982         (ia64_dependencies_evaluation_hook, ia64_dfa_new_cycle): Update to use
26983         new scheduler dependencies lists.
26984         (ia64_gen_check): Ditto.
26985
26986         * config/mips/mips.c (vr4130_swap_insns_p): Update to use new
26987         scheduler dependencies lists.
26988
26989         * config/rs6000/rs6000.c (rs6000_is_costly_dependence): Change
26990         signature to correspond to the targetm.sched.is_costly_dependence hook.
26991         (is_costly_group): Update to use new scheduler dependencies lists.
26992
26993         * config/spu/spu.c (spu_sched_adjust_cost): Use insn_cost () function
26994         instead of INSN_COST () macro.
26995
26996 2007-02-01  Ian Lance Taylor  <iant@google.com>
26997
26998         * lower-subreg.c (resolve_clobber): Handle a subreg of a concatn.
26999
27000 2007-02-01  Guy Martin  <gmsoft@gentoo.org>
27001
27002         * pa.md (tp_load): Correct mfctl instruction syntax.
27003
27004 2007-02-01  Geoffrey Keating  <geoffk@apple.com>
27005
27006         * config/rs6000/rs6000.c (rs6000_stack_info): Correct
27007         altivec_padding_size calculation on AIX.  Improve comment, add
27008         assert to verify that it's right.
27009
27010         * config/rs6000/darwin.h (MD_UNWIND_SUPPORT): Don't define for
27011         64-bit.
27012
27013 2007-2-01  Seongbae Park  <seongbae.park@gmail.com>
27014
27015         PR inline-asm/28686
27016         * global.c (global_alloc): Add mising initialization of
27017         ELIMINABLE_REGSET.
27018
27019 2007-02-01  Roger Sayle  <roger@eyesopen.com>
27020
27021         * alias.c (init_alias_analysis): Correct whitespace.
27022         * bb-reorder.c (fix_edges_for_rarely_executed_code,
27023         partition_hot_cold_basic_blocks): Likewise.
27024         * builtins.c (expand_builtin_printf, expand_builtin_fprintf,
27025         expand_builtin_sprintf, fold_builtin_carg, fold_builtin_sprintf,
27026         maybe_emit_sprintf_chk_warning, fold_builtin_sprintf_chk,
27027         fold_builtin_snprintf_chk, fold_builtin_printf,
27028         fold_builtin_fprintf, do_mpfr_ckconv, do_mpfr_arg1, do_mpfr_arg2,
27029         do_mpfr_arg3, do_mpfr_sincos): Likewise.
27030         * cfgcleanup.c (cleanup_cfg): Likewise.
27031         * cfgexpand.c (tree_expand_cfg): Likewise.
27032         * fold-const.c (fold_binary) <RDIV_EXPR>: Likewise.
27033         * function.c (get_next_funcdef_no): Likewise.
27034         * gengtype.c (main): Likewise.
27035         * genmodes.c (main): Likewise.
27036         * gcse.c (bypass_conditional_jumps, print_ldst_list): Likewise.
27037         * haifa-sched.c (schedule_block, extend_h_i_d): Likewise.
27038         * ifcvt.c (noce_emit_move_insn): Likewise.
27039         * modulo-sched.c (generate_prolog_epilog, sms_schedule_by_order):
27040         Likewise.
27041         * stor-layout.c (get_best_mode): Likewise.
27042         * tree-ssa-loop-niter.c (get_val_for): Likewise.
27043         * tree-ssa-structalias.c (get_varinfo, get_varinfo_fc,
27044         scc_visit, do_ds_constraint, do_complex_constraint, label_visit,
27045         perform_var_substitution, solve_graph): Likewise.
27046         * tree-vrp.c (vrp_finalize): Likewise.
27047
27048 2007-02-01  Ian Lance Taylor  <iant@google.com>
27049
27050         * lower-subreg.c (simplify_gen_subreg_concatn): If we ask for the
27051         high part of a paradoxical subreg, return a constant zero.
27052
27053 2007-02-01  Zdenek Dvorak <dvorakz@suse.cz>
27054
27055         * toplev.c (lang_dependent_init): Call init_set_costs.
27056         * loop-init.c (loop_optimizer_init): Do not call init_set_costs.
27057
27058 2007-02-01  Richard Guenther  <rguenther@suse.de>
27059
27060         PR middle-end/30656
27061         * fold-const.c (fold_negate_expr): Allow negating a
27062         constant if overflow does not change.
27063
27064 2007-02-01  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
27065
27066         * doc/c-tree.texi (Expression trees): Improve markup.
27067         * doc/tm.texi (Register Classes, Addressing Modes)
27068         (Floating Point): Fix spacing after abbreviations.  Fix some
27069         typos.
27070
27071 2007-02-01  Ben Elliston  <bje@au.ibm.com>
27072
27073         * doc/invoke.texi: Replace "bugfix" with "bug fix" throughout.
27074         * doc/contrib.texi: Likewise.
27075         * doc/install.texi: Likewise.
27076
27077 2007-01-31  Richard Henderson  <rth@redhat.com>
27078             Ian Lance Taylor  <iant@google.com>
27079
27080         * lower-subreg.c: New file.
27081         * rtl.def (CONCATN): Define.
27082         * passes.c (init_optimization_passes): Add pass_lower_subreg and
27083         pass_lower_subreg2.
27084         * emit-rtl.c (update_reg_offset): New static function, broken out
27085         of gen_rtx_REG_offset.
27086         (gen_rtx_REG_offset): Call update_reg_offset.
27087         (gen_reg_rtx_offset): New function.
27088         * regclass.c: Revert patch of 2006-03-05, restoring
27089         reg_scan_update.
27090         (clear_reg_info_regno): New function.
27091         * dwarf2out.c (concatn_loc_descriptor): New static function.
27092         (loc_descriptor): Handle CONCATN.
27093         * common.opt (fsplit_wide_types): New option.
27094         * opts.c (decode_options): Set flag_split_wide_types when
27095         optimizing.
27096         * timevar.def (TV_LOWER_SUBREG): Define.
27097         * rtl.h (gen_reg_rtx_offset): Declare.
27098         (reg_scan_update): Declare.
27099         * regs.h (clear_reg_info_regno): Declare.
27100         * tree-pass.h (pass_lower_subreg): Declare.
27101         (pass_lower_subreg2): Declare.
27102         * doc/invoke.texi (Option Summary): List -fno-split-wide-types.
27103         (Optimize Options): Add -fsplit-wide-types to -O1 list.  Document
27104         -fsplit-wide-types.
27105         * doc/rtl.texi (Regs and Memory): Document concat and concatn.
27106         * Makefile.in (OBJS-common): Add lower-subreg.o.
27107         (lower-subreg.o): New target.
27108
27109 2007-01-31  Kazu Hirata  <kazu@codesourcery.com>
27110
27111         * config/sh/sh.h (HAVE_SECONDARY_RELOADS): Remove.
27112
27113 2007-01-31  Anatoly Sokolov <aesok@post.ru>
27114
27115         PR target/19087
27116         * config/avr/avr.c (DWARF2_ADDR_SIZE): Define.
27117
27118 2007-01-31  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
27119
27120         PR middle-end/29335
27121         * builtins.c (fold_builtin_sqrt): Use MPFR for constant args.
27122
27123 2007-01-31  Zdenek Dvorak <dvorakz@suse.cz>
27124
27125         * cfgloop.h: Include vec-prim.h.
27126         (enum li_flags): Remove LI_ONLY_OLD.
27127         (loop_iterator): Changed.
27128         (fel_next, fel_init): Iterate over loop tree.
27129         (FOR_EACH_LOOP_BREAK): New macro.
27130         * loop-unswitch.c (unswitch_loops): Do not pass LI_ONLY_OLD to
27131         FOR_EACH_LOOP.
27132         * tree-ssa-loop-unswitch.c (tree_ssa_unswitch_loops): Ditto.
27133         * modulo-sched.c (sms_schedule): Ditto.
27134         * tree-vectorizer.c (vectorize_loops): Ditto.
27135         * doc/loop.texi: Update information on loop numbering and behavior of
27136         FOR_EACH_LOOP wrto new loops.
27137         * tree-scalar-evolution.c (compute_overall_effect_of_inner_loop,
27138         add_to_evolution_1): Test nestedness of loops instead of comparing
27139         their numbers.
27140         * tree-chrec.c (chrec_fold_plus_poly_poly,
27141         chrec_fold_multiply_poly_poly, chrec_evaluate,
27142         hide_evolution_in_other_loops_than_loop, chrec_component_in_loop_num,
27143         reset_evolution_in_loop): Ditto.
27144         * Makefile.in (CFGLOOP_H): Add vecprim.h dependency.
27145
27146 2007-01-31  Dirk Mueller  <dmueller@suse.de>
27147
27148         * c-common.c (warn_about_parentheses): Separate warning about
27149         un-parenthized sequence of comparison operators from the one
27150         which is supposed to warn about x <= y <= z.
27151
27152 2007-01-31  Uros Bizjak  <ubizjak@gmail.com>
27153
27154         * optabs.h (enum optab_index): Add new OTI_isinf.
27155         (isinf_optab): Define corresponding macro.
27156         * optabs.c (init_optabs): Initialize isinf_optab.
27157         * genopinit.c (optabs): Implement isinf_optab using isinf?f2
27158         patterns.
27159         * builtins.c (mathfn_built_in): Handle BUILT_IN_ISINF{,F,L}.
27160         (expand_builtin_interclass_mathfn): Expand BUILT_IN_ISINF{,F,L}
27161         using isinf_optab.
27162         (expand_builtin): Expand BUILT_IN_ISINF{,F,L} using
27163         expand_builtin_interclass_mathfn.
27164         * reg_stack.c (subst_stack_regs_pat): Handle UNSPEC_FXAM.
27165         * config/i386/i386.md (UNSPEC_FXAM): New constant.
27166         (fxam<mode>2_i387): New insn pattern.
27167         (isinf<mode>2) New expander to implement isinf, isinff and isinfl
27168         built-in functions as x87 inline asm.
27169
27170 2007-01-31  Kazu Hirata  <kazu@codesourcery.com>
27171
27172         * config/arm/unwind-arm.h (_sleb128_t, _uleb128_t): New.
27173
27174 2007-01-30  Eric Christopher  <echristo@apple.com>
27175
27176         * config.gcc: Add geode.
27177
27178 2007-01-31  Kazu Hirata  <kazu@codesourcery.com>
27179
27180         * cgraphunit.c, config/arm/arm.c, config/m68k/m68k.c,
27181         ipa-inline.c, tree-profile.c, tree-ssa-live.c,
27182         tree-ssa-math-opts.c, tree-ssanames.c, tree-vect-analyze.c,
27183         value-prof.c: Fix comment typos.
27184
27185 2007-01-30  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
27186
27187         PR c++/24745
27188         * doc/invoke.texi (Wpointer-arith): Document warning.
27189
27190 2007-01-30  Janis Johnson  <janis187@us.ibm.com>
27191
27192         * doc/extend.texi (Decimal Floating Types): Remove decfloat.h from
27193         the list of discrepancies from the draft TR.
27194
27195 2007-01-30  Dirk Mueller  <dmueller@suse.de>
27196
27197         PR c++/30601
27198         * doc/invoke.texi (-Wreturn-type): Update description to
27199         match new behavior.
27200
27201 2007-01-30  Richard Sandiford  <richard@codesourcery.com>
27202
27203         * cfgrtl.c (try_redirect_by_replacing_jump): Check only_sets_cc0_p.
27204
27205 2007-01-30  Uros Bizjak  <ubizjak@gmail.com>
27206
27207         * builtins.c (expand_builtin_int_interclass_roundingfn): New function
27208         to handle optabs that operate on floating point input argument and
27209         output to integer output.
27210         (expand_builtin_mathfn) [BUILT_IN_ILOGB]: Move from here ...
27211         (expand_builtin_interclass_mathfn) [BUILT_IN_ILOGB]: ... to here.
27212         (expand_builtin): Expand BUILT_IN_ILOGB{,F,L} using
27213         expand_builtin_interclass_mathfn ().
27214         * config/i386/i386.md (fxtractxf3_i387): Rename from *fxtractxf3_i387.
27215         (ilogbsi2): Remove.
27216         (ilogbxf2, ilogb<mode>2): New expanders to implement ilogb, ilogbf and
27217         ilogbl built-in functions as x87 intrinsics.
27218
27219 2007-01-30  Richard Guenther  <rguenther@suse.de>
27220
27221         PR middle-end/27657
27222         * dwarf2out.c (reference_to_unused): Query varpool if the
27223         variable was output.
27224
27225 2007-01-30  Richard Guenther  <rguenther@suse.de>
27226
27227         PR middle-end/30313
27228         * passes.c (execute_one_pass): Reset in_gimple_form to not
27229         confuse non-unit-at-a-time mode.
27230
27231 2007-01-29  Roger Sayle  <roger@eyesopen.com>
27232             Richard Guenther  <rguenther@suse.de>
27233
27234         * fold-const.c (round_up): Make HIGH an unsigned HOST_WIDE_INT to
27235         avoid undefined behaviour on overflow.  Use force_fit_type_double
27236         to construct the constant with the specified TREE_OVERFLOW.
27237
27238 2007-01-29  Janis Johnson  <janis187@us.ibm.com>
27239
27240         * config/dfp-bit.c: Add parameterized support for fp exceptions.
27241         * config/dfp-bit.h: Ditto.
27242
27243 2007-01-29  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
27244
27245         * c-decl.c (pop_scope): Replace warnings with call to
27246         warn_for_unused_label.
27247         * c-common.h (warn_for_unused_label): Declare.
27248         * c-common.c (warn_for_unused_label): Define.
27249
27250 2007-01-29  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
27251
27252         * tree-optimize.c (update_inlined_to_pointers): Delete unused
27253         function.
27254
27255 2007-01-29  Janis Johnson  <janis187@us.ibm.com>
27256
27257         * Makefile.in (USER_H): Remove decfloat.h.
27258         * ginclude/decfloat.h: Delete, moving contents to ...
27259         * ginclude/float.h: Add support for decimal floating point,
27260         guarded by __STDC_WANT_DEC_FP__.
27261
27262 2007-01-29  Mike Stump  <mrs@apple.com>
27263
27264         * doc/gccint.texi (Top): Rename Loop Representation to Loop
27265         Analysis and Representation to resolve case insensitive conflict.
27266         * doc/loop.texi (Loop Analysis and Representation): Likewise.
27267
27268 2007-01-28  Daniel Berlin  <dberlin@dberlin.org>
27269
27270         * tree.h (struct tree_memory_tag): Add aliases member.
27271         (MTAG_ALIASES): New macro.
27272         * tree-ssa-alias.c (alias_bitmap_obstack): New variable.
27273         (add_may_alias): Remove pointer-set. Update for may_aliases being
27274         a bitmap.
27275         (mark_aliases_call_clobbered): Update for may_aliases being a
27276         bitmap.
27277         (compute_tag_properties): Ditto.
27278         (create_partition_for): Ditto.
27279         (compute_memory_partitions): Ditto.
27280         (dump_may_aliases_for): Ditto.
27281         (is_aliased_with): Ditto.
27282         (add_may_alias_for_new_tag): Ditto.
27283         (rewrite_alias_set_for): Rewrite for may_aliases being a bitmap.
27284         (compute_is_aliased): New function.
27285         (compute_may_aliases): Call compute_is_aliased).
27286         (init_alias_info): Initialize alias_bitmap_obstack.
27287         (union_alias_set_into): New function.
27288         (compute_flow_sensitive_aliasing): Use union_aliases_into.
27289         (have_common_aliases_p): Rewrite to take two bitmaps and use
27290         intersection.
27291         (compute_flow_insensitive_aliasing): Stop using pointer-sets.
27292         Update for bitmaps.
27293         (finalize_ref_all_pointers): Update for add_may_alias changes.
27294         (new_type_alias): Ditto.
27295         * tree-flow-inline.h (may_aliases): Return a bitmap.
27296         * tree-dfa.c (dump_variable): Check for MTAG_P'ness.
27297         * tree-ssa.c (verify_flow_insensitive_alias_info): Update for
27298         may_aliases being a bitmap.
27299         * tree-flow.h (struct var_ann_d): Remove may_aliases member.
27300         may_aliases now returns a bitmap.
27301         * tree-ssa-structalias.c (merge_smts_into): Update for may_aliases
27302         being a bitmap.
27303         * tree-ssa-operands.c (add_virtual_operand): Update for
27304         may_aliases being a bitmap.
27305
27306 2007-01-29  Daniel Berlin  <dberlin@dberlin.org>
27307
27308         PR tree-optimization/30630
27309         * tree-ssa-structalias.c (do_complex_constraint): Mark correct
27310         variable as changed.
27311
27312 2007-01-29  Simon Martin  <simartin@users.sourceforge.net>
27313
27314         PR c++/28266
27315         * gimplify.c (gimplify_target_expr): Make sure that the TARGET_EXPR is
27316         expanded only once even if an error occurs.
27317
27318 2007-01-29  Ben Elliston  <bje@au.ibm.com>
27319
27320         * gcov-io.h (__gcov_indirect_call_profiler): Declare.
27321         (__gcov_average_profiler): Likewise.
27322         (__gcov_ior_profiler): Likewise.
27323         (__gcov_merge_ior): Likewise.
27324
27325 2007-01-28  Jan Hubicka  <jh@suse.cz>
27326
27327         * builtins.c (expand_builtin_memset): Fix typo in my last patch.
27328         * value-prof.c (stringop_block_profile): Likewise.
27329
27330 2007-01-28  Jan Hubicka  <jh@suse.cz>
27331
27332         * expr.c (emit_block_move_via_movmem, emit_block_move_via_libcall):
27333         Add variant handling histograms; add wrapper.
27334         (clear_storage_via_libcall): Export.
27335         (emit_block_move_hints): Break out from ...; add histograms.
27336         (emit_block_move): ... this one.
27337         (clear_storage_hints): Break out from ...; add histograms.
27338         (clear_storage): ... this one.
27339         (set_storage_via_memset): Handle histogram.
27340         * expr.h (emit_block_move_via_libcall, emit_block_move_hints): Declare.
27341         (clear_storage_hints, clear_storage_via_libcall): Declare.
27342         (set_storage_via_setmem): Update prototype.
27343         * doc/md.texi (movmem, setmem): Document new arguments.
27344
27345         * value-prof.c (dump_histogram_value, tree_find_values_to_profile):
27346         Add new histograms.
27347         (stringop_block_profile): New global function.
27348         (tree_stringops_values_to_profile): Profile block size and alignment.
27349         * value-prof.h (enum hist_type): add HIST_TYPE_AVERAGE and
27350         HIST_TYPE_IOR.
27351         (struct profile_hooks): Add gen_average_profiler and gen_ior_profiler.
27352         (stringop_block_profile): Declare.
27353         * builtins.c: Include value-prof.h.
27354         (expand_builtin_memcpy, expand_builtin_memset): Pass block profile.
27355         * gcov-ui.h (GCOV_COUNTER_NAMES): Add new counter.
27356         (GCOV_COUNTER_AVERAGE, GCOV_COUNTER_IOR): New constants.
27357         (GCOV_COUNTERS, GCOV_LAST_VALUE_COUNTER): Update.
27358         * profile.c (instrument_values): Add new counters.
27359         * cfgexpand.c (expand_gimple_basic_block): Propagate histograms to
27360         calls.
27361         * tree-profile.c (tree_average_profiler_fn, tree_ior_profiler_fn): New.
27362         (tree_init_edge_profiler): Build new profilers.
27363         (tree_gen_average_profiler, tree_gen_ior_profiler): New.
27364         (pass_tree_profile): Add dump.
27365         (tree_profile_hooks): Update.
27366         * Makefile.in (LIBGCOV): Add new constants.
27367         * libgcov.c (__gcov_merge_ior, __gcov_average_profiler,
27368         __gcov_ior_profiler): New.
27369         * i386.md (movmem/setmem expanders): Add new optional arguments.
27370
27371 2007-01-28  David Edelsohn  <edelsohn@gnu.org>
27372
27373         * doc/md.texi (Standard Pattern Names): Document blockage pattern.
27374
27375 2007-01-28  Zdenek Dvorak <dvorakz@suse.cz>
27376
27377         * tree-ssa-loop-unswitch.c: Include tree-inline.h.
27378         (tree_unswitch_single_loop): Pass eni_size_weights to
27379         tree_num_loop_insns.
27380         * tree-ssa-loop-manip.c: Include tree-inline.h.
27381         (can_unroll_loop_p): Pass eni_size_weights to
27382         tree_num_loop_insns.
27383         * tree-ssa-loop-ch.c (should_duplicate_loop_header_p):
27384         Pass eni_size_weights to estimate_num_insns.
27385         * tree.h (init_inline_once): Export.
27386         * toplev.c (backend_init): Call init_inline_once.
27387         * cgraphunit.c (cgraph_process_new_functions,
27388         cgraph_analyze_function): Pass eni_inlining_weights to
27389         estimate_num_insns.
27390         * ipa-inline.c (compute_inline_parameters): Ditto.
27391         * tree-ssa-loop-ivcanon.c (tree_num_loop_insns): Pass weights
27392         to estimate_num_insns.
27393         (try_unroll_loop_completely): Pass eni_size_weights to
27394         tree_num_loop_insns.
27395         * tree-eh.c (decide_copy_try_finally): Pass eni_size_weights
27396         ot estimate_num_insns.
27397         * tree-ssa-loop-prefetch.c: Include tree-inline.h.
27398         (loop_prefetch_arrays): Pass eni_time_weights to tree_num_loop_insns.
27399         * tree-inline.c (eni_inlining_weights, eni_size_weights,
27400         eni_time_weights): New variables.
27401         (init_inline_once): Initialize them.
27402         (struct eni_data): Mew.
27403         (estimate_num_insns_1, estimate_num_insns): Use weights.
27404         * tree-inline.h (struct eni_weights_d): New.
27405         (eni_inlining_weights, eni_size_weights, eni_time_weights): Declare.
27406         (estimate_num_insns): Declaration changed.
27407         * cfgloop.h (tree_num_loop_insns): Declaration changed.
27408         * Makefile.in (tree-ssa-loop-unswitch.o, tree-ssa-loop-prefetch.o,
27409         tree-ssa-loop-manip.o): Add TREE_INLINE_H dependency.
27410
27411 2007-01-28  Zdenek Dvorak <dvorakz@suse.cz>
27412
27413         * tree-data-ref.c (conflict_fn): Assert that the number of affine
27414         relations in the conflict function is valid.
27415
27416 2007-01-27  Ian Lance Taylor  <iant@google.com>
27417
27418         * common.opt: Add fstrict-overflow.
27419         * opts.c (decode_options): Set flag_strict_overflow if -O2.
27420         * flags.h (TYPE_OVERFLOW_WRAPS): Define.
27421         (TYPE_OVERFLOW_UNDEFINED): Define.
27422         (TYPE_OVERFLOW_TRAPS): Define.  This replaces TYPE_TRAP_SIGNED.
27423         Replace all uses.
27424         * tree.h (TYPE_TRAP_SIGNED): Don't define.
27425         * fold-const.c (negate_expr_p): Use TYPE_OVERFLOW_UNDEFINED.
27426         (fold_negate_expr): Likewise.
27427         (make_range): Likewise.
27428         (extract_muldiv_1): Likewise.
27429         (maybe_canonicalize_comparison): Likewise.
27430         (fold_comparison): Likewise.
27431         (fold_binary): Likewise.
27432         (tree_expr_nonnegative_p): Likewise.
27433         (tree_expr_nonzero_p): Likewise.
27434         * tree-vrp.c (compare_values): Likewise.
27435         (extract_range_from_binary_expr): Likewise.
27436         (extract_range_from_unary_expr): Likewise.
27437         * tree-ssa-loop-niter.c (infer_loop_bounds_from_signedness):
27438         Likewise.
27439         (nowrap_type_p): Likewise.
27440         * tree-scalar-evolution.c (simple_iv): Likewise.
27441         * fold-const.c (negate_expr_p): Use TYPE_OVERFLOW_WRAPS.
27442         (build_range_check): Likewise.
27443         (extract_muldiv_1): Likewise.
27444         (fold_comparison): Likewise.
27445         * tree-vrp.c (vrp_int_const_binop): Likewise.
27446         (extract_range_from_unary_expr): Likewise.
27447         * convert.c (convert_to_integer): Likewise.
27448         * fold-const.c (fold_negate_expr): Use TYPE_OVERFLOW_TRAPS.
27449         (fold_comparison): Likewise.
27450         (fold_binary): Likewise.
27451         * optabs.c (optab_for_tree_code): Likewise.
27452         * tree-vectorizer.c (vect_is_simple_reduction): Likewise.
27453         * simplify-rtx.c (simplify_const_relational_operation): Check
27454         flag_strict_overflow and flag_trapv.
27455         (simplify_const_relational_operation): Likewise.
27456         * doc/invoke.texi (Option Summary): Mention -fstrict-overflow.
27457         (Optimize Options): Add -fstrict-overflow to -O2 list.  Document
27458         -fstrict-overflow.
27459
27460 2007-01-27  Roger Sayle  <roger@eyesopen.com>
27461
27462         * tree.c (tree_fold_gcd): Delete.
27463         * tree.h (tree_fold_gcd): Remove prototype.
27464         * tree-data-ref.c (tree_fold_divides_p): Don't use tree_fold_gcd to
27465         test whether one constant integer is a multiple of another.  Instead
27466         call int_const_binop with TRUNC_MOD_EXPR and test for a zero result.
27467         * fold-const.c (multiple_of_p): We've determined both TOP and
27468         BOTTOM are integer constants so we can call int_const_binop directly
27469         instead of the more generic const_binop.
27470
27471 2007-01-27  Roger Sayle  <roger@eyesopen.com>
27472
27473         * fold-const.c (size_binop): In the fast-paths for X+0, 0+X, X-0 and
27474         1*X check that the constant hasn't overflowed, to preserve the
27475         TREE_OVERFLOW bit.
27476         (round_up): Provide an efficient implementation when rouding-up an
27477         INTEGER_CST to a power-of-two.
27478
27479 2007-01-28  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
27480
27481         * doc/sourcebuild.texi: Add comma for clarity.
27482         * doc/extend.texi: Fix some typos.
27483         * doc/passes.texi: Likewise.
27484         * doc/cppinternals.texi: Likewise.
27485         * doc/c-tree.texi: Likewise.
27486         * doc/tree-ssa.texi: Likewise.
27487         * doc/install.texi: Likewise.
27488
27489 2007-01-27  Jan Hubicka  <jh@suse.cz>
27490
27491         * tree-sra.c (sra_walk_function): Don't rely on aliases being build.
27492         (pass_sra): Do not require alias information.
27493         * passes.c (init_optimization_passes): Add SRA
27494
27495 2007-01-27  Steven Bosscher  <steven@gcc.gnu.org>
27496
27497         * tracer.c (rest_of_handle_tracer): We already cleaned
27498         up the CFG in tracer() so don't do it here again.
27499         * cfgcleanup.c (rest_of_handle_jump2): Don't repeat
27500         cleanup_cfg here, either.  And don't call renumber_insns.
27501
27502         * cfgrtl.c (rtl_verify_flow_info_1): Don't verify that BB_END
27503         and BB_HEAD are in the insn stream here.  Instead make sure
27504         that BB_INSN is valid on all insns.  Also, do check here that
27505         there are no pending branch predictions...
27506         (rtl_verify_flow_info): ...instead of doing it here.  Checks
27507         for BB_END and BB_HEAD moved from rtl_verify_flow_info_1 to
27508         here.
27509
27510 2007-01-26  Roger Sayle  <roger@eyesopen.com>
27511
27512         * config/i386/i386.c (ix86_swap_binary_operands_p): New helper
27513         function to simplify/factorize operand order canonicalization.
27514         (ix86_fixup_binary_operands): Reorganize using the above function.
27515         (ix86_binary_operator_ok): Likewise.
27516
27517 2007-01-27  Jakub Jelinek  <jakub@redhat.com>
27518
27519         * genattrtab.c (struct attr_value_list, insn_code_values): Move to
27520         file scope from optimize_attrs.
27521         (simplify_test_exp): If insn_code_values is not NULL, use it to speed
27522         up search.
27523         (optimize_attrs): Clear insn_code_values after freeing it.
27524
27525 2007-01-26  Zdenek Dvorak <dvorakz@suse.cz>
27526
27527         * tree-ssa-address.c (create_mem_ref): Remove ", bsi" from
27528         a parts.base assignment.
27529
27530 2007-01-26  Zdenek Dvorak <dvorakz@suse.cz>
27531
27532         * tree-data-ref.c (dump_subscript): Use dump_conflict_function.
27533         (compute_subscript_distance, initialize_data_dependence_relation,
27534         finalize_ddr_dependent, analyze_ziv_subscript,
27535         analyze_siv_subscript_cst_affine,
27536         compute_overlap_steps_for_affine_univar,
27537         compute_overlap_steps_for_affine_1_2, analyze_subscript_affine_affine,
27538         analyze_siv_subscript, analyze_miv_subscript,
27539         analyze_overlapping_iterations, subscript_dependence_tester_1,
27540         compute_self_dependence, free_dependence_relation): Work
27541         with affine_fn instead of chrecs.
27542         (dump_affine_function, dump_conflict_function, affine_function_equal_p,
27543         common_affine_function, affine_function_base,
27544         affine_function_constant_p, affine_fn_op, affine_fn_plus,
27545         affine_fn_minus, affine_fn_free, conflict_fn_not_known,
27546         conflict_fn_no_dependence, free_conflict_function, free_subscripts,
27547         conflict_fn, affine_fn_cst, affine_fn_univar): New functions.
27548         (all_chrecs_equal_p): Removed.
27549         * tree-data-ref.h (affine_fn, conflict_function): New types.
27550         (struct subscript): Change type of conflicting_iterations_in_a
27551         and conflicting_iterations_in_b.
27552
27553 2007-01-26  Steve Ellcey  <sje@cup.hp.com>
27554
27555         PR other/30182
27556         * config/pa/pa.h (TARGET_HPUX_11): New.
27557         * config/pa/pa-hpux11.h (TARGET_HPUX_11): New.
27558         * config/pa/pa.c (pa_init_builtins): Use TARGET_HPUX_11.
27559
27560 2007-01-26  Daniel Berlin  <dberlin@dberlin.org>
27561         Richard Guenther  <rguenther@suse.de>
27562
27563         * tree-ssa-structalias.c (solve_graph): Handle case
27564         we merged the variable to another.
27565
27566 2007-01-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
27567
27568         * builtins.c (fold_builtin_1): Treat ccos and ccosh as 'even'
27569         functions.
27570
27571         * fold-const.c (negate_mathfn_p): Treat casin, casinh, catan,
27572         catanh, cproj, csin, csinh, ctan and ctanh as 'odd' functions.
27573
27574 2007-01-25  DJ Delorie  <dj@redhat.com>
27575
27576         * config/m32c/m32c.c (m32c_cannot_change_mode_class): We don't
27577         allow changes to modes which don't fit in those registers.
27578
27579         * reload1.c (choose_reload_regs): Check for invalid subregs before
27580         computing their locations, not after.
27581
27582 2007-01-25  Geoffrey Keating  <geoffk@apple.com>
27583
27584         PR 25127
27585         * config/rs6000/rs6000.c (first_altivec_reg_to_save): On Darwin,
27586         save Altivec registers in an eh_return function.
27587         (compute_vrsave_mask): Likewise.
27588         (rs6000_stack_info): Correct AIX/Darwin stack alignment computation
27589         for saving Altivec registers.
27590         (rs6000_emit_prologue): Don't allocate stack twice in
27591         eh_return function.  Correct expected value of altivec_save_offset
27592         when using save_world.  Describe save of R0 to stack when using
27593         save_world.  Describe stack pointer adjustment when using
27594         save_world.  Remove duplicated eh_return parameter register saving.
27595         Update sp_offset variable after save_world.
27596         * config/rs6000/t-darwin (LIB2FUNCS_STATIC_EXTRA): Remove
27597         darwin-world.asm.
27598         (LIB2FUNCS_EXTRA): Add darwin-world.asm.
27599         * config/rs6000/darwin.h (SUBTARGET_OVERRIDE_OPTIONS): -m64
27600         implies Altivec.
27601
27602 2007-01-25  Steve Ellcey  <sje@cup.hp.com>
27603
27604         * config.gcc (ia64*-*-hpux*): Make posix threads the default.
27605
27606 2007-01-25  Steve Ellcey  <sje@cup.hp.com>
27607
27608         PR other/30182
27609         * config/pa/pa.c (pa_init_builtins): Set asm names for finite routines.
27610         * config/ia64/ia64.c (ia64_init_builtins): Ditto.
27611
27612 2007-01-25  Richard Guenther  <rguenther@suse.de>
27613
27614         * doc/invoke.texi (-Wcoverage-mismatch): Document.
27615         * common.opt (-Wcoverage-mismatch): New warning option.
27616         * coverage.c (get_coverage_counts): Ignore coverage mismatch
27617         if -Wcoverage-mismatch is given.
27618
27619 2007-01-25  Razya Ladelsky  <razya@il.ibm.com>
27620
27621         * ipa-cp.c (ipcp_insert_stage, ipcp_driver): Support for SSA.
27622         (ipcp_driver): Change to static definition.
27623         Add dumping of the ifunctions.
27624         (constant_val_insert): Remove unused parameter. Support for SSA.
27625         (ipcp_propagate_const): Support for SSA.
27626         (ipcp_profile_bb_print): Print only analyzed nodes.
27627         (ipcp_replace_map_create): Remove support for Fortran constant
27628         for now.
27629         * ipa-prop.c (ipa_method_modify_stmt,
27630         ipa_callsite_compute_param): Support for SSA.
27631         * ipa-prop.h (ipcp_driver): Remove declaration.
27632         (IS_VALID_TREE_MAP_INDEX): Add define.
27633
27634 2007-01-24  Geoffrey Keating  <geoffk@apple.com>
27635
27636         * unwind-dw2.c (execute_stack_op): Handle DW_OP_swap.
27637
27638 2007-01-24  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
27639
27640         PR middle-end/30447
27641         * builtins.c (fold_builtin_cabs): Use MPFR to evaluate a
27642         constant argument to cabs and do it without checking for
27643         -funsafe-math-optimizations.
27644
27645 2007-01-24  Douglas Gregor  <dgregor@osl.iu.edu>
27646
27647         * c-common.h (RID_FIRST_CXX0X): New.
27648         (RID_LAST_CXX0X): New.
27649         * c-opts.c (c_common_handle_option): -Wc++0x-compat is triggered
27650         by -Wall.
27651         * c.opt (Wc++0x-compat): New.
27652         * doc/invoke.texi (-Wc++0x-compat): Document.
27653
27654 2007-01-24  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
27655
27656         * builtins.c (fold_builtin_carg): New.
27657         (fold_builtin_1): Use it.
27658
27659 2007-01-24  Jan Hubicka  <jh@suse.cz>
27660
27661         * ipa-inline.c (cgraph_decide_inlining): Initialize initial_insns.
27662
27663         * ipa-inline.c (initial_insns, max_insns): Delete.
27664         (compute_max_insns): New function.
27665         (cgraph_decide_inlining_of_small_function): Use it; take minimal
27666         amount of insns as base for code growth.
27667         (cgraph_decide_inlining): Make initial_insns local; do not compute
27668         max_insns.
27669         * params.def (PARAM_INLINE_UNIT_GROWTH): Set to 60.
27670         * doc/invoke.texi (inline-unit-growth): Update docs.
27671
27672 2007-01-24  Jakub Jelinek  <jakub@redhat.com>
27673
27674         * config/i386/i386.h (x86_cmpxchg16b): Remove const.
27675         (TARGET_CMPXCHG16B): Define to x86_cmpxchg16b.
27676         * config/i386/i386.c (x86_cmpxchg16b): Remove const.
27677         (override_options): Add PTA_CX16 flag.  Set x86_cmpxchg16b
27678         for CPUs that have PTA_CX16 set.
27679
27680         PR middle-end/27416
27681         * gimplify.c (omp_check_private): New function.
27682         (gimplify_scan_omp_clauses): Use it for
27683         firstprivate/lastprivate/reduction.
27684
27685         PR middle-end/30494
27686         * gimplify.c (omp_add_variable): Don't call omp_notice_variable
27687         on TYPE_SIZE_UNIT for GOVD_LOCAL VLAs.
27688
27689         PR middle-end/30421
27690         * omp-low.c (lower_omp_for_lastprivate): Add dlist argument.
27691         If lower_lastprivate_clauses emits some statements, append them
27692         to dlist rather than body_p and to body_p append an initializer.
27693         (lower_omp_for): Adjust caller.
27694
27695 2007-01-24  Steve Ellcey  <sje@cup.hp.com>
27696
27697         * target.h (globalize_decl_name): New.
27698         * target-def.h (TARGET_ASM_GLOBALIZE_DECL_NAME): New.
27699         * output.h (default_globalize_decl_name): New.
27700         * varasm.c (asm_output_bss): Use globalize_decl_name instead of
27701         globalize_label.
27702         (globalize_decl): Ditto.
27703         (default_globalize_decl_name): New.
27704         * config/ia64/ia64.c (ia64_globalize_decl_name): New.
27705         (ia64_handle_version_id_attribute): New.
27706         (TARGET_ASM_GLOBALIZE_DECL_NAME): New.
27707         (ia64_asm_output_external): Use globalize_decl_name instead
27708         of globalize_label.
27709         * doc/extend.texi (version_id): New pragma.
27710         * doc/tm.texi (ARGET_ASM_GLOBALIZE_DECL_NAME): New target hook.
27711
27712 2007-01-24  Andreas Krebbel  <krebbel1@de.ibm.com>
27713
27714         * unwind-dw2-fde.c (get_cie_encoding): Replaced _Unwind_Word with
27715         _uleb128_t and _Unwind_SWord with _sleb128_t.
27716         * unwind-dw2.c (extract_cie_info, execute_stack_op,
27717         execute_cfa_program, uw_frame_state_for, uw_update_context_1):
27718         Likewise.
27719         * unwind-c.c (parse_lsda_header, PERSONALITY_FUNCTION): Likewise.
27720         * unwind-pe.h (read_uleb128, read_sleb128,
27721         read_encoded_value_with_base): Likewise.
27722         * unwind-generic.h: Define _sleb128_t and _uleb128_t types.
27723
27724 2007-01-24  Richard Guenther  <rguenther@suse.de>
27725
27726         * builtins.c (expand_builtin_cexpi): Get the fndecl
27727         for cexp in the correct way.
27728
27729 2007-01-24  Jan Hubicka  <jh@suse.cz>
27730
27731         * tree-ssa-dce.c (eliminate_unnecesary_stmts): Remove dead LHS
27732         of calls.
27733
27734 2007-01-24  Andreas Krebbel  <krebbel1@de.ibm.com>
27735
27736         * c-cppbuiltin.c (builtin_define_type_sizeof): New function.
27737         (c_cpp_builtins): New builtin macros: __SIZEOF_INT__, __SIZEOF_LONG__,
27738         __SIZEOF_LONG_LONG__, __SIZEOF_SHORT__, __SIZEOF_POINTER__,
27739         __SIZEOF_FLOAT__, __SIZEOF_DOUBLE__, __SIZEOF_LONG_DOUBLE__,
27740         __SIZEOF_SIZE_T__, __SIZEOF_WCHAR_T__, __SIZEOF_WINT_T__ and
27741         __SIZEOF_PTRDIFF_T__.
27742         * doc/cpp.texi: Documentation for the new builtin macros added.
27743
27744 2007-01-24  Uros Bizjak  <ubizjak@gmail.com>
27745
27746         * config/i386/i386.md (tanxf2, tan<mode>2, atan<mode>2, log<mode>2,
27747         log10<mode>2, log2<mode>2, expxf2, exp10xf2, exp2xf2): Use op2
27748         instead of operands[2] to avoid access past the end of array.
27749
27750 2007-01-24  Richard Sandiford  <richard@codesourcery.com>
27751
27752         * reload1.c (emit_reload_insns): Pass the reload register
27753         for a non-spill output reload through forget_old_reloads_1.
27754
27755 2007-01-23  Joseph Myers  <joseph@codesourcery.com>
27756
27757         * config/rs6000/rs6000-c.c (rs6000_cpu_cpp_builtins): Define
27758         _SOFT_DOUBLE if doubles use software floating-point.
27759         * config/rs6000/libgcc-ppc-glibc.ver: Export additional long
27760         double functions if _SOFT_DOUBLE, not _SOFT_FLOAT.
27761         * config/rs6000/darwin-ldouble.c: Also compile functions for
27762         hard-float without FPRs.  Use fmsub function for all __NO_FPRS__
27763         cases.  Compile extra functions if _SOFT_DOUBLE, not _SOFT_FLOAT.
27764         * config/rs6000/linuxspe.h (SUBSUBTARGET_OVERRIDE_OPTIONS): Remove
27765         commented-out long double override.
27766         (CPP_LONGDOUBLE_DEFAULT_SPEC): Likewise.
27767         * config/rs6000/eabispe.h: Likewise.
27768         * config/rs6000/rs6000.c (rs6000_override_options): Don't override
27769         long double for non-SPE.
27770         (rs6000_handle_option): Likewise.
27771         (invalid_e500_subreg): Disallow more subregs involding DImode,
27772         DFmode, TImode or TFmode.
27773         (rs6000_legitimate_offset_address_p): Check TFmode offsets for
27774         E500 double.
27775         (legitimate_lo_sum_address_p): Also check for TFmode for E500
27776         double.
27777         (rs6000_legitimize_address): Also handle TFmode for E500 double.
27778         (rs6000_legitimize_reload_address): Also handle TFmode for E500
27779         double.
27780         (rs6000_legitimate_address): Also check for TFmode for E500
27781         double.
27782         (rs6000_emit_move): Use DFmode subregs of TFmode for E500 double.
27783         (spe_build_register_parallel): Handle TFmode and TCmode.
27784         (rs6000_spe_function_arg): Handle TFmode and TCmode for E500
27785         double.
27786         (function_arg): Handle TFmode and TCmode for E500 double.
27787         (rs6000_init_libfuncs): Initialize extra libfuncs for soft double
27788         in general.
27789         (print_operand): Handle TFmode and TImode for %y.
27790         (rs6000_generate_compare): Handle TFmode comparisons for E500
27791         double.
27792         (spe_func_has_64bit_regs_p): Check for TFmode for E500 double.
27793         (rs6000_function_value): Handle TFmode and TCmode for E500 double.
27794         (rs6000_libcall_value): Handle TFmode and TCmode for E500 double.
27795         * config/rs6000/rs6000.h (CANNOT_CHANGE_MODE_CLASS): Check for
27796         TFmode for E500 double.
27797         * config/rs6000/rs6000.md (FP): Allow TF for E500 double.
27798         (floatsidf2): Enable for E500 double.
27799         (movtf_softfloat): Use rs6000_nonimmediate_operand.
27800         (extenddftf2): Change to extenddftf2_fprs.
27801         (extenddftf2): Call gen_spe_extenddftf2 or gen_extenddftf2_fprs
27802         depending on TARGET_E500_DOUBLE.
27803         (extendsftf2): Enable for E500 double.
27804         (trunctfdf2): Enable for E500 double.
27805         (trunctfsf2): Change to trunctfsf2_fprs.
27806         (trunctfsf2): Call gen_spe_trunctfsf2 or gen_trunctfsf2_fprs
27807         depending on TARGET_E500_DOUBLE.
27808         (floatsitf2): Enable for E500 double.
27809         (fix_trunctfsi2): Change to fix_trunctfsi2_fprs.
27810         (fix_trunctfsi2): Call gen_spe_fix_trunctfsi2 or
27811         gen_fix_trunctfsi2_fprs depending on TARGET_E500_DOUBLE.
27812         (negtf2): Change to negtf2_internal.
27813         (negtf2): New expander.
27814         (abstf2): Enable for E500 double.  Call gen_spe_abstf2_tst,
27815         gen_spe_abstf2_cmp or gen_abstf2_internal depending on
27816         TARGET_E500_DOUBLE and flag_unsafe_math_optimizations.
27817         (movdi_internal32): Use rs6000_nonimmediate_operand.
27818         (unnamed splitter): Likewise.
27819         * config/rs6000/spe.md (CMPTFEQ_GPR, TSTTFEQ_GPR, CMPTFGT_GPR,
27820         TSTTFGT_GPR, CMPTFLT_GPR, TSTTFLT_GPR): New unspecs.
27821         (SPE64TF, DITI): New mode macros.
27822         (frob_df_di): Change to frob_<SPE64:mode>_<DITI:mode>; allow more
27823         modes.
27824         (frob_tf_ti): New.
27825         (frob_<mode>_di_2): New.
27826         (frob_tf_di_8_2): New.
27827         (frob_di_df): Change to frob_di_<mode>; allow more modes.
27828         (frob_ti_tf): New.
27829         (frob_di_df_2): Change to frob_<DITI:mode>_<SPE64:mode>_2; allow
27830         more modes.
27831         (frob_ti_<mode>_8_2): New.
27832         (frob_ti_tf_2): New.
27833         (mov_si<mode>_e500_subreg0, mov_si<mode>_e500_subreg0_2,
27834         mov_si<mode>_e500_subreg4, mov_si<mode>_e500_subreg4_2): Allow
27835         TFmode.
27836         (mov_sitf_e500_subreg8, mov_sitf_e500_subreg8_2,
27837         mov_sitf_e500_subreg12, mov_sitf_e500_subreg12_2): New.
27838         (spe_trunctfdf2_internal1, spe_trunctfsf2, spe_extenddftf2,
27839         spe_fix_trunctfsi2, spe_fix_trunctfsi2_internal,
27840         spe_negtf2_internal, spe_abstf2_cmp, spe_abstf2_tst): New.
27841         (cmptfeq_gpr, tsttfeq_gpr, cmptfgt_gpr, tsttfgt_gpr, cmptflt_gpr,
27842         tsttflt_gp): New.
27843
27844 2007-01-23  Ian Lance Taylor  <iant@google.com>
27845
27846         * Makefile.in (OBJS-common): Reformat, alphabetize, but put
27847         insn-*.o first.
27848         (OBJS-archive): Reformat, alphabetize.
27849         (OBJS): Change out_object_file to OBJS-md.
27850
27851 2007-01-23  Uros Bizjak  <ubizjak@gmail.com>
27852
27853         * config/i386/i386.md: Use REG_P, MEM_P, CONST_INT_P, LABEL_P,
27854         JUMP_P and CALL_P predicates where applicable.
27855         * config/i386/i386.c: Ditto.
27856         * config/i386/i386.md: Ditto.
27857         * config/i386/mmx.md: Ditto.
27858         * config/i386/predicates.md: Ditto.
27859
27860 2007-01-22  Andreas Schwab  <schwab@suse.de>
27861
27862         * config/m68k/m68k.h: Fix comment.
27863
27864 2007-01-22  Jan Hubicka  <jh@suse.cz>
27865
27866         * passes.c (init_optimization_passes): Do not rerun
27867         pass_early_warn_uninitialized.
27868
27869 2007-01-22  Richard Guenther  <rguenther@suse.de>
27870
27871         PR tree-optimization/30038
27872         * tree-ssa-math-opts.c (maybe_record_sincos): New static helper
27873         function.
27874         (execute_cse_sincos_1): Likewise.
27875         (execute_cse_sincos): Likewise.
27876         (gate_cse_sincos): Likewise.
27877         (pass_cse_sincos): New pass CSEing sin() and cos() calls using
27878         the cexpi() canonicalization of sincos().
27879         * tree-pass.h (pass_cse_sincos): Declare.
27880         * passes.c (init_optimization_passes): New pass pas_cse_sincos.
27881
27882 2007-01-21  Eric Botcazou  <ebotcazou@libertysurf.fr>
27883
27884         PR rtl-optimization/29329
27885         * combine.c (replaced_rhs_insn): Rename to i2mod.
27886         (replaced_rhs_value): Rename to i2mod_new_rhs.
27887         (i2mod_old_rhs): New global variable.
27888         (combine_instructions): Adjust for above change.  Save a copy of
27889         the old RHS into i2mod_old_rhs when the contents of a REG_EQUAL
27890         note are substituted in the second instruction.
27891         (distribute_notes) <REG_DEAD>: Adjust for above change.  Do not
27892         ditch the note if it pertains to the second eliminated register
27893         and this register is mentioned in i2mod_old_rhs.
27894
27895         Revert:
27896         2006-09-12  Eric Botcazou  <ebotcazou@libertysurf.fr>
27897
27898         * combine.c (distribute_notes) <REG_DEAD>: Do not consider SETs past
27899         the insn to which the note was originally attached.
27900
27901 2007-01-21  Jan Hubicka  <jh@suse.cz>
27902
27903         * ipa-inline.c (inlining_mode): Comment, move up.
27904         (cgraph_decide_inlining_incrementally): Do not perform inlining
27905         itself; fix handling of flattening of self recursive functions.
27906         (cgraph_find_cycles): Remove.
27907         (cgraph_flatten_node): Remove.
27908         (cgraph_decide_inlining): Use incremental inliner to handle flattening.
27909         (try_inline): New function.
27910         (cgraph_early_inlining): Update call of
27911         cgraph_decide_inlining_incrementally.  Apply inlining here.
27912         (apply_inline): Update call of cgraph_decide_inlining_incrementally.
27913
27914 2007-01-21  Dirk Mueller  <dmueller@suse.de>
27915
27916         PR bootstrap/30511
27917         * tree-vrp.c (check_array_bounds): do not warn
27918         about ADDR_EXPR's of ARRAY_REF's which are immediately
27919         used in binary expressions.
27920
27921 2007-01-21  Ira Rosen  <irar@il.ibm.com>
27922
27923         * tree-vectorizer.h (struct _stmt_vec_info): Add new field
27924         read_write_dep and macros for its access.
27925         * tree-vectorizer.c (new_stmt_vec_info): Initialize the new field.
27926         * tree-vect-analyze.c (vect_analyze_data_ref_dependence): Remove
27927         argument, call vect_check_interleaving for every independent pair of
27928         data-refs. Mark loads that access the same memory location as a store
27929         in the loop.
27930         (vect_check_dependences): Remove.
27931         (vect_analyze_data_ref_dependences): Remove  vect_check_dependences
27932         call, fix the call to vect_analyze_data_ref_dependence.
27933         (vect_analyze_data_ref_access): For statements that access the same
27934         data-ref, check that they are not stores; for loads, check that there
27935         is no store that access the same location.
27936
27937 2007-01-20  Roger Sayle  <roger@eyesopen.com>
27938             Joseph Myers  <joseph@codesourcery.com>
27939
27940         * doc/invoke.texi (-fdump-rtl-combine): Fix under/overfull hbox.
27941         (-fdump-rtl-stack): Likewise.
27942         (-fno-signed-zeros): Use @minus{} for a minus sign.  Correct typo.
27943         (-mcheck-zero-division, -mcpu): Fix under/overfull hbox.
27944         (-mpt-fixed): Use @minus{} for minus sign.
27945         (Using Precompiled Headers): Fix under/overfull hbox.
27946
27947 2007-01-20  Jan Hubicka  <jh@suse.cz>
27948
27949         * tree-flow.h (struct stmt_ann_d): Move references_memory to proper
27950         place within annotation.
27951
27952 2007-01-20  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
27953
27954         * pa.c (output_move_double): Change array size of xoperands to 4.
27955
27956 2007-01-20  Jan Hubicka  <jh@suse.cz>
27957
27958         * tree-tailcall.c (adjust_return_value): Do not use RESULT_DECL
27959         as temporary.
27960
27961 2007-01-19  Ian Lance Taylor  <iant@google.com>
27962
27963         * expmed.c (expand_divmod) [TRUNC_MOD_EXPR, TRUNC_DIV_EXPR]: Cast
27964         constant to unsigned HOST_WIDE_INT before negating.
27965
27966 2007-01-19  Ian Lance Taylor  <iant@google.com>
27967
27968         * tree-ssa-operands.h (struct vuse_vec_d): Change num_vuse field
27969         to unsigned.
27970         (VUSE_VECT_ELEMENT) [ENABLE_CHECKING]: Use unsigned comparison.
27971         (VUSE_ELEMENT_PTR) [ENABLE_CHECKING]: Likewise.
27972         (SET_VUSE_VECT_ELEMENT) [ENABLE_CHECKING]: Likewise.
27973         (SET_VUSE_ELEMENT_VAR) [ENABLE_CHECKING]: Likewise.
27974         (SET_VUSE_ELEMENT_PTR) [ENABLE_CHECKING]: Likewise.
27975         (realloc_vdef, realloc_vuse): Change second parameter to
27976         unsigned.
27977         (ssa_operand_iterator_d): Change vuse_index and mayuse_index
27978         fields to unsigned.
27979         * tree-ssa-operands.c (realloc_vop): Change num_elem parameter to
27980         unsigned. Change x and lim locals to unsigned.
27981         (realloc_vdef, realloc_vuse): Change num_elem parameter to
27982         unsigned.
27983         (finalize_ssa_vuse_ops): Change old_i local to unsigned.
27984         (copy_virtual_operands): Change i and n locals to unsigned.
27985
27986 2007-01-19  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
27987
27988         PR middle-end/29335
27989         * builtins.c (fold_builtin_1): Handle builtin fdim.
27990
27991 2007-01-20  Jan Hubicka  <jh@suse.cz>
27992
27993         * tree-ssa.c (init_tree_ssa): Do not call init_alias_heapvars.
27994         * tree-ssa-structalias.c (compute_points_to_sets): Do call
27995         init_alias_heapvars.
27996         (init_alias_heapvars): Initialize only when not already initialized.
27997         (delete_alias_heapvars): Set heapvar_for_stmt to NULL.
27998
27999 2007-01-19  Roger Sayle  <roger@eyesopen.com>
28000
28001         * common.opt (fsigned-zeros): New command line option.
28002         * flags.h (HONOR_SIGNED_ZEROS): Control via flag_signed_zeros instead
28003         of flag_unsafe_math_optimizations.
28004         * opts.c (set_fast_math_flags): The -ffast-math command line option
28005         implies -fno-signed-zeros.
28006         (fast_math_flags_set_p): Likewise.
28007
28008         * doc/invoke.texi: Document new -fno-signed-zeros option, and update
28009         the documentation of -ffast-math appropriately.  Wrap long lines.
28010
28011 2007-01-19  Steve Ellcey  <sje@cup.hp.com>
28012
28013         * system.h (ASM_MAKE_LABEL_LINKONCE): Poison.
28014         * varasm.c (globalize_decl): Remove ASM_MAKE_LABEL_LINKONCE ifdef.
28015
28016 2007-01-19  Tomas Bily  <tbily@suse.cz>
28017
28018         * cgraphunit.c (cgraph_finalize_function): Updating of pid
28019         * tree-profile.c:
28020         (tree_init_ic_make_global_vars): New function
28021         (tree_init_edge_profiler): call of tree_init_ic_make_global_vars
28022         (tree_gen_ic_profiler): New function
28023         (tree_gen_ic_func_profiler): New function
28024         (tree_profiling): Added calling of tree_gen_ic_func_profiler
28025         (tree_profile_hooks): Added hook for indirec/virtual calls
28026         * value-prof.c (tree_find_values_to_profile): New case for
28027         indirect calls
28028         (tree_values_to_profile): Call for determining indirect/virtual
28029         counters
28030         (tree_indirect_call_to_profile): New function
28031         (tree_ic_transform): New function
28032         (tree_ic): New function
28033         (find_func_by_pid): New function
28034         (init_pid_map): New function
28035         (tree_value_profile_transformations): Added check for
28036         indirect/virtual call transformation
28037         * value-prof.h (enum hist_type): New counter type for
28038         indirect/virtual calls
28039         (profile_hooks): Added new hook for profiling indirect/virtual
28040         calls
28041         * profile.c (instrument_values): New case for indirect/virtual
28042         call added
28043         * gcov-io.h (GCOV_LAST_VALUE_COUNTER): Changed to 6
28044         (GCOV_COUNTER_V_INDIR): New counter type
28045         (GCOV_COUNTER_NAMES): New name of counter "indirect" added
28046         (GCOV_MERGE_FUNCTIONS): New merge function for indirect/virtual
28047         call added
28048         * cgraph.c: Definition of cgraph_max_pid
28049         (cgraph_create_node): Default init of pid attribute
28050         * cgraph.h: Declaration of cgraph_max_pid
28051         (struct cgraph_node): Added pid attribute
28052         * libgcov.c (__gcov_indirect_call_profiler): New function
28053         (__gcov_one_value_profiler_body): New function
28054         (__gcov_one_value_profiler): Body was moved to
28055         __gcov_one_value_profiler_body and calls it
28056
28057 2007-01-19  Basile Starynkevitch  <basile@starynkevitch.net>
28058
28059         * doc/gty.texi (Options): Document the mark_hook option to GTY.
28060         * gengtype.c (write_types_data, write_func_for_structure,
28061         write_types, ggc_wtd, pch_wtd): Add skip_hooks to
28062         write_types_data, ggc_wtd, pch_wtd for processing mark_hook.
28063         (walk_type, write_func_for_structure): Generate the mark_hook if
28064         needed.
28065
28066 2007-01-19  Jan Hubicka  <jh@suse.cz>
28067
28068         * ipa-inline.c (cgraph_decide_inlining_incrementally): Instead of
28069         'early' argument take inlining mode argument specifying whether to
28070         inline for size/speeed or all functions; add support for flattening;
28071         improve dumpting.
28072         (cgraph_early_inlining): Update call of decide_inlining_incrementally.
28073
28074 2007-01-19  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
28075
28076         PR c++/17947
28077         * toplev.c (warn_deprecated_use): Use %qD instead of %qs to print
28078         the name of the declared identifier.
28079
28080 2007-01-19  Dirk Mueller  <dmueller@suse.de>
28081
28082         * config/i386.h (CONDITIONAL_REGISTER_USAGE): Store
28083         result of PIC_OFFSET_TABLE_REGNUM in temporary variable to avoid
28084         duplicate evaluation.
28085
28086 2007-01-19  Uros Bizjak  <ubizjak@gmail.com>
28087
28088         * config/i386/i386.md (acos<mode>2): Rename from acossf2 and acosdf2.
28089         Macroize expander using X87MODEF12 mode macro.  Extend operand 1
28090         to XFMode, use acosxf2 and truncate result to requested mode.
28091         Use SSE_FLOAT_MODE_P to disable patterns for SSE math.
28092         (asin<mode>2): Similarly, with asin expanders.
28093         (*fscalexf4_i387): Rename from *fscalexf4.
28094         (expNcorexf3): New expander.
28095         (expxf2, exp10xf2, exp2xf2): Use expNcorexf3 expander.
28096         (exp<mode>2): Rename from expsf2 and expdf2. Macroize expander using
28097         X87MODEF12 mode macro.  Extend operand 1 to XFMode, use expxf2 and
28098         truncate result to requested mode. Use SSE_FLOAT_MODE_P to disable
28099         patterns for SSE math.
28100         (exp10<mode>2): Similarly, with exp10 expanders.
28101         (exp2<mode>2): Similarly, with exp2 expanders.
28102         (expm1<mode>2): Similarly, with expm1 expanders.
28103         (ldexp<mode>3): Similarly, with ldexp expanders.
28104         (log<mode>2, log10<mode>2, log2<mode>2, log1p<mode>2, logb<mode>2):
28105         Use gen_truncxf<mode>2_i387_noop to truncate result.
28106
28107 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
28108
28109         * config/m68k/m68k.h (PREFERRED_STACK_BOUNDARY): Define to 32
28110         for ColdFire targets.
28111
28112 2007-01-19  Nathan Sidwell  <nathan@codesourcery.com>
28113             Richard Sandiford  <richard@codesourcery.com>
28114
28115         * config/m68k/m68k.h (M68K_STATIC_CHAIN_REG_NAME): New macro.
28116         (INITIALIZE_TRAMPOLINE): Use STATIC_CHAIN_REGNUM.
28117         (__transfer_from_trampoline): Use M68K_STATIC_CHAIN_REG_NAME.
28118         * config/m68k/m68kelf.h (STATIC_CHAIN_REGNUM): Override.
28119         (M68K_STATIC_CHAIN_REG_NAME): Likewise.
28120         * config/m68k/netbsd-elf.h (M68K_STATIC_CHAIN_REG_NAME): Likewise.
28121
28122 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
28123
28124         * config/m68k/m68k.md (adddi_dilshr32): Rename to...
28125         (*adddi_dilshr32): ...this.  Fix formatting.  Remove commented-out
28126         non-canonical pattern.  Restrict to !TARGET_COLDFIRE.
28127         (*adddi_dilshr32_cf): New pattern.
28128         (adddi3, subdi3): Remove first alternatives.
28129
28130 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
28131
28132         * config/m68k/m68k.c (notice_update_cc): If an SFmode move is
28133         implemented using move.l, do not use its cc result for floating-point
28134         comparisons.
28135
28136 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
28137
28138         * config/m68k/m68k.h (EXTRA_CONSTRAINT): Stop the 'T' constraint
28139         from accepting 's' constraints if flag_pic.
28140
28141 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
28142
28143         * config/m68k/m68k.md (bordered, bunordered, buneq, bunge, bungt)
28144         (bunle, bunlt, bltgt, bordered_rev, bunordered_rev, buneq_rev)
28145         (bunge_rev, bungt_rev, bunle_rev, bunlt_rev, bltgt_rev): Change
28146         condition from TARGET_68881 to TARGET_HARD_FLOAT.
28147
28148 2007-01-19  Sandra Loosemore  <sandra@codesourcery.com>
28149
28150         * longlong.h (count_leading_zeros, COUNT_LEADING_ZEROS_0): Add
28151         ColdFire alternatives.
28152         * config/m68k/m68k.h (CLZ_DEFINED_VALUE_AT_ZERO): New macro.
28153         * config/m68k/m68k.md (clzsi2): Define for ColdFire
28154         architectures that support ff1 instruction.
28155
28156 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
28157             Julian Brown  <julian@codesourcery.com>
28158
28159         * config/m68k/m68k.h (CONST_OK_FOR_LETTER_P): Add an 'R' case.
28160         * config/m68k/m68k.md (*movsi_cfv4): Fold into...
28161         (*movsi_cf): ...here.  Remove unnecessary 'R' from 'Rg'.
28162         Add commentary.
28163
28164 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
28165
28166         * config/m68k/m68k-protos.h (valid_mov3q_const): Take a HOST_WIDE_INT
28167         and return a bool.
28168         (output_move_const_into_data_reg, output_move_simode_const): Delete.
28169         * config/m68k/m68k.c (const_method, const_int_cost): Take a
28170         HOST_WIDE_INT instead of an rtx.
28171         (m68k_rtx_costs): Update call accordingly.
28172         (output_move_const_into_data_reg): Likewise.  Fix formatting.
28173         (valid_mov3q_const): Take a HOST_WIDE_INT instead of an rtx.
28174         Return a bool.
28175         (output_move_simode_const): Update calls after above changes.
28176         Rework to use automatic variables and predicates like MEM_P.
28177         * config/m68k/m68k.md (pushexthisi_const): Update call to
28178         valid_mov3q_const.
28179
28180 2007-01-19  Dirk Mueller  <dmueller@suse.de>
28181
28182         * tree-ssa-alias.c (perform_var_substitution): Fix typo
28183         in dump_flags test.
28184
28185 2007-01-19  Richard Guenther  <rguenther@suse.de>
28186
28187         * builtins.c (expand_builtin_cexpi): Fall back to expanding
28188         via cexp in case sincos is not available.
28189
28190 2007-01-19  Richard Guenther  <rguenther@suse.de>
28191
28192         * doc/tm.texi (TARGET_HAS_SINCOS): Document new target macro.
28193         * defaults.h (TARGET_HAS_SINCOS): Default to off.
28194         * config/linux.h (TARGET_HAS_SINCOS): Set to on if we have glibc.
28195         * config/alpha/linux.h (TARGET_HAS_SINCOS): Likewise.
28196         * config/sparc/linux.h (TARGET_HAS_SINCOS): Likewise.
28197         * config/sparc/linux64.h (TARGET_HAS_SINCOS): Likewise.
28198         * config/rs6000/linux.h (TARGET_HAS_SINCOS): Likewise.
28199         * config/rs6000/linux64.h (TARGET_HAS_SINCOS): Likewise.
28200
28201 2007-01-19  Uros Bizjak  <ubizjak@gmail.com>
28202
28203         * config/i386/i386.md (*fpatanxf3_i387, fpatan_extend<mode>xf3_i387):
28204         New insn patterns.
28205         (atan2sf3_1, atan2df3_1, atan2xf3_1): Remove insn patterns.
28206         (atan2xf3): Directly generate RTL pattern.
28207         (atan2<mode>3): Rename from atan2sf3 and atan2df3 and macroize insn
28208         patterns using X87MODEF12 mode macro.  Use fpatan_extend<mode>xf3_i387
28209         and truncate result to requested mode.  Use SSE_FLOAT_MODE_P to
28210         disable patterns for SSE math.
28211         (atan<mode>2): Rename from atansf2 and atandf2 and macroize insn
28212         patterns using X87MODEF12 mode macro.  Use fpatan_extend<mode>xf3_i387
28213         and truncate result to requested mode.  Use SSE_FLOAT_MODE_P to
28214         disable patterns for SSE math.
28215
28216 2007-01-19  Alexandre Oliva  <aoliva@redhat.com>
28217
28218         * libgcc-std.ver: Fix typo in %inherit for GCC_4.3.0.
28219
28220 2007-01-18  Roger Sayle  <roger@eyesopen.com>
28221
28222         * fold-const.c (fold_unary) <VIEW_CONVERT_EXPR>: Optimize away a
28223         VIEW_CONVERT_EXPR to the same type as it's operand.
28224
28225 2007-01-18  David Edelsohn  <edelsohn@gnu.org>
28226
28227         * config/rs6000/darwin-ldouble.c: Only build _SOFT_FLOAT if
28228         configured for long double 128.
28229
28230 2007-01-18  Mike Stump  <mrs@apple.com>
28231
28232         * config/rs6000/rs6000.c (rs6000_emit_vector_compare): Fix build
28233         error.
28234
28235 2007-01-18  Michael Meissner  <michael.meissner@amd.com>
28236
28237         * i386.c (ix86_compute_frame_layout): Make fprintf's in #if 0 code
28238         type correct.
28239
28240 2007-01-18  Jan Hubicka  <jh@suse.cz>
28241
28242         * tree-ssa-operands.c (vop_free_bucket_size): Never return value
28243         greater than NUM_VOP_FREE_BUCKETS.
28244
28245 2007-01-18  Daniel Berlin  <dberlin@dberlin.org>
28246
28247         * tree-ssa-structalias.c: Update comments.
28248         (ptabitmap_obstack): Removed.
28249         (pta_obstack): New.
28250         (oldpta_obstack): Ditto.
28251         (stats): Add a few members.
28252         (struct variable_info): Remove node, complex, address_taken, and
28253         indirect_target members. Add oldsolution member.
28254         (new_var_info): Do not initialize removed members.
28255         (constraint_expr_type): Remove INCLUDES.
28256         (constraint_graph): Add size, implicit_preds, rep,
28257         indirect_cycles, eq_rep, label, direct_nodes, and complex members.
28258         (FIRST_REF_NODE): New macro.
28259         (LAST_REF_NODE): Ditto.
28260         (FIRST_ADDR_NODE): Ditto.
28261         (find): New function.
28262         (unite): Ditto.
28263         (dump_constraint): Do not handle INCLUDES.
28264         (insert_into_complex): Do not insert duplicate constraints.
28265         (condense_varmap_nodes): Renamed and rewritten into ...
28266         (merge_node_constraints): This. Also fix bug in handling of
28267         offseted copy constraints.
28268         (clear_edges_for_node): No longer need to deal with preds at all,
28269         or removing associated preds/succs.
28270         (merge_graph_nodes): Deal with indirect_cycles.
28271         Don't deal with predecessors.
28272         (add_implicit_graph_edge): New function.
28273         (add_pred_graph_edge): Ditto.
28274         (add_graph_edge): Don't deal with predecessors.
28275         (build_constraint_graph): Removed.
28276         (build_pred_graph): New function.
28277         (build_succ_graph): Ditto.
28278         (struct scc_info): Removed in_component. Added roots, dfs, and
28279         node_mapping. Remove visited_index, unification_queue.
28280         (scc_visit): Deal with union-find we do now.
28281         Deal with cycles with REF nodes.
28282         (collapse_nodes): Renamed and rewritten to ...
28283         (unify_nodes): This.
28284         (process_unification_queue): Removed.
28285         (topo_visit): Cleanup
28286         (do_da_constraint): Use find.
28287         (do_sd_constraint): Ditto.
28288         (do_ds_constraint): Ditto.
28289         (do_complex_constraint): Ditto.
28290         (init_scc_info): Update for removed and added members.
28291         (find_and_collapse_graph_cycles): Renamed and rewritten into ...
28292         (find_indirect_cycles): This.
28293         (equivalence_class): New variable.
28294         (label_visit): New function.
28295         (perform_variable_substitution): Rewritten.
28296         (free_var_substitution_info): New function.
28297         (find_equivalent_node): Ditto.
28298         (move_complex_constraints): Ditto.
28299         (eliminate_indirect_cycles): Ditto.
28300         (solve_graph): Only propagate changed bits.
28301         Use indirect cycle elimination.
28302         Use find.
28303         (tree_id_t): Rename to tree_vi_t, delete id member, add vi member.
28304         (tree_id_eq): Renamed to ...
28305         (tree_vi_eq): This. Update for member change
28306         (insert_id_for_tree): Renamed and rewritten to ...
28307         (insert_vi_for_tree): This.
28308         (lookup_id_for_tree): Renamed and rewritten to ...
28309         (lookup_vi_for_tree): This.
28310         (get_id_for_tree): Renamed and rewritten to ...
28311         (get_vi_for_tree): Ditto.
28312         (get_constraint_exp_from_ssa_var): Update to use get_vi_for_tree.
28313         (process_constraint): Don't handle INCLUDES.
28314         Remove special ADDRESSOF case.
28315         (find_func_aliases): Rewrite to use vi functions instead of id
28316         ones.
28317         (create_function_info_for): Ditto.
28318         (create_variable_info_for): Ditto.
28319         (intra_create_variable_infos): Ditto.
28320         (merge_smts_into): Ditto.
28321         (find_what_p_points_to): Ditto.
28322         (init_base_vars): Ditto.
28323         (init_alias_vars): Ditto.
28324         (remove_preds_and_fake_succs): New function.
28325         (dump_sa_points_to_info): Dump new stats.
28326         (dump_solution_for_var): Use find.
28327         (set_used_smts): Fix formatting.
28328         (compute_points_to_sets): Updated for new functions.
28329         (ipa_pta_execute): Ditto.
28330
28331 2007-01-18  Kazu Hirata  <kazu@codesourcery.com>
28332             Richard Sandiford  <richard@codesourcery.com>
28333
28334         * doc/tm.texi (TARGET_FUNCTION_VALUE): Expand documentation of
28335         parallels.
28336         * calls.c (expand_call): If the return value is a PARALLEL,
28337         extract its first member.
28338         * config/m68k/linux.h (FUNCTION_EXTRA_EPILOGUE): Remove.
28339         * config/m68k/m68k.c (m68k_output_function_epilogue): Don't
28340         use FUNCTION_EXTRA_EPILOGUE.
28341         (m68k_function_value): Return a PARALLEL if the return value
28342         is of a pointer type.
28343         * config/m68k/netbsd-elf.h (current_function_returns_pointer)
28344         (FUNCTION_EXTRA_EPILOGUE): Remove.
28345         * config/m68k/m68k.md (D0_REG): New constant.
28346
28347 2007-01-18  Kazu Hirata  <kazu@codesourcery.com>
28348
28349         * config/m68k/m68k.c (m68k_output_function_epilogue): Don't
28350         output a NOP for empty epilogues.
28351
28352 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
28353
28354         * config/m68k/m68k.c (m68k_use_return_insn): Update comments
28355         before function.  Extend register save check to include all
28356         registers, not just integer ones.
28357
28358 2007-01-18  Kazu Hirata  <kazu@codesourcery.com>
28359
28360         * config/m68k/m68k-protos.h (use_return_insn): Rename to...
28361         (m68k_use_return_insn): ...this.
28362         * config/m68k/m68k.h (USE_RETURN_INSN): Delete.
28363         * config/m68k/m68k.c (use_return_insn): Rename to...
28364         (m68k_use_return_insn): ...this.
28365         * config/m68k/m68k.md (return): Use m68k_use_return_insn instead
28366         of USE_RETURN_INSN.
28367
28368 2007-01-18  Nathan Sidwell  <nathan@codesourcery.com>
28369
28370         * config/m68k/fpgnulib.c (__truncdfsf2): Implement round to
28371         nearest even, fix denormal rounding overflow.
28372
28373 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
28374
28375         * config/m68k/m68k.md (movsf_cf_hard): Use fsmove instead of
28376         f%$smove and f%$move.
28377         (movdf_cf_hard): Use fdmove for cases 0 and 3 and fmove for case 1.
28378         (extendsfdf2_cf): Use fdmove instead of f%&move.
28379         (truncdfsf2_cf): Use fsmove instead of f%$smove.
28380         (add<mode>3_cf, sub<mode>3_cf): Use <FP:prec> instead of <FP:round>.
28381
28382 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
28383
28384         * config/m68k/m68k.md (movdf_cf_hard): Use output_move_double for
28385         GPR<-GPR moves.
28386
28387 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
28388
28389         * real.h (real_format): Add a canonical_nan_lsbs_set field.
28390         (coldfire_single_format): Declare.
28391         (coldfire_double_format): Likewise.
28392         * real.c (encode_ieee_single): Use canonical_nan_lsbs_set instead
28393         of qnan_msb_set to determine the lower bits of a canonical
28394         NaN significand.
28395         (encode_ieee_double): Likewise.
28396         (encode_ieee_quad): Likewise.
28397         (ieee_single_format): Initialize canonical_nan_lsbs_set.
28398         (mips_single_format): Likewise.
28399         (ieee_double_format): Likewise.
28400         (mips_double_format): Likewise.
28401         (ieee_extended_motorola_format): Likewise.
28402         (ieee_extended_intel_96_format): Likewise.
28403         (ieee_extended_intel_128_format): Likewise.
28404         (ieee_extended_intel_96_round_53_format): Likewise.
28405         (ibm_extended_format): Likewise.
28406         (mips_extended_format): Likewise.
28407         (ieee_quad_format): Likewise.
28408         (mips_quad_format): Likewise.
28409         (vax_f_format): Likewise.
28410         (vax_d_format): Likewise.
28411         (vax_g_format): Likewise.
28412         (i370_single_format): Likewise.
28413         (i370_double_format): Likewise.
28414         (decimal_single_format): Likewise.
28415         (decimal_double_format): Likewise.
28416         (decimal_quad_format): Likewise.
28417         (c4x_single_format): Likewise.
28418         (c4x_extended_format): Likewise.
28419         (real_internal_format): Likewise.
28420         (coldfire_single_format): New real_format.
28421         (coldfire_double_format): Likewise.
28422         * config/pdp11/pdp11.c (pdp11_f_format): Initialize
28423         canonical_nan_lsbs_set.
28424         (pdp11_d_format): Likewise.
28425         * config/m68k/m68k.c (override_options): Override REAL_FORMAT_MODE
28426         if TARGET_COLDFIRE_CPU.
28427
28428 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
28429
28430         * config/m68k/m68k-protos.h (m68k_output_pic_call): Delete.
28431         (output_call, m68k_legitimize_call_address): Declare.
28432         * config/m68k/m68k.h (EXTRA_CONSTRAINT): Remove unnecessary
28433         parenthesees.  Add support for a 'W' constraint.
28434         (LEGITIMATE_PIC_OPERAND_P): Remove SYMBOL_REF_FLAG handling.
28435         (PRINT_OPERAND_PUNCT_VALID_P): Remove comment about 'o'.
28436         (m68k_symbolic_call, m68k_symbolic_jump): Declare.
28437         * config/m68k/m68k.c (m68k_symbolic_call, m68k_symbolic_jump): New
28438         variables.
28439         (override_options): Initialize them.  Do not set flag_no_function_cse
28440         for TARGET_ID_SHARED_LIBRARY.
28441         (m68k_output_pic_call): Delete.
28442         (m68k_legitimize_call_address): New function.
28443         (print_operand): Remove the %o prefix.  Handle the %p prefix.
28444         (output_call): New function.
28445         (m68k_output_mi_thunk): Use m68k_symbolic_jump.  Always load the
28446         target address from the GOT if symbolic jumps are not allowed.
28447         * config/m68k/m68k.md (call, general_operand): Do not set
28448         SYMBOL_REF_FLAG.  Use m68k_legitimize_call_address instead.
28449         Merge separate flag_pic and !flag_pic define_insns into...
28450         (*call, *call_value): ...these new patterns.  Match the address
28451         rather than the containing MEM and require it to be a call_operand.
28452         Use output_call to generate the asm template.
28453         * config/m68k/predicates.md (const_call_operand): New predicate.
28454         (call_operand): Likewise.
28455
28456 2007-01-18  Nathan Sidwell  <nathan@codesourcery.com>
28457
28458         * config/m68k/m68k.h (REGISTER_MOVE_COST): Simplify definition.
28459         (STACK_GROWS_DOWNWARD): Define to 1.
28460         (FUNCTION_VALUE, LIBCALL_VALUE, FUNCTION_VALUE_REGNO_P): Equivocate
28461         comments, emphasizing that these values are only defaults.
28462         * config/m68k/linux.h (LINK_SPEC): Fix formatting in #undef.
28463         * config/m68k/m68k.c (const_method): Remove trailing whitespace.
28464
28465 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
28466
28467         * config/m68k/m68k.md (cmpsi): Remove outdated flag_pic handling.
28468
28469 2007-01-18  Kazu Hirata  <kazu@codesourcery.com>
28470             Richard Sandiford  <richard@codesourcery.com>
28471
28472         * config/m68k/m68k.h (DATA_REGNO_P, ADDRESS_REGNO_P, INT_REGNO_P)
28473         (FP_REGNO_P): New macros.
28474         (REGNO_OK_FOR_INDEX_P, REGNO_OK_FOR_BASE_P, REGNO_OK_FOR_DATA_P)
28475         (REGNO_OK_FOR_FP_P, REG_OK_FOR_INDEX_P, REG_OK_FOR_BASE_P): Use them.
28476         (EH_RETURN_STACKADJ_RTX): Use A0_REG.
28477         * config/m68k/m68k.c (m68k_regno_mode_ok): Use the new REGNO macros.
28478
28479 2007-01-18  Nathan Sidwell  <nathan@codesourcery.com>
28480
28481         * config.gcc (m68k-*-aout*, m68k-*-coff*, m68020-*-elf*, m68k-*-elf*)
28482         (m68k-*-uclinuxoldabi, m68k-*-uclinux*, m68k-*-rtems*): Add t-floatlib
28483         to $tmake_file.
28484         * config/m68k/t-floatlib: New file, extracting common code from...
28485         * config/m68k/t-m68kbare, config/m68k/t-m68kelf,
28486         * config/m68k/t-uclinux: Here.
28487         * config/m68k/fpgnulib.c: Do not compile extendeed precision
28488         routines on ColdFire targets.
28489
28490 2007-01-18  Nathan Sidwell  <nathan@codesourcery.com>
28491
28492         * config.gcc (m68k-*-aout*, m68k-*-coff*, m68020-*-elf*, m68k-*-elf*)
28493         (m68010-*-netbsdelf*, m68k*-*-netbsdelf*, m68k*-*-openbsd*)
28494         (m68k-*-uclinuxoldabi, m68k-*-uclinux*, m68k-*-linux*)
28495         (m68k-*-rtems*): Use tm_file rather than m68k/m68k.h and
28496         explicitly set MOTOROLA to 1.
28497         * config/m68k/m68k.h (MOTOROLA): Simplify definition accordingly.
28498
28499 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
28500             Nathan Sidwell  <nathan@codesourcery.com>
28501
28502         * config/m68k/m68k.h (PCC_STATIC_STRUCT_RETURN): Delete.
28503         (ASM_OUTPUT_REG_PUSH, ASM_OUTPUT_REG_POP): Add MOTOROLA cases.
28504         * config/m68k/coff.h (REGISTER_PREFIX_MD): Delete.
28505         * config/m68k/m68020-elf.h (LIB_SPEC): Delete.
28506         * config/m68k/m68k-none.h (CC1_SPEC, CPP_SUBTARGET_SPEC): Delete.
28507         * config/m68k/m68kelf.h (IMMEDIATE_PREFIX, REGISTER_PREFIX_MD)
28508         (ASM_OUTPUT_REG_PUSH, ASM_OUTPUT_REG_POP): Delete.
28509         (NO_DOLLAR_IN_LABEL, PCC_STATIC_STRUCT_RETURN): Don't undefine.
28510         (BSS_ASM_OP, ASM_OUTPUT_SKIP, ASM_OUTPUT_ASCII): Delete.
28511         * config/m68k/m68kemb.h (PCC_STATIC_STRUCT_RETURN): Don't undefine.
28512         * config/m68k/linux.h (SIZE_TYPE, PTRDIFF_TYPE, WCHAR_TYPE)
28513         (WCHAR_TYPE_SIZE, TARGET_OBJFMT_CPP_BUILTINS): Delete.
28514         (TARGET_OS_CPP_BUILTINS): Don't define mc68000 and mc68020 here.
28515         (DBX_REGISTER_NUMBER): Delete.
28516         * config/m68k/netbsd-elf.h (IMMEDIATE_PREFIX): Delete.
28517         (PCC_STATIC_STRUCT_RETURN): Don't undefine.
28518         * config/m68k/openbsd.h (PCC_STATIC_STRUCT_RETURN): Define.
28519
28520 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
28521
28522         * config.gcc (m68k-*-uclinux*): Add flat.h to $tm_file.
28523         * config/flat.h: New file.
28524         * crtstuff.c (USE_PT_GNU_EH_FRAME): Don't define if
28525         OBJECT_FORMAT_FLAT.
28526         * config/m68k/m68k.h (ASM_PREFERRED_EH_DATA_FORMAT): Do not use
28527         indirect references for -msep-data or -mid-shared-library.
28528         Do not use PC-relative code addresses either.
28529         * config/m68k/m68k.c (override_options): Restrict -fPIC error
28530         to -mpcrel.
28531         * config/m68k/uclinux.h (STARTFILE_SPEC): Define.  Use Scrt1.o
28532         for shared libraries and crt1.o for executables.  Use crti.o and
28533         crtbegin.o.
28534         (ENDFILE_SPEC): Use crtend.o and crtn.o.
28535         (LIB_SPEC): Suppress -Rlibc.gdb if -static-libc is given.
28536         Do not add -elf2flt or -shared-lib-id options here.
28537         (LINK_SPEC): Define.  Pass -elf2flt if no -elf2flt option is given.
28538         Pass -shared-lib-id if -mid-shared-library, taking the library
28539         identifier from -mshared-library-id if given, otherwise
28540         defaulting to 0.
28541         (EH_FRAME_IN_DATA_SECTION): Do not undefine.
28542         (INIT_SECTION_ASM_OP, FINI_SECTION_ASM_OP): Likewise.
28543         (TARGET_OS_CPP_BUILTINS): Define __GXX_MERGED_TYPEINFO_NAMES=0
28544         and __GXX_TYPEINFO_EQUALITY_INLINE=0 if -mid-shared-library.
28545         (DRIVER_SELF_SPECS): Map unadorned PIC options to -msep-data.
28546         * config/m68k/t-uclinux (EXTRA_MULTILIB_PARTS): Add crtbegin.o
28547         and crtend.o.
28548         * config/m68k/lb1sf68.asm (PICCALL): Use an lea and pc-relative
28549         jump sequence for ISA A and ISA A+.
28550         (PICJUMP): Likewise.
28551
28552 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
28553
28554         * config.gcc (m68k-*-uclinux*): Base the port on the common
28555         and m68k GNU/Linux files rather than on the generic ELF ones.
28556         * config/m68k/uclinux.h (TARGET_VERSION): Override.
28557         (TARGET_OS_CPP_BUILTINS): Use LINUX_TARGET_OS_CPP_BUILTINS.
28558
28559 2007-01-18  Julian Brown  <julian@codesourcery.com>
28560             Richard Sandiford  <richard@codesourcery.com>
28561
28562         * config/m68k/m68k.h (LONG_DOUBLE_TYPE_SIZE): Make 64-bit on ColdFire.
28563         (LIBGCC2_LONG_DOUBLE_TYPE_SIZE): Likewise.
28564         * config/m68k/netbsd-elf.h (LIBGCC2_LONG_DOUBLE_TYPE_SIZE): Undefine
28565         before redefining.
28566         * config/m68k/uclinux-oldabi.h (LONG_DOUBLE_TYPE_SIZE): Redefine to
28567         80 unconditionally.
28568         (LIBGCC2_LONG_DOUBLE_TYPE_SIZE): Likewise.
28569
28570 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
28571
28572         * doc/install.texi: Document m68k-uclinuxoldabi.
28573         * config.gcc (m68k-*-uclinuxoldabi): New configuration.
28574         * config/m68k/uclinux-oldabi.h: New file, copied from
28575         config/m68k/uclinux.h.
28576
28577 2007-01-18  Kaz Kojima  <kkojima@rr.iij4u.or.jp>
28578
28579         * config/m32r/m32r-protos.h (m32r_expand_epilogue): Declare it.
28580         * config/m32r/m32r.c (m32r_setup_incoming_varargs): Use gen_frame_mem.
28581         (m32r_compute_frame_size): Use unsigned for regno.
28582         (m32r_reload_lr): Use gen_frame_mem.
28583         (pop): New.
28584         (m32r_output_function_epilogue): Don't output the function epilogue
28585         textually here.
28586         (m32r_expand_epilogue): New.
28587         (direct_return): Return false if the function has the interrupt
28588         attribute.
28589         (m32r_hard_regno_rename_ok): Remove code for the textual epilogue.
28590         * config/m32r/m32r.md (epilogue): New expander.
28591         (return_lr, return_rte): New insns.
28592         (return): Make it expander.
28593         (return_normal): New expander.
28594
28595 2007-01-18  Josh Conner  <jconner@apple.com>
28596
28597         PR target/30485
28598         * config/rs6000/rs6000.c (rs6000_emit_vector_compare): Add
28599         support for UNLE, UNLT, UNGE, and UNGT.
28600
28601 2007-01-18  Jan Hubicka  <jh@suse.cz>
28602
28603         * tree-vrp.c (finalize_jump_threads): Do not call cleanup_cfg by hand.
28604         * tree-tailcall (add_virtual_phis): Likewise.
28605         (optimize_tail_call): Return TODOs.
28606         (execute_tail_calls): Return TODOs.
28607         * tree-ssa-ccp (execute_fold_all_builtins): Do cleanup_cfg via TODO.
28608         * tree-cfgcleanup.c (cleanup_tree_cfg_loop): Return if something
28609         changed.
28610         * tree-ssa-forwprop.c (tree_ssa_forward_propagate_single_use_value):
28611         Cleanup cfg using TODO.
28612         * tree-flow.h (cleanup_tree_cfg_loop): Update prototype.
28613         * passes.c (execute_function_todo): When cleanup did something, remove
28614         unused locals.
28615         * tree-cfg.c (pass_build_cfg): Add cleanup_cfg TODO.
28616         (make_edges): Don't cleanup_cfg.
28617
28618 2007-01-18  Uros Bizjak  <ubizjak@gmail.com>
28619
28620         * reg-stack.c (subst_stack_regs_pat) [UNSPEC_SINCOS_COS,
28621         UNSPEC_XTRACT_FRACT]: Use generic code for instructions that
28622         operate on the top of stack.
28623         [UNSPEC_SINCOS_SIN, UNSPEC_XTRACT_EXP, UNSPEC_TAN]: Rewrite
28624         register handling of instructions that output to the second
28625         stack slot.
28626         [UNSPEC_TAN_ONE, UNSPEC_TAN_TAN]: Remove.
28627         (move_for_stack_reg): Special-case check for dead destination
28628         stack slot for constant load of 1.0 inside UNSPEC_TAN.
28629
28630         * config/i386/i386.md (UNSPEC_TAN): New constant.
28631         (UNSPEC_TAN_ONE, UNSPEC_TAN_TAN): Remove.
28632         (fptanxf4_i387, fptan_extend<mode>xf4_i387): New patterns
28633         to correctly model move of constant 1.0 to top stack slot.
28634         (*tandf3_1, *tansf3_1, *tanxf3_1): Remove insn patterns.
28635         (unnamed peephole2 pattern): Remove corresponding peephole2
28636         pattern that optimizes tan insn and loading of constant 1.0.
28637         (tanxf2): Use fptanxf4_i387.
28638         (tan<mode>2): Rename from tansf2 and tandf2 and macroize insn
28639         patterns using X87MODEF12 mode macro.  Use fptan_extend<mode>xf4_i387
28640         and truncate result to requested mode.  Use SSE_FLOAT_MODE_P to
28641         disable patterns for SSE math.
28642         (sincos<mode>3): Use truncxf<mode>2_i387_noop for truncation.
28643         (fyl2x_extend<mode>xf3_i387): Use X87MODEF12 for operand 1.
28644
28645 2007-01-18  Dirk Mueller  <dmueller@suse.de>
28646             Richard Guenther <rguenther@suse.de>
28647
28648         PR diagnostic/8268
28649         * doc/invoke.texi (Warray-bounds): Document -Warray-bounds.
28650         * common.opt (Warray-bounds): Add new warning option.
28651         * c-opts.c (c_common_handle_option): Define -Warray-bounds
28652         if -Wall is given.
28653         * Makefile.in: make tree-vrp.o depend on toplev.h
28654         * tree-vrp.c (vrp_finalize): Call check_array_refs if -Warray-bounds
28655         is enabled.
28656         (check_array_refs, check_array_bounds, check_array_ref): New.
28657
28658 2007-01-18  Jan Hubicka  <jh@suse.cz>
28659
28660         * tree-ssa-ccp.c (ccp_finalize): Return if something changed.
28661         (execute_ssa_ccp): Return flags conditionally.
28662         * tree-ssa-propagate.c (substitue_and_fold): Return if something was
28663         changed.
28664         * tree-ssa-propagate.h (substitute_and_fold): Update prototype.
28665
28666 2007-01-18  Steven Bosscher  <steven@gcc.gnu.org>
28667
28668         * cfgcleanup.c (cleanup_cfg): Detect cfglayout mode and set
28669         the CLEANUP_CFGLAYOUT flag when in cfglayout mode.
28670
28671         * Makefile.c (GTFILES): Add cfglayout.h.
28672         * gengtype.c (open_base_files): Likewise.
28673         * cfglayout.c (cfg_layout_function_footer,
28674         cfg_layout_function_header) Reindent to make gengtype happy.
28675         * cfglayout.h (cfg_layout_function_footer,
28676         cfg_layout_function_header): Add GTY(()) marker.
28677
28678         * ifcvt.c (noce_try_sign_mask): Make sure INSN_B is non-null.
28679
28680 2007-01-18  Ben Elliston  <bje@au.ibm.com>
28681
28682         * genautomata.c (write_automata): Include xstrerror output in the
28683         error message if writing the DFA description file fails.
28684
28685 2007-01-17  H.J. Lu  <hongjiu.lu@intel.com>
28686
28687         * config/mips/mips-protos.h (mips_output_external): Make it
28688         return void.
28689         * config/mips/iris.h (TARGET_ASM_EXTERNAL_LIBCALL): Removed.
28690         * config/mips/mips.c (irix_output_external_libcall): Likewise.
28691         (extern_list): Likewise.
28692         (extern_head): Likewise.
28693         (TARGET_ASM_FILE_END): Likewise.
28694         (mips_file_end): Likewise.
28695         (mips_output_external): Rewritten.
28696
28697 2007-01-18  Ben Elliston  <bje@au.ibm.com>
28698
28699         * genpreds.c (write_insn_preds_c): Only write out the function
28700         body for regclass_for_constraint if we have register constraints.
28701
28702 2007-01-17  Tom Tromey  <tromey@redhat.com>
28703
28704         * doc/sourcebuild.texi (libgcj Tests): Use sourceware.org.
28705         * doc/install.texi (Testing): Use sourceware.org.
28706         (Binaries): Likewise.
28707         (Specific): Likewise.
28708         * doc/contrib.texi (Contributors): Use sourceware.org.
28709
28710 2007-01-17  Anatoly Sokolov <aesok@post.ru>
28711
28712         * config/avr/avr.h (AVR_HAVE_LPMX): New macro.
28713         (AVR_ENHANCED): Rename to ...
28714         (AVR_HAVE_MUL): ... new.
28715         (avr_enhanced_p): Rename to ...
28716         (avr_have_mul_p): ... new.
28717         (TARGET_CPU_CPP_BUILTINS): Use 'avr_have_mul_p' instead of
28718         'avr_enhanced_p' for "__AVR_ENHANCED__". Define "__AVR_HAVE_MUL__".
28719         * config/avr/avr.c (avr_enhanced_p): Rename to ...
28720         (avr_have_mul_p): ... new.
28721         (base_arch_s): Rename 'enhanced' to 'have_mul'.
28722         (avr_override_options): Use 'avr_have_mul_p' and 'have_mul' instead of
28723         'avr_enhanced_p' and 'enhanced'.
28724         (ashlhi3_out, ashrhi3_out, lshrhi3_out, avr_rtx_costs): Use
28725         AVR_HAVE_MUL instead of AVR_ENHANCED.
28726         * avr.md (*tablejump_enh): Use AVR_HAVE_LPMX instead of AVR_ENHANCED.
28727         (mulqi3, *mulqi3_enh, *mulqi3_call, mulqihi3, umulqihi3, mulhi3,
28728         *mulhi3_enh, *mulhi3_call, mulsi3, *mulsi3_call): Use AVR_HAVE_MUL
28729         instead of AVR_ENHANCED.
28730         (*tablejump_enh): Use AVR_HAVE_LPMX instead of AVR_ENHANCED.
28731         * libgcc.S: Use __AVR_HAVE_MUL__ instead of __AVR_ENHANCED__.
28732         (__tablejump__): Use __AVR_HAVE_LPMX__ instead of __AVR_ENHANCED__.
28733
28734 2007-01-17  Ian Lance Taylor  <iant@google.com>
28735
28736         * vec.h (VEC_reserve_exact): Define.
28737         (vec_gc_p_reserve_exact): Declare.
28738         (vec_gc_o_reserve_exact): Declare.
28739         (vec_heap_p_reserve_exact): Declare.
28740         (vec_heap_o_reserve_exact): Declare.
28741         (VEC_OP (T,A,reserve_exact)): New static inline function, three
28742         versions.
28743         (VEC_OP (T,A,reserve)) [all versions]: Remove handling of
28744         negative parameter.
28745         (VEC_OP (T,A,alloc)) [all versions]: Call ...reserve_exact.
28746         (VEC_OP (T,A,copy)) [all versions]: Likewise.
28747         (VEC_OP (T,a,safe_grow)) [all versions]: Likewise.
28748         * vec.c (calculate_allocation): Add exact parameter.  Change all
28749         callers.
28750         (vec_gc_o_reserve_1): New static function, from vec_gc_o_reserve.
28751         (vec_gc_p_reserve, vec_gc_o_reserve): Call vec_gc_o_reserve_1.
28752         (vec_gc_p_reserve_exact, vec_gc_o_reserve_exact): New functions.
28753         (vec_heap_o_reserve_1): New static function, from vec_heap_o_reserve.
28754         (vec_heap_p_reserve, vec_heap_o_reserve): Call vec_heap_o_reserve_1.
28755         (vec_heap_p_reserve_exact): New function.
28756         (vec_heap_o_reserve_exact): New function.
28757
28758 2007-01-17  Jan Hubicka  <jh@suse.cz>
28759
28760         * ipa-type-escape.c (look_for_casts): Revamp using handled_component_p.
28761
28762 2007-01-17  Eric Christopher  <echristo@apple.com>
28763
28764         * config.gcc: Support core2 processor.
28765
28766 2007-01-16  Jan Hubicka  <jh@suse.cz>
28767
28768         * tree-ssanames.c (release_dead_ssa_names): Instead of ggc_freeing
28769         the names, just unlink the chain so we don't crash on dangling
28770         pointers
28771         to dead SSA names.
28772
28773 2007-01-16  Jan Hubicka  <jh@suse.cz>
28774
28775         * cgraph.h (cgraph_decide_inlining_incrementally): Kill.
28776         * tree-pass.h: Reorder to make IPA passes appear toegher.
28777         (pass_early_inline, pass_inline_parameters, pass_apply_inline):
28778         Declare.
28779         * cgraphunit.c (cgraph_finalize_function): Do not compute inling
28780         parameters, do not call early inliner.
28781         * ipa-inline.c: Update comments.  Include tree-flow.h
28782         (cgraph_decide_inlining): Do not compute inlining parameters.
28783         (cgraph_decide_inlining_incrementally): Return TODOs; assume to
28784         be called with function context set up.
28785         (pass_ipa_inline): Remove unreachable functions before pass.
28786         (cgraph_early_inlining): Simplify assuming to be called from the
28787         PM as local pass.
28788         (pass_early_inline): New pass.
28789         (cgraph_gate_ipa_early_inlining): New gate.
28790         (pass_ipa_early_inline): Turn into simple wrapper.
28791         (compute_inline_parameters): New function.
28792         (gate_inline_passes): New gate.
28793         (pass_inline_parameters): New pass.
28794         (apply_inline): Move here from tree-optimize.c
28795         (pass_apply_inline): New pass.
28796         * ipa.c (cgraph_remove_unreachable_nodes): Verify cgraph after
28797         transforming.
28798         * tree-inline.c (optimize_inline_calls): Return TODOs rather than
28799         doing them by hand.
28800         (tree_function_versioning): Do not allocate dummy struct function.
28801         * tree-inline.h (optimize_inline_calls): Update prototype.
28802         * tree-optimize.c (execute_fixup_cfg): Export.
28803         (pass_fixup_cfg): Remove
28804         (tree_rest_of_compilation): Do not apply inlines.
28805         * tree-flow.h (execute_fixup_cfg): Declare.
28806         * Makefile.in (gt-passes.c): New.
28807         * passes.c: Include gt-passes.h
28808         (init_optimization_passes): New passes.
28809         (nnodes, order): New static vars.
28810         (do_per_function_toporder): New function.
28811         (execute_one_pass): Dump current pass here.
28812         (execute_ipa_pass_list): Don't dump current pass here.
28813
28814 2007-01-16  Janis Johnson  <janis187@us.ibm.com>
28815
28816         * config/dfp-bit.c (dfp_compare_op): Return separate value for NaN.
28817         (DFP_NE, DFP_LE, DFP_GE): Return false for NaN.
28818
28819 2007-01-16  David Edelsohn  <edelsohn@gnu.org>
28820
28821         * config/rs6000/darwin-ldouble.c: Build file for SOFT_FLOAT.
28822         (strong_alias): Define.
28823         (__gcc_qmul): Provide non-FMA for soft-float.
28824         (__gcc_qdiv): Same.
28825         (__gcc_qneg): New.
28826         (__gcc_qeq): New.
28827         (__gcc_qle): New.
28828         (__gcc_qge): New.
28829         (__gcc_qunord): New.
28830         (__gcc_stoq): New.
28831         (__gcc_dtoq): New.
28832         (__gcc_qtos): New.
28833         (__gcc_qtod): New.
28834         (__gcc_qtoi): New.
28835         (__gcc_qtou): New.
28836         (__gcc_itoq): New.
28837         (__gcc_utoq): New.
28838         (fmsub): New.
28839         * config/rs6000/rs6000.c (rs6000_init_libfuncs): Initialize
28840         soft-float functions.
28841         * config/rs6000/libgcc-ppc-glibc.ver: Version soft-float symbols.
28842         * config/rs6000/sysv4.h (SUBTARGET_OVERRIDE_OPTIONS): Do not warn
28843         about long double soft float.
28844
28845 2007-01-16  Dorit Nuzman  <dorit@il.ibm.com>
28846             Tehila Meyzels  <tehila@il.ibm.com>
28847
28848         * tree-vectorizer.h (is_pattern_stmt_p): New.
28849         * tree-vect-analyze.c (vect_determine_vectorization_factor): Fix
28850         formatting (tabs instead of spaces). Cleanup and clarify setting
28851         of STMT_VINFO_VECTYPE. Call is_pattern_stmt_p.
28852         * tree-vect-transform.c (vect_get_vec_def_for_operand): Fix typo.
28853         (vectorizable_type_demotion): Check that types are integral.
28854         (vectorizable_type_promotion): Likewise.
28855         (vectorizable_store): Fix typo.  Eliminate new-line at end of
28856         comments.
28857
28858 2007-01-16  Jan Hubicka  <jh@suse.cz>
28859
28860         * tree-ssanames.c (release_dead_ssa_names): Remove invalidated
28861         cgraph edges too.
28862
28863 2007-01-15  Eric Christopher  <echristo@apple.com>
28864
28865         * ifcvt.c: Include vec.h, vecprim.h.
28866         (check_cond_move_block): New argument regs.
28867         Reorganize. Add registers used to regs.
28868         (cond_move_process_if_block): Use regs set above as
28869         loop bounds.
28870
28871 2007-01-15  Eric Christopher  <echristo@apple.com>
28872
28873         * config/darwin.h: Update copyright.
28874         (TARGET_OPTION_TRANSLATE_TABLE): Add umbrella.
28875         (LINK_COMMAND_SPEC): Add -u.
28876         (LINK_SPEC): Fix umbrella for above.
28877
28878 2007-01-15  Joseph S. Myers  <joseph@codesourcery.com>
28879
28880         * config/soft-fp/op-common.h, config/soft-fp/op-4.h: Update from
28881         glibc CVS.
28882
28883 2007-01-15  Tom Tromey  <tromey@redhat.com>
28884
28885         * doc/sourcebuild.texi (libgcj Tests): Don't mention jacks.
28886         * doc/install.texi (Testing): Don't mention jacks.
28887         (Configuration): Document --enable-java-maintainer-mode.  Move
28888         --with-java-home to libgcj-specific section.  Document
28889         --with-ecj-jar.
28890         (Prerequisites): Mention --enable-java-maintainer-mode, ecj1.
28891
28892 2007-01-15  Jan Hubicka  <jh@suse.cz>
28893
28894         * tree-ssa-dce.c (DCE_TODOs): New.
28895         (propagate_necessity): Return if something changed.
28896         (eliminate_unnecessary_stmts): Likewise.
28897         (perform_tree_ssa_dce): Return TODO flags when needed.
28898         (pass_dce, pass_dce_loop, pass_cd_dce): Remove TODO flags.
28899
28900 2007-01-15  Uros Bizjak  <ubizjak@gmail.com>
28901
28902         * config/i386/i386.md (fyl2xxf3_i387): Rename from fyl2x_xf3.
28903         (fyl2x_extend<mode>xf3_i387): New insn pattern.
28904         (log<mode>2): Rename from logsf2 and logdf2 and macroize insn
28905         patterns using X87MODEF12 mode macro.  Extend operand 1
28906         to XFmode. Use SSE_FLOAT_MODE_P to disable patterns for SSE math.
28907         (log10<mode>2): Ditto.
28908         (log2<mode>2): Ditto.
28909         (log1p<mode>2): Ditto.
28910         (logb<mode>2): Ditto.
28911         (fyl2xp1xf3_i387): Rename from fyl2xp1_xf3.
28912         (fyl2xp1_extend<mode>xf3_i387): New insn pattern.
28913         (*fxtractxf3_i387): Rename from *fxtractxf3.
28914         (fxtract_extend<mode>xf3_i387): New insn pattern.
28915         (ilogbsi2): Use match_dup 3, not match_operand:XF 3.
28916         * config/i386/i386.c (ix86_emit_i387_log1p): Use gen_fyl2xp1xf3_i387()
28917         and gen_fyl2xxf3_i387().
28918
28919 2007-01-14  Zdenek Dvorak <dvorakz@suse.cz>
28920
28921         * loop-unswitch.c (unswitch_loop): Do not call fix_loop_placement.
28922         * cfgloopmanip.c (fix_loop_placement): Made static.  Use
28923         get_loop_exit_edges.  Changed return type to bool.
28924         * cfgloop.h (fix_loop_placement): Declaration removed.
28925
28926 2007-01-14  Dorit Nuzman  <dorit@il.ibm.com>
28927
28928         * param.h (MIN_VECT_LOOP_BOUND): New.
28929         * params.def (MIN_VECT_LOOP_BOUND): New.
28930         * tree-vectorizer.c (slpeel_tree_peel_loop_to_edge): Takes another
28931         argument - minimum threshold for number of iterations.
28932         * tree-vectorizer.h (slpeel_tree_peel_loop_to_edge): Add another
28933         argument to declaration.
28934         * tree-vect-analyze.c (vect_analyze_operations): Check value of
28935         MIN_VECT_LOOP_BOUND.
28936         * tree-vect-transform.c (vect_do_peeling_for_loop_bound): Call
28937         slpeel_tree_peel_loop_to_edge with additional argument.
28938         (vect_do_peeling_for_alignment): Likewise.
28939         * doc/invoke.texi (min-vect-loop-bound): Document new param option.
28940
28941 2007-01-14  Uros Bizjak  <ubizjak@gmail.com>
28942
28943         PR target/30413
28944         * config/i386/i386.c (print_operand) ['z']: Output 'b' for
28945         operands of size 1.
28946
28947 2007-01-14  Jan Hubicka  <jh@suse.cz>
28948
28949         * tree-dfa.c (remove_referenced_var): New function.
28950         * tree-ssa-live.c (remove_unused_locals): Walk referenced vars and
28951         prune referenced vars list too.
28952         * tree-flow.h (remove_referenced_var): Declare.
28953
28954 2007-01-14  Jan Hubicka  <jh@suse.cz>
28955
28956         * tree-eh.c (add_stmt_to_eh_region_fn): Do not add call_exprs
28957         separately.
28958         (remove_stmt_from_eh_region_fn): Do not remove call_exprs.
28959         (verify_eh_throw_stmt_node, verify_eh_throw_table_statements): Kill.
28960         * except.h (verify_eh_throw_table_statements): Kill prototype.
28961         * cfgexpand.c (expand_gimple_basic_block): Propagate Eh regions
28962         into call exrepssions.
28963         * tree-optimize.c (execute_free_cfg_annotatiosn): Do not call
28964         eh trhow verifier.
28965         * tree-cfg.c: Include pointer-set.h.
28966         (verify_node_sharing): Work on pointer set.
28967         (verify_eh_throw_stmt_node): New.
28968         (verify_stmts): Use pointers sets, verify throw_stmt.
28969
28970 2007-01-13  Zdenek Dvorak <dvorakz@suse.cz>
28971
28972         * ipa-reference.c (analyze_function): Consider also addresses taken
28973         in phi nodes.
28974
28975 2007-01-12  Roger Sayle  <roger@eyesopen.com>
28976
28977         * c-typeck.c (null_pointer_constant_p): Replace use of
28978         TREE_CONSTANT_OVERFLOW with TREE_OVERFLOW.
28979         (build_c_cast): Likewise.
28980
28981 2007-01-12  Roger Sayle  <roger@eyesopen.com>
28982
28983         * tree.h (force_fit_type_double): Remove unused final argument.
28984         * c-common.c (constant_expression_warning): Replace use of
28985         TREE_CONSTANT_OVERFLOW with TREE_OVERFLOW.
28986         (convert_and_check): Likewise.
28987         (shorten_compare): Update call to force_fit_type_double.
28988         (c_common_truthvalue_conversion) <INTEGER_CST>: Use integer_zerop.
28989         * convert.c (convert_to_pointer): Update call to
28990         force_fit_type_double.
28991         * fold-const.c (force_fit_type_double): Remove overflowed_const
28992         argument.
28993         (int_const_binop, fold_convert_const_int_from_int,
28994         fold_convert_const_int_from_real, fold_div_compare,
28995         fold_sign_changed_comparison, fold_unary, fold_negate_const,
28996         fold_abs_const, fold_not_const): Remove the final argument from
28997         calls to force_fit_type_double.
28998
28999 2007-01-12  Andrew Pinski  <andrew_pinski@playstation.sony.com>
29000
29001         * configure.ac: Set insn to "nop" for spu-*-* also.
29002         * configure: Regenerate.
29003
29004 2007-01-12  Olga Golovanevsky  <olga@il.ibm.com>
29005
29006         * builtins.def : Add BUILT_IN_FREE.
29007
29008 2007-01-12  Jan Hubicka  <jh@suse.cz>
29009
29010         PR tree-optimization/30443
29011         * tree-inline.c (tree_function_versioning): Do not optimize when
29012         cloning for inlining.
29013
29014 2007-01-12  Zdenek Dvorak <dvorakz@suse.cz>
29015
29016         * doc/loop.texi: Document recording of loop exits.
29017         * cfgloopmanip.c (loopify, duplicate_loop): Use alloc_loop.
29018         (update_single_exits_after_duplication,
29019         update_single_exit_for_duplicated_loop,
29020         update_single_exit_for_duplicated_loops): Removed.
29021         (duplicate_loop_to_header_edge): Do not call
29022         update_single_exits_after_duplication and
29023         update_single_exit_for_duplicated_loops.
29024         (loop_version): Do not update single_exit information.
29025         (fix_loop_structure): Use record_loop_exits instead of
29026         mark_single_exit_loops.
29027         * tree-ssa-loop-manip.c (tree_transform_and_unroll_loop): Update
29028         the lists of loop exits.
29029         * cfghooks.c (redirect_edge_and_branch, redirect_edge_and_branch_force,
29030         split_edge, merge_blocks): Update the lists of loop exits.
29031         * modulo-sched.c (sms_schedule): Pass LOOPS_HAVE_RECORDED_EXITS to
29032         loop_optimizer_init.
29033         * loop-init.c (loop_optimizer_init): Call record_loop_exits instead
29034         of mark_single_exit_loops.
29035         (loop_optimizer_finalize): Call release_recorded_exits.
29036         * tree-ssa-loop.c (tree_loop_optimizer_init): Pass
29037         LOOPS_HAVE_RECORDED_EXITS to loop_optimizer_init.
29038         * tree-vectorizer.c (slpeel_tree_duplicate_loop_to_edge_cfg): Do not
29039         update single exit information.
29040         * lambda-code.c (perfect_nestify): Ditto.
29041         * cfgloop.c (flow_loop_free): Destroy the list of exits of the loop.
29042         (mark_single_exit_loops): Removed.
29043         (alloc_loop, loop_exit_hash, loop_exit_eq, loop_exit_free,
29044         get_exit_descriptions, rescan_loop_exit, record_loop_exits,
29045         dump_recorded_exit, dump_recorded_exits, release_recorded_exits): New
29046         functions.
29047         (get_loop_exit_edges, single_exit): Use recorded exit lists.
29048         (add_bb_to_loop, remove_bb_from_loops): Update the lists of loop exits.
29049         (verify_loop_structure): Verify consistency of the exit lists.
29050         (flow_loops_find): Use alloc_loop.  Initialize exits hash.
29051         (set_single_exit): Removed.
29052         * cfgloop.h (struct loop_exit): New function.
29053         (struct loop): single_exit_ field replaced by exits field.
29054         (LOOPS_HAVE_MARKED_SINGLE_EXITS): Replaced by
29055         LOOPS_HAVE_RECORDED_EXITS.
29056         (struct loops): Added exits hash.
29057         (mark_single_exit_loops, set_single_exit): Declaration removed.
29058         (release_recorded_exits, record_loop_exits, rescan_loop_exit): Declare.
29059
29060 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
29061
29062         * doc/invoke.texi: Avoid use of @headitem.
29063
29064 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
29065
29066         * cse.c (cse_insn): Move HAVE_CC0 code after declarations.
29067
29068 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
29069
29070         * doc/install.texi: Fix m68k-*-* anchor and add m68k-*-* to the
29071         list of targets.
29072
29073 2007-01-12  Nathan Sidwell  <nathan@codesourcery.com>
29074             Richard Sandiford  <richard@codesourcery.com>
29075
29076         * doc/invoke.texi: Document -mno-bitfield, -mno-rtd and -mno-short.
29077         * config/m68k/m68k.opt: Resort options.
29078         (mbitfield, mrtd, mshort): Remove RejectNegative properties.
29079
29080 2007-01-12  Nathan Sidwell  <nathan@codesourcery.com>
29081             Richard Sandiford  <richard@codesourcery.com>
29082
29083         * doc/invoke.texi: Document the macros that are defined by
29084         m68k's -mtune and -mhard-float options.
29085         * config/m68k/m68k-protos.h (m68k_cpp_cpu_ident) Declare.
29086         (m68k_cpp_cpu_family): Likewise.
29087         * config/m68k/m68k.h (TARGET_CPU_CPP_BUILTINS): Add a full set
29088         of __ucfv*__ macros.  Define __mcffpu__ if generating code for
29089         ColdFire FPUs.  Define __mcf_cpu_* and __mcf_family_* macros.
29090         * config/m68k/m68k.c (m68k_cpp_cpu_ident): New function.
29091         (m68k_cpp_cpu_family): Likewise.
29092
29093 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
29094
29095         * config/m68k/m68k.h (TARGET_CPU_CPP_BUILTINS): Treat all mc68*
29096         macros besides mc68000 as tuning macros.  Use a switch statement
29097         to set them and mcpu32.
29098
29099 2007-01-12  Julian Brown  <julian@codesourcery.com>
29100
29101         * config/m68k/m68k.h: Use TARGET_68040 instead of TARGET_68040_ONLY.
29102         (TARGET_68040_ONLY): Rename to...
29103         (TARGET_68040): ...this.
29104         * config/m68k/m68k.c: Use TARGET_68040 instead of TARGET_68040_ONLY.
29105         * config/m68k/m68k.md: Likewise.
29106
29107 2007-01-12  Julian Brown  <julian@codesourcery.com>
29108             Nathan Sidwell  <nathan@codesourcery.com>
29109             Richard Sandiford  <richard@codesourcery.com>
29110
29111         * config.gcc (m680[012]0-*-*, m68k*-*-*): Set m68k_cpu_ident to
29112         the -mcpu= argument associated with the --with-cpu setting.
29113         Define M68K_DEFAULT_TUNE to the default -mtune= option,
29114         if different from the one implied by the -mcpu setting.
29115         Accept --with-cpu=FOO if FOO is listed in m68k-devices.def,
29116         using mcpu=FOO as the default CPU option.  Set target_cpu_default2.
29117         * doc/invoke.texi: Mention ColdFire in the introduction to the
29118         m68k options.  Document the new -march, -mcpu, -mtune, -mdiv,
29119         -mno-div and -mhard-float options.  Make -m68881 a synonym for
29120         -mhard-float.  Document the previously-undocumented -m5206e,
29121         -m528x, -m5307 and -m5407 options.  Tweak the existing option
29122         documentation for consistency.
29123         * doc/install.texi: Mention new --with-cpu arguments.
29124         * config/m68k/m68k.h (OPTION_DEFAULT_SPECS): Only use the
29125         default CPU if neither -mcpu nor -march are specified.
29126         (ASM_CPU_SPEC): Pass down -mcpu and -march options.
29127         (TARGET_CPU_CPP_BUILTINS): Set __mcfisa*__ macros from
29128         TARGET_ISA*.  Set the legacy __mcf*__ cpu macros in the same way,
29129         using m68k_tune to decide between families that implement the
29130         same ISA.  Use m68k_tune to set __mcfv4e__.
29131         (FL_BITFIELD, FL_68881, FL_COLDFIRE, FL_CF_HWDIV, FL_CF_MAC)
29132         (FL_CF_EMAC, FL_CF_EMAC_B, FL_CF_USP, FL_CF_FPU, FL_ISA_68000)
29133         (FL_ISA_68010, FL_ISA_68020, FL_ISA_68040, FL_ISA_A, FL_ISA_B)
29134         (FL_ISA_C, FL_ISA_MMU): New macros.
29135         (MASK_COLDFIRE): Delete.
29136         (TARGET_68010, TARGET_68020, TARGET_68040_ONLY, TARGET_COLDFIRE)
29137         (TARGET_ISAB): Redefine in terms of m68k_cpu_flags.
29138         (TARGET_68881, TARGET_COLDFIRE_FPU): Redefine in terms of m68k_fpu.
29139         (TARGET_HARD_FLOAT): Do not define here.
29140         (TARGET_ISAAPLUS, TARGET_ISAC): New macros.
29141         (TUNE_68000): New macro.
29142         (TUNE_68000_10): Redefine in terms of TUNE_68000 and TUNE_68010.
29143         (TUNE_68010, TUNE_68030, TUNE_68040, TUNE_68060, TUNE_CPU32)
29144         (TUNE_CFV2): Redefine in terms of m68k_tune.
29145         (uarch_type, target_device, fpu_type): New enums.
29146         (m68k_cpu, m68k_tune, m68k_fpu, m68k_cpu_flags): Declare.
29147         * config/m68k/m68k.c (TARGET_DEFAULT): Remove MASK_68881.
29148         (FL_FOR_isa_00, FL_FOR_isa_10, FL_FOR_isa_20, FL_FOR_isa_40)
29149         (FL_FOR_isa_cpu32, FL_FOR_isa_a, FL_FOR_isa_aplus, FL_FOR_isa_b)
29150         (FL_FOR_isa_c): New macros.
29151         (m68k_isa): New enum.
29152         (m68k_target_selection): New structure.
29153         (all_devices, all_isas, all_microarchs): New tables.
29154         (m68k_cpu_entry, m68k_arch_entry, m68k_tune_entry, m68k_cpu)
29155         (m68k_tune, m68k_fpu, m68k_cpu_flags): New variables.
29156         (MASK_ALL_CPU_BITS): Delete.
29157         (m68k_find_selection): New function.
29158         (m68k_handle_option): Handle -mcpu=, -march= and -mtune=.
29159         Map the legacy target options to a combination of the new ones.
29160         (override_options): Set m68k_cpu, m68k_tune, m68k_fpu and
29161         m68k_cpu_flags.  Handle M68K_DEFAULT_TUNE.  Use m68k_cpu_flags
29162         to derive default MASK_BITFIELD, MASK_CF_HWDIV and MASK_HARD_FLOAT
29163         settings.
29164         * config/m68k/m68k.opt (m5200, m5206e, m528x, m5307, m5407, mcfv4e)
29165         (m68010, m68020, m68020-40, m68020-60, m68030, m68040): Remove Mask
29166         properties.
29167         (m68881, msoft-float): Change mask from 68881 to HARD_FLOAT.
29168         (march=, mcpu=, mdiv, mhard-float, mtune=): New options.
29169         * config/m68k/m68k-devices.def: New file.
29170
29171 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
29172             Nathan Sidwell  <nathan@codesourcery.com>
29173
29174         * config/m68k/m68k.h (ASM_CPU_SPEC, ASM_SPEC, EXTRA_SPECS)
29175         (SUBTARGET_EXTRA_SPECS): New macros.
29176         * config/m68k/linux.h (ASM_SPEC): Remove CPU flags;
29177         use %(asm_cpu_spec) instead.
29178         * config/m68k/m68k-none.h (ASM_SPEC): Likewise.
29179         * config/m68k/openbsd.h (ASM_SPEC): Likewise.
29180         * config/m68k/netbsd-elf.h (ASM_SPEC): Likewise.
29181         (EXTRA_SPECS): Rename to...
29182         (SUBTARGET_EXTRA_SPECS): ...this.
29183
29184 2007-01-12  Nathan Sidwell  <nathan@codesourcery.com>
29185             Richard Sandiford  <richard@codesourcery.com>
29186             Julian Brown  <julian@codesourcery.com>
29187
29188         * config.gcc (m68k-*-aout*, m68k-*-coff*, m68020-*-elf*, m68k-*-elf*)
29189         (m68k-*-uclinux*, m68k-*-linux*, m68k-*-rtems*): Set default_m68k_cpu
29190         to the configuration's default CPU.
29191         (m68010-*-netbsdelf*, m68k*-*-netbsdelf*, m68k*-*-openbsd*): Likewise.
29192         Remove default masks.
29193         (m680[012]0-*-*): Set the default with_cpu to the first part of
29194         the target name.
29195         (m68k*-*-*): Set the default with_cpu to m$default_m68k_cpu.
29196         (m68k*-*-linux): Extend the --with-cpu handling to...
29197         (m680[012]0-*-*, m68k*-*-*): ...these configurations.  Allow m68000
29198         and m68010.  Don't set target_cpu_default2.
29199         * doc/install.texi: Document --with-cpu for m68k.
29200         * config/m68k/m68k.h (OPTION_DEFAULT_SPECS): Define.
29201         * config/m68k/m68k-none.h (TARGET_CPU_DEFAULT, M68K_CPU_m68k)
29202         (M68K_CPU_m68000, M68K_CPU_m68010, M68K_CPU_m68020, M68K_CPU_m68030)
29203         (M68K_CPU_m68040, M68K_CPU_m68302, M68K_CPU_m68332, TARGET_DEFAULT)
29204         (ASM_CPU_DEFAULT_SPEC, CC1_CPU_DEFAULT_SPEC): Delete.
29205         (ASM_SPEC): Remove use of %(asm_cpu_default).
29206         (EXTRA_SPECS, SUBTARGET_EXTRA_SPECS, MULTILIB_DEFAULTS): Delete.
29207         * config/m68k/linux.h (TARGET_DEFAULT): Delete.
29208         (CPP_SPEC): Merge definitions.  Do not handle __HAVE_68881__ here.
29209         * config/m68k/netbsd-elf.h (TARGET_OS_CPP_BUILTINS): Define
29210         __HAVE_FPU__ if TARGET_HARD_FLOAT.
29211         (TARGET_DEFAULT): Delete.
29212         (EXTRA_SPECS): Delete cpp_cpu_default_spec, cpp_cpu_spec,
29213         cpp_fpu_spec, asm_default_spec and netbsd_cpp_spec.
29214         (CPP_CPU_SPEC): Delete.
29215         (TARGET_VERSION): Merge definitions, using TARGET_68010 to pick
29216         the appropriate string.
29217         (CPP_CPU_DEFAULT_SPEC, ASM_DEFAULT_SPEC, CPP_FPU_SPEC): Delete.
29218         (CPP_SPEC): Define to NETBSD_CPP_SPEC.
29219         (ASM_SPEC): Don't use %(asm_default_spec).
29220         * config/m68k/m68k.c (TARGET_DEFAULT_TARGET_FLAGS): Remove
29221         TARGET_DEFAULT and add MASK_68881.
29222         * config/m68k/m68k.md: Remove mention of TARGET_DEFAULT from comments.
29223
29224 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
29225
29226         * config.gcc (m68010-*-netbsdelf*): Add MASK_68010.
29227         (m68k*-*-netbsdelf*, m68k*-*-openbsd*, m68k*-linux*): Add
29228         MASK_68010 alongside MASK_68020.
29229         * doc/invoke.texi: Document -m68010.
29230         * config/m68k/m68k.opt (m68010): New.
29231         * config/m68k/m68k.h (TARGET_CPU_CPP_BUILTINS): Define mc68010
29232         if TUNE_68010.
29233         (TUNE_68010): New macro.
29234         * config/m68k/m68k-none.h (M68K_CPU_m68k, M68K_CPU_m68010)
29235         (M68K_CPU_m68020, M68K_CPU_m68030, M68K_CPU_m68040)
29236         (M68K_CPU_m68332): Add MASK_68010.
29237         * config/m68k/linux.h (TARGET_DEFAULT): Add MASK_68010 to
29238         fallback definition.
29239         * config/m68k/netbsd-elf.h (CPP_CPU_SPEC): Remove now-redundant
29240         defines.
29241         * config/m68k/m68k.c (MASK_ALL_CPU_BITS): Add MASK_68010.
29242         (m68k_handle_option): Handle OPT_m68010.  Add MASK_68010
29243         to all entries that use MASK_68020.
29244         (output_move_simode_const, output_move_himode, output_move_qimode)
29245         (output_move_stricthi, output_move_strictqi): Use TARGET_68010
29246         instead of TARGET_68020 to select clr behavior.  Remove comment
29247         about there being no TARGET_68010.
29248         * config/m68k/m68k.md: Likewise throughout.
29249
29250 2007-01-12  Julian Brown  <julian@codesourcery.com>
29251
29252         * config/m68k/m68k.h (TARGET_ISAB): New macro.
29253         * config/m68k/m68k.c: Use TARGET_ISAB rather than TARGET_CFV4.
29254         * config/m68k/m68k.md: Likewise.
29255
29256 2007-01-12  Julian Brown  <julian@codesourcery.com>
29257
29258         * config/m68k/m68k.h (LEGITIMATE_INDEX_P, LEGITIMIZE_ADDRESS): Use
29259         TARGET_COLDFIRE_FPU instead of TARGET_CFV4E.
29260
29261 2007-01-12  Julian Brown  <julian@codesourcery.com>
29262
29263         * config/m68k/m68k.h (TUNE_68040_60): New macro.
29264         * config/m68k/m68k.c (standard_68881_constant_p): Use it.
29265         * config/m68k/m68k.md: Likewise.
29266
29267 2007-01-12  Julian Brown  <julian@codesourcery.com>
29268             Richard Sandiford  <richard@codesourcery.com>
29269
29270         * config/m68k/m68k.h (TARGET_CPU_CPP_BUILTINS): Use TUNE_68030
29271         instead of TARGET_68030, TUNE_68040 instead of TARGET_68040,
29272         TUNE_68060 instead of TARGET_68060 and TUNE_CPU32 instead of
29273         TARGET_CPU32.
29274         (TARGET_CPU32): Rename to...
29275         (TUNE_CPU32): ...this.
29276         (TUNE_68000_10, TUNE_68030, TUNE_68040, TUNE_68060)
29277         (TUNE_CFV2): New macros.
29278         * config/m68k/netbsd-elf.h (LONG_DOUBLE_TYPE_SIZE): Simplify;
29279         remove conditions that are implied by TARGET_68020.
29280         * config/m68k/m68k.c (m68k_output_function_prologue): Use TUNE_68040
29281         instead of TARGET_68040 and TUNE_CPU32 instead of TARGET_CPU32.
29282         (m68k_output_function_epilogue): Likewise.
29283         (m68k_rtx_costs): Likewise.  Use TUNE_68060 instead of TARGET_68060
29284         and TUNE_CFV2 instead of TARGET_5200.  Use TUNE_68000_10 instead of
29285         "!TARGET_68020 && !TARGET_COLDFIRE" to choose between 68000 and
29286         non-68000 timings.  Refactor multiplication and division costs.
29287         (output_addsi3): Use TUNE_68040 instead of TARGET_68040 and
29288         TUNE_CPU32 instead of TARGET_CPU32.
29289         (standard_68881_constant_p): Use TUNE_68040 instead of TARGET_68040
29290         and TUNE_68060 instead of TARGET_68060.
29291         * config/m68k/m68k.md: Use TUNE_68040 instead of TARGET_68040,
29292         TUNE_68060 instead of TARGET_68060, and TUNE_CPU32 instead of
29293         TARGET_CPU32.
29294         (movsi_const0): Use TUNE_68000_10 rather than "!TARGET_68020
29295         && !TARGET_COLDFIRE" to choose between moveq and clr.
29296         Likewise in the unnamed movsf pattern.
29297         (ashlsi_17_24, lshrsi_17_24): Guard with TUNE_68000_10 rather than
29298         "!TARGET_68020 && !TARGET_COLDFIRE".  Likewise the unnamed
29299         ashiftrt pattern.
29300
29301 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
29302
29303         * config/m68k/m68k.h (TARGET_CPU_CPP_BUILTINS): Increase amount
29304         of tabbing before backslashes.
29305
29306 2007-01-11  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
29307
29308         * pa-linux.h (ASM_OUTPUT_INTERNAL_LABEL): Undefine.
29309         * pa.h (ASM_OUTPUT_LABEL): Output colon when using GAS.
29310         (ASM_OUTPUT_INTERNAL_LABEL): Define.
29311
29312 2007-01-11  Zdenek Dvorak <dvorakz@suse.cz>
29313
29314         * tree-ssa-loop-ivopts.c (extract_cond_operands): Split from
29315         find_interesting_uses_cond.
29316         (find_interesting_uses_cond): Use extract_cond_operands.
29317         (rewrite_use_compare): Use extract_cond_operands and
29318         force_gimple_operand_bsi.  Do not call update_stmt.
29319         (determine_use_iv_cost_condition): Use extract_cond_operands.
29320         Return cheaper of using original bound and changing the exit bound.
29321
29322 2007-01-11  Zdenek Dvorak <dvorakz@suse.cz>
29323
29324         PR tree-optimization/29516
29325         * tree-ssa-address.c (tree_mem_ref_addr, add_to_parts,
29326         most_expensive_mult_to_index, addr_to_parts,
29327         create_mem_ref, maybe_fold_tmr): Make the type of
29328         fields of TARGET_MEM_REF sizetype.
29329         (move_fixed_address_to_symbol, move_pointer_to_base):
29330         New functions.
29331         * tree.def (TARGET_MEM_REF): Add comment on types of
29332         the operands.
29333
29334 2007-01-11  Joseph Myers  <joseph@codesourcery.com>
29335
29336         * c-common.c (vector_types_convertible_p): Treat opaque types as
29337         always convertible if they have the same size, but not otherwise.
29338
29339 2007-01-11  Steven Bosscher  <steven@gcc.gnu.org>
29340
29341         * ifcvt.c (struct noce_if_info): Add comments to the fields.
29342         Remove the b_unconditional field.
29343         (noce_try_sign_mask): Do not look at b_unconditional.
29344         (noce_process_if_block): Do not use merge_if_blocks.  Update
29345         the CFG here.  Do not set b_unconditional.
29346         (cond_move_process_if_block): Likewise.
29347         (find_cond_trap): Likewise.
29348         (check_cond_move_block): Require simple jump insns at the end
29349         of the basic block.
29350
29351 2007-01-11  Jan Hubicka  <jh@suse.cz>
29352
29353         PR tree-optimization/1046
29354         * tree-tailcall.c (suitable_for_tail_call_opt_p): Use TREE_ADDRESSABLE
29355         when alias info is not ready.
29356         (pass_tail_recursion): Do not require aliasing.
29357         * tree-ssa-copyrename.c (pass_rename_ssa_cop): Likewise.
29358         * tree-ssa-ccp.c (pass_ccp, pass_fold_builtins): Likewise.
29359         * tree-ssa-copy.c (pass_copy_prop): Likewise.
29360         * tree-ssa-forwprop.c (pass_forwprop): Likewise.
29361         * tree-ssa-dce.c (pass_dce, pass_dce_loop, pass_cd_dce): Likewise.
29362         * passes.c (init_optimization_passes): Execute rename_ssa_copies,
29363         ccp, forwprop, copy_prop, merge_phi, copy_prop, dce and tail recursion
29364         before inlining.
29365         * tree-ssa-operands.c (add_virtual_operand, get_indirect_ref_operand):
29366         When aliasing is not build, mark statement as volatile.
29367
29368 2007-01-11  Tom Tromey  <tromey@redhat.com>
29369
29370         PR preprocessor/15185, PR preprocessor/20989:
29371         * doc/cppopts.texi <-MT>: Update description of algorithm for
29372         computing default target.
29373         <-M, -MD>: Reword "basename" text.
29374
29375 2007-01-11  Roger Sayle  <roger@eyesopen.com>
29376
29377         * builtins.c (expand_builtin_pow, expand_builtin_powi,
29378         fold_builtin_cabs, fold_builtin_sqrt, fold_builtin_trunc,
29379         fold_builtin_floor, fold_builtin_ceil, fold_builtin_round,
29380         fold_builtin_int_int_roundingfn, fold_builtin_bitop,
29381         fold_builtin_bswap, real_constp, fold_builtin_pow,
29382         fold_builtin_powi, fold_builtin_signbit, fold_builtin_copysign,
29383         do_mpfr_arg1, do_mpfr_arg2, do_mpfr_arg3, do_mpfr_sincos): Replace
29384         uses of the macro TREE_CONSTANT_OVERFLOW with TREE_OVERFLOW.
29385         * convert.c (convert_to_pointer): Likewise.
29386         * expr.c (highest_pow2_factor, expand_expr_real_1): Likewise.
29387         * fold-const.c (force_fit_type, fold_negate_expr, int_const_binop,
29388         const_binop, fold_convert_const_int_from_int,
29389         fold_convert_const_int_from_real,
29390         fold_convert_const_real_from_real, sign_bit_p,
29391         optimize_minmax_comparison, extract_muldiv_1, fold_div_compare,
29392         fold_sign_changed_comparison, fold_unary, fold_comparison,
29393         fold_binary, multiple_of_p, tree_Expr_non_zero_p,
29394         fold_negate_const, fold_abs_const, fold_not_const): Likewise.
29395         * print-tree.c (print_node_brief, print_node): Likewise.
29396         * stor-layout.c (place_field, layout_type): Likewise.
29397         * tree-chrec.c (keep_cast): Likewise.
29398         * tree.c (build_vector, build_real, build_real_from_int_cst,
29399         build_complex): Likewise.
29400
29401 2007-01-11  Roger Sayle  <roger@eyesopen.com>
29402
29403         * tree.h (TREE_CONSTANT_OVERFLOW): Obsolete.  For the time being,
29404         treat TREE_CONSTANT_OVERFLOW as a synonym of TREE_OVERFLOW.
29405
29406 2007-01-11  Paolo Bonzini  <bonzini@gnu.org>
29407
29408         * configure.ac (strict1_warn): Rename to strict_warn.
29409         (WERROR, --enable-werror, symlink hacks, stage1_cflags,
29410         cc_set_by_configure, quoted_cc_set_by_configure,
29411         stage_prefix_set_by_configure, quoted_stage_prefix_set_by_configure,
29412         all_boot_languages, all_stagestuff): Remove.
29413         (target_list): Remove bootstrap targets.
29414         * Makefile.in (quickstrap): Unconditionally make a synonym of all.
29415         (BOOT_LANGUAGES, STAGE1_CFLAGS, STAGE1_CHECKING,
29416         REMAKEFLAGS, FLAGS_TO_PASS, PREPEND_DOTDOT_TO_RELATIVE_PATHS,
29417         SUBDIR_FLAGS_TO_PASS, WERROR_FLAGS, STRICT2_WARN, LANG_STAGESTUFF,
29418         VOL_FILES, POSTSTAGE1_FLAGS_TO_PASS, STAGE2_FLAGS_TO_PASS,
29419         STAGEPROFILE_FLAGS_TO_PASS, STAGEFEEDBACK_FLAGS_TO_PASS, stage1_build,
29420         stage1_copy, stage2_build, stage2_copy, stageprofile_build,
29421         stageprofile_copy, stage3_build, stage3_copy, stagefeedback_build,
29422         stagefeedback_copy, stage4_build, clean_s1, clean_sw, bootstrap,
29423         bootstrap-lean, bootstrap2, bootstrap2-lean, bootstrap3,
29424         bootstrap3-lean, bootstrap4, bootstrap4-lean, unstage1, unstage2,
29425         unstage3, unstage4, unstageprofile, unstagefeedback, restage, restage2,
29426         restage3, restage4, restageprofile, restagefeedback, bubbleestrap,
29427         cleanstrap, unstrap, restrap, *compare, *compare3, *compare4,
29428         *compare-lean, *compare3-lean, *compare4-lean, stage1-start, stage1,
29429         stage2-start, stage2, stage3-start, stage3, stage4-start, stage4,
29430         stageprofile-start, stageprofile, stagefeedback-start, stagefeedback,
29431         risky-stage1, risky-stage2, risky-stage3, risky-stage4): Remove.
29432         (ORDINARY_FLAGS_TO_PASS): Rename to FLAGS_TO_PASS.
29433         (STAGECOPYSTUFF, STAGEMOVESTUFF): Consolidate into MOSTLYCLEANFILES.
29434         (mostlyclean): Adjust.
29435         (clean, distclean): Don't mention bootstrap stuff.
29436         * configure: Regenerate.
29437         * ada/config-lang.in, cp/config-lang.in, forttran/config-lang.in,
29438         java/config-lang.in, objc/config-lang.in, objcp/config-lang.in,
29439         treelang/config-lang.in (stagestuff): Remove.
29440         * doc/sourcebuild.texi (stage1, stage2, stage3, stage4,
29441         stageprofile, stagefeedback, stagestuff): Remove mention.
29442
29443 2007-01-11  Nick Clifton  <nickc@redhat.com>
29444
29445         * config/mcore/predicates.md (mcore_general_movesrc_operand):
29446         Accept CONSTs.
29447         (mcore_general_movdst_operand): Do not accept CONST_INTs.
29448         (mcore_arith_K_S_operand): Run the test for the S constraint not
29449         the test for the M constraint.
29450         (mcore_addsub_operand): Do not accept integer values that are
29451         larger than 32 bits.
29452         * config/mcore/mcore.md: Remove unused constraints from split.
29453         (andsi3): Use HOST_WIDE_INT instead of int to hold an INTVAL.
29454         (addsi3): Likewise.
29455         (allocate_stack): Likewise.
29456         * config/mcore/mcore.c (mcore_print_operand): Restrict output of P
29457         operands to 32 bits.
29458         (mcore_const_costs): Use HOST_WIDE_INT instead of int to hold an
29459         INTVAL.
29460         (mcore_and_cost, mcore_modify_comparison, const_ok_for_mcore,
29461         mcore_const_ok_for_inline, mcore_const_trick_uses_not,
29462         try_constant_tricks, mcore_num_ones, mcore_num_zeros,
29463         mcore_output_bclri, mcore_output_andn, output_inline_const,
29464         mcore_output_move, mcore_output_movedouble): Likewise.
29465         (mcore_output_cmov): Use CONST_OK_FOR_M and CONST_OK_FOR_N.
29466         (output_inline_const): Likewise.
29467         (output_inline_const): Fix format strings used in sprintf
29468         statements.
29469         * config/mcore/mcore-protos.h: Update prototypes for changed
29470         functions in mcore.c.
29471         * config/mcore/mcore.h (CONST_OK_FOR_I): Cast values to
29472         HOST_WIDE_INT and not int.
29473         (CONST_OK_FOR_J, CONST_OK_FOR_K, CONST_OK_FOR_L, CONST_OK_FOR_M,
29474         CONST_OK_FOR_N): Likewise.
29475         (LEGITIMATE_CONSTANT_P): Also check CONSTANT_P.
29476         (GO_IF_LEGITIMATE_INDEX): Use HOST_WIDE_INT instead of int to hold
29477         an INTVAL.
29478
29479 2007-01-10  Jan Hubicka  <jh@suse.cz>
29480
29481         * tree-vrp.c (remove_range_assertions): Release defs.
29482         * tree-ssa-loop-ivopts.c (rmeove_statement): Likewise.
29483         * tree-ssa-dom.c (remove_stmt_or_phi): Likewise.
29484
29485 2007-01-10  Paul Brook  <paul@codesourcery.com>
29486
29487         * config/arm/arm.c (arm_rtx_costs_1): Handle mutiply-subtract.
29488         * config/arm/arm.md (mulsi3subsi): New insn.
29489
29490 2007-01-10  Zdenek Dvorak <dvorakz@suse.cz>
29491
29492         * tree-ssa-loop-manip.c (tree_unroll_loop): Make it a wrapper over ...
29493         (tree_transform_and_unroll_loop): New.
29494         * tree-flow.h (transform_callback, tree_transform_and_unroll_loop):
29495         Declare.
29496
29497 2007-01-10  Robert Kennedy <jimbob@google.com>
29498
29499         * fold-const.c (fold_comparison): Fold comparisons like (x *
29500         1000 < 0) to (x < 0).
29501
29502 2007-01-10  Ian Lance Taylor  <iant@google.com>
29503
29504         * tree-pretty-print.c (dump_generic_node): Print parentheses when
29505         operands have the same priority.
29506
29507 2007-01-10  Tom Tromey  <tromey@redhat.com>
29508
29509         * fold-const.c (fold_truthop): Don't check can_use_bit_fields_p.
29510         (fold_binary): Likewise.
29511         * langhooks.c (lhd_can_use_bit_fields_p): Removed.
29512         * langhooks-def.h (lhd_can_use_bit_fields_p): Removed.
29513         (LANG_HOOKS_CAN_USE_BIT_FIELDS_P): Removed.
29514         (LANG_HOOKS_INITIALIZER): Remove LANG_HOOKS_CAN_USE_BIT_FIELDS_P.
29515         * langhooks.h (struct lang_hooks): Removed field
29516         'can_use_bit_fields_p'.
29517
29518 2007-01-10  Ralf Corsépius <ralf.corsepius@rtems.org>
29519
29520         * config/bfin/t-bfin, config/bfin/t-bfin-elf: Remove GCC_CFLAGS.
29521
29522 2007-01-10  Razya Ladelsky  <razya@il.ibm.com>
29523
29524         * function.c (get_last_funcdef_no): New function.
29525         * function.h (get_last_funcdef_no): Declare.
29526         * tree-inline.c (initialize_cfun): Add initialization.
29527         (tree_function_versioning): Cleanup.
29528
29529 2007-01-10  Jan Hubicka  <jh@suse.cz>
29530
29531         * tree-inline.c (setup_one_parameter): Do not propagate into abnormal
29532         PHIs.
29533
29534 2007-01-10  Sa Liu  <saliu@de.ibm.com>
29535             Ben Elliston  <bje@au.ibm.com>
29536
29537         * spu.h (STACK_SAVE_AREA): Use VOIDmode for SAVE_FUNCTION, SImode
29538         for SAVE_NONLOCAL and Pmode for any other save level.
29539         * spu-protos.h (spu_restore_stack_block): Declare.
29540         * spu.md (save_stack_block): Remove.
29541         (restore_stack_block): Call spu_restore_stack_block.
29542         * spu.c (spu_restore_stack_block): New function.
29543         (spu_expand_epilogue): Remove old comment.
29544
29545 2007-01-09  Zdenek Dvorak <dvorakz@suse.cz>
29546
29547         PR tree-optimization/30322
29548         * tree-ssa-loop-ivopts.c (fold_affine_expr, iv_value): Removed.
29549         (cand_value_at): Return the value as aff_tree.
29550         (may_eliminate_iv): Convert the bound from aff_tree to tree.
29551         * tree-affine.c (aff_combination_add_cst, aff_combination_add_product,
29552         aff_combination_mult): New functions.
29553         (aff_combination_add): Use aff_combination_add_cst.
29554         (aff_combination_convert): Allow conversions to a wider type.
29555         (tree_to_aff_combination): Handle BIT_NOT_EXPR.
29556         * tree-affine.h (aff_combination_mult): Declare.
29557
29558 2007-01-09  Carlos O'Donell  <carlos@codesourcery.com>
29559
29560         * doc/tm.texi: Update documentation to reflect reality of exec
29561         and start file search behaviours. Update copyright year.
29562         * doc/invoke.texi: Explain how GCC_EXEC_PREFIX is used to find
29563         header file directories.
29564
29565 2007-01-09  Uros Bizjak  <ubizjak@gmail.com>
29566
29567         * config/i386/i386.md (*sinxf2): Rename to *sinxf2_i387.
29568         (*cosxf2): Rename to cosxf2_i387.
29569         (*sindf2, *sinsf2): Extend operand 1 to XFmode.  Macroize patterns
29570         using X87MODEF12 mode macro. Rename patterns to
29571         *sin_extend<mode>xf2_i387.  Use SSE_FLOAT_MODE_P to disable patterns
29572         for SSE math.
29573         (*cosdf2, *cossf2): Ditto.
29574         (sincosdf3, sincossf3): Ditto.  Rewrite corresponding splitters
29575         to match extended input operands.
29576         (sincos<mode>3): New expander.
29577         (*sinextendsfdf2, *cosextendsfdf2, *sincosextendsfdf3): Remove
29578         insn patterns and corresponding splitters.
29579
29580 2007-01-09  Kaz Kojima  <kkojima@gcc.gnu.org>
29581
29582         * config/sh/t-linux (TARGET_LIBGCC2_CFLAGS): Delete.
29583         (SHLIB_MAPFILES, SHLIB_LINK, SHLIB_INSTALL): Likewise.
29584
29585 2007-01-09  Nicolas Pitre  <nico@cam.org>
29586
29587         PR target/30173
29588         * arm/ieee754-df.S (Lad_s): Also test the low word of X for zero.
29589
29590 2007-01-08  Geoffrey Keating  <geoffk@apple.com>
29591
29592         * target.h (struct gcc_target): New field library_rtti_comdat.
29593         * target-def.h (TARGET_CXX_LIBRARY_RTTI_COMDAT): New.
29594         (TARGET_CXX): Add TARGET_CXX_LIBRARY_RTTI_COMDAT.
29595         * doc/tm.texi (C++ ABI): Document TARGET_CXX_LIBRARY_RTTI_COMDAT.
29596         * config/darwin.h (TARGET_CXX_LIBRARY_RTTI_COMDAT): Define.
29597
29598 2007-01-08  Geoffrey Keating  <geoffk@apple.com>
29599
29600         * doc/invoke.texi (Optimize Options): Correct description of -O0.
29601
29602 2007-01-08  Richard Guenther  <rguenther@suse.de>
29603
29604         * tree.h (force_fit_type_double): Export.
29605         (force_fit_type): Remove.
29606         * fold-const.c (force_fit_type_double): New function.
29607         (force_fit_type): Remove.
29608         (int_const_binop): Use it.
29609         (fold_convert_const_int_from_int): Likewise.
29610         (fold_convert_const_int_from_real): Likewise.
29611         (fold_div_compare): Likewise.
29612         (fold_sign_changed_comparison): Likewise.
29613         (fold_unary): Likewise.
29614         (fold_negate_const): Likewise.
29615         (fold_abs_const): Likewise.
29616         (fold_not_const): Likewise.
29617         * c-common.c (shorten_compare): Use force_fit_type_double.
29618         * convert.c (convert_to_pointer): Likewise.
29619
29620 2007-01-08  Richard Guenther  <rguenther@suse.de>
29621
29622         * tree.h (build_int_cst_wide_type): Export.
29623         * tree.c (build_int_cst_wide_type): New function.
29624         (build_int_cst_wide): Fix comment.
29625         * builtins.c (fold_builtin_object_size): Use build_int_cst
29626         to build -1 or 0 of the correct type.  Use fit_double_type
29627         to check for overflow.
29628         * fold-const.c (optimize_bit_field_compare): Use build_int_cst_type
29629         to build the mask.
29630         (decode_field_reference): Likewise.
29631         (all_ones_mask_p): Likewise.
29632         (native_interpret_int): Use build_int_cst_wide_type.
29633         (fold_binary): Use build_int_cst_type to build an all-ones
29634         value.
29635         * stor-layout.c (set_sizetype): Use build_int_cst_wide_type.
29636
29637 2007-01-08  Daniel Jacobowitz  <dan@codesourcery.com>
29638
29639         * config/pa/t-pa64 (libgcc_stub.a): Use $(T).
29640
29641 2007-01-09  Ben Elliston  <bje@au.ibm.com>
29642
29643         * genautomata.c (STATS_OPTION): New option.
29644         (stats_flag): New flag.
29645         (gen_automata_option): Handle it.
29646         (initiate_automaton_gen): Ditto.
29647         (write_automata): Output statistics only if stats_flag is
29648         set. Likewise, output time statistics only if time_flag is set.
29649         * doc/md.texi (Processor pipeline description): Document new flag.
29650
29651 2007-01-08  Richard Guenther  <rguenther@suse.de>
29652
29653         * builtins.c (fold_builtin_int_roundingfn): Use fit_double_type.
29654         * tree.c (build_int_cst_type): Likewise.
29655         (size_in_bytes): Don't call force_fit_type on the result.
29656         (int_fits_type_p): Use fit_double_type.
29657         * fold-const.c (fit_double_type): New function.
29658         (force_fit_type): Use it.
29659         * tree.h (fit_double_type): Export.
29660
29661 2007-01-08  Jan Hubicka  <jh@suse.cz>
29662
29663         * tree-vectorizer.c (gate_increase_alignment): Fix return type.
29664         * ipa.c (function_and_variable_visibility): Fix return type.
29665
29666 2007-01-08  Richard Guenther  <rguenther@suse.de>
29667
29668         * tree-ssa-ccp.c (maybe_fold_offset_to_array_ref): Use type
29669         of offset to build the index.
29670         * tree-pretty-print.c (dump_generic_node): Don't build negated
29671         const just for printing.
29672         * c-pretty-print.c (pp_c_integer_constant): Likewise.
29673         * builtins.c (fold_builtin_int_roundingfn): Check if result
29674         fits the type by using force_fit_type and comparing the result.
29675         * predict.c (predict_loops): Use compare_tree_int for comparison.
29676         * tree.c (build_int_cst): Fall back to integer_type_node for
29677         NULL_TREE type.
29678         (build_int_cst_wide): Assert type is non-null.
29679
29680 2007-01-08  Roberto Costa  <roberto.costa@st.com>
29681
29682         * tree-vrp.c (extract_range_from_cond_expr): New.
29683         (extract_range_from_expr): Handle COND_EXPR nodes used as expressions.
29684         * tree-ssa-ccp.c (get_maxval_strlen): Handle COND_EXPR nodes used
29685         as expressions.
29686         (fold_stmt): Bug fix, avoid infinite recursion when folding COND_EXPRs.
29687         * tree-ssa-forwprop.c (simplify_cond, forward_propagate_into_cond,
29688         tree_ssa_forward_propagate_single_use_vars): Handle COND_EXPR nodes
29689         used as expressions.
29690         * tree-object-size.c (cond_expr_object_size): New.
29691         (collect_object_sizes_for): Handle COND_EXPR nodes used as expressions.
29692
29693 2007-01-08  Jan Hubicka  <jh@suse.cz>
29694
29695         * tree-ssa-forwprop.c (forward_propagate_into_cond,
29696         tree_ssa_forward_propagate_single_use_va): Release defs of propagated
29697         statement.
29698
29699 2007-01-08  Richard Guenther  <rguenther@suse.de>
29700
29701         PR tree-optimization/23603
29702         * tree-vrp.c (set_value_range_to_truthvalue): New function.
29703         (extract_range_from_binary): Fall back to truthvalue instead of
29704         varying for TRUTH_*_EXPR.
29705         (extract_range_from_comparison): Fall back to truthvalue instead of
29706         varying.
29707         (vrp_visit_phi_node): Don't adjust new range bounds to +INF/-INF
29708         if all visited PHI values were constant.
29709
29710 2007-01-08  Jan Hubicka  <jh@suse.cz>
29711
29712         * cgraphunit.c (cgraph_process_new_functions): Reset reachable flag.
29713         (cgraph_analyze_function): break out from ...
29714         (cgraph_finalize_compilation_unit): ... here.
29715         (cgraph_expand_function): Remove forgoten commented out line.
29716         (cgraph_optimize): Analyze functions.
29717
29718 2007-01-08  Jan Hubicka  <jh@suse.cz>
29719
29720         * tree-pas.h (TODO_remove_function): New flag.
29721         (TODO_update*): Renumber.
29722         (pass_ipa_increase_alignment,
29723         pass_ipa_function_and_variable_visibility): New passes.
29724         * cgraphunit.c (cgraph_increase_alignment): Move to tree-vectorizer.c
29725         (cgraph_function_and_variable_visibility): Move to ipa.c
29726         (cgraph_optimize): Don't call cgraph_function_and_variable_visibility,
29727         cgraph_increase_alignment.
29728         * ipa-inline.c (cgraph_decide_inlining): Don't push timevar.
29729         (cgraph_decide_inlining_incrementally): Push TV_INTEGRATION before
29730         calling tree-inline.
29731         (cgraph_early_inlining): Do not call cgraph_remove_unreachable_nodes.
29732         (pass_ipa_inline, pass_early_ipa_inlining): Set TODO_remove_functions
29733         * tree-vectorizer.c (increase_alignment): Move here from cgraphunit.c
29734         (gate_increase_alignment): New function.
29735         (pass_ipa_increase_alignment): New pass.
29736         * ipa.c: Inline tree-pass.h and timevar.h
29737         (function_and_variable_visibility): Move here from cgraphunit.c
29738         * tree-optimize.c (pass_early_local_passes): Add TODO_remove_functions.
29739         * passes.c (init_optimization_passes): Add the two new passes.
29740         (execute_todo): Handle cgraph_remove_functions.
29741
29742 2007-01-08  Nick Clifton  <nickc@redhat.com>
29743
29744         * config/frv/predicates.md (reg_or_0_operand): Accept
29745         CONST_DOUBLEs.
29746
29747 2007-01-08  Ralf Corsépius <ralf.corsepius@rtems.org>
29748
29749         * config/bfin/rtems.h, config/bfin/t-rtems: New.
29750         * config.gcc: Add bfin*-rtems*.
29751
29752 2007-01-08  Mark Shinwell  <shinwell@codesourcery.com>
29753
29754         * c.opt: Add -flax-vector-conversions.
29755         * c-typeck.c (convert_for_assignment): Pass flag to
29756         vector_types_convertible_p to allow emission of note.
29757         (digest_init): Likewise.
29758         * c-opts.c: Handle -flax-vector-conversions.
29759         * c-common.c (flag_lax_vector_conversions): New.
29760         (vector_types_convertible_p): Unless -flax-vector conversions
29761         has been passed, disallow conversions between vectors with
29762         differing numbers of subparts and/or element types.  If such
29763         a conversion is disallowed, possibly emit a note on the first
29764         occasion only to inform the user of -flax-vector-conversions.
29765         The new last argument specifies this.
29766         * c-common.h (flag_lax_vector_conversions): New.
29767         (vector_types_convertible_p): Add extra argument.
29768         * config/i386/i386.c (ix86_init_mmx_sse_builtins): Use
29769         char_type_node for V*QI type vectors.
29770         * config/rs6000/rs6000-c.c (altivec_overloaded_builtins):
29771         Update to satisfy new typechecking rules.
29772         * config/rs6000/altivec.h (vec_cmple): Use vec_cmpge, for both
29773         C and C++ variants.
29774         * doc/invoke.texi (C Dialect Options): Document
29775         -flax-vector-conversions.
29776
29777 2007-01-08  Mark Shinwell  <shinwell@codesourcery.com>
29778
29779         PR tree-optimization/29877
29780         * tree-ssa-ter.c (is_replaceable_p): Deem assignments with
29781         a register variable on the RHS to not be replaceable.
29782
29783 2007-01-08  Chen Liqin  <liqin@sunnorth.com.cn>
29784         * config/score/t-score-elf (MULTILIB_OPTIONS): Change.
29785         * config/score/predicates.md (const_uimm5, sr0_operand, const_simm12,
29786         const_simm15, const_pow2, const_npow2): Added.
29787         * config/score/misc.md (insv, extv, extzv, movmemsi,
29788         move_lbu_a/b, mov_lhu_a/b etc): Added and fix some bug.
29789         * config/score/score.c (score_address_cost, score_select_cc_mode):
29790         Added.
29791         Change CONST_OK_FOR_LETTER_P/EXTRA_CONSTRAINT define.
29792         Update score_rtx_costs for MACRO TARGET_RTX_COSTS.
29793         Update score_print_operand.
29794         * config/score/score.h (DATA_ALIGNMENT, SELECT_CC_MODE): Added.
29795         Adjust register allocate order and update some macro define.
29796         * config/score/score-mdaux.c (mdx_unaligned_load, mdx_unsigned_store,
29797         mdx_block_move_straight, mdx_block_move_loop_head,
29798         mdx_block_move_loop_body, mdx_block_move_loop_foot,
29799         mdx_block_move_loop, mdx_block_move): Added.
29800         (mdx_movsicc, mdp_select_add_imm, mdp_select, mds_zero_extract_andi,
29801         mdp_limm): Updated and fix some bug and typo.
29802         * config/score/score.md (movqi/hi/si, add/sub/zero/ext): Updated.
29803         (movsf, movdf, doloop_end): Added.
29804
29805 2007-01-08  Kazu Hirata  <kazu@codesourcery.com>
29806
29807         * config/arm/arm.c, config/arm/arm.h, config/arm/arm.md,
29808         config/arm/thumb2.md: Fix comment typos.
29809         * doc/extend.texi: Fix a typo.
29810
29811 2007-01-07  Eric Christopher  <echristo@apple.com>
29812
29813         * configure.ac: Check for __stack_chk_fail for darwin.
29814         * configure: Regenerate.
29815
29816 2007-01-07  Richard Guenther  <rguenther@suse.de>
29817
29818         * tree-vrp.c (extract_range_from_assert): CSE calls to
29819         compare_values where possible.
29820         (extract_range_from_unary_expr): Likewise.
29821
29822 2007-01-07  Anatoly Sokolov <aesok@post.ru>
29823
29824         * config/avr/avr-protos.h (call_insn_operand): Delete prototype.
29825         * config/avr/avr.c (call_insn_operand): Delete function.
29826         * config/avr/avr.md (*pushqi, *pushhi, *pushsi, *pushsf): Use REG_SP
29827         instead of register number. Use predicates.
29828         * config/avr/predicates.md (const0_operand, reg_or_0_operand,
29829         call_insn_operand): Add.
29830
29831 2007-01-06  Jan Hubicka  <jh@suse.cz>
29832
29833         * tree-pass.h (pass_build_cgraph_edges): Declare.
29834         * cgraphunit.c (record_refernece): Move to cgraphbuild.c
29835         (visited_nodes): Remove.
29836         (cgraph_create_edges): Move to cgraphbuild.c; rename to
29837         build_cgrpah_edges; make visited_nodes local.
29838         (cgraph_process_new_functions): DO not call initialize_inline_failed.
29839         (record_references_in_initializer): Move to cgraphbuild.c
29840         (initialize_inline_failed, rebuild_cgraph_edges,
29841         pass_rebuild_cgraph_edges): Move to cgraphbuild.c.
29842         (verify_cgraph_node): Make visited_nodes local.
29843         (cgraph_analyze_function): Do not call cgraph_create_edges and
29844         initialize_inline_failed.
29845         (cgraph_expand_function): Do not call cgraph_lower_function;
29846         assert that function is already lowered.
29847         * Makefile.in (cgraphbuild.o): New.
29848         * passes.c (init_optimization_passes): Add pass_build_cgraph_edges
29849         at the end of lowering passes.
29850
29851 2007-01-06  Steven Bosscher  <steven@gcc.gnu.org>
29852
29853         * ifcvt.c (cond_move_convert_if_block): New function, code
29854         factored out from...
29855         (cond_move_process_if_block): ...here.  Call the new function
29856         on the THEN and ELSE blocks.
29857         (merge_if_block): Do not copy global_live_at_end, merge_blocks
29858         already takes care of this.
29859
29860 2007-01-05  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
29861
29862         PR c/19978
29863         * tree.h (TREE_OVERFLOW_P): New.
29864         * c-typeck.c (parser_build_unary_op): Warn only if result
29865         overflowed and operands did not.
29866         (parser_build_binary_op): Likewise.
29867         (convert_for_assignment): Remove redundant overflow_warning.
29868         * c-common.c (overflow_warning): Don't check or set TREE_OVERFLOW.
29869
29870 2007-01-05  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
29871
29872         * c-typeck.c (store_init_value): Split over two lines to follow
29873         the GNU coding style.
29874
29875 2007-01-05  Benjamin Kosnik  <bkoz@redhat.com>
29876
29877         * c-cppbuiltin.c (c_cpp_builtins): __GXX_EXPERIMENTAL_CPP0X__ to
29878         __GXX_EXPERIMENTAL_CXX0X__.
29879         * doc/cpp.texi: Same.
29880
29881 2007-01-05  Richard Guenther  <rguenther@suse.de>
29882
29883         PR middle-end/27826
29884         * tree.c (get_narrower): Do not construct COMPONENT_REFs
29885         with mismatched types.  Instead explicitly build a
29886         conversion NOP_EXPR.
29887
29888 2007-01-05  Ian Lance Taylor  <iant@google.com>
29889
29890         * c-common.c (decl_with_nonnull_addr_p): New function.
29891         (c_common_truthvalue_conversion): Call it.
29892         * c-typeck.c (build_binary_op): Likewise.
29893         * c-common.h (decl_with_nonnull_addr_p): Declare.
29894
29895 2007-01-05  Jakub Jelinek  <jakub@redhat.com>
29896
29897         PR c/30360
29898         * libgcc2.c (__divdc3): Compare c and d against 0.0 instead of
29899         denom against 0.0.
29900
29901 2007-01-05  Joel Brobecker  <brobecker@adacore.com>
29902
29903         * doc/install.texi (Final install): Document the fact that
29904         the GNAT runtime should not be stripped.
29905
29906 2007-01-04  Jan Hubicka  <jh@suse.cz>
29907
29908         * tree-inline.c (fold_marked_statements): Update operand caches
29909         and EH after folding
29910
29911 2007-01-04  Ian Lance Taylor  <iant@google.com>
29912
29913         * c-common.c (check_function_nonnull): Whitespace fix.
29914
29915 2007-01-04  Jan Hubicka  <jh@suse.cz>
29916
29917         * tree-optimize.c (execute_fixup_cfg): Correct previously mistakely
29918         comitted older version of patch.
29919         (pass_fixup_cfg): Add TODOs to verify flow and statements, dump
29920         function, celanup cfg and collect garbage.
29921
29922 2007-01-04  Mike Stump  <mrs@apple.com>
29923
29924         * Makefile.in (mostlyclean): Don't remove libgcc anymore.
29925         (clean): Likewise.
29926
29927 2007-01-04  Eric Christopher  <echristo@apple.com>
29928
29929         * libgcc2.c (__bswapsi2): Use SItype.
29930         (__bswapdi2): Use DItype.
29931         * libgcc2.h: Update for above.
29932
29933 2007-01-04  Paul Brook  <paul@codesourcery.com>
29934
29935         * config/arm/arm.md (arm_mulsi3, thumb_mulsi3, mulsi3_compare0,
29936         mulsi_compare0_scratch, mulsi3addsi, mulsi3addsi_compare0,
29937         mulsi3addsi_compare0_scratch, mulsidi3adddi, mulsidi3,
29938         umulsidi3, umulsidi3adddi, smulsi3_highpart,
29939         umulsi3_highpart): Make conditional on !arm_arch6.
29940         (arm_mulsi3_v6, thumb_mulsi3_v6, mulsi3_compare0_v6,
29941         mulsi_compare0_scratch_v6, mulsi3addsi_v6, mulsi3addsi_compare0_v6,
29942         mulsi3addsi_compare0_scratch_v6, mulsidi3adddi_v6, mulsidi3_v6,
29943         umulsidi3_v6, umulsidi3adddi_v6, smulsi3_highpart_v6,
29944         umulsi3_highpart_v6): New insns.
29945
29946 2007-01-04  Roger Sayle  <roger@eyesopen.com>
29947
29948         * fold-const.c (fold_convert): When casting an expression to void,
29949         fold_ignored_result may discover a GIMPLE_MODIFY_STMT which doesn't
29950         have a type.  Instead of attempting to build a NOP_EXPR, return
29951         these "special" trees directly.
29952
29953 2007-01-04  Joseph Myers  <joseph@codesourcery.com>
29954
29955         * config/rs6000/rs6000.c (rs6000_rtx_costs): Make adjustment for
29956         MULT inside MINUS as either argument.  Use rs6000_cost->dmul -
29957         rs6000_cost->fp not 0 as adjustment for outer NEG.
29958
29959 2007-01-04  Jan Hubicka  <jh@suse.cz>
29960
29961         * cgraph.c (cgraph_release_function_body): New function.
29962         (cgraph_remove_node): Use it.
29963         * cgraph.h (cgraph_release_function_body): Declare.
29964         * cgraphunit.c (cgraph_expand_function): Use it.
29965         * ipa.c (cgraph_remove_unreahchable_nodes): Use it.
29966         * tree-ssa.c (delete_tree_ssa): Allow to be called before aliasing
29967         is initialized and while compilation of other function is running.
29968         * tree-optimize.c (execute_free_cfg_annotations): Move code to clear
29969         statement CFG annotations from here to ...
29970         * tree-cfg.c (delete_tree_cfg_annotations): ... here.
29971
29972 2007-01-04  Zdenek Dvorak <dvorakz@suse.cz>
29973
29974         * cfgloop.h (enum li_flags): Make the constants powers of two.
29975
29976 2007-01-04  Jan Hubicka  <jh@suse.cz>
29977
29978         * tree-inline.c (copy_bb): Insert new statements to statements_to_fold
29979         set.
29980         (fold_marked_statements): New function.
29981         (optimize_inline_calls, tree_function_versioning): Fold new statements.
29982         * tree-inline.h (copy_body_data): Add statements_to_fold.
29983
29984 2007-01-03  Daniel Jacobowitz  <dan@codesourcery.com>
29985
29986         * config.gcc: Mention libgcc/config.host.
29987         * Makefile.in: Update comments mentioning libgcc.
29988         (LIBGCC, INSTALL_LIBGCC, GCC_PARTS, mklibgcc): Delete.
29989         (all.cross, start.encap, rest.encap, rest.cross): Update
29990         dependencies for libgcc move.
29991         (libgcc.mk, LIBGCC_DEPS, libgcov.a, libgcc.a, stmp-multilib)
29992         (clean-target, clean-target-libgcc): Delete.
29993         (srcdirify, GCC_EXTRA_PARTS): New macros.
29994         (libgcc-support, libgcc.mvars): New rules.
29995         (distclean): Remove mention of mklibgcc.
29996         (install): Don't reference INSTALL_LIBGCC.
29997         (install-common): Don't reference EXTRA_PARTS.
29998         (install-libgcc, install-multilib): Delete rules.
29999         * mklibgcc.in: Delete file.
30000         * doc/configfiles.texi: Don't mention mklibgcc.
30001
30002         * config/i386/t-darwin (SHLIB_VERPFX): Delete (moved to libgcc).
30003         * config/i386/t-darwin64 (SHLIB_VERPFX): Likewise.
30004         * config/rs6000/t-darwin (SHLIB_VERPFX): Likewise.
30005         * config/rs6000/t-ppccomm (TARGET_LIBGCC2_CFLAGS, SHLIB_MAPFILES)
30006         (mklibgcc, ldblspecs): Likewise.
30007
30008         * config/i386/t-nwld (libgcc.def, libc.def, libpcre.def)
30009         (posixpre.def): Use $(T).
30010         (SHLIB_EXT, SHLIB_NAME, SHLIB_SLIBDIR_QUAL, SHLIB_DEF, SHLIB_MAP)
30011         (SHLIB_SRC, SHLIB_INSTALL): Delete.
30012         (SHLIB_LINK): Make dummy.
30013         * config/t-slibgcc-darwin: Delete contents except for dummy SHLIB_LINK.
30014
30015         * config/frv/t-linux (EXTRA_MULTILIB_PARTS): Clear.
30016
30017         * config/alpha/t-crtfm: Use $(T) in rules for EXTRA_PARTS.
30018         * config/alpha/t-vms, config/alpha/t-vms64, config/fr30/t-fr30,
30019         config/i386/t-rtems-i386, config/ia64/t-ia64, config/rs6000/t-beos,
30020         config/rs6000/t-newas, config/sparc/t-elf: Likewise.
30021
30022         * configure.ac (all_outputs): Remove mklibgcc.
30023         * configure: Regenerated.
30024
30025 2007-01-03  Josh Conner  <jconner@apple.com>
30026
30027         PR middle-end/29683
30028         * calls.c (compute_argument_addresses): Set stack and stack_slot
30029         for partial args, too.
30030         (store_one_arg): Use locate.size.constant for the size when
30031         generating a save_area.
30032
30033 2007-01-03  Robert Kennedy <jimbob@google.com>
30034
30035         * tree-cfg.c (tree_merge_blocks): Release SSA_NAME phi results
30036         whose definitions are deleted due to basic block merging.
30037
30038 2007-01-03  Paul Brook  <paul@codesourcery.com>
30039
30040         PR target/16634
30041         * config/arm/arm.c (output_return_instruction): Pop PC in interrupt
30042         functions.
30043         (use_return_insn): Return 0 for Thumb interrupt functions.
30044         (print_multi_reg): Add rfe argument for IRQ returns.
30045         (arm_output_epilogue): Pop interrupt return address directly into PC.
30046         (arm_expand_prologue): Only adjust IRQ return address in Arm mode.
30047
30048 2007-01-03  Paul Brook  <paul@codesourcery.com>
30049
30050         Merge from sourcerygxx-4_1.
30051         * config/arm/thumb2.md: New file.
30052         * config/arm/elf.h (JUMP_TABLES_IN_TEXT_SECTION): Return True for
30053         Thumb-2.
30054         * config/arm/coff.h (JUMP_TABLES_IN_TEXT_SECTION): Ditto.
30055         * config/arm/aout.h (ASM_OUTPUT_ADDR_VEC_ELT): Add !Thumb-2 assertion.
30056         (ASM_OUTPUT_ADDR_DIFF_ELT): Output Thumb-2 jump tables.
30057         * config/arm/aof.h (ASM_OUTPUT_ADDR_DIFF_ELT): Output Thumb-2 jump
30058         tables.
30059         (ASM_OUTPUT_ADDR_VEC_ELT): Add !Thumb-2 assertion.
30060         * config/arm/ieee754-df.S: Use macros for Thumb-2/Unified asm
30061         comptibility.
30062         * config/arm/ieee754-sf.S: Ditto.
30063         * config/arm/arm.c (thumb_base_register_rtx_p): Rename...
30064         (thumb1_base_register_rtx_p): ... to this.
30065         (thumb_index_register_rtx_p): Rename...
30066         (thumb1_index_register_rtx_p): ... to this.
30067         (thumb_output_function_prologue): Rename...
30068         (thumb1_output_function_prologue): ... to this.
30069         (thumb_legitimate_address_p): Rename...
30070         (thumb1_legitimate_address_p): ... to this.
30071         (thumb_rtx_costs): Rename...
30072         (thumb1_rtx_costs): ... to this.
30073         (thumb_compute_save_reg_mask): Rename...
30074         (thumb1_compute_save_reg_mask): ... to this.
30075         (thumb_final_prescan_insn): Rename...
30076         (thumb1_final_prescan_insn): ... to this.
30077         (thumb_expand_epilogue): Rename...
30078         (thumb1_expand_epilogue): ... to this.
30079         (arm_unwind_emit_stm): Rename...
30080         (arm_unwind_emit_sequence): ... to this.
30081         (thumb2_legitimate_index_p, thumb2_legitimate_address_p,
30082         thumb1_compute_save_reg_mask, arm_dwarf_handle_frame_unspec,
30083         thumb2_index_mul_operand, output_move_vfp, arm_shift_nmem,
30084         arm_save_coproc_regs, thumb_set_frame_pointer, arm_print_condition,
30085         thumb2_final_prescan_insn, thumb2_asm_output_opcode, arm_output_shift,
30086         thumb2_output_casesi): New functions.
30087         (TARGET_DWARF_HANDLE_FRAME_UNSPEC): Define.
30088         (FL_THUMB2, FL_NOTM, FL_DIV, FL_FOR_ARCH6T2, FL_FOR_ARCH7,
30089         FL_FOR_ARCH7A, FL_FOR_ARCH7R, FL_FOR_ARCH7M, ARM_LSL_NAME,
30090         THUMB2_WORK_REGS): Define.
30091         (arm_arch_notm, arm_arch_thumb2, arm_arch_hwdiv, arm_condexec_count,
30092         arm_condexec_mask, arm_condexec_masklen)): New variables.
30093         (all_architectures): Add armv6t2, armv7, armv7a, armv7r and armv7m.
30094         (arm_override_options): Check new CPU capabilities.
30095         Set new architecture flag variables.
30096         (arm_isr_value): Handle v7m interrupt functions.
30097         (user_return_insn): Return 0 for v7m interrupt functions.  Handle
30098         Thumb-2.
30099         (const_ok_for_arm): Handle Thumb-2 constants.
30100         (arm_gen_constant): Ditto.  Use movw when available.
30101         (arm_function_ok_for_sibcall): Return false for v7m interrupt
30102         functions.
30103         (legitimize_pic_address, arm_call_tls_get_addr): Handle Thumb-2.
30104         (thumb_find_work_register, arm_load_pic_register,
30105         legitimize_tls_address, arm_address_cost, load_multiple_sequence,
30106         emit_ldm_seq, emit_stm_seq, arm_select_cc_mode, get_jump_table_size,
30107         print_multi_reg, output_mov_long_double_fpa_from_arm,
30108         output_mov_long_double_arm_from_fpa, output_mov_double_fpa_from_arm,
30109         output_mov_double_fpa_from_arm, output_move_double,
30110         arm_compute_save_reg_mask, arm_compute_save_reg0_reg12_mask,
30111         output_return_instruction, arm_output_function_prologue,
30112         arm_output_epilogue, arm_get_frame_offsets, arm_regno_class,
30113         arm_output_mi_thunk, thumb_set_return_address): Ditto.
30114         (arm_expand_prologue): Handle Thumb-2.  Use arm_save_coproc_regs.
30115         (arm_coproc_mem_operand): Allow POST_INC/PRE_DEC.
30116         (arithmetic_instr, shift_op): Use arm_shift_nmem.
30117         (arm_print_operand): Use arm_print_condition.  Handle '(', ')', '.',
30118         '!' and 'L'.
30119         (arm_final_prescan_insn): Use extract_constrain_insn_cached.
30120         (thumb_expand_prologue): Use thumb_set_frame_pointer.
30121         (arm_file_start): Output directive for unified syntax.
30122         (arm_unwind_emit_set): Handle stack alignment instruction.
30123         * config/arm/lib1funcs.asm: Remove default for __ARM_ARCH__.
30124         Add v6t2, v7, v7a, v7r and v7m.
30125         (RETLDM): Add Thumb-2 code.
30126         (do_it, shift1, do_push, do_pop, COND, THUMB_SYNTAX): New macros.
30127         * config/arm/arm.h (TARGET_CPU_CPP_BUILTINS): Define __thumb2__.
30128         (TARGET_THUMB1, TARGET_32BIT, TARGET_THUMB2, TARGET_DSP_MULTIPLY,
30129         TARGET_INT_SIMD, TARGET_UNIFIED_ASM, ARM_FT_STACKALIGN, IS_STACKALIGN,
30130         THUMB2_TRAMPOLINE_TEMPLATE, TRAMPOLINE_ADJUST_ADDRESS,
30131         ASM_OUTPUT_OPCODE, THUMB2_GO_IF_LEGITIMATE_ADDRESS,
30132         THUMB2_LEGITIMIZE_ADDRESS, CASE_VECTOR_PC_RELATIVE,
30133         CASE_VECTOR_SHORTEN_MODE, ADDR_VEC_ALIGN, ASM_OUTPUT_CASE_END,
30134         ADJUST_INSN_LENGTH): Define.
30135         (TARGET_REALLY_IWMMXT, TARGET_IWMMXT_ABI, CONDITIONAL_REGISTER_USAGE,
30136         STATIC_CHAIN_REGNUM, HARD_REGNO_NREGS, INDEX_REG_CLASS,
30137         BASE_REG_CLASS, MODE_BASE_REG_CLASS, SMALL_REGISTER_CLASSES,
30138         PREFERRED_RELOAD_CLASS, SECONDARY_OUTPUT_RELOAD_CLASS,
30139         SECONDARY_INPUT_RELOAD_CLASS, LIBCALL_VALUE, FUNCTION_VALUE_REGNO_P,
30140         TRAMPOLINE_SIZE, INITIALIZE_TRAMPOLINE, HAVE_PRE_INCREMENT,
30141         HAVE_POST_DECREMENT, HAVE_PRE_DECREMENT, HAVE_PRE_MODIFY_DISP,
30142         HAVE_POST_MODIFY_DISP, HAVE_PRE_MODIFY_REG, HAVE_POST_MODIFY_REG,
30143         REGNO_MODE_OK_FOR_BASE_P, LEGITIMATE_CONSTANT_P,
30144         REG_MODE_OK_FOR_BASE_P, REG_OK_FOR_INDEX_P, GO_IF_LEGITIMATE_ADDRESS,
30145         LEGITIMIZE_ADDRESS, THUMB2_LEGITIMIZE_ADDRESS,
30146         GO_IF_MODE_DEPENDENT_ADDRESS, MEMORY_MOVE_COST, BRANCH_COST,
30147         ASM_APP_OFF, ASM_OUTPUT_CASE_LABEL, ARM_DECLARE_FUNCTION_NAME,
30148         FINAL_PRESCAN_INSN, PRINT_OPERAND_PUNCT_VALID_P,
30149         PRINT_OPERAND_ADDRESS): Adjust for Thumb-2.
30150         (arm_arch_notm, arm_arch_thumb2, arm_arch_hwdiv): New declarations.
30151         * config/arm/arm-cores.def: Add arm1156t2-s, cortex-a8, cortex-r4 and
30152         cortex-m3.
30153         * config/arm/arm-tune.md: Regenerate.
30154         * config/arm/arm-protos.h: Update prototypes.
30155         * config/arm/vfp.md: Enable patterns for Thumb-2.
30156         (arm_movsi_vfp): Add movw alternative.  Use output_move_vfp.
30157         (arm_movdi_vfp, movsf_vfp, movdf_vfp): Use output_move_vfp.
30158         (thumb2_movsi_vfp, thumb2_movdi_vfp, thumb2_movsf_vfp,
30159         thumb2_movdf_vfp, thumb2_movsfcc_vfp, thumb2_movdfcc_vfp): New.
30160         * config/arm/libunwind.S: Add Thumb-2 code.
30161         * config/arm/constraints.md: Update include Thumb-2.
30162         * config/arm/ieee754-sf.S: Add Thumb-2/Unified asm support.
30163         * config/arm/ieee754-df.S: Ditto.
30164         * config/arm/bpabi.S: Ditto.
30165         * config/arm/t-arm (MD_INCLUDES): Add thumb2.md.
30166         * config/arm/predicates.md (low_register_operand,
30167         low_reg_or_int_operand, thumb_16bit_operator): New.
30168         (thumb_cmp_operand, thumb_cmpneg_operand): Rename...
30169         (thumb1_cmp_operand, thumb1_cmpneg_operand): ... to this.
30170         * config/arm/t-arm-elf: Add armv7 multilib.
30171         * config/arm/arm.md: Update patterns for Thumb-2 and Unified asm.
30172         Include thumb2.md.
30173         (UNSPEC_STACK_ALIGN, ce_count): New.
30174         (arm_incscc, arm_decscc, arm_umaxsi3, arm_uminsi3,
30175         arm_zero_extendsidi2, arm_zero_extendqidi2): New
30176         insns/expanders.
30177         * config/arm/fpa.md: Update patterns for Thumb-2 and Unified asm.
30178         (thumb2_movsf_fpa, thumb2_movdf_fpa, thumb2_movxf_fpa,
30179         thumb2_movsfcc_fpa, thumb2_movdfcc_fpa): New insns.
30180         * config/arm/cirrus.md: Update patterns for Thumb-2 and Unified asm.
30181         (cirrus_thumb2_movdi, cirrus_thumb2_movsi_insn,
30182         thumb2_cirrus_movsf_hard_insn, thumb2_cirrus_movdf_hard_insn): New
30183         insns.
30184         * doc/extend.texi: Document ARMv7-M interrupt functions.
30185         * doc/invoke.texi: Document Thumb-2 new cores+architectures.
30186
30187 2007-01-03  Jakub Jelinek  <jakub@redhat.com>
30188
30189         * unwind-dw2.c (SIGNAL_FRAME_BIT, EXTENDED_CONTEXT_BIT): Define.
30190         (struct _Unwind_Context): Rename args_size to flags, remove
30191         signal_frame field, add a new args_size field and version field.
30192         (_Unwind_IsSignalFrame, _Unwind_SetSignalFrame,
30193         _Unwind_IsExtendedContext): New inline functions.
30194         (_Unwind_GetGR, _Unwind_SetGR, _Unwind_GetGRPtr, _Unwind_SetGRPtr):
30195         Assume by_value array is only present if _Unwind_IsExtendedContext.
30196         (_Unwind_GetIPInfo, execute_cfa_program, uw_frame_state_for): Use
30197         _Unwind_IsSignalFrame.
30198         (__frame_state_for): Initialize context.flags to EXTENDED_CONTEXT_BIT.
30199         (uw_update_context_1): Use _Unwind_SetSignalFrame.
30200         (uw_init_context_1): Initialize context->flags to
30201         EXTENDED_CONTEXT_BIT.
30202         * config/rs6000/linux-unwind.h (frob_update_context): Use
30203         _Unwind_SetSignalFrame.
30204
30205 2007-01-03  Andrew Pinski  <andrew_pinski@playstation.sony.com>
30206
30207         PR middle-end/30353
30208         * gimplify.c (gimplify_modify_expr_complex_part): Move below
30209         tree_to_gimple_tuple.  Call tree_to_gimple_tuple when we need
30210         the value.
30211
30212 2007-01-03  Kazu Hirata  <kazu@codesourcery.com>
30213
30214         * config/i386/i386.h (NON_STACK_REG_P, REGNO_OK_FOR_SIREG_P,
30215         REGNO_OK_FOR_DIREG_P, REWRITE_ADDRESS, ASM_OPERAND_LETTER,
30216         RET, AT_SP): Remove.
30217         * config/i386/i386.md (*sse_prologue_save_insn): Use return
30218         instead of RET.
30219
30220         * alias.c (init_alias_analysis): Use VEC_safe_grow_cleared.
30221         * cfgbuild.c (find_basic_blocks): Likewise.
30222         * cfgrtl.c (rtl_create_basic_block): Likewise.
30223         * function.c (temp_slots_at_level): Likewise.
30224         * reg-stack.c (stack_regs_mentioned): Likewise.
30225         * regclass.c (allocate_reg_info): Likewise.
30226         * tree-cfg.c (init_empty_tree_cfg, build_tree_cfg, create_bb,
30227         set_bb_for_stmt, move_block_to_fn): Likewise.
30228         * tree-complex.c (tree_lower_complex): Likewise.
30229         * vec.h (VEC_safe_grow_cleared): New.
30230
30231         * cgraphunit.c, tree-ssa-alias.c: Fix comment typos.
30232
30233 2007-01-03  Zdenek Dvorak <dvorakz@suse.cz>
30234
30235         * loop-unswitch.c (unswitch_loop): Pass probabilities to loopify.
30236         * tree-ssa-loop-unswitch.c (tree_unswitch_loop): Pass probabilities
30237         to loop_version.
30238         * cfgloopmanip.c (scale_loop_frequencies): Export.
30239         (loopify): Scale the frequencies by prescribed coefficients.
30240         (set_zero_probability): New function.
30241         (duplicate_loop_to_header_edge): Improve updating of frequencies.
30242         (lv_adjust_loop_entry_edge, loop_version): Set probabilities
30243         and frequencies according to arguments.
30244         * tree-ssa-loop-manip.c (tree_unroll_loop): Set probabilities
30245         correctly.
30246         * cfg.c (scale_bbs_frequencies_int): Allow scaling the frequencies up.
30247         * modulo-sched.c (sms_schedule): Set probabilities for entering
30248         versioned loop correctly.
30249         * tree-vect-transform.c (vect_transform_loop): Ditto.
30250         * cfgloop.h (loopify, loop_version): Declaration changed.
30251         (scale_loop_frequencies): Declared.
30252
30253 2007-01-02  Jan Hubicka  <jh@suse.cz>
30254
30255         * cgraph.c: Include tree-flow.h
30256         (cgraph_add_new-function): Handle IPA_SSA mode; execute
30257         early_local_passes.
30258         * cgraph.h (enum cgraph_state): Add CGRAPH_STATE_IPA_SSA.
30259         * tree-pass.h (pass_all_early_optimizations): Declare.
30260         * cgraphunit.c (cgraph_process_new_functions): Add IPA_SSA; execute
30261         early_local_passes.
30262         (cgraph_analyze_function): Do early_local_passes.
30263         * tree-mudflap.c (mf_decl_cache_locals, mf_build_check_statement_for):
30264         Do not add referenced vars.
30265         * tree-optimize.c (gate_all_optimizations): Do not execute when not in
30266         SSA form.
30267         (gate_all_early_local_passes): New gate.
30268         (pass_early_local_passes): Use new gate.
30269         (execute_early_local_optimizations): New functions.
30270         (gate_all_early_optimizations): New gate.
30271         (pass_all_early_optimizations): New pass.
30272         (execute_free_datastructures): Free SSA only when initialized.
30273         (gate_init_datastructures): Init only when optimizing.
30274         (tree_lowering_passes): Do early local passes when called late.
30275         * tree-profile.c (do_tree_profiling): Don't profile functions added
30276         late.
30277         (do_early_tree_profiling, pass_early_tree_profile): Kill.
30278         * tree-cfg.c (update_modified_stmts): Do not update when operands are
30279         not active.
30280         * passes.c (init_optimizations_passes): Reorder so we go into SSA
30281         during early_local_passes.
30282         * Makefile.in (cgraph.o): Add dependency on tree-flow.h.
30283
30284
30285 2007-01-02  Carlos O'Donell  <carlos@codesourcery.com>
30286
30287         * Makefile.in: Update copyright year.
30288
30289 2007-01-02  Carlos O'Donell  <carlos@codesourcery.com>
30290
30291         * Makefile.in: Export GCC_EXEC_PREFIX before calling $(RUNTEST)
30292         in $(lang_checks) and check-consistency targets.
30293
30294 2007-01-02  Jan Hubicka  <jh@suse.cz>
30295
30296         * tree-mudflap.c (mf_decl_cache_locals, mf_build_check_statement_for):
30297         Do not add referenced vars.
30298         * tree-cfg.c (update_modified_stmts): Do not update when SSA operands
30299         are not active.
30300         * passes.c (init_optimization_passes): Put mudflap_2 after
30301         free_datastructures.
30302
30303 2007-01-02  Jan Hubicka  <jh@suse.cz>
30304
30305         * tree-optimize (execute_fixup_cfg): Set after_inlining flag.
30306         Set NOTHROW flag on call statements proved to be nothrow.
30307         Update statement of local calls so new pure/const functions are
30308         updated. Update_ssa when in ssa form. Mark PHI nodes of nonlocal
30309         goto receivers.
30310         (tree_rest_of_compilation): Register hooks and initialize bitmap
30311         early. Do not set after_inlining flag.
30312
30313 2007-01-02  Steve Ellcey  <sje@cup.hp.com>
30314
30315         * sbitmap.c (HOST_BITS_PER_LONG_LONG): Change to
30316         HOST_BITS_PER_LONGLONG
30317
30318 2007-01-02  Manuel Lopez-Ibanez <manu@gcc.gnu.org>
30319
30320         PR c/19977
30321         * c-typeck.c (store_init_value): Don't emit pedantic overflow
30322         warning for non-static initializers.
30323
30324 2007-01-02  Steven Bosscher  <steven@gcc.gnu.org>
30325
30326         * config/alpha/alpha.md, arm/arm.c, darwin.c, frv/frv.md,
30327         m32r/m32r.c, m32r/m32r.c, mn10300/mn10300.md, pa/pa.c,
30328         rs6000/rs6000.c, s390/s390.md, sh/sh.md, sparc/sparc.c:
30329         Always use set_unique_reg_note to add REG_EQUAL notes.
30330
30331 2007-01-02  Kazu Hirata  <kazu@codesourcery.com>
30332
30333         Revert:
30334         2007-01-02  Kazu Hirata  <kazu@codesourcery.com>
30335
30336         * alias.c (init_alias_analysis): Use VEC_safe_grow_cleared.
30337         * cfgbuild.c (find_basic_blocks): Likewise.
30338         * cfgrtl.c (rtl_create_basic_block): Likewise.
30339         * function.c (temp_slots_at_level): Likewise.
30340         * reg-stack.c (stack_regs_mentioned): Likewise.
30341         * regclass.c (allocate_reg_info): Likewise.
30342         * tree-cfg.c (init_empty_tree_cfg, build_tree_cfg, create_bb,
30343         set_bb_for_stmt, move_block_to_fn): Likewise.
30344         * tree-complex.c (tree_lower_complex): Likewise.
30345         * vec.h (VEC_safe_grow_cleared): New.
30346
30347 2007-01-02  Ian Lance Taylor  <iant@google.com>
30348
30349         * c-common.c (c_common_truthvalue_conversion): When warning about
30350         using an assignment as a truth value, set TREE_NO_WARNING.
30351
30352 2007-01-02  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
30353
30354         PR middle-end/7651
30355         * c.opt (Wold-style-declaration): New.
30356         * doc/invoke.texi (C-only Warning Options): New.
30357         (Wold-style-declaration): Document it.
30358         (Wextra): Enabled by -Wextra.
30359         * c-opts.c (c_common_post_options): Enabled by -Wextra.
30360         * c-decl.c (declspecs_add_scspec): Replace -Wextra with
30361         -Wold-style-declaration.
30362
30363 2007-01-02  Kazu Hirata  <kazu@codesourcery.com>
30364
30365         * alias.c (init_alias_analysis): Use VEC_safe_grow_cleared.
30366         * cfgbuild.c (find_basic_blocks): Likewise.
30367         * cfgrtl.c (rtl_create_basic_block): Likewise.
30368         * function.c (temp_slots_at_level): Likewise.
30369         * reg-stack.c (stack_regs_mentioned): Likewise.
30370         * regclass.c (allocate_reg_info): Likewise.
30371         * tree-cfg.c (init_empty_tree_cfg, build_tree_cfg, create_bb,
30372         set_bb_for_stmt, move_block_to_fn): Likewise.
30373         * tree-complex.c (tree_lower_complex): Likewise.
30374         * vec.h (VEC_safe_grow_cleared): New.
30375
30376 2007-01-02  Douglas Gregor  <doug.gregor@gmail.com>
30377
30378         * c-common.c (c_common_nodes_and_builtins): Since variants of
30379         void_type_node get built before it is given a name, we need to
30380         give those variants the name, too.
30381         (complete_array_type): We need to work with the canonical main
30382         type of the array, from which we will build the qualified version.
30383         * params.def (PARAM_VERIFY_CANONICAL_TYPES): New.
30384         * print-tree.c (print_node): Display canonical type information
30385         for each type.
30386         * stor-layout.c (layout_type): When we don't know the
30387         alignment of a type for which we're building an array, we end up
30388         guessing wrong, so make the type require structural equality.
30389         * tree.c (make_node_stat): When we build a new type, it is its
30390         own canonical type.
30391         (build_type_attribute_qual_variant): When building an attribute
30392         variant, its canonical type is the non-attribute variant. However,
30393         if the attributes are target-dependent and they differ, we need to
30394         use structural equality checks for this type.
30395         (build_qualified_type): A qualified type is not equivalent to its
30396         unqualified variant; set the canonical type appropriately.
30397         (build_distinct_type_copy): When building a distinct type from
30398         another type, the new type is its own canonical type.
30399         (build_variant_type_copy): When building a new type variant, we
30400         assume that it is equivalent to the original type.
30401         (build_pointer_type_for_mode): When building a pointer type, also
30402         build a canonical type pointer.
30403         (build_reference_type_for_mode): When building a reference type,
30404         also build a canonical type reference.
30405         (build_index_type): When we can't hash an index type (e.g.,
30406         because its maximum value is negative), the index type requires
30407         structural equality tests.
30408         (build_array_type): Build the canonical form of an array type.
30409         (build_function_type): Function types require structural equality,
30410         because they contain default arguments, attributes, etc.
30411         (build_method_type_directly): Ditto for method types.
30412         (build_offset_type): Build the canonical offset type.
30413         (build_complex_type): Build the canonical vector type.
30414         (make_vector_type): Build the canonical vector type.
30415         * tree.h (TYPE_CANONICAL): New.
30416         (TYPE_STRUCTURAL_EQUALITY_P): New.
30417         (SET_TYPE_STRUCTURAL_EQUALITY): New.
30418         (struct tree_type): Added "canonical" field.
30419         * params.h (VERIFY_CANONICAL_TYPES): New.
30420         * doc/c-tree.texi (TYPE_CANONICAL): Document.
30421         (TYPE_STRUCTURAL_EQUALITY_P): Document.
30422         (SET_TYPE_STRUCTURAL_EQUALITY): Document.
30423         * doc/invoke.texi (verify-canonical-types): Document --param
30424         parameter for verifying canonical types.
30425
30426 2007-01-02  Joseph Myers  <joseph@codesourcery.com>
30427
30428         * config.gcc (powerpc-*-eabispe*, powerpc-*-eabisimaltivec*,
30429         powerpc-*-eabisim*, powerpc-*-eabialtivec*, powerpc-*-eabi*,
30430         powerpc-*-rtems*, powerpc-wrs-vxworks, powerpc-wrs-vxworksae,
30431         powerpcle-*-eabisim*, powerpcle-*-eabi*): Add rs6000/e500.h to
30432         tm_file.
30433         * config/rs6000/e500.h: New.
30434         * config/rs6000/eabi.h (TARGET_SPE_ABI, TARGET_SPE, TARGET_E500,
30435         TARGET_ISEL, TARGET_FPRS, TARGET_E500_SINGLE, TARGET_E500_DOUBLE):
30436         Remove.
30437         * config/rs6000/linuxspe.h (TARGET_SPE_ABI, TARGET_SPE,
30438         TARGET_E500, TARGET_ISEL, TARGET_FPRS, TARGET_E500_SINGLE,
30439         TARGET_E500_DOUBLE): Remove.
30440         * config/rs6000/vxworks.h (TARGET_SPE_ABI, TARGET_SPE,
30441         TARGET_E500, TARGET_ISEL, TARGET_FPRS): Remove.
30442         * config/rs6000/rs6000.h (CHECK_E500_OPTIONS): Define.
30443         * config/rs6000/rs6000.c (rs6000_override_options): Use
30444         CHECK_E500_OPTIONS.
30445
30446 2007-01-02  Joseph Myers  <joseph@codesourcery.com>
30447
30448         * config/rs6000/rs6000.c (print_operand): Check (TARGET_SPE ||
30449         TARGET_E500_DOUBLE), not TARGET_E500, for %y.
30450         (rs6000_generate_compare, rs6000_emit_sCOND, output_cbranch,
30451         rs6000_emit_cmove): Don't check TARGET_E500.
30452         * config/rs6000/rs6000.md (bunordered, bordered, sunordered,
30453         sordered): Don't check TARGET_E500.
30454
30455 2007-01-01  Eric Christopher  <echristo@apple.com>
30456
30457         * config/mips/mips.c (mips_regno_mode_ok_for_base_p): Use
30458         HARD_REGISTER_NUM_P.
30459
30460 2007-01-01  Roger Sayle  <roger@eyesopen.com>
30461
30462         * fold-const.c (fold_binary) <EQ_EXPR>: Fold "(X^C1) eq/ne C2" into
30463         "X eq/ne (C1^C2)".  Fold "(X^Z) eq/ne (Y^Z)" as "X eq/ne Y" when Z
30464         has no side-effects.  Fold "(X^C1) eq/ne (Y^C2)" as "(X^(C1^C2))
30465         eq/ne Y".
30466
30467 2007-01-01  Mike Stump  <mrs@apple.com>
30468
30469         * configure.ac: Remove support for building with Apple's gcc-3.1.
30470
30471 2007-01-02  Joseph Myers  <joseph@codesourcery.com>
30472
30473         PR middle-end/30311
30474         * caller-save.c (add_stored_regs): Only handle SUBREGs if inner
30475         REG is a hard register.  Do not modify REG before calling
30476         subreg_nregs.
30477         * rtlanal.c (subreg_get_info): Don't assert size of XMODE is a
30478         multiple of the size of YMODE for certain lowpart cases.
30479
30480 2007-01-01  Andrew Pinski  <pinskia@gmail.com>
30481
30482         PR middle-end/30253
30483         * gimplify (voidify_wrapper_expr): Update for
30484         GIMPLE_MODIFY_STMT.
30485
30486 2007-01-01  Andreas Schwab  <schwab@suse.de>
30487
30488         PR target/29166
30489         * config/ia64/ia64.c (ia64_compute_frame_size): Account space for
30490         save of BR0 in extra_spill_size instead of spill_size.
30491         (ia64_expand_prologue): Save BR0 outside of the gr/br/fr spill
30492         area.
30493         (ia64_expand_epilogue): Restore BR0 from its new location.
30494
30495 2007-01-01  Andrew Pinski  <pinskia@gmail.com>
30496
30497         * gimplify.c (gimplify_init_constructor <case VECTOR_TYPE>):
30498         Use a temporary variable if the left hand side is not a gimple
30499         register.
30500
30501 2007-01-01  Andrew Pinski  <pinskia@gmail.com>
30502
30503         * gimplify.c (gimplify_return_expr): Make the temporary variable
30504         for the return expression, a gimple register variable.
30505
30506 2007-01-01  Jan Hubicka  <jh@suse.cz>
30507
30508         * emit-rtl.c (emit_copy_of_insn_after): Do not call copy_insn_1 for
30509         INSN_LIST.
30510
30511 2007-01-01  Mike Stump  <mrs@apple.com>
30512
30513         * configure.ac (HAVE_GAS_LITERAL16): Add autoconf check for
30514         .literal16.
30515         * config/darwin.c (machopic_select_rtx_section): Use
30516         HAVE_GAS_LITERAL16.
30517         (darwin_mergeable_constant_section): Likewise.
30518         * configure: Regenerate.
30519         * config.in: Regenerate.
30520
30521 2007-01-01  Jan Hubicka  <jh@suse.cz>
30522             Andrew Pinski  <pinskia@gmail.com>
30523
30524         * cgraphunit.c (cgraph_optimize): Call cgraph_add_new_functions
30525         before starting IPA passes.