OSDN Git Service

* config/rs6000/rs6000.c (rs6000_emit_prologue): Use frame_reg_rtx
[pf3gnuchains/gcc-fork.git] / gcc / ChangeLog
1 2007-12-11  Nathan Sidwell  <nathan@codesourcery.com>
2
3         * config/rs6000/rs6000.c (rs6000_emit_prologue): Use frame_reg_rtx
4         for SPE saves.
5
6 2007-12-11  Kai Tietz  <kai.tietz@onevision.com>
7
8         * config/i386/cygming.h (DWARF2_UNWIND_INFO): Handle 64-bit
9         target same as 32-bit.
10
11 2007-12-10  Jakub Jelinek  <jakub@redhat.com>
12
13         PR tree-optimization/34371
14         * tree-vectorizer.h (struct _loop_vec_info): Add num_iters_unchanged
15         field.
16         (LOOP_VINFO_NITERS_UNCHANGED): Define to num_iters_unchanged field.
17         * tree-vectorizer.c (set_prologue_iterations,
18         slpeel_tree_peel_loop_to_edge): Call unshare_expr on
19         LOOP_VINFO_NITERS_UNCHANGED before using it.
20
21 2007-12-10  Eric Botcazou  <ebotcazou@libertysurf.fr>
22
23         PR target/34403
24         * config/i386/i386.c (ix86_expand_movmem): Punt if the count is large.
25         (ix86_expand_setmem): Likewise.
26
27 2007-12-10  Kenneth Zadeck <zadeck@naturalbridge.com>
28
29         PR rtl-optimization/34302
30         * auto-inc-dec.c (attempt_change): Change place where move is
31         inserted.
32
33 2007-12-10  Jakub Jelinek  <jakub@redhat.com>
34
35         * dwarf2out.c (gen_array_type_die, gen_descr_array_type_die): For
36         Fortran multi-dimensional arrays use DW_AT_ordering
37         DW_ORD_col_major.
38
39 2007-12-10  Paolo Bonzini  <bonzini@gnu.org>
40
41         PR target/32086
42         * config/i386/i386.c (override_options): Enable -fvect-cost-model.
43
44 2007-12-10 Uros Bizjak <ubizjak@gmail.com>
45
46         * config/i386/i386.c (ix86_function_regparm): Do not check global_regs
47         array, registers that are members of global_regs are also members of
48         fixed_regs array.  Use REGPARM_MAX to check that no regparm hard
49         register is taken by a fixed register variable.  Check up to and
50         including DI_REG when adjusting regparm value due to fixed regs usage.
51         (rep_prefix_usable): Check fixed_regs array, not global_regs array for
52         available hard registers.
53         (ix86_expand_strlen): Ditto.
54         * config/i386/i386.md (strmov): Ditto.
55         (cmpstrnsi): Ditto.
56
57 2007-12-10  Kaz Kojima  <kkojima@gcc.gnu.org>
58
59         * genopinit.c: Include tm_p.h in generated file.
60
61         * config/arm/neon.md (vec_set<mode>_internal): Use INTVAL
62         to extract the integer from operands[2].
63         (vec_setv2di_internal): Likewise.
64
65         * config/arm/arm.c (arm_size_return_regs): Make return type
66         unsigned.
67         (arm_init_neon_builtins): Move code after declarations.
68
69 2007-12-10  Hans-Peter Nilsson  <hp@axis.com>
70
71         * reload.c (find_reloads_address_1): To properly mark as an
72         autoincdec, pass X for non-NULL OUT in call to push_reload for
73         autoincdec which can't be trivially used as an address.
74
75 2007-12-10  Pranav Bhandarkar  <pranav.bhandarkar@celunite.com>
76             Hans-Peter Nilsson  <hp@axis.com>
77
78         * caller-save.c (insert_one_insn): If inserting before a call_insn
79         then the registers containing the arguments of the call are
80         live_throughout in the new insn.
81
82 2007-12-09  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
83
84         PR middle-end/32889
85         PR target/34091
86         * pa.md: Consolidate HImode and QImode move patterns into one pattern
87         each, eliminating floating-point alternatives.
88         * pa-protos.h (pa_cannot_change_mode_class, pa_modes_tieable_p):
89         Declare functions.
90         * pa-64.h (SECONDARY_MEMORY_NEEDED): Define here.
91         * pa.c (pa_secondary_reload): Use an intermediate general register
92         for copies to/from floating-point register classes.  Simplify code
93         SHIFT_REGS class.  Provide additional comments.
94         (pa_cannot_change_mode_class, pa_modes_tieable_p): New functions.
95         * pa.h (MODES_TIEABLE_P): Use pa_modes_tieable_p.
96         (SECONDARY_MEMORY_NEEDED): Delete define.
97         (INT14_OK_STRICT): Define.
98         (MODE_OK_FOR_SCALED_INDEXING_P): Allow SFmode and DFmode when using
99         soft float.
100         (MODE_OK_FOR_UNSCALED_INDEXING_P): Likewise.
101         (GO_IF_LEGITIMATE_ADDRESS): Use INT14_OK_STRICT in REG+D case for
102         SFmode and DFmode.
103         (LEGITIMIZE_RELOAD_ADDRESS): Use INT14_OK_STRICT in mask selection.
104         Align DImode offsets when generating 64-bit code.
105         * pa32-regs.h (VALID_FP_MODE_P): Remove QImode and HImode.
106         (CANNOT_CHANGE_MODE_CLASS): Define.
107         * pa64-regs.h (VALID_FP_MODE_P): Remove QImode and HImode.
108         (CANNOT_CHANGE_MODE_CLASS): Define using pa_cannot_change_mode_class.
109
110 2007-12-09  Jakub Jelinek  <jakub@redhat.com>
111
112         PR fortran/22244
113         * langhooks-def.h (LANG_HOOKS_GET_ARRAY_DESCR_INFO): Define.
114         (LANG_HOOKS_FOR_TYPES_INITIALIZER): Add it.
115         * langhooks.h (struct array_descr_info): Forward declaration.
116         (struct lang_hooks_for_types): Add get_array_descr_info field.
117         * dwarf2.h (DW_AT_bit_stride, DW_AT_byte_stride): New.
118         (DW_AT_stride_size, DW_AT_stride): Keep around for Dwarf2
119         compatibility.
120         * dwarf2out.h (struct array_descr_info): New type.
121         * dwarf2out.c (dwarf_attr_name): Rename DW_AT_stride to
122         DW_AT_byte_stride and DW_AT_stride_size to DW_AT_bit_size.
123         (descr_info_loc, add_descr_info_field, gen_descr_array_type_die):
124         New functions.
125         (gen_type_die_with_usage): Call lang_hooks.types.get_array_descr_info
126         and gen_descr_array_type_die.
127
128 2007-12-08  Richard Guenther  <rguenther@suse.de>
129
130         PR tree-optimization/34391
131         * tree-vect-transform.c (vect_setup_realignment): Mark new
132         symbols for renaming.
133
134 2007-12-07  Bob Wilson  <bob.wilson@acm.org>
135         
136         * config/xtensa/xtensa.h (ASM_PREFERRED_EH_DATA_FORMAT): Define.
137         (ASM_OUTPUT_DWARF_PCREL): Define.
138         
139 2007-12-07  Richard Guenther  <rguenther@suse.de>
140
141         PR middle-end/34382
142         * opts.c (common_handle_option): Handle OPT_fforce_addr.
143
144 2007-12-07  Aldy Hernandez  <aldyh@redhat.com>
145
146         * m32c.h (LEGITIMIZE_ADDRESS): Use WIN instead of win.
147         (LEGITIMIZE_RELOAD_ADDRESS): Same.
148
149 2007-12-07  Samuel Tardieu  <sam@rfc1149.net>
150
151         PR ada/29157
152         * doc/install.texi: Explain how to check for a clean environment when
153         building GNAT.
154
155 2007-12-07  Richard Guenther  <rguenther@suse.de>
156
157         * tree-profile.c (gcov_type_tmp_var): New global variable.
158         (tree_gen_edge_profiler): Use a single shared variable decl per
159         function for edge counter incrementing.
160         (tree_profiling): Re-set the shared variable.
161
162 2007-12-06  Bob Wilson  <bob.wilson@acm.org>
163
164         * config/xtensa/xtensa.c (xtensa_va_start): Add prototype.
165
166 2007-12-06  Tom Tromey  <tromey@redhat.com>
167
168         PR c/29172:
169         * c-opts.c (c_common_parse_file): Call cpp_clear_file_cache.
170
171 2007-12-06  Richard Sandiford  <rsandifo@nildram.co.uk>
172
173         * config/mips/mips.c (mips_function_ok_for_sibcall): Check
174         targetm.binds_local_p as well as DECL_EXTERNAL.
175
176 2007-12-06  Harsha Jagasia <harsha.jagasia@amd.com>
177
178         * tree-vectorizer.c (slpeel_add_loop_guard): Gimplify the condition.
179         (set_prologue_iterations): New. Set the prologue iterations to total
180         number of scalar iterations if the cost model check indicates that
181         scalar code should be generated.
182         (slpeel_tree_peel_loop_to_edge): Add a new parameter and code for 
183         generating the cost condition for epilog. Call
184         set_prologue_iterations to generate cost condition for prolog.
185         (new_loop_vec_info): Initialize LOOP_VINFO_NITERS_UNCHANGED.
186         * tree-vectorizer.h (LOOP_VINFO_NITERS_UNCHANGED): New.
187         (slpeel_tree_peel_loop_to_edge): Update declaration.
188         (set_prologue_iterations): New declaration.
189         * tree-vect-analyze.c (vect_analyze_loop_form): Update 
190         LOOP_VINFO_NITERS_UNCHANGED.
191         * tree-vect-transform.c
192         (vect_estimate_min_profitable_iters): Add new parameter and
193         code to  check if run time cost model test is needed.
194         Remove code that adds builtin vectorization cost to scalar
195         outside cost for the run time cost model test. If run time
196         cost model test is needed add the appropriate guard cost to
197         the scalar outside cost. The guard cost depends on whether
198         the guard is generated at versioning or at prolog generation
199         or at epilog generation. Change cost model equation to include
200         scalar outside cost.
201         (conservative_cost_threshold): New. Return the less conservative
202         profitability threshold between the cost model threshold and the
203         user defined vectorization threshold.
204         (vect_do_peeling_for_loop_bound): Call conservative_cost_threshold.
205         (vect_do_peeling_for_alignment): Same.
206         (vect_loop_versioning): Same.
207         (vect_create_cond_for_align_checks): ANDs the cost model condition
208         with the alignment condition.
209         (vect_transform_loop): Call loop versioning only when there is a
210         misalignment or an aliasing problem.
211
212 2007-12-06  Jakub Jelinek  <jakub@redhat.com>
213
214         PR middle-end/20983
215         * tree-ssa-ccp.c (optimize_stdarg_builtin): New function.
216         (execute_fold_all_builtins): Call it for BUILT_IN_VA_START,
217         BUILT_IN_VA_COPY and BUILT_IN_VA_END.
218
219         * target.h (struct ggc_target): Add expand_builtin_va_start hook.
220         * target-def.h (TARGET_EXPAND_BUILTIN_VA_START): Define.
221         (TARGET_INITIALIZER): Add it.
222         * builtins.c (expand_builtin_va_start): Use
223         targetm.expand_builtin_va_start hook instead of
224         EXPAND_BUILTIN_VA_START macro.
225         * alpha/alpha.c (alpha_va_start): Made static.
226         (override_options): Clear targetm.expand_builtin_va_start if
227         TARGET_UNICOSMK.
228         (TARGET_EXPAND_BUILTIN_VA_START): Define.
229         * alpha/unicosmk.h (EXPAND_BUILTIN_VA_START): Remove.
230         * alpha/alpha.h (EXPAND_BUILTIN_VA_START): Remove.
231         * alpha/alpha-protos.h (alpha_va_start): Remove prototype.
232         * xtensa/xtensa.h (EXPAND_BUILTIN_VA_START): Remove.
233         * xtensa/xtensa.c (TARGET_EXPAND_BUILTIN_VA_START): Define.
234         (xtensa_va_start): Made static.
235         * xtensa/xtensa-protos.h (xtensa_va_start): Remove prototype.
236         * pa/pa-protos.h (hppa_va_start): Remove prototype.
237         * pa/pa.h (EXPAND_BUILTIN_VA_START): Remove.
238         * pa/pa.c (hppa_va_start): Made static, add prototype.
239         (TARGET_EXPAND_BUILTIN_VA_START): Define.
240         * frv/frv.c (frv_expand_builtin_va_start): Made static, add prototype.
241         (TARGET_EXPAND_BUILTIN_VA_START): Define.
242         * frv/frv-protos.h (frv_expand_builtin_va_start): Remove prototype.
243         * frv/frv.h (EXPAND_BUILTIN_VA_START): Remove.
244         * i386/i386.c (override_options): Clear
245         targetm.expand_builtin_va_start if -m32 or 64-bit MS ABI.
246         (ix86_va_start): Made static.
247         (TARGET_EXPAND_BUILTIN_VA_START): Define.
248         * i386/i386.h (EXPAND_BUILTIN_VA_START): Remove.
249         * i386/i386-protos.h (ix86_va_start, ix86_va_arg): Remove prototypes.
250         * iq2000/iq2000-protos.h (iq2000_va_start): Remove prototype.
251         * iq2000/iq2000.h (EXPAND_BUILTIN_VA_START): Remove.
252         * iq2000/iq2000.c (iq2000_va_start): Made static, add prototype.
253         (TARGET_EXPAND_BUILTIN_VA_START): Define.
254         * rs6000/rs6000-protos.h (rs6000_va_start): Remove prototype.
255         * rs6000/rs6000.c (rs6000_va_start): Made static, add prototype.
256         (TARGET_EXPAND_BUILTIN_VA_START): Define.
257         (rs6000_override_options): Clear targetm.expand_builtin_va_start if
258         DEFAULT_ABI != ABI_V4.
259         * rs6000/rs6000.h (EXPAND_BUILTIN_VA_START): Remove.
260         * spu/spu.c (spu_va_start): Made static, add prototype.
261         (TARGET_EXPAND_BUILTIN_VA_START): Define.
262         * spu/spu.h (EXPAND_BUILTIN_VA_START): Remove.
263         * spu/spu-protos.h spu_va_start): Remove prototype.
264         * stormy16/stormy16.h (EXPAND_BUILTIN_VA_START): Remove.
265         * stormy16/stormy16-protos.h (xstormy16_expand_builtin_va_start):
266         Remove prototype.
267         * stormy16/stormy16.c (xstormy16_expand_builtin_va_start): Made
268         static.
269         (TARGET_EXPAND_BUILTIN_VA_START): Define.
270         * s390/s390-protos.h (s390_va_start): Remove prototype.
271         * s390/s390.c (s390_va_start): Made static.
272         (TARGET_EXPAND_BUILTIN_VA_START): Define.
273         * s390/s390.h (EXPAND_BUILTIN_VA_START): Remove.
274         * mn10300/mn10300.h (EXPAND_BUILTIN_VA_START): Remove.
275         * mn10300/mn10300-protos.h (mn10300_va_start): Remove prototype.
276         * mn10300/mn10300.c (mn10300_va_start): Made static, add prototype.
277         (TARGET_EXPAND_BUILTIN_VA_START): Define.
278         * arc/arc.c (arc_va_start): Made static, add prototype.
279         (TARGET_EXPAND_BUILTIN_VA_START): Define.
280         * arc/arc.h (EXPAND_BUILTIN_VA_START): Remove.
281         * arc/arc-protos.h (arc_va_start): Remove prototype.
282         * mt/mt-protos.h (mt_va_start): Remove prototype.
283         * sparc/sparc.c (sparc_va_start): Made static, add prototype.
284         (TARGET_EXPAND_BUILTIN_VA_START): Define.
285         * sparc/sparc-protos.h (sparc_va_start): Remove prototype.
286         * sparc/sparc.h (EXPAND_BUILTIN_VA_START): Remove.
287         * sh/sh.c (sh_va_start): Made static, add prototype.
288         (TARGET_EXPAND_BUILTIN_VA_START): Define.
289         * sh/sh-protos.h (sh_va_start): Remove prototype.
290         * sh/sh.h (EXPAND_BUILTIN_VA_START): Remove.
291         * mips/mips-protos.h (mips_va_start): Remove prototype.
292         * mips/mips.h (EXPAND_BUILTIN_VA_START): Remove.
293         * mips/mips.c (mips_va_start): Made static.
294         (TARGET_EXPAND_BUILTIN_VA_START): Define.
295
296 2007-12-06  Uros Bizjak  <ubizjak@gmail.com>
297
298         * tree-ssa-loop.c (gate_tree_parallelize_loops): Return true when
299         "flag_tree_parallelize_loops > 1".
300         
301 2007-12-06  Zdenek Dvorak  <ook@ucw.cz>
302             Dorit Nuzman  <dorit@il.ibm.com>
303             Jakub Jelinek  <jakub@redhat.com>
304
305         PR tree-optimization/34005
306         * tree-gimple.c (is_gimple_formal_tmp_rhs): Add a case for COND_EXPR.
307         * gimplify.c (gimplify_ctx): Add a new member allow_rhs_cond_expr.
308         (gimplify_pure_cond_expr): New function.
309         (generic_expr_could_trap_p): New function.
310         (gimplify_cond_expr): Call gimplify_pure_cond_expr.
311         (force_gimple_operand): Initialize new field allow_rhs_cond_expr.
312
313 2007-12-06  Andreas Krebbel  <krebbel1@de.ibm.com>
314
315         * config/s390/s390.c (s390_emit_stack_tie): New function.
316         (s390_emit_prologue): Emit a stack tie when writing to the
317         f8-f15 stack slots.
318         * config/s390/s390.md ("stack_tie"): New insn definition.
319
320 2007-12-06  Ben Elliston  <bje@au.ibm.com>
321
322         * SERVICE: Remove.
323         * doc/sourcebuild.texi (Miscellaneous Docs): Remove SERVICE item.
324
325 2007-12-05  Jakub Jelinek  <jakub@redhat.com>
326
327         PR middle-end/34337
328         * fold-const.c (fold_binary) <case BIT_IOR_EXPR>: Don't minimize
329         number of bits set in C1 if a mode mask for some mode can be used
330         instead.
331
332 2007-12-05  Bernhard Fischer  <aldot@gcc.gnu.org>
333
334         * varasm.c (merge_weak, weak_finish, assemble_alias): Commentary typo
335         fixes.
336
337 2007-12-05  Richard Guenther  <rguenther@suse.de>
338
339         PR tree-optimization/34138
340         * tree-ssa-forwprop.c (tree_ssa_forward_propagate_single_use_vars):
341         Do not forward propagate addresses if that changes volatileness of
342         the pointed-to type.
343
344 2007-12-05  Uros Bizjak  <ubizjak@gmail.com>
345
346         PR target/34312
347         * config/i386/i386.c (ix86_function_regparm): Also check for fixed
348         registers when checking that regparm registers are available.
349         Lower regparm value due to fixed registers usage in addition to
350         global regs usage.
351
352 2007-12-05  Bernhard Fischer  <aldot@gcc.gnu.org>
353
354         * sparseset.c: Include config.h and system.h before sparseset.h.
355         * sparseset.h: Remove inclusion of system.h.
356
357 2007-12-05  Jakub Jelinek  <jakub@redhat.com>
358             Richard Sandiford  <rsandifo@nildram.co.uk>
359
360         * optabs.c (init_insn_codes): New function.
361         (new_optab): Delete.
362         (init_optab, init_optabv): Don't call new_optab.
363         (init_convert_optab): Don't clear the insn codes.
364         (init_optabs): Call init_insn_codes.
365
366 2007-12-04  Jakub Jelinek  <jakub@redhat.com>
367
368         * omp-low.c (optimize_omp_library_calls): New function.
369         (expand_omp_parallel): Call it if optimizing.
370
371         PR middle-end/34134
372         * stmt.c (expand_stack_restore): Call expand_normal on var to get
373         rtx for it instead of assuming it will be a VAR_DECL.
374
375 2007-12-04  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
376
377         * c-parser (c_parser_statement_after_labels): Move error from here...
378         (c_parser_label): ... to here. Check that the declaration is not
379         actually just another label.
380
381 2007-12-04  Richard Guenther  <rguenther@suse.de>
382
383         PR middle-end/34334
384         PR middle-end/34222
385         * tree-ssa-operands.c (get_addr_dereference_operands): If we
386         fall back to using the SMTs aliases, make sure to add virtual
387         operands for the SMT itself.
388         (create_ssa_artificial_load_stmt): Fix typo.  Make sure to also
389         clear the loaded and stored symbols bitmaps.
390
391 2007-12-04  Ben Elliston  <bje@au.ibm.com>
392
393         * config/spu/spu.h (ASM_FORMAT_PRIVATE_NAME): Remove; use default.
394
395 2007-12-04  Ben Elliston  <bje@au.ibm.com>
396
397         * doc/tm.texi (Exception Handling): Mention unwind-dw2-xtensa.c.
398
399 2007-12-03  Steven Bosscher  <stevenb.gcc@gmail.com>
400
401         PR middle-end/33713
402         * doc/invoke.texi: Remove -fforce-addr documentation.
403         * expr.c (emit_move_insn): Remove use of flag_force_addr.
404         (expand_expr_real_1): Same.
405         (do_tablejump): Same.
406         Call memory_address instead of memory_address_noforce.
407         * expr.h (memory_address_noforce): Remove prototype.
408         * explow.c (memory_address): Remove support for flag_force_addr.
409         (validize_mem): Same.
410         (memory_address_noforce): Remove.
411         * common.opt: Add dummy documentation for -fforce-addr.
412         * combine.c (can_combine_p): Remove -fforce-addr comment.
413         * config/cris/cris.h (OPTIMIZATION_OPTIONS): Remove set of
414         flag_force_addr.
415         * config/m68k/m68k.h (PIC_CASE_VECTOR_ADDRESS): Remove comment
416         relating to memory_address_noforce.
417         * testsuite/gcc.c-torture/compile/20050802-1.c: Remove.
418         * testsuite/gcc.c-torture/compile/20011113-1.c: Remove.
419         
420 2007-12-03  Jakub Jelinek  <jakub@redhat.com>
421
422         * omp-low.c (lookup_decl_in_outer_ctx): Allow calling this
423         with !ctx->is_nested.
424         (maybe_lookup_decl_in_outer_ctx): Look up in outer contexts
425         even if !ctx->is_nested.
426         (lower_copyprivate_clauses, lower_send_clauses,
427         lower_send_shared_vars): Call lookup_decl_in_outer_ctx
428         unconditionally.
429
430         PR middle-end/29749
431         * fold-const.c (fold_binary) <case BIT_AND_EXPR>: Optimize
432         (X << C1) & C2 into (X << C1) & (C2 | ((1 << C1) - 1))
433         and (X >> C1) & C2 into (X >> C1) & (C2 | ~((type) -1 >> C1)).
434         (fold_binary) <case LSHIFT_EXPR, case RSHIFT_EXPR>: Optimize
435         (X & C2) << C1 into (X << C1) & (C2 << C1) and
436         (X & C2) >> C1 into (X >> C1) & (C2 >> C1) if that allows further
437         optimizations.
438
439         PR tree-optimization/33453
440         * tree-data-ref.c (split_constant_offset): Use POINTER_PLUS_EXPR
441         for pointer addition.
442         * tree-parloops.c (canonicalize_loop_ivs): Likewise.
443         (separate_decls_in_loop_name): Copy DECL_GIMPLE_REG_P from var to
444         var_copy.
445
446 2007-12-03  Bernd Schmidt  <bernd.schmidt@analog.com>
447
448         * config/bfin/bfin.h (TARGET_CPU_CPP_BUILTINS): Define __FDPIC__ as
449         necessary.
450
451 2007-12-03  Razya Ladelsky <razya@il.ibm.com>
452
453         * doc/invoke.texi (fipa-cp, fipa-matrix-reorg): Add documentation.
454
455 2007-12-03  Jakub Jelinek  <jakub@redhat.com>
456
457         PR middle-end/34317
458         * opts.c (common_handle_option): Handle OPT_ftree_store_copy_prop.
459         * common.opt (ftree-store-copy-prop): Use the same help text as for
460         other nop switches.
461
462 2007-12-02  Ayal Zaks  <zaks@il.ibm.com>
463             Revital Eres  <eres@il.ibm.com>
464
465         * modulo-sched.c (calculate_must_precede_follow,
466         try_scheduling_node_in_cycle): New functions.
467         (sms_schedule_by_order): Call the new functions.
468         (ps_insn_find_column): Use must_follow and must_precede only if
469         they are not NULL.
470         (ps_insn_advance_column): Likewise.
471
472 2007-12-02  Ayal Zaks  <zaks@il.ibm.com>
473             Revital Eres  <eres@il.ibm.com>
474
475         * modulo-sched.c (get_sched_window): Fix the direction of the
476         scheduling window and add dump info.
477
478 2007-12-02  Samuel Tardieu  <sam@rfc1149.net>
479
480         * config/sh/sh.md (cmpgeusi_t): Fix condition.
481
482 2007-11-30  Jan Hubicka  <jh@suse.cz>
483
484         * ggc-common.c (dump_ggc_loc_statistics): Reset ggc_force_collect flag.
485
486 2007-11-30  Seongbae Park <seongbae.park@gmail.com>
487
488         PR rtl-optimization/34171
489         * cfgrtl.c (update_bb_for_insn_chain): New function,
490         refactored from update_bb_for_insn.
491         (update_bb_for_insn): Call update_bb_for_insn.
492         (rtl_merge_blocks, try_redirect_by_replacing_jump):
493         Replace a loop with update_bb_for_insn_chain call.
494         (cfg_layout_merge_blocks): Add a call to
495         update_bb_for_insn_chain. Replace the for loop
496         with a call to update_bb_for_insn_chain.
497
498 2007-11-30  Ben Elliston  <bje@au.ibm.com>
499
500         * config/vax/vax.h (ASM_FORMAT_PRIVATE_NAME): Remove. Use default.
501
502 2007-11-29  Zdenek Dvorak  <ook@ucw.cz>
503
504         PR tree-optimization/34244
505         * tree-vrp.c (adjust_range_with_scev): Clear scev cache.
506         (record_numbers_of_iterations): New function.
507         (execute_vrp): Cache the numbers of iterations of loops.
508         * tree-scalar-evolution.c (scev_reset_except_niters):
509         New function.
510         (scev_reset): Use scev_reset_except_niters.
511         * tree-scalar-evolution.h (scev_reset_except_niters): Declare.
512
513 2007-11-29  Jan Hubicka  <jh@suse.cz>
514             Jakub Jelinek  <jakub@redhat.com>
515
516         PR tree-optimization/33434
517         * tree-inline.c (setup_one_parameter): If the value passed to
518         a parameter is never used, don't set it up.
519
520 2007-11-29  Jakub Jelinek  <jakub@redhat.com>
521
522         PR target/32130
523         * config/rs6000/eabi-cn.asm (__DTOR_END__): Make it weak.
524         * config/rs6000/sol-cn.asm (__DTOR_END__): Likewise.
525
526 2007-11-29  Andris Pavenis <andris.pavenis@iki.fi>
527
528         * Makefile.in: Use separate vpath lines for each path.
529
530 2007-11-29  Ben Elliston  <bje@au.ibm.com>
531
532         * SERVICE: Update URL.
533
534 2007-11-28  Jakub Jelinek  <jakub@redhat.com>
535
536         PR tree-optimization/34140
537         * tree-if-conv.c (if_convertible_phi_p): Fail if BB other than
538         loop->header has virtual phi nodes.
539
540 2007-11-28  Richard Sandiford  <rsandifo@nildram.co.uk>
541
542         PR target/32406
543         * builtins.c (expand_builtin_nonlocal_goto): Also emit a use
544         of GP register, if valid and fixed.
545
546         Revert:
547         2007-06-21  David Daney  <ddaney@avtrex.com>
548
549         PR target/32406
550         * config/mips/mips.md (define_constants): Rename UNSPEC_EH_RECEIVER
551         to UNSPEC_NONLOCAL_GOTO_RECEIVER globally.
552         (exception_receiver): Renamed to ...
553         (nonlocal_goto_receiver): ... this.
554
555 2007-11-27  H.J. Lu  <hongjiu.lu@intel.com>
556             Joey Ye <joey.ye@intel.com>
557
558         PR target/34001
559         * config/i386/i386.c (function_arg_32): Don't pass aggregate
560         arguments in ECX/EDX for fastcall.
561
562 2007-11-28  Rask Ingemann Lambertsen  <rask@sygehus.dk>
563
564         * config/i386/linux.h (CRT_GET_RFIB_DATA): Add Intel syntax inline
565         asm to macro.
566         * config/i386/sco5.h (CRT_GET_RFIB_DATA): Likewise.
567         * config/i386/sysv4.h (CRT_GET_RFIB_DATA): Likewise.
568
569 2007-11-28  Ben Elliston  <bje@au.ibm.com>
570
571         * config/rs6000/aix64.opt (maix64): Add Negative(maix32).
572         (maix32): Add Negative(maix64).
573
574 2007-11-27  Jakub Jelinek  <jakub@redhat.com>
575
576         PR tree-optimization/34016
577         * tree-ssa-loop.c (pass_linear_transform): Add
578         TODO_update_ssa_only_virtuals to todo_flags_finish.
579
580 2007-11-27  Eric B. Weddington  <eric.weddington@atmel.com>
581
582         * config/avr/avr.c (avr_mcu_types): Add atmega32hvb.
583         * config/avr/avr.h (LINK_SPEC): Likewise.
584         (CRT_BINUTILS_SPECS): Likewsie.
585         * config/avr/t-avr (MULTILIB_MATCHES): Likewise.
586         
587 2007-11-27  Jakub Jelinek  <jakub@redhat.com>
588
589         PR target/34225
590         * config/rs6000/rs6000.c (adjacent_mem_locations): Don't assume
591         MEM_SIZE is set on all MEMs.
592
593 2007-11-27  Andreas Krebbel  <krebbel1@de.ibm.com>
594
595         * config/s390/s390.opt (mhard-float): Add the option to be
596         overridden.  That was missing in my last patch.
597
598 2007-11-27  Richard Guenther  <rguenther@suse.de>
599
600         PR tree-optimization/34241
601         * tree-ssa-forwprop.c (forward_propagate_addr_expr): Make sure
602         to only delete real conversion chains.
603
604 2007-11-27  Andreas Krebbel  <krebbel1@de.ibm.com>
605
606         * config/s390/s390.opt (m31, m64, mesa, mzarch, msoft-float,
607         mhard-float, mlong-double-64, mlong-double-128): Add the
608         option to be overridden.
609
610 2007-11-27  Richard Guenther  <rguenther@suse.de>
611
612         * builtins.c (fold_builtin_1): Verify the argument types
613         of BUILT_IN_ISNORMAL.
614         (fold_builtin_n): Verify the number of arguments to variadic
615         built-in functions.
616
617 2007-11-27  Bernd Schmidt  <bernd.schmidt@analog.com>
618
619         * config/bfin/elf.h (SUBTARGET_DRIVER_SELF_SPECS): New macro.
620         * doc/invoke.texi (Blackfin Options): Document the effects.
621
622 2007-11-27  Ben Elliston  <bje@au.ibm.com>
623
624         * config/rs6000/sysv4.opt (m32): Add Negative(m64).
625         (m64): Add Negative(m32).
626         * config/rs6000/darwin.opt (m32): Add Negative(m64).
627         (m64): Add Negative(m32).
628
629 2007-11-26  Eric Botcazou  <ebotcazou@adacore.com>
630
631         * tree-ssa-propagate.c (set_rhs) <GIMPLE_MODIFY_STMT>: Fix typo.
632
633 2007-11-26  Michael Meissner  <michael.meissner@amd.com>
634
635         PR target/34077
636         * config/i386/i386.c (ix86_expand_movmem): If the copy size is a
637         constant, avoid calling emit_cmp_and_jump_insns.  Use counter_mode
638         to get the mode for loading a pseudo register with a count rather
639         than duplicating code.
640
641 2007-11-25  Eric B. Weddington  <eric.weddington@atmel.com>
642
643         * config/avr/avr.c (avr_mcu_types): Add atmega1284p.
644         * config/avr/avr.h (LINK_SPEC): Likewise.
645         (CRT_BINUTILS_SPECS): Likewsie.
646         * config/avr/t-avr (MULTILIB_MATCHES): Likewise.
647
648 2007-11-26  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
649         
650         * c-common.c (conversion_warning): Use get_unwidened instead of
651         get_narrower.
652         
653 2007-11-26  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
654
655         PR c/23722
656         * c-parser.c (struct c_parser): New bit in_if_block.
657         (c_parser_compound_statement_nostart): Handle unexpected 'else'
658         keyword.
659         (c_parser_statement_after_labels): Set in_if_block to false while
660         parsing.
661         (c_parser_if_body): Don't call c_parser_statement_after_labels if
662         a semicolon is found, just consume it. Don't call
663         c_parser_statement_after_labels if an open brace is found, call
664         c_parser_compound_statement instead.
665         (c_parser_else_body): New.
666         (c_parser_if_statement): Set in_if_block to true when parsing the
667         body of the 'if' statement. Use c_parser_else_body.
668
669 2007-11-26  Andreas Krebbel  <krebbel1@de.ibm.com>
670
671         PR c++/34081
672         * c-decl.c (store_parm_decls): Pass 'false' for the new
673         allocate_struct_function parameter.
674         * cgraphunit.c (cgraph_build_static_cdtor): Likewise.
675         * tree-parloops.c (create_loop_fn): Likewise.
676         * function.c (push_function_context_to, push_struct_function,
677         init_function_start): Likewise.
678         (allocate_struct_function): Add boolean parameter.
679         * tree.h (allocate_struct_function): Add boolean parameter.
680         * function.h (struct function): Move returns_struct and
681         returns_pcc_struct to the end of the structure definiton.
682
683 2007-11-26  Uros Bizjak  <ubizjak@gmail.com>
684
685         PR target/34215
686         * config/i386/i386.md (truncdfsf2): Select SLOT_TEMP stack slot if
687         virtual registers are already instantiated.
688         (truncxf<mode>2): Ditto.
689         (floatsi<mode>2): Ditto.
690         (floatdisf2): Ditto.
691         (floatdidf2): Ditto.
692
693 2007-11-26  Rask Ingemann Lambertsen  <rask@sygehus.dk>
694
695         PR target/34174
696         * config/fr30/fr30.c (fr30_move_double): Sanitize mem->reg case. Copy
697         the address before it is clobbered.
698
699 2007-11-26  Nick Clifton  <nickc@redhat.com>
700
701         * config/mn10300/mn10300.md: (call_internal): Remove mode on
702         operand 0 in order to match UNPSEC'ed calls generated in PIC mode.
703         (call_value_internal): Remove mode on operands 0 and 1 in order to
704         match UNPSEC'ed calls generated in PIC mode.
705         (GOTaddr2picreg): Use copy_rtx to prevent sharing an rtx between
706         two insns.
707
708 2007-11-26  Richard Guenther  <rguenther@suse.de>
709
710         PR middle-end/34233
711         * builtins.c (expand_builtin_pow): Use expand_expr to expand
712         the result of build_call_expr.
713
714 2007-11-26  Steven Bosscher  <stevenb.gcc@gmail.com> 
715             Revital Eres  <eres@il.ibm.com> 
716
717         PR middle-end/34085
718         * bb-reorder.c (insert_section_boundary_note): Clear
719         BLOCK_FOR_INSN in NOTE_INSN_SWITCH_TEXT_SECTIONS.
720
721 2007-11-26  Richard Sandiford  <rsandifo@nildram.co.uk>
722
723         * config/mips/elfoabi.h (DRIVER_SELF_SPECS): Add missing comma.
724
725 2007-11-26  Alexandre Oliva  <aoliva@redhat.com>
726
727         * dwarf2asm.c (splay_tree_compare_strings): New function.
728         (dw2_force_const_mem): Use it.
729
730 2007-11-26  Alexandre Oliva  <aoliva@redhat.com>
731
732         * tree.c (type_hash_add): Don't violate strict aliasing rules.
733
734 2007-11-26  Alexandre Oliva  <aoliva@redhat.com>
735
736         PR c/27898
737         * c-typeck.c (tagged_types_tu_compatible_p): Enable exact
738         matches between anonymous union fields.
739
740 2007-11-26  Alexandre Oliva  <aoliva@redhat.com>, Jan Hubicka  <jh@suse.cz>
741
742         * tree-ssa-live.c (remove_unused_scope_block_p): Drop
743         declarations and blocks only after inlining.  Check that
744         non-empty blocks are not dropped.
745         * tree-inline.c (expand_call_inline): Check that functions are
746         not inlined too late.
747
748 2007-11-26  Ben Elliston  <bje@au.ibm.com>
749
750         * unwind-dw2-fde.c: Fix comment typo.
751         * unwind-generic.h: Likewise, fix comment typos.
752         
753 2007-11-25  Richard Sandiford  <rsandifo@nildram.co.uk>
754
755         * tree-sra.c (scalarize_use): Adjust the vpos argument to
756         sra_explode_bitfield_assignment in cases where the type is
757         wider than the bitfield.
758
759 2007-11-25  Richard Guenther  <rguenther@suse.de>
760
761         * tree.h (struct tree_block): Move locus member next to flags.
762         * c-decl.c (SCOPE_LIST_APPEND): Use BLOCK_CHAIN.
763         (SCOPE_LIST_CONCAT): Likewise.
764         (pop_scope): Likewise.
765         * function.c (instantiate_decls_1): Likewise.
766         (setjmp_vars_warning): Likewise.
767         * emit-rtl.c (set_used_decls): Likewise.
768         * tree-inline.c (add_lexical_block): Likewise.
769
770 2007-11-24  Hans-Peter Nilsson  <hp@axis.com>
771
772         * rtlanal.c (label_is_jump_target_p): Return true for a matching
773         REG_LABEL_TARGET.
774         * reorg.c (fill_slots_from_thread): Correct last change to use
775         NULL_RTX, not NULL.  Outside of REG_NOTES loop, increase and
776         decrease LABEL_NUSES for JUMP_LABEL (trial), not XEXP (note, 0).
777         * jump.c (mark_jump_label_1): Add comment for last change
778         regarding JUMP_LABEL setting.
779         * gcse.c (add_label_notes): Remove conditional that the label is
780         mentioned in insn before adding regnote.
781         * sched-rgn.c (is_cfg_nonregular): Don't return 1 for a
782         single_set insn only feeding a label to a jump through a
783         register that dies there.
784
785 2007-11-23  Dirk Mueller  <dmueller@suse.de>
786             Richard Guenther <rguenther@suse.de>
787
788         PR middle-end/34197
789         * tree-vrp.c (check_array_ref): Move check for valid location..
790         (check_array_bounds) here. Use EXPR_HAS_LOCATION().
791
792 2007-11-23  Hans-Peter Nilsson  <hp@axis.com>
793
794         * reload.c (find_reloads_address_1) <autoincdec cases>:
795         Call REG_OK_FOR_CONTEXT with the autoincdec code, not outer_code.
796
797 2007-11-23  Richard Guenther  <rguenther@suse.de>
798             Michael Matz  <matz@suse.de>
799
800         PR tree-optimization/34176
801         * alloc-pool.h (empty_alloc_pool): Declare.
802         * alloc-pool.c (empty_alloc_pool): New function.
803         * tree-ssa-sccvn.c (vn_reference_lookup): Also lookup from the
804         valid table if a lookup from the optimistic table failed.
805         (vn_unary_op_lookup): Likewise.
806         (vn_binary_op_lookup): Likewise.
807         (vn_phi_lookup): Likewise.
808         (process_scc): Clear optimistic tables before every iteration.
809
810 2007-11-23  Richard Guenther  <rguenther@suse.de>
811
812         * tree-ssa-copy.c (may_propagate_copy): Remove redundant checks.
813         (merge_alias_info): Do verification only if checking is
814         enabled.  Merge flow-sensitive alias information in simple cases.
815         * tree-ssa-operands.c (get_addr_dereference_operands): Also
816         complain about missing NMTs.
817
818 2007-11-23  Jakub Jelinek  <jakub@redhat.com>
819
820         PR c++/34198
821         * c-common.c (conversion_warning): For INTEGER_TYPE to
822         INTEGER_TYPE conversions call get_narrower on expr to avoid
823         spurious warnings from binop shortening or when the implicit
824         conversion can't change the value.
825
826 2007-11-22  Joseph Myers  <joseph@codesourcery.com>
827
828         PR c/14050
829         * c-decl.c (set_array_declarator_inner): Don't give error for
830         static or type qualifiers in abstract declarator.  Remove
831         abstract_p parameter.
832         * c-tree.h (set_array_declarator_inner): Update prototype.
833         * c-parser.c (c_parser_direct_declarator_inner): Update call to
834         set_array_declarator_inner.
835         * doc/standards.texi: Update for C99 TC3.
836
837 2007-11-22  Hans-Peter Nilsson  <hp@bitrange.com>
838
839         * config/mmix/mmix.c (mmix_encode_section_info): Remove duplicate
840         line in my edit of the last change.
841
842 2007-11-22  Jakub Jelinek  <jakub@redhat.com>
843
844         PR target/33947
845         * config/arm/arm.c (arm_init_tls_builtins): Set TREE_NOTHROW
846         and TREE_READONLY on the fn decl rather than passing a chain
847         of attributes.
848
849 2007-11-22  Kaz Kojima  <kkojima@gcc.gnu.org>
850
851         * config/sh/sh.md (divsi_inv_m3): Handle zero dividend specially.
852
853 2007-11-22  Uros Bizjak  <ubizjak@gmail.com>
854
855         * config/i386/i386.h (TARGET_CPU_CPP_BUILTINS): Change checking
856         of ix86_arch and ix86_tune into a switch statement.
857         (enum processor_type): Default PROCESSOR_I386 to 0.
858         * config/i386/i386.c (ix86_decompose_address): Use TARGET_K6 instead
859         of "ix86_tune == PROCESSOR_K6".
860         (ia32_multipass_dfa_lookahead): Change checking of ix86_tune into
861         a switch statement.
862
863 2007-11-22  Tom Tromey  <tromey@redhat.com>
864
865         * config/mmix/mmix.c (mmix_encode_section_info): Use alloca to
866         avoid writing into string allocated by ggc_alloc_string.
867
868 2007-11-21  Kaz Kojima  <kkojima@gcc.gnu.org>
869
870         PR target/34155
871         * config/sh/sh.md (binary_sf_op): Remove.
872         (binary_sf_op0, binary_sf_op1): New define_insn_and_split.
873         * config/sh/sh.c (sh_expand_binop_v2sf): Use gen_binary_sf_op0
874         and gen_binary_sf_op1.
875
876 2007-11-21  Hans-Peter Nilsson  <hp@axis.com>
877
878         * regclass.c (init_reg_autoinc): Fix typo preventing test of
879         secondary output reload when setting forbidden_inc_dec_class.
880
881 2007-11-21  Richard Guenther  <rguenther@suse.de>
882
883         PR tree-optimization/34148
884         * tree-ssa-structalias.c (create_variable_info_for): Do not use
885         field-sensitive PTA for single-element structures.
886         * tree-ssa-alias.c (create_overlap_variables_for): Do not create
887         SFTs for single-element structures.
888
889 2007-11-20  Richard Guenther  <rguenther@suse.de>
890
891         PR middle-end/34154
892         * gimplify.c (gimplify_switch_expr): Use tree_int_cst_lt instead
893         of the signed INT_CST_LT.
894         * stmt.c (expand_case): Likewise.
895         (estimate_case_costs): Likewise.
896
897 2007-11-20  Rask Ingemann Lambertsen  <rask@sygehus.dk>
898
899         * read-rtl.c (fatal_expected_char): Print EOF as text rather that
900         its binary representation.
901
902 2007-11-20  Richard Guenther  <rguenther@suse.de>
903
904         * tree-ssa-operands.c (add_virtual_operand): Consistently prune
905         accesses.
906
907 2007-11-20  Thiemo Seufer  <ths@mips.com>
908
909         * config/mips/mips.c (mips_file_start): Add support for
910         flagging 32-bit code with -mfp64 floating-point.
911
912 2007-11-20  Jakub Jelinek  <jakub@redhat.com>
913
914         PR c/34146
915         * c-gimplify.c (optimize_compound_literals_in_ctor): New function.
916         (c_gimplify_expr): Use it.
917
918 2007-11-20  Ben Elliston  <bje@au.ibm.com>
919
920         * config/spu/spu_mfcio.h: Fix typo.
921
922 2007-11-20  Ben Elliston  <bje@au.ibm.com>
923
924         * unwind.inc: Comment that unwind-sjlj.c includes this file.
925
926 2007-11-20  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
927             Ben Elliston  <bje@au.ibm.com>
928
929         * config/spu/mfc_tag_release.c: New file.
930         * config/spu/mfc_multi_tag_release.c: Likewise.
931         * config/spu/mfc_multi_tag_reserve.c: Likewise.
932         * config/spu/mfc_tag_release.c: Likewise.
933         * config/spu/mfc_tag_reserve.c: Likewise.
934         * config/spu/mfc_tag_table.c: Likewise.
935         * config/spu/t-spu-elf (LIB2FUNCS_STATIC_EXTRA): Compile them.
936         (TARGET_LIBGCC2_CFLAGS): Define __IN_LIBGCC2.
937         * config/spu/spu_mfcio.h: Avoid <stdint.h>.
938         (uint64_t): Typedef if __IN_LIBGCC2 is defined.
939         (MFC_TAG_INVALID, MFC_TAG_VALID): New macros.
940         (mfc_tag_reserve, mfc_tag_release, mfc_multi_tag_reserve,
941         mfc_multi_tag_release): Likewise.
942         (__mfc_tag_reserve, __mfc_tag_release, __mfc_multi_tag_reserve,
943         __mfc_multi_tag_release): Declare.
944
945 2007-11-19  Jason Merrill  <jason@redhat.com>
946
947         PR debug/28834, debug/29436, c/32326
948         * tree.c (build_type_attribute_qual_variant): Refuse to make
949         a distinct copy of a struct/enum type.  Use build_distinct_type_copy.
950         * doc/extend.texi (Type Attributes): Don't encourage people to add
951         attributes to struct/enum types in a typedef.  Fix
952         transparent_union example.
953
954         * tree-inline.c (remap_type_1): Remove code that's redundant with
955         remap_type.
956         (build_duplicate_type): Set id.copy_decl.
957         * c-common.c (handle_transparent_union_attribute): Simplify logic.
958
959 2007-11-19  Peter Bergner  <bergner@vnet.ibm.com>
960
961         * config/rs6000/rs6000.c (invalid_e500_subreg,
962         rs6000_legitimate_offset_address_p, legitimate_lo_sum_address_p,
963         rs6000_legitimize_address, rs6000_legitimize_reload_address,
964         rs6000_legitimate_address, function_arg_advance,
965         spe_build_register_parallel, rs6000_spe_function_arg,
966         rs6000_split_multireg_move, spe_func_has_64bit_regs_p,
967         emit_frame_save, gen_frame_mem_offset, rs6000_function_value,
968         rs6000_libcall_value, rs6000_dwarf_register_span): Handle DDmode and
969         TDmode similarly to DFmode and TFmode.
970         * config/rs6000/rs6000.h (LOCAL_ALIGNMENT, MEMBER_TYPE_FORCES_BLK,
971         DATA_ALIGNMENT, CLASS_MAX_NREGS, CANNOT_CHANGE_MODE_CLASS): Likewise.
972
973 2007-11-19  Eric Botcazou  <ebotcazou@adacore.com>
974
975         * stor-layout.c (lang_adjust_rli): Delete.
976         (set_lang_adjust_rli): Likewise.
977         (layout_type): Do not call lang_adjust_rli hook.
978         * tree.h (set_lang_adjust_rli): Delete.
979
980 2007-11-19  Bernd Schmidt  <bernd.schmidt@analog.com>
981         
982         * config/bfin/bfin.c (must_save_p): New function, mostly broken out of
983         n_dregs_to_save and n_pregs_to_save.
984         (n_pregs_to_save, n_dregs_to_save): Use it.  New argument CONSECUTIVE;
985         all callers changed.
986         (expand_prologue_reg_save, expand_epilogue_reg_restore): Enhance to be
987         able to save single D/P registers that aren't saved by the push/pop
988         multiple insns.
989
990 2007-11-19  Richard Guenther  <rguenther@suse.de>
991
992         PR tree-optimization/34099
993         * tree-ssa-ccp.c (likely_value): Exclude all but PLUS_EXPR,
994         MINUS_EXPR and POINTER_PLUS_EXPR from handling as UNDEFINED
995         if only one operand is undefined.
996
997 2007-11-19  Eric Botcazou  <ebotcazou@libertysurf.fr>
998
999         PR tree-optimization/34036
1000         * opts.c (set_fast_math_flags): Do not set flags in common
1001         with set_unsafe_math_optimizations_flags, invoke it directly.
1002         (set_unsafe_math_optimizations_flags): Unset flag_trapping_math
1003         and flag_signed_zeros.
1004         * toplev.c (process_options): Force flag_associative_math to 0 and
1005         warn, if it is set and either flag_trapping_math or flag_signed_zeros
1006         is set too.
1007         * doc/invoke.texi (Optimize Options): Document the new behavior
1008         of -funsafe-math-optimizations, that -fassociative-math requires
1009         both -fno-signed-zeros and -fno-trapping-math and make it clear
1010         that -fno-trapping-math requires -fno-signaling-nans.  Refactor
1011         documentation of -ffast-math.
1012
1013 2007-11-18  Jakub Jelinek  <jakub@redhat.com>
1014
1015         PR rtl-optimization/34132
1016         * gcse.c (try_replace_reg): Avoid rtx sharing between REG_EQUAL note
1017         and insn.
1018
1019         PR middle-end/33335
1020         * optabs.h (optab_table): Change type to struct optab from optab.
1021         (convert_optab_table): Similarly.
1022         Adjust all _optab macros to expand to addresses of optab_table
1023         resp. convert_optab_table elements rather than the values of the
1024         elements.
1025         * optabs.c (optab_table): Change typype to struct optab from optab.
1026         If compiled by recent GCC, initialize all the insn_code fields in
1027         the array using designated range initializers.
1028         (convert_optab_table): Similarly.
1029         (convert_optab_libfunc, optab_libfunc, set_optab_libfunc,
1030         set_conv_libfunc): Into libfunc_entry's optab field store index within
1031         optab_table resp. convert_optab_table array instead of difference
1032         between two separately malloced addresses.
1033         (new_optab): Add op argument, don't return anything.  Initialize
1034         just the insn_code field in handlers array and only when needed.
1035         (init_optab, init_optabv): Add op argument, don't return anything.
1036         Adjust new_optab caller.
1037         (new_convert_optab): Removed.
1038         (init_convert_optab): Add op argument, don't return anything, don't
1039         call new_convert_optab.  If needed, initialize insn_code field in
1040         handlers array.
1041         (init_optabs): Adjust init_optab, init_optabv and init_convert_optab
1042         callers.
1043         (debug_optab_libfuncs): Adjust uses of optab_table and
1044         convert_optab_table arrays.
1045
1046 2007-11-18  Richard Guenther  <rguenther@suse.de>
1047
1048         PR tree-optimization/34127
1049         * tree-ssa-forwprop.c (tree_ssa_forward_propagate_single_use_vars):
1050         Make code match up the comments, require compatibility of the
1051         pointed-to types.
1052
1053 2007-11-17  Richard Guenther  <rguenther@suse.de>
1054
1055         PR middle-end/34130
1056         * fold-const.c (extract_muldiv_1): Do not move negative
1057         constants inside ABS_EXPR.
1058
1059 2007-11-16  Ian Lance Taylor  <iant@google.com>
1060
1061         * collect2.c (dump_file): If a demangled symbol is followed by a
1062         space, make sure we output at least one space.
1063
1064 2007-11-16  Richard Guenther  <rguenther@suse.de>
1065
1066         PR middle-end/34030
1067         * fold-const.c (fold_binary): Use correct types for folding
1068         1 << X & Y to Y >> X & 1.
1069
1070 2007-11-16  Richard Guenther  <rguenther@suse.de>
1071
1072         PR tree-optimization/33870
1073         * tree.h (struct tree_memory_tag): Add base_for_components flag.
1074         (struct tree_struct_field_tag): Remove nesting_level field.
1075         (SFT_NESTING_LEVEL): Remove.
1076         (SFT_BASE_FOR_COMPONENTS_P): Add.
1077         * tree-flow.h (struct fieldoff): Remove nesting_level field.  Add
1078         base_for_components flag.
1079         (push_fields_onto_fieldstack): Remove nesting_level parameter.
1080         * tree-ssa-alias.c (create_sft): Likewise.  Add base_for_components
1081         parameter.
1082         (create_overlap_variables_for): Deal with it.
1083         * tree-dfa.c (dump_subvars_for): Likewise.
1084         (dump_variable): Likewise.
1085         * tree-ssa-structalias.c (push_fields_onto_fieldstack): Likewise.
1086         Set base_for_components for first elements of sub-structures.
1087         (create_variable_info_for): Handle base_for_components.
1088         (set_uids_in_ptset): Always set SFT_UNPARTITIONABLE_P for
1089         pointed-to SFTs if SFT_BASE_FOR_COMPONENTS_P is set.
1090         * tree-ssa-operands.c (ref_nesting_level): Remove.
1091         (add_vars_for_offset): Remove full_ref parameter, always add
1092         the offset of the pointed-to SFT.
1093         (add_virtual_operand): Adjust for changed signature of
1094         add_vars_for_offset.
1095
1096 2007-11-16  Sa Liu  <saliu@de.ibm.com>
1097
1098         * config/spu/spu.md (floatunssidf2, floatunsdidf2): Inlined 
1099         floatunssidf2 and floatunsdidf2.
1100
1101 2007-11-16  Richard Guenther  <rguenther@suse.de>
1102
1103         PR tree-optimization/34113
1104         * tree-ssa-forwprop.c (tree_ssa_forward_propagate_single_use_vars):
1105         Use correct conversion direction for checking type compatibility.
1106
1107 2007-11-16  Richard Guenther  <rguenther@suse.de>
1108
1109         PR tree-optimization/34099
1110         * tree-ssa-ccp.c (likely_value): Use a whitelist for operators
1111         that produce UNDEFINED result if at least one of its operands
1112         is UNDEFINED.  By default the result is only UNDEFINED if all
1113         operands are UNDEFINED.
1114
1115 2007-11-16  Jakub Jelinek  <jakub@redhat.com>
1116
1117         PR driver/30460
1118         * gcc.c (init_spec): Don't initialize asm_debug here...
1119         (main): ... but here.
1120
1121 2007-11-07  Tom Tromey  <tromey@redhat.com>
1122
1123         * tree-ssa-structalias.c (ipa_pta_execute): Rename 'cfun' to 'func'. 
1124         * tree-parloops.c (create_loop_fn): Use set_cfun.
1125         * gengtype.c (open_base_files): Emit #undef cfun.
1126         * ipa-struct-reorg.c (do_reorg_1): Use set_cfun.
1127         * function.h (cfun): New define.
1128         * function.c: Undefine cfun.
1129
1130 2007-11-07  Eric B. Weddington  <eweddington@cso.atmel.com>
1131
1132         * config/avr/avr.c (avr_mcu_types): Add attiny88.
1133         * config/avr/avr.h (LINK_SPEC): Likewise.
1134         (CRT_BINUTILS_SPECS): Likewsie.
1135         * config/avr/t-avr (MULTILIB_MATCHES): Likewise.
1136
1137 2007-11-15  Jakub Jelinek  <jakub@redhat.com>
1138
1139         PR middle-end/23848
1140         * tree-ssa-ccp.c (optimize_stack_restore): New function.
1141         (execute_fold_all_builtins): Call optimize_stack_restore for
1142         BUILT_IN_STACK_RESTORE.
1143
1144 2007-11-15  Paolo Bonzini  <bonzini@gnu.org>
1145
1146         * fwprop.c (try_fwprop_subst): Skip profitability check for forward
1147         propagation into an address; that's done in should_replace_address.
1148                 
1149 2007-11-15  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
1150
1151         * config/spu/spu-protos.h (legitimate_const): Remove prototype.
1152         * config/spu/spu.c (legitimate_const): Remove.
1153         (classify_immediate): Inline call to legitimate_const.
1154         (spu_legitimate_address): Likewise.  Allow SYMBOL_REF + CONST_INT
1155         for any constant, not just -512 .. 511.
1156
1157 2007-11-15  Sa Liu  <saliu@de.ibm.com>
1158
1159         * config/spu/spu.c (spu_emit_branch_or_set): Remove PROCESSOR_CELL
1160         condition from HONOR_NANS test.
1161         * config/spu/spu.md (ceq_df): Always generate comparison code
1162         inline, including checks for NaNs and infinities.
1163         (cgt_df): Likewise.
1164         (cgt_v2df): Likewise.
1165         (cmpdf): Make this expander unconditional.
1166
1167 2007-11-15  Richard Guenther  <rguenther@suse.de>
1168
1169         * tree-ssa-alias.c (create_overlap_variables_for): Make sure
1170         to only create SFTs if we also create variable infos for PTA.
1171         * tree-ssa-structalias.c (set_uids_in_ptset): Add all overlapping SFTs.
1172
1173 2007-11-15  Richard Guenther  <rguenther@suse.de>
1174
1175         * tree-ssa-structalias.c (set_uids_in_ptset): Use the pointed-to
1176         type for TBAA pruning.
1177         (find_what_p_points_to): Call set_uids_in_ptset with the original
1178         pointer, not the decl of the solution we collapsed to.
1179
1180 2007-11-14  David Daney  <ddaney@avtrex.com>
1181
1182         * config/mips/linux-unwind.h (mips_fallback_frame_state): Use CFA
1183         to find sigcontext.
1184
1185 2007-11-14  Eric Botcazou  <ebotcazou@libertysurf.fr>
1186
1187         PR target/33923
1188         * config/ia64/ia64.h (CANNOT_CHANGE_MODE_CLASS): Forbid mode changes
1189         for registers in BR_REGS class.
1190
1191 2007-11-14  Jakub Jelinek  <jakub@redhat.com>
1192
1193         PR middle-end/34088
1194         * tree-ssa.c (delete_tree_ssa): Don't call fini_ssa_operands if
1195         init_ssa_operands has not been called for cfun.
1196
1197 2007-11-14  Eric Botcazou  <ebotcazou@libertysurf.fr>
1198
1199         PR tree-optimization/34046
1200         * cfg.c (update_bb_profile_for_threading): Avoid the division for the
1201         scaling if the old probability is greater than the new base.
1202
1203 2007-11-14  Sebastian Pop  <sebastian.pop@amd.com>
1204
1205         * tree-ssa-loop-ivcanon.c (try_unroll_loop_completely): Remove
1206         unused edges after loop duplication.
1207
1208 2007-11-14  Uros Bizjak  <ubizjak@gmail.com>
1209
1210         * config/i386/i386.h (TARGET_CPU_DEFAULT_*): Substitute with ...
1211         (enum target_cpu_default): ... this enum.
1212         (TARGET_CPU_DEFAULT_NAMES): Remove macro.  Move initializer to ...
1213         * config/i386/i386.c (override_options): ... here.
1214         * config/i386/i386-interix.h (TARGET_CPU_DEFAULT): Use
1215         TARGET_CPU_DEFAULT_i486.
1216
1217 2007-11-14  Rask Ingemann Lambertsen  <rask@sygehus.dk>
1218
1219         * global.c (rest_of_handle_global_alloc): Fix comment typos.
1220         * config/sh/sh.c (sh_rtx_costs): Likewise.
1221         * ChangeLog: Likewise.
1222
1223 2007-11-13  Sebastian Pop  <sebastian.pop@amd.com>
1224
1225         * tree-chrec.h (build_polynomial_chrec): RHS of a chrec
1226         should not be of pointer type.
1227
1228 2007-11-13  Michael Meissner  <michael.meissner@amd.com>
1229
1230         * config/i386/i386.c (ix86_sse5_valid_op_p): Put type on separate line.
1231
1232 2007-11-13  Sterling Augustine  <sterling@tensilica.com>
1233             Bob Wilson  <bob.wilson@acm.org>
1234         
1235         * config/xtensa/unwind-dw2-xtensa.c: New.
1236         * config/xtensa/unwind-dw2-xtensa.h: New.
1237         * config/xtensa/xtensa.h (MUST_USE_SJLJ_EXCEPTIONS): Remove.
1238         (DWARF2_UNWIND_INFO): Remove.
1239         (DWARF_FRAME_REGISTERS): Define.
1240         (EH_RETURN_DATA_REGNO): Define.
1241         * config/xtensa/xtensa.md (UNSPECV_EH_RETURN): Define.
1242         (eh_return): New.
1243         * config/xtensa/t-xtensa (LIB2ADDEH): Define.
1244         
1245 2007-11-13  Jakub Jelinek  <jakub@redhat.com>
1246
1247         * doc/invoke.texi: Fix description of -fsched-stalled-insns=0,
1248         -fsched-stalled-insns.
1249
1250         PR tree-optimization/34063
1251         * tree-chrec.c (chrec_evaluate): Put CHREC_LEFT based argument
1252         as first chrec_fold_plus operand rather than second.
1253
1254 2007-11-13  Diego Novillo  <dnovillo@google.com>
1255
1256         PR tree-optimization/33870
1257         * tree.h (strcut tree_memory_tag): Add field unpartitionable.
1258         Remove field in_nested_struct.
1259         (struct tree_struct_field_tag): Add field nesting_level.
1260         (sft_in_nested_struct): Remove.
1261         (sft_nesting_level): Define.
1262         (sft_unpartitionable_p): Define.
1263         * tree-ssa-alias.c (mem_sym_score): If mp->var is not
1264         partitionable, return long_max.
1265         (compute_memory_partitions): Do not partition sfts marked
1266         unpartitionable.
1267         (create_sft): Add argument nesting_level.  Set
1268         sft_nesting_level with it.  Update all users.
1269         (create_overlap_variables_for): Show nesting level.
1270         * tree-dfa.c (dump_subvars_for): Likewise.
1271         (dump_variable): Likewise. Show whether the sft is
1272         partitionable or not.
1273         * tree-flow.h (struct fieldoff): Remove field in_nested_struct.
1274         Add field nesting_level.
1275         * tree-ssa-structalias.c (struct variable_info): Remove
1276         field in_nested_struct.
1277         (push_fields_onto_fieldstack): Add argument nesting_level.
1278         Update all users.  Update documentation. Update pair->nesting_level
1279         with nesting_level.  Make recursive calls with nesting_level + 1.
1280         (set_uids_in_ptset): If an sft is added to the points-to set,
1281         mark it as unpartitionable.
1282         * tree-ssa-operands.c (ref_nesting_level): New.
1283         (add_vars_for_offset): Call it.  Add argument full_ref. Update
1284         callers.  If var is inside a nested structure and the nesting level
1285         of full_ref is lower than the nesting level of var,
1286         adjust offset by the offset of var.
1287
1288 2007-11-13  Victor Kaplansky  <victork@il.ibm.com>
1289
1290         PR tree-optimization/32582
1291         * Makefile.in (CRTSTUFF_CFLAGS): Add -fno-tree-vectorize
1292
1293 2007-11-12  Danny Smith  <dannysmith@users.sourceforge.net>
1294
1295         * doc/extend.texi (dllimport): Document that pointers to dllimport'd
1296         functions can be used as constant.
1297
1298 2007-11-12  Eric Botcazou  <ebotcazou@libertysurf.fr>
1299
1300         PR rtl-optimization/34035
1301         * cse.c (cse_cfg_altered): New global variable.
1302         (cse_jumps_altered): Make boolean.
1303         (recorded_label_ref): Likewise.
1304         (cse_insn): Adjust for above changes.
1305         (cse_extended_basic_block): Likewise.  Set cse_cfg_altered
1306         if dead edges have been purged.
1307         (cse_main): Change return value specification and adjust code.
1308         (rest_of_handle_cse): Adjust for above change.
1309         (rest_of_handle_cse2): Likewise.
1310         * gcse.c (rest_of_handle_gcse): Likewise.
1311
1312 2007-11-12  Dwarakanath Rajagopal  <dwarak.rajagopal@amd.com>
1313             Michael Meissner  <michael.meissner@amd.com>
1314
1315         * config/i386/i386.md (sse5_setcc<mode>): Use <ssemodefsuffix> to
1316         get the appropriate suffix for the coms* instruction.
1317         (sse5_pcmov_<mode>): Restrict operands of pcmov
1318         for scalar case to be only xmm registers and not memory.
1319
1320         * config/i386/sse.md (sse5_pcmov_<mode>): Correct the operand
1321         constraints to follow the mnemonics for the pcmov instruction   
1322
1323 2007-11-12  Richard Sandiford  <rsandifo@nildram.co.uk>
1324
1325         PR target/34042
1326         * config/mips/mips.c (mips_return_fpr_single): New function.
1327         (mips_function_value): Use it when returning single-field
1328         aggregates in FPRs.
1329         (mips_expand_call): Handle the PARALLELs created by
1330         mips_return_fpr_single.
1331
1332 2007-11-12  Richard Guenther  <rguenther@suse.de>
1333
1334         PR middle-end/34070
1335         * fold-const.c (fold_binary): If testing for non-negative
1336         operands with tree_expr_nonnegative_warnv_p make sure to
1337         use op0 which has all (sign) conversions retained.
1338
1339 2007-11-12  Richard Guenther  <rguenther@suse.de>
1340
1341         PR middle-end/34027
1342         * fold-const.c (fold_binary): Fold n - (n / m) * m to n % m.
1343         (fold_binary): Fold unsinged FLOOR_DIV_EXPR to TRUNC_DIV_EXPR.
1344
1345 2007-11-12  Ira Rosen  <irar@il.ibm.com>
1346
1347         PR tree-optimization/33953
1348         * tree-vect-transform.c (vectorizable_operation): In case of SLP,
1349         allocate vec_oprnds1 according to the number of created vector
1350         statements. In case of shift with scalar argument, store scalar operand
1351         for every vector statement to be created for the SLP node. Fix a
1352         comment.
1353
1354 2007-11-10  Steven Bosscher  <stevenb.gcc@gmail.com>
1355
1356         * gcse.c (CUID_INSN): Remove.
1357         (cuid_insn): Ditto.
1358         (alloc_gcse_mem): Don't allocate cuid_insn.
1359         (free_gcse_mem): Don't free cuid_insn.
1360
1361 2007-11-10  Jakub Jelinek  <jakub@redhat.com>
1362
1363         PR fortran/34020
1364         * gimplify.c (goa_lhs_expr_p): Inside INDIRECT_REF handle unshared
1365         nops.
1366
1367         PR middle-end/34018
1368         * tree-inline.h (copy_body_data): Add regimplify field.
1369         * tree-inline.c (copy_body_r): Set id->regimplify to true
1370         if an TREE_INVARIANT ADDR_EXPR is no longer invariant after
1371         substitutions.
1372         (copy_bb): Clear id->regimplify before walk_tree, if it is
1373         set afterwards, regimplify the whole statement.
1374
1375         PR tree-optimization/33680
1376         * tree-data-ref.c (split_constant_offset) <case ADDR_EXPR>: Punt
1377         if the added cast involves variable length types.
1378
1379 2007-11-09  Alexander Monakov  <amonakov@ispras.ru>
1380             Maxim Kuvyrkov  <maxim@codesourcery.com>
1381
1382         * sched-deps.c (sched_analyze_insn): Use MOVE_BARRIER
1383         instead of TRUE_BARRIER for jumps.  Add register dependencies
1384         even when reg_pending_barrier is set.
1385
1386 2007-11-09  Alexander Monakov  <amonakov@ispras.ru>
1387
1388         * haifa-sched.c (haifa_classify_insn): Rename to ...
1389         (haifa_classify_rtx): ...  this.  Improve handling of COND_EXECs,
1390         handle PARALLELs by recursing.  Use it ...  
1391         (haifa_classify_insn): ...  here.  Reimplement.
1392
1393 2007-11-09  Richard Guenther  <rguenther@suse.de>
1394
1395         * bitmap.h (bitmap_single_bit_set_p): Declare.
1396         * bitmap.c (bitmap_single_bit_set_p): New function.
1397         * tree-ssa-alias.c (add_may_alias_for_new_tag): Use it.
1398         (maybe_create_global_var): Use bitmap_empty_p.
1399
1400 2007-11-09  Paolo Bonzini  <bonzini@gnu.org>
1401             Jakub Jelinek  <jakub@redhat.com>
1402
1403         PR rtl-optimization/34012
1404         * fwprop.c (try_fwprop_subst): Do not replace if the new
1405         SET_SRC has a higher cost than the old one.
1406
1407 2007-11-09  Eric Botcazou  <ebotcazou@libertysurf.fr>
1408
1409         PR rtl-optimization/33732
1410         * reload.c (push_reload): Check that the REG_DEAD note was referring
1411         to a hardreg or to a pseudo that has been assigned exactly one hardreg
1412         before considering it in order to select the reload register.
1413         (combine_reloads): Likewise.
1414         (find_dummy_reload): Likewise.
1415
1416 2007-11-09  Richard Guenther  <rguenther@suse.de>
1417
1418         * tree-flow.h (struct ptr_info_def): Make escape_mask a
1419         ENUM_BITFIELD.
1420         (struct ptr_info_def): Likewise.
1421         (enum escape_type): Also use bit zero.
1422
1423 2007-11-09  Richard Guenther  <rguenther@suse.de>
1424
1425         PR tree-optimization/33604
1426         * tree-ssa-forwprop.c (tree_ssa_forward_propagate_single_use_vars):
1427         Disregard changes in CV qualifiers of pointed to types for
1428         forward propagating ADDR_EXPRs.
1429         * tree-ssa-ccp.c (fold_stmt_r): Preserve volatileness of the original
1430         expression.
1431
1432 2007-11-09  Richard Sandiford  <rsandifo@nildram.co.uk>
1433
1434         * dse.c (find_shift_sequence): Always choose an integer mode for
1435         new_mode.
1436         (replace_read): Require both the read and store mode to be
1437         integer ones.  Remove a then-redundant FLOAT_P check.
1438
1439 2007-11-08  Richard Guenther  <rguenther@suse.de>
1440
1441         * tree-dfa.c (remove_referenced_var): If removing a
1442         variable which has subvars, also remove those from
1443         the referenced vars.  Do not create a variable annotation.
1444
1445 2007-11-08  Bob Wilson  <bob.wilson@acm.org>
1446
1447         * config/xtensa/xtensa.c (xtensa_expand_prologue): Remove first
1448         argument for gen_entry calls.
1449         * config/xtensa/xtensa.md: Add new "entry" value to "type" attribute.
1450         (entry): Use the new attribute value.  Remove unused first operand.
1451
1452 2007-11-08  Tom Tromey  <tromey@redhat.com>
1453
1454         * c-parser.c (c_parser_translation_unit): Use location in error.
1455         (c_parser_external_declaration): Likewise.
1456         (c_parser_declaration_or_fndef): Likewise.
1457         (c_parser_enum_specifier): Likewise.
1458         (c_parser_struct_or_union_specifier): Likewise.
1459         (c_parser_struct_declaration): Likewise.
1460         (c_parser_typeof_specifier): Likewise.
1461         (c_parser_parms_list_declarator): Likewise.
1462         (c_parser_asm_string_literal): Likewise.
1463         (c_parser_braced_init): Likewise.
1464         (c_parser_initelt): Likewise.
1465         (c_parser_compound_statement_nostart): Likewise.
1466         (c_parser_statement_after_labels): Likewise.
1467         (c_parser_do_statement): Likewise.
1468         (c_parser_asm_statement): Likewise.
1469         (c_parser_conditional_expression): Likewise.
1470         (c_parser_unary_expression): Likewise.
1471         (c_parser_sizeof_expression): Likewise.
1472         (c_parser_postfix_expression): Likewise.
1473         (c_parser_postfix_expression_after_paren_type): Likewise.
1474         (c_parser_objc_class_instance_variables): Likewise.
1475         (c_parser_objc_method_definition): Likewise.
1476         (c_parser_objc_methodprotolist): Likewise.
1477         (c_parser_pragma): Likewise.
1478         (c_parser_omp_clause_num_threads): Likewise.
1479         (c_parser_omp_clause_schedule): Likewise.
1480         (c_parser_omp_all_clauses): Likewise.
1481         (c_parser_omp_sections_scope): Likewise.
1482         (c_parser_label): Use location of label, not colon.
1483
1484 2007-11-08  Danny Smith  <dannysmith@users.sourceforge.net>
1485
1486         PR target/33774
1487         * config/i386/cygming.h (BIGGEST_FIELD_ALIGNMENT): Define only if
1488         IN_TARGET_LIBS.
1489
1490 2007-11-07  Kenneth Zadeck <zadeck@naturalbridge.com>
1491
1492         PR middle-end/33826
1493         * ipa-pure-const.c (static_execute): Added code to keep recursive
1494         functions from being marked as pure or const.
1495         * ipa-utils.c (searchc): Fixed comment.
1496                 
1497 2007-11-08  Tom Tromey  <tromey@redhat.com>
1498
1499         * common.opt (fshow-column): Default to 0.
1500         * configure: Rebuilt.
1501         * configure.ac (--enable-mapped-location): Default to 'yes'.
1502
1503 2007-11-07  Kenneth Zadeck <zadeck@naturalbridge.com>
1504
1505         * common.opt: Add pointer to doc/options.texi.
1506         * doc/invoke.texi (-fdse, -fdce, -fauto-inc-dec, -fipa-pure-const,
1507         -fipa-reference): Add or correct doc.  Sorted options list for -Os
1508         -O, -O2.
1509
1510 2007-11-07  Bernhard Fischer  <aldot@gcc.gnu.org>
1511
1512         PR target/16350
1513         * config.gcc: For arm*b-* define TARGET_BIG_ENDIAN_DEFAULT.
1514         * config/arm/linux-elf.h (TARGET_ENDIAN_DEFAULT): Define based on
1515         TARGET_BIG_ENDIAN_DEFAULT.  Use for MULTILIB_DEFAULTS.
1516         (TARGET_DEFAULT): Set according to TARGET_ENDIAN_DEFAULT.
1517         (LINUX_TARGET_LINK_SPEC): Pass -mlittle-endian on to the assembler.
1518         * config/arm/linux-eabi.h (TARGET_LINKER_EMULATION): Set according
1519         to TARGET_BIG_ENDIAN_DEFAULT.
1520         (SUBTARGET_EXTRA_LINK_SPEC): Likewise.
1521         * config/arm/bpabi.h (TARGET_DEFAULT_MASK): Set according
1522         to TARGET_BIG_ENDIAN_DEFAULT.
1523
1524 2007-11-07  Diego Novillo  <dnovillo@google.com>
1525
1526         * tree.h (struct tree_struct_field_tag): Move field
1527         in_nested_struct ...
1528         (struct tree_memory_tag): ... here.
1529
1530 2007-11-07  Diego Novillo  <dnovillo@google.com>
1531
1532         PR 33870
1533         * tree.h (struct tree_struct_field_tag): Add field in_nested_struct.
1534         (SFT_IN_NESTED_STRUCT): Define.
1535         * tree-dfa.c (dump_subvars_for): Show offset of each sub-var.
1536         * tree-flow.h (struct fieldoff): Add field in_nested_struct.
1537         * tree-ssa-structalias.c (struct variable_info): Likewise.
1538         (push_fields_onto_fieldstack): If OFFSET is positive,
1539         set in_nested_struct.
1540         (create_variable_info_for): Copy setting of
1541         in_nested_struct from the field offset object.
1542         (set_uids_in_ptset): Set SFT_IN_NESTED_STRUCT from the
1543         variable info object.
1544         * tree-ssa-operands.c (add_vars_for_offset): If VAR
1545         belongs to a nested structure, adjust OFFSET by SFT_OFFSET(VAR).
1546
1547 2007-11-07  Eric Botcazou  <ebotcazou@libertysurf.fr>
1548
1549         PR rtl-optimization/33737
1550         * cfgcleanup.c (try_crossjump_to_edge): Add count and frequency of
1551         target block after computing the probabilities of outgoing edges.
1552         Cap the frequency to BB_FREQ_MAX.
1553         * tree-ssa-threadupdate.c (redirect_edges): Also adjust count and
1554         frequency of the basic block if it has been reused.
1555
1556 2007-11-07  Eric Botcazou  <ebotcazou@libertysurf.fr>
1557
1558         PR rtl-optimization/33822
1559         * rtl.h (REG_OFFSET): Fix comment.
1560         * var-tracking.c (INT_MEM_OFFSET): New macro.
1561         (var_mem_set): Use it.
1562         (var_mem_delete_and_set): Likewise.
1563         (var_mem_delete): Likewise.
1564         (same_variable_part_p): Likewise.
1565         (vt_get_decl_and_offset): Likewise.
1566         (offset_valid_for_tracked_p): New predicate.
1567         (count_uses): Do not track locations with invalid offsets.
1568         (add_uses): Likewise.
1569         (add_stores): Likewise.
1570
1571 2007-11-07  Tom Tromey  <tromey@redhat.com>
1572
1573         * Makefile.in (tree-ssa-structalias.o): Depend on $(FUNCTION_H)
1574         (BASIC_BLOCK_H): Add vec.h, $(FUNCTION_H).
1575
1576 2007-11-07  Dmitry Zhurikhin  <zhur@ispras.ru>
1577             Andrey Belevantsev  <abel@ispras.ru>
1578
1579         * modulo-sched.c (sms_order_nodes, permute_partial_schedule,
1580         generate_prolog_epilog, duplicate_insns_of_cycles): Fix prototypes.
1581         (calculate_order_params, sms_order_nodes): New parameter pmax_asap.
1582         Save calculated max_asap in it.         
1583         (sms_schedule): Calculate maxii using max_asap.
1584
1585 2007-11-07  Andreas Krebbel  <krebbel1@de.ibm.com>
1586
1587         * doc/invoke.texi: Replace rs6000 dfp switches -mdfp/-mno-dfp
1588         with -mhard-dfp/-mno-hard-dfp.
1589
1590 2007-11-07  Maxim Kuvyrkov  <maxim@codesourcery.com>
1591             Jakub Jelinek  <jakub@redhat.com>
1592
1593         PR middle-end/33670
1594         * haifa-sched.c (check_sched_flags): Remove.
1595         (sched_init): Don't call it.
1596
1597 2007-11-06  Diego Novillo  <dnovillo@google.com>
1598
1599         * tree-flow.h (struct fieldoff): Reformat comment. Document fields.
1600         * tree-ssa-operands.c: Tidy top-level comments.
1601         (add_vop): Likewise.
1602         (add_vars_for_offset): Tidy parameter formatting..
1603         (get_addr_dereference_operands): Likewise.
1604         (get_indirect_ref_operands): Likewise.
1605         (get_expr_operands) <OMP_ATOMIC_LOAD>: Reformat.
1606         <OMP_ATOMIC_STORE>: Likewise.
1607
1608 2007-11-06  Rask Ingemann Lambertsen  <rask@sygehus.dk>
1609
1610         PR target/32787
1611         * config/i386/driver-i386.c: Test for __GNUC__ instead of
1612         GCC_VERSION which is always defined.
1613
1614 2007-11-06  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
1615
1616         PR target/30961
1617         * reload1.c (find_reloads): Also check in_reg when handling a
1618         simple move with an input reload and a destination of a hard register.
1619
1620 2007-11-06  Maxim Kuvyrkov  <maxim@codesourcery.com>
1621
1622         * config/m68k/m68k.c (sched-int.h, insn-codes.h): New includes.
1623         (TARGET_SCHED_ADJUST_COST, TARGET_SCHED_VARIABLE_ISSUE,
1624         TARGET_SCHED_INIT_GLOBAL, TARGET_SCHED_FINISH_GLOBAL,
1625         TARGET_SCHED_INIT, TARGET_SCHED_DFA_PRE_ADVANCE_CYCLE,
1626         TARGET_SCHED_DFA_POST_ADVANCE_CYCLE): Redefine.
1627         (m68k_sched_attr_type2): New function.
1628         (sched_adjust_cost_state): New static variable.
1629         (m68k_sched_adjust_cost): New static function implementing
1630         scheduler hook.
1631         (sched_ib_size, sched_ib_filled, sched_ib_insn, sched_mem_unit_code):
1632         New static variables.
1633         (m68k_sched_variable_issue): New static function implementing
1634         scheduler hook.
1635         (sched_dump_class_def, sched_dump_class_func_t): New typedefs.
1636         (sched_dump_split_class): New static function.
1637         (sched_dump_dfa_guess_unit_code, sched_dump_dfa_state): New static
1638         variables.
1639         (sched_dump_dfa_class, m68k_sched_dump): New static function.
1640         (m68k_sched_md_init_global, m68k_sched_md_finish_global,
1641         m68k_sched_md_init, m68k_sched_dfa_pre_advance_cycle,
1642         m68k_sched_dfa_post_advance_cycle): New static functions implementing
1643         scheduler hooks.
1644
1645         * config/m68k/m68k.h (m68k_sched_attr_type2): Declare.
1646         (CPU_UNITS_QUERY): Define.
1647
1648         * config/m68k/cf.md: New file.
1649         * config/m68k/m68.md (cf.md): New include.
1650
1651 2007-11-06  Tom Tromey  <tromey@redhat.com>
1652
1653         PR c++/32256, PR c++/32368:
1654         * function.c (saved_in_system_header): New global.
1655         (push_cfun): Save in_system_header.
1656         (pop_cfun): Restore in_system_header.
1657         (push_struct_function): Save in_system_header.
1658
1659 2007-11-06  Douglas Gregor  <doug.gregor@gmail.com>
1660
1661         PR c++/33977
1662         PR c++/33886
1663         * c-common.c (c_build_qualified_type): Moved to c-typeck.c.
1664         (complete_array_type): Set canonical type appropriately.
1665         * c-typeck.c (c_build_qualified_type): Moved from c-common.c. The
1666         C and C++ front ends now have different versions of this function,
1667         because the C++ version needs to maintain canonical types here.
1668
1669 2007-11-04  Razya Ladelsky  <razya@il.ibm.com>
1670         
1671         * tree-parloops.c (reduction_info): Remove reduction_init field.
1672         (initialize_reductions): Remove creation of the reduction_init variable.
1673         (struct data_arg): Remove.
1674         (add_field_for_reduction, create_stores_for_reduction): New functions.
1675         (add_field_for_name): Remove reduction handling.
1676         (separate_decls_in_loop): Call add_field_for_reduction,
1677         create_stores_for_reduction.
1678
1679 2007-11-06  Jakub Jelinek  <jakub@redhat.com>
1680
1681         PR tree-optimization/33458
1682         * tree-inline.c (copy_phis_for_bb): If PHI arg substitution creates
1683         !is_gimple_val PHI argument, gimplify it and insert it on edge.
1684
1685         PR tree-optimization/33993
1686         * tree-vect-transform.c (vect_get_constant_vectors): Use build_vector
1687         rather than build_constructor_from_list if all list values are
1688         constants.
1689         (get_initial_def_for_induction): Use build_vector instead of
1690         build_constructor_from_list.
1691
1692 2007-11-05  Mark Mitchell  <mark@codesourcery.com>
1693
1694         PR target/33579
1695         * tree.h (DECL_INIT_PRIORITY): Do not require DECL_HAS_INIT_PRIORITY_P.
1696         (DECL_FINI_PRIORITY): Likewise.
1697         * tree.c (decl_init_priority_lookup): Remove assert.
1698         (decl_fini_priority_insert): Likewise.
1699         * cgraphunit.c (static_ctors): Make it a VEC.
1700         (static_dtors): Likewise.
1701         (record_cdtor_fn): Adjust accordingly.
1702         (build_cdtor): Generate multiple functions for each initialization
1703         priority.
1704         (compare_ctor): New function.
1705         (compare_dtor): Likewise.
1706         (cgraph_build_cdtor_fns): Sort the functions by priority before
1707         calling build_cdtor.
1708         (cgraph_build_static_cdtor): Put the priority in the function's name.
1709
1710 2007-11-05  H.J. Lu  <hongjiu.lu@intel.com>
1711
1712         PR driver/32632
1713         * common.opt: Add shared and pie.
1714
1715 2007-11-05  Bob Wilson  <bob.wilson@acm.org>
1716
1717         * config/xtensa/xtensa.c (xtensa_expand_nonlocal_goto): Do not
1718         replace references to virtual_stack_vars_rtx in goto_handler.
1719
1720 2007-11-05  Paul Brook  <paul@codesourcery.com>
1721
1722         * config.gcc (arm*-*-*): Set c_target_objs and cxx_target_objs.
1723         * config/arm/arm.c (arm_lang_output_object_attributes_hook): New.
1724         (arm_file_start): Don't set Tag_ABI_PCS_wchar_t.  Call
1725         arm_lang_output_object_attributes_hook.
1726         * config/arm/arm.h (arm_lang_output_object_attributes_hook): Declare.
1727         (REGISTER_TARGET_PRAGMAS): Call arm_lang_object_attributes_init.
1728         * config/arm/arm-protos.h (arm_lang_object_attributes_init): Add
1729         prototype.
1730         * config/arm/t-arm.c (arm.o): New rule.
1731         * config/arm/arm-c.c: New file.
1732
1733 2007-11-05  Nick Clifton  <nickc@redhat.com>
1734             Sebastian Pop  <sebastian.pop@amd.com>
1735
1736         PR tree-optimization/32540
1737         PR tree-optimization/33922
1738         * doc/invoke.texi: Document PARAM_MAX_PARTIAL_ANTIC_LENGTH.
1739         * tree-ssa-pre.c: Include params.h.
1740         (compute_partial_antic_aux): Use PARAM_MAX_PARTIAL_ANTIC_LENGTH
1741         to limit the maximum length of the PA set for a given block.
1742         * Makefile.in: Add a dependency upon params.h for tree-ssa-pre.c
1743         * params.def (PARAM_MAX_PARTIAL_ANTIC_LENGTH): New parameter.
1744
1745 2007-11-05  Nathan Sidwell  <nathan@codesourcery.com>
1746
1747         * libgcc2.c (__fixunstfDI, __fixunsxfDI, __fixunsdfDI,
1748         __fixunssfDI): Make return type unsigned.
1749         * libgcc2.h (__fixunstfDI, __fixunsxfDI, __fixunsdfDI,
1750         __fixunssfDI): Make return type unsigned.
1751
1752 2007-11-05  Jakub Jelinek  <jakub@redhat.com>
1753
1754         PR tree-optimization/33856
1755         * tree-data-ref.c (get_references_in_stmt): Don't add
1756         REFERENCE_CLASS_P trees to references vector if get_base_address
1757         returns NULL on them.
1758
1759 2007-11-05  Alexandre Oliva  <aoliva@redhat.com>
1760
1761         * cfg.c (dump_cfg_bb_info): Update bb_bitnames to match enum.
1762
1763 2007-11-04  Andrew Pinski  <pinskia@gmail.com>
1764
1765         PR middle-end/32931
1766         * fold-const.c (fold_binary <case EQ_EXPR>): Convert the inner type
1767         for TRUTH_NOT_EXPR to type.
1768
1769 2007-11-04  Gerald Pfeifer  <gerald@pfeifer.com>
1770
1771         * doc/contrib.texi (Contributors): Add Manuel Lopez-Ibanez.
1772
1773 2007-11-04  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
1774
1775         PR fortran/10220
1776         * dwarf2out.c (add_calling_convention_attribute): Change
1777         second argument. Set calling convention to DW_CC_program for
1778         Fortran main program.
1779         (gen_subprogram_die): Adjust to new prototype for
1780         add_calling_convention_attribute.
1781
1782 2007-11-03  Dorit Nuzman  <dorit@il.ibm.com>
1783
1784         PR tree-optimization/33987
1785         * tree-vect-transform.c (get_initial_def_for_reduction): Fix assert.
1786         Fix indentation.
1787         (vectorizable_reduction): Add type check.
1788
1789 2007-11-03  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
1790
1791         PR c/29062
1792         * c-parser.c (c_parser_statement_after_labels): Error if a
1793         declaration is parsed after a label.
1794         
1795 2007-11-03  Daniel Jacobowitz  <dan@codesourcery.com>
1796
1797         PR debug/33921
1798         * reorg.c (emit_delay_sequence): Do not clear the locator on
1799         the jump instruction.
1800
1801 2007-11-03  Jakub Jelinek  <jakub@redhat.com>
1802
1803         PR middle-end/33670
1804         * haifa-sched.c (ok_for_early_queue_removal): Don't walk out of the
1805         current sched region.
1806
1807 2007-11-02  Jakub Jelinek  <jakub@redhat.com>
1808
1809         * config/ia64/ia64.c (struct reg_write_state): Change into
1810         unsigned short bitfields rather than unsigned int, decrease
1811         first_pred to just 10 bits.
1812         (rws_insn): Change into a bitmap or if not ENABLE_CHECKING
1813         into two char array.
1814         (rws_insn_set, rws_insn_test): New functions.
1815         (in_safe_group_barrier): New variable.
1816         (rws_update): Remove first argument, always set rws_sum array.
1817         (rws_access_regno): Use rws_insn_set macro.  Only call rws_update
1818         or update rws_sum if !in_safe_group_barrier, adjust rws_update
1819         args.
1820         (rtx_needs_barrier): Use rws_insn_test macro.
1821         (safe_group_barrier_needed): Don't save/restore rws_sum array,
1822         instead set/clear in_safe_group_barrier flag.
1823
1824 2007-11-02  Bob Wilson  <bob.wilson@acm.org>
1825
1826         * config/xtensa/xtensa.c (xtensa_expand_prologue): Put a
1827         REG_FRAME_RELATED_EXPR note on the last insn that sets up the stack
1828         pointer or frame pointer.
1829         * config/xtensa/xtensa.h (DWARF_UNWIND_INFO): Delete.
1830         (MUST_USE_SJLJ_EXCEPTIONS): Define.
1831         (DWARF2_UNWIND_INFO): Define.
1832         (INCOMING_RETURN_ADDR_RTX): Define.
1833         (DWARF_FRAME_RETURN_COLUMN): Define.
1834
1835 2007-11-02  Tom Tromey  <tromey@redhat.com>
1836
1837         * varpool.c (dump_varpool): Use 'next', not 'next_needed' when
1838         traversing pool.
1839
1840 2007-11-02  Diego Novillo  <dnovillo@google.com>
1841
1842         * langhooks.h (struct lang_hooks_for_callgraph): Remove third
1843         argument from function pointer ANALYZE_EXPR.  Update all users.
1844         * cgraph.c (debug_cgraph_node): New.
1845         (debug_cgraph): New.
1846
1847 2007-11-02  Jakub Jelinek  <jakub@redhat.com>
1848
1849         PR rtl-optimization/33648
1850         * cfgrtl.c (cfg_layout_split_edge): Initialize BB_PARTITION of
1851         the newly created basic block.
1852
1853 2007-11-01  Richard Guenther  <rguenther@suse.de>
1854
1855         * ggc-page.c (extra_order_size_tab): Add bitmap_head size.
1856
1857 2007-11-01  Steven Bosscher  <stevenb.gcc@gmail.com>
1858
1859         PR rtl-optimization/33828
1860         * gcse.c (compute_code_hoist_vbeinout): Fix order of computation
1861         of VBEIN and VBEOUT.
1862
1863 2007-11-01  Eric Botcazou  <ebotcazou@libertysurf.fr>
1864
1865         * optabs.c (prepare_cmp_insn): Merge a couple of conditional blocks.
1866         * sched-rgn.c (compute_trg_info): Zero 'el' local variable.
1867         * tree-if-conv.c (process_phi_nodes): Zero 'cond' local variable.
1868
1869 2007-11-01  Nathan Sidwell  <nathan@codesourcery.com>
1870
1871         * gcc.c (getenv_spec_function): Escape the environment variable's
1872         value.
1873
1874 2007-11-01  Janis Johnson  <janis187@us.ibm.com>
1875
1876         * doc/invoke.texi (Optimize Options): Under -fcse-follow-jumps,
1877         show that CSE means common subexpression elimination.  Change wording
1878         for -fsee and define LCM.  Remove capitalization of optimizations
1879         for -ftree-reassoc, -ftree-pre, and -ftree-fre.
1880
1881 2007-11-01  Janis Johnson  <janis187@us.ibm.com>
1882
1883         PR testsuite/25352
1884         * doc/sourcebuild.texi (Test Directives): Document that xfail
1885         has no effect for dg-do except when dg-do-what is "run".
1886
1887 2007-11-01  Tom Tromey  <tromey@redhat.com>
1888
1889         * c-decl.c (grokdeclarator): Set decl source locations.
1890         * c-parser.c (c_parser_enum_specifier): Set location.
1891         (c_parser_struct_or_union_specifier): Likewise.
1892
1893 2007-11-01  Tom Tromey  <tromey@redhat.com>
1894
1895         * print-tree.c (print_node): Print column number.
1896
1897 2007-11-01  Jakub Jelinek  <jakub@redhat.com>
1898
1899         PR debug/33537
1900         * dwarf2out.c (gen_formal_parameter_die, gen_variable_die,
1901         gen_decl_die): Use TREE_TYPE (TREE_TYPE (decl)) as type
1902         rather than TREE_TYPE (decl) if DECL_BY_REFERENCE (decl).
1903
1904         PR rtl-optimization/33673
1905         * gcse.c (cprop_jump): If a conditional jump has been optimized
1906         into unconditional jump, make the remaining normal edge fallthru
1907         and delete the jump insn.
1908
1909 2007-11-01  Ben Elliston  <bje@au.ibm.com>
1910
1911         * emit-rtl.c (set_reg_attrs_from_mem): Clarify function comment.
1912         (set_mem_attrs_from_reg): Likewise.
1913
1914 2007-11-01  Michael Matz  <matz@suse.de>
1915
1916         PR tree-optimization/33961
1917         * tree-ssa-phiopt.c (struct name_to_bb.store): New member.
1918         (name_to_bb_hash, name_to_bb_eq): Consider and check it.
1919         (add_or_mark_expr): New argument 'store', using it to search
1920         the hash table.
1921         (nt_init_block): Adjust calls to add_or_mark_expr.
1922
1923 2007-10-31  Jakub Jelinek  <jakub@redhat.com>
1924
1925         PR target/31507
1926         * config/i386/i386.md (pushsf_rex64): Use X instead of < constraints
1927         for the first push_operand.
1928
1929 2007-10-31  Revital Eres  <eres@il.ibm.com>
1930
1931         * config/rs6000/paired.md (sminv2sf3, smaxv2sf3, reduc_smax_v2sf,
1932         reduc_smin_v2sf vec_interleave_highv2sf, vec_interleave_lowv2sf,
1933         vec_extract_evenv2sf, vec_extract_oddv2sf, reduc_splus_v2sf,
1934         movmisalignv2sf, vcondv2sf): New.
1935         (UNSPEC_INTERHI_V2SF, UNSPEC_INTERLO_V2SF, UNSPEC_EXTEVEN_V2SF,
1936         UNSPEC_EXTODD_V2SF): Define new constants.
1937         * config/rs6000/rs6000-protos.h (paired_expand_vector_move,
1938         paired_emit_vector_cond_expr): New.
1939         * config/rs6000/rs6000-c.c (__PAIRED__): Add new builtin_define.
1940         * config/rs6000/rs6000.c (paired_expand_vector_move,
1941         paired_emit_vector_cond_expr, paired_emit_vector_compare):
1942         New functions.
1943         * config/rs6000/750cl.h (ASM_CPU_SPEC): Pass down -m750cl option.
1944
1945 2007-10-31  Sebastian Pop  <sebastian.pop@amd.com>
1946
1947         PR tree-optimization/32377
1948         * tree-data-ref.c (compute_overlap_steps_for_affine_univar): Make it
1949         work also for unknown number of iterations.
1950         (analyze_subscript_affine_affine): Clean up.  Don't fail when the 
1951         number of iterations is not known.
1952
1953 2007-10-31  Richard Guenther  <rguenther@suse.de>
1954
1955         PR middle-end/33779
1956         * fold-const.c (extract_muldiv_1): Make sure to not introduce
1957         new undefined integer overflow.
1958         (fold_binary): Avoid useless conversion.
1959
1960 2007-10-31  Richard Sandiford  <rsandifo@nildram.co.uk>
1961
1962         PR target/33948
1963         * config/mips/mips.c (mips_fpr_return_fields): Fix SCALAR_TYPE_P check.
1964
1965 2007-10-31  Andreas Krebbel  <krebbel1@de.ibm.com>
1966
1967         * config/rs6000/rs6000.opt: Rename -mdfp option to -mhard-dfp.
1968
1969         * config/s390/s390.c: (override_options): Replace -mhard-dfp/-msoft-dfp
1970         with -mhard-dfp/-mno-hard-dfp.
1971         * config/s390/s390.opt: Likewise.
1972         * config/s390/s390.h: Add MASK_HARD_DFP to the TARGET_DEFAULT
1973         definition.
1974
1975 2007-10-30  Janis Johnson  <janis187@us.ibm.com>
1976
1977         * tree-ssa.c (execute_update_addresses_taken): Initialize update_vops.
1978
1979 2007-10-30  Janis Johnson  <janis187@us.ibm.com>
1980
1981         * doc/invoke.texi (Option Summary): Add -fdce and -fdse to list of
1982         optimization options.
1983         (Optimize Options): Add -fdce and -fdse to the list of optimizations
1984         enabled by -O.  Document -fdce and -fdse.
1985
1986 2007-10-30  Jakub Jelinek  <jakub@redhat.com>
1987
1988         PR c++/33709
1989         * fold-const.c (fold_binary): If one argument is COMPOUND_EXPR,
1990         convert second operand of COMPOUND_EXPR to the original type of
1991         that argument.
1992
1993 2007-10-30  Richard Guenther  <rguenther@suse.de>
1994
1995         * tree-ssa-operands.c (add_vars_for_offset): Fix exit test
1996         of loop adding SFTs as virtual operands.
1997
1998 2007-10-30  Richard Guenther  <rguenther@suse.de>
1999
2000         * Makefile.in (dse.o): Add $(OPTABS_H) and $(RECOG_H) dependencies.
2001
2002 2007-10-29  Dorit Nuzman  <dorit@il.ibm.com>
2003
2004         PR tree-optimization/32893
2005         * tree-vectorize.c (vect_can_force_dr_alignment_p): Check
2006         STACK_BOUNDARY instead of PREFERRED_STACK_BOUNDARY.
2007
2008 2007-10-29  Rask Ingemann Lambertsen  <rask@sygehus.dk>
2009
2010         * longlong.h (add_ssaaaa): Support Intel asm syntax in i386 and
2011         x86_64 versions.
2012         (sub_ddmmss): Likewise.
2013         (umul_ppmm): Likewise.
2014         (udiv_qrnnd): Likewise.
2015
2016 2007-10-29  Janis Johnson  <janis187@us.ibm.com>
2017
2018         PR testsuite/24841
2019         * doc/sourcebuild.texi (Test Directives): Document that dg-require
2020         directives must come before dg-additional-sources.
2021
2022 2007-10-29  Jakub Jelinek  <jakub@redhat.com>
2023
2024         PR tree-optimization/33723
2025         * c-gimplify.c (c_gimplify_expr): Optimize INIT_EXPR or
2026         MODIFY_EXPR with non-addressable COMPOUND_LITERAL_EXPR as source.
2027
2028 2007-10-29  Richard Sandiford  <rsandifo@nildram.co.uk>
2029
2030         PR tree-optimization/33614
2031         * gimplify.c (gimplify_init_constructor): Gimplify vector constructors
2032         if they can't be reduced to VECTOR_CSTs and aren't legitimate
2033         initializer constants.
2034
2035 2007-10-29  Richard Guenther  <rguenther@suse.de>
2036
2037         PR tree-optimization/33870
2038         * tree-ssa-operands.c (add_vars_for_offset): Remove mpt_vars parameter.
2039         (add_virtual_operand): Do not recurse into MPTs looking for pointed-to
2040         SFTs.
2041
2042 2007-10-29  Richard Guenther  <rguenther@suse.de>
2043
2044         * passes.c (init_optimization_passes): Exchange store_copy_prop
2045         with copy_prop.
2046         * tree-pass.h (pass_store_copy_prop): Remove.
2047         * tree-ssa-copy.c (do_store_copy_prop): Remove.
2048         (stmt_may_generate-copy): Do not handle store_copy_prop.
2049         (get_copy_of_val): Likewise.
2050         (set_copy_of_val): Likewise.
2051         (copy_prop_visit_assignment): Likewise.
2052         (copy_prop_visit_stmt): Likewise.
2053         (copy_prop_visit_phi_node): Likewise.
2054         (init_copy_prop): Likewise.
2055         (execute_copy_prop): Likewise.
2056         (do_copy_prop): Remove.
2057         (gate_store_copy_prop): Likewise.
2058         (store_copy_prop): Likewise.
2059         (pass_store_copy_prop): Likewise.
2060         (pass_copy_prop): Call execute_copy_prop.
2061         * opts.c (decode_options): Do not set flag_tree_store_copy_prop.
2062         * common.opt (ftree-store-copy-prop): Mark obsolete.
2063         * doc/invoke.texi (ftree-store-copy-prop): Remove documentation.
2064
2065 2007-10-29  Ian Lance Taylor  <iant@google.com>
2066
2067         * ifcvt.c (noce_can_store_speculate_p): New static function.
2068         (noce_process_if_block): Call it.
2069         (if_convert): Remove recompute_dominance parameter.  Change all
2070         callers.
2071
2072 2007-10-29  Richard Guenther  <rguenther@suse.de>
2073
2074         * tree-flow-inline.h (get_subvar_at): Use binary search.
2075         (get_first_overlapping_subvar): New function to binary search
2076         for the first overlapping subvar.
2077         * tree-ssa-operands.c (add_vars_for_offset): Strip down to
2078         just handle adding subvars for a pointed-to subvar.  Optimize
2079         and use get_first_overlapping_subvar.
2080         (add_vars_for_bitmap): Fold into single caller.
2081         (add_virtual_operand): Streamline, inherit add_vars_for_bitmap
2082         and non pointed-to bits of add_vars_for_offset.
2083
2084 2007-10-29  Revital Eres  <eres@il.ibm.com> 
2085
2086         * modulo-sched.c (sms_schedule): Add DF_UD_CHAIN problem.
2087
2088 2007-10-29  Razya Ladelsky  <razya@il.ibm.com>
2089             Zdenek Dvorak  <ook@ucw.cz>
2090
2091         OMP_ATOMIC Changes,
2092         reduction support for automatic parallelization.
2093
2094         * expr.c (expand_expr_real_1): Add cases for OMP_ATOMIC_LOAD,
2095         OMP_ATOMIC_STORE.
2096         * Makefile.in: Add dependencies to expr.o, tree-parloops.o, omp-low.o
2097         * tree-pretty-print.c (dump_generic_node): Add OMP_ATOMIC_LOAD
2098         and OMP_ATOMIC_STORE.
2099         * tree.h (OMP_DIRECTIVE_P): Add OMP_ATOMIC_LOAD, OMP_ATOMIC_STORE.
2100         * gimple-low.c (lower_stmt): Same.
2101         * gimplify.c (gimplify_expr): Same.
2102         (gimplify_omp_atomic_fetch_op, gimplify_omp_atomic_pipeline,
2103         gimplify_omp_atomic_mutex): Remove.
2104         (gimplify_omp_atomic): Change it to simply gimplify the
2105         statement instead of expanding it.
2106         * omp-low.c: Add includes to optabs.h, cfgloop.h.
2107         (expand_omp_atomic, expand_omp_atomic_pipeline,
2108         goa_stabilize_expr, expand_omp_atomic_mutex,
2109         expand_omp_atomic_fetch_op): New functions to implement
2110         expansion of OMP_ATOMIC.
2111         (expand_omp, build_omp_regions_1): Add support for
2112         OMP_ATOMIC_LOAD/OMP_ATOMIC_STORE.
2113         * tree-cfg.c (make_edges): add case for OMP_ATOMIC_LOAD,
2114         OMP_ATOMIC_STORE.
2115         * tree-gimple.c (is_gimple_stmt): Add OMP_ATOMIC_LOAD,
2116         OMP_ATOMIC_STORE.
2117         * tree-parloops.c: add include to tree-vectorizer.h.
2118         (reduction_info): New structure for reduction.
2119         (reduction_list): New list to represent list of reductions per loop.
2120         (struct data_arg): New helper structure for reduction.
2121         (reduction_info_hash, reduction_info_eq, reduction_phi,
2122         initialize_reductions, create_call_for_reduction,
2123         create_phi_for_local_result, create_call_for_reduction_1,
2124         create_loads_for_reductions, create_final_loads_for_reduction):
2125         New functions.
2126         (loop_parallel_p): Identify reductions, add reduction_list parameter.
2127         (separate_decls_in_loop_name): Support reduction variables.
2128         (separate_decls_in_loop): Add reduction_list and ld_st_data arguments,
2129         call create_loads_for_reduction for each reduction.
2130         (canonicalize_loop_ivs): Identify reductions, add reduction_list
2131         parameter.
2132         (transform_to_exit_first_loop): Add reduction support, add
2133         reduction_list parameter.
2134         (gen_parallel_loop): Add reduction_list parameter.  Add call
2135         separate_decls_in_loop with
2136         the new argument.  Traverse reductions and call
2137         initialize_reductions, create_call_for_reduction.
2138         (parallelize_loops): Create and delete the reduction list.
2139         (add_field_for_name): Change use of data parameter.  Add fields for
2140         reductions.
2141         * tree-vectorizer.h (vect_analyze_loop_form): Add declaration.
2142         * tree-vect-analyze.c (vect_analyze_loop_form): export it.
2143         * tree.def: Add definitions for OMP_ATOMIC_LOAD, OMP_ATOMIC_STORE.
2144         * tree-inline.c (estimate_num_insns_1): add cases for
2145         OMP_ATOMIC_LOAD, OMP_ATOMIC_STORE.
2146         * tree-cfg.c (make_edges): Add OMP_ATOMIC_LOAD, OMP_ATOMIC_STORE.
2147         * tree-ssa-operands.c (get_addr_dereference_operands):
2148         New function.  Subroutine of get_indirect_ref_operands.
2149         (get_indirect_ref_operands): Call get_addr_dereference_operands.
2150         (get_expr_operands): Support OMP_ATOMIC_LOAD, OMP_ATOMIC_STORE.
2151
2152
2153 2007-10-29  Hans-Peter Nilsson  <hp@axis.com>
2154
2155         * config/cris/cris.c: Include df.h.
2156         (cris_address_cost): Add gcc_assert for canonicalization
2157         assumptions.  For PLUS with MULT or register, correct
2158         test for register in other arm.  Tweak comments.
2159
2160 2007-10-28  Richard Guenther  <rguenther@suse.de>
2161
2162         * tree-ssa-operands.c (add_vars_for_offset): Add parameter
2163         telling if the var is to be treated as points-to location.
2164         (add_vars_for_bitmap): Pass true to add_vars_for_offset.
2165         (add_virtual_operand): Only recurse into MPTs if aliases
2166         is from a NMT.
2167
2168 2007-10-28  Richard Guenther  <rguenther@suse.de>
2169
2170         * tree-ssa-operands.c (add_vars_for_offset): Clean and speed up.
2171         (add_vars_for_bitmap): Do not recurse further.  Only add vars
2172         for pointed-to SFTs.
2173         (add_virtual_operand): Re-instantiate loop to add operands for
2174         aliases.  Recurse into MPTs.
2175         (get_indirect_ref_operands): If we fall back to use a pointers
2176         SMT, make sure to not prune based on the access offset and size.
2177
2178 2007-10-28  Andrew Pinski  <pinskia@gmail.com>
2179
2180         PR tree-opt/33589
2181         * tree-outof-ssa.c (rewrite_trees): If the statement changed, cleanup
2182         the eh information on the statement.
2183
2184 2007-10-28  Richard Guenther  <rguenther@suse.de>
2185
2186         * tree-flow.h (subvar_t): Make it a VEC.
2187         (struct subvar): Remove.
2188         (struct var_ann_d): Use VEC(tree,gc) to store subvars.
2189         * tree-flow-inline.h (get_subvar_at): Adjust iterators over
2190         variable subvars.
2191         * tree-into-ssa.c (mark_sym_for_renaming): Likewise.
2192         * tree-nrv.c (dest_safe_for_nrv_p): Likewise.
2193         * tree-ssa-alias.c (mark_aliases_call_clobbered): Likewise.
2194         (set_initial_properties): Likewise.
2195         (setup_pointers_and_addressables): Likewise.
2196         (new_type_alias): Likewise.
2197         (create_overlap_variables_for): Likewise.
2198         * tree-dfa.c (dump_subvars_for): Likewise.
2199         * tree-ssa-operands.c (add_vars_for_offset): Likewise.
2200         (get_expr_operands): Likewise.
2201         (add_to_addressable_set): Likewise.
2202         * tree-ssa-structalias.c (set_uids_in_ptset): Likewise.
2203
2204 2007-10-28  Uros Bizjak  <ubizjak@gmail.com>
2205
2206         PR tree-optimization/33920
2207         * tree-if-conv.c (tree_if_conversion): Force predicate of single
2208         successor bb to true when predecessor bb has NULL predicate.
2209         (find_phi_replacement_condition): Assert that tmp_cond is non-null.
2210
2211 2007-10-28  Richard Sandiford  <rsandifo@nildram.co.uk>
2212
2213         * config/mips/mips.md: Add combiner patterns for DImode extensions
2214         of HImode and QImode truncations.  Reformat HImode <- QImode pattern
2215         for consistency.
2216
2217 2007-10-28  Richard Sandiford  <rsandifo@nildram.co.uk>
2218
2219         PR target/33895
2220         * config/mips/mips.c (mips_output_dwarf_dtprel): Add ATTRIBUTE_UNUSED.
2221
2222 2007-10-28  Andreas Krebbel  <krebbel1@de.ibm.com>
2223
2224         * dce.c (delete_unmarked_insns): Just delete the RETVAL and
2225         LIBCALL notes if they are about to be moved to the same insn.
2226
2227 2007-10-27  Richard Guenther  <rguenther@suse.de>
2228
2229         PR tree-optimization/33870
2230         * tree-ssa-operands.c (add_vars_for_offset): Reduce code
2231         duplication.  Remove redundant call to access_can_touch_variable.
2232         (add_vars_for_bitmap): New helper for recursing over MPT contents.
2233         (add_virtual_operand): Use it.
2234
2235 2007-10-26  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
2236
2237         PR fortran/31608
2238         * pa.h (ASM_PN_FORMAT): Delete define.
2239
2240 2007-10-26  Janis Johnson  <janis187@us.ibm.com>
2241
2242         * doc/invoke.texi (Option Summary, optimizations): Remove
2243         -fbounds-check.  Add -fassociative-math, -freciprocal-math,
2244         -ftree-vrp and -funit-at-a-time.  Change -fno-split-wide-types to
2245         -fsplit-wide-types to match later entry.  Break up a long line.
2246         (Option Summary, code gen options)  Add -fno-stack-limit.  Add
2247         missing @gol to the end of a line.
2248         (Optimization Options): Remove -fbounds-check, which is also
2249         documented under Code Generation Options.  Remove =n from
2250         index entry for -ftree-parallelize-loops.  Change -fno-cprop-registers
2251         to -fcprop-registers to match other options, and say when it is
2252         enabled rather than disabled.  Remove extra index entry for
2253         -fno-cx-limited-range.  Add index entries for -fstack-protector
2254         and -fstack-protector-all.
2255         (Code Gen Options): Add index entry for -ftls-model.
2256
2257 2007-10-26  Anatoly Sokolov <aesok@post.ru>
2258
2259         * config/avr/avr.c (avr_OS_task_function_p): Add new function.
2260         (avr_regs_to_save): Handle functions with 'OS_task' attribute.
2261         (avr_simple_epilogue, expand_prologue, avr_asm_function_end_prologue,
2262         expand_epilogue, output_movhi): Don't handle 'main' function.
2263         (avr_attribute_table): Add 'OS_task' function attribute.
2264         * config/avr/avr.h (machine_function): Remove 'is_main' field, add
2265         'is_OS_task' field.
2266         * config/avr/avr.md (return_from_main_epilogue): Remove insn.
2267         (return_from_epilogue, return_from_interrupt_epilogue): Don't handle
2268         'main' function.
2269         * config/avr/avr.opt (minit-stack): Remove.
2270
2271 2007-10-26  Eric Botcazou  <ebotcazou@adacore.com>
2272
2273         * tree-nested.c (get_trampoline_type): Fix thinko.
2274
2275 2007-10-26  Douglas Gregor  <doug.gregor@gmail.com>
2276
2277         PR c++/33601
2278         * tree.c (build_offset_type): Build canonical type based on the
2279         TYPE_MAIN_VARIANT of the base type.
2280
2281 2007-10-26  Daniel Jacobowitz  <dan@codesourcery.com>
2282
2283         * reorg.c (emit_delay_sequence): Move insn locator from the
2284         first insn to the sequence.
2285
2286 2007-10-26  Samuel Tardieu  <sam@rfc1149.net>
2287
2288         * ipa-pure-const.c (check_decl): Return immediately when
2289         pure_const_state has been set to IPA_NEITHER.
2290
2291 2007-10-25  Ira Rosen  <irar@il.ibm.com>
2292
2293         PR tree-optimization/33833
2294         * tree-vect-analyze.c (vect_analyze_data_refs): Use POINTER_PLUS_EXPR
2295         and convert init to sizetype in inner_base construction.
2296
2297 2007-10-25  Richard Guenther  <rguenther@suse.de>
2298
2299         * tree-flow.h (mem_sym_stats): Remove.
2300         (dump_mem_sym_stats_for_var): Declare.
2301         * tree-dfa.c (dump_variable): Call dump_mem_sym_stats_for_var.
2302         (mem_sym_stats): Move ...
2303         * tree-ssa-alias.c (mem_sym_stats): ... here and make it static.
2304         (mem_sym_score): Rename from ...
2305         (pscore): ... this.  Remove.
2306         (dump_mem_sym_stats_for_var): New function.  Dump the score, but
2307         not the frequencies.
2308         (compare_mp_info_entries): Make sort stable by disambiguating
2309         on DECL_UID.
2310
2311 2007-10-25  Ira Rosen  <irar@il.ibm.com>
2312
2313         PR tree-optimization/33866
2314         * tree-vect-transform.c (vectorizable_store): Check operands of all
2315         the stmts in the group of strided accesses. Get def stmt type for each
2316         store in the group and pass it to vect_get_vec_def_for_stmt_copy ().
2317
2318 2007-10-25  Uros Bizjak  <ubizjak@gmail.com>
2319
2320         * config/i386/constraints.md (Y0): Rename register constraint to Yz.
2321         (Yt): Rename register constraint to Y2.
2322         * config/i386/sse.md: Use renamed register constraints.
2323         * config/i386/mmx.md: Ditto.
2324         * config/i386/i386.md: Ditto.
2325
2326 2007-10-25  Rask Ingemann Lambertsen  <rask@sygehus.dk>
2327
2328         * config/i386/i386.md (*dummy_extendsfdf2): Fix operand 1 constraint.
2329
2330 2007-10-24  Chao-ying Fu  <fu@mips.com>
2331
2332         * dwarf2out.c (base_type_die): Use DW_ATE_unsigned_fixed or
2333         DW_ATE_signed_fixed to describe FIXED_POINT_TYPE.
2334
2335 2007-10-24  Samuel Tardieu  <sam@rfc1149.net>
2336             Olga Golovanevsky <olga@il.ibm.com>
2337         
2338         * ipa-struct-reorg.c (replace_field_acc): Make it clear to
2339         the compiler that wr.wrap and wr.domain are initialized in
2340         any case.
2341
2342 2007-10-24  Samuel Tardieu  <sam@rfc1149.net>
2343
2344         * ipa-struct-reorg.c (sum_counts): Use HOST_WIDEST_PRINT_DEC
2345         to print gcov_type values.
2346
2347 2007-10-24  Eric B. Weddington  <eweddington@cso.atmel.com>
2348
2349         * config/avr/avr.h: Do not include progmem_section definition when
2350         building with IN_TARGET_LIBS.
2351
2352 2007-10-24  Richard Sandiford  <rsandifo@nildram.co.uk>
2353
2354         PR target/33755
2355         * config/mips/mips.c (mips_lo_sum_offset): New structure.
2356         (mips_hash_base, mips_lo_sum_offset_hash, mips_lo_sum_offset_eq)
2357         (mips_lo_sum_offset_lookup, mips_record_lo_sum)
2358         (mips_orphaned_high_part_p: New functions.
2359         (mips_avoid_hazard): Don't check INSN_P here.
2360         (mips_avoid_hazards): Rename to...
2361         (mips_reorg_process_insns): ...this.  Cope with
2362         !TARGET_EXPLICIT_RELOCS.  Delete orphaned high-part relocations,
2363         or turn them into nops.
2364         (mips_reorg): Remove TARGET_EXPLICIT_RELOCS check from calls to
2365         dbr_schedule and mips_avoid_hazards/mips_reorg_process_insns.
2366         (mips_set_mips16_mode): Don't set flag_delayed_branch here.
2367         (mips_override_options): Set flag_delayed_branch to 0.
2368
2369 2007-10-24  Richard Sandiford  <rsandifo@nildram.co.uk>
2370
2371         * config/mips/mips.h (MOVE_MAX): Use UNITS_PER_WORD and describe
2372         MIPS-specific implementation details.
2373         (MIPS_MAX_MOVE_BYTES_PER_LOOP_ITER): New macro.
2374         (MIPS_MAX_MOVE_BYTES_STRAIGHT): Likewise.
2375         (MOVE_RATIO): Define to MIPS_MAX_MOVE_BYTES_STRAIGHT / UNITS_PER_WORD
2376         for targets with movmemsi.
2377         (MOVE_BY_PIECES_P): Define.
2378         * config/mips/mips.c (MAX_MOVE_REGS, MAX_MOVE_BYTES): Delete.
2379         (mips_block_move_loop): Add a bytes_per_iter argument.
2380         (mips_expand_block_move): Use MIPS_MAX_MOVE_BYTES_STRAIGHT.
2381         Update call to mips_block_move_loop.
2382
2383 2007-10-24  Michael Matz  <matz@suse.de>
2384
2385         PR debug/33868
2386         * var-tracking.c (variable_union): Don't break after one loop
2387         iteration but only when a difference is found.
2388         (dump_variable): Also print DECL_UID.
2389
2390 2007-10-24  Olga Golovanevsky  <olga@il.ibm.com>
2391
2392         * ipa-type-escape.h: Expose function
2393         is_array_access_through_pointer_and_index.
2394         * ipa-type-escape.c
2395         (is_array_access_through_pointer_and_index):
2396         Add three new parameters. Add support of
2397         POINTER_PLUS_EXPR tree code.
2398
2399 2007-10-24  Olga Golovanevsky  <olga@il.ibm.com>
2400
2401         * ipa-struct-reorg.c, ipa-struct-reorg.h: New files.
2402         * tree-pass.h: Add pass_ipa_struct_reorg.
2403         * common.opt: Add ipa-struct-reorg flag.
2404         * Makefile.in: Add ipa-strcut-reorg.o compilation.
2405         * passes.c: Add pass pass_ipa_struct_reorg.
2406         * params.h:  Add STRUCT_REORG_COLD_STRUCT_RATIO.
2407         * params.def: Add PARAM_STRUCT_REORG_COLD_STRUCT_RATIO.
2408
2409 2007-10-24  Ira Rosen  <irar@il.ibm.com>
2410
2411         PR tree-optimization/33804
2412         * tree-vect-transform.c (vectorizable_operation): Remove the
2413         checks that the vectorization is worthwhile from the transformation
2414         phase.
2415
2416 2007-10-24  Ira Rosen  <irar@il.ibm.com>
2417
2418         * tree-vect-analyze.c (vect_build_slp_tree): Return false if
2419         vectype cannot be determined for the scalar type.
2420         (vect_analyze_slp_instance): Likewise.
2421         * tree-vect-transform.c (vect_model_reduction_cost): Change the
2422         return type to bool. Return false if vectype cannot be determined 
2423         for the scalar type.
2424         (vect_get_constant_vectors): Return false if vectype cannot be
2425         determined for the scalar type.
2426         (get_initial_def_for_induction, vect_get_vec_def_for_operand,
2427         get_initial_def_for_reduction, vect_create_epilog_for_reduction,
2428         vectorizable_reduction): Likewise.      
2429
2430 2007-10-23  Craig Rodrigues  <rodrigc@gcc.gnu.org>
2431
2432         * config.gcc: For a FreeBSD target, parse the value of ${target}
2433         to determine the value of FBSD_MAJOR, instead of adding an
2434         explicit check for every possible FreeBSD major version.
2435
2436 2007-10-23  Uros Bizjak  <ubizjak@gmail.com>
2437
2438         PR rtl-optimization/33846
2439         * combine.c (simplify_shift_const_1) [NOT]: Skip vector modes.
2440
2441 2007-10-23  Dorit Nuzman  <dorit@il.ibm.com>
2442
2443         PR tree-optimization/33860
2444         * tree-vect-transform.c (vect_analyze_data_ref_access): Don't allow
2445         interleaved accesses in case the dr is inside the inner-loop during
2446         outer-loop vectorization.
2447
2448 2007-10-23  Eric Botcazou  <ebotcazou@libertysurf.fr>
2449
2450         * doc/rtl.texi (Flags): Fix MEM_SCALAR_P entry.
2451         Document MEM_POINTER.  Replace mentions of "integrated"
2452         field with "return_val".  Delete outdated stuff.
2453
2454 2007-10-23  David Edelsohn  <edelsohn@gnu.org>
2455
2456         * config/rs6000/rs6000.c (rs6000_override_options): Set
2457         rs6000_altivec_abi on AIX.
2458         (conditional_register_usage): Set VR20:31 fixed on AIX.
2459
2460 2007-10-23  Richard Guenther  <rguenther@suse.de>
2461
2462         * alias.c (get_alias_set): For INDIRECT_REFs, deal with
2463         SSA_NAME pointers.
2464
2465 2007-10-22  Seongbae Park <seongbae.park@gmail.com>
2466         David S. Miller  <davem@davemloft.net>
2467
2468         * df-scan.c (df_get_call_refs): Mark global registers as both a
2469         DF_REF_REG_USE and a non-clobber DF_REF_REG_DEF.
2470
2471 2007-10-22  Dorit Nuzman  <dorit@il.ibm.com>
2472
2473         PR tree-optimization/33834
2474         PR tree-optimization/33835
2475         * tree-vect-analyze.c (vect_analyze_operations): RELEVANT and LIVE
2476         stmts need to be checked for success seperately.
2477         * tree-vect-transform.c (vectorizable_call, vectorizable_conversion):
2478         Remove the check that stmt is not LIVE.
2479         (vectorizable_assignment, vectorizable_induction): Likewise.
2480         (vectorizable_operation, vectorizable_type_demotion): Likewise.
2481         (vectorizable_type_promotion, vectorizable_load, vectorizable_store):
2482         Likewise.
2483         (vectorizable_live_operation): Check that op is not NULL. 
2484
2485 2007-10-22  Janis Johnson  <janis187@us.ibm.com>
2486
2487         * doc/invoke.texi (Optimization Options): In the summary, show
2488         that the value for options -falign-jumps, -falign-labels,
2489         -falign-loops, -falign-functions, -fsched-stalled-insns, and
2490         -fsched-stalled-insns-dep is optional.  In the summary, show that
2491         -fsched-stalled-insns takes an optional argument and that
2492         -fparallelize-loops takes an argument.  Add opindex for several
2493         optimization options, and fix typos in the opindex commands for
2494         several others.  In the descriptions for -fsched-stalled-insns
2495         and -fsched-stalled-insns-dep, show the options with and without
2496         values.
2497
2498 2007-10-22  Eric B. Weddington  <eweddington@cso.atmel.com>
2499
2500         * config/avr/avr.c (avr_mcu_types): Remove ATmega603 which was never
2501         produced.
2502         * config/avr/avr.h (LINK_SPEC): Likewise.
2503         (CRT_BINUTILS_SPECS): Likewsie.
2504         * config/avr/t-avr (MULTILIB_MATCHES): Likewise.
2505
2506 2007-10-22  Eric Botcazou  <ebotcazou@libertysurf.fr>
2507
2508         PR rtl-optimization/33644
2509         * cfgcleanup.c: Do not include dce.h.
2510         * cfgrtl.c (delete_insn_chain_and_edges): Resurrect.
2511         * combine.c (distribute_notes): Delete REG_LIBCALL_ID case.
2512         * dce.c (something_changed): Delete.
2513         (libcall_dead_p): New predicate.
2514         (delete_unmarked_insns): Use it to delete dead libcalls.
2515         Deal with REG_LIBCALL and REG_RETVAL notes.
2516         (prescan_libcall_for_dce): New function.
2517         (prescan_insns_for_dce): Use it to deal with libcalls.
2518         (mark_reg_dependencies): Do nothing special for libcalls.
2519         (dce_process_block): Likewise.
2520         (fast_dce): Delete unused local variable.
2521         (run_fast_dce): Do not return a value.
2522         * dce.h (struct df): Delete.
2523         (run_fast_dce): Adjust prototype.
2524         * optabs.c (libcall_id): Delete.
2525         (maybe_encapsulate_block): Do not emit REG_LIBCALL_ID notes.
2526         (emit_no_conflict_block): Do not look for REG_LIBCALL_ID notes.
2527         * reload1.c (reload): Delete REG_LIBCALL_ID case.
2528         * rtl.h (delete_insn_chain_and_edges): Resurrect prototype.
2529         * see.c (see_update_relevancy): Look for REG_LIBCALL and REG_RETVAL
2530         notes instead of REG_LIBCALL_ID notes.
2531         * reg-notes.def (LIBCALL_ID): Delete.
2532         * Makefile.in (see.o): Add dce.h dependency.
2533         (cfgcleanup.o): Remove dce.h dependency.
2534
2535 2007-10-22  Michael Matz  <matz@suse.de>
2536
2537         PR tree-optimization/33855
2538         * tree-ssa-phiopt.c (cond_store_replacement): Handle COMPLEX_TYPE
2539         and VECTOR_TYPE.
2540
2541 2007-10-22  Ira Rosen  <irar@il.ibm.com>
2542
2543         PR tree-optimization/33854
2544         * tree-vect-analyze.c (vect_determine_vectorization_factor): Add
2545         FLOAT_EXPR to the list of promotion operations. 
2546
2547 2007-10-22  Rask Ingemann Lambertsen  <rask@sygehus.dk>
2548
2549         PR target/29473
2550         PR target/29493
2551         * config/i386/i386.c (output_pic_addr_const): Support Intel asm syntax.
2552         (print_reg): Print register prefix only with AT&T asm syntax. 
2553         Support pc_rtx for RIP register.
2554         (print_operand_address): Use print_reg()'s pc_rtx support for RIP
2555         relative addressing.  Always print segment register prefix with AT&T
2556         asm syntax and never with Intel asm syntax.
2557         (print_operand): Suppress 'XXX PTR' prefix for BLKmode operands. 
2558         Fix prefix for 16-byte XFmode operands.
2559         (output_addr_const_extra): Support Intel asm syntax.
2560         (x86_file_start): Don't use register prefix with Intel asm syntax.
2561         * config/i386/i386.md ("*zero_extendqihi2_movzbl"): Fix typo.
2562         ("return_internal_long"): Fix Intel asm syntax output.
2563         ("set_got_rex64"): Support Intel asm syntax.
2564         ("set_rip_rex64"): Likewise.
2565         ("set_got_offset_rex64"): Likewise.
2566         ("*sibcall_1_rex64_v"): Print register prefix only with AT&T asm
2567         syntax.
2568         ("*tls_global_dynamic_64"): Likewise.
2569         ("*tls_local_dynamic_base_64"): Likewise.
2570         ("*load_tp_si")("*load_tp_di"): Likewise.
2571         ("*add_tp_si")("*add_tp_di"): Likewise.
2572         ("*tls_dynamic_lea_64"): Likewise.
2573         ("*sibcall_value_1_rex64_v"): Likewise.
2574         ("stack_tls_protect_set_si"): Likewise.
2575         ("stack_tls_protect_set_di"): Likewise.
2576         ("stack_tls_protect_test_si"): Likewise.
2577         ("stack_tls_protect_test_di"): Likewise.
2578         * config/i386/mmx.md ("*mov<mode>_internal_rex64"): Fix Intel asm
2579         syntax output.
2580         ("*movv2sf_internal_rex64"): Likewise.
2581         * config/i386/cpuid.h (__cpuid): Support Intel asm syntax.
2582         (__get_cpuid_max): Likewise.
2583
2584 2007-10-21  Richard Sandiford  <rsandifo@nildram.co.uk>
2585
2586         * config/mips/mips-protos.h (mips_regno_mode_ok_for_base_p): Give
2587         the STRICT_P argument type "bool" rather than "int".
2588         (mips_legitimate_address_p): Likewise.
2589         (fp_register_operand, lo_operand): Delete.
2590         (mips_subword): Give the HIGH_P argument type "bool" rather than "int".
2591         (mips_emit_scc): Rename to...
2592         (mips_expand_scc): ...this.
2593         (gen_conditional_branch): Rename to...
2594         (mips_expand_conditional_branch): ...this.
2595         (gen_conditional_move): Rename to...
2596         (mips_expand_conditional_move): ...this.
2597         (mips_gen_conditional_trap): Rename to...
2598         (mips_expand_conditional_trap): ...this and take an rtx code instead
2599         of an operands array.
2600         (mips_expand_call): Give the SIBCALL_P argument type "bool"
2601         rather than "int".
2602         (mips_emit_fcc_reload): Rename to...
2603         (mips_expand_fcc_reload): ...this.
2604         (init_cumulative_args): Rename to...
2605         (mips_init_cumulative_args): ...this and remove the libname argument.
2606         (function_arg_advance): Rename to...
2607         (mips_function_arg_advance): ...this.
2608         (function_arg): Rename to...
2609         (mips_function_arg): ...this and use "rtx" instead of
2610         "struct rtx_def *".
2611         (function_arg_boundary): Rename to...
2612         (mips_function_arg_boundary): ...this.
2613         (mips_expand_unaligned_load): Rename to...
2614         (mips_expand_ext_as_unaligned_load): ...this and give the WIDTH
2615         and BITPOS arguments type "HOST_WIDE_INT".
2616         (mips_expand_unaligned_store): Rename to...
2617         (mips_expand_ins_as_unaligned_store): ...this and give the WIDTH
2618         and BITPOS arguments type "HOST_WIDE_INT".
2619         (override_options): Rename to...
2620         (mips_override_options): ...this.
2621         (print_operand): Rename to...
2622         (mips_print_operand): ...this.
2623         (print_operand_address): Rename to...
2624         (mips_print_operand_address): ...this.
2625         (mips_output_ascii): Remove the PREFIX argument.
2626         (mips_expand_epilogue): Give the SIBCALL_P argument type "bool"
2627         rather than "int".
2628         (mips_can_use_return_insn): Return a "bool" rather than an "int".
2629         (mips_function_value): Remove the FUNC argument.  Use "rtx" instead
2630         of "struct rtx_def *".
2631         (mips_secondary_reload_class): Give the IN_P argument type "bool"
2632         rather than "int".
2633         (build_mips16_call_stub): Delete.
2634         (mips_store_data_bypass_p): Return a "bool" rather than an "int".
2635         (mips_use_ins_ext_p): Give the second and third arguments type
2636         "HOST_WIDE_INT" rather than "rtx".
2637         * config/mips/mips.h: Update after the above changes.  Tweak comments
2638         and formatting.
2639         (SECONDARY_INPUT_RELOAD_CLASS): Pass a boolean IN_P argument.
2640         (SECONDARY_OUTPUT_RELOAD_CLASS): Likewise.
2641         (mips_print_operand_punct, mips_hard_regno_mode_ok): Change the
2642         element type from "char" to "bool".
2643         (mips_section_threshold, sym_lineno, set_noat, mips_branch_likely)
2644         (mips_cpu_info_table): Delete.
2645         * config/mips/mips.md: Update after the above changes.  Tweak some
2646         formatting.
2647         * config/mips/mips-ps-3d.md: Likewise.
2648         * config/mips/mips.c: Tweak comments and formatting.
2649         Use NULL-like macros rather than 0 in various places.
2650         (mips_section_threshold): Rename to...
2651         (mips_small_data_threshold): ...this and give it an unsigned type.
2652         (num_source_filenames): Remove explicit initialization.
2653         (sdb_label_count): Likewise.
2654         (sym_lineno): Delete.
2655         (set_noat): Make static.
2656         (mips_branch_likely): Likewise, and give it type "bool".
2657         (mips_isa_info): Rename to...
2658         (mips_isa_option_info): ...this.
2659         (mips_flag_delayed_branch): Rename to...
2660         (mips_base_delayed_branch): ...this.
2661         (mips_split_addresses): Delete.
2662         (mips_print_operand_punct, mips_hard_regno_mode_ok): Change the
2663         element type from "char" to "bool".
2664         (mips_regno_to_class): Add an explicit array size.
2665         (mips16_flipper): Change from type "int" to type "bool".
2666         (mips_comp_type_attributes): Remove redundant FUNCTION_TYPE check.
2667         (mips_tls_operand_p): Rename to...
2668         (mips_tls_symbol_p): ...this.
2669         (mips_global_symbol_p): Remove redundant "const".
2670         (mips_offset_within_alignment_p): Simplify.
2671         (mips_regno_mode_ok_for_base_p): Change the name of the last argument
2672         to STRICT_P and give it type bool.
2673         (mips_valid_base_register_p): Likewise.
2674         (mips_classify_address): Likewise.
2675         (mips_legitimate_address_p): Likewise.
2676         (mips16_unextended_reference_p): Take the offset as an
2677         "unsigned HOST_WIDE_INT" rather than an "rtx".  Simplify.
2678         (mips_const_insns): Use IN_RANGE.
2679         (mips_force_temporary): Remove an unnecessary copy_rtx.
2680         (mips16_gp_pseudo_reg): Simplify.
2681         (mips_split_symbol): Remove an unnecessary copy_rtx.
2682         (mips_legitimize_tls_address): Only create registers if we need them.
2683         (mips_legitimize_address): Use mips_split_plus.
2684         (mips_move_integer): Swap DEST and TEMP arguments.  Rename local
2685         variable COST to NUM_OPS.
2686         (mips_legitimize_move): Use gen_lowpart.
2687         (mips_rewrite_small_data): Rename the OP parameter to PATTERN.
2688         (m16_check_op): Use IN_RANGE.
2689         (mips_subword): Give the HIGH_P argument type "bool" rather than "int".
2690         (mips_split_doubleword_move): Pass booleans to mips_subword.
2691         (mips_output_move): Store the mode in a local variable.
2692         Explicitly assert that this function does not deal with
2693         MFLO and MFHI.  Use SMALL_OPERAND_UNSIGNED.  Make order of
2694         cases more consistent.
2695         (mips_relational_operand_ok_p): Rename to...
2696         (mips_int_order_operand_ok_p): ...this.
2697         (mips_canonicalize_comparison): Rename to...
2698         (mips_canonicalize_int_order_test): ...this.
2699         (mips_emit_int_relational): Rename to...
2700         (mips_emit_int_order_test): ...this.  Store the mode in a local
2701         variable.
2702         (mips_reverse_fp_cond_p): Rename to...
2703         (mips_reversed_fp_cond): ...this.
2704         (mips_emit_compare): Make the order of the statements more consistent.
2705         (mips_emit_scc): Rename to...
2706         (mips_expand_scc): ...this.
2707         (gen_conditional_branch): Rename to...
2708         (mips_expand_conditional_branch): ...this.
2709         (gen_conditional_move): Rename to...
2710         (mips_expand_conditional_move): ...this.  Build the condition
2711         separately from the main pattern.
2712         (mips_gen_conditional_trap): Rename to...
2713         (mips_expand_conditional_trap): ...this and take an rtx code instead
2714         of an operands array.  Simplify.
2715         (init_cumulative_args): Rename to...
2716         (mips_init_cumulative_args): ...this.  Use memset rather than a
2717         copy from a zeroed static.  Use prototype_p and stdarg_p.
2718         (mips_arg_info): Rename to...
2719         (mips_get_arg_info): ...this and put the INFO argument first.
2720         (function_arg): Rename to...
2721         (mips_function_arg): ...this and use "rtx" instead of
2722         "struct rtx_def *".  Only split structures into chunks if 
2723         TARGET_HARD_FLOAT, rather than checking !TARGET_SOFT_FLOAT on
2724         a chunk-by-chunk basis.  Use SCALAR_FLOAT_TYPE_P instead of a
2725         comparison with REAL_TYPE.  Rename local variable REG to REGNO
2726         and make it unsigned.
2727         (function_arg_advance): Rename to...
2728         (mips_function_arg_advance): ...this.
2729         (function_arg_boundary): Rename to...
2730         (mips_function_arg_boundary): ...this.
2731         (mips_pad_arg_upward): Use SCALAR_INT_MODE_P instead of a comparison
2732         with MODE_INT.
2733         (mips_fpr_return_fields): Use SCALAR_FLOAT_TYPE_P instead of a
2734         comparison with REAL_TYPE.
2735         (mips_function_value): Remove the FUNC argument.  Rename local
2736         variable UNSIGNEDP to UNSIGNED_P.
2737         (mips_return_in_memory): Use IN_RANGE.
2738         (mips_setup_incoming_varargs): Pass a boolean rather than an int
2739         to FUNCTION_ARG_ADVANCE.
2740         (mips_gimplify_va_arg_expr): Rename local variable INDIRECT
2741         to INDIRECT_P.  Remove a redundant mips_abi check.  Only calculate
2742         SIZE and RSIZE if needed.
2743         (mips16_stub): Rename FPRET to FP_RET_P and give it type "bool"
2744         rather than "int".
2745         (build_mips16_function_stub): Rename to...
2746         (mips16_build_function_stub): ...this.
2747         (build_mips16_call_stub): Rename to...
2748         (mips16_build_call_stub): ...this.  Make static, and return a
2749         "bool" rather than an "int".  Rename the ARG_SIZE argument to
2750         ARGS_SIZE.  Rename the local variable FPRET to FP_RET_P and give
2751         it type "bool".  Use "jr" rather than "j".  Use XNEW.  Simplify.
2752         (mips_load_call_address): Give the SIBCALL_P argument type "bool"
2753         rather than "int".
2754         (mips_expand_call): Likewise.  Assert that MIPS16 calls via stubs
2755         are not sibling ones.
2756         (mips_emit_fcc_reload): Rename to...
2757         (mips_expand_fcc_reload): ...this.
2758         (mips_get_unaligned_mem): Give the WIDTH and BITPOS arguments type
2759         "HOST_WIDE_INT".
2760         (mips_expand_unaligned_load): Rename to...
2761         (mips_expand_ext_as_unaligned_load): ...this and give the WIDTH
2762         and BITPOS arguments type "HOST_WIDE_INT".  Remove redundant
2763         SUBREG_BYTE check.
2764         (mips_expand_unaligned_store): Rename to...
2765         (mips_expand_ins_as_unaligned_store): ...this and give the WIDTH
2766         and BITPOS arguments type "HOST_WIDE_INT".
2767         (mips_use_ins_ext_p): Rename second and third arguments to WIDTH
2768         and BITPOS and give them type "HOST_WIDE_INT" rather than "rtx".
2769         Use IN_RANGE.
2770         (mips_init_split_addresses): Replace with...
2771         (mips_split_addresses_p): ...this new function.
2772         (mips_init_relocs): Check mips_split_addresses_p () rather than
2773         mips_split_addresses.  Always initialize mips_split_p with booleans.
2774         (print_operand_reloc): Rename to...
2775         (mips_print_operand_reloc): ...this.  Use a gcc_assert rather than
2776         a fatal_error.
2777         (print_operand): Rename to...
2778         (mips_print_operand): ...this.
2779         (print_operand_address): Rename to...
2780         (mips_print_operand_address): ...this.  Use GP_REG_FIRST.
2781         (mips_in_small_data_p): Simplify.
2782         (mips_output_ascii): Remove the PREFIX argument and "register"
2783         keywords.  Use the STRING parameter directly and cast to
2784         "unsigned char".
2785         (mips16e_collect_argument_save_p): Use IN_RANGE.
2786         (mips_function_has_gp_insn): Simplify.
2787         (mips_set_return_address): Use BITSET_P.
2788         (mips_restore_gp): Use a separate statement to pick the base
2789         register.
2790         (mips_output_function_prologue): Use a local FRAME variable.
2791         (mips_save_reg): Pass booleans to mips_subword.
2792         (mips_expand_prologue): Use a local FRAME variable.  Use
2793         cprestore_size to detect when .cprestore is needed.
2794         (mips_restore_reg): Use GP_REG_FIRST.
2795         (mips_expand_epilogue): Give the SIBCALL_P argument type "bool"
2796         rather than "int".  Use local FRAME and REGNO variables.
2797         (mips_can_use_return_insn): Return a "bool" rather than an "int".
2798         (mips_secondary_reload_class): Give the IN_P argument type "bool"
2799         rather than "int".
2800         (mips_linked_madd_p): Rename arguments to OUT_INSN and IN_INSN.
2801         (mips_store_data_bypass_p): Return a "bool" rather than an "int".
2802         (vr4130_swap_insns_p): Rename local variables to DEP1_P and DEP2_P.
2803         (mips_74k_agen_init): Assume INSN satisfies USEFUL_INSN_P.
2804         (mips_variable_issue): Do nothing unless INSN satisfies USEFUL_INSN_P.
2805         (builtin_description): Rename to...
2806         (mips_builtin_description): ...this.
2807         (mips_bdesc): Rename to...
2808         (mips_ps_bdesc): ...this.
2809         (sb1_bdesc): Rename to...
2810         (mips_sb1_bdesc): ...this.
2811         (dsp_bdesc): Rename to...
2812         (mips_dsp_bdesc): ...this.
2813         (dsp_32only_bdesc): Rename to...
2814         (mips_dsp_32only_bdesc): ...this.
2815         (bdesc_map): Rename to...
2816         (mips_bdesc_map): ...this.
2817         (bdesc_arrays): Rename to...
2818         (mips_bdesc_arrays): ...this.
2819         (mips_prepare_builtin_arg): Rename OP to OPNO and ARGNUM to ARGNO.
2820         Tweak error message.
2821         (mips_expand_builtin_direct): Rename HAS_TARGET to HAS_TARGET_P.
2822         Rename local variables I and J to OPNO and ARGNO respectively.
2823         Assert that the number of arguments is no more than the number of
2824         input operands.
2825         (mips_expand_builtin_compare): Use an array of arguments rather
2826         than an array of operands.  Assert that the number of operands is
2827         as expected.
2828         (add_constant): Rename to...
2829         (mips16_add_constant): ...this.  Use XNEW.
2830         (dump_constants_1): Rename to...
2831         (mips16_emit_constants_1): ...this.  Use ALL_SCALAR_FIXED_POINT_MODE_P.
2832         (dump_constants): Rename to...
2833         (mips16_emit_constants): ...this.
2834         (mips_sim_wait_reg, mips_sim_record_set): Use END_REGNO.
2835         (mips_set_mips16_mode): Don't call mips_init_split_addresses.
2836         Assign mips16_p to was_mips16_p.
2837         (mips_parse_cpu): Tweak warning message.
2838         (override_options): Rename to...
2839         (mips_override_options): ...this.  Move the mips_cost initialization
2840         out of the "shared with GAS" block.  Quote option names in error
2841         messages.
2842         (mips_conditional_register_usage): Make local variable REGNO unsigned.
2843         (mips_order_regs_for_local_alloc): Remove register keyword.
2844
2845 2007-10-21  Richard Sandiford  <rsandifo@nildram.co.uk>
2846
2847         * system.h (IN_RANGE): Cast each argument individually.
2848
2849 2007-10-21  Richard Sandiford  <rsandifo@nildram.co.uk>
2850
2851         * config/mips/mips.c (mips_set_mips16_mode) Say sorry for hard-float
2852         MIPS16 code unless using o32 or o64.  
2853
2854 2007-10-21  Richard Sandiford  <rsandifo@nildram.co.uk>
2855
2856         * config/mips/mips.c (mips_cannot_change_mode_class): Don't check
2857         for modes smaller than 4 bytes.
2858         * config/mips/mips.md (*movhi_internal, *movqi_internal): Remove
2859         FPR alternatives.
2860
2861 2007-10-21  Richard Sandiford  <rsandifo@nildram.co.uk>
2862
2863         * config/mips/mips-protos.h (mips_output_aligned_bss): Delete.
2864         * config/mips/linux.h (BSS_SECTION_ASM_OP): Delete.
2865         (ASM_OUTPUT_ALIGNED_BSS): Delete.
2866         * config/mips/mips.c (mips_output_aligned_bss): Delete.
2867
2868 2007-10-21  Richard Sandiford  <rsandifo@nildram.co.uk>
2869
2870         * config/mips/mips.c (mips_function_ok_for_sibcall): Only forbid
2871         sibling calls to "mips16" functions if the function satisfies
2872         const_call_insn_operand.
2873
2874 2007-10-21  Richard Sandiford  <rsandifo@nildram.co.uk>
2875
2876         * config/mips/mips.c (mips_va_start): Fix types in calls
2877         to build_int_cst.
2878
2879 2007-10-21  Richard Sandiford  <rsandifo@nildram.co.uk>
2880
2881         * config/mips/mips.c (mips_rtx_costs): Only recognize reciprocals
2882         if ISA_HAS_FP4.
2883
2884 2007-10-21  Richard Sandiford  <rsandifo@nildram.co.uk>
2885
2886         * config/mips/mips.h (ISA_HAS_LDC1_SDC1): New macro.
2887         * config/mips/mips.c (mips_split_64bit_move_p): Use ISA_HAS_LDC1_SDC1
2888         instead of checking mips_isa.
2889
2890 2007-10-21  Richard Sandiford  <rsandifo@nildram.co.uk>
2891
2892         * doc/invoke.texi (-mpaired-single): Don't say that the option
2893         requires 64-bit code.
2894         * config/mips/mips-protos.h (mips_modes_tieable_p): Declare.
2895         * config/mips/mips.h (ISA_HAS_PAIRED_SINGLE): New macro.
2896         (ISA_HAS_NMADD_NMSUB): Add a mode argument.  Return true for
2897         V2SF if ISA_MIPS32R2.
2898         (MODES_TIEABLE_P): Use mips_modes_tieable_p.
2899         * config/mips/mips.c (mips_rtx_costs): Pass a mode argument
2900         to ISA_HAS_NMADD_NMSUB.
2901         (mips_split_doubleword_move): Handle V2SF.
2902         (mips_modes_tieable_p): New function.
2903         (override_options): Report a warning rather than an error when
2904         -mpaired-single is used on ISAs that don't support it; use
2905         ISA_HAS_PAIRED_SINGLE to check that case.
2906         * config/mips/mips.md (MOVE64): New mode iterator.  Replace DI
2907         and DF move splitters with a single MOVE64 splitter, thereby adding
2908         a V2SF splitter too.
2909         (SPLITF): Add TARGET_DOUBLE_FLOAT conditions to DI and DF.
2910         Add a TARGET_FLOAT64 condition to TF.  Add V2SF to the iterator.
2911         (HALFMODE): Add V2SF.
2912         (*nmadd<mode>, *nmadd<mode>_fastmath, *nmsub<mode>)
2913         (*nmsub<mode>_fastmath): Add a mode argument to ISA_HAS_NMADD_NMSUB.
2914         (movv2sf_hardfloat_64bit): Tweak ordering of conditions.
2915         (movv2sf_hardfloat_32bit): New pattern.
2916         (load_low<mode>, load_high<mode>, store_word<mode>): Remove
2917         TARGET_DOUBLE_FLOAT conditions.
2918
2919 2007-10-20  Jakub Jelinek  <jakub@redhat.com>
2920
2921         * config/rs6000/linux-unwind.h (ppc_fallback_frame_state): Point
2922         saved CR2 offset to low 32 bits of regs->ccr rather than the whole
2923         64-bit register in 64-bit libgcc.
2924
2925 2007-10-20  Eric B. Weddington  <eweddington@cso.atmel.com>
2926
2927         * config/avr/avr.c (avr_mcu_types): Add at90pwm2b, at90pwm3b.
2928         * config/avr/avr.h (LINK_SPEC): Likewise.
2929         (CRT_BINUTILS_SPECS): Likewsie.
2930         * config/avr/t-avr (MULTILIB_MATCHES): Likewise.
2931
2932 2007-10-20  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
2933
2934         * doc/invoke.texi (Warning Options): Move -w, -Werror, -Werror=
2935         and -Wfatal-errors together.
2936         
2937 2007-10-20  Alan Modra  <amodra@bigpond.net.au>
2938
2939         PR target/33812
2940         * config/rs6000/rs6000.c (rs6000_emit_epilogue): Revert 2007-05-16
2941         change for vrsave, ie restore after frame pop.
2942
2943 2007-10-19  David S. Miller  <davem@davemloft.net>
2944
2945         * config/sparc/niagara2.md: Fix copyright notice.
2946
2947 2007-10-19  Sebastian Pop  <sebastian.pop@amd.com>
2948
2949         PR tree-optimization/23820
2950         PR tree-optimization/24309
2951         PR tree-optimization/33766
2952         * testsuite/gcc.dg/tree-ssa/pr23820.c: New.
2953         * testsuite/gcc.dg/tree-ssa/pr24309.c: New.
2954         * testsuite/gcc.dg/tree-ssa/pr33766.c: New.
2955         * testsuite/gcc.dg/tree-ssa/ltrans-3.c: XFAILed.
2956         * tree-loop-linear.c (perfect_loop_nest_depth): New.
2957         (linear_transform_loops): Use perfect_loop_nest_depth.
2958         * lambda-code.c (perfect_nest_p): Outer loops in perfect nests 
2959         should have a single condition: their exit.
2960
2961 2007-10-19  Richard Guenther  <rguenther@suse.de>
2962
2963         PR middle-end/33816
2964         PR middle-end/32921
2965         * stor-layout.c (layout_type): Assert that aggregates do not
2966         have their alias sets set.
2967         * alias.c (get_alias_set): Return alias set zero for incomplete
2968         types, return the alias set of the element for incomplete array
2969         types, but do not remember these.
2970
2971 2007-10-19  Richard Guenther  <rguenther@suse.de>
2972
2973         Revert
2974         2007-10-19  Richard Guenther  <rguenther@suse.de>
2975
2976         PR middle-end/32921
2977         * tree.c (build_array_type): Do not re-layout unbound array
2978         types.
2979
2980 2007-10-19  Richard Guenther  <rguenther@suse.de>
2981
2982         PR middle-end/32921
2983         * tree.c (build_array_type): Do not re-layout unbound array
2984         types.
2985
2986 2007-10-19  Richard Sandiford  <rsandifo@nildram.co.uk>
2987
2988         * config/mips/mips.c (mips_canonicalize_comparison):  Check
2989         mips_relational_operand_ok_p before trying to rewrite the test.
2990         Only calculate PLUS_ONE if needed.
2991         (mips_emit_int_relational): Don't call mips_relational_operand_ok_p
2992         here.
2993
2994 2007-10-19  Richard Sandiford  <rsandifo@nildram.co.uk>
2995
2996         * config/mips/mips.c (mips16e_build_save_restore): Fix *OFFSET_PTR
2997         calculation.
2998
2999 2007-10-19  Richard Sandiford  <rsandifo@nildram.co.uk>
3000
3001         * config/mips/mips.c (mips_call_tls_get_addr): Don't claim that
3002         the call uses the incoming value of $2.
3003
3004 2007-10-19  Richard Sandiford  <rsandifo@nildram.co.uk>
3005
3006         * config/mips/mips.c (mips_call_tls_get_addr): Use gen_const_mem
3007         rather then gen_rtx_MEM.
3008         (mips_setup_incoming_varargs): Use gen_frame_mem rather than
3009         gen_rtx_MEM.
3010         (mips_set_return_address): Likewise.
3011         (mips_restore_gp): Likewise.
3012
3013 2007-10-19  Richard Sandiford  <rsandifo@nildram.co.uk>
3014
3015         * config/mips/mips.c (gpr_mode): Delete.
3016         (mips16e_build_save_restore): Use word_mode and UNITS_PER_WORD
3017         instead of gpr_mode.
3018         (mips_for_each_saved_reg): Likewise.
3019         (mips_expand_prologue, mips_expand_epilogue): Likewise.
3020         (override_options): Don't initialize gpr_mode.
3021         * config/mips/mips.md (eh_return): Use word_mode instead of gpr_mode.
3022
3023 2007-10-19  Richard Sandiford  <rsandifo@nildram.co.uk>
3024
3025         * config/mips/mips.c (mips_hard_regno_nregs): Put the UNITS_PER_WORD
3026         case last.
3027         (mips_class_max_nregs): Calculate the smallest consituent register
3028         size and use that to determine an upper bound on the number of
3029         registers.
3030
3031 2007-10-19  Richard Sandiford  <rsandifo@nildram.co.uk>
3032
3033         * config/mips/mips.c (mips16_copy_fpr_return_value): New function,
3034         split out from...
3035         (mips_expand_epilogue): ...here.
3036         (mips_mdebug_abi_name): New function, split out from...
3037         (mips_file_start): ...here.
3038         (mips_hard_regno_mode_ok_p): New function, split out from...
3039         (override_options): ...here.
3040         (mips_expand_builtin_1): New function, split out from...
3041         (mips_expand_buitin): ...here.  Abort if we don't recognize
3042         the function.
3043
3044 2007-10-19  Richard Sandiford  <rsandifo@nildram.co.uk>
3045
3046         * config/mips/mips.c (build_mips16_function_stub): Load the
3047         target address into $1 before transfering the arguments.
3048         Don't use ".set noreorder".
3049         (build_mips16_call_stub): Likewise.
3050
3051 2007-10-19  Richard Sandiford  <rsandifo@nildram.co.uk>
3052
3053         * config/mips/mips.c (mips_output_32bit_xfer): New function.
3054         (mips_output_64bit_xfer): Likewise.
3055         (mips16_fp_args): Rename to...
3056         (mips_output_args_xfer): ...this and replace the FROM_FP_P argument
3057         with a DIRECTION argument.  Use mips_output_32bit_xfer and
3058         mips_output_64bit_xfer.
3059         (build_mips16_function_stub): Update accordingly.
3060         (mips16_fpret_double): Delete.
3061         (build_mips16_call_stub): Update after above changes.
3062         Use mips_output_32bit_xfer.  Use mips_output_64bit_xfer instead
3063         of mips16_fpret_double.  Use GP_REG_RETURN.
3064
3065 2007-10-19  Richard Sandiford  <rsandifo@nildram.co.uk>
3066
3067         * config/mips/mips.c (mips16_fp_args): Remove the FILE argument and
3068         use asm_out_file instead.
3069         (build_mips16_function_stub): Likewise.
3070         (build_mips16_call_stub, mips_output_function_prologue): Update
3071         accordingly.
3072
3073 2007-10-18  David S. Miller  <davem@davemloft.net>
3074
3075         Add Niagara-2 support.
3076         * doc/invoke.texi: Document -m{cpu,tune}=niagara2.
3077         * config.gcc: Add niagara2 to cpu and tune lists for sparc.
3078         * config/sparc/sparc.md (sparc_cpu_attr): Add niagara2.
3079         (include): Add inclusion of niagara2.md
3080         * config/sparc/sparc.c (niagara2_costs): New.
3081         (sparc_override_options): Add niagara2 entry to cpu_default[]
3082         and cpu_table[].  Set align_functions to 32 on Niagara2.  Use
3083         niagara2_costs when PROCESSOR_NIAGARA2.  Handle Niagara2 for
3084         PARAM_SIMULTANEOUS_PREFETCHES and PARAM_L1_CACHE_LINE_SIZE.
3085         (sparc_initialize_trampoline): Handle niagara2 like niagara.
3086         (sparc64_initialize_trampoline): Likewise.
3087         (sparc_use_sched_lookahead): Likewise.
3088         (sparc_issue_rate): Likewise.
3089         * config/sparc/sol2-bi.h: Handle TARGET_CPU_niagara2 and
3090         mcpu=niagara2
3091         * config/sparc/sparc.h (TARGET_CPU_niagara2): Define.
3092         ({CPP,ASM}_CPU64_DEFAULT_SPEC): Set appropriately for
3093         TARGET_CPU_niagara2.
3094         (PROCESSOR_NIAGARA2): New.
3095         (REGISTER_MOVE_COST): Handle PROCESSOR_NIAGARA2.
3096         (BRANCH_COST): Likewise.
3097         * config/sparc/linux64.h: Handle TARGET_CPU_niagara2.
3098         * config/sparc/sol2.h: Likewise.
3099         * config/sparc/niagara2.md: New file.
3100
3101 2007-10-18  Richard Sandiford  <rsandifo@nildram.co.uk>
3102
3103         * config/mips/mips.c (mips_frame_info): Remove gp_reg_size and
3104         and fp_reg_size.
3105         (mips_compute_frame_info): Remove associated code.
3106         (mips16e_build_save_restore): Check num_fp instead of fp_reg_size.
3107
3108 2007-10-18  Richard Sandiford  <rsandifo@nildram.co.uk>
3109
3110         * config/mips/mips-protos.h (compute_frame_size): Delete.
3111         * config/mips/mips.h: Update comments.
3112         * config/mips/mips.c (mips_frame_info): Remove initialized.
3113         (compute_frame_size): Rename to...
3114         (mips_compute_frame_info): ...this and make static.  Remove the
3115         SIZE argument and return no value.  Remove the setting of initialized.
3116         Update rest of file accordingly.
3117         (mips_set_return_address): Don't call compute_frame_size.
3118         (mips_can_use_return_insn): Don't check df_regs_ever_live_p (31).
3119         Don't call compute_frame_size.
3120
3121 2007-10-18  Richard Sandiford  <rsandifo@nildram.co.uk>
3122
3123         * config/mips/mips-protos.h (mips_frame_pointer_required): Declare.
3124         * config/mips/mips.h (FRAME_POINTER_REQUIRED): Use
3125         mips_hard_frame_pointer_required.
3126         (CAN_ELIMINATE): Rely on FRAME_POINTER_REQUIRED to check for
3127         large MIPS16 frames.
3128         * config/mips/mips.c (mips_frame_pointer_required): New function.
3129
3130 2007-10-18  Richard Sandiford  <rsandifo@nildram.co.uk>
3131
3132         * config/mips/mips.c (mips_frame_info): Add arg_pointer_offset
3133         and hard_frame_pointer_offset.
3134         (mips_debugger_offset): Use hard_frame_pointer_offset.
3135         (mips16e_collect_argument_save_p): Likewise.
3136         (compute_frame_size): Initialize arg_pointer_offset and
3137         hard_frame_pointer_offset.
3138         (mips_initial_elimination_offset): Use them.
3139         (mips_output_function_prologue): Use hard_frame_pointer_offset.
3140         (mips_expand_prologue, mips_expand_epilogue): Likewise.
3141
3142 2007-10-18  Richard Sandiford  <rsandifo@nildram.co.uk>
3143
3144         * config/mips/mips.h (STARTING_FRAME_OFFSET): Remove rtl
3145         profiling code.
3146         * config/mips/mips.c (mips_frame_info): Give num_gp and num_fp type
3147         "unsigned int" rather than "int" and put them with the other
3148         register-related fields.  Put expanded comments above fields
3149         rather than to their right.
3150         (mips16e_mask_registers): Replace the GP_REG_SIZE_PTR argument
3151         with a NUM_REGS_PTR argument.
3152         (mips16e_save_restore_pattern_p): Update accordingly.
3153         (compute_frame_size): Clarify frame diagram.  Rewrite.
3154
3155 2007-10-18  Richard Sandiford  <rsandifo@nildram.co.uk>
3156
3157         * config/mips/mips-ftypes.def: New file.
3158         * config/mips/mips.c (MIPS_FTYPE_NAME1, MIPS_FTYPE_NAME2)
3159         (MIPS_FTYPE_NAME3, MIPS_FTYPE_NAME4): New macros.
3160         (mips_function_type): Redefine using mips-ftypes.def.
3161         (dsp_bdesc): Use POINTER rather than PTR in the MIPS_*_FTYPE_* names.
3162         (mips_builtin_vector_type): New function.
3163         (MIPS_ATYPE_VOID, MIPS_ATYPE_INT, MIPS_ATYPE_POINTER, MIPS_ATYPE_SI)
3164         (MIPS_ATYPE_USI, MIPS_ATYPE_DI, MIPS_ATYPE_SF, MIPS_ATYPE_DF)
3165         (MIPS_ATYPE_V2SF, MIPS_ATYPE_V2HI, MIPS_ATYPE_V4QI, MIPS_FTYPE_ATYPES1)
3166         (MIPS_FTYPE_ATYPES2, MIPS_FTYPE_ATYPES3, MIPS_FTYPE_ATYPES4): New
3167         macros.
3168         (mips_build_function_type): New function.
3169         (mips_init_builtins): Use it to create types lazily.
3170
3171 2007-10-18  Richard Sandiford  <rsandifo@nildram.co.uk>
3172
3173         * config/mips/mips.h (set_volatile): Delete.
3174         * config/mips/mips.c (set_volatile): Delete.
3175         (mips_print_operand_punctuation): New function, split out from
3176         print_operand.  Remove '%{', '%}', '%~', '%&' and '%!'.
3177         Use the same character ordering in the code and the comments.
3178         Use a recursive call to handle '*'.  Abort on unknown characters.
3179         (mips_init_print_operand_punct): New function, split out from
3180         override_options.
3181         (mips_print_int_branch_condition): New function, split out from
3182         print_operand.  Use GET_RTX_NAME.  Use output_operand_lossage
3183         to report unexpected codes.
3184         (mips_print_float_branch_condition): New function, split out from
3185         print_operand.  Use output_operand_lossage to report unexpected codes.
3186         (print_operand): Rework to use a case statement.  Use the
3187         same letter ordering in the code and the comments.  Use
3188         output_operand_lossage to report unexpected codes and
3189         reverse_condition to handle inverted branch conditions.
3190         (override_options): Use mips_init_print_operand_punct.
3191
3192 2007-10-18  Richard Sandiford  <rsandifo@nildram.co.uk>
3193
3194         * config/mips/mips.h: Move variable declarations to end of file and
3195         enclose them all in #ifndef USED_FOR_TARGET.
3196         * config/mips/mips.c: Reorder functions into more logical groups,
3197         and so that callees appear before callers.  Put the targetm
3198         initializer at the end of the file.  Remove forward static
3199         declarations where possible.
3200         (mips_init_builtins): Add "static" to definition.
3201         (mips_expand_builtin, mips_mode_rep_extended): Likewise.
3202
3203 2007-10-18  Richard Sandiford  <rsandifo@nildram.co.uk>
3204
3205         * config/mips/mips.c (TARGET_MIN_ANCHOR_OFFSET): Delete.
3206         (TARGET_MAX_ANCHOR_OFFSET): Delete.
3207         (mips_cannot_force_const_mem): Don't check TARGET_HAVE_TLS.
3208         (mips_set_mips16_mode): Initialize min_anchor_offset and
3209         max_anchor_offset directly to constants.
3210
3211 2007-10-18  Richard Sandiford  <rsandifo@nildram.co.uk>
3212
3213         * config/mips/mips.c: Delete trailing whitespace.
3214
3215 2007-10-18  Richard Sandiford  <rsandifo@nildram.co.uk>
3216
3217         * config/mips/mips.c (mips_expand_call): Use FAKE_CALL_REGNO.
3218         (mips_avoid_hazard): Allow multiple sets for HAZARD_DELAY,
3219         and pick the first.
3220         * config/mips/mips.md (load_call<mode>): Don't make the unspec
3221         depend on FAKE_CALL_REGNO.  Set FAKE_CALL_REGNO.
3222
3223 2007-10-18  David Daney  <ddaney@avtrex.com>
3224
3225         * config/mips/linux-unwind.h (mips_fallback_frame_state): Use new
3226         reg_offset variable to calculate register locations.
3227
3228 2007-10-18  Richard Guenther  <rguenther@suse.de>
3229
3230         * tree-ssa.c (uid_ssaname_map_eq): New function.
3231         (uid_ssaname_map_has): Likewise.
3232         (init_tree_ssa): Allocate default_defs as uid_ssaname map.
3233         * tree-flow.h (struct gimple_df): Make default_defs a
3234         uid_ssaname map.
3235         * tree-dfa.c (gimple_default_def): Deal with it.
3236         (set_default_def): Likewise.
3237
3238 2007-10-18  Richard Guenther  <rguenther@suse.de>
3239
3240         * tree-flow.h (struct gimple_df): Make referenced_vars
3241         a uid_decl_map.
3242         (uid_decl_map_eq): Declare.
3243         (uid_decl_map_hash): Likewise.
3244         * tree-ssa.c (uid_decl_map_eq): New function.
3245         (uid_decl_map_hash): Likewise.
3246         (init_tree_ssa): Make referenced_vars a uid_decl_map.
3247         * tree-flow-inline.h (first_referenced_var): Deal with
3248         the referenced_vars representation change.
3249         (next_referenced_var): Likewise.
3250         * tree-dfa.c (referenced_var_lookup): Likewise.
3251         (referenced_var_check_and_insert): Likewise.
3252         (remove_referenced_var): Likewise.
3253
3254 2007-10-18  Daniel Jacobowitz  <dan@codesourcery.com>
3255
3256         * config/mips/mips.c (mips_dwarf_register_span): New.
3257         (TARGET_DWARF_REGISTER_SPAN): Define.
3258
3259 2007-10-18  Chen Liqin  <liqin@sunnorth.com.cn>
3260
3261         * config.gcc : update score-*-elf(extra_objs).
3262         * config/score/mac.md : Remove.
3263         * config/score/misc.md : Remove.
3264         * config/score/score7.md : Remove.
3265         * config/score/score-mdaux.h : Remove.
3266         * config/score/score-mdaux.c : Remove.
3267         * config/score/score-version.h : Remove.
3268         * config/score/score-generic.md : New.
3269         * config/score/score3.h : New.
3270         * config/score/score3.c : New.
3271         * config/score/score7.h : New.
3272         * config/score/score7.c : New.
3273         * config/score/mul-div.S : add flush_cache score3 support.
3274         * config/score/elf.h : Fix some typos.
3275         * config/score/score.md : merge score3 and score7 pattern.
3276         * config/score/score.c : use to seperate which target it used.
3277         * config/score/score.h : use to seperate the target macro.
3278         * config/score/score.opt : remove -mmac option , add -mscore3,
3279         -mscore3d and -march OPTION support.
3280  
3281 2007-10-17  Andrew Pinski  <andrew_pinski@playstation.sony.com>
3282
3283         * cfgexpand.c (expand_stack_vars): Add checking to make sure
3284         that the offset of a variable is not greater than the size
3285         of the paritition.
3286
3287 2007-10-17  Anatoly Sokolov <aesok@post.ru>
3288
3289         * config/avr/avr.c (avr_mcu_types): Add support for atmega48p, 
3290         atmega88p, atmega168p and atmega328p devices.
3291         * config/avr/avr.h (LINK_SPEC): (Ditto.).
3292         (CRT_BINUTILS_SPECS): (Ditto.).
3293         * config/avr/t-avr (MULTILIB_MATCHES): (Ditto.).
3294
3295 2007-10-17  Maxim Kuvyrkov  <maxim@codesourcery.com>
3296
3297         * sched-ebb.c: Surround code with '#ifdef INSN_SCHEDULING'.
3298         * ddg.c: Ditto.
3299         * sched-deps.c: Ditto.  Remove nested #ifdef's INSN_SCHEDULING.
3300         * sched-int.h: Surround declarations with '#ifdef INSN_SCHEDULING'.
3301         (print_insn): Move declaration to ...
3302         * rtl.h (print_insn): ... here.
3303
3304 2007-10-17  Maxim Kuvyrkov  <maxim@codesourcery.com>
3305
3306         * config/m68k/m68k.h (m68k_sched_cpu, m68k_sched_attr_opx_type,
3307         m68k_sched_attr_opy_type, m68k_sched_attr_size, m68k_sched_attr_op_mem,
3308         m68k_sched_branch_type): Move declarations to ...
3309         * config/m68/m68k-protos.h: ... here.
3310
3311 2007-10-17  Maxim Kuvyrkov  <maxim@codesourcery.com>
3312
3313         * genattrtab.c (main): Rearrange output of insn-attrtab.c headers.
3314
3315 2007-10-17  Eric B. Weddington  <eweddington@cso.atmel.com>
3316
3317         * config/avr/avr.c (avr_mcu_types): Add attiny48.
3318         * config/avr/avr.h (LINK_SPEC): Likewise.
3319         (CRT_BINUTILS_SPECS): Likewsie.
3320         * config/avr/t-avr (MULTILIB_MATCHES): Likewise.
3321
3322 2007-10-17  Eric B. Weddington  <eweddington@cso.atmel.com>
3323
3324         * config/avr/avr.c (avr_mcu_types): Add attiny43u.
3325         * config/avr/avr.h (CRT_BINUTILS_SPECS): Likewsie.
3326         * config/avr/t-avr (MULTILIB_MATCHES): Likewise.
3327
3328 2007-10-17  Uros Bizjak  <ubizjak@gmail.com>
3329
3330         PR middle-end/33794
3331         * reg-stack.c (move_for_stack_reg): Swap input argument of
3332         UNSPEC_TAN insn to the top of the stack.
3333
3334 2007-10-17  Uros Bizjak  <ubizjak@gmail.com>
3335
3336         PR target/32961
3337         * config/i386/i386.c (ix86_expand_builtin) [IX86_BUILTIN_PSLLWI128,
3338         IX86_BUILTIN_PSLLDI128, BUILTIN_PSLLQI128, IX86_BUILTIN_PSRAWI128,
3339         IX86_BUILTIN_PSRADI128, IX86_BUILTIN_PSRLWI128,
3340         IX86_BUILTIN_PSRLDI128, IX86_BUILTIN_PSRLQI128]: Do not require
3341         immediate shift value.
3342         * config/i386/emmintrin.h (_mm_slli_epi16, _mm_slli_epi32,
3343         _mm_slli_epi64, _mm_srai_epi16, _mm_srai_epi32, _mm_srli_epi16,
3344         _mm_srli_epi32, _mm_srli_epi64): Remove 'const' from count argument.
3345         Remove macros for !__OPTIMIZE__ case.
3346
3347 2007-10-17  Daniel Berlin  <dberlin@dberlin.org>
3348
3349         * tree-ssa-structalias.c (rewrite_constraints): Don't test for
3350         directness anymore.
3351         (perform_var_substitution): Only DFS from real nodes. Don't test
3352         for directness.
3353         (unite_pointer_equivalences): Fix broken test.
3354
3355 2007-10-17  Alan Modra  <amodra@bigpond.net.au>
3356
3357         * config/rs6000/rs6000.c (rs6000_emit_epilogue): Correct
3358         altivec sp_offset.  Rearrange sp_offset assignments to
3359         correspond to stack adjustments.  Use frame_reg_rtx for
3360         SPE register restores.  Correct SPE stack adjustment.
3361
3362 2007-10-17  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
3363
3364         * builtins.c (gimplify_va_arg_expr): Use inform for help message.
3365         * toplev.c (check_global_declaration_1): Use appropriate warning
3366         option instead of unnamed warning.
3367         * stor-layout.c (layout_decl): Likewise.
3368         * c-typeck.c (build_conditional_expr): Likewise.
3369         (build_compound_expr): Fix wrong comment.
3370         (build_binary_op): Use appropriate warning option instead of
3371         unnamed warning.
3372         * cfgexpand.c (tree_expand_cfg): Likewise.
3373         * tree-optimize.c (tree_rest_of_compilation): Likewise.
3374         * tree-cfg.c (remove_useless_stmts_warn_notreached): Likewise.
3375         (execute_warn_function_return): Likewise.
3376         * stmt.c (warn_if_unused_value): Likewise.
3377
3378 2007-10-16  Eric B. Weddington  <eweddington@cso.atmel.com>
3379
3380         * config/avr/avr.c (avr_mcu_types): Add at90pwm216, at90pwm316.
3381         * config/avr/avr.h (LINK_SPEC): Likewise and remove regex for
3382         similar devices.
3383         (CRT_BINUTILS_SPECS): Likewsie.
3384         * config/avr/t-avr (MULTILIB_MATCHES): Likewise.
3385
3386 2007-10-16  Amruth Laxman  <amruth.laxman@nsn.com>
3387
3388         PR target/33594
3389         * config/sparc/sparc.h (LOCAL_ALIGNMENT): Define.
3390
3391 2007-10-16  Eric Botcazou  <ebotcazou@libertysurf.fr>
3392
3393         * dce.c (init_dce): Only initialize the obstacks for the fast pass.
3394         (fini_dce): Only release them for the fast pass.
3395         (end_ud_dce): Delete.
3396         (rest_of_handle_ud_dce): Do not modify df_in_progress.
3397         Call fini_dce instead of end_ud_dce.
3398         (rest_of_handle_fast_dce): Do not modify df_in_progress.
3399         (run_fast_df_dce): Reset df_in_progress to false on exit.
3400
3401 2007-10-16  Paolo Bonzini  <bonzini@gnu.org>
3402             Maxim Kuvyrkov  <maxim@codesourcery.com>
3403
3404         * target.h (unspec_may_trap_p): New target hook.
3405         * target-def.h (TARGET_UNSPEC_MAY_TRAP_P): New macro.
3406         * targhooks.c (default_unspec_may_trap_p): Default implementation of
3407         the hook.
3408         * targhooks.h (default_unspec_may_trap_p): Declare it.
3409         * doc/tm.texi (TARGET_UNSPEC_MAY_TRAP_P): Document new hook.
3410         * rtlanal.c (may_trap_p_1): Use new hook.  Make global.
3411         * rtl.h (may_trap_p_1): Declare.
3412         
3413         * config/ia64/ia64.c (ia64_unspec_may_trap_p): New function to
3414         override default hook implementation.
3415         (TARGET_UNSPEC_MAY_TRAP_P): Override default implementation of the
3416         hook.
3417
3418 2007-10-16  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
3419
3420         * doc/invoke.texi (Wextra): Move it just after Wall, list the
3421         options enabled by Wextra and mention Wuninitialized.
3422         
3423 2007-10-15  Nigel Stephens  <nigel@mips.com>
3424
3425         * config/mips/mips.h (LOCAL_ALIGNMENT): Define.
3426
3427 2007-10-15  Jakub Jelinek  <jakub@redhat.com>
3428
3429         PR tree-optimization/33136
3430         * opts.c (decode_options): Don't enable flag_ipa_type_escape.
3431
3432 2007-10-15  Alexandre Oliva  <aoliva@redhat.com>
3433
3434         PR tree-optimization/33735
3435         PR tree-optimization/33572
3436         * tree-inline.c (update_ssa_across_abnormal_edges): Revert
3437         2007-10-09's change.
3438         * except.c (duplicate_eh_regions): Don't look for prev_try
3439         beyond ERT_ALLOWED_EXCEPTIONS with an empty list.
3440
3441 2007-10-15  Alexandre Oliva  <aoliva@redhat.com>
3442
3443         PR middle-end/33706
3444         * tree-inline.c (copy_bb): Use bsi_replace to replace a
3445         __builtin_va_arg_pack-containing call stmt.
3446
3447 2007-10-15  Razya Ladelsky  <razya@il.ibm.com>
3448
3449         * matrix-reorg.c (gate_matrix_reorg): Don't comment out whole
3450         program flag.
3451
3452 2007-10-15  Jakub Jelinek  <jakub@redhat.com>
3453
3454         PR tree-optimization/33619
3455         * tree-ssa-ter.c (is_replaceable_p): Return false for all
3456         calls.
3457
3458 2007-10-15  David Edelsohn  <edelsohn@gnu.org>
3459
3460         * config.gcc (powerpc-ibm-aix5*): Install altivec.h.
3461
3462 2007-10-15  Richard Guenther  <rguenther@suse.de>
3463
3464         * fold-const.c (extract_array_ref): Remove.
3465         (fold_comparison): Handle POINTER_PLUS_EXPR with the
3466         generic address expression comparison folding.  Remove
3467         the folding that used extract_array_ref.
3468
3469 2007-10-15  Maxim Kuvyrkov  <maxim@codesourcery.com>
3470
3471         PR target/33133
3472         * haifa-sched.c (process_insn_forw_deps_be_in_spec): Check if
3473         speculation type of insn can be changed before trying to do that.
3474
3475 2007-10-15  Eric Botcazou  <ebotcazou@libertysurf.fr>
3476
3477         * dse.c (struct insn_info): Add 'frame_read' field.
3478         (scan_insn): For the call to a const function, set frame_read if
3479         reload has been run.
3480         If the insn reads the frame, kill the frame related stores.
3481         (scan_reads_nospill): Likewise.
3482
3483 2007-10-14  Jason Merrill  <jason@redhat.com>
3484
3485         * tree-eh.c (optimize_double_finally): Don't assume that the
3486         cleanup we're duplicating is only one statement.
3487
3488 2007-10-14  Kazu Hirata  <kazu@codesourcery.com>
3489
3490         * config/fixed-bit.c, config/i386/cpuid.h, config/i386/i386.c,
3491         config/i386/i386.md, config/i386/sse.md, function.c, jump.c,
3492         modulo-sched.c, ra-conflict.c, toplev.c, tree-eh.c, tree-sra.c,
3493         tree-ssa-dse.c, tree-vect-analyze.c, tree-vect-patterns.c,
3494         tree-vect-transform.c: Fix comment typos.
3495         * doc/extend.texi: Fix a typo.
3496
3497         * c-common.h: Remove the prototype for c_expand_body.
3498         * c-tree.h: Remove the prototype for c_disregard_inline_limits.
3499         * tree.h: Remove the prototype for fold_build_call_expr.
3500
3501         * c-objc-common.h (LANG_HOOKS_TREE_INLINING_CANNOT_INLINE_TREE_FN):
3502         Remove.
3503         * c-tree.h: Remove the prototype for c_cannot_inline_tree_fn.
3504
3505 2007-10-13  David Edelsohn  <edelsohn@gnu.org>
3506
3507         * config/rs6000/aix53.h: New file.
3508         * config/rs6000/aix{41,43,51,52}.h (TARGET_ALTIVEC): Define to 0.
3509         (TARGET_ALTIVEC_ABI): Same.
3510         * config/rs6000/aix.h (TARGET_ALTIVEC): Delete.
3511         (TARGET_ALTIVEC_ABI): Delete.
3512         * config.gcc (powerpc-ibm-aix5*): Rename to aix5.2.  Add new
3513         stanza defaulting to aix5.3.
3514
3515 2007-10-12  Nathan Froyd  <froydnj@codesourcery.com>
3516
3517         * config/i386/i386.md (SI_REG, DI_REG): New constants.
3518         (strmov): Use defined constants.
3519         (cmpstrnsi): Likewise.
3520         * config/i386/i386.c (decide_alg): Use defined constants.
3521         (ix86_expand_strlen): Likewise.
3522
3523 2007-10-12  Richard Sandiford  <rsandifo@nildram.co.uk>
3524
3525         * dse.c (find_shift_sequence): Reinstate "<= UNITS_PER_WORD" condition.
3526         * var-tracking.c (micro_operation_def): Update comment on u.loc.
3527         (mode_for_reg_attrs, var_lowpart): New functions.
3528         (add_uses): Consider recording a lowpart of LOC for MO_USE.
3529         (add_stores): Likewise MO_SET and MO_COPY.  If the source of a set
3530         or copy is known, set LOC to the SET that performs the set, instead
3531         of the destination.
3532         (find_src_status, find_src_set_src): Remove LOC parameter.
3533         Replace INSN with the source value.
3534         (compute_bb_dataflow, emit_notes_in_bb): Check for a SET u.loc when
3535         handling MO_SET and MO_COPY.  Update the calls to find_src_status
3536         and find_src_set_src.
3537
3538 2007-10-12  Nathan Froyd  <froydnj@codesourcery.com>
3539
3540         PR 11001
3541         * config/i386/i386.md (strmov): Check for esi and edi usage.
3542         * config/i386/i386.c (decide_alg): Check whether we can use a
3543         rep prefix and adjust algorithm choice accordingly.
3544         (ix86_expand_strlen): Check for eax, ecx, and edi usage.
3545
3546 2007-10-12  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
3547
3548         * config/c4x/c4x.md (mulqi3, mulhi3): Use optab_libfunc.
3549
3550 2007-10-12  Kenneth Zadeck <zadeck@naturalbridge.com>
3551
3552         * global.c (build_insn_chain): Formatting fixes.
3553
3554 2007-10-12  Richard Guenther <rguenther@suse.de>
3555
3556         * tree-ssa-forwprop.c (forward_propagate_into_cond): For
3557         combining both operands require either both have single uses
3558         or combining to a constant.
3559
3560 2007-10-12  Richard Guenther  <rguenther@suse.de>
3561
3562         PR middle-end/26198
3563         * tree-ssa-forwprop.c (can_propagate_from): Do not propagate from
3564         a rhs with side-effects or which is a load.
3565         (forward_propagate_into_cond): Also try combining both operands.
3566
3567 2007-10-12  Uros Bizjak  <ubizjak@gmail.com>
3568
3569         PR tree-optimization/33742
3570         * tree-vect-transform.c (vectorizable_operation): Return false
3571         if get_vectype_for_scalar_type for scalar_dest can't be determined.
3572         (vectorizable_call): Same for rhs_type and lhs_type.
3573
3574 2007-10-12  Jakub Jelinek  <jakub@redhat.com>
3575
3576         PR tree-optimization/33645
3577         * tree-ssa-live.c (mark_all_vars_used): Add data argument,
3578         pass it to walk_tree.
3579         (mark_all_vars_used_1): Pass data through to mark_all_vars_used.
3580         When calling set_is_used on a VAR_DECL, if data is not NULL and
3581         its DECL_UID is in the bitmap, call mark_all_vars_used on its
3582         DECL_INITIAL after clearing the bit in bitmap.
3583         (remove_unused_locals): Adjust mark_all_vars_used callers.
3584         Instead of removing unused global vars from unexpanded_var_list
3585         immediately record them in bitmap, call mark_all_vars_used on
3586         all used global vars from unexpanded_var_list and only purge
3587         global vars that weren't found used even during that step.
3588  
3589 2007-10-11  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
3590
3591         * gthr-posix.h (__gthread_active_init): Create detached instead of
3592         joinable thread when testing whether threads are active on hppa-hpux.
3593         * gthr-posix95.h (__gthread_active_init): Likewise.
3594
3595 2007-10-11  Kenneth Zadeck <zadeck@naturalbridge.com>
3596
3597         PR middle-end/33676
3598         * global.c (build_insn_chain): Include insn that occur between
3599         basic blocks.
3600         
3601 2007-10-11  Tom Tromey  <tromey@redhat.com>
3602
3603         * gengtype-yacc.y: Delete.
3604
3605 2007-10-11  Uros Bizjak  <ubizjak@gmail.com>
3606
3607         * config/i386/i386.md (AX_REG, DX_REG, CX_REG): New constants.
3608         * config/i386/i386.c (ix86_function_arg_regno_p, function_arg_32,
3609         function_value_32, function_value_64, function_value_ms_64,
3610         setup_incoming_varargs_64, ix86_expand_prologue, ix86_expand_call,
3611         legitimize_tls_address, x86_this_parameter, x86_output_mi_thunk):
3612         Use new constants.
3613
3614 2007-10-11  Richard Guenther  <rguenther@suse.de>
3615
3616         * gcse.c (hash_scan_set): If the next nonnote insn is in
3617         a different basic block insert the set.
3618
3619 2007-10-11  Richard Guenther  <rguenther@suse.de>
3620
3621         PR middle-end/33724
3622         * tree-cfg.c (one_pointer_to_useless_type_conversion_p): New function.
3623         (verify_gimple_expr): Use it to verify pointer-to types for
3624         ADDR_EXPRs.
3625
3626 2007-10-11  Richard Guenther  <rguenther@suse.de>
3627
3628         PR c/33726
3629         * c-typeck.c (build_array_ref): Do not strip qualifiers from
3630         the array element type.
3631
3632 2007-10-11  Eric Botcazou  <ebotcazou@libertysurf.fr>
3633
3634         PR rtl-optimization/33638
3635         * dse.c (struct insn_info): Remove 'stack_read' field,
3636         add 'stack_pointer_based' field.
3637         (record_store): For a store with non-constant base, record
3638         whether it is stack pointer based.
3639         (scan_insn): For the call to a const function, remove stack
3640         pointer based stores from the list of local active stores.
3641         (scan_reads_nospill): Delete code dealing with const functions.
3642
3643 2007-10-10  Peter Bergner  <bergner@vnet.ibm.com>
3644
3645         * ra-conflict.c (partial_bitnum, max_bitnum): Change type of variables
3646         to HOST_WIDE_INT.
3647         (conflict_p, set_conflict, set_conflicts): Likewise.
3648         * global.c (global_alloc): Likewise.
3649         * ra.h: Update prototypes.
3650
3651 2007-10-10  Wolfgang Gellerich  <gellerich@de.ibm.com>
3652
3653         * opth-gen.awk: Fixed generation of comment stating the origin
3654           of options.h
3655
3656 2007-10-10  Kazu Hirata  <kazu@codesourcery.com>
3657
3658         Revert:
3659         2007-10-09  Kazu Hirata  <kazu@codesourcery.com>
3660         * longlong.h (count_leading_zeros): Replace '{' and '}' with '%{'
3661         and '%}', respectively.
3662
3663         Revert:
3664         2007-10-09  Kazu Hirata  <kazu@codesourcery.com>
3665         * config/m68k/m68k.c (print_operand): Handle '{' and '}'.
3666         * config/m68k/m68k.h (PRINT_OPERAND_PUNCT_VALID_P): Accept '{'
3667         and '}'.
3668         * config/m68k/m68k.md: Replace '{' with '%{' where '{' is
3669         meant to be output.
3670
3671         Revert:
3672         2007-10-07  Kazu Hirata  <kazu@codesourcery.com>
3673         * config/m68k/m68k.c, config/m68k/m68k.md: Use the assembly
3674         syntax for ASSEMBLER_DIALECT.
3675         * config/m68k/m68k.h (ASSEMBLER_DIALECT): New.
3676
3677 2007-10-10  Revital Eres  <eres@il.ibm.com>
3678
3679         * modulo-sched.c (check_nodes_order): Dump the final order of
3680         the nodes.
3681         (get_sched_window): Add dump info.
3682         (calculate_order_params): Dump order params of the nodes.
3683
3684 2007-10-09  Kenneth Zadeck <zadeck@naturalbridge.com>
3685
3686         PR middle-end/33669
3687         * ra-conflict.c (record_one_conflict_between_regnos, 
3688         set_conflicts_for_earlyclobber, global_conflicts): Improved logging.
3689         (global_conflicts): Enhanced incorrect check.
3690         
3691 2007-10-09  Geoffrey Keating  <geoffk@apple.com>
3692
3693         * dwarf2out.c (output_call_frame_info): FDEs are always emitted
3694         if flag_exceptions is not set.
3695         * config/darwin.c (darwin_emit_unwind_label): Rewrite to use
3696         assemble_name rather than incorrectly emulating it.
3697
3698         * doc/extend.texi (Deprecated Features): Mention that <? and >? and
3699         friends are removed from G++.
3700
3701 2007-10-09  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
3702
3703         * c-opts.c (c_common_handle_option): -Wnontemplate-friend,
3704         -Wwrite-strings and -Wmultichar are enabled by default, so Wall
3705         enabling them is redundant. Don't check two times for
3706         c_dialect_cxx.
3707         
3708 2007-10-09  H.J. Lu  <hongjiu.lu@intel.com>
3709
3710         * ra-conflict.c (record_one_conflict_between_regnos): Revert
3711         the last change.
3712         (set_conflicts_for_earlyclobber): Likewise.
3713         (global_conflicts): Likewise.
3714
3715 2007-10-09  Kazu Hirata  <kazu@codesourcery.com>
3716
3717         * longlong.h (count_leading_zeros): Replace '{' and '}' with '%{'
3718         and '%}', respectively.
3719
3720 2007-10-09  Kazu Hirata  <kazu@codesourcery.com>
3721
3722         * config/m68k/m68k.c (print_operand): Handle '{' and '}'.
3723         * config/m68k/m68k.h (PRINT_OPERAND_PUNCT_VALID_P): Accept '{'
3724         and '}'.
3725         * config/m68k/m68k.md: Replace '{' with '%{' where '{' is
3726         meant to be output.
3727
3728 2007-10-09  Richard Guenther  <rguenther@suse.de>
3729
3730         PR middle-end/33692
3731         * gimplify.c (canonicalize_component_ref): Honor qualifiers
3732         of referenced structure and component.
3733
3734 2007-10-09  Kenneth Zadeck <zadeck@naturalbridge.com>
3735
3736         PR middle-end/33669
3737         * ra-conflict.c (record_one_conflict_between_regnos,
3738         set_conflicts_for_earlyclobber, global_conflicts): Improved
3739         logging.
3740         (global_conflicts): Removed incorrect check.
3741
3742 2007-10-09  Richard Sandiford  <rsandifo@nildram.co.uk>
3743
3744         PR tree-optimization/33615
3745         * tree-ssa-pre.c (compute_avail): Don't call make_values_for_stmt
3746         if the statement might throw.  Fix formatting.
3747
3748 2007-10-09  Richard Sandiford  <rsandifo@nildram.co.uk>
3749
3750         PR tree-optimization/33615
3751         * tree-ssa-loop-im.c (movement_possibility): Return MOVE_IMPOSSIBLE
3752         if the rhs might throw.
3753
3754 2007-10-09  Jan Hubicka  <jh@suse.cz>
3755
3756         * invoke.texi (align-threshold, align-loop-iterations): Document.
3757         * final.c: Include cfgloop.h, params.h
3758         (compute_alignments): Dump decisions and compare them with loop
3759         structure; honor given parameters.
3760         (pass_compute_alignments): New dump file.
3761         * params.def (PARAM_ALIGN_THRESHOLD, PARAM_ALIGN_LOOP_ITERATIONS): New.
3762         * Makefile.in (final.o): Add dependency on cfgloop.h and params.h
3763
3764 2007-10-09  James E. Wilson  <wilson@specifix.com>
3765
3766         PR tree-optimization/33655
3767         PR middle-end/22156
3768         * tree-sra.c (bitfield_overlaps_p): When fld->element is INTEGER_CST,
3769         convert it to bitsizetype before size_binop call.
3770
3771 2007-10-09  Alexandre Oliva  <aoliva@redhat.com>
3772
3773         PR tree-optimization/33572
3774         * tree-inline.c (update_ssa_across_abnormal_edges): Tolerate
3775         the absence of a corresponding edge from the exit block.
3776
3777 2007-10-09  Alexandre Oliva  <aoliva@redhat.com>
3778
3779         PR middle-end/22156
3780         * tree-sra.c (instantiate_element): Use BYTES_BIG_ENDIAN for
3781         bit-field layout.
3782         (sra_build_assignment): Likewise.  Set up mask depending on
3783         precision, not type.
3784         (sra_build_bf_assignment): Use BYTES_BIG_ENDIAN.  Don't overflow
3785         computing bit masks.
3786         (sra_build_elt_assignment): Don't view-convert from signed to
3787         unsigned.
3788         (sra_explode_bitfield_assignment): Use bit-field type if
3789         possible.  Use BYTES_BIG_ENDIAN.
3790
3791 2007-10-08  Alexandre Oliva  <aoliva@redhat.com>
3792
3793         PR middle-end/22156
3794         * tree-sra.c (scalarize_lsdt): Fix thinko in testing whether
3795         the original stmt can throw.
3796         (sra_build_bf_assignment): Fix type mismatch when applying negated
3797         mask.
3798
3799 2007-10-08  Geoffrey Keating  <geoffk@apple.com>
3800
3801         * config/darwin.h (DARWIN_REGISTER_TARGET_PRAGMAS): Register
3802         '#pragma mark' to be executed at preprocessing time.
3803
3804 2007-10-08  Ollie Wild  <aaw@google.com>
3805
3806         * varasm.c (compare_constant): Removed call to
3807         lang_hooks.expand_constant.
3808         (copy_constants): Removed call to lang_hooks.expand_constant.
3809         (compute_reloc_for_constant): Removed call to
3810         lang_hooks.expand_constant.
3811         (output_addressed_constants): Removed call to
3812         lang_hooks.expand_constant.
3813         (constructor_static_from_elts_p): Removed call to
3814         lang_hooks.expand_constant.
3815         (output_constant): Removed calls to lang_hooks.expand_constant.
3816         * langhooks.h (struct lang_hooks): Removed field expand_constant.
3817         * langhooks-def.h (lhd_return_tree): Removed.
3818         (LANG_HOOKS_EXPAND_CONSTANT): Removed.
3819         (LANG_HOOKS_INITIALIZER): Removed LANG_HOOKS_EXPAND_CONSTANT.
3820         * langhooks.c (lhd_return_tree): Removed.
3821
3822 2007-10-08  Mark Shinwell  <shinwell@codesourcery.com>
3823
3824         * combine.c (setup_incoming_promotions): Ensure that
3825         arguments that have not undergone mode promotions do not
3826         incorrectly get marked as being sign- or zero-extended.
3827
3828 2007-10-08  Richard Guenther  <rguenther@suse.de>
3829
3830         PR middle-end/33693
3831         PR middle-end/33695
3832         PR middle-end/33697
3833         * fold-const.c (fold_binary): Use correct types in folding
3834         of a * (1 << b) to (a << b).  Likewise for ~A & ~B to ~(A | B)
3835         and building of RROTATE_EXPR.
3836
3837 2007-10-08  Richard Guenther  <rguenther@suse.de>
3838
3839         PR middle-end/33691
3840         PR middle-end/33694
3841         PR middle-end/33696
3842         * fold-const.c (fold_binary): Use the correct types when
3843         folding (A | CST1) & CST2 to (A & CST2) | (CST1 & CST2).
3844         (fold_binary): Use the correct types when folding
3845         (-A) - B to (-B) - A.
3846         (fold_unary): Use the correct types when folding ~(X).
3847
3848 2007-10-08  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
3849
3850         * doc/invoke.texi (Wall): fix formatting issues.
3851         
3852 2007-10-07  Richard Sandiford  <rsandifo@nildram.co.uk>
3853
3854         * simplify-rtx.c (simplify_binary_operation_1): Canonicalize
3855         truncated shift counts.
3856
3857 2007-10-07  Kazu Hirata  <kazu@codesourcery.com>
3858
3859         * config/m68k/m68k.c, config/m68k/m68k.md: Use the assembly
3860         syntax for ASSEMBLER_DIALECT.
3861         * config/m68k/m68k.h (ASSEMBLER_DIALECT): New.
3862
3863 2007-10-06  Eric Botcazou  <ebotcazou@adacore.com>
3864             Nathan Froyd  <froydnj@codesourcery.com>
3865
3866         * dwarf2out.c (dwarf2out_frame_init): Check for DWARF2_FRAME_INFO
3867         when determining whether to record INCOMING_RETURN_ADDR_RTX.
3868
3869 2007-10-06  Eric Botcazou  <ebotcazou@adacore.com>
3870
3871         Revert:
3872         2007-02-12  Eric Botcazou  <ebotcazou@adacore.com>
3873
3874         * tree.h (DECL_IGNORED_P): Document further effect for FUNCTION_DECL.
3875         * cgraphunit.c (cgraph_expand_function): If DECL_IGNORED_P is set on
3876         the function, temporarily point the debug interface to the null one.
3877
3878 2007-10-06  Alexandre Oliva  <aoliva@redhat.com>
3879
3880         PR tree-optimization/33655
3881         PR middle-end/22156
3882         * tree-sra.c (bitfield_overlaps_p): Handle array and complex
3883         elements.
3884
3885 2007-10-06  Alexandre Oliva  <aoliva@redhat.com>
3886
3887         PR tree-optimization/33572
3888         * tree-cfg.c (verify_stmts): Check for missing PHI defs.
3889         * tree-inline.c (update_ssa_across_eh_edges): Renamed to...
3890         (update_ssa_across_abnormal_edges): ... this.  Set slots in the
3891         return PHI node.
3892         (copy_edges_for_bb): Handle nonlocal label edges.
3893         (make_nonlocal_label_edges): Deleted.
3894         (optimize_inline_calls): Don't call it.
3895
3896 2007-10-05  Hans-Peter Nilsson  <hp@axis.com>
3897
3898         * gthr-single.h: Revert last change.
3899
3900 2007-10-05  Michael Matz  <matz@suse.de>
3901
3902         PR middle-end/33667
3903         * lower-subreg.c (decompose_multiword_subregs): Use
3904         validate_unshare_change().
3905
3906 2007-10-05  Peter Bergner  <bergner@vnet.ibm.com>
3907
3908         * ra-conflict.c: Include "sparseset.h".
3909         (conflicts): Change to HOST_WIDEST_FAST_INT.
3910         (allocnos_live): Redefine variable as a sparseset.
3911         (SET_ALLOCNO_LIVE, CLEAR_ALLOCNO_LIVE, GET_ALLOCNO_LIVE):
3912         Delete macros.
3913         (allocno_row_words): Removed global variable.
3914         (partial_bitnum, max_bitnum, adjacency_pool, adjacency): New variables.
3915         (CONFLICT_BITNUM, CONFLICT_BITNUM_FAST): New defines.
3916         (conflict_p, set_conflict_p, set_conflicts_p): New functions.
3917         (record_one_conflict_between_regnos): Cache allocno values and reuse.
3918         Use set_conflict_p.
3919         (record_one_conflict): Update uses of allocnos_live to use
3920         the sparseset routines.  Use set_conflicts_p.
3921         (mark_reg_store): Likewise.
3922         (set_reg_in_live): Likewise.
3923         (global_conflicts): Update uses of allocnos_live.
3924         Use the new adjacency list to visit an allocno's neighbors
3925         rather than iterating over all possible allocnos.
3926         Call set_conflicts_p to setup conflicts rather than adding
3927         them manually.
3928         * global.c: Comments updated.  
3929         (CONFLICTP): Delete define.
3930         (regno_compare): New function.  Add prototype.
3931         (global_alloc): Sort the allocno to regno mapping according to
3932         which basic blocks the regnos are referenced in.  Modify the
3933         conflict bit matrix to a compressed triangular bitmatrix.
3934         Only allocate the conflict bit matrix and adjacency lists if
3935         we are actually going to allocate something.
3936         (expand_preferences): Use conflict_p.  Update uses of allocnos_live.
3937         (prune_preferences): Use the FOR_EACH_CONFLICT macro to visit an
3938         allocno's neighbors rather than iterating over all possible allocnos.
3939         (mirror_conflicts): Removed function.
3940         (dump_conflicts): Iterate over regnos rather than allocnos so
3941         that all dump output will be sorted by regno number.
3942         Use the FOR_EACH_CONFLICT macro.
3943         * ra.h: Comments updated.
3944         (conflicts): Update prototype to HOST_WIDEST_FAST_INT.
3945         (partial_bitnum, max_bitnum, adjacency, adjacency_pool):
3946         Add prototypes.
3947         (ADJACENCY_VEC_LENGTH, FOR_EACH_CONFLICT): New defines.
3948         (adjacency_list_d, adjacency_iterator_d): New types.
3949         (add_neighbor, adjacency_iter_init, adjacency_iter_done,
3950         adjacency_iter_next, regno_basic_block): New static inline functions.
3951         (EXECUTE_IF_SET_IN_ALLOCNO_SET): Removed define.
3952         (conflict_p): Add function prototype.
3953         * sparseset.h, sparseset.c: New files.
3954         * Makefile.in (OBJS-common): Add sparseset.o.
3955         (sparseset.o): New rule.
3956
3957 2007-10-05  Richard Guenther  <rguenther@suse.de>
3958
3959         PR middle-end/33666
3960         * fold-const.c (fold_unary): Do not fold (long long)(int)ptr
3961         to (long long)ptr.
3962
3963 2007-10-05  Michael Matz  <matz@suse.de>
3964
3965         PR inline-asm/33600
3966         * function.c (match_asm_constraints_1): Check for input
3967         being used in the outputs.
3968
3969 2007-10-05  Richard Guenther  <rguenther@suse.de>
3970
3971         * tree-cfg.c (verify_gimple_expr): Accept OBJ_TYPE_REF.
3972
3973 2007-10-05  Richard Sandiford  <rsandifo@nildram.co.uk>
3974
3975         PR target/33635
3976         * config/mips/mips.c (mips_register_move_cost): Rewrite to use
3977         subset checks.  Make the cost of FPR -> FPR moves depend on
3978         mips_mode_ok_for_mov_fmt_p.
3979
3980 2007-10-04  Doug Kwan  <dougkwan@google.com>
3981
3982         * gthr-posix.h (__gthread_cond_broadcast, __gthread_cond_wait,
3983         __gthread_cond_wait_recursive): Add to extend interface for POSIX
3984         conditional variables. (__GTHREAD_HAS_COND): Macro defined to signify
3985         support of conditional variables.
3986         * gthr-posix95.h (__gthread_cond_broadcast, __gthread_cond_wait,
3987         __gthread_cond_wait_recursive): Add to extend interface for POSIX
3988         conditional variables. (__GTHREAD_HAS_COND): Macro defined to signify
3989         support of conditional variables.
3990         * gthr-single.h (__gthread_cond_broadcast, __gthread_cond_wait,
3991         __gthread_cond_wait_recursive): Add to extend interface for POSIX
3992         conditional variables.
3993         * gthr.h: Update comments to document new interface.
3994
3995 2007-10-04  Geoffrey Keating  <geoffk@apple.com>
3996
3997         * cgraphunit.c (cgraph_build_static_cdtor): Don't set
3998         DECL_IGNORED_P.
3999
4000 2007-10-04  Anatoly Sokolov <aesok@post.ru>
4001
4002         * config/avr/avr.c (expand_epilogue): Don't set RTX_FRAME_RELATED_P.
4003
4004 2007-10-04  Richard Guenther  <rguenther@suse.de>
4005
4006         PR middle-end/33641
4007         * tree-cfg.c (verify_gimple_expr): Operand one of POINTER_PLUS_EXPR
4008         does not need to be of INTEGER_TYPE.
4009         (verify_gimple_2): New function split out from ...
4010         (verify_gimple_1): ... here.  ICE if there was an error during
4011         verification.
4012
4013 2007-10-04  Michael Matz  <matz@suse.de>
4014
4015         PR rtl-optimization/33653
4016         * dce.c (deletable_insn_p_1): Use volatile_refs_p().
4017         * dse.c (scan_insn): Same.
4018
4019 2007-10-04  Kazu Hirata  <kazu@codesourcery.com>
4020
4021         * config.gcc: Remove USE_GAS for m68k targets.
4022
4023 2007-10-04  Richard Guenther  <rguenther@suse.de>
4024
4025         PR tree-optimization/33627
4026         * tree-gimple.h (canonicalize_cond_expr_cond): Declare.
4027         * tree-gimple.c (canonicalize_cond_expr_cond): New function,
4028         split out from ...
4029         * tree-ssa-forwprop.c (combine_cond_expr_cond): ... here.
4030         * tree-ssa-ifcombine.c (ifcombine_iforif): Use it.
4031
4032 2007-10-04  Anatoly Sokolov <aesok@post.ru>
4033
4034         * config/avr/avr.c (commands_in_file, commands_in_prologues, 
4035         commands_in_epilogues): Remove variables.
4036         (avr_file_start): Remove unneded initializations of commands_in_file,
4037         commands_in_prologues and commands_in_epilogues variables.
4038         (avr_file_end): Remove dead code.
4039
4040 2007-10-04  Kazu Hirata  <kazu@codesourcery.com>
4041
4042         * config/m68k/m68k.c (m68k_output_movem): Use the MOTOROLA if
4043         MOTOROLA is to true.
4044
4045 2007-10-03  Richard Sandiford  <rsandifo@nildram.co.uk>
4046
4047         PR target/33635
4048         * config/mips/mips-protos.h (mips_split_64bit_move): Rename to...
4049         (mips_split_doubleword_move): ...this.
4050         * config/mips/mips.c (mips_subword): Extend to handle 64-bit words;
4051         use natural endianness for multi-format FPR values.
4052         (mips_split_64bit_move): Rename to...
4053         (mips_split_doubleword_move): ...this and extend to 64-bit words.
4054         Use move_doubleword_fpr* patterns for moves involving FPRs.
4055         (mips_save_reg): Update the call to mips_split_64bit_move.
4056         (mips_secondary_reload_class): Return NO_REGS for any reload of a
4057         nonzero constant into an FPR if the constant can be forced to memory.
4058         * config/mips/mips.md: Update the splitter calls to
4059         mips_split_64bit_move.
4060         (UNSPEC_LOAD_DF_LOW): Rename to...
4061         (UNSPEC_LOAD_LOW): ...this.
4062         (UNSPEC_LOAD_DF_HIGH): Rename to...
4063         (UNSPEC_LOAD_HIGH): ...this.
4064         (UNSPEC_STORE_DF_HIGH): Rename to...
4065         (UNSPEC_STORE_WORD): ...this.
4066         (SPLITF): New mode iterator.
4067         (HALFMODE): New mode attribute.
4068         (movtf): New expander.
4069         (*movtf_internal): New define_insn_and_split.
4070         (move_doubleword_fpr<mode>): New expander.
4071         (load_df_low, load_df_high, store_df_high, mthc1, mfhc1): Replace
4072         with...
4073         (load_low<mode>, load_high<mode>, store_word<mode>, mthc1<mode>)
4074         (mfhc1<mode>): ...these more general patterns.
4075
4076 2007-10-03  Alexandre Oliva  <aoliva@redhat.com>
4077
4078         * cfgrtl.c (rtl_block_ends_with_call_p): Skip notes at the end.
4079
4080 2007-10-03  Alexandre Oliva  <aoliva@redhat.com>
4081
4082         * gcse.c (hash_scan_set): Insert set in insn before note at
4083         the end of basic block.
4084
4085 2007-10-03  Sebastian Pop  <sebastian.pop@amd.com>
4086
4087         PR tree-optimization/33576
4088         * testsuite/gcc.dg/tree-ssa/pr33576.c: New.
4089         * tree-loop-linear.c (linear_transform_loops): Call remove_iv.
4090         * lambda.h (lambda_loopnest_to_gcc_loopnest): New parameter.
4091         (remove_iv): Declared.
4092         * lambda-code.c (remove_iv): Not static.
4093         (lambda_loopnest_to_gcc_loopnest): New parameter remove_ivs.
4094         Don't remove ivs there, save ivs in the buffer.
4095
4096 2007-10-03  Jason Merrill  <jason@redhat.com>
4097
4098         PR c++/15764
4099         * tree-eh.c (same_handler_p): New fn.
4100         (optimize_double_finally): New fn.
4101         (refactor_eh_r): New fn.
4102         (refactor_eh): New fn.
4103         (pass_refactor_eh): New pass.
4104         * tree-pass.h: Declare it.
4105         * passes.c (init_optimization_passes): Add it.
4106
4107 2007-10-03  Doug Kwan  <dougkwan@google.com>
4108         Richard Guenther  <rguenther@suse.de>
4109
4110         PR debug/31899
4111         * dwarf2out.c (reference_to_unused): Disable sanity checking,
4112         be conservative instead.
4113
4114 2007-10-03  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
4115
4116         PR fortran/26682
4117         * doc/invoke.texi (-fwhole-program): Document that Fortran
4118         doesn't support this option.
4119
4120 2007-10-02  Richard Sandiford  <rsandifo@nildram.co.uk>
4121
4122         PR middle-end/33617
4123         * expr.c (expand_expr_addr_expr_1): Pass CONSTRUCTORs to
4124         expand_expr.
4125
4126 2007-10-02  David Daney  <ddaney@avtrex.com>
4127
4128         * config/mips/mips.md (sync_compare_and_swap<mode>): Handle compare
4129         against constant zero.
4130         * config/mips/mips.h (MIPS_COMPARE_AND_SWAP):  Handle constant zero
4131         operand.
4132
4133 2007-09-02  Kenneth Zadeck <zadeck@naturalbridge.com>
4134
4135         * ra-conflict.c: New file.
4136         * ra.h: New file.
4137         * reload.c (push_reload, find_dummy_reload): Change DF_RA_LIVE
4138         usage to DF_LIVE usage.
4139         (reload): Remove reference to df_get_live_top.
4140         * rtlanal.c (subreg_nregs_with_regno): New function.  
4141         * df-scan.c (df_def_record_1, df_uses_record): Add code to set
4142         DF_REF_EXTRACT, DF_REF_STRICT_LOWER_PART, and DF_REF_SUBREG flags.
4143         (df_has_eh_preds): Removed.
4144         (df_bb_refs_collect, df_bb_refs_collect, df_bb_refs_collect,
4145         df_exit_block_uses_collect): Changed call from df_has_eh_preds to
4146         bb_has_eh_pred.
4147         * global.c (allocno, max_allocno, conflicts, allocno_row_words,
4148         reg_allocno, EXECUTE_IF_SET_IN_ALLOCNO_SET): Moved to ra.h
4149         (SET_ALLOCNO_LIVE, CLEAR_ALLOCNO_LIVE): Moved to ra-conflicts.c.
4150         (regs_set, record_one_conflict, record_conflicts, mark_reg_store,
4151         mark_reg_clobber, mark_reg_conflicts, mark_reg_death): Deleted.
4152         (global_alloc): Turn off rescanning insns after call to
4153         global_conflicts and added call to set_preferences.
4154         (global_conflicts): Moved to ra-alloc.c.
4155         (set_preferences_1, set_preferences): New function.
4156         (mirror_conflicts): Changed types for various variables.
4157         (mark_elimination): Change DF_RA_LIVE
4158         usage to DF_LIVE usage.
4159         (build_insn_chain): Rewritten from scratch and made local.
4160         (print_insn_chain, print_insn_chains): New functions.
4161         (dump_conflicts): Do not print conflicts for fixed_regs.
4162         (rest_of_handle_global_alloc): Turn off insn rescanning.
4163         * hard-reg-set.h: Fixed comment.
4164         * local-alloc.c (update_equiv_regs): Change DF_RA_LIVE
4165         usage to DF_LIVE usage and delete refs to TOP sets.
4166         (block_alloc): Mark regs as live if they are in the artificial
4167         defs at top of block.
4168         (find_stack_regs): New function.
4169         (rest_of_handle_local_alloc): Changed urec problem to live
4170         problem and do not turn off df rescanning.
4171         * df.h (DF_UREC, DF_UREC_BB_INFO, DF_LIVE_TOP, DF_RA_LIVE_IN,
4172         DF_RA_LIVE_TOP, DF_RA_LIVE_OUT, df_urec_bb_info, df_urec,
4173         df_urec_add_problem, df_urec_get_bb_info, df_has_eh_preds): Removed.
4174         (DF_CHAIN, DF_NOTE, DF_CHAIN): Renumbered.
4175         (DF_REF_EXTRACT, DF_REF_STRICT_LOWER_PART, DF_REF_SUBREG): New
4176         fields in df_ref_flags.  The rest have been renumbered.  
4177         * init-regs.c (initialize_uninitialized_regs): Enhanced debugging
4178         at -O1.
4179         * rtl.h (subreg_nregs_with_regno): New function.
4180         * df-problems.c: (df_get_live_out, df_get_live_in,
4181         df_get_live_top): Removed reference to DF_RA_LIVE.
4182         (df_lr_reset, df_lr_transfer_function, df_live_free_bb_info,
4183         df_live_alloc, df_live_reset, df_live_local_finalize,
4184         df_live_free): Make top set only if different from in set.
4185         (df_lr_top_dump, df_live_top_dump): Only print top set if
4186         different from in set.
4187         (df_lr_bb_local_compute): Removed unnecessary check.
4188         (df_urec_problem_data, df_urec_set_bb_info, df_urec_free_bb_info, 
4189         df_urec_alloc, df_urec_mark_reg_change, earlyclobber_regclass, 
4190         df_urec_check_earlyclobber, df_urec_mark_reg_use_for_earlyclobber,
4191         df_urec_mark_reg_use_for_earlyclobber_1, df_urec_bb_local_compute,
4192         df_urec_local_compute, df_urec_init, df_urec_local_finalize, 
4193         df_urec_confluence_n, df_urec_transfer_function, df_urec_free, 
4194         df_urec_top_dump, df_urec_bottom_dump, problem_UREC,
4195         df_urec_add_problem): Removed.
4196         (df_simulate_fixup_sets): Changed call from df_has_eh_preds to
4197         bb_has_eh_pred. 
4198         * Makefile.in (ra-conflict.o, ra.h): New dependencies.
4199         * basic_block.h (bb_has_abnormal_pred): New function.
4200         * reload1.c (compute_use_by_pseudos): Change DF_RA_LIVE
4201         usage to DF_LIVE usage.
4202         
4203 2007-10-02  Revital Eres  <eres@il.ibm.com>
4204
4205         * config/rs6000/predicates.md (easy_vector_constant): Return false
4206         for 750CL paired vectors.
4207         * config/rs6000/paired.md (movv2sf_paired): Fix move of easy
4208         vector constant.
4209         (vec_initv2sf): Add new description.
4210         (vconcatsf): Likewise.
4211         * config/rs6000/rs6000-protos.h: Declare paired_expand_vector_init.
4212         * config/rs6000/rs6000.c (paired_expand_vector_init): New function.
4213
4214 2007-10-01  Alexandre Oliva  <aoliva@redhat.com>
4215
4216         * tree-ssa-sink.c (sink_code_in_bb): Don't stop sinking after
4217         sinking the last stmt in a BB.
4218
4219 2007-10-01  Alexandre Oliva  <aoliva@redhat.com>
4220
4221         PR middle-end/22156
4222         * tree-sra.c (struct sra_elt): Add in_bitfld_block.
4223         (sra_hash_tree): Handle BIT_FIELD_REFs.
4224         (sra_elt_hash): Don't hash bitfld blocks.
4225         (sra_elt_eq): Skip them in parent compares as well.  Handle
4226         BIT_FIELD_REFs.
4227         (build_element_name_1): Handle BIT_FIELD_REFs.
4228         (instantiate_element): Propagate nowarn from parents.  Create
4229         BIT_FIELD_REF for variables that are widened by scalarization.
4230         Gimple-zero-initialize all bit-field variables that are not
4231         part of parameters that are going to be scalarized on entry.
4232         (instantiate_missing_elements_1): Return the sra_elt.
4233         (canon_type_for_field): New.
4234         (try_instantiate_multiple_fields): New.  Infer widest possible
4235         access mode from decl or member type, but clip it at word
4236         size, and only widen it if a field crosses an alignment
4237         boundary.
4238         (instantiate_missing_elements): Use them.
4239         (generate_one_element_ref): Handle BIT_FIELD_REFs.
4240         (scalar_bitfield_p): New.
4241         (sra_build_assignment): Optimize assignments from scalarizable
4242         BIT_FIELD_REFs.  Use BITS_BIG_ENDIAN to determine shift
4243         counts.
4244         (REPLDUP): New.
4245         (sra_build_bf_assignment): New.  Optimize assignments to
4246         scalarizable BIT_FIELD_REFs.
4247         (sra_build_elt_assignment): New.  Optimize BIT_FIELD_REF
4248         assignments to full variables.
4249         (generate_copy_inout): Use the new macros and functions.
4250         (generate_element_copy): Likewise.  Handle bitfld differences.
4251         (generate_element_zero): Don't recurse for blocks.  Use
4252         sra_build_elt_assignment.
4253         (generate_one_element_init): Take elt instead of var.  Use
4254         sra_build_elt_assignment.
4255         (generate_element_init_1): Adjust.
4256         (bitfield_overlap_info): New struct.
4257         (bitfield_overlaps_p): New.
4258         (sra_explode_bitfield_assignment): New.  Adjust widened
4259         variables to account for endianness.
4260         (sra_sync_for_bitfield_assignment): New.
4261         (scalarize_use): Re-expand assignment to/from scalarized
4262         BIT_FIELD_REFs.  Explode or sync needed members for
4263         BIT_FIELD_REFs accesses or assignments.  Use REPLDUP.
4264         (scalarize_copy): Use REPLDUP.
4265         (scalarize_ldst): Move assert before dereference.  Adjust EH
4266         handling.
4267         (dump_sra_elt_name): Handle BIT_FIELD_REFs.
4268
4269 2007-10-01  Paolo Bonzini  <bonzini@gnu.org>
4270
4271         * simplify-rtx.c (comparison_result, simplify_relational_operation_1):
4272         Rename CR_* constants to CMP_*.  Fix spacing.
4273
4274 2007-10-01  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
4275
4276         PR other/33585
4277         * Makefile.in (build_html_dir/gccinstall): gccinstall.texi needs
4278         to be processed with the special script doc/install.texi2html.
4279         
4280 2007-09-30  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
4281
4282         * doc/invoke.texi (Wall): List the options enabled by Wall.
4283         (Wstrict-aliasing): Add missing @option.
4284         
4285 2007-09-30  Richard Sandiford  <rsandifo@nildram.co.uk>
4286
4287         * config/mips/mips.c (mips_split_64bit_move): Use gen_rtx_REG_offset
4288         rather than gen_lowpart to change a register from DImode to DFmode.
4289         (mips_cannot_change_mode_class): Only allow FPRs to change mode if
4290         both FROM and TO are integer modes that are no bigger than 4 bytes.
4291         (mips_mode_ok_for_mov_fmt_p): New function.
4292         (mips_preferred_reload_class): Use it instead of FLOAT_MODE_P.
4293         (mips_secondary_reload_class): Tweak formatting and comments.
4294         Use reg_class_subset_p instead of direct comparisons with
4295         classes.  Only allow direct FPR<->FPR moves for modes that
4296         satisfy mips_mode_ok_for_mov_fmt_p.  Only allow loads and stores
4297         for 4- and 8-byte types.  Handle reloads in which X is an FPR.
4298         * config/mips/mips.md (*movdi_gp32_fp64): Remove f<-f alternative.
4299         (*movdi_64bit): Likewise.
4300         (*movsi_internal): Likewise.
4301         (*movhi_internal): Likewise.
4302         (*movqi_internal): Likewise.
4303
4304 2007-09-30  Diego Novillo  <dnovillo@google.com>
4305
4306         PR 33593
4307         * tree-ssa-ter.c (is_replaceable_p): Return false if STMT may
4308         throw an exception.
4309
4310 2007-09-30  Uros Bizjak  <ubizjak@gmail.com>
4311
4312         PR tree-optimization/33597
4313         * tree-vect-analyze.c (vect_build_slp_tree): Check if optab handler
4314         for LSHIFT_EXPR and RSHIFT_EXPR is available for vec_mode.
4315
4316 2007-09-28  Uros Bizjak  <ubizjak@gmail.com>
4317
4318         * config/i386/i386.c (ix86_expand_move): Use can_create_pseudo_p ()
4319         instead of variants of (!reload_in_progress && !reload_completed).
4320         (x86_expand_vector_move): Ditto.
4321
4322 2007-09-28  Ollie Wild  <aaw@google.com>
4323
4324         Revert
4325         2007-09-27  Ollie Wild  <aaw@google.com>
4326
4327         * varasm.c (compare_constant): Removed call to
4328         lang_hooks.expand_constant.
4329         (copy_constants): Removed call to lang_hooks.expand_constant.
4330         (compute_reloc_for_constant): Removed call to
4331         lang_hooks.expand_constant.
4332         (output_addressed_constants): Removed call to
4333         lang_hooks.expand_constant.
4334         (constructor_static_from_elts_p): Removed call to
4335         lang_hooks.expand_constant.
4336         (output_constant): Removed calls to lang_hooks.expand_constant.
4337         * langhooks.h (struct lang_hooks): Removed field expand_constant.
4338         * langhooks-def.h (lhd_return_tree): Removed.
4339         (LANG_HOOKS_EXPAND_CONSTANT): Removed.
4340         (LANG_HOOKS_INITIALIZER): Removed LANG_HOOKS_EXPAND_CONSTANT.
4341         * langhooks.c (lhd_return_tree): Removed.
4342
4343 2007-09-28  Andrew Pinski  <andrew_pinski@playstation.sony.com>
4344
4345         PR target/33347
4346         * config/spu/spu.c (spu_expand_insv): Call copy_rtx on the second
4347         argument to gen_selb.
4348
4349 2007-09-28  Chao-ying Fu  <fu@mips.com>
4350
4351         * libgcc-std.ver: Add fixed-point routines to GCC_4.3.0 section.
4352         * doc/libgcc.texi (Fixed-point fractional library routines):
4353         Fix typos for neg and cmp functions.
4354
4355 2007-09-28  Michael Matz  <matz@suse.de>
4356
4357         PR rtl-optimization/33552
4358         * function.c (match_asm_constraints_1): Check for overlap in
4359         inputs and replace all occurences.
4360
4361 2007-09-28  Richard Sandiford  <rsandifo@nildram.co.uk>
4362
4363         * config/mips/mips.c (override_options): Fix comment typo.
4364
4365 2007-09-28  Jie Zhang  <jie.zhang@analog.com>
4366
4367         * config.gcc (bfin*-linux-uclibc*): Set extra_parts
4368         to "crtbegin.o crtbeginS.o crtend.o crtendS.o".
4369         * config/bfin/t-bfin-linux (crti.o): Don't build.
4370         (crtn.o): Likewise.
4371         (EXTRA_MULTILIB_PARTS): Remove crti.o and crtn.o.
4372         * config/bfin/t-bfin-uclinux (crti.o): Don't build.
4373         (crtn.o): Likewise.
4374         (EXTRA_MULTILIB_PARTS): Remove crti.o and crtn.o.
4375
4376 2007-09-27  Ollie Wild  <aaw@google.com>
4377
4378         * varasm.c (compare_constant): Removed call to
4379         lang_hooks.expand_constant.
4380         (copy_constants): Removed call to lang_hooks.expand_constant.
4381         (compute_reloc_for_constant): Removed call to
4382         lang_hooks.expand_constant.
4383         (output_addressed_constants): Removed call to
4384         lang_hooks.expand_constant.
4385         (constructor_static_from_elts_p): Removed call to
4386         lang_hooks.expand_constant.
4387         (output_constant): Removed calls to lang_hooks.expand_constant.
4388         * langhooks.h (struct lang_hooks): Removed field expand_constant.
4389         * langhooks-def.h (lhd_return_tree): Removed.
4390         (LANG_HOOKS_EXPAND_CONSTANT): Removed.
4391         (LANG_HOOKS_INITIALIZER): Removed LANG_HOOKS_EXPAND_CONSTANT.
4392         * langhooks.c (lhd_return_tree): Removed.
4393
4394 2007-09-27  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
4395
4396         PR middle-end/33436
4397         * expr.c (emit_group_load_1): Split constant double when destination
4398         length is half source length.
4399
4400 2007-09-27  Richard Sandiford  <rsandifo@nildram.co.uk>
4401
4402         * config/mips/mips.h (PTF_AVOID_BRANCHLIKELY): New macro.
4403         (mips_cpu_info): Add tune_flags.
4404         (GENERATE_BRANCHLIKELY): Remove TARGET_SR71K check.
4405         * config/mips/mips.c (mips_cpu_info_table): Add tune_flags fields.
4406         Remove end marker.
4407         (override_options): Remove deprecation code.  Use branch-likely
4408         instructions for optimize_size or if the tuning flags do not
4409         suggest otherwise.  Tweak warning.
4410         (mips_matching_cpu_name_p, mips_parse_cpu): Use ARRAY_SIZE.
4411
4412 2007-09-27  Matthias Klose  <doko@ubuntu.com>
4413
4414         * config/i386/t-linux64 (MULTILIB_OSDIRNAMES): Use ../lib32 as the
4415         multilib osdirname if it exists.
4416         * config/rs6000/t-linux64 (MULTILIB_OSDIRNAMES): Likewise.
4417
4418 2007-09-27  Ian Lance Taylor  <iant@google.com>
4419
4420         PR tree-optimization/33565
4421         * tree-ssa-loop-ch.c (copy_loop_headers): Set TREE_NO_WARNING on
4422         assignments of comparisons.
4423         * tree-ssa-sccvn.c (simplify_binary_expression): Add stmt
4424         parameter.  Change caller.  Defer overflow warnings around call to
4425         fold_binary.
4426         * fold-const.c (fold_undefer_overflow_warnings): Don't warn if
4427         TREE_NO_WARNING is set on the statement.
4428         * tree-ssa-forwprop.c
4429         (tree_ssa_forward_propagate_single_use_vars): Don't test
4430         TREE_NO_WARNING when calling fold_undefer_overflow_warnings.
4431         * tree-cfg.c (fold_cond_expr_cond): Likewise.
4432
4433 2007-09-27  Joseph Myers  <joseph@codesourcery.com>
4434
4435         * config/rs6000/rs6000.c (rs6000_legitimize_address): Do not
4436         reduce offset by units of 0x10000 for SPE vector modes or modes
4437         used with E500 double instructions.
4438
4439 2007-09-04  Paolo Bonzini  <bonzini@gnu.org>
4440
4441         * simplify-rtx.c (comparison_result): New.
4442         (simplify_const_relational_operation): Use it instead of the five
4443         "equal|op[01]ltu?" variables; consequently remove redundant "else"s.
4444         Improve bounds-checking optimizations; remove subsumed POPCOUNT
4445         optimizations.  Extract nonzero_address_p optimizations into a
4446         separate "if" together with optimizations where op1 is const0_rtx.
4447         Optimize comparing an IOR with zero.  Simplify op0 RELOP op0 for
4448         floating-point arguments too when appropriate.  Hoist test for ABS
4449         outside the final switch statement.
4450         * cse.c (fold_rtx): Don't look for an IOR equivalent of
4451         folded_arg0 if we found a constant equivalent.  Remove
4452         transformations done in simplify-rtx.c for "op0 RELOP op0".
4453
4454 2007-09-27  Jakub Jelinek  <jakub@redhat.com>
4455
4456         * builtins.c (expand_builtin, expand_builtin_object_size,
4457         expand_builtin_memory_chk, maybe_emit_chk_warning,
4458         maybe_emit_sprintf_chk_warning): Use new %K format string specifier
4459         for diagnostics.
4460         * expr.c (expand_expr_real_1): Likewise.
4461         * langhooks-def.h (struct diagnostic_info): Add forward decl.
4462         (lhd_print_error_function): Add third argument.
4463         * langhooks.h (struct diagnostic_info): Add forward decl.
4464         (struct lang_hooks): Add third argument to print_error_function.
4465         * diagnostic.h (diagnostic_info): Add abstract_origin field.
4466         (diagnostic_last_function_changed, diagnostic_set_last_function): Add
4467         second argument.
4468         (diagnostic_report_current_function): Likewise.
4469         * toplev.c (announce_function): Pass NULL as second argument to
4470         diagnostic_set_last_function.
4471         * diagnostic.c (diagnostic_report_current_function): Add second
4472         argument, pass it as third argument to lang_hooks.print_error_function.
4473         (default_diagnostic_starter): Pass DIAGNOSTIC as second argument
4474         to diagnostic_report_current_function.
4475         (diagnostic_report_diagnostic): Initialize diagnostic->abstract_origin
4476         and message.abstract_origin.
4477         (verbatim): Initialize abstract_origin.
4478         * pretty-print.h (text_info): Add abstract_origin field.
4479         * pretty-print.c (pp_base_format): Handle %K.
4480         * langhooks.c (lhd_print_error_function): Add third argument.  If
4481         diagnostic->abstract_origin, print virtual backtrace.
4482         * c-format.c (gcc_diag_char_table, gcc_tdiag_char_table,
4483         gcc_cdiag_char_table, gcc_cxxdiag_char_table): Support %K.
4484         (init_dynamic_diag_info): Likewise.
4485
4486 2007-09-26  David Daney  <ddaney@avtrex.com>
4487
4488         PR target/33479
4489         * config/mips/mips.md (sync_compare_and_swap<mode>, sync_old_add<mode>,
4490         sync_new_add<mode>, sync_old_<optab><mode>, sync_new_<optab><mode>,
4491         sync_old_nand<mode>, sync_new_nand<mode>,
4492         sync_lock_test_and_set<mode>): Fix '&' constraint modifiers.
4493         Update length attributes.
4494         (sync_add<mode>, sync_sub<mode>, sync_old_sub<mode>,
4495         sync_new_sub<mode>, sync_<optab><mode>, sync_nand<mode>): Update
4496         length attributes.
4497         * config/mips/mips.h (MIPS_COMPARE_AND_SWAP, MIPS_SYNC_OP,
4498         MIPS_SYNC_OLD_OP, MIPS_SYNC_NEW_OP, MIPS_SYNC_NAND,
4499         MIPS_SYNC_OLD_NAND, MIPS_SYNC_NEW_NAND, MIPS_SYNC_EXCHANGE): Add
4500         post-loop sync.
4501
4502 2007-09-26  Richard Guenther  <rguenther@suse.de>
4503
4504         PR tree-optimization/33563
4505         * tree-ssa-dse.c (get_use_of_stmt_lhs): Rename to ...
4506         (get_kill_of_stmt_lhs): ... this.  Re-structure.  Handle
4507         aggregate stores.
4508         (dse_optimize_stmt): Call get_kill_of_stmt_lhs instead of
4509         get_use_of_stmt_lhs.
4510
4511 2007-09-26  Joseph Myers  <joseph@codesourcery.com>
4512
4513         PR c/25309
4514         * c-common.c (complete_array_type): Diagnose too-large arrays and
4515         set type to error_mark_node.
4516
4517 2007-09-26  Richard Guenther  <rguenther@suse.de>
4518
4519         PR tree-optimization/30375
4520         PR tree-optimization/33560
4521         * tree-ssa-dse.c (get_use_of_stmt_lhs): Give up on uses
4522         with calls.
4523
4524         Revert
4525         2006-05-22  Aldy Hernandez  <aldyh@redhat.com>
4526
4527         * tree-ssa-dse.c (aggregate_vardecl_d): New.
4528         (dse_global_data): Add aggregate_vardecl field.
4529         (dse_possible_dead_store_p): New.
4530         Add prev_defvar variable.
4531         Allow immediate uses and previous immediate uses to differ
4532         if they are setting different parts of the whole.
4533         (get_aggregate_vardecl): New.
4534         (dse_record_partial_aggregate_store): New.
4535         (dse_whole_aggregate_clobbered_p): New.
4536         (dse_partial_kill_p): New.
4537         Call dse_maybe_record_aggregate_store().
4538         When checking whether a STMT and its USE_STMT refer to the
4539         same memory address, check also for partial kills that clobber
4540         the whole.
4541         Move some variable definitions to the block where they are used.
4542         (aggregate_vardecl_hash): New.
4543         (aggregate_vardecl_eq): New.
4544         (aggregate_vardecl_free): New.
4545         (aggregate_whole_store_p): New.
4546         (tree_ssa_dse): Initialize and free aggregate_vardecl.
4547         Mark which aggregate stores we care about.
4548
4549 2007-09-25  DJ Delorie  <dj@redhat.com>
4550
4551         PR target/33551
4552         * config/m32c/m32c.c (m32c_immd_dbl_mov): Use INTVAL instead of
4553         XINT.
4554
4555 2007-09-25  Michael Meissner  <michael.meissner@amd.com>
4556
4557         PR target/33524
4558         * config/i386/i386.c (ix86_expand_sse5_unpack): Change to call
4559         gen_sse5_pperm_sign_v4si_v2di and gen_sse5_pperm_zero_v4si_v2di
4560         for vector int32 -> int64 conversions.  Don't write beyond the end
4561         of the allocated vector for int32 -> int64 conversions.
4562
4563 2007-09-25  Revital Eres  <eres@il.ibm.com>
4564
4565         * config/rs6000/paired.h (paired_sel): New.
4566         * config/rs6000/rs6000.c (bdesc_3arg): Add selv2sf4.
4567         (rs6000_expand_ternop_builtin): Pass zero const_double operand
4568         when expanding selv2sf.
4569         * config/rs6000/rs6000.h (rs6000_builtins): Add
4570         PAIRED_BUILTIN_SELV2SF4.
4571
4572 2007-09-25  Joseph Myers  <joseph@codesourcery.com>
4573
4574         PR c/32295
4575         * c-typeck.c (default_conversion): Call require_complete_type
4576         before perform_integral_promotions.
4577         (build_unary_op): Call require_complete_type except for ADDR_EXPR.
4578         (build_c_cast): Call require_complete_type except for casts to
4579         void types.
4580         (convert_for_assignment): Call require_complete_type.
4581
4582 2007-09-25  Revital Eres  <eres@il.ibm.com>
4583
4584         * config/spu/spu.md: Fix doloop pattern.
4585
4586 2007-09-25  Bernd Schmidt  <bernd.schmidt@analog.com>
4587
4588         * config/bfin/bfin.c (expand_prologue_reg_save,
4589         expand_epilogue_reg_restore): Code to save and restore I/M/B/L regs
4590         and ASTAT moved here...
4591         (expand_interrupt_handler_prologue, expand_interrupt_handler_epilogue):
4592         ... from here.  New argument ALL; callers changed.
4593         (n_regs_saved_by_prologue): Count ASTAT for plain saveall functions.
4594         (bfin_expand_prologue, bfin_expand_epilogue): Deal with functions that
4595         have the "saveall" attribute.
4596
4597 2007-09-25  Hans-Peter Nilsson  <hp@bitrange.com>
4598
4599         * config/mmix/mmix.h (FUNCTION_INCOMING_ARG_REGNO_P): Don't define
4600         bogus target macro.
4601         (INCOMING_REGNO, OUTGOING_REGNO): Define.
4602         * config/mmix/mmix.c (mmix_opposite_regno): New function.
4603         * config/mmix/mmix-protos.h (mmix_opposite_regno): Prototype.
4604
4605         * config/mmix/mmix.md ("*cmpcc_folded"): In condition, gate
4606         with REG_P tests before REGNO access.
4607
4608 2007-09-24  DJ Delorie  <dj@redhat.com>
4609
4610         PR target/31482
4611         * config/m32c/cond.md (stzx_reversed_<mode>): Add an output
4612         constraint.
4613         (movqicc_<code>_<mode>): Likewise.
4614         (movhicc_<code>_<mode>): Likewise.
4615
4616 2007-09-24  Rask Ingemann Lambertsen  <rask@sygehus.dk>
4617
4618         PR target/33184
4619         * config/m32c/m32c.c (m32c_eh_return_data_regno): Leave an address
4620         register for reload.
4621
4622 2007-09-24  Danny Smith  <dannysmith@user.sourceforge.net>
4623
4624         PR c++/14688
4625         * config/i386/i386.c (ix86_comp_type_attributes): Check
4626         METHOD_TYPE too.
4627
4628 2007-09-24  Roman Zippel <zippel@linux-m68k.org> 
4629
4630         * config/m68k/m68k.h (ASM_OUTPUT_ALIGN_WITH_NOP): New, use
4631         "move.l %a4,%a4" to produce nops.
4632         * config/m68k/m68k.c (override_options): Reset align options,
4633         if neccessary align macro isn't avaible.
4634
4635 2007-09-24  Roman Zippel <zippel@linux-m68k.org> 
4636
4637         config/m68k/linux.h (PREFERRED_STACK_BOUNDARY): New.
4638
4639 2007-09-24  Roman Zippel <zippel@linux-m68k.org> 
4640
4641         * config/m68k/m68k.c (strict_low_part_peephole_ok): Don't leave
4642         the basic block.
4643         * config/m68k/m68k.md (movsi_m68k): Allow certain constant when
4644         reload is completed.
4645         (peephole pattern): Convert most of them to RTL peephole pattern.
4646
4647 2007-09-24  Roman Zippel <zippel@linux-m68k.org> 
4648
4649         * config/m68k/m68k.c (notice_update_cc): Recognize fp compare
4650         (moved from fp compare patterns).
4651         * config/m68k/m68k.md (cmp<mode>, cmp<mode>_68881, cmp<mode>_cf):
4652         Cleanup predicates to relieve reload.
4653         (conditional_trap): Reject conditional trap with fp condition.
4654         * config/m68k/predicates.md (fp_src_operand): New, reject
4655         certain constants early.
4656
4657 2007-09-24  Roman Zippel <zippel@linux-m68k.org>
4658
4659         * final.c (final_scan_insn): Remove accidentally duplicated code.
4660
4661 2007-09-24  Andrew Pinski  <andrew_pinski@playstation.sony.com>
4662
4663         * config.gcc (powerpc*-*-*): --with-cpu=cell is a 64bit CPU.
4664         Allow --with-tune=cell and --with-cpu=cell.
4665
4666 2007-09-24  David Edelsohn  <edelsohn@gnu.org>
4667
4668         * config/rs6000/rs6000-protos.h (rs6000_emit_swrsqrtsf): Declare.
4669         * config/rs6000/rs6000.opt (swdiv): Change option to ...
4670         (recip): this.
4671         * config/rs6000/rs6000.c (rs6000_builtin_reciprocal): New
4672         function.
4673         (TARGET_BUILTIN_RECIPROCAL): Use it.
4674         (rs6000_builtin_expand): Expand recip, recipf, and rsqrtf.
4675         (rs6000_init_builtins): Initialize recip, recipf, and rsqrtf.
4676         (rs6000_emit_swrsqrtsf): New.
4677         * config/rs6000/rs6000.h (rs6000_builtins): Add recip, recipf, and
4678         rsqrtf. 
4679         * config/rs6000/rs6000.md (UNSPEC_RSQRT): Define.
4680         (divsf3): Remove swdiv support.
4681         (recipsf3): New.
4682         (rsqrtsf2): New.
4683         (rsqrt_internal1): New.
4684         (divdf3): Remove swdiv support.
4685         (reciptdf3): New.
4686
4687 2007-09-24  Jakub Jelinek  <jakub@redhat.com>
4688
4689         PR c++/33506
4690         * langhooks.h (struct lang_hooks_for_types): Add type_hash_eq
4691         field.
4692         * langhooks-def.h (LANG_HOOKS_TYPE_HASH_EQ): Define.
4693         (LANG_HOOKS_FOR_TYPES_INITIALIZER): Add LANG_HOOKS_TYPE_HASH_EQ.
4694         * tree.c (type_hash_eq): For FUNCTION_TYPE use
4695         lang_hooks.type.type_hash_eq in addition to generic tests.
4696
4697 2007-09-24  Pranav Bhandarkar  <pranav.bhandarkar@celunite.com>
4698         Ramana Radhakrishnan  <ramana@hercules.pun.celunite.com>
4699
4700         * tree-inline.h (eni_weights): Add field target_builtin_cost to
4701         reflect the cost per call to a target specific builtin.
4702         * tree-inline.c (estimate_num_insns_1): If it is a CALL_EXPR for a
4703         call to a target specific builtin, then use target_builtin_call_cost.
4704         (init_inline_once): Initialize target_builtin_call_cost field.
4705
4706 2007-09-24  Kai Tietz  <kai.tietz@onevision.com>
4707
4708         PR middle-end/33472
4709         * config/i386/i386.c (return_in_memory_ms_64): Handle return types for
4710         complex types.
4711
4712 2007-09-23  H.J. Lu  <hongjiu.lu@intel.com>
4713
4714         * configure.ac (ld_vers): Support GNU linker version xx.xx.*
4715         * configure: Regenerated.
4716
4717 2007-09-23  Ollie Wild  <aaw@google.com>
4718
4719         * fold-const.c (fold_binary): Fold BIT_AND_EXPR's with a pointer
4720         operand.
4721         (get_pointer_modulus_and_residue): New function.
4722
4723 2007-09-23  Richard Sandiford  <rsandifo@nildram.co.uk>
4724
4725         * config/mips/mips.c (build_mips16_call_stub): On 64-bit targets,
4726         combine an SC return value into a single register.
4727
4728 2007-09-23  Richard Sandiford  <rsandifo@nildram.co.uk>
4729
4730         * opth-gen.awk (target_flags_explicit): Declare.
4731         * toplev.h (target_flags_explicit): Delete declaration.
4732         * toplev.c (target_flags): Likewise.
4733         * config/mips/mips.h (mips_llsc_setting, mips_llsc): Delete.
4734         (GENERATE_SYNC, GENERATE_LL_SC): Redefine using target_explicit_flags.
4735         Never return true for TARGET_MIPS16.
4736         * config/mips/mips.c (mips_llsc): Delete.
4737         (mips_handle_option): Remove -mllsc handling.
4738         (mips_strip_unspec_address): Tweak comment.
4739         * config/mips/mips.opt (mllsc): Use a target mask.
4740
4741 2007-09-23  Richard Sandiford  <rsandifo@nildram.co.uk>
4742
4743         * doc/tm.texi (POINTERS_EXTEND_UNSIGNED): Document extensions to
4744         word_mode as well as Pmode.
4745
4746 2007-09-23  Richard Sandiford  <rsandifo@nildram.co.uk>
4747
4748         * function.c (assign_parm_setup_block): Explicitly convert BLKmode
4749         parameters from word_mode to the subword type if such a truncation
4750         is not a no-op.
4751
4752 2007-09-23  Jakub Jelinek  <jakub@redhat.com>
4753
4754         * configure.ac (MAKEINFO): Handle makeinfo version 4.10 and above.
4755         * configure: Regenerated.
4756
4757 2007-09-23  Jan Hubicka  <jh@suse.cz>
4758
4759         * params.def (INLINE_CALL_COST): Set to 12.
4760         * invoke.texi (inline-call-cost): Update default value.
4761
4762 2007-09-23  Eric Botcazou  <ebotcazou@adacore.com>
4763
4764         * config/alpha/alpha.md (movti): Use operand_subword for the split.
4765
4766 2007-09-23  Ayal Zaks  <zaks@il.ibm.com>
4767             Revital Eres  <eres@il.ibm.com>
4768
4769         * modulo-sched.c (doloop_register_get): Rewrite the loop which
4770         checks whether the count_reg is found outside the control part.
4771
4772 2007-09-23  Jakub Jelinek  <jakub@redhat.com>
4773
4774         * expr.c (expand_expr_real_1) <case CALL_EXPR>: Use get_callee_fndecl
4775         instead of checking CALL_EXPR_FN directly to test for builtins.
4776         If error or warning attributes are present, print
4777         error resp. warning.
4778         * c-common.c (handle_error_attribute): New function.
4779         (c_common_attribute_table): Add error and warning
4780         attributes.
4781         * doc/extend.texi: Document error and warning attributes.
4782
4783         * tree.h (block_nonartificial_location): New prototype.
4784         * tree.c (block_nonartificial_location): New function.
4785         * dwarf2out.c (gen_subprogram_die): Add DW_AT_artificial
4786         if artificial attribute is present on abstract inline decl.
4787         * c-common.c (handle_artificial_attribute): New function.
4788         (c_common_attribute_table): Add artificial attribute.
4789         * final.c (override_filename, override_linenum): New variables.
4790         (final_scan_insn): For DBX_DEBUG or SDB_DEBUG, set override_filename
4791         and override_linenum if inside of a block inlined from
4792         __attribute__((__artificial__)) function.
4793         (notice_source_line): Honor override_filename and override_linenum.
4794         * doc/extend.texi: Document __attribute__((__artificial__)).
4795         * config/i386/emmintrin.h: Add __artificial__ attribute to
4796         all __always_inline__ functions.
4797         * config/i386/mmintrin.h: Likewise.
4798         * config/i386/tmmintrin.h: Likewise.
4799         * config/i386/mm3dnow.h: Likewise.
4800         * config/i386/pmmintrin.h: Likewise.
4801         * config/i386/ammintrin.h: Likewise.
4802         * config/i386/xmmintrin.h: Likewise.
4803         * config/i386/smmintrin.h: Likewise.
4804         * config/i386/bmmintrin.h: Likewise.
4805         * config/i386/mmintrin-common.h: Likewise.
4806
4807         PR middle-end/28755
4808         * expr.c (expand_constructor): New function.
4809         (expand_expr_real_1) <case CONSTRUCTOR>: Call it.
4810         (expand_expr_real_1) <case ARRAY_REF>: Call it if VALUE is
4811         CONSTRUCTOR.
4812
4813 2007-09-23  Richard Sandiford  <rsandifo@nildram.co.uk>
4814
4815         * config/mips/mips.c (dump_constants_1): Generalize to include
4816         fractional and accumulator modes.
4817
4818 2007-09-23  Richard Sandiford  <rsandifo@nildram.co.uk>
4819
4820         * config/mips/mips.h (ISA_HAS_DSP, ISA_HAS_DSPR2): New macros.
4821         * config/mips/mips.c (mips_set_mips16_mode): Don't clear the DSP
4822         flags for MIPS16.
4823         (override_options): Check TARGET_HARD_FLOAT_ABI instead of
4824         TARGET_HARD_FLOAT when testing whether -mpaired-single is
4825         supported.
4826         (mips_conditional_register_usage): Check ISA_HAS_DSP instead of
4827         TARGET_DSP.
4828         * config/mips/constraints.md (ka): Check ISA_HAS_DSPR2 instead of
4829         TARGET_DSPR2.
4830         * config/mips/mips.md (ANYF): Require TARGET_HARD_FLOAT for V2SF.
4831         (mulv2sf3, movv2sf, movv2sf_hardfloat_64bit): Require
4832         TARGET_HARD_FLOAT.
4833         (<u>mulsidi3_32bit_internal, <u>msubsidi4, <u>maddsidi4): Check
4834         ISA_HAS_DSPR2 instead of TARGET_HAS_DSPR2.
4835         * config/mips/mips-dsp.md: Use ISA_HAS_DSP instead of TARGET_HAS_DSP
4836         throughout.
4837         * config/mips/mips-dspr2.md: Likewise ISA_HAS_DSPR2 and
4838         TARGET_HAS_DSPR2.
4839         * config/mips/mips-fixed.md: Use ISA_HAS_DSP and ISA_HAS_DSPR2
4840         instead of TARGET_HAS_DSP and TARGET_HAS_DSPR2.
4841         * config/mips/mips-ps-3d.md: Add TARGET_HARD_FLOAT to V2SF patterns.
4842
4843 2007-09-22  Jason Merrill  <jason@redhat.com>
4844
4845         PR c++/19407
4846         * attribs.c (lookup_attribute_spec): Split out...
4847         (decl_attributes): From here.
4848         * tree.h: Declare it.
4849
4850 2007-09-22  Richard Sandiford  <rsandifo@nildram.co.uk>
4851
4852         * doc/sourcebuild.texi: Document dg-add-options mips16_attribute.
4853
4854 2007-09-22  Eric Botcazou  <ebotcazou@adacore.com>
4855
4856         * tree-inline.c (remap_type_1): Correctly chain variants.
4857
4858 2007-09-22  Richard Guenther  <rguenther@suse.de>
4859
4860         PR tree-optimization/33146
4861         * fold-const.c (fold_binary): Use the original tree
4862         for negating.
4863         * tree.h (STRIP_SIGN_NOPS): Converting from or to pointer
4864         also changes "sign".
4865
4866 2007-09-22  Eric Botcazou  <ebotcazou@adacore.com>
4867
4868         PR target/32325
4869         * except.c (finish_eh_generation): Call commit_edge_insertions if
4870         there are insns queued on the entry edge.
4871         * config/alpha/alpha.c (alpha_gp_save_rtx): Insert the insns on
4872         the entry edge.
4873
4874 2007-09-22  Richard Sandiford  <rsandifo@nildram.co.uk>
4875
4876         * doc/sourcebuild.texi (dg-add-c99-runtime-options): Document.
4877
4878 2007-09-19  Michael Meissner  <michael.meissner@amd.com>
4879
4880         * config/i386/i386.c: Delete trailing whitespace.
4881         * config/i386/i386.h: Ditto.
4882         * config/i386/bmmintrin.h: Ditto.
4883         * config/i386/sync.md: Ditto.
4884         * config/i386/ppro.md: Ditto.
4885         * config/i386/mmx.md: Ditto.
4886         * config/i386/constraints.md: Ditto.
4887         * config/i386/sse.md: Ditto.
4888         * config/i386/athlon.md: Ditto.
4889         * config/i386/i386.md: Ditto.
4890
4891 2007-09-21  Richard Guenther  <rguenther@suse.de>
4892
4893         PR tree-optimization/33508
4894         * tree-ssa-alias.c (mark_aliases_call_clobbered): Avoid
4895         quadratic loop by keeping a bitmap of variables we have
4896         to clobber all subvariables for.
4897         (set_initial_properties): Likewise.
4898
4899 2007-09-21  Richard Sandiford  <rsandifo@nildram.co.uk>
4900
4901         * config/mips/t-sde (TARGET_LIBGCC2_CFLAGS): Delete.
4902
4903 2007-09-20  Nigel Stephens  <nigel@mips.com>
4904             Chao-ying Fu  <fu@mips.com>
4905
4906         * c-decl.c (finish_declspecs): When _Sat is used without
4907         _Fract or _Accum, set the default type to cts_fract.
4908         This avoids a warning of "type defaults to int".
4909
4910 2007-09-20  Joseph Myers  <joseph@codesourcery.com>
4911
4912         * c-decl.c (check_bitfield_type_and_width): Don't allow _Bool
4913         bit-fields wider than one bit.
4914
4915 2007-09-20  Jakub Jelinek  <jakub@redhat.com>
4916
4917         PR debug/33316
4918         * dwarf2out.c (modified_type_die): Handle TYPE_DECL with NULL
4919         DECL_NAME.
4920         * dbxout.c (dbxout_type): Likewise.
4921
4922         PR c/33238
4923         PR c/27301
4924         * gimplify.c (gimplify_vla_decl): New function.
4925         (gimplify_decl_expr): Move VLA decl handling to gimplify_vla_decl.
4926         Call it.
4927         (gimplify_target_expr): Handle variable length TARGET_EXPRs.
4928
4929 2007-09-20  Richard Sandiford  <rsandifo@nildram.co.uk>
4930
4931         * doc/invoke.texi (-minterlink-mips16): Document.
4932         * config/mips/mips.opt (minterlink-mips16): New option.
4933         * config/mips/mips.c (mips_function_ok_for_sibcall): Handle
4934         -minterlink-mips16
4935
4936 2007-09-20  Joseph Myers  <joseph@codesourcery.com>
4937
4938         * doc/extend.texi (Attribute Syntax): Remove old speculative
4939         future direction.
4940
4941 2007-09-20  Mark Shinwell  <shinwell@codesourcery.com>
4942
4943         * combine.c: Include cgraph.h.
4944         (setup_incoming_promotions): Rework to allow more aggressive
4945         elimination of sign extensions when all call sites of the
4946         current function are known to lie within the current unit.
4947
4948 2007-09-20  Richard Sandiford  <rsandifo@nildram.co.uk>
4949
4950         * dse.c (find_shift_sequence): No-op rework of control flow.
4951
4952 2007-09-19  Richard Sandiford  <rsandifo@nildram.co.uk>
4953
4954         * config/mips/mips.c (build_mips16_call_stub): Tidy.  Fix second
4955         GPR for DCmode on 64-bit targets.  Remove redundant fallback.
4956
4957 2007-09-19  Andrew Pinski  <andrew_pinski@playstation.sony.com>
4958
4959         * cfgexpand.c (dump_stack_var_partition): Use the correct
4960         index for the offset.
4961
4962 2007-09-19  Joseph Myers  <joseph@codesourcery.com>
4963
4964         * config/mips/sde.h: Switch to GPLv3.
4965
4966 2007-09-19  Eric Botcazou  <ebotcazou@adacore.com>
4967
4968         * tree-sra.c (decide_block_copy): Decide if there are groups.
4969
4970 2007-09-19  Roman Zippel <zippel@linux-m68k.org>
4971
4972         * config/m68k/m68k.c (output_move_himode): Remove jump table
4973         recognition.
4974         config/m68k/m68k.md (lea): Likewise.
4975         * config/m68k/m68k.c (print_operand_address): Use simple pc
4976         relative addressing.
4977
4978 2007-09-19  Bernd Schmidt  <bernd.schmidt@analog.com>
4979
4980         * doc/tm.texi (IS_ASM_LOGICAL_LINE_SEPARATOR): Document new argument.
4981         * final.c (IS_ASM_LOGICAL_LINE_SEPARATOR): Provide two-argument
4982         default definition.
4983         (asm_insn_count): Pass template as second argument to it.
4984         * config/avr/avr.h (IS_ASM_LOGICAL_LINE_SEPARATOR): Likewise.
4985         * config/pa/pa.h (IS_ASM_LOGICAL_LINE_SEPARATOR): Likewise.
4986         * config/stormy16/stormy16.h (IS_ASM_LOGICAL_LINE_SEPARATOR): Likewise.
4987         * config/cris/cris.h (IS_ASM_LOGICAL_LINE_SEPARATOR): Likewise.
4988         * config/sh/sh.c (IS_ASM_LOGICAL_LINE_SEPARATOR): Likewise.
4989         (sh_insn_length_adjustment): Pass template as second argument to it.
4990         * config/bfin/bfin.h (IS_ASM_LOGICAL_LINE_SEPARATOR): New macro.
4991
4992         * config/bfin/bfin.md (define_asm_attributes): New.
4993
4994 2007-09-19  Jie Zhang  <jie.zhang@analog.com>
4995
4996         * config.gcc (bfin*-linux-uclibc*): Add ./linux-sysroot-suffix.h
4997         to tm_file.
4998         * config/bfin/print-sysroot-suffix.sh: New.
4999         * config/bfin/t-bfin-elf (EXTRA_PARTS): Remove.
5000         (MULTILIB_OPTIONS, MULTILIB_DIRNAMES, MULTILIB_MATCHES,
5001         MULTILIB_EXCEPTIONS): Redefine with new multilibs.
5002         * config/bfin/t-bfin-uclinux (EXTRA_PARTS): Remove.
5003         (MULTILIB_OPTIONS, MULTILIB_DIRNAMES, MULTILIB_MATCHES,
5004         MULTILIB_EXCEPTIONS): Redefine with new multilibs.
5005         * config/bfin/t-bfin-linux (EXTRA_PARTS): Remove.
5006         (MULTILIB_OPTIONS, MULTILIB_DIRNAMES, MULTILIB_MATCHES,
5007         MULTILIB_EXCEPTIONS): Redefine with new multilibs.
5008         (linux-sysroot-suffix.h): New target.
5009         * config/bfin/bfin.opt (mcsync-anomaly): Use Var instead of Mask.
5010         (mspecld-anomaly): Likewise.
5011         * config/bfin/bfin-protos.h (enum bfin_cpu_type): Renamed from
5012         (enum bfin_cpu): ... this. Add BFIN_CPU_BF522, BFIN_CPU_BF525,
5013         BFIN_CPU_BF527, BFIN_CPU_BF538, BFIN_CPU_BF539, BFIN_CPU_BF542,
5014         BFIN_CPU_BF544, BFIN_CPU_BF548, and BFIN_CPU_BF549.
5015         (bfin_si_revision): Declare.
5016         (bfin_workarounds): Declare.
5017         (WA_SPECULATIVE_LOADS): Define.
5018         (ENABLE_WA_SPECULATIVE_LOADS): Define.
5019         (WA_SPECULATIVE_SYNCS): Define.
5020         (ENABLE_WA_SPECULATIVE_SYNCS): Define.
5021         * config/bfin/elf.h (STARTFILE_SPEC): Rename crt532.o to basiccrt.o.
5022         (LIB_SPEC): Add %s to the linker scripts.
5023         Use proper linker script for bf522, bf525, bf527,
5024         bf538, bf539, bf542, bf544, bf548, and bf549.
5025         * config/bfin/bfin.c (bfin_si_revision): Define.
5026         (bfin_workarounds): Define.
5027         (struct bfin_cpu): New.
5028         (bfin_cpus): New.
5029         (bfin_handle_option): Handle silicon revision part of -mcpu option.
5030         (override_options): Set bfin_workarounds.
5031         (length_for_loop): Replace TARGET_CSYNC_ANOMALY with
5032         ENABLE_WA_SPECULATIVE_SYNCS, TARGET_SPECLD_ANOMALY with
5033         ENABLE_WA_SPECULATIVE_LOADS.
5034         (bfin_reorg): Likewise.
5035         * config/bfin/bfin.h (TARGET_CPU_CPP_BUILTINS): Define
5036         macros for bf522, bf525, bf527, bf538, bf539,
5037         bf542, bf544, bf548, and bf549.
5038         Define __SILICON_REVISION__ and __WORKAROUND_* macros if needed.
5039         Don't define __ID_SHARED_LIB__ when -msep-data.
5040         (TARGET_DEFAULT): Define as 0.
5041         (DRIVER_SELF_SPECS): Add -mcpu=bf532 if no -mcpu option.
5042         * doc/invoke.texi (Blackfin Options): Document silicon
5043         revision part of -mcpu option and it now accepts bf522, bf525,
5044         bf527, bf538, bf539, bf542, bf544, bf548, and bf549.
5045
5046 2007-09-18  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
5047
5048         * alias.c (memory_modified_1): Deconstify.
5049         (memory_modified_in_insn_p): Don't use const_note_stores.
5050         * rtl.h (const_note_stores): Delete.
5051         * rtlanal.c (const_note_stores): Likewise.
5052
5053 2007-09-18  Richard Sandiford  <rsandifo@nildram.co.uk>
5054
5055         * dse.c (find_shift_sequence): Temporarily revert to forbidding
5056         word shifts.
5057
5058 2007-09-18  Rask Ingemann Lambertsen  <rask@sygehus.dk>
5059
5060         PR target/33388
5061         PR target/33397
5062         * config/fr30/fr30.md (addsi3): Check REG_P() before calling REGNO().
5063         (addsi_small_int): Likewise.
5064         (addsi_big_int): Use rtx_equal_p() instead of REGNO() comparison.
5065         (one_cmplsi2): Likewise.
5066         (negsi2): Delete.
5067         (enter_func): Expand insn using hard_frame_pointer_rtx and
5068         stack_pointer_rtx.
5069         (*enter_func): New.
5070         * config/fr30/fr30.c (fr30_expand_prologue): Check for
5071         hard_frame_pointer_rtx instead of using REGNO() check.
5072         Properly sign extend GEN_INT() argument.
5073
5074 2007-09-18  Roman Zippel <zippel@linux-m68k.org>
5075
5076         * config/m68k/m68k.c (override_options): Remove USE_GAS,
5077         use %. syntax.
5078         (output_dbcc_and_branch, output_scc_di): Replace all jbcc
5079         alternatives with just jcc.
5080         * config/m68k/m68k.md (addsi_lshrsi_31, beq0_di, bne0_di,
5081         bge0_di, blt0_di, bgtu, bltu, bgeu, bleu, bgtu_rev,
5082         bltu_rev, bgeu_rev, bleu_rev, jump, dbne_hi, dbne_si,
5083         dbge_hi, dbge_si): Likewise.
5084
5085 2007-09-18  Roman Zippel <zippel@linux-m68k.org>
5086
5087         * config/m68k/m68k.md (beq, bne, bgt, blt, bge, ble, bordered,
5088         bunordered, buneq, bunge, bungt, bunle, bunlt, bltgt, beq_rev,
5089         bne_rev, bgt_rev, blt_rev, bge_rev, ble_rev, bordered_rev,
5090         bunordered_rev, buneq_rev, bunge_rev, bungt_rev, bunle_rev,
5091         bunlt_rev, bltgt_rev): Replace all fbcc with fjcc.
5092
5093 2007-09-18  Maxim Kuvyrkov  <maxim@codesourcery.com>
5094
5095         * config/m68k/m68k-devices.def (51qe): New device.
5096         * config/m68k/m68k.c (FL_FOR_isa_c): Remove division unit.  Add it
5097         to all uses of FL_FOR_isa_c for compatibility.
5098         (all_microarchs): Add cfv1 microarchitecture.
5099         (m68k_handle_option): Handle m51qe option.
5100         * config/m68k/m68k.h (TARGET_CPU_CPP_BUILTINS): Handle 51QE.
5101         (TUNE_CFV1): New macro.
5102         (enum uarch_type): Add ucfv1.
5103         * doc/invoke.texi: Document 51qe device and cfv1 microarchitecture.
5104         
5105 2007-09-18  Richard Guenther  <rguenther@suse.de>
5106
5107         PR tree-optimization/31863
5108         * tree-ssa-structalias.c (create_variable_info_for): Always
5109         free the fieldstack.
5110
5111 2007-09-18  Dorit Nuzman  <dorit@il.ibm.com>
5112
5113         * opts.c (decode_options): Enable vectorization under -O3.
5114
5115 2007-09-18  Richard Guenther  <rguenther@suse.de>
5116
5117         PR tree-optimization/33340
5118         * tree-ssa-sccvn.c (set_ssa_val_to): Do not set values to
5119         SSA_NAMEs that occur in abnormal PHI nodes.
5120
5121 2007-09-17  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
5122
5123         * tree-cfg.c (is_ctrl_altering_stmt, tree_block_ends_with_call_p):
5124         Don't use const_get_call_expr_in.
5125         * tree-gimple.c (const_get_call_expr_in): Delete.
5126         * tree-gimple.h (const_get_call_expr_in): Likewise.
5127
5128 2007-09-18  Richard Sandiford  <rsandifo@nildram.co.uk>
5129
5130         * df-scan.c (df_notes_rescan): Do nothing if the instruction does
5131         not yet have a basic block.
5132         * dse.c (find_shift_sequence): Don't set DF_NO_INSN_RESCAN.
5133
5134 2007-09-18  Richard Sandiford  <rsandifo@nildram.co.uk>
5135
5136         * config/mips/mips.c (mips_file_start): Add ".previous" directives
5137         to both ".section"s.
5138
5139 2007-09-17  Richard Sandiford  <rsandifo@nildram.co.uk>
5140
5141         * config/mips/mips.c (mips_output_mi_thunk): Use
5142         mips_function_ok_for_sibcall and const_call_insn_operand
5143         to determine if a direct sibcall is allowed.  Use
5144         mips_classify_symbol to determine a global pointer is needed.
5145
5146 2007-09-17  Richard Sandiford  <rsandifo@nildram.co.uk>
5147
5148         * config/mips/mips.md (*clear_upper32): Use "W" as the memory operand.
5149
5150 2007-09-17  Chao-ying Fu  <fu@mips.com>
5151             Nigel Stephens  <nigel@mips.com>
5152
5153         * config/fixed-bit.h: New file.
5154         * config/fixed-bit.c: New file.
5155         * doc/libgcc.texi (Fixed-point fractional library routines): New node.
5156
5157 2007-09-18  Jakub Jelinek  <jakub@redhat.com>
5158
5159         * c-format.h (format_kind_info): Add alloc_char field.
5160         * c-format.c (scanf_flag_specs): Add 'm'.
5161         (scanf_flag_pairs): Add 'a', 'm' pair.
5162         (scan_char_table): Allow 'm' modifier for c, s, [, C and S.
5163         (format_types_orig): Add alloc_char fields.
5164         (check_format_info_main): Rename aflag to alloc_flag.
5165         Handle fki->alloc_char. modifier after width and before length
5166         modifiers.  Move FMT_FLAG_SCANF_A_KLUDGE handling before
5167         length modifiers as well.
5168         * config/sol2-c.c (solaris_format_types): Add alloc_char field.
5169
5170         PR middle-end/33423
5171         * builtins.c (expand_builtin_memory_chk): Handle COMPOUND_EXPRs
5172         returned by build_call_expr.
5173
5174 2007-09-17  Eric Botcazou  <ebotcazou@adacore.com>
5175
5176         * tree-sra.c (maybe_lookup_element_for_expr) <COMPONENT_REF>: Return
5177         NULL for variable-sized records too.
5178         (sra_walk_expr) <COMPONENT_REF>: Stop at variable-sized records too.
5179
5180 2007-09-17  Tom Tromey  <tromey@redhat.com>
5181
5182         * c-decl.c (pushdecl): Don't set DECL_LANG_SPECIFIC.
5183         (c_builtin_function): Likewise.
5184         (grokdeclarator): Likewise.
5185
5186 2007-09-17  Zdenek Dvorak  <ook@ucw.cz>
5187
5188         PR rtl-optimization/26449
5189         * loop-invariant.c (move_invariant_reg): Do not use force_operand.
5190         (seq_insns_valid_p): Removed.
5191
5192 2007-09-17  Eric Botcazou  <ebotcazou@adacore.com>
5193
5194         * tree-nomudflap.c (gate_mudflap): New static function.
5195         (pass_mudflap_1): Use it as gate function.
5196         (pass_mudflap_2): Likewise.
5197
5198 2007-09-17  Jan Hubicka  <jh@suse.cz>
5199
5200         PR middle-end/33348
5201         PR target/33406
5202         * loop-invariant.c (move_invariant_reg): Unshare sequence.
5203
5204 2007-09-17  Victor Kaplansky  <victork@il.ibm.com>
5205
5206         PR tree-optimization/33319
5207         * tree-vect-analyze.c (vect_same_range_drs): New.
5208         (vect_vfa_range_equal): New.
5209         (vect_is_duplicate_ddr): Removed.
5210         (vect_mark_for_runtime_alias_test): Do not perform marking when
5211         optimizing for size or max_param for alias checking is zero.
5212         Move the function before vect_analyze_data_ref_dependence.
5213         (vect_analyze_data_ref_dependence): Add call to
5214         vect_mark_for_runtime_alias_test in two cases when dependence
5215         is not clear.
5216         (vect_analyze_data_ref_dependences): Do not call to
5217         vect_mark_for_runtime_alias_test.
5218         (vect_prune_runtime_alias_test_list): New.
5219         (vect_analyze_loop): Add call to vect_prune_runtime_alias_test_list.
5220         * tree-vect-transform.c (vect_estimate_min_profitable_iters):
5221         Update vec_outside_cost.
5222         (vect_vfa_segment_size): More compact code, use TYPE_SIZE_UNIT.
5223         (vect_create_cond_for_alias_checks): Build the base address of data
5224         reference from DR_GROUP_FIRST_DR.
5225         (vect_loop_versioning): New.
5226         (vect_transform_loop): Add a call to vect_loop_versioning.
5227         Remove factored out code.
5228
5229 2007-09-16  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
5230
5231         PR middle-end/33273
5232         * expr.c (store_expr): Call adjust_address to change mode of dest_mem
5233         to BLKmode.
5234
5235 2007-09-16  Richard Sandiford  <rsandifo@nildram.co.uk>
5236
5237         * dse.c (find_shift_sequence): Allow word as well as subword shifts.
5238         Do the tentative shift expansion with the DF_NO_INSN_RESCAN flag set.
5239         Fix the call to insn_rtx_cost.  Skip access sizes that require a
5240         real truncation of the store register.  Use convert_move instead
5241         of gen_lowpart when narrowing the result.
5242         (replace_read): Use convert_move instead of gen_lowpart when
5243         narrowing the store rhs.
5244
5245 2007-09-16  Richard Sandiford  <rsandifo@nildram.co.uk>
5246
5247         * config/mips/mips.md (SHORT): Fix long line.
5248         (SUBDI): New mode iterator.  Extend the shift-and-truncate insns
5249         to QImode and HImode.
5250
5251 2007-09-16  Richard Sandiford  <rsandifo@nildram.co.uk>
5252
5253         * config/mips/mips.h (POINTERS_EXTEND_UNSIGNED): Define.
5254
5255 2007-09-15  Zdenek Dvorak  <ook@ucw.cz>
5256
5257         * tree-parloops.c: New file.
5258         * tree-ssa-operands.h (free_stmt_operands): Declare.
5259         * tree-ssa-loop-manip.c (split_loop_exit_edge): Return the new basic
5260         block.
5261         * tree-pass.h (pass_parallelize_loops): Declare.
5262         * omp-low.c (expand_omp_parallel, expand_omp_for): Update SSA form for
5263         virtual operands.
5264         (build_omp_regions_1): Allow analysing just a single OMP region and
5265         its subregions.
5266         ( build_omp_regions_root, omp_expand_local): New functions.
5267         (build_omp_regions): Add argument to build_omp_regions_1 call.
5268         * builtins.def (DEF_GOMP_BUILTIN): Initialize OMP builtins when
5269         autoparallelization is run.
5270         * timevar.def (TV_TREE_PARALLELIZE_LOOPS): New.
5271         * tree-ssa-loop.c (gate_tree_parallelize_loops, tree_parallelize_loops,
5272         pass_parallelize_loops): New.
5273         * common.opt (ftree-parallelize-loops): New.
5274         * tree-flow.h (omp_expand_local, tree_duplicate_sese_tail,
5275         parallelize_loops): Declare.
5276         (add_phi_args_after_copy, split_loop_exit_edge): Declaration changed.
5277         * Makefile.in (tree-parloops.o): Added.
5278         * tree-cfg.c (add_phi_args_after_copy_edge, tree_duplicate_sese_tail):
5279         New functions.
5280         (add_phi_args_after_copy_bb): Use add_phi_args_after_copy_edge.
5281         (add_phi_args_after_copy): Call add_phi_args_after_copy_edge for
5282         one extra edge as well.
5283         (tree_duplicate_sese_region): Add argument to add_phi_args_after_copy.
5284         Use VEC_free to free doms vector.
5285         (move_block_to_fn): Update loop info. Remove phi nodes for virtual
5286         operands.  Recompute operand caches in the new function.
5287         (move_sese_region_to_fn): Update loop info.
5288         * passes.c (init_optimization_passes): Add pass_parallelize_loops.
5289         * tree-ssa-operands.c (free_stmt_operands): New function.
5290
5291         * doc/passes.texi: Document autoparallelization.
5292         * doc/invoke.texi (-ftree-parallelize-loops): New option.
5293
5294 2007-09-15  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
5295
5296         PR target/33062
5297         * pa.c (function_value): Use GET_MODE_BITSIZE instead of
5298         TYPE_PRECISION.
5299
5300 2007-09-15  Dorit Nuzman  <dorit@il.ibm.com>
5301
5302         * tree-vect-transform.c (vect_get_vec_defs_for_stmt_copy): check if 
5303         the VEC is not NULL.
5304         (vectorizable_type_demotion, vectorizable_type_promotion): Check that 
5305         get_vectype_for_scalar_type succeeded.
5306         (vectorizable_conversion): Likewise.
5307
5308 2007-09-14  Jan Hubicka  <jh@suse.cz>
5309
5310         * config/i386/i386.md (*floatdi<mode>2_i387): Guard against
5311         TARGET_64BIT.
5312
5313 2007-09-14  Uros Bizjak  <ubizjak@gmail.com>
5314
5315         PR target/33438
5316         * config/i386/i386.md (fmodxf3): Copy operands[2] to temporary
5317         register when operands[2] equals operands[1].
5318         (remainderxf3): Ditto.
5319
5320 2007-09-14  Sandra Loosemore  <sandra@codesourcery.com>
5321             Nigel Stephens  <nigel@mips.com>
5322
5323         * doc/tm.texi (LIBGCC2_UNWIND_ATTRIBUTE): Document.
5324         * unwind-generic.h (LIBGCC2_UNWIND_ATTRIBUTE): Define.
5325         (_Unwind_RaiseException): Add LIBGCC2_UNWIND_ATTRIBUTE to
5326         declaration.
5327         (_Unwind_ForcedUnwind): Likewise.
5328         (_Unwind_Resume): Likewise.
5329         (_Unwind_Resume_or_Rethrow): Likewise.
5330         (_Unwind_Backtrace): Likewise.
5331         (_Unwind_SjLj_RaiseException): Likewise.
5332         (_Unwind_SjLj_ForcedUnwind): Likewise.
5333         (_Unwind_SjLj_Resume): Likewise.
5334         (_Unwind_SjLj_Resume_or_Rethrow): Likewise.
5335         * unwind.inc (_Unwind_RaiseException): Add LIBGCC2_UNWIND_ATTRIBUTE
5336         to definition.
5337         (_Unwind_ForcedUnwind): Likewise.
5338         (_Unwind_Resume): Likewise.
5339         (_Unwind_Resume_or_Rethrow): Likewise.
5340         (_Unwind_Backtrace): Likewise.
5341         * unwind-compat.c (_Unwind_Backtrace): Likewise.
5342         (_Unwind_ForcedUnwind): Likewise.
5343         (_Unwind_RaiseException): Likewise.
5344         (_Unwind_Resume): Likewise.
5345         (_Unwind_Resume_or_Rethrow): Likewise.
5346
5347         * config/mips/mips.h (LIBGCC2_UNWIND_ATTRIBUTE): Define to force
5348         nomips16 mode when IN_LIBGCC2 with hard float.
5349
5350 2007-09-14  Richard Sandiford  <rsandifo@nildram.co.uk>
5351
5352         * config/mips/sdemtk.opt: Update to GPLv3.
5353         * config/mips/sdemtk.h: Likewise.
5354
5355 2007-09-14  Nigel Stephens  <nigel@mips.com>
5356
5357         * config.gcc (mips*-*-linux*): Recognise mipsisa32r2 and set
5358         MIPS_ISA_DEFAULT appropriately.  Don't make soft-float the default
5359         for mipsisa32-*-linux*.
5360
5361 2007-09-14  Nigel Stephens  <nigel@mips.com>
5362             David Ung  <davidu@mips.com>
5363             Thiemo Seufer  <ths@mips.com>
5364             Richard Sandiford  <richard@codesourcery.com>
5365
5366         * config.gcc (mips*-sde-elf*): Add support for the SDE C libraries.
5367         * configure.ac: Add a mipssde threading type.
5368         * configure: Regenerate.
5369         * config/mips/sdemtk.h: New file.
5370         * config/mips/t-sdemtk: Likewise.
5371         * config/mips/sdemtk.opt: Likewise.
5372         * gthr-mipssde.h: Likewise.
5373         * config/mips/sde.h (FUNCTION_PROFILER): Move to config/mips/sdemtk.h.
5374         * config/mips/mips.h (MIPS_SAVE_REG_FOR_PROFILING_P): New macro.
5375         (MIPS_ICACHE_SYNC): New macro, split from ...
5376         * config/mips/mips.md (clear_cache): ...here.
5377         * config/mips/mips.c (mips_save_reg_p): Check
5378         MIPS_SAVE_REG_FOR_PROFILING_P on profiled functions.
5379         (build_mips16_function_stub): Use targetm.strip_name_encoding.
5380         (build_mips16_call_stub): Likewise.
5381
5382 2007-09-14  Richard Sandiford  <richard@codesourcery.com>
5383
5384         * Makefile.in (stmp-int-hdrs): Depend on fixinc_list.
5385
5386 2007-09-14  Jakub Jelinek  <jakub@redhat.com>
5387
5388         PR target/32337
5389         * config/ia64/ia64.c (find_gr_spill): Don't decrement
5390         current_frame_info.n_local_regs.  Don't return emitted local
5391         regs.
5392         (ia64_compute_frame_size): Improve unwind hack to put
5393         RP, PFS, FP in that order by allowing some of the registers
5394         been already emitted, as long as they are emitted to the
5395         desired register.
5396
5397 2007-09-14  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
5398
5399         * config/spu/vmx2spu.h (vec_extract, vec_insert, vec_lvlx,
5400         vec_lvlxl, vec_lvrx, vec_lvrxl, vec_promote, vec_splats,
5401         vec_stvlx, vec_stvlxl, vec_stvrx, vec_stvrxl): New intrinsics.
5402
5403 2007-09-13  Eric Christopher  <echristo@apple.com>
5404             Kenneth Zadeck <zadeck@naturalbridge.com>
5405
5406         * dse.c (find_shift_sequence): New function.
5407         (replace_read): Add case to remove read if it requires shift.
5408         * config/i386/i386.c (ix86_expand_prologue): Fixed typo in comment.
5409         
5410 2007-09-13  Tom Tromey  <tromey@redhat.com>
5411
5412         * c-common.c (fname_as_string): Update.
5413         * c-parser.c (c_parser) <lex_untranslated_string>: New field.
5414         (c_lex_one_token): Update.  Add 'parser' argument.
5415         (c_parser_simple_asm_expr): Update.
5416         (c_parser_attributes): Update.
5417         (c_parser_asm_statement): Update.
5418         (c_parser_asm_operands): Update.
5419         (c_parser_peek_token): Update.
5420         (c_parser_peek_2nd_token): Update.
5421         * c-lex.c (c_lex_string_translate): Remove.
5422         (c_lex_return_raw_strings): Likewise.
5423         (c_lex_with_flags): Added 'lex_flags' argument.
5424         (lex_string): Added 'translate' argument.
5425         * c-pragma.h (c_lex_with_flags): Update.
5426         (c_lex_string_translate, c_lex_return_raw_strings): Remove.
5427         (C_LEX_STRING_NO_TRANSLATE): New define.
5428         (C_LEX_RAW_STRINGS): Likewise.
5429
5430 2007-09-13  Bernd Schmidt  <bernd.schmidt@analog.com>
5431
5432         From Jie Zhang:
5433         * config/bfin/bfin.c (enum bfin_builtins): Add BFIN_BUILTIN_ONES,
5434         BFIN_BUILTIN_CPLX_MUL_16_S40, BFIN_BUILTIN_CPLX_MAC_16_S40,
5435         BFIN_BUILTIN_CPLX_MSU_16_S40, and BFIN_BUILTIN_CPLX_SQU.
5436         (bfin_init_builtins): Initialize __builtin_bfin_ones,
5437         __builtin_bfin_min_fr1x16, __builtin_bfin_max_fr1x16,
5438         __builtin_bfin_min_fr1x32, __builtin_bfin_max_fr1x32,
5439         __builtin_bfin_cmplx_add, __builtin_bfin_cmplx_sub,
5440         __builtin_bfin_cmplx_mul_s40, __builtin_bfin_cmplx_mac_s40,
5441         __builtin_bfin_cmplx_msu_s40 and __builtin_bfin_csqu_fr16.
5442         (bdesc_1arg): Add __builtin_bfin_ones.
5443         (bfin_expand_builtin): Expand __builtin_bfin_cmplx_mul_s40,
5444         __builtin_bfin_cmplx_mac_s40, __builtin_bfin_cmplx_msu_s40,
5445         and __builtin_bfin_csqu_fr16.
5446         * config/bfin/bfin.md (UNSPEC_ONES): New constant.
5447         (ones): New define_insn.
5448         (ssaddhi3_parts): New define_insn.
5449         (sssubhi3_parts): New define_insn.
5450         (flag_mulhi_parts): New define_insn.
5451
5452 2007-09-13  Seongbae Park <seongbae.park@gmail.com>
5453
5454         * common.opt (femit-class-debug-always): Turn off by default.
5455
5456 2007-09-13  Bernd Schmidt  <bernd.schmidt@analog.com>
5457
5458         * config/bfin/bfin.md (reload_outpdi, reload_inpdi): New patterns.
5459         * config/bfin/bfin.c (bfin_secondary_reload): Make sure we use them.
5460
5461 2007-09-13  James E. Wilson  <wilson@specifix.com>
5462
5463         PR tree-optimization/33389
5464         * tree-ssa-operands.c (append_vuse): If ann->in_vdef_list true,
5465         then set build_loads before returning.
5466
5467 2007-09-13  Sandra Loosemore  <sandra@codesourcery.com>
5468             David Ung  <davidu@mips.com>
5469
5470         * config/mips/mips.h (ASM_OUTPUT_REG_PUSH): Replace {d}subu with
5471         {d}addiu and a negative immediate such that it works with MIPS16
5472         instructions.
5473         
5474 2007-09-13  H.J. Lu  <hongjiu.lu@intel.com>
5475
5476         PR bootstrap/33418
5477         * configure.ac (ld_vers): Support Linux linker.
5478         * configure: Regenerated.
5479
5480 2007-09-13  Richard Sandiford  <richard@codesourcery.com>
5481             Sandra Loosemore <sandra@codesourcery.com>
5482
5483         * config/mips/mips.h (SYMBOL_FLAG_MIPS16_FUNC): Delete.
5484         (SYMBOL_REF_MIPS16_FUNC_P): Delete.
5485         * config/mips/mips.c (mips_attribute_table): Turn mips16 and
5486         nomips16 into decl attributes.
5487         (TARGET_INSERT_ATTRIBUTES): Override.
5488         (TARGET_MERGE_DECL_ATTRIBUTES): Likewise.
5489         (TARGET_FUNCTION_ATTRIBUTE_INLINABLE_P): Always return true.
5490         (mips_mips16_type_p, mips_nomips16_type_p): Delete in favor of...
5491         (mips_mips16_decl_p, mips_nomips16_decl_p): ...these new functions.
5492         (mips_comp_type_attributes): Remove mips16 and nomips16 handling.
5493         (mips_use_mips16_mode_p): Reimplement as a function that takes
5494         a decl and considers only decl attributes.  If the decl is nested
5495         function, use its parent attributes.
5496         (mips_function_ok_for_sibcall): Use mips_use_mips16_mode_p
5497         instead of SYMBOL_REF_MIPS16_FUNC_P.
5498         (mips_set_mips16_mode): Move call to sorry here from old
5499         mips_use_mips16_mode_p.
5500         (mflip_mips16_entry): New structure.
5501         (mflip_mips16_htab): New variable.
5502         (mflip_mips16_htab_hash, mflip_mips16_htab_eq): New functions.
5503         (mflip_mips16_use_mips16_p, mips_insert_attributes): Likewise.
5504         (mips_merge_decl_attributes): New function.
5505         (mips_set_current_function): Reinstate call to mips_set_mips16_mode.
5506         Use mips_use_mips16_mode_p.
5507         (mips_output_mi_thunk): Use mips_use_mips16_mode_p instead of
5508         SYMBOL_REF_MIPS16_FUNC_P.
5509         (mips_encode_section_info): Don't set SYMBOL_FLAG_MIPS16_FUNC.
5510
5511 2007-09-13  Richard Sandiford  <richard@codesourcery.com>
5512
5513         * c-parser.c (c_parser_struct_declaration): Check for a null return.
5514
5515 2007-09-13  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
5516
5517         PR driver/33309
5518         * gcc.c (xputenv): Make argument const, and use CONST_CAST.
5519
5520 2007-09-12  Michael Meissner  <michael.meissner@amd.com>
5521             Dwarakanath Rajagopal  <dwarak.rajagopal@amd.com>
5522             Tony Linthicum  <tony.linthicum@amd.com>
5523
5524         * tree.h (function_args_iterator): New type to iterate over
5525         function arguments.
5526         (FOREACH_FUNCTION_ARGS_PTR): Iterator macros for iterating over
5527         function arguments providing a pointer to the argument.
5528         (FOREACH_FUNCTION_ARGS): Iterator macros for iterating over
5529         function arguments providing the argument.
5530         (function_args_iter_init): Inline function to initialize
5531         function_args_iterator.
5532         (function_args_iter_cond_ptr): Inline function to return the next
5533         pointer to hold the argument.
5534         (function_args_iter_cond): Inline function to return the next
5535         argument.
5536         (function_args_iter_cond_next): Advance the function args
5537         iterator.
5538         (stdarg_p): New function, return true if variable argument
5539         function.
5540         (prototype_p): New function, return true if function is
5541         prototyped.
5542         (function_args_count): New function, count the number of arguments
5543         of a function.
5544
5545         * tree.c (stdarg_p): New function, return true if variable
5546         argument function.
5547         (prototype_p): New function, return true if function is
5548         prototyped.
5549
5550         * config/i386/i386.h (TARGET_SSE5): New macro for SSE5.
5551         (TARGET_ROUND): New macro for the round/ptest instructions which
5552         are shared between SSE4.1 and SSE5.
5553         (OPTION_MASK_ISA_ROUND): Ditto.
5554         (OPTION_ISA_ROUND): Ditto.
5555         (TARGET_FUSED_MADD): New macro for -mfused-madd swtich.
5556         (TARGET_CPU_CPP_BUILTINS): Add SSE5 support.
5557
5558         * config/i386/i386.opt (-msse5): New switch for SSE5 support.
5559         (-mfused-madd): New switch to give users control over whether the
5560         compiler optimizes to use the multiply/add SSE5 instructions.
5561
5562         * config/i386/i386.c (m_AMD_MULTIPLE): Rename from
5563         m_ATHLON_K8_AMDFAM10, and change all uses.
5564         (enum pta_flags): Add PTA_SSE5.
5565         (ix86_handle_option): Turn off 3dnow if -msse5.
5566         (override_options): Add SSE5 support.
5567         (print_operand): %Y prints comparison codes for SSE5 com/pcom
5568         instructions.
5569         (ix86_expand_sse_movcc): Add SSE5 support.
5570         (ix86_expand_sse5_unpack): New function to use pperm to unpack a
5571         vector type to the next largest size.
5572         (ix86_expand_sse5_pack): New function to use pperm to pack a
5573         vector type to the next smallest size.
5574         (IX86_BUILTIN_FMADDSS): New for SSE5 intrinsic.
5575         (IX86_BUILTIN_FMADDSD): Ditto.
5576         (IX86_BUILTIN_FMADDPS): Ditto.
5577         (IX86_BUILTIN_FMADDPD): Ditto.
5578         (IX86_BUILTIN_FMSUBSS): Ditto.
5579         (IX86_BUILTIN_FMSUBSD): Ditto.
5580         (IX86_BUILTIN_FMSUBPS): Ditto.
5581         (IX86_BUILTIN_FMSUBPD): Ditto.
5582         (IX86_BUILTIN_FNMADDSS): Ditto.
5583         (IX86_BUILTIN_FNMADDSD): Ditto.
5584         (IX86_BUILTIN_FNMADDPS): Ditto.
5585         (IX86_BUILTIN_FNMADDPD): Ditto.
5586         (IX86_BUILTIN_FNMSUBSS): Ditto.
5587         (IX86_BUILTIN_FNMSUBSD): Ditto.
5588         (IX86_BUILTIN_FNMSUBPS): Ditto.
5589         (IX86_BUILTIN_FNMSUBPD): Ditto.
5590         (IX86_BUILTIN_PCMOV_V2DI): Ditto.
5591         (IX86_BUILTIN_PCMOV_V4SI): Ditto.
5592         (IX86_BUILTIN_PCMOV_V8HI): Ditto.
5593         (IX86_BUILTIN_PCMOV_V16QI): Ditto.
5594         (IX86_BUILTIN_PCMOV_V4SF): Ditto.
5595         (IX86_BUILTIN_PCMOV_V2DF): Ditto.
5596         (IX86_BUILTIN_PPERM): Ditto.
5597         (IX86_BUILTIN_PERMPS): Ditto.
5598         (IX86_BUILTIN_PERMPD): Ditto.
5599         (IX86_BUILTIN_PMACSSWW): Ditto.
5600         (IX86_BUILTIN_PMACSWW): Ditto.
5601         (IX86_BUILTIN_PMACSSWD): Ditto.
5602         (IX86_BUILTIN_PMACSWD): Ditto.
5603         (IX86_BUILTIN_PMACSSDD): Ditto.
5604         (IX86_BUILTIN_PMACSDD): Ditto.
5605         (IX86_BUILTIN_PMACSSDQL): Ditto.
5606         (IX86_BUILTIN_PMACSSDQH): Ditto.
5607         (IX86_BUILTIN_PMACSDQL): Ditto.
5608         (IX86_BUILTIN_PMACSDQH): Ditto.
5609         (IX86_BUILTIN_PMADCSSWD): Ditto.
5610         (IX86_BUILTIN_PMADCSWD): Ditto.
5611         (IX86_BUILTIN_PHADDBW): Ditto.
5612         (IX86_BUILTIN_PHADDBD): Ditto.
5613         (IX86_BUILTIN_PHADDBQ): Ditto.
5614         (IX86_BUILTIN_PHADDWD): Ditto.
5615         (IX86_BUILTIN_PHADDWQ): Ditto.
5616         (IX86_BUILTIN_PHADDDQ): Ditto.
5617         (IX86_BUILTIN_PHADDUBW): Ditto.
5618         (IX86_BUILTIN_PHADDUBD): Ditto.
5619         (IX86_BUILTIN_PHADDUBQ): Ditto.
5620         (IX86_BUILTIN_PHADDUWD): Ditto.
5621         (IX86_BUILTIN_PHADDUWQ): Ditto.
5622         (IX86_BUILTIN_PHADDUDQ): Ditto.
5623         (IX86_BUILTIN_PHSUBBW): Ditto.
5624         (IX86_BUILTIN_PHSUBWD): Ditto.
5625         (IX86_BUILTIN_PHSUBDQ): Ditto.
5626         (IX86_BUILTIN_PROTB): Ditto.
5627         (IX86_BUILTIN_PROTW): Ditto.
5628         (IX86_BUILTIN_PROTD): Ditto.
5629         (IX86_BUILTIN_PROTQ): Ditto.
5630         (IX86_BUILTIN_PROTB_IMM): Ditto.
5631         (IX86_BUILTIN_PROTW_IMM): Ditto.
5632         (IX86_BUILTIN_PROTD_IMM): Ditto.
5633         (IX86_BUILTIN_PROTQ_IMM): Ditto.
5634         (IX86_BUILTIN_PSHLB): Ditto.
5635         (IX86_BUILTIN_PSHLW): Ditto.
5636         (IX86_BUILTIN_PSHLD): Ditto.
5637         (IX86_BUILTIN_PSHLQ): Ditto.
5638         (IX86_BUILTIN_PSHAB): Ditto.
5639         (IX86_BUILTIN_PSHAW): Ditto.
5640         (IX86_BUILTIN_PSHAD): Ditto.
5641         (IX86_BUILTIN_PSHAQ): Ditto.
5642         (IX86_BUILTIN_FRCZSS): Ditto.
5643         (IX86_BUILTIN_FRCZSD): Ditto.
5644         (IX86_BUILTIN_FRCZPS): Ditto.
5645         (IX86_BUILTIN_FRCZPD): Ditto.
5646         (IX86_BUILTIN_CVTPH2PS): Ditto.
5647         (IX86_BUILTIN_CVTPS2PH): Ditto.
5648         (IX86_BUILTIN_COMEQSS): Ditto.
5649         (IX86_BUILTIN_COMNESS): Ditto.
5650         (IX86_BUILTIN_COMLTSS): Ditto.
5651         (IX86_BUILTIN_COMLESS): Ditto.
5652         (IX86_BUILTIN_COMGTSS): Ditto.
5653         (IX86_BUILTIN_COMGESS): Ditto.
5654         (IX86_BUILTIN_COMUEQSS): Ditto.
5655         (IX86_BUILTIN_COMUNESS): Ditto.
5656         (IX86_BUILTIN_COMULTSS): Ditto.
5657         (IX86_BUILTIN_COMULESS): Ditto.
5658         (IX86_BUILTIN_COMUGTSS): Ditto.
5659         (IX86_BUILTIN_COMUGESS): Ditto.
5660         (IX86_BUILTIN_COMORDSS): Ditto.
5661         (IX86_BUILTIN_COMUNORDSS): Ditto.
5662         (IX86_BUILTIN_COMFALSESS): Ditto.
5663         (IX86_BUILTIN_COMTRUESS): Ditto.
5664         (IX86_BUILTIN_COMEQSD): Ditto.
5665         (IX86_BUILTIN_COMNESD): Ditto.
5666         (IX86_BUILTIN_COMLTSD): Ditto.
5667         (IX86_BUILTIN_COMLESD): Ditto.
5668         (IX86_BUILTIN_COMGTSD): Ditto.
5669         (IX86_BUILTIN_COMGESD): Ditto.
5670         (IX86_BUILTIN_COMUEQSD): Ditto.
5671         (IX86_BUILTIN_COMUNESD): Ditto.
5672         (IX86_BUILTIN_COMULTSD): Ditto.
5673         (IX86_BUILTIN_COMULESD): Ditto.
5674         (IX86_BUILTIN_COMUGTSD): Ditto.
5675         (IX86_BUILTIN_COMUGESD): Ditto.
5676         (IX86_BUILTIN_COMORDSD): Ditto.
5677         (IX86_BUILTIN_COMUNORDSD): Ditto.
5678         (IX86_BUILTIN_COMFALSESD): Ditto.
5679         (IX86_BUILTIN_COMTRUESD): Ditto.
5680         (IX86_BUILTIN_COMEQPS): Ditto.
5681         (IX86_BUILTIN_COMNEPS): Ditto.
5682         (IX86_BUILTIN_COMLTPS): Ditto.
5683         (IX86_BUILTIN_COMLEPS): Ditto.
5684         (IX86_BUILTIN_COMGTPS): Ditto.
5685         (IX86_BUILTIN_COMGEPS): Ditto.
5686         (IX86_BUILTIN_COMUEQPS): Ditto.
5687         (IX86_BUILTIN_COMUNEPS): Ditto.
5688         (IX86_BUILTIN_COMULTPS): Ditto.
5689         (IX86_BUILTIN_COMULEPS): Ditto.
5690         (IX86_BUILTIN_COMUGTPS): Ditto.
5691         (IX86_BUILTIN_COMUGEPS): Ditto.
5692         (IX86_BUILTIN_COMORDPS): Ditto.
5693         (IX86_BUILTIN_COMUNORDPS): Ditto.
5694         (IX86_BUILTIN_COMFALSEPS): Ditto.
5695         (IX86_BUILTIN_COMTRUEPS): Ditto.
5696         (IX86_BUILTIN_COMEQPD): Ditto.
5697         (IX86_BUILTIN_COMNEPD): Ditto.
5698         (IX86_BUILTIN_COMLTPD): Ditto.
5699         (IX86_BUILTIN_COMLEPD): Ditto.
5700         (IX86_BUILTIN_COMGTPD): Ditto.
5701         (IX86_BUILTIN_COMGEPD): Ditto.
5702         (IX86_BUILTIN_COMUEQPD): Ditto.
5703         (IX86_BUILTIN_COMUNEPD): Ditto.
5704         (IX86_BUILTIN_COMULTPD): Ditto.
5705         (IX86_BUILTIN_COMULEPD): Ditto.
5706         (IX86_BUILTIN_COMUGTPD): Ditto.
5707         (IX86_BUILTIN_COMUGEPD): Ditto.
5708         (IX86_BUILTIN_COMORDPD): Ditto.
5709         (IX86_BUILTIN_COMUNORDPD): Ditto.
5710         (IX86_BUILTIN_COMFALSEPD): Ditto.
5711         (IX86_BUILTIN_COMTRUEPD): Ditto.
5712         (IX86_BUILTIN_PCOMEQUB): Ditto.
5713         (IX86_BUILTIN_PCOMNEUB): Ditto.
5714         (IX86_BUILTIN_PCOMLTUB): Ditto.
5715         (IX86_BUILTIN_PCOMLEUB): Ditto.
5716         (IX86_BUILTIN_PCOMGTUB): Ditto.
5717         (IX86_BUILTIN_PCOMGEUB): Ditto.
5718         (IX86_BUILTIN_PCOMFALSEUB): Ditto.
5719         (IX86_BUILTIN_PCOMTRUEUB): Ditto.
5720         (IX86_BUILTIN_PCOMEQUW): Ditto.
5721         (IX86_BUILTIN_PCOMNEUW): Ditto.
5722         (IX86_BUILTIN_PCOMLTUW): Ditto.
5723         (IX86_BUILTIN_PCOMLEUW): Ditto.
5724         (IX86_BUILTIN_PCOMGTUW): Ditto.
5725         (IX86_BUILTIN_PCOMGEUW): Ditto.
5726         (IX86_BUILTIN_PCOMFALSEUW): Ditto.
5727         (IX86_BUILTIN_PCOMTRUEUW): Ditto.
5728         (IX86_BUILTIN_PCOMEQUD): Ditto.
5729         (IX86_BUILTIN_PCOMNEUD): Ditto.
5730         (IX86_BUILTIN_PCOMLTUD): Ditto.
5731         (IX86_BUILTIN_PCOMLEUD): Ditto.
5732         (IX86_BUILTIN_PCOMGTUD): Ditto.
5733         (IX86_BUILTIN_PCOMGEUD): Ditto.
5734         (IX86_BUILTIN_PCOMFALSEUD): Ditto.
5735         (IX86_BUILTIN_PCOMTRUEUD): Ditto.
5736         (IX86_BUILTIN_PCOMEQUQ): Ditto.
5737         (IX86_BUILTIN_PCOMNEUQ): Ditto.
5738         (IX86_BUILTIN_PCOMLTUQ): Ditto.
5739         (IX86_BUILTIN_PCOMLEUQ): Ditto.
5740         (IX86_BUILTIN_PCOMGTUQ): Ditto.
5741         (IX86_BUILTIN_PCOMGEUQ): Ditto.
5742         (IX86_BUILTIN_PCOMFALSEUQ): Ditto.
5743         (IX86_BUILTIN_PCOMTRUEUQ): Ditto.
5744         (IX86_BUILTIN_PCOMEQB): Ditto.
5745         (IX86_BUILTIN_PCOMNEB): Ditto.
5746         (IX86_BUILTIN_PCOMLTB): Ditto.
5747         (IX86_BUILTIN_PCOMLEB): Ditto.
5748         (IX86_BUILTIN_PCOMGTB): Ditto.
5749         (IX86_BUILTIN_PCOMGEB): Ditto.
5750         (IX86_BUILTIN_PCOMFALSEB): Ditto.
5751         (IX86_BUILTIN_PCOMTRUEB): Ditto.
5752         (IX86_BUILTIN_PCOMEQW): Ditto.
5753         (IX86_BUILTIN_PCOMNEW): Ditto.
5754         (IX86_BUILTIN_PCOMLTW): Ditto.
5755         (IX86_BUILTIN_PCOMLEW): Ditto.
5756         (IX86_BUILTIN_PCOMGTW): Ditto.
5757         (IX86_BUILTIN_PCOMGEW): Ditto.
5758         (IX86_BUILTIN_PCOMFALSEW): Ditto.
5759         (IX86_BUILTIN_PCOMTRUEW): Ditto.
5760         (IX86_BUILTIN_PCOMEQD): Ditto.
5761         (IX86_BUILTIN_PCOMNED): Ditto.
5762         (IX86_BUILTIN_PCOMLTD): Ditto.
5763         (IX86_BUILTIN_PCOMLED): Ditto.
5764         (IX86_BUILTIN_PCOMGTD): Ditto.
5765         (IX86_BUILTIN_PCOMGED): Ditto.
5766         (IX86_BUILTIN_PCOMFALSED): Ditto.
5767         (IX86_BUILTIN_PCOMTRUED): Ditto.
5768         (IX86_BUILTIN_PCOMEQQ): Ditto.
5769         (IX86_BUILTIN_PCOMNEQ): Ditto.
5770         (IX86_BUILTIN_PCOMLTQ): Ditto.
5771         (IX86_BUILTIN_PCOMLEQ): Ditto.
5772         (IX86_BUILTIN_PCOMGTQ): Ditto.
5773         (IX86_BUILTIN_PCOMGEQ): Ditto.
5774         (IX86_BUILTIN_PCOMFALSEQ): Ditto.
5775         (IX86_BUILTIN_PCOMTRUEQ): Ditto.
5776         (bdesc_ptest): Change OPTION_MASK_ISA_SSE4_1 to
5777         OPTION_MASK_ISA_ROUND for instructions that are shared between
5778         SSE4.1 and SSE5.
5779         (bdesc_2arg): Ditto.
5780         (bdesc_sse_3arg): Ditto.
5781         (enum multi_arg_type): New enum for describing the various SSE5
5782         intrinsic argument types.
5783         (bdesc_multi_arg): New table for SSE5 intrinsics.
5784         (ix86_init_mmx_sse_builtins): Add SSE5 intrinsic support.
5785         (ix86_expand_multi_arg_builtin): New function for creating SSE5
5786         intrinsics.
5787         (ix86_expand_builtin): Add SSE5 intrinsic support.
5788         (ix86_sse5_valid_op_p): New function to validate SSE5 3 and 4
5789         operand instructions.
5790         (ix86_expand_sse5_multiple_memory): New function to split the
5791         second memory reference from SSE5 instructions.
5792         (type_has_variadic_args_p): Delete in favor of stdarg_p.
5793         (ix86_return_pops_args): Use stdarg_p to determine if the function
5794         has variable arguments.
5795         (ix86_setup_incoming_varargs): Ditto.
5796         (x86_this_parameter): Ditto.
5797
5798         * config/i386/i386-protos.h (ix86_expand_sse5_unpack): Add
5799         declaration.
5800         (ix86_expand_sse5_pack): Ditto.
5801         (ix86_sse5_valid_op_p): Ditto.
5802         (ix86_expand_sse5_multiple_memory): Ditto.
5803
5804         * config/i386/i386.md (UNSPEC_SSE5_INTRINSIC): Add new UNSPEC
5805         constant for SSE5 support.
5806         (UNSPEC_SSE5_UNSIGNED_CMP): Ditto.
5807         (UNSPEC_SSE5_TRUEFALSE): Ditto.
5808         (UNSPEC_SSE5_PERMUTE): Ditto.
5809         (UNSPEC_SSE5_ASHIFT): Ditto.
5810         (UNSPEC_SSE5_LSHIFT): Ditto.
5811         (UNSPEC_FRCZ): Ditto.
5812         (UNSPEC_CVTPH2PS): Ditto.
5813         (UNSPEC_CVTPS2PH): Ditto.
5814         (PCOM_FALSE): Add new constant for true/false SSE5 comparisons.
5815         (PCOM_TRUE): Ditto.
5816         (COM_FALSE_S): Ditto.
5817         (COM_FALSE_P): Ditto.
5818         (COM_TRUE_S): Ditto.
5819         (COM_TRUE_P): Ditto.
5820         (type attribute): Add ssemuladd, sseiadd1, ssecvt1, sse4arg types.
5821         (unit attribute): Add support for ssemuladd, ssecvt1, sseiadd1 sse4arg
5822         types.
5823         (memory attribute): Ditto.
5824         (sse4_1_round<mode>2): Use TARGET_ROUND instead of TARGET_SSE4_1.
5825         Use SSE4_1_ROUND_* constants instead of hard coded numbers.
5826         (rint<mode>2): Use TARGET_ROUND instead of TARGET_SSE4_1.
5827         (floor<mode>2): Ditto.
5828         (ceil<mode>2): Ditto.
5829         (btrunc<mode>2): Ditto.
5830         (nearbyintdf2): Ditto.
5831         (nearbyintsf2): Ditto.
5832         (sse_setccsf): Disable if SSE5.
5833         (sse_setccdf): Ditto.
5834         (sse5_setcc<mode>): New support for SSE5 conditional move.
5835         (sse5_pcmov_<mode>): Ditto.
5836
5837         * config/i386/sse.md (SSEMODE1248): New mode iterator for SSE5.
5838         (SSEMODEF4): Ditto.
5839         (SSEMODEF2P): Ditto.
5840         (ssemodesuffixf4): New mode attribute for SSE5.
5841         (ssemodesuffixf2s): Ditto.
5842         (ssemodesuffixf2c): Ditto.
5843         (sserotatemax): Ditto.
5844         (ssescalarmode): Ditto.
5845         (sse_maskcmpv4sf3): Disable if SSE5.
5846         (sse_maskcmpv2df3): Ditto.
5847         (sse_vmmaskcmpv4sf3): Ditto.
5848         (sse5_fmadd<mode>4): Add SSE5 floating point multiply/add
5849         instructions.
5850         (sse5_vmfmadd<mode>4): Ditto.
5851         (sse5_fmsub<mode>4): Ditto.
5852         (sse5_vmfmsub<mode>4): Ditto.
5853         (sse5_fnmadd<mode>4): Ditto.
5854         (sse5_vmfnmadd<mode>4): Ditto.
5855         (sse5_fnmsub<mode>4): Ditto.
5856         (sse5_vmfnmsub<mode>4): Ditto.
5857         (sse5i_fmadd<mode>4): Ditto.
5858         (sse5i_fmsub<mode>4): Ditto.
5859         (sse5i_fnmadd<mode>4): Ditto.
5860         (sse5i_fnmsub<mode>4): Ditto.
5861         (sse5i_vmfmadd<mode>4): Ditto.
5862         (sse5i_vmfmsub<mode>4): Ditto.
5863         (sse5i_vmfnmadd<mode>4): Ditto.
5864         (sse5i_vmfnmsub<mode>4): Ditto.
5865         (mulv16qi3): Add SSE5 support.
5866         (mulv4si3): Ditto.
5867         (sse5_mulv4si3): New insn for 32-bit multiply support on SSE5.
5868         (sse2_mulv4si3): Disable if SSE5.
5869         (sse4_1_roundpd): Use TARGET_ROUND instead of TARGET_SSE4_1.
5870         (sse4_1_roundps): Ditto.
5871         (sse4_1_roundsd): Ditto.
5872         (sse4_1_roundss): Ditto.
5873         (sse_maskcmpv4sf3): Disable if SSE5 so the SSE5 instruction will
5874         be generated.
5875         (sse_maskcmpsf3): Ditto.
5876         (sse_vmmaskcmpv4sf3): Ditto.
5877         (sse2_maskcmpv2df3): Ditto.
5878         (sse2_maskcmpdf3): Ditto.
5879         (sse2_vmmaskcmpv2df3): Ditto.
5880         (sse2_eq<mode>3): Ditto.
5881         (sse2_gt<mode>3): Ditto.
5882         (sse5_pcmov_<mode>): Add SSE5 support.
5883         (vec_unpacku_hi_v16qi): Ditto.
5884         (vec_unpacks_hi_v16qi): Ditto.
5885         (vec_unpacku_lo_v16qi): Ditto.
5886         (vec_unpacks_lo_v16qi): Ditto.
5887         (vec_unpacku_hi_v8hi): Ditto.
5888         (vec_unpacks_hi_v8hi): Ditto.
5889         (vec_unpacku_lo_v8hi): Ditto.
5890         (vec_unpacks_lo_v8hi): Ditto.
5891         (vec_unpacku_hi_v4si): Ditto.
5892         (vec_unpacks_hi_v4si): Ditto.
5893         (vec_unpacku_lo_v4si): Ditto.
5894         (vec_unpacks_lo_v4si): Ditto.
5895         (sse5_pmacsww): New SSE5 intrinsic insn.
5896         (sse5_pmacssww): Ditto.
5897         (sse5_pmacsdd): Ditto.
5898         (sse5_pmacssdd): Ditto.
5899         (sse5_pmacssdql): Ditto.
5900         (sse5_pmacssdqh): Ditto.
5901         (sse5_pmacsdqh): Ditto.
5902         (sse5_pmacsswd): Ditto.
5903         (sse5_pmacswd): Ditto.
5904         (sse5_pmadcsswd): Ditto.
5905         (sse5_pmadcswd): Ditto.
5906         (sse5_pcmov_<move>): Conditional move support on SSE5.
5907         (sse5_phaddbw): New SSE5 intrinsic insn.
5908         (sse5_phaddbd): Ditto.
5909         (sse5_phaddbq): Ditto.
5910         (sse5_phaddwd): Ditto.
5911         (sse5_phaddwq): Ditto.
5912         (sse5_phadddq): Ditto.
5913         (sse5_phaddubw): Ditto.
5914         (sse5_phaddubd): Ditto.
5915         (sse5_phaddubq): Ditto.
5916         (sse5_phadduwd): Ditto.
5917         (sse5_phadduwq): Ditto.
5918         (sse5_phaddudq): Ditto.
5919         (sse5_phsubbw): Ditto.
5920         (sse5_phsubwd): Ditto.
5921         (sse5_phsubdq): Ditto.
5922         (sse5_pperm): Ditto.
5923         (sse5_pperm_sign_v16qi_v8hi): New insns for pack/unpack with SSE5.
5924         (sse5_pperm_zero_v16qi_v8hi): Ditto.
5925         (sse5_pperm_sign_v8hi_v4si): Ditto.
5926         (sse5_pperm_zero_v8hi_v4si): Ditto.
5927         (sse5_pperm_sign_v4si_v2di): Ditto.
5928         (sse5_pperm_sign_v4si_v2di): Ditto.
5929         (sse5_pperm_pack_v2di_v4si): Ditto.
5930         (sse5_pperm_pack_v4si_v8hi): Ditto.
5931         (sse5_pperm_pack_v8hi_v16qi): Ditto.
5932         (sse5_perm<mode>): New SSE5 intrinsic insn.
5933         (rotl<mode>3): Ditto.
5934         (sse5_rotl<mode>3): Ditto.
5935         (sse5_ashl<mode>3): Ditto.
5936         (sse5_lshl<mode>3): Ditto.
5937         (sse5_frcz<mode>2): Ditto.
5938         (sse5s_frcz<mode>2): Ditto.
5939         (sse5_cvtph2ps): Ditto.
5940         (sse5_cvtps2ph): Ditto.
5941         (sse5_vmmaskcmp<mode>3): Ditto.
5942         (sse5_com_tf<mode>3): Ditto.
5943         (sse5_maskcmp<mode>3): Ditto.
5944         (sse5_maskcmp_uns<mode>3): Ditto.
5945         (sse5_maskcmp_uns2<mode>3): Ditto.
5946         (sse5_pcom_tf<mode>3): Ditto.
5947         
5948         * config/i386/predicates.md (const_0_to_31_operand): New predicate
5949         to match 0..31.
5950         (sse5_comparison_float_operator): New predicate to match the
5951         comparison operators supported by the SSE5 com instruction.
5952         (ix86_comparison_int_operator): New predicate to match just the
5953         signed int comparisons.
5954         (ix86_comparison_uns_operator): New predicate to match just the
5955         unsigned int comparisons.
5956
5957         * doc/invoke.texi (-msse5): Add documentation.
5958         (-mfused-madd): Ditto.
5959
5960         * doc/extend.texi (x86 intrinsics): Document new SSE5 intrinsics.
5961
5962         * config.gcc (i[34567]86-*-*): Include bmmintrin.h and
5963         mmintrin-common.h.
5964         (x86_64-*-*): Ditto.
5965
5966         * config/i386/cpuid.h (bit_SSE5): Define SSE5 bit.
5967
5968         * config/i386/bmmintrin.h: New file, provide common x86 compiler
5969         intrinisics for SSE5.
5970
5971         * config/i386/smmintrin.h: Move instructions shared with SSE5 to
5972         mmintrin-common.h.
5973
5974         * config/i386/mmintrin-common.h: New file, to contain common
5975         instructions between SSE4.1 and SSE5.
5976
5977         * config/i386/netware.c (gen_stdcall_or_fastcall_decoration): Use
5978         FOREACH_FUNCTION_ARGS to iterate over the argument list.
5979         (gen_regparm_prefix): Ditto.
5980
5981         * config/i386/winnt.c (gen_stdcall_or_fastcall_suffix): Use
5982         FOREACH_FUNCTION_ARGS to iterate over the argument list.  Use
5983         prototype_p to determine if a function is prototyped.
5984
5985 2007-09-12  Janis Johnson  <janis187@us.ibm.com>
5986
5987         * config/dfp-bit.c (dfp_conversion_exception): New function.
5988         (DFP_TO_DFP) Add new variants to use direct conversions in decNumber.
5989         (DFP_TO_INT): Ditto.
5990         (INT_TO_DFP): Ditto.
5991         * config/dfp-bit.h (DEC_FLOAT_FROM_INT, DEC_FLOAT_TO_INT): New.
5992
5993 2007-09-12  Jakub Jelinek  <jakub@redhat.com>
5994
5995         PR target/32338
5996         * config/ia64/ia64.c (ia64_expand_epilogue): Emit blockage
5997         before sp restoration even when total_size is 0, but
5998         frame_pointer_needed.
5999
6000 2007-09-12  Bob Wilson  <bob.wilson@acm.org>
6001
6002         * config/xtensa/xtensa.c (machine_function): Add vararg_a7_copy.
6003         (xtensa_copy_incoming_a7): Use start_sequence instead of
6004         push_to_sequence.  Stash insns in vararg_a7_copy for builtin_saveregs.
6005         (xtensa_builtin_saveregs): Place code from vararg_a7_copy at the start
6006         of the saveregs sequence.
6007
6008 2007-09-12  Richard Sandiford  <richard@codesourcery.com>
6009
6010         * c-tree.h (grokfield): Add a "tree *" argument.
6011         * c-decl.c (grokdeclarator): Take a pointer to the decl's attributes.
6012         Chain nested decl attributes to it.  Don't call decl_attributes here.
6013         (groktypename): Pass grokdeclarator a pointer to the attribute list.
6014         (start_decl, grokparm, push_parm_decl, start_function): Likewise.
6015         (grokfield): Take a pointer to the decl's attributes and pass
6016         it to grokdeclarator.
6017         * c-parser.c (c_parser_struct_declaration): Update the calls to
6018         grokfield.  Call decl_attributes for anonymous struct and union
6019         fields.
6020
6021 2007-09-12  Jan Hubicka  <jh@suse.cz>
6022
6023         * c-objc-common.h (LANG_HOOKS_CALLGRAPH_EXPAND_FUNCTION): Kill.
6024
6025 2007-09-12  Ira Rosen  <irar@il.ibm.com>
6026
6027         PR tree-optimization/32377
6028         * tree-vect-analyze.c (vect_analyze_data_ref_dependence): Distinguish
6029         between positive and negative dependence distance using DDR_REVERSED_P.
6030
6031 2007-09-12  Dorit Nuzman  <dorit@il.ibm.com>
6032
6033         PR tree-optimization/33373
6034         * tree-vect-analyze (vect_determine_vectorization_factor): Call 
6035         TREE_INT_CST_LOW when comparing TYPE_SIZE_UNIT. 
6036
6037 2007-09-12  Jan Hubicka  <jh@suse.cz>
6038
6039         PR target/33393
6040         * i386.md (floatsisf2_mixed_memory, floatsisf2_sse_memory): Disable
6041         for !SSE_MATH
6042
6043 2007-09-12  Christian Bruel  <christian.bruel@st.com>
6044
6045         * sh.h (SH_DBX_REGISTER_NUMBER): Added fpscr, fixed sr/gbr regs.
6046         * linux-unwind.h (SH_DWARF_FRAME_GBR): fixed. 
6047         
6048 2007-09-12  Ira Rosen  <irar@il.ibm.com>
6049
6050         * tree-vect-transform.c (vect_get_slp_defs): Don't build a vector
6051         for oprnd1 if not required.
6052         (vectorizable_operation): Use scalar operand in SLP in case of 
6053         shift with scalar argument.
6054
6055 2007-09-12  Ira Rosen  <irar@il.ibm.com>
6056
6057         * params.def (PARAM_MIN_VECT_LOOP_BOUND): Change default and minimum 
6058         to 1.
6059
6060 2007-09-11  James E. Wilson  <wilson@specifix.com>
6061
6062         * defaults.h (DWARF2_UNWIND_INFO): Don't define if
6063         TARGET_UNWIND_INFO is defined.
6064         * config/ia64/ia64.h (INCOMING_RETURN_ADDR_RTX): Delete undef
6065         after definition.
6066
6067 2007-09-12  Kaz Kojima  <kkojima@gcc.gnu.org>
6068
6069         * config/sh/sh.c (calc_live_regs): Use
6070         current_function_saves_all_registers instead of
6071         current_function_has_nonlocal_label.
6072         (sh_allocate_initial_value): Likewise.
6073         (sh_get_pr_initial_val): Likewise.
6074         * config/sh/sh.h (SHMEDIA_REGS_STACK_ADJUST): Likewise.
6075         * config/sh/sh.md (load_ra): Likewise.
6076
6077 2007-09-12  Hans-Peter Nilsson  <hp@axis.com>
6078
6079         * config/cris/t-linux (LIMITS_H_TEST): Only define if not inhibit_libc.
6080
6081         PR target/33360
6082         * config/cris/cris.c (cris_expand_pic_call_address): Fix typo in
6083         GET_CODE (x) == CONST_INT to CONST_INT_P (x) transformation.
6084
6085 2007-09-12  Sa Liu  <saliu@de.ibm.com>
6086
6087         * config/spu/spu.c (spu_emit_branch_or_set): Handle NaN values as
6088         operands to DFmode GE or LE compares.
6089
6090 2007-09-12  Bernd Schmidt  <bernd.schmidt@analog.com>
6091
6092         * config/bfin/bfin.h (enum reg_class, REG_CLASS_CONTENTS,
6093         REG_CLASS_NAMES): Add P0REGS.
6094         (REGNO_REG_CLASS): Return it where appropriate.
6095         (REG_CLASS_FROM_CONSTRAINT): Add 'qA'.
6096         (CLASS_LIKELY_SPILLED_P): P0REGS is likely_spilled.
6097         * doc/md.texi (Blackfin family): Document 'q' constraints.
6098
6099 2007-09-11  Steve Kenton  <skenton@ou.edu>
6100
6101         * pa/linux-unwind.h: Guard with inhibit_libc.
6102         * pa/hpux-unwind.h: Likewise.
6103
6104 2007-09-11  David Daney  <ddaney@avtrex.com>
6105
6106         * doc/invoke.texi: Document new MIPS -mllsc and -mno-llsc options.
6107         * doc/install.texi: Document new --with-llsc and --without-llsc
6108         options.
6109         * config.gcc: Handle --with-llsc and --without-llsc configure options.
6110         * config/mips/mips.md (sync, memory_barrier): Wrap sync instrunction
6111         in %| and %- operand codes.  Depend on GENERATE_SYNC instead of
6112         ISA_HAS_SYNC.
6113         (sync_compare_and_swap<mode>, sync_add<mode>, sync_sub<mode>,
6114         sync_old_add<mode>, sync_old_sub<mode>, sync_new_add<mode>,
6115         sync_new_sub<mode>, sync_<optab><mode>, sync_old_<optab><mode>,
6116         sync_new_<optab><mode>, sync_nand<mode>, sync_old_nand<mode>,
6117         sync_new_nand<mode>, sync_lock_test_and_set<mode>): Depend on
6118         GENERATE_LL_SC instead of ISA_HAS_LL_SC.
6119         * config/mips/mips.opt (mllsc): New option.
6120         * config/mips/mips.c (mips_llsc): Define variable.
6121         (mips_handle_option): Handle mllsc option.
6122         (override_options): Set mips_print_operand_punct for '|' and '-'.
6123         (print_operand): Add new %| and %- operand codes.
6124         * config/mips/mips.h (mips_llsc_setting): New enum type.
6125         (mips_llsc): Declare.
6126         (OPTION_DEFAULT_SPECS): Add llsc handling.
6127         (GENERATE_SYNC): New macro.
6128         (GENERATE_LL_SC): New macro.
6129         (MIPS_COMPARE_AND_SWAP, MIPS_SYNC_OP, MIPS_SYNC_OLD_OP,
6130         MIPS_SYNC_NEW_OP, MIPS_SYNC_NAND, MIPS_SYNC_OLD_NAND,
6131         MIPS_SYNC_NEW_NAND, MIPS_SYNC_EXCHANGE): Wrap instructions
6132         in %| and %- operand codes.
6133
6134 2007-09-11  Eric Botcazou  <ebotcazou@adacore.com>
6135
6136         * tree-ssa-structalias.c (push_fields_onto_fieldstack): Deal with
6137         TYPE_NONALIASED_COMPONENT like with DECL_NONADDRESSABLE_P.
6138
6139 2007-09-11  Jason Merrill  <jason@redhat.com>
6140
6141         PR middle-end/27945
6142         * stor-layout.c (layout_decl): Do pack variable size fields.    
6143
6144 2007-09-11  Maxim Kuvyrkov  <maxim@codesourcery.com>
6145
6146         * config/m68k/predicates.md (movsi_const0_operand,
6147         non_symbolic_call_operand): New predicates.
6148
6149         * config/m68k/constraints.md (Cs, Ci, C0, Cj, CQ, CW, CZ, CS, Ap, Ac):
6150         New constraints.
6151         * doc/md.texi (Constraints for Particular Machines: Motorola 680x0):
6152         Document constraints N, O, P, R, S, T, Q, U, W, Cs, Ci, C0, Cj, CQ,
6153         CW, CZ, CS, Ap and Ac.
6154
6155         * config/m68k/m68k.md (UNSPEC_IB): New constant.
6156         (constraints.md): New include.
6157         (cpu, type, type1, opx, opy, opx_type, opy_type, size, opx_access,
6158         opx_mem, opy_mem, op_mem, guess, split): New attributes.
6159         (movdf_internal): Name pattern.  Fix to use alternatives.  Add split.
6160         Specify attributes.
6161         (pushdi): Add split.
6162         (tstsi_internal): Name pattern.  Fix to use alternatives.  Specify
6163         attributes.  Split tstsi_internal_68020_cf from it.
6164         (tstsi_internal_68020_cf): New pattern.
6165         (tsthi_internal, tstqi_internal): Name pattern.  Specify attributes.
6166         (tst<mode>_cf): Specify attributea.
6167         (cmpsi_cf): Name pattern.  Specify attributes.
6168         (cmp<mode>_68881, cmp<mode>_cf): Specify type attribute.
6169         (pushexthisi_const): Fix to use alternatives.  Specify
6170         attributes.
6171         (movsi_const0): Split movsi_const0_68000_10 and movsi_const0_68040_60
6172         from it.  Fix to use alternatives.  Specify attributes.
6173         (movsi_const0_68040_10, movsi_const0_68040_60): New patterns.
6174         (movsi_cf, movstrictqi_cf): Fix to use alternatives.  Specify
6175         attributes.
6176         (movsf_cf_soft): Specify attributes.
6177         (movdf_cf_soft): Add split.
6178         (pushasi, zero_extendhisi2_cf, zero_extendqisi2_cfv4,
6179         cfv4_extendhisi2, 68k_extendhisi2, extendqihi2, cfv4_extendqisi2,
6180         68k_extendqisi2, truncdfsf2_cf): Specify attributes.
6181         (truncdfsf2_68881): Name pattern.  Specify attributes.
6182         (floatsi<mode>2_cf, floathi<mode>2_68881, floathi<mode>2_cf,
6183         floatqi<mode>2_68881, floatqi<mode>2_cf, ftrunc<mode>2_cf,
6184         fix<mode>qi2_cf, fix<mode>hi2_cf, fix<mode>si2_cf, adddi_dishl32):
6185         Specify attributes.
6186         (addsi3_5200): Fix to use alternatives.  Specify attributes.
6187         Add splits.
6188         (add<mode>3_cf, subdi_dishl32): Specify attributes.
6189         (subsi3): Add alternative for subq.l.  Specify attributes.
6190         (sub<mode>3_cf, mulhi3, mulhisi3): Specify attributes.
6191         (mulhisisi3_s, mulsi3_68020, mulsi3_cf): Name pattern.  Specify
6192         attributes.
6193         (umulhisi3): Specify attributes.
6194         (mulhisisi3_z): Name pattern.  Specify attributes.
6195         (fmul<mode>3_cf, div<mode>3_cf, negsi2_internal, negsi2_5200,
6196         sqrt<mode>2_68881, clzsi2, one_cmplsi2_5200, subreghi1ashrdi_const32,
6197         subregsi1ashrdi_const32, ashrsi3, subreg1lshrdi_const32, lshrsi3,
6198         bsetmemqi): Specify attributes.
6199         (bsetmemqi_ext): Name pattern.  Specify attributes.
6200         (bclrmemqi): Specify attributes.
6201         (bclrmemqi_ext, scc, sls): Name pattern.  Specify attributes.
6202         (beq, bne, bgt, bgtu, blt, bltu, bge, bgeu, ble, bleu): Specify
6203         attributes.
6204         (beq2, bne2, bgt2, bgtu2, blt2, bltu2, bge2, bgeu2, ble2, bleu2): Name
6205         pattern.  Specify attributes.
6206         (jump): Specify attributes.
6207         (tablejump_internal): Name pattern.  Specify attributes.
6208         (call_value): Split into non_symbolic_call_value,
6209         symbolic_call_value_jsr, symbolic_call_value_bsr.  Fix to use
6210         alternatives.  Specify attributes.
6211         (non_symbolic_call_value, symbolic_call_value_jsr,
6212         symbolic_call_value_bsr): New patterns.
6213         (nop, return, unlink, indirect_jump): Specify attributes.
6214         (trap): Fix condition.  Specify attributes.
6215         (ib): New pattern.
6216
6217         * config/m68k/m68k.c (m68k_symbolic_call_var): New variable.
6218         (override_options): Initialize it.  Initialize m68k_sched_cpu.
6219         (CONST_METHOD): Rename to M68K_CONST_METHOD, move to m68k.h.
6220         (const_method): Make global, rename to m68k_const_method.
6221         (const_int_cost, output_move_const_into_data_reg): Update.
6222         (output_move_double): Parametrize to emit rtl code, rename to
6223         handle_move_double.
6224         (output_reg_adjust, emit_reg_adjust, output_compadr, output_movsi,
6225         emit_movsi): New static functions.
6226         (output_move_double): New function with semantics of old
6227         output_move_double.
6228         (m68k_emit_move_double): New function.
6229         (m68k_sched_cpu): New variable.
6230         (attr_op_type): New enum.
6231         (sched_guess_p): New variable.
6232         (sched_address_type, sched_operand_type, sched_attr_op_type):
6233         New static functions.
6234         (m68k_sched_attr_opx_type, m68k_sched_attr_opy_type,
6235         m68k_sched_attr_size, m68k_sched_attr_op_mem): New functions.
6236         (sched_branch_type): New static variable.
6237         (m68k_sched_branch_type): New function.
6238         * config/m68k/m68k.h (M68K_SYMBOLIC_CALL): New enum.
6239         (m68k_symbolic_call_var): Declare.
6240         (M68K_CONST_METHOD): Rename from CONST_METHOD.  Move here from m68k.c.
6241         (m68k_const_method, m68k_emit_move_double, m68k_sched_cpu,
6242         m68k_sched_attr_opx_type, m68k_sched_attr_opy_type,
6243         m68k_sched_attr_size, m68k_sched_attr_op_mem, m68k_sched_branch_type):
6244         Declare.
6245
6246 2007-09-11  Jakub Jelinek  <jakub@redhat.com>
6247
6248         * builtins.def (BUILT_IN_VA_ARG_PACK_LEN): New builtin.
6249         * builtins.c (expand_builtin) <case BUILT_IN_VA_ARG_PACK_LEN>: Issue
6250         error if __builtin_va_arg_pack_len () wasn't optimized out during
6251         inlining.
6252         * tree-inline.c (copy_bb): Replace __builtin_va_arg_pack_len ()
6253         with the number of inline's anonymous arguments.
6254         * doc/extend.texi: Document __builtin_va_arg_pack_len ().
6255
6256 2007-09-11  Zdenek Dvorak  <ook@ucw.cz>
6257
6258         * fold-const.c (extract_muldiv_1): Do not simplify
6259         var * c * c to var.
6260
6261 2007-09-11  Jan Hubicka <jh@suse.cz>
6262
6263         * i386.h (ix86_tune_indices): Add X86_TUNE_INTER_UNIT_CONVERSIONS.
6264         (TARGET_INTER_UNIT_CONVERSIONS): New.
6265         * i386.md (floatsi expanders): Remove redundant check for SImode
6266         source; offload to memory when asked for.
6267         (floatsisf2_mixed, floatsisf2_sse, floatsidf2_mixed, floatsidf2_sse
6268         floatdisf2_mixed, floatsisf2_sse, floatsidf2_mixed, floatsidf2_sse):
6269         Update conditions;
6270         (floatsisf2_mixed_memory, floatsisf2_sse_memory,
6271         floatsidf2_mixed_memory, floatsidf2_sse_memory
6272         floatdisf2_mixed_memory, floatsisf2_sse_memory,
6273         floatsidf2_mixed_memory, floatsidf2_sse_memory): New.
6274
6275 2007-09-11  Jan Hubicka <jh@suse.cz>
6276
6277         * toplev.c (process_options): all frontends now do unit-at-a-time.
6278         * cgraphunit.c: update comments.
6279         (cgraph_expand_function): call passmanager dirrectly; emit thunks.
6280         * c-decl.c (finish_function): use cgraph_add_new_function.
6281         * function.c (expand_function_end): We are always unit-at-a-time.
6282
6283 2007-09-11  Richard Sandiford  <richard@codesourcery.com>
6284
6285         * config/mips/mips.c (mips_set_mips16_mode): Use separate anchor
6286         settings for MIPS16.
6287         (mips_use_anchors_for_symbol_p): Use default_use_anchors_for_symbol_p.
6288
6289 2007-09-11  Richard Sandiford  <richard@codesourcery.com>
6290
6291         * config/mips/mips.c (mips_symbol_insns_1): Allow LEAs of
6292         SYMBOL_FORCE_TO_MEM constants.
6293         (mips_rtx_costs): Give a cost of 1 to force_to_mem_operands.
6294         (mips16_rewrite_pool_refs_info): New structure.
6295         (mips16_rewrite_pool_constant): New function, split out from...
6296         (mips16_rewrite_pool_refs): ...here.  Take a pointer to a
6297         mips16_rewrite_pool_refs_info structure rather than a pointer
6298         to a constant pool.  Force force_to_mem_operands into memory.
6299         (mips16_lay_out_constants): Update call to mips16_rewrite_pool_refs.
6300         * config/mips/predicates.md (force_to_mem_operand): New predicate.
6301         * config/mips/constraints.md (kf): New constraint.
6302         * config/mips/mips.md (*movdi_64bit_mips16): Add a d <- kf alternative.
6303         (*movsi_mips16): Likewise.
6304
6305 2007-09-11  Richard Sandiford  <richard@codesourcery.com>
6306             Nigel Stephens  <nigel@mips.com>
6307             David Ung  <davidu@mips.com>
6308
6309         * config/mips/mips.h (CONSTANT_POOL_COST): Move to...
6310         * config/mips/mips.c: ...here and set to 4 for TARGET_MIPS16.
6311         (mips16_constant_cost, mips_immediate_operand_p, mips_binary_cost)
6312         (mips_fp_mult_cost, mips_fp_div_cost, mips_sign_extend_cost)
6313         (mips_zero_extend_cost): New functions.
6314         (mips_rtx_costs): Treat COMPARE constants as having zero cost.
6315         Use the new functions.  Tweak many cost estimates, both here
6316         and in the new subroutines.  Return false when the cost of the
6317         operands has not been calculated.  Check for *clear_upper32.
6318         Check for floating-point multiply-add, reciprocal and rsqrt
6319         patterns.  Handle comparison and rotation codes.
6320
6321 2007-09-11  Danny Smith  <dannysmith@users.sourceforge.net>
6322
6323         * config/i386/cygming.h (TARGET_STRIP_NAME_ENCODING): Don't
6324         override default.
6325         * config/i386/i386.c (get_dllimport_decl): Don't strip
6326         FASTCALL_PREFIX.
6327
6328 2007-09-10  Janis Johnson  <janis187@us.ibm.com>
6329
6330         PR c/30013
6331         * config/dfp-bit.c: Don't skip TFmode conversions; move strto*
6332         declarations to top.
6333         (DFP_TO_BFP): Use for either XFmode or TFmode.
6334         (BFP_TO_DFP): Use for either XFmode or TFmode; always use cast
6335         of BFP_VIA_TYPE.
6336         * config/dfp-bit.h: Include float.h.
6337         (LONG_DOUBLE_HAS_XF_MODE, LONG_DOUBLE_HAS_TF_MODE): Define if long
6338         double is one of these modes, rather than using LIBGCC_HAS_*F_MODE
6339         which doesn't mean the same thing.
6340         (BFP_KIND): Use 4 to mean TFmode.
6341         (BFP_FMT): Specify the number of decimal digits based on the
6342         number of mantissa digits.
6343         (BFP_VIA_TYPE): Binary float type to use as cast for sprintf.
6344         (BFP_TO_DFP, DFP_TO_BFP): Define names for TFmode variants.
6345         (STR_TO_BFP): Use strtold for XFmode or TFmode.
6346         (TFtype): Define if TFmode is supported.
6347         * doc/libgcc.texi (Decimal float library routines): Document
6348         TF conversion functions.
6349
6350 2007-09-10  Chao-ying Fu  <fu@mips.com>
6351
6352         * config/mips/mips.c (mips_scalar_mode_supported_p): Declare.
6353         (TARGET_SCALAR_MODE_SUPPORTED_P): Define.
6354         (mips_emit_compare): Process fixed-point modes.
6355         (mips_pad_arg_upward): Support fixed-point types.
6356         (override_options): Allow fixed-point modes in accumulators.
6357         (mips_pass_by_reference): Pass DQ, UDQ, DA, and UDA modes in registers.
6358         (mips_vector_mode_supported_p): Support V2HQmode, V2UHQmode, V2HAmode,
6359         V2UHAmode, V4QQmode, and V4UQQmode when TARGET_DSP.
6360         (mips_scalar_mode_supported_p): New function to accept fixed-point
6361         modes if the width is not greater than two BITS_PER_WORD.
6362         * config/mips/mips.h (SHORT_FRACT_TYPE_SIZE, FRACT_TYPE_SIZE,
6363         LONG_FRACT_TYPE_SIZE, LONG_LONG_FRACT_TYPE_SIZE,
6364         SHORT_ACCUM_TYPE_SIZE, ACCUM_TYPE_SIZE, LONG_ACCUM_TYPE_SIZE,
6365         LONG_LONG_ACCUM_TYPE_SIZE): Define.
6366         * config/mips/mips.md ("d"): Update mode attribute for fixed-point
6367         modes.
6368         ("IMODE"): New mode attribute.
6369         (mips-fixed.md): Include.
6370         * config/mips/mips-modes.def: Create VECTOR_MODES for FRACT, UFRACT,
6371         ACCUM, UACCUM.
6372         * config/mips/mips-fixed.md: New file.
6373
6374 2007-09-11  Ben Elliston  <bje@au.ibm.com>
6375
6376         * config/spu/spu.md: Formatting fixes.
6377
6378 2007-09-10  Janis Johnson  <janis187@us.ibm.com>
6379
6380         * config/dfp-bit.c (dfp_unary_func): Delete.
6381         (dfp_unary_op): Delete.
6382         (dfp_binary_op): Use decFloat functions instead of decNumber
6383         functions for binary operations.
6384         (d32_binary_op): Convert 32-bit operands to 64 bits for evaluation.
6385         (dnn_binary_op): Call dfp_binary_op with decFloat rather than
6386         DFP_C_TYPE.
6387         (dfp_compare_op): Use decFloat functions insteadof decNumber
6388         functions for comparisons.
6389         (d32_compare_op): Convert 32-bit operands to 64 bits for evaluation.
6390         (dnn_binary_op): Call dfp_compare_op with decFloat rather than
6391         DFP_C_TYPE.
6392         (DFP_ADD, DFP_SUB, DFP_MULTIPLE, DFP_DIVIDE): Use macros for
6393         call to dxx_binary_op and decFloat function.
6394         (DFP_EQ, DFP_NE, DFP_LT, DFP_GT, DFP_LE, DFP_GE): Use macros for
6395         calls to dxx_binary_op and decFloat function.
6396         * config/dfp-bit.h: Include decFloat header files.
6397         (decFloat, DFP_BINARY_OP, DFP_COMPARE_OP, DEC_FLOAT_ADD,
6398         DEC_FLOAT_SUBTRACT, DEC_FLOAT_MULTIPLY, DEC_FLOAT_DIVIDE,
6399         DEC_FLOAT_COMPARE, DEC_FLOAT_IS_ZERO, DEC_FLOAT_IS_NAN,
6400         DEC_FLOAT_IS_SIGNED: Define for each of 3 operand widths.
6401
6402 2007-09-10  Harsha Jagasia <harsha.jagasia@amd.com>
6403             Jan Sjodin <jan.sjodin@amd.com>
6404
6405         * tree-vect-analyze.c (vect_analyze_operations): Change
6406         comparison of loop iterations with threshold to less than
6407         or equal to instead of less than. Reduce
6408         min_scalar_loop_bound by one.
6409         * tree-vect-transform.c (vect_estimate_min_profitable_iters): 
6410         Change prologue and epilogue iterations estimate to vf/2,
6411         when unknown at compile-time. Change versioning guard
6412         cost to taken_branch_cost. If peeling for alignment is
6413         unknown at compile-time, change peel guard costs to one
6414         taken branch and one not-taken branch per peeled loop.
6415         If peeling for alignment is known but number of scalar loop
6416         iterations is unknown at compile-time, change peel guard
6417         costs to one taken branch per peeled loop. Change the cost
6418         model equation to consider vector iterations as the loop
6419         iterations less the prologue and epilogue iterations.
6420         Change outside vector cost check to less than or equal to
6421         zero instead of equal to zero.
6422         (vect_do_peeling_for_loop_bound): Reduce
6423         min_scalar_loop_bound by one.
6424         * tree-vectorizer.h: Add TARG_COND_TAKEN_BRANCH_COST and
6425         TARG_COND_NOT_TAKEN_BRANCH_COST.        
6426         * config/i386/i386.h (processor_costs): Add
6427         scalar_stmt_cost, scalar_load_cost, scalar_store_cost,
6428         vec_stmt_cost, vec_to_scalar_cost, scalar_to_vec_cost,
6429         vec_align_load_cost, vect_unalign_load_cost,
6430         vec_store_cost, cond_taken_branch_cost,
6431         cond_not_taken_branch_cost.
6432         Define macros for x86 costs.
6433         * config/i386/i386.c:
6434         (size_cost): Set scalar_stmt_cost, scalar_load_cost,
6435         scalar_store_cost, vec_stmt_cost, vec_to_scalar_cost,
6436         scalar_to_vec_cost, vec_align_load_cost, 
6437         vect_unalign_load_cost, vec_store_cost,
6438         cond_taken_branch_cost, cond_not_taken_branch_cost to one. 
6439         (i386_cost, i486_cost, pentium_cost, pentiumpro_cost,
6440         geode_cost, k6_cost, athlon_cost, pentium4_cost, nocona_cost, 
6441         core2_cost, generic64_cost, generic32_cost): Set to default
6442         untuned costs.
6443         (k8_cost, amdfam10_cost): Costs for vectorization tuned.
6444         (x86_builtin_vectorization_cost): New.
6445
6446 2007-09-10  Janis Johnson  <janis187@us.ibm.com>
6447             Ben Elliston  <bje@au.ibm.com>
6448
6449         * dfp.c: Include decimal128Local.h; 
6450         (dfp_byte_swap): Remove.
6451         (encode_decimal32, decode_decimal32): Don't handle endianness.
6452         (encode_decimal64, decode_decimal64): Ditto.
6453         (encode_decimal128, decode_decimal128): Ditto.
6454         * config/dfp-bit.c (host_to_ieee32, ieee_to_host_32): Ditto.
6455         (__swap64): Remove.
6456         (host_to_ieee_64, ieee_to_host_64): Don't handle endianness.
6457         (__swap128): Remove
6458         (host_to_ieee_128, ieee_to_host_128): Don't handle endianness.
6459         * Makefile.in (DECNUM_H): Add decimal128Local.h.
6460
6461 2007-09-10  David Daney  <ddaney@avtrex.com>
6462
6463         * config/mips/mips.md (UNSPEC_MEMORY_BARRIER): New entry in
6464         define_constants.
6465         (memory_barrier): Rewrote as an insn that clobbers memory.
6466
6467 2007-09-10  Richard Sandiford  <richard@codesourcery.com>
6468
6469         * config/mips/mips.c (mips_global_pointer): Check
6470         call_really_used_regs instead of call_used_regs.
6471         (mips_save_reg_p): Likewise.  Save all call-saved registers
6472         if current_function_saves_all_registers.  Fix indentation.
6473         No longer treat $18 as a special case.
6474         (compute_frame_size): Guard FPR loop with TARGET_HARD_FLOAT.
6475
6476 2007-09-10  Richard Sandiford  <richard@codesourcery.com>
6477
6478         * config/mips/mips.h (MIPS_ARCH_FLOAT_SPEC): New macro.
6479         * config/mips/mips.c (mips_cpu_info_table): Mention it in the
6480         the introductory comment.
6481         (MIPS_MARCH_CONTROLS_SOFT_FLOAT): Delete.
6482         (override_options): Don't test for it.
6483         * config/mips/sde.h (MIPS_MARCH_CONTROLS_SOFT_FLOAT): Delete.
6484         (DRIVER_SELF_SPECS): Add MIPS_ARCH_FLOAT_SPEC.
6485         * config/mips/vr.h: As for config/mips/sde.h.
6486
6487 2007-09-10  Trevor Smigiel  <trevor_smigiel@playstation.sony.com>
6488             Revital Eres  <eres@il.ibm.com>
6489
6490         * target.h (struct gcc_target.sched): New field: sms_res_mii.
6491         (struct ddg): Define.
6492         * target-def.h (TARGET_SCHED_SMS_RES_MII): Define.
6493         (TARGET_SCHED): Add TARGET_SCHED_SMS_RES_MII.
6494         * config/spu/spu.c: Include ddg.h.
6495         (TARGET_SCHED_SMS_RES_MII): Define.
6496         (spu_sms_res_mii): New function to calculate mii.
6497         * modulo-sched (res_MII): Use it.
6498         * doc/tm.texi: Document TARGET_SCHED_SMS_RES_MII.
6499
6500 2007-09-10  Andreas Krebbel  <krebbel1@de.ibm.com>
6501
6502         * config/s390/s390.c (s390_dump_pool): Create copy of constant
6503         pool entries since they might hold values that must not be shared.
6504
6505 2007-09-10  Uros Bizjak  <ubizjak@gmail.com>
6506
6507         PR target/33369
6508         * config/i386/sse.md (ashr<mode>3): Change op2 mode to SImode.
6509         Use 'N' operand constraint for op2.
6510         (lshr<mode>3): Ditto.
6511         (ashl<mode>3): Ditto.
6512         (vec_shl_<mode>): Use const_0_to_255_mul_8_operand predicate for op2.
6513         (vec_shr_<mode>): Ditto.
6514         * config/i386/i386.c (ix86_expand_builtin) [IX86_BUILTIN_PSLL?128,
6515         IX86_BUILTIN_PSRA*?128, IX86_BUILTIN_PSRL?128]: Convert op1 to SImode.
6516
6517 2007-09-10  Andreas Krebbel  <krebbel1@de.ibm.com>
6518
6519         * config/s390/s390.md ("fixuns_trunc<BFP:mode><GPR:mode>2"):
6520         Change mode macro in the last real_2expN parameter to uppercase.
6521
6522 2007-09-10  Michael Matz  <matz@suse.de>
6523
6524         * tree-pass.h (pass_cselim): Declare new pass.
6525         * passes.c (init_optimization_passes): Link in pass_cselim.
6526         * tree-ssa-phiopt.c (tree_ssa_phiopt_worker): Renamed from
6527         tree_ssa_phiopt; add do_store_elim parameter, handle it by calling
6528         cond_store_replacement.
6529         (condstoretemp): New static variable.
6530         (cond_store_replacement): New function.
6531         (tree_ssa_phiopt, tree_ssa_cs_elim): New wrappers around
6532         tree_ssa_phiopt_worker.
6533         (struct name_to_bb): New.
6534         (get_non_trapping, name_to_bb_hash, name_to_bb_eq, add_or_mark_expr,
6535         nt_init_block, nt_fini_block): New static functions.
6536         (seen_ssa_names, nontrap_set): New static variables.
6537         (gate_cselim, pass_cselim): Define new pass.
6538         * common.opt (ftree-cselim): New flag.
6539         * toplev.c (process_options): Set flag_tree_cselim if required.
6540
6541 2007-09-10  Hans-Peter Nilsson  <hp@axis.com>
6542
6543         * simplify-rtx.c (simplify_relational_operation_1): For recent
6544         canonicalization, don't recurse if op1 equals both PLUS arguments.
6545
6546 2007-09-09  David Daney  <ddaney@avtrex.com>
6547
6548         * optabs.c (expand_sync_operation):  Use plus insn if minus
6549         CONST_INT_P(val).
6550         (expand_sync_fetch_operation):  Ditto.
6551
6552 2007-09-09  H.J. Lu  <hongjiu.lu@intel.com>
6553
6554         * i386.md (*floatsisf2_mixed_vector): Use cvtdq2ps instead
6555         of cvtpq2ps.
6556         (*floatsisf2_sse_vector): Likewise.
6557
6558 2007-09-09  Krister Walfridsson  <cato@df.lth.se>
6559
6560         * config/netbsd.h (HANDLE_PRAGMA_PACK_PUSH_POP): Define to 1.
6561
6562 2007-09-09  H.J. Lu  <hongjiu.lu@intel.com>
6563
6564         * config/i386/i386.h (ix86_tune_indices): Rename
6565         X86_USE_VECTOR_CONVERTS to X86_TUNE_USE_VECTOR_CONVERTS.
6566         (TARGET_USE_VECTOR_CONVERTS): Updated.
6567         * config/i386/i386.c: Likewise.
6568
6569 2007-09-09  Sandra Loosemore  <sandra@codesourcery.com>
6570             Nigel Stephens <nigel@mips.com>
6571
6572         * doc/invoke.texi (Overall Options):  Add .sx file extension
6573         as a synonym for .S.
6574         * cppspec.c (known_suffixes): Likewise.
6575         * gcc.c (default_compilers): Likewise.
6576
6577 2007-09-09  Rask Ingemann Lambertsen  <rask@sygehus.dk>
6578
6579         PR target/30315
6580         * config/i386/i386.h (CANONICALIZE_COMPARISON): Delete.
6581         * simplify-rtx.c (simplify_relational_operation_1): Add the
6582         canonicalization from i386.h.
6583         * doc/md.texi (Canonicalization of Instructions): Document it.
6584
6585 2007-09-09  Jan Hubicka  <jh@suse.cz>
6586             Dwarakanath Rajagopal <dwarak.rajagopal@amd.com>
6587
6588         * i386.h (ix86_tune_indices): Add X86_USE_VECTOR_CONVERTS.
6589         (TARGET_USE_VECTOR_CONVERTS): New.
6590         * i386.md: New post-reload splitters for converting SF to DF and DF to
6591         SF.
6592         (floatsi* expander): Special case vector conversions.
6593         (floatsisf2_mixed_vector, floatsisf2_sse_vector_nointernunit,
6594         floatsisf2_sse_vector_internunit, floatsisf2_sse_vector,
6595         floatsidf2_mixed_vector, floatsidf2_sse_vector): New.
6596         (floatsisf2_mixed, floatsisf2_sse, floatsidf2_mixed, floatsidf2_sse):
6597         Disable when doing vector converts.
6598         (floatsi<mode>2_i387): Disable when
6599         * sse.md (vec_dupv2df): Export.
6600         * i386.c (ix86_tune_features): Enable SSE conversions.
6601
6602 2007-09-09  Richard Guenther  <rguenther@suse.de>
6603
6604         * tree-ssa-operands.c (add_virtual_operand): Only mark
6605         stores as has_volatile_ops if alias information is not available.
6606
6607 2007-09-09  Revital Eres  <eres@il.ibm.com>
6608
6609         * doc/contrib.texi: Add myself.
6610
6611 2007-09-09  Ira Rosen  <irar@il.ibm.com>
6612
6613         * tree-vectorizer.h (stmt_vinfo_set_inside_of_loop_cost,
6614         stmt_vinfo_set_outside_of_loop_cost): New functions.
6615         * tree-vect-transform.c (vect_get_cost_fields): Remove.
6616         (vect_model_simple_cost): Call
6617         stmt_vinfo_set_inside/outside_of_loop_cost to set the relevant cost
6618         field instead of calling vect_get_cost_fields.
6619         (vect_model_store_cost, vect_model_load_cost): Likewise.
6620
6621 2007-09-09  Revital Eres  <eres@il.ibm.com>
6622
6623         * config/rs6000/rs6000.c (paired_init_builtins): Add const
6624         declaration to bdesc_paired_preds variable.
6625         (paired_expand_builtin): Likewise.
6626
6627 2007-09-09  Revital Eres  <eres@il.ibm.com>
6628
6629         * dbgcnt.def (sms_sched_loop): New counter.
6630         * modulo-sched.c: Use sms_sched_loop instead of
6631         MAX_SMS_LOOP_NUMBER to determine the maximum number of loops to
6632         perform swing modulo scheduling on.  Include dbgcnt.h.
6633         * Makefile.in: Add DBGCNT_H to modulo-sched.o.
6634         * params.def: Remove PARAM_MAX_SMS_LOOP_NUMBER.
6635
6636 2007-09-09  Uros Bizjak  <ubizjak@gmail.com>
6637
6638         * config/i386/i386.md (X87MODEF12, SSEMODEF): Remove mode iterators.
6639         Substitute all uses with ...
6640         (MODEF): New mode iterator.
6641
6642         (fix_trunc<mode>_fisttp_i387_1): Remove operand constraints
6643         from pre-regalloc define_insn_and_split splitter pattern.
6644         (*fix_trunc<mode>_i387_1): Ditto.
6645         (*fistdi2_1): Ditto.
6646         (*fist<mode>2_1): Ditto.
6647         (frndintxf2_floor): Ditto.
6648         (*fist<mode>2_floor_1): Ditto.
6649         (frndintxf2_ceil): Ditto.
6650         (*fist<mode>2_ceil_1): Ditto.
6651         (frndintxf2_trunc): Ditto.
6652         (frndintxf2_mask_pm): Ditto.
6653
6654         (prologue): Use (const_int 0) as never generated filler insn.
6655         (epilogue): Ditto.
6656         (sibcall_epilogue): Ditto.
6657         (eh_return_si): Ditto.
6658         (eh_return_di): Ditto.
6659
6660         (add<mode>3): Rename from adddf3 and addsf3.  Macroize expander
6661         using MODEF mode iterator.
6662         (sub<mode>3): Rename from subdf3 and subsf3.  Macroize expander
6663         using MODEF mode iterator.
6664         (mul<mode>3): Rename from muldf3 and mulsf3.  Macroize expander
6665         using MODEF mode iterator.
6666         (nearbyint<mode>2): Rename from nearbyintdf2 and nearbyintsf2.
6667         Macroize expander using MODEF mode iterator.
6668
6669         (zero_extendsidi2): Remove operand constraints from expander.
6670         (smuldi3_highpart): Ditto.
6671         (indirect_jump): Ditto.
6672         (tablejump): Ditto.
6673         (rsqrtsf2): Ditto.
6674         * config/i386/sse.md (storentv4sf): Ditto.
6675         (storentv2df): Ditto.
6676         (storentv2di): Ditto.
6677         (storentsi): Ditto.
6678         (sse2_cvtpd2ps): Ditto.
6679         (vec_interleave_highv16qi): Ditto.
6680         (vec_interleave_lowv16qi): Ditto.
6681         (vec_interleave_highv8hi): Ditto.
6682         (vec_interleave_lowv8hi): Ditto.
6683         (vec_interleave_highv4si): Ditto.
6684         (vec_interleave_lowv4si): Ditto.
6685         (vec_interleave_highv2di): Ditto.
6686         (vec_interleave_lowv2di): Ditto.
6687         (sse2_maskmovdqu): Ditto.
6688         * config/i386/mmx.md (mmx_maskmovq): Ditto.
6689
6690 2007-09-09  Ira Rosen  <irar@il.ibm.com>
6691
6692         * tree-vectorizer.h (enum vect_def_type): Start enumeration from 1.
6693         (struct _slp_tree, struct _slp_instance): Define new data structures
6694         along macros for their access.
6695         (struct _loop_vec_info): Define new fields: strided_stores,
6696         slp_instances, and slp_unrolling_factor along macros for their access.
6697         (enum slp_vect_type): New.
6698         (struct _stmt_vec_info): Define new field, slp_type, and macros for
6699         its access.
6700         (STMT_VINFO_STRIDED_ACCESS): New macro.
6701         (vect_free_slp_tree): Declare.
6702         (vectorizable_load): Add an argument of type slp_tree.
6703         (vectorizable_store, vectorizable_operation, vectorizable_conversion,
6704         vectorizable_assignment): Likewise.
6705         (vect_model_simple_cost, vect_model_store_cost, vect_model_load_cost):
6706         Declare (make extern).
6707         * tree-vectorizer.c (new_stmt_vec_info): Initialize the new field.
6708         (new_loop_vec_info): Likewise.
6709         (destroy_loop_vec_info): Free memory allocated for SLP structures.
6710         * tree-vect-analyze.c: Include recog.h.
6711         (vect_update_slp_costs_according_to_vf): New.
6712         (vect_analyze_operations): Add argument for calls to vectorizable_ ()
6713         functions. For not pure SLP stmts with strided access check that the
6714         group size is power of 2. Update the vectorization factor according to
6715         SLP. Call vect_update_slp_costs_according_to_vf.
6716         (vect_analyze_group_access): New.
6717         (vect_analyze_data_ref_access): Call vect_analyze_group_access.
6718         (vect_free_slp_tree): New functions.
6719         (vect_get_and_check_slp_defs, vect_build_slp_tree, vect_print_slp_tree,
6720         vect_mark_slp_stmts, vect_analyze_slp_instance, vect_analyze_slp,
6721         vect_make_slp_decision, vect_detect_hybrid_slp_stmts,
6722         vect_detect_hybrid_slp): Likewise.
6723         (vect_analyze_loop): Call vect_analyze_slp, vect_make_slp_decision
6724         and vect_detect_hybrid_slp.
6725         * tree-vect-transform.c (vect_estimate_min_profitable_iters): Take
6726         SLP costs into account.
6727         (vect_get_cost_fields): New function.
6728         (vect_model_simple_cost): Make extern, add SLP parameter and handle
6729         SLP.
6730         (vect_model_store_cost, vect_model_load_cost): Likewise.
6731         (vect_get_constant_vectors): New function.
6732         (vect_get_slp_vect_defs, vect_get_slp_defs,
6733         vect_get_vec_defs_for_stmt_copy, vect_get_vec_defs_for_stmt_copy,
6734         vect_get_vec_defs): Likewise.
6735         (vectorizable_reduction): Don't handle SLP for now.
6736         (vectorizable_call): Don't handle SLP for now. Add argument to
6737         vect_model_simple_cost.
6738         (vectorizable_conversion): Handle SLP (call vect_get_vec_defs to
6739         get SLPed and vectorized defs). Fix indentation and spacing.
6740         (vectorizable_assignment): Handle SLP.
6741         (vectorizable_induction): Don't handle SLP for now.
6742         (vectorizable_operation): Likewise.
6743         (vectorizable_type_demotion): Add argument to
6744         vect_model_simple_cost.
6745         (vectorizable_type_promotion): Likewise.
6746         (vectorizable_store, vectorizable_load): Handle SLP.
6747         (vectorizable_condition): Don't handle SLP for now.
6748         (vect_transform_stmt): Add a new argument for SLP. Check that there is
6749         no SLP transformation required for unsupported cases. Add SLP
6750         argument for supported cases.
6751         (vect_remove_stores): New function.
6752         (vect_schedule_slp_instance, vect_schedule_slp): Likewise.
6753         (vect_transform_loop): Schedule SLP instances.
6754         * Makefile.in: (tree-vect-analyze.o): Depend on recog.h.
6755
6756 2007-09-09  Andrew Haley  <aph@redhat.com>
6757
6758         * optabs.c (sign_expand_binop): Set libcall_gen = NULL in the fake
6759         signed optab.
6760
6761 2007-09-09  Hans-Peter Nilsson  <hp@axis.com>
6762
6763         Divide REG_LABEL notes into REG_LABEL_OPERAND and REG_LABEL_TARGET.
6764         * doc/rtl.texi (Insns): Specify when a label_ref makes a jump_insn.
6765         Similar for what label_refs can go in the JUMP_TARGET field.  Split
6766         REG_LABEL documentation into REG_LABEL_TARGET and REG_LABEL_OPERAND.
6767         * reload.c (find_reloads): Generate REG_LABEL_OPERAND, not
6768         REG_LABEL when replacing an operand with a LABEL_REF for a
6769         non-jump insn.
6770         (subst_reloads): When replacing a LABEL_REG with a register,
6771         instead of generating a REG_LABEL note, assert that there already
6772         is one or that the label is a known target for the insn.
6773         * rtlanal.c (computed_jump_p): Instead of looking for a REG_LABEL
6774         note, check the JUMP_LABEL field.  Remove "else" after return.
6775         * reorg.c (emit_delay_sequence): Replace case for REG_LABEL with
6776         cases for REG_LABEL_OPERAND and REG_LABEL_TARGET.
6777         (fill_slots_from_thread): Handle both REG_LABEL_OPERAND and
6778         REG_LABEL_TARGET notes, including the JUMP_TARGET field on JUMP_P
6779         insns.  Iterate over all notes; don't assume there's only one.
6780         * cse.c (recorded_label_ref): Adjust comment to refer to
6781         REG_LABEL_OPERAND.
6782         (cse_extended_basic_block): Do LABEL_REF check for all INSN_P
6783         insns, not just NONJUMP_INSN_P.
6784         (check_for_label_ref): For JUMP_P insns, check that the LABEL_REF
6785         isn't a jump target.
6786         * jump.c (rebuild_jump_labels): Adjust head comment.
6787         (init_label_info): Ditto.  Remove REG_LABEL_OPERAND notes only;
6788         don't reset REG_LABEL_TARGET notes, including the JUMP_LABEL field.
6789         (mark_all_labels): For JUMP_P insns without a target, check if the
6790         the target is noted on the previous nonjump insn.
6791         (mark_jump_label_1): New function, guts from mark_jump_label.
6792         <case IF_THEN_ELSE>: Handle first operand as a non-target when
6793         marking jump target labels.
6794         <case LABEL_REF>: Adjust for whether to generate a
6795         REG_LABEL_TARGET or a REG_LABEL_OPERAND note.
6796         For 'E' format rtl, iterate in descending element order.
6797         (delete_related_insns): Handle both REG_LABEL_TARGET and
6798         REG_LABEL_OPERAND notes.  For JUMP_P insns with labels with zero
6799         reference count, delete and fallthrough.  Move finding-next-
6800         non-deleted insn last in the function.  Look at all INSN_P insns
6801         for REG_LABEL_OPERAND notes.
6802         (redirect_jump_2): Assert that OLABEL equals the old JUMP_LABEL of
6803         JUMP.
6804         * print-rtl.c (print_rtx): For JUMP_P insns and a non-NULL
6805         JUMP_LABEL, output the INSN_UID of it.
6806         * gcse.c: Adjust comments as appropriate to say REG_LABEL_OPERAND
6807         and/or REG_LABEL_TARGET.
6808         (add_label_notes): Only add REG_LABEL_OPERAND notes.  Put in line
6809         with jump.c copy by only adding notes for labels actually
6810         referenced in the insn.
6811         * emit-rtl.c (try_split): Don't assume only NONJUMP_INSN_P need
6812         usage count increment; handle all INSN_P trial insns.
6813         (emit_copy_of_insn_after): Change to not copy REG_LABEL_OPERAND
6814         notes.
6815         * rtl.h (struct rtx_def) <volatil>: Adjust to mention
6816         REG_LABEL_TARGET and REG_LABEL_OPERAND.
6817         (LABEL_REF_NONLOCAL_P): Allow REG_LABEL_TARGET and
6818         REG_LABEL_OPERAND.
6819         * combine.c (distribute_notes): Adjust for REG_LABEL_TARGET on
6820         JUMP_P insns and REG_LABEL_OPERAND everywhere.
6821         * sched-rgn.c (is_cfg_nonregular): Check for REG_LABEL_OPERANDS
6822         on all INSN_P insns.
6823         * reg-notes.def (LABEL_TARGET, LABEL_OPERAND): Split from LABEL.
6824         * cfgrtl.c (delete_insn): Adjust to handle REG_LABEL_TARGET and
6825         REG_LABEL_OPERAND notes.
6826         * reload1.c (calculate_needs_all_insns): Adjust comments.
6827         (set_label_offsets): Adjust to look for REG_LABEL_OPERAND notes.
6828         * config/alpha/alpha.md (split for load of an address into a
6829         four-insn sequence on Unicos/Mk): Adjust to use
6830         REG_LABEL_OPERAND.
6831         * config/sh/sh.md (sh_reorg, final_prescan_insn): Ditto.
6832
6833 2007-09-09  Laurynas Biveinis  <laurynas.biveinis@gmail.com>
6834
6835         Revert:
6836         2007-09-05  Laurynas Biveinis  <laurynas.biveinis@gmail.com>
6837         * regrename.c (copyprop_hardreg_forward_1): New variable next. Use
6838         FOR_BB_INSNS_SAFE instead of for loop.
6839         * cse.c (cse_extended_basic_block): Likewise.
6840         * postreload.c (reload_cse_regs_1): New variable next. Make sure
6841         that the for loop does not invoke NEXT_INSN on a deleted insn.
6842         * function.c (instantiate_virtual_regs): Likewise.
6843         * lower-subreg.c (remove_retval_note): Likewise.
6844         (decompose_multiword_subregs): Use FOR_BB_INSNS_SAFE instead of
6845         FOR_BB_INSNS.
6846         * emit-rtl.c (remove_insn): Set NEXT_INSN and PREV_INSN to NULL on
6847         a deleted insn.
6848         * cfgrtl.c (delete_insn): Set JUMP_LABEL to NULL on a deleted
6849         insn, if it's a jump.
6850         (try_redirect_by_replacing_jump): New variable jump_p. Call
6851         tablejump_p before delete_insn_chain.
6852         * reload1.c (reload): New variable next. Make sure that the for
6853         loop does not invoke NEXT_INSN on a deleted insn.
6854         (fixup_eh_region_note): Make the loop terminate if i becomes NULL.
6855         (delete_output_reload): New variable prev. Make sure the the for
6856         loops do not invoke PREV_INSN on a deleted insn.
6857
6858 2007-09-08  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
6859
6860         * pa/constraints.md: Remove 'X' from unused letters comment.
6861
6862 2007-09-08  Richard Guenther  <rguenther@suse.de>
6863
6864         * tree-tailcall.c (find_tail_calls): If we don't have aliases
6865         computed check stmt_ann->references_memory instead of counting
6866         virtual operands.
6867  
6868 2007-09-08  Segher Boessenkool  <segher@kernel.crashing.org>
6869
6870         * cse.c (fold_rtx): Use validate_unshare_change() instead of
6871         validate_change() in one more case.
6872
6873 2007-09-08  Zdenek Dvorak  <ook@ucw.cz>
6874
6875         PR tree-optimization/32283
6876         * tree-ssa-loop-ivopts.c (may_eliminate_iv): Use
6877         estimated_loop_iterations.
6878         (determine_use_iv_cost_condition): Decrease cost of expressions
6879         used in iv elimination.
6880
6881 2007-09-08  Richard Guenther  <rguenther@suse.de>
6882
6883         * tree-cfg.c (verify_gimple_expr): Avoid building new
6884         pointer types, use TYPE_POINTER_TO if available instead.
6885
6886 2007-09-08  Uros Bizjak  <ubizjak@gmail.com>
6887
6888         PR target/33329
6889         PR rtl-optimization/26449
6890         * config/i386/sse.md (mulv4si3): Do not expand sse2 sequence.
6891         (*sse2_mulv4si3): New define_insn_and_split pattern. Split insn in
6892         split1 pass.
6893         (mulv16qi3): Implement as define_insn_and_split pattern instead of
6894         define_expand.  Split insn in split1 pass.
6895         (mulv2di3): Ditto.
6896
6897 2007-09-08  Dorit Nuzman  <dorit@il.ibm.com>
6898
6899         PR tree-optimization/33301
6900         * tree-vect-analyze (analyze_operations): Look at the type of the rhs
6901         when relevant.
6902
6903 2007-09-07  Zdenek Dvorak  <ook@ucw.cz>
6904
6905         PR tree-optimization/32183
6906         * Makefile.in (tree-ssa-reassoc.o): Also depend on $(CFGLOOP_H).
6907
6908         * tree-ssa-reassoc.c: Include cfgloop.h.
6909         (is_reassociable_op): Add a loop argument and return true only
6910         for inside loop.
6911         (linearize_expr): Updated.
6912         (should_break_up_subtract): Likewise.
6913         (linearize_expr_tree): Likewise.
6914         (init_reassoc): Call loop_optimizer_init with
6915         AVOID_CFG_MODIFICATIONS.  Remove calculate_dominance_info call
6916         with CDI_DOMINATORS.
6917         (fini_reassoc): Call loop_optimizer_finalize.
6918
6919 2007-09-07  Sterling Augustine  <sterling@tensilica.com>
6920
6921         * config/xtensa/lib2funcs.S (__xtensa_sync_caches): Use an ISYNC even
6922         if there is no i-cache.
6923
6924 2007-09-07  Richard Guenther  <rguenther@suse.de>
6925
6926         Reapply
6927         2007-09-06  Richard Guenther  <rguenther@suse.de>
6928
6929         PR tree-optimization/32586
6930         * tree-ssa-sccvn.c (simplify_binary_expression): Avoid
6931         folding if nothing changed.
6932         (simplify_unary_expression): New function.  Do tree combining
6933         on conversion like codes.
6934         (try_to_simplify): Call it.
6935
6936 2007-09-07  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
6937
6938         PR target/33286
6939         * gthr-posix.h (__gthread_active_p): Add implementation for hppa-hpux.
6940         (__gthread_active,__gthread_start, __gthread_active_init): New.
6941         * gthr-posix95.h: Likewise.
6942
6943 2007-09-07  Roman Zippel <zippel@linux-m68k.org>
6944
6945         * function.h (struct function): Rename calls_unwind_init
6946         to saves_all_registers.
6947         (current_function_saves_all_registers): Renamed from
6948         current_function_calls_unwind_init.
6949         * reload1.c (reload): Set current_function_saves_all_registers.
6950         * except.c (expand_builtin_unwind_init): Likewise.
6951         * config/m68k/m68k.c (m68k_save_reg): Use
6952         current_function_saves_all_registers to save pic register.
6953
6954 2007-09-07  Janis Johnson  <janis187@us.ibm.com>
6955
6956         config/m68k/m68k.c (floating_exact_log2): Update call to real_2expN.
6957         config/s390/s390.md (fixuns_trunc<BFP:mode><GPR:mode>2): Ditto.
6958
6959         Reapply reverted changes:
6960
6961         2007-09-06  Jan Hubicka  <jh@suse.cz>
6962  
6963         * config/i386.c (ix86_expand_lround, ix86_expand_round): Update call
6964         of real_2expN.
6965
6966         2007-09-06  Richard Sandiford  <richard@codesourcery.com>
6967
6968         * config/mips/mips.md (fixuns_truncdfsi2, fixuns_truncdfdi2)
6969         (fixuns_truncsfsi2, fixuns_truncsfdi2): Update calls to real_2expN.
6970
6971         2007-09-05  Janis Johnson  <janis187@us.ibm.com>
6972
6973         * optabs.c (expand_float): Convert unsigned integer as signed only
6974         if it provides sufficient accuracy; add mode argument to real_2expN.
6975         (expand_fix): Fix comment typos; extend binary float into mode
6976         wider than destination for converion to unsigned integer; add mode
6977         argument to real_2expN.
6978         * real.c (real_2expN): Add mode argument to special-case decimal
6979         float values.
6980         * real.h (real_2expN): Ditto.
6981         * fixed-value.c (check_real_for_fixed_mode): Add mode argument to
6982         real_2expN.
6983         (fixed_from_string): Ditto.
6984         (fixed_to_decimal): Ditto.
6985         (fixed_convert_from_real): Ditto.
6986         (real_convert_from_fixed): Ditto.
6987         * config/rs6000/rs6000.md (FP): Include DD and TD modes.
6988         * config/rs6000/dfp.md (extendddtd2, adddd3, addtd3, subdd3, subtd3,
6989         muldd3, multd3, divdd3, divtd3, cmpdd_internal1, cmptd_internal1,
6990         floatditd2, ftruncdd2, fixdddi2, ftrunctd2, fixddi2): New.
6991
6992 2007-09-07  Diego Novillo  <dnovillo@google.com>
6993
6994         * tree-flow.h (const_block_stmt_iterator): Remove.
6995         Update all users to use block_stmt_iterator.
6996         * tree-iterator.h (const_tree_stmt_iterator): Remove.
6997         Update all users to use tree_stmt_iterator.
6998
6999 2007-09-07  Sandra Loosemore  <sandra@codesourcery.com>
7000
7001         * config/mips/mips.c (mips_set_current_function): Temporarily
7002         make this a no-op to fix bootstrap errors, pending rewrite.
7003
7004 2007-09-07  Jan Hubicka  <jh@suse.cz>
7005
7006         * reorg.c (dbr_schedule): Move code removing placeholder USEs later
7007         in the pass.
7008
7009 2007-09-07  Dorit Nuzman  <dorit@il.ibm.com>
7010
7011         PR tree-optimization/33299
7012         * tree-vect-transform.c (vect_create_epilog_for_reduction): Update
7013         uses for all relevant loop-exit phis, not just the first.
7014
7015 2007-09-07  Richard Guenther  <rguenther@suse.de>
7016
7017         PR middle-end/33330
7018         * tree-ssa-operands.c (access_can_touch_variable): An access
7019         of the form (*p)[0] can touch a variable of same size.
7020
7021 2007-09-07  Jan Hubicka  <jh@suse.cz>
7022
7023         * passes.c (init_optimization_passes): Add simple dce and addressable
7024         passes.
7025         * tree-ssa.c (execute_update_addresses_taken): New function.
7026         (pass_update_address_taken): New.
7027         * tree-ssa-dse.c (execute_simple_dse): New function.
7028         (pass_simple_dse): New.
7029         * tree-pass.h (pass_simple_dse, pass_update_address_taken): Declare.
7030
7031 2007-09-07  Tobias Burnus  <burnus@net-b.de>
7032
7033         PR middle-end/33321
7034         * doc/invoke.texi: Fix -Wstrict-overflow= table.
7035
7036 2007-09-07  Richard Guenther  <rguenther@suse.de>
7037
7038         Revert
7039         2007-09-06  Richard Guenther  <rguenther@suse.de>
7040
7041         PR tree-optimization/32586
7042         * tree-ssa-sccvn.c (simplify_binary_expression): Avoid
7043         folding if nothing changed.
7044         (simplify_unary_expression): New function.  Do tree combining
7045         on conversion like codes.
7046         (try_to_simplify): Call it.
7047
7048 2007-09-07  Richard Guenther  <rguenther@suse.de>
7049             Uros Bizjak  <ubizjak@gmail.com>
7050
7051         PR tree-optimization/32821
7052         * tree_if_conv.c (combine_blocks): Use alloc_stmt_list instead of
7053         NULL in the call to set_bb_stmt_list.
7054
7055 2007-09-07  Richard Sandiford  <richard@codesourcery.com>
7056
7057         * config/mips/mips.c (build_mips16_call_stub): Emit all direct
7058         float calls here, rather than leaving some to the caller.
7059         Use call_internal_direct and call_value_internal_direct.
7060         * config/mips/mips.md (call_internal_direct): New pattern.
7061         (call_value_internal_direct): Likewise.
7062
7063 2007-09-07  Richard Sandiford  <richard@codesourcery.com>
7064
7065         * config/mips/mips.c (mips_base_move_loop_invariants): New variable.
7066         (mips_set_mips16_mode): Restore flag_move_loop_invariants, then set
7067         to 0 for MIPS16.
7068         (override_options): Set mips_base_move_loop_invariants.
7069
7070 2007-09-07  Richard Sandiford  <richard@codesourcery.com>
7071
7072         * config/mips/mips.opt (mcode-readable=): Move to keep list
7073         alphabetical.
7074
7075 2007-09-07  Richard Sandiford  <richard@codesourcery.com>
7076
7077         * doc/invoke.texi: Document the MIPS -mlocal-sdata, -mextern-sdata
7078         and -mgpopt options.  Adjust the -G documentation to match.
7079         * config/mips/mips.opt (mextern-data, mgpopt, mlocal-data): New.
7080         * config/mips/mips.c (mips_rtx_constant_in_small_data_p): New
7081         function, split out from mips_classify_symbol.  Return false for
7082         !TARGET_LOCAL_SDATA.
7083         (mips_classify_symbol): Call mips_rtx_constant_in_small_data_p.
7084         Only use GP-relative accesses for non-pool symbols if TARGET_GPOPT.
7085         (override_options): Check whether the -mgpopt setting is consistent
7086         with the other flags.
7087         (symbolic_expression_p): Delete.
7088         (mips_select_rtx_section): Use mips_rtx_constant_in_small_data_p
7089         and default_elf_select_rtx_section.
7090         (mips_in_small_data_p): Honor section attributes for MIPS16 too.
7091         Return false for local data unless TARGET_LOCAL_SDATA.  Likewise
7092         external data and TARGET_EXTERN_SDATA.
7093
7094 2007-09-07  Tobias Burnus  <burnus@net-b.de>
7095
7096         PR fortran/33303
7097         * doc/cpp.texi (Common Predefined Macros): Add __GFORTRAN__.
7098
7099 2007-09-05  Laurynas Biveinis  <laurynas.biveinis@gmail.com>
7100
7101         * regrename.c (copyprop_hardreg_forward_1): New variable next. Use
7102         FOR_BB_INSNS_SAFE instead of for loop.
7103         * cse.c (cse_extended_basic_block): Likewise.
7104         * postreload.c (reload_cse_regs_1): New variable next. Make sure
7105         that the for loop does not invoke NEXT_INSN on a deleted insn.
7106         * function.c (instantiate_virtual_regs): Likewise.
7107         * lower-subreg.c (remove_retval_note): Likewise.
7108         (decompose_multiword_subregs): Use FOR_BB_INSNS_SAFE instead of
7109         FOR_BB_INSNS.
7110         * emit-rtl.c (remove_insn): Set NEXT_INSN and PREV_INSN to NULL on
7111         a deleted insn.
7112         * cfgrtl.c (delete_insn): Set JUMP_LABEL to NULL on a deleted
7113         insn, if it's a jump.
7114         (try_redirect_by_replacing_jump): New variable jump_p. Call
7115         tablejump_p before delete_insn_chain.
7116         * reload1.c (reload): New variable next. Make sure that the for
7117         loop does not invoke NEXT_INSN on a deleted insn.
7118         (fixup_eh_region_note): Make the loop terminate if i becomes NULL.
7119         (delete_output_reload): New variable prev. Make sure the the for
7120         loops do not invoke PREV_INSN on a deleted insn.
7121
7122 2007-09-06  Zdenek Dvorak  <ook@ucw.cz>
7123
7124         * cgraphbuild.c (rebuild_cgraph_edges): Export.
7125         * cgraph.h (rebuild_cgraph_edges): Declare.
7126         * tree-pass.h (pass_expand_omp_ssa): New.
7127         * omp-low.c (find_omp_clause): Export.
7128         (copy_var_decl): Split from omp_copy_decl_2.
7129         (build_omp_barrier): Return the call to emit instead of emitting
7130         it directly.
7131         (lower_rec_input_clauses, expand_omp_single): Gimplify the result of
7132         build_omp_barrier.
7133         (extract_omp_for_data, expand_parallel_call, expand_omp_parallel,
7134         expand_omp_for_generic, expand_omp_for_static_nochunk,
7135         expand_omp_for_static_chunk, expand_omp_for, expand_omp_sections):
7136         Adapted to work on SSA form.
7137         (execute_expand_omp): Do not invalidate dominance information.
7138         (gate_expand_omp): Do not run with -fopenmp-ssa flag.
7139         (gate_expand_omp_ssa, pass_expand_omp_ssa): New.
7140         * gimplify.c (gimplify_omp_for): Ensure that the control variable is
7141         a gimple_reg.
7142         (force_gimple_operand): Allow gimplifying code expressions without
7143         value.
7144         * tree-predcom.c (mark_virtual_ops_for_renaming): Handle phi nodes.
7145         * common.opt (fopenmp-ssa): New.
7146         * tree-flow.h (find_omp_clause, copy_var_decl): Declare.
7147         * Makefile.in (tree-cfg.o): Add TREE_INLINE_H dependency.
7148         * tree-cfg.c: Include tree-inline.h.
7149         (struct move_stmt_d): Replace vars_to_remove by vars_map field.
7150         (replace_by_duplicate_decl, replace_ssa_name,
7151         mark_virtual_ops_in_region): New functions.
7152         (move_stmt_r, move_block_to_fn, move_sese_region_to_fn): Adapted
7153         to work on SSA form.
7154         * passes.c (init_optimization_passes): Add pass_expand_omp_ssa pass.
7155         * tree-ssa-operands.c (get_expr_operands): Handle operands of OMP
7156         constructs.
7157
7158 2007-09-06  Laurynas Biveinis  <laurynas.biveinis@gmail.com>
7159
7160         * tree-loop-linear.c: Include obstack.h.
7161         (linear_transform_loops): New obstack lambda_obstack.
7162         Initialize it, pass it to gcc_loopnest_to_lambda_loopnest,
7163         lambda_loopnest_transform, lambda_loopnest_to_gcc_loopnest calls
7164         and free afterwards.
7165         * lambda.h (struct obstack): New forward declaration.
7166         (lambda_linear_expression_new): New parameter of type struct
7167         obstack *.
7168         (lambda_loopnest_new): Likewise.
7169         (lambda_loopnest_transform): Likewise.
7170         (lambda_body_vector_new): Likewise.
7171         (lambda_body_vector_compute_new): Likewise.
7172         (gcc_loopnest_to_lambda_loopnest): Likewise.
7173         (lambda_loopnest_to_gcc_loopnest): Likewise.
7174         * lambda-code.c: Include obstack.h.
7175         (lambda_lattice_new): New parameter lambda_obstack.  Use it for
7176         allocation of ret.
7177         (lambda_body_vector_new): Likewise.
7178         (lambda_linear_expression_new): Likewise.
7179         (lambda_lattice_new): Likewise.
7180         (lambda_loopnest_new): Likewise.  Additionally use obstack to
7181         allocate LN_LOOPS(ret).
7182         (lambda_lattice_compute_base): New parameter lambda_obstack.  Pass
7183         it to lambda_lattice_new.
7184         (lambda_body_vector_compute_new): New parameter lambda_obstack.
7185         Pass it to lambda_body_vector_new.
7186         (lambda_lattice_compute_base): New paramater lambda_obstack.  Pass
7187         it to lambda_lattice_new.
7188         (compute_nest_using_fourier_motzkin): New parameter lambda_obstack.
7189         Pass it to lambda_loopnest_new, lambda_linear_expression_new.
7190         (lambda_compute_target_space): Likewise.
7191         (lambda_compute_auxillary_space): New parameter lambda_obstack.
7192         Pass it to lambda_lattice_compute_base and
7193         compute_nest_using_fourieer_motzkin.
7194         (lambda_loopnest_transform): New parameter lambda_obstack.  Pass
7195         it to lambda_lattice_compute_base, lambda_lattice_auxillary_space
7196         and lambda_lattice_compute_target_space.
7197         (gcc_tree_to_linear_expression): Nex parameter lambda_obstack.
7198         Pass it to lambda_linear_expression_new.
7199         (gcc_loop_to_lambda_loop): New parameter lambda_obstack.  Pass it
7200         to gcc_tree_to_linear_expression.
7201         (gcc_loopnest_to_lambda_loopnest): New parameter lambda_obstack.
7202         Pass it to gcc_loop_to_lambda_loop and lambda_loopnest_new.
7203         (lambda_loopnest_to_gcc_loopnest): New parameter lambda_obstack.
7204         Pass it to lambda_body_vector_new and
7205         lambda_body_vector_compute_new.
7206         * Makefile.in (tree-loop-linear.o): Add $(OBSTACK_H) dependency.
7207         (lambda-code.o): Likewise.
7208
7209 2007-09-06  Chao-ying Fu  <fu@mips.com>
7210
7211         * ginclude/stdfix.h: New file.
7212         * Makefile.in (USER_H): Add $(srcdir)/ginclude/stdfix.h.
7213         (convert.o): Add dependence on fixed-value.h.
7214         * c-convert.c (convert): Support FIXED_POINT_TYPE.
7215         * c-cppbuiltin.c (builtin_define_fixed_point_constants): New function
7216         to define fixed-point constants.
7217         (c_cpp_builtins): Define fixed-point constants.
7218         * convert.c (fixed-value.h): New include.
7219         (convert_to_real): Update comment to include fixed-point.
7220         Support FIXED_POINT_TYPE.
7221         (convert_to_integer): Update comment to include fixed-point.
7222         Support FIXED_POINT_TYPE.
7223         (convert_to_complex): Support FIXED_POINT_TYPE.
7224         (convert_to_fixed): New function.
7225         * convert.h (convert_to_fixed): Declare.
7226         * genopinit.c: Add comment about $Q for only fixed-point modes.
7227         (optabs): Add fract_optab, fractuns_optab, satfract_optab,
7228         satfractuns_optab, add_optab, ssadd_optab, usadd_optab, sub_optab,
7229         sssub_optab, ussub_optab, smul_optab, ssmul_optab, usmul_optab,
7230         ssmadd_widen_optab, usmadd_widen_optab, ssdiv_optab, udiv_optab,
7231         usdiv_optab, ssashl_optab, usashl_optab, neg_optab, ssneg_optab,
7232         usneg_optab for fixed-point modes.
7233         (gen_insn): Add force_fixed to track the $Q format for all fixed-point
7234         modes.
7235         * optabs.c (optab_for_tree_code): For *DIV_EXPR, LSHIFT_EXPR,
7236         PLUS_EXPR, MINUS_EXPR, MULT_EXPR, NEGATE_EXPR, return signed or
7237         unsigned saturation optabs, when type is saturating.
7238         (shift_optab_p): Return true for SS_ASHIFT or US_ASHIFT.
7239         (expand_fixed_convert): New function.
7240         (gen_fixed_libfunc, gen_signed_fixed_libfunc,
7241         gen_unsigned_fixed_libfunc, gen_int_fp_fixed_libfunc,
7242         gen_int_fp_signed_fixed_libfunc, gen_int_fixed_libfunc,
7243         gen_int_signed_fixed_libfunc, gen_int_unsigned_fixed_libfunc,
7244         gen_fract_conv_libfunc, gen_fractuns_conv_libfunc,
7245         gen_satfract_conv_libfunc, gen_satfractuns_conv_libfunc): New
7246         functions.
7247         (init_optabs): Initialize ssadd_optab, usadd_optab, sssub_optab,
7248         ussub_optab, ssmul_optab, usmul_optab, ssmadd_widen_optab,
7249         usmadd_widen_optab, ssmsub_widen_optab, usmsub_widen_optab,
7250         ssdiv_optab, usdiv_optab, ssashl_optab, usashl_optab, ssneg_optab,
7251         usneg_optab, fract_optab, fractuns_optab, satfract_optab,
7252         satfractuns_optab.
7253         Initialize fixed-point libraries, including add, ssadd, usadd, sub,
7254         sssub, ussub, mul, ssmul, usmul, div, ssdiv, udiv, usdiv, ashl,
7255         ssashl, usashl, ashr, lshr, neg, ssneg, usneg, cmp, fract, satfract,
7256         fractuns, satfractuns.
7257         * optabs.h (enum optab_index): Add OTI_ssadd, OTI_usadd, OTI_sssub,
7258         OTI_ussub, OTI_ssmul, OTI_usmul, OTI_ssdiv, OTI_usdiv, OTI_ssneg,
7259         OTI_usneg, OTI_ssashl, OTI_usashl, OTI_ssmadd_widen, OTI_usmadd_widen,
7260         OTI_ssmsub_widen,  OTI_usmsub_widen.
7261         (ssadd_optab, usadd_optab, sssub_optab, ussub_optab, ssmul_optab,
7262         usmul_optab, ssdiv_optab, usdiv_optab, ssneg_optab, usneg_optab,
7263         ssashl_optab, usashl_optab, ssmadd_widen_optab, usmadd_widen_optab,
7264         umsub_widen_optab, usmsub_widen_optab): Define.
7265         (enum convert_optab_index): Add COI_fract, COI_fractuns, COI_satfract,
7266         COI_satfractuns.
7267         (fract_optab, fractuns_optab, satfract_optab, satfractuns_optab):
7268         Define.
7269         (expand_fixed_convert): Declare.
7270         * expr.c (convert_move): Support the move of fixed-point modes.
7271         (emit_move_insn_1): Handle fixed-point mode to move via integer.
7272         (categorize_ctor_elements_1): Handle FIXED_CST.
7273         (count_type_elements): Handle FIXED_POINT_TYPE.
7274         (expand_expr_real_1): For VECTOR_CST, check MODE_VECTOR_FRACT,
7275         MODE_VECTOR_UFRACT, MODE_VECTOR_ACCUM, MODE_VECTOR_UACCUM.
7276         Support FIXED_CST.
7277         For PLUS_EXPR and MINUS_EXPR, support saturating and non-saturating
7278         multiply and add/subtract for fixed-point types.
7279         For MULT_EXPR, *DIV_EXPR, *SHIFT_EXPR, if the mode if a fixed-point
7280         mode, we jump to binop directly.
7281         Support FIXED_CONVERT_EXPR.
7282         (do_store_flag): Check FIXED_CST to put a constant second.
7283         (vector_mode_valid_p): Handle MODE_VECTOR_FRACT,
7284         MODE_VECTOR_UFRACT, MODE_VECTOR_ACCUM, MODE_VECTOR_UACCUM.
7285         (const_vector_from_tree): Support FIXED_CST.
7286         * doc/extend.texi (Fixed-Point): New node.
7287         * doc/md.texi (ssadd, usadd, sssub, ussub, ssmul, usmul, ssdiv, usdiv,
7288         ssmadd, usmadd, ssmsub, usmsub, ssashl, usashl, ssneg, usneg, fract,
7289         satfract, fractuns, satfractuns): Document them.
7290
7291 2007-09-07  Bernd Schmidt  <bernd.schmidt@analog.com>
7292
7293         * config/bfin/bfin.h (PREFERRED_RELOAD_CLASS): Don't reload autoinc
7294         addresses into I registers.
7295
7296 2007-09-06  Jan Hubicka  <jh@suse.cz>
7297             Andreas Tobler  <a.tobler@schweiz.org>
7298
7299         * config/darwin.c (machopic_indirect_data_reference): Avoid invalid
7300         sharing.
7301         (machopic_legitimize_pic_address): Likewise.
7302
7303 2007-09-06  Andrew Pinski  <andrew_pinski@playstation.sony.com>
7304             Jan Hubicka  <jh@suse.cz>
7305
7306         * config/spu/spu.md (floatsidf2): Use convert_optab_libfunc
7307         instead of ufloat_optab->handlers directly.
7308         (floatdidf2): Likewise.
7309
7310 2007-09-06  Sandra Loosemore  <sandra@codesourcery.com>
7311
7312         * config/mips/mips.c:  Include diagnostic.h.
7313         (mips_set_current_function): Check errorcount and sorrycount 
7314         before generating RTL.
7315
7316 2007-09-06  Richard Sandiford  <richard@codesourcery.com>
7317
7318         PR target/33256
7319         * config/mips/mips.c (mips_classify_symbolic_expression): New function.
7320         (mips_classify_address): Use it instead of mips_symbolic_constant_p.
7321         (print_operand_reloc): Likewise.
7322
7323 2007-09-06  Janis Johnson  <janis187@us.ibm.com>
7324
7325         Revert:
7326
7327         2007-09-06  Jan Hubicka  <jh@suse.cz>
7328  
7329         * i386.c (ix86_expand_lround, ix86_expand_round): Update call of
7330         real_2expN.
7331
7332         2007-09-06  Richard Sandiford  <richard@codesourcery.com>
7333
7334         * config/mips/mips.md (fixuns_truncdfsi2, fixuns_truncdfdi2)
7335         (fixuns_truncsfsi2, fixuns_truncsfdi2): Update calls to real_2expN.
7336
7337         2007-09-05  Janis Johnson  <janis187@us.ibm.com>
7338
7339         * optabs.c (expand_float): Convert unsigned integer as signed only
7340         if it provides sufficient accuracy; add mode argument to real_2expN.
7341         (expand_fix): Fix comment typos; extend binary float into mode
7342         wider than destination for converion to unsigned integer; add mode
7343         argument to real_2expN.
7344         * real.c (real_2expN): Add mode argument to special-case decimal
7345         float values.
7346         * real.h (real_2expN): Ditto.
7347         * fixed-value.c (check_real_for_fixed_mode): Add mode argument to
7348         real_2expN.
7349         (fixed_from_string): Ditto.
7350         (fixed_to_decimal): Ditto.
7351         (fixed_convert_from_real): Ditto.
7352         (real_convert_from_fixed): Ditto.
7353         * config/rs6000/rs6000.md (FP): Include DD and TD modes.
7354         * config/rs6000/dfp.md (extendddtd2, adddd3, addtd3, subdd3, subtd3,
7355         muldd3, multd3, divdd3, divtd3, cmpdd_internal1, cmptd_internal1,
7356         floatditd2, ftruncdd2, fixdddi2, ftrunctd2, fixddi2): New.
7357
7358 2007-09-06  Tom Tromey  <tromey@redhat.com>
7359
7360         * tree-cfg.c (remove_bb): Only warn if line is non-zero.
7361         * c-pch.c (c_common_read_pch): Restore current location after
7362         reading PCH file.
7363         * tree.c (expand_location): Update.
7364         (expr_filename): Changed return type.  Unified the two cases.
7365         (expr_lineno): Likewise.
7366         (annotate_with_file_line): Don't use EXPR_LINENO and EXPR_FILENAME
7367         as lvalues.
7368         * toplev.c (line_table): Changed type.
7369         (general_init): Update.
7370         (realloc_for_line_map): New function.
7371         (general_init): Allocate line_table using GC.
7372         * fix-header.c (line_table): Changed type.
7373         (read_scan_file): Update.
7374         (read_scan_file): Update.
7375         * c-ppoutput.c (maybe_print_line): Update.
7376         (print_line): Update.
7377         (cb_line_change): Update.
7378         (cb_define): Update.
7379         (pp_file_change): Update.
7380         * c-opts.c (c_common_init_options): Update.
7381         (finish_options): Update.
7382         (push_command_line_include): Update.
7383         * c-lex.c (cb_line_change): Update.
7384         (cb_def_pragma): Update.
7385         (cb_define): Update.
7386         (cb_undef): Update.
7387         (c_lex_with_flags): Use cpp_get_token_with_location.
7388         * input.h (line_table): Changed type.
7389         (location_from_locus): New macro.
7390         * tree.h (EXPR_FILENAME): No longer an lvalue.
7391         (EXPR_LINENO): Likewise.
7392         (expr_locus, set_expr_locus): Declare separately for
7393         USE_MAPPED_LOCATION.
7394         (expr_filename, expr_lineno): Changed return type.
7395         * gimplify.c (tree_to_gimple_tuple): Use SET_EXPR_LOCUS.
7396         * cfgexpand.c (expand_gimple_cond_expr): Use location_from_locus.
7397         (expand_gimple_basic_block): Likewise.
7398         * final.c (final_scan_insn): Use expanded_location.
7399
7400 2007-09-06  Richard Guenther  <rguenther@suse.de>
7401
7402         PR tree-optimization/32586
7403         * tree-ssa-sccvn.c (simplify_binary_expression): Avoid
7404         folding if nothing changed.
7405         (simplify_unary_expression): New function.  Do tree combining
7406         on conversion like codes.
7407         (try_to_simplify): Call it.
7408         * builtins.c (fold_builtin_cexp): Fold the built expressions.
7409         * fold-const.c (fold_unary): Test result of get_callee_fndecl().
7410
7411 2007-09-06  Jan Hubicka  <jh@suse.cz>
7412
7413         PR target/33318
7414         * cse.c (fold_rtx): Avoid invalid sharing.
7415
7416 2007-09-06  Richard Sandiford  <richard@codesourcery.com>
7417
7418         * config/mips/mips.md (fixuns_truncdfsi2, fixuns_truncdfdi2)
7419         (fixuns_truncsfsi2, fixuns_truncsfdi2): Update calls to real_2expN.
7420
7421 2007-09-06  Revital Eres  <eres@il.ibm.com>
7422
7423         * config/rs6000/rs6000.c (rs6000_legitimate_offset_address_p):
7424         Fix offsettable memory reference for 750CL.
7425
7426 2007-09-06  Pat Haugen  <pthaugen@us.ibm.com>
7427
7428         * reload.c (find_reloads_address_1): Try to preserve original
7429         base/index regclass of operands.
7430         * regrename.c (scan_rtx_address): Likewise.
7431         (replace_oldest_value_addr): Likewise.
7432
7433 2007-09-06  Richard Guenther  <rguenther@suse.de>
7434
7435         PR tree-optimization/33302
7436         * domwalk.c (walk_dominator_tree): The exit block is
7437         interesting even if it is not reachable.
7438
7439 2007-09-06  Richard Sandiford  <richard@codesourcery.com>
7440
7441         PR middle-end/33306
7442         * optabs.c (avoid_expensive_constant): Do nothing if MODE is VOIDmode.
7443
7444 2007-09-06  Basile Starynkevitch  <basile@starynkevitch.net>
7445
7446         * cfg.c (dump_bb_info, dump_edge_info): Added cfun test for 
7447         robustness.
7448
7449 2007-09-05  Ian Lance Taylor  <iant@google.com>
7450
7451         * tree-pretty-print.c (dump_decl_name): Cast LABEL_DECL_UID to int
7452         when printing.
7453         (dump_generic_node): Likewise.
7454         * print-rtl.c (print_decl_name): Likewise.
7455         * print-tree.c (print_node_brief): Likewise.
7456         (print_node): Likewise.
7457         * Makefile.in (RTL_BASE_H): Add alias.h.
7458         (TREE_H): Likewise.
7459
7460 2007-09-06  Jesper Nilsson  <jesper.nilsson@axis.com>
7461
7462         * longlong.h [__CRIS_arch_version >= 8] (count_trailing_zeros):
7463         Defined.
7464         * config/cris/cris.md (ctzsi2, cris_swap_bits): Implemented.
7465         * config/cris/cris.h (CTZ_DEFINED_VALUE_AT_ZERO): Defined.
7466
7467 2007-09-06  Jie Zhang  <jie.zhang@analog.com>
7468
7469         * config.gcc (tm_file): Add linux.h for bfin*-uclinux*.
7470         (tm_defines): Define UCLIBC_DEFAULT to 1.
7471         (extra_options): Add linux.opt.
7472         * config/bfin/linux.h (CPLUSPLUS_CPP_SPEC): Don't define.
7473         (CRT_CALL_STATIC_FUNCTION): Likewise.
7474         (NO_IMPLICIT_EXTERN_C): Likewise.
7475         (TARGET_OS_CPP_BUILTINS): Define as LINUX_TARGET_OS_CPP_BUILTINS.
7476         * config/bfin/elf.h (OBJECT_FORMAT_ELF): Don't define.
7477         * config/bfin/uclinux.h (CPLUSPLUS_CPP_SPEC): Don't define.
7478         (ENDFILE_SPEC): Don't define.
7479         (LIB_SPEC): Likewise.
7480         (CRT_CALL_STATIC_FUNCTION): Likewise.
7481         (NO_IMPLICIT_EXTERN_C): Likewise.
7482         (LINUX_TARGET_OS_CPP_BUILTINS): Likewise.
7483         (TARGET_OS_CPP_BUILTINS): Define as LINUX_TARGET_OS_CPP_BUILTINS.
7484
7485 2007-09-06  Jan Hubicka  <jh@suse.cz>
7486
7487         * i386.c (ix86_expand_lround, ix86_expand_round): Update call of
7488         real_2expN.
7489
7490 2007-09-06  Jan Hubicka  <jh@suse.cz>
7491
7492         * opts.c (common_handle_option): Enable inlining functions for
7493         -fprofile-generate.
7494
7495 2007-09-06  Jakub Jelinek  <jakub@redhat.com>
7496
7497         * builtin-attrs.def (ATTR_NONNULL_3): New.
7498         (DEF_FORMAT_ATTRIBUTE): Use just ATTR_NONNULL_##FA instead of
7499         ATTR_NOTHROW_NONNULL_##FA.
7500         (DEF_FORMAT_ATTRIBUTE_NOTHROW, DEF_FORMAT_ATTRIBUTE_BOTH): New macros.
7501         (ATTR_FORMAT_PRINTF_NOTHROW_2_0, ATTR_PRINTF_NOTHROW_2_3,
7502         ATTR_FORMAT_PRINTF_NOTHROW_3_0, ATTR_FORMAT_PRINTF_NOTHROW_3_4,
7503         ATTR_FORMAT_PRINTF_NOTHROW_4_0, ATTR_PRINTF_NOTHROW_4_5,
7504         ATTR_FORMAT_PRINTF_NOTHROW_5_0, ATTR_FORMAT_PRINTF_NOTHROW_5_6,
7505         ATTR_FORMAT_SCANF_NOTHROW_2_0, ATTR_FORMAT_SCANF_NOTHROW_2_3,
7506         ATTR_FORMAT_STRFTIME_NOTHROW_3_0, ATTR_FORMAT_STRFMON_NOTHROW_3_4):
7507         New.
7508         (ATTR_FORMAT_PRINTF_4_0, ATTR_PRINTF_4_5, ATTR_FORMAT_PRINTF_5_0,
7509         ATTR_FORMAT_PRINTF_5_6, ATTR_FORMAT_STRFTIME_3_0,
7510         ATTR_FORMAT_NOTHROW_3_4): Remove.
7511         * builtins.def (snprintf, sprintf, sscanf, vsnprintf, vsprintf,
7512         vsscanf, strfmon, strftime, __snprintf_chk, __sprintf_chk,
7513         __vsnprintf_chk, __vsprintf_chk): Use ATTR_FORMAT_*_NOTHROW_*
7514         instead of ATTR_FORMAT_*_*.
7515
7516 2007-09-06  Hans-Peter Nilsson  <hp@axis.com>
7517
7518         * config/cris/cris.c (cris_emit_movem_store): Call copy_rtx on
7519         parts re-used for REG_FRAME_RELATED_EXPR.
7520
7521 2007-09-05  Janis Johnson  <janis187@us.ibm.com>
7522
7523         * optabs.c (expand_float): Convert unsigned integer as signed only
7524         if it provides sufficient accuracy; add mode argument to real_2expN.
7525         (expand_fix): Fix comment typos; extend binary float into mode
7526         wider than destination for converion to unsigned integer; add mode
7527         argument to real_2expN.
7528         * real.c (real_2expN): Add mode argument to special-case decimal
7529         float values.
7530         * real.h (real_2expN): Ditto.
7531         * fixed-value.c (check_real_for_fixed_mode): Add mode argument to
7532         real_2expN.
7533         (fixed_from_string): Ditto.
7534         (fixed_to_decimal): Ditto.
7535         (fixed_convert_from_real): Ditto.
7536         (real_convert_from_fixed): Ditto.
7537         * config/rs6000/rs6000.md (FP): Include DD and TD modes.
7538         * config/rs6000/dfp.md (extendddtd2, adddd3, addtd3, subdd3, subtd3,
7539         muldd3, multd3, divdd3, divtd3, cmpdd_internal1, cmptd_internal1,
7540         floatditd2, ftruncdd2, fixdddi2, ftrunctd2, fixddi2): New.
7541
7542 2007-09-05  Ian Lance Taylor  <iant@google.com>
7543
7544         * init-regs.c (initialize_uninitialized_regs): Call
7545         emit_insn_before rather than add_insn_before.
7546
7547 2007-09-05  Jakub Jelinek  <jakub@redhat.com>
7548
7549         * builtins.def (BUILT_IN_VA_ARG_PACK): New built-in.
7550         * tree.h (CALL_EXPR_VA_ARG_PACK): Define.
7551         * tree-inline.h (copy_body_data): Add call_expr field.
7552         * tree-inline.c (expand_call_inline): Initialize call_expr.
7553         (copy_bb): Append anonymous inline fn arguments to arguments
7554         when inlining a CALL_EXPR_VA_ARG_PACK call.
7555         * builtins.c (expand_builtin): Issue an error if
7556         BUILT_IN_VA_ARG_PACK is seen during expand.
7557         (fold_call_expr, fold_builtin_call_array): Don't fold
7558         CALL_EXPR_VA_ARG_PACK CALL_EXPRs or calls with
7559         __builtin_va_arg_pack () call as last argument.
7560         * gimplify.c (gimplify_call_expr): If last argument to a vararg
7561         function is __builtin_va_arg_pack (), decrease number of call
7562         arguments and instead set CALL_EXPR_VA_ARG_PACK on the CALL_EXPR.
7563         * expr.c (expand_expr_real_1): Issue an error if
7564         CALL_EXPR_VA_ARG_PACK CALL_EXPR is seen during expand.
7565         * tree-pretty-print.c (dump_generic_node): Handle printing
7566         CALL_EXPR_VA_ARG_PACK bit on CALL_EXPRs.
7567         * doc/extend.texi (__builtin_va_arg_pack): Document.
7568
7569 2007-09-05  Adam Nemet  <anemet@caviumnetworks.com>
7570
7571         PR tree-optimization/21513
7572         * builtins.c (build_builtin_expect_predicate): New function.
7573         (fold_builtin_expect): Add argument for expected value.
7574         Distribute __builtin_expect over short-circuiting operations.
7575         Fold nested builtin_expects.
7576         (fold_builtin_2): Adjust call to fold_builtin_expect.
7577
7578 2007-09-05  Rask Ingemann Lambertsen  <rask@sygehus.dk>
7579
7580         PR web/32965
7581         PR tree-optimization/13756
7582         * doc/invoke.texi (Options That Control Optimization): Document
7583         -ftree-dse.
7584
7585 2007-09-05  Uros Bizjak  <ubizjak@gmail.com>
7586
7587         * config/i386/cpuid.h: New file.
7588         * config/i386/driver-i386.c: Include cpuid.h.
7589         (describe_cache): Shrink size and line strings to 100 bytes.
7590         (detect_caches_amd): Return "" for unsupported max_ext_level.
7591         Use __cpuid function.
7592         (detect_caches_intel): Return "" for unsupported max_level.
7593         Use __cpuid function.
7594         (host_detect_local_cpu): Change feature flag variables to
7595         unsigned int.  Initialize only extended feature flag variables.
7596         Use __get_cpuid_max to determine max supported cpuid level.
7597         Use __cpuid function to determine supported features.  Fix
7598         calculation of family id.  Remove is_amd and check signature
7599         directly.  Check for Geode signature.  Handle family 4 id.
7600         [PROCESSOR_GENERIC32]: New default for unknown family id.  Move
7601         cpu discovery code to lower part of the function.
7602         [PROCESSOR_PENTIUM, PROCESSOR_K6, PROCESSOR_ATHLON]: Do not tune
7603         for sub-architecture.
7604         [PROCESSOR_PENTIUMPRO]: Simplify cpu discovery code.
7605         [PROCESSOR_K8]: Add k8-sse3 architecture.
7606         [PROCESSOR_NOCONA]: Remove.
7607         [PROCESSOR_GENERIC64]: Ditto.
7608         * config/i386/x-i386 (driver-i386.o): Depend on cpuid.h.
7609         * config/i386/crtfastmath.c: Include cpuid.h.  Use __get_cpuid
7610         to check for SSE and FXSAVE support.
7611         * config/i386/t-crtfm (crtfastmath.o): Depend on cpuid.h.
7612         Add -minline-all-stringops.
7613         * config.gcc (i[34567]86-*-*): Add cpuid.h to extra_headers.
7614         (x86_64-*-*): Ditto.
7615
7616 2007-09-05  Jie Zhang  <jie.zhang@analog.com>
7617
7618         * config/bfin/linux-unwind.h: New file.
7619         * config/bfin/linux.h (MD_UNWIND_SUPPORT): Define.
7620         * config/bfin/uclinux.h (MD_UNWIND_SUPPORT): Define.
7621
7622 2007-09-05  Laurynas Biveinis  <laurynas.biveinis@gmail.com>
7623
7624         * Makefile.in (stmt.o): Add alloc-pool.h dependency.
7625         * stmt.c: Include alloc-pool.h.
7626         (struct case_node): Remove GTY marker.
7627         (add_case_node): New parameter case_node_pool.  Use it for
7628         allocation of r.
7629         (expand_case): New allocation pool case_node_pool.  Initialize it,
7630         pass to add_case_node and free it.
7631
7632 2007-09-05  Sandra Loosemore  <sandra@codesourcery.com>
7633             David Ung  <davidu@mips.com>
7634             Nigel Stephens <nigel@mips.com>
7635
7636         Add mips16/nomips16 function attributes and -mflip-mips16 option
7637         for testing mixed-mode compilation.
7638
7639         * config/mips/mips.opt (mflip-mips16): New.
7640
7641         * config/mips/mips.h (SYMBOL_FLAG_MIPS16_FUNC): Define.
7642         (SYMBOL_FLAG_MIPS16_FUNC_P): Define.
7643
7644         * config/mips/mips.c (mips_base_target_flags): New.
7645         (mips_base_mips16): New.
7646         (mips_base_schedule_insns): New.
7647         (mips_base_reorder_blocks_and_partition): New.
7648         (mips_base_align_loops): New.
7649         (mips_base_align_jumps): New.
7650         (mips_base_align_functions): New.
7651         (mips16_flipper): New.
7652         (mips_attribute_table): Add "mips16" and "nomips16" entries.
7653         (TARGET_SET_CURRENT_FUNCTION): Define.
7654         (mips_mips16_type_p, mips_nomips16_type_p): New.
7655         (mips_comp_type_attributes): Check mips16/nomips16 attributes.
7656         (mips_function_ok_for_sibcall): Make it deal with functions with
7657         mips16 attributes.
7658         (mips_init_split_addresses): New, split out from override_options.
7659         (mips_init_relocs): New, split out from override_options.
7660         (was_mips16_p): New.
7661         (mips_set_mips16_mode): New, split out from override_options.
7662         (mips_set_current_function): New.
7663         (override_options): Add sorry for unsupported mips16/pic
7664         combination.  Remove error for mips16/dsp combination.  Save
7665         base option settings.  
7666         (mips_file_start): Move mips16 mode setting output from here....
7667         (mips_output_function_prologue): ....to here.
7668         (mips_output_mi_thunk): Check for mips16 function.
7669         (build_mips16_function_stub): Don't set .mips16 here.
7670         (build_mips16_call_stub): Likewise.
7671         (mips_expand_builtin): Error in mips16 mode.
7672         (mips_use_mips16_mode_p): New.
7673         (mips_encode_section_info): Check for mips16 function, and set
7674         SYMBOL_REF_FLAGS accordingly.
7675
7676         * doc/extend.texi (Function Attributes): Document new
7677         mips16/nomips16 attributes.
7678         * doc/invoke.texi (Option Summary): Add -mflip-mips16.
7679         (MIPS Options): Document -mflip-mips16.
7680
7681 2007-09-05  Sandra Loosemore  <sandra@codesourcery.com>
7682
7683         * config/mips/mips.c (mips_legitimize_tls_address): Call sorry
7684         if we encounter TLS address in MIPS16 mode.
7685         (mips_legitimize_const_move): Check cannot_force_const_mem for
7686         the (const (plus symbol offset)) case; this forces invalid TLS
7687         address in MIPS16 mode to be caught by the above call to sorry.
7688         (override_options): Don't reset targetm.have_tls in MIPS16 mode,
7689         because that now enables emutls, which is not ABI compatible
7690         with native TLS in non-MIPS16 mode.
7691
7692 2007-09-05  Sandra Loosemore  <sandra@codesourcery.com>
7693
7694         Add target hook invoked when cfun changes.
7695
7696         * doc/tm.texi (TARGET_SET_CURRENT_FUNCTION): Document.
7697         * target.h (struct gcc_target): Add set_current_function.
7698         * target-def.h (TARGET_SET_CURRENT_FUNCTION): Define.
7699         (TARGET_INITIALIZER): Add initializer for set_current_function.
7700         * tree.h (push_struct_function): New.
7701         * tree-inline.h (push_cfun, pop_cfun): Move declarations to...
7702         * function.h: Here.
7703         (set_cfun): Declare.
7704         * tree-inline.c (cfun_stack, push_cfun, pop_cfun): Moved to...
7705         * function.c: Here.
7706         (push_function_context_to): Use allocate_struct_function
7707         to create null context, not init_dummy_function_start.  Use set_cfun.
7708         (pop_function_context_from): Use set_cfun.
7709         (in_dummy_function): New.
7710         (invoke_set_current_function_hook): New.
7711         (set_cfun): New.
7712         (push_cfun, pop_cfun): Use set_cfun.
7713         (push_struct_function): New.
7714         (allocate_struct_function): Call invoke_set_current_function_hook
7715         before returning.
7716         (prepare_function_start): Don't set cfun here.  Remove unused
7717         argument; fix all callers.
7718         (init_dummy_function_start): Fiddle with in_dummy_function.  Call
7719         push_struct_function.
7720         (init_function_start): Set cfun here.
7721         (expand_dummy_function_end): Fiddle with in_dummy_function.  Pop cfun.
7722         * omp-low.c (create_omp_child_function): Use push_struct_function
7723         and pop_cfun to save/restore state.
7724         (expand_omp_parallel): Remove unused saved_cfun variable.
7725         * cgraphunit.c (ipa_passes): Use set_cfun.
7726         * gimple-low.c (record_vars_into): Use push_cfun/pop_cfun here.
7727         * dwarf2out.c (dwarf2out_abstract_function): Likewise.
7728         * matrix-reorg.c (transform_allocation_sites): Likewise.
7729         (matrix_reorg): Use set_cfun.
7730         * gimplify.c (gimplify_function_tree): Use push_cfun/pop_cfun here.
7731         * tree-optimize.c (tree_rest_of_compilation): Remove one redundant
7732         assignment to cfun; use set_cfun for the other.
7733         * tree-cfg.c (move_sese_region_to_fn): Use set_cfun.
7734         (dump_function_to_file): Use push_cfun/pop_cfun here.
7735         * c-decl.c (finish_function): Use set_cfun.
7736
7737 2007-09-05  Kenneth Zadeck <zadeck@naturalbridge.com>
7738
7739         * regrename.c (rerename_optimize): Use deferred rescanning and
7740         insert explicit calls to rescan insns when changed.
7741         
7742 2007-09-05  Jan Hubicka  <jh@suse.cz>
7743
7744         * optabs.c (libfunc_entry): Change optab to integer.
7745         (hash_libfunc, convert_optab_libfunc, optab_libfunc,
7746         set_optab_libfunc, set_conv_libfunc): Use optable indexes instead
7747         of pointers for hashing.
7748
7749 2007-09-05  Jan Hubicka  <jh@suse.cz>
7750
7751         * regrename.c (pass_regrename, pass_cprop_hardreg): Add RTL sharing
7752         verifier.
7753         * fwprop.c (pass_rtl_fwprop, pass_rtl_fwprop_add): Likewise.
7754         * see.c (pass_see): Likewise.
7755         * tracer.c (pass_tracer): Likewise.
7756         * postreload-gcse.c (pass_gcse2): Likewise.
7757         * postreload.c (pass_postreload_cse): Likewise.
7758         * mode-switching.c (pass_mode_switching): Likewise.
7759         * modulo-sched.c (pass_sms): Likewise.
7760         * cse.c (cse_insn): Likewise.
7761         * web.c (pass_web): Likweise.
7762         * combine-stack-adj.c (pass_stack_adjustments): Likewise.
7763         * dce.c (pass_ud_rtl_dce, pass_fast_rtl_dce): Likewise.
7764         * loop-init.c (pass_rtl_loop_init): Likewise.
7765         (pass_rtl_loop_done, pass_rtl_move_loop_, pass_rtl_unswitch,
7766         pass_rtl_unroll_and, pass_rtl_doloop): Likewise.
7767         * global.c (pass_global_alloc): Likewise.
7768         * ifcvt.c (pass_rtl_ifcvt, pass_if_after_combine,
7769         pass_if_after_reload): Likewise.
7770         * reload.c (pass_peephole2, pass_split_for_shoren_branches): Likewise.
7771         * dse.c (pass_rtl_dse1, pass_rtl_dse2): Likewise.
7772         * regmove.c (pass_regmove): Likewise.
7773         * function.c (pass_thread_prologugues_epilogues): Likewise.
7774         * gcse.c (pass_gcse): Likewise.
7775         * rtl-factoring.c (pass_rtl_seqabstr): Likewise.
7776         * lower-subreg.c (pass_lower_subreg2): Likewise.
7777         * bt-load.c (pass_branch_target_load): Likewise.
7778         * emit-rtl.c (pass_unshare_all_rtl): Likewise.
7779         * cfgcleanup.c (pass_jump, pass_jump2): Likewise.
7780         * combine.c (pass_combine): Likewise.
7781         * bb-reorder.c (pass_duplicate_comp, pass_reorder_blocks): Likewise.
7782         (pass_partition_blocks): Likewise.
7783         * var-tracking.c (pass_variable_track): Likewise.
7784         * reg-stack.c (pass_stack_regs_run): Likewise.
7785         * sched-rgn.c (pass_sched, pass_sched2): Likewise.
7786         * passes.c (pass_postreload): Likewise.
7787         (execute_function_todo): Add TODO_verify_rtl_sharing handling code.
7788         * tree-pass.h (TODO_verify_rtl_sharing): New.
7789         (TODO_update_ssa, TODO_update_ssa_no_phi, TODO_update_ssa_full_phi,
7790         TODO_update_ssa_only_virtuals, TODO_remove_unused_locals,
7791         TODO_set_props, TODO_df_finish, TODO_df_verify,
7792         TODO_mark_first_instance, TODO_rebuild_alias): Renumber.
7793
7794 2007-09-05  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
7795
7796         * fold-const.c (all_ones_mask_p, sign_bit_p, simple_operand_p,
7797         fold_real_zero_addition_p, reorder_operands_p,
7798         div_if_zero_remainder, fold_undefer_overflow_warnings,
7799         int_binop_types_match_p, fold_convert_const_int_from_int,
7800         fold_convert_const_int_from_real,
7801         fold_convert_const_int_from_fixed,
7802         fold_convert_const_real_from_real,
7803         fold_convert_const_real_from_fixed,
7804         fold_convert_const_fixed_from_fixed,
7805         fold_convert_const_fixed_from_int,
7806         fold_convert_const_fixed_from_real, maybe_lvalue_p,
7807         fold_checksum_tree, fold_check_failed, print_fold_checksum,
7808         debug_fold_checksum, multiple_of_p): Constify.
7809         * tree-flow-inline.h (get_lineno): Likewise.
7810         * tree-flow.h (get_lineno): Likewise.
7811         * tree-object-size.c (compute_object_offset, addr_object_size,
7812         alloc_object_size, pass_through_call): Likewise.
7813         * tree-pretty-print.c (op_symbol, print_call_name,
7814         print_struct_decl, do_niy): Likewise.
7815         * tree.h (fold_undefer_overflow_warnings, multiple_of_p,
7816         debug_fold_checksum): Likewise.
7817
7818 2007-09-04  Steven Bosscher  <steven@gcc.gnu.org>
7819
7820         PR middle-end/33029
7821         * lower-subreg.c (resolve_clobber): If we remove a REG_LIBCALL
7822         note, remove the associated REG_RETVAL note.
7823
7824 2007-09-04  Andrew Pinski  <andrew_pinski@playstation.sony.com>
7825
7826         * config.gcc (powerpc*-*-*): Install
7827         spu2vmx.h, vec_types.h, and si2vmx.h headers.
7828         * config/rs6000/spu2vmx.h: New header.
7829         * config/rs6000/si2vmx.h: New header.
7830         * config/rs6000/vec_types.h: New header.
7831
7832 2007-09-05  Ben Elliston  <bje@au.ibm.com>
7833
7834         * varasm.c (initializer_constant_valid_p): Fix comment typo.
7835
7836 2007-09-05  Ben Elliston  <bje@au.ibm.com>
7837
7838         * config/rs6000/ppu_intrinsics.h (__ldarx): Use `Z' constraint,
7839         not `m' for *ptrp.
7840         (__stdcx): Make asm volatile.
7841         (__stwcx, __stdcx): Return only 0 or 1.
7842
7843 2007-09-05  Jan Hubicka  <jh@suse.cz>
7844
7845         Revert:
7846
7847         2007-09-04  Jan Hubicka  <jh@suse.cz>
7848         * tree-tailcall.c (eliminate_tail_call): Expect unrenamed return value.
7849
7850         2007-09-04  Richard Guenther  <rguenther@suse.de>
7851         * tree-ssa-operands.c (add_virtual_operand): Only mark
7852         stores as has_volatile_ops if alias information is not available.
7853
7854 2007-09-05  Jakub Jelinek  <jakub@redhat.com>
7855
7856         * config/rs6000/tramp.asm: Include config.h.
7857         Check __PIC__ or __pic__ macro instead of SHARED.
7858
7859         PR rtl-optimization/32300
7860         * see.c (see_copy_insn): New function.
7861         (see_def_extension_not_merged, see_merge_one_use_extension,
7862         see_merge_one_def_extension): Use it.  Avoid changing
7863         PREV_INSN/NEXT_INSN chains directly, insted emit insns
7864         into sequences.  Call df_insn_delete on temporary insns
7865         that won't be emitted into the insn stream.
7866         (rest_of_handle_see): Turn off DF_DEFER_INSN_RESCAN
7867         and run df_process_deferred_rescans () before run_fast_dce.
7868
7869         PR tree-optimization/33017
7870         * tree-data-ref.c (split_constant_offset) <case SSA_NAME>: Don't
7871         recurse for pure or const function calls.
7872
7873 2007-09-04  Laurynas Biveinis  <laurynas.biveinis@gmail.com>
7874
7875         * c-format.c: Include alloc-pool.h.
7876         (check_format_info_main): New argument fwt_alloc.  Use allocation
7877         pool instead of GC.  Remove GC deallocation code.
7878         (check_format_arg): Create allocation pool, pass it to
7879         check_format_info_main and free it afterwards.
7880         * Makefile.in (c-format.o): Add alloc-pool.h dependency.
7881
7882 2007-09-05  Ben Elliston  <bje@au.ibm.com>
7883
7884         * config/rs6000/ppu_intrinsics.h (__protected_stream_count):
7885         Rename count macro arugment for clarity.
7886         (__protected_unlimited_stream_set): Pass UG=1 to __dcbt_TH1000.
7887         (__protected_stream_set): Likewise, pass 0.
7888
7889 2007-09-04  Jan Hubicka  <jh@suse.cz>
7890
7891         * tree-tailcall.c (eliminate_tail_call): Expect unrenamed return value.
7892
7893 2007-09-04  Jan Hubicka  <jh@suse.cz>
7894
7895         * invoke.texi (-finline-small-functions): Document.
7896         * ipa-inline.c (cgraph_default_inline_p): Do not use DECL_INLINE
7897         when deciding what is inlinable.
7898         (cgraph_decide_recursive_inlining): Handle flag_inline_functions.
7899         (cgraph_decide_inlining_of_small_function): Handle new flags.
7900         (cgraph_decide_inlining_incrementally): Likewise.
7901         * opts.c (decode_options): Enable flag_inline_small_functions at -O2
7902         * common.opt (finline-small-functions): New.
7903         * Makefile.in (build/gengtype.o-warn): Work around PR29478
7904
7905 2007-09-04  Richard Guenther  <rguenther@suse.de>
7906
7907         * tree-ssa-operands.c (add_virtual_operand): Only mark
7908         stores as has_volatile_ops if alias information is not available.
7909
7910 2007-09-04  Andrew Haley  <aph@redhat.com>
7911
7912         * config/arm/libgcc-bpabi.ver: Add _Unwind_Backtrace as GCC_4.3.0.
7913
7914 2007-09-04  Andrew Haley  <aph@redhat.com>
7915
7916         * config/arm/libunwind.S (UNWIND_WRAPPER _Unwind_Backtrace): New.
7917         * config/arm/unwind-arm.h (__gnu_Unwind_Backtrace): New.
7918         * config/arm/unwind-arm.c (__gnu_Unwind_Backtrace): New.
7919
7920 2007-09-04  Emmanuel Thome  <Emmanuel.Thome@inria.fr>
7921
7922         PR c++/14178
7923         * common.opt: Mention ABI version 2 in comment.
7924
7925 2007-09-04  Jan Hubicka  <jh@suse.cz>
7926
7927         * optabs.c (debug_optab_libfunc): Update; make available to gdb.
7928         (libfunc_entry): New structure.
7929         (libfunc_hash): New hashtable.
7930         (hash_libfunc): New function.
7931         (eq_libfunc): New function.
7932         (convert_optab_libfunc): New function.
7933         (optab_libfunc): New function.
7934         (expand_binop, sign_expand_binop, expand_twoval_binop_libfunc,
7935         expand_unop, prepare_cmp_insn, prepare_float_insn, gen_add2_insn,
7936         expand_float, expand_fix, new_optab, new_convert_optab):
7937          Update for new libfunc API.
7938         (init_libfunc, init_integral_libfuncs,
7939         init_floating_libfuncs, init_interclass_conv_libfuncs
7940         init_intraclass_conv_libfuncs): Remove; reorganize all logic to:
7941         (gen_libfunc, gen_int_libfunc, gen_fp_libfunc, gen_int_fp_libfunc,
7942         gen_intv_fp_libfunc, gen_interclass_conv_libfunc,
7943         gen_int_to_fp_conv_libfunc, gen_ufloat_conv_libfunc,
7944         gen_int_to_fp_nondecimal_conv_libfunc, gen_fp_to_int_conv_libfunc,
7945         gen_intraclass_conv_libfunc, gen_trunc_conv_libfunc,
7946         gen_extend_conv_libfunc): New.
7947         (init_one_libfunc): Revamp for hashtables.
7948         (set_conv_libfunc): Likewise.
7949         (init_optabs): Initialize hashtable; use lazy initialization where
7950         possible.
7951         * optabs.h (optab_handlers): Move out of GGC.
7952         (optab, convert_optab): Move out of GGC; add lazy gen info.
7953         (code_to_optab, convert_optab_table, optab_table): Move out of GGC.
7954         (optab_libfunc, convert_optab_libfunc): New.
7955         * builtins.c (expand_builtin_powi): Update for new API.
7956         * expr.c (convert_move): Likewise.
7957         * expmed.c (expand_divmod): Likewise.
7958
7959 2007-09-04  Daniel Jacobowitz  <dan@codesourcery.com>
7960
7961         * config/rs6000/rs6000.c (rs6000_stack_info): Allocate space for the
7962         GOT pointer only if there is a constant pool.  Use the allocated space
7963         for SPE also.
7964
7965 2007-09-04  Daniel Jacobowitz  <dan@codesourcery.com>
7966
7967         * config/rs6000/linux-unwind.h (ppc_fallback_frame_state): Correct
7968         typo for AltiVec.
7969
7970 2007-09-04  Revital Eres  <eres@il.ibm.com>
7971             Richard Guenther  <rguenther@suse.de>
7972             R. Clint Whaley  <whaley@cs.utsa.edu>
7973
7974         * doc/invoke.texi (-fassociative-math, -freciprocal-math):
7975         Document new flags.
7976         * tree-tailcall.c (process_assignment): Use -fassociative-math
7977         when reodering operands of floating-point type.
7978         * fold-const.c (fold_comparison, fold_binary): Use
7979         -fassociative-math and -freciprocal-math instead of
7980         -funsafe-math-optimization flag.
7981         * toplev.h (set_unsafe_math_optimizations_flags): Declare function.
7982         * tree-ssa-math-opts.c (gate_cse_reciprocals): Use
7983         -freciprocal-math instead of -funsafe-math-optimizations.
7984         * opts.c (set_fast_math_flags): Set -freciprocal-math and
7985         -fassociative-math when -ffast-math is set.
7986         (set_unsafe_math_optimizations_flags): New Function
7987         to set -freciprocal-math and -fassociative-math when
7988         -funsafe-math-optimizations is set.
7989         (common_handle_option): Call it.
7990         * tree-vectorizer.c (vect_is_simple_reduction): Use
7991         -fassociative-math when doing reduction on floats.
7992         * loop-unroll.c (analyze_insn_to_expand_var): Use
7993         -fassociative-math when expanding an accumulator of type float.
7994         * simplify-rtx.c (simplify_binary_operation_1): Use
7995         -fassociative-math and -freciprocal-math when reordeing operands
7996         of floating-point type.
7997         * combine.c (combine_simplify_rtx): Likewise.
7998         * tree-ssa-reassoc.c (break_up_subtract_bb, reassociate_bb):
7999         Likewise.
8000         * common.opt (-fassociative-math, -freciprocal-math): New flags.
8001
8002 2007-09-04  Paolo Carlini  <pcarlini@suse.de>
8003
8004         PR c++/18608
8005         * doc/install.texi (--enable-__cxa_atexit): Fix typo.
8006
8007 2007-09-04  Jan Hubicka  <jh@suse.cz>
8008
8009         * regrename.c(copyprop_hardreg_forward_1): Unshare when doing copyprop.
8010
8011 2007-09-04  Jan Hubicka  <jh@suse.cz>
8012
8013         * regrename.c (build_def_use): Don't share RTL between MATCH_OPERATOR
8014         and corresponding MATCH_DUP.
8015
8016 2007-09-04  Uros Bizjak  <ubizjak@gmail.com>
8017
8018         PR middle-end/33187
8019         * combine.c (subst): Do not try to simplify X if it represents load
8020         of FP constant from the constant pool via float extension.
8021
8022 2007-09-04  Ben Elliston  <bje@au.ibm.com>
8023
8024         * c-opts.c: Include "tm_p.h".
8025         * Makefile.in (c-opts.o): Add $(TM_P_H) as a dependency.
8026
8027 2007-09-04  Richard Guenther  <rguenther@suse.de>
8028
8029         PR tree-optimization/33291
8030         * tree-pretty-print.c (dump_generic_node): Dump all
8031         qualifiers for pointer types, not only first.  Dump
8032         qualifiers for aggregate types as well.
8033         * tree-ssa-ccp.c (maybe_fold_offset_to_array_ref): Always
8034         use the canonical type for building ARRAY_REFs.
8035         * gimplify.c (canonicalize_addr_expr): Clean up.  The
8036         correct validness check is compatibility of the pointer
8037         types.  Always use the canonical type for building
8038         ARRAY_REFs and ADDR_EXPRs.
8039         * tree-ssa-forwprop.c (forward_propagate_addr_expr): Revert
8040         change that disabled propagation of ADDR_EXPRs into statements
8041         with volatile ops.
8042
8043 2007-09-03  Zack Weinberg  <zack@codesourcery.com>
8044
8045         * config/arm/arm.md (mulsidi3, umulsidi3, mulsi3_highpart)
8046         (umulsi3_highpart): Make into expanders; existing insns are
8047         now named *[insn]_nov6.  Add stars to existing [insn]_v6
8048         counterparts' names.
8049
8050 2007-09-03  Daniel Jacobowitz  <dan@codesourcery.com>
8051
8052         * Makefile.in (DRIVER_DEFINES, gcc.o, gccspec.o, protoize.o)
8053         (unprotoize.o): Remove SHLIB_MULTILIB.
8054
8055 2007-09-03  Eric Weddington  <eweddington@cso.atmel.com>
8056
8057         * doc/extend.texi: Document progmem attribute for AVR.
8058
8059 2007-09-03  Anatoly Sokolov <aesok@post.ru>
8060
8061         PR target/28902
8062         * config/avr/avr.h (TARGET_VTABLE_ENTRY_ALIGN): Define.
8063
8064 2007-09-03  Zack Weinberg  <zack@codesourcery.com>
8065
8066         * optabs.c (expand_ffs): Initialize val and defined_at_zero
8067         to avoid warnings.
8068
8069         * optabs.c: Remove unnecessary forward declarations.
8070         (expand_unop_direct): New, broken out of expand_unop.
8071         (expand_doubleword_clz): New.
8072         (expand_ctz): Move above expand_ffs.  Use
8073         start_sequence, end_sequence, add_equal_note, and
8074         expand_unop_direct.  Add more commentary.
8075         (expand_ffs): Try both ctz optab and expand_ctz.
8076         Generate a test and branch if the hardware doesn't give us
8077         a useful value for input zero.  Style improvements similar to
8078         expand_ctz.
8079
8080         * config/arm/arm.md (ffssi2, ctzsi2): Delete.
8081
8082 2007-09-03  Zack Weinberg  <zack@codesourcery.com>
8083
8084         * config.gcc: Delete stanza for arm-semi-aof and
8085         armel-semi-aof targets.
8086         * config/arm/arm-protos.h
8087         * config/arm/arm.c
8088         * config/arm/arm.h: Delete all #ifdef AOF_ASSEMBLER blocks;
8089         make all #ifndef AOF_ASSEMBLER blocks unconditional.  Also
8090         delete aof_pic_label and remove mention of AOF in comments.
8091         * config/arm/arm.md: Delete patterns used only for AOF assembly.
8092         * config/arm/aof.h
8093         * config/arm/semiaof.h
8094         * config/arm/t-semi: Delete file.
8095
8096 2007-09-03  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
8097
8098         * system.h (CONST_CAST2, CONST_CAST_TREE, CONST_CAST_RTX,
8099         CONST_CAST_BB): New macros for type-specific casts.
8100         (CONST_CAST): Add a TYPE parameter and define it in terms of
8101         CONST_CAST2.
8102
8103         * c-decl.c (c_make_fname_decl): Supply a TYPE for CONST_CAST.
8104         * c-lex.c (cb_ident, lex_string): Likewise,
8105         * c-typeck.c (free_all_tagged_tu_seen_up_to): Likewise,
8106         * config/i386/i386.c (ix86_function_regparm,
8107         ix86_function_sseregparm): Use CONST_CAST_TREE.
8108         * config/mmix/mmix.c (mmix_encode_section_info): Supply a TYPE for
8109         CONST_CAST.
8110         * gcc.c (set_spec, read_specs, for_each_path, execute, do_spec_1,
8111         give_switch, set_multilib_dir): Likewise,
8112         * gengtype-parse.c (string_seq, typedef_name): Likewise,
8113         * gimple-low.c (block_may_fallthru): Use CONST_CAST_TREE.
8114         * jump.c (reversed_comparison_code_parts): Use CONST_CAST_RTX.
8115         * passes.c (execute_one_pass): Supply a TYPE for CONST_CAST.
8116         * prefix.c (update_path): Likewise,
8117         * pretty-print.c (pp_base_destroy_prefix): Likewise,
8118         * rtlanal.c (keep_with_call_p): Use CONST_CAST_RTX.
8119         * tree-cfg.c (tree_can_merge_blocks_p,
8120         tree_block_ends_with_condjump_p): Use CONST_CAST_BB.
8121         * tree-eh.c (lookup_stmt_eh_region_fn): USe CONST_CAST_TREE.
8122         * tree.c (build_string): Supply a TYPE for CONST_CAST.
8123         (attribute_list_contained): Use CONST_CAST_TREE.
8124
8125 2007-09-03  Krister Walfridsson  <cato@df.lth.se>
8126
8127         * config/netbsd-elf.h (USE_LD_AS_NEEDED): Define.
8128
8129 2007-09-03  Richard Sandiford  <richard@codesourcery.com>
8130
8131         PR middle-end/33290
8132         * optabs.c (avoid_expensive_constant): Canonicalize CONST_INTs
8133         before forcing them into a register.
8134
8135 2007-09-03  Richard Sandiford  <richard@codesourcery.com>
8136
8137         * config/mips/mips.md (fetchop_bit): Use define_code_iterator
8138         rather than define_code_macro.
8139
8140 2007-09-03  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
8141
8142         * gcc.c (xputenv): New function.
8143         (putenv_from_prefixes): Use xputenv instead of putenv.
8144         (process_command): Use xputenv instead of putenv.
8145         (set_collect_gcc_options): Use xputenv instead of putenv.
8146         (main): Use xputenv instead of putenv.
8147
8148 2007-09-03  Jesper Nilsson  <jesper.nilsson@axis.com>
8149
8150         * config/cris/cris.h (TARGET_HAS_SWAP): Defined to describe
8151         availability of swap instruction.
8152         * config/cris/cris.md (bswapsi2): Implement using swap instruction.
8153
8154 2007-09-03  Revital Eres  <eres@il.ibm.com>
8155
8156         * doc/invoke.texi (-fmodulo-sched-allow-regmoves): Update
8157         Documentation.
8158
8159 2007-09-03  Vladimir Yanovsky  <yanov@il.ibm.com>
8160             Ayal Zaks  <zaks@il.ibm.com>
8161             Revital Eres  <eres@il.ibm.com>
8162
8163         * modulo-sched.c (ps_insert_empty_row, verify_partial_schedule,
8164         compute_split_row): New functions.
8165         (ps_unschedule_node): Remove.
8166         (normalize_sched_times): Iterate over the already scheduled
8167         insns instead of the number of nodes.
8168         (MAX_SPLIT_NUM): New definition.
8169         (sms_schedule_by_order): Change the scheduling heuristic to
8170         avoid useless increases of initiation interval ii.
8171         (get_sched_window): Add dump printouts.
8172
8173 2007-09-02  David Daney  <ddaney@avtrex.com>
8174
8175         * config/mips/mips.md (UNSPEC_COMPARE_AND_SWAP, UNSPEC_SYNC_OLD_OP,
8176         UNSPEC_SYNC_NEW_OP, UNSPEC_SYNC_EXCHANGE): New define_constants.
8177         (optab, insn): Add more attributes.
8178         (fetchop_bit): New code macro.
8179         (immediate_insn): New code macro attribute.
8180         (sync): Change condition to ISA_HAS_SYNC.
8181         (rdhwr): Change predicate for operand 0 to register_operand.
8182         (memory_barrier): New expand.
8183         (sync_compare_and_swap<mode>, sync_add<mode>, sync_sub<mode>,
8184         sync_old_add<mode>, sync_old_sub<mode>, sync_new_add<mode>,
8185         sync_new_sub<mode>, sync_<optab><mode>, sync_old_<optab><mode>,
8186         sync_new_<optab><mode>, sync_nand<mode>, sync_old_nand<mode>,
8187         sync_new_nand<mode>, sync_lock_test_and_set<mode>): New insns.
8188         * config/mips/mips.h (ISA_HAS_SYNC, ISA_HAS_LL_SC): New ISA predicates.
8189         (MIPS_COMPARE_AND_SWAP, MIPS_SYNC_OP, MIPS_SYNC_OLD_OP,
8190         MIPS_SYNC_NEW_OP, MIPS_SYNC_NAND, MIPS_SYNC_OLD_NAND,
8191         MIPS_SYNC_NEW_NAND, MIPS_SYNC_EXCHANGE): New Macros.
8192         
8193 2007-09-03  Jesper Nilsson  <jesper.nilsson@axis.com>
8194             Hans-Peter Nilsson  <hp@axis.com>
8195
8196         * config/cris/cris.h (TARGET_HAS_LZ, CLZ_DEFINED_VALUE_AT_ZERO):
8197         Defined to describe availability and behavior of CLZ.
8198         * config/cris/cris.md (clzsi2): Implement using lz instruction.
8199         * config/cris/cris.opt: Tweak comment for "-metrax4".
8200         * config/cris/arit.c (LZ): When defined, define as __builtin_clz.
8201         * longlong.h [__CRIS__ && __CRIS_arch_version >= 3]
8202         (count_leading_zeros): Define.
8203
8204 2007-09-01  Laurynas Biveinis  <laurynas.biveinis@gmail.com>
8205
8206         * ggc-page.c (ggc_pch_read): Call validate_free_objects.
8207
8208 2007-09-02  Joseph Myers  <joseph@codesourcery.com>
8209
8210         PR c/29237
8211         PR middle-end/33272
8212         * c-decl.c (grokdeclarator): Apply qualifiers to type of parameter
8213         decayed from array.
8214
8215 2007-09-01  Kazu Hirata  <kazu@codesourcery.com>
8216
8217         * config/arm/arm.c, config/rs6000/ppu_intrinsics.h,
8218         config/spu/spu.c, df-scan.c, fixed-value.c, fold-const.c,
8219         ginclude/tgmath.h, haifa-sched.c, optabs.c, recog.c,
8220         sched-deps.c, sched-int.h, system.h, target.h,
8221         tree-ssa-live.c, tree-vect-transform.c, tree-vectorizer.c,
8222         tree.def: Fix comment typos.
8223
8224 2007-09-01  Kazu Hirata  <kazu@codesourcery.com>
8225
8226         * config/m68k/m68k.c (TARGET_DEFAULT_TARGET_FLAGS): Remove.
8227         (override_options): Turn on -mstrict-align on non-ColdFire
8228         targets.
8229         * config/m68k/m68k.h (BIGGEST_ALIGNMENT): Update a comment.
8230
8231 2007-09-01  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
8232
8233         * c-common.c (const_strip_array_types): Delete.
8234         * c-common.h (const_strip_array_types): Likewise.
8235         * emit-rtl.c (const_next_insn, const_previous_insn,
8236         const_next_nonnote_insn, const_prev_nonnote_insn,
8237         const_next_real_insn, const_prev_real_insn,
8238         const_next_active_insn, const_prev_active_insn, const_next_label,
8239         const_prev_label): Delete.
8240         * gimple-low.c (block_may_fallthru): Use expr_last.
8241         * jump.c (reversed_comparison_code_parts): Use prev_nonnote_insn.
8242         * rtl.h (const_previous_insn, const_next_insn,
8243         const_prev_nonnote_insn, const_next_nonnote_insn,
8244         const_prev_real_insn, const_next_real_insn,
8245         const_prev_active_insn, const_next_active_insn, const_prev_label,
8246         const_next_label): Delete.
8247         * rtlanal.c (keep_with_call_p): Use next_nonnote_insn.
8248         * system.h (CONST_CAST): Update comment.
8249         * tree-cfg.c (tree_can_merge_blocks_p): Use last_stmt.
8250         (const_first_stmt, const_last_stmt): Delete.
8251         (tree_block_ends_with_condjump_p): Use last_stmt.
8252         * tree-flow.h (const_first_stmt, const_last_stmt): Delete.
8253         * tree-iterator.c (const_expr_first, const_expr_last,
8254         const_expr_only): Delete.
8255         * tree.c (const_lookup_attribute): Likewise.
8256         (attribute_list_contained): Use lookup_attribute.
8257         * tree.h (const_lookup_attribute, const_expr_first,
8258         const_expr_last, const_expr_only): Delete.
8259
8260 2007-09-01  Richard Guenther  <rguenther@suse.de>
8261
8262         * tree-ssa-alias.c (create_name_tags): Use TYPE_VOLATILE
8263         instead of TREE_THIS_VOLATILE.
8264         * tree-ssa-operands.c (add_virtual_operand): Do not set
8265         has_volatile_ops.  Do not check s_ann for NULL.
8266         (get_indirect_ref_operands): Likewise.
8267         (get_expr_operands): Likewise.  For all reference trees
8268         set has_volatile_ops based on TREE_THIS_VOLATILE.  Also
8269         check base of reference for TREE_THIS_VOLATILE.
8270
8271 2007-09-01  Richard Guenther  <rguenther@suse.de>
8272
8273         * tree-cfg.c (verify_gimple_expr): Fix check for conversions
8274         between integral types.  Also allow conversions between
8275         pointer types.
8276
8277 2007-08-31  Andrew Pinski  <andrew_pinski@playstation.sony.com>
8278
8279         * optabs.c (prepare_float_lib_cmp): Use
8280         libgcc_cmp_return_mode instead of word_mode.
8281         * config/dfp-bit.h: Likewise.
8282         * config/fp-bit.h: Likewise.
8283         * config/spu/spu.c (spu_libgcc_cmp_return_mode):
8284         New function.
8285         (spu_libgcc_shift_count_mode): New function.
8286         (TARGET_LIBGCC_CMP_RETURN_MODE): Define.
8287         (TARGET_LIBGCC_SHIFT_COUNT_MODE): Define.
8288
8289 2007-08-31  Joseph Myers  <joseph@codesourcery.com>
8290
8291         * tree-pretty-print.c: Include output.h.
8292         (dump_decl_name, dump_generic_node): Use %wd with pp_printf, not
8293         HOST_WIDE_INT_PRINT_DEC.
8294         * Makefile.in (tree-pretty-print.o): Add dependency on output.h.
8295
8296 2007-08-31  Zdenek Dvorak  <ook@ucw.cz>
8297
8298         PR rtl-optimization/33224
8299         * loop-iv.c (latch_dominating_def): Check that the definition belongs
8300         to the analysed region.
8301
8302 2007-08-31  Richard Guenther  <rguenther@suse.de>
8303
8304         * function.c (allocate_struct_function): Do not set
8305         current_function_returns_pointer.
8306         * function.h (struct var_refs_queue): Remove.
8307         (struct simple_obstack_stack): Likewise.
8308         (struct function): Remove fixup_var_refs_queue member.
8309         Remove returns_pointer flag.
8310         (current_function_returns_pointer): Remove define.
8311
8312 2007-08-31  Nick Clifton  <nickc@redhat.com>
8313
8314         * tree-ssa-coalesce.c (compare_pairs): Use the elements as
8315         secondary keys in order to obtain a stable sort.
8316
8317 2007-08-31  Nick Clifton  <nickc@redhat.com>
8318
8319         PR target/33132
8320         * config/m32r/constraints.md: Add W constraint for integer zero.
8321         * config/m32r/m32r.md (get_pc): Use W and i constraints.
8322         Fix length calculation by using alternatives.
8323
8324 2007-08-31  Richard Sandiford  <richard@codesourcery.com>
8325
8326         * optabs.c (shift_optab_p, commutative_optab_p): New functions,
8327         split out from expand_binop.
8328         (avoid_expensive_constant): New function.
8329         (expand_binop_directly): Remove commutative_op argument and
8330         (expand_binop_directly): Remove commutative_op argument and
8331         call cummutative_optab_p instead.  Do not change op0 or op1
8332         when swapping xop0 and xop1.  Apply avoid_expensive_constant
8333         to each argument after potential swapping.  Enforce the
8334         canonical order of commutative operands.
8335         (expand_binop): Use shift_optab_p and commutative_optab_p.
8336         Update the calls to expand_binop_directly.  Only force constants
8337         into registers when widening an operation.  Only swap operands
8338         once a direct expansion has been rejected.
8339         (expand_twoval_binop): Only force constants into registers when
8340         using a direct expansion.
8341
8342 2007-08-31  Maxim Kuvyrkov  <maxim@codesourcery.com>
8343
8344         * sched-deps.c (update_dep): Mark arguments with ATTRIBUTE_UNUSED.
8345         (sched_analyze_insn): Don't postprocess speculative dependencies when
8346         target has no scheduling.
8347         * tree-vect-transform.c (vect_estimate_min_profitable_iters): Fix
8348         'uninitialized' warning.
8349
8350 2007-08-31  Richard Guenther  <rguenther@suse.de>
8351
8352         * tree.c (build_complex_type): Always set TYPE_NAME for
8353         comples types.
8354
8355 2007-08-31  Olivier Hainque  <hainque@adacore.com>
8356
8357         * config/rs6000/xcoff.h (XCOFF_CSECT_DEFAULT_ALIGNMENT_STR): New
8358         internal macro. Default alignment factor for csect directives, chosen
8359         to match what BIGGEST_ALIGNMENT allows.
8360         (DATA_SECTION_ASM_OP): Use it.
8361         * config/rs6000/rs6000.c
8362         (rs6000_xcoff_output_readonly_section_asm_op):
8363         Use XCOFF_CSECT_DEFAULT_ALIGNMENT_STR.
8364         (rs6000_xcoff_output_readwrite_section_asm_op): Likewise.
8365         
8366 2007-08-31  Olivier Hainque  <hainque@adacore.com>
8367
8368         * dbxout.c (dbxout_block): Move declaration within the first
8369         #if defined (DBX_DEBUGGING_INFO) block.  Rearrange another such
8370         block to include the definition, together with the associated
8371         helpers.
8372
8373 2007-08-31  David Edelsohn  <edelsohn@gnu.org>
8374             Revital Eres  <eres@il.ibm.com>
8375
8376         * doc/invoke.texi (-mpaired): Document flag.
8377         * config.gcc: Include paired.h in powerpc extra_headers and
8378         750cl.h in powerpc-*-linux*paired*.
8379         * config/rs6000/rs6000.opt (-mpaired): New flag.
8380         * config/rs6000/rs6000.c (paired_init_builtins,
8381         paired_expand_builtin, paired_expand_lv_builtin,
8382         paired_expand_stv_builtin, paired_expand_predicate_builtin):
8383         New functions to support the paired single builtin functions.
8384         (rs6000_hard_regno_mode_ok): Handle PAIRED_VECTOR_MODE.
8385         (def_builtin, bdesc_3arg, bdesc_2arg, bdesc_1arg): Add paired
8386         single builtins.
8387         (bdesc_paired_preds): New structure for paired predicate
8388         instructions.
8389         (rs6000_expand_builtin): Expand paired single builtins.
8390         (rs6000_init_builtins): Init paired single builtins.
8391         (rs6000_common_init_builtins): Add v2sf_ftype_v2sf_v2sf_v2sf.
8392         Rename v2sf_ftype_v2sf_v2sf to v2sf_ftype_v2sf_v2sf_spe
8393         and v2sf_ftype_v2sf_spe to v2sf_ftype_v2sf.  Add new types
8394         v2sf_ftype_v2sf_v2sf and v2sf_ftype_v2sf.
8395         (rs6000_vector_mode_supported_p): Support paired vector mode.
8396         * config/rs6000/rs6000.h: (UNITS_PER_PAIRED_WORD,
8397         PAIRED_VECTOR_MODE, PAIRED_SIMD_REGNO_P, TARGET_PAIRED_FLOAT):
8398         New.
8399         (LOCAL_ALIGNMENT): Handle PAIRED_VECTOR_MODE.
8400         (DATA_ALIGNMENT): Likewise.
8401         (UNITS_PER_SIMD_WORD): Handle PAIRED_VECTOR_MODE.
8402         (rs6000_builtins): Add PAIRED builtins.
8403         * config/rs6000/rs6000.md: Include paired.md.
8404         * config/rs6000/paired.h: New.
8405         * config/rs6000/paired.md: New.
8406         * config/rs6000/750cl.h: New.
8407         * config/rs6000/spe.md: Recognize movv2sf instruction for 750cl.
8408
8409 2007-08-30  Ollie Wild  <aaw@google.com>
8410
8411         * c-opts.c (c_common_handle_option): Support -fno-directives-only.
8412         * gcc.c (default_compilers): Add -fno-directives-only to
8413         @assembler-with-cpp.
8414
8415 2007-08-30  Sandra Loosemore  <sandra@codesourcery.com>
8416
8417         PR middle-end/33211
8418
8419         * regclass.c (initial_fixed_regs): Revert previous change and make
8420         it const again.
8421         (initial_call_used_regs): Likewise.
8422         (initial_call_really_used_regs): Delete, reverting previous addition.
8423         (initial_reg_names): Likewise.
8424         (init_reg_sets): Revert previous change.
8425         (saved_fixed_regs): New.
8426         (saved_call_used_regs): New.
8427         (saved_call_really_used_regs): New.
8428         (saved_reg_names): New.
8429         (save_register_info): New.
8430         (restore_register_info): New.
8431         (init_reg_sets_1): Replace reset of register info with call to
8432         restore_register_info.
8433         * rtl.h (save_register_info): Declare.
8434         * toplev.c (backend_init): Call save_register_info.
8435
8436 2007-08-30  Laurynas Biveinis  <laurynas.biveinis@gmail.com>
8437
8438         * tree-ssa-propagate.c (set_rhs): Remove the copied annotation
8439         from the original statement.
8440
8441 2007-08-30  Chao-ying Fu  <fu@mips.com>
8442
8443         * c-lex.c (interpret_fixed): Declare.
8444         (interpret_float): Process _Fract and _Accum.
8445         (interpret_fixed): New function.
8446         * final.c (output_addr_const): Process CONST_FIXED.
8447         * simplify-rtx.c (simplify_const_unary_operation): Handle US_NEG.
8448         (simplify_binary_operation_1): Handle US_ASHIFT, SS_MULT, US_MULT,
8449         SS_DIV, US_DIV.
8450         (simplify_const_binary_operation): Handle SS_MULT, US_MULT, SS_DIV,
8451         US_DIV, US_ASHIFT.
8452         (simplify_immed_subreg): Support CONST_FIXED.
8453         Process MODE_FRACT, MODE_UFRACT, MODE_ACCUM, MODE_UACCUM.
8454         (simplify_subreg): Support CONST_FIXED.
8455
8456 2007-08-30  Andrew Pinski  <andrew_pinski@playstation.sony.com>
8457
8458         * config/rs6000/ppu_intrinsics.h: New file.
8459         * config.gcc (powerpc*-*-* <extra_headers>): Install
8460         ppu_intrinsics.h.
8461
8462 2007-08-30  Kenneth Zadeck <zadeck@naturalbridge.com>
8463
8464         * cfg.c (dump_flow_info): Change to also print entry and exit
8465         block info.
8466         * print-rtl.c (print_rtl_single): Allow to print rtl with
8467         -fdump-unnumbered.
8468         
8469 2007-08-30  Kenneth Zadeck <zadeck@naturalbridge.com>
8470
8471         * df-core.h (df_dump_region): New function.
8472         * df.h (df_dump_region): New function.
8473         * loop-invariant.c (find_defs): Add call to df_dump_region.
8474         * loop-iv.c (iv_analysis_loop_init): Changed call from df_dump to
8475         df_dump_region.
8476         
8477 2007-08-30  Jakub Jelinek  <jakub@redhat.com>
8478
8479         PR target/33168
8480         * config/rs6000/rs6000.c (rs6000_elf_in_small_data_p): Return
8481         true if any of the compare_section_name calls returned true,
8482         rather than if any returned false.
8483
8484 2007-08-30  Richard Guenther  <rguenther@suse.de>
8485
8486         PR tree-optimization/33199
8487         * tree-ssa-structalias.c (handle_lhs_call): New function.
8488         (find_func_aliases): In non-IPA mode make sure that for
8489         calls that return a pointer we add a constraint for the
8490         result to point to anything.
8491
8492 2007-08-30  Richard Guenther  <rguenther@suse.de>
8493
8494         * doc/invoke.texi (-mveclibabi): Document new target option.
8495         * config/i386/i386.opt (-mveclibabi): New target option.
8496         * config/i386/i386.c (ix86_veclib_handler): Handler for
8497         vectorization library support.
8498         (override_options): Handle the -mveclibabi option, initialize
8499         the vectorization library handler.
8500         (ix86_builtin_vectorized_function): As fallback call the
8501         vectorization library handler, if set.
8502         (ix86_veclibabi_acml): New static function for ACML ABI style
8503         vectorization support.
8504
8505 2007-08-30  Jakub Jelinek  <jakub@redhat.com>
8506
8507         * config/rs6000/rs6000.c (rs6000_emit_sync): For QI or HI mode
8508         used_m, even if it is 32-bit aligned, adjust used_m MEM to have
8509         SImode and update m.  Don't run gen_lowpart_common on arbitrary
8510         memory address, force it to register first.
8511
8512         PR middle-end/32758
8513         * dce.c (dce_process_block): Don't delete setters of
8514         artificially used registers.
8515
8516 2007-08-30  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
8517
8518         * config/s390/s390.md ("*add<mode>3_alc_carry1_cc",
8519         "*add<mode>3_alc_carry1_cconly", "*add<mode>3_alc_carry2_cc",
8520         "*add<mode>3_alc_carry2_cconly"): New insn definitions.
8521
8522 2007-08-30  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
8523
8524         * config/s390/s390.c (s390_expand_addcc): Emit canonical alc
8525         pattern.
8526         * config/s390/s390.md ("*add<mode>3_alc_cc", "*add<mode>3_alc",
8527         "addti3", "*adddi3_31z", "*scond<mode>"): Make alc pattern canonical.
8528
8529 2007-08-29  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
8530
8531         * system.h: Activate -Wcast-qual as warning-only.
8532
8533 2007-08-29  Paolo Bonzini  <bonzini@gnu.org>
8534
8535         PR target/33168
8536         * config/rs6000/rs6000.c (compare_section_name): New function.
8537         (rs6000_elf_in_small_data_p): Compare section prefixes instead
8538         of full name.
8539
8540 2007-08-29  Olivier Hainque  <hainque@adacore.com>
8541
8542         * xcoffout.c: #include debug.h.
8543         * Makefile.in (xcoffout.o): Add debug.h dependency.
8544
8545 2007-08-29  Uros Bizjak  <ubizjak@gmail.com>
8546
8547         * simplify-rtx.c (simplify_binary_operation_1) [VEC_SELECT]:
8548         Change CONST_VECTOR_ELT to XVECEXP in elem calculation.
8549
8550 2007-08-29  Richard Guenther  <rguenther@suse.de>
8551
8552         * tree-pretty-print.c (dump_generic_node): Print
8553         label DECL_UID as D.%u.
8554         * tree-dfa.c (dump_variable): Print DECL_UID as D.%u.
8555
8556 2007-08-29  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
8557
8558         * builtin-types.def (BT_FN_PTR_PTR_SIZE): New type.
8559         * builtins.def (BUILT_IN_REALLOC): New builtin.
8560
8561 2007-08-29  Douglas Gregor  <doug.gregor@gmail.com>
8562
8563         PR c++/33194
8564         * tree.c (build_type_attribute_qual_variant): Set canonical types
8565         on the final, unqualified attribute variant before building the
8566         qualified version.
8567
8568 2007-08-29  Jie Zhang  <jie.zhang@analog.com>
8569
8570         * config/bfin/bfin.c (bfin_expand_builtin): Fix the argument
8571         order of __builtin_bfin_cmplx_mac and __builtin_bfin_cmplx_msu.
8572
8573 2007-08-29  Jie Zhang  <jie.zhang@analog.com>
8574
8575         Revert
8576         2007-08-29  Jie Zhang  <jie.zhang@analog.com>
8577         * config/bfin/bfin.md (composev2hi): Put operands into vector
8578         with correct order.
8579
8580 2007-08-29  Jie Zhang  <jie.zhang@analog.com>
8581
8582         * config/bfin/bfin.md (composev2hi): Put operands into vector
8583         with correct order.
8584
8585 2007-08-29  Jie Zhang  <jie.zhang@analog.com>
8586
8587         * config/bfin/bfin.c (bfin_expand_call): Inline PLT with l1_text
8588         attribute when appropriate.
8589         (bfin_handle_l1_text_attribute): New.
8590         (bfin_handle_l1_data_attribute): New.
8591         (bfin_attribute_table): Add attributes: l1_text, l1_data,
8592         l1_data_A and l1_data_B.
8593         * doc/extend.texi (node Function Attributes): Document l1_text
8594         function attribute.
8595         (Variable Attributes): Add Blackfin subsection. Document l1_data,
8596         l1_data_A and l1_data_B variable attributes.
8597
8598 2007-08-28  Jie Zhang  <jie.zhang@analog.com>
8599
8600         * config/bfin/bfin.opt (minline-plt): Add.
8601         * config/bfin/bfin.c (bfin_expand_call): Inline PLT when emit
8602         call to global functions.
8603         * doc/invoke.texi (Option Summary): Mention -minline-plt.
8604         (Blackfin Options): Document -minline-plt.
8605
8606 2007-08-28  Nathan Sidwell  <nathan@codesourcery.com>
8607
8608         * config/m68k/m68k.c (m68k_get_function_kind): Assert we're never
8609         given a non-function.
8610         (m68k_ok_for_sibcall_p): Only sibcall functions of the same kind.
8611
8612 2007-08-28  DJ Delorie  <dj@redhat.com>
8613
8614         * config/sh/sh.c (sh_gimplify_va_arg_expr): Fix sh2a support.
8615
8616 2007-08-28  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
8617
8618         * system.h (CONST_CAST): Avoid union for gcc-4.0.x.
8619
8620 2007-08-28  Richard Guenther  <rguenther@suse.de>
8621
8622         * tree.h (struct tree_function_decl): Increase size of
8623         function_code bitfield.
8624
8625 2007-08-28  Nathan Sidwell  <nathan@codesourcery.com>
8626             Kazu Hirata  <kazu@codesourcery.com>
8627
8628         * config/m68k/linux.h
8629         (M68K_HONOR_TARGET_STRICT_ALIGNMENT): Redefine as 0.
8630         * config/m68k/m68k.c (TARGET_RETURN_IN_MEMORY): New.
8631         (m68k_return_in_memory): New.
8632         * config/m68k/m68k.h (M68K_HONOR_TARGET_STRICT_ALIGNMENT):
8633         New.
8634
8635 2007-08-28  Uros Bizjak  <ubizjak@gmail.com>
8636
8637         PR target/32661
8638         * simplify-rtx.c (simplify_binary_operation_1) [VEC_SELECT]:
8639         Simplify nested VEC_SELECT (with optional VEC_CONCAT operator as
8640         operand) when top VEC_SELECT extracts scalar element.
8641         * config/i386/sse.md (*vec_extract_v4si_mem): New pattern.
8642         (*vec_extract_v4sf_mem): Ditto.
8643
8644 2007-08-28  Jakub Jelinek  <jakub@redhat.com>
8645
8646         PR middle-end/32370
8647         * passes.c (init_optimization_passes): Move pass_df_finish
8648         after pass_postreload sublist.
8649
8650         PR rtl-optimization/33148
8651         * simplify-rtx.c (simplify_unary_operation_1): Only optimize
8652         (neg (lt X 0)) if X has scalar int mode.
8653
8654         PR debug/32914
8655         * dwarf2out.c (rtl_for_decl_init): If vector decl has CONSTRUCTOR
8656         initializer, use build_vector_from_ctor if possible to create
8657         VECTOR_CST out of it.  If vector initializer is not VECTOR_CST
8658         even after this, return NULL.
8659
8660 2007-08-28  Gabriel Dos Reis  <gdr@integrable-solutions.net>
8661
8662         * c-pretty-print.c (pp_c_constant): Handle COMPLEX_CST.
8663
8664 2007-08-28  Richard Guenther  <rguenther@suse.de>
8665
8666         * tree.h (DECL_DISREGARD_INLINE_LIMITS): New.
8667         (struct tree_function_decl): Make function_code a bitfield.
8668         Add disregard_inline_limits flag.
8669         * cgraphunit.c (cgraph_process_new_functions): Check
8670         DECL_DISREGARD_INLINE_LIMITS instead of disregard_inline_limits_p.
8671         (cgraph_preserve_function_body_p): Likewise.
8672         * ipa-inline.c (compute_inline_parameters): Likewise.
8673         * c-decl.c (finish_function): Set DECL_DISREGARD_INLINE_LIMITS
8674         for GNU C extern inline functions.
8675         (merge_decls): Merge DECL_DISREGARD_INLINE_LIMITS.
8676         * tree-inline.c (disregard_inline_limits_p): Remove.
8677         * tree-inline.h (disregard_inline_limits_p): Likewise.
8678         * c-common.c (handle_always_inline_attribute): Set
8679         DECL_DISREGARD_INLINE_LIMITS.
8680         * langhooks.c (add_builtin_function): Verify the function code
8681         fits in the bitfield.
8682
8683 2007-08-28  Mircea Namolaru  <namolaru@il.ibm.com>
8684             Vladimir Yanovsky  <yanov@il.ibm.com>
8685             Revital Eres  <eres@il.ibm.com>
8686             Andrey Belevantsev  <abel@ispras.ru>
8687
8688         * config/spu/spu.md: Recognize doloop pattern when -fmodulo-sched
8689         is set.
8690         * modulo-sched.c: Add documentation regarding do-loop.
8691         (doloop_register_get): Change number of arguments to support
8692         the new do-loop pattern and check whether COUNT_REG has no other
8693         occurences in the loop besides in the control part.
8694         (duplicate_insns_of_cycles): Do not duplicate the insn which
8695         changes count_reg as it is already adjusted.
8696         (generate_prolog_epilog): New argument to support the new
8697         do-loop pattern.  Change the subtract instruction to use
8698         expand_simple_binop.  Call duplicate_insns_of_cycles with new
8699         argument.
8700         (sms_schedule): Call doloop_register_get and
8701         generate_prolog_epilog with new argument.  Do not handle loops
8702         with single sets insns with subreg in their lhs.
8703         * loop-doloop.c (doloop_optimize): Support for another do-loop
8704         pattern.
8705         (doloop_condition_get): Gets an instruction instead of a pattern
8706         and change the return condition when the do-loop pattern is
8707         not parallel.
8708         * ddg.c (create_ddg_dep_from_intra_loop_link): Handle only reg
8709         deps when considering to not create edges.
8710
8711 2007-08-27  Alexandre Oliva  <aoliva@redhat.com>
8712
8713         * doc/extend.texi (gnu_inline funtion attribute): Document C++
8714         behavior.
8715
8716 2007-08-27  Jason Merrill  <jason@redhat.com>
8717
8718         PR c++/31337
8719         * gimplify.c (gimplify_modify_expr): Discard the assignment of 
8720         zero-sized types after calling gimplify_modify_expr_rhs.
8721
8722 2007-08-27  Sandra Loosemore  <sandra@codesourcery.com>
8723
8724         * regclass.c (init_reg_autoinc): Fix typo.
8725
8726 2007-08-27  Daniel Berlin  <dberlin@dberlin.org>
8727         
8728         Fix PR tree-optimization/33173
8729         * tree-ssa-alias.c (find_used_portions): Fix reversed test.
8730
8731 2007-08-27  H.J. Lu  <hongjiu.lu@intel.com>
8732
8733         PR target/31385
8734         * config/i386/i386.h (VALID_DFP_MODE_P): New.
8735         * config/i386/i386.c (ix86_hard_regno_mode_ok): Allow DFP in
8736         GPR.
8737
8738 2007-08-27  Sandra Loosemore  <sandra@codesourcery.com>
8739             David Ung  <davidu@mips.com>
8740             Nigel Stephens <nigel@mips.com>
8741
8742         Separate target-specific initialization from general
8743         back-end initialization.
8744
8745         * toplev.c (init_alignments): New, split out from...
8746         (process_options): ...here.
8747         (backend_init_target): New, split out from...
8748         (backend_init): ...here.
8749         (lang_dependent_init_target): New, split out from...
8750         (lang_dependent_init): ...here.
8751         (target_reinit): New.
8752         * toplev.h (target_reinit): Declare.
8753         * expr.c (init_expr_target): Renamed from init_expr_once, since it
8754         now can be called more than once.  Update comments.
8755         * expr.h (init_expr_target): Likewise.
8756         * alias.c (init_alias_target): Renamed from init_alias_once, since it
8757         now can be called more than once.  Explicitly zero
8758         static_reg_base_value.
8759         * emit-rtl.c (init_emit_regs): New, split out from...
8760         (init_emit_once): Here.
8761         * regclass.c (initial_fixed_regs, initial_call_used_regs): Make
8762         non-const, so that changes from command-line arguments can overwrite
8763         values provided by the static initializers.
8764         (initial_call_really_used_regs): New, used similarly to the above.
8765         (initial_reg_names): Likewise.
8766         (last_mode_for_init_move_cost): Promoted function-local static to
8767         file-scope static to make it accessible outside init_move_cost.
8768         (init_reg_sets): Do not initialize fixed_regs and call_used_regs yet.
8769         Do not initialize inv_reg_alloc_order yet, either.  Do initialize
8770         reg_names since it is needed for parsing command-line options.
8771         (init_move_cost): Use last_mode_for_init_move_cost instead of
8772         function-local static.
8773         (init_reg_sets_1): Initialize fixed_regs, call_used_regs, and
8774         call_really_used_regs now.  Reinitialize reg_names.  Also
8775         initialize inv_reg_alloc_order.  Zero reg_class_subunion and
8776         reg_class_superunion.  Clear losing_caller_save_reg_set.
8777         Preserve global registers if called more than once.  Reset
8778         move cost, may_move_in_cost, may_move_out_cost, and
8779         last_mode_for_init_move_cost.
8780         (init_reg_modes_target): Renamed from init_reg_modes_once, since it
8781         can now be invoked more than once.  Update comments.
8782         (init_regs): Update comments.
8783         (fix_register): Update initial_fixed_regs, initial_call_used_regs,
8784         and initial_call_really_used_regs, instead of the non-initial 
8785         variables.  This allows us to save the command-line register settings
8786         after target reinitialization.
8787         (init_reg_autoinc): Zero forbidden_inc_dec_classes.
8788         * rtl.h (init_emit_regs): Declare.
8789         (init_reg_modes_target, init_alias_target): Renamed as described
8790         above.
8791         * reload1.c (init_reload): Update comments.
8792         * optabs.c (init_optabs): Likewise.
8793         * cfgloopanal.c (init_set_costs): Explicitly zero target_avail_regs.
8794         
8795 2007-08-26  Chao-ying Fu  <fu@mips.com>
8796
8797         * rtl.h (XCNMPFV): Preserve const-ness of parameters through use of
8798         __typeof().
8799
8800 2007-08-26  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
8801
8802         * alias.c (memory_modified_1, memory_modified_in_insn_p):
8803         Constify.
8804         * basic-block.h (tree_predicted_by_p, rtl_predicted_by_p):
8805         Likewise.
8806         * bb-reorder.c (copy_bb_p): Likewise.
8807         * cfghooks.c (can_remove_branch_p, can_merge_blocks_p,
8808         predicted_by_p, can_duplicate_block_p, block_ends_with_call_p,
8809         block_ends_with_condjump_p): Likewise.
8810         * cfghooks.h (can_remove_branch_p, can_merge_blocks_p,
8811         predicted_by_p, can_duplicate_block_p, block_ends_with_call_p,
8812         block_ends_with_condjump_p): Likewise.
8813         * cfglayout.c (cfg_layout_can_duplicate_bb_p): Likewise.
8814         * cfgrtl.c (can_delete_note_p, can_delete_label_p,
8815         rtl_can_merge_blocks, cfg_layout_can_merge_blocks_p,
8816         rtl_block_ends_with_call_p, rtl_block_ends_with_condjump_p,
8817         need_fake_edge_p, rtl_can_remove_branch_p): Likewise.
8818         * dbxout.c (dbx_debug_hooks, xcoff_debug_hooks): Use
8819         debug_true_const_tree instad of debug_true_tree.
8820         * debug.c (do_nothing_debug_hooks): Likewise.
8821         * debug.h (ignore_block, debug_true_const_tree): Constify.
8822         * dwarf2out.c (stack_adjust_offset, clobbers_queued_reg_save,
8823         dwarf2out_ignore_block, is_pseudo_reg, is_tagged_type,
8824         decl_ultimate_origin, block_ultimate_origin, lookup_decl_loc,
8825         same_dw_val_p, add_ranges, is_subrange_type, type_is_enum,
8826         dbx_reg_number, is_based_loc, field_type,
8827         simple_type_align_in_bits, simple_decl_align_in_bits,
8828         simple_type_size_in_bits, field_byte_offset, insert_float,
8829         type_tag, member_declared_type, is_redundant_typedef,
8830         secname_for_decl, is_inlined_entry_point): Likewise.
8831         * emit-rtl.c (const_next_insn, const_previous_insn,
8832         const_next_nonnote_insn, const_prev_nonnote_insn,
8833         const_next_real_insn, const_prev_real_insn,
8834         const_next_active_insn, const_prev_active_insn, const_next_label,
8835         const_prev_label): Likewise.
8836         * except.h (lookup_stmt_eh_region_fn, lookup_stmt_eh_region):
8837         Likewise.
8838         * haifa-sched.c (may_trap_exp, haifa_classify_insn,
8839         find_set_reg_weight, no_real_insns_p, find_set_reg_weight,
8840         sched_insn_is_legitimate_for_speculation_p): Likewise.
8841         * jump.c (reversed_comparison_code_parts,
8842         reversed_comparison_code, reversed_comparison, condjump_label):
8843         Likewise.
8844         * predict.c (rtl_predicted_by_p, tree_predicted_by_p): Likewise.
8845         * reg-stack.c (stack_regs_mentioned_p, stack_regs_mentioned):
8846         Likewise.
8847         * rtl.h (const_previous_insn, const_next_insn,
8848         const_prev_nonnote_insn, const_next_nonnote_insn,
8849         const_prev_real_insn, const_next_real_insn,
8850         const_prev_active_insn, const_next_active_insn, const_prev_label,
8851         const_next_label, modified_between_p, modified_in_p,
8852         const_note_storeskeep_with_call_p, condjump_label,
8853         reversed_comparison, reversed_comparison_code,
8854         reversed_comparison_code_parts, memory_modified_in_insn_p,
8855         stack_regs_mentioned): Likewise.
8856         * rtlanal.c (modified_between_p, modified_in_p, const_note_stores,
8857         keep_with_call_p): Likewise.
8858         * sched-deps.c (deps_may_trap_p, sched_get_condition,
8859         conditions_mutex_p, sched_insns_conditions_mutex_psd_next_list,
8860         sd_lists_size, sd_lists_empty_p): Likewise.
8861         * sched-int.h (sched_insns_conditions_mutex_p,
8862         haifa_classify_insn, no_real_insns_p,
8863         sched_insn_is_legitimate_for_speculation_p, sd_next_list,
8864         sd_lists_size, sd_lists_empty_p): Likewise.
8865         * sdbout.c (sdb_debug_hooks): Likewise.
8866         * tree-cfg.c (tree_can_merge_blocks_p, is_ctrl_altering_stmt,
8867         stmt_ends_bb_p, tree_can_remove_branch_p, tree_can_duplicate_bb_p,
8868         -tree_block_ends_with_call_p, tree_block_ends_with_condjump_p):
8869         Likewise.
8870         * tree-eh.c (lookup_stmt_eh_region_fn, lookup_stmt_eh_region,
8871         tree_can_throw_internal): Likewise.
8872         * tree-flow-inline.h (phi_nodes): Likewise.
8873         * tree-flow.h (phi_nodesstmt_ends_bb_p, is_ctrl_altering_stmt,
8874         tree_can_throw_internal, lookup_stmt_eh_region): Likewise.
8875         * tree-gimple.c (const_get_call_expr_in): Likewise.
8876         * tree-gimple.h (const_get_call_expr_in): Likewise.
8877         * tree.c (const_lookup_attribute, attribute_list_equal,
8878         attribute_list_contained): Likewise.
8879         * tree.h (attribute_list_equal, attribute_list_contained,
8880         const_lookup_attribute): Likewise.
8881         * vmsdbgout.c (vmsdbgout_ignore_block): Likewise.
8882
8883 2007-08-26  Bernhard Fischer  <aldot@gcc.gnu.org>
8884
8885         * tree-ssa-sccvn.c, tree-ssa-sccvn.h, tree-vn.c,
8886         tree-ssa-pre.c: Remove unnecessary trailing whitespace.
8887
8888 2007-08-26  H.J. Lu  <hongjiu.lu@intel.com>
8889
8890         PR target/32991
8891         * config/alpha/constraints.md: Delete "svn:mime-type" property
8892         with svn propdel "svn:mime-type".
8893
8894 2007-08-26  H.J. Lu  <hongjiu.lu@intel.com>
8895
8896         PR middle-end/33181
8897         * ifcvt.c (noce_get_alt_condition): Make sure that the previous
8898         non NOTE insn doesn't cross basic block.
8899         (noce_try_abs): Likewise.
8900         (noce_process_if_block): Likewise.
8901
8902 2007-08-26  David Edelsohn  <edelsohn@gnu.org>
8903
8904         PR target/33151
8905         * config/rs6000/predicates.md (offsettable_mem_operand): Memory
8906         operand without auto-inc-dec.
8907         * config/rs6000/rs6000.md (floatsidf2_internal): Use
8908         offsettable_mem_operand.
8909         (floatunssidf2_internal): Same.
8910         (fix_truncdfsi2_internal): Same.
8911         (floatsidf_ppc64): Same.
8912         (floatunssidf_ppc64): Same.
8913         (fix_trunctfsi2_internal): Same.
8914
8915 2007-08-26  Bernhard Fischer  <aldot@gcc.gnu.org>
8916
8917         PR bootstrap/30620
8918         * Makefile.in (libbackend.o): Add gcov-iov.h dependency and
8919         pass defines needed for version.c.
8920
8921 2007-08-25  Joseph Myers  <joseph@codesourcery.com>
8922
8923         * configure.ac (--debug-prefix-map check): Change assembler
8924         version presumed to have feature to 2.18.
8925         * configure: Regenerate.
8926
8927 2007-08-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
8928
8929         * c-common.c (vector_types_convertible_p,
8930         decl_with_nonnull_addr_p, c_promoting_integer_type_p,
8931         self_promoting_args_p): Constify.
8932         * c-common.h (has_c_linkage, decl_with_nonnull_addr_p,
8933         c_promoting_integer_type_p, self_promoting_args_p,
8934         anon_aggr_type_p, vector_types_convertible_p): Likewise.
8935         * c-decl.c (anon_aggr_type_p): Likewise.
8936         * * c-dump.c (dump_stmt): Likewise.
8937         * c-objc-common.c (has_c_linkage): Likewise.
8938         * c-tree.h (same_translation_unit_p): Likewise.
8939         * c-typeck.c (null_pointer_constant_p,
8940         tagged_types_tu_compatible_p, function_types_compatible_p,
8941         type_lists_compatible_p, lvalue_or_else, lvalue_p,
8942         comptypes_internal, struct tagged_tu_seen_cache,
8943         same_translation_unit_p, alloc_tagged_tu_seen_cache,
8944         c_size_in_bytes): Likewise.
8945         * ggc-common.c (compare_ptr_data, hash_descriptor, eq_descriptor,
8946         hash_ptr, eq_ptr): Likewise.
8947         * langhooks-def.h (lhd_decl_ok_for_sibcall,
8948         LANG_HOOKS_OMP_PRIVATIZE_BY_REFERENCE): Likewise.
8949         * langhooks.c (lhd_decl_ok_for_sibcall): Likewise.
8950         * langhooks.h (ok_for_sibcall, omp_privatize_by_reference):
8951         Likewise.
8952         * optabs.c (optab_for_tree_code): Likewise.
8953         * optabs.h (optab_for_tree_code): Likewise.
8954         * rtl.h (simplify_rtx): Likewise.
8955         * simplify-rtx.c (simplify_rtx): Likewise.
8956         * tree-dump.c (queue, queue_and_dump_index, queue_and_dump_type,
8957         dump_flag, dump_node): Likewise.
8958         * tree-dump.h (struct dump_info, dump_stmt, queue_and_dump_index,
8959         queue_and_dump_type, dump_flag): Likewise.
8960         * tree-flow.h (vect_can_force_dr_alignment_p): Likewise.
8961         * tree-pass.h (dump_node): Likewise.
8962         * tree-vectorizer.c (vect_can_force_dr_alignment_p,
8963         supportable_narrowing_operation): Likewise.
8964         * tree-vectorizer.h (vect_can_force_dr_alignment_p,
8965         supportable_narrowing_operation): Likewise.
8966         * tree-vrp.c (needs_overflow_infinity, supports_overflow_infinity,
8967         is_negative_overflow_infinity, is_positive_overflow_infinity,
8968         is_overflow_infinity, vrp_val_is_max, vrp_val_is_min,
8969         nonnull_arg_p, get_value_range, vrp_operand_equal_p,
8970         update_value_range, add_equivalence, ssa_name_nonnegative_p,
8971         ssa_name_nonzero_p, fp_predicate): Likewise.
8972         * tree.c (auto_var_in_fn_p, empty_body_p): Likewise.
8973         * tree.h (empty_body_p, auto_var_in_fn_p, ssa_name_nonzero_p,
8974         ssa_name_nonnegative_p): Likewise.
8975
8976 2007-08-25  Hans Kester  <hans.kester@ellips.nl>
8977
8978         * config.gcc : Add x86_64-elf target.
8979
8980 2007-08-25  Jakub Jelinek  <jakub@redhat.com>
8981
8982         * expr.c (store_expr): Fix order of store_by_pieces arguments.
8983
8984 2007-08-24  Sandra Loosemore  <sandra@codesourcery.com>
8985             Nigel Stephens <nigel@mips.com>
8986
8987         PR target/11787
8988
8989         * doc/tm.texi (SET_RATIO, SET_BY_PIECES_P): Document new macros.
8990         (STORE_BY_PIECES_P): No longer applies to __builtin_memset.
8991         * expr.c (SET_BY_PIECES_P): Define.
8992         (can_store_by_pieces, store_by_pieces): Add MEMSETP argument; use
8993         it to decide whether to use SET_BY_PIECES_P or STORE_BY_PIECES_P.
8994         (store_expr): Pass MEMSETP argument to can_store_by_pieces and
8995         store_by_pieces.
8996         * expr.h (SET_RATIO): Define.
8997         (can_store_by_pieces, store_by_pieces): Update prototypes.
8998         * builtins.c (expand_builtin_memcpy): Pass MEMSETP argument to
8999         can_store_by_pieces/store_by_pieces.
9000         (expand_builtin_memcpy_args): Likewise.
9001         (expand_builtin_strncpy): Likewise.
9002         (expand_builtin_memset_args): Likewise.  Also remove special case
9003         for optimize_size so that can_store_by_pieces/SET_BY_PIECES_P can
9004         decide what to do instead.
9005         * value-prof.c (tree_stringops_transform): Pass MEMSETP argument
9006         to can_store_by_pieces.
9007
9008         * config/sh/sh.h (SET_BY_PIECES_P): Clone from STORE_BY_PIECES_P.
9009         * config/s390/s390.h (SET_BY_PIECES_P): Likewise.
9010
9011         * config/mips/mips.opt (mmemcpy): Change from Var to Mask.
9012         * config/mips/mips.c (override_options): Make -Os default to -mmemcpy.
9013         * config/mips/mips.h (MIPS_CALL_RATIO): Define.
9014         (MOVE_RATIO, CLEAR_RATIO, SET_RATIO): Define.
9015         (STORE_BY_PIECES_P): Define.
9016
9017 2007-08-24  Tom Tromey  <tromey@redhat.com>
9018
9019         * varpool.c (varpool_last_needed_node): Fix comment typo.
9020         * c-decl.c (duplicate_decls): Fix comment typo.
9021         (clone_underlying_type): Update comment.
9022
9023 2007-08-24  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
9024
9025         * config/alpha/alpha.c (alpha_mangle_type, decl_has_samegp,
9026         alpha_in_small_data_p, alpha_split_complex_arg,
9027         alpha_stdarg_optimize_hook, TARGET_ASM_CAN_OUTPUT_MI_THUNK):
9028         Constify.
9029         * config/arm/arm-protos.h (arm_mangle_type): Likewise.
9030         * config/arm/arm.c (arm_comp_type_attributes, arm_mangle_type):
9031         Likewise.
9032         * config/bfin/bfin.c (funkind, bfin_comp_type_attributes,
9033         TARGET_ASM_CAN_OUTPUT_MI_THUNK): Likewise.
9034         * config/darwin-protos.h (darwin_binds_local_p): Likewise.
9035         * config/darwin.c (darwin_binds_local_p): Likewise.
9036         * config/frv/frv.c (frv_string_begins_with, frv_in_small_data_p):
9037         Likewise.
9038         * config/i386/i386-protos.h (i386_pe_binds_local_p,
9039         i386_pe_valid_dllimport_attribute_p): Likewise.
9040         * config/i386/i386.c (ix86_function_regparm,
9041         ix86_comp_type_attributes, ix86_ms_bitfield_layout_p,
9042         x86_can_output_mi_thunk, ix86_mangle_type,
9043         TARGET_USE_BLOCKS_FOR_CONSTANT_P): Likewise.
9044         * config/i386/winnt.c (i386_pe_valid_dllimport_attribute_p,
9045         i386_pe_binds_local_p): Likewise.
9046         * config/ia64/ia64.c
9047         (ia64_first_cycle_multipass_dfa_lookahead_guard_spec,
9048         ia64_needs_block_p, ia64_in_small_data_p, ia64_mangle_type,
9049         ia64_invalid_conversion, ia64_invalid_unary_op,
9050         ia64_invalid_binary_op, TARGET_ASM_CAN_OUTPUT_MI_THUNK):
9051         Likewise.
9052         * config/m32c/m32c.c (m32c_comp_type_attributes): Likewise.
9053         * config/m32r/m32r.c (m32r_in_small_data_p): Likewise.
9054         * config/m68k/m68k.c (TARGET_ASM_CAN_OUTPUT_MI_THUNK): Likewise.
9055         * config/mips/mips.c (mips_use_blocks_for_constant_p,
9056         mips_in_small_data_p, mips_use_anchors_for_symbol_p,
9057         mips_comp_type_attributes, TARGET_ASM_CAN_OUTPUT_MI_THUNK,
9058         mips_near_type_p, mips_far_type_p, mips_global_symbol_p,
9059         mips_symbol_binds_local_p, mips_classify_symbol): Likewise.
9060         * config/pa/pa.c (pa_commutative_p): Likewise.
9061         * config/rs6000/rs6000-protos.h (rs6000_elf_in_small_data_p):
9062         Likewise.
9063         * config/rs6000/rs6000.c (rs6000_invalid_within_doloop,
9064         rs6000_ms_bitfield_layout_p, rs6000_mangle_type,
9065         rs6000_use_blocks_for_constant_p,
9066         rs6000_vector_alignment_reachable, rs6000_is_opaque_type,
9067         invalid_arg_for_unprototyped_fn, TARGET_ASM_CAN_OUTPUT_MI_THUNK,
9068         TARGET_SPLIT_COMPLEX_ARG, rs6000_elf_in_small_data_p): Likewise.
9069         * config/s390/s390.c (s390_mangle_type,
9070         TARGET_ASM_CAN_OUTPUT_MI_THUNK, TARGET_INVALID_WITHIN_DOLOOP):
9071         Likewise.
9072         * config/score/score.c (TARGET_ASM_CAN_OUTPUT_MI_THUNK,
9073         th_in_small_data_p): Likewise.
9074         * config/sh/sh.c (sh_ms_bitfield_layout_p,
9075         sh_dwarf_calling_convention, TARGET_ASM_CAN_OUTPUT_MI_THUNK):
9076         Likewise.
9077         * config/sparc/sparc.c (sparc_can_output_mi_thunk,
9078         sparc_mangle_type): Likewise.
9079         * config/spu/spu.c (spu_vector_alignment_reachable): Likewise.
9080         * config/xtensa/xtensa.c (TARGET_SPLIT_COMPLEX_ARG): Likewise.
9081         * emit-rtl.c (const_fixed_htab_hash, const_fixed_htab_eq):
9082         Likewise.
9083         * hooks.c (hook_bool_mode_const_rtx_false,
9084         hook_bool_mode_const_rtx_true,
9085         hook_bool_const_tree_hwi_hwi_const_tree_false,
9086         hook_bool_const_tree_hwi_hwi_const_tree_true,
9087         hook_int_const_tree_0, hook_int_const_tree_const_tree_1,
9088         hook_constcharptr_const_tree_null,
9089         hook_constcharptr_const_rtx_null,
9090         hook_constcharptr_const_tree_const_tree_null,
9091         hook_constcharptr_int_const_tree_null,
9092         hook_constcharptr_int_const_tree_const_tree_null): New.
9093         (hook_bool_mode_rtx_false, hook_bool_mode_rtx_true,
9094         hook_bool_tree_hwi_hwi_tree_false,
9095         hook_bool_tree_hwi_hwi_tree_true, hook_int_tree_0,
9096         hook_int_tree_tree_1, hook_constcharptr_tree_null,
9097         hook_constcharptr_rtx_null, hook_constcharptr_tree_tree_null,
9098         hook_constcharptr_int_tree_null,
9099         hook_constcharptr_int_tree_tree_null): Delete.
9100         (default_can_output_mi_thunk_no_vcall): Constify.
9101         * hooks.h (hook_bool_mode_rtx_false, hook_bool_mode_rtx_true,
9102         hook_bool_tree_hwi_hwi_tree_false,
9103         hook_bool_tree_hwi_hwi_tree_true, hook_int_tree_0,
9104         hook_int_tree_tree_1, hook_constcharptr_tree_null,
9105         hook_constcharptr_rtx_null, hook_constcharptr_tree_tree_null,
9106         hook_constcharptr_int_tree_null,
9107         hook_constcharptr_int_tree_tree_null): Delete.
9108         (hook_bool_mode_const_rtx_false, hook_bool_mode_const_rtx_true,
9109         hook_bool_const_tree_hwi_hwi_const_tree_false,
9110         hook_bool_const_tree_hwi_hwi_const_tree_true,
9111         hook_int_const_tree_0, hook_int_const_tree_const_tree_1,
9112         hook_constcharptr_const_tree_null,
9113         hook_constcharptr_const_rtx_null,
9114         hook_constcharptr_const_tree_const_tree_null,
9115         hook_constcharptr_int_const_tree_null,
9116         hook_constcharptr_int_const_tree_const_tree_null): New.
9117         (default_can_output_mi_thunk_no_vcall): Constify.
9118         * integrate.c (function_attribute_inlinable_p): Likewise.
9119         * integrate.h (function_attribute_inlinable_p): Likewise.
9120         * jump.c (rtx_renumbered_equal_p): Likewise.
9121         * output.h (decl_readonly_section, categorize_decl_for_section,
9122         default_use_anchors_for_symbol_p, default_binds_local_p,
9123         default_binds_local_p_1): Likewise.
9124         * rtl.h (rtx_renumbered_equal_p, decl_default_tls_model):
9125         Likewise.
9126         * target-def.h (TARGET_ASM_CAN_OUTPUT_MI_THUNK,
9127         TARGET_VALID_DLLIMPORT_ATTRIBUTE_P, TARGET_VECTOR_OPAQUE_P,
9128         TARGET_COMMUTATIVE_P, TARGET_USE_BLOCKS_FOR_CONSTANT_P,
9129         TARGET_COMP_TYPE_ATTRIBUTES,
9130         TARGET_FUNCTION_ATTRIBUTE_INLINABLE_P,
9131         TARGET_MS_BITFIELD_LAYOUT_P, TARGET_MANGLE_TYPE,
9132         TARGET_IN_SMALL_DATA_P, TARGET_INVALID_CONVERSION,
9133         TARGET_INVALID_UNARY_OP, TARGET_INVALID_BINARY_OP,
9134         TARGET_DWARF_CALLING_CONVENTION): Likewise.
9135         * target.h (can_output_mi_thunk, needs_block_p,
9136         first_cycle_multipass_dfa_lookahead_guard_spec,
9137         vector_alignment_reachable, comp_type_attributes,
9138         function_attribute_inlinable_p, ms_bitfield_layout_p, mangle_type,
9139         commutative_p, use_blocks_for_constant_p,
9140         use_anchors_for_symbol_p, in_small_data_p, binds_local_p,
9141         vector_opaque_p, dwarf_calling_convention, stdarg_optimize_hook,
9142         invalid_within_doloop, valid_dllimport_attribute_p,
9143         split_complex_arg, invalid_arg_for_unprototyped_fn,
9144         invalid_conversion, invalid_unary_op, invalid_binary_op):
9145         Likewise.
9146         * targhooks.c (default_invalid_within_doloop,
9147         hook_invalid_arg_for_unprototyped_fn,
9148         default_builtin_vector_alignment_reachable): Likewise.
9149         (hook_bool_rtx_commutative_p): Delete.
9150         (hook_bool_const_rtx_commutative_p): New.
9151         * targhooks.h (default_invalid_within_doloop,
9152         default_builtin_vector_alignment_reachable,
9153         hook_invalid_arg_for_unprototyped_fn): Constify.
9154         (hook_bool_rtx_commutative_p): Delete.
9155         (hook_bool_const_rtx_commutative_p): New.
9156         * varasm.c (bss_initializer_p, decl_default_tls_model,
9157         categorize_decl_for_section, decl_readonly_section,
9158         default_use_anchors_for_symbol_p, default_binds_local_p,
9159         default_binds_local_p_1): Constify.
9160
9161 2007-08-24  Jie Zhang  <jie.zhang@analog.com>
9162
9163         * config/bfin/bfin.h (TARGET_CPU_CPP_BUILTINS): Define
9164         __NO_BUILTIN if -fno-builtin.
9165
9166 2007-08-24  Jie Zhang  <jie.zhang@analog.com>
9167
9168         * config/bfin/bfin.c (print_operand): Report error instead of
9169         ICE for wrong operand.
9170
9171 2007-08-24  Michael Matz  <matz@suse.de>
9172
9173         * Makefile.in (GTFILES_H): Use $(patsubst) instead of $(subst).
9174
9175 2007-08-24  Richard Guenther  <rguenther@suse.de>
9176
9177         PR middle-end/33166
9178         * tree-ssa.c (useless_type_conversion_p): Split into a
9179         recursive and a non-recursive part.
9180         (useless_type_conversion_p_1): New function.
9181         * tree-ssa-ccp.c (fold_stmt_r): Make sure that the result
9182         from maybe_fold_offset_to_reference is trivially convertible
9183         to the desired type before doing the simplification.
9184
9185 2007-08-24  Jakub Jelinek  <jakub@redhat.com>
9186
9187         * expr.c (store_expr): Optimize initialization of an array
9188         with STRING_CST.
9189         * expr.h (builtin_strncpy_read_str): New prototype.
9190         * builtins.c (builtin_strncpy_read_str): Remove prototype.
9191         No longer static.
9192
9193 2007-08-24  Uros Bizjak  <ubizjak@gmail.com>
9194
9195         PR middle-end/33157
9196         * ifcvt.c (noce_find_if_block): Do not clear if_info.cond_earliest
9197         field when initializing if_info structure.
9198
9199 2007-08-24  Richard Guenther  <rguenther@suse.de>
9200
9201         * Makefile.in (tree-inline.o): Add $(TARGET_H) and $(INTEGRATE_H)
9202         dependencies.
9203         * c-objc-common.c (c_cannot_inline_tree_fn): Remove.
9204         * langhooks.c (lhd_tree_inlining_cannot_inline_tree_fn): Likewise.
9205         * tree-inline.c (inlinable_function_p): Fold in common parts of
9206         the cannot_inline_tree_fn langhook.
9207         * langhooks-def.h (lhd_tree_inlining_cannot_inline_tree_fn): Remove.
9208         (LANG_HOOKS_TREE_INLINING_CANNOT_INLINE_TREE_FN): Likewise.
9209         (LANG_HOOKS_TREE_INLINING_INITIALIZER): Remove initializer for
9210         cannot_inline_tree_fn langhook.
9211         * langhooks.h (struct lang_hooks_for_tree_inlining): Remove
9212         cannot_inline_tree_fn member.
9213
9214 2007-08-24  Richard Guenther  <rguenther@suse.de>
9215
9216         * expr.c (get_inner_reference): Do computation of bitoffset
9217         from offset in a way we can detect overflow reliably.
9218
9219 2007-08-24  Jie Zhang  <jie.zhang@analog.com>
9220
9221         * crtstuff.c (USE_PT_GNU_EH_FRAME): Don't define for uClibc.
9222
9223 2007-08-24  Jie Zhang  <jie.zhang@analog.com>
9224
9225         * config/bfin/bfin.opt (mfast-fp): Add.
9226         * config/bfin/linux.h (LINK_GCC_C_SEQUENCE_SPEC): Let
9227         libbffastfp override libgcc if -mfast-fp.
9228         * config/bfin/bfin.h (LINK_GCC_C_SEQUENCE_SPEC): Likewise.
9229         * doc/invoke.texi (Option Summary): Mention -mfast-fp.
9230         (Blackfin Options): Document -mfast-fp.
9231
9232 2007-08-24  Jakub Jelinek  <jakub@redhat.com>
9233
9234         PR tree-optimization/32573
9235         PR middle-end/32946
9236         * tree-data-ref.c (initialize_data_dependence_relation): Clear
9237         DDR_SUBSCRIPTS, DDR_DIR_VECTS and DDR_DIST_VECTS at the beginning.
9238         (finalize_ddr_dependent): Clear DDR_SUBSCRIPTS after freeing it.
9239         (build_classic_dist_vector): Return false rather than true if
9240         DDR_ARE_DEPENDENT is non-NULL at the beginning.  Return false
9241         if either subscript_dependence_tester_1 or build_classic_dist_vector_1
9242         returned false.  Don't call save_dist_v before calling
9243         build_classic_dist_vector_1.
9244         (free_dependence_relation): Don't guard freeing DDR_SUBSCRIPTS
9245         with NULL DDR_ARE_DEPENDENT.  Also free DDR_DIST_VECTS and/or
9246         DDR_DIR_VECTS vectors.
9247
9248 2007-08-23  Brian Sidebotham  <brian.sidebotham@gmail.com>
9249
9250         * configure.ac (leb128): Modify sed statement to work with any
9251         binutils version string.
9252         * configure: Regenerate
9253
9254 2007-08-23  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
9255
9256         * config/arc/arc-protos.h arc_select_cc_mode, gen_compare_reg):
9257         Wrap in RTX_CODE macro guard.
9258         * config/arm/pe.c (arm_dllexport_p, arm_dllimport_p,
9259         arm_dllexport_name_p, arm_dllimport_name_p, arm_mark_dllexport,
9260         arm_mark_dllimport, arm_pe_encode_section_info,
9261         arm_pe_unique_section): Use ISO-C function declarations.
9262         * config/c4x/c4x-c.c (c4x_parse_pragma, c4x_pr_CODE_SECTION,
9263         c4x_pr_DATA_SECTION, c4x_pr_FUNC_IS_PURE,
9264         c4x_pr_FUNC_NEVER_RETURNS, c4x_pr_INTERRUPT, c4x_pr_ignored):
9265         Likewise.
9266         * config/iq2000/iq2000.h (ASM_OUTPUT_SKIP): Fix format warning.
9267         * config/m68hc11/m68hc11.h (ASM_OUTPUT_EXTERNAL): Undef before
9268         defining.
9269         * config/mips/mips.h (ASM_DECLARE_OBJECT_NAME): Fix format
9270         warnings.
9271         * config/mn10300/mn10300.h (OUTPUT_ADDR_CONST_EXTRA): Likewise.
9272         * config/pdp11/pdp11.c (pdp11_output_function_epilogue): Likewise.
9273         (register_move_cost): Use ISO-C function declarations.
9274         * config/pdp11/pdp11.h (PRINT_OPERAND): Fix format warnings.
9275         * config/score/score-protos.h (score_declare_object): Add
9276         ATTRIBUTE_PRINTF_4.
9277         * config/score/score.h (ASM_DECLARE_OBJECT_NAME): Fix format
9278         warnings.
9279         * final.c (profile_function): Avoid empty if-bodies.
9280         
9281         
9282         * calls.c (must_pass_in_stack_var_size,
9283         must_pass_in_stack_var_size_or_pad): Constify.
9284         * config/alpha/alpha-protos.h (function_value): Likewise.
9285         * config/alpha/alpha.c (alpha_return_in_memory,
9286         alpha_pass_by_reference, function_value,
9287         unicosmk_must_pass_in_stack, TARGET_PROMOTE_FUNCTION_ARGS,
9288         TARGET_PROMOTE_FUNCTION_RETURN, TARGET_PROMOTE_PROTOTYPES):
9289         Likewise.
9290         * config/arc/arc.c (arc_return_in_memory, arc_pass_by_reference,
9291         TARGET_PROMOTE_FUNCTION_ARGS, TARGET_PROMOTE_FUNCTION_RETURN,
9292         TARGET_PROMOTE_PROTOTYPES): Likewise.
9293         * config/arm/arm-protos.h (arm_return_in_memory,
9294         arm_pad_arg_upward, arm_function_value): Likewise.
9295         * config/arm/arm.c (arm_pass_by_reference,
9296         arm_promote_prototypes, arm_return_in_msb, arm_must_pass_in_stack,
9297         TARGET_PROMOTE_FUNCTION_ARGS, TARGET_PROMOTE_FUNCTION_RETURN,
9298         arm_function_value, arm_return_in_memory, arm_pad_arg_upward):
9299         Likewise.
9300         * config/arm/arm.h (ARM_DECLARE_FUNCTION_NAME): Likewise.
9301         * config/avr/avr-protos.h (avr_function_value): Likewise.
9302         * config/avr/avr.c (avr_return_in_memory,
9303         gas_output_limited_string, gas_output_ascii, avr_function_value,
9304         avr_return_in_memory): Likewise.
9305         * config/bfin/bfin-protos.h (bfin_return_in_memory): Likewise.
9306         * config/bfin/bfin.c (bfin_pass_by_reference,
9307         bfin_return_in_memory, TARGET_PROMOTE_PROTOTYPES,
9308         TARGET_PROMOTE_FUNCTION_ARGS, TARGET_PROMOTE_FUNCTION_RETURN):
9309         Likewise.
9310         * config/cris/cris.c (cris_pass_by_reference,
9311         TARGET_PROMOTE_FUNCTION_ARGS): Likewise.
9312         * config/crx/crx.c (crx_return_in_memory): Likewise.
9313         * config/darwin.c (function_base, machopic_function_base_name):
9314         Likewise.
9315         * config/fr30/fr30.c (fr30_must_pass_in_stack,
9316         TARGET_PROMOTE_PROTOTYPES): Likewise.
9317         * config/frv/frv.c (frv_must_pass_in_stack): Likewise.
9318         * config/h8300/h8300.c (h8300_return_in_memory): Likewise.
9319         * config/i386/i386-protos.h (ix86_return_in_memory,
9320         ix86_sol10_return_in_memory): Likewise.
9321         * config/i386/i386.c (ix86_function_value,
9322         ix86_function_sseregparm, ix86_must_pass_in_stack,
9323         type_natural_mode, classify_argument, examine_argument,
9324         construct_container, ix86_pass_by_reference, function_value_32,
9325         function_value_64, ix86_function_value_1, return_in_memory_32,
9326         return_in_memory_64, return_in_memory_ms_64,
9327         ix86_return_in_memory, ix86_sol10_return_in_memory,
9328         TARGET_PROMOTE_PROTOTYPES): Likewise.
9329         * config/ia64/ia64-protos.h (ia64_function_value,
9330         ia64_hpux_function_arg_padding): Likewise.
9331         * config/ia64/ia64.c (hfa_element_mode, ia64_return_in_memory,
9332         ia64_function_value, bundle_state_hash, bundle_state_eq_p,
9333         ia64_hpux_function_arg_padding): Likewise.
9334         * config/iq2000/iq2000-protos.h (function_arg,
9335         iq2000_function_value): Likewise.
9336         * config/iq2000/iq2000.c (iq2000_return_in_memory,
9337         iq2000_pass_by_reference, TARGET_PROMOTE_FUNCTION_ARGS,
9338         TARGET_PROMOTE_FUNCTION_RETURN, TARGET_PROMOTE_PROTOTYPES,
9339         function_arg, iq2000_function_value): Likewise.
9340         * config/m32c/m32c-protos.h (m32c_function_value,
9341         m32c_promote_function_return): Likewise.
9342         * config/m32c/m32c.c (m32c_pass_by_reference,
9343         m32c_promote_prototypes, m32c_promote_function_return,
9344         m32c_function_value): Likewise.
9345         * config/m32r/m32r.c (m32r_return_in_memory,
9346         m32r_pass_by_reference, TARGET_PROMOTE_PROTOTYPES,
9347         m32r_in_small_data_p): Likewise.
9348         * config/m68hc11/m68hc11-protos.h (m68hc11_function_arg_padding):
9349         Likewise.
9350         * config/m68hc11/m68hc11.c (m68hc11_return_in_memory,
9351         m68hc11_function_arg_padding): Likewise.
9352         * config/m68k/m68k-protos.h (m68k_function_value): Likewise.
9353         * config/m68k/m68k.c (TARGET_PROMOTE_PROTOTYPES,
9354         m68k_function_value): Likewise.
9355         * config/mcore/mcore-protos.h (mcore_num_arg_regs,
9356         mcore_function_value): Likewise.
9357         * config/mcore/mcore.c (handle_structs_in_regs,
9358         mcore_return_in_memory, TARGET_PROMOTE_FUNCTION_ARGS,
9359         TARGET_PROMOTE_FUNCTION_RETURN, TARGET_PROMOTE_PROTOTYPES,
9360         mcore_num_arg_regs, mcore_function_value): Likewise.
9361         * config/mips/mips-protos.h (mips_pad_arg_upward,
9362         mips_function_value): Likewise.
9363         * config/mips/mips.c (mips_fpr_return_fields, mips_return_in_msb,
9364         mips_return_in_memory, mips_pass_by_reference, mips_callee_copies,
9365         TARGET_PROMOTE_FUNCTION_ARGS, TARGET_PROMOTE_FUNCTION_RETURN,
9366         TARGET_PROMOTE_PROTOTYPES, mips_pad_arg_upward,
9367         mips_function_value): Likewise.
9368         * config/mmix/mmix-protos.h (mmix_function_outgoing_value):
9369         Likewise.
9370         * config/mmix/mmix.c (mmix_pass_by_reference,
9371         TARGET_PROMOTE_FUNCTION_ARGS, mmix_function_outgoing_value,
9372         mmix_encode_section_info): Likewise.
9373         * config/mn10300/mn10300-protos.h (mn10300_function_value):
9374         Likewise.
9375         * config/mn10300/mn10300.c (mn10300_return_in_memory,
9376         mn10300_pass_by_reference, TARGET_PROMOTE_PROTOTYPES,
9377         mn10300_function_value): Likewise.
9378         * config/mt/mt-protos.h (mt_function_value): Likewise.
9379         * config/mt/mt.c (mt_pass_by_reference, mt_function_value,
9380         mt_pass_in_stack, TARGET_PROMOTE_PROTOTYPES): Likewise.
9381         * config/pa/pa-protos.h (function_arg_padding, function_value,
9382         pa_return_in_memory): Likewise.
9383         * config/pa/pa.c (pa_pass_by_reference,
9384         TARGET_PROMOTE_FUNCTION_RETURN, TARGET_PROMOTE_PROTOTYPES,
9385         function_arg_padding, function_value, pa_return_in_memory):
9386         Likewise.
9387         * config/pdp11/pdp11.c (pdp11_return_in_memory): Likewise.
9388         * config/rs6000/rs6000-protos.h (rs6000_function_value,
9389         function_arg_padding): Likewise.
9390         * config/rs6000/rs6000.c (rs6000_return_in_memory,
9391         rs6000_darwin64_record_arg_recurse, rs6000_darwin64_record_arg,
9392         rs6000_pass_by_reference, rs6000_must_pass_in_stack,
9393         TARGET_PROMOTE_FUNCTION_ARGS, TARGET_PROMOTE_FUNCTION_RETURN,
9394         function_arg_padding, altivec_expand_dst_builtin,
9395         altivec_expand_builtin, rs6000_expand_builtin, spe_init_builtins,
9396         altivec_init_builtins, rs6000_common_init_builtins,
9397         rs6000_function_value): Likewise.
9398         * s390/s390-protos.h (s390_function_value): Likewise.
9399         * config/s390/s390.c (s390_function_arg_size,
9400         s390_pass_by_reference, s390_return_in_memory,
9401         s390_function_value, TARGET_PROMOTE_FUNCTION_ARGS,
9402         TARGET_PROMOTE_FUNCTION_RETURN): Likewise.
9403         * config/score/score-protos.h (score_function_value): Likewise.
9404         * config/score/score.c (score_arg_partial_bytes,
9405         TARGET_PROMOTE_FUNCTION_ARGS, TARGET_PROMOTE_FUNCTION_RETURN,
9406         TARGET_PROMOTE_PROTOTYPES, score_return_in_memory,
9407         score_pass_by_reference, score_add_offset, score_function_value):
9408         Likewise.
9409         * config/sh/sh-protos.h (sh_attr_renesas_p,
9410         sh_promote_prototypes): Likewise.
9411         * config/sh/sh.c (sh_return_in_memory, sh_pass_by_reference,
9412         sh_callee_copies, sh_promote_prototypes, shcompact_byref,
9413         sh_attr_renesas_p): Likewise.
9414         * config/sparc/sparc-protos.h (function_value,
9415         function_arg_padding): Likewise.
9416         * config/sparc/sparc.c (sparc_promote_prototypes,
9417         sparc_return_in_memory, sparc_pass_by_reference,
9418         TARGET_PROMOTE_FUNCTION_ARGS, TARGET_PROMOTE_FUNCTION_RETURN,
9419         function_arg_record_value_2, function_arg_record_value_1,
9420         function_arg_record_value, function_arg_record_value,
9421         function_arg_padding, function_value): Likewise.
9422         * config/spu/spu-protos.h (spu_function_value): Likewise.
9423         * config/spu/spu.c (spu_pass_by_reference, spu_return_in_memory,
9424         spu_function_value): Likewise.
9425         * config/stormy16/stormy16-protos.h (xstormy16_function_value):
9426         Likewise.
9427         * config/stormy16/stormy16.c (xstormy16_return_in_memory,
9428         xstormy16_function_value, TARGET_PROMOTE_FUNCTION_ARGS,
9429         TARGET_PROMOTE_FUNCTION_RETURN, TARGET_PROMOTE_PROTOTYPES):
9430         Likewise.
9431         * config/v850/v850.c (v850_return_in_memory,
9432         v850_pass_by_reference, TARGET_PROMOTE_PROTOTYPES): Likewise.
9433         * config/vax/vax.c (TARGET_PROMOTE_PROTOTYPES): Likewise.
9434         * config/xtensa/xtensa.c (xtensa_return_in_msb,
9435         xtensa_return_in_memory, TARGET_PROMOTE_FUNCTION_ARGS,
9436         TARGET_PROMOTE_FUNCTION_RETURN, TARGET_PROMOTE_PROTOTYPES):
9437         Likewise.
9438         * explow.c (promote_mode, hard_function_value): Likewise.
9439         * expr.h (hard_function_value, promote_mode): Likewise.
9440         * function.c (aggregate_value_p): Likewise.
9441         * hooks.c (hook_bool_const_tree_true): New.
9442         * hooks.h (hook_bool_const_tree_true): New.
9443         * sdbout.c (SET_KNOWN_TYPE_TAG, plain_type_1): Constify.
9444         * target-def.h (TARGET_PROMOTE_FUNCTION_ARGS,
9445         TARGET_PROMOTE_FUNCTION_RETURN, TARGET_PROMOTE_PROTOTYPES,
9446         TARGET_RETURN_IN_MSB): Likewise.
9447         * target.h (promote_function_args, promote_function_return,
9448         promote_prototypes, return_in_memory, return_in_msb,
9449         pass_by_reference, must_pass_in_stack, callee_copies,
9450         function_value): Likewise.
9451         * targhooks.c (default_return_in_memory,
9452         hook_pass_by_reference_must_pass_in_stack,
9453         hook_callee_copies_named,
9454         hook_bool_CUMULATIVE_ARGS_mode_tree_bool_false,
9455         hook_bool_CUMULATIVE_ARGS_mode_tree_bool_true,
9456         default_function_value): Likewise. 
9457         * targhooks.h (default_return_in_memory,
9458         hook_pass_by_reference_must_pass_in_stack,
9459         hook_callee_copies_named,
9460         hook_bool_CUMULATIVE_ARGS_mode_tree_bool_false,
9461         hook_bool_CUMULATIVE_ARGS_mode_tree_bool_true,
9462         default_function_value): Likewise.
9463         * tree-ssa-structalias.c (const_equiv_class_label_t): New.
9464         (equiv_class_label_hash, equiv_class_label_eq): Constify.
9465         * tree-vectorizer.c (bb_in_loop_p): Likewise.
9466         * tree.c (needs_to_live_in_memory): Likewise.
9467         * tree.h (struct tree_type, needs_to_live_in_memory,
9468         aggregate_value_p, must_pass_in_stack_var_size,
9469         must_pass_in_stack_var_size_or_pad): Likewise.
9470         * vmsdbgout.c (write_debug_addr, write_debug_delta4,
9471         write_debug_string, ASM_OUTPUT_DEBUG_STRING, write_rtnbeg,
9472         lookup_filename): Likewise.
9473
9474 2007-08-23  Uros Bizjak  <ubizjak@gmail.com>
9475
9476         PR target/17390
9477         * config/i386/i386.c (ix86_expand_fp_compare): Expand fp comparison to
9478         fake fcomi i387 instruction for !TARGET_CMOVE.
9479         (ix86_expand_branch): Expand natural sequence with one jump for
9480         all targets, not only TARGET_CMOVE.
9481         * config/i386/i386.md (*cmpfp_0_cc): New define_insn_and_split
9482         pattern to implement fake fcomi sequence.  Split instruction after
9483         reload to correct compare sequences.
9484         (*cmpfp_xf_cc): Ditto.
9485         (*cmpfp_<mode>_cc): Ditto.
9486         (*cmpfp_u_cc): Ditto.
9487         (*cmpfp_<mode>_cc): Ditto.
9488
9489 2007-08-23  Richard Guenther  <rguenther@suse.de>
9490
9491         * tree-pretty-print.c (dump_generic_node): Annotate
9492         GIMPLE_MODIFY_STMTs with volatile ops with "{v}".
9493
9494 2007-08-23  Richard Guenther  <rguenther@suse.de>
9495
9496         * builtins.c (expand_builtin_mathfn): Wrap argument in
9497         save_expr directly instead of re-building the call.
9498         (expand_builtin_mathfn_2): Likewise.
9499         (expand_builtin_mathfn_3): Likewise.
9500         (expand_builtin_interclass_mathfn): Likewise.
9501         (expand_builtin_int_roundingfn): Set arg.
9502         (expand_builtin_int_roundingfn_2): Likewise.
9503
9504 2007-08-23  Paolo Bonzini  <bonzini@gnu.org>
9505
9506         * config/i386/sse.md (*sse_and<mode>3, *sse_ior<mode>3,
9507         *sse_nand<mode>3, *sse_xor<mode>3): New.
9508
9509 2007-08-23  Uros Bizjak  <ubizjak@gmail.com>
9510
9511         * config/i386/i386.h (PRINT_OPERAND_PUNCT_VALID_P): Add ';' code.
9512         * config/i386/i386.c (print_operand): Handle ';' code.  Output
9513         semicolon for TARGET_MACHO.
9514         * config/i386/sync.md (*sync_compare_and_swap<mode>): Use '%;' to
9515         emit semicolon after 'lock' prefix.
9516         (sync_double_compare_and_swap<mode>): Ditto.
9517         (*sync_double_compare_and_swapdi_pic): Ditto.
9518         (*sync_compare_and_swap_cc<mode>): Ditto.
9519         (sync_double_compare_and_swap_cc<mode>): Ditto.
9520         (*sync_double_compare_and_swap_ccdi_pic): Ditto.
9521         (sync_old_add<mode>): Ditto.
9522         (sync_add<mode>): Ditto.
9523         (sync_sub<mode>): Ditto.
9524         (sync_ior<mode>): Ditto.
9525         (sync_and<mode>): Ditto.
9526         (sync_xor<mode>): Ditto.
9527
9528 2007-08-22  Chao-ying Fu  <fu@mips.com>
9529
9530         * rtl.c (rtx_code_size): Check CONST_FIXED to calcualte correct sizes
9531         in DEF_RTL_EXPR.
9532         (copy_rtx): Handle CONST_FIXED.
9533         (rtx_equal_p): Likewise.
9534         * rtl.h (fixed_value.h): New include.
9535         (rtx_def): Add a new field of fixed_value to u.
9536         (XCNMPFV): Define for accessing fixed_value.
9537         (CONST_FIXED_VALUE, CONST_FIXED_VALUE_HIGH, CONST_FIXED_VALUE_LOW):
9538         Define.
9539         * rtl.def (CONST_FIXED): New constant.
9540         (SS_MULT, US_MULT, SS_DIV, US_DIV, FRACT_CONVERT,
9541         UNSIGNED_FRACT_CONVERT, SAT_FRACT, UNSIGNED_SAT_FRACT, US_NEG,
9542         US_ASHIFT): New codes.
9543         * doc/rtl.texi (Expressions): Document const_fixed, us_neg, ss_mult,
9544         us_mult, ss_div, us_div, us_ashift, fract_convert, sat_fract,
9545         unsigned_fract_convert, unsigned_sat_fract): Document them.
9546         * varasm.c (assemble_integer): Extend to support fixed-point constants
9547         by using different machine classes.
9548         (decode_addr_const): Handle FIXED_CST.
9549         (const_hash_1): Likewise.
9550         (compare_constant): Likewise.
9551         (copy_constant): Likewise.
9552         (const_rtx_hash_1): Handle CONST_FIXED.
9553         (output_constant_pool_2): Handle MODE_FRACT, MODE_UFRACT, MODE_ACCUM,
9554         MODE_UACCUM, MODE_VECTOR_FRACT, MODE_VECTOR_UFRACT, MODE_VECTOR_ACCUM,
9555         MODE_VECTOR_UACCUM.
9556         (initializer_constant_valid_p): Handle FIXED_CST.
9557         (output_constant): Support FIXED_POINT_TYPE.
9558         * gengenrtl.c (excluded_rtx): Check CONST_FIXED to exclude.
9559         * cse.c (hash_rtx): Support CONST_FIXED.
9560         (exp_equiv_p): Likewise.
9561         (cannon_reg): Likewise.
9562         (fold_rtx): Likewise.
9563         (equiv_constant): Likewise.
9564         (cse_process_notes_1): Likewise.
9565         (count_reg_usage): Likewise.
9566         * cselib.c (entry_and_rtx_equal_p): Check CONST_FIXED.
9567         (rtx_equal_for_cselib_p): Handle CONST_FIXED.
9568         (wrap_constant): Check CONST_FIXED.
9569         (cselib_hash_rtx): Support CONST_FIXED.
9570         (cselib_subst_to_values): Likewise.
9571         * df-scan.c (df_uses_record): Likewise.
9572         * gcse.c (want_to_gcse_p): Likewise.
9573         (oprs_unchanged_p): Likewise.
9574         (oprs_not_set_p): Likewise.
9575         (compute_transp): Likewise.
9576         (extract_mentioned_regs_helper): Likewise.
9577         * genemit.c (gen_exp): Likewise.
9578         * local-alloc.c (equiv_init_varies_p): Likewise.
9579         (contains_replace_regs): Likewise.
9580         (memref_referenced_p): Likewise.
9581         * loop-invariant.c (check_maybe_invariant): Likewise.
9582         (hash_invariant_expr_1): Likewise.
9583         (invariant_expr_equal_p): Likewise.
9584         * postreload-gcse.c (oprs_unchanged_p): Likewise.
9585         * regclass.c (reg_scan_mark_refs): Likewise.
9586         * regrename.c (scan_rtx): Likewise.
9587         * resource.c (mark_referenced_resources): Likewise.
9588         (mark_set_resources): Likewise.
9589         * rtlanal.c (rtx_unstable_p): Likewise.
9590         (rtx_varies_p): Likewise.
9591         (count_occurrences): Likewise.
9592         (reg_mentioned_p): Likewise.
9593         (modified_between_p): Likewise.
9594         (modified_in_p): Likewise.
9595         (volatile_insn_p): Likewise.
9596         (volatile_refs_p): Likewise.
9597         (side_effects_p): Likewise.
9598         (may_trap_p_1): Likewise.
9599         (inequality_comparisons_p): Likewise.
9600         (computed_jump_p_1): Likewise.
9601         (commutative_operand_precedence): Likewise.
9602         * sched-deps.c (sched_analyze_2): Likewise.
9603         * sched-vis.c (print_value): Likewise.
9604         * reload.c (operands_match_p): Likewise.
9605         (subst_reg_equivs): Likewise.
9606         * reload1.c (eliminate_regs_1): Likewise.
9607         (elimination_effects): Likewise.
9608         (scan_paradoxical_subregs): Likewise.
9609         * alias.c (rtx_equal_for_memref_p): Likewise.
9610         * Makefile.in (RTL_BASE_H): Add fixed-value.h.
9611         * emit-rtl.c (const_fixed_htab): New hash table.
9612         (const_fixed_htab_hash, const_fixed_htab_eq, lookup_const_fixed):
9613         Declare.
9614         (const_fixed_htab_hash, const_fixed_htab_eq, lookup_const_fixed,
9615         const_fixed_from_fixed_value): New functions.
9616         (verify_rtx_sharing): Handle CONST_FIXED.
9617         (copy_rtx_if_shared_1): Likewise.
9618         (reset_used_flags): Likewise.
9619         (set_used_flags): Likewise.
9620         (copy_insn_1): Likewise.
9621         (init_emit_once): Create const_fixed_htab.
9622         Store fixed-point scalar and vector zero and one to const_tiny_rtx.
9623
9624 2007-08-22  Zdenek Dvorak  <ook@ucw.cz>
9625
9626         PR tree-optimization/32949
9627         * tree-ssa-loop-niter.c (scev_probably_wraps_p): Test nowrap_type_p
9628         before failing for ivs with non-constant step.
9629
9630 2007-08-22  Hans-Peter Nilsson  <hp@axis.com>
9631
9632         * doc/md.texi (Iterators): Renamed from Macros.  All contents
9633         changed to reflect rename of respectively define_code_macro and
9634         define_mode_macro to define_code_iterator and define_mode_iterator.
9635         (Mode Iterators, Code Iterators): Similar.
9636         * read-rtl.c (struct iterator_group, struct iterator_traverse_data)
9637         (uses_mode_iterator_p, apply_mode_iterator, uses_code_iterator_p)
9638         (apply_iterator_to_string, uses_iterator_p, apply_iterator_traverse)
9639         (initialize_iterators, find_iterator, check_code_iterator)
9640         (map_attr_string, apply_mode_maps, apply_iterator_to_rtx, add_mapping)
9641         (read_mapping, read_rtx_1): Similar.
9642         * config/alpha/sync.md, config/alpha/alpha.md, config/frv/frv.md,
9643         config/s390/s390.md, config/m32c/blkmov.md, config/m32c/m32c.md,
9644         config/spu/spu.md, config/sparc/sparc.md, config/sparc/sync.md,
9645         config/i386/i386.md, config/i386/mmx.md, config/i386/sse.md,
9646         config/i386/sync.md, config/crx/crx.md, config/xtensa/xtensa.md,
9647         config/cris/cris.c, config/cris/cris.md, config/ia64/sync.md,
9648         config/ia64/div.md, config/ia64/vect.md, config/ia64/ia64.md,
9649         config/m68k/m68k.md, config/rs6000/spe.md, config/rs6000/altivec.md,
9650         config/rs6000/sync.md, config/rs6000/rs6000.md,
9651         config/arm/vec-common.md, config/arm/neon.md, config/arm/iwmmxt.md,
9652         config/arm/arm.md, config/mips/mips-dsp.md, config/mips/mips.md,
9653         config/vax/vax.md, config/bfin/bfin.md: Similar.
9654
9655 2007-08-22  David Daney  <ddaney@avtrex.com>
9656
9657         * doc/install.texi (Testing): Mention testing on a simulator.
9658
9659 2007-08-22  Janis Johnson  <janis187@us.ibm.com>
9660
9661         * config/dfp-bit.c (DFP_TO_DFP): Check for overflow.
9662
9663         * doc/libgcc.texi (Decimal float library routines): Fix formatting
9664         and rearrange floating point conversion functions into different
9665         categories.
9666
9667 2007-08-22  Maxim Kuvyrkov  <maxim@codesourcery.com>
9668
9669         * target.h (struct gcc_target.sched: dfa_pre_advance_cycle,
9670         dfa_post_advance_cycle): New scheduler hooks.
9671         * target-def.h (TARGET_SCHED_DFA_PRE_ADVANCE_CYCLE,
9672         TARGET_SCHED_DFA_POST_ADVANCE_CYCLE): New macros to initialize
9673         new hooks.
9674         (TARGET_SCHED): Use them.
9675         * doc/tm.texi (TARGET_SCHED_DFA_PRE_ADVANCE_CYCLE,
9676         TARGET_SCHED_DFA_POST_ADVANCE_CYCLE): Document new hooks.
9677         * haifa-sched.c (advance_one_cycle): Invoke new hooks.
9678
9679         * genautomata.c (insn_has_dfa_reservation_p): New DFA interface
9680         function to facilitate debugging.
9681         (INSN_HAS_DFA_RESERVATION_P_FUNC_NAME): New macro.
9682         (output_insn_has_dfa_reservation_p): New static function to output
9683         insn_has_dfa_reservation_p ().
9684         (write_automata): Use it.
9685         * genattr.c (main): Output declaration for
9686         insn_has_dfa_reservation_p ().
9687
9688 2007-08-22  Christian Bruel  <christian.bruel@st.com>   
9689             Richard Guenther <rguenther@suse.de>
9690         
9691         * fold-const.c (fold_binary): Optimize A-A if -ffinite-math-only.
9692         * simplify_rtx (simplify_binary_operation_1): Likewise.
9693                 
9694 2007-08-22  Rask Ingemann Lambertsen  <rask@sygehus.dk>
9695
9696         PR rtl-optimization/32557
9697         * df-problems.c (df_note_bb_compute): Use mws->start_regno instead
9698         of REGNO (mws->mw_reg).
9699
9700 2007-08-22  Richard Guenther  <rguenther@suse.de>
9701
9702         PR middle-end/33007
9703         * builtins.c (expand_builtin_int_roundingfn): Replace call
9704         argument wrapped with SAVE_EXPR directly.
9705         (expand_builtin_int_roundingfn_2): Likewise.
9706
9707 2007-08-22  Richard Guenther  <rguenther@suse.de>
9708
9709         * tree-inline.c (inlinable_function_p): Restore disregarding
9710         inline limits for GNU extern inline functions.
9711
9712 2007-08-22  Richard Guenther  <rguenther@suse.de>
9713
9714         PR middle-end/32563
9715         * tree.c (host_integerp): Treat sizetype as signed as it is
9716         sign-extended.
9717
9718 2007-08-21  Ian Lance Taylor  <iant@google.com>
9719
9720         PR tree-optimization/33134
9721         * tree-vrp.c (adjust_range_with_scev): Call
9722         set_value_range_to_value.
9723
9724 2007-08-21  Aldy Hernandez  <aldyh@redhat.com>
9725
9726         * value-prof.h (gimple_remove_histogram_value): Remove duplicate
9727         prototype.
9728         
9729 2007-08-21  Aldy Hernandez  <aldyh@redhat.com>
9730
9731         * tree-flow-inline.h (next_imm_use_stmt): Remove unecessary
9732         whitespace.
9733
9734 2007-08-21  Nathan Froyd  <froydnj@codesourcery.com>
9735
9736         * config/rs6000/rs6000.c (expand_block_clear): Add TARGET_SPE
9737         cases to set eight bytes at a time.
9738         (expand_block_move): Likewise.
9739         
9740 2007-08-21  Jakub Jelinek  <jakub@redhat.com>
9741
9742         PR debug/32610
9743         * dwarf2out.c (gen_decl_die): Don't call
9744         gen_tagged_type_instantiation_die if decl doesn't have tagged type.
9745
9746 2007-08-21  Paul Brook  <paul@codesourcery.com>
9747             Nathan Sidwell  <nathan@codesourcery.com>
9748             Mark Mitchell  <mark@codesourcery.com>
9749             Joseph Myers  <joseph@codesourcery.com>
9750
9751         * configure.ac: Add --with-pkgversion and --with-bugurl.
9752         * configure: Regenerate.
9753         * doc/install.texi: Document them.
9754         * version.c (version_string): Remove VERSUFFIX.
9755         (VERSUFFIX): Remove.
9756         (pkgversion_string): New.
9757         (bug_report_url): Do not hard-code initializer.
9758         * version.h (pkgversion_string): Declare.
9759         * Makefile.in (PKGVERSION_s, BUGURL_s, PKGVERSION, BUGURL_TEXI):
9760         Define.
9761         (version.o): Define PKGVERSION and BUGURL.
9762         (gcc-vers.texi): Define VERSION_PACKAGE and BUGURL.
9763         (%.pod): Define BUGURL.
9764         * gcc.c (process_command, main): Use pkgversion_string.
9765         * toplev.c (compile_file, print_version): Likewise.
9766         * protoize.c (main): Likewise.
9767         * gcov.c (print_version): Likewise.  Update copyright date.
9768         * gcov-dump.c (print_version): Likewise.  Update copyright date.
9769         * mips-tdump.c (main): Likewise.  Update copyright date.
9770         * mips-tfile.c (main): Likewise.  Update copyright date.
9771         * doc/include/gcc-common.texi: Include VERSION_PACKAGE as subtitle.
9772         * doc/bugreport.texi: Use BUGURL for bug-reporting instructions;
9773         shorten description.
9774         * doc/gcc.texi: Include VERSION_PACKAGE in version description.
9775         * doc/gccint.texi: Likewise.
9776         * doc/invoke.texi: Use BUGURL for bug-reporting instructions.
9777         Update copyright date.
9778
9779 2007-08-21  Uros Bizjak  <ubizjak@gmail.com>
9780
9781         * config/i386/i386.c (ix86_expand_clear): Use FLAGS_REG.
9782         (ix86_expand_strlensi_unroll_1): Ditto.
9783         (ix86_expand_branch): Use FLAGS_REG and FPSR_REG.
9784         (ix86_expand_carry_flag_compare): Update comment.
9785
9786 2007-08-21  Jakub Jelinek  <jakub@redhat.com>
9787
9788         PR middle-end/32912
9789         * fold-const.c (fold_unary): Optimize BIT_NOT_EXPR of VECTOR_CST.
9790         (fold_binary): Handle vectors in X | ~X and X ^ ~X optimizations.
9791
9792 2007-08-21  Richard Guenther  <rguenther@suse.de>
9793
9794         * fold-const.c (fold_binary): Revert removing of index +p PTR folding.
9795
9796 2007-08-21  Richard Guenther  <rguenther@suse.de>
9797
9798         PR middle-end/33122
9799         * fold-const.c (fold_binary): Remove index +p PTR folding.
9800         Fix types of POINTER_PLUS_EXPR generated by folding of
9801         (PTR +p B) +p A.
9802
9803 2007-08-20  Chao-ying Fu  <fu@mips.com>
9804
9805         * c-common.h (enum rid): Add new enumeration values of RID_SAT,
9806         RID_FRACT, and RID_ACCUM.  RID_SAT needs to be inserted before
9807         RID_ONEWAY, so that it can be checked in declspecs_add_type.
9808         (c_common_fixed_point_type_for_size): Declare.
9809         * c-parser.c (reswords): Add _Fract, _Accum, and _Sat.
9810         (c_token_starts_typename): Handle RID_FRACT, RID_ACCUM, and RID_SAT.
9811         (c_token_starts_declspecs): Likewise.
9812         (c_parser_declspecs): Likewise.
9813         (c_parser_attributes): Likewise.
9814         * c-tree.h (enum c_typespec_keyword): Add cts_fract and cts_accum.
9815         (c_declspecs): Add saturating_p.
9816         * c-decl.c (build_null_declspecs): Initialize saturating_p.
9817         (declspecs_add_type): Avoid using complex with _Fract, _Accum, or
9818         _Sat.  Handle RID_SAT.
9819         Avoid using void, bool, char, int, float, double, _Decimal32,
9820         _Decimal64, _Decimal128, and complex with _Sat.
9821         Handle RID_FRACT and RID_ACCUM.
9822         Make sure _Sat is used with _Fract or _Accum.
9823         (finish_declspecs): Handle cts_fract and cts_accum.
9824         * c-common.c (fixed-value.h): New include.
9825         (constant_expression_warning): Handle FIXED_CST.
9826         (overflow_warning): Likewise.
9827         (warnings_for_convert_and_check): Likewise.
9828         (c_common_fixed_point_type_for_size): New.
9829         (c_common_type_for_mode): Handle fixed-point modes to
9830         return various saturating/non-saturating, signed/unsigned types.
9831         (c_common_signed_or_unsigned_type): Support fixed-point types.
9832         (shorten_compare): Check fixed-point zero.
9833         Handle FIXED_POINT_TYPE.
9834         (c_common_truthvalue_conversion): Handle FIXED_CST.
9835         Handle FIXED_POINT_TYPE.
9836         (c_common_nodes_and_builtins): Record builtin types for fixed-point
9837         types.
9838         (handle_mode_attribute): Handle fixed-point modes.  Need to check
9839         if the signness of base type and fixed-point modes are consistent.
9840         (handle_vector_size_attribute): Handle fixed-point modes.
9841         (same_scalar_type_ignoring_signedness): Handle FIXED_POINT_TYPE.
9842         (warn_for_div_by_zero): Check fixed-point zero.
9843         * c-typeck.c (c_common_type): Check FIXED_POINT_TYPE.  Build
9844         a common fixed-point type based on fbit, ibit, sign, and saturation.
9845         (build_unary_op): Allow FIXED_POINT_TYPE for CONVERT_EXPR,
9846         NEGATE_EXPR, TRUTH_NOT_EXPR, PREINCREMENT_EXPR, POSTINCREMENT_EXPR,
9847         PREDECREMENT_EXPR, and POSTDECREMENT_EXPR.
9848         (convert_for_assignment): Support FIXED_POINT_TYPE.
9849         (digest_init): Handle FIXED_POINT_TYPE.
9850         (build_binary_op): Support FIXED_POINT_TYPE in *_DIV_EXPR,
9851         TRUTH_ANDIF_EXPR, TRUTH_ORIF_EXPR, TRUTH_AND_EXPR, TRUTH_OR_EXPR,
9852         TRUTH_XOR_EXPR, RSHIFT_EXPR, LSHIFT_EXPR, EQ_EXPR, NE_EXPR, LE_EXPR,
9853         GE_EXPR, LT_EXPR, GT_EXPR.
9854         * target-def.h (TARGET_FIXED_POINT_SUPPORTED_P): New.
9855         (TARGET_INITIALIZER): Add TARGET_FIXED_POINT_SUPPORTED_P.
9856         * target.h (gcc_target): Add fixed_point_supported_p.
9857         * targhooks.c (default_scalar_mode_supported_p): Handle MODE_FRACT,
9858         MODE_UFRACT, MODE_ACCUM, and MODE_UACCUM.
9859         (default_fixed_point_supported_p): Define.
9860         * targhooks.h (default_fixed_point_supported_p): Declare.
9861         * doc/tm.texi (TARGET_FIXED_POINT_SUPPORTED_P): Add.
9862         * doc/install.texi (Configuration): Add --enable-fixed-point.
9863         * configure.ac (--enable-fixed-point): New to enable fixed-point
9864         arithmetic extension to C.  For mips targets, we enable it by default.
9865         * configure, config.in: Regenerate.
9866
9867 2007-08-20  Pawel Sikora  <pluto@pld-linux.org>
9868
9869         * doc/invoke.texi (-Wnon-virtual-dtor): Update documentation.
9870
9871 2007-08-20  David Edelsohn  <edelsohn@gnu.org>
9872
9873         * dwarf2out.c (text_section_used): Move declaration outside ifdef
9874         DWARF2_DEBUGGING_INFO.
9875         (cold_text_section_used): Same.
9876         (cold_text_section): Same.
9877
9878 2007-08-20  Richard Guenther  <rguenther@suse.de>
9879
9880         * c-typeck.c (convert_for_assignment): Use the type of
9881         the member for the initialization.
9882
9883 2007-08-20  Richard Guenther  <rguenther@suse.de>
9884
9885         * c-objc-common.c (c_disregard_inline_limits): Remove.
9886         * c-objc-common.h (c_disregard_inline_limits): Likewise.
9887         * cgraphunit.c (cgraph_process_new_functions): Call
9888         disregard_inline_limits_p.
9889         (cgraph_preserve_function_body_p): Likewise.
9890         * ipa-inline.c (compute_inline_parameters): Likewise.
9891         * langhooks-def.h (lhd_tree_inlining_disregard_inline_limits):
9892         Remove.
9893         (LANG_HOOKS_TREE_INLINING_DISREGARD_INLINE_LIMITS): Remove.
9894         (LANG_HOOKS_TREE_INLINING_INITIALIZER): Remove initializer for
9895         disregard_inline_limits langhook.
9896         * langhooks.c (lhd_tree_inlining_disregard_inline_limits):
9897         Remove.
9898         * langhooks.h (lang_hooks_for_tree_inlining): Remove
9899         disregard_inline_limits langhook.
9900         * tree-inline.c (disregard_inline_limits_p): New function.
9901         * tree-inline.h (disregard_inline_limits_p): Declare.
9902
9903 2007-08-20  Richard Guenther  <rguenther@suse.de>
9904
9905         * langhooks-def.h (lhd_tree_inlining_auto_var_in_fn_p): Remove.
9906         (LANG_HOOKS_TREE_INLINING_AUTO_VAR_IN_FN_P): Likewise.
9907         (LANG_HOOKS_TREE_INLINING_INITIALIZER): Remove initializer for
9908         auto_var_in_fn_p langhook.
9909         * langhooks.c (lhd_tree_inlining_auto_var_in_fn_p): Rename and
9910         move ...
9911         * tree.c (auto_var_in_fn_p): ... here.
9912         (find_var_from_fn): Call auto_var_in_fn_p directly.
9913         * langhooks.h (lang_hooks_for_tree_inlining): Remove
9914         auto_var_in_fn_p langhook.
9915         * tree-inline.c (remap_decls): Call auto_var_in_fn_p directly.
9916         (copy_body_r): Likewise.
9917         (self_inlining_addr_expr): Likewise.
9918         * tree.h (auto_var_in_fn_p): Declare.
9919
9920 2007-08-20  Richard Guenther  <rguenther@suse.de>
9921
9922         * tree.c (WALK_SUBTREE): Call walk_tree_1.
9923         (walk_type_fields): Take lh parameter.
9924         (walk_tree): Rename to ...
9925         (walk_tree_1): ... this.  Do not call the walk_subtrees
9926         langhook but the now passed callback.  Pass lh on recursion.
9927         (walk_tree_without_duplicates): Rename to ...
9928         (walk_tree_without_duplicates_1): ... this.  Take lh parameter
9929         and call walk_tree_1.
9930         * tree.h (walk_tree_lh): New typedef.
9931         (walk_tree_1): Declare.
9932         (walk_tree_without_duplicates_1): Likewise.
9933         (walk_tree): New define to walk_tree_1 with NULL lh parameter.
9934         (walk_tree_without_duplicates): New define to
9935         walk_tree_without_duplicates_1 with NULL lh parameter.
9936         * langhooks.c (lhd_tree_inlining_walk_subtrees): Remove.
9937         * langhooks.h (lang_hooks_for_tree_inlining): Remove walk_subtrees
9938         langhook.
9939         * langhooks-def.h (lhd_tree_inlining_walk_subtrees): Remove.
9940         (LANG_HOOKS_TREE_INLINING_WALK_SUBTREES): Likewise.
9941         (LANG_HOOKS_TREE_INLINING_INITIALIZER): Remove walk_subtrees
9942         initializer.
9943
9944 2007-08-20  Andrew Pinski  <andrew_pinski@playstation.sony.com>
9945
9946         PR middle-end/30564
9947         * tree-inline.c (optimize_inline_calls): Move the cgraph checking
9948         code in front of the compacting of basic blocks.
9949         Move the folding of statements inbetween the cgraph checking
9950         and compacting of basic blocks.
9951
9952 2007-08-19  Andrew Pinski  <andrew_pinski@playstation.sony.com>
9953            Serge Belyshev  <belyshev@depni.sinp.msu.ru>
9954
9955         PR target/32522
9956         * config/alpha/alpha.c (va_list_skip_additions): Check for
9957         POINTER_PLUS_EXPR in addition to PLUS_EXPR.
9958         (alpha_stdarg_optimize_hook): Look for POINTER_PLUS_EXPR instead of
9959         PLUS_EXPR when checking ap.__base.
9960         (alpha_va_start): Create POINTER_PLUS_EXPR instead of PLUS_EXPR
9961         when doing addition on pointer types.  Use size_int instead of
9962         build_int_cst.
9963         (alpha_gimplify_va_arg_1): Likewise, but use sizetype instead of
9964         ptr_type in the second operand.
9965
9966 2007-08-19  Andrew Pinski  <pinskia@gmail.com>
9967
9968         PR target/33115
9969         * config/i386/darwin.h (CC1_SPEC): Add %(cc1_cpu) in front.
9970
9971 2007-08-19  Andrew Pinski  <andrew_pinski@playstation.sony.com>
9972
9973         PR middle-end/32940
9974         * cfgexpand.c  (expand_one_register_var): Mark pointer
9975         DECL_ARTIFICIAL as REG_POINTER also.
9976         * stmt.c (expand_decl): Likewise.
9977
9978 2007-08-19  Daniel Berlin  <dberlin@dberlin.org>
9979
9980         Fix PR 32772
9981         Fix PR 32716
9982         Fix PR 32328
9983         Fix PR 32303
9984
9985         * tree-flow.h (struct stmt_ann_d): Remove makes_clobbering_call.
9986         * tree-ssa-alias.c (init_transitive_clobber_worklist): Add
9987         on_worklist argument and avoid adding things to worklist multiple
9988         times.
9989         (add_to_worklist): Ditto.
9990         (mark_aliases_call_clobbered): Mark entire structure clobbered if
9991         single SFT is clobbered.
9992         (set_initial_properties): Ditto.
9993         (compute_call_clobbered): Update for changes to function
9994         arguments.
9995         (create_overlap_variables_for): Always create SFT for offset 0.
9996         (create_structure_vars): Handle PHI's, since we are in SSA form at
9997         this point.
9998         * tree-ssa-loop-ivopts.c (get_ref_tag): Don't return subvars.
9999         * tree-ssa-operands.c (access_can_touch_variable): Don't handle
10000         TARGET_MEM_REF.
10001         (add_vars_for_offset): Figure out aliases from access + points-to.
10002         (add_virtual_operand): Use add_vars-for_offset.
10003         (get_tmr_operands): Update for NMT changes, rewrite to be correct.
10004         (add_call_clobber_ops): Remove makes_clobbering_call set.
10005         (get_expr_operands): Always pass through the INDIRECT_REF
10006         reference.
10007         * tree-ssa-structalias.c (struct constraint_graph): Remove
10008         variables member.
10009         Add pe, pe_rep, pointer_label, loc_label, pointed_by, points_to,
10010         address_taken, pt_used, number_incoming.
10011         (FIRST_ADDR_NODE): Removed.
10012         (merge_graph_nodes): Remove broken code for the moment.
10013         (init_graph): New function.
10014         (build_pred_graph): Remove code to init_graph.
10015         Add location equivalence support.
10016         (struct scc_info): Rename roots to deleted.
10017         (scc_visit): Ditto.
10018         (init_scc_info): Ditto
10019         (init_topo_info): Use graph->size.
10020         (compute_topo_order): Ditto.
10021         (do_da_constraint): Removed.
10022         (do_sd_constraint): Remove calls to find().
10023         set_union_with_increment should always get 0 as last arg here.
10024         (do_complex_constraint): Replace do_da_constraint with assert.
10025         Stop calling find.
10026         (struct equiv_class_label): New.
10027         (pointer_equiv_class_table): Ditto.
10028         (location_equiv_class_table): Ditto.
10029         (equiv_class_label_hash): Ditto.
10030         (equiv_class_label_eq): Ditto
10031         (equiv_class_lookup): Ditto.
10032         (equiv_class_ladd): Ditto.
10033         (pointer_equiv_class): Ditto.
10034         (location_equiv_class): Ditto.
10035         (condense_visit): Rename and rewrite from label_visit to do only
10036         SCC related stuff for HU.
10037         (label_visit): Do HU work for HU.
10038         (perform_var_substitution): Update to do HU and location
10039         equivalence.
10040         (free_var_substitution_info): Update to free HU and location
10041         equivalence structures.  */
10042         (find_equivalent_node): Update for pointer but not location
10043         equivalence.
10044         (unite_pointer_equivalences): New function.
10045         (move_complex_constraints): Rewrite to only do moving.
10046         (rewrite_constraints): Split out of move_complex_constraints.
10047         (solve_graph): Use graph->size.
10048         (process_constraint_1): Add from_call argument, use it.
10049         Split *a = &b into two constraints.
10050         (process_constraint): Use new process_constraint_1.
10051         (get_constraint_for_component_ref): Handle bitmaxsize == -1 case.
10052         (get_constraint_for): Handle non-pointer integers properly.
10053         Remove code that used to handle structures.
10054         (handle_ptr_arith): Fix a few bugs in pointer arithmetic handling
10055         with unknown addends.
10056         (handle_rhs_call): New function.
10057         (find_func_aliases): Use handle_rhs_call.
10058         (set_uids_in_ptset): Add an assert.
10059         (set_used_smts): Fix bug in not considering unified vars.
10060         (compute_tbaa_pruning): Stop initing useless iteration_obstack.
10061         (compute_points_to_sets): Update for other function changes.
10062         (delete_points_to_sets): Ditto.
10063         (ipa_pta_execute): Ditto.
10064         (pass_ipa_pta): We need to update SSA after ipa_pta.
10065         
10066 2007-08-19  Jan Hubicka  <jh@suse.cz>
10067
10068         * i386.md: Replace "rim" and "mri" constraints by "g".
10069
10070 2007-08-19  Joseph Myers  <joseph@codesourcery.com>
10071
10072         * dwarf2out.c (text_section_used, cold_text_section_used,
10073         cold_text_section, dwarf2out_note_section_used): New.
10074         (dwarf2out_init): Initialize cold_text_section.
10075         (dwarf2out_switch_text_section, dwarf2out_begin_function): Call
10076         dwarf2out_note_section_used.
10077         (size_of_aranges): Only count entry for text section if it was
10078         used.  Count entry for cold text section if it was used.
10079         (output_aranges): Only output entries for text section and cold
10080         text section if they were used.
10081
10082 2007-08-19  Andrew Pinski  <pinskia@gmail.com>
10083
10084         * tree-pretty-print.c (debug_generic_expr): Add a comment about
10085         the function.
10086         (debug_generic_stmt): Likewise.
10087         (debug_tree_chain): Likewise.
10088
10089 2007-08-19  Dorit Nuzman  <dorit@il.ibm.com>
10090
10091         * tree-data-refs.c (split_constant_offset): Expose.
10092         * tree-data-refs.h (split_constant_offset): Add declaration.
10093
10094         * tree-vectorizer.h (dr_alignment_support): Renamed
10095         dr_unaligned_software_pipeline to dr_explicit_realign_optimized.
10096         Added a new value dr_explicit_realign.
10097         (_stmt_vec_info): Added new fields: dr_base_address, dr_init,
10098         dr_offset, dr_step, and dr_aligned_to, along with new access
10099         functions for these fields: STMT_VINFO_DR_BASE_ADDRESS,
10100         STMT_VINFO_DR_INIT, STMT_VINFO_DR_OFFSET, STMT_VINFO_DR_STEP, and
10101         STMT_VINFO_DR_ALIGNED_TO.
10102
10103         * tree-vectorizer.c (vect_supportable_dr_alignment): Add
10104         documentation.
10105         In case of outer-loop vectorization with non-fixed misalignment - use
10106         the dr_explicit_realign scheme instead of the optimized realignment
10107         scheme.
10108         (new_stmt_vec_info): Initialize new fields.
10109
10110         * tree-vect-analyze.c (vect_compute_data_ref_alignment): Handle the
10111         'nested_in_vect_loop' case. Change verbosity level.
10112         (vect_analyze_data_ref_access): Handle the 'nested_in_vect_loop' case.
10113         Don't fail on zero step in the outer-loop for loads.
10114         (vect_analyze_data_refs): Call split_constant_offset to calculate
10115         base, offset and init relative to the outer-loop.
10116
10117         * tree-vect-transform.c (vect_create_data_ref_ptr): Replace the unused
10118         BSI function argument with a new function argument - at_loop.
10119         Simplify the condition that determines STEP. Takes additional argument
10120         INV_P. Support outer-loop vectorization (handle the
10121         nested_in_vect_loop case), including zero step in the outer-loop. Call
10122         vect_create_addr_base_for_vector_ref with additional argument.
10123         (vect_create_addr_base_for_vector_ref): Takes additional argument LOOP.
10124         Updated function documentation. Handle the 'nested_in_vect_loop' case.
10125         Fixed and simplified calculation of step.
10126         (vectorizable_store): Call vect_create_data_ref_ptr with loop instead
10127         of bsi, and with additional argument. Call bump_vector_ptr with
10128         additional argument. Fix typos. Handle the 'nested_in_vect_loop' case.
10129         (vect_setup_realignment): Takes additional arguments INIT_ADDR and
10130         DR_ALIGNMENT_SUPPORT. Returns another value AT_LOOP. Handle the case
10131         when the realignment setup needs to take place inside the loop.
10132         Support the dr_explicit_realign scheme. Allow generating the optimized
10133         realignment scheme for outer-loop vectorization. Added documentation.
10134         (vectorizable_load): Support the dr_explicit_realign scheme. Handle
10135         the 'nested_in_vect_loop' case, including loads that are invariant in
10136         the outer-loop and the realignment schemes. Handle the case when the
10137         realignment setup needs to take place inside the loop. Call
10138         vect_setup_realignment with additional arguments.  Call
10139         vect_create_data_ref_ptr with additional argument and with loop instead
10140         of bsi. Fix 80-column overflow. Fix typos. Rename PHI_STMT to PHI.
10141         (vect_gen_niters_for_prolog_loop): Call
10142         vect_create_addr_base_for_vector_ref with additional arguments.
10143         (vect_create_cond_for_align_checks): Likewise.
10144         (bump_vector_ptr): Updated to support the new dr_explicit_realign
10145         scheme: takes additional argument bump; argument ptr_incr is now
10146         optional; updated documentation.
10147         (vect_init_vector): Takes additional argument (bsi). Use it, if
10148         available, to insert the vector initialization.
10149         (get_initial_def_for_induction): Pass additional argument in call to
10150         vect_init_vector.
10151         (vect_get_vec_def_for_operand): Likewise.
10152         (vect_setup_realignment): Likewise.
10153         (vectorizable_load): Likewise.
10154
10155 2007-08-19  Dorit Nuzman  <dorit@il.ibm.com>
10156
10157         * tree-vectorizer.h (vect_is_simple_reduction): Takes a loop_vec_info
10158         as argument instead of struct loop.
10159         (nested_in_vect_loop_p): New function.
10160         (vect_relevant): Add enum values vect_used_in_outer_by_reduction and
10161         vect_used_in_outer.
10162         (is_loop_header_bb_p): New. Used to differentiate loop-header phis
10163         from other phis in the loop.
10164         (destroy_loop_vec_info): Add additional argument to declaration.
10165
10166         * tree-vectorizer.c (supportable_widening_operation): Also check if
10167         nested_in_vect_loop_p (don't allow changing the order in this case).
10168         (vect_is_simple_reduction): Takes a loop_vec_info as argument instead
10169         of struct loop. Call nested_in_vect_loop_p and don't require
10170         flag_unsafe_math_optimizations if it returns true.
10171         (new_stmt_vec_info): When setting def_type for phis differentiate 
10172         loop-header phis from other phis.
10173         (bb_in_loop_p): New function.
10174         (new_loop_vec_info): Inner-loop phis already have a stmt_vinfo, so
10175         just update their loop_vinfo.  Order of BB traversal now matters -
10176         call dfs_enumerate_from with bb_in_loop_p.
10177         (destroy_loop_vec_info): Takes additional argument to control whether
10178         stmt_vinfo of the loop stmts should be destroyed as well.
10179         (vect_is_simple_reduction): Allow the "non-reduction" use of a
10180         reduction stmt to be defines by a non loop-header phi.
10181         (vectorize_loops): Call destroy_loop_vec_info with additional argument.
10182
10183         * tree-vect-transform.c (vectorizable_reduction): Call
10184         nested_in_vect_loop_p. Check for multitypes in the inner-loop.
10185         (vectorizable_call): Likewise.
10186         (vectorizable_conversion): Likewise.
10187         (vectorizable_operation): Likewise.
10188         (vectorizable_type_promotion): Likewise.
10189         (vectorizable_type_demotion): Likewise.
10190         (vectorizable_store): Likewise.
10191         (vectorizable_live_operation): Likewise.
10192         (vectorizable_reduction): Likewise. Also pass loop_info to
10193         vect_is_simple_reduction instead of loop.
10194         (vect_init_vector): Call nested_in_vect_loop_p.
10195         (get_initial_def_for_reduction): Likewise.
10196         (vect_create_epilog_for_reduction): Likewise.
10197         (vect_init_vector): Check which loop to work with, in case there's an
10198         inner-loop.
10199         (get_initial_def_for_inducion): Extend to handle outer-loop
10200         vectorization. Fix indentation.
10201         (vect_get_vec_def_for_operand): Support phis in the case vect_loop_def.
10202         In the case vect_induction_def get the vector def from the induction
10203         phi node, instead of calling get_initial_def_for_inducion.
10204         (get_initial_def_for_reduction): Extend to handle outer-loop 
10205         vectorization.
10206         (vect_create_epilog_for_reduction): Extend to handle outer-loop
10207         vectorization.
10208         (vect_transform_loop): Change assert to just skip this case.  Add a
10209         dump printout.
10210         (vect_finish_stmt_generation): Add a couple asserts.
10211
10212         (vect_estimate_min_profitable_iters): Multiply
10213         cost of inner-loop stmts (in outer-loop vectorization) by estimated
10214         inner-loop bound.
10215         (vect_model_reduction_cost): Don't add reduction epilogue cost in case
10216         this is an inner-loop reduction in outer-loop vectorization.
10217
10218         * tree-vect-analyze.c (vect_analyze_scalar_cycles_1): New function.
10219         Same code as what used to be vect_analyze_scalar_cycles, only with
10220         additional argument loop, and loop_info passed to
10221         vect_is_simple_reduction instead of loop.
10222         (vect_analyze_scalar_cycles): Code factored out into
10223         vect_analyze_scalar_cycles_1. Call it for each relevant loop-nest.
10224         Updated documentation.
10225         (analyze_operations): Check for inner-loop loop-closed exit-phis during
10226         outer-loop vectorization that are live or not used in the outerloop,
10227         cause this requires special handling.
10228         (vect_enhance_data_refs_alignment): Don't consider versioning for
10229         nested-loops.
10230         (vect_analyze_data_refs): Check that there are no datarefs in the
10231         inner-loop.
10232         (vect_mark_stmts_to_be_vectorized): Also consider vect_used_in_outer
10233         and vect_used_in_outer_by_reduction cases.
10234         (process_use): Also consider the case of outer-loop stmt defining an
10235         inner-loop stmt and vice versa.
10236         (vect_analyze_loop_1): New function.
10237         (vect_analyze_loop_form): Extend, to allow a restricted form of nested
10238         loops.  Call vect_analyze_loop_1.
10239         (vect_analyze_loop): Skip (inner-)loops within outer-loops that have
10240         been vectorized.  Call destroy_loop_vec_info with additional argument.
10241
10242         * tree-vect-patterns.c (vect_recog_widen_sum_pattern): Don't allow
10243         in the inner-loop when doing outer-loop vectorization. Add
10244         documentation and printout.
10245         (vect_recog_dot_prod_pattern): Likewise. Also add check for
10246         GIMPLE_MODIFY_STMT (in case we encounter a phi in the loop).
10247
10248 2007-08-18  Andrew Pinski  <pinskia@gmail.com>
10249
10250         * tree-affine.h (print_aff): New prototype.
10251         (debug_aff): Likewise.
10252         * tree-affine.c (print_aff): New function.
10253         (debug_aff): Likewise.
10254
10255 2007-08-18  Paul Brook  <paul@codesourcery.com>
10256             Joseph Myers  <joseph@codesourcery.com>
10257
10258         * common.opt (-fdebug-prefix-map=): New option.
10259         * opts.c: Include debug.h.
10260         (common_handle_option): Handle -fdebug-prefix-map.
10261         * final.c: Include ggc.h.
10262         (struct debug_prefix_map, debug_prefix_maps, add_debug_prefix_map,
10263         remap_debug_filename): New.
10264         * Makefile.in (final.o, opts.o): Update dependencies.
10265         * debug.h (remap_debug_filename, add_debug_prefix_map): Declare.
10266         * configure.ac: Check for assembler --debug-prefix-map support.
10267         * configure, config.in: Regenerate.
10268         * gcc.c (ASM_MAP): Define conditional on HAVE_AS_DEBUG_PREFIX_MAP.
10269         (ASM_DEBUG_SPEC): Include ASM_MAP.
10270         * doc/install.texi (--with-debug-prefix-map): Document.
10271         * doc/invoke.texi (-fdebug-prefix-map): Document.
10272         * dbxout.c (dbxout_init, dbxout_start_source_file,
10273         dbxout_source_file): Call remap_debug_filename.
10274         * dwarf2out.c (add_comp_dir_attribute, maybe_emit_file,
10275         dwarf2out_start_source_file, dwarf2out_finish): Call
10276         remap_debug_filename.
10277         (file_table_relative_p): Do not check d->emitted_number.
10278         * toplev.c (output_file_directive): Call remap_debug_filename.
10279         * vmsdbgout.c (write_srccorr): Call remap_debug_filename.
10280         * xcoffout.c (xcoffout_source_file): Call remap_debug_filename.
10281
10282 2007-08-17  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
10283
10284         * loop-invariant.c (find_invariants_to_move): Add missing macro
10285         argument.
10286
10287 2007-08-17  Tom Tromey  <tromey@redhat.com>
10288
10289         * tree.h (struct tree_label_decl): Removed old "java" fields.
10290
10291 2007-08-17  Richard Sandiford  <richard@codesourcery.com>
10292             Nigel Stephens  <nigel@mips.com>
10293
10294         * config/mips/sde.h (DRIVER_SELF_SPECS): Add commas.
10295         Treat -mno-data-in-code and -mcode-xonly as aliases for
10296         -mcode-readable=no and -mcode-readable=pcrel respectively.
10297         * config/mips/t-sde (TARGET_LIBGCC2_CFLAGS): Add -mcode-xonly.
10298         (MULTILIB_OPTIONS): Add -mcode-readable=no multilibs.
10299         (MULTILIB_DIRNAMES): Update accordingly.
10300
10301 2007-08-17  H.J. Lu  <hongjiu.lu@intel.com>
10302
10303         * Makefile.in (version.o): Depend on $(REVISION) only if
10304         REVISION_s is defined.
10305
10306 2007-08-17  Sa Liu  <saliu@de.ibm.com>
10307             Ulrich Weigand  <uweigand@de.ibm.com>
10308
10309         PR middle-end/32970
10310         * tree.c (reconstruct_complex_type): For a pointer to a vector,
10311         use build_qualified_type to retain qualifiers of the base type.
10312
10313 2007-08-17  Chen Liqin  <liqin@sunnorth.com.cn>
10314
10315         * config/score/score.md : Update pattern tablejump.
10316         * config/score/score.c : Update score_initialize_trampoline 
10317         function.
10318         * config/score/score.h (TRAMPOLINE_TEMPLATE): Added macro.
10319         (TRAMPOLINE_INSNS, TRAMPOLINE_SIZE) Update macro.
10320         * doc/contrib.texi: Add my entry.
10321
10322 2007-08-16  H.J. Lu  <hongjiu.lu@intel.com>
10323
10324         * Makefile.in (REVISION): New.
10325         (REVISION_c): New.
10326         (REVISION_s): New.
10327         (version.o): Also depend on $(REVISION). Add
10328         -DREVISION=$(REVISION_s).
10329
10330         * version.c (version_string): Add REVISION.
10331
10332 2007-08-16  Seongbae Park <seongbae.park@gmail.com>
10333
10334         * tree-eh.c (lower_try_finally_onedest): Reset the locus
10335         of GOTO that's relocated to a different block.
10336
10337 2007-08-16  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
10338
10339         * c-common.c (const_strip_array_types): New.
10340         * c-common.h (lang_missing_noreturn_ok_p): Delete.
10341         (const_strip_array_types): New.
10342         * c-objc-common.c (c_disregard_inline_limits,
10343         c_warn_unused_global_decl): Constify.
10344         * c-tree.h (c_disregard_inline_limits, c_warn_unused_global_decl,
10345         c_vla_type_p, c_incomplete_type_error): Likewise.
10346         * c-typeck.c (c_incomplete_type_error, c_vla_type_p): Likewise.
10347         * hooks.c (hook_bool_const_tree_false): New.
10348         * hooks.h (hook_bool_const_tree_false): Likewise.
10349         * langhooks-def.h (lhd_warn_unused_global_decl,
10350         lhd_incomplete_type_error, lhd_expr_size,
10351         lhd_tree_inlining_disregard_inline_limits,
10352         lhd_tree_inlining_auto_var_in_fn_p, lhd_tree_dump_type_quals,
10353         LANG_HOOKS_GENERIC_TYPE_P, LANG_HOOKS_TYPE_MAX_SIZE): Constify.
10354         * langhooks.c (lhd_warn_unused_global_decl,
10355         lhd_incomplete_type_error,
10356         lhd_tree_inlining_disregard_inline_limits,
10357         lhd_tree_inlining_auto_var_in_fn_p, lhd_tree_dump_type_quals,
10358         lhd_expr_size): Likewise.
10359         * langhooks.h (lang_hooks_for_tree_inlining,
10360         lang_hooks_for_tree_dump, lang_hooks_for_types,
10361         lang_hooks_for_decls, lang_hooks): Likewise.
10362         * pointer-set.c (pointer_set_t, pointer_set_create,
10363         pointer_set_contains, insert_aux, pointer_set_insert,
10364         pointer_set_traverse, pointer_map_t, pointer_map_create,
10365         pointer_map_contains, pointer_map_insert, pointer_map_traverse):
10366         Likewise.
10367         * pointer-set.h (pointer_set_contains, pointer_set_insert,
10368         pointer_set_traverse, pointer_map_contains, pointer_map_insert,
10369         pointer_map_traverse): Likewise.
10370         * predict.c (assert_is_empty): Likewise.
10371         * tree-affine.c (free_name_expansion): Likewise.
10372         * tree-cfg.c (edge_to_cases_cleanup): Likewise.
10373         * tree.c (size_in_bytes, max_int_size_in_bytes): Likewise.
10374         * tree.h (size_in_bytes, max_int_size_in_bytes): Likewise.
10375
10376 2007-08-16  Victor Kaplansky <victork@il.ibm.com>
10377
10378         * tree-vectorizer.c (new_loop_vec_info): Initialize new 
10379         field.
10380         (destroy_loop_vec_info): Add call to VEC_free.
10381         * tree-vectorizer.h (may_alias_ddrs): Define.
10382         (LOOP_VINFO_MAY_ALIAS_DDRS): Define.
10383         * tree-vect-analyze.c (vect_analyze_data_ref_dependence):
10384         Change reporting to dump.
10385         (vect_is_duplicate_ddr): New.
10386         (vect_mark_for_runtime_alias_test): New.
10387         (vect_analyze_data_ref_dependences) Add call to
10388         vect_mark_for_runtime_alias_test.
10389         (vect_enhance_data_refs_alignment): Define local variable
10390         vect_versioning_for_alias_required, don't perform
10391         peeling for alignment if versioning for alias is
10392         required.
10393         (vect_enhance_data_refs_alignment): Use
10394         PARAM_VECT_MAX_VERSION_FOR_ALIGNMENT_CHECKS instead of
10395         PARAM_VECT_MAX_VERSION_CHECKS.
10396         * tree-vect-transform.c
10397         (vect_create_cond_for_alias_checks): New.
10398         (vect_transform_loop): Add call to
10399         vect_create_cond_for_alias_checks.
10400         (vect_vfa_segment_size): New.
10401         * params.def (PARAM_VECT_MAX_VERSION_FOR_ALIGNMENT_CHECKS):
10402         Rename.
10403         (PARAM_VECT_MAX_VERSION_FOR_ALIAS_CHECKS): Define.
10404         * doc/invoke.texi
10405         (vect-max-version-for-alignment-checks): Document.
10406         (vect-max-version-for-alias-checks): Document.
10407         (vect-max-version-checks): Remove.
10408
10409 2007-08-16  Uros Bizjak  <ubizjak@gmail.com>
10410
10411         * config/i386/i386.md (*rep_movdi_rex64): Emit "rep" prefix on
10412         the same line as the instruction for all asm dialects.
10413         (*rep_movsi): Ditto.
10414         (*rep_movsi_rex64): Ditto.
10415         (*rep_movqi): Ditto.
10416         (*rep_movqi_rex64): Ditto.
10417         (*rep_stosdi_rex64): Ditto.
10418         (*rep_stossi): Ditto.
10419         (*rep_stossi_rex64): Ditto.
10420         (*rep_stosqi): Ditto.
10421         (*rep_stosqi_rex64): Ditto.
10422         (*cmpstrnqi_nz_1): Ditto.
10423         (*cmpstrnqi_nz_rex_1): Ditto.
10424         (*cmpstrnqi_1): Ditto.
10425         (*cmpstrnqi_rex_1): Ditto.
10426         (*strlenqi_1): Ditto.
10427         (*strlenqi_rex_1): Ditto.
10428         * config/i386/sync.md (*sync_compare_and_swap<mode>): Emit "lock"
10429         prefix on the same line as the instruction for all asm dialects.
10430         (sync_double_compare_and_swap<mode>): Ditto.
10431         (*sync_double_compare_and_swapdi_pic): Ditto.
10432         (*sync_compare_and_swap_cc<mode>): Ditto.
10433         (sync_double_compare_and_swap_cc<mode>): Ditto.
10434         (*sync_double_compare_and_swap_ccdi_pic): Ditto.
10435         (sync_old_add<mode>): Ditto.
10436         (sync_add<mode>): Ditto.
10437         (sync_sub<mode>): Ditto.
10438         (sync_ior<mode>): Ditto.
10439         (sync_and<mode>): Ditto.
10440         (sync_xor<mode>): Ditto.
10441
10442 2007-08-16  Richard Sandiford  <richard@codesourcery.com>
10443
10444         PR middle-end/32897
10445         * reload.c (find_reloads): Check that the memory returned by
10446         find_reloads_toplev was not the result of forcing a constant
10447         to memory.
10448         (find_reloads_toplev): Always use simplify_gen_subreg to get
10449         the subreg of a constant.  If the result is also a constant,
10450         but not a legitimate one, force it into the constant pool
10451         and reload its address.
10452
10453 2007-08-15  David Edelsohn  <edelsohn@gnu.org>
10454
10455         * config/rs6000/rs6000.c (rs6000_rtx_costs): Add CLZ, CTZ, and
10456         POPCOUNT.
10457
10458 2007-08-15  Daniel Jacobowitz  <dan@codesourcery.com>
10459
10460         * config/rs6000/rs6000.c (rs6000_file_start): Output a .gnu_attribute
10461         directive for the current vector ABI.
10462
10463 2007-08-15  Steve Ellcey  <sje@cup.hp.com>
10464
10465         PR target/32963
10466         * caller-save.c (reg_save_code): Set invalide status on restore code.
10467         
10468 2007-08-15  Diego Novillo  <dnovillo@google.com>
10469
10470         * tree-ssa-alias.c (compute_memory_partitions): Use
10471         alias_bitmap_obstack to allocate bitmaps.
10472         (reset_alias_info): Factor out of init_alias_info.
10473         Mark all name tags not associated to an SSA name for renaming.
10474         (init_alias_info): Call it.
10475         (create_name_tags): Tidy.  Add comments.
10476         (dump_points_to_info_for): Do not call get_mem_sym_stats_for.
10477
10478 2007-08-15  Maxim Kuvyrkov  <maxim@codesourcery.com>
10479
10480         * config/mips/mips.c (vr4130_swap_insns_p): Use new interface to
10481         scheduler dependencies.
10482
10483 2007-08-15  Rask Ingemann Lambertsen  <rask@sygehus.dk>
10484
10485         * config/i386/i386.md (subsi3_carry_zext): Remove "m" constraint for
10486         "register_operand".
10487         (*iorsi_1_zext): Likewise.
10488         (*iorsi_1_zext_imm): Likewise.
10489         * config/i386/sse.md: (*sse4_1_extractps): Use "nonimmediate_operand"
10490         with "rm"/"xm" constraint.
10491         (sse2_vmsqrtv2df2): Likewise.
10492
10493 2007-08-15  Jakub Jelinek  <jakub@redhat.com>
10494
10495         PR middle-end/33074
10496         * emit-rtl.c (try_split): Use INSN_LIST instead of EXPR_LIST for
10497         REG_LIBCALL note.
10498
10499 2007-08-14  Daniel Berlin  <dberlin@dberlin.org>
10500
10501         * tree-pass.h (PROP_pta): Removed.
10502         (TODO_rebuild_alias): New.
10503         (pass_may_alias): Removed.
10504         * tree-ssa-ccp.c (execute_fold_all_builtins): Only rebuild
10505         aliasing if we changed something.
10506         * tree-ssa-alias.c (compute_may_aliases): Make non-static.  Update
10507         SSA internally.
10508         (pass_may_alias): Removed.
10509         (create_structure_vars): Return TODO_rebuild_alias.
10510         * tree-ssa-pre.c (do_pre): Return TODO_rebuild_alias.
10511         * tree-sra.c (tree_sra): Only rebuild aliasing if something
10512         changed.
10513         (tree_sra_early): We never affect aliasing right now.
10514         * tree-flow.h (compute_may_aliases): New prototype.
10515         * passes.c: Remove pass_may_alias from the passes.
10516         (execute_function_todo): Support TODO_rebuild_alias.    
10517
10518 2007-08-14  Kai Tietz  <kai.tietz@onevision.com>
10519
10520         * i386.c: (legitimize_address): Move dllimported variable check
10521         infront of legitimizing pic address of CONST symbols.
10522
10523 2007-08-14  Steve Ellcey  <sje@cup.hp.com>
10524
10525         PR tree-optimization/32941
10526         * tree-eh.c (struct leh_tf_state): Add goto_queue_map field.
10527         (goto_queue_cmp): Remove.
10528         (find_goto_replacement): Change search method.
10529         (maybe_record_in_goto_queue): Add assert.
10530         (lower_try_finally): Remove qsort call, add pointer_map_destroy call.
10531         * Makefile.in (tree-eh.o): Add pointer-set.h dependency.
10532
10533 2007-08-14  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
10534
10535         * alias.c (component_uses_parent_alias_set): Constify.
10536         * alias.h (component_uses_parent_alias_set): Likewise.
10537         * cfgrtl.c (print_rtl_with_bb): Likewise.
10538         * double-int.c (tree_to_double_int, double_int_fits_to_tree_p,
10539         mpz_get_double_int): Likewise.
10540         * double-int.h (double_int_fits_to_tree_p, tree_to_double_int,
10541         mpz_get_double_int): Likewise.
10542         * expr.c (is_aligning_offset, undefined_operand_subword_p,
10543         mostly_zeros_p, all_zeros_p, safe_from_p, is_aligning_offset):
10544         Likewise.
10545         * expr.h (safe_from_p): Likewise.
10546         * gimple-low.c (try_catch_may_fallthru, block_may_fallthru):
10547         Likewise.
10548         * gimplify.c (should_carry_locus_p, zero_sized_field_decl,
10549         zero_sized_type, goa_lhs_expr_p): Likewise.
10550         * omp-low.c (is_variable_sized, use_pointer_for_field): Likewise.
10551         * rtl.h (print_rtl_with_bb): Likewise.
10552         * sched-vis.c (print_exp, print_value, print_pattern): Likewise.
10553         * tree-cfg.c (const_first_stmt, const_last_stmt): New.
10554         * tree-flow-inline.h (bb_stmt_list): Constify.
10555         (cbsi_start, cbsi_last, cbsi_end_p, cbsi_next, cbsi_prev,
10556         cbsi_stmt): New.
10557         * tree-flow.h (const_block_stmt_iterator, cbsi_start, cbsi_last,
10558         const_first_stmt, const_last_stmt): New.
10559         (block_may_fallthru, empty_block_p): Constify.
10560         * tree-iterator.c (EXPR_FIRST_BODY, EXPR_LAST_BODY,
10561         EXPR_ONLY_BODY): New.
10562         (expr_first, expr_last, expr_only): Use macro for body.
10563         (const_expr_first, const_expr_last, const_expr_only): New.
10564         * tree-iterator.h (const_tree_stmt_iterator, ctsi_start,
10565         ctsi_last, ctsi_end_p, ctsi_one_before_end_p, ctsi_next,
10566         ctsi_prev, ctsi_stmt): New.
10567         * tree-scalar-evolution.c (get_loop_exit_condition): Constify.
10568         * tree-scalar-evolution.h (get_loop_exit_condition): Likewise.
10569         * tree-ssa-loop-niter.c (loop_only_exit_p,
10570         derive_constant_upper_bound): Likewise.
10571         * tree-ssa-phiopt.c (empty_block_p): Likewise.
10572         * tree-ssa-threadupdate.c (redirection_block_p): Likewise.
10573         * tree-vectorizer.c (slpeel_can_duplicate_loop_p): Likewise.
10574         * tree-vectorizer.h (slpeel_can_duplicate_loop_p): Likewise.
10575         * tree-vrp.c (vrp_bitmap_equal_p): Likewise.
10576         * tree.c (get_type_static_bounds): Likewise.
10577         * tree.h (const_expr_first, const_expr_last, const_expr_only): New.
10578         (get_type_static_bounds): Constify.
10579
10580 2007-08-14  Rask Ingemann Lambertsen  <rask@sygehus.dk>
10581
10582         PR target/30315
10583         * config/i386/i386.h (CANONICALIZE_COMPARISON): New.
10584         * config/i386/i386.md (plusminus)(addsub)(SWI): New.
10585         (*<addsub><mode>3_cc_overflow): New.
10586         (*add<mode>3_cconly_overflow): New.
10587         (*sub<mode>3_cconly_overflow): New.
10588         (*<addsub>si3_zext_cc_overflow): New.
10589         * config/i386/predicates.md (fcmov_comparison_operator): Accept
10590         CCCmode for LTU, GTU, LEU and GEU.
10591         (ix86_comparison_operator): Likewise.
10592         (ix86_carry_flag_operator): Carry flag is set if LTU or GTU in CCCmode.
10593         * config/i386/i386.c (put_condition_code): Support CCCmode.
10594         (ix86_cc_mode): Use CCCmode when testing for overflow of PLUS
10595         or MINUS expressions.
10596
10597 2007-08-14  Andrew Pinski  <pinskia@gmail.com>
10598
10599         PR c/30428
10600         * c-typeck.c (build_binary_op): Disallow vector float types with
10601         BIT_IOR_EXPR, BIT_AND_EXPR, and BIT_XOR_EXPR.
10602
10603 2007-08-14  Maxim Kuvyrkov  <maxim@codesourcery.com>
10604
10605         * sched-int.h (struct _dep): Rename field 'kind' to 'type'.
10606         (DEP_KIND): Rename to DEP_TYPE.  Update all uses.
10607         (dep_def): New typedef.
10608         (init_dep_1, sd_debug_dep): Declare functions.
10609         (DEP_LINK_KIND): Rename to DEP_LINK_TYPE.
10610         (debug_dep_links): Remove.
10611         (struct _deps_list): New field 'n_links'.
10612         (DEPS_LIST_N_LINKS): New macro.
10613         (FOR_EACH_DEP_LINK): Remove.
10614         (create_deps_list, free_deps_list, delete_deps_list): Remove
10615         declaration.
10616         (deps_list_empty_p, debug_deps_list, add_back_dep_to_deps_list): Ditto.
10617         (find_link_by_pro_in_deps_list, find_link_by_con_in_deps_list): Ditto.
10618         (copy_deps_list_change_con, move_dep_link): Ditto.
10619         (struct haifa_insn_data): Split field 'back_deps' into 'hard_back_deps'
10620         and 'spec_back_deps'.  New field 'resolved_forw_deps'.  Remove field
10621         'dep_count'.
10622         (INSN_BACK_DEPS): Remove.
10623         (INSN_HARD_BACK_DEPS, INSN_SPEC_BACK_DEPS, INSN_RESOLVED_FORW_DEPS):
10624         New macros.
10625         (INSN_DEP_COUNT): Remove.
10626         (enum DEPS_ADJUST_RESULT): Add new constant DEP_NODEP.  Fix comments.
10627         (spec_info, haifa_recovery_block_was_added_during_scheduling_p):
10628         Declare global variables.
10629         (deps_pools_are_empty_p, sched_free_deps): Declare functions.
10630         (add_forw_dep, compute_forward_dependences): Remove declarations.
10631         (add_or_update_back_dep, add_or_update_back_forw_dep): Ditto.
10632         (add_back_forw_dep, delete_back_forw_dep): Ditto.
10633         (debug_ds, sched_insn_is_legitimate_for_speculation_p): Declare
10634         functions.
10635         (SD_LIST_NONE, SD_LIST_HARD_BACK, SD_LIST_SPEC_BACK, SD_LIST_FORW):
10636         New constants.
10637         (SD_LIST_RES_BACK, SD_LIST_RES_FORW, SD_LIST_BACK): Ditto.
10638         (sd_list_types_def): New typedef.
10639         (sd_next_list): Declare function.
10640         (struct _sd_iterator): New type.
10641         (sd_iterator_def): New typedef.
10642         (sd_iterator_start, sd_iterator_cond, sd_iterator_next): New inline
10643         functions.
10644         (FOR_EACH_DEP): New cycle wrapper.
10645         (sd_lists_size, sd_lists_empty_p, sd_init_insn, sd_finish_insn):
10646         Declare functions.
10647         (sd_find_dep_between, sd_add_dep, sd_add_or_update_dep): Ditto.
10648         (sd_resolve_dep, sd_copy_back_deps, sd_delete_dep, sd_debug_lists):
10649         Ditto.
10650
10651         * sched-deps.c (init_dep_1): Make global.
10652         (DUMP_DEP_PRO, DUMP_DEP_CON, DUMP_DEP_STATUS, DUMP_DEP_ALL): New
10653         constants.
10654         (dump_dep): New static function.
10655         (dump_dep_flags): New static variable.
10656         (sd_debug_dep): New function.
10657         (add_to_deps_list, remove_from_deps_list): Update 'n_links' field of
10658         the list.
10659         (move_dep_link): Use remove_from_deps_list (), instead of
10660         detach_dep_link ().
10661         (dep_links_consistent_p, dump_dep_links, debug_dep_links): Remove.
10662         (dep_link_is_detached_p): New static function.
10663         (deps_obstack, dl_obstack, dn_obstack): Remove.  Use dn_pool, dl_pool
10664         instead.
10665         (dn_pool, dl_pool): New alloc_pools.
10666         (dn_pool_diff, dl_pool_diff): New static variables.
10667         (create_dep_node, delete_dep_node): New static function.
10668         (create_deps_list): Make it static.  Use alloc_pool 'dl_pool'.
10669         (deps_list_empty_p): Make it static.  Use 'n_links' field.
10670         (deps_pools_are_empty_p): New static function.
10671         (alloc_deps_list, delete_deps_list): Remove.
10672         (dump_deps_list, debug_deps_list, add_back_dep_to_deps_list): Remove.
10673         (find_link_by_pro_in_deps_list, find_link_by_con_in_deps_list): Ditto.
10674         (copy_deps_list_change_con): Remove.  Use sd_copy_back_deps () instead.
10675         (forward_dependency_cache): Remove.
10676         (maybe_add_or_update_back_dep_1, add_or_update_back_dep_1): Remove
10677         'back' from the names.  Change signature to use dep_t instead of
10678         equivalent quad.
10679         (add_back_dep): Ditto.  Make global.
10680         (check_dep_status): Rename to check_dep ().
10681         (sd_next_list, sd_lists_size, sd_lists_empty_p, sd_init_insn):
10682         New functions.
10683         (sd_finish_insn): Ditto.
10684         (sd_find_dep_between_no_cache): New static function.
10685         (sd_find_dep_between): New function.
10686         (ask_dependency_caches, set_dependency_caches): New static functions.
10687         (update_dependency_caches, change_spec_dep_to_hard, update_dep): Ditto.
10688         (add_or_update_dep_1): Separate pieces of functionality into
10689         ask_dependency_caches (), update_dependency_caches (),
10690         change_spec_dep_to_hard (), update_dep ().
10691         (get_back_and_forw_lists): New static function.
10692         (sd_add_dep): Separate setting of dependency caches into
10693         set_dependency_caches ().
10694         (sd_add_or_update_dep, sd_resolve_dep, sd_copy_back_deps):
10695         New functions.
10696         (sd_delete_dep): Ditto.
10697         (DUMP_LISTS_SIZE, DUMP_LISTS_DEPS, DUMP_LISTS_ALL): New constants.
10698         (dump_lists): New static function.
10699         (sd_debug_lists): New debug function.
10700         (delete_all_dependences, fixup_sched_groups): Update to use
10701         sd_* infrastructure.
10702         (sched_analyze_2): Create data-speculative dependency only if
10703         data-speculation is enabled.
10704         (sched_analyze_insn): If insn cannot be speculative, make all its
10705         dependencies non-speculative.
10706         (sched_analyze): Use sd_init_insn ().
10707         (add_forw_dep, compute_forward_dependencies): Remove.
10708         (delete_dep_nodes_in_back_deps): New static function.
10709         (sched_free_deps): New function.
10710         (init_dependency_caches): Init alloc_pools.
10711         (extend_depedency_caches): Update after removing of
10712         forward_dependency_cache.
10713         (free_dependency_caches): Ditto.  Free alloc_pools.
10714         (adjust_add_sorted_back_dep, adjust_back_add_forw_dep): Remove.
10715         (delete_forw_dep, add_or_update_back_dep, add_or_update_back_forw_dep):
10716         Ditto.
10717         (add_back_forw_dep, delete_back_forw_dep): Ditto.
10718         (add_dependence): Use init_dep ().
10719         (get_dep_weak_1): New static function.
10720         (get_dep_weak): Move logic to get_dep_weak_1 ().
10721         (dump_ds): New static function moved from haifa-sched.c:
10722         debug_spec_status ().
10723         (debug_ds): New debug function.
10724         (check_dep_status): Rename to check_dep ().  Update to check whole
10725         dependencies.
10726
10727         * haifa-sched.c (spec_info): Make global.
10728         (added_recovery_block_p): Rename to
10729         'haifa_recovery_block_was_added_during_current_schedule_block_p'.
10730         (haifa_recovery_block_was_added_during_scheduling_p): New variable.
10731         (dep_cost, priority, rank_for_schedule, schedule_insn): Update
10732         to use new interfaces.
10733         (ok_for_early_queue_removal): Ditto.
10734         (schedule_block): Initialize logical uids of insns emitted by the
10735         target.
10736         (sched_init): Initialize new variable.
10737         (fix_inter_tick, try_ready, fix_tick_ready): Update to use new
10738         interfaces.
10739         (extend_global): Initialize insn data.
10740         (init_h_i_d): Remove code that is now handled in sd_init_insn ().
10741         (process_insn_forw_deps_be_in_spec): Change signature.  Update to use
10742         new interfaces.
10743         (add_to_speculative_block): Update to use new interfaces.
10744         (create_recovery_block): Set new variables.
10745         (create_check_block_twin, fix_recovery_deps): Update to use new
10746         interfaces.
10747         (sched_insn_is_legitimate_for_speculation_p): New function.
10748         (speculate_insn): Move checking logic to
10749         sched_insn_is_legitimate_for_speculation_p ().
10750         (sched_remove_insn): Finalize sched-deps information of instruction.
10751         (clear_priorities, add_jump_dependencies): Update to use new
10752         interfaces.
10753         (debug_spec_status): Rename to dump_ds () and move to sched-deps.c.
10754         
10755         * sched-rgn.c (set_spec_fed, find_conditional_protection): Update
10756         to use new interfaces.
10757         (is_conditionally_protected, is_pfree, is_prisky) Ditto.
10758         (new_ready): Try to use control speculation only if it is available.
10759         (add_branch_dependences): Update to use new interfaces.
10760         (compute_block_backward_dependences): Rename to
10761         compute_block_dependences ().  Call
10762         targetm.sched.dependencies_evaluation_hook ().
10763         (free_block_dependencies): New static function.
10764         (debug_dependencies): Update to use new interfaces.
10765         (schedule_region): Remove separate computation of forward dependencies.
10766         Move call of targetm.sched.dependencies_evaluation_hook () to
10767         compute_block_dependences ().  Free dependencies at the end of
10768         scheduling the region.
10769
10770         * sched-ebb.c (earliest_block_with_similiar_load): Update to use
10771         new interfaces.
10772         (add_deps_for_risky_insns): Ditto.
10773         (schedule_ebb): Remove separate computation of forward dependencies.
10774         Free dependencies at the end of scheduling the ebb.
10775
10776         * ddg.c (create_ddg_dependence): Update to use new interfaces.
10777         (build_intra_loop_deps): Ditto.  Remove separate computation of
10778         forward dependencies.  Free sched-deps dependencies.
10779
10780         * config/ia64/ia64.c (ia64_dependencies_evaluation_hook): Update
10781         to use new interfaces.
10782         (ia64_dfa_new_cycle, ia64_gen_check): Ditto.
10783
10784         * config/rs6000/rs6000.c (rs6000_is_costly_dependence): Update to use
10785         new interfaces.
10786         (is_costly_group): Ditto.
10787
10788 2007-08-14  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
10789
10790         * alias.c (rtx_equal_for_memref_p): Constify.
10791         * basic-block.h (const_edge, const_basic_block): New.
10792         (reg_set_to_hard_reg_set, dfs_enumerate_from, single_succ_p,
10793         single_pred_p, single_succ_edge, single_pred_edge, single_succ,
10794         single_pred, maybe_hot_bb_p, probably_cold_bb_p,
10795         probably_never_executed_bb_p, edge_probability_reliable_p,
10796         br_prob_note_reliable_p, forwarder_block_p, flow_nodes_print,
10797         inside_basic_block_p, control_flow_insn_p, dominated_by_p):
10798         Likewise.
10799         * bb-reorder.c (better_edge_p, push_to_next_round_p): Likewise.
10800         * bt-load.c (basic_block_freq, insn_sets_btr_p, can_move_up):
10801         Likewise.
10802         * cfganal.c (flow_active_insn_p, forwarder_block_p,
10803         flow_nodes_print, dfs_enumerate_from): Likewise.
10804         * cfgbuild.c (count_basic_blocks, inside_basic_block_p,
10805         control_flow_insn_p, count_basic_blocks): Likewise.
10806         * cfgloop.c (flow_bb_inside_loop_p, glb_enum_p,
10807         get_loop_body_with_size, loop_exit_edge_p): Likewise.
10808         * cfgloop.h (flow_bb_inside_loop_p, num_loop_insns,
10809         average_num_loop_insns, loop_exit_edge_p,
10810         just_once_each_iteration_p, can_duplicate_loop_p): Likewise.
10811         * cfgloopanal.c (just_once_each_iteration_p, num_loop_insns,
10812         average_num_loop_insns, seq_cost): Likewise.
10813         * cfgloopmanip.c (rpe_enum_p, can_duplicate_loop_p): Likewise.
10814         * dominance.c (dominated_by_p): Likewise.
10815         * emit-rtl.c (validate_subreg): Likewise.
10816         * except.c (can_throw_internal, can_throw_external): Likewise.
10817         * except.h (can_throw_internal, can_throw_external): Likewise.
10818         * gcse.c (gcse_constant_p, oprs_unchanged_p, oprs_anticipatable_p,
10819         oprs_available_p, hash_expr, expr_equiv_p, oprs_not_set_p,
10820         compute_transp, load_killed_in_block_p, reg_killed_on_edge,
10821         simple_mem, store_ops_ok, load_kills_store, find_loads,
10822         store_killed_in_insn, store_killed_after, store_killed_before,
10823         gcse_mem_operand, implicit_set_cond_p, store_killed_in_pat):
10824         Likewise.
10825         * ifcvt.c (count_bb_insns, cheap_bb_rtx_cost_p, noce_operand_ok,
10826         noce_mem_write_may_trap_or_fault_p): Likewise.
10827         * pointer-set.c (pointer_set_contains, pointer_map_contains):
10828         Likewise.
10829         * pointer-set.h (pointer_set_contains, pointer_map_contains):
10830         Likewise.
10831         * predict.c (can_predict_insn_p, maybe_hot_bb_p,
10832         probably_cold_bb_p, probably_never_executed_bb_p,
10833         edge_probability_reliable_p, br_prob_note_reliable_p,
10834         can_predict_insn_p): Likewise.
10835         * regclass.c (reg_set_to_hard_reg_set): Likewise.
10836         * resource.c (return_insn_p): Likewise.
10837         * rtl.h (reg_set_between_p, reg_set_p, validate_subreg):
10838         Likewise.
10839         * rtlanal.c (reg_set_between_p, reg_set_p): Likewise.
10840         * tracer.c (count_insns, ignore_bb_p, better_p): Likewise.
10841         * tree-cfg.c (verify_gimple_unary_expr, verify_gimple_binary_expr,
10842         verify_gimple_modify_stmt): Likewise.
10843         * tree-chrec.c (is_not_constant_evolution,
10844         is_multivariate_chrec_rec, is_multivariate_chrec,
10845         chrec_contains_symbols, chrec_contains_undetermined,
10846         tree_contains_chrecs, evolution_function_is_affine_multivariate_p,
10847         evolution_function_is_univariate_p, avoid_arithmetics_in_type_p,
10848         eq_evolutions_p, scev_direction): Likewise.
10849         * tree-chrec.h (automatically_generated_chrec_p, tree_is_chrec,
10850         eq_evolutions_p, is_multivariate_chrec, chrec_contains_symbols,
10851         chrec_contains_symbols_defined_in_loop,
10852         chrec_contains_undetermined, tree_contains_chrecs,
10853         evolution_function_is_affine_multivariate_p,
10854         evolution_function_is_univariate_p, chrec_zerop,
10855         evolution_function_is_constant_p, evolution_function_is_affine_p,
10856         evolution_function_is_affine_or_constant_p,
10857         tree_does_not_contain_chrecs, chrec_type): Likewise.
10858         * tree-data-ref.c (tree_fold_divides_p,
10859         object_address_invariant_in_loop_p, dr_may_alias_p,
10860         ziv_subscript_p, siv_subscript_p, gcd_of_steps_may_divide_p,
10861         same_access_functions, constant_access_functions,
10862         access_functions_are_affine_or_constant_p, find_vertex_for_stmt):
10863         Likewise.
10864         * tree-flow.h (scev_direction): Likewise.
10865         * tree-gimple.c (is_gimple_stmt): Likewise.
10866         * tree-outof-ssa.c (identical_copies_p, identical_stmt_lists_p):
10867         Likewise.
10868         * tree-pretty-print.c (op_prio): Likewise.
10869         * tree-scalar-evolution.c (chrec_contains_symbols_defined_in_loop,
10870         analyzable_condition, backedge_phi_arg_p): Likewise.
10871         * tree-scalar-evolution.h (get_chrec_loop): Likewise.
10872         * tree-ssa-operands.c (get_name_decl, operand_build_cmp): Likewise.
10873         * tree-ssa-threadupdate.c (dbds_continue_enumeration_p):
10874         Likewise.
10875
10876 2007-08-13  Dan Hipschman  <dsh@google.com>
10877
10878         PR c/32953
10879         * c-format.c (check_format_arg): Move check for zero-length
10880         format strings below the check for unterminated strings.
10881
10882 2007-08-13  Andrew Pinski  <pinskia@gmail.com>
10883
10884         PR C/30427
10885         * c-typeck.c (build_unary_op <case BIT_NOT_EXPR>): Reject vector float
10886         types.
10887
10888 2007-08-13  Nick Clifton  <nickc@redhat.com>
10889
10890         * config/arm/arm_neon.h: Revert GPLv3 patch to this file.
10891
10892 2007-08-12  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
10893
10894         PR fortran/32860
10895         * c-format.c (gcc_gfc_length_specs): New array.
10896         (gcc_gfc_char_table): Add unsigned specifier, and references to
10897         the l length modifier.
10898         (format_types_orig): Use the new gcc_gfc_length_specs.
10899
10900 2007-08-12  Sa Liu  <saliu@de.ibm.com>
10901
10902         * emit-rtl.c (try_split): Relink the insns with REG_LIBCALL note
10903         and with REG_RETVAL note after split.
10904
10905 2007-08-11  David Daney  <ddaney@avtrex.com>
10906
10907         * config/mips/mips.c (mips_sched_reorder): Mark cycle parameter
10908         as ATTRIBUTE_UNUSED.
10909
10910 2007-08-11  David Edelsohn  <edelsohn@gnu.org>
10911             Segher Boessenkool  <segher@kernel.crashing.org>
10912
10913         * config/rs6000/rs6000.h (CC1_CPU_SPEC): Define as empty string if
10914         HAVE_LOCAL_CPU_DETECT not defined.
10915
10916 2007-08-11  Jan Hubicka  <jh@suse.cz>
10917
10918         * cgraphunit.c (record_cdtor_fn): Declare all cdtors always inlined.
10919         (cgraph_process_new_functions): Honor previous value of
10920         disregard_inline_limits.
10921         * ipa-inline.c (compute_inline_parameters): Likewise.
10922
10923 2007-08-11  Ian Lance Taylor  <iant@google.com>
10924
10925         * alias.h (alias_set_type): Define new type.
10926         (ALIAS_SET_MEMORY_BARRIER): Use it.
10927         * rtl.h: Include alias.h.
10928         (struct mem_attrs): Use alias_set_type.
10929         * tree.h: Include alias.h
10930         (struct tree_type): Use alias_set_type.
10931         (struct tree_struct_field_tag): Likewise.
10932         (struct tree_decl_common): Likewise.
10933         * alias.c (struct alias_set_entry): Use alias_set_type.
10934         (get_alias_set_entry, alias_set_subset_of): Likewise.
10935         (alias_sets_conflict_p): Likewise.
10936         (alias_sets_must_conflict_p): Likewise.
10937         (objects_must_conflict_p): Likewise.
10938         (get_alias_set, new_alias_set): Likewise.
10939         (record_alias_subset, record_component_aliases): Likewise.
10940         (varargs_set, frame_set): Change to alias_set_type.
10941         (get_varargs_alias_set): Use alias_set_type.
10942         (get_frame_alias_set): Likewise.
10943         * builtins.c (setjmp_alias_set): Change to alias_set_type.
10944         * dse.c (struct store_info): Use alias_set_type.
10945         (struct read_info, struct clear_alias_mode_holder): Likewise.
10946         (clear_alias_set_lookup, canon_address): Likewise.
10947         (record_store, check_mem_read_rtx): Likewise.
10948         (dse_record_singleton_alias_set): Likewise.
10949         (dse_invalidate_singleton_alias_set): Likewise.
10950         * emit-rtl.c (get_mem_attrs): Likewise.
10951         (set_mem_attributes_minus_bitpos): Likewise.
10952         (set_mem_alias_set): Likewise.
10953         * expr.c (store_constructor_field, store_field): Likewise.
10954         * gimplify.c (struct gimplify_init_ctor_preeval_data): Likewise.
10955         * langhooks.c (lhd_get_alias_set): Likewise.
10956         * langhooks-def.h (lhd_get_alias_set): Likewise.
10957         * reload1.c (alter_reg): Likewise.
10958         * tree-flow.h (struct fieldoff): Likewise.
10959         * tree-ssa-alias.c (struct alias_map_d): Likewise.
10960         (may_alias_p, get_smt_for, create_sft): Likewise.
10961         * tree-ssa-alias-warnings.c (nonstandard_alias_types_p): Likewise.
10962         * tree-ssa-structalias.c (set_uids_in_ptset): Likewise.
10963         (merge_smts_into): Likewise.
10964         * varasm.c (const_alias_set): Likewise.
10965         * c-common.c (strict_aliasing_warning): Likewise.
10966         (c_common_get_alias_set): Likewise.
10967         * dse.h (dse_record_singleton_alias_set): Update declaration.
10968         (dse_invalidate_singleton_alias_set): Likewise.
10969         * emit-rtl.h (set_mem_alias_set): Likewise.
10970         * c-common.h (c_common_get_alias_set): Likewise.
10971         * print-rtl.c (print_rtx): Cast MEM_ALIAS_SET when printing it.
10972         * print-tree.c (print_node): Likewise.
10973         * config/alpha/alpha.c (alpha_sr_alias_set): Change to
10974         alias_set_type.
10975         (alpha_setup_incoming_varargs): Use alias_set_type.
10976         * config/i386/i386.c (setup_incoming_varargs_64): Use
10977         alias_set_type.
10978         (setup_incoming_varargs_ms_64): Likewise.
10979         (ix86_GOT_alias_set): Likewise.
10980         * config/mn10300/mn10300.c (mn10300_builtin_saveregs): Likewise.
10981         * config/rs6000/rs6000.c (setup_incoming_varargs): Likewise.
10982         (set): Change to alias_set_type.
10983         (get_TOC_alias_set): Use alias_set_type.
10984         * config/rs6000/rs6000-protos.h (get_TOC_alias_set): Update
10985         declaration.
10986         * config/sh/sh.c (sh_builtin_saveregs): Use alias_set_type.
10987         * config/sparc/sparc.c (sparc_sr_alias_set): Change to
10988         alias_set_type.
10989         (struct_value_alias_set): Likewise.
10990         * Makefile.in (GTFILES): Add $(srcdir)/alias.h.
10991
10992 2007-08-11  Richard Sandiford  <richard@codesourcery.com>
10993
10994         * config/vxworks-dummy.h (TARGET_VXWORKS): Define.
10995         * config/vxworks.h (TARGET_VXWORKS): Override.
10996         * config/mips/mips.h (TARGET_CPU_CPP_BUILTINS): Don't define
10997         "mips" if TARGET_VXWORKS.
10998
10999 2007-08-11  Richard Sandiford  <richard@codesourcery.com>
11000
11001         * calls.c (avoid_likely_spilled_reg): New function.
11002         (expand_call): Use it.
11003
11004 2007-08-11  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
11005
11006         * c-typeck.c (build_c_cast): Add OPT_Wcast_qual to warnings.
11007
11008 2007-08-10  Adam Nemet  <anemet@caviumnetworks.com>
11009
11010         * config/mips/predicates.md (const_call_insn_operand): Invoke
11011         SYMBOL_REF_LONG_CALL_P only on SYMBOL_REFs.
11012
11013 2007-08-10  David Edelsohn  <edelsohn@gnu.org>
11014
11015         PR target/33042
11016         * config/rs6000/driver-rs6000.c: Include link.h.
11017         Use ElfW instead of wordsize-specif typedef.
11018
11019 2007-08-10  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
11020
11021         * system.h (CONST_CAST): New.
11022         * c-decl.c (c_make_fname_decl): Use it.
11023         * c-lex.c (cb_ident, lex_string): Likewise.
11024         * c-typeck.c (free_all_tagged_tu_seen_up_to): Likewise.
11025         * gcc.c (set_spec, read_specs, for_each_path, execute, do_spec_1,
11026         give_switch, set_multilib_dir): Likewise.
11027         * gengtype-parse.c (string_seq, typedef_name): Likewise.
11028         * passes.c (execute_one_pass): Likewise.
11029         * prefix.c (update_path): Likewise.
11030         * pretty-print.c (pp_base_destroy_prefix): Likewise.
11031         * tree.c (build_string): Likewise.
11032
11033 2007-08-10  Aldy Hernandez  <aldyh@redhat.com>
11034
11035         * tree-flow-inline.h (is_exec_stmt): Remove.
11036         (is_label_stmt): Remove.
11037         * tree-flow.h: Remove prototypes for is_exec_stmt, get_filename, and
11038         is_label_stmt.
11039
11040 2007-08-10  Andreas Krebbel  <krebbel1@de.ibm.com>
11041
11042         * lower-subreg.c (resolve_shift_zext): Don't adjust
11043         src_reg_num for wordmode operands.
11044
11045 2007-08-10  Sandra Loosemore  <sandra@codesourcery.com>
11046             David Ung  <davidu@mips.com>
11047
11048         * config/mips/mips.c (TARGET_SCHED_INIT): Define.
11049         (TARGET_SCHED_REORDER2): Define.
11050         (mips_maybe_swap_ready): New.
11051         (mips_last_74k_agen_insn): New.
11052         (mips_74k_agen_init): New.
11053         (mips_74k_agen_reorder): New function to group loads and stores
11054         in the ready queue.
11055         (mips_sched_init): New.  
11056         (mips_sched_reorder): Don't do initialization here.  Call
11057         mips_74k_agen_reorder.
11058         (mips_variable_issue): Call mips_74k_agen_init.
11059
11060 2007-08-10  Aldy Hernandez  <aldyh@redhat.com>
11061
11062         * tree-flow-inline.h (get_filename): Remove.
11063
11064 2007-08-10  Richard Sandiford  <richard@codesourcery.com>
11065
11066         * config/mips/mips-protos.h (mips_address_insns): Add a boolean
11067         argument.
11068         (mips_fetch_insns): Delete in favor of...
11069         (mips_load_store_insns): ...this new function.
11070         * config/mips/mips.c (mips_address_insns): Add a boolean argument
11071         to say whether multiword moves _might_ be split.
11072         (mips_fetch_insns): Delete in favor of...
11073         (mips_load_store_insns): ...this new function.
11074         (mips_rtx_costs): Update the call to mips_address_insns.
11075         (mips_address_cost): Likewise.
11076         * config/mips/mips.md (length): Use mips_load_store_insns instead
11077         of mips_fetch_insns.
11078         * config/mips/constraints.md (R): Use mips_address_insns rather
11079         than mips_fetch_insns.  Assume that the move never needs to be split.
11080
11081 2007-08-09  Sandra Loosemore  <sandra@codesourcery.com>
11082
11083         * config/mips/mips.opt (mhard-float, msoft-float): Make these
11084         control TARGET_HARD_FLOAT_ABI and TARGET_SOFT_FLOAT_ABI, rather
11085         than TARGET_HARD_FLOAT and TARGET_SOFT_FLOAT.  
11086         * config/mips/mips.h (mips16_hard_float): Delete.
11087         (TARGET_HARD_FLOAT_ABI, TARGET_SOFT_FLOAT_ABI): Delete these
11088         definitions, and replace with....
11089         (TARGET_HARD_FLOAT, TARGET_SOFT_FLOAT): Define.
11090         * config/mips/mips.c (mips16_hard_float): Delete.  Replace
11091         all references with (TARGET_MIPS16 && TARGET_HARD_FLOAT_ABI).
11092         (MIPS_MARCH_CONTROLS_SOFT_FLOAT): Update comments.
11093         (override_options): Replace MASK_SOFT_FLOAT references with
11094         MASK_SOFT_FLOAT_ABI.  Delete twiddling with MASK_SOFT_FLOAT
11095         and mips16_hard_float when TARGET_MIPS16.
11096         
11097 2007-08-09  Andrew Pinski  <andrew_pinski@playstation.sony.com>
11098
11099         PR c/32796
11100         * c-typeck.c (build_binary_op): Check for non pointer types before
11101         calling int_fits_type_p.
11102
11103 2007-08-09  Andrew Pinski  <andrew_pinski@playstation.sony.com>
11104
11105         PR middle-end/32813
11106         * fold-const.c (omit_one_operand): Return only the ommitted expression
11107         if the result is an empty statement.
11108         (pedantic_omit_one_operand): Likewise.
11109
11110 2007-08-09  Daniel Berlin  <dberlin@dberlin.org>
11111
11112         * c-typeck.c (readonly_error): Improve error for assignment.
11113         
11114         * c-pretty-print.c (pp_c_additive_expression): Handle pointer-plus
11115         expression. 
11116         (pp_c_expression): Ditto.
11117
11118 2007-08-09  Simon Baldwin  <simonb@google.com>
11119
11120         * simplify-rtx.c (simplify_binary_operation_1): Removed erroneous
11121         break that was preventing simplify_associative_operation() for xor.
11122
11123 2007-08-09  Sandra Loosemore  <sandra@codesourcery.com>
11124             Nigel Stephens  <nigel@mips.com>
11125
11126         * doc/tm.texi (CLZ_DEFINED_VALUE_AT_ZERO, CTZ_DEFINED_VALUE_AT_ZERO):
11127         Document change in interpretation of value from boolean to
11128         tri-state integer.
11129         * optabs.c (expand_ffs, expand_ctz): New functions to compute
11130         ffs and ctz using clz.
11131         (expand_unop): Call them.
11132         * config/rs6000/rs6000.h (CLZ_DEFINED_VALUE_AT_ZERO): Fix its
11133         result value.
11134         (CTZ_DEFINED_VALUE_AT_ZERO): Likewise.
11135         * config/mips/mips.h (CLZ_DEFINED_VALUE_AT_ZERO): Likewise, to
11136         enable the new ffs expansion on this target.
11137
11138 2007-08-09  Jan Hubicka  <jh@suse.cz>
11139
11140         * optabs.c (expand_widen_pattern_expr): Use optabs accestors.
11141         (expand_ternary_op): Likewise.
11142         (expand_vec_shift_expr): Likewise.
11143         (expand_binop_directly): Likewise.
11144         (expand_binop): Likewise.
11145         (sign_expand_binop): Likewise.
11146         (expand_twoval_unop): Likewise.
11147         (expand_twoval_binop): Likewise.
11148         (expand_twoval_binop_libfunc): Likewise.
11149         (widen_clz): Likewise.
11150         (widen_bswap): Likewise.
11151         (expand_parity): Likewise.
11152         (expand_unop): Likewise.
11153         (expand_abs_nojump): Likewise.
11154         (expand_copysign): Likewise.
11155         (emit_no_conflict_block): Likewise.
11156         (emit_libcall_block): Likewise.
11157         (can_compare_p): Likewise.
11158         (prepare_cmp_insn): Likewise.
11159         (emit_cmp_and_jump_insn_1): Likewise.
11160         (prepare_float_lib_cmp): Likewise.
11161         (emit_conditional_add): Likewise.
11162         (gen_add2_insn): Likewise.
11163         (have_add2_insn): Likewise.
11164         (gen_sub2_insn): Likewise.
11165         (have_sub2_insn): Likewise.
11166         (can_extend_p): Likewise.
11167         (can_fix_p): Likewise.
11168         (can_float_p): Likewise.
11169         (expand_float): Likewise.
11170         (expand_fix): Likewise.
11171         (expand_sfix_optab): Likewise.
11172         (new_optab): Likewise.
11173         (new_convert_optab): Likewise.
11174         (init_libfuncs): Likewise.
11175         (init_interclass_conv_libfuncs): Likewise.
11176         (init_intraclass_conv_libfuncs): Likewise.
11177         (set_conv_libfunc): Likewise.
11178         (init_optabs): Likewise.
11179         (debug_optab_libfuncs): Likewise.
11180         (gen_cond_trap): Likewise.
11181         * optabs.h (optab_handler, convert_optab_hanlder): New.
11182         * genopinit.c: Update optabs generation table.
11183         * reload.c (find_reloads_address_1): Use optabs accestors.
11184         * builtins.c (expand_builtin_mathfn): Likewise.
11185         (expand_builtin_mathfn_2): Likewise.
11186         (expand_builtin_mathfn_3): Likewise.
11187         (expand_builtin_interclass_mathfn): Likewise.
11188         (expand_builtin_sincos): Likewise.
11189         (expand_builtin_cexpi): Likewise.
11190         (expand_builtin_powi): Likewise.
11191         (expand_builtin_strlen): Likewise.
11192         * dojump.c (do_jump): Likewise.
11193         * expr.c (convert_move): Likewise.
11194         (move_by_pieces): Likewise.
11195         (move_by_pieces_ninsns): Likewise.
11196         (can_store_by_pieces): Likewise.
11197         (store_by_pieces_1): Likewise.
11198         (emit_move_via_integer): Likewise.
11199         (emit_move_complex): Likewise.
11200         (emit_move_ccmode): Likewise.
11201         (emit_move_insn_1): Likewise.
11202         (emit_single_push_insn): Likewise.
11203         (store_constructor): Likewise.
11204         (expand_expr_real_1): Likewise.
11205         (do_store_flag): Likewise.
11206         * ada/misc.c (gnat_compute_largest_alignment): Likewise.
11207         (enumerate_modes): Likewise.
11208         * tree-vectorizer.c (vect_supportable_dr_alignment): Likewise.
11209         (supportable_widening_operation): Likewise.
11210         (supportable_narrowing_operation): Likewise.
11211         * expmed.c (store_bit_field_1): Likewise.
11212         (extract_bit_field_1): Likewise.
11213         (expand_mult_highpart_optab): Likewise.
11214         (expand_smod_pow2): Likewise.
11215         (expand_divmod): Likewise.
11216         (emit_store_flag): Likewise.
11217         * tree-vect-patterns.c
11218         (vect_pattern_recog_1): Likewise.
11219         * tree-ssa-loop-prefetch.c
11220         (nontemporal_store_p): Likewise.
11221         * tree-vect-transform.c (vect_model_reduction_cost): Likewise.
11222         (vect_create_epilog_for_reduction): Likewise.
11223         (vectorizable_reduction): Likewise.
11224         (vectorizable_operation): Likewise.
11225         (vect_strided_store_supported): Likewise.
11226         (vectorizable_store): Likewise.
11227         (vect_strided_load_supported): Likewise.
11228         (vectorizable_load): Likewise.
11229         * combine.c (simplify_comparison): Likewise.
11230         * tree-vect-generic.c
11231         (type_for_widest_vector_mode): Likewise.
11232         (expand_vector_operations_1): Likewise.
11233         * config/spu/spu.c (spu_expand_mov): Likewise.
11234         (spu_emit_vector_compare): Likewise.
11235         * config/rs6000/rs6000.c
11236         (rs6000_emit_vector_compare): Likewise.
11237         * stmt.c (add_case_node): Likewise.
11238         * reload1.c (gen_reload):
11239
11240 2007-08-09  Michael Matz  <matz@suse.de>
11241
11242         * tree.h (fixed_zerop): Declare as taking a const_tree.
11243         * tree.c (fixed_zerop): Take a const_tree.
11244
11245 2007-08-09  Ira Rosen  <irar@il.ibm.com>
11246
11247         * tree-vect-transform.c (vectorizable_store): Remove call to
11248         copy_virtual_operands() and call mark_symbols_for_renaming() for
11249         the created vector store.
11250         (vect_setup_realignment): Don't call copy_virtual_operands() and
11251         update_vuses_to_preheader(). 
11252         (vectorizable_load): Don't call copy_virtual_operands(). 
11253         (update_vuses_to_preheader): Remove.
11254
11255 2007-08-08  Chao-ying Fu  <fu@mips.com>
11256
11257         * tree.def (FIXED_POINT_TYPE): New type.
11258         (FIXED_CST): New constant.
11259         (FIXED_CONVERT_EXPR): New expr.
11260         * doc/c-tree.texi (Types): Document FIXED_POINT_TYPE.
11261         (Expressions): Document FIXED_CST and FIXED_CONVERT_EXPR.
11262         * tree.h (struct tree_base): Add saturating_flag.
11263         Remove one bit of spare for saturating_flag.
11264         (NUMERICAL_TYPE_CHECK): Support FIXED_POINT_TYPE.
11265         (NON_SAT_FIXED_POINT_TYPE_P, SAT_FIXED_POINT_TYPE_P,
11266         FIXED_POINT_TYPE_P): Define.
11267         (TYPE_SATURATING): Define.
11268         (TREE_FIXED_CST_PTR, TREE_FIXED_CST): Define.
11269         (struct tree_fixed_cst): New.
11270         (TYPE_IBIT, TYPE_FBIT): Define.
11271         (tree_node): Add fixed_cst.
11272         (enum tree_index): Add new enumeration values of
11273         TI_SAT_SFRACT_TYPE, TI_SAT_FRACT_TYPE, TI_SAT_LFRACT_TYPE,
11274         TI_SAT_LLFRACT_TYPE, TI_SAT_USFRACT_TYPE, TI_SAT_UFRACT_TYPE,
11275         TI_SAT_ULFRACT_TYPE, TI_SAT_ULLFRACT_TYPE, TI_SFRACT_TYPE,
11276         TI_FRACT_TYPE, TI_LFRACT_TYPE, TI_LLFRACT_TYPE, TI_USFRACT_TYPE,
11277         TI_UFRACT_TYPE, TI_ULFRACT_TYPE, TI_ULLFRACT_TYPE,
11278         TI_SAT_SACCUM_TYPE, TI_SAT_ACCUM_TYPE, TI_SAT_LACCUM_TYPE,
11279         TI_SAT_LLACCUM_TYPE, TI_SAT_USACCUM_TYPE, TI_SAT_UACCUM_TYPE,
11280         TI_SAT_ULACCUM_TYPE, TI_SAT_ULLACCUM_TYPE, TI_SACCUM_TYPE,
11281         TI_ACCUM_TYPE, TI_LACCUM_TYPE, TI_LLACCUM_TYPE, TI_USACCUM_TYPE,
11282         TI_UACCUM_TYPE, TI_ULACCUM_TYPE, TI_ULLACCUM_TYPE,
11283         TI_QQ_TYPE, TI_HQ_TYPE,_TYPE, TI_SQ_TYPE, TI_DQ_TYPE, TI_TQ_TYPE,
11284         TI_UQQ_TYPE, TI_UHQ_TYPE, TI_USQ_TYPE, TI_UDQ_TYPE, TI_UTQ_TYPE,
11285         TI_SAT_QQ_TYPE, TI_SAT_HQ_TYPE, TI_SAT_SQ_TYPE, TI_SAT_DQ_TYPE,
11286         TI_SAT_TQ_TYPE, TI_SAT_UQQ_TYPE, TI_SAT_UHQ_TYPE, TI_SAT_USQ_TYPE,
11287         TI_SAT_UDQ_TYPE, TI_SAT_UTQ_TYPE, TI_HA_TYPE, TI_SA_TYPE, TI_DA_TYPE,
11288         TI_TA_TYPE, TI_UHA_TYPE, TI_USA_TYPE, TI_UDA_TYPE, TI_UTA_TYPE,
11289         TI_SAT_HA_TYPE, TI_SAT_SA_TYPE, TI_SAT_DA_TYPE, TI_SAT_TA_TYPE,
11290         TI_SAT_UHA_TYPE, TI_SAT_USA_TYPE, TI_SAT_UDA_TYPE, TI_SAT_UTA_TYPE.
11291         (sat_short_fract_type_node, sat_fract_type_node,
11292         sat_long_fract_type_node, sat_long_long_fract_type_node,
11293         sat_unsigned_short_fract_type_node, sat_unsigned_fract_type_node,
11294         sat_unsigned_long_fract_type_node,
11295         sat_unsigned_long_long_fract_type_node, short_fract_type_node,
11296         fract_type_node, long_fract_type_node, long_long_fract_type_node,
11297         unsigned_short_fract_type_node, unsigned_fract_type_node,
11298         unsigned_long_fract_type_node, unsigned_long_long_fract_type_node,
11299         sat_short_accum_type_node, sat_accum_type_node,
11300         sat_long_accum_type_node, sat_long_long_accum_type_node,
11301         sat_unsigned_short_accum_type_node, sat_unsigned_accum_type_node,
11302         sat_unsigned_long_accum_type_node,
11303         sat_unsigned_long_long_accum_type_node, short_accum_type_node,
11304         accum_type_node, long_accum_type_node, long_long_accum_type_node,
11305         unsigned_short_accum_type_node, unsigned_accum_type_node,
11306         unsigned_long_accum_type_node, unsigned_long_long_accum_type_node,
11307         qq_type_node, hq_type_node, sq_type_node, dq_type_node, tq_type_node,
11308         uqq_type_node, uhq_type_node, usq_type_node, udq_type_node,
11309         utq_type_node, sat_qq_type_node, sat_hq_type_node, sat_sq_type_node,
11310         sat_dq_type_node, sat_tq_type_node, sat_uqq_type_node,
11311         sat_uhq_type_node, sat_usq_type_node, sat_udq_type_node,
11312         sat_utq_type_node, ha_type_node, sa_type_node, da_type_node,
11313         ta_type_node, uha_type_node, usa_type_node, uda_type_node,
11314         uta_type_node, sat_ha_type_node, sat_sa_type_node, sat_da_type_node,
11315         sat_ta_type_node, sat_uha_type_node, sat_usa_type_node,
11316         sat_uda_type_node, sat_uta_type_node): New macro.
11317         (make_fract_type, make_accum_type): Declare.
11318         (make_signed_fract_type, make_unsigned_fract_type,
11319         make_sat_signed_fract_type, make_sat_unsigned_fract_type,
11320         make_signed_accum_type, make_unsigned_accum_type,
11321         make_sat_signed_accum_type, make_sat_unsigned_accum_type,
11322         make_or_reuse_signed_fract_type, make_or_reuse_unsigned_fract_type,
11323         make_or_reuse_sat_signed_fract_type,
11324         make_or_reuse_sat_unsigned_fract_type, make_or_reuse_signed_accum_type,
11325         make_or_reuse_unsigned_accum_type, make_or_reuse_sat_signed_accum_type,
11326         make_or_reuse_sat_unsigned_accum_type): New macro.
11327         (fixed_zerop): Declare.
11328         * defaults.h (SHORT_FRACT_TYPE_SIZE, FRACT_TYPE_SIZE,
11329         LONG_FRACT_TYPE_SIZE, LONG_LONG_FRACT_TYPE_SIZE,
11330         SHORT_ACCUM_TYPE_SIZE, ACCUM_TYPE_SIZE, LONG_ACCUM_TYPE_SIZE,
11331         LONG_LONG_ACCUM_TYPE_SIZE): Define.
11332         * treestruct.def: Add TS_FIXED_CST.
11333         * Makefile.in (c-pretty-print.o): Add dependence on fixed-value.h.
11334         (tree.o): Likewise.
11335         (tree-dump.o): Likewise.
11336         (print-tree.o): Likewise.
11337         (tree-pretty-print.o): Likewise.
11338         (fold-const.o): Likewise.
11339         * tree-complex.c (some_nonzerop): Handle FIXED_CST.
11340         * tree-gimple.c (is_gimple_formal_tmp_rhs): Handle FIXED_CST.
11341         (is_gimple_min_invariant): Handle FIXED_CST.
11342         * stor-layout.c (int_mode_for_mode): Handle MODE_FRACT, MODE_UFRACT,
11343         MODE_ACCUM, MODE_UACCUM, MODE_VECTOR_FRACT, MODE_VECTOR_UFRACT,
11344         MODE_VECTOR_ACCUM, MODE_VECTOR_UACCUM.
11345         (layout_type): Handle FIXED_POINT_TYPE.
11346         (make_fract_type, make_accum_type): New functions.
11347         * tree-browser.c (browse_tree): Handle FIXED_POINT_TYPE.
11348         * tree-dump.c (fixed-value.h): New include.
11349         (dump_fixed): New function.
11350         (dequeue_and_dump): Handle FIXED_POINT_TYPE and FIXED_CST.
11351         * tree-inline.c (remap_type_1): Handle FIXED_POINT_TYPE.
11352         (estimate_num_insns_1): Handle FIXED_CST and FIXED_CONVERT_EXPR.
11353         * tree-pretty-print.c (fixed-value.h): New include.
11354         (dump_generic_node): Handle FIXED_POINT_TYPE, FIXED_CST, and
11355         FIXED_CONVERT_EXPR.
11356         * tree-scalar-evolution.c (get_scalar_evolution): Handle FIXED_CST.
11357         * tree-ssa-loop-im.c (for_each_index): Handle FIXED_CST.
11358         * tree-ssa-pre.c (poolify_tree): Handle FIXED_CST.
11359         * tree-ssa-reassoc.c (break_up_subtract_bb): We can do reassociation
11360         for non-saturating fixed-point types.
11361         (reassociate_bb): Likewise.
11362         * emit-rtl.c (fixed-value.h): New include.
11363         (fconst0, fconst1): New array.
11364         (init_emit_once): Initialize fconst0 and fconst1 for fixed-point modes.
11365         * tree-vect-generic.c expand_vector_operation): Support
11366         MODE_VECTOR_FRACT, MODE_VECTOR_UFRACT, MODE_VECTOR_ACCUM, and
11367         MODE_VECTOR_UACCUM.
11368         (type_for_widest_vector_mode): Add one parameter for the 
11369         saturating flag.
11370         Check scalar FRACT, UFRACT, ACCUM, and UACCUM mode to select their
11371         vector mode.
11372         Pass the satp parameter to type_for_mode for fixed-point types.
11373         (expand_vector_operations_1): Pass the saturating flag to
11374         type_for_widest_vector_mode.
11375         Support MODE_VECTOR_FRACT, MODE_VECTOR_UFRACT, MODE_VECTOR_ACCUM,
11376         and MODE_VECTOR_UACCUM.
11377         * tree-vect-transform.c (vect_is_simple_cond): Support FIXED_CST.
11378         (vectorizable_condition): Likewise.
11379         * tree.c (fixed-value.h): New include.
11380         (tree_code_size): Support FIXED_CST.
11381         (build_fixed): New function.
11382         (build_one_cst): Support FIXED_POINT_TYPE for accum types.
11383         (fixed_zerop): New function.
11384         (tree_node_structure): Support FIXED_CST.
11385         (type_contains_placeholder_1): Support FIXED_POINT_TYPE.
11386         (build_type_attribute_qual_variant): Handle FIXED_POINT_TYPE.
11387         (type_hash_eq): Handle FIXED_POINT_TYPE.
11388         (simple_cst_equal): Support FIXED_CST.
11389         (iterative_hash_expr): Handle FIXED_CST.
11390         (get_unwidened): Make sure type is not FIXED_POINT_TYPE.
11391         (get_narrower): Likewise.
11392         (variably_modified_type_p): Handle FIXED_POINT_TYPE.
11393         (make_or_reuse_fract_type, make_or_reuse_accum_type): New functions.
11394         (build_common_tree_nodes_2): Use MAKE_FIXED_TYPE_NODE_FAMILY and
11395         MAKE_FIXED_MODE_NODE macros to initialize fixed-point type
11396         nodes.
11397         (build_vector_type_for_mode): Handle MODE_VECTOR_FRACT,
11398         MODE_VECTOR_UFRACT, MODE_VECTOR_ACCUM, MODE_VECTOR_UACCUM.
11399         (initializer_zerop): Support FIXED_CST.
11400         (walk_tree): Handle FIXED_CST and FIXED_POINT_TYPE.
11401         * dwarf2out.c (base_type_die): Use DW_ATE_signed_fixed or
11402         DW_ATE_unsigned_fixed to describe FIXED_POINT_TYPE.
11403         (is_base_type): Handle FIXED_POINT_TYPE.
11404         (add_type_attribute): Handle FIXED_POINT_TYPE.
11405         (gen_type_die_with_usage): Handle FIXED_POINT_TYPE.
11406         * print-tree.c (fixed-value.h): New include.
11407         (print_node_brief): Support FIXED_CST.
11408         (print_node): Support FIXED_POINT_TYPE and FIXED_CST.
11409         * c-pretty-print.c (fixed-value.h): New include.
11410         (pp_c_type_specifier): Handle FIXED_POINT_TYPE.  Need to pass
11411         TYPE_SATURATING to c_common_type_for_mode for fixed-point modes.
11412         (pp_c_direct_abstract_declarator): Handle FIXED_POINT_TYPE.
11413         Support fixed-point types for inner items in VECTOR_TYPE.
11414         (pp_c_direct_declarator): Likewise.
11415         (pp_c_declarator): Likewise.
11416         (pp_c_fixed_constant): New function.
11417         (pp_c_constant): Handle FIXED_CST.
11418         (pp_c_primary_expression): Likewise.
11419         (pp_c_expression): Likewise.
11420         * fold-const.c (fixed-value.h): New include.
11421         (negate_expr_p): Return true for FIXED_CST.
11422         (fold_negate_expr): Support FIXED_CST.
11423         (split_tree): Support FIXED_CST.
11424         (const_binop): Support FIXED_CST.
11425         (fold_convert_const_int_from_fixed): New function to convert from
11426         fixed to int.
11427         (fold_convert_const_real_from_fixed): New function to convert from
11428         fixed to real.
11429         (fold_convert_const_fixed_from_fixed): New function to convert from
11430         fixed to another fixed.
11431         (fold_convert_const_fixed_from_int): New function to convert from
11432         int to fixed.
11433         (fold_convert_const_fixed_from_real): New function to convert from
11434         real to fixed.
11435         (fold_convert_const): Support conversions from fixed to int, from
11436         fixed to real, from fixed to fixed, from int to fixed, and from real
11437         to fixed.
11438         (fold_convert): Support FIXED_CST and FIXED_POINT_TYPE.
11439         (operand_equal_p): Support FIXED_CST.
11440         (make_range): For fixed-point modes, we need to pass the
11441         saturating flag as the 2nd parameter.
11442         (tree_swap_operands_p): Handle FIXED_CST.
11443         (fold_plusminus_mult_expr): For fract modes, we cannot generate
11444         constant 1.
11445         (fold_unary): Support FIXED_CONVERT_EXPR.
11446         (fold_binary): Handle FIXED_CST.
11447         Make sure the type is not saturating, before associating operations.
11448         Ex: A + B + C, A * B * C, (A1 * C1) +/- (A2 * C2).
11449         (tree_expr_nonnegative_warnv_p): Handle FIXED_CST.
11450         (fold_negate_const): Support FIXED_CST.
11451         (fold_relational_const): Support FIXED_CST.
11452         * gimplify.c (omp_firstprivatize_type_sizes): Handle FIXED_POINT_TYPE.
11453         (gimplify_expr): Handle FIXED_CST.
11454         (gimplify_type_sizes): Handle FIXED_POINT_TYPE.
11455         * ipa-prop.c (ipa_callsite_compute_param): Support FIXED_CST.
11456         * ipa-type-escape.c (type_to_consider): Handle FIXED_POINT_TYPE.
11457         * doc/tm.texi (Type Layout): Document SHORT_FRACT_TYPE_SIZE,
11458         FRACT_TYPE_SIZE, LONG_FRACT_TYPE_SIZE, LONG_LONG_FRACT_TYPE_SIZE,
11459         SHORT_ACCUM_TYPE_SIZE, ACCUM_TYPE_SIZE, LONG_ACCUM_TYPE_SIZE,
11460         LONG_LONG_ACCUM_TYPE_SIZE.
11461         * dbxout.c (dbxout_type): Handle FIXED_POINT_TYPE.
11462         * c-aux-info.c (gen_type): Handle FIXED_POINT_TYPE.
11463         * tree-sra.c (is_sra_scalar_type): Support FIXED_POINT_TYPE.
11464         * expmed.c (extract_bit_field): Support MODE_FRACT, MODE_UFRACT,
11465         MODE_ACCUM, and MODE_UACCUM.
11466         * tree-vectorizer.c (vect_is_simple_reduction): Check for saturating
11467         fixed-point types to disable reduction.
11468         * explow.c (promote_mode): Support FIXED_POINT_TYPE.
11469
11470 2007-08-08  David Edelsohn  <edelsohn@gnu.org>
11471
11472         * config/rs6000/x-rs6000: New file.
11473         * config/rs6000/darwin.h (CC1_SPEC): Add cc1_cpu.
11474         * config/rs6000/rs6000.h (EXTRA_SPECS): Add cc1_cpu.
11475         (EXTRA_SPEC_FUNCTIONS): Define.
11476         (HAVE_LOCAL_CPU_DETECT): Define.
11477         (CC1_CPU_SPEC): Define.
11478         * config/rs6000/driver-rs6000.c: New file.
11479         * config/rs6000/aix.h (CC1_SPEC): Define.
11480         * config/rs6000/sysv4.h (CC1_SPEC): Add cc1_cpu.
11481         * config.host: Add x-rs6000 to host_xmake_file if host and target
11482         are rs6000 or powerpc.
11483
11484 2007-08-08  Paolo Bonzini <paolo.bonzini@lu.unisi.ch>
11485
11486         * config/i386/t-crtstuff (CRTSTUFF_T_CFLAGS): Use +=.
11487
11488 2007-08-08  Richard Sandiford  <richard@codesourcery.com>
11489             Sandra Loosemore  <sandra@codesourcery.com>
11490             Chao-ying Fu  <fu@mips.com>
11491             Nigel Stephens  <nigel@mips.com>
11492             David Ung  <davidu@mips.com>
11493
11494         * doc/invoke.texi (-mcode-readable): Document.
11495         * config/mips/mips.opt (mcode-readable): New option.
11496         * config/mips/mips-protos.h (SYMBOL_32_HIGH): New symbol type.
11497         * config/mips/mips.h (mips_code_readable_setting): New enum.
11498         (mips_code_readable): Declare.
11499         (TARGET_MIPS16_TEXT_LOADS, TARGET_MIPS16_PCREL_LOADS): New macros.
11500         (TARGET_MIPS16_SHORT_JUMP_TABLES): New macro.
11501         (JUMP_TABLES_IN_TEXT_SECTION): Use it.
11502         (CASE_VECTOR_MODE, CASE_VECTOR_PC_RELATIVE): Likewise.  Remove
11503         boiler-plate comments.
11504         (ASM_OUTPUT_ADDR_DIFF_ELT): Use TARGET_MIPS16_SHORT_JUMP_TABLES.
11505         * config/mips/mips.c (mips_code_readable): New variable.
11506         (mips_classify_symbol): Only return SYMBOL_PC_RELATIVE for
11507         MIPS16 labels if TARGET_MIPS16_SHORT_JUMP_TABLES.  Use both the
11508         context and -mcode-readable setting to restrict the use of
11509         SYMBOL_PC_RELATIVE for MIPS16 constant pool references.
11510         Only return TARGET_FORCE_TO_MEM if PC-relative loads are allowed.
11511         (mips_symbolic_constant_p): Handle SYMBOL_32_HIGH.
11512         (mips_blocks_for_constant_p): Only return false for
11513         TARGET_MIPS16_PCREL_LOADS.
11514         (mips_symbol_insns_1): Treat HIGHs as 2 extended instructions
11515         for MIPS16.  Handle SYMBOL_32_HIGH.
11516         (mips_const_insns): Allow HIGHs for MIPS16 too.
11517         (mips_unspec_address_offset): New function, split out from...
11518         (mips_unspec_address): ...here.
11519         (mips_output_move): Handle MIPS16 HIGH moves.  Use "li" to load
11520         16-bit symbolic constants.  Assert approropiate conditions for
11521         using the "la" and "dla" macros.
11522         (mips_handle_option): Handle -mcode-readable=.
11523         (override_options): Use %hi/%lo relocations for TARGET_MIPS16 too.
11524         Set up mips_lo_relocs[SYMBOL_32_HIGH].
11525         (mips_strip_unspec_address): New function, split out from...
11526         (print_operand_reloc): ...here.
11527         (print_operand): Pass constants through mips_strip_unspec_address.
11528         (print_operand_address): Likewise.
11529         (mips_output_mi_thunk): Remove guard of mips16_lay_out_constants.
11530         (mips_select_rtx_section): Remove MIPS16 handling.
11531         (mips16_gp_pseudo_reg): Check currently_expanding_to_rtl.
11532         (mips16_rewrite_pool_refs): Wrap the labels in an address UNSPEC.
11533         (mips16_lay_out_constants): Do nothing unless
11534         TARGET_MIPS16_PCREL_LOADS.
11535         (mips_avoid_hazards): Remove guard of mips16_lay_out_constants.
11536         * config/mips/mips.md: Split HIGHs for MIPS16.
11537         (tablejump): Use TARGET_MIPS16_SHORT_JUMP_TABLES.
11538
11539 2007-08-08  Richard Sandiford  <richard@codesourcery.com>
11540
11541         * config/mips/mips-protos.h (mips_emit_move): Declare.
11542         * config/mips/mips.c (mips_emit_move): New function.
11543         (mips_force_temporary): Use mips_emit_move instead of emit_move_insn.
11544         (mips_legitimize_const_move): Likewise.
11545         (mips_legitimize_move): Likewise.
11546         (mips_split_64bit_move): Likewise.
11547         (mips_restore_gp): Likewise.
11548         (mips_load_call_address): Likewise.
11549         (mips_emit_fcc_reload): Likewise.
11550         (mips_set_return_address): Likewise.
11551         (mips_block_move_straight): Likewise.
11552         (mips_block_move_loop): Likewise.
11553         (mips_setup_incoming_varargs): Likewise.
11554         (mips_save_reg): Likewise.
11555         (mips_expand_prologue): Likewise.
11556         (mips_restore_reg): Likewise.
11557         (mips_expand_epilogue): Likewise.
11558         (mips_output_mi_thunk): Likewise.
11559         (build_mips16_call_stub): Likewise.
11560         (mips_builtin_branch_and_move): Likewise.
11561         * config/mips/mips.h (INITIALIZE_TRAMPOLINE): Likewise.
11562         * config/mips/mips.md (fixuns_truncdfsi2): Likewise.
11563         (fixuns_truncdfdi2): Likewise.
11564         (fixuns_truncsfsi2): Likewise.
11565         (fixuns_truncsfdi2): Likewise.
11566         (loadgp_absolute): Likewise.
11567         (builtin_setjmp_setup): Likewise.
11568         (builtin_longjmp): Likewise.
11569         (untyped_call): Likewise.
11570
11571 2007-08-08  Richard Sandiford  <richard@codesourcery.com>
11572
11573         * config/mips/mips-protos.h (mips_split_symbol): Add a mode and
11574         an "rtx *" argument.  Return a bool.
11575         * config/mips/mips.c (mips_split_symbol): Accept arbitrary source
11576         values and return true if they can be split.  Take the same kind of
11577         mode argument as mips_symbol_insns.  Add a "lo_sum_out" parameter
11578         and store the lo_sum there if nonnull.  Use the symbol type to
11579         determine whether a $gp or HIGH is needed.
11580         (mips_legitimize_address): Update call to mips_split_symbol and
11581         simplify accordingly.
11582         (mips_legitimize_const_move): Likewise.
11583         * config/mips/mips.md: In the combine define_split,
11584         check mips_split_symbol instead of splittable_symbolic_operand.
11585         Update use of mips_split_symbol in the generator code.
11586         * config/mips/predicates.md (splittable_symbolic_operand): Delete.
11587
11588 2007-08-08  Richard Sandiford  <richard@codesourcery.com>
11589
11590         * config/mips/mips.c (mips_symbolic_address_p): Delete.
11591         (mips_symbol_insns_1): New function, split out from...
11592         (mips_symbol_insns): ...here.  Take a mode argument.  Treat loads
11593         and stores separately from load addresses.
11594         (mips_classify_address): Replace uses of mips_symbolic_address_p
11595         with uses of mips_symbol_insns.
11596         (mips_address_insns): Update calls to mips_symbol_insns.
11597         (mips_const_insns): Likewise.
11598         (mips_legitimize_address): Likewise.
11599
11600 2007-08-08  Richard Sandiford  <richard@codesourcery.com>
11601
11602         * config/mips/mips-protos.h (SYMBOL_FORCE_TO_MEM): New symbol type.
11603         * config/mips/mips.c (mips_classify_symbol): Skip TARGET_ABICALLS
11604         block for locally-binding symbols if TARGET_ABSOLUTE_ABICALLS.
11605         Return SYMBOL_FORCE_TO_MEM instead of SYMBOL_ABSOLUTE for
11606         non-call contexts if TARGET_MIPS16.
11607         (mips_symbolic_constant_p): Handle SYMBOL_FORCE_TO_MEM.
11608         (mips_symbolic_address_p): Likewise.  Remove special TARGET_MIPS16
11609         code for SYMBOL_ABSOLUTE.
11610         (mips_symbol_insns): Likewise.
11611
11612 2007-08-08  Richard Sandiford  <richard@codesourcery.com>
11613
11614         * config/mips/mips-protos.h (mips_symbol_context): New enumeration.
11615         * config/mips/mips.c (mips_classify_symbol): Take a context argument.
11616         (mips_symbolic_constant_p): Likewise.  Update the call to
11617         mips_classify_symbol.
11618         (mips_classify_address): Update the calls to mips_symbolic_constant_p.
11619         (mips_const_insns): Likewise.  Update the call to mips_classify_symbol.
11620         (mips_legitimize_address): Update the call to mips_symbolic_constant_p.
11621         (print_operand_reloc): Add a context argument.  Update the call to
11622         mips_symbolic_constant_p.
11623         (print_operand): Update the calls to print_operand_reloc.
11624         (print_operand_address): Use print_operand_reloc rather than
11625         print_operand.
11626         (mips_rewrite_small_data_p): Add a context argument.  Update the call
11627         to mips_symbolic_constant_p.
11628         (mips_small_data_pattern_1): Make DATA the containing mem.
11629         Update the call to mips_rewrite_small_data_p.
11630         (mips_rewrite_small_data_1): Likewise.
11631         (mips_use_anchors_for_symbol_p): Update the call to
11632         mips_symbolic_constant_p.
11633         * config/mips/predicates.md (const_call_insn_operand): Likewise.
11634         (splittable_symbolic_operand): Likewise.
11635         (move_operand): Likewise.
11636         (absolute_symbolic_operand): Likewise.
11637         (got_disp_operand): Likewise.
11638         (got_page_ofst_operand): Likewise.
11639
11640 2007-08-08  Richard Sandiford  <richard@codesourcery.com>
11641
11642         * config/mips/mips-protos.h (SYMBOL_GENERAL): Rename to...
11643         (SYMBOL_ABSOLUTE): ...this.
11644         (SYMBOL_SMALL_DATA): Rename to...
11645         (SYMBOL_GP_RELATIVE): ...this.
11646         (SYMBOL_CONSTANT_POOL): Rename to...
11647         (SYMBOL_PC_RELATIVE): ...this.
11648         * config/mips/mips.c (mips_classify_symbol, mips_symbolic_constant_p)
11649         (mips_symbolic_address_p, mips_symbol_insns, override_options)
11650         (mips_rewrite_small_data_p, mips_use_anchors_for_symbol_p): Update
11651         after above changes.
11652         * config/mips/predicates.md (const_call_insn_operand): Likewise.
11653         (general_symbolic_operand): Rename to...
11654         (absolute_symbolic_operand): ...this.
11655         * config/mips/mips.md: Update after above changes.
11656
11657 2007-08-08  Vladimir Yanovsky  <yanov@il.ibm.com>
11658             Revital Eres  <eres@il.ibm.com>
11659
11660         * ddg.c (print_ddg): Add dump information.
11661         * modulo-sched.c (print_node_sched_params): Add parameter and
11662         verbosity.
11663         (calculate_maxii): Remove function.
11664         (undo_generate_reg_moves): Likewise.
11665         (undo_permute_partial_schedule): Likewise.
11666         (kernel_number_of_cycles): Likewise.
11667         (MAXII_FACTOR): New definition to calculate the upper bound of II.
11668         (sms_schedule): Use it.  Remove profitability checks.
11669         (sms_schedule_by_order): Fix order of nodes within the cycle.
11670
11671 2007-08-08  Samuel Thibault  <samuel.thibault@ens-lyon.org>
11672
11673         * config/i386/gnu.h (STARTFILE_SPEC): Use gcrt0.o in profile mode, add
11674         -profile option, add pie support.
11675         (ENDFILE_SPEC): New spec.
11676         * config/gnu.h (LIB_SPEC): Add -profile option.
11677
11678 2007-08-08  Samuel Thibault  <samuel.thibault@ens-lyon.org>
11679
11680         * config/i386/gnu.h (CPP_SPEC): Add -pthread option.
11681         * config/gnu.h (LIB_SPEC): Likewise.
11682
11683 2007-08-07  Yaz Saito  <saito@google.com>
11684             Ian Lance Taylor  <iant@google.com>
11685
11686         * common.opt (finstrument-functions-exclude-function-list): New
11687         option.
11688         (finstrument-functions-exclude-file-list): New option.
11689         * opts.c (char_p): Define and DEF_VEC.
11690         (flag_instrument_functions_exclude_functions): New static
11691         variable.
11692         (flag_instrument_functions_exclude_files): New static variable.
11693         (add_instrument_functions_exclude_list): New static function.
11694         (flag_instrument_functions_exclude_p): New function.
11695         (common_handle_option): Handle new options.
11696         * flags.h (flag_instrument_functions_exclude_p): Declare.
11697         * gimplify.c (gimplify_function_tree): Call
11698         flag_instrument_functions_exclude_p.
11699         * doc/invoke.texi (Option Summary): Mention new options.
11700         (Code Gen Options): Document new options.
11701
11702 2007-08-07  Ian Lance Taylor  <iant@google.com>
11703
11704         PR rtl-optimization/32776
11705         * lower-subreg.c (resolve_clobber): Call resolve_reg_notes.
11706         (resolve_use): Likewise.
11707         (decompose_multiword_subregs): Remove "changed" local variable.
11708
11709 2007-08-07  Carlos O'Donell  <carlos@codesourcery.com>
11710
11711         * configure.ac: Define HAVE_GNU_AS if $gas_flag is yes.
11712         * configure: Regenerate.
11713         * config.in: Regenerate.
11714         * gcc.c [HAVE_GNU_AS]: Add "%{v} %{w:-W} %{I*} " to asm_options
11715         spec string.
11716
11717 2007-08-07  Ian Lance Taylor  <iant@google.com>
11718
11719         * lower-subreg.c (resolve_clobber): If the clobber has a LIBCALL
11720         note, just delete the insn.
11721
11722 2007-08-07  Andreas Schwab  <schwab@suse.de>
11723
11724         PR bootstrap/32973
11725         * gengtype-lex.l: Ignore backslash/newline pair while scanning a
11726         struct definition.
11727
11728 2007-08-07  Andreas Krebbel  <krebbel1@de.ibm.com>
11729
11730         * lower-subreg.c (resolve_subreg_use): Remove assertion.
11731         (find_decomposable_shift_zext, resolve_shift_zext): New functions.
11732         (decompose_multiword_subregs): Use the functions above to decompose
11733         multiword shifts and zero-extends.
11734
11735 2007-08-07  Rask Ingemann Lambertsen  <rask@sygehus.dk>
11736
11737         * doc/sourcebuild.texi (Test Directives): Fix "compile" and
11738         "assemble" descriptions which were swapped.
11739
11740 2007-08-06  Chao-ying Fu  <fu@mips.com>
11741
11742         * fixed-value.h: New file.
11743         * fixed-value.c: New file.
11744         * Makefile.in (OBJS-common): Add fixed-value.o.
11745         (fixed-value.o): New rule.
11746         (GTFILES): Add fixed-value.h.
11747         * double-int.c (double_int_scmp): We should use unsigned HOST_WIDE_INT
11748         to compare a.low and b.low.
11749         * gengtype.c (main): Handle FIXED_VALUE_TYPE type as scalar typedef.
11750
11751 2007-08-06  H.J. Lu  <hongjiu.lu@intel.com>
11752             Daniel Jacobowitz  <dan@codesourcery.com>
11753
11754         PR target/31868
11755         * config.gcc (x86_64-*-freebsd*): Add i386/t-crtstuff to
11756         tmake_file.
11757         (x86_64-*-netbsd*): Likewise.
11758         (x86_64-*-linux*): Likewise.
11759         (x86_64-*-kfreebsd*-gnu): Likewise.
11760         (x86_64-*-knetbsd*-gnu): Likewise.
11761         (i[34567]86-*-solaris2.1[0-9]*): Likewise.
11762
11763         * config/i386/t-linux64 (CRTSTUFF_T_CFLAGS): Removed.
11764
11765         * config/i386/t-crtstuff (CRTSTUFF_T_CFLAGS): Update comments.
11766         Add -fno-asynchronous-unwind-tables.
11767
11768         * config/t-freebsd (CRTSTUFF_T_CFLAGS_S): Add $(CRTSTUFF_T_CFLAGS).
11769         * config/t-libc-ok (CRTSTUFF_T_CFLAGS_S): Likewise.
11770         * config/t-lynx (CRTSTUFF_T_CFLAGS_S): Likewise.
11771         * config/t-netbsd (CRTSTUFF_T_CFLAGS_S): Likewise.
11772         * config/t-svr4 (CRTSTUFF_T_CFLAGS_S): Likewise.
11773
11774 2007-08-06  Steve Ellcey  <sje@cup.hp.com>
11775
11776         * config/ia64/ia64.c (ia64_c_mode_for_suffix): New.
11777         (TARGET_C_MODE_FOR_SUFFIX): New.
11778
11779 2007-08-06  Steve Ellcey  <sje@cup.hp.com>
11780
11781         * config/ia64/div.md (m2subrf4_cond): Change 'g' to 'G'.
11782
11783 2007-08-06  Steve Ellcey  <sje@cup.hp.com>
11784
11785         * config/ia64/ia64.h (MODES_TIEABLE_P): Fix typo.
11786
11787 2007-08-06  H.J. Lu  <hongjiu.lu@intel.com>
11788
11789         * config/i386/i386.md: Check TARGET_ macros and optimize_size
11790         before checking function returns in conditional expressions.
11791
11792 2007-08-06  Alfred Minarik  <a.minarik@aon.at>
11793
11794         PR pch/13676
11795         * doc/invoke.texi: Add .hp, .hxx, .hpp, .h, .HPP, .tcc as c++ header.
11796
11797 2008-08-05  Andrew Pinski  <andrew_pinski@playstation.sony.com>
11798
11799         PR middle-end/32988
11800         * tree.c (build2_stat): Instead of checking for INTEGER_TYPE, check
11801         for INTEGRAL_TYPE_P.
11802
11803 2008-08-05  Paolo Bonzini  <bonzini@gnu.org>
11804
11805         * configure.ac: Remove --enable-checking=df from default settings.
11806         * tree-pass.h (TODO_df_verify): New.  Shift TODO_mark_first_instance.
11807         * df-core.c (df_finish_pass) [ENABLE_CHECKING]: Schedule verification
11808         if the parameter is true.
11809         (df_analyze) [!ENABLE_DF_CHECKING]: Also do verification if the
11810         DF_VERIFY_SCHEDULED flag is true.
11811         * df.h (enum df_changeable_flags): Add DF_VERIFY_SCHEDULED.
11812         (df_finish_pass): Adjust prototype.
11813         * passes.c (execute_todo): Schedule verification if TODO_df_verify is
11814         true.
11815
11816         * see.c (pass_see): Add TODO_df_verify.
11817         * loop-init.c (pass_rtl_move_loop_invariants): Add TODO_df_verify.
11818         * global.c (rest_of_handle_global_alloc): Schedule verification
11819         after the pass.
11820         * local-alloc.c (rest_of_handle_local_alloc): Schedule verification
11821         before the pass.
11822         * function.c (pass_thread_prologue_and_epilogue): Add TODO_df_verify.
11823         * gcse.c (rest_of_handle_gcse): Adjust call to df_finish_pass.
11824         * loop-iv.c (iv_analysis_done): Schedule verification after the pass.
11825
11826         * config/sh/sh.c (sh_output_mi_thunk): Remove dead code.
11827         * config/ia64/ia64.c (ia64_reorg): Adjust call to df_finish_pass.
11828         * config/bfin/bfin.c (bfin_reorg): Adjust call to df_finish_pass.
11829
11830 2007-08-05  Vladimir Yanovsky  <yanov@il.ibm.com>
11831             Revital Eres <eres@il.ibm.com>
11832
11833         * doc/invoke.texi (-fmodulo-sched-allow-regmoves): Document new
11834         flag.
11835         * ddg.c (create_ddg_dependence): Rename to...
11836         (create_ddg_dep_from_intra_loop_link): This.  Do not check
11837         for interloop edges.  Do not create anti dependence edge when
11838         a true dependence edge exists in the opposite direction and
11839         -fmodulo-sched-allow-regmoves is set.
11840         (build_intra_loop_deps): Call create_ddg_dep_from_intra_loop_link.
11841         (add_cross_iteration_register_deps): Create anti dependence edge
11842         when -fno-modulo-sched-allow-regmoves is set.
11843         * common.opt (-fmodulo-sched-allow-regmoves): New flag.
11844
11845 2007-08-04  Richard Sandiford  <richard@codesourcery.com>
11846
11847         * config/arm/arm.md (movsi): Add braces.
11848
11849 2007-08-04  Andrew Pinski  <andrew_pinski@playstation.sony.com>
11850
11851         PR middle-end/32780
11852         * fold-const.c (fold_binary <case MINUS_EXPR>): Fix the type of
11853         operands for the folding of "A - (A & B)" into "~B & A"; cast them
11854         to type.
11855
11856 2007-08-03  Zdenek Dvorak  <ook@ucw.cz>
11857
11858         * tree-ssa-threadupdate.c (thread_through_all_blocks): Use loops'
11859         state accessor functions.
11860         * cfgloopmanip.c (remove_path, create_preheaders,
11861         force_single_succ_latches, fix_loop_structure): Ditto.
11862         * tree-ssa-loop-manip.c (rewrite_into_loop_closed_ssa,
11863         tree_duplicate_loop_to_header_edge): Ditto.
11864         * cfgloopanal.c (mark_irreducible_loops): Ditto.
11865         * loop-init.c (loop_optimizer_init, loop_optimizer_finalize):
11866         Ditto.
11867         * tree-cfgcleanup.c (cleanup_tree_cfg_noloop, repair_loop_structures,
11868         cleanup_tree_cfg): Ditto.
11869         * tree-cfg.c (tree_merge_blocks): Ditto.
11870         * cfgloop.c (rescan_loop_exit, record_loop_exits,
11871         release_recorded_exits, get_loop_exit_edges, verify_loop_structure,
11872         loop_preheader_edge, single_exit): Ditto.
11873         (flow_loops_find): Do not clear loops->state.
11874         * cfgloop.h (loops_state_satisfies_p, loops_state_set,
11875         loops_state_clear): New functions.
11876
11877 2007-08-03  Andrew Pinski  <andrew_pinski@playstation.sony.com>
11878
11879         PR middle-end/32399
11880         * tree-ssa-address.c (add_to_parts): Use POINTER_PLUS_EXPR
11881         when adding to the base and convert ELT to sizetype instead of type.
11882
11883 2007-08-03  Andrew Pinski  <andrew_pinski@playstation.sony.com>
11884
11885         PR middle-end/32304
11886         * ipa-reference.c (has_proper_scope_for_analysis): Return false when
11887         the decl's type has TYPE_NEEDS_CONSTRUCTING set.
11888
11889 2007-08-03  Andrew Pinski  <andrew_pinski@playstation.sony.com>
11890
11891         PR middle-end/32935
11892         * fold-convert.c (fold_negate_expr <NOP_EXPR>): Convert back to the
11893          correct type the negate expression.
11894
11895 2007-08-03  Jan Hubicka  <jh@suse.cz>
11896
11897         * i386.c (setup_incoming_varargs_64): Tolerate 64bit preferred
11898         stack boundary.
11899
11900 2007-08-03  David Edelsohn  <edelsohn@gnu.org>
11901
11902         * config/rs6000/rs6000.c (struct processor_cost): Change
11903         l1_cache_lines to l1_cache_size.  Add l2_cache_size.
11904         (*_cost): Convert l1 cache information to kilobytes.  Add l2 cache
11905         information.
11906         (rios1_costs, rios2_cost): Correct cache line size.
11907         (rs6000_override_options): Set l2-cache-size parameter.
11908
11909 2007-08-03  Andrew Pinski  <andrew_pinski@playstation.sony.com>
11910             Diego Novillo  <dnovillo@google.com>
11911
11912         PR 31521
11913         * tree-vrp.c (simplify_div_or_mod_using_ranges): Also simplify
11914         if the range includes 0.
11915
11916 2007-08-03  Ben Elliston  <bje@au.ibm.com>
11917
11918         * config/spu/spu.md (dftsv, dftsv_celledp): Attach the appropriate
11919         mode to unspec expressions to silence a warning from the generator
11920         programs.
11921         
11922 2007-08-02  Steve Ellcey  <sje@cup.hp.com>
11923
11924         * config/ia64/constraints.md ("U"): Make constraint vector only.
11925
11926 2007-08-02  Nathan Froyd  <froydnj@codesourcery.com>
11927
11928         PR middle-end/25446
11929         * c-objc-common.c (c_cannot_inline_tree_fn): Check for an
11930         always_inline attribute on the function decl.
11931
11932 2007-08-02  Nathan Froyd  <froydnj@codesourcery.com>
11933
11934         PR middle-end/25445
11935         * varasm.c (default_binds_local_p_1): Consult flag_whole_program
11936         if we are compiling with -fPIC.
11937
11938 2007-08-02  Sandra Loosemore  <sandra@codesourcery.com>
11939             Nigel Stephens  <nigel@mips.com>
11940
11941         * longlong.h [__mips__] (count_leading_zeros, COUNT_LEADING_ZEROS_0):
11942         Define for MIPS32 and MIPS64.
11943
11944 2007-08-02  Nick Clifton  <nickc@redhat.com>
11945
11946         * config/host-hpux.c: Change copyright header to refer to version
11947         3 of the GNU General Public License and to point readers at the
11948         COPYING3 file and the FSF's license web page.
11949         * config/alpha/predicates.md, config/alpha/vms-ld.c,
11950         config/alpha/linux.h, config/alpha/alpha.opt,
11951         config/alpha/linux-elf.h, config/alpha/vms.h, config/alpha/elf.h,
11952         config/alpha/vms-unwind.h, config/alpha/ev4.md,
11953         config/alpha/ev6.md, config/alpha/alpha.c, config/alpha/vms-cc.c,
11954         config/alpha/alpha.h, config/alpha/sync.md,
11955         config/alpha/openbsd.h, config/alpha/alpha.md,
11956         config/alpha/alpha-modes.def, config/alpha/ev5.md,
11957         config/alpha/alpha-protos.h, config/alpha/freebsd.h,
11958         config/alpha/osf5.h, config/alpha/netbsd.h, config/alpha/vms64.h,
11959         config/alpha/constraints.md, config/alpha/osf.h,
11960         config/alpha/xm-vms.h, config/alpha/unicosmk.h, config/linux.h,
11961         config/frv/predicates.md, config/frv/frv.h, config/frv/linux.h,
11962         config/frv/frv.md, config/frv/frv.opt, config/frv/frv-modes.def,
11963         config/frv/frv-asm.h, config/frv/frv-protos.h,
11964         config/frv/frv-abi.h, config/frv/frv.c, config/s390/tpf.h,
11965         config/s390/s390.c, config/s390/predicates.md, config/s390/s390.h,
11966         config/s390/linux.h, config/s390/tpf.md, config/s390/tpf.opt,
11967         config/s390/2064.md, config/s390/2084.md, config/s390/s390.md,
11968         config/s390/s390.opt, config/s390/s390-modes.def,
11969         config/s390/fixdfdi.h, config/s390/constraints.md,
11970         config/s390/s390-protos.h, config/s390/s390x.h, config/elfos.h,
11971         config/dbxcoff.h, config/m32c/predicates.md, config/m32c/cond.md,
11972         config/m32c/m32c.c, config/m32c/minmax.md, config/m32c/blkmov.md,
11973         config/m32c/m32c-pragma.c, config/m32c/m32c.h,
11974         config/m32c/prologue.md, config/m32c/m32c.abi,
11975         config/m32c/muldiv.md, config/m32c/bitops.md, config/m32c/mov.md,
11976         config/m32c/addsub.md, config/m32c/m32c.md, config/m32c/m32c.opt,
11977         config/m32c/t-m32c, config/m32c/m32c-modes.def,
11978         config/m32c/jump.md, config/m32c/shift.md,
11979         config/m32c/m32c-protos.h, config/libgloss.h,
11980         config/spu/spu-protos.h, config/spu/predicates.md,
11981         config/spu/spu-builtins.h, config/spu/spu.c,
11982         config/spu/spu-builtins.def, config/spu/spu-builtins.md,
11983         config/spu/spu.h, config/spu/spu-elf.h, config/spu/constraints.md,
11984         config/spu/spu.md, config/spu/spu-c.c, config/spu/spu.opt,
11985         config/spu/spu-modes.def, config/spu/t-spu-elf, config/interix.h,
11986         config/sparc/hypersparc.md, config/sparc/predicates.md,
11987         config/sparc/linux.h, config/sparc/sp64-elf.h,
11988         config/sparc/supersparc.md, config/sparc/cypress.md,
11989         config/sparc/openbsd1-64.h, config/sparc/openbsd64.h,
11990         config/sparc/niagara.md, config/sparc/sparc.md,
11991         config/sparc/long-double-switch.opt, config/sparc/ultra3.md,
11992         config/sparc/sparc.opt, config/sparc/sync.md,
11993         config/sparc/sp-elf.h, config/sparc/sparc-protos.h,
11994         config/sparc/ultra1_2.md, config/sparc/biarch64.h,
11995         config/sparc/sparc.c, config/sparc/little-endian.opt,
11996         config/sparc/sysv4-only.h, config/sparc/sparc.h,
11997         config/sparc/linux64.h, config/sparc/freebsd.h,
11998         config/sparc/sol2.h, config/sparc/rtemself.h,
11999         config/sparc/netbsd-elf.h, config/sparc/vxworks.h,
12000         config/sparc/sparc-modes.def, config/sparc/sparclet.md,
12001         config/sparc/sysv4.h, config/vx-common.h, config/netbsd-aout.h,
12002         config/flat.h, config/m32r/m32r.md, config/m32r/predicates.md,
12003         config/m32r/little.h, config/m32r/m32r.c, config/m32r/m32r.opt,
12004         config/m32r/linux.h, config/m32r/constraints.md,
12005         config/m32r/m32r.h, config/m32r/m32r-protos.h, config/vxworks.opt,
12006         config/darwin-c.c, config/darwin.opt, config/i386/i386.h,
12007         config/i386/cygming.h, config/i386/linux.h, config/i386/cygwin.h,
12008         config/i386/i386.md, config/i386/netware-crt0.c,
12009         config/i386/sco5.h, config/i386/mmx.md, config/i386/vx-common.h,
12010         config/i386/kaos-i386.h, config/i386/winnt-stubs.c,
12011         config/i386/netbsd64.h, config/i386/djgpp.h, config/i386/gas.h,
12012         config/i386/sol2.h, config/i386/constraints.md,
12013         config/i386/netware-libgcc.c, config/i386/sysv5.h,
12014         config/i386/predicates.md, config/i386/geode.md,
12015         config/i386/x86-64.h, config/i386/kfreebsd-gnu.h,
12016         config/i386/freebsd64.h, config/i386/vxworksae.h,
12017         config/i386/pentium.md, config/i386/lynx.h, config/i386/i386elf.h,
12018         config/i386/rtemself.h, config/i386/netbsd-elf.h,
12019         config/i386/ppro.md, config/i386/k6.md, config/i386/netware.c,
12020         config/i386/netware.h, config/i386/i386-modes.def,
12021         config/i386/sysv4-cpp.h, config/i386/i386-interix.h,
12022         config/i386/cygwin1.c, config/i386/djgpp.opt, config/i386/uwin.h,
12023         config/i386/unix.h, config/i386/ptx4-i.h, config/i386/xm-djgpp.h,
12024         config/i386/att.h, config/i386/winnt.c, config/i386/beos-elf.h,
12025         config/i386/sol2-10.h, config/i386/darwin64.h, config/i386/sse.md,
12026         config/i386/i386.opt, config/i386/bsd.h, config/i386/cygming.opt,
12027         config/i386/xm-mingw32.h, config/i386/linux64.h,
12028         config/i386/openbsdelf.h, config/i386/xm-cygwin.h,
12029         config/i386/sco5.opt, config/i386/darwin.h, config/i386/mingw32.h,
12030         config/i386/winnt-cxx.c, config/i386/i386-interix3.h,
12031         config/i386/nwld.c, config/i386/nwld.h, config/i386/host-cygwin.c,
12032         config/i386/cygwin2.c, config/i386/i386-protos.h,
12033         config/i386/sync.md, config/i386/openbsd.h,
12034         config/i386/host-mingw32.c, config/i386/i386-aout.h,
12035         config/i386/nto.h, config/i386/biarch64.h,
12036         config/i386/i386-coff.h, config/i386/freebsd.h,
12037         config/i386/driver-i386.c, config/i386/knetbsd-gnu.h,
12038         config/i386/host-i386-darwin.c, config/i386/vxworks.h,
12039         config/i386/crtdll.h, config/i386/i386.c, config/i386/sysv4.h,
12040         config/darwin-protos.h, config/linux.opt, config/sol2.c,
12041         config/sol2.h, config/sh/symbian.c, config/sh/sh-protos.h,
12042         config/sh/linux.h, config/sh/elf.h, config/sh/superh.h,
12043         config/sh/sh4.md, config/sh/coff.h, config/sh/newlib.h,
12044         config/sh/embed-elf.h, config/sh/symbian-pre.h, config/sh/rtems.h,
12045         config/sh/kaos-sh.h, config/sh/sh4a.md, config/sh/constraints.md,
12046         config/sh/sh64.h, config/sh/sh.opt, config/sh/symbian-post.h,
12047         config/sh/sh-c.c, config/sh/predicates.md, config/sh/sh.c,
12048         config/sh/sh.h, config/sh/shmedia.md, config/sh/sh-modes.def,
12049         config/sh/little.h, config/sh/sh1.md, config/sh/sh4-300.md,
12050         config/sh/superh64.h, config/sh/rtemself.h,
12051         config/sh/netbsd-elf.h, config/sh/sh.md, config/sh/vxworks.h,
12052         config/usegas.h, config/svr3.h, config/pdp11/pdp11-protos.h,
12053         config/pdp11/2bsd.h, config/pdp11/pdp11.md, config/pdp11/pdp11.c,
12054         config/pdp11/pdp11.opt, config/pdp11/pdp11-modes.def,
12055         config/pdp11/pdp11.h, config/avr/rtems.h, config/avr/avr-protos.h,
12056         config/avr/predicates.md, config/avr/constraints.md,
12057         config/avr/avr.md, config/avr/avr.c, config/avr/avr.opt,
12058         config/avr/avr.h, config/sol2-protos.h, config/dbxelf.h,
12059         config/lynx.opt, config/crx/crx.h, config/crx/crx-protos.h,
12060         config/crx/crx.md, config/crx/crx.c, config/crx/crx.opt,
12061         config/c4x/c4x-c.c, config/c4x/c4x.c, config/c4x/c4x.opt,
12062         config/c4x/c4x-modes.def, config/c4x/rtems.h,
12063         config/c4x/predicates.md, config/c4x/c4x.h,
12064         config/c4x/c4x-protos.h, config/c4x/c4x.md, config/kfreebsd-gnu.h,
12065         config/xtensa/predicates.md, config/xtensa/xtensa.c,
12066         config/xtensa/linux.h, config/xtensa/xtensa.h,
12067         config/xtensa/elf.h, config/xtensa/xtensa.md,
12068         config/xtensa/xtensa.opt, config/xtensa/constraints.md,
12069         config/xtensa/xtensa-protos.h, config/dbx.h,
12070         config/stormy16/predicates.md, config/stormy16/stormy16.md,
12071         config/stormy16/stormy16.c, config/stormy16/stormy16.opt,
12072         config/stormy16/stormy16.h, config/stormy16/stormy16-protos.h,
12073         config/host-solaris.c, config/fr30/fr30.h,
12074         config/fr30/predicates.md, config/fr30/fr30-protos.h,
12075         config/fr30/fr30.md, config/fr30/fr30.c, config/fr30/fr30.opt,
12076         config/vxworksae.h, config/sol2-c.c, config/lynx.h,
12077         config/m68hc11/m68hc11-protos.h, config/m68hc11/predicates.md,
12078         config/m68hc11/m68hc11.md, config/m68hc11/m68hc11.c,
12079         config/m68hc11/m68hc11.opt, config/m68hc11/m68hc11.h,
12080         config/m68hc11/m68hc12.h, config/openbsd-oldgas.h,
12081         config/host-linux.c, config/interix3.h, config/cris/cris.c,
12082         config/cris/predicates.md, config/cris/linux.h,
12083         config/cris/cris.h, config/cris/aout.h, config/cris/cris.md,
12084         config/cris/linux.opt, config/cris/cris.opt, config/cris/elf.opt,
12085         config/cris/aout.opt, config/cris/cris-protos.h,
12086         config/vxworks-dummy.h, config/netbsd.h, config/netbsd-elf.h,
12087         config/iq2000/iq2000.h, config/iq2000/predicates.md,
12088         config/iq2000/iq2000-protos.h, config/iq2000/iq2000.md,
12089         config/iq2000/iq2000.c, config/iq2000/iq2000.opt,
12090         config/host-darwin.c, config/mt/mt.md, config/mt/mt.c,
12091         config/mt/mt.opt, config/mt/t-mt, config/mt/mt.h,
12092         config/mt/mt-protos.h, config/svr4.h, config/host-darwin.h,
12093         config/chorus.h, config/mn10300/mn10300.c,
12094         config/mn10300/mn10300.opt, config/mn10300/predicates.md,
12095         config/mn10300/mn10300.h, config/mn10300/linux.h,
12096         config/mn10300/constraints.md, config/mn10300/mn10300-protos.h,
12097         config/mn10300/mn10300.md, config/ia64/predicates.md,
12098         config/ia64/itanium1.md, config/ia64/unwind-ia64.h,
12099         config/ia64/ia64-c.c, config/ia64/sync.md, config/ia64/ia64.c,
12100         config/ia64/itanium2.md, config/ia64/ia64.h, config/ia64/vect.md,
12101         config/ia64/freebsd.h, config/ia64/ia64.md,
12102         config/ia64/ia64-modes.def, config/ia64/constraints.md,
12103         config/ia64/hpux.h, config/ia64/ia64-protos.h, config/windiss.h,
12104         config/gofast.h, config/rtems.h, config/sol2-10.h,
12105         config/m68k/predicates.md, config/m68k/m68k.md,
12106         config/m68k/linux.h, config/m68k/m68k-modes.def,
12107         config/m68k/print-sysroot-suffix.sh, config/m68k/m68k-protos.h,
12108         config/m68k/coff.h, config/m68k/m68k-none.h, config/m68k/ieee.opt,
12109         config/m68k/openbsd.h, config/m68k/m68k-aout.h,
12110         config/m68k/m68k.opt, config/m68k/m68020-elf.h,
12111         config/m68k/m68kelf.h, config/m68k/m68k-devices.def,
12112         config/m68k/uclinux-oldabi.h, config/m68k/m68k.c,
12113         config/m68k/constraints.md, config/m68k/rtemself.h,
12114         config/m68k/netbsd-elf.h, config/m68k/m68k.h,
12115         config/m68k/uclinux.h, config/rs6000/power4.md,
12116         config/rs6000/host-darwin.c, config/rs6000/6xx.md,
12117         config/rs6000/linux.h, config/rs6000/eabi.h,
12118         config/rs6000/aix41.opt, config/rs6000/xcoff.h,
12119         config/rs6000/secureplt.h, config/rs6000/linuxspe.h,
12120         config/rs6000/eabialtivec.h, config/rs6000/8540.md,
12121         config/rs6000/darwin8.h, config/rs6000/kaos-ppc.h,
12122         config/rs6000/windiss.h, config/rs6000/603.md,
12123         config/rs6000/aix41.h, config/rs6000/cell.md,
12124         config/rs6000/mpc.md, config/rs6000/aix43.h, config/rs6000/beos.h,
12125         config/rs6000/gnu.h, config/rs6000/rtems.h, config/rs6000/aix.opt,
12126         config/rs6000/darwin.md, config/rs6000/darwin64.h,
12127         config/rs6000/default64.h, config/rs6000/7xx.md,
12128         config/rs6000/darwin.opt, config/rs6000/spe.md,
12129         config/rs6000/rs6000.opt, config/rs6000/rs6000-c.c,
12130         config/rs6000/rios2.md, config/rs6000/linuxaltivec.h,
12131         config/rs6000/7450.md, config/rs6000/linux64.h,
12132         config/rs6000/constraints.md, config/rs6000/440.md,
12133         config/rs6000/darwin.h, config/rs6000/host-ppc64-darwin.c,
12134         config/rs6000/rs6000.c, config/rs6000/aix52.h,
12135         config/rs6000/rs6000.h, config/rs6000/power6.md,
12136         config/rs6000/predicates.md, config/rs6000/altivec.md,
12137         config/rs6000/aix64.opt, config/rs6000/rios1.md,
12138         config/rs6000/rs6000-modes.def, config/rs6000/rs64.md,
12139         config/rs6000/eabisim.h, config/rs6000/sysv4le.h,
12140         config/rs6000/darwin7.h, config/rs6000/dfp.md,
12141         config/rs6000/linux64.opt, config/rs6000/sync.md,
12142         config/rs6000/vxworksae.h, config/rs6000/power5.md,
12143         config/rs6000/lynx.h, config/rs6000/biarch64.h,
12144         config/rs6000/rs6000.md, config/rs6000/sysv4.opt,
12145         config/rs6000/eabispe.h, config/rs6000/e500.h,
12146         config/rs6000/freebsd.h, config/rs6000/rs6000-protos.h,
12147         config/rs6000/netbsd.h, config/rs6000/e500-double.h,
12148         config/rs6000/aix.h, config/rs6000/vxworks.h,
12149         config/rs6000/40x.md, config/rs6000/aix51.h,
12150         config/rs6000/sysv4.h, config/arc/arc-protos.h, config/arc/arc.md,
12151         config/arc/arc.c, config/arc/arc.opt, config/arc/arc-modes.def,
12152         config/arc/arc.h, config/mcore/mcore-elf.h,
12153         config/mcore/mcore-protos.h, config/mcore/predicates.md,
12154         config/mcore/mcore.md, config/mcore/mcore.c,
12155         config/mcore/mcore.opt, config/mcore/mcore.h,
12156         config/mcore/mcore-pe.h, config/darwin.c, config/freebsd-nthr.h,
12157         config/score/predicates.md, config/score/score-version.h,
12158         config/score/score-protos.h, config/score/misc.md,
12159         config/score/elf.h, config/score/score.c, config/score/mac.md,
12160         config/score/score7.md, config/score/score.h,
12161         config/score/score-conv.h, config/score/score-mdaux.c,
12162         config/score/score.md, config/score/score.opt,
12163         config/score/score-modes.def, config/score/score-mdaux.h,
12164         config/score/mul-div.S, config/arm/uclinux-elf.h,
12165         config/arm/semi.h, config/arm/ecos-elf.h, config/arm/arm1020e.md,
12166         config/arm/symbian.h, config/arm/linux-elf.h,
12167         config/arm/arm1026ejs.md, config/arm/arm1136jfs.md,
12168         config/arm/elf.h, config/arm/aout.h, config/arm/arm.c,
12169         config/arm/thumb2.md, config/arm/vec-common.md, config/arm/coff.h,
12170         config/arm/strongarm-pe.h, config/arm/arm.h,
12171         config/arm/cortex-a8-neon.md, config/arm/semiaof.h,
12172         config/arm/cortex-a8.md, config/arm/uclinux-eabi.h,
12173         config/arm/arm-modes.def, config/arm/linux-eabi.h,
12174         config/arm/rtems-elf.h, config/arm/neon-schedgen.ml,
12175         config/arm/arm-cores.def, config/arm/arm-protos.h,
12176         config/arm/vfp.md, config/arm/aof.h, config/arm/linux-gas.h,
12177         config/arm/wince-pe.h, config/arm/neon.md,
12178         config/arm/constraints.md, config/arm/neon.ml,
12179         config/arm/xscale-elf.h, config/arm/strongarm-coff.h,
12180         config/arm/arm.opt, config/arm/arm926ejs.md,
12181         config/arm/predicates.md, config/arm/iwmmxt.md,
12182         config/arm/arm_neon.h, config/arm/unknown-elf.h,
12183         config/arm/kaos-arm.h, config/arm/bpabi.h, config/arm/pe.opt,
12184         config/arm/neon-testgen.ml, config/arm/arm.md,
12185         config/arm/xscale-coff.h, config/arm/pe.c,
12186         config/arm/arm-generic.md, config/arm/pe.h,
12187         config/arm/kaos-strongarm.h, config/arm/freebsd.h,
12188         config/arm/neon-docgen.ml, config/arm/netbsd.h, config/arm/fpa.md,
12189         config/arm/strongarm-elf.h, config/arm/cirrus.md,
12190         config/arm/netbsd-elf.h, config/arm/vxworks.h,
12191         config/arm/neon-gen.ml, config/kaos.h, config/darwin-driver.c,
12192         config/pa/predicates.md, config/pa/pa64-hpux.h,
12193         config/pa/pa-hpux.opt, config/pa/som.h, config/pa/pa-hpux1010.opt,
12194         config/pa/pa-hpux1111.opt, config/pa/pa-pro-end.h,
12195         config/pa/elf.h, config/pa/fptr.c, config/pa/pa64-linux.h,
12196         config/pa/pa.md, config/pa/pa.opt, config/pa/pa-hpux.h,
12197         config/pa/pa-hpux10.h, config/pa/pa-hpux11.h,
12198         config/pa/pa-hpux1010.h, config/pa/pa-protos.h,
12199         config/pa/pa-osf.h, config/pa/pa-hpux1111.h, config/pa/pa-64.h,
12200         config/pa/milli64.S, config/pa/pa.c, config/pa/pa-linux.h,
12201         config/pa/pa.h, config/pa/pa32-linux.h, config/pa/pa64-hpux.opt,
12202         config/pa/pa64-regs.h, config/pa/pa-modes.def,
12203         config/pa/constraints.md, config/darwin9.h, config/mips/4100.md,
12204         config/mips/linux.h, config/mips/elfoabi.h, config/mips/elf.h,
12205         config/mips/sdb.h, config/mips/windiss.h, config/mips/rtems.h,
12206         config/mips/3000.md, config/mips/iris5.h, config/mips/5000.md,
12207         config/mips/7000.md, config/mips/9000.md, config/mips/4600.md,
12208         config/mips/linux64.h, config/mips/elforion.h,
12209         config/mips/constraints.md, config/mips/generic.md,
12210         config/mips/predicates.md, config/mips/4300.md,
12211         config/mips/mips-ps-3d.md, config/mips/iris.h, config/mips/24k.md,
12212         config/mips/mips.md, config/mips/mips.opt, config/mips/4k.md,
12213         config/mips/5k.md, config/mips/vr4120-div.S,
12214         config/mips/openbsd.h, config/mips/iris6.h, config/mips/4000.md,
12215         config/mips/mips-protos.h, config/mips/6000.md,
12216         config/mips/mips.c, config/mips/mips.h, config/mips/r3900.h,
12217         config/mips/74k.md, config/mips/netbsd.h, config/mips/vxworks.h,
12218         config/mips/mips-modes.def, config/mips/vr.h,
12219         config/soft-fp/t-softfp, config/openbsd.h, config/ptx4.h,
12220         config/freebsd-spec.h, config/vax/vax.c, config/vax/openbsd.h,
12221         config/vax/vax.h, config/vax/elf.h, config/vax/vax.md,
12222         config/vax/bsd.h, config/vax/vax.opt, config/vax/vax-modes.def,
12223         config/vax/openbsd1.h, config/vax/netbsd.h,
12224         config/vax/vax-protos.h, config/vax/netbsd-elf.h,
12225         config/vax/vaxv.h, config/vax/ultrix.h, config/freebsd.h,
12226         config/h8300/rtems.h, config/h8300/predicates.md,
12227         config/h8300/h8300.c, config/h8300/h8300.h, config/h8300/elf.h,
12228         config/h8300/h8300.md, config/h8300/h8300.opt,
12229         config/h8300/coff.h, config/h8300/h8300-protos.h,
12230         config/v850/v850.md, config/v850/predicates.md,
12231         config/v850/v850-c.c, config/v850/v850.c, config/v850/v850.opt,
12232         config/v850/v850.h, config/v850/v850-protos.h, config/vxworks.c,
12233         config/knetbsd-gnu.h, config/sol2-6.h, config/vxworks.h,
12234         config/mmix/mmix.h, config/mmix/predicates.md,
12235         config/mmix/mmix-protos.h, config/mmix/mmix.md,
12236         config/mmix/mmix.c, config/mmix/mmix.opt,
12237         config/mmix/mmix-modes.def, config/bfin/bfin.opt,
12238         config/bfin/rtems.h, config/bfin/bfin-modes.def,
12239         config/bfin/predicates.md, config/bfin/bfin-protos.h,
12240         config/bfin/bfin.c, config/bfin/bfin.h, config/bfin/bfin.md:
12241         Likewise.
12242
12243 2007-08-02  Richard Sandiford  <richard@codesourcery.com>
12244
12245         * emit-rtl.c (reset_used_decls): Rename to...
12246         (set_used_decls): ...this.  Set the used flag rather than clearing it.
12247         (unshare_all_rtl_again): Update accordingly.  Set flags on argument
12248         DECL_RTLs rather than resetting them.
12249
12250 2007-08-02  Andreas Krebbel  <krebbel1@de.ibm.com>
12251
12252         * config/s390/s390.md ("*xordi3_cconly"): Change xr to xg.
12253
12254 2007-08-01  Sandra Loosemore  <sandra@codesourcery.com>
12255
12256         * reload.c (find_reloads_address_part): Pass correct MEMREFLOC
12257         argument to find_reloads_address.
12258
12259 2007-08-01  Daniel Jacobowitz  <dan@codesourcery.com>
12260
12261         PR tree-optimization/32919
12262         * tree-ssa-sccvn.c (visit_phi): Do not visit abnormal PHIs.
12263         * tree-ssa-coalesce.c (ssa_conflicts_dump): New.
12264         (coalesce_ssa_name): Call it.
12265
12266 2007-08-01  Sandra Loosemore  <sandra@codesourcery.com>
12267             David Ung  <davidu@mips.com>
12268
12269         * config/mips/mips16.S (__mips16_unordsf2, __mips16_floatunsisf): New.
12270         (__mips16_unorddf2, __mips16_floatunsidf): New.
12271         * config/mips/mips.c (mips_init_libfuncs): Add optab entries for
12272         above functions.
12273         * config/mips/t-libgcc-mips16 (LIB1ASMFUNCS): Add new functions.
12274
12275 2007-08-01  Zdenek Dvorak  <ook@ucw.cz>
12276
12277         * tree-pretty-print.c (dump_generic_node): Dump OMP_SECTIONS_SWITCH.
12278         Display new operands of OMP_SECTIONS and OMP_CONTINUE.
12279         * tree.h (OMP_SECTIONS_CONTROL): New macro.
12280         (OMP_DIRECTIVE_P): Add OMP_SECTIONS_SWITCH.
12281         * omp-low.c (get_ws_args_for, determine_parallel_type,
12282         expand_omp_for_generic, expand_omp_for_static_nochunk,
12283         expand_omp_for_static_chunk, expand_omp_for, expand_omp_sections):
12284         Work with more precise CFG.
12285         (build_omp_regions_1): Handle OMP_SECTIONS_SWITCH.
12286         (lower_omp_sections): Emit OMP_SECTIONS_SWITCH.  Add arguments to
12287         OMP_CONTINUE.
12288         * tree-gimple.c (is_gimple_stmt): Handle OMP_SECTIONS_SWITCH.
12289         * gimple-low.c (lower_stmt): Ditto.
12290         * tree-inline.c (estimate_num_insns_1): Ditto.
12291         * tree.def (OMP_SECTIONS, OMP_CONTINUE): Added new operands.
12292         (OMP_SECTIONS_SWITCH): New.
12293         * tree-cfgcleanup.c (cleanup_omp_return): New.
12294         (cleanup_tree_cfg_bb): Call cleanup_omp_return.
12295         * tree-cfg.c (make_edges): Create back edges for OMP_CONTINUE
12296         and exit edge for OMP_FOR.  Handle OMP_SECTIONS_SWITCH.
12297         (tree_redirect_edge_and_branch): Handle omp constructs.
12298
12299         * fortran/trans-openmp.c (gfc_trans_omp_sections): Build OMP_SECTIONS
12300         with three arguments.
12301
12302 2007-08-01  Zdenek Dvorak  <ook@ucw.cz>
12303
12304         * tree-cfg.c (tree_merge_blocks): Preserve loop exit phi nodes only
12305         in loop closed ssa.
12306
12307 2007-08-01  Zdenek Dvorak  <ook@ucw.cz>
12308
12309         * tree-ssa-threadupdate.c (thread_through_all_blocks): Record that
12310         the loop structures may need fixing.
12311         * tree-cfgcleanup.c (cleanup_tree_cfg_noloop, repair_loop_structures):
12312         New functions.
12313         (cleanup_tree_cfg_loop): Removed.
12314         (cleanup_tree_cfg): If loops need fixing, call repair_loop_structures.
12315         * tree-predcom.c (tree_predictive_commoning): Return TODO_cleanup_cfg
12316         instead of running cleanup_tree_cfg_loop.
12317         * cfgloop.h (LOOPS_NEED_FIXUP): New constant.
12318         * tree-flow.h (cleanup_tree_cfg_loop): Declaration removed.
12319         (tree_predictive_commoning): Declaration changed.
12320         * passes.c (execute_function_todo): Do not use cleanup_tree_cfg_loop.
12321
12322 2007-08-01  Zdenek Dvorak  <ook@ucw.cz>
12323
12324         * doc/invoke.texi (l1-cache-size): Update documentation.
12325         (l2-cache-size): Document.
12326         * params.h (L2_CACHE_SIZE): New macro.
12327         * tree-ssa-loop-prefetch.c (L1_CACHE_SIZE_BYTES): Reflect
12328         that L1_CACHE_SIZE is in kB now.
12329         (L2_CACHE_SIZE_BYTES): New macro.
12330         (tree_ssa_prefetch_arrays): Show size in kB.
12331         * config/i386/i386.h (struct processor_costs): Add l1_cache_size
12332         and l2_cache_size fields.
12333         * config/i386/driver-i386.c (describe_cache): Detect cache size
12334         in kB.
12335         * config/i386/i386.c (size_cost, i386_cost, i486_cost,pentium_cost,
12336         pentiumpro_cost, geode_cost, k6_cost, athlon_cost, k8_cost,
12337         amdfam10_cost, pentium4_cost, nocona_cost, core2_cost,
12338         generic64_cost, generic32_cost): Add l1_cache_size and l2_cache_size.
12339         (override_options): Set l1-cache-size and l2-cache-size to default
12340         values if not specified otherwise.
12341         * params.def (PARAM_L1_CACHE_SIZE): Change to set in kB.
12342         (PARAM_L2_CACHE_SIZE): New.
12343
12344 2007-08-01  Nigel Stephens  <nigel@mips.com>
12345             David Ung  <davidu@mips.com>
12346             Thiemo Seufer  <ths@mips.com>
12347             Chris Dearman  <chris@mips.com>
12348             Richard Sandiford  <richard@codesourcery.com>
12349
12350         * config.gcc (mips*-sde-elf*): New stanza.
12351         (mipsisa32-*-elf*, mipsisa32el-*-elf*, mipsisa32r2-*-elf*)
12352         (mipsisa32r2el-*-elf*, mipsisa64-*-elf*, mipsisa64el-*-elf*)
12353         (mipsisa64sb1-*-elf*, mipsisa64sb1el-*-elf*, mips-*-elf*)
12354         (mipsel-*-elf*, mips64-*-elf*, mips64el-*-elf*, mips64orion-*-elf*)
12355         (mips64orionel-*-elf*, mips*-*-rtems*, mips-wrs-windiss)
12356         (mipstx39-*-elf*, mipstx39el-*-elf*): Add mips/t-libgcc-mips16
12357         to tmake_file.
12358         * config/mips/sde.h: New file.
12359         * config/mips/t-libgcc-mips16: Likewise.
12360         * config/mips/t-sde: Likewise.
12361         * config/mips/linux.h (TARGET_OS_CPP_BUILTINS): Remove settings
12362         of _ABIN32, _ABI64, _ABIO32, _MIPS_SIM, _MIPS_SZLONG, _MIPS_SZPTR,
12363         _MIPS_FPSET and _MIPS_SZINT.
12364         * config/mips/iris.h (TARGET_OS_CPP_BUILTINS): Likewise.
12365         * config/mips/elfoabi.h (DRIVER_SELF_SPECS): Remove separate
12366         insertion of a default -mips option.  Use MIPS_32BIT_OPTION_SPEC.
12367         * config/mips/t-isa3264 (LIB1ASMSRC, LIB1ASMFUNCS): Delete.
12368         * config/mips/t-r3900 (LIB1ASMSRC, LIB1ASMFUNCS): Likewise.
12369         * config/mips/t-elf (LIB1ASMSRC, LIB1ASMFUNCS): Likewise.
12370         * config/mips/mips.h (TARGET_CPU_CPP_BUITINS): Define _ABIO32,
12371         _ABIN32, _ABI64, _ABIO64, _MIPS_SIM, _MIPS_SZINT, _MIPS_SZLONG,
12372         _MIPS_SZPTR and _MIPS_FPSET.
12373         (MIPS_ISA_LEVEL_SPEC): Inject the default -mips option if no
12374         architecture is specified.
12375         (MIPS_32BIT_OPTION_SPEC): New macro.
12376
12377 2007-07-31  Dan Hipschman  <dsh@google.com>
12378
12379         * gcc.c (end_going_arg): New function.
12380         (do_spec_2): Use it.
12381         (do_spec_1): Use it.
12382
12383 2007-07-31  H.J. Lu  <hongjiu.lu@intel.com>
12384
12385         * ddg.c (add_cross_iteration_register_deps): Declare bb_info
12386         only if ENABLE_CHECKING is defined.
12387
12388 2007-07-31  Kenneth Zadeck <zadeck@naturalbridge.com>
12389
12390         * df.h (DF_RU, DF_RU_BB_INFO, df_ru_bb_info, df_ru,
12391         df_ru_add_problem, df_ru_get_bb_info): Removed.
12392         (DF_RD, DF_UREC, DF_CHAIN, DF_NOTE): Renumbered.
12393         * df-problems.c (df_ru_problem_data, df_ru_set_bb_info,
12394         df_ru_free_bb_info, df_ru_alloc,
12395         df_ru_bb_local_compute_process_def,
12396         df_ru_bb_local_compute_process_use, df_ru_bb_local_compute,
12397         df_ru_local_compute, df_ru_init_solution, df_ru_confluence_n,
12398         df_ru_transfer_function, df_ru_free, df_ru_start_dump,
12399         df_ru_top_dump, df_ru_bottom_dump, df_problem problem_RU,
12400         df_ru_add_problem): Removed.
12401
12402 2007-07-31  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
12403
12404         PR target/32847
12405         * pa.md (casesi32): Use match_scratch.  Revise insn condition.
12406         (casesi32p, casesi64p): Likewise.
12407         (casesi): Adjust for above.
12408
12409 2007-07-31  Richard Sandiford  <richard@codesourcery.com>
12410
12411         * mode-switching.c (create_pre_exit): Don't search past calls.
12412
12413 2007-07-31  Sandra Loosemore  <sandra@codesourcery.com>
12414
12415         * config/mips/mips.h (ISA_HAS_SYNCI): Add !TARGET_MIPS16 test.
12416
12417 2007-07-31  Revital Eres  <eres@il.ibm.com>
12418
12419         * ddg.c (add_deps_for_def): Rename to...
12420         (add_cross_iteration_register_deps): This.  Change implementation
12421         to use only reaching def and def-use chains to construct the
12422         inter loop dependencies.
12423         (add_deps_for_use): Remove function.
12424         (build_inter_loop_deps): Call add_cross_iteration_register_deps
12425         function to build the inter loop dependencies.
12426         * modulo-sched.c (sms_schedule): Build only
12427         reaching def and def-use chains for the propose of the ddg
12428         construction.
12429
12430 2007-07-31  Julian Brown  <julian@codesourcery.com>
12431
12432         * config/arm/neon.md (vec_set<mode>_internal, vec_setv2di_internal):
12433         New define_insns. Use correct RTL.
12434         (vec_set<mode>): Write as expander.
12435
12436 2007-07-31  Razya Ladelsky  <razya@il.ibm.com>
12437
12438         * matrix-reorg.c (analyze_matrix_allocation_site): Avoid referring 
12439         to an unallocated space.
12440
12441 2007-07-30  Jan Sjodin  <jan.sjodin@amd.com>
12442
12443         * tree-data-ref.c
12444         (split_constant_offset): Enable split_constant_offset to extract
12445         constants from other statements.
12446         * tree-vect-transform.c
12447         (vect_create_addr_base_for_vector_ref): Generate data_ref_base
12448         to a temp var. Force base_offset to be simple.
12449
12450 2007-07-30  Seongbae Park <seongbae.park@gmail.com>
12451
12452         * df-scan.c (df_scan_verify): Remove artificial limit on
12453         the number of blocks for verification.
12454         * df-problems.c (df_lr_bb_local_compute, df_simulate_find_defs,
12455         df_simulate_defs): Avoid unnecessary insn checking for defs.
12456
12457 2007-07-29  Mark Mitchell  <mark@codesourcery.com>
12458
12459         * config/m68k/lb1sf68.asm (FUNC): New macro.
12460         (__mulsi3): Use it.
12461         (__udivsi3): Likewise.
12462         (__divsi3): Likewise.
12463         (__umodsi3): Likewise.
12464         (__modsi3): Likewise.
12465         (__subdf3): Likewise.
12466         (__adddf3): Likewise.
12467         (__muldf3): Likewise.
12468         (__divdf3): Likewise.
12469         (__negdf2): Likewise.
12470         (__cmpdf2): Likewise.
12471         (__subsf3): Likewise.
12472         (__addsf3): Likewise.
12473         (__mulsf3): Likewise.
12474         (__divsf3): Likewise.
12475         (__negsf2): Likewise.
12476         (__cmpsf2): Likewise.
12477         (__eqdf2): Likewise.
12478         (__nedf2): Likewise.
12479         (__gtdf2): Likewise.
12480         (__gedf2): Likewise.
12481         (__ltdf2): Likewise.
12482         (__ledf2): Likewise.
12483         (__eqsf2): Likewise.
12484         (__nesf2): Likewise.
12485         (__gtsf2): Likewise.
12486         (__gesf2): Likewise.
12487         (__ltsf2): Likewise.
12488         (__lesf2): Likewise.
12489
12490 2007-07-30  Ollie Wild  <aaw@google.com>
12491
12492         * c-ppoutput.c (print_lines_directives_only): New function.
12493         (scan_translation_unit_directives_only): New function.
12494         (preprocess_file): Add call to scan_translation_unit_directives_only.
12495         * c-opts.c (c_common_handle_option): Add OPT_fdirectives_only.
12496         (sanitize_cpp_opts): Add default flag_dump_macros setting for
12497         -fdirectives-only.  Add errors for -fdirectives-only conflict with
12498         -Wunused-macros and -traditional.
12499         (finish_options): Add builtin macro initialization for
12500         -fdirectives-only + -fpreprocessed.
12501         * c.opt (fdirectives-only): New.
12502         * doc/cppopts.texi (fdirectives-only): New.
12503
12504 2007-07-30  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
12505
12506         * alias.c (record_set, memory_modified_1): Constify.
12507         * bt-load.c (note_btr_set): Likewise.
12508         * caller-save.c (mark_set_regs, add_stored_regs): Likewise.
12509         * combine.c (set_nonzero_bits_and_sign_copies,
12510         expand_field_assignment, record_dead_and_set_regs_1,
12511         use_crosses_set_p, reg_dead_at_p_1, can_combine_p,
12512         likely_spilled_retval_1): Likewise.
12513         * config/frv/frv.c (frv_registers_update_1, frv_io_check_address,
12514         frv_io_handle_set): Likewise.
12515         * config/mips/mips.c (mips_sim_record_set,
12516         vr4130_true_reg_dependence_p_1): Likewise.
12517         * config/mt/mt.c (insn_dependent_p_1): Likewise.
12518         * config/s390/s390.c (s390_reg_clobbered_rtx): Likewise.
12519         * config/sh/sh.c (flow_dependent_p_1): Likewise.
12520         * cselib.c (cselib_invalidate_rtx_note_stores): Likewise.
12521         * dce.c (mark_nonreg_stores_1, mark_nonreg_stores_2): Likewise.
12522         * ddg.c (mark_mem_store): Likewise.
12523         * df-problems.c (df_urec_mark_reg_change): Likewise.
12524         * function.c (update_epilogue_consts): Likewise.
12525         * gcse.c (record_set_info, record_last_set_info,
12526         mems_conflict_for_gcse_p, canon_list_insert, reg_set_info,
12527         reg_clear_last_set): Likewise.
12528         * global.c (mark_reg_store, mark_reg_clobber, reg_becomes_live):
12529         Likewise.
12530         * jump.c (reversed_comparison_code_parts): Likewise.
12531         * local-alloc.c (validate_equiv_mem_from_store, no_equiv,
12532         reg_is_set): Likewise.
12533         * loop-iv.c (mark_altered): Likewise.
12534         * mode-switching.c (reg_becomes_live): Likewise.
12535         * optabs.c (no_conflict_move_test): Likewise.
12536         * postreload-gcse.c (record_last_set_info, find_mem_conflicts):
12537         Likewise.
12538         * postreload.c (reload_combine_note_store, move2add_note_store):
12539         Likewise.
12540         * regmove.c (flags_set_1): Likewise.
12541         * regrename.c (note_sets, kill_clobbered_value, kill_set_value):
12542         Likewise.
12543         * reload1.c (mark_not_eliminable, forget_old_reloads_1):
12544         Likewise. 
12545         * resource.c (update_live_status): Likewise.
12546         * rtl.h (set_of, note_stores): Likewise.
12547         * rtlanal.c (set_of_1, parms_set, struct set_of_data, set_of,
12548         note_stores, parms_set): Likewise.
12549         * sched-rgn.c (sets_likely_spilled_1): Likewise.
12550         * stack-ptr-mod.c (notice_stack_pointer_modification_1):
12551         Likewise. 
12552         * var-tracking.c (count_stores, add_stores): Likewise.
12553
12554 2007-07-30  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
12555
12556         * alias.c (mems_in_disjoint_alias_sets_p,
12557         fixed_scalar_and_varying_struct_p, aliases_everything_p,
12558         nonoverlapping_component_refs_p, nonoverlapping_memrefs_p,
12559         write_dependence_p, mems_in_disjoint_alias_sets_p,
12560         read_dependence, true_dependence, canon_true_dependence,
12561         anti_dependence, output_dependence): Constify.
12562         * combine.c (extended_count): Likewise.
12563         * cse.c (cse_rtx_varies_p, hash_rtx, exp_equiv_p): Likewise.
12564         * cselib.c (get_value_hash, references_value_p,
12565         cselib_reg_set_mode, cselib_rtx_varies_p): Likewise.
12566         * cselib.h (cselib_reg_set_mode, references_value_p): Likewise.
12567         * emit-rtl.c (mem_expr_equal_p, active_insn_p): Likewise.
12568         * function.c (contains, prologue_epilogue_contains,
12569         sibcall_epilogue_contains): Likewise. 
12570         * jump.c (simplejump_p, condjump_p, condjump_in_parallel_p,
12571         pc_set, any_uncondjump_p, any_condjump_p, onlyjump_p,
12572         only_sets_cc0_p, sets_cc0_p, rtx_renumbered_equal_p, true_regnum,
12573         reg_or_subregno): Likewise.
12574         * recog.c (asm_noperands): Likewise.
12575         * reload1.c (function_invariant_p): Likewise.
12576         * rtl.h (mem_expr_equal_p, active_insn_p, rtx_varies_p,
12577         rtx_addr_varies_p, asm_noperands, exp_equiv_p, hash_rtx,
12578         condjump_p, any_condjump_p, any_uncondjump_p, pc_set,
12579         simplejump_p, onlyjump_p, only_sets_cc0_p, sets_cc0_p,
12580         true_regnum, reg_or_subregno, condjump_in_parallel_p,
12581         extended_count, prologue_epilogue_contains,
12582         sibcall_epilogue_contains, function_invariant_p, true_dependence,
12583         canon_true_dependence, read_dependence, anti_dependence,
12584         output_dependence): Likewise.
12585         * rtlanal.c (rtx_varies_p, rtx_addr_varies_p): Likewise.
12586
12587 2007-07-30  Julian Brown  <julian@codesourcery.com>
12588
12589         * config/arm/neon.md (V_ext): New mode attribute.
12590         (neon_vget_lane<mode>): Replace with define_expand.
12591         (neon_vget_lane<mode>_sext_internal)
12592         (neon_vget_lane<mode>_zext_internal): New define_insns for double
12593         and quad precision vectors.
12594         (neon_vget_lanedi): Add bounds check. Remove dead comment.
12595         * config/arm/neon.ml (get_lane): Make 32-bit get-lane intrinsics
12596         have typeless 32-bit result.
12597
12598 2007-07-30  Andrew Pinski  <andrew_pinski@playstation.sony.com>
12599
12600         PR tree-opt/32527
12601         * tree-affine.h (aff_tree): The type of rest is sizetype for types
12602         of pointers.
12603         * tree-affine.c (aff_combination_scale): If type is a pointer type,
12604         use sizetype for rest.
12605         (aff_combination_add_elt): Likewise. Don't specialize pointer types.
12606         (aff_combination_convert): Don't convert rest for pointer types.
12607
12608 2007-07-28  Daniel Berlin  <dberlin@dberlin.org>
12609
12610         * Makefile.in (tree-ssa-alias.o): Add alloc-pool.h
12611
12612         * tree-ssa-alias.c: Add alloc-pool.h.
12613         (init_alias_info): Free alias_bitmap_obstack.
12614         (delete_alias_info): Call delete_mem_ref_stats.
12615         (get_mem_sym_stats_for): Use alloc_pool.
12616         (init_mem_ref_stats): Do not delete mem_ref_stats here.
12617         (delete_mem_sym_stats): Removed.
12618         
12619 2007-07-29  Sebastian Pop  <sebpop@gmail.com>
12620
12621         * tree-data-ref.c (add_multivariate_self_dist): Parametric access
12622         functions cannot be represented as classical distance vectors.
12623
12624 2007-07-29  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
12625
12626         * attribs.c (hash_attr, eq_attr, init_attributes): Constify.
12627         * builtins.c (validate_arg, builtin_mathfn_code,
12628         validate_arglist): Likewise.
12629         * calls.c (call_expr_flags): Likewise.
12630         * combine.c (reg_nonzero_bits_for_combine,
12631         reg_num_sign_bit_copies_for_combine, get_last_value,
12632         reg_truncated_to_mode): Likewise.
12633         * emit-rtl.c (subreg_lowpart_p): Likewise.
12634         * expr.c (highest_pow2_factor_for_target,
12635         categorize_ctor_elements_1, categorize_ctor_elements,
12636         count_type_elements, contains_packed_reference,
12637         highest_pow2_factor, highest_pow2_factor_for_target): Likewise.
12638         * fold-const.c (may_negate_without_overflow_p, int_const_binop,
12639         fold_convertible_p, operand_equal_p, tree_swap_operands_p,
12640         native_encode_int, native_encode_real, native_encode_complex,
12641         native_encode_vector, native_encode_expr, native_interpret_int,
12642         native_interpret_real, native_interpret_complex,
12643         native_interpret_vector, native_interpret_expr): Likewise.
12644         * function.c (use_register_for_decl): Likewise.
12645         * gimplify.c (get_name): Likewise.
12646         * langhooks-def.h (lhd_return_null_const_tree): New.
12647         (LANG_HOOKS_GET_CALLEE_FNDECL): Use it.
12648         * langhooks.c (lhd_return_null_const_tree): New.
12649         * langhooks.h (lang_get_callee_fndecl): Constify.
12650         * output.h (constructor_static_from_elts_p): Likewise.
12651         * rtl-factoring.c (gen_symbol_ref_rtx_for_label): Likewise.
12652         * rtl.h (nonzero_bits, num_sign_bit_copies, truncated_to_mode,
12653         subreg_lowpart_p, noop_move_p, struct rtl_hooks): Likewise.
12654         * rtlanal.c (cached_nonzero_bits, nonzero_bits1,
12655         cached_num_sign_bit_copies, num_sign_bit_copies1, noop_move_p,
12656         nonzero_bits, num_sign_bit_copies, truncated_to_mode): Likewise.
12657         * rtlhooks-def.h (reg_nonzero_bits_general,
12658         reg_num_sign_bit_copies_general, reg_truncated_to_mode_general):
12659         Likewise. 
12660         * rtlhooks.c (reg_num_sign_bit_copies_general,
12661         reg_nonzero_bits_general, reg_truncated_to_mode_general):
12662         Likewise. 
12663         * stmt.c (warn_if_unused_value, is_body_block): Likewise.
12664         * stor-layout.c (mode_for_size_tree): Likewise.
12665         * tree-ssa-loop-im.c (memref_eq): Likewise.
12666         * tree-ssa-loop-ivopts.c (tree_int_cst_sign_bit): Likewise.
12667         * tree.c (contains_placeholder_p, type_list_equal,
12668         simple_cst_equal, get_callee_fndecl, operand_equal_for_phi_arg_p):
12669         Likewise. 
12670         * tree.h (tree_int_cst_sign_bit, may_negate_without_overflow_p,
12671         mode_for_size_tree, categorize_ctor_elements, count_type_elements,
12672         contains_placeholder_p, contains_packed_reference,
12673         get_callee_fndecl, operand_equal_for_phi_arg_p,
12674         warn_if_unused_value, is_body_block, native_encode_expr,
12675         native_interpret_expr, fold_convertible_p, operand_equal_p,
12676         int_const_binop, tree_swap_operands_p, builtin_mathfn_code,
12677         validate_arglist, simple_cst_equal, type_list_equal,
12678         use_register_for_decl, call_expr_flags, get_name,
12679         highest_pow2_factor): Likewise.
12680         (const_call_expr_arg_iterator_d,
12681         init_const_call_expr_arg_iterator, next_const_call_expr_arg,
12682         first_const_call_expr_arg, more_const_call_expr_args_p,
12683         FOR_EACH_CONST_CALL_EXPR_ARG): New.
12684         * varasm.c (constructor_static_from_elts_p): Constify.
12685
12686 2007-07-28  Kazu Hirata  <kazu@codesourcery.com>
12687
12688         * cfglayout.c, config/arm/arm.c, config/arm/cortex-a8.md,
12689         config/arm/neon-schedgen.ml, config/arm/neon.ml,
12690         config/arm/vec-common.md, config/ia64/div.md, cselib.c,
12691         df-core.c, df.h, dominance.c, optabs.c, opts.c, reg-stack.c,
12692         regstat.c, target.h, tree-ssa-live.c, tree-ssa-pre.c,
12693         tree-vect-transform.c, tree.def: Fix comment typos.  Follow
12694         spelling conventions.
12695         * doc/invoke.texi: Follow spelling conventions.
12696
12697 2007-07-29  Vladimir Yanovsky  <yanov@il.ibm.com>
12698             Revital Eres  <eres@il.ibm.com>
12699
12700         * modulo-sched.c (sms_schedule): Avoid loops which includes
12701         auto-increment instructions.
12702
12703 2007-07-28  Richard Guenther  <rguenther@suse.de>
12704
12705         PR middle-end/32920
12706         * fold-const.c (fold_cond_expr_with_comparison): Convert
12707         operand zero of MIN/MAX_EXPR to correct type.
12708
12709 2007-07-28  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
12710
12711         * calls.c (special_function_p, setjmp_call_p, alloca_call_p,
12712         flags_from_decl_or_type): Constify.
12713         * gcc.c (do_spec_1): Likewise.
12714         * print-tree.c (dump_addr, print_node_brief): Likewise.
12715         * tree-cfg.c (stmt_starts_bb_p, is_ctrl_stmt, computed_goto_p,
12716         simple_goto_p, tree_can_make_abnormal_goto, stmt_starts_bb_p,
12717         tree_purge_all_dead_eh_edges): Likewise.
12718         * tree-flow.h (is_ctrl_stmt, computed_goto_p, simple_goto_p,
12719         tree_can_make_abnormal_goto, tree_purge_all_dead_eh_edges):
12720         Likewise. 
12721         * tree.c (expr_location, expr_has_location, expr_locus,
12722         expr_filename, expr_lineno, get_inner_array_type,
12723         fields_compatible_p): Likewise.
12724         * tree.h (get_inner_array_type, fields_compatible_p,
12725         expr_location, expr_has_location, expr_locus, expr_filename,
12726         expr_lineno, dump_addr, print_node_brief, flags_from_decl_or_type,
12727         setjmp_call_p, alloca_call_p): Likewise.
12728
12729 2007-07-28  Daniel Berlin  <dberlin@dberlin.org>
12730
12731         * timevar.def: Add TV_CALL_CLOBBER, TV_FLOW_SENSITIVE,
12732         TV_FLOW_INSENSITIVE.
12733
12734         * tree-ssa-alias.c (compute_call_clobbered): Push/pop
12735         TV_CALL_CLOBBER.
12736         (compute_flow_sensitive_aliasing): Ditto for TV_FLOW_SENSITIVE.
12737         (compute_flow_insensitive_aliasing): Ditto for
12738         TV_FLOW_INSENSITIVE.    
12739
12740 2007-07-27  Jan Hubicka  <jh@suse.cz>
12741
12742         * config/i386/i386.c (register_move_cost): Remove accidentally
12743         comitted #if 0 block.
12744
12745         * attribs.c: Include hashtab.h
12746         (attribute_hash): New.
12747         (substring): New structure.
12748         (extract_attribute_substring, substring_hash, hash_attr, eq_attr):
12749         New function.
12750         (init_attributes): Initialize attribute hash.
12751         (decl_attributes): Use attribute hash.
12752         * Makefile.in (attribs.c): Depend on hashtab.h.
12753
12754 2007-07-27  Steve Ellcey  <sje@cup.hp.com>
12755
12756         * config/ia64/vect.md (vec_initv2si): Remove bad BIG_ENDIAN test.
12757
12758 2007-07-27  Richard Sandiford  <richard@codesourcery.com>
12759
12760         * doc/invoke.texi (mdsp, mdspr2): Document the __mips_dsp,
12761         __mips_dspr2 and __mips_dsp_rev macros.
12762         * config/mips/mips.h (TARGET_CPU_CPP_BUILTINS): Define __mips_dsp_rev.
12763
12764 2007-07-27  Douglas Gregor  <doug.gregor@gmail.com>
12765         
12766         * c-common.h (enum rid): Add RID_DECLTYPE, update RID_LAST_CXX0X.
12767
12768 2007-07-26  Kenneth Zadeck <zadeck@naturalbridge.com>
12769
12770         PR middle-end/32749
12771         
12772         * df-problems.c (df_create_unused_note): Removed do_not_gen parm
12773         and the updating of the live and do_not_gen sets.
12774         (df_note_bb_compute): Added updating of live and do_not_gen sets
12775         for regular defs so that the case of clobber inside conditional
12776         call is processed correctly.
12777         
12778 2007-07-27  Zdenek Dvorak  <dvorakz@suse.cz>
12779
12780         * config/rs6000/rs6000.c (rs6000_gimplify_va_arg): Generate the
12781         operands with compatible type.
12782
12783 2007-07-27  Richard Sandiford  <richard@codesourcery.com>
12784
12785         * expr.h (store_bit_field): Don't return a value.
12786         * expmed.c (check_predicate_volatile_ok): New function.
12787         (store_bit_field_1): New function, extracted from store_bit_field.
12788         Take a fallback_p argument and return true if the operation succeeded.
12789         Only use store_fixed_bit_field if fallback_p.  Don't recompute
12790         mode_for_extraction; use op_mode instead.  Try forcing memories
12791         into registers if the insv expander fails.
12792         (store_bit_field): Use store_bit_field_1 with fallback_p true.
12793         Don't return a value.
12794         (convert_extracted_bit_field): New function, extracted from
12795         store_bit_field.
12796         (extract_bit_field_1): Likewise.  Take a fallback_p argument
12797         and return NULL if the operation succeeded.  Only use
12798         extract_fixed_bit_field if fallback_p.  Only calculate one
12799         extraction mode.  Combine code for extv and extzv.  Try forcing
12800         memories into registers if the ext(z)v expander fails.
12801         (extract_bit_field): Use extract_bit_field_1 with fallback_p true.
12802
12803 2007-07-27  Richard Sandiford  <rsandifo@nildram.co.uk>
12804
12805         * df.h (df_mw_hardreg): Turn df_ref_type and df_ref_flags
12806         into bitfields.
12807         (df_ref): Likewise.  Put regno with other integer fields.
12808
12809 2007-07-27  Richard Sandiford  <rsandifo@nildram.co.uk>
12810
12811         * df.h (df_mw_hardreg): Remove "loc" field.
12812         * df-scan.c (df_ref_record): Don't set it.  Remove redundant
12813         local variable.
12814         * df-problems.c (df_whole_mw_reg_unused_p): New function,
12815         split out from df_set_unused_notes_for_mw.  Return false for
12816         partial references.  Assert that mw_reg is a REG when returning true.
12817         (df_set_unused_notes_for_mw): Use it.  Use mw_reg instead of *loc.
12818         (df_whole_mw_reg_dead_p): New function, split out from
12819         df_set_dead_notes_for_mw.  Return false for partial references.
12820         Assert that mw_reg is a REG when returning true.
12821         (df_set_dead_notes_for_mw): Use it.  Use mw_reg instead of *loc.
12822         Remove redundant bitmap check.
12823
12824 2007-07-26  H.J. Lu  <hongjiu.lu@intel.com>
12825
12826         * config/ia64/t-ia64 ($(T)crtbegin.o): Removed.
12827         ($(T)crtend.o): Likwise.
12828         ($(T)crtbeginS.o): Likwise.
12829         ($(T)crtendS.o): Likwise.
12830         ($(T)crtfastmath.o): Likwise.
12831
12832 2007-07-26  Zdenek Dvorak  <dvorakz@suse.cz>
12833
12834         * dominance.c (dom_computed, n_bbs_in_dom_tree): Removed.
12835         * function.h (dom_computed, n_bbs_in_dom_tree): New macros.
12836         * basic-block.h (struct control_flow_graph): Added x_dom_computed
12837         and x_n_bbs_in_dom_tree fields.
12838
12839 2007-07-26  Steve Ellcey  <sje@cup.hp.com>
12840
12841         PR tree-optimization/32087
12842         * tree-ssa-loop-manip.c (tree_transform_and_unroll_loop):
12843         Do not call scale_bbs_frequencies_int with prob of zero.
12844
12845 2007-07-26  Julian Brown  <julian@codesourcery.com>
12846
12847         * config/arm/arm-protos.h (neon_lane_bounds, neon_const_bounds)
12848         (neon_element_bits): Add prototypes.
12849         * config/arm/arm.c (bounds_check, neon_lane_bounds)
12850         (neon_const_bounds, neon_element_bits): New functions.
12851         * config/arm/neon.md (neon_vget_lane<mode>, neon_vget_lanedi)
12852         (neon_vget_lanev2di, neon_vset_lane<mode>, neon_vset_lanedi)
12853         (neon_vset_lanev2di, neon_vdup_lane<mode>, neon_vdup_lanedi)
12854         (neon_vdup_lanev2di, neon_vcvt_n<mode>, neon_vmul_lane<mode>)
12855         (neon_vmull_lane<mode>, neon_vqdmull_lane<mode>)
12856         (neon_vqdmulh_lane<mode>, neon_vmla_lane<mode>)
12857         (neon_vmlal_lane<mode>, neon_vqdmlal_lane<mode>)
12858         (neon_vmls_lane<mode>, neon_vmlsl_lane<mode>)
12859         (neon_vqdmlsl_lane<mode>, neon_vext<mode>, neon_vshr_n<mode>)
12860         (neon_vshrn_n<mode>, neon_vqshrn_n<mode>, neon_vqshrun_n<mode>)
12861         (neon_vshl_n<mode>, neon_vshl_n<mode>, neon_vqshl_n<mode>)
12862         (neon_vqshlu_n<mode>, neon_vshll_n<mode>, neon_vsra_n<mode>)
12863         (neon_vsri_n<mode>, neon_vsli_n<mode>): Add bounds checks.
12864
12865 2007-07-26  Nathan Froyd  <froydnj@codesourcery.com>
12866
12867         * config/vxworks.h (VXWORKS_LINK_SPEC): Fix typo.
12868         (HAVE_AS_GNU_ATTRIBUTE): Undefine.
12869
12870 2007-07-26  Mark Shinwell  <shinwell@codesourcery.com>
12871             Julian Brown  <julian@codesourcery.com>
12872
12873         * config/arm/arm.c (arm_mac_accumulator_is_mul_result): New.
12874         * config/arm/arm-protos.h (arm_mac_accumulator_is_mul_result): New.
12875         * config/arm/cortex-a8.md: New.
12876         * config/arm/cortex-a8-neon.md: New.
12877         * config/arm/neon-schedgen.ml: New.
12878         * config/arm/neon.md (vqh_mnem): New.
12879         (neon_type): New.
12880         (Is_float_mode): New.
12881         (Scalar_mul_8_16): New.
12882         (Is_d_reg): New.
12883         (V_mode_nunits): New.
12884         (All instruction patterns): Annotate with neon_type attribute
12885         values.
12886         * config/arm/arm.md: Include cortex-a8.md.
12887         (insn): Add smmla, umaal, smlald, smlsld, clz, mrs, msr and xtab
12888         values.
12889         Annotate instruction patterns accordingly.
12890         (generic_sched): Do not use generic scheduling for Cortex-A8.
12891         (generic_vfp): Do not use generic VFP scheduling for Cortex-A8.
12892
12893 2007-07-26  Daniel Jacobowitz  <dan@codesourcery.com>
12894
12895         * fold-const.c (fold_read_from_constant_string): Use
12896         build_int_cst_type.
12897         * tree-ssa-ccp.c (fold_const_aggregate_ref): Likewise.
12898
12899 2007-07-26  Nick Clifton  <nickc@redhat.com>
12900
12901         * tree-ssa-operands.h: Change copyright header to refer to version
12902         3 of the GNU General Public License and to point readers at the
12903         COPYING3 file and the FSF's license web page.
12904         * tree-vrp.c, regrename.c, attribs.c, loop-unswitch.c,
12905         sched-ebb.c, fwprop.c, tree-loop-linear.c, dwarf2asm.c,
12906         tree-into-ssa.c, dwarf2asm.h, tree-ssa-loop-im.c, sbitmap.c,
12907         targhooks.c, tree-dump.c, tree-complex.c, sbitmap.h, targhooks.h,
12908         tree-dump.h, regstat.c, see.c, machmode.h, hooks.c, cgraphbuild.c,
12909         hooks.h, genrecog.c, tree-ssa-threadupdate.c, gen-protos.c,
12910         flags.h, rtlhooks.c, gencheck.c, tree-ssa-loop-niter.c,
12911         opts-common.c, dbgcnt.def, tree-pretty-print.c, tracer.c,
12912         gengtype.c, mkconfig.sh, gengtype.h, tree-ssa-loop-unswitch.c,
12913         cgraph.c, c-lex.c, cgraph.h, libfuncs.h, cfgloopmanip.c,
12914         rtl-error.c, optabs.c, postreload-gcse.c, tree-ssa-loop-manip.c,
12915         optabs.h, genmddeps.c, defaults.h, postreload.c, value-prof.c,
12916         tree-ssa-loop-ch.c, tree-tailcall.c, gengenrtl.c, value-prof.h,
12917         genopinit.c, tree.c, tree.h, reload.c, tree-pass.h, ipa-cp.c,
12918         reload.h, bitmap.c, bitmap.h, tree-scalar-evolution.c,
12919         c-config-lang.in, tree-scalar-evolution.h, target.h, cppspec.c,
12920         rtlanal.c, ddg.c, lambda-mat.c, mips-tdump.c, ddg.h,
12921         tree-phinodes.c, mips-tfile.c, pointer-set.c, pointer-set.h,
12922         diagnostic.c, final.c, diagnostic.h, builtins.c, genoutput.c,
12923         gcc.c, lists.c, tree-ssa-alias-warnings.c, gcc.h, cfghooks.c,
12924         input.h, gensupport.c, fold-const.c, cfghooks.h, insn-notes.def,
12925         gensupport.h, builtin-attrs.def, sync-builtins.def, params.c,
12926         cfgloopanal.c, params.h, graphds.c, omp-low.c, tree-ssa-dse.c,
12927         graphds.h, gcov.c, cfg.c, genextract.c, ipa-reference.c,
12928         genautomata.c, tree-ssa-uncprop.c, auto-inc-dec.c, toplev.c,
12929         tree-gimple.c, ipa-reference.h, vmsdbgout.c, errors.c, toplev.h,
12930         reorg.c, tree-gimple.h, tree-chrec.c, pretty-print.c, errors.h,
12931         real.c, tree-chrec.h, pretty-print.h, debug.c, real.h, genemit.c,
12932         omega.c, c-cppbuiltin.c, genmultilib, debug.h, omega.h,
12933         tree-ssa-sccvn.c, genconfig.c, tree-ssa-sccvn.h, cgraphunit.c,
12934         regs.h, df-scan.c, vec.c, hosthooks-def.h, vec.h,
12935         tree-ssa-copyrename.c, scan.c, builtin-types.def, tree-ssa-ccp.c,
12936         scan.h, mode-classes.def, haifa-sched.c, dominance.c, dojump.c,
12937         double-int.c, gcov-io.c, dbxout.c, builtins.def, double-int.h,
12938         dbxout.h, tree-ssa-loop-ivopts.c, df-core.c, mode-switching.c,
12939         gengtype-lex.l, tree-nomudflap.c, modulo-sched.c, c-objc-common.c,
12940         hosthooks.h, c-objc-common.h, caller-save.c, graph.c,
12941         ipa-pure-const.c, graph.h, c-format.c, cse.c, fix-header.c,
12942         c-format.h, web.c, tree-stdarg.c, genpeep.c, tree-stdarg.h,
12943         tree-ssa-math-opts.c, xcoffout.c, tree-ssa-dom.c, tree-nrv.c,
12944         xcoffout.h, tree-ssa-propagate.c, ipa-utils.c,
12945         tree-ssa-propagate.h, tree-ssa-alias.c, loop-init.c, ipa-utils.h,
12946         gimple-low.c, rtl.def, c-tree.h, tree-ssa-sink.c, ipa-inline.c,
12947         mkmap-symver.awk, machmode.def, c-pch.c, cfganal.c, global.c,
12948         alloc-pool.c, c-semantics.c, alloc-pool.h, jump.c, ifcvt.c,
12949         dwarf2out.c, expr.c, cfgbuild.c, tree-browser.c, dwarf2out.h,
12950         expr.h, longlong.h, opts.c, gcov-iov.c, opts.h, dwarf2.h,
12951         genattrtab.c, genconditions.c, genattr.c, optc-gen.awk,
12952         timevar.def, tree-ssa-loop-ivcanon.c, hard-reg-set.h, predict.c,
12953         tree-ssa-loop.c, host-default.c, predict.h, recog.c, dbgcnt.c,
12954         recog.h, dbgcnt.h, c-aux-info.c, tree-ssa-address.c, timevar.c,
12955         dse.c, lcm.c, tree-ssa-ifcombine.c, timevar.h, dse.h,
12956         matrix-reorg.c, tree-vn.c, treestruct.def, fp-test.c, c-decl.c,
12957         tree-eh.c, c-errors.c, c-pretty-print.c, regmove.c,
12958         lambda-trans.c, c-pretty-print.h, et-forest.c, et-forest.h,
12959         ebitmap.c, configure.ac, local-alloc.c, function.c, langhooks.c,
12960         ebitmap.h, cppdefault.c, tree-vectorizer.c, function.h,
12961         langhooks.h, print-rtl.c, cppdefault.h, df.h, tree-vectorizer.h,
12962         sdbout.c, stor-layout.c, sdbout.h, rtlhooks-def.h, read-rtl.c,
12963         gcse.c, ipa-type-escape.c, vmsdbg.h, alias.c, gengtype-parse.c,
12964         ipa-type-escape.h, domwalk.c, alias.h, tree-if-conv.c, profile.c,
12965         init-regs.c, domwalk.h, ipa.c, gccbug.in, tree-data-ref.c,
12966         loop-unroll.c, tree-data-ref.h, tree-flow-inline.h, tree-affine.c,
12967         mkmap-flat.awk, tree-affine.h, tree-vect-analyze.c, c.opt, ggc.h,
12968         opt-gather.awk, c-typeck.c, gimplify.c, coretypes.h, exec-tool.in,
12969         insn-addr.h, tree-ssa-phiopt.c, c-pragma.c, c-pragma.h, calls.c,
12970         tree-ssa-coalesce.c, genmodes.c, loop-doloop.c, predict.def,
12971         dwarf.h, tree.def, rtl-factoring.c, lower-subreg.c, expmed.c,
12972         bt-load.c, ggc-common.c, genflags.c, tree-dfa.c, except.c,
12973         coverage.c, except.h, emit-rtl.c, cfgexpand.c, coverage.h,
12974         stringpool.c, cselib.c, emit-rtl.h, tree-cfgcleanup.c, c-opts.c,
12975         cselib.h, cfgcleanup.c, simplify-rtx.c, tree-ssa-pre.c, explow.c,
12976         tree-ssa-live.c, tree-sra.c, tree-ssa-live.h, tree-predcom.c,
12977         loop-invariant.c, genpreds.c, protoize.c, opth-gen.awk, c-dump.c,
12978         lambda.h, loop-iv.c, tree-mudflap.c, ipa-prop.c, print-tree.c,
12979         tree-mudflap.h, tree-ssa-copy.c, ipa-prop.h, cfglayout.c,
12980         tree-ssa-forwprop.c, c-convert.c, cfglayout.h, common.opt,
12981         ggc-zone.c, ggc-page.c, c-omp.c, tree-ssa-dce.c, gencodes.c,
12982         varasm.c, tree-vect-patterns.c, libada-mk.in, tree-ssa-ter.c,
12983         sched-deps.c, tree-nested.c, c-ppoutput.c, tree-ssa.c,
12984         target-def.h, tree-ssa-loop-prefetch.c, lambda-code.c,
12985         omp-builtins.def, rtl.c, regclass.c, stab.def, intl.c, rtl.h,
12986         intl.h, tree-inline.c, conditions.h, tree-inline.h, integrate.c,
12987         sched-int.h, tree-iterator.c, integrate.h, tree-iterator.h,
12988         genchecksum.c, tree-optimize.c, output.h, tree-vect-transform.c,
12989         tree-object-size.c, combine.c, tree-outof-ssa.c, addresses.h,
12990         bb-reorder.c, stack-ptr-mod.c, resource.c, var-tracking.c,
12991         cfgloop.c, system.h, resource.h, ggc-none.c, tree-profile.c,
12992         cfgloop.h, c-gimplify.c, c-common.c, opt-functions.awk,
12993         tree-vect-generic.c, tree-flow.h, df-problems.c, scan-decls.c,
12994         c-common.h, config.gcc, reg-stack.c, tlink.c, main.c, stub-objc.c,
12995         fixproto, config.host, Makefile.in, gccspec.c, sched-rgn.c,
12996         vecprim.h, basic-block.h, tree-ssa-structalias.c,
12997         tree-ssa-structalias.h, c-common.def, sched-vis.c, tree-cfg.c,
12998         passes.c, genconstants.c, c-incpath.c, c-incpath.h,
12999         struct-equiv.c, c-parser.c, tree-ssa-reassoc.c, varray.c, sreal.c,
13000         varray.h, dfp.c, sreal.h, combine-stack-adj.c, dfp.h,
13001         reg-notes.def, cfgrtl.c, config.build, varpool.c, gengtype-yacc.y,
13002         stmt.c, dce.c, tree-browser.def, prefix.c, statistics.h,
13003         params.def, dce.h, c-lang.c, gcov-dump.c, prefix.h,
13004         tree-ssanames.c, collect2.c, collect2.h, tree-ssa-threadedge.c,
13005         convert.c, convert.h, langhooks-def.h, reload1.c,
13006         tree-ssa-operands.c: Likewise.
13007
13008 2007-07-26  Jan Hubicka  <jh@suse.cz>
13009
13010         * tree-ssa-live.c: Include debug.h and flags.h.
13011         (mark_scope_block_unused): New function.
13012         (remove_unused_scope_block_p): New function.
13013         (remove_unused_locals): Remove unused blocks too.
13014
13015 2007-07-25  Ian Lance Taylor  <iant@google.com>
13016
13017         * combine.c (combine_max_regno): Remove.  Remove all uses.
13018         (struct reg_stat_struct): Rename from struct reg_stat.
13019         (reg_stat_type): Define, and declare VECs.
13020         (reg_stat): Change from pointer to VEC.  Change all uses.
13021         (combine_split_insns): New static function.
13022         (try_combine, find_split_point): Call it instead of split_insns.
13023
13024 2007-07-25  Zdenek Dvorak  <dvorakz@suse.cz>
13025
13026         * cfghooks.c (split_block): Fix the information about loop latch.
13027
13028 2007-07-25  Zdenek Dvorak  <dvorakz@suse.cz>
13029
13030         * cfgloopmanip.c (fix_loop_structure): Call force_single_succ_latches.
13031
13032 2007-07-25  Zdenek Dvorak  <dvorakz@suse.cz>
13033
13034         * tree-ssa-threadupdate.c (create_edge_and_update_destination_phis):
13035         Scan the new edge for loop exit info.
13036
13037 2007-07-25  Andreas Tobler  <a.tobler@schweiz.org>
13038
13039         * config/darwin.c: Include debug.h.
13040
13041 2007-07-25  Steve Ellcey  <sje@cup.hp.com>
13042
13043         PR target/32218
13044         * tree-vect-patterns.c (vect_pattern_recog_1): Check for valid type.
13045
13046 2007-07-25  Steve Ellcey  <sje@cup.hp.com>
13047
13048         * config/ia64/ia64.h (HARD_REGNO_NREGS): Handle RFmode.
13049         (HARD_REGNO_MODE_OK): Ditto.
13050         (MODES_TIEABLE_P): Ditto.
13051         (HARD_REGNO_CALLER_SAVE_MODE): Ditto.
13052         (CLASS_MAX_NREGS): Ditto.
13053         * config/ia64/ia64.c (ia64_print_operand_address): Add R format.
13054         * config/ia64/ia64.md (divsf3_internal_thr): Removed.
13055         (divdf3_internal_thr): Removed.
13056         * config/ia64/div.md: New file.
13057         * config/ia64/constraints.md: Add H constraint.
13058
13059 2007-07-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
13060
13061         * sbitmap.c (sbitmap_verify_popcount, sbitmap_alloc_with_popcount,
13062         sbitmap_copy, sbitmap_copy_n, sbitmap_equal, sbitmap_empty_p,
13063         sbitmap_union_of_diff_cg, sbitmap_union_of_diff, sbitmap_not,
13064         sbitmap_difference, sbitmap_any_common_bits, sbitmap_a_and_b_cg,
13065         sbitmap_a_and_b, sbitmap_a_xor_b_cg, sbitmap_a_xor_b,
13066         sbitmap_a_or_b_cg, sbitmap_a_or_b, sbitmap_a_subset_b_p,
13067         sbitmap_a_or_b_and_c_cg, sbitmap_a_or_b_and_c,
13068         sbitmap_a_and_b_or_c_cg, sbitmap_a_and_b_or_c,
13069         sbitmap_first_set_bit, sbitmap_last_set_bit, dump_sbitmap,
13070         dump_sbitmap_file, debug_sbitmap, popcount_table,
13071         sbitmap_popcount): Constify.
13072         * sbitmap.h (const_sbitmap, const_sbitmap_ptr): New.
13073         (sbitmap_iterator, sbitmap_iter_init, dump_sbitmap,
13074         dump_sbitmap_file, sbitmap_copy, sbitmap_copy_n, sbitmap_equal,
13075         sbitmap_empty_p, sbitmap_union_of_diff, sbitmap_union_of_diff_cg,
13076         sbitmap_difference, sbitmap_not, sbitmap_a_or_b_and_c,
13077         sbitmap_a_or_b_and_c_cg, sbitmap_a_and_b_or_c,
13078         sbitmap_a_and_b_or_c_cg, sbitmap_any_common_bits, sbitmap_a_and_b,
13079         sbitmap_a_and_b_cg, sbitmap_a_or_b, sbitmap_a_or_b_cg,
13080         sbitmap_a_xor_b, sbitmap_a_xor_b_cg, sbitmap_a_subset_b_p,
13081         sbitmap_first_set_bit, sbitmap_last_set_bit, debug_sbitmap,
13082         sbitmap_popcount, sbitmap_verify_popcount): Constify.
13083
13084 2007-07-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
13085
13086         * bitmap.c (hash_descriptor, eq_descriptor, bitmap_element_zerop,
13087         bitmap_copy, bitmap_clear_bit, popcount_table, bitmap_count_bits,
13088         bitmap_first_set_bit, bitmap_and, bitmap_and_into,
13089         bitmap_elt_copy, bitmap_and_compl, bitmap_and_compl_into,
13090         bitmap_compl_and_into, bitmap_elt_ior, bitmap_ior,
13091         bitmap_ior_into, bitmap_xor, bitmap_xor_into, bitmap_equal_p,
13092         bitmap_intersect_p, bitmap_intersect_compl_p,
13093         bitmap_ior_and_compl, bitmap_ior_and_compl_into,
13094         debug_bitmap_file, debug_bitmap, bitmap_print, bitmap_hash):
13095         Constify.
13096         * bitmap.h (bitmap_copy, bitmap_equal_p, bitmap_intersect_p,
13097         bitmap_intersect_compl_p, bitmap_count_bits, bitmap_and,
13098         bitmap_and_into, bitmap_and_compl, bitmap_and_compl_into,
13099         bitmap_compl_and_into, bitmap_ior, bitmap_ior_into, bitmap_xor,
13100         bitmap_xor_into, bitmap_ior_and_compl, bitmap_ior_and_compl_into,
13101         debug_bitmap, debug_bitmap_file, bitmap_print,
13102         bitmap_first_set_bit, bitmap_hash, bmp_iter_set_init,
13103         bmp_iter_and_init, bmp_iter_and_compl_init): Likewise.
13104
13105 2007-07-25  Daniel Berlin  <dberlin@dberlin.org>
13106
13107         * config/darwin.c (darwin_override_options): Additional fix for
13108         debug info formats that don't support var tracking.
13109
13110 2007-07-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
13111
13112         * cselib.c (entry_and_rtx_equal_p): Constify.
13113         * gengtype.c (output_mangled_typename, write_types, write_local):
13114         Likewise.
13115         * gengtype.h (const_type_p): New.
13116         * see.c (eq_descriptor_extension, hash_descriptor_extension):
13117         Constify.
13118         * tlink.c (scan_linker_output): De-constify.
13119         * tree-ssa-loop-im.c (memref_eq): Constify.
13120         * tree-ssa-structalias.c (const_shared_bitmap_info_t): New.
13121         (shared_bitmap_hash, shared_bitmap_eq): Constify.
13122
13123 2007-07-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
13124
13125         * c-common.c (fname_as_string, c_type_hash): Constify.
13126         * c-typeck.c (free_all_tagged_tu_seen_up_to): Likewise.
13127         * cgraph.c (edge_hash, edge_eq): Likewise.
13128         * dwarf2out.c (decl_die_table_eq, decl_loc_table_eq): Likewise.
13129         * emit-rtl.c (mem_attrs_htab_eq, reg_attrs_htab_hash,
13130         reg_attrs_htab_eq): Likewise.
13131         * except.c (t2r_eq, t2r_hash, ttypes_filter_eq, ehl_hash, ehl_eq):
13132         Likewise.
13133         * genautomata.c (const_reserv_sets_t, const_unit_decl_t,
13134         const_decl_t, const_state_t, const_automata_list_el_t): New.
13135         (first_out_arc, DECL_UNIT, DECL_BYPASS, DECL_AUTOMATON, DECL_EXCL,
13136         DECL_PRESENCE, DECL_ABSENCE, DECL_RESERV, DECL_INSN_RESERV,
13137         automaton_decl_hash, automaton_decl_eq_p, insn_decl_hash,
13138         insn_decl_eq_p, decl_hash, decl_eq_p, alt_state_cmp,
13139         reserv_sets_cmp, reserv_sets_eq, state_hash, state_eq_p,
13140         automata_list_hash, automata_list_eq_p, compare_states_for_equiv,
13141         compare_max_occ_cycle_nums, out_state_arcs_num,
13142         compare_transition_els_num, units_cmp, state_reservs_cmp):
13143         Constify.
13144         * genmodes.c (cmp_modes): Likewise.
13145         * ggc-common.c (saving_htab_hash, saving_htab_eq): Likewise.
13146         * gimplify.c (compare_case_labels): Likewise.
13147         * ipa-type-escape.c (get_name_of_type, type_brand_s): Likewise.
13148         * loop-unroll.c (si_info_hash, ve_info_hash): Likewise.
13149         * matrix-reorg.c (mtt_info_hash): Likewise.
13150         * postreload-gcse.c (hash_expr_for_htab, expr_equiv_p): Likewise.
13151         * rtl-factoring.c (const_p_hash_bucket, const_p_hash_elem): New.
13152         (htab_hash_bucket, htab_hash_elem): Constify.
13153         * tree-browser.c (TB_parent_eq): Likewise.
13154         * tree-scalar-evolution.c (hash_scev_info): Likewise.
13155         * tree-ssa-alias.c (sort_tags_by_id): Likewise.
13156         * tree-ssa-coalesce.c (const_coalesce_pair_p): New.
13157         (coalesce_pair_map_hash, coalesce_pair_map_eq, compare_pairs):
13158         Constify.
13159         * tree-ssa-dom.c (avail_expr_hash, avail_expr_eq): Likewise.
13160         * tree-ssa-pre.c (const_expr_pred_trans_t): New.
13161         (expr_pred_trans_hash, expr_pred_trans_eq): Constify.
13162         * tree-ssa-sccvn.c (const_vn_binary_op_t, const_vn_unary_op_t,
13163         const_vn_phi_t, const_vn_reference_op_t, const_vn_reference_t):
13164         New.
13165         (vn_reference_op_eq, vn_reference_hash, vn_reference_eq,
13166         vn_unary_op_hash, vn_unary_op_eq, vn_binary_op_hash,
13167         vn_binary_op_eq, vn_phi_hash, vn_phi_eq): Constify.
13168         * tree-ssa-threadupdate.c (redirection_data_hash,
13169         redirection_data_eq): Likewise. 
13170         * tree-ssa-uncprop.c (equiv_hash, equiv_eq): Likewise.
13171         * tree-ssa.c (var_ann_eq): Likewise.
13172         * tree-vrp.c (compare_case_labels): Likewise.
13173         * tree.c (int_cst_hash_hash, int_cst_hash_eq,
13174         tree_map_base_marked_p, type_hash_marked_p, tree_check_failed,
13175         tree_not_check_failed, tree_class_check_failed,
13176         tree_range_check_failed, tree_not_class_check_failed,
13177         omp_clause_check_failed, omp_clause_range_check_failed,
13178         tree_contains_struct_check_failed, tree_operand_check_failed):
13179         Likewise. 
13180         * tree.h (tree_contains_struct_check_failed, tree_check_failed,
13181         tree_not_check_failed, tree_class_check_failed,
13182         tree_range_check_failed, tree_not_class_check_failed,
13183         tree_operand_check_failed, omp_clause_operand_check_failed,
13184         tree_operand_length): Likewise. 
13185         * var-tracking.c (const_variable): New.
13186         (variable_htab_hash, variable_htab_eq): Constify.
13187         * varasm.c (const_desc_hash): Likewise.
13188
13189 2007-07-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
13190
13191         * expr.c (handled_component_p): Constify.
13192         * fold-const.c (fit_double_type): Likewise.
13193         * real.h (real_value_from_int_cst): Likewise.
13194         * tree-flow-inline.h (gimple_in_ssa_p,
13195         gimple_aliases_computed_p, gimple_addressable_vars,
13196         gimple_call_clobbered_vars, gimple_referenced_vars,
13197         gimple_global_var, gimple_nonlocal_all, gimple_var_anns,
13198         end_htab_p, end_referenced_vars_p, var_ann, function_ann,
13199         may_aliases, end_readonly_imm_use_p, has_zero_uses,
13200         has_single_use, single_imm_use, num_imm_uses, is_exec_stmt,
13201         is_label_stmt, is_global_var, phi_ssa_name_p,
13202         factoring_name_p, is_call_clobbered, tree_common_ann,
13203         op_iter_done, end_imm_use_stmt_p, end_imm_use_on_stmt_p,
13204         unmodifiable_var_p, array_ref_contains_indirect_ref,
13205         ref_contains_array_ref, lookup_subvars_for_var,
13206         var_can_have_subvars, overlap_subvar, gimple_ssa_operands,
13207         gimple_mem_ref_stats): Likewise.
13208         * tree-flow.h (tree_common_ann, var_ann, function_ann,
13209         may_aliases, is_exec_stmt, is_label_stmt,
13210         ref_contains_array_ref, array_ref_contains_indirect_ref,
13211         var_can_have_subvars, overlap_subvar, is_call_clobbered,
13212         unmodifiable_var_p): Likewise.
13213         * tree-gimple.c (is_gimple_min_invariant): Likewise.
13214         * tree-gimple.h (is_gimple_min_invariant): Likewise. 
13215         * tree.c (type_hash_list, attribute_hash_list, tree_size,
13216         cst_and_fits_in_hwi, real_value_from_int_cst,
13217         build_real_from_int_cst, integer_zerop, integer_onep,
13218         integer_all_onesp, integer_pow2p, integer_nonzerop, tree_log2,
13219         tree_floor_log2, real_zerop, real_onep, real_twop,
13220         real_minus_onep, really_constant_p, purpose_member, chain_member,
13221         list_length, fields_length, int_size_in_bytes, bit_position,
13222         int_bit_position, byte_position, int_byte_position, expr_align,
13223         array_type_nelts, tree_node_structure,
13224         type_contains_placeholder_1, iterative_hash_pointer,
13225         is_attribute_with_length_p, is_attribute_p, check_qualified_type,
13226         tree_map_base_eq, type_hash_list, type_hash_eq,
13227         attribute_hash_list, type_num_arguments, tree_int_cst_equal,
13228         tree_int_cst_lt, tree_int_cst_compare, host_integerp,
13229         tree_low_cst, tree_int_cst_msb, tree_int_cst_sgn,
13230         simple_cst_list_equal, compare_tree_int, iterative_hash_expr,
13231         int_fits_type_p, get_containing_scope, decl_function_context,
13232         decl_type_context, omp_clause_operand_check_failed,
13233         initializer_zerop, int_cst_value, num_ending_zeros): Likewise.
13234         * tree.h (omp_clause_operand_check_failed, tree_size,
13235         build_real_from_int_cst, array_type_nelts, purpose_member,
13236         tree_int_cst_equal, tree_int_cst_lt, tree_int_cst_compare,
13237         host_integerp, tree_low_cst, tree_int_cst_msb, tree_int_cst_sgn,
13238         is_attribute_p, check_qualified_type, expr_align,
13239         int_size_in_bytes, bit_position, int_bit_position, byte_position,
13240         int_byte_position, list_length, fields_length, initializer_zerop,
13241         integer_zerop, integer_onep, integer_all_onesp, integer_pow2p,
13242         integer_nonzerop, cst_and_fits_in_hwi, num_ending_zeros,
13243         tree_node_structure, handled_component_p, get_containing_scope,
13244         decl_function_context, decl_type_context, real_zerop,
13245         type_num_arguments, fit_double_type, really_constant_p,
13246         int_fits_type_p, tree_log2, tree_floor_log2, iterative_hash_expr,
13247         compare_tree_int, chain_member, simple_cst_list_equal, real_onep,
13248         real_twop, real_minus_onep, int_cst_value): Likewise.
13249
13250 2007-07-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
13251
13252         * cfglayout.c (insn_scope, insn_line): Constify.
13253         * emit-rtl.c (const_int_htab_hash, const_int_htab_eq,
13254         const_double_htab_hash, const_double_htab_eq,
13255         mem_attrs_htab_hash): Likewise.
13256         * loop-iv.c (biv_eq): Likewise.
13257         * print-rtl.c (print_rtx, print_decl_name, print_mem_expr,
13258         print_inline_rtx, debug_rtx, debug_rtx_list, debug_rtx_range,
13259         debug_rtx_find, print_rtl, print_rtl_single, print_simple_rtl):
13260         Likewise. 
13261         * rtl-error.c (location_for_asm, diagnostic_for_asm,
13262         error_for_asm, warning_for_asm, _fatal_insn,
13263         _fatal_insn_not_found): Likewise. 
13264         * rtl.c (rtx_size, shared_const_p, shallow_copy_rtx_stat,
13265         rtx_equal_p, rtl_check_failed_bounds, rtl_check_failed_type1,
13266         rtl_check_failed_type2, rtl_check_failed_code1,
13267         rtl_check_failed_code2, rtl_check_failed_code_mode,
13268         rtvec_check_failed_bounds, rtl_check_failed_flag): Likewise.
13269         * rtl.h (rtl_check_failed_bounds, rtl_check_failed_type1,
13270         rtl_check_failed_type2, rtl_check_failed_code1,
13271         rtl_check_failed_code2, rtl_check_failed_code_mode,
13272         rtvec_check_failed_bounds, rtl_check_failed_flag, LABEL_KIND,
13273         SET_LABEL_KIND, rhs_regno, subreg_lsb, subreg_regno, subreg_nregs,
13274         shared_const_p, rtx_size, shallow_copy_rtx_stat, rtx_equal_p,
13275         get_pool_mode, insn_line, insn_file, simplify_replace_rtx,
13276         mode_signbit_p, rtx_addr_can_trap_p, nonzero_address_p,
13277         rtx_unstable_p, get_integer_term, get_related_value,
13278         offset_within_block_p, reg_mentioned_p, count_occurrences,
13279         reg_referenced_p, reg_used_between_p, no_labels_between_p,
13280         single_set_2, multiple_sets, set_noop_p, refers_to_regno_p,
13281         reg_overlap_mentioned_p, dead_or_set_p, dead_or_set_regno_p,
13282         find_reg_note, find_regno_note, find_reg_equal_equiv_note,
13283         find_constant_src, find_reg_fusage, find_regno_fusage,
13284         pure_call_p, remove_note, side_effects_p, volatile_refs_p,
13285         volatile_insn_p, may_trap_p, may_trap_after_code_motion_p,
13286         may_trap_or_fault_p, inequality_comparisons_p, tablejump_p,
13287         computed_jump_p, auto_inc_p, in_expr_list_p,
13288         remove_node_from_expr_list, loc_mentioned_in_p,
13289         label_is_jump_target_p, reversed_comparison_code_parts,
13290         debug_rtx, debug_rtx_list, debug_rtx_range, debug_rtx_find,
13291         print_mem_expr, print_rtl, print_simple_rtl, print_rtl_single,
13292         print_inline_rtx): Likewise.
13293         * rtlanal.c (covers_regno_p, covers_regno_no_parallel_p,
13294         computed_jump_p_1, nonzero_bits1, rtx_unstable_p,
13295         rtx_addr_can_trap_p_1, rtx_addr_can_trap_p, nonzero_address_p,
13296         get_integer_term, get_related_value, offset_within_block_p,
13297         count_occurrences, reg_mentioned_p, no_labels_between_p,
13298         reg_used_between_p, reg_referenced_p, single_set_2,
13299         multiple_sets, set_noop_p, refers_to_regno_p,
13300         reg_overlap_mentioned_p, dead_or_set_p,
13301         covers_regno_no_parallel_p, covers_regno_p,
13302         dead_or_set_regno_p, find_reg_note, find_regno_note,
13303         find_reg_equal_equiv_note, find_constant_src, find_reg_fusage,
13304         find_regno_fusage, pure_call_p, remove_note, in_expr_list_p,
13305         remove_node_from_expr_list, volatile_insn_p, volatile_refs_p,
13306         side_effects_p, may_trap_p_1, may_trap_p,
13307         may_trap_after_code_motion_p, may_trap_or_fault_p,
13308         inequality_comparisons_p, tablejump_p, computed_jump_p_1,
13309         computed_jump_p, auto_inc_p, loc_mentioned_in_p, subreg_lsb,
13310         subreg_regno, subreg_nregs, label_is_jump_target_p): Likewise.
13311         * simplify-rtx.c (neg_const_int, plus_minus_operand_p,
13312         mode_signbit_p, simplify_replace_rtx, plus_minus_operand_p):
13313         Likewise. 
13314         * toplev.h (_fatal_insn_not_found, _fatal_insn, error_for_asm,
13315         warning_for_asm): Likewise.
13316         * tree.h (print_rtl): Likewise.
13317         * varasm.c (get_pool_mode): Likewise.
13318
13319 2007-07-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
13320
13321         * c-lex.c (c_lex_with_flags, lex_string): Constify.
13322         * c-ppoutput.c (print_line, pp_dir_change): Likewise.
13323         * c-typeck.c (free_all_tagged_tu_seen_up_to): Likewise.
13324         * cfg.c (bb_copy_original_hash, bb_copy_original_eq): Likewise.
13325         * cfgloop.c (loop_exit_hash, loop_exit_eq): Likewise.
13326         * ddg.c (compare_sccs): Likewise.
13327         * df-scan.c (df_ref_compare, df_mw_compare): Likewise.
13328         * dfp.c (decimal_real_from_string, decimal_to_decnumber,
13329         decimal_to_binary, decimal_do_compare, decimal_real_to_decimal,
13330         decimal_do_fix_trunc, decimal_real_to_integer,
13331         decimal_real_to_integer2, decimal_real_maxval): Likewise.
13332         * dse.c (const_group_info_t): New.
13333         (invariant_group_base_eq, invariant_group_base_hash): Constify.
13334         * dwarf2out.c (const_dw_die_ref): New.
13335         (decl_die_table_hash, decl_die_table_eq, file_info_cmp): Constify.
13336         * tree-browser.c (TB_parent_eq): Likewise.
13337         * unwind-dw2-fde.c (__register_frame_info_bases,
13338         __deregister_frame_info_bases, fde_unencoded_compare, fde_split,
13339         add_fdes, linear_search_fdes, binary_search_unencoded_fdes):
13340         Likewise.
13341         * unwind-dw2-fde.h (get_cie, next_fde): Likewise.
13342         * unwind-dw2.c (uw_frame_state_for): Likewise.
13343         * value-prof.c (histogram_hash, histogram_eq): Likewise.
13344         * value-prof.h (const_histogram_value): New.
13345
13346 2007-07-25  Richard Sandiford  <richard@codesourcery.com>
13347
13348         * config/mips/mips.c (machine_function): Add
13349         initialized_mips16_gp_pseudo_p.
13350         (mips16_gp_pseudo_reg): Do not emit the initialization of
13351         mips16_gp_pseudo_rtx when being called from the gimple cost-
13352         calculation routines; emit it on the first use outside those
13353         routines.
13354
13355 2007-07-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
13356
13357         * coretypes.h (const_bitmap, const_rtx, const_rtvec, const_tree):
13358         New.
13359         
13360         * rtl.h (RTL_CHECK1, RTL_CHECK2, RTL_CHECKC1, RTL_CHECKC2,
13361         RTVEC_ELT, XWINT, XCWINT, XCMWINT, XCNMPRV, BLOCK_SYMBOL_CHECK,
13362         RTL_FLAG_CHECK1, RTL_FLAG_CHECK2, RTL_FLAG_CHECK3,
13363         RTL_FLAG_CHECK4, RTL_FLAG_CHECK5, RTL_FLAG_CHECK6,
13364         RTL_FLAG_CHECK7, RTL_FLAG_CHECK8, LABEL_KIND, SET_LABEL_KIND):
13365         Preserve const-ness of parameters through use of __typeof(),
13366         also constify and tidy.
13367         
13368         * tree.h (TREE_CHECK, TREE_NOT_CHECK, TREE_CHECK2,
13369         TREE_NOT_CHECK2, TREE_CHECK3, TREE_NOT_CHECK3, TREE_CHECK4,
13370         NON_TREE_CHECK4, TREE_CHECK5, TREE_NOT_CHECK5,
13371         CONTAINS_STRUCT_CHECK, TREE_CLASS_CHECK, TREE_RANGE_CHECK,
13372         OMP_CLAUSE_SUBCODE_CHECK, OMP_CLAUSE_RANGE_CHECK, EXPR_CHECK,
13373         GIMPLE_STMT_CHECK, NON_TYPE_CHECK, TREE_VEC_ELT_CHECK,
13374         PHI_NODE_ELT_CHECK, OMP_CLAUSE_ELT_CHECK, TREE_OPERAND_CHECK,
13375         TREE_OPERAND_CHECK_CODE, GIMPLE_STMT_OPERAND_CHECK,
13376         TREE_RTL_OPERAND_CHECK, TREE_CHAIN, TREE_TYPE): Likewise.
13377
13378 2007-07-25  Julian Brown  <julian@codesourcery.com>
13379             Mark Shinwell  <shinwell@codesourcery.com>
13380
13381         * config/alpha/alpha.c (alpha_mangle_fundamental_type): Rename to...
13382         (alpha_mangle_type): This.
13383         (TARGET_MANGLE_FUNDAMENTAL_TYPE): Don't define.
13384         (TARGET_MANGLE_TYPE): Define this instead.
13385         * config/arm/arm-protos.h (arm_mangle_type): Add prototype.
13386         * config/arm/arm.c (TARGET_MANGLE_TYPE): Define target hook.
13387         (arm_init_neon_builtins): Fix comment.
13388         (arm_mangle_map_entry): New.
13389         (arm_mangle_map): New.
13390         (arm_mangle_type): New.
13391         * config/i386/i386.c (ix86_mangle_fundamental_type): Rename to...
13392         (ix86_mangle_type): This. Use TYPE_MAIN_VARIANT and restrict
13393         mangled types to VOID_TYPE, BOOLEAN_TYPE, INTEGER_TYPE, REAL_TYPE.
13394         (TARGET_MANGLE_FUNDAMENTAL_TYPE): Don't define.
13395         (TARGET_MANGLE_TYPE): Define this instead.
13396         * config/ia64/ia64.c (ia64_mangle_fundamental_type): Rename to...
13397         (ia64_mangle_type): This. Use TYPE_MAIN_VARIANT  and restrict
13398         mangled types to VOID_TYPE, BOOLEAN_TYPE, INTEGER_TYPE, REAL_TYPE.
13399         (TARGET_MANGLE_FUNDAMENTAL_TYPE): Don't define.
13400         (TARGET_MANGLE_TYPE): Define this instead.
13401         * config/rs6000/rs6000.c (rs6000_mangle_fundamental_type): Rename
13402         to...
13403         (rs6000_mangle_type): This. Use TYPE_MAIN_VARIANT.
13404         (TARGET_MANGLE_FUNDAMENTAL_TYPE): Don't define.
13405         (TARGET_MANGLE_TYPE): Define this instead.
13406         * config/s390/s390.c (s390_mangle_fundamental_type): Rename to...
13407         (s390_mangle_type): This.
13408         (TARGET_MANGLE_FUNDAMENTAL_TYPE): Don't define.
13409         (TARGET_MANGLE_TYPE): Define this instead.
13410         * config/sparc/sparc.c (sparc_mangle_fundamental_type): Rename to...
13411         (sparc_mangle_type): This.
13412         (TARGET_MANGLE_FUNDAMENTAL_TYPE): Don't define.
13413         (TARGET_MANGLE_TYPE): Define this instead.
13414         * cp/mangle.c (write_type): Call mangle_type target hook on all
13415         types before mangling.  Use original type, not main variant, as
13416         argument.
13417         * target-def.h (TARGET_MANGLE_FUNDAMENTAL_TYPE): Rename hook to...
13418         (TARGET_MANGLE_TYPE): This.
13419         * target.h (gcc_target): Rename mangle_fundamental_type to
13420         mangle_type.
13421         * doc/tm.texi (TARGET_MANGLE_FUNDAMENTAL_TYPE): Rename section to...
13422         (TARGET_MANGLE_TYPE): This. Note slightly different semantics.
13423
13424 2007-07-25  Julian Brown  <julian@codesourcery.com>
13425             Paul Brook  <paul@codesourcery.com>
13426             Joseph Myers  <joseph@codesourcery.com>
13427             Mark Shinwell  <shinwell@codesourcery.com>
13428
13429         * Makefile.in (TEXI_GCC_FILES): Add arm-neon-intrinsics.texi.
13430         * config.gcc (arm*-*-*): Add arm_neon.h to extra headers.
13431         (with_fpu): Allow --with-fpu=neon.
13432         * config/arm/aof.h (ADDITIONAL_REGISTER_NAMES): Add Q0-Q15.
13433         * config/arm/aout.h (ADDITIONAL_REGISTER_NAMES): Add Q0-Q15.
13434         * config/arm/arm-modes.def (EI, OI, CI, XI): New modes.
13435         * config/arm/arm-protos.h (neon_immediate_valid_for_move)
13436         (neon_immediate_valid_for_logic, neon_output_logic_immediate)
13437         (neon_pairwise_reduce, neon_expand_vector_init, neon_reinterpret)
13438         (neon_emit_pair_result_insn, neon_disambiguate_copy)
13439         (neon_vector_mem_operand, neon_struct_mem_operand, output_move_quad)
13440         (output_move_neon): Add prototypes.
13441         * config/arm/arm.c (FL_NEON): New flag for NEON processor capability.
13442         (all_fpus): Add FPUTYPE_NEON.
13443         (fp_model_for_fpu): Add NEON field.
13444         (arm_return_in_memory): Return vectors <= 16 bytes in ARM registers.
13445         (arm_arg_partial_bytes): Allow NEON vectors to be passed partially
13446         in registers.
13447         (arm_legitimate_address_p): Don't support fancy addressing for NEON
13448         structure moves.
13449         (thumb2_legitimate_address_p): Likewise.
13450         (neon_valid_immediate): Recognize and prepare constants suitable for
13451         NEON instructions.
13452         (neon_immediate_valid_for_move): New function. Recognize and prepare
13453         immediates for NEON move instructions.
13454         (neon_immediate_valid_for_logic): New function. Recognize and
13455         prepare immediates for NEON logic instructions.
13456         (neon_output_logic_immediate): New function. Create asm string
13457         suitable for outputting immediate logic instructions.
13458         (neon_pairwise_reduce): New function. Implement reduction using
13459         pairwise operations.
13460         (neon_expand_vector_init): New function. Expand a (possibly
13461         non-constant) vector initialization.
13462         (neon_vector_mem_operand): New function. Memory operands supported
13463         for quad-word loads/stores to/from ARM or NEON registers. Don't
13464         allow base+offset addressing for core regs.
13465         (neon_struct_mem_operand): New function. Valid mems for NEON
13466         structure moves.
13467         (coproc_secondary_reload_class): Enable NEON registers to be loaded
13468         from neon_vector_mem_operand addresses without a secondary register.
13469         (add_minipool_forward_ref): Handle >8-byte minipool entries.
13470         (add_minipool_backward_ref): Likewise.
13471         (dump_minipool): Likewise.
13472         (push_minipool_fix): Likewise.
13473         (output_move_quad): New function. Output quad-word moves, loads and
13474         stores using ARM registers.
13475         (output_move_vfp): Add support for vectors in VFP (NEON) D
13476         registers.
13477         (output_move_neon): Output a NEON load/store to/from a quadword
13478         register.
13479         (arm_print_operand): Implement new codes:
13480         - 'c' for unadorned integers (without a # sign).
13481         - 'J', 'K' for reg+2/reg+3, reg+3/reg+2 in little/big-endian
13482         mode.
13483         - 'e', 'f' for the low and high D parts of a NEON Q register.
13484         - 'q' outputs a NEON Q register.
13485         - 'h' outputs ranges of D registers for VLDM/VSTM etc.
13486         - 'T' prints NEON opcode features from a coded bitmask.
13487         - 'F' is similar to T, but signed/unsigned codes both print as
13488         'i'.
13489         - 't' is similar to T, but 'u' is printed instead of 'p'.
13490         - 'O' prints 'r' if NEON instruction should perform rounding (as
13491         specified by bitmask), else prints nothing.
13492         - '#' is a punctuation character to stop operand numbers from
13493         running together with following digits in the assembler
13494         strings for instructions (when using mode attributes).
13495         (arm_assemble_integer): Handle extra NEON vector modes. Permute
13496         constant vectors in big-endian mode, where necessary.
13497         (arm_hard_regno_mode_ok): Allow vectors in VFP/NEON registers.
13498         Handle EI, OI, CI, XI modes.
13499         (ashlv4hi3, ashlv2si3, lshrv4hi3, lshrv2si3, ashrv4hi3)
13500         (ashrv2si3): Rename IWMMXT2_BUILTINs to...
13501         (ashlv4hi3_iwmmxt, ashlv2si3_iwmmxt, lshrv4hi3_iwmmxt)
13502         (lshrv2si3_iwmmxt, ashrv4hi3_iwmmxt, ashrv2si3_iwmmxt): New names.
13503         (neon_builtin_type_bits): Add enumeration, one bit for each vector
13504         type.
13505         (v8qi_UP, v4hi_UP, v2si_UP, v2sf_UP, di_UP, v16qi_UP, v8hi_UP)
13506         (v4si_UP, v4sf_UP, v2di_UP, ti_UP, ei_UP, oi_UP, UP): Define macros
13507         to turn v8qi, etc. into bits defined above.
13508         (neon_itype): New enumeration. Classifications of NEON builtins.
13509         (neon_builtin_datum): Define struct. Contains information about
13510         a single builtin (with multiple modes).
13511         (CF): Define helper macro for...
13512         (VAR1...VAR10): Define builtins with a type, name and 1-10 different
13513         modes.
13514         (neon_builtin_data): New array. Define information about builtins
13515         for use during initialization/expansion.
13516         (arm_init_neon_builtins): New function.
13517         (arm_init_builtins): Call arm_init_neon_builtins if TARGET_NEON is
13518         true.
13519         (neon_builtin_compare): New function.
13520         (locate_neon_builtin_icode): New function. Find an insn code for a
13521         builtin given a function code for that builtin. Also return type of
13522         builtin (NEON_BINOP, NEON_UNOP etc.).
13523         (builtin_arg): New enumeration. Types of arguments for builtins.
13524         (arm_expand_neon_args): New function. Expand a generic NEON builtin.
13525         Takes a variable argument list of builtin_arg types, terminated by
13526         NEON_ARG_STOP.
13527         (arm_expand_neon_builtin): New function. Expand a NEON builtin.
13528         (neon_reinterpret): New function. Expand NEON reinterpret intrinsic.
13529         (neon_emit_pair_result_insn): New function. Support returning pairs
13530         of vectors via a pointer.
13531         (neon_disambiguate_copy): New function. Set up operands for a
13532         multi-word copy such that registers do not get clobbered.
13533         (arm_expand_builtin): Call arm_expand_neon_builtin if fcode >=
13534         ARM_BUILTIN_NEON_BASE.
13535         (arm_file_start): Set float-abi attribute for NEON.
13536         (arm_vector_mode_supported_p): Enable NEON vector modes.
13537         (arm_mangle_map_entry): New.
13538         (arm_mangle_map): New.
13539         (arm_mangle_vector_type): New.
13540         * config/arm/arm.h (TARGET_CPU_CPP_BUILTINS): Define __ARM_NEON__
13541         when appropriate.
13542         (TARGET_NEON): New macro. Target supports NEON.
13543         (fputype): Add FPUTYPE_NEON.
13544         (UNITS_PER_SIMD_WORD): Define. Allow quad-word registers to be used
13545         for vectorization based on command-line arg.
13546         (NEON_REGNO_OK_FOR_NREGS): Define.
13547         (VALID_NEON_DREG_MODE, VALID_NEON_QREG_MODE)
13548         (VALID_NEON_STRUCT_MODE): Define.
13549         (PRINT_OPERAND_PUNCT_VALID_P): '#' is valid punctuation.
13550         (arm_builtins): Add ARM_BUILTIN_NEON_BASE.
13551         * config/arm/arm.md (VUNSPEC_POOL_16): Insert constant for unspec.
13552         (consttable_16): Add pattern for outputting 16-byte minipool
13553         entries.
13554         (movv2si, movv4hi, movv8qi): Remove blank expanders (redefined in
13555         vec-common.md).
13556         (vec-common.md, neon.md): Include md files.
13557         * config/arm/arm.opt (mvectorize-with-neon-quad): Add option.
13558         * config/arm/constraints.md (constraint "Dn", "Dl", "DL"): Define.
13559         (memory_constraint "Ut", "Un", "Us"): Define.
13560         * config/arm/iwmmxt.md (VMMX, VSHFT): New mode macros.
13561         (MMX_char): New mode attribute.
13562         (addv8qi3, addv4hi3, addv2si3): Remove. Replace with...
13563         (*add<mode>3_iwmmxt): New insn pattern.
13564         (subv8qi3, subv4hi3, subv2si3): Remove. Replace with...
13565         (*sub<mode>3_iwmmxt): New insn pattern.
13566         (mulv4hi3): Rename to...
13567         (*mulv4hi3_iwmmxt): This.
13568         (smaxv8qi3, smaxv4hi3, smaxv2si3, umaxv8qi3, umaxv4hi3)
13569         (umaxv2si3, sminv8qi3, sminv4hi3, sminv2si3, uminv8qi3)
13570         (uminv4hi3, uminv2si3): Remove. Replace with...
13571         (*smax<mode>3_iwmmxt, *umax<mode>3_iwmmxt, *smin<mode>3_iwmmxt)
13572         (*umin<mode>3_iwmmxt): These.
13573         (ashrv4hi3, ashrv2si3, ashrdi3_iwmmxt): Replace with...
13574         (ashr<mode>3_iwmmxt): This new pattern.
13575         (lshrv4hi3, lshrv2si3, lshrdi3_iwmmxt): Replace with...
13576         (lshr<mode>3_iwmmxt): This new pattern.
13577         (ashlv4hi3, ashlv2si3, ashldi3_iwmmxt): Replace with...
13578         (ashl<mode>3_iwmmxt): This new pattern.
13579         * config/arm/neon-docgen.ml: New file. Generate documentation for
13580         intrinsics.
13581         * config/arm/neon-gen.ml: New file. Generate arm_neon.h header.
13582         * config/arm/arm_neon.h: New (autogenerated).
13583         * config/arm/neon-testgen.ml: New file. Generate NEON tests
13584         automatically.
13585         * config/arm/neon.md: New file. Define NEON instructions.
13586         * config/arm/neon.ml: New file. Abstract description of NEON
13587         instructions, used to generate arm_neon.h header, documentation and
13588         tests.
13589         * config/arm/t-arm (MD_INCLUDES): Add vec-common.md, neon.md.
13590         * vec-common.md: New file. Shared parts for iWMMXt and NEON vector
13591         support.
13592         * doc/extend.texi (ARM Built-in Functions): Rename and remove
13593         extraneous comma.
13594         (ARM NEON Intrinsics): New subsection.
13595         * doc/arm-neon-intrinsics.texi: New (autogenerated).
13596
13597 2007-07-25  Danny Smith   <dannysmith@users.sourceforge.net>
13598
13599         * config/i386/i386-protos.h (i386_pe_asm_file_end): Remove
13600         prototype.
13601
13602 2007-07-24  Jan Hubicka  <jh@suse.cz>
13603
13604         * regclass.c (move_table): New type.
13605         (move_cost, may_move_in_cost, may_move_out_cost): Use it.
13606         (init_move_cost): Break out from ...
13607         (init_reg_sets_1): ... here; simplify computation of
13608         have_regs-of_mode and contains_reg_of_mode.
13609         (record_reg_classes): Unswitch internal loops.
13610         (copy_cost): Trigger lazy initialization of move cost
13611         (record_address_regs): Likewise.
13612
13613 2007-07-24  Daniel Berlin  <dberlin@dberlin.org>
13614
13615         * config/darwin.c (darwin_override_options): Don't force on
13616         flag_var_tracking_uninit when no debug info is requested.
13617
13618 2007-07-25  Zdenek Dvorak  <dvorakz@suse.cz>
13619
13620         * cfgloop.c (init_loops_structure): New function.
13621         (flow_loops_find): Create root of the loop tree unconditionally.
13622
13623 2007-07-24  Daniel Jacobowitz  <dan@codesourcery.com>
13624
13625         * tree-ssa-ccp.c (fold_const_aggregate_ref): Use fold_convert.
13626
13627 2007-07-24  Jan Hubicka  <jh@suse.cz>
13628
13629         * caller-save.c: Include ggc.h, gt-caller-save.h
13630         (reg_save_code, reg_restore_code): Rename to ...
13631         (cached_reg_save_code, cached_reg_restore_code): ... those.
13632         (savepat, restpat, test_reg, test_mem, saveinsn, restinsn): New.
13633         (reg_save_code, reg_restore_code): New functions.
13634         (init_caller_save): Do not intialize
13635         reg_save_code/reg_restore_code tables.
13636         * Makefile.in: (gt-caller-save.h): New.
13637
13638 2007-07-24  Andreas Krebbel  <krebbel1@de.ibm.com>
13639
13640         * tree-ssa-ifcombine.c (ifcombine_ifandif): Use a ONE operand
13641         with the mode of the original operand instead of
13642         integer_one_node.
13643
13644 2007-07-23  Jan Hubicka  <jH@suse.cz>
13645
13646         * i386.c (ix86_secondary_memory_needed): Break out to...
13647         (inline_secondary_memory_needed): ... here.
13648         (ix86_memory_move_cost): Break out to ...
13649         (inline_memory_move_cost): ... here; add support for IN value of 2 for
13650         maximum of input and output; fix handling of Q_REGS on 64bit.
13651         (ix86_secondary_memory_needed): Microoptimize.
13652
13653 2007-07-23  Sebastian Pop  <sebpop@gmail.com>
13654
13655         * tree-data-ref.c (find_vertex_for_stmt, create_rdg_edge_for_ddr,
13656         create_rdg_edges_for_scalar, create_rdg_edges, create_rdg_vertices,
13657         stmts_from_loop, known_dependences_p, build_rdg): New.
13658         * tree-data-ref.h: Depends on graphds.h.
13659         (rdg_vertex, RDGV_STMT, rdg_dep_type, rdg_edge, RDGE_TYPE): New.
13660         (build_rdg): Declared.
13661         * Makefile.in (TREE_DATA_REF_H): Depends on graphds.h.
13662
13663 2007-07-23  Daniel Berlin  <dberlin@dberlin.org>
13664
13665         * tree-ssa-propagate.c (valid_gimple_expression_p): Match up with
13666         ccp_min_invariant.
13667
13668 2007-07-23  Peter Bergner  <bergner@vnet.ibm.com>
13669             Jakub Jelinek  <jakub@redhat.com>
13670
13671         PR middle-end/PR28690
13672         * optabs.c (expand_binop): (emit_cmp_and_jump_insns): Allow
13673         EQ compares.
13674         * rtlanal.c (commutative_operand_precedence): Prefer both REG_POINTER
13675         and MEM_POINTER operands over REG and MEM operands.
13676         (swap_commutative_operands_p): Change return value to bool.
13677         * rtl.h: Update the corresponding prototype.
13678         * tree-ssa-address.c (gen_addr_rtx): Use simplify_gen_binary
13679         instead of gen_rtx_PLUS.
13680         * simplify-rtx.c (simplify_plus_minus_op_data_cmp): Change return
13681         value to bool.  Change function arguments to rtx's and update code
13682         to match.
13683         (simplify_plus_minus): Update the simplify_plus_minus_op_data_cmp
13684         calls to match the new declaration.
13685         * simplify-rtx.c (simplify_associative_operation): Don't
13686         reorder simplify_binary_operation arguments.
13687
13688 2007-07-23  Richard Sandiford  <richard@codesourcery.com>
13689
13690         * config/mips/mips.c (override_options): Use mips_costs to derive
13691         the default branch cost.
13692         * config/mips/mips.h (BRANCH_COST): Use mips_branch_cost rather
13693         than mips_costs.
13694         * config/mips/mips.opt (mbranch-cost=): New option.
13695         * doc/invoke.texi (-mbranch-cost): Document new MIPS option.
13696
13697 2007-07-23  Richard Sandiford  <richard@codesourcery.com>
13698
13699         * config/mips/mips.h (GR_REG_CLASS_P, COP_REG_CLASS_P): Delete.
13700         (SECONDARY_MEMORY_NEEDED): Delete commented-out definition.
13701         * config/mips/mips.c (mips_register_move_cost): Use reg_class_subset_p
13702         instead of GR_REG_CLASS_P and COP_REG_CLASS_P.
13703
13704 2007-07-23  Richard Sandiford  <richard@codesourcery.com>
13705
13706         * config/mips/constraints.md (ks): New constraint.
13707         * config/mips/mips.md (*add<mode>3_sp1, *add<mode>3_sp2): Fold into...
13708         (*add<mode>3_mips16): ...here.
13709
13710 2007-07-21  Uros Bizjak  <ubizjak@gmail.com>
13711
13712         * optabs.h (enum optab_index): Add new OTI_signbit.
13713         (signbit_optab): Define corresponding macro.
13714         (enum insn_code signbit_optab[]): Remove array.
13715         * optabs.c (init_optabs): Initialize signbit_optab using init_optab.
13716         (expand_copysign_absneg): If back end provides signbit insn, use it
13717         instead of bit operations on floating point argument.
13718         * builtins.c (enum insn_code signbit_optab[]): Remove array.
13719         (expand_builtin_signbit): Check signbit_optab->handlers[].insn_code
13720         for availability of signbit insn.
13721
13722         * config/i386/i386.md (signbit<mode>2): New insn pattern to implement
13723         signbitf, signbit and signbitl built-ins as inline x87 intrinsics when
13724         SSE mode is not active.
13725         (isinf<mode>2): Disable for mfpmath=sse,387.
13726
13727 2007-07-22  Ben Elliston  <bje@au.ibm.com>
13728
13729         * regclass.c (invalid_mode_change_p): Attach ATTRIBUTE_UNUSED to
13730         `class' parameter.
13731         * struct-equiv.c (note_local_live): Likewise for `y_regno'.
13732
13733 2007-07-20  Richard Guenther  <rguenther@suse.de>
13734
13735         * tree-cfg.c (verify_expr): COND_EXPRs can have any
13736         integral typed condition.
13737         * tree-ssa.c (useless_type_conversion_p): Do not preserve
13738         booleanness.  Only preserve conversions from a non-base
13739         type to a base type, not in general between types with
13740         different TYPE_MIN_VALUE or TYPE_MAX_VALUE.
13741         * tree.def (COND_EXPR): Document that the condition
13742         can be of any integral type.
13743
13744 2007-07-20  Nigel Stephens  <nigel@mips.com>
13745             Richard Sandiford  <richard@codesourcery.com>
13746
13747         * config/mips/mips.h (mips_dwarf_regno): Declare.
13748         (DBX_REGISTER_NUMBER): Remove redundant brackets.
13749         (HI_REGNUM, LO_REGNUM): Define in an endian-dependent way.
13750         (AC1HI_REGNUM, AC1LO_REGNUM, AC2HI_REGNUM, AC2LO_REGNUM)
13751         (AC3HI_REGNUM, AC3LO_REGNUM, ACC_HI_REG_P): Delete.
13752         (reg_class): Rename HI_REG to MD0_REG and LO_REG to MD1_REG.
13753         (REG_CLASS_NAMES): Update accordingly.
13754         * config/mips/mips.c (mips_dwarf_regno): New array.
13755         (mips_regno_to_class): Rename HI_REG to MD0_REG and LO_REG to MD1_REG.
13756         (mips_subword): Remove special handling for accumulator registers.
13757         (override_options): Initiailize mips_dwarf_regno.  Remove use
13758         of ACC_HI_REG_P.
13759         (mips_swap_registers): New function.
13760         (mips_conditional_register_usage): Swap accumulator registers
13761         around if TARGET_LITTLE_ENDIAN.
13762         (mips_cannot_change_mode_class): Remove special treatment of ACC_REGS.
13763         * config/mips/constraints.md (h, l): Use the endianness to choose
13764         between MD0_REG and MD1_REG.
13765         * config/mips/mips.md (*mfhilo_<mode>_macc): Use a fixed-string,
13766         alternative-dependent template.
13767
13768 2007-07-20  Richard Sandiford  <richard@codesourcery.com>
13769
13770         * config/arm/arm.md (movsi): Use can_create_pseudo_p instead of
13771         no_new_pseudos.
13772
13773 2007-07-20  Zdenek Dvorak  <dvorakz@suse.cz>
13774
13775         * function.c (thread_prologue_and_epilogue_insns): Fix exit
13776         predecessor fallthru flags.
13777
13778 2007-07-20  Zdenek Dvorak  <dvorakz@suse.cz>
13779
13780         * tree-ssa-loop-niter.c (assert_loop_rolls_lt): Convert the operands
13781         of compare to the same type.
13782         * cfgloopmanip.c (add_loop): Update information about loop exits.
13783         (loop_version): Remove the innermost loop requirement.
13784         * tree-ssa-loop-manip.c (determine_exit_conditions): Convert bounds
13785         to sizetype for pointers.
13786
13787 2007-07-18  H.J. Lu  <hongjiu.lu@intel.com>
13788
13789         * Makefile.in (D32PBIT_FUNCS): Add _sd_to_tf and _tf_to_sd.
13790         (D64PBIT_FUNCS): Add _dd_to_tf and _tf_to_dd.
13791         (D128PBIT_FUNCS): Add _td_to_tf and _tf_to_td.
13792
13793         * config/dfp-bit.c: Empty for TFmode conversions.
13794
13795 2007-07-18  Caroline Tice  <ctice@apple.com>
13796         
13797         * var-tracking.c (find_src_status): Check for  COND_EXEC insns
13798         and handle them correctly; check that src is not NULL before
13799         trying to use it.
13800         (find_src_set_src): Likewise.
13801         
13802 2007-07-18  Bob Wilson  <bob.wilson@acm.org>
13803         
13804         * config/xtensa/xtensa.c (xtensa_expand_mask_and_shift): New.
13805         (struct alignment_context, init_alignment_context): New.
13806         (xtensa_expand_compare_and_swap, xtensa_expand_atomic): New.
13807         * config/xtensa/xtensa.h (XCHAL_HAVE_RELEASE_SYNC): Add default.
13808         (XCHAL_HAVE_S32C1I): Likewise.
13809         (TARGET_RELEASE_SYNC, TARGET_S32C1I): New.
13810         * config/xtensa/xtensa.md (UNSPECV_MEMW): New constant.
13811         (UNSPECV_S32RI, UNSPECV_S32C1I): Likewise.
13812         (ATOMIC, HQI): New macros.
13813         (memory_barrier, *memory_barrier): New.
13814         (sync_lock_releasesi): New.
13815         (sync_compare_and_swapsi, sync_compare_and_swap<mode>): New.
13816         (sync_lock_test_and_set<mode>): New.
13817         (sync_<atomic><mode>): New.
13818         (sync_old_<atomic><mode>, sync_new_<atomic><mode>): New.
13819         * config/xtensa/xtensa-protos.h (xtensa_expand_compare_and_swap): New.
13820         (xtensa_expand_atomic): New.
13821         
13822 2007-07-18  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
13823
13824         PR target/30652
13825
13826         * builtins.c (expand_builtin_interclass_mathfn): Provide a generic
13827         transformation for builtin ISNORMAL.
13828         (expand_builtin): Handle BUILT_IN_ISNORMAL.
13829         * builtins.def (BUILT_IN_ISNORMAL): New.
13830         * doc/extend.texi: Document isnormal.
13831
13832 2007-07-18  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
13833
13834         PR target/30652
13835
13836         * builtins.c (expand_builtin_interclass_mathfn): Allow for missing
13837         optabs infrastructure.  Provide generic implementation for
13838         FINITE/ISFINITE.
13839         (expand_builtin): Handle FINITE/ISFINITE.
13840         (fold_builtin_classify): Make ISFINITE canonical instead of FINITE.
13841         (fold_builtin_1): Likewise.
13842
13843         * builtins.def (BUILT_IN_ISFINITE): New.
13844
13845         * doc/extend.texi: Document isfinite.
13846
13847 2007-07-18  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
13848
13849         PR target/30652
13850         PR middle-end/20558
13851
13852         * builtins.c (expand_builtin_interclass_mathfn): Provide a
13853         generic fallback for isinf.
13854         * c-cppbuiltin.c (builtin_define_float_constants): Move FP max
13855         calculation code ...
13856         * real.c (get_max_float): ... to here.
13857         * real.h (get_max_float): New.
13858
13859 2007-07-18  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
13860
13861         PR middle-end/32668
13862
13863         * builtin-attrs.def (ATTR_TYPEGENERIC,
13864         ATTR_CONST_NOTHROW_TYPEGENERIC): New.
13865
13866         * builtins.def (BUILT_IN_ISINF, BUILT_IN_ISNAN,
13867         BUILT_IN_ISGREATER, BUILT_IN_ISGREATEREQUAL, BUILT_IN_ISLESS,
13868         BUILT_IN_ISLESSEQUAL, BUILT_IN_ISLESSGREATER,
13869         BUILT_IN_ISUNORDERED): Use ATTR_CONST_NOTHROW_TYPEGENERIC.
13870
13871         * c-common.c (handle_type_generic_attribute): New.
13872         (c_common_attribute_table): Add "type generic".
13873
13874         * c-typeck.c (convert_arguments): Handle "type generic" functions.
13875
13876 2007-07-18  Daniel Berlin  <dberlin@dberlin.org>
13877
13878         * tree-ssa-sccvn.c (try_to_simplify): Use valid_gimple_expression
13879         * tree-ssa-propagate (valid_gimple_expression): Handle ADDR_EXPR
13880         properly.
13881
13882 2007-07-18  Rask Ingemann Lambertsen  <rask@sygehus.dk>
13883
13884         PR target/32808
13885         * config/cris/cris.c (cris_print_index): Don't use XEXP before
13886         checking that the operand is an expression.
13887
13888 2007-07-19  Christoph von Wittich  <Christoph_vW@reactos.org>
13889             Danny Smith  <dannysmith@users.sourceforge.net>
13890
13891         PR/other 30335
13892         * config/i386/host-mingw32.c (mingw32_gt_pch_use_address): Put
13893         file mapping object in local namespace if Windows version later
13894         than NT4
13895
13896 2007-07-18  Richard Sandiford  <richard@codesourcery.com>
13897
13898         * config/arm/arm-protos.h (arm_cannot_force_const_mem): Declare.
13899         * config/arm/arm.c (TARGET_CANNOT_FORCE_CONST_MEM): Redefine to
13900         arm_cannot_force_const_mem.
13901         (arm_cannot_force_const_mem): New function.
13902         * config/arm/arm.h (ARM_OFFSETS_MUST_BE_WITHIN_SECTIONS_P): New macro.
13903         (LEGITIMATE_CONSTANT_P): Test arm_cannot_force_const_mem instead
13904         of arm_tls_referenced_p.
13905         * config/arm/arm.md (movsi): Split out-of-section constants when
13906         ARM_OFFSETS_MUST_BE_WITHIN_SECTIONS_P.
13907         * config/arm/vxworks.h (ARM_OFFSETS_MUST_BE_WITHIN_SECTIONS_P): Define.
13908
13909 2007-07-18  Richard Sandiford  <richard@codesourcery.com>
13910
13911         * config/mips/mips.md (clear_cache): Treat the size argument as Pmode.
13912
13913 2007-07-18  Richard Sandiford  <richard@codesourcery.com>
13914
13915         * config/mips/mips.md (*extendqihi2): Convert the destination
13916         to SImode.
13917
13918 2007-07-17  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
13919
13920         * config/pa/fptr.c: Update license header.
13921         * config/pa/milli64.S: Likewise.
13922
13923 2007-07-17  Nick Clifton  <nickc@redhat.com>
13924
13925         * COPYING_v3: New file.  Contains version 3 of the GNU General
13926         Public License.
13927         * COPYING.LIB_v3: New file.  Contains version 3 of the GNU
13928         Lesser General Public License.
13929         * doc/include/gpl_v3.texi: New file.  Contains version 3 of
13930         the GNU General Public License.
13931
13932 2007-07-17  Zdenek Dvorak  <dvorakz@suse.cz>
13933
13934         PR rtl-optimization/32773
13935         * cfglayout.c (force_one_exit_fallthru): New function.
13936         (cfg_layout_finalize): Use it.
13937
13938 2007-07-16  Richard Guenther  <rguenther@suse.de>
13939             Uros Bizjak  <ubizjak@gmail.com>
13940
13941         * tree-if-conv.c (find_phi_replacement_condition): Unshare "*cond"
13942         before forcing it to gimple operand.
13943
13944 2007-07-16  Sandra Loosemore  <sandra@codesourcery.com>
13945             David Ung  <davidu@mips.com>
13946
13947         * config/mips/mips.h (TUNE_24K): Define.
13948         (TUNE_MACC_CHAINS): Add TUNE_24K.
13949         * config/mips/mips.md: (*mul_acc_si, *mul_sub_si): Change type to
13950         imadd.
13951         * config/mips/74k.md (r74k_int_mult): Split madd/msub to ..
13952         (r74k_int_madd): .. this new reservation.
13953         (define_bypass): Fixed bypasses for r74k_int_madd to use
13954         mips_linked_madd_p.
13955         * config/mips/24k.md (define_bypass): Define new
13956         r24k_int_mul3->r24k_int_madd bypass using mips_linked_madd_p.
13957
13958 2007-07-16  Sandra Loosemore  <sandra@codesourcery.com>
13959             Nigel Stephens  <nigel@mips.com>
13960
13961         * config/mips/mips.md: Include 20kc.md.
13962         * config/mips/20kc.md: New file.
13963         * config/mips/mips.c (mips_rtx_cost_data): Fill in 20Kc costs.
13964         (mips_adjust_cost): Tweak for 20Kc.
13965         (mips_issue_rate): Likewise.
13966         * config/mips/mips.h (TUNE_20KC): Define.
13967
13968 2007-07-16  David Edelsohn  <edelsohn@gnu.og>
13969
13970         * config/rs6000/rs6000.c (struct processor_cost): Add
13971         cache_line_size, l1_cache_lines, and simultaneous_prefetches
13972         fields.
13973         (*_cost): Add cache information.
13974         (rs6000_override_options): Set cache parameters.
13975
13976 2007-07-16  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
13977
13978         PR bootstrap/3456
13979         * config.gcc (mips-sgi-irix[56]*): Enable pthread support.
13980         * doc/install.texi (mips-sgi-irix6): pthread support works now.
13981
13982 2007-07-16  Paul Brook  <paul@codesourcery.com>
13983
13984         PR target/32753
13985         * config/arm/cirrus.md (cirrus_arm_movsi_insn): Remove dead insn.
13986         (cirrus_thumb2_movsi_insn): Ditto.
13987
13988 2007-07-15  Geoffrey Keating  <geoffk@apple.com>
13989
13990         * config/rs6000/darwin-fallback.c (interpret_libc): Change
13991         CR2_REGNO to R_CR2.
13992
13993 2007-07-15  Andrew Haley  <aph@redhat.com>
13994
13995         * unwind-sjlj.c (_Unwind_GetIPInfo): Check for context->fc != NULL
13996         before looking in the context.
13997
13998 2007-07-15  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
13999
14000         PR middle-end/32398
14001         PR middle-end/32769
14002         * pa-protos.h (pa_eh_return_handler_rtx): Declare.
14003         * pa.c (pa_extra_live_on_entry, rp_saved): Declare.
14004         (TARGET_EXTRA_LIVE_ON_ENTRY): Define.
14005         (pa_output_function_prologue): Use rp_saved and
14006         current_function_is_leaf to generate .CALLINFO statement.
14007         (hppa_expand_prologue): Set rp_saved.
14008         (hppa_expand_epilogue): Use rp_saved.
14009         (pa_extra_live_on_entry, pa_eh_return_handler_rtx): New functions.
14010         * pa.h (EH_RETURN_HANDLER_RTX): Use pa_eh_return_handler_rtx.
14011
14012 2007-07-14  Dirk Mueller  <dmueller@suse.de>
14013
14014         * omega.c (coalesce): Fix memory leak on early exit.
14015         * matrix-reorg.c (check_allocation_function): Likewise.
14016         * tree-vect-transform.c (vect_get_new_vect_var): free result
14017         of concat().
14018         * bb-reorder.c (find_rarely_executed_basic_blocks_and_crossing_edges):
14019         pass pointer to edge vector
14020         (partition_hot_cold_basic_blocks): Fix memory leak.
14021         * collect2.c (prefix_from_string): Free temporary storage.
14022         * reload1.c (fixup_abnormal_edges): Free sbitmap.
14023
14024 2007-07-14  Kaz Kojima  <kkojima@gcc.gnu.org>
14025
14026         * config/sh/sh.h (DO_GLOBAL_CTORS_BODY): Add void to prototype.
14027         (DO_GLOBAL_DTORS_BODY): Likewise.
14028
14029 2007-07-14  Sandra Loosemore  <sandra@codesourcery.com>
14030             Nigel Stephens  <nigel@mips.com>
14031
14032         * config/mips/mips.c (mips_classify_symbol): Don't return
14033         SYMBOL_SMALL_DATA for constant pool addresses if
14034         TARGET_EMBEDDED_DATA is true.
14035
14036 2007-07-14  Uros Bizjak  <ubizjak@gmail.com>
14037
14038         * config/i386/i386.c (init_mmx_sse_builtins): Define all builtins
14039         except __builtin_ia32_emms, __builtin_ia32_ldmxcsr,
14040         __builtin_ia32_stmxcsr, __builtin_ia32_maskmovq, __builtin_ia32_loadups,
14041         __builtin_ia32_storeups, __builtin_ia32_loadhps, __builtin_ia32_loadlps,
14042         __builtin_ia32_storehps, __builtin_ia32_storelps,
14043         __builtin_ia32_movntps, __builtin_ia32_movntq, __builtin_ia32_sfence,
14044         __builtin_ia32_femms, __builtin_ia32_maskmovdqu, __builtin_ia32_loadupd,
14045         __builtin_ia32_storeupd, __builtin_ia32_loadhpd, __builtin_ia32_loadlpd,
14046         __builtin_ia32_movnti, __builtin_ia32_movntpd, __builtin_ia32_movntdq,
14047         __builtin_ia32_clflush, __builtin_ia32_lfence, __builtin_ia32_mfence,
14048         __builtin_ia32_loaddqu, __builtin_ia32_storedqu, __builtin_ia32_monitor,
14049         __builtin_ia32_mwait, __builtin_ia32_lddqu, __builtin_ia32_movntdqa,
14050         __builtin_ia32_movntsd and __builtin_ia32_movntss as const builtins
14051         using def_builtin_const.
14052
14053 2007-07-14  Eric Botcazou  <ebotcazou@adacore.com>
14054
14055         PR tree-optimization/32705
14056         * tree-ssa-sccvn.c (set_ssa_val_to): Accept VN_TOP as value number.
14057         (simplify_binary_expression): Use SSA_VAL consistently.
14058
14059 2007-07-13  David Edelsohn  <edelsohn@gnu.org>
14060
14061         * config/rs6000/spe.md (SPE_ACC_REGNO): Delete definition.
14062         (SPEFSCR_REGNO): Delete definition.
14063         * config/rs6000/rs6000.c: LINK_REGISTER_REGNUM -> LR_REGNO.
14064         COUNT_REGISTER_REGNUM -> CTR_REGNO.
14065         * config/rs6000/rs6000.h: Do not define *_REGNO.
14066         LINK_REGISTER_REGNUM -> LR_REGNO.
14067         COUNT_REGISTER_REGNUM -> CTR_REGNO.
14068         * config/rs6000/predicates.md: LINK_REGISTER_REGNUM ->  LR_REGNO.
14069         COUNT_REGISTER_REGNUM -> CTR_REGNO.
14070         * config/rs6000/linux-unwind.h: Define R_LR, R_CR2, R_VR0,
14071         R_VRSAVE, R_VSCR. Use them.
14072         * config/rs6000/darwin-fallback.c: Define R_LR, R_CTR, R_CR2,
14073         R_XER, R_VR0, R_VRSAVE, R_VSCR, R_SPEFSCR.  Use them.
14074         * config/rs6000/rs6000.md: Define REGNO constants.  Use them.
14075         * config/rs6000/aix.h: Define R_LR.  Use it.
14076         
14077 2007-07-13  Caroline Tice  <ctice@apple.com>
14078         
14079         * toplev.c (process_options): Turn flag_var_tracking_uninit off when
14080         flag_var_tracking is explicitly turned off (i.e. when variable
14081         tracking is not feasible); otherwise, turn flag_var_tracking on when
14082         flag_var_tracking_uninit is on.
14083         * rtl.def (VAR_LOCATION): Add a new integer subfield to VAR_LOCATION
14084         note definitions, to allow recording of initialization status in the
14085         notes.
14086         * dwarf2out.c (dwarf_stack_op_name): Add case for DW_OP_GNU_uninit.
14087         (add_var_loc_to_decl): Add comparison of NOTE_VAR_LOCATION_STATUS to
14088         determine if two note locations are equal.
14089         (output_loc_list): Don't output list entries whose start & end labels
14090         are the same.
14091         (reg_loc_descriptor): Add parameter for initialization status; pass it
14092         to other loc descriptor functions.
14093         (one_reg_loc_descriptor): Add parameter for initialization status;
14094         check its value and add DW_OP_GNU_uninit to returned loc descr if
14095         appropriate.
14096         (multiple_reg_loc_descriptor): Add parameter for initialization
14097         status;
14098         pass init status argument to other loc descriptor functions; check
14099         value of intialization parameter and add DW_OP_GNU_uninit to returned
14100         loc descr if appropriate.
14101         (based_loc_descr): Add parameter for initialization status; add new
14102         variable for return value; check value of initialization parameter and
14103         add DW_OP_GNU_uninit to returned loc descr if appropriate.
14104         (concatn_mem_loc_descriptor): Add parameter for initialization status;
14105         pass init status argument to other loc descriptor functions; check
14106         value of intialization parameter and add DW_OP_GNU_uninit to returned
14107         loc descr if appropriate.
14108         (mem_loc_descriptor): Likewise.
14109         (concat_loc_descriptor): Likewise.
14110         (concatn_loc_descriptor): Likewise.
14111         (loc_descriptor): Add parameter for initialization status; pass it as
14112         argument to other loc descriptor function calls.
14113         (loc_descriptor_from_tree_1): Add appropriate initialization status
14114         to loc descriptor function calls.
14115         (add_location_or_const_value_attribute): Get initialization status
14116         from VAR_LOCATION note; add initialization status to loc descriptor
14117         function calls.
14118         * dwarf2.h (enum dwarf_location_atom): New op, DW_OP_GNU_uninit.
14119         * print-rtl.c (print_rtx): When printing a VAR_LOCATION note, if
14120         status is uninitialized, add "[uninint]" to output.
14121         * common.opt (fvar-tracking-uninit): New option, similar to
14122         fvar-tracking, to turn on tracking of uninitialized variables; creates
14123         a new global flag, flag_var_tracking_uninit.
14124         * rtl.h (NOTE_VAR_LOCATION_STATUS): New macro for accessing new field.
14125         (enum var_init_status): New type, for var initialization status field.
14126         * var-tracking.c (struct location_chain_def): Two new fields, init,
14127         for initialization status, and set_src for the assignment value expr.
14128         (unshare_variable): New parameter for initialization status;
14129         initialize new init and set_src fields.
14130         (var_reg_set): New parameters for initialization status and value;
14131         pass them to set_variable_part.
14132         (var_mem_set): Likewise.
14133         (get_init_value): New function.
14134         (var_reg_delete_and_set): New initialization status & value
14135         parameters; add call to get_init_value if status is unknown; pass new
14136         parameters to clobber_variable_part and var_reg_set.
14137         (var_mem_delete_and_set): Likewise.
14138         (var_reg_delete): Pass null set_src value to clobber_variable_part.
14139         (var_mem_delete): Likewise.
14140         (variable_union): Pass status to unshare_variable; initialize new init
14141         and set_src fields. If flag_var_tracking_uninit is not set, force
14142         status to initialized.
14143         (add_stores): Store insn, rather than NEXT_INSN(insn), so it can be
14144         used later to get the set_src value.
14145         (find_src_status): New function.
14146         (find_src_set_src): New function.
14147         (compute_bb_dataflow): Pass init status to calls to var_reg_set,
14148         var_mem_set, var_reg_delete_and_set and var_mem_delete_and_set; for
14149         MO_SET, get set_src value and pass it to var_reg_delete_and_set
14150         and var_mem_delete_and_set.
14151         (dump_variable): Print out "[uninit]" if appropriate.
14152         (set_variable_part): Add new initialization and set_src parameters;
14153         pass status to unshare_variable; set node->init and node- >set_src
14154         fields and modify slot in hash table appropriately; save the init and
14155         set_src values if appropriate and assign to the new node.
14156         (clobber_variable_part): New set_src parameter; if two nodes have
14157         same variable and same location but different set_src (assignment)
14158         values, clobber old node.
14159         (delete_variable_part): Pass init status to unshare_variable.
14160         (emit_note_insn_var_location): Add initialized var; assign var's init
14161         status to new 'initialized'; pass new init status field to calls to
14162         gen_rtx_VAR_LOCATION. If flag_var_tracking_uninit is not set, force
14163         status to initialized.
14164         (emit_notes_in_bb): Pass initialization status to calls to
14165         var_reg_set, var_mem_set, var_reg_delete_and_set and
14166         var_mem_delete_and_set; for MO_SET, get set_src value and pass it to
14167         var_reg_delete_and_set and var_mem_delete_and_set; call
14168         emit_notes_for_changes on NEXT_INSN(insn) rather than on insn, to
14169         make up for change in add_stores.
14170         (vt_add_function_parameters): Add status to calls to
14171         set_variable_part.
14172         * config/darwin.c (darwin_override_options): Turn on uninitialized
14173         tracking automatically, if var_tracking is on and the system is
14174         10.5 or higher.
14175         
14176 2007-07-13  Sa Liu  <saliu@de.ibm.com>
14177
14178         * config.gcc: Add options for arch and tune on SPU.
14179         * config/spu/predicates.md: Add constant operands 0 and 1.
14180         * config/spu/spu-builtins.def: Add builtins for double precision 
14181         floating point comparison: si_dfceq, si_dfcmeq, si_dfcgt, si_dfcmgt, 
14182         si_dftsv, spu_cmpeq_13, spu_cmpabseq_1, spu_cmpgt_13, spu_cmpabsgt_1,
14183         spu_testsv.
14184         * config/spu/spu-c.c: Define __SPU_EDP__ when builtins invoked with 
14185         a CELLEDP target.
14186         * config/spu/spu-protos.h: Add new function prototypes. 
14187         * config/spu/spu.c (spu_override_options): Check options -march and
14188         -mtune.
14189         (spu_comp_icode): Add comparison code for DFmode and vector mode.
14190         (spu_emit_branch_or_set): Use the new code for DFmode and vector 
14191         mode comparison.
14192         (spu_const_from_int): New.  Create a vector constant from 4 ints.
14193         (get_vec_cmp_insn): New.  Get insn index of vector compare instruction.
14194         (spu_emit_vector_compare): New.  Emit vector compare.
14195         (spu_emit_vector_cond_expr): New.  Emit vector conditional expression.
14196         * config/spu/spu.h: Add options -march and -mtune.  Define processor
14197         types PROCESSOR_CELL and PROCESSOR_CELLEDP.  Define macro
14198         CANONICALIZE_COMPARISON.
14199         * config/spu/spu.md: Add new insns for double precision compare
14200         and double precision vector compare.  Add vcond and smax/smin patterns
14201         to enable DFmode vector conditional expression.
14202         * config/spu/spu.opt: Add options -march and -mtune.
14203         * config/spu/spu_internals.h: Add builtins for CELLEDP target:
14204         si_dfceq, si_dfcmeq, si_dfcgt, si_dfcmgt, si_dftsv.  Add builtin for
14205         both CELL and CELLEDP targets: spu_testsv.
14206         * config/spu/spu_intrinsics.h: Add flag mnemonics for test special 
14207         values.
14208
14209 2007-07-13  Richard Guenther  <rguenther@suse.de>
14210
14211         PR tree-optimization/32721
14212         * tree-ssa-ccp.c (maybe_fold_stmt_indirect): Preserve
14213         TREE_THIS_VOLATILE on the folded reference.
14214         * tree-ssa-operands.c (get_expr_operands): Set has_volatile_ops
14215         if the array reference has TREE_THIS_VOLATILE set.
14216
14217 2007-07-13  H.J. Lu  <hongjiu.lu@intel.com>
14218
14219         PR other/32188
14220         * doc/libgcc.texi: Update DFP intrinsics for DPD and BID.
14221
14222 2007-07-13  Andreas Schwab  <schwab@suse.de>
14223
14224         * gengtype-lex.l: Allow declarations to be indented.
14225
14226 2007-07-12  Geoffrey Keating  <geoffk@apple.com>
14227
14228         * ginclude/tgmath.h: New.
14229         * config.gcc: Use GCC's tgmath.h on non-glibc systems.
14230         * doc/sourcebuild.texi (Headers): Document use_gcc_tgmath.
14231         * configure.ac (STMP_FIXPROTO): Honor use_gcc_tgmath.
14232         * configure: Regenerate.
14233
14234 2007-07-13  Kaz Kojima  <kkojima@gcc.gnu.org>
14235
14236         * config/sh/linux-unwind.h (sh_fallback_frame_state): Use
14237         correct index when setting register save state for xd
14238         registers.
14239
14240 2007-07-13  Kaz Kojima  <kkojima@gcc.gnu.org>
14241
14242         * config/sh/sh.c (mark_use): Remove.
14243
14244 2007-07-12  Paul Brook  <paul@codesourcery.com>
14245
14246         * config/arm/arm.c (thumb1_compute_save_reg_mask): Make sure scratch
14247         reg does not overlap return value.
14248
14249 2007-07-12  Daniel Berlin  <dberlin@dberlin.org>
14250
14251         * tree-ssa-pre.c (get_expression_vuses): Move out side-effect.
14252         (set_expression_vuses): Ditto.
14253         (init_pre): Initialize expression_vuses.
14254
14255 2007-07-12  Zdenek Dvorak  <dvorakz@suse.cz>
14256
14257         * config/i386/sse.md (storentdf, storentsf): New.
14258
14259 2007-07-12  Geoffrey Keating  <geoffk@apple.com>
14260
14261         * builtins.c (get_pointer_alignment): Honor DECL_ALIGN on a
14262         FUNCTION_DECL.
14263         * tree.c (build_decl_stat): Move code from here...
14264         (make_node_stat): ... to here.  Don't uselessly clear DECL_USER_ALIGN.
14265         (expr_align): Honor DECL_ALIGN on a FUNCTION_DECL.  Add comment
14266         about using DECL_ALIGN of LABEL_DECL and CONST_DECL.
14267         * tree.h (DECL_USER_ALIGN): Fix misplaced comment.
14268         * varasm.c (assemble_start_function): Use DECL_ALIGN instead of
14269         FUNCTION_BOUNDARY.
14270
14271 2007-07-12  Dorit Nuzman  <dorit@il.ibm.com>
14272             Devang Patel  <dpatel@apple.com>
14273
14274         PR tree-optimization/25413
14275         * targhooks.c (default_builtin_vector_alignment_reachable): New.
14276         * targhooks.h (default_builtin_vector_alignment_reachable): New.
14277         * tree.h (contains_packed_reference): New.
14278         * expr.c (contains_packed_reference): New.
14279         * tree-vect-analyze.c (vector_alignment_reachable_p): New.
14280         (vect_enhance_data_refs_alignment): Call
14281         vector_alignment_reachable_p.
14282         * target.h (vector_alignment_reachable): New builtin.
14283         * target-def.h (TARGET_VECTOR_ALIGNMENT_REACHABLE): New.
14284         * config/rs6000/rs6000.c (rs6000_vector_alignment_reachable): New.
14285         (TARGET_VECTOR_ALIGNMENT_REACHABLE): Define.
14286
14287 2007-07-12  Dorit Nuzman  <dorit@il.ibm.com>
14288
14289         * target.h (builtin_vectorization_cost): Add new target builtin.
14290         * target-def.h (TARGET_VECTORIZE_BUILTIN_VECTORIZATION_COST): New.
14291         * tree-vectorizer.h (TARG_SCALAR_STMT_COST): New.
14292         (TARG_SCALAR_LOAD_COST, TARG_SCALAR_STORE_COST): New.
14293         * tree-vect-analyze.c (vect_analyze_slp_instance): Initisliaze
14294         uninitialized variables.
14295         * tree-vect-transform.c (cost_for_stmt): New function.
14296         (vect_estimate_min_profitable_iters): Call cost_for_stmt instead of
14297         using cost 1 for all scalar stmts. Be less conservative when
14298         estimating the number of prologue/epulogue iterations. Call
14299         targetm.vectorize.builtin_vectorization_cost. Return
14300         min_profitable_iters-1.
14301         (vect_model_reduction_cost): Use TARG_SCALAR_TO_VEC_COST for
14302         initialization cost instead of TARG_VEC_STMT_COST. Use
14303         TARG_VEC_TO_SCALAR_COST instead of TARG_VEC_STMT_COST for reduction
14304         epilogue code. Fix epilogue cost computation.
14305         * config/spu/spu.c (spu_builtin_vectorization_cost): New.
14306         (TARGET_VECTORIZE_BUILTIN_VECTORIZATION_COST): Implement.
14307         * config/spu/spu.h (TARG_COND_BRANCH_COST, TARG_SCALAR_STMT_COST):
14308         (TARG_SCALAR_LOAD_COST, TARG_SCALAR_STORE_COST, TARG_VEC_STMT_COST):
14309         (TARG_VEC_TO_SCALAR_COST, TARG_SCALAR_TO_VEC, TARG_VEC_LOAD_COST):
14310         (TARG_VEC_UNALIGNED_LOAD_COST, TARG_VEC_STORE_COST): Define.
14311
14312 2007-07-12  Richard Guenther  <rguenther@suse.de>
14313
14314         * gimplify.c (gimplify_conversion): Make sure that the result
14315         from maybe_fold_offset_to_reference is trivially convertible
14316         to the desired type before doing the simplification.
14317         (gimplify_expr): Likewise.
14318         * fold-const.c (fold_binary): Use the correct types for
14319         building the simplified expression.
14320
14321 2007-07-12  Zdenek Dvorak  <dvorakz@suse.cz>
14322
14323         PR rtl-optimization/32729
14324         * cfghooks.c (can_duplicate_block_p): Do not forbid duplicating blocks
14325         that fallthru to exit.
14326
14327 2007-07-12  Kaz Kojima  <kkojima@gcc.gnu.org>
14328
14329         * config/sh/sh.md (symGOTOFF2reg): Add missing parenthesis.
14330         (symDTPOFF2reg): Likewise.
14331
14332 2007-07-11  Daniel Berlin  <dberlin@dberlin.org>
14333
14334         PR tree-optimization/32663
14335         
14336         * tree.h (VALUE_HANDLE_VUSES): Remove.
14337         (struct tree_value_handle): Remove vuses.
14338
14339         * tree-vn.c (create_value_handle_for_expr): Don't set
14340         VALUE_HANDLE_VUSES. 
14341
14342         * tree-ssa-pre.c (expression_vuses): New.
14343         (alloc_expression_id): Set up expression_vuses.
14344         (get_expression_vuses): New.
14345         (set_expression_vuses): Ditto.
14346         (clear_expression_ids): Modify for expression_vuses.
14347         (phi_translate_1): Ditto.
14348         (phi_translate_set): Ditto.
14349         (value_dies_in_block_x): Ditto
14350         (valid_in_sets): Ditto.
14351         (add_to_sets): Ditto.
14352         (find_existing_value_expr): Ditto.
14353         (create_value_handle_for_expr): Ditto.
14354         (make_values_for_stmt): Ditto.
14355         (vuse_equiv): Remove.
14356
14357 2007-07-11  Alexandre Oliva  <aoliva@redhat.com>
14358
14359         * Makefile.in (mostlyclean): Remove object files.
14360
14361 2007-07-11  Kenneth Zadeck <zadeck@naturalbridge.com>
14362
14363         * toplev.c (no_new_pseudos): Deleted.
14364         * rtl.h (no_new_pseudos): Deleted.
14365         * tree-pass.h (pass_no_new_pseudos): Deleted. 
14366         * passes.c (pass_no_new_pseudos): Deleted.
14367         * final.c (rest_of_clean_state): Removed no_new_pseudos.
14368         (rest_of_no_new_pseudos, pass_no_new_pseudos): Deleted.
14369         * struct-equiv.c (rtx_equiv_p): Replaced no_new_pseudos with 
14370         reload_completed.
14371         * cfgcleanup.c (try_crossjump_to_edge): Ditto. 
14372         * rtlhooks.c (gen_lowpart_general): Ditto.
14373         * optabs.c (prepare_operand): Ditto.
14374         * mode-switching.c (rest_of_handle_mode_switching): Deleted set of
14375         no_new_pseudos.
14376         * modulo-sched.c (rest_of_handle_sms): Ditto.
14377         * see.c (rest_of_handle_see): Ditto.
14378         * ifcvt.c (if_convert): Ditto.
14379         (gate_handle_if_after_combine): Replaced no_new_pseudos with 
14380         reload_completed.
14381         * init-regs.c (gate_initialize_regs): Deleted set of
14382         no_new_pseudos.
14383         * lower-subreg.c (decompose_multiword_subregs): Ditto. 
14384         * bb-reorder.c (rest_of_handle_partition_blocks): Ditto.
14385         * doc/md.texi: Changed no_new_pseudos to can_create_pseudo_p.
14386         
14387 2007-07-11  Uros Bizjak  <ubizjak@gmail.com>
14388
14389         PR target/32661
14390         * config/i386/sse.md (*sse2_storeq_rex64): Handle 64bit mem->reg moves.
14391         (*vec_extractv2di_1_sse2): Disable for TARGET_64BIT.
14392         (*vec_extractv2di_1_rex64): New insn pattern.
14393
14394 2007-07-11  David Daney  <ddaney@avtrex.com>
14395
14396         * config/mips/linux-unwind.h (mips_fallback_frame_state): Rewrite
14397         return address calculation.  Substitute DWARF_ALT_FRAME_RETURN_COLUMN
14398         for SIGNAL_UNWIND_RETURN_COLUMN.
14399         * config/mips/mips.h (SIGNAL_UNWIND_RETURN_COLUMN): Remove.
14400         (DWARF_FRAME_REGNUM): Rewrite.
14401         (DWARF_ALT_FRAME_RETURN_COLUMN) Define.
14402
14403 2007-07-11  Nick Clifton  <nickc@redhat.com>
14404
14405         * config/m32r/m32r.h (INITIALIZE_TRAMPOLINE): Revert previous
14406         delta and use gen_int_mode in place of GET_INT instead.
14407
14408 2007-07-11  Uros Bizjak  <ubizjak@gmail.com>
14409
14410         * reg-stack.c (struct tree_opt_pass pass_stack_regs): Nullify name
14411         and letter field.
14412
14413 2007-07-11  Douglas Gregor  <doug.gregor@gmail.com>
14414
14415         * params.def (PARAM_VERIFY_CANONICAL_TYPES): Remove.
14416         (PARAM_USE_CANONICAL_TYPES): New; decides whether to use canonical 
14417         types or not.
14418         * params.h (VERIFY_CANONICAL_TYPES): Remove.
14419         (USE_CANONICAL_TYPES): New.
14420         * doc/invoke.texi (verify-canonical-types): Remove.
14421         (use-canonical-types): Add.
14422
14423 2007-07-11  Ulrich Weigand  <uweigand@de.ibm.com>
14424
14425         * config/spu/spu.c (spu_optimization_options): Remove setting of
14426         parameter PARAM_MAX_COMPLETELY_PEEL_TIMES.
14427         (spu_override_options): Move it here.
14428
14429 2007-07-11  Richard Sandiford  <richard@codesourcery.com>
14430
14431         * config/mips/mips.h (MIPS_ISA_LEVEL_SPEC): Handle -m4ksc and -m4ksd.
14432         * config/mips/mips.c (mips_cpu_info_table): Mention
14433         MIPS_ISA_LEVEL_SPEC in the comment.
14434
14435 2007-07-11  Eric Botcazou  <ebotcazou@adacore.com>
14436
14437         PR tree-optimization/32713
14438         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Handle REAL_CST.
14439
14440 2007-07-11  Paolo Carlini  <pcarlini@suse.de>
14441
14442         PR middle-end/30482
14443         * c-opts.c (c_common_post_options): Do not change flag_complex_method
14444         conditional to flag_isoc99.
14445         (c_common_init_options): Do it here, unconditionally.
14446
14447 2007-07-11  Eric Botcazou  <ebotcazou@adacore.com>
14448
14449         PR tree-optimization/32589
14450         * doc/tree-ssa.texi (Rough GIMPLE Grammar): Add missing rule.
14451         * tree-gimple.c (is_gimple_min_invariant): Clarify head comment.
14452         * tree-ssa-propagate.c (valid_gimple_expression_p): New
14453         predicate, extracted from...
14454         (set_rhs): ...here.  Call it for the expression on entry.
14455         * tree-ssa-propagate.h (valid_gimple_expression_p): Declare.
14456         * tree-ssa-sccvn.c: Include tree-ssa-propagate.h.
14457         (simplify_binary_expression): Use valid_gimple_expression_p
14458         to validate the simplification.
14459         * Makefile.in (tree-ssa-sccvn.o): Depends on tree-ssa-propagate.h.
14460
14461 2007-07-11  Danny Smith  <dannysmith@users.sourceforge.net>
14462
14463         * config/i386/cygming.h (PREFERRED_DEBUGGING_TYPE): Define to
14464         DWARF2_DEBUG on 32 bit target too.
14465         (DWARF2_UNWIND_INFO): Reorganize 64-bit vs 32-bit definition. 
14466
14467 2007-07-11  Nick Clifton  <nickc@redhat.com>
14468
14469         * config/m32r/m32r.h (INITIALIZE_TRAMPOLINE): Provide alternative
14470         version for 64-bit hosts.
14471
14472 2007-07-10  David Daney  <ddaney@avtrex.com>
14473
14474         * config/mips/mips.h (ISA_HAS_SYNCI): New target capability
14475         predicate.
14476         (INITIALIZE_TRAMPOLINE): Emit clear_cache insn instead of  library
14477         call.
14478         * config/mips/mips.c (mips_expand_synci_loop): New function.
14479         * config/mips/mips.md (UNSPEC_CLEAR_HAZARD): New constant.
14480         (UNSPEC_RDHWR): Same.
14481         (UNSPEC_SYNCI): Same.
14482         (UNSPEC_SYNC): Same.
14483         (clear_cache): New expand.
14484         (sync): New insn.
14485         (synci): Same.
14486         (rdhwr): Same.
14487         (clear_hazard): Same.
14488         * config/mips/mips-protos.h (mips_expand_synci_loop): Declare
14489         function.
14490         * testsuite/gcc.target/mips/clear-cache-1.c: New test.
14491         * testsuite/gcc.target/mips/clear-cache-2.c: New test.
14492
14493 2007-07-10  Ian Lance Taylor  <iant@google.com>
14494
14495         * emit-rtl.c (gen_reg_rtx): Check can_create_pseudo_p rather than
14496         no_new_pseudos.
14497
14498 2007-07-10  David Daney  <ddaney@avtrex.com>
14499
14500         * builtins.def (BUILT_IN_CLEAR_CACHE): New builtin.
14501         * builtins.c (expand_builtin___clear_cache): New function.
14502         (expand_builtin): Call expand_builtin___clear_cache for
14503         BUILT_IN_CLEAR_CACHE case.
14504         * doc/extend.texi (__builtin___clear_cache): Document new builtin.
14505         * doc/md.texi (clear_cache): Document new instruction pattern.
14506         * testsuite/gcc.dg/builtins-64.c: New test.
14507
14508 2007-07-11  Hans-Peter Nilsson  <hp@axis.com>
14509
14510         * config/cris/cris.md ("movsi"): Fix typo in last change.
14511
14512 2007-07-09  Geoffrey Keating  <geoffk@apple.com>
14513
14514         PR 32617
14515         * c-common.c (c_alignof_expr): Look at DECL_ALIGN of
14516         FUNCTION_DECLs.
14517         (handle_aligned_attribute): Allow use on FUNCTION_DECLs.
14518         * varasm.c (assemble_start_function): Honor DECL_ALIGN
14519         for FUNCTION_DECLs.  Don't use align_functions_log if
14520         DECL_USER_ALIGN.
14521         * print-tree.c (print_node): Print DECL_ALIGN and DECL_USER_ALIGN
14522         even for FUNCTION_DECLs.
14523         * c-decl.c (merge_decls): Propagate DECL_ALIGN even for
14524         FUNCTION_DECLs.
14525         * tree.h (DECL_ALIGN): Update for new location of 'align'.
14526         (DECL_FUNCTION_CODE): Update for new location and name of
14527         'function_code'.
14528         (DECL_OFFSET_ALIGN): Update for new location of 'off_align'.
14529         (struct tree_decl_common): Move 'align' and 'off_align' out
14530         of union, ensure they're still on a 32-bit boundary.  Remove
14531         other fields in union 'u1'.
14532         (struct tree_function_decl): Add field 'function_code' replacing
14533         'u1.f' in tree_decl_common.
14534         * tree.c (build_decl_stat): Set initial value of DECL_ALIGN.
14535         * doc/extend.texi (Function Attributes): Add 'aligned' attribute.
14536         (Variable Attributes): Cross-reference 'aligned' attribute
14537         to Function Attributes.
14538         * flags.h (force_align_functions_log): Delete.
14539         * toplev.c (force_align_functions_log): Delete.
14540
14541 2007-07-10  Uros Bizjak  <ubizjak@gmail.com>
14542
14543         PR target/32708
14544         * config/i386/sse.md (vec_concatv2di): Disable for TARGET_64BIT.
14545         (*vec_concatv2di_rex): New insn pattern.
14546
14547 2007-07-10  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
14548
14549         PR target/32538
14550         * config/mips/iris6.h (LIBGCC_SPEC): Add libm.
14551
14552 2007-07-10  Ian Lance Taylor  <iant@google.com>
14553
14554         Replace no_new_pseudos in backends.
14555         * rtl.h (can_create_pseudo_p): Define.
14556         * config/darwin.c (machopic_indirect_data_reference): Use
14557         can_create_pseudo_p () instead of no_new_pseudos.
14558         (machopic_indirect_data_reference): Likewise.
14559         (machopic_legitimize_pic_address): Likewise.
14560         * config/alpha/alpha.c (alpha_legitimize_address): Likewise.
14561         (alpha_emit_set_const_1): Likewise.
14562         (alpha_emit_set_const): Likewise.
14563         (alpha_emit_conditional_move): Likewise.
14564         (alpha_split_conditional_move): Likewise.
14565         * config/alpha/alpha.md (various splitters): Likewise.
14566         (movti): Likewise.
14567         * config/arm/arm.c (legitimize_pic_address): Likewise.
14568         (arm_load_pic_register): Likewise.
14569         * config/arm/arm.md (addsi3, subsi3, andsi3, iorsi3): Likewise.
14570         (movdi, movsi, movhi, movqi, movsf, movdf): Likewise.
14571         * config/bfin/bfin.c (legitimize_pic_address): Likewise.
14572         * config/cris/cris.c (cris_expand_pic_call_address): Likewise.
14573         * config/cris/cris.md (movsi): Likewise.
14574         * config/frv/frv.md (symGOT2reg_hilo): Likewise.
14575         (symGOTOFF2reg_hilo): Likewise.
14576         (symGPREL2reg, symGPREL2reg_hilo): Likewise.
14577         * config/h8300/h8300.md (insv, extzv): Likewise.
14578         * config/i386/i386.c (ix86_expand_move): Likewise.
14579         (ix86_expand_vector_move): Likewise.
14580         (ix86_prepare_fp_compare_args): Likewise.
14581         (ix86_expand_carry_flag_compare): Likewise.
14582         * config/i386/i386.md (tls_dynamic_gnu2_32): Likewise.
14583         (tls_dynamic_gnu2_combine_32): Likewise.
14584         (tls_dynamic_gnu2_64, tls_dynamic_gnu2_combine_64): Likewise.
14585         * config/ia64/ia64.c (ia64_expand_move): Likewise.
14586         (ia64_expand_movxf_movrf): Likewise.
14587         * config/m32c/m32c.c (m32c_prepare_move): Likewise.
14588         (m32c_split_move): Likewise.
14589         (m32c_expand_insv): Likewise.
14590         * config/m68k/m68k.md (movsi): Likewise.
14591         * config/mips/mips.c (mips_force_temporary): Likewise.
14592         (mips_split_symbol): Likewise.
14593         (mips_move_integer): Likewise.
14594         (mips_legitimize_const_move): Likewise.
14595         * config/mn10300/mn10300.md (movsi): Likewise.
14596         * config/pa/pa.c (emit_move_sequence): Likewise.
14597         * config/rs6000/rs6000.c (rs6000_emit_move): Likewise.
14598         (rs6000_got_register): Likewise.
14599         (create_TOC_reference): Likewise.
14600         (rs6000_machopic_legitimize_pic_address): Likewise.
14601         * config/rs6000/rs6000.md (add<mode>3): Likewise.
14602         (various splitters): Likewise.
14603         (iorsi3, xorsi3, iordi3, xordi3): Likewise.
14604         (movsi_got): Likewise.
14605         * config/s390/s390.c (emit_symbolic_move): Likewise.
14606         * config/s390/s390.md (movhi, movqi): Likewise.
14607         (load_multiple, store_multiple): Likewise.
14608         * config/score/score.c (score_force_temporary): Likewise.
14609         * config/sh/sh.c (prepare_move_operands): Likewise.
14610         (prepare_cbranch_operands): Likewise.
14611         (emit_fpu_switch): Likewise.
14612         (fpscr_set_from_mem): Likewise.
14613         * config/sh/sh.md (movdicc, movsicc, movsicc_umin): Likewise.
14614         (adddi3, subsi3): Likewise.
14615         (various splitters): Likewise.
14616         (divsi_inv_fp_combine): Likewise.
14617         (symGOT_load, symGOTOFF2reg, symDTPOFF2reg): Likewise.
14618         (seq, slt, sle, sgt, sge, sgtu, sltu, sleu, sgeu): Likewise.
14619         (sne): Likewise.
14620         * config/sh/predicates.md (xor_operand): Likewise.
14621         * config/sparc/sparc.c (legitimize_tls_address): Likewise.
14622         * config/sparc/sparc.md (movsi_pic_label_ref): Likewise.
14623         (movdi_pic_label_ref): Likewise.
14624         * config/spu/spu.c (spu_split_immediate): Likewise.
14625         * config/alpha/alpha.md (various splitters): Remove test
14626         !no_new_pseudos || reload_completed.
14627         * config/ia64/ia64.c (ia64_output_mi_thunk): Don't set
14628         no_new_pseudos.
14629         * config/m68k/m68k.c (m68k_output_mi_thunk): Likewise.
14630         * config/mips/mips.c (mips_output_mi_thunk): Likewise.
14631         * config/rs6000/rs6000.c (rs6000_output_mi_thunk): Likewise.
14632         * config/score/score.c (th_output_mi_thunk): Likewise.
14633         * config/sh/sh.c (sh_output_mi_thunk): Likewise.
14634         * config/sparc/sparc.c (sparc_output_mi_thunk): Likewise.
14635
14636 2007-07-10  Kaz Kojima  <kkojima@gcc.gnu.org>
14637
14638         PR rtl-optimization/32664
14639         * mode-switching.c (create_pre_exit): Skip barrier insns.
14640
14641 2007-07-10  Zdenek Dvorak  <dvorakz@suse.cz>
14642
14643         * tree-scalar-evolution.c (scev_const_prop): Add arguments to
14644         force_gimple_operand_bsi.
14645         * tree-ssa-loop-ivopts.c (rewrite_use_nonlinear_expr,
14646         rewrite_use_compare): Ditto.
14647         * tree-ssa-address.c (gimplify_mem_ref_parts, create_mem_ref):
14648         Ditto.
14649         * tree-ssa-ifcombine.c (ifcombine_ifandif): Ditto.
14650         * tree-ssa-loop-prefetch.c (issue_prefetch_ref): Ditto.
14651         * lambda-code.c (replace_uses_equiv_to_x_with_y): Ditto.
14652         * tree-profile.c (prepare_instrumented_value,
14653         tree_gen_interval_profiler, tree_gen_pow2_profiler,
14654         tree_gen_one_value_profiler, tree_gen_ic_profiler,
14655         tree_gen_ic_func_profiler, tree_gen_average_profiler,
14656         tree_gen_ior_profiler): Ditto.
14657         * tree-ssa-reassoc.c (negate_value): Ditto.
14658         * matrix-reorg.c (transform_access_sites, transform_allocation_sites):
14659         Use force_gimple_operand_bsi.
14660         * tree-vect-transform.c (vect_update_ivs_after_vectorizer): Ditto.
14661         * tree-if-conv.c (add_to_dst_predicate_list,
14662         find_phi_replacement_condition): Ditto.
14663         * gimplify.c (force_gimple_operand_bsi): Add before and m arguments.
14664         Call mark_symbols_for_renaming for new statements.
14665         * tree-flow.h (force_gimple_operand_bsi): Declaration changed.
14666
14667 2007-07-10  Zdenek Dvorak  <dvorakz@suse.cz>
14668
14669         * cfghooks.c (remove_edge): New function.
14670         (redirect_edge_and_branch, remove_branch, merge_blocks): Updated
14671         loop exit rescans.
14672         * cfghooks.h (remove_edge): Declare.
14673         * cfg.c (remove_edge): Renamed to remove_edge_raw.
14674         * basic-block.h (remove_edge): Declaration changed to remove_edge_raw.
14675
14676 2007-07-09  Wolfgang Gellerich  <gellerich@de.ibm.com>
14677
14678         * optabs.h: Added declaration for signbit_optab.  
14679         * optabs.c: (init_optabs): Added initialization for signbit_optab.
14680         * genoptinit.c (optabs): Added entry for signbit insns.  
14681         * builtins.c (expand_builtin_signbit): Added code to use a signbit
14682         insn, if available.  
14683         * config/s390/s390.h (S390_TDC_SIGNBIT_SET): New constant.  
14684         * config/s390/s390.md (signbit<mode>2): New expander.  
14685
14686 2007-07-09  Richard Guenther  <rguenther@suse.de>
14687
14688         PR middle-end/32698
14689         * fold-const.c (fold_plusminus_mult_expr): Move constant
14690         arguments second to allow decomposing.
14691
14692 2007-07-09  Alexandre Oliva  <aoliva@oliva.athome.lsd.ic.unicamp.br>
14693
14694         Revert:
14695         2007-07-06  Alexandre Oliva  <aoliva@redhat.com>
14696         PR debug/23551
14697         * tree-ssa-copyrename.c (copy_rename_partition_coalesce):
14698         Disregard DECL_FROM_INLINE.
14699
14700 2007-07-09  Uros Bizjak  <ubizjak@gmail.com>
14701
14702         PR target/27855
14703         * doc/invoke.texi: Add ftree-reassoc flag.
14704         * common.opt (ftree-reassoc): New flag.
14705         * tree-ssa-reassoc.c (gate_tree_ssa_reassoc): New static function.
14706         (struct tree_opt_pass pass_reassoc): Use gate_tree_ssa_reassoc.
14707
14708 2007-07-09  Uros Bizjak  <ubizjak@gmail.com>
14709
14710         PR tree-optimization/32681
14711         * tree-if-conv.c (find_phi_replacement_condition): Use the condition
14712         saved in second_edge->aux when first_bb is a loop header.
14713
14714 2007-07-09  Jan HUbicka  <jh@suse.cz>
14715
14716         * cse.c (cse_insn): Avoid invalid sharing on trial replacement.
14717
14718 2007-07-09  Richard Guenther  <rguenther@suse.de>
14719
14720         * c-decl.c (start_function): Do not promote return type.
14721
14722 2007-07-08  Daniel Franke  <franke.daniel@gmail.com>
14723
14724         * function.c (do_warn_unused_parameter): Do not warn if
14725         TREE_NO_WARNING is set.
14726
14727 2007-07-08  Andreas Schwab  <schwab@suse.de>
14728
14729         * doc/invoke.texi (DEC Alpha/VMS Options): Fix typo.
14730
14731 2007-07-08  Sandra Loosemore  <sandra@codesourcery.com>
14732
14733         Revert this patch:
14734         2007-07-06  Sandra Loosemore  <sandra@codesourcery.com>
14735
14736         * c-opts.c (c_common_handle_option): Make DOLLARS_IN_IDENTIFIERS
14737         apply to assembly language, too.
14738         * doc/tm.texi (DOLLARS_IN_IDENTIFIERS): Update.
14739
14740 2007-07-07  Daniel Berlin  <dberlin@dberlin.org>
14741
14742         Revert (note the sccvn portions are *not* reverted)
14743         2007-07-06  Daniel Berlin  <dberlin@dberlin.org>
14744
14745         Fix PR tree-optimization/23488
14746
14747         * tree-vn.c (set_value_handle): Use decl_vh_map for decl value
14748         handles.
14749         * tree-flow-inline.h (get_value_handle): Ditto.
14750         * tree-ssa-pre.c (decl_vh_map): New.
14751         (decl_node_pool): New.
14752         (can_value_number_operation): Support DECL_P.
14753         (can_PRE_operation): Ditto.
14754         (create_expression_by_pieces): Ditto.
14755         (find_existing_value_expr): Modify to differnetiate between
14756         addressing and top level.
14757         (create_value_handle_for_expr): Handle DECL's.
14758         (poolify_tree): Ditto.
14759         (make_values_for_phi): Don't insert into PHI_GEN during FRE.
14760         (make_values_for_stmt): Handle DECL's properly.
14761         (init_pre): Reorg to not init useless things during FRE.
14762         (fini_pre): Ditto.
14763         * tree-flow.h: Include pointer-set.h.
14764         (decl_vh_map): Declare.
14765         * Makefile.in (TREE_FLOW_H): Add pointer-set.h
14766
14767 2007-07-07 Eric Weddington  <eweddington@cso.atmel.com>
14768
14769         * config/avr/constraints.md (define_memory_constraint "Q"): Fix
14770         the constraint description.
14771         * doc/md.texi: Update documentation of AVR constraints.
14772
14773 2007-07-07  Kazu Hirata  <kazu@codesourcery.com>
14774
14775         * auto-inc-dec.c, config/arm/arm.c,
14776         config/m32r/constraints.md, config/mips/mips.md,
14777         config/rs6000/rs6000.c, cselib.c, dce.c, df-core.c,
14778         df-problems.c, df-scan.c, df.h, dse.c, gimplify.c,
14779         tree-if-conv.c, tree-ssa-sccvn.c, tree-ssa.c: Fix comment
14780         typos.  Follow spelling conventions.
14781         * doc/invoke.texi, doc/rtl.texi: Fix typos.
14782
14783         * cfgrtl.c (delete_insn_chain_and_edges): Remove.
14784         * rtl.h: Remove the prototype for delete_insn_chain_and_edges.
14785
14786         * tree-ssa-operands.c (realloc_vop, realloc_vdef,
14787         realloc_vuse): Remove.
14788         * tree-ssa-operands.h: Remove the prototype for realloc_vdef
14789         and realloc_vuse.
14790
14791 2007-07-06  Daniel Berlin  <dberlin@dberlin.org>
14792
14793         Fix PR tree-optimization/23488
14794
14795         * tree-ssa-sccvn.c (expr_has_constants): Handle tcc_declaration.
14796         (try_to_simplify): Ditto.
14797         (visit_use): Ditto.
14798         * tree-vn.c (set_value_handle): Use decl_vh_map for decl value
14799         handles.
14800         * tree-flow-inline.h (get_value_handle): Ditto.
14801         * tree-ssa-pre.c (decl_vh_map): New.
14802         (decl_node_pool): New.
14803         (can_value_number_operation): Support DECL_P.
14804         (can_PRE_operation): Ditto.
14805         (create_expression_by_pieces): Ditto.
14806         (find_existing_value_expr): Modify to differnetiate between
14807         addressing and top level.
14808         (create_value_handle_for_expr): Handle DECL's.
14809         (poolify_tree): Ditto.
14810         (make_values_for_phi): Don't insert into PHI_GEN during FRE.
14811         (make_values_for_stmt): Handle DECL's properly.
14812         (init_pre): Reorg to not init useless things during FRE.
14813         (fini_pre): Ditto.
14814         * tree-flow.h: Include pointer-set.h.
14815         (decl_vh_map): Declare.
14816         * Makefile.in (TREE_FLOW_H): Add pointer-set.h
14817                 
14818 2007-07-06  Sandra Loosemore  <sandra@codesourcery.com>
14819
14820         * c-opts.c (c_common_handle_option): Make DOLLARS_IN_IDENTIFIERS
14821         apply to assembly language, too.
14822         * doc/tm.texi (DOLLARS_IN_IDENTIFIERS): Update.
14823
14824 2007-07-06  Ian Lance Taylor  <iant@google.com>
14825             Zack Weinberg  <zackw@panix.com>
14826
14827         PR middle-end/32441
14828         * builtins.c (std_expand_builtin_va_start): Don't use make_tree.
14829
14830 2007-07-06  Richard Sandiford  <richard@codesourcery.com>
14831
14832         * config/sh/sh.md (*prefetch_i4): Disable for TARGET_VXWORKS_RTP.
14833         (prefetch): Likewise if "pref" would be used.
14834
14835 2007-07-06  Josh Conner  <jconner@apple.com>
14836
14837         PR middle-end/32602
14838         PR middle-end/32603
14839         * calls.c (store_one_arg): Handle arguments which are partially
14840         on the stack when detecting argument overlap.
14841
14842 2007-07-06  Bernd Schmidt  <bernd.schmidt@analog.com>
14843
14844         * reload1.c (choose_reload_regs): Set reload_spill_index for regs
14845         chosen during find_reloads.
14846
14847 2007-07-06  Richard Guenther  <rguenther@suse.de>
14848
14849         * gimplify.c (gimplify_call_expr): Prefer DECL_ARGUMENTS over
14850         TYPE_ARG_TYPES for verification of argument types.  Use
14851         DECL_ARG_TYPE instead of the PARM_DECL type.  Take excess
14852         parameters as variable arguments.
14853
14854 2007-07-06  Andreas Krebbel  <krebbel1@de.ibm.com>
14855
14856         * libgcc2.h (word_type): Type definition removed.
14857         (cmp_return_type, shift_count_type): Type definitions added.
14858         (__lshrdi3, __ashldi3, __ashrdi3): word_type of second parameter
14859         replaced with shift_count_type.
14860         (__cmpdi2, __ucmpdi2): word_type of return type replaced with
14861         cmp_return_type.
14862         * libgcc2.c (__udivmoddi4, __moddi3): Type of local variable c
14863         changed from word_type to Wtype.
14864         (__lshrdi3, __ashldi3, __ashrdi3): word_type of second parameter
14865         replaced with shift_count_type.
14866         (__cmpdi2, __ucmpdi2): word_type of return type replaced with
14867         cmp_return_type.
14868         * c-common.c (handle_mode_attribute): Handling for libgcc_cmp_return
14869         and libgcc_shift_count attribute added.
14870         * target-def.h (TARGET_LIBGCC_CMP_RETURN_MODE,
14871         TARGET_LIBGCC_SHIFT_COUNT_MODE): New target hooks defined.
14872         (TARGET_INITIALIZER): New target hooks added.
14873         * targhooks.c (default_libgcc_cmp_return_mode,
14874         default_libgcc_shift_count_mode): Default implementations for the new
14875         target hooks added.
14876         * targhooks.h (default_libgcc_cmp_return_mode,
14877         default_libgcc_shift_count_mode): Function prototypes added.
14878         * target.h (struct gcc_target): Fields for the new target hooks added.
14879         * optabs.c (expand_binop): Use shift_count_mode when expanding shift
14880         as library call.
14881         (prepare_cmp_insn): Use cmp_return_mode when expanding comparison as
14882         library call.
14883
14884         * doc/tm.texi (TARGET_LIBGCC_CMP_RETURN_MODE,
14885         TARGET_LIBGCC_SHIFT_COUNT_MODE): Documentation added.
14886
14887         * config/s390/s390.c (s390_libgcc_cmp_return_mode,
14888         s390_libgcc_shift_count_mode): Functions added.
14889         (TARGET_LIBGCC_CMP_RETURN_MODE, TARGET_LIBGCC_SHIFT_COUNT_MODE):
14890         Target hooks defined.
14891
14892 2007-07-06  Richard Sandiford  <richard@codesourcery.com>
14893
14894         * config/mips/mips.c (compute_frame_size): Restore the original
14895         gp_sp_offset for !GENERATE_MIPS16E_SAVE_RESTORE and remove the
14896         fp_size term from the GENERATE_MIPS16E_SAVE_RESTORE calculation.
14897         Document why the difference is needed.
14898
14899 2007-07-06  Richard Guenther  <rguenther@suse.de>
14900
14901         * c-common.c (boolean_increment): Use correctly typed
14902         constant.
14903
14904 2007-07-06  Richard Sandiford  <richard@codesourcery.com>
14905
14906         * config/mips/mips.c (mips16e_save_restore_pattern_p): Check that
14907         the topmost argument register is not also included in the save mask.
14908         (mips16e_collect_argument_save_p): Take a pointer to the argument
14909         register, rather than a pointer to the number of arguments.
14910         (mips16e_collect_argument_saves): Only include argument saves
14911         that aren't in the register mask.
14912
14913 2007-07-06  Uros Bizjak  <ubizjak@gmail.com>
14914
14915         PR rtl-optimization/32450
14916         * function.c (thread_prologue_and_epilogue_insns): Emit blockage insn
14917         to ensure that instructions are not moved into the prologue when
14918         profiling is on.  Remove unused prologue_end variable.
14919         (expand_function_end): Emit blockage insn instead of ASM_INPUT rtx
14920         as a scheduling barrier.
14921
14922 2007-07-06  Alexandre Oliva  <aoliva@redhat.com>
14923
14924         PR debug/23551
14925         * tree-ssa-copyrename.c (copy_rename_partition_coalesce):
14926         Disregard DECL_FROM_INLINE.
14927
14928 2007-07-05  Adam Nemet  <anemet@caviumnetworks.com>
14929
14930         * rtlanal.c (num_sign_bit_copies1): Improve cases of ANDing or
14931         IORing with a constant.
14932
14933 2007-07-05  Seongbae Park  <seongbae.park@gmail.com>
14934
14935         PR rtl-optimization/32475
14936         * df-scan.c (df_def_record_1): Add a use of the stack pointer
14937         for every definition of the stack pointer.
14938
14939 2007-07-05  Richard Earnshaw  <rearnsha@arm.com>
14940
14941         * arm.c (vfp3_const_double_index): Copy signed results of
14942         REAL_VALUE_TO_INT into unsigned vars.
14943
14944 2007-07-05  Richard Guenther  <rguenther@suse.de>
14945
14946         PR middle-end/32639
14947         * alias.c (get_alias_set): Tread METHOD_TYPE the same as
14948         FUNCTION_TYPE.
14949         * tree-ssa.c (useless_type_conversion_p): Check canonical
14950         types early.
14951
14952 2007-07-05 Anatoly Sokolov <aesok@post.ru>
14953
14954         * config/avr/avr.md (zero_extendqihi2, zero_extendqisi2, 
14955         zero_extendhisi2): Change to define_insn_and_split. 
14956         (zero_extendqidi2, zero_extendhidi2, zero_extendsidi2): New.
14957
14958 2007-07-05  Paolo Bonzini  <bonzini@gnu.org>
14959
14960         * function.c (match_asm_constraints_1, rest_of_match_asm_constraints,
14961         pass_match_asm_constraints): New.
14962         * passes.c (init_optimization_passes): Add new pass.
14963         * stmt.c (expand_asm_operands): Set cfun->has_asm_statement.
14964         * function.h (struct function): Add has_asm_statement bit.
14965         (current_function_has_asm_statement): New.
14966         * tree-pass.h (pass_match_asm_constraints): New.
14967
14968 2007-07-05  Richard Sandiford  <rsandifo@nildram.co.uk>
14969
14970         * config/mips/mips.c (mips_file_start): Avoid declaration
14971         after code.
14972
14973 2007-07-05  Sandra Loosemore  <sandra@codesourcery.com>
14974
14975         * optabs.c (expand_binop_directly): Fix signed/unsigned comparison.
14976
14977 2007-07-05  Uros Bizjak  <ubizjak@gmail.com>
14978
14979         * rtl.def (NOTE): Change print format string to print
14980         operand 5 as a note insn name.
14981
14982 2007-07-05  Sandra Loosemore  <sandra@codesourcery.com>
14983             David Ung  <davidu@mips.com>
14984
14985         * config/mips/mips.c (mips_cpu_info): Add 4ksc and 4ksd processors.
14986         * doc/invoke.texi: (MIPS Options): Document them.
14987
14988 2007-07-05  Sandra Loosemore  <sandra@codesourcery.com>
14989             David Ung  <davidu@mips.com>
14990
14991         Add support for SmartMIPS ASE.
14992
14993         * optabs.c (expand_binop_directly): New, broken out from...
14994         (expand_binop): Here.  Make it try rotating in the other
14995         direction even when the second operand isn't constant.
14996         * config/mips/mips.md (*lwxs): New.
14997         * config/mips/mips.opt (msmartmips): New.
14998         * config/mips/mips.c (mips_lwxs_address_p): New.
14999         (mips_rtx_costs): Make it recognize scaled indexed addressing.
15000         * config/mips/mips.h (TARGET_CPU_CPP_BUILTINS): Define
15001         __mips_smartmips when compiling for TARGET_SMARTMIPS.
15002         (ISA_HAS_ROR): Define for TARGET_SMARTMIPS.
15003         (ISA_HAS_LWXS): New.
15004         (ASM_SPEC): Add -msmartmips/-mno-smartmips.
15005         * doc/invoke.texi (MIPS Options): Document -msmartmips/-mno-smartmips.
15006         * testsuite/gcc.target/mips/smartmips-lwxs.c: New test case.
15007         * testsuite/gcc.target/mips/smartmips-ror-1.c: New test case.
15008         * testsuite/gcc.target/mips/smartmips-ror-2.c: New test case.
15009         * testsuite/gcc.target/mips/smartmips-ror-3.c: New test case.
15010         * testsuite/gcc.target/mips/smartmips-ror-4.c: New test case.
15011
15012 2007-07-05  Dorit Nuzman  <dorit@il.ibm.com>
15013
15014         * tree-vectorizer.c (new_loop_vec_info): Initialize
15015         LOOP_VINFO_COST_MODEL_MIN_ITERS.
15016         * tree-vectorizer.h (_loop_vec_info): Added new filed
15017         min_profitable_iters.
15018         (LOOP_VINFO_COST_MODEL_MIN_ITERS): New access macro to above new field.
15019         (TARG_SCALAR_TO_VEC_COST): Define cost of scalar to vector operation.
15020         * tree-vect-analyze.c (vect_analyze_operations): Set
15021         LOOP_VINFO_COST_MODEL_MIN_ITERS.
15022         * tree-vect-transform.c (vect_estimate_min_profitable_iters): Use
15023         VEC_length to determine if there are any LOOP_VINFO_MAY_MISALIGN_STMTS.
15024         Fix calculation of peel_iters_prologue. Move consideration of epilogue
15025         and prologue cost to after they are computed.
15026         (vect_model_induction_cost): Use TARG_SCALAR_TO_VEC_COST instead of
15027         TARG_VEC_STMT_COST.
15028         (vect_model_simple_cost): Takes additional argument dt. Consider cost
15029         of creating vectors from scalars according to dt.
15030         (vect_model_store_cost): Likewise.
15031         (vectorizable_call): Use dt array instead of scalar dt. Call
15032         vect_model_simple_cost with additional argument dt.
15033         (vectorizable_assignment): Likewise.
15034         (vectorizable_operation): Likewise.
15035         (vectorizable_type_demotion): Likewise.
15036         (vectorizable_type_promotion): Likewise.
15037         (vectorizable_store): Use dt array instead of scalar dt. Call
15038         vect_model_store_cost with additional argument dt.
15039         (vect_do_peeling_for_loop_bound): Don't call
15040         vect_estimate_min_profitable_iters. Instead, lookup
15041         LOOP_VINFO_COST_MODEL_MIN_ITERS. Don't always print
15042         "may not be profitable".
15043
15044 2007-07-05  Dorit Nuzman  <dorit@il.ibm.com>
15045
15046         PR testsuite/32014
15047         * config/rs6000/altivec.md (UNSPEC_VUPKHS_V4SF, UNSPEC_VUPKLS_V4SF):
15048         (UNSPEC_VUPKHU_V4SF, UNSPEC_VUPKLU_V4SF): New.
15049         (vec_unpacks_float_hi_v8hi, vec_unpacks_float_lo_v8hi): New patterns.
15050         (vec_unpacku_float_hi_v8hi, vec_unpacku_float_lo_v8hi): New patterns. 
15051
15052 2007-07-05  Zdenek Dvorak  <dvorakz@suse.cz>
15053
15054         * config/i386/i386.c (ix86_address_cost): Do not consider more complex
15055         addressing modes cheaper.
15056
15057 2007-07-05  Alexandre Oliva  <aoliva@redhat.com>
15058
15059         * dwarf2out.c (dw_ranges_by_label_ref): New typedef.
15060         (dw_ranges_struct): Rename block_num to num.  Adjust.
15061         (dw_ranges_by_label_struct): New.
15062         (ranges_by_label, ranges_by_label_allocated,
15063         ranges_by_label_in_use): New variables.
15064         (add_ranges_num): Factored most of the code out of...
15065         (add_ranges): ... this one.  Rewrite in terms of the former.
15066         (add_ranges_by_labels): New.
15067         (output_ranges): Output by-label ranges.
15068         (dwarf2out_finish): Output range for multiple-section
15069         compile_unit.  Output standard DW_AT_low_pc in addition to
15070         unexpected DW_AT_entry_pc.
15071
15072 2007-07-04  Daniel Berlin  <dberlin@dberlin.org>
15073
15074         PR tree-optimization/32604
15075         PR tree-optimization/32606
15076
15077         * tree-ssa-pre.c (bb_bitmap_sets): Removed antic_safe_loads.
15078         (compute_antic_safe): Removed.
15079         (ANTIC_SAFE_LOADS): Ditto.
15080         (compute_antic_aux): Don't print ANTIC_SAFE_LOADS.
15081         (execute_pre): Don't call compute_antic_safe.
15082         (vuse_equiv): New function.
15083         (make_values_for_stmt): Use it
15084         * tree-ssa-sccvn.c (set_ssa_val_to): Remove assert, since it is
15085         not always true.
15086
15087 2007-07-04 Anatoly Sokolov <aesok@post.ru>
15088
15089         PR target/31331
15090         * config/avr/avr.c (avr_naked_function_p): Handle receiving a type
15091         rather than a decl. 
15092         (avr_attribute_table): Make "naked" attribute apply to function types
15093         rather than to decls.
15094         (avr_handle_fntype_attribute): New function.
15095
15096 2007-07-04  Joseph Myers  <joseph@codesourcery.com>
15097
15098         * target-def.h (TARGET_INITIALIZER): Remove trailing whitespace
15099         after \.
15100
15101 2007-07-04  David Ung  <davidu@mips.com>
15102             Joseph Myers  <joseph@codesourcery.com>
15103
15104         * config/mips/mips.md (type): Add logical, signext and move.
15105         (one_cmpl<mode>2, *and<mode>3, *and<mode>3_mips16, *ior<mode>3,
15106         *ior<mode>3_mips16, two unnamed insns after *ior<mode>3_mips16,
15107         *nor<mode>3, "Combiner patterns to optimize truncate/zero_extend
15108         combinations", *zero_extend<SHORT:mode><GPR:mode>2,
15109         *zero_extendqihi2, *extend<SHORT:mode><GPR:mode>2_mips16e,
15110         *extend<SHORT:mode><GPR:mode>2_se<SHORT:size>, *movdi_64bit,
15111         *movdi_64bit_mips16, *movsi_internal, *movsi_mips16, movcc,
15112         *movhi_internal, *movhi_mips16, *movqi_internal, *movqi_mips16,
15113         *movsf_hardfloat, *movsf_softfloat, *movsf_mips16,
15114         *movdf_hardfloat_64bit, *movdf_hardfloat_32bit,
15115         movv2sf_hardfloat_64bit): Use the new types.
15116         (*movdi_32bit, *movdi_gp32_fp64, *movdi_32bit_mips16,
15117         *movdf_softfloat, *movdf_mips16): Use "multi".
15118         (extendqihi2): Replace with a define_expand.
15119         (*extendqihi2_mips16e, *extendqihi2, *extendqihi2_seb): New.
15120         Based on extend<SHORT:mode><GPR:mode>2 patterns.
15121         * config/mips/74k.md (r74k_int_logical): New reservation and
15122         bypasses.
15123         (r74k_int_arith): Remove "slt".
15124         * config/mips/24k.md, config/mips/4130.md, config/mips/4k.md,
15125         config/mips/5400.md, config/mips/5500.md, config/mips/5k.md,
15126         config/mips/7000.md, config/mips/9000.md, config/mips/generic.md,
15127         config/mips/sb1.md, config/mips/sr71k.md: Add new types to
15128         reservations for "arith".
15129
15130 2007-07-04  Richard Guenther  <rguenther@suse.de>
15131
15132         * tree-ssa.c (useless_type_conversion_p): Add handling for
15133         scalar float and vector types.  Only call the types_compatible_p
15134         langhook for aggregate types as last resort.  Follow the
15135         rules.
15136
15137 2007-07-04  Richard Guenther  <rguenther@suse.de>
15138
15139         * tree-inline.c (estimate_num_insns_1): Treat CONVERT_EXPR
15140         the same as NOP_EXPR.
15141
15142 2007-07-04  Nick Clifton  <nickc@redhat.com>
15143
15144         * target.h (struct gcc_target): Add target_help field.
15145         * target-def.h (TARGET_HELP): New.
15146         (TARGET_INITIALIZER): Use TARGET_HELP.
15147         * opts.c (command_handle_option): Invoke target_help function, if
15148         defined, when the user has specified --target-help on the command
15149         line.
15150         * doc/invoke.texi: Mention that --target-help might print
15151         additional information.
15152         * doc/tm.texi: Document TARGET_HELP hook.
15153
15154         * arm.c (TARGET_HELP): Override default definition.
15155         (arm_target_help): New - display a wrapped list of cores and
15156         architectures supported.
15157
15158 2007-07-04  Rask Ingemann Lambertsen  <rask@sygehus.dk>
15159
15160         * config/v850/v850.c (expand_prologue): Make sure
15161         GEN_INT() argument is sign extended rather than zero extended.
15162         (expand_epilogue): Likewise.
15163         (output_move_double): Delete.
15164         * config/v850/v850-protos.h (output_move_double): Delete.
15165         * config/v850/v850.md (movdi): Delete.
15166         (*movdi_internal): Delete.
15167         (movdf): Delete.
15168         (*movdf_internal): Delete.
15169
15170 2007-07-04  Richard Sandiford  <richard@codesourcery.com>
15171
15172         * config/sh/vxworks.h (SUBTARGET_OVERRIDE_OPTIONS): Reject -mrelax
15173         unless compiling RTP PIC.
15174
15175 2007-07-04  Richard Guenther  <rguenther@suse.de>
15176
15177         PR tree-optimization/32482
15178         * tree-ssa-ifcombine.c (recognize_single_bit_test): Use the
15179         original ssa name if we didn't find a shift expression.
15180         Fix shift constant for bit zero test.
15181
15182 2007-07-04  Richard Sandiford  <richard@codesourcery.com>
15183
15184         * config/sh/lib1funcs.asm (ic_invalidate): Align constant pool.
15185
15186 2007-07-04  Richard Sandiford  <richard@codesourcery.com>
15187
15188         * config.gcc (arm-wrs-vxworks): Don't include svr4.h.
15189         * config/vxworks.h (PTRDIFF_TYPE, SIZE_TYPE, TARGET_POSIX_IO): Define.
15190         * config/arm/vxworks.h (ASM_SPEC): Delete.
15191         (SUBTARGET_EXTRA_ASM_SPEC): Define.
15192
15193 2007-07-04  Sebastian Pop  <sebpop@gmail.com>
15194
15195         * tree-data-ref.h (data_dependence_relation): New flag reversed_p.
15196         (DDR_REVERSED_P): New.
15197         * tree-data-ref.c (initialize_data_dependence_relation,
15198         build_classic_dist_vector): Set DDR_REVERSED_P.
15199
15200 2007-07-04  Sebastian Pop  <sebpop@gmail.com>
15201
15202         PR middle-end/32457
15203         * tree-data-ref.c (analyze_siv_subscript_cst_affine,
15204         compute_overlap_steps_for_affine_1_2, analyze_subscript_affine_affine,
15205         init_omega_for_ddr_1): Use non conservative number of iterations
15206         estimations.
15207         (analyze_subscript_affine_affine): Use HOST_WIDE_INT instead of int.
15208         (analyze_siv_subscript): Remove FIXME and reinitialization of 
15209         last_conflicts to chrec_dont_know.
15210         * testsuite/gfortran.dg/vect/pr32457.f90: New.
15211
15212 2007-07-04  Douglas Gregor  <doug.gregor@gmail.com>
15213
15214         * tree.c (maybe_canonicalize_argtypes): Improve description.
15215
15216 2007-07-04  Douglas Gregor  <doug.gregor@gmail.com>
15217
15218         * tree.c (maybe_canonicalize_argtypes): New.
15219         (build_function_type): Set canonical type.
15220         (build_method_type_directly): Ditto.
15221         (reconstruct_complex_type): Rebuild the METHOD_TYPE node
15222         properly.
15223
15224 2007-07-03  Andrew Pinski  <andrew_pinski@playstation.sony.com>
15225
15226         * tree-ssa-loop-ivopts.c (strip_offset_1): Treat POINTER_PLUS_EXPR
15227         like PLUS_EXPR.
15228         (rewrite_use_nonlinear_expr): Likewise.
15229
15230 2007-07-03  Seongbae Park  <seongbae.park@gmail.com>
15231
15232         * rtl.def (UNSPEC, USE, CLOBBER): More comments.
15233
15234 2007-07-04  Ben Elliston  <bje@au.ibm.com>
15235
15236         * dwarf2out.c: Move DWARF2 abbreviation glossary closer to the top
15237         of this file.
15238
15239         * c-objc-common.c (c_types_compatible_p): Fix indentation.
15240
15241         * doc/tm.texi (Run-time Target): Capitalise "CPU".
15242         (Exception Handling): Likewise.
15243
15244 2007-07-03  Jan Hubicka  <jh@suse.cz>
15245
15246         * ifcvt.c (find_cond_trap): Avoid invalid RTL sharing.
15247
15248 2007-07-03  Eric Christopher  <echristo@apple.com>
15249
15250         * doc/cppopts.texi: Add conflicting option note to -dM.
15251         * doc/invoke.texi: Add note about possible conflicts with
15252         -E for -dCHARS and note that -dM will not produce
15253         any results if there is no machine dependent reorg.
15254         
15255 2007-07-03  Geoffrey Keating  <geoffk@apple.com>
15256
15257         * tree.h (DECL_ALIGN): Back out previous change.
15258
15259 2007-07-03  Joseph Myers  <joseph@codesourcery.com>
15260
15261         * configure.ac: Test for .dtprelword support on MIPS.
15262         * configure, config.in: Regenerate.
15263         * config/mips/mips.c (mips_output_dwarf_dtprel): New.
15264         (TARGET_ASM_OUTPUT_DWARF_DTPREL): Define.
15265
15266 2007-07-03  Julian Brown  <julian@codesourcery.com>
15267
15268         * config.gcc (with_fpu): Allow --with-fpu=vfp3.
15269         * config/arm/aout.h (REGISTER_NAMES): Add D16-D31.
15270         * config/arm/aof.h (REGISTER_NAMES): Add D16-D31.
15271         * config/arm/arm.c (FL_VFPV3): New flag for VFPv3 processor
15272         capability.
15273         (all_fpus): Add FPUTYPE_VFP3.
15274         (fp_model_for_fpu): Add VFPv3 field.
15275         (arm_rtx_costs_1): Give cost to VFPv3 constants.
15276         (vfp3_const_double_index): New function. Return integer index of
15277         VFPv3 constant suitable for fconst[sd] insns, or -1 if constant
15278         isn't suitable.
15279         (vfp3_const_double_rtx): New function. True if VFPv3 is enabled
15280         and argument represents a valid RTX for a VFPv3 constant.
15281         (vfp_output_fldmd): Split fldmd with > 16 registers in the list into
15282         two instructions.
15283         (vfp_emit_fstmd): Similar, for fstmd.
15284         (arm_print_operand): Implement new code 'G' for VFPv3 floating-point
15285         constants, represented as integer indices.
15286         (arm_hard_regno_mode_ok): Use VFP_REGNO_OK_FOR_SINGLE,
15287         VFP_REGNO_OK_FOR_DOUBLE macros.
15288         (arm_regno_class): Handle VFPv3 d0-d7, low, high register split.
15289         (arm_file_start): Set float-abi attribute for VFPv3, and output
15290         correct ".fpu" assembler directive.
15291         (arm_dbx_register_numbering): Add FIXME.
15292         * config/arm/arm.h (TARGET_VFP3): New macro. Target supports VFPv3.
15293         (fputype): Add FPUTYPE_VFP3.
15294         (FIXED_REGISTERS): Add 32 registers for D16-D31.
15295         (CALL_USED_REGISTERS): Likewise.
15296         (CONDITIONAL_REGISTER_USAGE): Add note about conditional definition
15297         of LAST_VFP_REGNUM. Make D16-D31 caller-saved, if present.
15298         (LAST_VFP_REGNUM): Extend available VFP registers for VFPv3.
15299         (D7_VFP_REGNUM): New.
15300         (LAST_LO_VFP_REGNUM, FIRST_HI_VFP_REGNUM, LAST_HI_VFP_REGNUM)
15301         (VFP_REGNO_OK_FOR_SINGLE, VFP_REGNO_OK_FOR_SINGLE)
15302         (VFP_REGNO_OK_FOR_DOUBLE): Define new macros.
15303         (FIRST_PSEUDO_REGISTER): Shift up to 128 to accommodate VFPv3.
15304         (REG_ALLOC_ORDER): Adjust for VFPv3.
15305         (reg_class): Add VFP_D0_D7_REGS, VFP_LO_REGS, VFP_HI_REGS.
15306         (REG_CLASS_NAMES): Add entries corresponding to VFP_D0_D7_REGS,
15307         VFP_LO_REGS, VFP_HI_REGS.
15308         (REG_CLASS_CONTENTS): Likewise. Extend contents for VFP_REGS.
15309         (IS_VFP_CLASS): Define macro.
15310         (SECONDARY_OUTPUT_RELOAD_CLASS, SECONDARY_INPUT_RELOAD_CLASS): Use
15311         IS_VFP_CLASS.
15312         (REGISTER_MOVE_COST): Likewise.
15313         * config/arm/arm-protos.h (vfp3_const_double_rtx): Add prototype.
15314         * config/arm/vfp.md (VFPCC_REGNUM): Redefine as 127.
15315         (*arm_movsi_vfp, *thumb2_movsi_vfp, *movsfcc_vfp)
15316         (*thumb2_movsfcc_vfp, *abssf2_vfp, *negsf2_vfp, *addsf3_vfp)
15317         (*subsf3_vfp, *divsf_vfp, *mulsf_vfp, *mulsf3negsf_vfp)
15318         (*mulsf3addsf_vfp, *mulsf3subsf_vfp, *mulsf3negsfaddsf_vfp)
15319         (*extendsfdf2_vfp, *truncdfsf2_vfp, *truncsisf2_vfp)
15320         (*truncsidf2_vfp, fixuns_truncsfsi2, fixuns_truncdfsi2)
15321         (*floatsisf2_vfp, *floatsidf2_vfp, floatunssisf2)
15322         (floatunssidf2, *sqrtsf2_vfp, *cmpsf_split_vfp)
15323         (*cmpsf_trap_split_vfp, *cmpsf_vfp, *cmpsf_trap_vfp): Use 't'
15324         where appropriate for single-word registers.
15325         (*movsf_vfp, *thumb2_movsf_vfp, *movdf_vfp, *thumb2_movdf_vfp):
15326         As above. Fix type attributes.
15327         * config/arm/constraints.md (register_contraint "t"): Define.
15328         (register_constraint "w"): Change to D0-D15, or D0-D31 for
15329         VFPv3/NEON.
15330         (register_constraint "x"): Define.
15331         (constraint "Dv"): Define.
15332
15333 2007-07-03  Geoffrey Keating  <geoffk@apple.com>
15334
15335         * tree.h (DECL_ALIGN): Prevent use on a FUNCTION_DECL.
15336
15337 2007-07-03  Tom Tromey  <tromey@redhat.com>
15338
15339         * c-parser.c (objc_pq_context): Removed.
15340         (objc_need_raw_identifier): Likewise.
15341         (c_parser) <objc_pq_context>: New field.
15342         <objc_need_raw_identifier>: Likewise.
15343         (OBJC_NEED_RAW_IDENTIFIER): Removed.
15344         (c_lex_one_token): Update.
15345         (c_parser_objc_protocol_definition): Update.
15346         (c_parser_objc_method_definition): Update.
15347         (c_parser_objc_methodproto): Update.
15348         (c_parser_declspecs): Update.
15349
15350 2007-07-03  David Ung  <davidu@mips.com>
15351
15352         * config/mips/mips.c (mips_issue_rate): Return 4 for 74K processors.
15353
15354 2007-07-03  David Ung  <davidu@mips.com>
15355             Richard Sandiford  <richard@codesourcery.com>
15356
15357         * doc/invoke.texi: Document -march=74kf3_2.
15358         * config/mips/mips.h (PROCESSOR_74KF3_2): New processor_type.
15359         (TUNE_74K): Check for it.
15360         * config/mips/mips.c (mips_cpu_info): Add 74kf3_2.
15361         (mips_rtx_cost_data): Add an entry for PROCESSOR_74KF3_2.
15362         * config/mips/mips.md (cpu): Add 74kf3_2.
15363         * config/mips/74k.md (r74k_int_logical, r74k_int_arith, r74k_int_nop)
15364         (r74k_int_cmove, r74k_int_mult, r74k_int_mul3, r74k_int_mfhilo)
15365         (r74k_int_mthilo, r74k_int_div, r74k_int_call, r74k_int_jump)
15366         (r74k_int_load, r74k_int_store, r74k_unknown, r74k_multi): Add
15367         74kf3_2 to the CPU list.
15368         (r74kf3_2_fadd, r74kf3_2_fmove, r74kf3_2_fload, r74kf3_2_fstore)
15369         (r74kf3_2_fmul_sf, r74kf3_2_fmul_df, r74kf3_2_fdiv_sf)
15370         (r74kf3_2_fdiv_df, r74kf3_2_frsqrt_sf, r74kf3_2_frsqrt_df)
15371         (r74kf3_2_fcmp, r74kf3_2_fcvt, r74kf3_2_fxfer_to_c1)
15372         (r74kf3_2_fxfer_from_c1): New insn reservations.
15373
15374 2007-07-03  Richard Sandiford  <richard@codesourcery.com>
15375             David Ung  <davidu@mips.com>
15376
15377         * doc/invoke.texi: Replace -march=24kf with -march=24kf2_1 and
15378         -march=24kx with -march=24kf1_1.  Likewise 24ke[fx], 34k[fx]
15379         and 74k[fx].  Document aliases for the new options.
15380         * config/mips/mips.h (PROCESSOR_24KF): Rename to...
15381         (PROCESSOR_24KF2_1): ...this.
15382         (PROCESSOR_24KX): Rename to...
15383         (PROCESSOR_24KF1_1): ...this.
15384         (PROCESSOR_74KF): Rename to...
15385         (PROCESSOR_74KF2_1): ...this.
15386         (PROCESSOR_74KX): Rename to...
15387         (PROCESSOR_74KF1_1): ...this.
15388         (TUNE_74K): Update PROCESSOR_* names.
15389         * config/mips/mips.c (mips_cpu_info): Add 24kf2_1 as a synonym
15390         for 24kf.  Add 24kf1_1 and 24kfx as synonyms for 24kx.  Likewise
15391         the 24ke*, 34k* and 74k* processors.  Update PROCESSOR_* names.
15392         (mips_rtx_cost_data): Update processor names in comments.
15393         (mips_issue_rate): Update PROCESSOR_* names.
15394         * config/mips/mips.md (cpu): Rename 24kf to 24kf2_1, 24kx to
15395         24kf1_1, 74kf to 74kf2_1 and 74kx to 74kf1_1.
15396         * config/mips/24k.md: Rename FPU-related r24k_* insn reservations
15397         to r24kf2_1_*.  Rename r24kx_* insn reservations to r24kf1_1_*.
15398         Update cpu attribute names.
15399         (r24k_fpu_iss): Rename this reservation to...
15400         (r24kf2_1_fpu_iss): ...this and update all uses.
15401         (r24kx_fpu_iss): Rename this reservation to...
15402         (r24kf1_1_fpu_iss): ...this and update all uses.
15403         * config/mips/74k.md: Rename FPU-related r74kf_* insn reservations
15404         to r74kf2_1_*.  Rename r74kx_* insn reservations to r74kf1_1_*.
15405         Update cpu attribute names.
15406
15407 2007-07-01  Kaz Kojima  <kkojima@gcc.gnu.org>
15408
15409         * config/m32r/constraints.md: New file.
15410         * config/m32r/m32r.c: Include tm-constrs.h.
15411         (small_data_operand): Use satisfies_constraint_* instead of macro.
15412         (addr24_operand, gen_compare): Likewise.
15413         * config/m32r/m32r.h (REG_CLASS_FROM_LETTER): Remove.
15414         (INT8_P, UPPER16_P, UINT32_P, UINT5_P, INVERTED_SIGNED_8BIT,
15415         CONST_OK_FOR_LETTER_P, CONST_DOUBLE_OK_FOR_LETTER_P,
15416         EXTRA_CONSTRAINT): Likewise.
15417         * config/m32r/m32r.md: Include constraints.md.
15418         (*movsi_insn): Use satisfies_constraint_* instead of macro.
15419         (andsi3, iorsi3, xorsi3, seq_insn+1, sne): Likewise.
15420         * config/m32r/predicates.md (conditional_move_operand): Likewise.
15421         (two_insn_const_operand, int8_operand, uint16_operand,
15422         reg_or_int16_operand, reg_or_uint16_operand,
15423         reg_or_cmp_int16_operand, cmp_int16_operand,
15424         seth_add3_operand): Likewise.
15425
15426 2007-07-03  Eric Christopher  <echristo@gmail.com>
15427
15428         * libgcc2.h: Conditionally declare __bswapsi2 and
15429         __bswapdi2.
15430         
15431 2007-07-03  H.J. Lu  <hongjiu.lu@intel.com>
15432
15433         * ddg.c (check_sccs): Define only if ENABLE_CHECKING is
15434         defined.
15435
15436 2007-07-03  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
15437
15438         PR target/28307
15439         * gthr-posix.h [SUPPORTS_WEAK && GTHREAD_USE_WEAK]
15440         (__gthrw_pragma): Provide default definition.
15441         (__gthrw2): Use it.
15442         * gthr-posix.c (__gthrw_pragma): Define.
15443
15444 2007-07-03  Daniel Berlin  <dberlin@dberlin.org>
15445
15446         * tree-ssa-sccvn.c (set_ssa_val_to): Check for operand_equal_p
15447         before declaring inequality.
15448
15449 2007-07-03  Rask Ingemann Lambertsen  <rask@sygehus.dk>
15450
15451         * combine.c (recog_for_combine): Log the success or failure of
15452           matching new insn patterns against the machine description in
15453           detailed dumps.
15454
15455 2007-07-03  Revital Eres  <eres@il.ibm.com>
15456
15457         * ddg.c (print_sccs): New function.
15458         (check_sccs): New function.
15459         (create_ddg_all_sccs): Use it.
15460         * ddg.h (print_sccs): Declare.
15461         * modulo-sched.c (sms_order_nodes): Call print_sccs.
15462
15463 2007-07-03  Uros Bizjak  <ubizjak@gmail.com>
15464
15465         * targhooks.h (default_mode_for_suffix): New function declaration.
15466         * targhooks.c (default_mode_for_suffix): New default target hook.
15467         * target.h (struct c): New structure in the targetm struct.
15468         (mode_for_suffix): New target hook as part of struct c.
15469         target-def.h (TARGET_C_MODE_FOR_SUFFIX): Define as
15470         default_mode_for_suffix.
15471         (TARGET_C): New define.
15472         * c-lex.c: Include "target.h".
15473         (interpret_float): Use targetm.c.mode_for_suffix to determine
15474         the mode for a given non-standard suffix.
15475         Makefile.in (c-lex.o): Depend on $(TARGET_H).
15476
15477         * config/i386/i386.c (ix86_c_mode_for_suffix): New static function.
15478         (TARGET_C_MODE_FOR_SUFFIX): Define to ix86_c_mode_for_suffix.
15479
15480         * doc/extend.texi (Floating Types): New node.  Document __float80 and
15481         __float128 types.  Document 'w', 'W', 'q' and 'Q' suffixes.
15482
15483 2007-07-03  Kaz Kojima  <kkojima@gcc.gnu.org>
15484
15485         PR target/32506
15486         * config/sh/sh.md (udivsi3_i1_media): Use target_reg_operand
15487         predicate instead of target_operand.
15488         (divsi3_i1_media, divsi3_media_2): Likewise.
15489
15490 2007-07-02  Eric Botcazou  <ebotcazou@adacore.com>
15491
15492         * tree.h (alias_sets_might_conflict_p): Rename into
15493         alias_sets_must_conflict_p.
15494         * alias.c (alias_sets_might_conflict_p): Likewise.
15495         (alias_sets_conflict_p): Use it.
15496         (objects_must_conflict_p): Likewise.
15497         * c-common.c (strict_aliasing_warning): Adjust.
15498
15499 2007-07-02  Andrew Pinski  <andrew_pinski@playstation.sony.com>
15500
15501         * rtlhooks.c (gen_lowpart_if_possible): Check for
15502         invalid subreg before calling gen_lowpart_SUBREG.
15503
15504 2007-07-02  Geoffrey Keating  <geoffk@apple.com>
15505
15506         * config/darwin9.h: Add copyright notice.
15507         (LINK_COMMAND_SPEC): Add comment.
15508         (DARWIN_LIBSYSTEM_HAS_UNWIND): Define.
15509         * config/rs6000/darwin.h (MD_UNWIND_SUPPORT): Conditionalise on
15510         DARWIN_LIBSYSTEM_HAS_UNWIND.
15511
15512 2007-07-02  Jakub Jelinek  <jakub@redhat.com>
15513
15514         PR libgomp/32468
15515         * omp-low.c (check_combined_parallel): New function.
15516         (lower_omp_parallel): Call it via walk_stmts, set
15517         OMP_PARALLEL_COMBINED if appropriate.
15518         (determine_parallel_type): If OMP_FOR resp. OMP_SECTIONS
15519         isn't the only statement in WS_ENTRY_BB or OMP_RETURN
15520         the only one in PAR_EXIT_BB and not OMP_PARALLEL_COMBINED,
15521         don't consider it as combined parallel.
15522
15523 2007-07-02  Richard Sandiford  <richard@codesourcery.com>
15524
15525         * configure.ac (gcc_gxx_include_dir): Use $(libsubdir_to_prefix).
15526         (gcc_tooldir): Likewise.
15527         * configure: Regenerate.
15528         * Makefile.in (libsubdir_to_prefix): New variable, based on the
15529         old configure.ac gcc_tooldir setting.
15530         (prefix_to_exec_prefix): New variable.
15531         (DRIVER_DEFINES): Use $(libsubdir_to_prefix)$(prefix_to_exec_prefix)
15532         rather than $(unlibsubdir)/../ to derive TOOLDIR_BASE_PREFIX.
15533
15534 2007-07-02  Daniel Berlin  <dberlin@dberlin.org>
15535
15536         Fix PR tree-optimization/32583
15537         Fix PR tree-optimization/32584
15538         * tree-ssa-pre.c (phi_translate): Always pass seen bitmap.
15539         (phi_translate_set): Use phi_translate directly now.
15540         (make_values_for_stmt): Don't value number RHS if we already know
15541         it is constant.
15542
15543 2007-07-02  Steve Ellcey  <sje@cup.hp.com>
15544             Jim Wilson <wilson@specifix.com>
15545
15546         PR target/31684
15547         * haifa-sched.c (add_to_speculative_block): Change copy_rtx to
15548         copy_insn.
15549
15550 2007-07-02  Sandra Loosemore  <sandra@codesourcery.com>
15551             Richard Sandiford  <richard@codesourcery.com>
15552             Nigel Stephens  <nigel@mips.com>
15553
15554         * config/mips/mips-protos.h (mips16e_save_restore_info): New struct.
15555         (mips16e_output_save_restore): Declare.
15556         (mips16e_save_restore_pattern_p): Likewise.
15557         * config/mips/mips.h (GENERATE_MIPS16E_SAVE_RESTORE): New macro.
15558         * config/mips/mips.c (MIPS_MAX_FIRST_STACK_STEP): Return 0x7f8
15559         for GENERATE_MIPS16E_SAVE_RESTORE.  Return 0x400 for TARGET_MIPS16
15560         && !GENERATE_MIPS16E_SAVE_RESTORE && !TARGET_64BIT.
15561         (BITSET_P): New global macro, extracted from...
15562         (mips_for_each_saved_reg): ...here.
15563         (mips16e_save_restore_info): New struct.
15564         (mips16e_s2_s8_regs, mips16e_a0_a3_regs): New variables.
15565         (mips16e_save_restore_regs): New variable.
15566         (mips_split_plus, mips16e_find_first_register): New functions.
15567         (mips16e_mask_registers): New function.
15568         (compute_frame_size): Expand the commentary before the function.
15569         Enforce the MIPS16e save and restore register range restrictions.
15570         Pad the general register save area at the low end.
15571         (mips16e_save_restore_reg, mips16e_build_save_restore)
15572         (mips16e_save_restore_pattern_p, mips16e_add_register_range)
15573         (mips16e_output_save_restore, mips16e_collect_propagate_value)
15574         (mips16e_collect_argument_save, mips16e_collect_argument_saves):
15575         New functions.
15576         (mips_expand_prologue, mips_expand_epilogue): Handle
15577         GENERATE_MIPS16E_SAVE_RESTORE.
15578         * config/mips/mips.md (*mips16e_save_restore): New pattern.
15579
15580 2007-07-02  Uros Bizjak  <ubizjak@gmail.com>
15581
15582         PR tree-optimization/31966
15583         PR tree-optimization/32533
15584         * tree-if-conv.c (add_to_dst_predicate_list): Use "edge", not
15585         "basic_block" description as its third argument.  Update function
15586         calls to get destination bb from "edge" argument.  Save "cond" into
15587         aux field of the edge.  Update prototype for changed arguments.
15588         (if_convertible_loop_p): Clear aux field of incoming edges if bb
15589         contains phi node.
15590         (find_phi_replacement_condition): Operate on incoming edges, not
15591         on predecessor blocks.  If there is a condition saved in the
15592         incoming edge aux field, AND it with incoming bb predicate.
15593         Return source bb of the first edge.
15594         (clean_predicate_lists): Clean aux field of outgoing node edges.
15595         (tree_if_conversion): Do not initialize cond variable. Move
15596         variable declaration into the loop.
15597         (replace_phi_with_cond_gimple_modify_stmt): Remove unneded
15598         initializations of new_stmt, arg0 and arg1 variables.
15599
15600 2007-07-02  Jakub Jelinek  <jakub@redhat.com>
15601
15602         * tree-nrv.c (dest_safe_for_nrv_p): Grok any handled_component_p,
15603         SSA_NAMEs, RESULT_DECLs and PARM_DECLs.
15604
15605 2007-07-02  Richard Guenther  <rguenther@suse.de>
15606
15607         * tree-ssa.c (useless_type_conversion_p): Document
15608         future intent as defining the middle-end type system.
15609         Re-structure to call langhook last, group by type class,
15610         mark questionable parts.
15611
15612 2007-07-02  Richard Guenther  <rguenther@suse.de>
15613
15614         * tree-flow.h (types_compatible_p): Declare.
15615         * tree-ssa.c (types_compatible_p): New function.
15616         * ipa-type-escape.c (discover_unique_type): Use
15617         types_compatible_p instead of lang_hooks.types_compatible_p.
15618         * tree-ssa-copyrename.c (copy_rename_partition_coalesce): Likewise.
15619         * tree-vn.c (expressions_equal_p): Likewise.
15620         * tree.c (fields_compatible_p): Likewise.
15621         * tree-ssa-dom.c (avail_expr_eq): Likewise.
15622         (cprop_operand): Use useless_type_conversion_p instead of
15623         lang_hooks.types_compatible_p.
15624         * tree-inline.c (setup_one_parameter): Likewise.
15625         (declare_return_variable): Likewise.
15626         * tree-nrv.c (tree_nrv): Likewise.
15627         * tree-ssa-ccp.c (maybe_fold_offset_to_array_ref): Likewise.
15628         (maybe_fold_offset_to_component_ref): Likewise.
15629         (maybe_fold_offset_to_reference): Likewise.
15630         * tree-ssa-copy.c (may_propagate_copy): Likewise.
15631         (merge_alias_info): Likewise.
15632         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Likewise.
15633         * tree-ssa-phiopt.c (conditional_replacement): Likewise.
15634         * tree-ssa-reassoc.c (optimize_ops_list): Likewise.
15635         * tree-tailcall.c (find_tail_calls): Likewise.
15636         * tree-vect-generic.c (expand_vector_operations_1): Likewise.
15637         * gimplify.c (canonicalize_addr_expr): Likewise.
15638         (fold_indirect_ref_rhs): Likewise.
15639         (gimplify_addr_expr): Likewise.  Swap parameters to cpt_same_type.
15640         (cpt_same_type): Likewise.
15641         (check_pointer_types_r): Swap parameters to cpt_same_type
15642         where appropriate.
15643         * fold-const.c (fold_convert): Revert fix for PR15988.
15644         * tree-inline.c (setup_one_parameter): Instead fix it here by
15645         using fold_build1 instead of fold_convert and checking for
15646         error_mark_node.  Convert only if the conversion is necessary.
15647
15648 2007-07-02  Joseph Myers  <joseph@codesourcery.com>
15649
15650         * configure.ac: Check for .gnu_attribute on Power.
15651         * configure: Regenerate.
15652         * config/rs6000/rs6000.c (rs6000_file_start): If supported, output
15653         attribute for floating-point ABI.
15654
15655 2007-07-02  Ira Rosen  <irar@il.ibm.com>
15656
15657         PR tree-optimization/32230
15658         PR tree-optimization/32477
15659         * tree-vect-analyze.c (vect_analyze_data_refs): Fail if base 
15660         address is a constant.
15661
15662 2007-07-02  Richard Sandiford  <richard@codesourcery.com>
15663
15664         * config.gcc (mipsisa32-*-elf*, mipsisa32el-*-elf*)
15665         (mipsisa32r2-*-elf*, mipsisa32r2el-*-elf*)
15666         (mipsisa64-*-elf*, mipsisa64el-*-elf*): Combine top-level
15667         stanzas.  Use the first part of the triplet to set MIPS_ISA_DEFAULT.
15668         Remove redundant setting of MASK_FLOAT64 and MASK_64BIT for the
15669         64-bit targets.  Add support for *-elfoabi*.
15670         * config/mips/t-isa3264 (MULTILIB_OPTIONS, MULTILIB_DIRNAMES): Use
15671         different settings if $(tm_defines) does not select the EABI.
15672         (MULTILIB_EXCLUSIONS): Define in those circumstances.
15673         * config/mips/mips.h (MIPS_ISA_LEVEL_OPTION_SPEC): New macro.
15674         (MIPS_ARCH_OPTION_SPEC): Likewise.
15675         (MIPS_ISA_LEVEL_SPEC): Likewise.
15676         (OPTION_DEFAULT_SPECS): Use MIPS_ARCH_OPTION_SPEC.
15677         * config/mips/elfoabi.h: New file.
15678
15679 2007-07-02  Richard Guenther  <rguenther@suse.de>
15680
15681         * tree-flow.h (tree_ssa_useless_type_conversion_1): Rename to ...
15682         (useless_type_conversion_p): ... this.
15683         * tree-ssa.c (tree_ssa_useless_type_conversion_1): Rename to ...
15684         (useless_type_conversion_p): ... this.
15685         * builtins.c (fold_builtin_memory_op): Rename
15686         tree_ssa_useless_type_conversion_1 to useless_type_conversion_p.
15687         * tree-cfg.c (verify_expr): Likewise.
15688         * tree-ssa-address.c (tree_ssa_useless_type_conversion_1): Likewise.
15689         * tree-ssa-ccp.c (ccp_fold): Likewise.
15690         * tree-ssa-copy.c (may_propagate_copy): Likewise.
15691         * tree-ssa-dom.c (eliminate_redundant_computations): Likewise.
15692         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Likewise.
15693         * tree-ssa-loop-niter.c (refine_bounds_using_guard): Likewise.
15694         * tree-ssa-pre.c (eliminate): Likewise.
15695         * tree-ssa.c (delete_tree_ssa): Likewise.
15696         (tree_ssa_useless_type_conversion): Likewise.
15697         * tree.c (build2_stat): Likewise.
15698
15699 2007-07-01  Daniel Berlin  <dberlin@dberlin.org>
15700
15701         Fix PR tree-optimization/32571
15702         * tree-ssa-sccvn.c (visit_use): Shortcut copies to avoid
15703         simplifying them.
15704
15705 2007-07-01  Daniel Berlin  <dberlin@dberlin.org>
15706
15707         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Handle constants
15708         and other expected operations explicitly, change default to
15709         gcc_unreachable. 
15710
15711 2007-07-01  Daniel Jacobowitz  <dan@codesourcery.com>
15712
15713         * config/arm/arm.c (arm_cannot_copy_insn_p): Do not expect a
15714         PARALLEL.
15715         * config/arm/arm.md (pic_add_dot_plus_four, pic_add_dot_plus_eight)
15716         (tls_load_dot_plus_eight): Move the label number into the unspec.
15717         * config/arm/thumb2.md (pic_load_dot_plus_four): Likewise.
15718
15719 2007-07-01  Andreas Schwab  <schwab@suse.de>
15720
15721         * dwarf2out.c (initial_return_save): Define only if used.
15722
15723 2007-07-01  Kenneth Zadeck <zadeck@naturalbridge.com>
15724
15725         Unreverting Richard's Revert of:
15726
15727         2007-06-27  Richard Sandiford  <richard@codesourcery.com>
15728
15729         * dce.c (deletable_insn_p_1): New function, split out from...
15730         (deletable_insn_p): ...here.  Only treat bare USEs and CLOBBERs
15731         specially, not those inside PARALLELs.  Remove BODY argument
15732         and adjust recursive call accordingly.
15733         (prescan_insns_for_dce): Update call to delete_insn_p.
15734
15735 2007-07-01  Vladimir Yanovsky  <yanov@il.ibm.com>
15736             Revital Eres  <eres@il.ibm.com>
15737
15738         * ddg.c (create_ddg_all_sccs): Fix missed
15739         initialization of scc_nodes.
15740
15741 2007-07-01  Uros Bizjak  <ubizjak@gmail.com>
15742
15743         PR middle-end/32559
15744         * fold-const.c (fold-binary) [PLUS_EXPR]: Convert ~X + X to 1 or
15745         X + ~X to 1 only for INTEGRAL_TYPE_P type.
15746
15747 2007-06-30  Joseph Myers  <joseph@codesourcery.com>
15748
15749         * configure.ac: Check for .gnu_attribute on MIPS.
15750         * configure, config.in: Regenerate.
15751         * config/mips/mips.c (mips_file_start): If supported, output
15752         attribute for floating-point ABI.
15753
15754 2007-06-30  Uros Bizjak  <ubizjak@gmail.com>
15755
15756         PR target/32433
15757         * config/i386/i386.md (ffssi2): Expand as ffs_cmove for TARGET_CMOVE.
15758         (ffs_cmove): New expander to expand using ctz pattern.
15759         (*ffs_cmove): Remove pattern.
15760         (*ffs_no_cmove): Enable only for !TARGET_CMOVE.
15761         (ffsdi2): Expand using ctz pattern.
15762         (*ffs_rex64): Remove pattern.
15763
15764 2007-06-30  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
15765
15766         PR rtl-optimization/32296
15767         * pa.md (return): Delete pattern.
15768         (return_internal): Remove "(const_int 1)" from pattern.
15769         (epilogue): Use return_internal pattern for trivial returns.
15770         * pa-protos.h (hppa_can_use_return_insn_p): Delete declaration.
15771         * pa.c (hppa_can_use_return_insn_p): Delete function.  Include "df.h".
15772
15773 2007-06-30  Daniel Berlin  <dberlin@dberlin.org>
15774
15775         * tree-ssa-pre.c (is_exception_related): New function
15776         (can_value_number_operation): Use it.
15777
15778 2007-06-30  Daniel Berlin  <dberlin@dberlin.org>
15779         
15780         Fix PR tree-optimization/32540
15781         Fix PR tree-optimization/31651
15782
15783         * tree-ssa-sccvn.c: New file.
15784
15785         * tree-ssa-sccvn.h: Ditto.
15786         
15787         * tree-vn.c: Include tree-ssa-sccvn.h
15788         (val_expr_paid_d): Removed.
15789         (value_table): Ditto.
15790         (vn_compute): Ditto.
15791         (val_expr_pair_hash): Ditto.
15792         (val_expr_pair_expr_eq): Ditto.
15793         (copy_vuses_from_stmt): Ditto.
15794         (vn_delete): Ditto.
15795         (vn_init): Ditto.
15796         (shared_vuses_from_stmt): Ditto.
15797         (print_creation_to_file): Moved up.
15798         (sort_vuses): Ditto.
15799         (sort_vuses_heap): Ditto.
15800         (set_value_handle): Make non-static.
15801         (make_value_handle): Ditto.
15802         (vn_add): Rewritten to use sccvn lookups.
15803         (vn_add_with_vuses): Ditto.
15804         (vn_lookup): Ditto (and second argument removed).
15805         (vn_lookup_with_vuses): Ditto.
15806         (vn_lookup_or_add): Ditto (and second argument removed);
15807         (vn_lookup_or_add_with_vuses): Ditto.
15808         (vn_lookup_with_stmt): New.
15809         (vn_lookup_or_add_with_stmt): Ditto.
15810         (create_value_handle_for_expr): Ditto.
15811
15812         * tree-ssa-pre.c: Include tree-ssa-sccvn.h.
15813         (seen_during_translate): New function.
15814         (phi_trans_lookup): Use iterative_hash_expr, not vn_compute.
15815         (phi_trans_add): Ditto.
15816         (constant_expr_p): FIELD_DECL is always constant.
15817         (phi_translate_1): Renamed from phi_translate, add seen bitmap.
15818         Use constant_expr_p.
15819         Avoid infinite recursion on mutually valued expressions.
15820         Change callers of vn_lookup_or_add.
15821         (phi_translate): New function.
15822         (compute_antic_safe): Allow phi nodes.
15823         (create_component_ref_by_pieces): Update for FIELD_DECL change.
15824         (find_or_generate_expression): Rewrite slightly.
15825         (create_expression_by_pieces): Updated for vn_lookup_or_add
15826         change.
15827         Update VN_INFO for new names.
15828         (insert_into_preds_of_block): Update for new names.
15829         (add_to_exp_gen): New function.
15830         (add_to_sets): Use vn_lookup_or_add_with_stmt.
15831         (find_existing_value_expr): Rewrite to changed vn_lookup.
15832         (create_value_expr_from): Ditto, and use add_to_exp_gen.
15833         (try_look_through_load): Removed.
15834         (try_combine_conversion): Ditto.
15835         (get_sccvn_value): New function.
15836         (make_values_for_phi): Ditto.
15837         (make_values_for_stmt): Ditto.
15838         (compute_avail): Rewritten for vn_lookup_or_add changes and to use
15839         SCCVN.
15840         (init_pre): Update for SCCVN changes.
15841         (fini_pre): Ditto.
15842         (execute_pre): Ditto.
15843
15844         * tree-flow.h (make_value_handle): Declare.
15845         (set_value_handle): Ditto.
15846         (sort_vuses_heap): Ditto.
15847         (vn_lookup_or_add_with_stmt): Ditto.
15848         (vn_lookup_with_stmt): Ditto.
15849         (vn_compute): Remove.
15850         (vn_init): Ditto.
15851         (vn_delete): Ditto.
15852         (vn_lookup): Update arguments.
15853
15854         * Makefile.in (tree-ssa-pre.o): Add tree-ssa-sccvn.h
15855         (tree-vn.o): Ditto.
15856         (tree-ssa-sccvn.o): New.
15857         (OBJS-common): Add tree-ssa-sccvn.o
15858         
15859 2007-06-30  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
15860
15861         PR c/4076
15862         * c-typeck.c (build_external_ref): Don't mark as used if called
15863         from itself.
15864         * calls.c (rtx_for_function_call): Likewise.
15865         
15866 2007-06-30  Richard Sandiford  <richard@codesourcery.com>
15867
15868         Revert:
15869
15870         2007-06-27  Richard Sandiford  <richard@codesourcery.com>
15871
15872         * dce.c (deletable_insn_p_1): New function, split out from...
15873         (deletable_insn_p): ...here.  Only treat bare USEs and CLOBBERs
15874         specially, not those inside PARALLELs.  Remove BODY argument
15875         and adjust recursive call accordingly.
15876         (prescan_insns_for_dce): Update call to delete_insn_p.
15877
15878 2007-06-30  Rask Ingemann Lambertsen  <rask@sygehus.dk>
15879
15880         * combine.c (combine_validate_cost): New parameter NEWOTHERPAT.
15881         (try_combine): Move potential calls to undo_all() so they happen
15882         before we commit to using the combined insns.
15883
15884 2007-06-30  Jan Hubicka  <jh@suse.cz>
15885
15886         * loop-unroll.c (unroll_loop_runtime_iterations): Unshare newly emit
15887         code.
15888
15889 2007-06-30  Thomas Neumann  <tneumann@users.sourceforge.net>
15890
15891         * ipa.c (cgraph_postorder): Cast according to the coding conventions.
15892         (cgraph_remove_unreachable_nodes): Likewise.
15893         * ipa-cp.c (ipcp_propagate_stage): Use BOTTOM instead of integer 0.
15894         * ipa-inline.c (update_caller_keys): Cast according to the coding
15895         conventions.
15896         (cgraph_decide_recursive_inlining): Likewise.
15897         (cgraph_decide_inlining_of_small_function): Likewise.
15898         (try_inline): Likewise.
15899         (cgraph_decide_inlining_incrementally): Likewise.
15900         * ipa-pure-const.c (get_function_state): Likewise.
15901         (scan_function): Likewise.
15902         (analyze_function): Likewise.
15903         (static_execute): Likewise.
15904         * ipa-reference.c (scan_for_static_refs): Likewise.
15905         (merge_callee_local_info): Likewise.
15906         (analyze_function): Use type safe memory macros.
15907         (static_execute): Likewise. Cast according to the coding conventions.
15908         * ipa-type-escape.c (scan_for_regs): Cast according to the coding
15909         conventions.
15910         * ipa-utils.c (searchc): Likewise. Avoid using C++ keywords as variable
15911         names.
15912         (ipa_utils_reduced_inorder): Likewise. Use type safe memory macros.
15913         * ipa-utils.h (struct ipa_dfa_info): Avoid using C++ keywords as
15914         variable names.
15915
15916 2007-06-29  Andrew Pinski  <andrew_pinski@playstation.sony.com>
15917
15918         PR middle-end/30024
15919         * emit-rtl.c (init_emit_once): Intilize const_tiny_rtx[0]
15920         for complex modes (both int and real).
15921
15922 2007-06-29  Jan Hubicka  <jh@suse.cz>
15923
15924         * cse.c: Rever accidentally comitted TODO_verify_rtl_sharing change.
15925
15926 2007-06-29  Jan Hubicka  <jh@suse.cz>
15927
15928         PR middle-end/32372
15929         * cse.c (cse_insn): Avoid invalid sharing in between register note and
15930         the insn pattern.
15931
15932 2007-06-29  Anatoly Sokolov <aesok@post.ru>
15933
15934         PR target/32335
15935         * config/avr/avr.c: Include dataflow header file.
15936         (expand_prologue): Adjust for prologue insn change.
15937         * config/avr/avr.md (call_prologue_saves): Only modify REG_SP once
15938         inside a insn.
15939
15940 2007-06-29  Richard Guenther  <rguenther@suse.de>
15941
15942         PR middle-end/32493
15943         * gimplify.c (gimplify_call_expr): Ignore variable argument parts
15944         during type verification.
15945
15946 2007-06-29  Jan Hubicka  <jh@suse.cz>
15947
15948         * recog.c (validate_change_rtx_1): Unshare TO argument.
15949
15950 2007-06-29  Uros Bizjak  <ubizjak@gmail.com>
15951
15952         PR tree-optimization/24659
15953         * tree-vect-transform.c (vectorizable_call): Handle
15954         (nunits_in == nunits_out / 2) and (nunits_out == nunits_in / 2) cases.
15955
15956         * config/i386/sse.md (vec_pack_sfix_v2df): New expander.
15957         * config/i386/i386.c (enum ix86_builtins)
15958         [IX86_BUILTIN_VEC_PACK_SFIX]: New constant.
15959         (struct bdesc_2arg) [__builtin_ia32_vec_pack_sfix]: New builtin
15960         description.
15961         (ix86_init_mmx_sse_builtins): Define all builtins with 2 arguments as
15962         const using def_builtin_const.
15963         (ix86_expand_binop_builtin): Remove bogus assert() that insn wants
15964         input operands in the same modes as the result.
15965         (ix86_builtin_vectorized_function): Handle BUILT_IN_LRINT.
15966
15967 2007-06-29  Richard Sandiford  <rsandifo@nildram.co.uk>
15968
15969         * df-problems.c (df_set_unused_notes_for_mw): Fix formatting.
15970         (df_set_dead_notes_for_mw): Likewise.
15971
15972 2007-06-29  Eric Botcazou  <ebotcazou@adacore.com>
15973
15974         * c-common.c (pointer_int_sum): Do the negation in sizetype.
15975
15976 2007-06-28  DJ Delorie  <dj@redhat.com>
15977
15978         * config/m32c/m32c.h (OVERRIDE_OPTIONS): Omit unneeded semicolon.
15979
15980 2007-06-28  Geoffrey Keating  <geoffk@apple.com>
15981
15982         * doc/invoke.texi (C++ Dialect Options): Document
15983         fvisibility-ms-compat.
15984         * c.opt (fvisibility-ms-compat): New.
15985
15986 2007-06-28  Andrew Pinski  <andrew_pinski@playstation.sony.com>
15987
15988         PR tree-opt/32417
15989         * tree-affine.c (aff_combination_add_elt): Handle
15990         pointer addition specially.
15991
15992 2007-06-28  Jakub Jelinek  <jakub@redhat.com>
15993
15994         * config/rs6000/rs6000.c (rs6000_function_ok_for_sibcall): Ensure
15995         decl is non-external for AIX ABI.
15996
15997 2007-06-28  David Edelsohn  <edelsohn@gnu.org>
15998
15999         * config/rs6000/predicates.md (current_file_function_operand):
16000         Ensure the symbol is non-external for AIX ABI.
16001
16002 2007-06-28  Nick Clifton  <nickc@redhat.com>
16003
16004         * common.opt (fipa-matrix-reorg): Add Optimization attribute.
16005         (fdce, fdse, fpredictive-commoning): Likewise.
16006
16007 2007-06-28 Francois-Xavier Coudert <fxcoudert@gcc.gnu.org>
16008
16009         PR other/31400
16010         * gcc.c (process_command): Recognize the new -static-libgfortran
16011         option.
16012
16013 2007-06-27  Rask Ingemann Lambertsen  <rask@sygehus.dk>
16014
16015         PR target/32418
16016         * config/m32c/m32c.c (m32c_eh_return_stackadj_rtx): Dataflow fix:
16017         Use a call clobbered hard reg instead of a pseudo reg.
16018
16019 2007-06-27  Kaz Kojima  <kkojima@gcc.gnu.org>
16020
16021         * config/sh/sh.md (load_gbr): Use correct operand constraint.
16022
16023 2007-06-27  Kaz Kojima  <kkojima@gcc.gnu.org>
16024
16025         PR target/32479
16026         * config/sh/sh.md (udivsi3): Don't wrap the sequence with
16027         REG_LIBCALL and REG_RETVAL notes.
16028         (divsi3, mulsi3): Likewise.
16029         (mulhisi3): Likewise.  Use emit_libcall_block.
16030         (umulhisi3, smulsi3_highpart, umulsi3_highpart_i): Likewise.
16031
16032 2007-06-27  Seongbae Park  <seongbae.park@gmail.com>
16033
16034         PR rtl-optimization/32481
16035         * combine.c (adjust_for_new_dest): Rescan the changed insn.
16036
16037 2007-06-27  Richard Sandiford  <richard@codesourcery.com>
16038
16039         * dce.c (deletable_insn_p_1): New function, split out from...
16040         (deletable_insn_p): ...here.  Only treat bare USEs and CLOBBERs
16041         specially, not those inside PARALLELs.  Remove BODY argument
16042         and adjust recursive call accordingly.
16043         (prescan_insns_for_dce): Update call to delete_insn_p.
16044
16045 2007-06-27  Richard Guenther  <rguenther@suse.de>
16046
16047         PR middle-end/32492
16048         * tree.h (fold_convertible_p): Declare.
16049         * fold-const.c (fold_convertible_p): New function.
16050         * gimplify.c (gimplify_call_expr): Use fold_convertible_p
16051         instead of lang_hooks.types_compatible_p.
16052
16053 2007-06-26  Jan Hubicka  <jh@suse.cz>
16054
16055         * fwprop.c (try_fwprop_subst): Use validate_unshare_change.
16056         * postreload.c (reload_cse_simplify_set): Instead of copying the rtx
16057         early use validate_unshare_change.
16058         (reload_combine): Likewise.
16059         * recog.c (change_t): New field unshare.
16060         (validate_change_1): Rename from validate_change; add argument unshare.
16061         (validate_change): Turn into wrapper of validate_change_1; update
16062         prototype for bools.
16063         (validate_unshare_change): New.
16064         (confirm_change_group): Unshare changes if asked for; avoid unnecesary
16065         calls of df_insn_rescan.
16066         * recog.h (validate_change): Replace ints by bools.
16067         (validate_unshare_change): Declare.
16068
16069 2007-06-26  Kenneth Zadeck <zadeck@naturalbridge.com>
16070
16071         * tree.def (VEC_WIDEN_MULT_LO_EXPR): Corrected string name.
16072         
16073 2007-06-26  Steve Ellcey  <sje@cup.hp.com>
16074
16075         * builtins.c (expand_builtin_next_arg): Change Pmode to ptr_mode.
16076
16077 2007-06-25  Jan Hubicka  <jh@suse.cz>
16078
16079         * ipa-inline.c (cgraph_mark_inline): Assert that we never inline
16080         uninlinable call.
16081         (cgraph_decide_inlining_of_small_function, cgraph_decide_inlining,
16082         cgraph_decide_inlining_incrementally): Move uninlinability checks to
16083         places other call site specific checks are performed.
16084
16085 2007-06-25  Andrew Pinski  <andrew_pinski@playstation.sony.com>
16086
16087         PR tree-opt/32421
16088         * tree-vect-transform.c (vectorizable_operation): Convert
16089         POINTER_PLUS_EXPR over to PLUS_EXPR.
16090
16091 2007-06-25  Chao-ying Fu  <fu@mips.com>
16092
16093         * doc/rtl.texi (Machine Modes): Document QQ, HQ, SQ, DQ, TQ,
16094         UQQ, UHQ, USQ, UDQ, UTQ, HA, SA, DA, TA, UHA, USA, UDA, and UTAmodes.
16095         Document MODE_FRACT, MODE_UFRACT, MODE_ACCUM, MODE_UACCUM.
16096         Document GET_MODE_IBIT, and GET_MODE_FBIT.
16097
16098         * machmode.h (VECTOR_MODE_P): Test MODE_VECTOR_FRACT,
16099         MODE_VECTOR_UFRACT, MODE_VECTOR_ACCUM, MODE_VECTOR_UACCUM.
16100         (SCALAR_FRACT_MODE_P, SCALAR_UFRACT_MODE_P, ALL_SCALAR_FRACT_MODE_P,
16101         SCALAR_ACCUM_MODE_P, SCALAR_UACCUM_MODE_P, ALL_SCALAR_ACCUM_MODE_P,
16102         SIGNED_SCALAR_FIXED_POINT_MODE_P, UNSIGNED_SCALAR_FIXED_POINT_MODE_P,
16103         ALL_SCALAR_FIXED_POINT_MODE_P, FRACT_MODE_P, UFRACT_MODE_P,
16104         ALL_FRACT_MODE_P, ACCUM_MODE_P, UACCUM_MODE_P, ALL_ACCUM_MODE_P,
16105         SIGNED_FIXED_POINT_MODE_P, UNSIGNED_FIXED_POINT_MODE_P,
16106         ALL_FIXED_POINT_MODE_P): New define.
16107         (CLASS_HAS_WIDER_MODES_P): Test MODE_FRACT, MODE_UFRACT, MODE_ACCUM,
16108         MODE_UACCUM.
16109         (GET_MODE_IBIT, GET_MODE_FBIT): New define.
16110
16111         * mode-classes.def (MODE_FRACT, MODE_UFRACT, MODE_ACCUM, MODE_UACCUM,
16112         MODE_VECTOR_FRACT, MODE_VECTOR_UFRACT, MODE_VECTOR_ACCUM,
16113         MODE_VECTOR_UACCUM): New mode classes.
16114
16115         * machmode.def: Document FRACT_MODE, UFRACT_MODE, ACCUM_MODE,
16116         UACCUM_MODE, ADJUST_IBIT, and ADJUST_FBIT.
16117         Add QQ, HQ, SQ, DQ, TQ, UQQ, UHQ, USQ, UDQ, UTQ, HA, SA, DA, TA, UHA,
16118         USA, UDA, and UTA.
16119
16120         * genmodes.c (struct mode_data): Add ibit and fbit fields.
16121         (blank_mode): Initialize ibit and fbit.
16122         (adj_ibit, adj_fbit): New to adjust ibit and fbit.
16123         (vector_class): Handle MODE_FRACT, MODE_UFRACT, MODE_ACCUM,
16124         MODE_UACCUM.
16125         (new_adjust): Change required_class to required_class_from and
16126         required_class_to for testing within a range.
16127         (complete_mode): Handle MODE_FRACT, MODE_UFRACT, MODE_ACCUM,
16128         MODE_UACCUM, MODE_VECTOR_FRACT, MODE_VECTOR_UFRACT, MODE_VECTOR_ACCUM,
16129         MODE_VECTOR_UACCUM.
16130         (FRACT_MODE, UFRACT_MODE, ACCUM_MODE, UACCUM_MODE): New define.
16131         (make_fixed_point_mode): New.
16132         (_ADD_ADJUST): Change C to C1 and C2.
16133         (ADJUST_BYTESIZE, ADJUST_ALIGNMENT, ADJUST_FLOAT_FORMAT): Change to
16134         use a range for machine classes.
16135         (ADJUST_IBIT, ADJUST_FBIT): New.
16136         (emit_insn_modes_h): Output defines of CONST_MODE_IBIT and
16137         CONST_MODE_FBIT.
16138         (emit_mode_adjustments): Handle MODE_VECTOR_FRACT, MODE_VECTOR_UFRACT,
16139         MODE_VECTOR_ACCUM, MODE_VECTOR_UACCUM.
16140         Emit adjustment for ibit and fbit.
16141         (emit_mode_ibit, emit_mode_fbit): New.
16142         (emit_insn_modes_c): Add emit_mode_ibit and emit_mode_fbit.
16143
16144 2007-06-25  Nathan Froyd  <froydnj@codesourcery.com>
16145
16146         * config/rs6000/spe.md (*frob_ti_tf_2): Specify an input_operand
16147         as the source of the set.
16148
16149 2007-06-25  Roman Zippel <zippel@linux-m68k.org>
16150
16151         * config/m68k/m68k.h (DATA_REGNO_P, ADDRESS_REGNO_P, INT_REGNO_P,
16152         FP_REGNO_P): Use IN_RANGE.
16153         (REGNO_OK_FOR_DATA_P, REGNO_OK_FOR_FP_P): Remove.
16154         (REGNO_OK_FOR_INDEX_NONSTRICT_P, REGNO_OK_FOR_BASE_NONSTRICT_P): New.
16155         (DATA_REG_P): Use DATA_REGNO_P.
16156         (FP_REG_P): Use FP_REGNO_P.
16157         (ADDRESS_REG_P): Use ADDRESS_REGNO_P.
16158         * config/m68k/m68k.c (m68k_legitimate_base_reg_p): Use
16159         REGNO_OK_FOR_INDEX_NONSTRICT_P, REGNO_OK_FOR_BASE_NONSTRICT_P.
16160
16161 2007-06-24  Jan Hubicka  <jh@suse.cz>
16162
16163         PR middle-end/30563
16164         * cgraphunit.c (cgraph_analyze_function): Fix ordering problem.
16165
16166 2007-06-24  Sebastian Pop  <sebpop@gmail.com>
16167
16168         PR middle-end/32461
16169         * fold-const.c (fold_binary): Strip nops of operand 0
16170         of BIT_NOT_EXPR before calling operand_equal_p.
16171         * testsuite/gcc.dg/tree-ssa/pr32461-1.c: New.
16172         * testsuite/gcc.dg/tree-ssa/pr32461-2.c: New.
16173
16174 2007-06-23  Mark Mitchell  <mark@codesourcery.com>
16175
16176         * doc/extend.texi: Document that dllimport and dllexport imply
16177         default visibility.
16178         * tree.c (handle_dll_attribute): Set DECL_VISIBILITY on the
16179         imported or exported declaration, including type declarations.
16180         * c-common.c (handle_visibility_attribute): Check for conflicts
16181         with dllimport/dllexport.
16182         (c_determine_visibility): Handle dllimport/dllexport as an
16183         explicit visibility atttribute.
16184
16185 2007-06-23  Richard Guenther  <rguenther@suse.de>
16186
16187         PR tree-optimization/16876
16188         PR middle-end/29478
16189         * tree.h (CALL_CANNOT_INLINE_P): New macro to access static_flag
16190         for CALL_EXPRs.
16191         * tree-inline.c (initialize_inlined_parameters): Do not call
16192         lang_hooks.tree_inlining.convert_parm_for_inlining.
16193         * cgraphbuild.c (initialize_inline_failed): Set inline failed
16194         reason for mismatched types.
16195         * gimplify.c (gimplify_call_expr): Verify the call expression
16196         arguments match the called function type signature.  Otherwise
16197         mark the call expression to be not considered for inlining
16198         using CALL_CANNOT_INLINE_P flag.
16199         * ipa-inline.c (cgraph_mark_inline): Honor CALL_CANNOT_INLINE_P on the
16200         edges call expression.
16201         (cgraph_decide_inlining_of_small_function): Likewise.
16202         (cgraph_decide_inlining): Likewise.
16203         * c-objc-common.h (LANG_HOOKS_TREE_INLINING_CONVERT_PARM_FOR_INLINING):
16204         Remove define.
16205         * c-tree.h (c_convert_parm_for_inlining): Remove declaration.
16206         * c-typeck.c (c_convert_parm_for_inlining): Remove.
16207         * langhooks-def.h (lhd_tree_inlining_convert_parm_for_inlining):
16208         Remove declaration.
16209         (LANG_HOOKS_TREE_INLINING_CONVERT_PARM_FOR_INLINING): Remove define.
16210         * langhooks.c (lhd_tree_inlining_convert_parm_for_inlining):
16211         Remove.
16212         * langhooks.h (struct lang_hooks_for_tree_inlining): Remove
16213         convert_parm_for_inlining member.
16214
16215 2007-06-23  Richard Earnshaw  <rearnsha@arm.com>
16216
16217         PR target/31152
16218         * arm.md (negscc): Match the correct operand for optimized LT0 test.
16219         Remove optimization for GT.
16220
16221 2007-06-23  Kenneth Zadeck <zadeck@naturalbridge.com>
16222
16223         PR middle-end/32437
16224         * dce.c (deletable_insn_p): Add extra parameter and recurse if insn
16225         is a PARALLEL.
16226         (prescan_insns_for_dce): Add extra parameter.
16227         
16228 2007-06-23  Jan Hubicka  <jh@suse.cz>
16229
16230         PR middle-end/31541
16231         * gimplify.c (mark_addressable): New function.
16232         (gimplify_modify_expr_rhs, gimplify_addr_expr, gimplify_expr): Use it.
16233
16234 2007-06-22  Uros Bizjak  <ubizjak@gmail.com>
16235
16236         PR middle-end/32374
16237         * expr.c (store_constructor): Do not clobber non-zeroed memory. 
16238
16239 2007-06-22  Uros Bizjak  <ubizjak@gmail.com>
16240
16241         PR target/32413
16242         * config/i386/i386.c (ix86_register_move_cost): Rise the cost of
16243         moves between MMX/SSE registers to at least 8 units to prevent
16244         ICE caused by non-tieable SI/HI/QImodes in SSE registers. 
16245
16246 2007-06-22  Uros Bizjak  <ubizjak@gmail.com>
16247
16248         * config/i386/i386.c (override_options): Correct x86_sahf
16249         setting condition.
16250
16251 2007-06-21  David Daney  <ddaney@avtrex.com>
16252
16253         PR target/32406
16254         * config/mips/mips.md (define_constants): Rename UNSPEC_EH_RECEIVER
16255         to UNSPEC_NONLOCAL_GOTO_RECEIVER globally.
16256         (exception_receiver): Renamed to ...
16257         (nonlocal_goto_receiver): ... this.
16258
16259 2007-06-22  Roman Zippel <zippel@linux-m68k.org>
16260
16261         * df-scan.c (df_read_modify_subreg_p): Use REGMODE_NATURAL_SIZE.
16262         (df_def_record_1): Set (DF_REF_READ_WRITE | DF_REF_PARTIAL) for
16263         partial register accesses.
16264
16265 2007-06-21  Adam Nemet  <anemet@caviumnetworks.com>
16266
16267         * fold-const.c (debug_fold_checksum): Move it under
16268         ENABLE_FOLD_CHECKING.
16269
16270 2007-06-21  Sebastian Pop  <sebpop@gmail.com>
16271
16272         PR middle-end/20623
16273         * tree.h (debug_fold_checksum): Declared.
16274         * fold-const.c (build_fold_addr_expr_with_type_1): New.
16275         (build_fold_addr_expr_with_type, build_fold_addr_expr): Use 
16276         build_fold_addr_expr_with_type_1.
16277         (fold_addr_expr, debug_fold_checksum): New.
16278         (fold_checksum_tree): Don't fold TREE_CHAIN of an SSA_NAME.
16279         (fold_unary, fold_comparison, split_address_to_core_and_offset):
16280         Use fold_addr_expr.
16281         
16282 2007-06-21  Sebastian Pop  <sebpop@gmail.com>
16283
16284         PR tree-optimization/19590
16285         * tree-vrp.c (adjust_range_with_scev): Set the range when the result
16286         of scev is a constant.
16287
16288 2007-06-21  Kenneth Zadeck <zadeck@naturalbridge.com>
16289
16290         * df-problems.c (df_note_bb_compute): Made computation of live
16291         info consistent with df_lr.
16292
16293 2007-06-21  Richard Guenther  <rguenther@suse.de>
16294
16295         PR tree-optimization/32453
16296         * tree-vrp.c (extract_range_from_assert): Build POINTER_PLUS_EXPR
16297         for pointer anti-range.
16298
16299 2007-06-21  H.J. Lu  <hongjiu.lu@intel.com>
16300
16301         * config/i386/i386.c (processor_target_table): Increase maximum
16302         skip from 7 byte to 10 byte for Pentium Pro, Core 2 Duo and
16303         default 64bit.
16304
16305         * config/i386/linux.h (ASM_OUTPUT_MAX_SKIP_ALIGN): Ensure 8
16306         byte alignment if > 8 byte alignment is preferred.
16307         * config/i386/x86-64.h (ASM_OUTPUT_MAX_SKIP_ALIGN): Likewise.
16308
16309 2007-06-21  Jakub Jelinek  <jakub@redhat.com>
16310
16311         PR tree-optimization/31866
16312         * tree-ssa-coalesce.c (create_outofssa_var_map): Do nothing
16313         if ASM_EXPR's input is not a SSA_NAME.
16314
16315         PR middle-end/32362
16316         * omp-low.c (lookup_decl_in_outer_ctx): Don't ICE if t is NULL,
16317         but decl is a global var, instead return decl.
16318         * gimplify.c (gimplify_adjust_omp_clauses_1): Add shared clauses
16319         even for is_global_var decls, if they are private in some outer
16320         context.
16321
16322 2007-06-21  Richard Guenther  <rguenther@suse.de>
16323
16324         PR tree-optimization/32451
16325         * tree-ssa-threadupdate.c (thread_single_edge): Fixup edge flags.
16326
16327 2007-06-21  Christian Bruel  <christian.bruel@st.com>
16328
16329         * config/sh/sh-protos.h (sh_loads_bankedreg_p): Declare.
16330         * config/sh/sh.c (sh_loads_bankedreg_p): New function.
16331         (push_regs): Changed saving order or banked registers.
16332         (sh_expand_epilogue): Likewise.
16333         * config/sh/sh.h (BANKED_REGISTER_P): New macro.
16334         (FIRST_BANKED_REG): Likewise.
16335         (LAST_BANKED_REG): Likewise.
16336         * config/sh/sh.md (banked) New attribute.
16337         (in_delay_slot): Check banked attribute.
16338         
16339 2007-06-20  Sebastian Pop  <sebpop@gmail.com>
16340
16341         PR tree-optimization/32075
16342         * tree-data-ref.c (subscript_dependence_tester_1, 
16343         analyze_miv_subscript, analyze_overlapping_iterations,
16344         add_distance_for_zero_overlaps, build_classic_dist_vector,
16345         subscript_dependence_tester_1, analyze_overlapping_iterations,
16346         subscript_dependence_tester, access_functions_are_affine_or_constant_p,
16347         compute_affine_dependence, compute_all_dependences): Pass loop_nest 
16348         to evolution_function_is_affine_multivariate_p.
16349
16350 2007-06-20  Eric Botcazou  <ebotcazou@libertysurf.fr>
16351
16352         * df-scan.c (df_get_call_refs): Be prepared for MEMs inside CLOBBERs.
16353
16354 2007-06-20  Rask Ingemann Lambertsen  <rask@sygehus.dk>
16355
16356         PR target/32335
16357         * config/m32c/m32c.c (m32c_emit_epilogue): Use new HImode epilogue
16358         for TARGET_A16.
16359         * config/m32c/prologue.md (epilogue_exitd_16): New.
16360         (epilogue_reit_16): New.
16361         (epilogue_exitd): Rename to epilogue_exitd_24.
16362         (epilogue_reit): Rename to epilogue_reit_24.
16363
16364 2007-06-20  Seongbae Park  <seongbae.park@gmail.com>
16365             Maxim Kuvyrkov  <mkuvyrkov@ispras.ru>
16366
16367         * dbgcnt.def (global_alloc_at_func, global_alloc_at_reg):
16368         New counters.
16369         * haifa-sched.c (queue_to_ready): Don't requeue next insn
16370         if dbg_cnt (sched_insn) reaches the limit.
16371         (choose_ready): New parameter INSN_PTR and new return value.
16372         (schedule_block): Handle dbg_cnt (sched_insn). Handle
16373         the new return value from choose_ready.
16374         * global.c (global_aloc): New dbgcnt global_alloc_at_reg.
16375         (rest_of_handle_global_alloc): New global_alloc_at_func.
16376
16377 2007-06-20  Adam Nemet  <anemet@caviumnetworks.com>
16378
16379         PR tree-optimization/25737
16380         * tree.h (struct tree_struct_field_tag): Add new field alias_set.
16381         (SFT_NONADDRESSABLE_P, SFT_ALIAS_SET): New macros.
16382         * tree-flow.h (struct fieldoff): Add new field alias_set.
16383         * tree-ssa-structalias.c (push_fields_onto_fieldstack): Add new
16384         argument addressable_type.  Set alias_set of fieldoff.
16385         * tree-ssa-alias.c (create_sft): Add new argument alias_set.
16386         (create_overlap_variables_for): Pass alias_set from fieldoff to
16387         create_sft.
16388         * alias.c (get_alias_set): Use alias_set from SFT if set.
16389
16390 2007-06-20  Hui-May Chang  <hm.chang@apple.com>
16391
16392         * config/i386/darwin.h (ASM_OUTPUT_COMMON): Print the size
16393         of a variable as an unsigned HOST_WIDE_INT integer.
16394
16395 2007-06-20  Zdenek Dvorak  <dvorakz@suse.cz>
16396
16397         PR rtl-optimization/32405
16398         * loop-iv.c (iv_get_reaching_def): Fail for partial defs.
16399
16400 2007-06-20  Jakub Jelinek  <jakub@redhat.com>
16401
16402         * Makefile.in (omega.o): Depend on $(DIAGNOSTIC_H).
16403
16404         PR middle-end/31959
16405         * builtins.c: Include diagnostic.h.
16406         (expand_builtin_expect): Make gcc_assert more permissive.
16407         * Makefile.in (builtins.o): Depend on $(DIAGNOSTIC_H).
16408
16409         PR inline-asm/32109
16410         * gimplify.c (gimplify_asm_expr): Issue error if type is addressable
16411         and !allows_mem.
16412
16413         PR middle-end/32285
16414         * calls.c (precompute_arguments): Also precompute CALL_EXPR arguments
16415         if ACCUMULATE_OUTGOING_ARGS.
16416
16417 2007-06-19  Rask Ingemann Lambertsen  <rask@sygehus.dk>
16418
16419         * config/m68hc11/m68hc11.c: Include dataflow header file.
16420         (m68hc11_reorg): Port to dataflow.
16421
16422 2007-06-19  Kenneth Zadeck <zadeck@naturalbridge.com>
16423
16424         * df.h (DF_FIRST_OPTIONAL_PROBLEM): Removed.
16425         (struct df_problem.free_blocks_on_set_blocks): New field.
16426         (struct dataflow.optional_p): New field.
16427         (df_bb_regno_last_use_find, df_insn_regno_def_p): Removed.
16428         (df_live_set_all_dirty): New function.
16429         * df-scan.c (df_scan_alloc): Initialize optional_p.
16430         (problem_SCAN): Initialize free_blocks_on_set_blocks.
16431         * df-core.c (df_set_blocks): Removed use of
16432         DF_FIRST_OPTIONAL_PROBLEM.  Now uses
16433         df_problem.free_blocks_on_set_blocks to determine which blocks are
16434         recycled.
16435         (df_remove_problem): Removed use of DF_FIRST_OPTIONAL_PROBLEM.
16436         (df_finish_pass): Removed use of DF_FIRST_OPTIONAL_PROBLEM.  Now
16437         uses dataflow.optional_p to determine if problem should be
16438         deleted.
16439         (rest_of_handle_df_initialize): Only start live problem if 
16440         -02 or above.
16441         (df_bb_regno_last_use_find, df_insn_regno_def_p): Removed.
16442         * df-problems.c (df_ru_alloc, df_rd_alloc, df_lr_alloc,
16443         df_live_alloc, df_urec_alloc, df_note_alloc): set optional_p.
16444         (problem_RU, problem_RD, problem_LR, problem_UREC, problem_CHAIN,
16445         problem_NOTE): Initialize free_blocks_on_set_blocks.
16446         (df_lr_bb_local_compute): Recompute luids if df_live problem is
16447         not active.
16448         (df_live_set_all_dirty, df_note_alloc): New function.
16449         * regrename.c (merge_overlapping_regs): Change DF_LIVE_* to
16450         df_get_live_*.
16451         * sched_ebb.c (compute_jump_reg_dependencies): Ditto.
16452         * postreload.c (reload_combine): Ditto.
16453         * cse.c (cse_extended_basic_block): Ditto.
16454         * regmove.c (mark_flags_life_zones): Ditto.
16455         * rtlfactoring.c (split_blocks_after_seqs, split_pattern_seq,
16456         erase_matching_seqs): Ditto.
16457         * bt-load.c (compute_defs_uses_and_gen): Ditto.
16458         * integrate (allocate_initial_values): Ditto.
16459         * combine.c (reg_dead_at_p): Ditto.
16460         * resource.c (mark_target_live_regs): Ditto.
16461         * sched-rgn.c (check_live_1, update_live_1): Ditto.
16462         * config/sh/sh.c (find_r0_life_regions): Ditto.
16463         * global.c (rest_of_handle_global_alloc): Only add back df_live
16464         for -O > 1.
16465         * local-alloc.c (rest_of_handle_local_alloc): Only remove
16466         df_live for -O > 1.
16467         * ifcvt.c (dead_or_predicable): Change DF_LIVE_* to
16468         df_get_live_*.
16469         (if_convert): Make sure df_live is there at -O == 1.
16470         (pass_if_after_combine): Cleanup flags.
16471         * init-regs.c (initialize_uninitialized_regs): Make sure df_live
16472         is there at -O == 1.
16473         
16474 2007-06-19  Seongbae Park  <seongbae.park@gmail.com>
16475
16476         * config/arm/arm.c (arm_get_frame_offsets): Set
16477         offsets->locals_base to avoid negative stack size.
16478         (thumb1_expand_prologue): Assert on negative stack size.
16479
16480 2007-06-19  Sebastian Pop  <sebpop@gmail.com>
16481
16482         PR tree-optimization/32367
16483         * tree-chrec.h (build_polynomial_chrec): Verify that the left hand side 
16484         of the chrec has no evolution in that loop.
16485         * testsuite/gcc.dg/tree-ssa/pr32367.c: New.
16486
16487 2007-06-19  Bob Wilson  <bob.wilson@acm.org>
16488
16489         * config/xtensa/xtensa.c: Include "df.h".
16490         (xtensa_builtin_saveregs): Use adjust_address instead of
16491         change_address.
16492         (xtensa_va_start): Invoke make_tree with sizetype for
16493         expand_builtin_saveregs and then convert the result to a pointer.
16494         Use POINTER_PLUS_EXPR.  Use size_int instead of build_int_cst.
16495         (xtensa_gimplify_va_arg_expr): Use size_int instead of build_int_cst.
16496         Subtract argument size from index value as integers and then use
16497         POINTER_PLUS_EXPR to add the result to the array address.
16498         
16499 2007-06-19  Rask Ingemann Lambertsen  <rask@sygehus.dk>
16500
16501         PR target/32335
16502         * config/m32c/m32c.c: Include dataflow header file.
16503         (m32c_emit_prologue): Adjust for prologue insn change.
16504         * config/m32c/prologue.md (prologue_enter_16): Only modify SP_REGNO
16505         once inside a PARALLEL. Assume frame size passed in operand 0
16506         includes space to save the fb register.
16507         (prologue_enter_24): Likewise.
16508         (epilogue_exitd): Only modify SP_REGNO once inside a PARALLEL.
16509
16510 2007-06-19  David Daney  <ddaney@avtrex.com
16511
16512         PR target/32313
16513         * config/mips/mips.md (cprestore): Mark $gp as used.
16514
16515 2007-06-19  Rask Ingemann Lambertsen  <rask@sygehus.dk>
16516
16517         PR target/32369
16518         * config/frv/frv.c (frv_ifcvt_modify_tests): Dataflow merge fix.
16519         (frv_ifcvt_modify_insn): Likewise.
16520
16521 2007-06-19  Richard Guenther  <rguenther@suse.de>
16522
16523         * tree-ssa-structalias.c (handle_ptr_arith): Make sure to
16524         only handle positive offsets that fit in a HOST_WIDE_INT.
16525
16526 2007-06-19  Uros Bizjak  <ubizjak@gmail.com>
16527
16528         * config/i386/i386.c (ix86_emit_swsqrtsf): Filter out infinity
16529         result of rsqrt insn for zero input argument to avoid NaN.
16530
16531 2007-06-19  Richard Guenther  <rguenther@suse.de>
16532
16533         PR middle-end/31950
16534         * tree-ssa-alias-warnings.c (ffan_walker): Punt on MTAGs.
16535
16536 2007-06-19  Jakub Jelinek  <jakub@redhat.com>
16537
16538         PR tree-optimization/32353
16539         * tree-ssa-structalias.c (set_uids_in_ptset): Also handle RESULT_DECL.
16540
16541 2007-06-19  Nick Clifton  <nickc@redhat.com>
16542
16543         * config/m32r/linux.h (LIB_SPEC): Always imply -lpthread for -pthread.
16544
16545 2007-06-18  Uros Bizjak  <ubizjak@gmail.com>
16546
16547         PR target/32389
16548         * config/i386/i386.h (enum ix86_stack_slot): Add SLOT_VIRTUAL.
16549         * config/i386/i386.c (assign_386_stack_local): Assert that
16550         SLOT_VIRTUAL is valid only before virtual regs are instantiated.
16551         (ix86_expand_builtin) [IX86_BUILTIN_LDMXCSR, IX86_BUILTIN_STMXCSR]:
16552         Use SLOT_VIRTUAL stack slot instead of SLOT_TEMP.
16553         * config/i386/i386.md (truncdfsf2, truncxf<mode>2): Ditto.
16554
16555 2007-06-18  Steve Ellcey  <sje@cup.hp.com>
16556
16557         * config/ia64/ia64.h (LIBGCC2_TF_CEXT): New.
16558
16559 2007-06-18  Seongbae Park  <seongbae.park@gmail.com>
16560
16561         PR rtl-optimization/32321
16562         * gcse.c (replace_store_insn): Update the note before
16563         calling emit_insn_after.
16564
16565 2007-06-18  Kenneth Zadeck <zadeck@naturalbridge.com>
16566
16567         PR middle-end/32355
16568         * gcse (rest_of_handle_gcse): Add call to df_finish_pass after
16569         cse_main.
16570         * df-problems.c (df_note_bb_compute): Fix dumping info.
16571         
16572 2007-06-18  Kazu Hirata  <kazu@codesourcery.com>
16573
16574         * config/m68k/m68k.c (m68k_expand_epilogue): Emit a return
16575         insn with emit_jump_insn.
16576
16577 2007-06-18  Uros Bizjak  <ubizjak@gmail.com>
16578
16579         PR tree-optimization/32383
16580         * targhooks.c (default_builtin_reciprocal): Add new bool argument.
16581         * targhooks.h (default_builtin_reciprocal): Update prototype.
16582         * target.h (struct gcc_target): Update builtin_reciprocal.
16583         * doc/tm.texi (TARGET_BUILTIN_RECIPROCAL): Update description.
16584         * tree-ssa-math-opts (execute_cse_reciprocals): Skip statements
16585         where arg1 is not SSA_NAME.  Pass true to targetm.builtin_reciprocal
16586         when fndecl is in BUILT_IN_MD class.
16587         (execute_convert_to_rsqrt): Ditto.
16588
16589         * config/i386/i386.c (ix86_builtin_reciprocal): Update for new bool
16590         argument.  Convert IX86_BUILTIN_SQRTPS code only when md_fn is true.
16591         Convert BUILT_IN_SQRTF code only  when md_fn is false.
16592
16593 2007-06-18  Kaz Kojima  <kkojima@gcc.gnu.org>
16594
16595         * bt-load.c (move_btr_def): Fix the order of arguments
16596         to validate_replace_rtx.
16597
16598 2007-06-18  Nathan Sidwell  <nathan@codesourcery.com>
16599
16600         * config/m68k/m68k-devices.def: Add 54450..54455.
16601
16602 2007-06-17  Uros Bizjak  <ubizjak@gmail.com>
16603
16604         PR rtl-optimization/32366
16605         * simplify-rtx.c (simplify_unary_operation_1) [FLOAT_TRUNCATE,
16606         FLOAT_EXTEND]: Prevent non-scalar modes from entering
16607         significand_size.
16608
16609 2007-06-17  Kenneth Zadeck <zadeck@naturalbridge.com>
16610
16611         PR middle-end/32349
16612         * modulo-sched (generate_reg_moves): Added rescan parameter and if
16613         this is true, rescan insn being modified.
16614         (sms_schedule): Added rescan parameter.
16615         (rest_of_handle_sms): Moved freeing of dominance info to before
16616         getting out of cfg_layout.
16617         
16618 2007-06-17  Nathan Sidwell  <nathan@codesourcery.com>
16619
16620         * config/m68k/m68k.h (ISA_HAS_FF1, ISA_HAS_MVS_MVZ): New.
16621         * config/m68k/m68k.md: Use ISA_HAS_FF1 and ISA_HAS_MVS_MVZ as
16622         appropriate.
16623
16624         * config/m68k/m68k.c (all_isas): Remove FL_CF_FPU and
16625         FL_CF_EMAC from the entry for isac.
16626
16627         * config/m68k/predicates.md (const_call_operand): Adjust comment.
16628         (const_sibcall_operand): New.
16629         (sibcall_operand): Use it.
16630         * config/m68k/m68k.c (FL_FOR_isa_c): Not ISA_B compatible.
16631         (m68k_isas): ISAC does not imply FPU or EMAC.
16632         (override_options): Add ISA_C logic for symbolic jump & call.
16633
16634 2007-06-17  Eric Botcazou  <ebotcazou@libertysurf.fr>
16635
16636         * config/sparc/sparc.c (sparc_vis_init_builtins): Retrieve the
16637         return mode from the builtin itself.
16638         (sparc_fold_builtin): Fix cast of zero constant.
16639
16640 2007-06-16  Uros Bizjak  <ubizjak@gmail.com>
16641
16642         * targhooks.c (default_builtin_reciprocal): New default target hook.
16643         * targhooks.h (default_builtin_reciprocal): Add prototype.
16644         * hooks.c (hook_tree_tree_bool_null): Remove hook.
16645         * hooks.h (hook_tree_tree_bool_null): Remove prototype.
16646         * target-def.h (TARGET_BUILTIN_RECIPROCAL): Define as
16647         default_builtin_reciprocal.
16648
16649 2007-06-16  Uros Bizjak  <ubizjak@gmail.com>
16650
16651         PR middle-end/31723
16652         * hooks.c (hook_tree_tree_bool_null): New hook.
16653         * hooks.h (hook_tree_tree_bool_null): Add prototype.
16654         * tree-pass.h (pass_convert_to_rsqrt): Declare.
16655         * passes.c (init_optimization_passes): Add pass_convert_to_rsqrt.
16656         * tree-ssa-math-opts.c (execute_cse_reciprocals): Scan for a/func(b)
16657         and convert it to reciprocal a*rfunc(b).
16658         (execute_convert_to_rsqrt): New function.
16659         (gate_convert_to_rsqrt): New function.
16660         (pass_convert_to_rsqrt): New pass definition.
16661         * target.h (struct gcc_target): Add builtin_reciprocal.
16662         * target-def.h (TARGET_BUILTIN_RECIPROCAL): New define.
16663         (TARGET_INITIALIZER): Initialize builtin_reciprocal with
16664         TARGET_BUILTIN_RECIPROCAL.
16665         * doc/tm.texi (TARGET_BUILTIN_RECIPROCAL): Document.
16666
16667         * config/i386/i386.h (TARGET_RECIP): New define.
16668         * config/i386/i386.md (divsf3): Expand by calling ix86_emit_swdivsf
16669         for TARGET_SSE_MATH and TARGET_RECIP when flag_finite_math_only and
16670         flag_unsafe_math_optimizations are set, flag_trapping_math is unset
16671         and not optimizing for size.
16672         (*rcpsf2_sse): New insn pattern.
16673         (*rsqrtsf2_sse): Ditto.
16674         (rsqrtsf2): New expander.  Expand by calling ix86_emit_swsqrtsf
16675         for TARGET_SSE_MATH and TARGET_RECIP when flag_finite_math_only and
16676         flag_unsafe_math_optimizations are set, flag_trapping_math is unset
16677         and not optimizing for size.
16678         (sqrt<mode>2): Expand SFmode operands by calling ix86_emit_swsqrtsf
16679         for TARGET_SSE_MATH and TARGET_RECIP when flag_finite_math_only and
16680         flag_unsafe_math_optimizations are set, flag_trapping_math is unset
16681         and not optimizing for size.
16682         * config/i386/sse.md (divv4sf): Expand by calling ix86_emit_swdivsf
16683         for TARGET_SSE_MATH and TARGET_RECIP when flag_finite_math_only and
16684         flag_unsafe_math_optimizations are set, flag_trapping_math is unset
16685         and not optimizing for size.
16686         (*sse_rsqrtv4sf2): Do not export.
16687         (sqrtv4sf2): Ditto.
16688         (sse_rsqrtv4sf2): New expander.  Expand by calling ix86_emit_swsqrtsf
16689         for TARGET_SSE_MATH and TARGET_RECIP when flag_finite_math_only and
16690         flag_unsafe_math_optimizations are set, flag_trapping_math is unset
16691         and not optimizing for size.
16692         (sqrtv4sf2): Ditto.
16693         * config/i386/i386.opt (mrecip): New option.
16694         * config/i386/i386-protos.h (ix86_emit_swdivsf): Declare.
16695         (ix86_emit_swsqrtsf): Ditto.
16696         * config/i386/i386.c (IX86_BUILTIN_RSQRTF): New constant.
16697         (ix86_init_mmx_sse_builtins): __builtin_ia32_rsqrtf: New
16698         builtin definition.
16699         (ix86_expand_builtin): Expand IX86_BUILTIN_RSQRTF using
16700         ix86_expand_unop1_builtin.
16701         (ix86_emit_swdivsf): New function.
16702         (ix86_emit_swsqrtsf): Ditto.
16703         (ix86_builtin_reciprocal): New function.
16704         (TARGET_BUILTIN_RECIPROCAL): Use it.
16705         (ix86_vectorize_builtin_conversion): Rename from
16706         ix86_builtin_conversion.
16707         (TARGET_VECTORIZE_BUILTIN_CONVERSION): Use renamed function.
16708         * doc/invoke.texi (Machine Dependent Options): Add -mrecip to
16709         "i386 and x86_64 Options" section.
16710         (Intel 386 and AMD x86_64 Options): Document -mrecip.
16711
16712 2007-06-15  Andrew Pinski <andrew_pinski@playstation.sony.com>
16713             Zdenek Dvorak <dvorakz@suse.cz>
16714             Richard Guenther  <rguenther@suse.de>
16715             Kaz Kojima  <kkojima@gcc.gnu.org>
16716
16717         * tree-vrp.c (compare_values_warnv): Convert val2 to
16718         the type of val1.
16719         (extract_range_from_assert): Create
16720         POINTER_PLUS_EXPR for pointer types.
16721         (extract_range_from_binary_expr): Handle
16722         only POINTER_PLUS_EXPR, MIN_EXPR, and MAX_EXPR
16723         for pointer types.
16724         * doc/c-tree.texi (POINTER_PLUS_EXPR): Document.
16725         * tree-ssa-loop-niter.c (split_to_var_and_offset): Handle
16726         POINTER_PLUS_EXPR as PLUS_EXPR.
16727         (number_of_iterations_lt_to_ne):
16728         For pointer types, use sizetype when
16729         creating MINUS_EXPR/PLUS_EXPRs.
16730         (assert_loop_rolls_lt): For pointer types, use sizetype when
16731         creating MINUS_EXPR/PLUS_EXPRs.
16732         (number_of_iterations_le): Likewise.
16733         (expand_simple_operations): POINTER_PLUS_EXPR are simple also.
16734         (derive_constant_upper_bound): Handle POINTER_PLUS_EXPR just
16735         like PLUS_EXPR and MINUS_EXPR.
16736         * tree-pretty-print.c (dump_generic_node): Handle
16737         POINTER_PLUS_EXPR.
16738         (op_prio): Likewise.
16739         (op_symbol_1): Likewise.
16740         * optabs.c (optab_for_tree_code): Likewise.
16741         * tree-ssa-loop-manip.c (create_iv): Handle pointer base
16742         specially.
16743         * tree-tailcall.c (process_assignment): Mention
16744         POINTER_PLUS_EXPR in a TODO comment.
16745         * tree.c (build2_stat): Assert when trying to use PLUS_EXPR or 
16746         MINUS_EXPR with a pointer. Also assert for POINTER_PLUS_EXPR
16747         not used with a pointer and an integer type.
16748         * tree-scalar-evolution.c (add_to_evolution_1): Convert the
16749         increment using chrec_convert_rhs instead of chrec_convert.
16750         (follow_ssa_edge_in_rhs): Handle POINTER_PLUS_EXPR like
16751         PLUS_EXPR except for the right hand side's type will be
16752         sizetype.
16753         (interpret_rhs_modify_stmt): Handle POINTER_PLUS_EXPR.
16754         (fold_used_pointer_cast): Kill.
16755         (pointer_offset_p): Kill.
16756         (fold_used_pointer): Kill.
16757         (pointer_used_p): Kill.
16758         (analyze_scalar_evolution_1 <case GIMPLE_MODIFY_STMT>): Don't
16759         call fold_used_pointer.
16760         (instantiate_parameters_1): Convert the increment
16761         using chrec_convert_rhs instead of chrec_convert.
16762         Handle POINTER_PLUS_EXPR as PLUS_EXPR.
16763         * builtins.c (get_pointer_alignment): Handle POINTER_PLUS_EXPR
16764         instead of PLUS_EXPR.
16765         (expand_builtin_strcat): Create a POINTER_PLUS_EXPR instead of
16766         PLUS_EXPR for pointers.
16767         (std_gimplify_va_arg_expr): Likewise.
16768         (fold_builtin_memory_op): Likewise.
16769         (fold_builtin_strstr): Likewise.
16770         (fold_builtin_strchr): Likewise.
16771         (fold_builtin_strrchr): Likewise.
16772         (fold_builtin_strpbrk): Likewise.
16773         (expand_builtin_memory_chk): Likewise.
16774         (fold_builtin_memory_chk): Likewise.
16775         (std_expand_builtin_va_start): Use
16776         sizetype for the call to make_tree and then convert
16777         to the pointer type.
16778         (fold_builtin_memchr): Use POINTER_PLUS_EXPR
16779         instead of PLUS_EXPR for adding to a pointer.
16780         (std_gimplify_va_arg_expr): Use fold_build2 for
16781         the creating of POINTER_PLUS_EXPR.  For the BIT_AND_EXPR, cast
16782         the operands to sizetype first and then cast the BIT_AND_EXPR
16783         back to the pointer type.
16784         * fold-const.c (build_range_check): Handle pointer types
16785         specially.
16786         (extract_array_ref): Look for POINTER_PLUS_EXPR instead
16787         of PLUS_EXPR's. Make sure the offset is converted to
16788         sizetype.
16789         (try_move_mult_to_index): Strip the NOPs from the offset.
16790         Remove code argument and replace all uses with PLUS_EXPR.
16791         (fold_to_nonsharp_ineq_using_bound): Handle pointer types
16792         specially. Don't use a pointer type for MINUS_EXPR.
16793         (fold_unary): Handle for (T1)(X op Y),
16794         only p+ as that is the only as that can be handled for
16795         binary operators now.
16796         (fold_binary <case POINTER_PLUS_EXPR>): Add folding of
16797         POINTER_PLUS_EXPR.
16798         <case PLUS_EXPR>: Add folding of PTR+INT into
16799         PTR p+ INT.
16800         Don't call try_move_mult_to_index.
16801         <case MINUS_EXPR>: Fold (PTR0 p+ A) - (PTR1 p+ B)
16802         into (PTR0 - PTR1) + (A - B). Fold (PTR0 p+ A) - PTR1 into
16803         (PTR0 - PTR1) + A iff (PTR0 - PTR1) simplifies.
16804         Don't call try_move_mult_to_index.
16805         (tree_expr_nonnegative_warnv_p): Handle POINTER_PLUS_EXPR.
16806         (tree_expr_nonzero_p): Likewise.
16807         (fold_indirect_ref_1): Look at POINTER_PLUS_EXPR instead
16808         of PLUS_EXPR for the complex expression folding.
16809         * tree-chrec.c (chrec_fold_plus_poly_poly): If the
16810         first chrec is a pointer type, then the second should
16811         be sizetype and not the first's type.
16812         For POINTER_PLUS_EXPR, use a different right hand side type.
16813         Handle POINTER_PLUS_EXPR like PLUS_EXPR.
16814         (chrec_fold_plus_1): For POINTER_PLUS_EXPR, use a
16815         different right hand side type.
16816         Handle POINTER_PLUS_EXPR like PLUS_EXPR.
16817         (chrec_fold_plus): For pointer types, use POINTER_PLUS_EXPR
16818         instead of PLUS_EXPR.
16819         When either operand is zero, convert the other operand.
16820         (chrec_apply): Use chrec_convert_rhs
16821         on the argument x instead of chrec_convert.
16822         (reset_evolution_in_loop): For pointer types, the new_evol
16823         should be sizetype.
16824         (convert_affine_scev): For POINTER_PLUS_EXPR, use a
16825         different right hand side type.
16826         Handle POINTER_PLUS_EXPR like PLUS_EXPR.
16827         (chrec_convert_rhs): New function.
16828         (chrec_convert_aggressive): For POINTER_PLUS_EXPR, use a
16829         different right hand side type.
16830         Handle POINTER_PLUS_EXPR like PLUS_EXPR.
16831         * tree-chrec.h (chrec_convert_rhs): New prototype.
16832         (build_polynomial_chrec): For pointer types, the right hand
16833         * tree-ssa-ccp.c (maybe_fold_stmt_indirect): Look for
16834         POINTER_PLUS_EXPR instead of PLUS_EXPR's.
16835         Remove subtraction case as it is always addition now.
16836         Make sure the offset is converted to sizetype.
16837         (fold_stmt_r): Don't handle PLUS_EXPR/MINUS_EXPR specially.
16838         Handle POINTER_PLUS_EXPR like PLUS_EXPR was handled before.
16839         * tree-ssa-loop-ivopts.c (determine_base_object): Abort for 
16840         PLUS_EXPR in pointer type.
16841         Handle POINTER_PLUS_EXPR.
16842         (tree_to_aff_combination): Likewise.
16843         (force_expr_to_var_cost): Likewise.
16844         (force_expr_to_var_cost): Likewise. Create a POINTER_PLUS_EXPR
16845         instead of PLUS_EXPR for pointers.
16846         * c-format.c (check_format_arg): Handle POINTER_PLUS_EXPR
16847         instead of PLUS_EXPR of pointer types.
16848         * tree-stdarg.c (va_list_counter_bump): Handle POINTER_PLUS_EXPR
16849         as PLUS_EXPR.
16850         (check_va_list_escapes): Likewise.
16851         (check_all_va_list_escapes): Likewise.
16852         * dwarf2out.c (loc_descriptor_from_tree_1):
16853         Handle POINT_PLUS_EXPR as a PLUS_EXPR.
16854         * expr.c (expand_expr_real_1): Handle POINTER_PLUS_EXPR.
16855         (string_constant): Likewise.
16856         * tree-ssa-address.c (tree_mem_ref_addr): When adding
16857         the offset to the base, use POINTER_PLUS_EXPR.
16858         (add_to_parts): Convert the index to sizetype.
16859         (create_mem_ref): Create A POINTER_PLUS_EXPR for the one case.
16860         * matrix-reorg.c (collect_data_for_malloc_call): Stmt
16861         will now only be either INDIRECT_REF and POINTER_PLUS_EXPR.
16862         Offset only holds something for PLUS_EXPR.
16863         (ssa_accessed_in_tree): Handle POINTER_PLUS_EXPR just as
16864         a PLUS_EXPR.
16865         (analyze_transpose): POINTER_PLUS_EXPR will only show up now
16866         and not PLUS_EXPR.
16867         (analyze_accesses_for_modify_stmt): Likewise.
16868         Remove comment about the type being integral type as it is
16869         wrong now.
16870         (can_calculate_expr_before_stmt): Handle POINTER_PLUS_EXPR as
16871         PLUS_EXPR.
16872         (transform_access_sites): POINTER_PLUS_EXPR will only show up now
16873         and not PLUS_EXPR.
16874         Correct the type which the artimentic is done in (is now
16875         sizetype).
16876         Reindent one loop.
16877         * tree-data-ref.c (split_constant_offset): Handle
16878         POINTER_PLUS_EXPR
16879         * tree-affine.c (tree_to_aff_combination): Likewise.
16880         * c-typeck.c (build_unary_op): For pointers create the increment
16881         as a sizetype. Create a POINTER_PLUS_EXPR instead of PLUS_EXPR
16882         for pointers.
16883         * gimplify.c (gimplify_self_mod_expr): Create a
16884         POINTER_PLUS_EXPR instead of PLUS_EXPR for pointers.
16885         (gimplify_omp_atomic_fetch_op): Handle POINTER_PLUS_EXPR.
16886         * tree.def (POINTER_PLUS_EXPR): New tree code.
16887         * tree-predcom.c (ref_at_iteration): If we have a pointer
16888         type do the multiplication in sizetype.
16889         * tree-mudflap.c (mf_xform_derefs_1): Create a
16890         POINTER_PLUS_EXPR instead of PLUS_EXPR for pointers.
16891         * tree-ssa-forwprop.c 
16892         (forward_propagate_addr_into_variable_array_index):
16893         Don't expect there to be a cast for the index as that
16894         does not exist anymore.
16895         (forward_propagate_addr_expr_1): Check for POINTER_PLUS_EXPR
16896         instead of PLUS_EXPR.
16897         Don't check for the first operand of the POINTER_PLUS_EXPR
16898         was the index as it cannot be.
16899         Call forward_propagate_addr_into_variable_array_index with
16900         the SSA_NAME instead of the statement.
16901         * varasm.c (const_hash_1): Handle POINTER_PLUS_EXPR.
16902         (compare_constant): Likewise.
16903         (copy_constant): Likewise.
16904         (compute_reloc_for_constant): Likewise.
16905         (output_addressed_constants): Likewise.
16906         (initializer_constant_valid_p): Likewise.
16907         * tree-ssa.c (tree_ssa_useless_type_conversion_1):
16908         Convert the MIN/MAX of the inner type to the outer
16909         type before comparing them.
16910         * tree-ssa-loop-prefetch.c (idx_analyze_ref): Handle
16911         POINTER_PLUS_EXPR instead of PLUS_EXPR.
16912         (issue_prefetch_ref): Create a POINTER_PLUS_EXPR instead
16913         of PLUS_EXPR for pointers.
16914         * tree-inline.c (estimate_num_insns_1): Handle
16915         POINTER_PLUS_EXPR.
16916         * tree-vect-transform.c (vect_create_addr_base_for_vector_ref): 
16917         Create a POINTER_PLUS_EXPR instead of PLUS_EXPR for pointers.
16918         (bump_vector_ptr): Create a POINTER_PLUS_EXPR
16919         instead of PLUS_EXPR for the pointer increment statement.
16920         (vect_update_ivs_after_vectorizer): For pointer types, create
16921         POINTER_PLUS_EXPR instead of PLUS_EXPR and also create
16922         MULT_EXPR in sizetype.
16923         (vect_gen_niters_for_prolog_loop): Add a cast when creating
16924         byte_misalign.
16925         * tree-object-size.c (plus_expr_object_size): Handle
16926         POINTER_PLUS_EXPR instead of PLUS_EXPR.  Removing all the extra
16927         code which is trying to figure out which side is a pointer and 
16928         is the index.
16929         (check_for_plus_in_loops_1): Likewise.
16930         (check_for_plus_in_loops): Likewise.
16931         * c-common.c (pointer_int_sum): Create a
16932         POINTER_PLUS_EXPR instead of PLUS_EXPR for pointers.
16933         * tree-ssa-structalias.c (handle_ptr_arith): Handle
16934         only POINTER_PLUS_EXPR.  Removing all the extra
16935         code which is trying to figure out which side is a pointer and 
16936         is the index.
16937         * tree-cfg.c (verify_expr): Add extra checking for pointers and
16938         PLUS_EXPR and MINUS_EXPR.
16939         Also add checking to make sure the operands of POINTER_PLUS_EXPR
16940         are correct.
16941         * config/frv/frv.c (frv_expand_builtin_va_start): Use sizetype
16942         with make_tree, instead of a pointer type.
16943         * config/s390/s390.c (s390_va_start): Use POINTER_PLUS_EXPR
16944         for pointers instead of PLUS_EXPR.
16945         (s390_gimplify_va_arg): Likewise.
16946         * config/spu/spu.c (spu_va_start): Create POINTER_PLUS_EXPR
16947         instead of PLUS_EXPR when doing addition on pointer
16948         types.  Use sizetype for the second operand.
16949         (spu_gimplify_va_arg_expr): Likewise.
16950         * config/sparc/sparc.c (sparc_gimplify_va_arg): Use 
16951         POINTER_PLUS_EXPR instead of PLUS_EXPR when the operand was
16952         a pointer.  Don't create a BIT_AND_EXPR for pointer types.
16953         * config/i386/i386.c (ix86_va_start): Use POINTER_PLUS_EXPR
16954         for the pointer addition and also use size_int/sizetype
16955         for the offset.
16956         (ix86_gimplify_va_arg): Likewise.
16957         Perform BIT_AND_EXPR on sizetype arguments.
16958         * config/sh/sh.c (sh_va_start): Call make_tree with sizetype
16959         and convert its result to a pointer type.  Use POINTER_PLUS_EXPR
16960         for the pointer additions and also use size_int for the offsets.
16961         (sh_gimplify_va_arg_expr): Use POINTER_PLUS_EXPR for the pointer
16962         additions and also use size_int for the offsets.  Perform
16963         BIT_AND_EXPR on sizetype arguments.
16964         * config/ia64/ia64.c (ia64_gimplify_va_arg): Use
16965         POINTER_PLUS_EXPR for pointers and create the
16966         BIT_AND_EXPR in sizetype.
16967         * config/rs6000/rs6000.c (rs6000_va_start): Use POINTER_PLUS_EXPR
16968         instead of PLUS_EXPR for pointer addition.
16969         (rs6000_va_start): Likewise.
16970         Also use sizetype for the offset.
16971         * config/pa/pa.c (reloc_needed): Handle POINTER_PLUS_EXPR
16972         as PLUS_EXPR/MINUS_EXPR.
16973         (hppa_gimplify_va_arg_expr): Don't create MINUS_EXPR or
16974         PLUS_EXPR for pointers, instead use POINTER_PLUS_EXPR.
16975         Don't use BIT_AND_EXPR on a pointer type, convert the
16976         expression to sizetype first.
16977         * config/mips/mips.c (mips_va_start): Use POINTER_PLUS_EXPR
16978         for pointers.
16979         (mips_gimplify_va_arg_expr): Likewise.
16980         Don't create BIT_AND_EXPR in a pointer type.
16981
16982 2007-06-15  Eric Christopher  <echristo@apple.com>
16983
16984         * config.gcc (i?86-*-darwin*): Add t-crtfm and t-crtpc.
16985         (x86_64-*-darwin*): Ditto.
16986         * config/i386/darwin.h (CRTEND_SPEC): New. Add support
16987         for above.
16988
16989 2007-06-15  Matthew Wilcox <matthew@wil.cx>
16990
16991         * doc/extend.texi: Document behavior of __attribute__((aligned))
16992         on typedefs.
16993
16994 2007-06-15  Mark Mitchell  <mark@codesourcery.com>
16995
16996         * rtlanal.c (note_stores): Improve documentation.
16997
16998 2007-06-15  Bernd Schmidt  <bernd.schmidt@analog.com>
16999
17000         * config/bfin/elf.h (ASM_GENERATE_INTERNAL_LABEL,
17001         LOCAL_LABEL_PREFIX): Delete.
17002         * config/bfin/bfin.c (TARGET_ASM_INTERNAL_LABEL): Delete.
17003         (bfin_internal_label): Delete.
17004
17005 2007-06-15  Uros Bizjak  <ubizjak@gmail.com>
17006
17007         * libgcc2.c (CEXT): When compiling L_multc3 and L_divtc3,
17008         define to "l" if LIBGCC_LONG_DOUBLE_SIZE == 128,
17009         otherwise define to LIBGCC2_TF_CEXT.
17010         * config/i386/linux64.h (LIBGCC2_HAS_TF_MODE): New define.
17011         (LIBGCC_TF_CEXT): Ditto.
17012         (TF_SIZE): Ditto.
17013
17014 2007-06-14  Seongbae Park  <seongbae.park@gmail.com>
17015
17016         PR rtl-optimization/32339
17017         * df-scan.c (df_uses_record): Don't modify flags but just add to
17018         it for df_ref_record.
17019
17020 2007-06-14  Andrew Pinski  <andrew_pinski@playstation.sony.com>
17021
17022         * tree-mudflap.c: Fix whitespace issues.
17023
17024 2007-06-15  Kazu Hirata  <kazu@codesourcery.com>
17025
17026         * config/m68k/m68k.c (ASM_DOT, ASM_DOTW, ASM_DOTL): Remove.
17027
17028 2007-06-14  Eric Christopher  <echristo@apple.com>
17029
17030         * config/i386/sse.md (movdi_to_sse): Rewrite body.
17031         (movv4sf): Use gcc_unreachable instead of abort.
17032
17033 2007-06-14  Uros Bizjak  <ubizjak@gmail.com>
17034
17035         PR target/32268
17036         * config/i386/sfp-machine.h (CMPtype): New define.
17037         (mach stubs): Use CMPtype instead of int as a return type.
17038
17039 2007-06-14  Uros Bizjak  <ubizjak@gmail.com>
17040
17041         * config/soft-fp/eqdf2.c, config/soft-fp/eqsf2.c,
17042         config/soft-fp/eqtf2.c, config/soft-fp/gedf2.c,
17043         config/soft-fp/gesf2.c, config/soft-fp/getf2.c,
17044         config/soft-fp/ledf2.c, config/soft-fp/lesf2.c,
17045         config/soft-fp/letf2.c, config/soft-fp/unorddf2.c,
17046         config/soft-fp/unordsf2.c, config/soft-fp/unordtf2.c,
17047         config/soft-fp/soft-fp.h: Update from glibc CVS.
17048
17049 2007-06-14  Bernd Schmidt  <bernd.schmidt@analog.com>
17050
17051         * config/bfin/uclinux.h (MFWRAP_SPEC): New.
17052
17053 2007-06-14  Rask Ingemann Lambertsen  <rask@sygehus.dk>
17054
17055         PR target/32341
17056         * config/v850/v850.c: Include dataflow header file.
17057         (substitute_ep_register): Fix typo.
17058
17059 2007-06-14  Paolo Bonzini  <bonzini@gnu.org>
17060
17061         * configure.ac: Fix earlier checkin.
17062         * configure: Regenerated.
17063
17064 2007-06-14  Paolo Bonzini  <bonzini@gnu.org>
17065
17066         * acinclude.m4 (gcc_AC_CHECK_PROG_VER): Remove.
17067         * aclocal.m4: Regenerate.
17068         * configure.ac: Use ACX_PROG_CC_WARNING_OPTS,
17069         ACX_PROG_CC_WARNINGS_ARE_ERRORS,
17070         ACX_PROG_CC_WARNING_ALMOST_PEDANTIC, ACX_CHECK_PROG_VER.
17071         * configure: Regenerate.
17072         * Makefile.in (LOOSE_WARN): Subst loose_warn.
17073
17074         * Makefile.in (quickstrap): Build libgcc too.
17075
17076 2007-06-14  Paolo Bonzini  <bonzini@gnu.org>
17077
17078         * configure.ac: Add --enable-checking=df.  Explicitly mention that
17079         the variables are initialized as for "release".
17080         * df-core.c: Use it.
17081         * configure: Regenerate.
17082         * config.in: Regenerate.
17083
17084 2007-06-14  Bob Wilson  <bob.wilson@acm.org>
17085
17086         * config/xtensa/xtensa.c (xtensa_expand_nonlocal_goto): Use
17087         validate_replace_rtx instead of replace_rtx.
17088         (xtensa_expand_prologue): Call df_insn_rescan after replace_rtx.
17089
17090 2007-06-14  Danny Smith  <dannysmith@users.sourceforge.net>
17091
17092         * config/i386/cygming.h (DWARF_FRAME_REGNUM): Define.
17093         (DWARF2_UNWIND_INFO): Override default if configured with
17094         SJLJ EH disabled.
17095         * config/i386/cygwin.h (STARTFILE_SPEC): Add crtbegin.o.
17096         (ENDFILE_SPEC): Add crtend.o.
17097         * config/i386/mingw32.h (STARTFILE_SEC): Add crtbegin.o.
17098         (ENDFILE_SPEC): Add crtend.o.
17099         (TARGET_USE_JCR_SECTION): Define.
17100         (MD_UNWIND_SUPPORT): Define for 32-bit target.
17101
17102         * config/i386/cygming-crtbegin.c: New file.
17103         * config/i386/cygming-crtend.c: New file.
17104
17105 2007-06-14  Pascal Obry Pascal Obry  <obry@adacore.com>
17106
17107         * config/i386/w32-unwind.h: New file.
17108
17109 2007-06-13  Eric Christopher  <echristo@apple.com>
17110
17111         * config/i386/darwin.h (PREFERRED_STACK_BOUNDARY): Don't let
17112         the user set a value below STACK_BOUNDARY.
17113
17114 2007-06-13  Thiemo Seufer  <ths@networkno.de>
17115
17116         * config/mips/linux.h, config/mips/linux64.h (LIB_SPEC): Always
17117         imply -lpthread for -pthread.
17118
17119 2007-06-13  Kazu Hirata  <kazu@codesourcery.com>
17120
17121         * basic-block.h: Remove the prototype for
17122         free_basic_block_vars.
17123         * cfglayout.h: Remove the prototype for
17124         insn_locators_initialize.
17125         * tree.h: Remove the prototype for emit_line_note.
17126
17127         * tree-ssa-pre.c (mergephitemp): Remove.
17128         (init_pre): Don't use mergephitemp.
17129
17130 2007-06-13  Eric Christopher  <echristo@apple.com>
17131
17132         * config/i386/i386.c (override_options): If we've specified
17133         an arch then don't use TARGET_SUBTARGET_ISA_DEFAULTs.
17134
17135 2007-06-13  Bob Wilson  <bob.wilson@acm.org>
17136
17137         * df-scan.c (df_get_entry_block_def_set): Check if STATIC_CHAIN_REGNUM
17138         is defined.
17139
17140 2007-06-13  Bernd Schmidt  <bernd.schmidt@analog.com>
17141
17142         * config/bfin/bfin.h (EH_RETURN_HANDLER_RTX): Use gen_frame_mem.
17143         * config/bfin/bfin.md (UNSPEC_VOLATILE_STORE_EH_HANDLER): New constant.
17144         (eh_store_handler): New pattern.
17145         (eh_return): Emit it instead of a plain move.
17146
17147 2007-06-13  Uros Bizjak  <ubizjak@gmail.com>
17148
17149         * config/i386/i386.c (ix86_init_mmx_sse_builtins)
17150         [__builtin_infq, __builtin_fabsq]: Define usign def_builtin.
17151         [__builtin_ia32_rsqrtps, __builtin_ia32_rsqrtss]: Define using
17152         def_builtin_const.
17153
17154 2007-06-13  Bernd Schmidt  <bernd.schmidt@analog.com>
17155
17156         * config/bfin/bfin.c (gen_one_bundle): Delete unused local variables.
17157         (find_next_insn_start, find_load): New functions.
17158         (bfin_reorg): Use them to deal with the fact that parallel insns are
17159         no longer represented as a SEQUENCE.
17160
17161 2007-06-13  Eric Botcazou  <ebotcazou@libertysurf.fr>
17162
17163         * config/sparc/sparc.c (sparc_override_options): Initialize
17164         fpu mask correctly.
17165
17166 2007-06-13  Dave Korn  <dave.korn@artimi.com>
17167
17168         * config/i386/i386.c (ix86_eax_live_at_start_p): Use df_get_live_out.
17169
17170 2007-06-13  Kazu Hirata  <kazu@codesourcery.com>
17171
17172         * auto-inc-dec.c, c-incpath.c, config/c4x/libgcc.S,
17173         config/sh/divcost-analysis, dbgcnt.def, df-core.c,
17174         df-problems.c, df-scan.c, df.h, dominance.c, dse.c, regstat.c,
17175         tree-data-ref.c, tree-ssa-loop-im.c, tree-ssa-loop-prefetch.c,
17176         tree-vect-transform.c: Fix comment typos.  Follow spelling
17177         conventions.
17178
17179 2007-06-12  Seongbae Park  <seongbae.park@gmail.com>
17180
17181         * df-scan.c (df_get_exit-block_use_set): Always add the stack pointer
17182         to the exit block use set.
17183         (df_insn_delete, df_insn_rescan): Fixed spelling of "deferring". 
17184         * gcse.c (cpro_jump): Don't emit barrier in cfglayout mode.
17185         * config/sparc/sparc.c (sparc_check_64): Check df != NULL.
17186
17187 2007-06-12  Seongbae Park  <seongbae.park@gmail.com>
17188
17189         * opts.c (common_handle_option): Handle new option -fdbg-cnt-list.
17190         * dbgcnt.c (dbg_cnt_set_limit_by_name): Return value
17191         to indicate an error.
17192         (dbg_cnt_process_single_pair, dbg_cnt_list_all_counters):
17193         New functions.
17194         (dbg_cnt_process_opt): Print an error on a bad argument.
17195         * dbgcnt.h (dbg_cnt_list_all_counters): New function declaration.
17196         * common.opt (-fdbg-cnt-list): New.
17197         * doc/invoke.texi (-fdbg-cnt-list,-fdbg-cnt=): New.
17198
17199 2007-06-12  Eric Botcazou  <ebotcazou@adacore.com>
17200
17201         * tree-ssa-alias.c (finalize_ref_all_pointers): Clear pt_anything
17202         flag on ref-all pointers.
17203
17204 2007-06-12  Andrew Pinski  <andrew_pinski@playstation.sony.com>
17205
17206         PR middle-end/31579
17207         * expr.c (expand_expr_addr_expr_1): Call expand_expr
17208         for the offset with the modifier as EXPAND_INITIALIZER
17209         if the modifier is EXPAND_INITIALIZER.
17210         (expand_expr_real_1 <case INTEGER_CST>): Don't force to
17211         a register if we had an overflow.
17212
17213 2007-06-12  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
17214
17215         * real.c (real_isfinite): New.
17216         (real_sqrt): Use it.
17217         * real.h (real_isfinite): New.
17218         * builtins.c: Use it.
17219
17220 2007-06-12  Ian Lance Taylor  <iant@google.com>
17221             Daniel Berlin  <dberlin@dberlin.org>
17222
17223         PR libstdc++/29286
17224         * tree.def: Add CHANGE_DYNAMIC_TYPE_EXPR.
17225         * tree.h (CHANGE_DYNAMIC_TYPE_NEW_TYPE): Define.
17226         (CHANGE_DYNAMIC_TYPE_LOCATION): Define.
17227         (DECL_NO_TBAA_P): Define.
17228         (struct tree_decl_common): Add no_tbaa_flag field.
17229         * tree-ssa-structalias.c (struct variable_info): Add
17230         no_tbaa_pruning field.
17231         (new_var_info): Initialize no_tbaa_pruning field.
17232         (unify_nodes): Copy no_tbaa_pruning field.
17233         (find_func_aliases): Handle CHANGE_DYNAMIC_TYPE_EXPR.
17234         (dump_solution_for_var): Print no_tbaa_pruning flag.
17235         (set_uids_in_ptset): Add no_tbaa_pruning parameter.  Change all
17236         callers.
17237         (compute_tbaa_pruning): New static function.
17238         (compute_points_to_sets): Remove CHANGE_DYNAMIC_TYPE_EXPR nodes.
17239         Call compute_tbaa_pruning.
17240         * tree-ssa-alias.c (may_alias_p): Test no_tbaa_flag for pointers.
17241         * gimplify.c (gimplify_expr): Handle CHANGE_DYNAMIC_TYPE_EXPR.
17242         * gimple-low.c (lower_stmt): Likewise.
17243         * tree-gimple.c (is_gimple_stmt): Likewise.
17244         * tree-ssa-operands.c (get_expr_operands): Likewise.
17245         * tree-ssa-dce.c (mark_stmt_if_obviously_necessary): Likewise.
17246         * tree-inline.c (estimate_num_insns_1): Likewise.
17247         (copy_result_decl_to_var): Likewise.
17248         * expr.c (expand_expr_real_1): Likewise.
17249         * tree-pretty-print.c (dump_generic_node): Likewise.
17250         * tree-inline.c (copy_decl_to_var): Copy DECL_NO_TBAA_P flag.
17251         * omp-low.c (omp_copy_decl_2): Likewise.
17252         * print-tree.c (print_node): Print DECL_NO_TBAA_P flag.
17253         * doc/c-tree.texi (Expression trees): Document
17254         CHANGE_DYNAMIC_TYPE_EXPR.
17255
17256 2007-06-12  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
17257
17258         * fold-const.c (fold_binary): Guard (X-X) -> 0 transformation
17259         with !HONOR_NANS and !HONOR_INFINITIES.
17260         * simplify-rtx.c (simplify_binary_operation_1): Likewise.
17261
17262 2007-06-12  Tristan Gingold  <gingold@adacore.com>
17263
17264         * gcov.c: Comments updated.
17265         (source_info): Add file_time field.
17266         (source_index): New variable.
17267         (mutiple_files): New variable.
17268         (generate_results): New function extracted from process_file.
17269         (process_file): Save and restore chain of functions, generate
17270         results and free structures only if not merging results.
17271         (release_structures): File names are now freed in create_file_names
17272         (create_file_names): Free previous file names.
17273         (find_source): File date is now read here and modifications in
17274         source files is checked here.
17275         (read_graph_file): Only reverse order of functions for the current
17276         object file.
17277         (make_gcov_file_name): Do not generate long names if input_name is
17278         NULL.
17279         (output_lines): If merging results do not display graph, data and
17280         runs informations.
17281         Checking source file modification is done in find_source.
17282
17283         * doc/gcov.texi: Append an s to sourcefile.
17284
17285 2007-06-12  Bernd Schmidt  <bernd.schmidt@analog.com>
17286
17287         * config/bfin/bfin.md (UNSPEC_NOP): New constant.
17288         (forced_nop): New pattern.
17289         * config/bfin/bfin.c: Include "df.h".
17290         (add_to_reg): Use df_regs_ever_live_p instead of regs_ever_live.
17291         (bfin_discover_loop): Use df_get_live_in instead of
17292         global_live_at_start.
17293         (bfin_reorder_loops): Pass 0 to cfg_layout_initialize.  Call
17294         df_analyze when done.
17295         (gen_one_bundle): Don't generate SEQUENCE insns, just put modes on
17296         the insns.  Use QImode for the final insn in a bundle.  Call
17297         df_insn_rescan on generated NOPs; use gen_forced_nop instead of
17298         gen_nop.
17299         (reorder_var_tracking_notes): New function.
17300         (bfin_reorg): Pass no argument to split_all_insns.  Don't call
17301         update_life_info.  Call df_analyze after scheduling and bundle
17302         generation.  Call reorder_var_tracking_notes if generating these
17303         notes.  Call df_finish_pass at the end.
17304
17305 2007-06-12  Dirk Mueller  <dmueller@suse.de>
17306
17307         * optabs.c (debug_optab_libfuncs): fix gcc_assert to
17308         a comparison, not an assignment.
17309
17310 2007-06-12  Olivier Hainque  <hainque@adacore.com>
17311
17312         * tree-nested.c (convert_local_reference): Handle VIEW_CONVERT_EXPR.
17313         Request walking the subtrees only, leaving the current is_lhs/val_only
17314         untouched.
17315         (convert_non_local_reference): Likewise.
17316
17317 2007-06-12  Nathan Sidwell  <nathan@codesourcery.com>
17318
17319         * config/m68k/m68k-devices.def (52221, 52223, 5253): New.
17320
17321 2007-06-12  Richard Guenther  <rguenther@suse.de>
17322
17323         PR tree-optimization/15353
17324         PR tree-optimization/31657
17325         * passes.c (init_optimization_passes): Add pass_tree_ifcombine.
17326         * timevar.def: Add TV_TREE_IFCOMBINE.
17327         * tree-pass.h (pass_tree_ifcombine): Declare.
17328         * tree-ssa-ifcombine.c: New file.
17329         * tree-ssa-phiopt.c (blocks_in_phiopt_order): Export.
17330         * tree-flow.h (blocks_in_phiopt_order): Declare.
17331         * Makefile.in (OBJS-common): Add tree-ssa-ifcombine.o.
17332         (tree-ssa-ifcombine.o): New dependencies.
17333
17334 2007-06-12  Uros Bizjak  <ubizjak@gmail.com>
17335
17336         PR rtl-optimization/32293
17337         * combine.c (simplify_if_then_else): Truncate return from
17338         nonzero_bits() to correct mode.
17339
17340 2007-06-12  Uros Bizjak  <ubizjak@gmail.com>
17341
17342         * fold-const (fold_binary) [RDIV_EXPR]: Also optimize a/cbrt(b/c)
17343         into a*cbrt(c/b) if flag_unsafe_math_optimizations is set.
17344
17345 2007-06-11  Diego Novillo  <dnovillo@google.com>
17346
17347         * Makefile.in (reload1.o-warn): Remove.
17348
17349 2007-06-11  Seongbae Park <seongbae.park@gmail.com>
17350
17351         * combine.c (subst): Use reg_overlap_mentioned_p
17352         instead of comparing register numbers directly.
17353
17354 2007-06-11  Kenneth Zadeck <zadeck@naturalbridge.com>
17355
17356         * reload1.c (mark_home_live_1): Use the mode parameter.
17357
17358 2007-06-11  Kenneth Zadeck <zadeck@naturalbridge.com>
17359
17360         * df-scan.c (df_insn_delete, df_insn_rescan, df_insn_rescan_all,
17361         df_process_deferred_rescans, df_notes_rescan): Fixed spelling of
17362         word "deferred".
17363         * df-core.c: Ditto.
17364
17365 2007-06-11  Daniel Berlin  <dberlin@dberlin.org>
17366
17367         * Merge dataflow-branch into mainline (see ChangeLog.dataflow)
17368
17369 2007-06-11  Uros Bizjak  <ubizjak@gmail.com>
17370
17371         * config/i386/i386.md ("*movtf_internal): Penalize moves to and
17372         from integer registers.
17373         (FP mode splitters): Handle TFmode.
17374
17375 2007-06-11  Eric Botcazou  <ebotcazou@adacore.com>
17376
17377         * tree-ssa-structalias.c (find_what_p_points_to): Return false
17378         for ref-all pointers that point-to anything.
17379
17380 2007-06-11  Joseph Myers  <joseph@codesourcery.com>
17381
17382         * config/arm/arm.c (arm_output_dwarf_dtprel,
17383         TARGET_ASM_OUTPUT_DWARF_DTPREL): New.
17384
17385 2007-06-11  Bernd Schmidt  <bernd.schmidt@analog.com>
17386
17387         * config/bfin/bfin.md (movdi_insn, movsi_insn, movv2hi_insn,
17388         movhi_insn, movqi_insn, movsf_insn, movdf_insn): Don't allow constant
17389         to memory moves.
17390
17391 2007-06-11  Rafael Avila de Espindola  <espindola@google.com>
17392
17393         * tree.c (signed_or_unsigned_type_for): New.
17394         (unsigned_type_for): Use signed_or_unsigned_type_for.
17395         (signed_type_for): Use signed_or_unsigned_type_for.
17396         * tree.h (signed_or_unsigned_type_for): New.
17397         (get_signed_or_unsigned_type): Remove.
17398         * fold-const.c (fold_negate_expr): Use signed_type_for instead of
17399         lang_hooks.types.signed_type
17400         (size_diffop): Likewise.
17401         (all_ones_mask_p): Likewise.
17402         (build_range_check): Likewise.
17403         (fold_cond_expr_with_comparison): Likewise.
17404         (fold_cond_expr_with_comparison): Likewise.
17405         (unextend): Likewise.
17406         (extract_muldiv_1): Likewise.
17407         (fold_single_bit_test_into_sign_test): Likewise.
17408         (fold_binary): Likewise.
17409         (fold_ternary): Likewise.
17410         (operand_equal_for_comparison_p): Use signed_or_unsigned_type_for
17411         instead of get_signed_or_unsigned_type.
17412         * c-objc-common.h (LANG_HOOKS_SIGNED_TYPE): Remove.
17413         (LANG_HOOKS_SIGNED_OR_UNSIGNED_TYPE): Remove.
17414         * expr.c (signed_or_unsigned_type_for): Use
17415         signed_or_unsigned_type_for instead of get_signed_or_unsigned_type.
17416         * langhooks.c (get_signed_or_unsigned_type): Remove.
17417         (lhd_signed_or_unsigned_type): Remove.
17418         * langhooks.h (lang_hooks_for_types): Remove signed_type and
17419         signed_or_unsigned_type.
17420         (lhd_signed_or_unsigned_type): Remove.
17421         * expmed.c (make_tree): Use signed_type_for instead of
17422         lang_hooks.types.signed_type.
17423         * c-common.c (same_scalar_type_ignoring_signedness): Use
17424         c_common_signed_type instead of lang_hooks.types.signed_type.
17425         (c_common_unsigned_type): New.
17426         (c_common_signed_type): Just call c_common_signed_or_unsigned_type.
17427         (shorten_compare): Use c_common_unsigned_type instead of
17428         c_common_signed_or_unsigned_type.
17429         (c_common_nodes_and_builtins): Use c_common_unsigned_type instead of
17430         unsigned_type_for.
17431         * convert.c (convert_to_integer): Use signed_type_for instead of
17432         lang_hooks.types.signed_type.
17433         * langhooks-def.h (LANG_HOOKS_SIGNED_OR_UNSIGNED_TYPE): Remove.
17434         (LANG_HOOK_FOR_TYPES_INITIALIZER): Remove LANG_HOOKS_SIGNED_TYPE and
17435         LANG_HOOKS_SIGNED_OR_UNSIGNED_TYPE.
17436         * c-format.c (check_format_types): Use c_common_unsigned_type
17437         instead of unsigned_type_for.
17438         * c-decl.c (groakdeclarator): Likewise.
17439         * c-typeck.c (convert_for_assignment): Likewise.
17440         * c-common.h (c_common_unsigned_type): New.
17441
17442 2007-06-11  Uros Bizjak  <ubizjak@gmail.com>
17443
17444         PR target/32280
17445         * config/i386/sse.md ("sse2_ashlti", "sse2_lshrti3"): Move ...
17446         * config/i386/i386.md ("sse2_ashlti", "sse2_lshrti3"): ... to here.
17447
17448 2007-06-11  Uros Bizjak  <ubizjak@gmail.com>
17449
17450         PR middle-end/32279
17451         * fold-const (fold_binary) [RDIV_EXPR]: Optimize a/sqrt(b/c)
17452         into a*sqrt(c/b) if flag_unsafe_math_optimizations is set.
17453
17454 2007-06-10  Jan Sjodin  <jan.sjodin@amd.com>
17455             Sebastian Pop  <sebpop@gmail.com>
17456
17457         * lambda-code.c (remove_iv): New.
17458         (lambda_loopnest_to_gcc_loopnest): Use remove_iv.
17459
17460 2007-06-10  Zdenek Dvorak  <dvorakz@suse.cz>
17461
17462         * tree-data-ref.c (dr_analyze_alias): Handle case smt is NULL.
17463         * tree-predcom.c (mark_virtual_ops_for_renaming): Exported.
17464         * tree-ssa-loop-prefetch.c: Include optabs.h.
17465         (FENCE_FOLLOWING_MOVNT): New macro.
17466         (struct mem_ref): Add independent_p and storent_p fields.
17467         (record_ref): Initalize the new fields.
17468         (gather_memory_references_ref): Return true if the reference
17469         could be analysed.
17470         (gather_memory_references): Check whether all memory accesses
17471         in loop were recorded.
17472         (should_issue_prefetch_p): Return false for nontemporal stores.
17473         (nontemporal_store_p, mark_nontemporal_store, emit_mfence_after_loop,
17474         may_use_storent_in_loop_p, mark_nontemporal_stores): New functions.
17475         (determine_loop_nest_reuse): Detect independent memory references.
17476         (loop_prefetch_arrays): Call mark_nontemporal_stores.
17477         * tree-flow.h (mark_virtual_ops_for_renaming): Declare.
17478         * Makefile.in (tree-ssa-loop-prefetch.o): Add OPTABS_H dependency.
17479         * config/i386/i386.h (x86_mfence): Declare.
17480         (FENCE_FOLLOWING_MOVNT): Return x86_mfence.
17481         * config/i386/i386.c (x86_mfence): New variable.
17482         (ix86_init_mmx_sse_builtins): Initialize x86_mfence.
17483
17484         * tree-pretty-print.c (dump_generic_node): Mark nontemporal stores.
17485         * optabs.c (init_optabs): Initialize storent_optab.
17486         * optabs.h (enum optab_index): Add OTI_storent.
17487         (storent_optab): Declare.
17488         * genopinit.c (optabs): Add initialization for storent_optab.
17489         * tree.h (MOVE_NONTEMPORAL): New macro.
17490         * expr.c (expand_assignment, store_expr, store_constructor_field,
17491         store_constructor, store_field, expand_expr_real_1): Propagate
17492         nontemporality of the expanded store.
17493         (emit_storent_insn): New function.
17494         * expr.h (expand_assignment, store_expr): Declaration changed.
17495         * function.c (assign_parm_setup_reg): Pass false as nontemporality
17496         to expand_assignment.
17497         * stmt.c (expand_asm_expr): Ditto.
17498         * calls.c (initialize_argument_information): Pass false as
17499         nontemporality to store_expr.
17500         * config/i386/sse.md (storentv4sf, storentv2df, storentv2di,
17501         storentsi): New.
17502
17503 2007-06-09  Daniel Berlin  <dberlin@dberlin.org>
17504
17505         * tree-ssa-structalias.c (set_uids_in_ptset): Add is_deref'd
17506         parameter, use it.
17507         (find_what_p_points_to): Pass new parameter to set_uids_in_ptset.
17508
17509 2007-06-09  Daniel Berlin  <dberlin@dberlin.org>
17510
17511         * tree-data-ref.c (dr_may_alias_p): Check that decl_a != decl_b,
17512         and allow DECL_P here.
17513
17514 2007-06-09  Zdenek Dvorak  <dvorakz@suse.cz>
17515
17516         * tree-scalar-evolution.c (follow_ssa_edge_in_rhs,
17517         follow_ssa_edge_in_condition_phi, follow_ssa_edge): Keep more precise
17518         track of the size of the expression.
17519         * cfghooks.c (merge_blocks): Remove block from loops structure only
17520         after call of the merge_blocks hook.
17521
17522 2007-06-09  Tom Tromey  <tromey@redhat.com>
17523
17524         * c-decl.c (grokdeclarator): Added 'deprecated_state' argument.
17525         (deprecated_state): Removed.
17526         (start_decl): Update.
17527         (enum deprecated_states): Moved earlier.
17528         (groktypename): Update.
17529         (push_parm_decl): Likewise.
17530         (grokfield): Likewise.
17531         (start_function): Likewise.
17532
17533 2007-06-09  Ian Lance Taylor  <iant@google.com>
17534
17535         PR tree-optimization/32169
17536         * tree-vrp.c (extract_range_from_unary_expr): For NOP_EXPR and
17537         CONVERT_EXPR, check whether min and max both converted to an
17538         overflow infinity representation.
17539
17540 2007-06-08  Eric Botcazou  <ebotcazou@adacore.com>
17541
17542         * reload1.c (fixup_abnormal_edges): Clear bb field for insns
17543         not inserted on the edge.
17544
17545 2007-06-08  Bob Wilson  <bob.wilson@acm.org>
17546
17547         * config/xtensa/lib1funcs.asm (__udivsi3): Use hardware divide
17548         instructions if they are supported.
17549         (__divsi3, __umodsi3, __modsi3): Likewise.
17550         (__ashldi3, __ashrdi3, __lshrdi3): New.
17551         * config/xtensa/t-xtensa (LIB1ASMFUNCS): Add DImode shift functions.
17552
17553 2007-06-08  Harsha Jagasia <harsha.jagasia@amd.com>
17554             Tony Linthicum <tony.linthicum@amd.com>
17555
17556         * doc/invoke.texi: Add fvect-cost-model flag.
17557         * common.opt (fvect-cost-model): New flag.
17558         * tree-vectorizer.c (new_stmt_vec_info): Initialize inside and outside
17559         cost fields in stmt_vec_info struct for STMT.
17560         * tree-vectorizer.h (stmt_vec_info): Define inside and outside cost
17561         fields in stmt_vec_info struct and access functions for the same.
17562         (TARG_COND_BRANCH_COST): Define cost of conditional branch.
17563         (TARG_VEC_STMT_COST): Define cost of any vector operation, excluding
17564         load, store and vector to scalar operation.
17565         (TARG_VEC_TO_SCALAR_COST): Define cost of vector to scalar operation.
17566         (TARG_VEC_LOAD_COST): Define cost of aligned vector load.
17567         (TARG_VEC_UNALIGNED_LOAD_COST): Define cost of misasligned vector load.
17568         (TARG_VEC_STORE_COST): Define cost of vector store.
17569         (vect_estimate_min_profitable_iters): Define new function.
17570         * tree-vect-analyze.c (vect_analyze_operations): Add a compile-time
17571         check to evaluate if loop iterations are less than minimum profitable
17572         iterations determined by cost model or minimum vect loop bound defined
17573         by user, whichever is more conservative.
17574         * tree-vect-transform.c (vect_do_peeling_for_loop_bound): Add a
17575         run-time check to evaluate if loop iterations are less than minimum
17576         profitable iterations determined by cost model or minimum vect loop
17577         bound defined by user, whichever is more conservative.
17578         (vect_estimate_min_profitable_iterations): New function to estimate
17579         mimimimum iterartions required for vector version of loop to be
17580         profitable over scalar version.
17581         (vect_model_reduction_cost): New function.
17582         (vect_model_induction_cost): New function.
17583         (vect_model_simple_cost): New function.
17584         (vect_cost_strided_group_size): New function.
17585         (vect_model_store_cost): New function.
17586         (vect_model_load_cost): New function.
17587         (vectorizable_reduction): Call vect_model_reduction_cost during
17588         analysis phase.
17589         (vectorizable_induction): Call vect_model_induction_cost during
17590         analysis phase.
17591         (vectorizable_load): Call vect_model_load_cost during analysis phase.
17592         (vectorizable_store): Call vect_model_store_cost during analysis phase.
17593         (vectorizable_call, vectorizable_assignment, vectorizable_operation,
17594         vectorizable_promotion, vectorizable_demotion): Call
17595         vect_model_simple_cost during analysis phase.
17596
17597 2007-06-08  Simon Baldwin  <simonb@google.com>
17598
17599         * reg-stack.c (get_true_reg): Readability change.  Moved default case
17600         label into direct switch statement scope.
17601
17602 2007-06-08  Simon Baldwin  <simonb@google.com>
17603
17604         * tree-flow-inline.h (var_ann): Replaced erroneous '=' assignment
17605         in gcc_assert() with '==' comparison.
17606
17607 2007-06-08  Uros Bizjak  <ubizjak@gmail.com>
17608
17609         * config/i386/i386.c (override_options): Merge TARGET_SSE4_2 and
17610         TARGET_ABM handling of x86_popcnt variable.
17611
17612 2007-06-08  Uros Bizjak  <ubizjak@gmail.com>
17613
17614         * doc/extend.texi (X86 Built-in Functions): Document __builtin_fabsq,
17615         __builtin_copysignq and __builtin_infq built-in functions.
17616
17617 2007-06-08  Uros Bizjak  <ubizjak@gmail.com>
17618
17619         * doc/extend.texi (X86 Built-in Functions): Add missing `@item's in
17620         SSE4.2 section.  Correct built-in function names in SSE4A section.
17621
17622 2007-06-08  Uros Bizjak  <ubizjak@gmail.com>
17623
17624         PR tree-optimization/32243
17625         * tree-vect-transform.c (vectorizable_type_promotion): Move check
17626         for ncopies after ratio check between nunits_out and nunits_in.
17627         (vectorizable_type_demotion): Remove single-use variable "scalar_type".
17628
17629 2007-06-08  Dorit Nuzman  <dorit@il.ibm.com>
17630
17631         PR tree-optimization/32224
17632         * tree-vect-analyze.c (vect_determine_vectorization_factor): Fail
17633         vectorization upon a non GIMPLE_MODIFY_STMT.
17634
17635 2007-06-08  Christian Bruel  <christian.bruel@st.com>
17636
17637         PR target/29953
17638         * config/sh/sh.md (doloop_end): New pattern and splitter.
17639         * loop-iv.c (simple_rhs_p): Check for hardware registers.
17640
17641 2007-06-08  Zdenek Dvorak  <dvorakz@suse.cz>
17642
17643         PR middle-end/32209
17644         * dominance.c (debug_dominance_tree, debug_dominance_tree_1): New
17645         functions.
17646         (verify_dominators): Do not change dominance tree.
17647
17648 2007-06-08  Kaz Kojima  <kkojima@gcc.gnu.org>
17649
17650         * config/sh/constraints.md: New file.
17651         * config/sh/sh.c: Include tm-constrs.h.
17652         (reg_class_from_letter): Remove.
17653         (prepare_cbranch_operands): Use satisfies_constraint_*
17654         function instead of macro.
17655         (andcosts, broken_move, sh_secondary_reload): Likewise.
17656         * config/sh/predicates.md (trapping_target_operand): Likewise.
17657         (and_operand, arith_operand, arith_reg_or_0_operand,
17658         cmp_operand, logical_operand, target_operand,
17659         ua_address_operand, ua_offset, xor_operand): Likewise.
17660         * config/sh/sh.md: Include constraints.md.
17661         (*movsicc_t_false): Use satisfies_constraint_* function
17662         instead of macro.
17663         (*movsicc_t_true, ashlsi3_std, ashlhi3_k, lshrsi3_m,
17664         lshrsi3_k, movsi_const_16bit+2, *movhi_media+1,
17665         movdi_const_16bit+1, beq, bne, *ptb): Likewise.
17666         * config/sh/sh.h (reg_class_from_letter): Remove prototype.
17667         (OVERRIDE_OPTIONS): Don't modify reg_class_from_letter.
17668         (REG_CLASS_FROM_CONSTRAINT): Remove.
17669         (CONSTRAINT_LEN, CONST_OK_FOR_I20, CONST_OK_FOR_I,
17670         CONST_OK_FOR_J, CONST_OK_FOR_K16, CONST_OK_FOR_K,
17671         CONST_OK_FOR_P27, CONST_OK_FOR_P, CONST_OK_FOR_M,
17672         CONST_OK_FOR_N, CONST_OK_FOR_CONSTRAINT_P,
17673         CONST_DOUBLE_OK_FOR_LETTER_P): Likewise.
17674         (SECONDARY_INOUT_RELOAD_CLASS): Use satisfies_constraint_*
17675         function instead of macro.
17676         (SECONDARY_INPUT_RELOAD_CLASS): Likewise.
17677         (EXTRA_CONSTRAINT_Q, EXTRA_CONSTRAINT_A,
17678         EXTRA_CONSTRAINT_Bsc, EXTRA_CONSTRAINT_B,
17679         EXTRA_CONSTRAINT_Css, EXTRA_CONSTRAINT_Csu): Remove.
17680         (IS_PC_RELATIVE_LOAD_ADDR_P): New macro.
17681         (IS_LITERAL_OR_SYMBOLIC_S16_P): Likewise.
17682         (IS_LITERAL_OR_SYMBOLIC_U16_P): Likewise.
17683         (IS_NON_EXPLICIT_CONSTANT_P): Likewise.
17684         (EXTRA_CONSTRAINT_Csy, EXTRA_CONSTRAINT_Z, EXTRA_CONSTRAINT_W,
17685         EXTRA_CONSTRAINT_Cpg, EXTRA_CONSTRAINT_C,
17686         EXTRA_MEMORY_CONSTRAINT, EXTRA_CONSTRAINT_Sr0,
17687         EXTRA_CONSTRAINT_Sua, EXTRA_CONSTRAINT_S,
17688         EXTRA_CONSTRAINT_STR): Likewise.
17689         (GO_IF_LEGITIMATE_INDEX): Fix indentation.
17690
17691 2007-06-07  Geoffrey Keating  <geoffk@apple.com>
17692
17693         * config/i386/darwin.h (STACK_BOUNDARY): Define.
17694
17695 2007-06-07  Simon Martin  <simartin@users.sourceforge.net>
17696
17697         PR c++/30759
17698         * c-common.h (flag_cpp0x): Replaced by...
17699         (cxx_dialect): ... this new variable specifying the C++ dialect that
17700         is used.
17701         * c-common.c (flag_cpp0x): Removed.
17702         (cxx_dialect): Defined.
17703         * c-cppbuiltin.c (c_cpp_builtins): flag_cpp0x rewritten in terms of
17704         cxx_dialect.
17705         * c-opts.c (c_common_post_options): Likewise.
17706         (set_std_cxx98): Set cxx_dialect to cxx98.
17707         (set_std_cxx0x): Set cxx_dialect to cxx0x.
17708
17709 2007-06-07  Geoffrey Keating  <geoffk@apple.com>
17710             Hui-May Chang <hm.chang@apple.com>
17711
17712         * doc/invoke.texi (Darwin Options): Update documentation for
17713         -mmacosx-version-min.
17714         * config.gcc (*-*-darwin*): Set extra_gcc_objs.
17715         * config/darwin-driver.c: New file.
17716         * config/darwin.h (GCC_DRIVER_HOST_INITIALIZATION): New.
17717         * config/t-darwin (darwin-driver.o): New rule.
17718
17719         * config/darwin-c.c (version_as_macro): Ignore low digit.
17720
17721 2007-06-07  Uros Bizjak  <ubizjak@gmail.com>
17722
17723         * config/i386/i386.md (standard sse constant splitter): Handle TFmode.
17724         (negtf2, abstf2, *absnegtf2_sse): New insn patterns.
17725         (CSGNMODE): New mode macro.
17726         (CSGNVMODE): New mode attribute.
17727         (copysign<mode>3): Rename from copysingsf3 and copysigndf3.  Macroize
17728         expander using CSGNMODE mode macro.  Handle TFmode.
17729         (copysign<mode>3_const): Rename from copysignsf3_const and
17730         copysigndf3_const.  Macroize pattern using CSGNMODE mode macro.
17731         Handle TFmode.
17732         (copysign<mode>3_var): Rename from copysignsf3_var and
17733         copysigndf3_var.  Macroize pattern using CSGNMODE mode macro.
17734         Handle TFmode.
17735         (copysign<mode>3_var splitter): Macroize pattern using CSGNMODE
17736         mode macro.  Handle TFmode.
17737         * config/i386/sse.md (andtf3, *andtf3, *nandtf3): New insn patterns.
17738         (iortf3, *iortf3): Ditto.
17739         (xortf3, *xortf3): Ditto.
17740         * config/i386/i386.c (ix86_build_signbit_mask): Create scalar
17741         TFmode and TImode masks.
17742         (ix86_expand_copysign): Expand TFmode copysign insn.
17743         (IX86_BUILTIN_INFQ): New.
17744         (IX86_BUILTIN_FABSQ): Ditto.
17745         (IX86_BUILTIN_COPYSIGNQ): Ditto.
17746         (ix86_init_mmx_sse_builtins) [__builtin_infq]: New builtin definition.
17747         [__builtin_fabsq]: Ditto.
17748         [__builtin_copysignq]: Ditto.
17749         (ix86_expand_builtin) [IX86_BUILTIN_INFQ]: Expand builtin.
17750         [IX86_BUILTIN_FABSQ]: Expand builtin using ix86_expand_unop_builtin().
17751         [IX86_BUILTIN_COPYSIGNQ]: Expand builtin using
17752         ix86_expand_binop_builtin().
17753
17754 2007-06-07  Bob Wilson  <bob.wilson@acm.org>
17755
17756         * config/xtensa/lib1funcs.asm: Clean up whitespace.
17757
17758 2007-06-07  Steve Ellcey  <sje@cup.hp.com>
17759
17760         PR target/31850
17761         * rtl.h (push_to_sequence2): New.
17762         * emit-rtl.c (push_to_sequence2): New.
17763         * function.c (assign_parm_data_all): Add new fields.
17764         (assign_parm_setup_block): Call push_to_sequence2 instead of
17765         push_to_sequence.
17766         (assign_parm_setup_reg): Ditto.
17767         (assign_parm_setup_stack): Ditto.
17768         (assign_parms_unsplit_complex): Ditto.
17769         (assign_parms): Change field name.
17770
17771 2007-06-07  Zdenek Dvorak  <dvorakz@suse.cz>
17772
17773         PR tree-optimization/32220
17774         * tree-predcom.c (eliminate_temp_copies): Handle the case that loop
17775         phi node is reached before defining statement.
17776
17777 2007-06-06  Andrew Pinski  <andrew_pinski@playstation.sony.com>
17778
17779         PR tree-opt/32231
17780         * tree-vect-transform.c (vectorizable_call): Call update_stmt
17781         after changing the right hand side of the assignment.
17782
17783 2007-06-06  Eric Christopher  <echristo@apple.com>
17784
17785         * config.gcc (i?86-*-darwin*): Remove arch parameter.
17786         (x86_64-*-darwin*): Ditto.
17787         * config/i386/darwin.h (TARGET_SUBTARGET32_ISA_DEFAULT): Define.
17788         (TARGET_SUBTARGET64_ISA_DEFAULT): Ditto.
17789
17790 2007-06-06  Thomas Neumann  <tneumann@users.sourceforge.net>
17791
17792         * tree-ssa-alias-warnings.c (maybe_add_match): Cast according to the
17793         coding conventions.
17794         (add_key): Likewise.
17795         * tree-ssa.c (init_tree_ssa): Use type safe memory macros.
17796         * tree-ssa-ccp.c (ccp_fold_builtin): Avoid using C++ keywords as
17797         variable names.
17798         * tree-ssa-coalesce.c (find_coalesce_pair): Use type safe memory
17799         macros.
17800         (add_cost_one_coalesce): Likewise.
17801         * tree-ssa-copy.c (merge_alias_info): Avoid using C++ keywords as
17802         variable names. Rename orig to orig_name for consistency.
17803         * tree-ssa-dom.c (dom_thread_across_edge): Cast according to the
17804         coding conventions.
17805         (cprop_into_successor_phis): Avoid using C++ keywords as variable
17806         names.
17807         (record_equivalences_from_stmt): Likewise.
17808         * tree-ssa-dse.c (dse_initialize_block_local_data): Cast according to
17809         the coding conventions.
17810         (memory_ssa_name_same): Likewise.
17811         (dse_optimize_stmt): Likewise.
17812         (dse_record_phis): Likewise.
17813         (dse_finalize_block): Likewise.
17814         * tree-ssa-loop-im.c (outermost_invariant_loop_expr): Avoid using C++
17815         keywords as variable names.
17816         (may_move_till): Cast according to the coding conventions.
17817         (force_move_till_expr): Avoid using C++ keywords as variable names.
17818         (force_move_till): Cast according to the coding conventions.
17819         (memref_hash): Likewise.
17820         (memref_eq): Likewise.
17821         (gather_mem_refs_stmt): Likewise.
17822         * tree-ssa-loop-ivopts.c (contains_abnormal_ssa_name_p): Avoid
17823         using C++ keywords as variable names.
17824         (idx_find_step): Cast according to the coding conventions.
17825         (idx_record_use): Likewise.
17826         (find_depends): Likewise.
17827         (prepare_decl_rtl): Likewise.
17828         (mbc_entry_hash): Likewise.
17829         (mbc_entry_eq): Likewise.
17830         * tree-ssa-loop-niter.c (SWAP): Use the correct the type for tmp.
17831         (simplify_replace_tree): Avoid using C++ keywords as variable names.
17832         (idx_infer_loop_bounds): Cast according to the coding conventions.
17833         * tree-ssa-loop-prefetch.c (idx_analyze_ref): Likewise.
17834         * tree-ssa-math-opts.c (occ_new ): Likwise.
17835         * tree-ssanames.c (duplicate_ssa_name_ptr_info): Use type safe memory
17836         macros.
17837         * tree-ssa-operands.c (add_def_op): Avoid using C++ keywords as
17838         variable names.
17839         (add_use_op): Likewise.
17840         (add_vop): Likewise.
17841         (add_vuse_op): Likewise.
17842         (add_vdef_op): Likewise.
17843         (get_expr_operands): Likewise.
17844         (push_stmt_changes): Use type safe memory macros.
17845         * tree-ssa-phiopt.c (replace_phi_edge_with_variable): Avoid using C++
17846         keywords as variable names.
17847         (conditional_replacement): Likewise.
17848         (minmax_replacement): Likewise.
17849         (abs_replacement): Likewise.
17850         * tree-ssa-pre.c (create_expression_by_pieces): Cast according to the
17851         coding conventions.
17852         (insert_fake_stores): Avoid using C++ keywords as variable names.
17853         * tree-ssa-reassoc.c (add_to_ops_vec): Cast according to the coding
17854         conventions.
17855         * tree-ssa-structalias.c (heapvar_lookup): Likewise.
17856         (heapvar_insert): Use type safe memory macros.
17857         (new_var_info): Cast according to the coding conventions.
17858         (new_constraint): Likewise.
17859         (remove_preds_and_fake_succs): Use type safe memory macros.
17860         * tree-ssa-threadupdate.c (thread_block): Cast according to the coding
17861         conventions.
17862         (thread_single_edge): Likewise.
17863         (thread_through_loop_header): Likewise.
17864
17865 2007-06-06  Eric Christopher  <echristo@apple.com>
17866
17867         * config/i386/i386.c (override_options): Move handling
17868         of TARGET_SUBTARGET* earlier.
17869
17870 2007-06-06  Paolo Bonzini  <bonzini@gnu.org>
17871
17872         * genmodes.c (tagged_printf, emit_insn_modes_h): Don't
17873         use %n on printf.
17874
17875 2007-06-06  Zdenek Dvorak  <dvorakz@suse.cz>
17876
17877         * haifa-sched.c (restore_bb_notes): Clear bb field of the notes
17878         emited outside of basic block.
17879         * cfgbuild.c (find_bb_boundaries): Clear bb field for insns between
17880         the created blocks.
17881         * rtl.h (delete_insn_chain): Declaration changed.
17882         * cfgrtl.c (delete_insn_chain): Add option to clear bb field for
17883         non-removed insns.
17884         (rtl_delete_block, rtl_merge_blocks): Pass true to delete_insn_chain.
17885         (delete_insn_chain_and_edges, try_redirect_by_replacing_jump,
17886         rtl_tidy_fallthru_edge, cfg_layout_merge_blocks): Pass false
17887         to delete_insn_chain.
17888         (rtl_verify_flow_info_1): Verify that the insns in header and footer
17889         do not have bb field set.
17890         (rtl_verify_flow_info): Verify that insns between basic blocks do not
17891         have bb field set.
17892         * recog.c (peephole2_optimize): Add argument to delete_insn_chain call.
17893         * cfgcleanup.c (try_optimize_cfg): Ditto.
17894
17895 2007-06-06  Thomas Neumann  <tneumann@users.sourceforge.net>
17896
17897         * lambda-code.c (struct lambda_lattice_s): Add a name to the struct.
17898         (lambda_body_vector_new): Use type safe memory macros.
17899         (lambda_linear_expression_new): Likewise.
17900         (lambda_loopnest_new): Likewise.
17901         (lambda_lattice_new): Likewise.
17902         (replace_uses_equiv_to_x_with_y): Cast according to the coding
17903         conventions. Use type safe memory macros.
17904         * lambda.h (struct lambda_trans_matrix_s): Add a name to the struct.
17905         (lambda_body_vector_s): Likewise.
17906         * lambda-mat.c (lambda_matrix_new): Use type safe memory macros.
17907         * lambda-trans.c (lambda_trans_matrix_new): Likewise.
17908
17909 2007-06-06  Richard Guenther  <rguenther@suse.de>
17910
17911         * tree-ssa-forwprop.c (forward_propagate_into_cond): Return 2
17912         if we need to schedule cfg_cleanup.
17913         (tree_ssa_forward_propagate_single_use_vars): Do so.
17914
17915 2007-06-06  Ian Lance Taylor  <iant@google.com>
17916
17917         * fold-const.c (merge_ranges): If range_successor or
17918         range_predecessor fail, just return 0.
17919
17920 2007-06-06  Uros Bizjak  <ubizjak@gmail.com>
17921
17922         PR tree-optimization/32216
17923         * tree-vectorizer.c (supportable_widening_operation): Determine
17924         signedness of FIX_TRUNC_EXPR from output operand.
17925         (supportable_narrowing_operation): Ditto.
17926         * tree-vect-generic.c (expand_vector_operations_1): Determine
17927         signedness of VEC_UNPACK_FLOAT_HI_EXPR and VEC_UNPACK_FLOAT_LO_EXPR
17928         from input operand.
17929
17930 2007-06-06  Thomas Neumann  <tneumann@users.sourceforge.net>
17931
17932         * config/i386/i386.c (enum pta_flags): Move out of struct scope...
17933         (struct pta): ...from here. Change flags to unsigned to avoid
17934         excessive casting (as it is used as a bit mask).
17935         (override_options): Add casts according to the coding convenventions.
17936         (x86_64_elf_unique_section): Likewise.
17937         (examine_argument): Avoid using C++ keywords as variable names.
17938         (construct_container): Likewise.
17939         (legitimize_pic_address): Likewise.
17940         (get_dllimport_decl): Cast according to the coding conventions. Use
17941         type safe memory macros.
17942         (legitimize_address): Cast according to the coding conventions.
17943         (emit_i387_cw_initialization): Corrected the type of slot to enum
17944         ix86_stack_slot.
17945         (ix86_init_machine_status): Use type safe memory macros.
17946         (bdesc_pcmpestr): Use UNKNOWN instead of integer 0.
17947         (bdesc_pcmpistr): Likewise.
17948         (bdesc_crc32): Likewise.
17949         (bdesc_sse_3arg): Likewise.
17950         (bdesc_2arg): Likewise.
17951         (bdesc_1arg): Likewise.
17952         (ix86_expand_sse_pcmpestr): Cast according to the coding conventions.
17953         (ix86_expand_sse_pcmpistr): Likewise.
17954         (ix86_expand_vec_set_builtin): Use EXPAND_NORMAL instead of integer 0.
17955         (ix86_builtin_vectorized_function): Change the type of fn to unsigned
17956         int to match the langhook definition.
17957         (ix86_builtin_conversion): Change the type of code to unsigned init to
17958         match the langhook definition.
17959         (ix86_preferred_reload_class): Avoid using C++ keywords as variable
17960         names.
17961         (ix86_preferred_output_reload_class): Likewise.
17962         (ix86_cannot_change_mode_class): Likewise.
17963         (ix86_memory_move_cost): Likewise.
17964         (ix86_rtx_costs): Cast the outer_code parameter to enum rtx_code to
17965         avoid excessive casting later on.
17966         (x86_output_mi_thunk): Avoid using C++ keywords as variable names.
17967
17968 2007-06-06  Uros Bizjak  <ubizjak@gmail.com>
17969
17970         * config/i386/sse.md (sse4_2_pcmpestr_cconly): Prefer pcmpestrm
17971         as flags setting insn.
17972         (sse4_2_pcmpistr_cconly): Prefer pcmpistrm as flags setting insn.
17973
17974 2007-06-06  Uros Bizjak  <ubizjak@gmail.com>
17975
17976         * config/i386/i386.md (UNSPEC_ROUNDP, UNSPEC_ROUNDS): Remove.
17977         (UNSPEC_ROUND): New.
17978         ("sse4_1_round<mode>2"): New insn pattern.
17979         ("rint<mode>2"): Expand using "sse4_1_round<mode>2" pattern for
17980         SSE4.1 targets.
17981         ("floor<mode>2"): Rename from floordf2 and floorsf2.  Macroize
17982         expander using SSEMODEF mode macro.  Expand using
17983         "sse4_1_round<mode>2" pattern for SSE4.1 targets.
17984         ("ceil<mode>2"): Rename from ceildf2 and ceilsf2.  Macroize
17985         expander using SSEMODEF mode macro.  Expand using
17986         "sse4_1_round<mode>2" pattern for SSE4.1 targets.
17987         ("btrunc<mode>2"): Rename from btruncdf2 and btruncsf2.  Macroize
17988         expander using SSEMODEF mode macro.  Expand using
17989         "sse4_1_round<mode>2" pattern for SSE4.1 targets.
17990         * config/i386/sse.md ("sse4_1_roundpd", "sse4_1_roundps"): Use
17991         UNSPEC_ROUND instead of UNSPEC_ROUNDP.
17992         ("sse4_1_roundsd", "sse4_1_roundss"): Use UNSPEC_ROUND instead of
17993         UNSPEC_ROUNDS.
17994
17995 2007-06-06  Jan Sjodin  <jan.sjodin@amd.com>
17996             Sebastian Pop  <sebpop@gmail.com>
17997
17998         * lambda.h (build_linear_expr): New.
17999         * lambda-code.c (lbv_to_gcc_expression, lle_to_gcc_expression):
18000         Use build_linear_expr, call fold and force_gimple_operand.
18001         (lambda_loopnest_to_gcc_loopnest): Check that there is
18002         something to insert.
18003         * testsuite/gcc.dg/tree-ssa/ltrans-6.c: New.
18004
18005 2007-06-05  Joerg Wunsch  <j.gnu@uriah.heep.sax.de>
18006
18007         PR preprocessor/23479
18008         * doc/extend.texi: Document the 0b-prefixed binary integer
18009         constant extension.
18010
18011 2007-06-05  Uros Bizjak  <ubizjak@gmail.com>
18012
18013         PR tree-optimization/32215
18014         * tree-vectorizer.c (supportable_widening_operation): Return false
18015         for unsupported FIX_TRUNC_EXPR tree code.
18016         (supportable_narrowing_operation): Ditto for FLOAT_EXPR tree code.
18017
18018 2007-06-06  Nathan Froyd  <froydnj@codesourcery.com>
18019
18020         * config/rs6000/rs6000.h (FIXED_SCRATCH): Use r0 as a scratch
18021         register on SPE targets.  Change documentation to reflect
18022         reality.
18023         * config/rs6000/rs6000.c (rs6000_conditional_register_usage):
18024         Change FIXED_SCRATCH to 14 and document why we're keeping r14
18025         out of the register allocation pool.
18026         (rs6000_reg_live_or_pic_offset_p): New function.
18027         (rs6000_emit_prologue): Move the actual saving of LR up to free
18028         r0 for holding r11.  Split saving of SPE 64-bit registers into
18029         its own case.  Ensure that offsets will always be in-range for
18030         'evstdd' by using r11 as a scratch register to point at the start
18031         of the SPE save area.  Save r11 if necessary, as it is the static
18032         chain register.
18033         (rs6000_emit_epilogue): Split restoring of SPE 64-bit registers
18034         into its own case.  Ensure that offsets will always be in-range
18035         for 'evldd' by using r11 as a scratch register to point at the
18036         start of the SPE save area.  Also adjust r11 when restoring
18037         the stack pointer to compensate for pre-loading r11.
18038
18039 2007-06-05  Thomas Neumann  <tneumann@users.sourceforge.net>
18040
18041         * cfg.c (init_flow): Use type safe memory macros.
18042         (alloc_block): Likewise.
18043         (unchecked_make_edge): Likewise.
18044         (dump_flow_info): Avoid using C++ keywords as variable names.
18045         (copy_original_table_clear): Cast according to the coding conventions.
18046         (copy_original_table_set): Likewise.
18047         * cfgexpand (label_rtx_for_bb): Likewise.
18048         (expand_gimple_basic_block): Likewise.
18049         * cfghooks.c (dump_bb): Likewise.
18050         (lv_adjust_loop_header_phi): Avoid using C++ keywords as
18051         variable names.
18052         (lv_add_condition_to_bb): Likewise.
18053         * cfglayout (relink_block_chain): Cast according to the coding
18054         conventions.
18055         (fixup_reorder_chain): Likewise.
18056         (fixup_fallthru_exit_predecessor): Likewise.
18057         * cfgloop.c (glb_enum_p): Likewise.
18058         (get_exit_description): Likewise.
18059         (dump_recorded_exit): Likewise.
18060         * cfgloop.h (enum loop_estimation): Move out of struct scope...
18061         (struct loop): ... from here.
18062         * cfgloopmanip.c (rpe_enum_p): Cast according to the coding
18063         conventions.
18064         * cfgrtl.c (rtl_create_basic_block): Likewise.
18065         (rtl_split_block): Likewise.
18066         (rtl_dump_bb): Likewise.
18067         (cfg_layout_split_block): Likewise.
18068         (init_rtl_bb_info): Use typesafe memory macros.
18069
18070         * graphds.h (struct graph_edge): Renamed edge to graph_edge.
18071         * graphds.h: Updated all usages of edge to graph_edge.
18072         * graphds.c: Likewise.
18073         * cfgloopanal.c: Likewise.
18074
18075 2007-06-05  Ian Lance Taylor  <iant@google.com>
18076
18077         * tree-vrp.c (compare_values_warnv): Check TREE_NO_WARNING on a
18078         PLUS_EXPR or MINUS_EXPR node before setting *strict_overflow_p.
18079         (extract_range_from_assert): Set TREE_NO_WARNING when creating an
18080         expression.
18081         (test_for_singularity): Likewise.
18082
18083 2007-06-05  H.J. Lu  <hongjiu.lu@intel.com>
18084
18085         * config/i386/constraints.md ("Y2"): Replaced by ...
18086         ("Yt"): This.
18087         * config/i386/i386.md: Likewise.
18088         * config/i386/mmx.md: Likewise.
18089         * config/i386/sse.md: Likewise.
18090
18091 2007-06-05  H.J. Lu  <hongjiu.lu@intel.com>
18092
18093         * config/i386/constraints.md ("z"): Replaced by ...
18094         ("Y0"): This.
18095         * config/i386/sse.md (sse4_1_blendvpd): Likewise.
18096         (sse4_1_blendvps): Likewise.
18097         (sse4_1_pblendvb): Likewise.
18098         (sse4_2_pcmpestr): Likewise.
18099         (sse4_2_pcmpestrm): Likewise.
18100         (sse4_2_pcmpestr_cconly): Likewise.
18101         (sse4_2_pcmpistr): Likewise.
18102         (sse4_2_pcmpistrm): Likewise.
18103         (sse4_2_pcmpistr_cconly): Likewise.
18104
18105 2007-06-05  Razya Ladelsky  <razya@il.ibm.com>
18106
18107         * matrix-reorg.c (transform_access_sites): Fix computation.
18108         (transform_allocation_sites): Same.
18109
18110 2007-06-05  Uros Bizjak  <ubizjak@gmail.com>
18111
18112         * config/i386/i386.c (override_options): Use
18113         TARGET_SUBTARGET32_ISA_DEFAULT to select default ix86_isa_flags.
18114
18115 2007-06-05  Uros Bizjak  <ubizjak@gmail.com>
18116
18117         * config/i386/predicates.md (reg_not_xmm0_operand): New predicate.
18118         (nonimm_not_xmm0_operand): Ditto.
18119         * config/i386/sse.md ("sse4_1_blendvpd"): Use "reg_not_xmm0_operand"
18120         as operand[0] and operand[1] predicate.  Use "nonimm_not_xmm0_operand"
18121         as operand[2] predicate.  Require "z" class XMM register for
18122         operand[3].  Adjust asm template.
18123         ("sse4_1_blendvpd"): Ditto.
18124         ("sse4_1_pblendvb"): Ditto.
18125         * config/i386/i386.c (ix86_expand_sse_4_operands_builtin): Do not
18126         force op2 into xmm0 register for variable blend instructions.
18127
18128 2007-06-04  Tom Tromey  <tromey@redhat.com>
18129
18130         * c-tree.h (start_enum): Update.
18131         (build_enumerator): Likewise.
18132         * c-decl.c (enum_next_value): Removed.
18133         (enum_overflow): Likewise.
18134         (start_enum): Add c_enum_contents argument.  Don't use globals.
18135         (build_enumerator): Likewise.
18136         * c-tree.h (struct c_enum_contents): New struct.
18137
18138 2007-06-04  Tom Tromey  <tromey@redhat.com>
18139
18140         * c-common.c (c_common_get_alias_set): Fix indentation.
18141
18142 2007-06-04  Ian Lance Taylor  <iant@google.com>
18143
18144         * tree-vrp.c (adjust_range_with_scev): When loop is not expected
18145         to overflow, reduce overflow infinity to regular infinity.
18146         (vrp_var_may_overflow): New static function.
18147         (vrp_visit_phi_node): Check vrp_var_may_overflow.
18148
18149 2007-06-04  Kazu Hirata  <kazu@codesourcery.com>
18150
18151         * stor-layout.c (layout_type): Remove duplicate code.
18152
18153 2007-06-04  Uros Bizjak  <ubizjak@gmail.com>
18154
18155         PR c/32191
18156         * c-common.c (c_define_builtins): Call targetm.init_builtins ()
18157         before build_common_builtin_nodes ().
18158
18159 2007-06-04  Steve Ellcey  <sje@cup.hp.com>
18160
18161         PR target/31733
18162         * cfgrtl.c (rtl_verify_flow_info): Skip notes when looking for barrier.
18163
18164 2007-06-04  Jan Hubicka  <jh@suse.cz>
18165
18166         * tree-predcom.c (replace_ref_with, initialize_root_vars_lm,
18167         reassociate_to_the_same_stmt): Call build_gimple_modify_stmt
18168         instead of _stat version.
18169
18170 2007-06-03  Zdenek Dvorak  <dvorakz@suse.cz>
18171
18172         PR tree-optimization/32194
18173         * tree-predcom.c (determine_offset): Check that both references have
18174         the same type.
18175
18176 2007-06-03  Zdenek Dvorak  <dvorakz@suse.cz>
18177
18178         * cfgloopmanip.c (remove_path, loopify, duplicate_loop_to_header_edge):
18179         Change dom_bbs to vector.  Add argument to iterate_fix_dominators call.
18180         * loop-unroll.c (unroll_loop_runtime_iterations): Ditto.
18181         * tree-cfg.c (tree_duplicate_sese_region): Change doms to vector.
18182         Add argument to iterate_fix_dominators call.
18183         (remove_edge_and_dominated_blocks): Pass vector to bbs_to_fix_dom.
18184         * gcse.c (hoist_code): Change domby to vector.
18185         * cfghooks.c (make_forwarder_block): Change doms_to_fix to vector.
18186         Add argument to iterate_fix_dominators call.
18187         * loop-doloop.c (doloop_modify): Changed recount_dominator to
18188         recompute_dominator.
18189         * lambda-code.c (perfect_nestify): Ditto.
18190         * cfgloopanal.c: Include graphds.h.
18191         (struct edge, struct vertex, struct graph, dump_graph, new_graph,
18192         add_edge, dfs, for_each_edge, free_graph): Moved to graphds.c.
18193         (mark_irreducible_loops): Use graphds_scc.  Remove argument from
18194         add_edge call.
18195         * graphds.c: New file.
18196         * graphds.h: New file.
18197         * dominance.c: Include vecprim.h, pointer-set.h and graphds.h.
18198         (get_dominated_by, get_dominated_by_region): Change return type to
18199         vector.
18200         (verify_dominators): Recompute all dominators and compare the results.
18201         (recount_dominator): Renamed to ...
18202         (recompute_dominator): ... this.  Do not check that the block is
18203         dominated by entry.
18204         (iterate_fix_dominators): Reimplemented.
18205         (prune_bbs_to_update_dominators, root_of_dom_tree,
18206         determine_dominators_for_sons): New functions.
18207         * et-forest.c (et_root): New function.
18208         * et-forest.h (et_root): Declare.
18209         * Makefile.in (graphds.o): Add.
18210         (cfgloopanal.o): Add graphds.h dependency.
18211         (dominance.o): Add graphds.h, vecprim.h and pointer-set.h dependency.
18212         * basic-block.h (get_dominated_by, get_dominated_by_region,
18213         iterate_fix_dominators): Declaration changed.
18214         (recount_dominator): Renamed to ...
18215         (recompute_dominator): ... this.
18216         * tree-ssa-threadupdate.c (thread_block): Free dominance info.
18217         (thread_through_all_blocks): Do not free dominance info.
18218
18219 2007-06-03  Andreas Schwab  <schwab@suse.de>
18220
18221         * config/m68k/m68k.c (override_options): Don't override
18222         REAL_MODE_FORMAT.
18223         * config/m68k/m68k-modes.def (SF, DF): Define to use
18224         motorola_single_format and motorola_double_format, resp.
18225         * real.c (motorola_single_format): Renamed from
18226         coldfire_single_format.
18227         (motorola_double_format): Renamed from coldfire_double_format.
18228         (encode_ieee_extended): Generate a proper canonical NaN image
18229         respecting canonical_nan_lsbs_set.
18230         (ieee_extended_motorola_format): Set canonical_nan_lsbs_set to
18231         true.
18232         * real.h: Adjust declarations.
18233
18234 2007-06-03  Kaz Kojima  <kkojima@gcc.gnu.org>
18235
18236         PR target/32163
18237         * config/sh/sh.md (symGOT_load): Don't schedule insns when
18238         the symbol is generated with the stack protector.
18239
18240 2007-06-03  Kazu Hirata  <kazu@codesourcery.com>
18241
18242         * config/m68k/m68k.c (m68k_attribute_table): Add "interrupt".
18243         (m68k_get_function_kind): Return m68k_fk_interrupt_handler on
18244         "interrupt".
18245         * doc/extend.texi (interrupt): Mention m68k.
18246
18247 2007-06-02  Uros Bizjak  <ubizjak@gmail.com>
18248
18249         * config/i386/i386.c (ix86_expand_sse_4_operands_builtin): Call
18250         safe_vector_operand() if input operand is VECTOR_MODE_P operand.
18251         (ix86_expand_sse_pcmpestr): Do not check operands for
18252         "register_operand", when insn operand predicate is "register_operand".
18253         (ix86_expand_sse_pcmpistr): Ditto.
18254
18255 2007-06-02  H.J. Lu  <hongjiu.lu@intel.com>
18256             Uros Bizjak  <ubizjak@gmail.com>
18257
18258         * config/i386/i386.h (enum reg_class) [SSE_FIRST_REG]: New.
18259         (SSE_CLASS_P): Use reg_class_subset_p between SSE_REGS.
18260         (REG_CLASS_NAMES): Add "FIRST_SSE_REG" string.
18261         (REG_CLASS_CONTENTS): Add members of FIRST_SSE_REG class.
18262         * config/i386/constraints.md ("z"): New register constraint
18263         for members of SSE_FIRST_REG class.
18264         * config/i386/i386-modes.def (CCA, CCC, CCO, CCS): New compare modes.
18265         * config/i386/i386.c (regclass_map): Change class of %xmm0 to
18266         SSE_FIRST_REG class.
18267         (put_condition_code) [EQ, NE]: Output suffixes for new compare modes.
18268         (ix86_cc_modes_compatible): Handle CCA, CCC, CCO and CCS modes.
18269         (IX86_BUILTIN_PCMPESTRI128): New for SSE4.2.
18270         (IX86_BUILTIN_PCMPESTRM128): Likewise.
18271         (IX86_BUILTIN_PCMPESTRA128): Likewise.
18272         (IX86_BUILTIN_PCMPESTRC128): Likewise.
18273         (IX86_BUILTIN_PCMPESTRO128): Likewise.
18274         (IX86_BUILTIN_PCMPESTRS128): Likewise.
18275         (IX86_BUILTIN_PCMPESTRZ128): Likewise.
18276         (IX86_BUILTIN_PCMPISTRI128): Likewise.
18277         (IX86_BUILTIN_PCMPISTRM128): Likewise.
18278         (IX86_BUILTIN_PCMPISTRA128): Likewise.
18279         (IX86_BUILTIN_PCMPISTRC128): Likewise.
18280         (IX86_BUILTIN_PCMPISTRO128): Likewise.
18281         (IX86_BUILTIN_PCMPISTRS128): Likewise.
18282         (IX86_BUILTIN_PCMPISTRZ128): Likewise.
18283         (struct builtin_description): Change "flag" field to unsigned.
18284         (bdesc_pcmpestr): New builtin description table.
18285         (bdesc_pcmpistr): Likewise.
18286         (ix86_init_mmx_sse_builtins): Define int_ftype_v16qi_int_v16qi_int_int,
18287         v16qi_ftype_v16qi_int_v16qi_int_int and int_ftype_v16qi_v16qi_int.
18288         Initialize pcmp[ei]str[im] insns for SSE4.2.
18289         (ix86_expand_sse_pcmpestr): New subroutine of ix86_expand_builtin.
18290         (ix86_expand_sse_pcmpistr): Likewise.
18291         (ix86_expand_builtin): Expand pcmp[ei]str[im] builtins for SSE4.2.
18292         * config/i386/i386.md (UNSPEC_PCMPESTR): New for SSE4.2.
18293         (UNSPEC_PCMPISTR): Likewise.
18294         * config/i386/sse.md (sse4_2_pcmpestr): New insn patern and splitter.
18295         (sse4_2_pcmpestri):New isns pattern.
18296         (sse4_2_pcmpestrm): Likewise.
18297         (sse4_2_pcmpestr_cconly): Likewise.
18298         (sse4_2_pcmpistr): New insn patern and splitter.
18299         (sse4_2_pcmpistri):New isns pattern.
18300         (sse4_2_pcmpistrm): Likewise.
18301         (sse4_2_pcmpistr_cconly): Likewise.
18302         * config/i386/smmintrin.h: Enable pcmp[ei]str[im] intrinsics
18303         in SSE4.2.
18304
18305 2007-06-01  David Daney  <ddaney@avtrex.com>
18306
18307         * config/mips/mips.c (mips_output_mi_thunk): Only load gp if not
18308         LOADGP_ABSOLUTE and not binds_local_p.
18309
18310 2007-06-01  Geoffrey Keating  <geoffk@apple.com>
18311
18312         * config/darwin.h (LINK_SPEC): Pass -fpie through to the linker.
18313
18314 2007-06-01  Ian Lance Taylor  <iant@google.com>
18315
18316         * tree-vrp.c (compare_name_with_value): Always set
18317         used_strict_overflow if we get a result from the variable itself.
18318
18319 2007-06-01  Ian Lance Taylor  <iant@google.com>
18320
18321         PR rtl-optimization/31455
18322         * lower-subreg.c (find_decomposable_subregs): Don't decompose
18323         subregs which have a cast between modes which are not tieable.
18324
18325 2007-06-01  Uros Bizjak  <ubizjak@gmail.com>
18326
18327         * expr.c (force_operand) [DIV, MOD, UDIV, UMOD, ASHIFTRT]: Remove
18328         breaks after return statements.
18329
18330 2007-06-01  Kaz Kojima  <kkojima@gcc.gnu.org>
18331
18332         * config/sh/sh.c (fpscr_set_from_mem): Call get_free_reg
18333         only after no_new_pseudos.
18334
18335 2007-05-31  Eric Christopher  <echristo@apple.com>
18336
18337         * expr.c (convert_move): Assert that we don't have a BLKmode
18338         operand.
18339         (store_expr): Handle BLKmode moves by calling emit_block_move.
18340
18341 2007-05-31  Daniel Berlin  <dberlin@dberlin.org>
18342
18343         * c-typeck.c (build_indirect_ref): Include type in error message.
18344         (build_binary_op): Pass types to binary_op_error.
18345         * c-common.c (binary_op_error): Take two type arguments, print out
18346         types with error.
18347         * c-common.h (binary_op_error): Update prototype.
18348
18349 2007-05-31  H.J. Lu  <hongjiu.lu@intel.com>
18350
18351         * config/i386/i386.c: Correct coments on -mno-sse4.
18352
18353 2007-05-31  H.J. Lu  <hongjiu.lu@intel.com>
18354
18355         * config.gcc (i[34567]86-*-*): Add nmmintrin.h to extra_headers.
18356         (x86_64-*-*): Likewise.
18357         * config/i386/i386.c (OPTION_MASK_ISA_MMX_UNSET): New.
18358         (OPTION_MASK_ISA_3DNOW_UNSET): Likewise.
18359         (OPTION_MASK_ISA_SSE_UNSET): Likewise.
18360         (OPTION_MASK_ISA_SSE2_UNSET): Likewise.
18361         (OPTION_MASK_ISA_SSE3_UNSET): Likewise.
18362         (OPTION_MASK_ISA_SSSE3_UNSET): Likewise.
18363         (OPTION_MASK_ISA_SSE4_1_UNSET): Likewise.
18364         (OPTION_MASK_ISA_SSE4_2_UNSET): Likewise.
18365         (OPTION_MASK_ISA_SSE4): Likewise.
18366         (OPTION_MASK_ISA_SSE4_UNSET): Likewise.
18367         (OPTION_MASK_ISA_SSE4A_UNSET): Likewise.
18368         (ix86_handle_option): Use OPTION_MASK_ISA_*_UNSET.  Handle SSE4.2.
18369         (override_options): Support SSE4.2.
18370         (ix86_build_const_vector): Support SImode and DImode.
18371         (ix86_build_signbit_mask): Likewise.
18372         (ix86_expand_int_vcond): Support V2DImode.
18373         (IX86_BUILTIN_CRC32QI): New for SSE4.2.
18374         (IX86_BUILTIN_CRC32HI): Likewise.
18375         (IX86_BUILTIN_CRC32SI): Likewise.
18376         (IX86_BUILTIN_CRC32DI): Likewise.
18377         (IX86_BUILTIN_PCMPGTQ): Likewise.
18378         (bdesc_crc32): Likewise.
18379         (bdesc_sse_3arg): Likewise.
18380         (ix86_expand_crc32): Likewise.
18381         (ix86_init_mmx_sse_builtins): Support SSE4.2.
18382         (ix86_expand_builtin): Likewise.
18383         * config/i386/i386.h (TARGET_CPU_CPP_BUILTINS): Define
18384         __SSE4_2__ for -msse4.2.
18385         * config/i386/i386.md (UNSPEC_CRC32): New for SSE4.2.
18386         (CRC32MODE): Likewise.
18387         (crc32modesuffix): Likewise.
18388         (crc32modeconstraint): Likewise.
18389         (sse4_2_crc32<mode>): Likewise.
18390         (sse4_2_crc32di): Likewise.
18391         * config/i386/i386.opt (msse4.2): New for SSE4.2.
18392         (msse4): Likewise.
18393         * config/i386/nmmintrin.h: New. The dummy SSE4.2 intrinsic header file.
18394         * config/i386/smmintrin.h: Add SSE4.2 intrinsics.
18395         * config/i386/sse.md (sse4_2_gtv2di3): New pattern for SSE4.2.
18396         (vcond<mode>): Use SSEMODEI instead of SSEMODE124.
18397         (vcondu<mode>): Likewise.
18398         * doc/extend.texi: Document SSE4.2 built-in functions.
18399         * doc/invoke.texi: Document -msse4.2/-msse4.
18400
18401 2007-05-31  Zdenek Dvorak  <dvorakz@suse.cz>
18402
18403         PR tree-optimization/32160
18404         * tree-predcom.c (predcom_tmp_var): New function.  Mark created
18405         variable as gimple reg.
18406         (initialize_root_vars, initialize_root_vars_lm): Use predcom_tmp_var.
18407
18408 2007-05-31  Kazu Hirata  <kazu@codesourcery.com>
18409
18410         * gcc.c (main): Don't consider linker options when issuing the
18411         warning about a linker input file not being used.
18412
18413 2007-05-30  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
18414
18415         * tree-vrp.c (compare_names): Initialize sop.
18416
18417 2007-05-30  Dirk Mueller  <dmueller@suse.de>
18418
18419         * cgraphunit.c (cgraph_analyze_function): Remove
18420         computation of inline parameters.
18421
18422 2007-05-30  Uros Bizjak  <ubizjak@gmail.com>
18423
18424         * config/i386/darwin.h (TARGET_SUBTARGET_DEFAULT): Undef before define.
18425
18426 2007-05-30  Richard Sandiford  <richard@codesourcery.com>
18427
18428         * config.gcc (arm-wrs-vxworks): Remove dbxelf.h from tm_file.
18429         Add vx-common.h.  Include vxworks.h between vx-common.h and
18430         arm/vxworks.h.
18431         * config/vx-common.h (DWARF2_UNWIND_INFO): Undefine before
18432         redefining.
18433         * config/vxworks.h (TARGET_ASM_CONSTRUCTOR): Likewise.
18434         (TARGET_ASM_DESTRUCTOR): Likewise.
18435         * config/arm/vxworks.h (TARGET_OS_CPP_BUILTINS): Check arm_arch_xscale
18436         instead of arm_is_xscale.  Use VXWORKS_OS_CPP_BUILTINS.
18437         (OVERRIDE_OPTIONS, SUBTARGET_CPP_SPEC): Define.
18438         (CC1_SPEC): Add -tstrongarm.  Line up backslashes.
18439         (VXWORKS_ENDIAN_SPEC): Define.
18440         (ASM_SPEC): Add VXWORKS_ENDIAN_SPEC.
18441         (LIB_SPEC, STARTFILE_SPEC, ENDFILE_SPEC): Redefine to their
18442         VXWORKS_* equivalents.
18443         (LINK_SPEC): Likewise, but add VXWORKS_ENDIAN_SPEC.
18444         (ASM_FILE_START): Delete.
18445         (TARGET_VERSION): Reformat.
18446         (FPUTYPE_DEFAULT, FUNCTION_PROFILER): Define.
18447         (DEFAULT_STRUCTURE_SIZE_BOUNDARY): Define.
18448         * config/arm/t-vxworks (LIB1ASMSRC, LIB1ASMFUNCS): Define.
18449         (FPBIT, DPBIT): Define.
18450         (fp-bit.c, dp-bit.c): New rules.
18451         (MULTILIB_OPTIONS): Add strongarm, -mrtp and -mrtp/-fPIC multilibs.
18452         (MULTILIB_MATCHES, MULTILIB_EXCEPTIONS): Define.
18453         * config/arm/arm-protos.h (arm_emit_call_insn): Declare.
18454         * config/arm/arm.h: Include vxworks-dummy.h.
18455         * config/arm/arm.c (arm_elf_asm_constructor, arm_elf_asm_destructor):
18456         Mark with ATTRIBUTE_UNUSED.
18457         (arm_override_options): Do not allow VxWorks RTP PIC to be used
18458         for Thumb.  Force r9 to be the PIC register for VxWorks RTPs and
18459         make it incompatible with -msingle-pic-base.
18460         (arm_function_ok_for_sibcall): Return false for calls that might
18461         go through a VxWorks PIC PLT entry.
18462         (require_pic_register): New function, split out from...
18463         (legitimize_pic_address): ...here.  Do not use GOTOFF accesses
18464         for VxWorks RTPs.
18465         (arm_load_pic_register): Handle the VxWorks RTP initialization
18466         sequence.  Use pic_reg as a shorthand for cfun->machine->pic_reg.
18467         (arm_emit_call_insn): New function.
18468         (arm_assemble_integer): Do not use GOTOFF accesses for VxWorks RTP.
18469         * config/arm/arm.md (UNSPEC_PIC_OFFSET): New unspec number.
18470         (pic_offset_arm): New pattern.
18471         (call, call_value): Use arm_emit_call_insn.
18472         (call_internal, call_value_internal): New expanders.
18473         * config/arm/lib1funcs.asm (__PLT__): Define to empty for
18474         VxWorks unless __PIC__.
18475
18476 2007-05-30  Eric Christopher  <echristo@gmail.com>
18477
18478         * genrecog.c: Include regs.h in generated file.
18479         * genemit.c: Ditto. Fix up formatting.
18480         * config/mn10300/constraints.md: New.
18481         * config/mn10300/mn10300.md: Include.
18482         * config/mn10300/mn10300.c(mn10300_secondary_reload_class):
18483         Fix up for removed macro.
18484         * config/mn10300/predicates.md (call_address_operand): Ditto.
18485         * config/mn10300/mn10300.h (REG_CLASS_FROM_LETTER): Delete.
18486         (CONST_OK_FOR_I): Ditto.
18487         (CONST_OK_FOR_J): Ditto.
18488         (CONST_OK_FOR_K): Ditto.
18489         (CONST_OK_FOR_L): Ditto.
18490         (CONST_OK_FOR_M): Ditto.
18491         (CONST_OK_FOR_N): Ditto.
18492         (CONST_DOUBLE_OK_FOR_LETTER_P): Ditto.
18493         (OK_FOR_Q): Ditto.
18494         (OK_FOR_R): Ditto.
18495         (OK_FOR_T): Ditto.
18496         (EXTRA_CONSTRAINT): Ditto.
18497
18498 2007-05-30 Uros Bizjak <ubizjak@gmail.com>
18499
18500         * config/i386/i386.h (MASK_64BIT, MASK_MMX, MASK_3DNOW*, MASK_SSE*):
18501         Remove defines.
18502         * config/i386/biarch.h (TARGET_64BIT_DEFAULT): Define to
18503         OPTION_MASK_ISA_64BIT.
18504         * config/i386/i386.c: Rename MASK_* macros to OPTION_MASK_ISA_*.
18505
18506 2007-05-30  Richard Guenther  <rguenther@suse.de>
18507
18508         PR middle-end/32152
18509         * gimplify.c (gimplify_omp_atomic_pipeline): Use correct
18510         types for comparison.
18511         * fold-const.c (fold_comparison): Call maybe_canonicalize_comparison
18512         with original typed arguments.
18513         * config/i386/i386.c (ix86_gimplify_va_arg): Fix type mismatches.
18514
18515 2007-05-30  Jakub Jelinek  <jakub@redhat.com>
18516
18517         PR tree-optimization/31769
18518         * except.c (duplicate_eh_regions): Clear prev_try if
18519         ERT_MUST_NOT_THROW region is inside of ERT_TRY region.
18520
18521 2007-05-30  Zdenek Dvorak  <dvorakz@suse.cz>
18522
18523         * tree-scalar-evolution.c (scev_const_prop): Do not create labels.
18524         * tree-ssa-sink.c (statement_sink_location): Return basic block and
18525         bsi of the location where statements should be inserted.
18526         (sink_code_in_bb): Take bsi from statement_sink_location.
18527         * lambda-code.c (lambda_loopnest_to_gcc_loopnest): Use bsi_after_labels
18528         instead of bsi_start.
18529         * tree-profile.c (tree_gen_ic_func_profiler): Pass BSI_NEW_STMT to
18530         bsi_insert_after.
18531         * tree-cfg.c (bsi_move_after): Pass BSI_NEW_STMT to bsi_insert_after.
18532         (bsi_move_before): Document inconsistency with bsi_move_after.
18533         (tree_redirect_edge_and_branch): Do not create labels if not necessary.
18534
18535 2007-05-30 Uros Bizjak <ubizjak@gmail.com>
18536
18537         * config/i386/i386.h (TARGET_ABM): New define.
18538         (TARGET_POPCNT): Ditto.
18539         (TARGET_64BIT, TARGET_MMX, TARGET_3DNOW, TARGET_3DNOW_A, TARGET_SSE*):
18540         New temporary defines to redefine from OPTION_ISA_* defines.
18541         (MASK_64BIT, MASK_MMX, MASK_3DNOW, MASK_3DNOW_A, MASK_SSE*):
18542         New temporary defines to redefine from OPTION_MASK_ISA_* defines.
18543         (ix86_isa_flags): New extern int declaration.
18544         (TARGET_SUBTARGET_DEFAULT): New define.
18545         (TARGET_SUBTARGET_ISA_DEFAULT): Ditto.
18546         (TARGET_SUBTARGET32_DEFAULT): Ditto.
18547         (TARGET_SUBTARGET32_ISA_DEFAULT): Ditto.
18548         (TARGET_SUBTARGET64_ISA_DEFAULT): Ditto.
18549         * config/i386/unix.h: Undef TARGET_SUBTARGET_DEFAULT before define.
18550         * config/i386/darwin.h: Change TARGET_64BIT define to
18551         OPTION_ISA_64BIT.
18552
18553         * config/i386/i386.opt (m3dnowa): Define as undocumented option
18554         using existing "ix86_isa_flags" varible.
18555         (m32, m64): Use existing "ix86_isa_flags" variable.
18556         (mmmx, m3dnow): Ditto.
18557         (msse, msse2, msse3, mssse3, msse4.1, msse4a): Ditto.
18558         (mabm): Define as non-negative option using "x86_abm" variable.
18559         (mpopcnt): Define as non-negative option using "x86_popcnt" variable.
18560
18561         * config/i386/i386.c (ix86_arch_features) [X86_ARCH_CMOVE]:
18562         Rewrite feature test bitmap.
18563         (ix86_isa_flags): New initialized global int varible.
18564         (ix86_isa_flags_explicit): New static int variable.
18565         (ix86_handle_option): Set "ix86_isa_flags_explicit" when mmmx, m3dnow,
18566         msse, msse2, msse3, msse4.1 and msse4a option is processed.  Change
18567         i86_isa_flags and ix86_isa_flags_explicit, not target_flags and
18568         target_flags_explicit.
18569         (override_options): Remove "target_enable" and "target_disable" fields
18570         from "struct ptt". Update processor_target_table accordingly. Remove
18571         PTA_PREFETCH_SSE from processor_alias_table entry if PTE_SSE is
18572         defined and rearrange PTA_* bits.  Use "ix86_isa_flags" instead of
18573         "target_flags" and "ix86_isa_flags_explicit" instead of
18574         "target_flags_explicit" when masked with MASK_64BIT, MASK_MMX,
18575         MASK_3DNOW, MASK_3DNOW_A or MASK_SSE*.  Set "x86_abm" to true when
18576         PTA_ABM is set in processor_alias_table flags entry.  Set "x86_popcnt"
18577         to true when either of PTA_POPCNT or PTA_ABM is set in
18578         processor_alias_table flags entry.  Set "x86_prefetch_sse" to true
18579         when either of PTA_PREFETCH_SSE or PTA_SSE is set in
18580         processor_alias_table flags entry.  Remove handling of
18581         "target_enable" and "target_disable" fields of processor_target_table.
18582         Mask "target_flags" with TARGET_SUBTARGET32_DEFAULT for 32-bit
18583         targets or with TARGET_SUBTARGET64_DEFAULT for 64-bit targets.
18584         Mask "ix86_isa_flags" with TARGET_SUBTARGET32_ISA_DEFAULT for 32-bit
18585         targets or with TARGET_SUBTARGET64_ISA_DEFAULT for 64-bit targets.
18586         (def_builtin): Mask "mask" variable with "ix86_isa_flags", not
18587         "target_flags".
18588         (TARGET_DEFAULT_TARGET_FLAGS): Do not include TARGET_64BIT_DEFAULT.
18589
18590 2007-05-29  David Daney  <ddaney@avtrex.com>
18591
18592         PR gcc/31975
18593         * config/mips/mips.c (mips_output_mi_thunk): Emit
18594         NOTE_INSN_PROLOGUE_END at beginning of the thunk.
18595
18596 2007-05-29  Hui-May Chang  <hm.chang@apple.com>
18597         * config/i386/i386.c (ix86_function_regparm): Added checking of
18598         ix86_force_align_arg_pointer to determine the number of
18599         register parameters.
18600
18601 2007-05-29  Zdenek Dvorak  <dvorakz@suse.cz>
18602
18603         * tree-vectorizer.h (DR_MISALIGNMENT): Cast aux to integer.
18604         (SET_DR_MISALIGNMENT): New.
18605         * tree-vect-analyze.c (vect_compute_data_ref_alignment,
18606         vect_update_misalignment_for_peel, vect_enhance_data_refs_alignment):
18607         Use SET_DR_MISALIGNMENT.
18608         * tree-predcom.c (split_data_refs_to_components): Cast dr->aux from
18609         pointer.
18610         * tree-data-ref.c (create_data_ref, compute_all_dependences,
18611         find_loop_nest): Export.
18612         * tree-data-ref.h (struct data_reference): Change aux field to pointer.
18613         (create_data_ref, compute_all_dependences, find_loop_nest): Declare.
18614         * tree-ssa-loop-prefetch.c: Include tree-data-ref.h.
18615         (L1_CACHE_SIZE_BYTES, L2_CACHE_SIZE_BYTES, NONTEMPORAL_FRACTION):
18616         New macros.
18617         (struct mem_ref): Add field reuse_distance.
18618         (find_or_create_group, record_ref): Use XNEW instead of xcalloc.
18619         Initialize reuse_distance field.
18620         (issue_prefetch_ref): Select temporality of prefetch according to
18621         reuse_distance.
18622         (volume_of_references, volume_of_dist_vector, add_subscript_strides,
18623         self_reuse_distance, determine_loop_nest_reuse): New functions.
18624         (loop_prefetch_arrays): Call determine_loop_nest_reuse.
18625         (tree_ssa_prefetch_arrays): Dump L2 cache size.
18626         * Makefile.in (tree-ssa-loop-prefetch.o): Add TREE_DATA_REF_H
18627         dependency.
18628
18629 2007-05-29  Daniel Berlin  <dberlin@dberlin.org>
18630
18631         * tree-ssa-alias.c: Add aliasing overview.
18632
18633 2007-05-29  Zuxy Meng  <zuxy.meng@gmail.com>
18634             Danny Smith  <dannysmith@users.sourceforge.net>
18635
18636         PR target/29498
18637         * config/i386/t-crtfm: Compile crtfastmath.o with
18638         -minline-all-stringops.
18639         * config/i386/cygwin.h (ENDFILE_SPECS): Add crtfastmath.o.
18640         * config/i386/mingw32.h (ENDFILE_SPECS): Add crtfastmath.o.
18641
18642 2007-05-28  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
18643
18644         * doc/md.texi: Document constraints on HP PA-RISC.
18645
18646         * pa/constraints.md: New file.
18647         * pa.md: Include constraints.md.
18648         * pa.c (cint_ok_for_move): Avoid using CONST_OK_FOR_LETTER_P.
18649         (integer_store_memory_operand, ldil_cint_p): New functions.
18650         * pa-protos.h (integer_store_memory_operand, ldil_cint_p): Declare.
18651         * pa.h (CONST_OK_FOR_LETTER_P, CONST_DOUBLE_OK_FOR_LETTER_P,
18652         IS_RELOADING_PSEUDO_P, EXTRA_CONSTRAINT): Remove.
18653         * pa32-regs.h (REG_CLASS_FROM_LETTER): Remove.
18654         * pa64-regs.h (REG_CLASS_FROM_LETTER): Remove.
18655
18656 2007-05-28  Andrew Pinski  <Andrew_pinski@playstation.sony.com>
18657
18658         PR c/31339
18659         * c-typeck.c (build_unary_op <case PREINCREMENT_EXPR,
18660         case POSTINCREMENT_EXPR, case PREDECREMENT_EXPR,
18661         case POSTDECREMENT_EXPR>): Return the error_mark_node
18662         if either the real or imaginary parts would an
18663         error_mark_node.
18664
18665 2007-05-28  Daniel Berlin  <dberlin@dberlin.org>
18666
18667         * tree-ssa-dce.c (eliminate_unnecessary_stmts): Release LHS SSA
18668         name when we remove it from a call.
18669
18670 2007-05-28  Kazu Hirata  <kazu@codesourcery.com>
18671
18672         * targhooks.c (default_narrow_bitfield): Remove.
18673         * targhooks.h: Remove the prototype for
18674         default_narrow_bitfield.
18675
18676         * langhooks-def.h: Remove the prototype for
18677         hook_get_alias_set_0.
18678         * langhooks.c (hook_get_alias_set_0): Remove.
18679
18680         * global.c (EXECUTE_IF_CONFLICT): Remove.
18681
18682 2007-05-28  Andrew Pinski  <andrew_pinski@playstation.sony.com>
18683
18684         PR tree-opt/32100
18685         * fold-const.c (tree_expr_nonnegative_warnv_p): Don't
18686         return true when truth_value_p is true and the type
18687         is of signed:1.
18688
18689 2007-05-28  Gerald Pfeifer  <gerald@pfeifer.com>
18690
18691         * doc/install.texi (Prerequisites): We no longer require Autoconf
18692         2.13 for the top-level.
18693
18694 2007-05-28  Uros Bizjak  <ubizjak@gmail.com>
18695
18696         * target/i386/i386.c (ix86_expand_vector_move): Expand unaligned
18697         memory access via x86_expand_vector_move_misalign() only for
18698         TImode values on 32-bit targets.
18699
18700 2007-05-28  Razya Ladelsky  <razya@il.ibm.com>
18701
18702         * matrix-reorg.c: New file. Implement matrix flattening and
18703         transposing optimization.
18704         * tree-pass.h: Add matrix reorg pass.
18705         * common.opt: Add fipa-mreorg flag.
18706         * Makefile.in: Add matrix-reorg.c.
18707         * passes.c: Add matrix reorg pass.
18708         * varpool.c (add_new_static_var): New function.
18709         * cgraph.h (add_new_static_var): Declare.
18710
18711 2007-05-27  Eric Christopher  <echristo@apple.com>
18712
18713         * config/rs6000/rs6000.c (rs6000_emit_prologue): Update
18714         sp_offset depending on stack size. Save r12 depending
18715         on registers we're saving later.
18716         (rs6000_emit_epilogue): Update sp_offset depending only
18717         on stack size.
18718
18719 2007-05-27  Zdenek Dvorak  <dvorakz@suse.cz>
18720
18721         * tree-vrp.c (execute_vrp): Do not check whether current_loops == NULL.
18722         * tree-chrec.c (evolution_function_is_invariant_rec_p): Ditto.
18723         * ifcvt.c (if_convert): Ditto.
18724         * tree-ssa-threadupdate.c (thread_block): Ditto.
18725         (thread_through_all_blocks): Ditto.  Assert that loops were analysed.
18726         * tree-ssa-loop-manip.c (rewrite_into_loop_closed_ssa,
18727         verify_loop_closed_ssa): Check number_of_loops instead of
18728         current_loops.
18729         * predict.c (tree_estimate_probability): Ditto.
18730         * tree-if-conv.c (main_tree_if_conversion): Ditto.
18731         * tree-ssa-loop-ch.c (copy_loop_headers): Ditto.
18732         * modulo-sched.c (sms_schedule): Ditto.
18733         * tree-scalar-evolution.c (scev_const_prop): Ditto.
18734         (scev_finalize): Do not do anything if scev analysis was not
18735         initialized.
18736         * cfgloopanal.c (mark_irreducible_loops): Do not check whether
18737         current_loops == NULL.
18738         (mark_loop_exit_edges): Check number_of_loops instead of current_loops.
18739         * loop-init.c (loop_optimizer_init): Do not free current_loops when
18740         there are no loops.
18741         (loop_optimizer_finalize): Assert that loops were analyzed.
18742         (rtl_move_loop_invariants, rtl_unswitch, rtl_unroll_and_peel_loops,
18743         rtl_doloop): Check number_of_loops instead of current_loops.
18744         * tree-ssa-loop.c (tree_loop_optimizer_init): Do not check whether
18745         current_loops == NULL.
18746         (tree_ssa_loop_init, tree_ssa_loop_im, tree_ssa_loop_unswitch,
18747         gate_tree_vectorize tree_linear_transform, check_data_deps,
18748         tree_ssa_loop_ivcanon, tree_ssa_empty_loop, tree_ssa_loop_bounds,
18749         tree_complete_unroll, tree_ssa_loop_prefetch, tree_ssa_loop_ivopts):
18750         Check number_of_loops instead of current_loops.
18751         (tree_ssa_loop_done): Do not check whether current_loops == NULL.
18752         * tree-ssa-pre.c (fini_pre): Do not take do_fre argument.  Always
18753         free loops if available.
18754         (execute_pre): Do not pass do_fre to fini_pre.
18755
18756 2007-05-27  Tobias Burnus  <burnus@net-b.de>
18757
18758         PR middle-end/32083
18759         * real.c (mpfr_from_real): Fix sign of -Inf.
18760
18761 2007-05-27  H.J. Lu  <hongjiu.lu@intel.com>
18762
18763         * tree-vect-transform.c (vectorizable_conversion): Initialize
18764         tree_code variables to ERROR_MARK.
18765         (vectorizable_type_demotion): Likewise.
18766         (vectorizable_type_promotion): Likewise.
18767
18768 2007-05-26  Uros Bizjak  <ubizjak@gmail.com>
18769
18770         PR target/32065
18771         * config/i386/i386.md (movti): Handle push operands via
18772         ix86_expand_push().
18773
18774 2007-05-26  Kazu Hirata  <kazu@codesourcery.com>
18775
18776         * basic-block.h: Remove the prototype for merge_seq_blocks.
18777         * cfgcleanup.c (merge_seq_blocks): Remove.
18778
18779         * tree-flow.h: Remove the prototype for is_aliased_with.
18780         * tree-ssa-alias.c (is_aliased_with): Remove.
18781
18782 2007-05-26  H.J. Lu  <hongjiu.lu@intel.com>
18783
18784         * config/i386/i386-protos.h (ix86_expand_sse4_unpack): New.
18785
18786         * config/i386/i386.c (ix86_expand_sse4_unpack): New.
18787
18788         * config/i386/sse.md (vec_unpacku_hi_v16qi): Call
18789         ix86_expand_sse4_unpack if SSE4.1 is enabled.
18790         (vec_unpacks_hi_v16qi): Likewise.
18791         (vec_unpacku_lo_v16qi): Likewise.
18792         (vec_unpacks_lo_v16qi): Likewise.
18793         (vec_unpacku_hi_v8hi): Likewise.
18794         (vec_unpacks_hi_v8hi): Likewise.
18795         (vec_unpacku_lo_v8hi): Likewise.
18796         (vec_unpacks_lo_v8hi): Likewise.
18797         (vec_unpacku_hi_v4si): Likewise.
18798         (vec_unpacks_hi_v4si): Likewise.
18799         (vec_unpacku_lo_v4si): Likewise.
18800         (vec_unpacks_lo_v4si): Likewise.
18801
18802 2007-05-26  Kazu Hirata  <kazu@codesourcery.com>
18803
18804         * c-typeck.c, config/arm/arm.c, config/darwin.c,
18805         config/sh/symbian.c, gcc.c, ipa-cp.c, ipa-inline.c, loop-iv.c,
18806         omega.c, tree-ssa-loop-niter.c, treestruct.def: Fix typos and
18807         follow spelling conventions in various
18808         warning/error/diagnostic messages.
18809
18810         * config/i386/i386.c, config/pa/pa.c, config/spu/spu.c,
18811         df-problems.c, df-scan.c, domwalk.c, ebitmap.c, ebitmap.h,
18812         fold-const.c, gcc.c, ipa-type-escape.c, omega.c, omega.h,
18813         tree-ssa-coalesce.c, tree-ssa-live.c, tree-ssa-structalias.c,
18814         tree-vrp.c: Fix comment typos.  Follow spelling conventions.
18815         * doc/tm.texi: Follow spelling conventions.
18816
18817 2007-05-25  Andrew Pinski  <andrew_pinski@playstation.sony.com>
18818
18819         PR tree-opt/32090
18820         * tree-ssa-forwprop.c
18821         (forward_propagate_addr_into_variable_array_index): Remove
18822         the lhs argument.  Use the type of def_rhs instead of lhs.
18823         (forward_propagate_addr_expr_1): Update use of
18824         forward_propagate_addr_into_variable_array_index.
18825
18826 2007-05-25  Sandra Loosemore  <sandra@codesourcery.com>
18827             Nigel Stephens  <nigel@mips.com>
18828
18829         * config/mips/mips.c (mips_attribute_table): Add "near" and "far"
18830         function attributes, "far" being an alias for "long_call".
18831         (TARGET_COMP_TYPE_ATTRIBUTES): Define as mips_comp_type_attributes.
18832         (mips_near_type_p, mips_far_type_p): New.
18833         (mips_comp_type_attributes): New function to check that attributes
18834         attached to a function type are compatible.
18835         (mips_output_mi_thunk): Test SYMBOL_REF_LONG_CALL_P() rather than
18836         TARGET_LONG_CALLS when deciding whether we can do a direct sibcall
18837         to the target function of the thunk.
18838         (mips_encode_section_info): Check for "near" and "far" function
18839         attributes, and always set the SYMBOL_FLAG_LONG_CALL bit explicitly.
18840
18841         * config/mips/predicates.md (const_call_insn_operand): Test only
18842         SYMBOL_REF_LONG_CALL_P() and not TARGET_LONG_CALLS.
18843
18844         * doc/extend.texi (Function Attributes): Document MIPS "near" and
18845         "far" attributes.
18846
18847         * testsuite/gcc.target/mips/near-far-1.c: New test case.
18848         * testsuite/gcc.target/mips/near-far-2.c: New test case.
18849         * testsuite/gcc.target/mips/near-far-3.c: New test case.
18850         * testsuite/gcc.target/mips/near-far-4.c: New test case.
18851
18852 2007-05-25  Eric Christopher  <echristo@apple.com>
18853
18854         * config.gcc: Add i386/t-fprules-softfp64 and soft-fp/t-softfp
18855         to x86-darwin configurations.
18856         * config/i386/t-darwin: Add softfp support.
18857         * config/i386/t-darwin64: Ditto.
18858         * config/i386/sfp-machine.h: If mach then don't use
18859         aliasing, emit a stub to call.
18860
18861 2007-05-25  Kazu Hirata  <kazu@codesourcery.com>
18862
18863         * cfglayout.c, cgraphunit.c, config/avr/avr.c, fold-const.c,
18864         haifa-sched.c, optabs.h, tree-affine.c, tree-data-ref.c,
18865         tree-predcom.c, tree-ssa-alias-warnings.c,
18866         tree-ssa-forwprop.c, tree-vect-analyze.c, tree-vrp.c: Fix
18867         comment typos.  Follow spelling conventions.
18868         * doc/cpp.texi, doc/invoke.texi: Fix typos.
18869
18870 2007-05-26  Uros Bizjak  <ubizjak@gmail.com>
18871
18872         PR target/32065
18873         * target/i386/i386.c (ix86_expand_vector_move): Force SUBREGs of
18874         constants into memory.  Expand unaligned memory references for
18875         SSE modes via x86_expand_vector_move_misalign() function.
18876
18877 2007-05-25  Uros Bizjak  <ubizjak@gmail.com>
18878
18879         * config/i386/sse.md (*vec_extractv2di_1_sse2): Do not calculate
18880         "memory" attribute for "sseishft" type insn without operands[2].
18881
18882 2007-05-25  Dirk Mueller  <dmueller@suse.de>
18883             Marcus Meissner <meissner@suse.de>
18884
18885         * doc/extend.texi (alloc_size): New attribute.
18886         * c-common.c (handle_alloc_size_attribute): New.
18887         * tree-object-size.c (alloc_object_size): Use alloc_size
18888         attribute, if available.
18889
18890 2007-05-25  H.J. Lu  <hongjiu.lu@intel.com>
18891
18892         * config/i386/i386.c (__builtin_ia32_vec_ext_v2df): Mark it
18893         with MASK_SSE2.
18894         (__builtin_ia32_vec_ext_v2di): Likewise.
18895         (__builtin_ia32_vec_ext_v4si): Likewise.
18896         (__builtin_ia32_vec_ext_v8hi): Likewise.
18897         (__builtin_ia32_vec_ext_v16qi): Likewise.
18898         (__builtin_ia32_vec_set_v8hi): Likewise.
18899
18900 2007-05-25  H.J. Lu  <hongjiu.lu@intel.com>
18901
18902         * config/i386/sse.md (*vec_extractv2di_1_sse2): Correct shift.
18903
18904 2007-05-25  Richard Sandiford  <richard@codesourcery.com>
18905
18906         * config/arm/arm-protos.h (arm_encode_call_attribute): Delete.
18907         (arm_is_longcall_p): Rename to...
18908         (arm_is_long_call_p): ...this.  Take a single tree argument and
18909         return a bool.
18910         * config/arm/arm.h (CALL_SHORT, CALL_LONG, CALL_NORMAL): Delete.
18911         (CUMULATIVE_ARGS): Remove call_cookie.
18912         (SHORT_CALL_FLAG_CHAR, LONG_CALL_FLAG_CHAR, ENCODED_SHORT_CALL_ATTR_P)
18913         (ENCODED_LONG_CALL_ATTR_P): Delete.
18914         (ARM_NAME_ENCODING_LENGTHS): Remove SHORT_CALL_FLAG_CHAR and
18915         LONG_CALL_FLAG_CHAR cases.
18916         (ARM_DECLARE_FUNCTION_SIZE): Delete.
18917         * config/arm/elf.h (ASM_DECLARE_FUNCTION_SIZE): Don't use
18918         ARM_DECLARE_FUNCTION_SIZE.
18919         * config/arm/arm.c (arm_init_cumulative_args): Don't set call_cookie.
18920         (arm_function_arg): Return const0_rtx for VOIDmode arguments.
18921         (arm_encode_call_attribute, current_file_function_operand): Delete.
18922         (arm_function_in_section_p): New function.
18923         (arm_is_longcall_p): Rename to...
18924         (arm_is_long_call_p): ...this.  Take the target function as a single
18925         argument and return a bool.  Do not rely on call cookies.  Check
18926         whether the target symbol is in the same section as the current
18927         function, not just the same compilation unit.
18928         (arm_function_ok_for_sibcall): Use arm_is_long_call_p.
18929         (arm_encode_section_info): Don't encode a call type.
18930         * config/arm/arm.md (call, call_value): Update calls to
18931         arm_is_long(_)call_p.  Simplify logic.
18932         (*call_symbol, *call_value_symbol, *call_insn, *call_value_insn):
18933         Update calls to arm_is_long(_)call_p.
18934
18935 2007-05-25  Richard Guenther  <rguenther@suse.de>
18936
18937         PR tree-optimization/31982
18938         * tree-ssa-forwprop.c
18939         (forward_propagate_addr_into_variable_array_index): Handle arrays
18940         with element size one.
18941
18942 2007-05-24  Andrew Pinski  <andrew_pinski@playstation.sony.com>
18943
18944         * config/spu/spu.md (smulsi3_highpart): Unshare the rtl chain.
18945         (umulsi3_highpart): Likewise.
18946
18947 2007-05-24  Ian Lance Taylor  <iant@google.com>
18948
18949         PR rtl-optimization/32069
18950         * regclass.c (regclass): Don't crash if the entry in regno_reg_rtx
18951         is NULL.
18952
18953 2007-05-24  Ollie Wild  <aaw@google.com>
18954
18955         * doc/cpp.texi (Common Predefined Macros): Add __COUNTER__
18956         description.
18957
18958 2007-05-24  Richard Sandiford  <rsandifo@nildram.co.uk>
18959
18960         * postreload-gcse.c (reg_changed_after_insn_p): New function.
18961         (oprs_unchanged_p): Use it to check all registers in a REG.
18962         (record_opr_changes): Look for clobbers in CALL_INSN_FUNCTION_USAGE.
18963         (reg_set_between_after_reload_p): Delete.
18964         (reg_used_between_after_reload_p): Likewise.
18965         (reg_set_or_used_since_bb_start): Likewise.
18966         (eliminate_partially_redundant_load): Use reg_changed_after_insn_p
18967         and reg_used_between_p instead of reg_set_or_used_since_bb_start.
18968         Use reg_set_between_p instead of reg_set_between_after_reload_p.
18969         * rtlanal.c (reg_set_p): Check whether REG overlaps
18970         regs_invalidated_by_call, rather than just checking the
18971         membership of REGNO (REG).
18972
18973 2007-05-24  Zdenek Dvorak  <dvorakz@suse.cz>
18974
18975         * doc/passes.texi: Document predictive commoning.
18976         * doc/invoke.texi (-fpredictive-commoning): Document.
18977         * opts.c (decode_options): Enable flag_predictive_commoning on -O3.
18978         * tree-ssa-loop-im.c (get_lsm_tmp_name): Export.  Allow
18979         adding indices to the generated name.
18980         (schedule_sm): Pass 0 to get_lsm_tmp_name.
18981         * tree-ssa-loop-niter.c (stmt_dominates_stmt_p): Export.
18982         * tree-pretty-print.c (op_symbol_1): Renamed to ...
18983         (op_symbol_code): ... and exported.
18984         (dump_omp_clause, op_symbol): Use op_symbol_code
18985         instead of op_symbol_1.
18986         * tree-pass.h (pass_predcom): Declare.
18987         * timevar.def (TV_PREDCOM): New timevar.
18988         * tree-ssa-loop.c (run_tree_predictive_commoning,
18989         gate_tree_predictive_commoning, pass_predcom): New.
18990         * tree-data-ref.c (find_data_references_in_loop): Find the
18991         references in dominance order.
18992         (canonicalize_base_object_address): Ensure that the result has
18993         pointer type.
18994         (dr_analyze_innermost): Export.
18995         (create_data_ref): Code to fail for references with invariant
18996         address moved ...
18997         (find_data_references_in_stmt): ... here.
18998         * tree-data-ref.h (dr_analyze_innermost): Declare.
18999         * tree-affine.c: Include tree-gimple.h and hashtab.h.
19000         (aff_combination_find_elt, name_expansion_hash,
19001         name_expansion_eq, tree_to_aff_combination_expand,
19002         double_int_constant_multiple_p, aff_combination_constant_multiple_p):
19003         New functions.
19004         * tree-affine.h (aff_combination_constant_multiple_p,
19005         tree_to_aff_combination_expand): Declare.
19006         * tree-predcom.c: New file.
19007         * common.opt (fpredictive-commoning): New option.
19008         * tree-flow.h (op_symbol_code, tree_predictive_commoning,
19009         stmt_dominates_stmt_p, get_lsm_tmp_name): Declare.
19010         * Makefile.in (tree-predcom.o): Add.
19011         (tree-affine.o): Add TREE_GIMPLE_H dependency.
19012         * passes.c (init_optimization_passes): Add dceloop after
19013         copy propagation in loop optimizer.  Add predictive commoning
19014         to loop optimizer passes.
19015
19016 2007-05-24  H.J. Lu  <hongjiu.lu@intel.com>
19017
19018         * target-def.h (TARGET_MANGLE_DECL_ASSEMBLER_NAME): Correct
19019         default hook.
19020
19021 2007-05-24  Jan Hubicka  <jh@suse.cz>
19022
19023         * gengenrtl.c (gendecl, gendef): Output the gens annotated for
19024         statistics.
19025         (genheader): Include statistics.h.
19026
19027         * doc/invoke.texi (-fdump-unnumbered): Update docs when line number
19028         notes are gone.
19029         * print-rtl.c (flag_dump_unnumbered): Update comments.
19030         (print_rtl): Fix my previous change.
19031         * emit-rtl.c (emit_note_before, emit_note_after): Clear out note
19032         specific data.
19033
19034 2007-05-24  Zdenek Dvorak  <dvorakz@suse.cz>
19035
19036         PR middle-end/32018
19037         * tree-ssa-threadupdate.c (thread_through_loop_header): Use
19038         set_loop_copy.
19039         (thread_through_all_blocks): Call initialize_original_copy_tables
19040         and free_original_copy_tables.
19041         * cfgloopmanip.c (duplicate_loop, duplicate_loop_to_header_edge):
19042         Use set_loop_copy.
19043         * tree-cfg.c (tree_duplicate_sese_region): Ditto.
19044         * cfghooks.c (duplicate_block): Use get_loop_copy.
19045         * cfg.c: Include cfgloop.h.
19046         (loop_copy): New hash table.
19047         (initialize_original_copy_tables): Initialize loop_copy table.
19048         (free_original_copy_tables): Free loop_copy table.
19049         (copy_original_table_clear, copy_original_table_set,
19050         set_loop_copy, get_loop_copy): New functions.
19051         (set_bb_original, set_bb_copy): Use copy_original_table_set.
19052         * cfgloop.h (struct loop): Remove copy field.
19053         * Makefile.in (cfg.o): Add CFGLOOP_H dependency.
19054         * basic-block.h (set_loop_copy, get_loop_copy): Declare.
19055
19056 2007-05-24  H.J. Lu  <hongjiu.lu@intel.com>
19057
19058         * config/i386/i386.c (ix86_handle_option): Handle SSE4.1 for
19059         -msse/-msse2/-msse3.
19060
19061 2007-05-24  H.J. Lu  <hongjiu.lu@intel.com>
19062
19063         * config/i386/i386.c (ix86_init_mmx_sse_builtins): Mark
19064         __builtin_ia32_vec_set_v2di with MASK_64BIT.
19065
19066 2007-05-24  Danny Smith  <dannysmith@users.sourceforge.net>
19067
19068         PR target/27067
19069         * doc/tm.texi (TARGET_MANGLE_DECL_ASSEMBLER_NAME): Document.
19070         * targhooks.h (default_mangle_decl_assembler_name): Declare
19071         default hook.
19072         * targhooks.c (default_mangle_decl_assembler_name): Define
19073         default hook.
19074         * target-def.h (TARGET_MANGLE_DECL_ASSEMBLER_NAME) New. Set to
19075         default hook.
19076         * target.h (struct gcc_target): Add mangle_decl_assembler_name field.
19077         * langhooks.c (lhd_set_decl_assembler_name): Call
19078         targetm.mangle_decl_assembler_name for names with global scope.
19079
19080         * config/i386/cygming.h (TARGET_MANGLE_DECL_ASSEMBLER_NAME) Override
19081         default.
19082         (ASM_OUTPUT_DEF_FROM_DECLS): Simplify to use DECL_ASSEMBLER_NAME.
19083         * config/i386/i386-protos.h (i386_pe_mangle_decl_assembler_name):
19084         Declare.
19085         * config/i386/winnt.c (i386_pe_maybe_mangle_decl_assembler_name):
19086         New. Factored out of i386_pe_encode_section_info.
19087         (gen_stdcall_or_fastcall_suffix): Get name identifier as argument.
19088         Move check for prior decoration of stdcall
19089         symbols to i386_pe_encode_section_info.
19090         (i386_pe_encode_section_info): Adjust call to
19091         gen_stdcall_or_fastcall_suffix.  Use
19092         i386_pe_maybe_mangle_decl_assembler_name, if needed.
19093         (i386_pe_mangle_decl_assembler_name): New. Wrap
19094         i386_pe_maybe_mangle_decl_assembler_name.
19095
19096 2007-05-16  Rafael Avila de Espindola  <espindola@google.com>
19097
19098         * c-common.c (c_common_signed_or_unsigned_type): Delay the check for
19099         INTEGRAL_TYPE_P and TYPE_UNSIGNED.
19100         * langhooks.c (get_signed_or_unsigned_type): Don't check for
19101         INTEGRAL_TYPE_P or TYPE_UNSIGNED.
19102         (lhd_signed_or_unsigned_type): Check for INTEGRAL_TYPE_P and
19103         TYPE_UNSIGNED.
19104
19105 2007-05-23  Sandra Loosemore  <sandra@codesourcery.com>
19106             Nigel Stephens  <nigel@mips.com>
19107             Richard Sandiford  <richard@codesourcery.com>
19108
19109         Fix up MIPS16 hard float and add support for complex.
19110
19111         * config/mips/mips.h (TARGET_HARD_FLOAT_ABI): New.
19112         (TARGET_SOFT_FLOAT_ABI): New.
19113         (TARGET_CPU_CPP_BUILTINS): Define __mips_hard_float and
19114         __mips_soft_float to reflect the ABI in use, not whether the
19115         FPU is directly accessible (e.g., in MIPS16 mode).
19116         (UNITS_PER_HWFPVALUE): Use TARGET_SOFT_FLOAT_ABI.
19117         (UNITS_PER_FPVALUE): Likewise.
19118
19119         * config/mips/mips.c (mips_expand_call): Remove redundant
19120         TARGET_MIPS16 check.
19121         (mips_arg_regno): New.
19122         (function_arg_advance): When setting bits in cum->fp_code for
19123         MIPS16, don't subtract 1 from cum->arg_number, since it is now
19124         zero-based.
19125         (function_arg): Use mips_arg_regno.
19126         (mips_return_mode_in_fpr_p): New.
19127         (mips16_call_stub_mode_suffix): New.
19128         (mips16_cfun_returns_in_fpr_p): New.
19129         (mips_save_reg_p): Use mips16_cfun_returns_in_fpr_p.
19130         (mips_output_function_prologue): Test mips16_hard_float, not
19131         !TARGET_SOFT_FLOAT, to decide when a function stub is required.
19132         (mips_expand_epilogue): Call MIPS16 helper routines to copy
19133         return value into a floating-point register.
19134         (mips_can_use_return_insn): Use mips16_cfun_returns_in_fpr_p.
19135         (mips_function_value): Rewrite to use mips_return_mode_in_fpr_p.
19136         (mips16_fp_args): Handle MIPS32r2 ISA which supports
19137         TARGET_FLOAT64, and use mfhc1/mthc1 to copy the most significant
19138         word of double arguments from or to the high bits of 64-bit
19139         floating point registers.
19140         (build_mips16_function_stub): Fill in DECL_RESULT for stubdecl.
19141         (mips16_fpret_double): New helper function.
19142         (build_mips16_call_stub): Use mips16_return_mode_in_fpr_p.  Add
19143         support for complex modes.  Fill in DECL_RESULT for stubdecl.
19144         (mips_init_libfuncs): Remove redundant TARGET_MIPS16 check.
19145
19146         * config/mips/mips16.S
19147         (RET, ARG1, ARG2): New.
19148         (MERGE_GPRf, MERGE_GPRt): New.
19149         (DELAYt, DELAYf): New.
19150         (MOVE_SF_BYTE0, MOVE_SI_BYTE0): New.
19151         (MOVE_SF_BYTE4, MOVE_SF_BYTE8): New.
19152         (MOVE_DF_BYTE0, MOVE_DF_BYTE8): New.
19153         (MOVE_SF_RET, MOVE_SC_RET, MOVE_DF_RET, MOVE_DC_RET, MOVE_SI_RET): New.
19154         (SFOP): Renamed to...
19155         (OPSF3): This, and macro-ified.  Updated all uses.
19156         (SFOP2): Renamed to...
19157         (OPSF2): This, and macro-ified.  Updated all uses.
19158         (SFCMP): Renamed to...
19159         (CMPSF): This, and macro-ified.  Updated all uses.
19160         (SFREVCMP): Renamed to...
19161         (REVCMPSF): This, and macro-ified.  Updated all uses.
19162         (__mips16_floatsisf, __mips16_fix_truncsfsi): Macro-ified.
19163         (LDDBL1, LDDBL2, RETDBL): Deleted.
19164         (DFOP): Renamed to...
19165         (OPDF3): This, and macro-ified.  Updated all uses.
19166         (DFOP2): Renamed to...
19167         (OPDF2): This, and macro-ified.  Updated all uses.
19168         (__mips16_extendsfdf2, __mips16_truncdfsf2): Macro-ified.
19169         (DFCMP): Renamed to...
19170         (CMPDF): This, and macro-ified.  Updated all uses.
19171         (DFREVCMP): Renamed to...
19172         (REVCMPDF): This, and macro-ified.  Updated all uses.
19173         (__mips16_floatsidf, __mips16_fix_truncdfsi): Macro-ified.
19174         (RET_FUNCTION): New.
19175         (__mips16_ret_sf, __mips16_ret_df): Macro-ified.
19176         (__mips16_ret_sc, __mips16_ret_dc): New.
19177         (STUB_ARGS_0, STUB_ARGS_1, STUB_ARGS_5, STUB_ARGS_9, STUB_ARGS_2,
19178         STUB_ARGS_6, STUB_ARGS_10): New.
19179         (CALL_STUB_NO_RET): New.
19180         (__mips16_call_stub_1): Macro-ified.
19181         (__mips16_call_stub_5): Macro-ified.
19182         (__mips16_call_stub_2): Macro-ified.
19183         (__mips16_call_stub_6): Macro-ified.
19184         (__mips16_call_stub_9): Macro-ified.
19185         (__mips16_call_stub_10): Macro-ified.
19186         (CALL_STUB_RET): New.
19187         (__mips16_call_stub_sf_0): Macro-ified.
19188         (__mips16_call_stub_sf_1): Macro-ified.
19189         (__mips16_call_stub_sf_5): Macro-ified.
19190         (__mips16_call_stub_sf_2): Macro-ified.
19191         (__mips16_call_stub_sf_6): Macro-ified.
19192         (__mips16_call_stub_sf_9): Macro-ified.
19193         (__mips16_call_stub_sf_10): Macro-ified.
19194         (__mips16_call_stub_df_0): Macro-ified.
19195         (__mips16_call_stub_df_1): Macro-ified.
19196         (__mips16_call_stub_df_5): Macro-ified.
19197         (__mips16_call_stub_df_2): Macro-ified.
19198         (__mips16_call_stub_df_6): Macro-ified.
19199         (__mips16_call_stub_df_9): Macro-ified.
19200         (__mips16_call_stub_df_10): Macro-ified.
19201         (__mips16_call_stub_sc_0): New.
19202         (__mips16_call_stub_sc_1): New.
19203         (__mips16_call_stub_sc_5): New.
19204         (__mips16_call_stub_sc_2): New.
19205         (__mips16_call_stub_sc_6): New.
19206         (__mips16_call_stub_sc_9): New.
19207         (__mips16_call_stub_sc_10): New.
19208         (__mips16_call_stub_dc_0): New.
19209         (__mips16_call_stub_dc_1): New.
19210         (__mips16_call_stub_dc_5): New.
19211         (__mips16_call_stub_dc_2): New.
19212         (__mips16_call_stub_dc_6): New.
19213         (__mips16_call_stub_dc_9): New.
19214         (__mips16_call_stub_dc_10): New.
19215
19216         * config/mips/t-elf (LIB1ASMFUNCS): Add MIPS16 floating-point stubs.
19217         * config/mips/t-isa3264 (LIB1ASMFUNCS): Likewise.
19218         * config/mips/t-r2900 (LIB1ASMFUNCS): Likewise.
19219
19220 2007-05-23  Ian Lance Taylor  <iant@google.com>
19221
19222         * doc/invoke.texi (Invoking GCC): Document that the order of the
19223         -l option matters.
19224
19225 2007-05-23  Chen Liqin  <liqin@sunnorth.com.cn>
19226
19227         PR target/30987
19228         * config/score/misc.md (bitclr_c, bitset_c, bittgl_c): Remove.
19229         * config/score/predicate.md (const_pow2, const_npow2): Remove.
19230         * config/score/score.h (ASM_OUTPUT_EXTERNAL): Add ASM_OUTPUT_EXTERNAL
19231         undef.
19232
19233         PR target/30474
19234         * config/score/score.c (score_print_operand): Make sure that only
19235         lower bits are used.
19236
19237 2007-05-22  Ian Lance Taylor  <iant@google.com>
19238
19239         * tree-vrp.c (avoid_overflow_infinity): New static function,
19240         broken out of set_value_range_to_value.
19241         (set_value_range_to_value): Call avoid_overflow_infinity.
19242         (extract_range_from_assert): Likewise.
19243
19244 2007-05-22  Andrew Pinski  <andrew_pinski@playstation.sony.com>
19245
19246         PR middle-end/31095
19247          * builtins.c (expand_builtin_memmove_args): Strip nops that don't
19248         change the type before looking for a COMPOUND_EXPR.
19249
19250 2007-05-22  Ian Lance Taylor  <iant@google.com>
19251
19252         * lower-subreg.c (decompose_multiword_subregs): If we change an
19253         insn, call remove_retval_note on it.
19254
19255 2007-05-22  Richard Sandiford  <rsandifo@nildram.co.uk>
19256
19257         * regs.h (end_hard_regno): New function.
19258         (END_HARD_REGNO, END_REGNO): New macros.
19259         (add_to_hard_reg_set): New function.
19260         (remove_from_hard_reg_set): Likewise.
19261         (in_hard_reg_set_p): Likewise.
19262         (overlaps_hard_reg_set_p): Likewise.
19263         * bt-load.c (find_btr_reference): Use overlaps_hard_reg_set_p.
19264         (note_btr_set): Use END_HARD_REGNO.
19265         * caller-save.c (setup_save_areas): Use end_hard_regno.
19266         (mark_set_regs): Use END_HARD_REGNO.
19267         (add_stored_regs): Use end_hard_regno.
19268         (mark_referenced_regs): Use add_to_hard_reg_set.
19269         * combine.c (update_table_tick): Use END_REGNO.
19270         (record_value_for_reg): Likewise.
19271         (record_dead_and_set_regs): Likewise.
19272         (get_last_value_validate): Likewise.
19273         (use_crosses_set_p): Likewise.
19274         (reg_dead_at_p_1): Likewise.
19275         (reg_dead_at_p): Likewise.
19276         (mark_used_regs_combine): Use add_to_hard_reg_set.
19277         (move_deaths): Use END_HARD_REGNO.
19278         (reg_bitfield_target_p): Use end_hard_regno.
19279         (distribute_notes): Use END_HARD_REGNO.
19280         * cse.c (mention_regs): Use END_REGNO.
19281         (insert): Use add_to_hard_reg_set.
19282         (invalidate): Use END_HARD_REGNO.
19283         (invalidate_for_call): Likewise.
19284         (exp_equiv_p): Use END_REGNO.
19285         (cse_insn): Likewise.
19286         * cselib.c (cselib_invalidate_regno): Use end_hard_regno.
19287         * df-problems.c (df_urec_mark_reg_change): Use END_HARD_REGNO.
19288         * df-scan.c (df_ref_record): Use END_HARD_REGNO.
19289         * function.c (keep_stack_depressed): Use end_hard_regno.
19290         * global.c (global_alloc): Use end_hard_regno.
19291         (global_conflicts): Use add_to_hard_reg_set instead of
19292         mark_reg_live_nc.
19293         (find_reg): Likewise.
19294         (mark_reg_store): Likewise.
19295         (mark_reg_conflicts): Likewise.
19296         (mark_reg_death): Use remove_from_hard_reg_set.
19297         (mark_reg_live_nc): Delete.
19298         (set_preference): Use end_hard_regno.
19299         * local-alloc.c (mark_life): Use add_to_hard_reg_set and
19300         remove_from_hard_reg_set.
19301         (post_mark_life): Use add_to_hard_reg_set.
19302         * mode-switching.c (reg_dies): Use remove_from_hard_reg_set.
19303         (reg_becomes_live): Use add_to_hard_reg_set.
19304         * recog.c (reg_fits_class_p): Use in_hard_reg_set_p.
19305         (peep2_find_free_register): Use add_to_hard_reg_set.
19306         * reg-stack.c (convert_regs_exit): Use END_HARD_REGNO.
19307         * regclass.c (record_reg_classes): Use in_hard_reg_set_p.
19308         * regrename.c (note_sets): Use add_to_hard_reg_set.
19309         (clear_dead_regs): Use remove_from_hard_reg_set.
19310         (regrename_optimize): Use add_to_hard_reg_set.
19311         (find_oldest_value_reg): Use in_hard_reg_set_p.
19312         * reload.c (push_reload): Use in_hard_reg_set_p and end_hard_regno.
19313         (hard_reg_set_here_p): Use end_hard_regno.
19314         (decompose): Likewise.
19315         (reg_overlap_mentioned_for_reload_p): Use END_HARD_REGNO.
19316         (find_equiv_reg): Use in_hard_reg_set_p and end_hard_regno.
19317         * reload1.c (compute_use_by_pseudos): Use add_to_hard_reg_set.
19318         (mark_home_live): Use end_hard_regno.
19319         (spill_hard_reg): Likewise.
19320         (clear_reload_reg_in_use): Likewise.
19321         * reorg.c (delete_prior_computation): Use END_REGNO.
19322         * resource.c (update_live_status): Use END_HARD_REGNO.
19323         (mark_referenced_resources): Use add_to_hard_reg_set.
19324         (mark_set_resources): Likewise.
19325         (mark_target_live_regs): Likewise.  Use remove_from_hard_reg_set.
19326         * rtlanal.c (refers_to_regno_p): Use END_REGNO.
19327         (reg_overlap_mentioned_p): Likewise.
19328         (dead_or_set_p): Likewise.  Use an exclusive upper loop bound.
19329         (covers_regno_no_parallel_p): Use END_REGNO.
19330         (find_regno_note): Likewise.
19331         (find_reg_fusage): Use END_HARD_REGNO.
19332         * stmt.c (decl_overlaps_hard_reg_set_p): Use overlaps_hard_reg_set_p.
19333         * var-tracking.c (emit_note_insn_var_location): Use end_hard_regno.
19334
19335 2007-05-22  Richard Sandiford  <rsandifo@nildram.co.uk>
19336
19337         * mode-switching.c (reg_dies): Change type of second argument to
19338         "HARD_REG_SET *".
19339         (optimize_mode_switching): Update accordingly.
19340
19341 2007-05-22  Richard Sandiford  <richard@codesourcery.com>
19342
19343         * hard-reg-set.h (GO_IF_HARD_REG_SUBSET, GO_IF_HARD_REG_EQUAL): Delete
19344         in favor of...
19345         (hard_reg_subset_p, hard_reg_sets_equal_p, hard_reg_sets_intersect_p)
19346         (hard_reg_set_empty_p): ...these new functions.
19347         * bt-load.c (choose_btr): Use hard_reg_subset_p instead of
19348         GO_IF_HARD_REG_SUBSET.
19349         * cfgcleanup.c (old_insns_match_p): Use hard_reg_sets_equal_p
19350         instead of GO_IF_HARD_REG_EQUAL.
19351         * df-problems.c (df_urec_local_compute): Use hard_reg_set_empty_p
19352         instead of GO_IF_HARD_REG_EQUAL.
19353         * global.c (find_reg): Use hard_reg_set_empty_p instead of
19354         GO_IF_HARD_REG_SUBSET.
19355         (modify_reg_pav): Use hard_reg_set_empty_p instead of
19356         GO_IF_HARD_REG_EQUAL.
19357         * local-alloc.c (find_free_reg): Use hard_reg_subset_p instead
19358         of GO_IF_HARD_REG_SUBSET.
19359         * reg-stack.c (change_stack, convert_regs_1): Use hard_reg_sets_equal_p
19360         instead of GO_IF_HARD_REG_EQUAL.
19361         * regclass.c (init_reg_sets_1, reg_scan_mark_refs): Use
19362         hard_reg_subset_p instead of GO_IF_HARD_REG_SUBSET.
19363         (reg_classes_intersect_p): Use hard_reg_sets_intersect_p instead
19364         of GO_IF_HARD_REG_SUBSET,
19365         * reload1.c (finish_spills): Use hard_reg_subset_p instead of
19366         GO_IF_HARD_REG_SUBSET.
19367         * struct-equiv.c (death_notes_match_p): Use hard_reg_sets_equal_p
19368         instead of GO_IF_HARD_REG_EQUAL.
19369         * config/sh/sh.c (push_regs, calc_live_regs): Use
19370         hard_reg_sets_intersect_p instead of hard_regs_intersect_p.
19371         (hard_regs_intersect_p): Delete.
19372
19373 2007-05-22  Janis Johnson  <janis187@us.ibm.com>
19374
19375         * doc/sourcebuild.texi (Test Directives) Add dg-message.
19376
19377 2007-05-22  H.J. Lu  <hongjiu.lu@intel.com>
19378             Richard Henderson  <rth@redhat.com>
19379
19380         * config.gcc (i[34567]86-*-*): Add smmintrin.h to
19381         extra_headers.
19382         (x86_64-*-*): Likewise.
19383
19384         * i386/i386-modes.def (V2QI): New.
19385
19386         * config/i386/i386.c (ix86_handle_option): Handle SSE4.1 and
19387         SSE4A.
19388         (override_options): Support SSE4.1.
19389         (IX86_BUILTIN_BLENDPD): New for SSE4.1.
19390         (IX86_BUILTIN_BLENDPS): Likewise.
19391         (IX86_BUILTIN_BLENDVPD): Likewise.
19392         (IX86_BUILTIN_BLENDVPS): Likewise.
19393         (IX86_BUILTIN_PBLENDVB128): Likewise.
19394         (IX86_BUILTIN_PBLENDW128): Likewise.
19395         (IX86_BUILTIN_DPPD): Likewise.
19396         (IX86_BUILTIN_DPPS): Likewise.
19397         (IX86_BUILTIN_INSERTPS128): Likewise.
19398         (IX86_BUILTIN_MOVNTDQA): Likewise.
19399         (IX86_BUILTIN_MPSADBW128): Likewise.
19400         (IX86_BUILTIN_PACKUSDW128): Likewise.
19401         (IX86_BUILTIN_PCMPEQQ): Likewise.
19402         (IX86_BUILTIN_PHMINPOSUW128): Likewise.
19403         (IX86_BUILTIN_PMAXSB128): Likewise.
19404         (IX86_BUILTIN_PMAXSD128): Likewise.
19405         (IX86_BUILTIN_PMAXUD128): Likewise.
19406         (IX86_BUILTIN_PMAXUW128): Likewise.
19407         (IX86_BUILTIN_PMINSB128): Likewise.
19408         (IX86_BUILTIN_PMINSD128): Likewise.
19409         (IX86_BUILTIN_PMINUD128): Likewise.
19410         (IX86_BUILTIN_PMINUW128): Likewise.
19411         (IX86_BUILTIN_PMOVSXBW128): Likewise.
19412         (IX86_BUILTIN_PMOVSXBD128): Likewise.
19413         (IX86_BUILTIN_PMOVSXBQ128): Likewise.
19414         (IX86_BUILTIN_PMOVSXWD128): Likewise.
19415         (IX86_BUILTIN_PMOVSXWQ128): Likewise.
19416         (IX86_BUILTIN_PMOVSXDQ128): Likewise.
19417         (IX86_BUILTIN_PMOVZXBW128): Likewise.
19418         (IX86_BUILTIN_PMOVZXBD128): Likewise.
19419         (IX86_BUILTIN_PMOVZXBQ128): Likewise.
19420         (IX86_BUILTIN_PMOVZXWD128): Likewise.
19421         (IX86_BUILTIN_PMOVZXWQ128): Likewise.
19422         (IX86_BUILTIN_PMOVZXDQ128): Likewise.
19423         (IX86_BUILTIN_PMULDQ128): Likewise.
19424         (IX86_BUILTIN_PMULLD128): Likewise.
19425         (IX86_BUILTIN_ROUNDPD): Likewise.
19426         (IX86_BUILTIN_ROUNDPS): Likewise.
19427         (IX86_BUILTIN_ROUNDSD): Likewise.
19428         (IX86_BUILTIN_ROUNDSS): Likewise.
19429         (IX86_BUILTIN_PTESTZ): Likewise.
19430         (IX86_BUILTIN_PTESTC): Likewise.
19431         (IX86_BUILTIN_PTESTNZC): Likewise.
19432         (IX86_BUILTIN_VEC_EXT_V16QI): Likewise.
19433         (IX86_BUILTIN_VEC_SET_V2DI): Likewise.
19434         (IX86_BUILTIN_VEC_SET_V4SF): Likewise.
19435         (IX86_BUILTIN_VEC_SET_V4SI): Likewise.
19436         (IX86_BUILTIN_VEC_SET_V16QI): Likewise.
19437         (bdesc_ptest): New.
19438         (bdesc_sse_3arg): Likewise.
19439         (bdesc_2arg): Likewise.
19440         (bdesc_1arg): Likewise.
19441         (ix86_init_mmx_sse_builtins): Support SSE4.1.  Handle SSE builtins
19442         with 3 args.
19443         (ix86_expand_sse_4_operands_builtin): New.
19444         (ix86_expand_unop_builtin): Support 2 arg builtins with a constant
19445         smaller than 8 bits as the 2nd arg.
19446         (ix86_expand_sse_ptest): New.
19447         (ix86_expand_builtin): Support SSE4.1. Support 3 arg SSE builtins.
19448         (ix86_expand_vector_set): Support SSE4.1.
19449         (ix86_expand_vector_extract): Likewise.
19450
19451         * config/i386/i386.h (TARGET_CPU_CPP_BUILTINS): Define
19452         __SSE4_1__ for -msse4.1.
19453
19454         * config/i386/i386.md (UNSPEC_BLENDV): New for SSE4.1.
19455         (UNSPEC_INSERTPS): Likewise.
19456         (UNSPEC_DP): Likewise.
19457         (UNSPEC_MOVNTDQA): Likewise.
19458         (UNSPEC_MPSADBW): Likewise.
19459         (UNSPEC_PHMINPOSUW): Likewise.
19460         (UNSPEC_PTEST): Likewise.
19461         (UNSPEC_ROUNDP): Likewise.
19462         (UNSPEC_ROUNDS): Likewise.
19463
19464         * config/i386/i386.opt (msse4.1): New for SSE4.1.
19465
19466         * config/i386/predicates.md (const_pow2_1_to_2_operand): New.
19467         (const_pow2_1_to_32768_operand): Likewise.
19468
19469         * config/i386/smmintrin.h: New. The SSE4.1 intrinsic header
19470         file.
19471
19472         * config/i386/sse.md (*vec_setv4sf_sse4_1): New pattern for
19473         SSE4.1.
19474         (sse4_1_insertps): Likewise.
19475         (*sse4_1_extractps): Likewise.
19476         (sse4_1_ptest): Likewise.
19477         (sse4_1_mulv2siv2di3): Likewise.
19478         (*sse4_1_mulv4si3): Likewise.
19479         (*sse4_1_smax<mode>3): Likewise.
19480         (*sse4_1_umax<mode>3): Likewise.
19481         (*sse4_1_smin<mode>3): Likewise.
19482         (*sse4_1_umin<mode>3): Likewise.
19483         (sse4_1_eqv2di3): Likewise.
19484         (*sse4_1_pinsrb): Likewise.
19485         (*sse4_1_pinsrd): Likewise.
19486         (*sse4_1_pinsrq): Likewise.
19487         (*sse4_1_pextrb): Likewise.
19488         (*sse4_1_pextrb_memory): Likewise.
19489         (*sse4_1_pextrw_memory): Likewise.
19490         (*sse4_1_pextrq): Likewise.
19491         (sse4_1_blendpd): Likewise.
19492         (sse4_1_blendps): Likewise.
19493         (sse4_1_blendvpd): Likewise.
19494         (sse4_1_blendvps): Likewise.
19495         (sse4_1_dppd): Likewise.
19496         (sse4_1_dpps): Likewise.
19497         (sse4_1_movntdqa): Likewise.
19498         (sse4_1_mpsadbw): Likewise.
19499         (sse4_1_packusdw): Likewise.
19500         (sse4_1_pblendvb): Likewise.
19501         (sse4_1_pblendw): Likewise.
19502         (sse4_1_phminposuw): Likewise.
19503         (sse4_1_extendv8qiv8hi2): Likewise.
19504         (*sse4_1_extendv8qiv8hi2): Likewise.
19505         (sse4_1_extendv4qiv4si2): Likewise.
19506         (*sse4_1_extendv4qiv4si2): Likewise.
19507         (sse4_1_extendv2qiv2di2): Likewise.
19508         (*sse4_1_extendv2qiv2di2): Likewise.
19509         (sse4_1_extendv4hiv4si2): Likewise.
19510         (*sse4_1_extendv4hiv4si2): Likewise.
19511         (sse4_1_extendv2hiv2di2): Likewise.
19512         (*sse4_1_extendv2hiv2di2): Likewise.
19513         (sse4_1_extendv2siv2di2): Likewise.
19514         (*sse4_1_extendv2siv2di2): Likewise.
19515         (sse4_1_zero_extendv8qiv8hi2): Likewise.
19516         (*sse4_1_zero_extendv8qiv8hi2): Likewise.
19517         (sse4_1_zero_extendv4qiv4si2): Likewise.
19518         (*sse4_1_zero_extendv4qiv4si2): Likewise.
19519         (sse4_1_zero_extendv2qiv2di2): Likewise.
19520         (*sse4_1_zero_extendv2qiv2di2): Likewise.
19521         (sse4_1_zero_extendv4hiv4si2): Likewise.
19522         (*sse4_1_zero_extendv4hiv4si2): Likewise.
19523         (sse4_1_zero_extendv2hiv2di2): Likewise.
19524         (*sse4_1_zero_extendv2hiv2di2): Likewise.
19525         (sse4_1_zero_extendv2siv2di2): Likewise.
19526         (*sse4_1_zero_extendv2siv2di2): Likewise.
19527         (sse4_1_roundpd): Likewise.
19528         (sse4_1_roundps): Likewise.
19529         (sse4_1_roundsd): Likewise.
19530         (sse4_1_roundss): Likewise.
19531         (mulv4si3): Don't expand for SSE4.1.
19532         (smax<mode>3): Likewise.
19533         (umaxv4si3): Likewise.
19534         (uminv16qi3): Likewise.
19535         (umin<mode>3): Likewise.
19536         (umaxv8hi3): Rewrite.  Only enabled for SSE4.1.
19537
19538         * doc/extend.texi: Document SSE4.1 built-in functions.
19539
19540         * doc/invoke.texi: Document -msse4.1.
19541
19542 2007-05-22  Nathan Sidwell  <nathan@codesourcery.com>
19543
19544         * config/m68k/linux.h (ASM_SPEC): Add asm_pcrel_spec.
19545         * config/m68k/m68k-none.h (ASM_SPEC): Don't override here.
19546         * config/m68k/m68k.h (ASM_PCREL_SPEC): New.
19547         (ASM_SPEC): Add asm_pcrel_spec.
19548         (EXTRA_SPECS): Add asm_pcrel_spec.
19549
19550 2007-05-21  David Daney  <ddaney@avtrex.com>
19551
19552         * doc/install.texi (Building a cross compiler): Add requirements
19553         for Java cross compiler.
19554
19555 2007-05-21  Andrew Pinski  <andrew_pinski@playstation.sony.com>
19556
19557         PR middle-end/31995
19558         * tree-chrec.c (evolution_function_is_affine_multivariate_p):
19559         Add loopno argument.  Use evolution_function_is_invariant_rec_p
19560         instead of evolution_function_is_constant_p.
19561         Update calls to evolution_function_is_affine_multivariate_p.
19562         * tree-chrec.h (evolution_function_is_affine_multivariate_p):
19563         Add loopno argument.
19564         * tree-scalar-evolution.c (gather_chrec_stats): Call
19565         evolution_function_is_affine_multivariate_p with a loop
19566         number of 0.
19567         * tree-data-ref.c (analyze_miv_subscript): Likewise.
19568         (analyze_overlapping_iterations): Likewise.
19569         (access_functions_are_affine_or_constant_p): Likewise.
19570         (build_classic_dist_vector_1): If the access functions
19571         are equal, don't do anything.
19572
19573 2007-05-21  Paolo Bonzini  <bonzini@gnu.org>
19574             Paolo Carlini  <pcarlini@suse.de>
19575             Uros Bizjak  <ubizjak@gmail.com>
19576
19577         * c-cppbuiltin.c (c_cpp_builtins): Define
19578         __GCC_HAVE_SYNC_COMPARE_AND_SWAP_1, __GCC_HAVE_SYNC_COMPARE_AND_SWAP_2,
19579         __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4, __GCC_HAVE_SYNC_COMPARE_AND_SWAP_8,
19580         __GCC_HAVE_SYNC_COMPARE_AND_SWAP_16, if appropriate.
19581         * doc/cpp.texi ([Standard Predefined Macros]): Document.
19582
19583 2007-05-21  Mike Stump  <mrs@apple.com>
19584
19585         * config/darwin.h (LINK_COMMAND_SPEC): Add .cxx/.cp for dsymutil
19586         handling as well.
19587         * config/darwin9.h (LINK_COMMAND_SPEC): Likewise.
19588
19589 2007-05-21  Uros Bizjak  <ubizjak@gmail.com>
19590
19591         * config/i386/tmmintrin.h (_mm_alignr_epi8): Provide macro
19592         implementation if __OPTIMIZE__ is not defined.
19593         (_mm_alignr_pi8): Ditto.
19594         * config/i386/ammintrin.h (_mm_extracti_si64): Ditto.
19595         (_mm_inserti_si64): Ditto.
19596         * config/i386/emmintrin.h (_mm_shuffle_pd): Ditto.
19597         (_mm_slli_epi16): Ditto.
19598         (_mm_slli_epi32): Ditto.
19599         (_mm_slli_epi64): Ditto.
19600         (_mm_srai_epi16): Ditto.
19601         (_mm_srai_epi32): Ditto.
19602         (_mm_srli_si128): Ditto.
19603         (_mm_slli_si128): Ditto.
19604         (_mm_srli_epi16): Ditto.
19605         (_mm_srli_epi32): Ditto.
19606         (_mm_srli_epi64): Ditto.
19607         (_mm_extract_epi16): Ditto.
19608         (_mm_insert_epi16): Ditto.
19609         (_mm_shufflehi_epi16): Ditto.
19610         (_mm_shufflelo_epi16): Ditto.
19611         (_mm_shuffle_epi32): Ditto.
19612         * config/i386/xmmintrin.h (_mm_extract_pi16): Ditto.
19613         (_m_pextrw): Ditto.
19614         (_mm_insert_pi16): Ditto.
19615         (_m_pinsrw): Ditto.
19616         (_mm_shuffle_pi16): Ditto.
19617         (_m_pshufw): Ditto.
19618         (_mm_shufle_ps): Ditto.
19619         (_mm_prefetch): Ditto.
19620
19621 2007-05-21  Andreas Krebbel  <krebbel1@de.ibm.com>
19622
19623         * defaults.h (IBM_FLOAT_FORMAT): Macro definition removed.
19624         * doc/tm.texi (IBM_FLOAT_FORMAT): Documentation entry removed.
19625         * real.c (encode_i370_single, decode_i370_single,
19626         encode_i370_double, decode_i370_double): Functions removed.
19627         (i370_single_format, i370_double_format): Initializations removed.
19628         (real_maxval, round_for_format, exact_real_truncate, significand_size):
19629         Consider the log2_b field to always be one.
19630         (ieee_single_format, mips_single_format, coldfire_single_format,
19631         ieee_double_format, mips_double_format, coldfire_double_format,
19632         ieee_extended_motorola_format, ieee_extended_intel_96_format,
19633         ieee_extended_intel_128_format, ieee_extended_intel_96_round_53_format,
19634         ibm_extended_format, mips_extended_format, ieee_quad_format,
19635         mips_quad_format, vax_f_format, vax_d_format, vax_g_format,
19636         decimal_single_format, decimal_double_format, decimal_quad_format,
19637         c4x_single_format, c4x_extended_format, real_internal_format): Remove
19638         initialization of log2_b.
19639         * real.h (i370_single_format, i370_double_format): Declarations
19640         removed.
19641         * c-cppbuiltin.c (builtin_define_float_constants): Consider the log2_b
19642         field to always be one.
19643
19644 2007-05-21  Andreas Schwab  <schwab@suse.de>
19645
19646         * config/ia64/ia64.c (emit_predicate_relation_info): Fix use of
19647         NOTE_INSN_BASIC_BLOCK_P.
19648         (process_for_unwind_directive): Likewise.
19649
19650 2007-05-21  Nathan Sidwell  <nathan@codesourcery.com>
19651
19652         * builtins.c (expand_builtin_setjmp_setup): Update comment.
19653         * function.h (struct function): Move va_list_gpr_size,
19654         va_list_fpr_size, function_frequency to front of bitfields.  Add
19655         calls_unwind_init.
19656         (current_function_calls_unwind_init): New.
19657         * except.c (expand_builtin_unwind_init): Set
19658         current_function_calls_unwind_init not
19659         current_function_has_nonlocal_label.
19660         * reload1.c (has_nonexceptional_receiver): New.
19661         (reload): Use it and current_function_calls_unwind_init to
19662         determine whether call-saved regs must be saved.
19663
19664 2007-05-20  Jan Hubicka  <jh@suse.cz>
19665
19666         * gengtype.c (adjust_field_rtx_def): Use NOTE_KIND instead of
19667         NOTE_LINE_NUMBER; use NOTE_INSN_BASIC_BLOCK_P when possible.
19668         * ddg.c (create_ddg): LIkewise.
19669         * final.c (final): Remove hunk moving line number notes around since
19670         they are no longer present at this stage.
19671         (final_scan_insn): Use NOTE_KIND instead of
19672         NOTE_LINE_NUMBER; use NOTE_INSN_BASIC_BLOCK_P when possible.
19673         (output_asm_label): Likewise.
19674         * reorg.c (dbr_schedule): Likewise.
19675         * haifa-sched.c (unlink_other_notes): Likewise.
19676         * mode-switching.c (optimize_mode_switching): Likewise.
19677         * graph.c (start_bb): Likewise.
19678         * rtl.def (NOTE): Update description.
19679         * jump.c (squeeze_notes): Delete.
19680         (mark_jump_label): Use NOTE_KIND instead of NOTE_LINE_NUMBER; use
19681         NOTE_INSN_BASIC_BLOCK_P when possible.
19682         * ifcvt.c (dead_or_predicable): Remove call of squeeze_notes.
19683         * dwarf2out.c (gen_label_die): Use NOTE_KIND instead of
19684         NOTE_LINE_NUMBER; use NOTE_INSN_BASIC_BLOCK_P when possible.
19685         (dwarf2out_var_location): Likewise.
19686         * cfgbuild.c (make_edges): Likewise.
19687         (find_basic_blocks_1): Likewise.
19688         * function.c (reorder_blocks_1): Likewise.
19689         (epilogue_done): Likewise.
19690         (reposition_prologue_and_epilogue_notes): Likewise.
19691         * print-rtl.c (print_rtx): Likewise; drop code for printing
19692         line number notes.
19693         (print_rtl): Likewise.
19694         (print_rtl_single): Likewise.
19695         * gcse.c (insert_insn_start_bb): Likewise.
19696         * alias.c (init_alias_analysis): Likewise.
19697         * calls.c (fixup_tail_calls): Likewise.
19698         * except.c (sjlj_emit_function_enter): Likewise.
19699         * emit-rtl.c (add_insn_after): Likeiwse.
19700         (emit_label_before): Likewise.
19701         (emit_label_after): Likewise.
19702         (emit_note_before, emit_note_after, emit_note): Update
19703         parameter to be enum insn_note; do not deal with source
19704         files.
19705         * cfgcleanup.c (merge_blocks_move_predecessor_nojumps):
19706         Use NOTE_KIND instead of NOTE_LINE_NUMBER; use NOTE_INSN_BASIC_BLOCK_P
19707         when possible.
19708         (merge_blocks_move_successor_nojumps): Simplify now when
19709         we don't have BLOCK notes.
19710         (try_optimize_cfg): Likewise.
19711         * cfglayout.c (skip_insns_after_block): Likewise.
19712         (record_effective_endpoints): Likewise.
19713         (duplicate_insn_chain): Likewise.
19714         * varasm.c (output_constant_pool_1): Likewise.
19715         * sched-deps.c (sched_analyze): Likewise.
19716         * rtl.c (NOTE_INSN_MAX_isnt_negative_adjust_NOTE_INSN_BIAS):
19717         Exterminate.
19718         (note_insn_name): Simplify now when NOTE_INSN_BIAS is gone.
19719         * rtl.h (NOTE_SOURCE_LOCATION, NOTE_EXPANDED_LOCATION): Exterminate.
19720         (SET_INSN_DELETED): Simplify.
19721         (NOTE_LINE_NUMBER): Exterminate.
19722         (NOTE_LINE_KIND): New.
19723         (NOTE_INSN_BASIC_BLOCK_P): Update.
19724         (enum insn_note): Simplify.
19725         (GET_NOTE_INSN_NAME) Simplify.
19726         (emit_note_before, emit_note_after, emit_note): Update prototype.
19727         (squeeze_notes): Remove.
19728         * sched-int.h (NOTE_NOT_BB_P): Update.
19729         * resource.c (mark_target_live_regs): Update.
19730         * sched-rgn.c (debug_dependencies): Update.
19731         * sched-vis.c (print_insn): Update.
19732         * config/alpha/alpha.c (alpha_handle_trap_shadows): Update.
19733         * config/i386/i386.c (ix86_output_function_epilogue): Update.
19734         * config/sh/sh.c (sh_adjust_unroll_max): Function dead since gcc 4.0.0.
19735         (TARGET_ADJUST_UNROLL_MAX): Likewise.
19736         (split_branches): Update.
19737         (sh_optimize_target_register_callee_saved): Remove hunk dead since gcc
19738         4.0.0.
19739         (sh_adjust_unroll_max): Exterminate.
19740         * config/c4x/c4x.c (c4x_reorg): Use SET_INSN_DELETED.
19741         * config/m68hc11/m68hc11.c (m68hc11_check_z_replacement): Likewise.
19742         (m68hc11_reorg): Likewise.
19743         * config/ia64/ia64.c (emit_insn_group_barriers): Update.
19744         (emit_predicate_relation_info): Update.
19745         (process_for_unwind_directive): Update.
19746         * config/rs6000/rs6000.c (rs6000_output_function_epilogue): Update.
19747         (output_call): Update.
19748         * config/pa/pa.c (output_lbranch): Update.
19749         (output_millicode_call): Update.
19750         (output_call): Update.
19751         (pa_combine_instructions): Update.
19752         * config/mips/mips.c (mips16_gp_pseudo_reg): Update.
19753         * config/bfin/bfin.c (gen_one_bundle): Update.
19754         * cfgrtl.c (can_delete_note_p): Update.
19755         (delete_insn): Update.
19756         (rtl_merge_blocks): Update.
19757         (commit_one_edge_insertion): Update.
19758         (rtl_verify_flow_info): Update.
19759         * stmt.c (expand_case): Do not call squeeze_notes.
19760
19761 2007-05-20  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
19762
19763         PR middle-end/7651
19764         PR c++/11856
19765         PR c/12963
19766         PR c/23587
19767         PR other/29694
19768         * c.opt (Wtype-limits): New.
19769         * doc/invoke.texi (Wtype-limits): Document it.
19770         (Wextra): Enabled by -Wextra.
19771         * c-opts.c (c_common_post_options): Enabled by -Wextra.
19772         * c-common.c (shorten_compare): Warn with Wtype-limits.
19773
19774 2007-05-20  Uros Bizjak  <ubizjak@gmail.com>
19775
19776         * config/i386/tmmintrin.h (_mm_alignr_epi32): Implement as always
19777         inlined function, not as a macro.
19778         (_mm_alignr_pi8): Ditto.
19779         * config/i386/ammintrin.h (_mm_extracti_si64): Ditto.
19780         (_mm_inserti_si64): Ditto.
19781         * config/i386/emmintrin.h (_mm_shuffle_pd): Ditto.
19782         (_mm_extract_epi16): Ditto.
19783         (_mm_insert_epi16): Ditto.
19784         (_mm_shufflehi_epi16): Ditto.
19785         (_mm_shufflelo_epi16): Ditto.
19786         (_mm_shuffle_epi32): Ditto.
19787         * config/i386/xmmintrin.h (_mm_set_ss): Use 0.0f for float constant.
19788         * config/386/mm3dnow.h: Add __attribute__((__always_inline__)) to
19789         all functions.
19790         (_m_from_float): Add __extension__ to conversion.  Use 0.0f for
19791         float constant.
19792         (_m_to_float): Use C89 compatible assignment.
19793
19794 2007-05-20  Martin Michlmayr  <tbm@cyrius.com>
19795
19796         PR target/32007
19797         * config/arm/lib1funcs.asm: Define __ARM_ARCH__ on v2/v3 machines.
19798
19799 2007-05-20  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
19800
19801         PR middle-end/7651
19802         * doc/invoke.texi (Wreturn-type): Complete description.
19803         (Wextra): Delete item about return-type warning.
19804         * c-decl.c: Delete redundant Wextra warning.
19805
19806 2007-05-20  Uros Bizjak  <ubizjak@gmail.com>
19807
19808         PR target/31585
19809         * config/i386/pmmintrin.h: Do not include xmmintrin.h
19810         * config/i386/xmmintrin.h (_mm_extract_pi16): Implement as always
19811         inlined function, not as a macro.
19812         (_mm_prefetch): Ditto.
19813         (_m_pextrw): Ditto.
19814         (_mm_insert_pi16): Ditto.
19815         (_m_pinsrw): Ditto.
19816         (_mm_shuffle_pi16): Ditto.  Add const to __N argument.
19817         (_m_pshufw): Ditto. Add const to __N argument.
19818         (_mm_shufle_ps): Ditto.  Add const to __mask argument.
19819         * config/i386/emmintrin.h (_mm_slli_epi16): Add const to __B argument.
19820         (_mm_slli_epi32): Ditto.
19821         (_mm_srli_si128): Implement as always inlined function, not as a
19822         macro.  Add __inline to function declaration.
19823         (_mm_slli_si128): Ditto.
19824
19825 2007-05-19  Uros Bizjak  <ubizjak@gmail.com>
19826
19827         * config/i386/sfp-machine.h (FP_EX_INVALID, FP_EX_DENORM,
19828         FP_EXP_DIVZERO, FP_EX_OVERFLOW, FP_EX_UNDERFLOW, FP_EX_INEXACT):
19829         New constants.
19830         (struct fenv): New structure.
19831         (FP_HANDLE_EXCEPTIONS): New define.
19832         (FP_RND_NEAREST, FP_RND_ZERO, FP_RND_PINF, FP_RND_MINF): New constants.
19833         (_FP_DECL_EXP): New define.
19834         (FP_INIT_ROUNDMODE): New define.
19835         (FP_ROUNDMODE): New define.
19836
19837 2007-05-19  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
19838
19839         * doc/invoke.texi (Warning Options): Add -Wconversion-sign.
19840         (Wconversion): Update description.
19841         (Wconversion-sign): New.
19842         * c.opt (Wconversion-sign): New.
19843         * c-opts.c (c_common_post_options): Uninitialized Wconversion-sign
19844         means disabled for C++. Otherwise, take the status of Wconversion.
19845         * c-common.c (conversion_warning): Warn with either Wconversion or
19846         Wconversion-sign.
19847         (warnings_for_convert_and_check): Conditions are already checked by
19848         conversion_warning.
19849         (convert_and_check): Don't check warnings if the conversion failed.
19850
19851 2007-05-19 Andy Hutchinson <HutchinsonAndy@netscape.net>
19852            Anatoly Sokolov <aesok@dol.ru>
19853
19854         * config/avr/avr-protos.h (expand_prologue, expand_epilogue,
19855         avr_epilogue_uses) : Add declaration.
19856         * config/avr/predicates.md (avr_sp_immediate_operand): New predicate.
19857         * config/avr/constraints.md (R): New constraint.
19858         config/avr/avr.md (SREG_ADDR, UNSPEC_SEI, UNSPEC_CLI,
19859         UNSPECV_PROLOGUE_SAVES, UNSPECV_EPILOGUE_RESTORES): New constants.
19860         (*pop1, *pop2, *pop3, *pop4, *pop5): Combine into ...
19861         (*addhi3_sp_R_pc2, *addhi3_sp_R_pc3): ... these patterns.
19862         (*movhi_sp, popqi, pophi, enable_interrupt, disable_interrupt,
19863         call_prologue_saves, epilogue_restores, return_from_epilogue,
19864         return_from_main_epilogue, return_from_interrupt_epilogue,
19865         return_from_naked_epilogue, prologue, epilogue): New patterns.
19866         (jump): Handle symbol reference.
19867         * config/avr/avr.c (out_adj_frame_ptr, out_set_stack_ptr,
19868         avr_output_function_prologue, avr_output_function_epilogue): Remove
19869         functions.
19870         (avr_init_machine_status, expand_prologue, expand_epilogue,
19871         avr_asm_function_end_prologue, avr_epilogue_uses,
19872         avr_asm_function_begin_epilogue): New functions.
19873         (prologue_size, epilogue_size, jump_tables_size): Remove global
19874         variables.
19875         (TARGET_ASM_FUNCTION_PROLOGUE, TARGET_ASM_FUNCTION_EPILOGUE): Remove.
19876         (TARGET_ASM_FUNCTION_END_PROLOGUE): Define.
19877         (TARGET_ASM_FUNCTION_BEGIN_EPILOGUE): Define.
19878         (avr_override_options): Initialise init_machine_status.
19879         (output_movhi): Handle all stack pointer loads.
19880         (out_movqi_r_mr, out_movqi_mr_r): Handle SREG_ADDR address.
19881         (avr_output_addr_vec_elt): Do not use variable jump_tables_size.
19882         * config/avr/avr.h (AVR_2_BYTE_PC, AVR_3_BYTE_PC): New.
19883         (EPILOGUE_USES) Redefine.
19884         (machine_function) Declare.
19885
19886 2007-05-19  Richard Sandiford  <richard@codesourcery.com>
19887
19888         * config/mips/mips.c (mips_offset_within_alignment_p): Tweak comment.
19889         Use a single return statement.
19890
19891 2007-05-19  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
19892
19893         PR middle-end/30250
19894         * builtins.c (do_mpfr_lgamma_r): New.
19895         (fold_builtin_2): Handle builtin gamma_r/lgamma_r.
19896         * tree.h (CASE_FLT_FN_REENT): New.
19897
19898 2007-05-18  Geoffrey Keating  <geoffk@apple.com>
19899
19900         * dwarf2out.c (print_die): Use '%ld' not '%lu' to print a 'long'.
19901         (output_die): Use 'unsigned long' with %x.
19902         * sched-vis.c (print_value): Use 'unsigned HOST_WIDE_INT' and
19903         HOST_WIDE_INT_PRINT_HEX to print HOST_WIDE_INT.
19904         * tree-dump.c (dump_pointer): Use 'unsigned long' for %lx.
19905
19906         * unwind-dw2.c (uw_identify_context): Use the CFA, not the IP.
19907
19908 2007-05-18  H.J. Lu  <hongjiu.lu@intel.com>
19909
19910         PR target/31989
19911         PR target/31681
19912         PR target/31666
19913         * config/i386/i386.c (init_cumulative_args): Set maybe_vaarg to
19914         true if function has no argument.
19915
19916 2007-05-18  DJ Delorie  <dj@redhat.com>
19917
19918         * config/mips/mips.c (mips_offset_within_alignment_p): New.
19919         (mips_symbolic_constant_p): Call it for TPREL and DTPREL symbols.
19920
19921 2007-05-18  Uros Bizjak  <ubizjak@gmail.com>
19922
19923         * longlong.h (__x86_64__): Add definitions for add_ssaaaa,
19924         sub_ddmmss, umul_ppmm, udiv_qrnnd, count_leading_zeros and
19925         count_trailing_zeros.
19926         (__i386__): Implement count_leading_zeros using __builtin_clz().
19927         Implement count_trailing_zeros usign __builtin_ctz().
19928
19929 2007-05-18  Richard Sandiford  <richard@codesourcery.com>
19930
19931         * config/i386/vxworks.h (ASM_PREFERRED_EH_DATA_FORMAT): Undefine.
19932
19933 2007-05-18  Uros Bizjak  <ubizjak@gmail.com>
19934
19935         PR middle-end/31344
19936         * expr.c (emit_move_change_mode): Change mode of push operands here.
19937
19938 2007-05-17  Ian Lance Taylor  <iant@google.com>
19939
19940         PR tree-optimization/31953
19941         * tree-vrp.c (set_value_range_to_value): Add equiv parameter.
19942         Change all callers.
19943         (set_value_range_to_null): Call set_value_range_to_value.
19944         (extract_range_from_comparison): Likewise.
19945
19946 2007-05-17  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
19947
19948         * toplev.c (print_version): Output GMP/MPFR version info.
19949
19950         * builtins.c (CASE_MATHFN_REENT): New macro.
19951         (mathfn_built_in): Use it.
19952         * builtins.def (BUILT_IN_GAMMA_R, BUILT_IN_GAMMAF_R,
19953         BUILT_IN_GAMMAL_R, BUILT_IN_LGAMMA_R, BUILT_IN_LGAMMAF_R,
19954         BUILT_IN_LGAMMAL_R): New.
19955         * doc/extend.texi: Document new builtins.
19956
19957         PR middle-end/31796
19958         * builtins.c (do_mpfr_remquo): New.
19959         (fold_builtin_2): Handle BUILT_IN_DREM/BUILT_IN_REMAINDER.
19960         (fold_builtin_3): Handle BUILT_IN_REMQUO.
19961
19962         PR middle-end/30251
19963         * builtins.c (fold_builtin_1): Handle y0, y1.
19964         (fold_builtin_2): Handle yn.
19965
19966         PR middle-end/30251
19967         * builtins.c (do_mpfr_bessel_n): New.
19968         (fold_builtin_1): Handle BUILT_IN_J0 and BUILT_IN_J1.
19969         (fold_builtin_2): Handle BUILT_IN_JN.
19970
19971 2007-05-17  Danny Smith  <dannysmith@users.sourceforge.net>
19972
19973         PR target/31965
19974         * config/i386/mingw32.h (_INTEGRAL_MAX_BITS): Define builtin as
19975         TYPE_PRECISION (intmax_type_node).
19976
19977 2007-05-17  Steve Ellcey  <sje@cup.hp.com>
19978
19979         PR target/31850
19980         * reload.c (subst_reloads): Remove checking.
19981
19982 2007-05-17  Eric Botcazou  <ebotcazou@libertysurf.fr>
19983
19984         PR rtl-optimization/31691
19985         * combine.c (simplify_set): Build a new src pattern instead of
19986         substituting its operands in the COMPARE case.
19987
19988 2007-05-17  Zdenek Dvorak  <dvorakz@suse.cz>
19989
19990         * tree-vrp.c (finalize_jump_threads): Do not care about dominance info.
19991         (execute_vrp): Preserve loops through jump threading.
19992         * tree-ssa-threadupdate.c (thread_single_edge,
19993         dbds_continue_enumeration_p, determine_bb_domination_status,
19994         thread_through_loop_header): New functions.
19995         (create_edge_and_update_destination_phis,
19996         create_edge_and_update_destination_phis): Set loops for the new blocks.
19997         (prune_undesirable_thread_requests): Removed.
19998         (redirect_edges): Do not pretend that redirect_edge_and_branch can
19999         create new blocks.
20000         (thread_block): Do not call prune_undesirable_thread_requests.
20001         Update loops.
20002         (mark_threaded_blocks): Select edges to thread here.
20003         (thread_through_all_blocks): Take may_peel_loop_headers argument.
20004         Thread edges through loop headers independently.
20005         * cfgloopmanip.c (create_preheader, mfb_keep_just): Export.
20006         * tree-pass.h (TODO_mark_first_instance): New.
20007         (first_pass_instance): Declare.
20008         * cfghooks.c (duplicate_block): Put the block to the original loop
20009         if copy is not specified.
20010         * tree-ssa-dom.c (tree_ssa_dominator_optimize): Preserve loops through
20011         jump threading.  Pass may_peel_loop_headers to
20012         thread_through_all_blocks according to first_pass_instance.
20013         * cfgloop.h (create_preheader): Declare.
20014         * tree-flow.h (thread_through_all_blocks): Declaration changed.
20015         * basic-block.h (mfb_keep_just, mfb_kj_edge): Declare.
20016         * passes.c (first_pass_instance): New variable.
20017         (next_pass_1): Set TODO_mark_first_instance.
20018         (execute_todo): Set first_pass_instance.
20019
20020 2007-05-17  Uros Bizjak  <ubizjak@gmail.com>
20021
20022         PR tree-optimization/24659
20023         * optabs.h (enum optab_index): Add OTI_vec_unpacks_float_hi,
20024         OTI_vec_unpacks_float_lo, OTI_vec_unpacku_float_hi,
20025         OTI_vec_unpacku_float_lo, OTI_vec_pack_sfix_trunc and
20026         OTI_vec_pack_ufix_trunc.
20027         (vec_unpacks_float_hi_optab): Define new macro.
20028         (vec_unpacks_float_lo_optab): Ditto.
20029         (vec_unpacku_float_hi_optab): Ditto.
20030         (vec_unpacku_float_lo_optab): Ditto.
20031         (vec_pack_sfix_trunc_optab): Ditto.
20032         (vec_pack_ufix_trunc_optab): Ditto.
20033         * genopinit.c (optabs): Implement vec_unpack[s|u]_[hi|lo]_optab
20034         and vec_pack_[s|u]fix_trunc_optab using
20035         vec_unpack[s|u]_[hi\lo]_* and vec_pack_[u|s]fix_trunc_* patterns
20036         * tree-vectorizer.c (supportable_widening_operation): Handle
20037         FLOAT_EXPR and CONVERT_EXPR.  Update comment.
20038         (supportable_narrowing_operation): New function.
20039         * tree-vectorizer.h (supportable_narrowing_operation): Prototype.
20040         * tree-vect-transform.c (vectorizable_conversion): Handle
20041         (nunits_in == nunits_out / 2) and (nunits_out == nunits_in / 2) cases.
20042         (vect_gen_widened_results_half): Move before vectorizable_conversion.
20043         (vectorizable_type_demotion): Call supportable_narrowing_operation()
20044         to check for target support.
20045         * optabs.c (optab_for_tree_code) Return vec_unpack[s|u]_float_hi_optab
20046         for VEC_UNPACK_FLOAT_HI_EXPR, vec_unpack[s|u]_float_lo_optab
20047         for VEC_UNPACK_FLOAT_LO_EXPR and vec_pack_[u|s]fix_trunc_optab
20048         for VEC_PACK_FIX_TRUNC_EXPR.
20049         (expand_binop): Special case mode of the result for
20050         vec_pack_[u|s]fix_trunc_optab.
20051         (init_optabs): Initialize vec_unpack[s|u]_[hi|lo]_optab and
20052         vec_pack_[u|s]fix_trunc_optab.
20053
20054         * tree.def (VEC_UNPACK_FLOAT_HI_EXPR, VEC_UNPACK_FLOAT_LO_EXPR,
20055         VEC_PACK_FIX_TRUNC_EXPR): New tree codes.
20056         * tree-pretty-print.c (dump_generic_node): Handle
20057         VEC_UNPACK_FLOAT_HI_EXPR, VEC_UNPACK_FLOAT_LO_EXPR and
20058         VEC_PACK_FIX_TRUNC_EXPR.
20059         (op_prio): Ditto.
20060         * expr.c (expand_expr_real_1): Ditto.
20061         * tree-inline.c (estimate_num_insns_1): Ditto.
20062         * tree-vect-generic.c (expand_vector_operations_1): Ditto.
20063
20064         * config/i386/sse.md (vec_unpacks_float_hi_v8hi): New expander.
20065         (vec_unpacks_float_lo_v8hi): Ditto.
20066         (vec_unpacku_float_hi_v8hi): Ditto.
20067         (vec_unpacku_float_lo_v8hi): Ditto.
20068         (vec_unpacks_float_hi_v4si): Ditto.
20069         (vec_unpacks_float_lo_v4si): Ditto.
20070         (vec_pack_sfix_trunc_v2df): Ditto.
20071
20072         * doc/c-tree.texi (Expression trees) [VEC_UNPACK_FLOAT_HI_EXPR]:
20073         Document.
20074         [VEC_UNPACK_FLOAT_LO_EXPR]: Ditto.
20075         [VEC_PACK_FIX_TRUNC_EXPR]: Ditto.
20076         * doc/md.texi (Standard Names) [vec_pack_sfix_trunc]: Document.
20077         [vec_pack_ufix_trunc]: Ditto.
20078         [vec_unpacks_float_hi]: Ditto.
20079         [vec_unpacks_float_lo]: Ditto.
20080         [vec_unpacku_float_hi]: Ditto.
20081         [vec_unpacku_float_lo]: Ditto.
20082
20083 2007-05-16  Uros Bizjak  <ubizjak@gmail.com>
20084
20085         * soft-fp/README: Update for new files.
20086         * soft-fp/floattisf.c: New file.
20087         * soft-fp/floattidf.c: New file.
20088         * soft-fp/floattitf.c: New file.
20089         * soft-fp/floatuntisf.c: New file.
20090         * soft-fp/floatuntidf.c: New file.
20091         * soft-fp/floatuntitf.c: New file.
20092         * soft-fp/fixsfti.c: New file.
20093         * soft-fp/fixdfti.c: New file.
20094         * soft-fp/fixtfti.c: New file.
20095         * soft-fp/fixunssfti.c: New file.
20096         * soft-fp/fixunsdfti.c: New file.
20097         * soft-fp/fixunstfti.c: New file.
20098         * soft-fp/extendxftf.c: New file.
20099         * soft-fp/trunctfxf.c: New file.
20100
20101         * libgcc-std.ver (__extendxftf2): Added to GCC_4.3.0 section.
20102         (__trunctfxf2): Ditto.
20103
20104         * config/i386/libgcc-x86_64-glibc.ver (__addtf3, __divtf3, __eqtf2,
20105         __extenddftf2, __extendsftf2, __fixtfdi, __fixtfsi, __fixtfti,
20106         __fixunstfdi, __fixunstfsi, __fixunstfti, __floatditf, __floatsitf,
20107         __floattitf, __floatunditf, __floatunsitf, __floatuntitf, __getf2,
20108         __letf2, __multf3, __negtf2, __subtf3, __trunctfdf2, __trunctfsf2,
20109         __unordtf2): Exclude and add to GCC_4.3.0 section for x86_64 targets.
20110
20111         * config/i386/t-fprules-softfp64: New file.
20112         * config/i386/sfp-machine.h: New file.
20113         * config.gcc (x86_64-*-linux*, x86_64-*-kfreebsd*-gnu,
20114         x86_64-*-knetbsd*-gnu): Add i386/t-fprules-softfp64
20115         and soft-fp/t-softfp to tmake_file.
20116         (i[34567]86-*-linux*, i[34567]86-*-kfreebsd*-gnu,
20117         i[34567]86-*-knetbsd*-gnu): Ditto for --enable-targets=all.
20118
20119         * config/i386/t-linux64 (softfp_wrap_start): New.
20120         (softfp_wrap_end): New.
20121         * config/i386/i386.c (ix86_scalar_mode_supported): TFmode is
20122         supported for TARGET_64BIT.
20123
20124 2007-05-16  Rafael Avila de Espindola  <espindola@google.com>
20125
20126         * c-common.c (c_common_signed_or_unsigned_type): Emulate
20127         c_common_unsigned_type behavior.
20128
20129 2007-05-16  Paolo Bonzini  <bonzini@gnu.org>
20130
20131         * config/i386/i386.c (legitimize_tls_address): Mark __tls_get_addr
20132         calls as pure.
20133
20134 2007-05-16  Eric Christopher  <echristo@apple.com>
20135
20136         * config/rs6000/rs6000.c (rs6000_emit_prologue): Move altivec register
20137         saving after stack push. Set sp_offset whenever we push.
20138         (rs6000_emit_epilogue): Move altivec register restore before
20139         stack push.
20140
20141 2007-05-16  Richard Sandiford  <richard@codesourcery.com>
20142
20143         * configure.ac: Allow sysroots to be relocated under $prefix as
20144         well as $exec_prefix.
20145         * configure: Regenerate.
20146
20147 2007-05-16  Richard Sandiford  <richard@codesourcery.com>
20148
20149         Revert:
20150
20151         2007-05-12  Richard Sandiford  <richard@codesourcery.com>
20152
20153         * configure.ac (gcc_gxx_include_dir): Use $(libsubdir_to_prefix).
20154         (gcc_tooldir): Likewise.
20155         * configure: Regenerate.
20156         * Makefile.in (libsubdir_to_prefix): New variable, based on the
20157         old configure.ac gcc_tooldir setting.
20158         (prefix_to_exec_prefix): New variable.
20159         (DRIVER_DEFINES): Use $(libsubdir_to_prefix)$(prefix_to_exec_prefix)
20160         rather than $(unlibsubdir)/../ to derive TOOLDIR_BASE_PREFIX.
20161
20162 2007-05-14  Janis Johnson  <janis187@us.ibm.com>
20163
20164         * c-typeck.c (build_binary_op): Return early for error.
20165
20166 2007-05-15  Zdenek Dvorak  <dvorakz@suse.cz>
20167
20168         * tree-ssa-loop-niter.c (record_estimate): Use GGC_NEW to allocate
20169         struct nb_iter_bound.
20170         (free_numbers_of_iterations_estimates_loop): Use ggc_free.
20171         * gengtype.c (open_base_files): Add cfhloop.h to the list of includes.
20172         * cfgloopmanip.c (place_new_loop): Vector larray is gc-allocated.
20173         * tree-scalar-evolution.c: Include gt-tree-scalar-evolution.h.
20174         (struct scev_info_str, scalar_evolution_info): Add GTY markers.
20175         (new_scev_info_str): Use GGC_NEW to allocate struct scev_info_str.
20176         (del_scev_info): Use ggc_free.
20177         (scev_initialize): Allocate scalar_evolution_info in gc memory.
20178         * loop-init.c: Include ggc.h.
20179         (loop_optimizer_init): Use GGC_CNEW to allocate struct loops.
20180         (loop_optimizer_finalize): Use ggc_free.
20181         * tree-ssa-loop.c (pass_tree_unswitch, pass_vectorize,
20182         pass_linear_transfom, pass_empty_loop, pass_complete_unroll,
20183         pass_iv_optimize): Add TODO_ggc_collect.
20184         * function.h (struct function): Remove skip marker from
20185         x_current_loops.
20186         * cfgloop.c: Include ggc.h.
20187         (flow_loops_free, flow_loop_free): Free the loop descriptions in gc
20188         memory.
20189         (establish_preds): Vector superloops is gc allocated.
20190         (alloc_loop): Allocate loop using GGC_CNEW.  Allocate head of
20191         loop->exits list.
20192         (flow_loops_find): Vector larray is gc allocated.
20193         (loop_exit_free): Use ggc_free.
20194         (rescan_loop_exit): Use GGC_NEW to allocate struct loop_exit.  Reflect
20195         that head of exits list is now not a part of struct loop.
20196         (record_loop_exits): Allocate exits table in gc memory.
20197         (get_loop_exit_edges, verify_loop_structure, single_exit): Reflect
20198         that head of exits list is now not a part of struct loop.
20199         * cfgloop.h (struct lpt_decision, struct nb_iter_bound,
20200         struct loop_exit): Add GTY marker.
20201         (struct loop): Add GTY marker.  Make superloops vector gc allocated.
20202         Add skip marker to aux field.  Make head of exits list a separate
20203         object.
20204         (struct loops): Add GTY marker.  Make larray vector gc allocated.
20205         Add param marker to exits table.
20206         (get_loops): Type changed.
20207         * Makefile.in (tree-scalar-evolution.o): Add
20208         gt-tree-scalar-evolution.h dependency.
20209         (cfgloop.o, loop-init.o): Add ggc.h dependency.
20210         (GTFILES): Add cfgloop.h and tree-scalar-evolution.c.
20211         * basic-block.h (struct basic_block_def): Remove skip marker from
20212         loop_father field.
20213
20214 2007-05-14  Uros Bizjak  <ubizjak@gmail.com>
20215
20216         * builtins.c (expand_builtin_mathfn): Use EXPAND_NORMAL instead
20217         of 0 in the call to expand_expr().
20218         (expand_builtin_mathfn_3): Ditto.
20219         (expand_builtin_interclass_mathfn): Ditto.
20220         (expand_builtin_cexpi): Ditto.
20221         (expand_builtin_int_roundingfn): Ditto.
20222         (expand_builtin_int_roundingfn_2): Ditto.
20223         (expand_builtin_pow): Ditto.
20224         (expand_builtin_powi): Ditto.
20225         (expand_builtin_bswap): Ditto.
20226         (expand_builtin_unop): Ditto.
20227         (expand_builtin_fabs): Ditto.
20228         (get_builtin_sync_mem): Use NULL_RTX instead of NULL in
20229         the call to expand_expr().
20230         (expand_builtin_sync_operation): Ditto.
20231         (expand_builtin_compare_and_swap): Ditto.
20232         (expand_builtin_lock_test_and_set): Ditto.
20233         * except.c (expand_builtin_eh_return_data_regno): Use EXPAND_NORMAL
20234         instead of 0 in the call to expand_expr().
20235         (expand_builtin_extract_return_addr): Ditto.
20236         (expand_builtin_eh_return): Ditto.
20237         (expand_eh_return): Ditto.
20238         * explow.c (expr_size): Ditto.
20239         * expr.c (optimize_bitfield_assignment_op): Ditto.
20240         (expand_assignement): Ditto.
20241         (store_expr): Ditto.
20242         (store_field): Ditto.
20243         (expand_expr_addr_expr_1): Use NULL_RTX instead of NULL in
20244         the call to expand_expr().
20245         (expand_expr_real_1) [COMPLEX_CST]: Use EXPAND_NORMAL instead of 0
20246         in the call to expand_expr().
20247         [CONSTRUCTOR, PLUS_EXPR, MINUS_EXPR, NEGATE_EXPR, ABS_EXPR,
20248         BIT_NOT_EXPR, LSHIFT_EXPR, LT_EXPR, TRUTH_NOT_EXPR]: Ditto.
20249         [VEC_UNPACK_HI_EXPR, VEC_UNPACK_LO]: Use expand_normal() instead
20250         of expand_expr().
20251         * optabs.c (expand_vec_shift_expr): Ditto.
20252         (expand_vec_cond_expr): Ditto.
20253         (vector_compare_rtx): Use EXPAND_STACK_PARM instead of 1 in the
20254         call to expand_expr().
20255         * stmt.c (expand_return): Use EXPAND_NORMAL instead of 0
20256         in the call to expand_expr().
20257
20258 2007-05-14  Dave Korn  <dave.korn@artimi.com>
20259
20260         * genautomata.c (gen_regexp_el): Allocate correct size for regexp.
20261
20262 2007-05-14  Rafael Avila de Espindola  <espindola@google.com>
20263
20264         * c-common.c (warnings_for_convert_and_check): Use unsigned_type_for
20265         instead of c_common_unsigned_type.
20266         (c_common_unsigned_type): Remove.
20267         (shorten_compare): Use c_common_signed_or_unsigned_type instead of
20268         c_common_unsigned_type.
20269         (c_common_nodes_and_builtins): Use unsigned_type_for instead of
20270         c_common_unsigned_type.
20271         * c-common.h (c_common_unsigned_type): Remove.
20272         * c-decl.c (grokdeclarator): Use unsigned_type_for instead of
20273         c_common_unsigned_type.
20274         * c-format.c (check_format_types): Use unsigned_type_for instead of
20275         c_common_unsigned_type.
20276         * c-objc-common.h (LANG_HOOKS_UNSIGNED_TYPE): Remove.
20277         * c-typeck.c (convert_for_assignment): Use unsigned_type_for instead
20278         of c_common_unsigned_type.
20279         * convert.c (convert_to_integer): Use unsigned_type_for instead of
20280         lang_hooks.types.unsigned_type.
20281         * expmed.c (make_tree): Use unsigned_type_for instead of
20282         lang_hooks.types.unsigned_type.
20283         * fold-const.c (fold_negate_expr): Use unsigned_type_for instead of
20284         lang_hooks.types.unsigned_type.
20285         (build_range_check): Likewise.
20286         (fold_unary): Likewise.
20287         (fold_binary): Likewise.
20288         (fold_ternary): Likewise.
20289         * langhooks-def.h (LANG_HOOKS_UNSIGNED_TYPE): Remove.
20290         * langhooks.h (lang_hooks_for_types): Remove unsigned_type.
20291         * tree.c (get_unsigned_type): New.
20292         (unsigned_type_for): Use get_unsigned_type instead of
20293         lang_hooks.types.unsigned_type.
20294
20295 2007-05-14  Kazu Hirata  <kazu@codesourcery.com>
20296
20297         * config/m68k/m68k-protos.h: Rename m68k_interrupt_function_p
20298         to m68k_get_function_kind.  Update its prototype.
20299         * config/m68k/m68k.c (m68k_attribute_table): Add an entry for
20300         interrupt_thread.
20301         (m68k_interrupt_function_p): Return enum m68k_function_type
20302         instead of bool.  Rename to m68k_get_function_kind.
20303         (m68k_handle_fndecl_attribute): Reject interrupt_thread if the
20304         target is not fido.
20305         (m68k_compute_frame_layout): Don't mark any register for save
20306         if an interrupt_thread attribute is specified.
20307         (m68k_hard_regno_rename_ok): Update a use of
20308         m68k_interrupt_function_p.
20309         * config/m68k/m68k.h (EPILOGUE_USES): Update a use of
20310         m68k_interrupt_function_p.
20311         (m68k_function_type): New.
20312         * config/m68k/m68k.md (*return): Output a 'sleep' instruction
20313         for a function with an interrupt_thread attribute.
20314         * doc/extend.texi: Document the interrupt_thread attribute.
20315
20316 2007-05-13  Daniel Berlin  <dberlin@dberlin.org>
20317
20318         Fix PR tree-optimization/31911
20319         * tree-ssa-pre.c (phi_translate): Make sure to cache results even
20320         if they didn't change the expression.
20321
20322 2007-05-13  Zdenek Dvorak  <dvorakz@suse.cz>
20323
20324         * tree-scalar-evolution.c (resolve_mixers): Exported.
20325         * tree-scalar-evolution.h (resolve_mixers): Declare.
20326         * tree-data-ref.c (object_analysis, ptr_decl_may_alias_p,
20327         ptr_ptr_may_alias_p, may_alias_p, record_ptr_differ_p,
20328         record_record_differ_p, record_array_differ_p, array_ptr_differ_p,
20329         base_object_differ_p, base_addr_differ_p, analyze_array_indexes,
20330         init_array_ref, init_pointer_ref, analyze_indirect_ref,
20331         strip_conversion, analyze_offset_expr, address_analysis,
20332         object_analysis, analyze_offset): Removed.
20333         (dr_analyze_innermost, dr_analyze_indices, dr_analyze_alias,
20334         split_constant_offset, canonicalize_base_object_address,
20335         object_address_invariant_in_loop_p, disjoint_objects_p,
20336         dr_may_alias_p, dr_address_invariant_p): New functions.
20337         (create_data_ref): Use dr_analyze_innermost, dr_analyze_indices
20338         and dr_analyze_alias.
20339         (initialize_data_dependence_relation): Use dr_may_alias_p
20340         and object_address_invariant_in_loop_p.
20341         (compute_self_dependence): Handle the case when
20342         DDR_ARE_DEPENDENT (ddr) is chrec_dont_know.
20343         (find_data_references_in_stmt): Restrict the analysis of data
20344         references to the given loop nest.
20345         (find_data_references_in_loop): Made static.  Pass loop nest to
20346         find_data_references_in_stmt.
20347         (compute_data_dependences_for_loop): Use DR_VOPS.
20348         (free_data_ref): Free DR_VOPS.
20349         * tree-data-ref.h (struct first_location_in_loop): Replaced by ...
20350         (struct innermost_loop_behavior): ... new.
20351         (struct base_object_info): Replaced by ...
20352         (struct indices): ... new.
20353         (struct dr_alias): New.
20354         (enum data_ref_type): Removed.
20355         (struct data_reference): Consist of struct innermost_loop_behavior,
20356         struct indices and struct dr_alias.
20357         (DR_SET_ACCESS_FNS, DR_FREE_ACCESS_FNS): Removed.
20358         (DR_MEMTAG): Renamed to ...
20359         (DR_SYMBOL_TAG): ... this.
20360         (find_data_references_in_loop): Declaration removed.
20361         * tree-vect-analyze.c (vect_compute_data_ref_alignment): Use DR_INIT
20362         instead of DR_OFFSET_MISALIGNMENT.  DR_ALIGNED_TO is never NULL.
20363         (vect_analyze_data_refs): Use DR_SYMBOL_TAG instead of DR_MEMTAG.
20364         * tree-vect-transform.c (vect_create_data_ref_ptr): Ditto.
20365
20366 2007-05-13  Revital Eres  <eres@il.ibm.com>
20367
20368         * tree-ssa-dse.c (get_use_of_stmt_lhs): New function
20369         which walks virtual def-use chains to find redundant stores.
20370         (dse_optimize_stmt): Call it.
20371
20372 2007-05-12  Steven Bosscher  <steven@gcc.gnu.org>
20373
20374         * gcse.c (gcse_main): Do jump bypassing in CPROP2.
20375         * passes.c (init_optimization_passes): Move pass_jump_bypass
20376         after loop2.
20377
20378         * basic-block.h (bb_has_eh_pred): Fix style issue.
20379
20380 2007-05-12  Steven Bosscher  <steven@gcc.gnu.org>
20381
20382         PR rtl-optimization/31848
20383         * loop-invariant.c (move_invariant_reg): If we move an insn
20384         with a REG_EQUAL note, and that insn is not always executed,
20385         remove the REG_EQUAL note.
20386
20387 2007-05-12  Richard Guenther  <rguenther@suse.de>
20388
20389         PR tree-optimization/31797
20390         * tree-ssa-forwprop.c (forward_propagate_addr_expr): Do not
20391         propagate into a stmt that has volatile ops.
20392
20393 2007-05-12  Richard Sandiford  <richard@codesourcery.com>
20394
20395         * configure.ac (gcc_gxx_include_dir): Use $(libsubdir_to_prefix).
20396         (gcc_tooldir): Likewise.
20397         * configure: Regenerate.
20398         * Makefile.in (libsubdir_to_prefix): New variable, based on the
20399         old configure.ac gcc_tooldir setting.
20400         (prefix_to_exec_prefix): New variable.
20401         (DRIVER_DEFINES): Use $(libsubdir_to_prefix)$(prefix_to_exec_prefix)
20402         rather than $(unlibsubdir)/../ to derive TOOLDIR_BASE_PREFIX.
20403
20404 2007-05-11  Silvius Rus  <rus@google.com>
20405
20406         * Makefile.in (OBJS-common): Add tree-ssa-alias-warnings.o.
20407         * c-common.c (strict_aliasing_warning): Modify -Wstrict-aliasing logic.
20408         * c-common.h (strict_aliasing_warning): Change return type.
20409         * c-opts.c (c_common_handle_option): Add call to set_Wstrict_aliasing.
20410         * c-typeck.c (build_indirect_ref): Add call to strict_aliasing_warning.
20411         (build_c_cast): Condition call to strict_aliasing_warning.
20412         * doc/invoke.texi: Update description of -Wstrict-aliasing[=n].
20413         * flags.h (set_Wstrict_aliasing): Declare.
20414         * opts.c (set_Wstrict_alising): Define, add call to.
20415         * tree-flow.h (strict_aliasing_warning_backend): Declare.
20416         * tree-ssa-alias-warnings.c: New file.
20417         * tree-ssa-alias.c (compute_may_aliases): Add call to
20418         strict_aliasing_warning_backend.
20419
20420 2007-05-11  Zdenek Dvorak  <dvorakz@suse.cz>
20421
20422         * tree-loop-linear.c (gather_interchange_stats, try_interchange_loops):
20423         Use loop_depth and loop_outer accessor functions.
20424         * tree-ssa-loop-im.c (outermost_invariant_loop, set_level,
20425         determine_invariantness_stmt, move_computations_stmt): Ditto.
20426         * cfgloopmanip.c (fix_bb_placement, fix_loop_placement, remove_path,
20427         add_loop, loopify, unloop, fix_loop_structure): Ditto.
20428         * tree-ssa-loop-manip.c (find_uses_to_rename_use): Ditto.
20429         * tree-scalar-evolution.c (interpret_loop_phi,
20430         compute_scalar_evolution_in_loop, analyze_scalar_evolution_in_loop,
20431         instantiate_parameters_1, scev_const_prop): Ditto.
20432         * cfghooks.c (make_forwarder_block): Ditto.
20433         * cfgloopanal.c (mark_irreducible_loops, mark_loop_exit_edges): Ditto.
20434         * modulo-sched.c (loop_canon_p): Ditto.
20435         * tree-vectorizer.c (slpeel_tree_duplicate_loop_to_edge_cfg,
20436         slpeel_can_duplicate_loop_p): Ditto.
20437         * lambda-code.c (invariant_in_loop_and_outer_loops): Ditto.
20438         * tree-cfg.c (tree_duplicate_sese_region): Ditto.
20439         * cfgloop.c (flow_loop_dump, flow_loop_nodes_find, rescan_loop_exit,
20440         cancel_loop, verify_loop_structure): Ditto.
20441         (flow_loop_nested_p, superloop_at_depth, flow_loop_free,
20442         add_bb_to_loop, remove_bb_from_loops, find_common_loop): Use the
20443         superloops vector instead of "pred" array.
20444         (establish_preds): Take father loop as an argument.  Initialize the
20445         superloops vector.
20446         (flow_loop_tree_node_add): Pass father loop to establish_preds.
20447         Do not initialize loop->outer.
20448         (flow_loop_tree_node_remove): Truncate the superloops vector.
20449         * cfgloop.h (struct loop): Removed field "outer", fields "depth" and
20450         "pred" merged to "superloops" vector.
20451         (loop_depth, loop_outer): New.
20452         (fel_init): Use loop_outer.
20453
20454 2007-05-11  Jan Hubicka  <jh@suse.cz>
20455
20456         * cgraphunit.c: Include gt-cgraphunit.h
20457         (static_ctors, static_dtors): New static vars.
20458         (record_cdtor_fn, build_cdtor, cgraph_build_cdtor_fns): New functions,
20459         based on implementation in c-common.c
20460         (cgraph_finalize_function): Call record_cdtor_fn.
20461         (cgraph_optimize): Call cgraph_build_cdtor_fns.
20462         * decl.c (finish_function): Do not call c_record_cdtor_fn.
20463         (c_write_global_declarations): Do not call c_build_cdtor_fns.
20464         * c-common.c (static_ctors, static_dtors, c_record_cdtor_fn,
20465         build_cdtor, c_build_cdtor_fns): Remove.
20466         * c-common.h (static_ctors, static_dtors, c_record_cdtor_fn,
20467         c_build_cdtor_fns): Remove prototype.
20468
20469 2007-05-11  Paolo Carlini  <pcarlini@suse.de>
20470
20471         PR other/31852
20472         * builtin-types.def: Add BT_FN_PTR_CONST_PTR_INT_SIZE.
20473         * builtins.def: Add BUILT_IN_MEMCHR, use the latter.
20474         * builtins.c (fold_builtin_memchr): New.
20475         (expand_builtin_memchr): Call the latter.
20476         (expand_builtin, fold_builtin_3): Deal with BUILT_IN_MEMCHR.
20477         * doc/extend.texi ([Other built-in functions provided by GCC]):
20478         Document memchr.
20479
20480 2007-05-11  Andreas Krebbel  <krebbel1@de.ibm.com>
20481
20482         * config/s390/s390.md (GPR0_REGNUM, FPR0_REGNUM, FPR2_REGNUM,
20483         PFPO_CONVERT, PFPO_OP_TYPE_SF, PFPO_OP_TYPE_DF, PFPO_OP_TYPE_TF,
20484         PFPO_OP_TYPE_SD, PFPO_OP_TYPE_DD, PFPO_OP_TYPE_TD, PFPO_OP0_TYPE_SHIFT,
20485         PFPO_OP1_TYPE_SHIFT): Constants added.
20486         (DFP_ALL): Mode macro defined.
20487         ("*trunc<BFP:mode><DFP_ALL:mode>2", "*trunc<DFP_ALL:mode><BFP:mode>2",
20488         "*extend<BFP:mode><DFP_ALL:mode>2", "*extend<DFP_ALL:mode><BFP:mode>2"):
20489         Insn definitions added.
20490         ("trunc<BFP:mode><DFP_ALL:mode>2", "trunc<DFP_ALL:mode><BFP:mode>2",
20491         "extend<BFP:mode><DFP_ALL:mode>2", "extend<DFP_ALL:mode><BFP:mode>2"):
20492         Expanders added.
20493
20494 2007-05-10  Zdenek Dvorak  <dvorakz@suse.cz>
20495
20496         PR tree-optimization/31885
20497         * tree-chrec.c (chrec_contains_undetermined): Do not consider
20498         NULL_TREE to be undetermined.
20499         (automatically_generated_chrec_p): Return false for NULL.
20500
20501 2007-05-08  Bernd Schmidt  <bernd.schmidt@analog.com>
20502
20503         * config/bfin/bfin.h (MOVE_RATIO): Define.
20504
20505 2007-05-10  Richard Sandiford  <richard@codesourcery.com>
20506
20507         * config.gcc (sparc-wrs-vxworks): New target.
20508         * config/sparc/vxworks.h, config/sparc/t-vxworks: New files.
20509         * config/sparc/sparc-protos.h (sparc_emit_call_insn): Declare.
20510         * config/sparc/sparc.h: Include vxworks-dummy.h.
20511         (PRINT_OPERAND_ADDRESS): Extend SYMBOL_REF handling to
20512         include LABEL_REFs too.
20513         * config/sparc/sparc.c (sparc_expand_move): Don't assume that
20514         _GLOBAL_OFFSET_TABLE_ - label_ref is a link-time constant on
20515         VxWorks.
20516         (legitimize_pic_address): Handle LABEL_REFs like SYMBOL_REFs
20517         on VxWorks.
20518         (load_pic_register): Use gen_vxworks_load_got for VxWorks.
20519         (sparc_emit_call_insn): New function.
20520         (sparc_function_ok_for_sibcall): Restrict sibcalls to locally-binding
20521         functions when generating VxWorks PIC.
20522         * config/sparc/sparc.md (vxworks_load_got): New pattern.
20523         (call, call_value): Use sparc_emit_call_insn instead of
20524         emit_call_insn.
20525
20526 2007-05-09  Bob Wilson  <bob.wilson@acm.org>
20527
20528         * config/xtensa/xtensa.c (xtensa_output_literal): Don't use #if.
20529
20530 2007-05-09  Bob Wilson  <bob.wilson@acm.org>
20531
20532         * config/xtensa/xtensa.c (xtensa_output_literal): Mask out high bits
20533         for floating-point values if HOST_BITS_PER_LONG > 32.  Use
20534         split_double instead of operand_subword.
20535
20536 2007-05-08  Bernd Schmidt  <bernd.schmidt@analog.com>
20537
20538         * config/bfin/bfin.h (LOCAL_ALIGNMENT): Define.
20539         * config/bfin/bfin.c (bfin_local_alignment): New function.
20540         * config/bfin/bfin-protos.h (bfin_local_alignment): Declare it.
20541
20542 2007-05-08  Chao-ying Fu  <fu@mips.com>
20543
20544         * doc/md.texi (msub@var{m}@var{n}4, usub@var{m}@var{n}4): Document.
20545         * optabs.h (OTI_smsub_widen, OTI_umsub_widen): New optab_indexes.
20546         (smsub_widen_optab, umsub_widen_optab): Define.
20547         * optabs.c (init_optabs): Initialize smsub_widen_optab and
20548         umsub_widen_optab.
20549         * genopinit.c (optabs): Fill in smsub_widen_optab and
20550         umsub_widen_optab.
20551         * expr.c (expand_expr_real_1): Try to use smsub_widen_optab
20552         and umsub_widen_optab to implement multiply-subtract sequences.
20553         * config/mips/mips.md (*msac<u>_di): Rename to...
20554         (<u>msubsidi4): ...this.  Extend condition to include
20555         GENERATE_MADD_MSUB and TARGET_DSPR2.  Change the constraint
20556         of operand 0 to "ka" and use the three-operand form of msub<u>
20557         for TARGET_DSPR2.
20558         * config/mips/mips-dspr2.md (mips_msub, mips_msubu): Convert
20559         to define_expands.
20560
20561 2007-05-08  Kaz Kojima  <kkojima@gcc.gnu.org>
20562
20563         PR rtl-optimization/28011
20564         * reload.c (push_reload): Set dont_share if IN appears in OUT
20565         also when IN is a PLUS rtx.
20566         (reg_overlap_mentioned_for_reload_p): Return true if X and IN
20567         are same PLUS rtx.
20568
20569 2007-05-08  Kazu Hirata  <kazu@codesourcery.com>
20570
20571         * emit-rtl.c (unshare_all_rtl_1): Don't copy DECL_RTL.  Don't
20572         call unshare_all_decls.
20573         (unshare_all_rtl): Adjust the call to unshare_all_rtl_1.
20574         (unshare_all_decls): Remove.
20575
20576 2007-05-08  Simon Martin  <simartin@users.sourceforge.net>
20577
20578         PR 31847
20579         * tree-dump.c (dump_options): Don't use TDF_DIAGNOSTIC in "*-all" tree
20580         dumps.
20581
20582 2007-05-08  Sandra Loosemore  <sandra@codesourcery.com>
20583             Nigel Stephens  <nigel@mips.com>
20584
20585         * config/mips/mips.h (MAX_FPRS_PER_FMT): Renamed from FP_INC.
20586         Update comments and all uses.
20587         (MIN_FPRS_PER_FMT): Define.
20588         * config/mips/mips.c (function_arg): Fix to correctly handle
20589         the -mips32r2 -mfp64 -mabi=32 case.
20590         (override_options): Enable use of odd-numbered registers for
20591         SFmode values on MIPS32.
20592         (mips_save_reg_p): Save whole floating-point register pair if
20593         either half is used.
20594         (compute_frame_size): Fix comment.
20595
20596 2007-05-08  Jie Zhang  <jie.zhang@analog.com>
20597
20598         * config/bfin/bfin-protos.h (bfin_expand_epilogue): Add a third
20599         argument of type bool.
20600         * config/bfin/bfin.c (add_to_reg): Add epilogue_p as a fourth
20601         argument. Safely select temporary P register according to it.
20602         (do_link): Change call site of add_to_reg accordingly.
20603         (do_unlink): Add epilogue_p as a fourth argument and pass it
20604         to add_to_reg.
20605         (expand_interrupt_handler_epilogue): Change call of do_unlink
20606         accordingly.
20607         (bfin_expand_prologue): Add a third argument sibcall_p.
20608         * config/bfin/bfin.md (epilogue): Change call of
20609         bfin_expand_epilogue accordingly.
20610         (sibcall_epilogue): Likewise.
20611         (eh_return_internal): Likewise.
20612
20613         * config/bfin/bfin-protos.h (enum bfin_cpu): Add
20614         BFIN_CPU_BF534, BFIN_CPU_BF536 and BFIN_CPU_BF561.
20615         * config/bfin/bfin.c (bfin_handle_option): Handle
20616         -mcpu=bf534, -mcpu=bf536 and -mcpu=bf561.
20617         * config/bfin/bfin.h (TARGET_CPU_CPP_BUILTINS):
20618         Support bf534, bf536 and bf561.
20619         * doc/invoke.texi (Blackfin Options): Document -mcpu and -msim.
20620
20621 2007-05-08  Uros Bizjak  <ubizjak@gmail.com>
20622
20623         PR target/31854
20624         * config/i386/i386.c (ix86_function_regparm): Process local
20625         functions only when TREE_CODE (decl) equals FUNCTION_DECL.
20626
20627 2007-05-07  Mike Stump  <mrs@apple.com>
20628
20629         * doc/invoke.texi (Warning Options): Document that -Wempty-body
20630         also checks for and while statements in C++.
20631
20632 2007-05-07  Nathan Froyd  <froydnj@codesourcery.com>
20633
20634         * gcc.c (at_file_supplied): New variable.
20635         (main): Set it if we expanded argv.
20636         (do_spec_1): Pass an @-file to the linker if we were called with
20637         an @-file argument and HAVE_GNU_LD.
20638         * collect2.c (at_file_supplied): New variable.
20639         (response_file): New variable.
20640         (collect_exit): Unlink response_file if necessary.
20641         (handler): Likewise.
20642         (do_wait): Likewise.
20643         (main): Set at_file_supplied if we expanded argv.
20644         (collect_execute): Pass an @-file to subprocesses if we were called
20645         with an @-file argument.
20646         * configure.ac: Add define for HAVE_GNU_LD.
20647         * configure: Regenerate.
20648         * config.in: Regenerate.
20649
20650 2007-05-07  Naveen.H.S  <naveen.hs@kpitcummins.com>
20651
20652         * config/m32c/muldiv.md (mulhisi3_c): Limit the mode of the 2nd
20653         operand to HI mode.
20654         (mulsi3): New.
20655         (divsi3): New.
20656         (udivsi3): New.
20657
20658 2007-05-07  Jayant Sonar  <jayants@kpitcummins.com>
20659
20660         * config/m32c/m32c.c (SYMBOL_FLAG_FUNCVEC_FUNCTION): Define.
20661         (TARGET_ENCODE_SECTION_INFO): Re-define.
20662         (m32c_encode_section_info): New
20663         (function_vector_handler): New
20664         (current_function_special_page_vector): New
20665         (m32c_special_page_vector_p): New.
20666         * config/m32c/m32c-protos.h (m32c_special_page_vector_p):
20667         Prototype.
20668         * config/m32c/jump.md: Added instruction JSRS for functions
20669         with attribute "function_vector".
20670         * doc/extend.texi (function_vector): Added description
20671         for M16C, M32C targets.
20672
20673 2007-05-07  DJ Delorie  <dj@redhat.com>
20674
20675         PR 31794
20676         * config/m32c/shift.md (ashlpsi3_i, ashrpsi3_i, ashlpsi3,
20677         ashrpsi3, lshrpsi3): Update shift count constraint.
20678
20679 2007-05-07  Danny Smith  <dannysmith@users.sourceforge.net>
20680             Nathan Froyd  <froydnj@codesourcery.com>
20681
20682         PR 22133
20683         * c-incpath.c (add_path): Strip trailing path separators.
20684
20685 2007-05-07  Eric Botcazou  <ebotcazou@adacore.com>
20686
20687         * tree-ssa-dom.c (tree_ssa_dominator_optimize): Reset cfg_altered.
20688         Free dominance info before purging EH edges.
20689         (eliminate_degenerate_phis): Likewise.
20690         (propagate_rhs_into_lhs): Set cfg_altered to true instead of 1.
20691
20692 2007-05-07  Jan Hubicka  <jh@suse.cz>
20693
20694         * gimplify.c (gimplify_expr): Do not crash when folding
20695         (void *)(int)&a + 4.
20696
20697 2007-05-07  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
20698
20699         PR driver/31694
20700         * c-opts.c (lang_fortran): Make it non static.
20701         * c-common.h (lang_fortran): New prototype.
20702         * c-cppbuiltin.c (c_cpp_builtins): Create a __GFORTRAN__ if the
20703         -lang-fortran option was passed by the driver.
20704
20705 2007-05-06  Eric Botcazou  <ebotcazou@adacore.com>
20706
20707         * timevar.c (timevar_print): Test ENABLE_ASSERT_CHECKING instead
20708         of ASSERT_CHECKING.  Tweak message.
20709
20710 2007-05-06  Revital Eres  <eres@il.ibm.com>
20711
20712         PR 30957
20713         * loop-unroll.c (insert_var_expansion_initialization):
20714         Initialize the expansions with -zero instead of +zero.
20715
20716 2007-05-05  Aurelien Jarno  <aurelien@aurel32.net>
20717
20718         * config/pa/pa.md: Split tgd_load, tld_load and tie_load
20719         into pic and non-pic versions. Mark r19 as used for
20720         tgd_load_pic, tld_load_pic and tie_load_pic. Mark r27 as used
20721         for tgd_load, tld_load and tie_load .
20722         * config/pa/pa.c (legitimize_tls_address): Emit pic or non-pic
20723         version of tgd_load, tld_load and tie_load depending on the
20724         value of flag_pic.
20725
20726 2007-05-04  Ulrich Drepper  <drepper@redhat.com>
20727             Jakub Jelinek  <jakub@redhat.com>
20728
20729         * crtstuff.c (HIDDEN_DTOR_LIST_END): New macro.
20730         (__do_global_dtors_aux): Use more paranoid loop to run
20731         destructors if HIDDEN_DTOR_LIST_END.
20732         (__DTOR_END__): Export as a hidden symbol when HIDDEN_DTOR_LIST_END.
20733
20734 2007-05-04  Jakub Jelinek  <jakub@redhat.com>
20735
20736         * varasm.c (align_variable): Don't increase alignment for
20737         DECL_THREAD_LOCAL_P variables above BITS_PER_WORD through
20738         DATA_ALIGNMENT or CONSTANT_ALIGNMENT.
20739
20740 2007-05-04  Josh Conner  <jconner@apple.com>
20741
20742         * basic-block.h (cdi_direction): Assign values to all enumeration
20743         constants.
20744         (dom_computed): Remove.
20745         (dom_info_state): New.
20746         (set_dom_info_availability): New.
20747         * tree-ssa-loop-im.c (determine_invariantness): Initialize
20748         walk_data.dom_direction.
20749         * cfghooks.c (delete_basic_block): Use dom_info_available_p()
20750         instead of dom_computed[].
20751         (split_edge): Likewise.
20752         (create_basic_block): Likewise.
20753         (merge_blocks): Likewise.
20754         * ifcvt.c (find_if_header): Likewise.
20755         * tree-cfgcleanup.c (cleanup_tree_cfg): Likewise.
20756         * tree-ssa-dce.c (remove_dead_stmt): Likewise.
20757         * tree-ssa.c (verify_ssa): Likewise.
20758         * tree-cfg.c (tree_verify_flow_info): Likewise.
20759         (remove_edge_and_dominated_blocks): Likewise.
20760         * dominance.c (dom_computed): Make static.
20761         (calc_dfs_tree_nonrec): Change third param to a bool.
20762         (calc_dfs_tree): Change second param to a bool.
20763         (calc_idioms): Change second param to a bool.  Use
20764         dom_convert_dir_to_idx.
20765         (init_dom_info): Validate dir before using.
20766         (dom_convert_dir_to_idx): New.
20767         (calculate_dominance_info): Use dom_convert_dir_to_idx.  New
20768         variable 'reverse' used for calling calc_dfs_tree and calc_idoms.
20769         (free_dominance_info): Use dom_convert_dir_to_idx.
20770         (get_immediate_dominator): Likewise.
20771         (set_immediate_dominator): Likewise.
20772         (get_dominated_by): Likewise.
20773         (redirect_immediate_dominators): Likewise.
20774         (nearest_common_denominator): Likewise.
20775         (dominated_by_p): Likewise.
20776         (bb_dom_dfs_in): Likewise.
20777         (bb_dom_dfs_out): Likewise.
20778         (recount_dominator): Likewise.
20779         (iterate_fix_dominators): Likewise.
20780         (add_to_dominance_info): Likewise.
20781         (delete_from_dominance_info): Likewise.
20782         (first_dom_son): Likewise.
20783         (next_dom_son): Likewise.
20784         (dom_info_available_p): Likewise.
20785         (dom_info_state): New.
20786         (set_dom_info_availability): New.
20787
20788 2007-05-04  Andreas Krebbel  <krebbel1@de.ibm.com>
20789
20790         * config/s390/s390.md ("fix_trunc<mode>di2", "fix_trunc<mode>si2"):
20791         Expander removed.
20792         ("fix_trunc<DSF:mode><GPR:mode>2"): Expander added.
20793
20794 2007-05-04  Bob Wilson  <bob.wilson@acm.org>
20795
20796         * config/xtensa/xtensa.md (adddi3, adddi_carry): Delete.
20797         (subdi3, subdi_carry): Delete.
20798
20799 2007-05-04  Jan Hubicka  <jh@suse.cz>
20800             Richard Guenther  <rguenther@suse.de>
20801
20802         * opts.c (decode_options): Do not fiddle with inlining
20803         parameters in case of optimizing for size.
20804         * ipa-inline.c (cgraph_decide_recursive_inlining): When optimizing
20805         for size do nothing.
20806         (cgraph_decide_inlining_of_small_function): When optimizing for
20807         size never inline functions increasing caller size.
20808         (cgraph_early_inlining): Inline for size when optimizing for size.
20809
20810 2007-05-04  Bernd Schmidt  <bernd.schmidt@analog.com>
20811
20812         * config/bfin/bfin.md (<optab>di3): Now a define_expand which expands
20813         logical operations piecewise.
20814         (<optab>di_zesidi_di, <optab>di_sesidi_di, negdi2, one_cmpldi2,
20815         zero_extendsidi2, subdi_di_zesidi, subdi_zesidi_di, subdi_di_sesidi,
20816         subdi_sesidi_di): Delete.
20817         (add_with_carry): Produce carry in CC instead of a DREG to shorten
20818         the generated sequence.  Allow three-reg add in constraints.  Rewrite
20819         the rtl expression for carry to avoid zero_extend of a constant.
20820         (sub_with_carry): New pattern.
20821         (adddi3, subdi3): Change into define_expand.  For subtract, generate a
20822         different sequence not involving jumps.
20823         (notbi): Now a named pattern.
20824
20825 2007-05-04  Bradley Lucier  <lucier@math.purdue.edu>
20826
20827         * doc/invoke.texi (i386 and x86-64 Options) [-mpc32, -mpc64, -mpc80]:
20828         Add the note about a significant loss of accuracy of some
20829         mathematical routines when these options are used.
20830
20831 2007-05-04  Maxim Kuvyrkov  <mkuvyrkov@ispras.ru>
20832
20833         * haifa-sched.c (rtx_vec_t): New typedef.
20834         (contributes_to_priority_p): Extract piece of priority () into new
20835         static function.
20836         (priority): Use the function.  Add assertion.
20837         (rank_for_schedule, set_priorities): Add assertion to check that
20838         insn's priority is initialized.
20839         (clear_priorities, calc_priorities): Change signature.  Make it update
20840         all relevant insns.  Update all callers ('add_to_speculative_block ()'
20841         and 'create_block_check_twin ()').
20842         * sched-int.h (struct haifa_insn_data): Remove field 'priority_known'.
20843         Add new field 'priority_status'.
20844         (INSN_PRIORITY_STATUS): New macro.
20845         (INSN_PRIORITY_KNOWN): Change to use INSN_PRIORITY_STATUS.
20846
20847 2007-05-04  Maxim Kuvyrkov  <mkuvyrkov@ispras.ru>
20848
20849         * sched-ebb.c (debug_ebb_dependencies): New static function.
20850         (init_ready_list): Use it.
20851
20852         * sched-rgn.c (debug_dependencies): Split into 'debug_dependencies ()'
20853         with changed signature and 'debug_rgn_dependencies ()'.
20854         (debug_rgn_dependencies): New static function.
20855         (init_ready_list): Use it.
20856
20857         * sched-int.h (debug_dependencies): Declare.
20858
20859 2007-05-04  Andreas Krebbel  <krebbel1@de.ibm.com>
20860
20861         * libgcc-std.ver (__ffssi2): Added to GCC_4.3.0 section.
20862
20863 2007-05-04  Dirk Mueller  <dmueller@suse.de>
20864
20865         * c.opt(Wmain,ffreestanding): Enable for C++,ObjC++.
20866
20867 2007-05-03  Jan Hubicka  <jh@suse.cz>
20868
20869         * fold-const.c (fold_unary): Convert (T1)(X op Y) into
20870         ((T1)X op (T1)Y), for pointer type in more cases than before.
20871
20872         * gimplify.c (gimplify_expr): Fold (void *)&a + 4.
20873
20874         * tree-object-size.c (plus_expr_object_size): When operand size is
20875         unknown, return unknown.
20876
20877 2007-05-03  Dirk Mueller  <dmueller@suse.de>
20878
20879         * doc/invoke.texi (-m386,-m486,-mpentium,-mpentiumpro): Remove.
20880
20881         * config/i386/i386.h (CC1_CPU_SPEC): Remove handling for deprecated
20882         options.
20883
20884         * config/i386/i386.opt (m386,m486,mpentium,mpentiumpro): Remove.
20885
20886 2007-05-03  Janis Johnson  <janis187@us.ibm.com>
20887
20888         * doc/sourcebuild.texi (Test Directives) Clarify dg-excess-errors.
20889
20890 2007-05-03  Joseph Myers  <joseph@codesourcery.com>
20891
20892         * config/soft-fp/double.h, config/soft-fp/extended.h,
20893         config/soft-fp/floatundidf.c, config/soft-fp/floatundisf.c,
20894         config/soft-fp/floatunsidf.c, config/soft-fp/floatunsisf.c,
20895         config/soft-fp/op-2.h, config/soft-fp/op-4.h,
20896         config/soft-fp/op-common.h, config/soft-fp/quad.h: Update from
20897         glibc CVS.
20898
20899 2007-05-03  Ian Lance Taylor  <iant@google.com>
20900
20901         * config/rs6000/rs6000.c (rs6000_override_options): Don't set
20902         MASK_PPC_GFXOPT for 8540 or 8548.
20903
20904 2007-05-03  Uros Bizjak  <ubizjak@gmail.com>
20905
20906         * tree-vect-transform.c (vect_update_inits_of_drs): Use
20907         vect_print_dump_info() to output debug information.
20908
20909 2007-05-03  Uros Bizjak  <ubizjak@gmail.com>
20910
20911         PR target/31768
20912         * config/i386/i386.c (print_operand) ['z']: Output 'w' for
20913         operands of size 2 when operand is not MEM_P.
20914
20915 2007-05-03  Zdenek Dvorak  <dvorakz@suse.cz>
20916
20917         PR tree-optimization/30565
20918         * lambda-code.c (perfect_nestify): Fix updating of dominators.
20919
20920 2007-05-03  Bernd Schmidt  <bernd.schmidt@analog.com>
20921
20922         * config/bfin/bfin.md (addpdi3, us_truncpdisi2): New patterns.
20923         (umulsi3_highpart): Use them.
20924         * config/bfin/lib1funcs.asm (__umulsi3_highpart): Use unsigned move
20925         for final accumulator to D regisster tranfser.
20926
20927 2007-05-03  Dorit Nuzman  <dorit@il.ibm.com>
20928
20929         PR tree-optimization/31699
20930         * tree-vect-analyze.c (vect_update_misalignment_for_peel): Remove
20931         wrong code.
20932         (vect_enhance_data_refs_alignment): Compute peel amount using
20933         TYPE_VECTOR_SUBPARTS instead of vf.
20934         * tree-vect-transform.c (vect_gen_niters_for_prolog_loop): Likewise.
20935
20936 2007-05-02  Brooks Moses  <brooks.moses@codesourcery.com>
20937
20938         PR bootstrap/31776
20939         * system.h: Remove inclusion of double-int.h
20940         * tree.h: Include double-int.h
20941         * gengtype.c: Likewise
20942         * cfgloop.h: Likewise
20943         * Makefile.in: Adjust dependencies on double-int.h
20944
20945 2007-05-02  Eric Christopher  <echristo@apple.com>
20946
20947         * config/darwin.h (TARGET_OPTION_TRANSLATE_TABLE): Translate
20948         -shared to -Zdynamiclib.
20949
20950 2007-05-02  Seongbae Park  <seongbae.park@gmail.com>
20951
20952         PR c++/31663
20953         * c-common.c (strip_pointer_or_array_types): New function.
20954         * c-common.h (strip_pointer_or_array_types): New function declaration.
20955
20956 2007-05-03  Zdenek Dvorak  <dvorakz@suse.cz>
20957
20958         PR tree-optimization/31771
20959         * tree-cfg.c (move_block_to_fn): Assign bb to the correct index.
20960
20961 2007-05-02  Paul Brook  <paul@codesourcery.com>
20962
20963         * config/arm/bpabi.S (aeabi_lcmp): Fix result on overflow.
20964
20965 2007-05-02  Andrew Pinski  <andrew_pinski@playstation.sony.com>
20966
20967         PR middle-end/29715
20968         * fold-const.c (fold_comparision): Remove the "foo++ == CONST"
20969         transformation.
20970
20971 2007-05-02  Nick Clifton  <nickc@redhat.com>
20972
20973         * config/frv/predicates.md (symbolic_operand): Accept CONSTs.
20974
20975 2007-05-02  Richard Guenther  <rguenther@suse.de>
20976
20977         PR tree-optimization/31146
20978         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): New
20979         argument, single_use_p.  If we have a single use that is
20980         a conversion to the definition rhs type, propagate that rhs.
20981         (forward_propagate_addr_expr): Pass single_use_p argument
20982         to forward_propagate_addr_expr_1.
20983
20984 2007-05-01  H.J. Lu  <hongjiu.lu@intel.com>
20985
20986         * config/i386/i386.c (ix86_expand_sse_comi): Remove unused
20987         variable.
20988
20989 2007-05-01  Dwarakanath Rajagopal <dwarak.rajagopal@amd.com>
20990
20991         * doc/invoke.texi: Fix typo, 'AMD Family 10h core' instead of
20992         'AMD Family 10 core'.
20993
20994 2007-05-01  Dwarakanath Rajagopal <dwarak.rajagopal@amd.com>
20995
20996         * config/i386/i386.c (override_options): Accept k8-sse3, opteron-sse3
20997         and athlon64-sse3 as improved versions of k8, opteron and athlon64
20998         with SSE3 instruction set support.
20999         * doc/invoke.texi: Likewise.
21000
21001 2007-05-01  Dwarakanath Rajagopal <dwarak.rajagopal@amd.com>
21002
21003         * config/i386/i386.c (override_options): Tuning 32-byte loop
21004         alignment for amdfam10 architecture. Increasing the max loop
21005         alignment to 24 bytes.
21006
21007 2007-05-01  Kazu Hirata  <kazu@codesourcery.com>
21008
21009         * config/m68k/constraints.md: New.
21010         * config/m68k/m68k.h (REG_CLASS_FROM_LETTER,
21011         CONST_OK_FOR_LETTER_P, CONST_DOUBLE_OK_FOR_LETTER_P,
21012         EXTRA_CONSTRAINT): Remove.
21013         * config/m68k/m68k.md: Include constraints.md.
21014         * expr.c (expand_expr_real_1): Copy DECL_RTL before using it.
21015
21016 2007-05-01  Ian Lance Taylor  <iant@google.com>
21017
21018         PR tree-optimization/31739
21019         * tree-vrp.c (vrp_val_is_max): New static function.
21020         (vrp_val_is_min): New static function.
21021         (set_value_range_to_value): Use TYPE_{MAX,MIN}_VALUE rather than
21022         copying the node.
21023         (set_value_range): Use vrp_val_is_{max,min}.
21024         (extract_range_from_assert): Likewise.
21025         (extract_range_from_binary_expr): Likewise.
21026         (extract_range_from_unary_expr): Likewise.
21027         (dump_value_range, vrp_meet): Likewise.
21028         (vrp_visit_phi_node): Likewise.
21029         * tree.c (build_distinct_type_copy): Revert change of 2007-04-27.
21030
21031 2007-05-01  Mark Mitchell  <mark@codesourcery.com>
21032
21033         * config/i386/gmon-sol2.c (size_t): New type.
21034         (intptr_t): Likewise.
21035         (s_textsize): Declare as size_t.
21036         (sbrk): Declare.
21037         (monstartup): Use size_t for sizes.
21038         (_mcount): Save and restore registers.
21039         (internal_mcount): Pass 0 as the first argument to monstartup
21040         in 64-bit mode.
21041         (moncontrol): Convert pointer to appropriately sized integer
21042         before passing to profil.
21043
21044 2007-05-01  Joseph Myers  <joseph@codesourcery.com>
21045
21046         * config/rs6000/darwin-ldouble.c (__gcc_qunord): Define if
21047         __NO_FPRS__, not just if _SOFT_DOUBLE.
21048         * config/rs6000/libgcc-ppc-glibc.ver (__gcc_qunord): Likewise.
21049         * config/rs6000/rs6000.c (rs6000_init_libfuncs): Use __gcc_qunord
21050         also for E500 double.
21051         * config/rs6000/rs6000.md (buneq, bunge, bungt, bunle, bunlt,
21052         suneq, sunge, sungt, sunle, sunlt): Disable for (TARGET_HARD_FLOAT
21053         && !TARGET_FPRS).
21054
21055 2007-05-01  Richard Guenther  <rguenther@suse.de>
21056
21057         * tree-ssa-loop-manip.c (ip_normal_pos): Check if last stmt
21058         is NULL.
21059
21060 2007-05-01  Joseph Myers  <joseph@codesourcery.com>
21061
21062         * config/rs6000/libgcc-ppc-glibc.ver (__gcc_qgt): Fix typo.
21063
21064 2007-05-01  Jan Hubicka  <jh@suse.cz>
21065
21066         * tree-vectorize.c (vect_is_simple_use): gimple_min_invariant is
21067         invariant.
21068
21069 2007-05-01  Jan Hubicka  <jh@suse.cz>
21070
21071         * tree.h (maybe_fold_offset_to_component_ref): Remove.
21072         (maybe_fold_offset_to_reference): Declare.
21073         * fold-const.c (fold_unary): Do not fold
21074         (type *)&A into &A->field_of_type_and_offset_0
21075         * tree-ssa-ccp.c (maybe_fold_offset_to_array_ref): When base type
21076         size is unknown, give up.
21077         (maybe_fold_offset_to_component_ref): Ignore firelds with unknown
21078         offsets.
21079         (maybe_fold_offset_to_reference): New.
21080         (maybe_fold_stmt_indirect): Use it.
21081         (fold_stmt_r): Fold (type *)&A+offset into A->field_if_type_and_offset.
21082         * gimplify.c (gimplify_conversion): Canonicalize conversions to
21083         field references.
21084         (gimplify_expr): Likewise for plus_expr.
21085
21086 2007-05-01  Zdenek Dvorak  <dvorakz@suse.cz>
21087
21088         * tree-ssa-loop-ivopts.c (rewrite_use_nonlinear_expr): Use
21089         bsi_after_labels.  Always insert statements before bsi.
21090         * tree-vect-transform.c (vect_create_epilog_for_reduction): Ditto.
21091         * predict.c (apply_return_prediction): Check for empty blocks.
21092         * cfgexpand.c (lab_rtx_for_bb): New variable.
21093         (label_rtx_for_bb): Do not create new tree labels.
21094         (expand_gimple_basic_block): Add labels recorded in lab_rtx_for_bb.
21095         (tree_expand_cfg): Initialize lab_rtx_for_bb.
21096         * tree-cfg.c (build_tree_cfg): Call cleanup_dead_labels after
21097         creating edges.
21098         (label_for_bb): Add field used.
21099         (update_eh_label, main_block_label): Mark the label used.
21100         (cleanup_dead_labels): Remove unused labels.
21101
21102 2007-05-01  Richard Guenther  <rguenther@suse.de>
21103
21104         * tree-vrp.c (set_value_range): Do not allocate equiv bitmap
21105         if it is not about to be set.
21106         (get_value_range): Do not pre-allocate equiv bitmap.
21107         (update_value_range): No need to clear equiv field.
21108         (add_equivalence): Change prototype to get bitmap pointer.
21109         Allocate bitmap here if it is not already.
21110         (extract_range_from_assert): Do not allocate bitmap here.
21111         Update callers to add_equivalence.
21112         (extract_range_from_ssa_name): Likewise.
21113         (get_vr_for_comparison): New static helper.
21114         (compare_name_with_value): Handle NULL equiv bitmap by
21115         peeling the first iteration of the comparison loop.
21116         Use get_vr_for_comparison.
21117         (compare_names): Handle NULL equiv bitmaps by using fake
21118         ones.  Use get_vr_for_comparison.
21119
21120 2007-04-30  Brooks Moses  <brooks.moses@codesourcery.com>
21121
21122         * double-int.c (mpz_set_double_int): Moved from
21123         tree-ssa-loop-niter.c.
21124         (mpz_get_double_int): Likewise; also, add option to wrap
21125         out-of-range integers.
21126         * double-int.h: New prototypes for above.
21127         * tree.c (get_static_type_bounds): Moved from
21128         tree-ssa-loop-niter.c; now returns TYPE_MIN_VALUE and
21129         TYPE_MAX_VALUE if they exist..
21130         * tree.h: New prototype for above.
21131         * tree-ssa-loop-niter.c: Adjust mpz_to_double_int and
21132         get_type_bounds calls.
21133         (mpz_set_double_int): Move to double-int.c.
21134         (get_type_bounds): Move to tree.c, rename to
21135         get_static_type_bounds.
21136         (mpz_to_double_int): Move to double-int.c, rename to
21137         mpz_get_double_int.
21138
21139 2007-04-30  Bob Wilson  <bob.wilson@acm.org>
21140
21141         * config/xtensa/lib1funcs.asm (__umodsi3, __modsi3): Rearrange so that
21142         DIV0 exception can fall through to a normal return.
21143
21144 2007-04-30  Alexandre Oliva  <aoliva@redhat.com>
21145
21146         PR middle-end/22156
21147         Temporarily revert:
21148         2007-04-06  Andreas Tobler  <a.tobler@schweiz.org>
21149         * tree-sra.c (sra_build_elt_assignment): Initialize min/maxshift.
21150         2007-04-05  Alexandre Oliva  <aoliva@redhat.com>
21151         * tree-sra.c (try_instantiate_multiple_fields): Needlessly
21152         initialize align to silence bogus warning.
21153         2007-04-05  Alexandre Oliva  <aoliva@redhat.com>
21154         * tree-sra.c (struct sra_elt): Add in_bitfld_block.  Remove
21155         all_no_warning.
21156         (struct sra_walk_fns): Remove use_all parameter from use.
21157         (sra_hash_tree): Handle BIT_FIELD_REFs.
21158         (sra_elt_hash): Don't hash bitfld blocks.
21159         (sra_elt_eq): Skip them in parent compares as well.  Handle
21160         BIT_FIELD_REFs.
21161         (sra_walk_expr): Don't maintain or pass down use_all_p.
21162         (scan_use): Remove use_all parameter.
21163         (scalarize_use): Likewise.  Re-expand assignment to
21164         BIT_FIELD_REF of gimple_reg.  De-scalarize before input or
21165         output, and re-scalarize after output.  Don't mark anything
21166         for no warning.
21167         (scalarize_ldst): Adjust.
21168         (scalarize_walk_gimple_modify_statement): Likewise.
21169         (build_element_name_1): Handle BIT_FIELD_REFs.
21170         (instantiate_element): Don't warn for any element whose parent
21171         is used as a whole.
21172         (instantiate_missing_elements_1): Return the sra_elt.
21173         (canon_type_for_field): New.
21174         (try_instantiate_multiple_fields): New.
21175         (instantiate_missing_elemnts): Use them.
21176         (mark_no_warning): Removed.
21177         (generate_one_element_ref): Handle BIT_FIELD_REFs.
21178         (REPLDUP, sra_build_elt_assignment): New.
21179         (generate_copy_inout): Use them.
21180         (generate_element_copy): Likewise.  Handle bitfld differences.
21181         (generate_element_zero): Don't recurse for blocks.  Use
21182         sra_build_elt_assignment.
21183         (generate_one_element_int): Take elt instead of var.  Use
21184         sra_build_elt_assignment.
21185         (generate_element_init_1): Adjust.
21186         (scalarize_use, scalarize_copy): Use REPLDUP.
21187         (scalarize_ldst): Move assert before dereference.
21188         (dump_sra_elt_name): Handle BIT_FIELD_REFs.
21189
21190 2007-04-30  Andrew Pinski  <andrew_pinski@playstation.sony.com>
21191
21192         PR C++/31721
21193         * tree.c (reconstruct_complex_type): Reconstruct a reference
21194         correctly.
21195         Also use the same mode for the pointer as the old pointer type.
21196
21197 2007-04-30  Francois-Xavier Coudert  <coudert@clipper.ens.fr>
21198
21199         * doc/trouble.texi (Interoperation): Remove note about Ultrix
21200         Fortran compiler.
21201
21202 2007-04-29  Zdenek Dvorak  <dvorakz@suse.cz>
21203
21204         PR rtl-optimization/31676
21205         * df-scan.c (record_nonlocal_goto_receiver_defs): New function.
21206         (df_refs_record): Call it.
21207
21208 2007-04-29  Bernd Schmidt  <bernd.schmidt@analog.com>
21209
21210         * rtl.def (SS_ABS): New code.
21211         * config/bfin/bfin.c (print_operand): New modifier 'v'.
21212         (enum bfin_builtins): Add BFIN_BUILTIN_SUM_2X16, BFIN_BUILTIN_ABS_1x32,
21213         BFIN_BUILTIN_ROUND_1x32, BFIN_BUILTIN_MULT_1x32x32,
21214         BFIN_BUILTIN_MULT_1x32x32NS, BFIN_BUILTIN_SSASHIFT_1x32.
21215         (bfin_init_builtins): Define them.
21216         (bdesc_1arg, bdesc_2arg): Add some of them here, ...
21217         (bfin_expand_builtin): ... and handle the others here.
21218         * config/bfin/bfin.md (ssabssi2, ssroundsi2, ssashiftsi3,
21219         flag_mul_macv2hi_parts_acconly_andcc0): New patterns.
21220         (ss_absv2hi2): Renamed from absv2hi; use ss_abs code.
21221         (ssashiftv2hi3, ssashifthi3, lshiftv2hi3, lshifthi3): Shift count
21222         operand is only HImode.
21223
21224 2007-04-29  Steven Bosscher  <steven@gcc.gnu.org>
21225
21226         * regclass.c (scan_one_insn): Remove splitting of
21227         two address insns.
21228
21229 2007-04-28  Sandra Loosemore  <sandra@codesourcery.com>
21230             Nigel Stephens  <nigel@mips.com>
21231
21232         * config/mips/mips.h (SLOW_BYTE_ACCESS): Turn off for MIPS16.
21233
21234 2007-04-28  Jan Hubicka  <jh@suse.cz>
21235
21236         * config/alpha/alpha.c (alpha_output_mi_thunk_osf): Use
21237         insn_locators_alloc instead of insn_locators_initialize;
21238         call reset_block_changes.
21239         * config/sparc/sparc.c (sparc_output_mi_thunk): Likewise.
21240         * config/sh/sh.c (sparc_output_mi_thunk): Likewise.
21241         * config/is64/ia64.c (ia64_output_mi_thunk): Likewise.
21242         * config/rs6000/rs6000.c (rs6000_output_mi_thunk): Likewise.
21243         * config/score/score.c (th_output_mi_thunk): Likewise.
21244         * config/mips/mips.c (mips_output_mi_thunk): Likewise.
21245         * cfglyaout.c (set_curr_insn_source_location, set_curr_insn_block):
21246         tolerate uninitialized locator info.
21247
21248         Re-apply:
21249         * function.c (init_function_start): Don't init line number info.
21250         (expand_function_end): Update.
21251         (reset_block_changes, record_block_change, finalize_block_changes,
21252         check_block_change, free_block_changes): Kill.
21253         * function.h (reset_block_changes, record_block_change,
21254         finalize_block_changes, check_block_change, free_block_changes):
21255         Remove prototypes.
21256         (struct function): Remove ib_boundaries_block.
21257         * emit-rtl.c (make_insn_raw, make_jump_insn_raw, make_call_insn_raw):
21258         Use curr_insn_locator to initialize locator.
21259         (emit_line_note): Remove.
21260         * cfgexpand.c (expand_gimple_cond_expr): Update.
21261         (construct_exit_block): Likewise.
21262         (tree_expand_cfg): Initialize/finalize locators.
21263         * expr.c (expand_expr_real): Update.
21264         * cfglayout.c (line_locators_locs, line_locators_lines,
21265         file_locators_locs, file_locators_files): Remove.
21266         (set_block_levels): Move to cfgexpand.c.
21267         (insn_locators_initialize): Remove.
21268         (pass_insn_locators_initialize): Remove.
21269         (locations_locators_locs, locations_locators_vals): New static vars.
21270         (curr_location, last_location, curr_block, last_block, curr_rtl_loc):
21271         Likewise.
21272         (insn_locators_alloc, insn_locators_finalize,
21273         set_curr_insn_source_location, set_curr_insn_block, curr_insn_locator):
21274         New functions.
21275         (locator_location): New.
21276         (locator_line, locator_file): Rewrite.
21277         * rtl.h (emit_line_note): Kill.
21278         (insn_locators_alloc, insn_locators_finalize,
21279         set_curr_insn_source_location, set_curr_insn_block, curr_insn_locator):
21280         Declare.
21281         * tree-inline.c (initialize_cfun): Do not initialize
21282         ib_boundaries_block.
21283         * passes.c (pass_insn_locators_initialize): Remove.
21284
21285 2007-04-28  Zdenek Dvorak  <dvorakz@suse.cz>
21286
21287         * tree-cfg.c (move_block_to_fn): Release bb from dominance
21288         info.  Update last_basic_block correctly.
21289
21290 2007-04-27  Kaz Kojima  <kkojima@gcc.gnu.org>
21291
21292         PR target/31701
21293         * config/sh/sh.c (output_stack_adjust): Avoid using the frame
21294         register itself to hold the offset constant.  Tell flow the use
21295         of r4 and r5 when they are used.
21296
21297 2007-04-27  Richard Guenther  <rguenther@suse.de>
21298
21299         * tree-ssa-forwprop.c (forward_propagate_into_cond): Keep track
21300         if we simplified anything.
21301         (tree_ssa_forward_propagate_single_use_vars): Defer overflow
21302         warnings until we did a simplification and the stmt was not
21303         marked as TREE_NO_WARNING.
21304
21305 2007-04-27  Mike Stump  <mrs@apple.com>
21306
21307         * config/rs6000/darwin.h (ALWAYS_PUSH_CONSTS_USING_REGS_P): Remove.
21308
21309 2007-04-27  Ian Lance Taylor  <iant@google.com>
21310
21311         PR middle-end/31710
21312         * tree.c (build_distinct_type_copy): If TYPE_MIN_VALUE or
21313         TYPE_MAX_VALUE exist, convert them to the new type.
21314
21315 2007-04-27  Zdenek Dvorak  <dvorakz@suse.cz>
21316
21317         * tree-cfgcleanup.c (cleanup_tree_cfg): Verify dominance info
21318         if it claims to be available.
21319         * tree-ssa-dce.c (remove_dead_stmt): Mark cfg as altered when
21320         edge is redirected.
21321         (perform_tree_ssa_dce): Always free postdominators.
21322
21323 2007-04-27  Richard Henderson  <rth@redhat.com>
21324
21325         * config/alpha/predicates.md (aligned_memory_operand): Mark
21326         as define_special_predicate.
21327         (unaligned_memory_operand, normal_memory_operand): Likewise.
21328         (reg_or_unaligned_mem_operand): Remove.
21329         (any_memory_operand): Match the documentation and check for
21330         non-renumbered pseudos during reload.
21331         * config/alpha/alpha.c (alpha_secondary_reload): Rename from
21332         alpha_secondary_reload_class, update to new interface, make static.
21333         Handle CQImode like HImode.  Remove FP subreg check.
21334         (alpha_expand_mov): Use replace_equiv_address.
21335         (alpha_expand_mov_nobwx): Use any_memory_operand.
21336         (TARGET_SECONDARY_RELOAD): New.
21337         * config/alpha/alpha.h (SECONDARY_INPUT_RELOAD_CLASS): Remove.
21338         (SECONDARY_OUTPUT_RELOAD_CLASS): Remove.
21339         * config/alpha/sync.md (I12MODE, I48MODE, modesuffix): Move ...
21340         * config/alpha/alpha.md: ... here.
21341         (RELOAD12, reloadmode): New.
21342         (movcqi): New.
21343         (reload_in<RELOAD12>): Macro-ize from reload_inqi, reload_inhi.
21344         Don't handle the aligned case here.
21345         (reload_out<RELOAD12>): Macro-ize from reload_outqi, reload_outhi.
21346         (reload_in<I12MODE>_aligned): Macro-ize from reload_inqi_help,
21347         reload_inhi_help.  Don't expect a scratch register.
21348         (reload_out<I12MODE>_aligned): Macro-ize from reload_outqi_help,
21349         reload_outhi_help.
21350         * config/alpha/alpha-protos.h (alpha_secondary_reload_class): Remove.
21351
21352 2007-04-27  Richard Guenther  <rguenther@suse.de>
21353
21354         * tree-ssa-forwprop.c (get_prop_dest_stmt): Fix comment typo.
21355
21356 2007-04-27  Richard Guenther  <rguenther@suse.de>
21357
21358         PR tree-optimization/30965
21359         PR tree-optimization/30978
21360         * Makefile.in (tree-ssa-forwprop.o): Depend on $(FLAGS_H).
21361         * tree-ssa-forwprop.c (forward_propagate_into_cond_1): Remove.
21362         (find_equivalent_equality_comparison): Likewise.
21363         (simplify_cond): Likewise.
21364         (get_prop_source_stmt): New helper.
21365         (get_prop_dest_stmt): Likewise.
21366         (can_propagate_from): Likewise.
21367         (remove_prop_source_from_use): Likewise.
21368         (combine_cond_expr_cond): Likewise.
21369         (forward_propagate_comparison): New function.
21370         (forward_propagate_into_cond): Rewrite to use fold for
21371         tree combining.
21372         (tree_ssa_forward_propagate_single_use_vars): Call
21373         forward_propagate_comparison to propagate comparisons.
21374
21375 2007-04-27  Richard Guenther  <rguenther@suse.de>
21376
21377         PR tree-optimization/31715
21378         * tree-ssa-ccp.c (maybe_fold_offset_to_array_ref): Make
21379         sure to do computation on the offset in an appropriate
21380         signed type.
21381
21382 2007-04-27  Richard Sandiford  <richard@codesourcery.com>
21383
21384         * reload.h (elimination_target_reg_p): Declare.
21385         * reload.c (find_reloads): Don't apply the reg_rtx move
21386         optimization if the SET_DEST satisfies elimination_target_reg_p.
21387         * reload1.c (elimination_target_reg_p): New function.
21388         (gen_reload): In the move/add2 fallback, make sure that op0
21389         does not overlap the destination register.
21390
21391 2007-04-27  Zdenek Dvorak  <dvorakz@suse.cz>
21392
21393         * tree-ssa-loop-im.c (determine_invariantness_stmt): Attempt to
21394         transform only GIMPLE_MODIFY_STMTs.
21395         * tree-complex.c (expand_complex_operations_1): Ditto.
21396         (expand_complex_div_wide): Do not create gotos in COND_EXPR branches.
21397         * tree-ssa-loop-manip.c (build_if_stmt): Removed.
21398         (tree_transform_and_unroll_loop): Do not create gotos in COND_EXPR
21399         branches.
21400         * value-prof.c (tree_divmod_fixed_value, tree_mod_pow2,
21401         tree_mod_subtract, tree_ic, tree_stringop_fixed_value): Ditto.
21402         * omp-low.c (expand_parallel_call, expand_omp_for_generic,
21403         expand_omp_for_static_chunk, expand_omp_for_static_nochunk): Ditto.
21404         * tree-vectorizer.c (slpeel_make_loop_iterate_ntimes,
21405         slpeel_add_loop_guard): Ditto.
21406         * tree-mudflap.c (mf_build_check_statement_for): Ditto.
21407         * lambda-code.c (perfect_nestify): Ditto.
21408         * tree-iterator.c (tsi_split_statement_list_before): Fix splitting
21409         before the first statement.
21410         * tree-optimize.c (execute_free_datastructures): Fix comments.
21411         (execute_free_cfg_annotations): Do not call disband_implicit_edges.
21412         * tree-flow.h (disband_implicit_edges): Declaration removed.
21413         * tree-cfg.c (make_cond_expr_edges): Remove gotos from COND_EXPR
21414         branches.
21415         (cleanup_dead_labels, tree_redirect_edge_and_branch): Handle
21416         COND_EXPRs without gotos.
21417         (disband_implicit_edges, has_label_p): Removed.
21418         (tree_verify_flow_info): Verify that COND_EXPR branches are empty.
21419         (tree_lv_add_condition_to_bb): Do not create gotos in COND_EXPR
21420         branches.
21421         * tree.c (build3_stat): Mark COND_EXPRs used as statements as having
21422         side effects.
21423         * tree-pretty-print.c (dump_implicit_edges): Dump implicit edges
21424         also for COND_EXPRs.
21425         * cfgexpand.c (label_rtx_for_bb): New function.
21426         (expand_gimple_cond_expr): Do not expect gotos in COND_EXPR branches.
21427         Use label_rtx_for_bb to find the labels.
21428         (expand_gimple_basic_block): Remove RETURN_EXPR at the end of the
21429         last block.  Detect fallthru edges.
21430
21431 2007-04-26  Ian Lance Taylor  <iant@google.com>
21432
21433         PR target/28675
21434         * reload.c (find_reloads_subreg_address): If the address was valid
21435         in the original mode but not in the new mode, reload the whole
21436         address.
21437
21438 2007-04-27  Zdenek Dvorak  <dvorakz@suse.cz>
21439
21440         * tree-cfgcleanup.c (cfgcleanup_altered_bbs): New global variable.
21441         (remove_fallthru_edge): Use remove_edge_and_dominated_blocks.
21442         (cleanup_control_expr_graph): Do not invalidate dominance info.
21443         Record altered blocks.
21444         (cleanup_control_flow, cleanup_forwarder_blocks): Removed.
21445         (cleanup_control_flow_bb, split_bbs_on_noreturn_calls,
21446         cleanup_tree_cfg_bb): New functions.
21447         (remove_forwarder_block): Do not maintain the worklist of blocks.
21448         Record altered blocks.
21449         (cleanup_tree_cfg_1): Iterate over cfgcleanup_altered_bbs,
21450         not over whole cfg.
21451         (cleanup_tree_cfg): Do not iterate cleanup_tree_cfg_1.  Only call
21452         delete_unreachable_blocks if dominators are not available.
21453         * tree-inline.c (optimize_inline_calls): Free dominance information
21454         earlier.
21455         * tree-flow.h (remove_edge_and_dominated_blocks,
21456         cfgcleanup_altered_bbs): Altered.
21457         * tree-cfg.c (replace_uses_by, tree_merge_blocks): Record altered
21458         blocks.
21459         (get_all_dominated_blocks, remove_edge_and_dominated_blocks): New
21460         functions.
21461         (tree_purge_dead_eh_edges): Use remove_edge_and_dominated_blocks,
21462         do not invalidate dominators.
21463
21464 2007-04-26  Anatoly Sokolov <aesok@post.ru>
21465
21466         * config/avr/avr.c (avr_mcu_types): Add support for ATmega8HVA and
21467         ATmega16HVA devices. Move AT90USB82 device to 'avr5' architecture.
21468         * config/avr/avr.h (LINK_SPEC, CRT_BINUTILS_SPECS): (Ditto.).
21469         * config/avr/t-avr (MULTILIB_MATCHES): (Ditto.).
21470
21471 2007-04-26  Steve Ellcey  <sje@cup.hp.com>
21472
21473         * config/ia64/ia64.md (ip_value): Fix itanium_class attribute.
21474
21475 2007-04-26  Richard Guenther  <rguenther@suse.de>
21476
21477         PR tree-optimization/31703
21478         * tree-ssa-loop-im.c (rewrite_bittest): Make sure to use
21479         the right type for the target of the bittest.
21480
21481 2007-04-26  Richard Sandiford  <richard@codesourcery.com>
21482
21483         * config/i386/vx-common.h (RETURN_IN_MEMORY): Use
21484         ix86_sol10_return_in_memory.
21485
21486 2007-04-26  Richard Sandiford  <richard@codesourcery.com>
21487
21488         * config/i386/i386.c (ix86_sol10_return_in_memory): Remove unused
21489         variables.
21490
21491 2007-04-26  Jakub Jelinek  <jakub@redhat.com>
21492
21493         PR c++/31598
21494         * tree-inline.c (copy_body_r): Don't touch TREE_TYPE of OMP_CLAUSE.
21495
21496         PR tree-optimization/30558
21497         * tree-eh.c (lower_eh_filter): If EH_FILTER_MUST_NOT_THROW
21498         clear this_state.prev_try.
21499
21500 2007-04-26  Richard Sandiford  <richard@codesourcery.com>
21501             Mark Mitchell  <mark@codesourcery.com>
21502
21503         * config/i386/i386-protos.h (ix86_sol10_return_in_memory): Declare.
21504         * config/i386/i386.c (ix86_sol10_return_in_memory): New function.
21505         * config/i386/sol2-10.h (RETURN_IN_MEMORY): Use it.
21506
21507 2007-04-26  Richard Sandiford  <richard@codesourcery.com>
21508
21509         PR driver/31107
21510         * doc/invoke.texi (%:print-asm-header): Document.
21511         * gcc.c (asm_options): Use %:print-asm-header() for --target-help
21512         and -ftarget-help.
21513         (static_spec_functions): Add print-asm-header.
21514         (main): Print a banner before the --target-help linker options.
21515         (print_asm_header_spec_function): New function.
21516
21517 2007-04-25  Kaz Kojima  <kkojima@gcc.gnu.org>
21518
21519         PR target/31403
21520         * config/sh/sh.md (movsi_ie): Fix length for TARGET_SH2A.
21521         (movsf_ie): Likewise.
21522
21523 2007-04-25  Paolo Carlini  <pcarlini@suse.de>
21524
21525         * doc/extend.texi ([Type Traits]): Adjust per N2255.
21526
21527 2007-04-25  Bob Wilson  <bob.wilson@acm.org>
21528
21529         * config/xtensa/lib1funcs.asm (__udivsi3, __divsi3): Throw an
21530         exception for divide-by-zero.
21531         (__umodsi3, __modsi3): Likewise.
21532
21533 2007-04-25  Dirk Mueller  <dmueller@suse.de>
21534
21535         * c-typeck.c (build_compound_expr): Annotate warning()
21536         call with OPT_Wunused_value.
21537         * tree-ssa.c (warn_uninit): Annotate warning with
21538         OPT_Wunintialized.
21539         * c-common.c (handle_sentinel_attribute): Annotate warning
21540         call with OPT_Wattributes.
21541
21542 2007-04-25  Thiemo Seufer  <ths@mips.com>
21543
21544         * config/mips/mips.opt (mdmx, mmt, mno-mdmx): New options.
21545         (mips16): Fix typo.
21546         * config/mips/mips.h (ASM_SPEC): Pass -mmt/-mno-mt and -mdmx/-mno-mdmx
21547         on to the assembler.  Improve handling of -mno-mips16.  Add handling
21548         of -mno-mips3d, -mno-dsp, -mno-dspr2.
21549         * doc/invoke.texi (MIPS Options): Whitespace cleanup.  Fix wrong use
21550         of @itemx.  Document -mno-dsp, -mno-dspr2, -mno-paired-single, -mdmx,
21551         -mno-mdmx, -mno-mips3d, -mmt and -mno-mt.
21552
21553 2007-04-25  Danny Smith  <dannysmith.users.sourceforge.net>
21554
21555         PR target/31680
21556         * config/i386/winnt.c (i386_pe_file_end): Strip only
21557         USER_LABEL_PREFIX when writing export name.
21558
21559 2007-04-25  Richard Sandiford  <richard@codesourcery.com>
21560
21561         * config.gcc (sh-wrs-vxworks): Don't include dbxelf.h.  Include
21562         sh/elf.h, vx-common.h and vxworks.h.
21563         * config/sh/sh.h: Include config/vxworks-dummy.h.
21564         (SUBTARGET_OVERRIDE_OPTIONS): Define.
21565         (OVERRIDE_OPTIONS): Use it.
21566         * config/sh/sh.md (GOTaddr2picreg): Add suport for VxWorks RTPs.
21567         (vxworks_picreg): New pattern.
21568         * config/sh/vxworks.h (TARGET_OS_CPP_BUILTINS): Use
21569         VXWORKS_OS_CPP_BUILTINS.
21570         (LIB_SPEC, LINK_SPEC, STARTFILE_SPEC, ENDFILE_SPEC): Redefine
21571         to their VXWORKS_* equivalents.
21572         (SUBTARGET_OVERRIDE_OPTIONS, SUBTARGET_CPP_SPEC): Define.
21573         (SUBTARGET_LINK_EMUL_SUFFIX, FUNCTION_PROFILER): Define.
21574         * config/sh/lib1funcs.asm (NO_FPSCR_VALUES): Define for VxWorks PIC.
21575         (set_fpscr, ic_invalidate): Add VxWorks PIC sequences.
21576         * config/sh/t-vxworks (MULTILIB_OPTIONS): Add m4a, -mrtp and
21577         -mrtp/-fPIC multilibs.
21578         (MULTILIB_EXCEPTIONS): Generalize globs accordingly.
21579         (MULTILIB_MATCHES, EXTRA_MULTILIB_PARTS): Define.
21580         (MULTILIB_OSDIRNAMES): Delete.
21581
21582 2007-04-25  Anatoly Sokolov <aesok@post.ru>
21583
21584         PR target/18989
21585         * config/avr/avr.h (ASM_OUTPUT_ALIGN): Redefine.
21586
21587 2007-04-24  Brooks Moses  <brooks.moses@codesourcery.com>
21588
21589         * real.c (mpfr_from_real): Handle Inf and NaN, and allow the
21590         rounding mode to be specified by the caller.
21591         (real_to_mpfr) Likewise.
21592         * real.h: Update mpfr_from_real, mpfr_to_real prototypes to
21593         include new arguments.
21594         * builtins.c: Update mpfr_from_real, mpfr_to_real calls.
21595
21596 2007-04-24  Ian Lance Taylor  <iant@google.com>
21597
21598         PR tree-optimization/31605
21599         * tree-vrp.c (set_value_range): Check that min and max are not
21600         both overflow infinities.
21601         (set_value_range_to_value): New static function.
21602         (extract_range_from_binary_expr): Call set_value_range_to_value.
21603         (extract_range_from_cond_expr): Likewise.
21604         (extract_range_from_expr): Likewise.
21605         (extract_range_from_unary_expr): Likewise.  Don't create a range
21606         which overflows on both sides.
21607         (vrp_meet): Check for a useless range.
21608         (vrp_visit_phi_node): If we see a constant which looks like an
21609         overflow infinity, turn off the TREE_OVERFLOW flag.
21610
21611 2007-04-24  Ian Lance Taylor  <iant@google.com>
21612
21613         * flow.c (elim_reg_cond): Handle a comparison of a subreg.
21614
21615 2007-04-24  Simon Martin  <simartin@users.sourceforge.net>
21616
21617         PR diagnostic/25923
21618         * tree-pass.h (TDF_DIAGNOSTIC): New dump control to specify that a
21619         diagnostic message is being built.
21620         * tree-pretty-print.c (dump_generic_node): Only write the
21621         formatted text into BUFFER's stream if we are not building a
21622         diagnostic message.
21623         * toplev.c (default_tree_printer): Pass TDF_DIAGNOSTIC to
21624         dump_generic_node.
21625         * Makefile.in (toplev.o): Depend on tree-pass.h.
21626
21627 2007-04-24  Ian Lance Taylor  <iant@google.com>
21628
21629         PR tree-optimization/31602
21630         * tree-ssa-loop-ch.c (copy_loop_headers): Set TREE_NO_WARNING for
21631         conditionals in the copied loop header.
21632         * tree-cfg.c (fold_cond_expr_cond): Don't issue undefined overflow
21633         warnings if TREE_NO_WARNING is set.
21634         * doc/invoke.texi (Warning Options): Clarify that
21635         -Wstrict-overflow does not warn about loops.
21636
21637 2007-04-24  Janis Johnson  <janis187@us.ibm.com>
21638
21639         * config/rs6000/rs6000.c (function_arg_advance): For 32-bit ELF ABI,
21640         expand on the comment about _Decimal128 arguments and check the
21641         integer result of the modulus operation; for 64-bit ELF ABI, ensure
21642         that _Decimal128 argument uses even/odd register pair.
21643         (function_arg): Ditto.
21644
21645 2007-04-24  Hui-May Chang <hm.chang@apple.com>
21646
21647         * reload1.c (merge_assigned_reloads) : Do not merge a RELOAD_OTHER
21648         instruction with a RELOAD_FOR_OPERAND_ADDRESS instruction.
21649
21650 2007-04-24  Richard Guenther  <rguenther@suse.de>
21651             Olga Golovanevsky  <olga@il.ibm.com>
21652
21653         * fold-const.c (multiple_of_p): Check for bottom
21654         to be zero.
21655
21656 2007-04-24  Richard Henderson  <rth@redhat.com>
21657
21658         * libgcc2.h (AVOID_FP_TYPE_CONVERSION): Rename from
21659         IS_IBM_EXTENDED.  Also define in terms of WIDEST_HARDWARE_FP_SIZE.
21660         * libgcc2.c (__floatdisf): Avoid double-word arithmetic when
21661         looking for non-zero bits shifted out.  Avoid a recursive call
21662         when constructing the scalar.
21663         (__floatundisf): Likewise.
21664
21665 2007-04-24  Nathan Froyd  <froydnj@codesourcery.com>
21666
21667         * dwarf2out.c (field_byte_offset): Move the existing logic
21668         under the control of PCC_BITFIELD_TYPE_MATTERS and just use
21669         the bit offset of the field if !PCC_BITFIELD_TYPE_MATTERS.
21670
21671 2007-04-24  Andreas Krebbel  <krebbel1@de.ibm.com>
21672
21673         PR target/31641
21674         * config/s390/s390.c (s390_expand_setmem): Don't ICE for constant
21675         length argument of 0 for memset.
21676         (s390_expand_movmem, s390_expand_setmem, s390_expand_cmpmem): Use
21677         unsigned shift instead of the signed variant.
21678
21679 2007-04-24  Andreas Krebbel  <krebbel1@de.ibm.com>
21680
21681         * config/s390/s390.md ("*cmp<mode>_ccs_0_ibm", "*cmp<mode>_ccs_ibm",
21682         "fix_trunc<BFP:mode><GPR:mode>2_ieee", "fix_truncdfsi2_ibm",
21683         "floatsidf2_ibm", "floatsisf2", "truncdfsf2_ieee", "truncdfsf2_ibm",
21684         "*trunctfdf2_ieee", "*trunctfdf2_ibm", "*trunctfsf2_ieee",
21685         "*trunctfsf2_ibm", "extendsfdf2_ieee", "extendsfdf2_ibm",
21686         "*extenddftf2_ieee", "*extenddftf2_ibm", "*extendsftf2_ieee",
21687         "*extendsftf2_ibm", "*add<mode>3", "*add<mode>3_ibm", "*sub<mode>3_ibm",
21688         "*mul<mode>3", "*mul<mode>3_ibm", "*div<mode>3", "*div<mode>3_ibm",
21689         "*neg<mode>2_ibm", "*abs<mode>2_ibm"): Insn definitions removed.
21690         ("fix_trunc<BFP:mode><GPR:mode>2_bfp", "floatsi<mode>2",
21691         "truncdfsf2", "trunctf<mode>2", "add<mode>3", "sub<mode>3",
21692         "mul<mode>3", "div<mode>3"): Insn definitions added.
21693         ("fixuns_trunc<BFP:mode><GPR:mode>2", "fix_trunc<mode>di2",
21694         "fix_trunc<mode>si2"): gen_fix_trunc<BFP:mode><GPR:mode>2_ieee renamed
21695         to gen_fix_trunc<BFP:mode><GPR:mode>2_bfp.
21696         ("fix_truncdfsi2", "floatsitf2", "truncdfsf2", "trunctfdf2",
21697         "trunctfsf2", "extendsfdf2", "extenddftf2", "extendsftf2", "add<mode>3",
21698         "sub<mode>3", "mul<mode>3", "div<mode>3"): Expander removed.
21699         ("fix_trunc<mode>si2", "extend<DSF:mode><BFP:mode>2"): Expander added.
21700         * config/s390/s390.h (TARGET_IBM_FLOAT, TARGET_IEEE_FLOAT,
21701         TARGET_FLOAT_FORMAT): Macro definitions removed.
21702         (FP_REGNO_P): No special case for !TARGET_IEEE_FLOAT anymore.
21703         * config/s390/s390.c (struct processor_costs, z900_cost, z990_cost,
21704         z9_109_cost): Remove fields for hexfloat instructions: dxr, ddr and der.
21705         (s390_rtx_costs): Remove !TARGET_IEEE_FLOAT special branches.
21706         (s390_gen_rtx_const_DI): Function removed.
21707         * config/s390/s390-protos.h (s390_gen_rtx_const_DI): Prototype removed.
21708
21709 2007-04-24  Richard Sandiford  <richard@codesourcery.com>
21710
21711         * optabs.c (set_conv_libfunc): Prefer libgcc2's __ffsMM2 functions
21712         over an external ffs function.
21713
21714 2007-04-24  Chao-ying Fu  <fu@mips.com>
21715             Richard Sandiford  <richard@nildram.co.uk>
21716
21717         * doc/md.texi (madd@var{m}@var{n}4, umadd@var{m}@var{n}4): Document.
21718         * optabs.h (OTI_smadd_widen, OTI_umadd_widen): New optab_indexes.
21719         (smadd_widen_optab, umadd_widen_optab): Define.
21720         * optabs.c (init_optabs): Initialize smadd_widen_optab and
21721         umadd_widen_optab.
21722         * genopinit.c (optabs): Fill in smadd_widen_optab and
21723         umadd_widen_optab.
21724         * expr.c (expand_expr_real_1): Try to use smadd_widen_optab
21725         and umadd_widen_optab to implement multiply-add sequences.
21726         * config/mips/mips.md (*<su>mul_acc_di): Rename to...
21727         (<u>maddsidi4): ...this.  Extend condition to include
21728         GENERATE_MADD_MSUB and TARGET_DSPR2.  Change the constraint
21729         of operand 0 to "ka" and use the three-operand form of madd<u>
21730         for TARGET_DSPR2.
21731         * config/mips/mips-dspr2.md (mips_madd, mips_maddu): Convert
21732         to define_expands.
21733         * config/mips/constraints.md (ka): New register constraint.
21734
21735 2007-04-24  Jan Hubicka  <j@suse.cz>
21736
21737         Revert:
21738
21739         2007-04-23  Jan Hubicka  <jh@suse.cz>
21740         * function.c (init_function_start): Don't init line number info.
21741         (expand_function_end): Update.
21742         (reset_block_changes, record_block_change, finalize_block_changes,
21743         check_block_change, free_block_changes): Kill.
21744         * function.h (reset_block_changes, record_block_change,
21745         finalize_block_changes, check_block_change, free_block_changes):
21746         Remove prototypes.
21747         (struct function): Remove ib_boundaries_block.
21748         * emit-rtl.c (make_insn_raw, make_jump_insn_raw, make_call_insn_raw):
21749         Use curr_insn_locator to initialize locator.
21750         (emit_line_note): Remove.
21751         * cfgexpand.c (expand_gimple_cond_expr): Update.
21752         (construct_exit_block): Likewise.
21753         (tree_expand_cfg): Initialize/finalize locators.
21754         * expr.c (expand_expr_real): Update.
21755         * cfglayout.c (line_locators_locs, line_locators_lines,
21756         file_locators_locs, file_locators_files): Remove.
21757         (set_block_levels): Move to cfgexpand.c.
21758         (insn_locators_initialize): Remove.
21759         (pass_insn_locators_initialize): Remove.
21760         (locations_locators_locs, locations_locators_vals): New static vars.
21761         (curr_location, last_location, curr_block, last_block, curr_rtl_loc):
21762         Likewise.
21763         (insn_locators_alloc, insn_locators_finalize,
21764         set_curr_insn_source_location, set_curr_insn_block, curr_insn_locator):
21765         New functions.
21766         (locator_location): New.
21767         (locator_line, locator_file): Rewrite.
21768         * rtl.h (emit_line_note): Kill.
21769         (insn_locators_alloc, insn_locators_finalize,
21770         set_curr_insn_source_location, set_curr_insn_block, curr_insn_locator):
21771         Declare.
21772         * tree-inline.c (initialize_cfun): Do not initialize
21773         ib_boundaries_block.
21774         * passes.c (pass_insn_locators_initialize): Remove.
21775
21776 2007-04-24  Daniel Franke  <franke.daniel@gmail.com>
21777
21778         * doc/invoke.texi: Removed leading '-' from option index entries.
21779
21780 2007-04-23  Zdenek Dvorak  <dvorakz@suse.cz>
21781
21782         * tree-phinodes.c (reserve_phi_args_for_new_edge, remove_phi_node):
21783         Use phi_nodes_ptr.
21784         (create_phi_node): Use set_phi_nodes.
21785         * omp-low.c (expand_omp_parallel): Use bb_stmt_list.
21786         * tree-if-conv.c (process_phi_nodes): Use set_phi_nodes.
21787         (combine_blocks): Use bb_stmt_list and set_bb_stmt_list.
21788         * tree-flow-inline.h (phi_nodes, set_phi_nodes,
21789         (bsi_start, bsi_last): Use bb_stmt_list.
21790         (phi_nodes_ptr, bb_stmt_list, set_bb_stmt_list): New functions.
21791         * cfgexpand.c (expand_gimple_basic_block): Use bb_stmt_list.
21792         Traverse the statements using tsi iterator.
21793         * basic-block.h (struct basic_block_def): Fields stmt_list
21794         and phi_nodes moved to ...
21795         (struct tree_bb_info): ... new structure.
21796         * tree-cfg.c (create_bb): Allocate il.tree.  Use set_bb_stmt_list.
21797         (tree_merge_blocks): Use bb_stmt_list and set_bb_stmt_list.
21798         (remove_bb): Handle blocks with NULL stmt list.  Clear il.tree field.
21799         (tree_verify_flow_info): Verify that il.tree is not set for
21800         entry and exit block.
21801         (tree_split_block): Use set_bb_stmt_list.
21802
21803 2007-04-23  Mike Stump  <mrs@apple.com>
21804
21805         * config/i386/i386.c (ix86_tune_features
21806         [X86_TUNE_DEEP_BRANCH_PREDICTION]: Prefer call over thunks on
21807         nocona and core2.
21808
21809 2007-04-23  H.J. Lu  <hongjiu.lu@intel.com>
21810
21811         * config/i386/i386.md (prefix_extra): New attribute.
21812         (length): Add prefix_extra.
21813
21814         * onfig/i386/sse.md (sse2_movdqu): Set prefix_data16.
21815         (sse2_movntv2di): Likewise.
21816         (sse2_cvtps2dq): Likewise.
21817         (sse2_cvtpd2pi): Likewise.
21818         (sse2_cvttpd2pi): Likewise.
21819         (*sse2_cvtpd2ps): Likewise.
21820         (*add<mode>3): Likewise.
21821         (sse2_ssadd<mode>3): Likewise.
21822         (sse2_usadd<mode>3): Likewise.
21823         (*sub<mode>3): Likewise.
21824         (sse2_sssub<mode>3): Likewise.
21825         (sse2_ussub<mode>3): Likewise.
21826         (*mulv8hi3): Likewise.
21827         (*smulv8hi3_highpart): Likewise.
21828         (*umulv8hi3_highpart): Likewise.
21829         (sse2_umulv2siv2di3): Likewise.
21830         (sse2_pmaddwd): Likewise.
21831         (ashr<mode>3): Likewise.
21832         (lshr<mode>3): Likewise.
21833         (ashl<mode>3): Likewise.
21834         (sse2_ashlti3): Likewise.
21835         (sse2_lshrti3): Likewise.
21836         (*umaxv16qi3): Likewise.
21837         (*smaxv8hi3): Likewise.
21838         (*uminv16qi3): Likewise.
21839         (*sminv8hi3): Likewise.
21840         (sse2_eq<mode>3): Likewise.
21841         (sse2_gt<mode>3): Likewise.
21842         (*and<mode>3): Likewise.
21843         (sse2_nand<mode>3): Likewise.
21844         (*ior<mode>3): Likewise.
21845         (*xor<mode>3): Likewise.
21846         (sse2_packsswb): Likewise.
21847         (sse2_packssdw): Likewise.
21848         (sse2_packuswb): Likewise.
21849         (sse2_punpckhbw): Likewise.
21850         (sse2_punpcklbw): Likewise.
21851         (sse2_punpckhwd): Likewise.
21852         (sse2_punpcklwd): Likewise.
21853         (sse2_punpckhdq): Likewise.
21854         (sse2_punpckldq): Likewise.
21855         (sse2_punpckhqdq): Likewise.
21856         (sse2_punpcklqdq): Likewise.
21857         (*sse2_pinsrw): Likewise.
21858         (*sse2_pextrw): Likewise.
21859         (sse2_pshufd_1): Likewise.
21860         (sse2_uavgv16qi3): Likewise.
21861         (sse2_uavgv8hi3): Likewise.
21862         (sse2_psadbw): Likewise.
21863         (sse2_pmovmskb): Likewise.
21864         (*sse2_maskmovdqu): Likewise.
21865         (*sse2_maskmovdqu_rex64): Likewise.
21866         (sse4a_extrqi): Likewise.
21867         (sse4a_extrq): Likewise.
21868         (sse3_lddqu): Set prefix_rep.
21869         (sse3_addsubv4sf3): Likewise.
21870         (sse3_haddv4sf3): Likewise.
21871         (sse3_hsubv4sf3): Likewise.
21872         (sse_cvtss2si): Likewise.
21873         (sse_cvtss2si_2): Likewise.
21874         (sse_cvtss2siq): Likewise.
21875         (sse_cvtss2siq_2): Likewise.
21876         (sse_cvttss2si): Likewise.
21877         (sse_cvttss2siq): Likewise.
21878         (sse2_cvttps2dq): Likewise.
21879         (sse3_movshdup): Likewise.
21880         (sse3_movsldup): Likewise.
21881         (sse2_cvtsd2si): Likewise.
21882         (sse2_cvtsd2si_2): Likewise.
21883         (sse2_cvtsd2siq): Likewise.
21884         (sse2_cvtsd2siq_2): Likewise.
21885         (sse2_cvttsd2si): Likewise.
21886         (sse2_cvttsd2siq): Likewise.
21887         (*sse2_cvtpd2dq): Likewise.
21888         (*sse2_cvttpd2dq): Likewise.
21889         (sse2_pshuflw_1): Likewise.
21890         (sse2_pshufhw_1): Likewise.
21891         (sse4a_insertqi): Likewise.
21892         (sse4a_insertq): Likewise.
21893         (ssse3_phaddwv8hi3): Set prefix_data16 and prefix_extra.
21894         (ssse3_phadddv4si3): Likewise.
21895         (ssse3_phaddswv8hi3): Likewise.
21896         (ssse3_phsubwv8hi3): Likewise.
21897         (ssse3_phsubdv4si3): Likewise.
21898         (ssse3_phsubswv8hi3): Likewise.
21899         (ssse3_pmaddubswv8hi3): Likewise.
21900         (ssse3_pmulhrswv8hi3): Likewise.
21901         (ssse3_pshufbv16qi3): Likewise.
21902         (ssse3_psign<mode>3): Likewise.
21903         (ssse3_palignrti): Likewise.
21904         (abs<mode>2): Likewise.
21905         (ssse3_phaddwv4hi3): Set prefix_extra.
21906         (ssse3_phadddv2si3): Likewise.
21907         (ssse3_phaddswv4hi3): Likewise.
21908         (ssse3_phsubwv4hi3): Likewise.
21909         (ssse3_phsubdv2si3): Likewise.
21910         (ssse3_phsubswv4hi3): Likewise.
21911         (ssse3_pmaddubswv4hi3): Likewise.
21912         (ssse3_pmulhrswv4hi3): Likewise.
21913         (ssse3_pshufbv8qi3): Likewise.
21914         (ssse3_psign<mode>3): Likewise.
21915         (ssse3_palignrdi): Likewise.
21916         (abs<mode>2): Likewise.
21917         (sse2_cvtdq2ps): Set mode to V4SF instead of V2DF.
21918         (*vec_dupv2df): Set mode to V2DF instead of V4SF.
21919         (sse2_pmovmskb): Set mode to SI instead of V2DF.
21920
21921 2007-04-23  Nick Clifton  <nickc@redhat.com>
21922
21923         * params.def: Fix formatting of emacs local variables.
21924
21925 2007-04-23  H.J. Lu  <hongjiu.lu@intel.com>
21926
21927         * config/i386/sse.md (sse2_stored): Don't split to inter-unit
21928         move if inter-unit move isn't allowed.
21929         Don't split moving the first element of V2DI to DI to inter-unit
21930         move if inter-unit move isn't allowed.
21931
21932 2007-04-23  Richard Guenther  <rguenther@suse.de>
21933
21934         * tree-ssa-sink.c (execute_sink_code): Calculate CDI_DOMINATORS
21935         and CDI_POST_DOMINATORS separately.
21936
21937 2007-04-23  Nick Clifton  <nickc@redhat.com>
21938
21939         * c.opt (Wformat-contains-nul): Add warning attribute.
21940
21941 2007-04-23  Jan Hubicka  <jh@suse.cz>
21942
21943         * function.c (init_function_start): Don't init line number info.
21944         (expand_function_end): Update.
21945         (reset_block_changes, record_block_change, finalize_block_changes,
21946         check_block_change, free_block_changes): Kill.
21947         * function.h (reset_block_changes, record_block_change,
21948         finalize_block_changes, check_block_change, free_block_changes):
21949         Remove prototypes.
21950         (struct function): Remove ib_boundaries_block.
21951         * emit-rtl.c (make_insn_raw, make_jump_insn_raw, make_call_insn_raw):
21952         Use curr_insn_locator to initialize locator.
21953         (emit_line_note): Remove.
21954         * cfgexpand.c (expand_gimple_cond_expr): Update.
21955         (construct_exit_block): Likewise.
21956         (tree_expand_cfg): Initialize/finalize locators.
21957         * expr.c (expand_expr_real): Update.
21958         * cfglayout.c (line_locators_locs, line_locators_lines,
21959         file_locators_locs, file_locators_files): Remove.
21960         (set_block_levels): Move to cfgexpand.c.
21961         (insn_locators_initialize): Remove.
21962         (pass_insn_locators_initialize): Remove.
21963         (locations_locators_locs, locations_locators_vals): New static vars.
21964         (curr_location, last_location, curr_block, last_block, curr_rtl_loc):
21965         Likewise.
21966         (insn_locators_alloc, insn_locators_finalize,
21967         set_curr_insn_source_location, set_curr_insn_block, curr_insn_locator):
21968         New functions.
21969         (locator_location): New.
21970         (locator_line, locator_file): Rewrite.
21971         * rtl.h (emit_line_note): Kill.
21972         (insn_locators_alloc, insn_locators_finalize,
21973         set_curr_insn_source_location, set_curr_insn_block, curr_insn_locator):
21974         Declare.
21975         * tree-inline.c (initialize_cfun): Do not initialize
21976         ib_boundaries_block.
21977         * passes.c (pass_insn_locators_initialize): Remove.
21978
21979 2007-04-22  Andrew Pinski  <andrew_pinski@playstation.sony.com>
21980
21981         PR middle-end/31448
21982         * expr.c (reduce_to_bit_field_precision): Handle
21983         CONST_INT rtx's.
21984
21985 2007-04-22  Uros Bizjak  <ubizjak@gmail.com>
21986
21987         PR tree-optimization/24659
21988         * optabs.h (enum optab_index) [OTI_vec_unpacks_hi,
21989         OTI_vec_unpacks_lo]: Update comment to mention floating point operands.
21990         (vec_pack_trunc_optab): Rename from vec_pack_mod_optab.
21991         * genopinit.c (optabs): Rename vec_pack_mod_optab
21992         to vec_pack_trunc_optab.
21993         * tree-vect-transform.c (vectorizable_type_demotion): Do not fail
21994         early for scalar floating point operands for NOP_EXPR.
21995         (vectorizable_type_promotion): Ditto.
21996         * optabs.c (optab_for_tree_code) [VEC_PACK_TRUNC_EXPR]: Return
21997         vec_pack_trunc_optab.
21998         (expand_binop): Rename vec_float_trunc_optab to vec_pack_mod_optab.
21999
22000         * tree.def (VEC_PACK_TRUNC_EXPR): Rename from VEC_PACK_MOD_EXPR.
22001         * tree-pretty-print.c (dump_generic_node) [VEC_PACK_TRUNC_EXPR]:
22002         Rename from VEC_PACK_MOD_EXPR.
22003         (op_prio) [VEC_PACK_TRUNC_EXPR]: Ditto.
22004         * expr.c (expand_expr_real_1): Ditto.
22005         * tree-inline.c (estimate_num_insns_1): Ditto.
22006         * tree-vect-generic.c (expand_vector_operations_1): Ditto.
22007
22008         * config/i386/sse.md (vec_unpacks_hi_v4sf): New expander.
22009         (vec_unpacks_lo_v4sf): Ditto.
22010         (vec_pack_trunc_v2df): Ditto.
22011         (vec_pack_trunc_v8hi): Rename from vec_pack_mod_v8hi.
22012         (vec_pack_trunc_v4si): Rename from vec_pack_mod_v4si.
22013         (vec_pack_trunc_v2di): Rename from vec_pack_mod_v2di.
22014
22015         * config/rs6000/altivec.md (vec_pack_trunc_v8hi): Rename from
22016         vec_pack_mod_v8hi.
22017         (vec_pack_trunc_v4si): Rename from vec_pack_mod_v4si.
22018
22019         * doc/c-tree.texi (Expression trees) [VEC_PACK_TRUNC_EXPR]:
22020         Rename from VEC_PACK_MOD_EXPR.  This expression also represent
22021         packing of floating point operands.
22022         [VEC_UNPACK_HI_EXPR, VEC_UNPACK_LO_EXPR]: These expression also
22023         represent unpacking of floating point operands.
22024         * doc/md.texi (Standard Names) [vec_pack_trunc]: Update documentation.
22025         [vec_unpacks_hi]: Ditto.
22026         [vec_unpacks_lo]: Ditto.
22027
22028 2007-04-22  Jan Hubicka  <jh@suse.cz>
22029
22030         * final.c (rest_of_handle_final): Call
22031         targetm.asm_out.constructor/targetm.asm_out.destructor
22032         * cgraphunit.c (cgraph_build_static_cdtor): Don't do it here; set
22033         proper priority via decl_*_priority_insert.
22034         * c-common.c (c_expand_body): Likewise.
22035
22036 2007-04-22  Richard Guenther  <rguenther@suse.de>
22037
22038         PR tree-optimization/29789
22039         * tree-ssa-loop-im.c (stmt_cost): Adjust cost of shifts.
22040         (rewrite_reciprocal): New helper split out from
22041         determine_invariantness_stmt.
22042         (rewrite_bittest): Likewise.
22043         (determine_invariantness_stmt): Rewrite (A >> B) & 1 to
22044         A & (1 << B) if (1 << B) is loop invariant but (A >> B)
22045         is not.
22046
22047 2007-04-22  Revital Eres  <eres@il.ibm.com>
22048
22049         * loop-unroll.c (var_to_expand): New field to support also
22050         insns of the form x = something + x.
22051         (analyze_insn_to_expand_var): Use it.
22052         (expand_var_during_unrolling): Likewise.
22053
22054 2007-04-21  Zdenek Dvorak  <dvorakz@suse.cz>
22055
22056         * predict.c: Include pointer-set.h.
22057         (bb_predictions): New variable.
22058         (tree_predicted_by_p, tree_predict_edge,
22059         remove_predictions_associated_with_edge): Use bb_predictions map
22060         instead of bb->predictions.
22061         (clear_bb_predictions, assert_is_empty): New functions.
22062         (combine_predictions_for_bb): Use bb_predictions map.  Call
22063         clear_bb_predictions.
22064         (tree_estimate_probability): Create and free bb_predictions map.
22065         * Makefile.in (predict.o): Add pointer-set.h dependency.
22066         * basic-block.h (struct basic_block_def): Remove predictions
22067         field.
22068         * cfgrtl.c (rtl_verify_flow_info_1): Do not check bb->predictions.
22069
22070 2007-04-21  Kaz Kojima  <kkojima@gcc.gnu.org>
22071
22072         PR target/31480
22073         * config/sh/sh.md (length): Check if prev_nonnote_insn (insn)
22074         is null.
22075
22076 2007-04-21  Andrew Pinski  <andrew_pinski@playstation.sony.com>
22077
22078         * timevar.c (timevar_print): Change reference of --disable-checking to
22079         --enable-checking=release.  Also warn if assert checking is disabled.
22080
22081 2007-04-21  Andrew Pinski  <andrew_pinski@playstation.sony.com>
22082
22083         PR C/30265
22084         * c-gimplifier.c (gimplify_compound_literal_expr): Mark the
22085         decl as addressable if the compound literal was marked as
22086         addressable.
22087         Mark the decl as a gimple register if it is a complex or
22088         vector decl and does not live in memory.
22089
22090 2007-04-21  Andrew Pinski  <andrew_pinski@playstation.sony.com>
22091
22092         * tree.h (GIMPLE_TUPLE_P): Also true for PHI_NODEs.
22093         (GENERIC_NEXT): New function macro.
22094         (PHI_CHAIN): Use phi_node's new chain variable.
22095         (tree_phi_node): Change tree_common to tree_base
22096         and add the chain field.
22097         * tree-phinodes.c (make_phi_node): Don't set
22098         TREE_TYPE on the new node.
22099         * c-decl.c (lang_tree_node): Use GENERIC_NEXT
22100         instead of checking GIMPLE_TUPLE_P in chain_next.
22101         * tree-vect-transform.c
22102         (get_initial_def_for_induction): Look at
22103         PHI_RESULT_TREE for the type of the phi node.
22104         (update_vuses_to_preheader): Use PHI_CHAIN
22105         instead of TREE_CHAIN on the phi node.
22106         * tree-ssa-structalias.c (compute_points_to_sets):
22107         Likewise.
22108         (ipa_pta_execute): Likewise.
22109
22110 2007-04-21  Richard Guenther  <rguenther@suse.de>
22111
22112         PR middle-end/31136
22113         * fold-const.c (fold_unary): Call fold_convert_const on the
22114         original tree.
22115
22116 2007-04-21  Alexandre Oliva  <aoliva@redhat.com>
22117
22118         * gcse.c (store_killed_in_insn): Handle PARALLELs.
22119         (store_killed_in_pat): New.
22120
22121 2007-04-20  Richard Henderson  <rth@redhat.com>
22122
22123         PR target/31628
22124         * config/i386/i386.c (type_has_variadic_args_p): Look for any
22125         TREE_LIST with a void_type_node value, not void_list_node exactly.
22126
22127 2007-04-21  Douglas Gregor  <doug.gregor@gmail.com>
22128
22129         * doc/standards.texi: Re-arrange into language-specific
22130         subsections. Add a C++ section, documenting which standards we
22131         support.
22132
22133 2007-04-21  Zdenek Dvorak  <dvorakz@suse.cz>
22134
22135         * tree-ssa-structalias.c (delete_points_to_sets): Free graph->complex.
22136         * tree-ssa-operands.c (finalize_ssa_vuse_ops): Free new_ops.
22137
22138 2007-04-20  Daniel Jacobowitz  <dan@codesourcery.com>
22139
22140         * config/rs6000/sysv4.h (STARTFILE_DEFAULT_SPEC): Include
22141         ecrti.o and crtbegin.o.
22142         (LIB_DEFAULT_SPEC): Include -lc.
22143         (ENDFILE_DEFAULT_SPEC): Include crtend.o and ecrtn.o.
22144
22145 2007-04-20  Richard Henderson  <rth@redhat.com>
22146
22147         PR target/28623
22148         * config/alpha/alpha.c (get_unaligned_address): Remove extra_offset
22149         argument; update all callers.
22150         (get_unaligned_offset): New.
22151         * config/alpha/alpha.md (extendqidi2, extendhidi2): Don't use
22152         get_unaligned_address, just pass on the address directly.
22153         (unaligned_extendqidi): Use gen_lowpart instead of open-coding
22154         the subreg in the helper patterns.
22155         (unaligned_extendqidi_le): Use get_unaligned_offset.
22156         (unaligned_extendqidi_be, unaligned_extendhidi_le): Likewise.
22157         (unaligned_extendhidi_be): Likewise.
22158         (unaligned_extendhidi): Tidy.
22159         * config/alpha/alpha-protos.h: Update.
22160
22161 2007-04-20  Richard Henderson  <rth@redhat.com>
22162
22163         * config/alpha/alpha.h (CPP_SPEC, CPP_SUBTARGET_SPEC): Remove.
22164         (EXTRA_SPECS, SUBTARGET_EXTRA_SPECS): Remove.
22165         * config/alpha/linux.h (CPP_SPEC): Undef before redefine.
22166         * config/alpha/linux-elf.h (EXTRA_SPECS): Rename SUBTARGET_EXTRA_SPECS.
22167         * config/alpha/freebsd.h (EXTRA_SPECS): Rename SUBTARGET_EXTRA_SPECS.
22168         (CPP_SPEC): Don't include %(cpp_subtarget).
22169         * config/alpha/netbsd.h (CPP_SPEC): Rename CPP_SUBTARGET_SPEC.
22170         (EXTRA_SPECS): Rename SUBTARGET_EXTRA_SPECS.
22171         * config/alpha/osf.h (CPP_SPEC, EXTRA_SPECS): Similarly.
22172
22173 2007-04-20  Jakub Jelinek  <jakub@redhat.com>
22174
22175         * config/i386/i386.c (bdesc_2arg): Use ORDERED rather than UNORDERED
22176         for __builtin_ia32_cmpordss.
22177
22178         PR tree-optimization/31632
22179         * fold-const.c (fold_binary): Use op0 and op1 instead of arg0
22180         and arg1 for optimizations of comparison against min/max values.
22181         Fold arg0 to arg1's type for optimizations of comparison against
22182         min+1 and max-1 values.
22183
22184 2007-04-19  Bernd Schmidt  <bernd.schmidt@analog.com>
22185
22186         * reload.c (combine_reloads): When trying to use a dying register,
22187         check whether it's uninitialized and don't use if so.
22188
22189 2007-04-19  Brooks Moses  <brooks.moses@codesourcery.com>
22190
22191         * fold-const.c: Remove prototypes for native_encode_expr and
22192         native_interpret_expr.
22193         (native_encode_expr): Make non-static.
22194         (native_interpret_expr): Likewise.
22195         * tree.h: Add prototypes for the above.
22196
22197 2007-04-19  Joseph Myers  <joseph@codesourcery.com>
22198
22199         * config/rs6000/spe.md (*frob_tf_ti, *frob_ti_tf, *frob_ti_tf_2,
22200         *mov_si<mode>_e500_subreg0, *mov_si<mode>_e500_subreg0_2,
22201         *mov_sitf_e500_subreg8, *mov_sitf_e500_subreg8_2, spe_extenddftf2,
22202         spe_fix_trunctfsi2_internal, spe_negtf2_internal, cmptfeq_gpr,
22203         tsttfeq_gpr, cmptfgt_gpr, tsttfgt_gpr, cmptflt_gpr, tsttflt_gpr):
22204         Add length attributes.
22205
22206 2007-04-19  Janis Johnson  <janis187@us.ibm.com>
22207
22208         * ginclude/float.h: Check that __STDC_WANT_DEC_FP__ is defined,
22209         not that it is 1.
22210
22211         * c-cppbuiltin.c (c_cpp_builtins): Remove definition of
22212         __STDC_WANT_DEC_FP__.
22213
22214 2007-04-19  Joseph Myers  <joseph@codesourcery.com>
22215
22216         * configure.ac: Allow both powerpc*-*-linux* and powerpc*-*-gnu*
22217         for long double compatibility.
22218         * configure: Regenerate.
22219
22220 2007-04-19  Eric Botcazou  <ebotcazou@libertysurf.fr>
22221
22222         PR rtl-optimization/29841
22223         * cfgbuild.c (control_flow_insn_p): Return TRUE for unconditional
22224         trap instructions.
22225         * sched-deps.c (sched_analyze_insn): Prevent all non-jump instructions
22226         that may cause control flow transfer from being moved.
22227
22228 2007-04-18  Jan Hubicka  <jh@suse.cz>
22229
22230         * fold-const.c (div_if_zero_remainder): Do signed divide for pointer
22231         types.
22232
22233 2007-04-18  Eric Christopher  <echristo@apple.com>
22234
22235         * config/rs6000/darwin.md (load_macho_picbase): Use link register
22236         only. Update operands.
22237         * config/rs6000/rs6000.c (rs6000_emit_prologue): Update caller.
22238         * config/rs6000/rs6000.md (builtin_setjmp_receiver): Ditto. Move from
22239         link register to pic register.
22240
22241 2007-04-18  Dirk Mueller  <dmueller@suse.de>
22242
22243         PR diagnostic/31227
22244         * tree-vrp.c (search_for_addr_array): New.
22245         (check_array_bounds): Suppress warning about
22246         address taken of array refs if its not de-referenced.
22247
22248 2007-04-18  Dorit Nuzman  <dorit@il.ibm.com>
22249
22250         * tree-vectorizer.c (destroy_loop_vec_info): Set loop->aux to NULL.
22251         * tree-vect-analyze.c (vect_analyze_loop_form): Set loop->aux.
22252
22253         * tree-vectorizer.h (NITERS_KNOWN_P): New.
22254         * tree-vect-analyze.c (vect_analyze_loop_form): Call NITERS_KNOWN_P
22255         instead of LOOP_VINFO_INT_NITERS to avoid having to geneate loop_info.
22256
22257         * tree-vect-analyze.c (vect_determine_vectorization_factor): Add
22258         dump print.
22259         (vect_analyze_operations): Fix indenetation.  Fix a comment.  Fix a
22260         print message.
22261         (vect_analyze_scalar_cycles): Fix indentation.
22262         (vect_enhance_data_refs_alignment): Fix check in case of peeling.
22263         (vect_mark_relevant): Include phis in relevance analysis.
22264
22265         * tree-vect-transform.c (vect_transform_loop): Add an assert.
22266
22267 2007-04-18  Anatoly Sokolov <aesok@post.ru>
22268
22269         * config/avr/avr.c (ptrreg_to_str): Replace error() with
22270         output_operand_lossage().
22271
22272 2007-04-18  Dorit Nuzman  <dorit@il.ibm.com>
22273
22274         * tree-vect-transform.c (get_initial_def_for_reduction): Clean away
22275         the unused code for reduction without adjust-in-epilog to simplify the
22276         function.
22277
22278 2007-04-18  Wolfgang Gellerich  <gellerich@de.ibm.com>
22279
22280         * config/s390/s390.h (S390_TDC_POSITIVE_ZERO): New constant.
22281         (S390_TDC_NEGATIVE_ZERO): New constant.
22282         (S390_TDC_POSITIVE_NORMALIZED_NUMBER): New constant.
22283         (S390_TDC_NEGATIVE_NORMALIZED_NUMBER): New constant.
22284         (S390_TDC_POSITIVE_DENORMALIZED_NUMBER): New constant.
22285         (S390_TDC_NEGATIVE_DENORMALIZED_NUMBER): New constant.
22286         (S390_TDC_POSITIVE_INFINITY): New constant.
22287         (S390_TDC_NEGATIVE_INFINITY): New constant.
22288         (S390_TDC_POSITIVE_QUIET_NAN): New constant.
22289         (S390_TDC_NEGATIVE_QUIET_NAN): New constant.
22290         (S390_TDC_POSITIVE_SIGNALING_NAN): New constant.
22291         (S390_TDC_NEGATIVE_SIGNALING_NAN): New constant.
22292         (S390_TDC_INFINITY): New constant.
22293         * config/s390/s390.c (s390_canonicalize_comparison): Renamed
22294         UNSPEC_CMPINT to UNSPEC_CCU_TO_INT, added a UNSPEC_CCU_TO_INT-like
22295         optimization for UNSPEC_CCZ_TO_INT.
22296         * config/s390/s390.md ("*TDC_insn_<mode>"): New insn.
22297         ("*ccz_to_int"): New insn.
22298         ("isinf<mode>2"): New insn.
22299         (UNSPEC_CMPINT): Renamed to UNSPEC_CCU_TO_INT.
22300         (UNSPEC_CCU_TO_INT): New constant, replaces UNSPEC_CMPINT.
22301         (UNSPEC_CCZ_TO_INT): New constant.
22302
22303 2007-04-18  Richard Guenther  <rguenther@suse.de>
22304
22305         PR tree-optimization/19431
22306         PR tree-optimization/21463
22307         * tree-pass.h (pass_phiprop): Declare.
22308         * passes.c (init_optimization_passes): New phiprop pass.
22309         * tree-ssa-forwprop.c (struct phiprop_d): New structure.
22310         (phivn_valid_p): New helper function.
22311         (phiprop_insert_phi): Likewise.
22312         (propagate_with_phi): Likewise.
22313         (tree_ssa_phiprop): New propagator propagating loads
22314         through phi nodes if profitable.
22315
22316 2007-04-18  Dorit Nuzman  <dorit@il.ibm.com>
22317
22318         * tree-vect-analyze.c (process_use): New function.
22319         (vect_mark_stmts_to_be_vectorized): Factor out code to process_use.
22320         Check phis in all bbs.
22321         * tree-vectorizer.c (vect_is_simple_use): Remove a no longer relavant
22322         assert.
22323
22324 2007-04-18  Bernd Schmidt  <bernd.schmidt@analog.com>
22325
22326         * reload1.c (eliminte_regs_in_insn): Use REG_EQUIV notes the same way
22327         we use REG_EQUAL.
22328
22329 2007-04-17  Anatoly Sokolov <aesok@post.ru>
22330
22331         PR target/30483
22332         * config/avr/avr.c (ptrreg_to_str): Replace gcc_unreachable() with
22333         error().
22334
22335 2007-04-17  H.J. Lu  <hongjiu.lu@intel.com>
22336
22337         * config/i386/sse.md (sse_vmaddv4sf3): Use register_operand
22338         on "0".
22339         (sse_vmmulv4sf3): Likewise.
22340         (sse2_vmaddv2df3): Likewise.
22341         (sse2_vmmulv2df3): Likewise.
22342
22343 2007-04-17  Zdenek Dvorak  <dvorakz@suse.cz>
22344
22345         PR rtl-optimization/31360
22346         * cfgloopanal.c (target_small_cost, target_pres_cost): Removed.
22347         (target_reg_cost): New.
22348         (init_set_costs): Initialize target_reg_cost.  Add comments
22349         regarding the rationale of the costs.
22350         (global_cost_for_size): Renamed to...
22351         (estimate_reg_pressure_cost): ... and simplify.  Decrease importance
22352         of register pressure.
22353         * tree-ssa-loop-ivopts.c (ivopts_global_cost_for_size): Use
22354         estimate_reg_pressure_cost.  Add number of ivs.
22355         (determine_set_costs): Dump target_reg_cost.
22356         * loop-invariant.c (gain_for_invariant): Use
22357         estimate_reg_pressure_cost.  Removed n_inv_uses argument.
22358         (best_gain_for_invariant, find_invariants_to_move): Remove
22359         n_inv_uses.
22360         * cfgloop.h (target_small_cost, target_pres_cost): Removed.
22361         (target_reg_cost): Declare.
22362         (global_cost_for_size): Declaration removed.
22363         (estimate_reg_pressure_cost): Declare.
22364
22365 2007-04-17  Peter Bergner  <bergner@vnet.ibm.com>
22366
22367         * config/rs6000/rs6000.c (rs6000_hard_regno_mode_ok): Force TDmode
22368         regnos into even/odd register pairs.
22369         * config/rs6000/rs6000.h [SLOW_UNALIGNED_ACCESS]: Treat DDmode and
22370         TDmode similar to the other floating point modes.
22371         [SECONDARY_MEMORY_NEEDED]: Treat DDmode similar to DFmode.
22372         * config/rs6000/dfp.md (negdd2, absdd2, negtd2, abstd2): New
22373         define_expand's.
22374         (negdd2_fpr, absdd2_fpr, nabsdd2_fpr, negtd2_fpr, abstd2_fpr,
22375         nabstd2_fpr, movdd_hardfloat64_mfpgpr): New define_insn's.
22376         (movdd_hardfloat64): Use TARGET_MFPGPR.
22377
22378 2007-04-17  Bernd Schmidt  <bernd.schmidt@analog.com>
22379
22380         * reload1.c (delete_output_reload): Don't count output in n_inherited.
22381
22382         Revert
22383         2005-01-05  Richard Henderson  <rth@redhat.com>
22384         PR rtl-opt/10692
22385         * reload1.c (do_input_reload): Restrict the optimization deleteing
22386         a previous output reload to RELOAD_FOR_INPUT.
22387
22388 2007-04-17  Dorit Nuzman  <dorit@il.ibm.com>
22389
22390         * tree-vectorizer.h (stmt_vec_info_type): Add enum value
22391         induc_vec_info_type.
22392         (vectorizable_induction): New function declaration.
22393         * tree-vect-transform.c (get_initial_def_for_induction): No need to
22394         check if already vectorized.  Find first place in BB where new stmts
22395         can be inserted.  Takes only one argument.
22396         (vectorizable_induction): New function.
22397         (vect_transform_stmt): Add case for induc_vec_info_type to call
22398         vectorizable_induction.
22399         (vect_transform_loop): Consider phis for vectorization.
22400         * tree-vect-analyze.c (vect_determine_vectorization_factor): Simplify
22401         condition.
22402         (analyze_operations): Call vectorizable_induction when analyzing phis.
22403         Fix comment.
22404         (vect_mark_stmts_to_be_vectorized): Remove redundant checks.
22405         (vect_mark_relevant): Include phis in relevance analysis.
22406         (vect_mark_stmts_to_be_vectorize): Likewise.
22407         * tree-vect-patterns.c (widened_name_p): Remove obsolete asserts.
22408
22409 2007-04-16  Lawrence Crowl  <crowl@google.com>
22410
22411         * doc/invoke.texi (Debugging Options): Add documentation for the
22412         -femit-struct-debug options -femit-struct-debug-baseonly,
22413         -femit-struct-debug-reduced, and
22414         -femit-struct-debug-detailed[=...].
22415
22416         * c-opts.c (c_common_handle_option): Add
22417         OPT_femit_struct_debug_baseonly, OPT_femit_struct_debug_reduced,
22418         and OPT_femit_struct_debug_detailed_.
22419         * c.opt: Add specifications for
22420         -femit-struct-debug-baseonly, -femit-struct-debug-reduced,
22421         and -femit-struct-debug-detailed[=...].
22422         * opts.c (set_struct_debug_option): Parse the
22423         -femit-struct-debug-... options.
22424         * opts.c (matches_main_base, main_input_basename,
22425         main_input_baselength, base_of_path, matches_main_base): Add
22426         variables and functions to compare header base name to compilation
22427         unit base name.
22428         * opts.c (should_emit_struct_debug): Add to determine to emit a
22429         structure based on the option.
22430         (dump_struct_debug) Also disabled function to debug this
22431         function.
22432         * opts.c (handle_options): Save the base name of the
22433         compilation unit.
22434
22435         * langhooks-def.h (LANG_HOOKS_GENERIC_TYPE_P): Define.
22436         (LANG_HOOKS_FOR_TYPES_INITIALIZER): Add.
22437         This hook indicates if a type is generic.  Set it by default
22438         to "never generic".
22439         * langhooks.h (struct lang_hooks_for_types): Add a new hook
22440         to determine if a struct type is generic or not.
22441         * cp/cp-tree.h (class_tmpl_impl_spec_p): Declare a C++ hook.
22442         * cp/tree.c (class_tmpl_impl_spec_p): Implement the C++ hook.
22443         * cp/cp-lang.c (LANG_HOOKS_GENERIC_TYPE_P): Override null C hook
22444         with live C++ hook.
22445
22446         * flags.h (enum debug_info_usage): Add an enumeration to describe
22447         a program's use of a structure type.
22448         * dwarf2out.c (gen_struct_or_union_type_die): Add a new parameter
22449         to indicate the program's usage of the type.  Filter structs based
22450         on the -femit-struct-debug-... specification.
22451         (gen_type_die): Split into two routines, gen_type_die and
22452         gen_type_die_with_usage.  gen_type_die is now a wrapper
22453         that assumes direct usage.
22454         (gen_type_die_with_usage): Replace calls to gen_type_die
22455         with gen_type_die_with_usage adding the program usage of
22456         the referenced type.
22457         (dwarf2out_imported_module_or_decl): Suppress struct debug
22458         information using should_emit_struct_debug when appropriate.
22459
22460 2007-04-16  Ian Lance Taylor  <iant@google.com>
22461
22462         PR tree-optimization/31522
22463         * tree-vrp.c (vr_phi_edge_counts): New static variable.
22464         (vrp_initialize): Allocate vr_phi_edge_counts.
22465         (vrp_visit_phi_node): Don't push to infinity if we saw a new
22466         executable edge.  Drop test for all constants.
22467         (vrp_finalize): Free vrp_phi_edge_counts.
22468
22469         * doc/cpp.texi (Common Predefined Macros): Clarify description of
22470         __GNUC_GNU_INLINE__ and __GNUC_STDC_INLINE__.
22471
22472         * tree-ssa-propagate.c (cfg_blocks_add): Insert blocks with fewer
22473         predecessors at head rather than tail.
22474
22475 2007-04-16  Matthias Klose  <doko@debian.org>
22476
22477         * config/alpha/linux.h (CPP_SPEC): Define.
22478         * config/arm/linux-gas.h (SUBTARGET_CPP_SPEC): Extend.
22479
22480 2007-04-16  Aldy Hernandez  <aldyh@redhat.com>
22481
22482         * function.h: Remove sequence_stack extern declaration.
22483
22484 2007-04-16  Kazu Hirata  <kazu@codesourcery.com>
22485
22486         * config/m68k/m68k.h (LONG_DOUBLE_TYPE_SIZE): Change to 64 on
22487         TARGET_FIDOA.
22488         (LIBGCC2_LONG_DOUBLE_TYPE_SIZE): Change to 64 if __mfido__ is
22489         defined.
22490
22491 2007-04-16  Anatoly Sokolov <aesok@post.ru>
22492
22493         * config/avr/avr.c (avr_arch_types): Rearranging  array.
22494         (enum avr_arch): Add.
22495         (avr_mcu_types): Use avr_arch enumeration constants instead of
22496         numbers.
22497         * config/avr/avr.h (LINK_SPEC): Simplify.
22498
22499 2007-04-16  Kazu Hirata  <kazu@codesourcery.com>
22500
22501         * config/m68k/m68k.c (m68k_libcall_value,
22502         m68k_function_value): Use macros for register names more.
22503
22504         * config/m68k/m68k.h (FRAME_POINTER_REGNUM): Use A6_REG
22505         instead.
22506         (M68K_REGNAME): Use A6_REG.
22507         * config/m68k/m68k.md (FP_REG): Rename to A6_REG.
22508
22509 2007-04-16  Maxim Kuvyrkov  <mkuvyrkov@ispras.ru>
22510
22511         PR middle-end/28071
22512         * sched-int.h (struct deps): Split field 'pending_lists_length' into
22513         'pending_read_list_length' and 'pending_write_list_length'.  Update
22514         comment.
22515         * sched-deps.c (add_insn_mem_dependence): Change signature.  Update
22516         to handle two length counters instead of one.  Update all uses.
22517         (flush_pending_lists, sched_analyze_1, init_deps): Update to handle
22518         two length counters instead of one.
22519         * sched-rgn.c (propagate_deps): Update to handle two length counters
22520         instead of one.
22521
22522 2007-04-16  H.J. Lu  <hongjiu.lu@intel.com>
22523
22524         PR target/31582
22525         * config/i386/i386.c (ix86_expand_vec_set_builtin): Make a
22526         copy of source, pass it to ix86_expand_vector_set and return
22527         it as target.
22528
22529 2007-04-16  David Ung  <davidu@mips.com>
22530             Joseph Myers  <joseph@codesourcery.com>
22531
22532         * config/mips/mips.h (PROCESSOR_74KC, PROCESSOR_74KF,
22533         PROCESSOR_74KX, TUNE_74K, GENERATE_MADD_MSUB): Define.
22534         * config/mips/mips.c (mips_cpu_info_table, mips_rtx_cost_data):
22535         Add 74K processor information.
22536         * config/mips/mips.md: Include 74k.md.
22537         (cpu): Add 74kc,74kf,74kx.
22538         (ISA_HAS_MADD_MSUB): Change to GENERATE_MADD_MSUB throughout.
22539         * config/mips/74k.md: New.
22540         * doc/invoke.texi (MIPS Options): Document 74K support.
22541
22542 2007-04-16  Dorit Nuzman  <dorit@il.ibm.com>
22543
22544         * tree-vect-analyze.c (vect_analyze_operations): Reorganize calls to
22545         vectorizable_* functions.
22546         * tree-vect-transform.c (vectorizable_call): Add check for
22547         STMT_VINFO_RELEVANT_P, STMT_VINFO_DEF_TYPE and STMT_VINFO_LIVE_P.
22548         (vectorizable_store): likewise.
22549         (vectorizable_conversion): Add check for STMT_VINFO_DEF_TYPE.
22550         Add comments.
22551         (vectorizable_operation, vectorizable_type_demotion): Likewise.
22552         (vectorizable_type_promotion, vectorizable_load): Likewise.
22553         (vectorizable_live_operation, vectorizable_condition): Likewise.
22554         (vectorizable_assignment): Add check for STMT_VINFO_DEF_TYPE and
22555         STMT_VINFO_LIVE_P.
22556         (vect_transform_stmt): Reorganize calls to vectorizable_* functions.
22557
22558 2007-04-15  Kazu Hirata  <kazu@codesourcery.com>
22559
22560         * config/m68k/linux.h (FUNCTION_VALUE_REGNO_P): Use macros for
22561         register numbers more.
22562         * config/m68k/m68k.h (STACK_POINTER_REGNUM,
22563         FRAME_POINTER_REGNUM, STATIC_CHAIN_REGNUM,
22564         M68K_STRUCT_VALUE_REGNUM, FUNCTION_VALUE, LIBCALL_VALUE,
22565         FUNCTION_VALUE_REGNO_P): Likewise.
22566         * config/m68k/m68kelf.h (M68K_STRUCT_VALUE_REGNUM,
22567         STATIC_CHAIN_REGNUM): Likewise.
22568         * config/m68k/m68kemb.h (FUNCTION_VALUE_REGNO_P): Likewise.
22569         * config/m68k/netbsd-elf.h (M68K_STRUCT_VALUE_REGNUM,
22570         STATIC_CHAIN_REGNUM, FUNCTION_VALUE_REGNO_P): Likewise.
22571         * config/m68k/m68k.md (FP_REG): New.
22572
22573 2007-04-15  Kazu Hirata  <kazu@codesourcery.com>
22574
22575         * config/m68k/m68k.h (PREFERRED_STACK_BOUNDARY): Prefer 32-bit
22576         alignment on fido.
22577
22578 2007-04-15  Kazu Hirata  <kazu@codesourcery.com>
22579
22580         * config/i386/i386.c, config/s390/s390.c, config/s390/s390.md,
22581         tree-ssa-loop-niter.c, tree-ssa-structalias.c, tree-vrp.c: Fix
22582         comment typos.
22583
22584 2007-04-11  Zdenek Dvorak  <dvorakz@suse.cz>
22585
22586         * tree-ssa-loop-prefetch.c (loop_prefetch_arrays): Ignore
22587         cold loops.
22588
22589 2007-04-14  Andrew Pinski  <andrew_pinski@playstation.sony.com>
22590
22591         PR c/31520
22592         * c-decl.c (finish_decl): Grab the type of the decl after the call
22593         to store_init_value.
22594
22595 2007-04-14  Steven Bosscher  <steven@gcc.gnu.org>
22596
22597         * common.opt (fforward-propagate): Fix "Optimization" annotation.
22598
22599 2007-04-14  Jakub Jelinek  <jakub@redhat.com>
22600
22601         PR c++/25874
22602         * omp-low.c (expand_omp_parallel): If child_cfun->cfg, free
22603         dominators, post dominators and cleanup cfg before returning.
22604
22605 2007-04-14  Bernd Schmidt  <bernd.schmidt@analog.com>
22606
22607         * config/bfin/bfin.h (MODES_TIEABLE_P): Allow more modes to be tied.
22608         * config/bfin/bfin.md (movsi_insn): Delete two unused alternatives.
22609
22610 2007-04-14  Kazu Hirata  <kazu@codesourcery.com>
22611
22612         * config.gcc: Recognize fido.
22613         * config/m68k/m68k-devices.def (fidoa): New.
22614         * config/m68k/m68k.h (TARGET_CPU_CPP_BUILTINS): Define
22615         __mfido__.
22616         (FL_FIDOA, TARGET_FIDOA): New.
22617         * config/m68k/m68k.opt (mfidoa): New.
22618
22619 2007-04-13  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
22620
22621         PR middle-end/31322
22622         * dwarf2out.c (output_call_frame_info): Call assemble_external_libcall
22623         when a personality function is used.
22624
22625 2007-04-13  Bob Wilson  <bob.wilson@acm.org>
22626
22627         * config/xtensa/xtensa.c (xtensa_expand_builtin): Use CALL_EXPR_FN.
22628
22629 2007-04-13  Mike Stump  <mrs@apple.com>
22630
22631         * config/darwin-c.c (handle_c_option): Handle -fapple-kext here so
22632         we can...
22633         * config/darwin.opt (fapple-kext): Make C++ only.
22634         * config/darwin.c (darwin_override_options): Remove code to ensure
22635         -fapple-kext is given for C++ only.
22636
22637 2007-04-13  Richard Sandiford  <richard@codesourcery.com>
22638
22639         * config/mips/vxworks.h (SUBTARGET_OVERRIDE_OPTIONS): Define.
22640         * config/mips/mips.c (override_options): Call
22641         SUBTARGET_OVERRIDE_OPTIONS, if defined.
22642
22643 2007-04-13  H.J. Lu  <hongjiu.lu@intel.com>
22644
22645         * config/i386/i386.opt (msvr3-shlib): Removed.
22646
22647         * doc/invoke.texi: Remove -msvr3-shlib.
22648
22649 2007-04-13  H.J. Lu  <hongjiu.lu@intel.com>
22650
22651         * config/i386/i386.opt (mpopcnt): Replace "popcount" instruction
22652         with "popcnt" instruction.
22653
22654 2007-04-13  Richard Guenther  <rguenther@suse.de>
22655
22656         PR tree-optimization/21258
22657         * tree-vrp.c (compare_case_labels): New helper.
22658         (find_switch_asserts): New function.
22659         (find_assert_locations): Call it for SWITCH_EXPRs.
22660
22661 2007-04-13  Uros Bizjak  <ubizjak@gmail.com>
22662
22663         * config/i386/i386.h (X87_FLOAT_MODE_P): Check for TARGET_80387.
22664         * config/i386/i386.md (*cmpfp0): Remove check for TARGET_80387, this
22665         check is now implied in X87_FLOAT_MODE_P.
22666         (*cmpfp_u, *cmpfp_<mode>, *cmpfp_i_i387): Ditto.
22667         (*cmpfp_iu_387, fix_trunc<mode>_fisttp_i386_1): Ditto.
22668         (fix_trunc<mode>_i386_fisttp): Ditto.
22669         (fix_trunc<mode>_i387_fisttp_with_temp): Ditto.
22670         (*fix_trunc<mode>_i387_1, fix_truncdi_i387): Ditto.
22671         (fix_truncdi_i387_with_temp, fix_trunc<mode>_i387): Ditto.
22672         (fix_trunc<mode>_i387_with_temp, *fp_jcc_1_387): Ditto.
22673         (*fp_jcc_2_387, *fp_jcc_5_387, *fp_jcc_6_387): Ditto.
22674         (*fp_jcc_7_387, *fp_jcc_8<mode>_387): Ditto.
22675         (unnamed_splitters): Ditto.
22676         * config/i386/i386.c (function_value_32): Generate FIRST_FLOAT_REG
22677         for X87_FLOAT_MODE_P mode.  Override FIRST_FLOAT_REG with
22678         FIRST_SSE_REG for local functions when SSE math is enabled or
22679         for functions with sseregparm attribute.
22680         (standard_80387_constant_p): Return -1 if mode is not
22681         X87_FLOAT_MODE_P.
22682         (ix86_cc_mode): Assert that scalar mode is not DECIMAL_FLOAT_MODE_P.
22683         (ix86_expand_compare): Ditto.
22684         (ix86_expand_carry_flag_compare): Ditto.
22685         (ix86_expand_int_movcc): Check for SCALAR_FLOAT_MODE_P instead
22686         of FLOAT_MODE_P for cmp_mode and assert that cmp_mode is not
22687         DECIMAL_FLOAT_MODE_P.
22688         (ix86_preferred_output_reload_class): Use X87_FLOAT_MODE_P instead
22689         of SCALAR_FLOAT_MODE_P.
22690         (ix86_rtx_costs) [PLUS] Remove FLOAT_MODE_P and fall through to ...
22691         [MINUS]: ... here.  Add SSE_FLOAT_MODE_P and X87_FLOAT_MODE_P
22692         checks before FLOAT_MODE_P.
22693         [MULT]: Add SSE_FLOAT_MODE_P and X87_FLOAT_MODE_P checks
22694         before FLOAT_MODE_P.
22695         [DIV]: Ditto.
22696         [NEG]: Ditto.
22697         [ABS]: Ditto.
22698         [SQRT]: Ditto.
22699         [FLOAT_EXTEND]: Use SSE_FLOAT_MODE_P.
22700
22701 2007-04-12  Paolo Bonzini  <bonzini@gnu.org>
22702             Charles Wilson  <libtool@cwilson.fastmail.fm>
22703
22704         * Makefile.in (stamp-as, stamp-collect-ld, stamp-nm): Remove.
22705         (libgcc.mvars): Don't depend on them.
22706         * configure.ac (as, collect-ld, nm): Create from exec-tool.in.
22707         * exec-tool.in: New.
22708
22709 2007-04-12  Brooks Moses  <brooks.moses@codesourcery.com>
22710
22711         * doc/invoke.text (--help): Document --help=common.
22712
22713 2007-04-12  Thomas Neumann  <tneumann@users.sourceforge.net>
22714
22715         * stub-objc.c (objc_build_keyword_decl): Avoid C++ keywords.
22716
22717 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
22718
22719         * Makefile.in (insn-emit.o): Depend on $(INTEGRATE_H).
22720         * genemit.c (main): Emit #include "integrate.h".
22721         * config/mips/mips-protos.h (SYMBOL_HALF): New mips_symbol_type.
22722         (LOADGP_RTP): New mips_loadgp_style.
22723         * config/mips/mips.h: Include config/vxworks-dummy.h.
22724         (TARGET_RTP_PIC): New macro.
22725         (TARGET_USE_GOT): Return true for TARGET_RTP_PIC.
22726         (TARGET_USE_PIC_FN_ADDR_REG): Return true for TARGET_VXWORKS_RTP.
22727         (ASM_OUTPUT_ADDR_DIFF_ELT): Emit function-relative case tables
22728         for TARGET_RTP_PIC.
22729         * config/mips/vxworks.h (SUBTARGET_ASM_SPEC): Define.  Pass down
22730         -mvxworks-pic when using -mrtp and a PIC option.
22731         * config/mips/mips.c (mips_classify_symbol): Return SYMBOL_GOT_DISP
22732         for RTP PIC.
22733         (mips_symbolic_constant_p, mips_symbolic_address_p)
22734         (mips_symbol_insns): Handle SYMBOL_HALF.
22735         (override_options): Warn about -G and -mrtp being used together.
22736         Initialize mips_lo_relocs[SYMBOL_HALF].
22737         (mips_current_loadgp_style): Return LOADGP_RTP for RTP PIC.
22738         (mips_emit_loadgp): Handle LOADGP_RTP.
22739         (mips_in_small_data_p): Return false for TARGET_VXWORKS_RTP.
22740         * config/mips/mips.md (loadgp_rtp): New insn and splitter.
22741         (tablejump): Handle function-relative case table entries if
22742         TARGET_RTP_PIC.
22743         * config/mips/predicates.md (symbol_ref_operand): New predicate.
22744
22745 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
22746
22747         * config/mips/mips.md (load_call<mode>): Allow any general register.
22748         destination.
22749         (sibcall_value_internal, sibcall_value_multiple_internal)
22750         (call_value_internal, call_value_split, call_value_multiple_internal)
22751         (call_value_multiple_split): Remove constraints from operand 0.
22752
22753 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
22754
22755         * config/mips/mips-protos.h: In comments, refer to loadgp_absolute
22756         rather than loadgp_noshared.
22757         * config/mips/mips.c (mips_emit_loadgp): Use gen_loadgp_absolute
22758         instead of gen_loadgp_noshared.  Use gen_loadgp_newabi instead of
22759         gen_loadgp.
22760         * config/mips/mips.md (loadgp): Rename to...
22761         (loadgp_newabi): ...this.
22762         (loadgp_noshared): Rename to...
22763         (loadgp_absolute): ...this.
22764
22765 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
22766
22767         * config/mips/mips.c (mips_ok_for_lazy_binding_p): Always return
22768         false for locally-binding symbols.
22769         (mips_dangerous_for_la25_p): Check mips_global_symbol_p.
22770
22771 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
22772
22773         * config/mips/mips-protos.h (SYMBOL_GOT_LOCAL): Rename to...
22774         (SYMBOL_GOT_PAGE_OFST): ...this.
22775         (SYMBOL_GOT_GLOBAL): Rename to...
22776         (SYMBOL_GOT_DISP): ...this.
22777         (SYMBOL_GOTOFF_GLOBAL): Rename to...
22778         (SYMBOL_GOTOFF_DISP): ...this.  Update comments accordingly.
22779         * config/mips/mips.c (mips_global_symbol_p): New function.
22780         (mips_symbol_binds_local_p): Likewise.
22781         (mips_classify_symbol): Rename SYMBOL_GOT_GLOBAL to SYMBOL_GOT_DISP
22782         and SYMBOL_GOT_LOCAL to SYMBOL_GOT_PAGE_OFST.  Use
22783         mips_global_symbol_p and mips_symbol_binds_local_p.
22784         (mips_symbolic_constant_p, mips_symbolic_address_p, mips_symbol_insns)
22785         (override_options): Rename SYMBOL_GOT_GLOBAL to SYMBOL_GOT_DISP,
22786         SYMBOL_GOT_LOCAL to SYMBOL_GOT_PAGE_OFST and SYMBOL_GOTOFF_GLOBAL to
22787         SYMBOL_GOTOFF_DISP.
22788         (mips_ok_for_lazy_binding_p): New function.
22789         (mips_load_call_address, mips_expand_call): Use it.
22790         (mips_dangerous_for_la25_p): Likewise.
22791         * config/mips/mips.md (*xgot_hi<mode>, *xgot_lo<mode>)
22792         (*got_disp<mode>): Use got_disp_operand instead of
22793         global_got_operand.  Use SYMBOL_GOTOFF_DISP instead of
22794         SYMBOL_GOTOFF_GLOBAL.
22795         (*got_page<mode>): Use got_page_ofst_operand instead of
22796         local_got_operand.
22797         * config/mips/predicates.md (const_call_insn_operand): Use
22798         SYMBOL_GOT_DISP instead of SYMBOL_GOT_GLOBAL.
22799         (global_got_operand): Rename to...
22800         (got_disp_operand): ...this and use SYMBOL_GOT_DISP instead of
22801         SYMBOL_GOT_GLOBAL.
22802         (local_got_operand): Rename to...
22803         (got_page_ofst_operand): ...this and use SYMBOL_GOT_PAGE_OFST instead
22804         of SYMBOL_GOT_LOCAL.
22805
22806 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
22807
22808         * config/mips/mips.h (TARGET_SPLIT_CALLS): Check
22809         TARGET_CALL_CLOBBERED_GP.
22810         (TARGET_SIBCALLS): Check TARGET_USE_GOT instead of TARGET_ABICALLS.
22811         (TARGET_USE_GOT, TARGET_CALL_CLOBBERED_GP): New macros.
22812         (TARGET_CALL_SAVED_GP, TARGET_USE_PIC_FN_ADDR_REG): Likewise.
22813         (STARTING_FRAME_OFFSET): Check TARGET_CALL_CLOBBERED_GP instead
22814         of TARGET_ABICALLS && !TARGET_NEWABI.
22815         (MIPS_CALL): Check TARGET_USE_GOT instead of TARGET_ABICALLS.
22816         * config/mips/mips.c (mips_load_call_address): Check
22817         TARGET_CALL_SAVED_GP instead of TARGET_NEWABI.
22818         (mips_global_pointer): Check TARGET_USE_GOT instead of TARGET_ABICALLS.
22819         Check TARGET_CALL_SAVED_GP instead of TARGET_NEWABI.
22820         (mips_save_reg_p): Check TARGET_CALL_SAVED_GP instead of
22821         TARGET_ABICALLS && TARGET_NEWABI.
22822         (mips_current_loadgp_style): Check TARGET_USE_GOT instead of
22823         TARGET_ABICALLS.
22824         (mips_expand_prologue): Check TARGET_OLDABI instead of !TARGET_NEWABI.
22825         (mips_expand_epilogue): Check TARGET_CALL_SAVED_GP instead of
22826         TARGET_ABICALLS && TARGET_NEWABI.
22827         (mips_output_mi_thunk): Check TARGET_USE_GOT instead of
22828         TARGET_ABICALLS.  Check TARGET_CALL_SAVED_GP instead of
22829         TARGET_NEWABI.  Use TARGET_USE_PIC_FN_ADDR_REG to decide
22830         whether indirect calls must use $25.
22831         (mips_extra_live_on_entry): Check TARGET_GOT instead of
22832         TARGET_ABICALLS.
22833         * config/mips/mips.md (jal_macro): Check flag_pic and
22834         TARGET_CALL_CLOBBERED_GP instead of TARGET_ABICALLS and TARGET_NEWABI.
22835         (builtin_setjmp_setup, builtin_longjmp): Check TARGET_USE_GOT
22836         instead of TARGET_ABICALLS.
22837         (exception_receiver): Check TARGET_CALL_CLOBBERED_GP instead of
22838         TARGET_ABICALLS && TARGET_OLDABI.
22839         (load_call<mode>): Check TARGET_USE_GOT instead of TARGET_ABICALLS.
22840         (sibcall): In the comment above the define_insn, mention
22841         TARGET_USE_PIC_FN_ADDR_REG instead of TARGET_ABICALLS.
22842         * config/mips/constraints.md (c): Check TARGET_USE_PIC_FN_ADDR_REG
22843         instead of TARGET_ABICALLS.
22844
22845 2007-04-12  Bernd Schmidt  <bernd.schmidt@analog.com>
22846
22847         * doc/md.texi (Blackfin family constraints): Document PA and PB.
22848         * config/bfin/bfin.h (CONST_OK_FOR_P): Handle PA and PB.
22849         (MACFLAGS_MATCH_P): New macro.
22850         * config/bfin/bfin.c (print_operand): Handle MACFLAG_IS_M.
22851         (bfin_secondary_reload): Treat EVEN_AREGS and ODD_AREGS like AREGS.
22852         * config/bfin/bfin.md (MACFLAG_IS_M): New constant.  Renumber some of
22853         the other MACFLAG constants.
22854         (sum_of_accumulators, lshrpdi3, ashrpdi3): New patterns.
22855         (flag_machi): Tighten constraints.  Renumber some of the operands.
22856         (flag_machi_acconly): Tighten constraints.  Correct operand numbers in
22857         output template.
22858         (flag_machi_parts_acconly): New pattern.
22859         (flag_macinithi): Tighten constraints.  Allow any accumulator to be
22860         used.
22861         (flag_macinit1hi): Tighten constraints.
22862         (flag_mul_macv2hi_parts_acconly): New pattern.
22863
22864         * config/bfin/lib1funcs.asm (___umulsi3_highpart, __smulsi3_highpart):
22865         Use a more efficient implementation.
22866         * config/bfin/bfin.md (umulsi3_highpart, smulsi3_highpart): Emit
22867         inline sequences when not optimizing for size.
22868
22869         * config/bfin/bfin.md (movhi_low2high, movhi_high2high, movhi_low2low,
22870         movhi_high2low): Delete, merge functionality into...
22871         (packv2hi): ... this pattern.
22872
22873         2007-02-11  Jie Zhang  <jie.zhang@analog.com>
22874         * config/bfin/bfin.opt (msim): New option.
22875         (mcpu=): New option.
22876         * config/bfin/bfin-protos.h (enum bfin_cpu): New.
22877         (bfin_cpu_t): Typedef of enum bfin_cpu.
22878         (bfin_cpu_type): New declaration.
22879         * config/bfin/elf.h (STARTFILE_SPEC): Add support for
22880         -msim and -mcpu= options.
22881         (LIB_SPEC): Likewise.
22882         * config/bfin/bfin.c (bfin_cpu_type): Define.
22883         (bfin_handle_option): Handle -mcpu= option.
22884         * config/bfin/bfin.h (DEFAULT_CPU_TYPE): Define as BFIN_CPU_BF532.
22885         (TARGET_CPU_CPP_BUILTINS): Define __ADSPBF531__, __ADSPBF532__,
22886         __ADSPBF533__ or __ADSPBF537__ according to the cpu type.
22887
22888 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
22889
22890         * config.gcc (*-*-vxworks*): Don't add to tm_files in this stanza.
22891         (arm-wrs-vxworks, mips-wrs-vxworks, powerpc-wrs-vxworks)
22892         (powerpc-wrs-vxworksae): Use ${tm_file}.
22893         (i[4567]86-wrs-vxworks, i[4567]86-wrs-vxworksae): Add svr4.h
22894         after elfos.h.  Remove i386/sysv4.h and add i386/vx-common.h.
22895         * config/i386/vx-common.h: New file.
22896
22897 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
22898
22899         * config/vxworks.h (VXWORKS_STARTFILE_SPEC): Use -l:crt0.o instead
22900         of crt0.o%s.
22901
22902 2007-04-12  Andreas Krebbel  <krebbel1@de.ibm.com>
22903
22904         * config/s390/s390.md ("trunctddd2"): Use TDmode for the target of
22905         ldxtr.
22906
22907 2007-04-12  Douglas Gregor  <doug.gregor@gmail.com>
22908
22909         PR c++/31078
22910         PR c++/31103
22911         * c-common.c (c_build_qualified_type): Set canonical type
22912         appropriately.
22913
22914 2007-04-12  Richard Guenther  <rguenther@suse.de>
22915
22916         * tree-pretty-print.c (dump_generic_node): Print ARRAY_REF
22917         lower bound and element size if lower bound is not zero
22918         or either of the ARRAY_REF operands is set.
22919
22920 2007-04-12  Richard Guenther  <rguenther@suse.de>
22921
22922         PR tree-optimization/24689
22923         PR tree-optimization/31307
22924         * fold-const.c (operand_equal_p): Compare INTEGER_CST array
22925         indices by value.
22926         * gimplify.c (canonicalize_addr_expr): To be consistent with
22927         gimplify_compound_lval only set operands two and three of
22928         ARRAY_REFs if they are not gimple_min_invariant.  This makes
22929         it never at this place.
22930         * tree-ssa-ccp.c (maybe_fold_offset_to_array_ref): Likewise.
22931
22932 2007-04-11  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
22933
22934         * pa.c (pa_som_asm_init_sections): Ensure that cfun->machine is not
22935         null before emitting a .nsubspa directive.
22936
22937 2007-04-11  Diego Novillo  <dnovillo@redhat.com>
22938
22939         * tree-ssa-alias.c (dump_mem_ref_stats): Do not call
22940         need_to_partition_p if there are no memory statements in the
22941         function.
22942
22943 2007-04-11  Zdenek Dvorak  <dvorakz@suse.cz>
22944
22945         * tree-data-ref.c (chrec_steps_divide_constant_p): Removed.
22946         (gcd_of_steps_may_divide_p): New function.
22947         (analyze_miv_subscript): Use gcd_of_steps_may_divide_p.
22948
22949 2007-04-11  Bernd Schmidt  <bernd.schmidt@analog.com>
22950
22951         * reload.c (find_reloads_toplev, find_reloads_address,
22952         find_reloads_address_1, find_reloads_subreg_address): Use rtx_equal_p,
22953         not a pointer equality test, to decide if we need to call
22954         push_reg_equiv_alt_mem.
22955
22956 2007-04-11  Sebastian Pop  <sebastian.pop@inria.fr>
22957
22958         * tree-data-ref.c (affine_function_zero_p, constant_access_functions,
22959         insert_innermost_unit_dist_vector, add_distance_for_zero_overlaps):
22960         New.
22961         (build_classic_dist_vector): Call add_distance_for_zero_overlaps.
22962
22963 2007-04-11  Zdenek Dvorak  <dvorakz@suse.cz>
22964
22965         * tree-data-ref.c (add_multivariate_self_dist): Force the distance
22966         vector to be positive.
22967
22968 2007-04-11  Diego Novillo  <dnovillo@redhat.com>
22969
22970         PR 30735
22971         PR 31090
22972         * doc/invoke.texi: Document --params max-aliased-vops and
22973         avg-aliased-vops.
22974         * tree-ssa-operands.h (get_mpt_for, dump_memory_partitions,
22975         debug_memory_partitions): Move to tree-flow.h
22976         * params.h (AVG_ALIASED_VOPS): Define.
22977         * tree-ssa-alias.c (struct mp_info_def): Remove.  Update all
22978         users.
22979         (mp_info_t): Likewise.
22980         (get_mem_sym_stats_for): New.
22981         (set_memory_partition): Move from tree-flow-inline.h.
22982         (mark_non_addressable): Only clear the set of symbols for the
22983         partition if it exists.
22984         (dump_memory_partitions): Move from tree-ssa-operands.c
22985         (debug_memory_partitions): Likewise.
22986         (need_to_partition_p): New.
22987         (dump_mem_ref_stats): New.
22988         (debug_mem_ref_stats): New.
22989         (dump_mem_sym_stats): New.
22990         (debug_mem_sym_stats): New.
22991         (update_mem_sym_stats_from_stmt): New.
22992         (compare_mp_info_entries): New.
22993         (mp_info_cmp): Call it.
22994         (sort_mp_info): Change argument to a list of mem_sym_stats_t
22995         objects.
22996         (get_mpt_for): Move from tree-ssa-operands.c.
22997         (find_partition_for): New.
22998         (create_partition_for): Remove.
22999         (estimate_vop_reduction): New.
23000         (update_reference_counts): New.
23001         (build_mp_info): New.
23002         (compute_memory_partitions): Refactor.
23003         Document new heuristic.
23004         Call build_mp_info, update_reference_counts,
23005         find_partition_for and estimate_vop_reduction.
23006         (compute_may_aliases): Populate virtual operands before
23007         calling debugging dumps.
23008         (delete_mem_sym_stats): New.
23009         (delete_mem_ref_stats): New.
23010         (init_mem_ref_stats): New.
23011         (init_alias_info): Call it.
23012         (maybe_create_global_var): Remove alias_info argument.
23013         Get number of call sites and number of pure/const call sites
23014         from gimple_mem_ref_stats().
23015         (dump_alias_info): Call dump_memory_partitions first.
23016         (dump_points_to_info_for): Show how many times a pointer has
23017         been dereferenced.
23018         * opts.c (decode_options): For -O2 set --param
23019         max-aliased-vops to 500.
23020         For -O3 set --param max-aliased-vops to 1000 and --param
23021         avg-aliased-vops to 3.
23022         * fortran/options.c (gfc_init_options): Remove assignment to
23023         MAX_ALIASED_VOPS.
23024         * tree-flow-inline.h (gimple_mem_ref_stats): New.
23025         * tree-dfa.c (dump_variable): Dump memory reference
23026         statistics.
23027         Dump NO_ALIAS* settings.
23028         (referenced_var_lookup): Tidy.
23029         (mem_sym_stats): New.
23030         * tree-ssa-copy.c (may_propagate_copy): Return true if DEST
23031         and ORIG are different SSA names for a memory partition.
23032         * tree-ssa.c (delete_tree_ssa): Call delete_mem_ref_stats.
23033         * tree-flow.h (struct mem_sym_stats_d): Define.
23034         (mem_sym_stats_t): Define.
23035         (struct mem_ref_stats_d): Define.
23036         (struct gimple_df): Add field mem_ref_stats.
23037         (enum noalias_state): Define.
23038         (struct var_ann_d): Add bitfield noalias_state.
23039         (mem_sym_stats, delete_mem_ref_stats, dump_mem_ref_stats,
23040         debug_mem_ref_stats, debug_memory_partitions,
23041         debug_mem_sym_stats): Declare.
23042         * tree-ssa-structalias.c (update_alias_info): Update call
23043         sites, pure/const call sites and asm sites in structure
23044         returned by gimple_mem_ref_stats.
23045         Remove local variable IS_POTENTIAL_DEREF.
23046         Increase NUM_DEREFS if the memory expression is a potential
23047         dereference.
23048         Call update_mem_sym_stats_from_stmt.
23049         If the memory references memory, call
23050         update_mem_sym_stats_from_stmt for all the direct memory
23051         symbol references found.
23052         (intra_create_variable_infos): Set noalias_state field for
23053         pointer arguments according to the value of
23054         flag_argument_noalias.
23055         * tree-ssa-structalias.h (struct alias_info): Remove fields
23056         num_calls_found and num_pure_const_calls_found.
23057         (update_mem_sym_stats_from_stmt): Declare.
23058         * params.def (PARAM_MAX_ALIASED_VOPS): Change description.
23059         Set default value to 100.
23060         (PARAM_AVG_ALIASED_VOPS): Define.
23061
23062 2007-04-11  Richard Guenther  <rguenther@suse.de>
23063
23064         PR middle-end/31530
23065         * simplify-rtx.c (simplify_binary_operation_1): Do not simplify
23066         a * -b + c as c - a * b if we honor sign dependent rounding.
23067
23068 2007-04-11  Bernd Schmidt  <bernd.schmidt@analog.com>
23069
23070         * config/bfin/bfin-protos.h (bfin_expand_movmem): Renamed from
23071         bfin_expand_strmov.
23072         * config/bfin/bfin.c (bfin_expand_prologue, bfin_delegitimize_address,
23073         bfin_function_ok_for_sibcall, split_load_immediate): Remove unused
23074         variables.
23075         (initialize_trampoline): Don't use old-style function definition.
23076         (bfin_secondary_reload): Mark IN_P argument as unused.
23077
23078 2007-04-10  Sebastian Pop  <sebastian.pop@inria.fr>
23079
23080         PR tree-optimization/31343
23081         * tree-chrec.h (chrec_zerop): Moved before build_polynomial_chrec.
23082         (build_polynomial_chrec): Return a scalar when the evolution is zero.
23083         * testsuite/gcc.dg/vect/pr31343.c: New.
23084
23085 2007-04-10  Eric Christopher  <echristo@apple.com>
23086
23087         * config/i386/i386.h (X87_FLOAT_MODE_P): New.
23088         * config/i386/i386.md (*cmpfp0): Use.
23089         (*cmpfp_u, *cmpfp_<mode>, *cmpfp_i_i387): Ditto.
23090         (*cmpfp_iu_387, fix_trunc<mode>_fisttp_i386_1): Ditto.
23091         (fix_trunc<mode>_i386_fisttp): Ditto.
23092         (fix_trunc<mode>_i387_fisttp_with_temp): Ditto.
23093         (*fix_trunc<mode>_i387_1, fix_truncdi_i387): Ditto.
23094         (fix_truncdi_i387_with_temp, fix_trunc<mode>_i387): Ditto.
23095         (fix_trunc<mode>_i387_with_temp, *fp_jcc_1_387): Ditto.
23096         (*fp_jcc_2_387, *fp_jcc_5_387, *fp_jcc_6_387): Ditto.
23097         (*fp_jcc_7_387, *fp_jcc_8<mode>_387): Ditto.
23098         (unnamed_splitters): Ditto.
23099         * config/i386/i386.c (output_fix_trunc): Assert that
23100         we're not being passed a TFmode operand.
23101
23102 2007-04-10  Zdenek Dvorak  <dvorakz@suse.cz>
23103
23104         PR tree-optimization/31526
23105         * tree-inline.c (copy_cfg_body): Use last_basic_block instead of
23106         n_basic_blocks to find newly added blocks.
23107
23108 2007-04-10  Uros Bizjak  <ubizjak@gmail.com>
23109
23110         * config/i386/i386.md (fix_trunc<mode>di_sse): Remove "x" from "xm"
23111         alternative.
23112         (fix_trunc<mode>si_sse): Ditto.
23113         (*floatsisf2_mixed, *floatsisf2_sse): Ditto.
23114         (*floatsidf2_mixed, *floatsidf2_sse): Ditto.
23115         (*floatdisf2_mixed, *floatdisf2_sse): Ditto.
23116         (*floatdidf2_mixed, *floatdidf2_sse): Ditto.
23117         (floathi<mode>2): Rename from floathisf2 and floathidf2. Macroize
23118         expander using SSEMODEF mode macro.
23119         (floatsi<mode>2): Rename from floatsisf2 and floashidf2. Macroize
23120         expander using SSEMODEF mode macro.
23121         (*floathi<mode>2_i387): Rename from *floathisf2_i387 and
23122         *floathidf2_i387. Macroize insn using X87MODEF12 mode macro.
23123         (*floatsi<mode>2_i387): Rename from *floatsisf2_i387 and
23124         *floatsidf2_i387. Macroize insn using X87MODEF12 mode macro.
23125         (*floatdi<mode>2_i387): Rename from *floatdisf2_i387 and
23126         *floatdidf2_i387. Macroize insn using X87MODEF12 mode macro.
23127         (float<mode>xf2): Rename from floathixf2, floatsixf2 and floatdixf2.
23128         Macroize insn using X87MODEF mode macro.
23129
23130 2007-04-09  H.J. Lu  <hongjiu.lu@intel.com>
23131
23132         * config/i386/sse.md (sse2_pinsrw): Removed.
23133         (sse2_pextrw): Renamed to ...
23134         (*sse2_pextrw): This.
23135
23136 2007-04-09  Jan Hubicka  <jh@suse.cz>
23137
23138         PR target/27869
23139         * config/i386/sse.md
23140         (sse_vmaddv4sf3, sse_vmmulv4sf3): Remove '%' modifier.
23141         (sse_vmsmaxv4sf3_finite, sse_vmsminv4sf3_finite): Remove.
23142         (sse2_vmaddv2df3, sse2_vmmulv2df3): Remove '%' modifier.
23143         (sse2_vmsmaxv2df3_finite, sse2_vmsminv2df3_finite): Remove.
23144
23145 2007-04-09  Jan Hubicka  <jh@suse.cz>
23146
23147         * tree-ssa-ccp (maybe_fold_offset_to_component_ref): Recurse into
23148         multiple fields of union.
23149
23150 2007-04-09  Zdenek Dvorak  <dvorakz@suse.cz>
23151
23152         * cfgloopmanip.c (create_preheader): Do not use loop_preheader_edge.
23153         (create_preheaders): Check that loops are available.
23154         (fix_loop_structure): Clean up, improve comments.
23155         * tree-ssa-loop-manip.c (rewrite_into_loop_closed_ssa):
23156         Check that loops are available.  Set LOOP_CLOSED_SSA to the loops
23157         state flags.
23158         * tree-scalar-evolution.c (scev_finalize): Clear scalar_evolution_info.
23159         * predict.c (tree_estimate_probability): Do not call
23160         calculate_dominance_info.  Call create_preheaders.
23161         * tree-cfgcleanup.c (cleanup_tree_cfg_loop): Only call
23162         rewrite_into_loop_closed_ssa if LOOP_CLOSED_SSA is set in loops state
23163         flags.
23164         * cfgloop.c (loop_preheader_edge): Assert that loops have preheaders.
23165         * cfgloop.h (LOOP_CLOSED_SSA): New constant.
23166         * tree-cfg.c (tree_split_edge): Make an assert more precise.
23167         * tree-ssa-threadedge.c (thread_across_edge): Comment the function
23168         arguments.
23169
23170 2007-04-08  Jan Hubicka  <jh@suse.cz>
23171
23172         * tree.h (maybe_fold_offset_to_component_ref): Declare.
23173         * tree-ssa-ccp.c (maybe_fold_offset_to_component_ref): Export.
23174         * fold-const.c (fold_unary): Use it.
23175
23176 2007-04-08  Andrew Pinski  <andrew_pinski@playstation.sony.com>
23177
23178         * varasm.c (assemble_variable): Remove call to
23179         lang_hooks.decls.prepare_assemble_variable.
23180         * langhooks-def.h (LANG_HOOKS_PREPARE_ASSEMBLE_VARIABLE): Kill.
23181         (LANG_HOOKS_DECLS): Remove LANG_HOOKS_PREPARE_ASSEMBLE_VARIABLE.
23182         * langhooks.h (lang_hooks_for_decls): Remove
23183         prepare_assemble_variable.
23184
23185 2007-04-08  Mike Stump  <mrs@apple.com>
23186
23187         * config/i386/i386.c: Use inc/dec on Core2.
23188
23189 2007-04-08  Steven Bosscher  <steven@gcc.gnu.org>
23190
23191         * langhooks.c (lhd_tree_inlining_add_pending_fn_decls,
23192         lhd_tree_inlining_anon_aggr_type_p, lhd_tree_inlining_start_inlining,
23193         lhd_tree_inlining_end_inlining): Remove.
23194         * langhooks.h (struct lang_hooks_for_tree_inlining): Remove then
23195         add_pending_fn_decls, anon_aggr_type_p, start_inlining, and
23196         end_inlining hooks.
23197         * langhooks-def.h (lhd_tree_inlining_add_pending_fn_decls,
23198         lhd_tree_inlining_anon_aggr_type_p, lhd_tree_inlining_start_inlining,
23199         lhd_tree_inlining_end_inlining): Remove prototypes.
23200         (LANG_HOOKS_TREE_INLINING_ADD_PENDING_FN_DECLS,
23201         LANG_HOOKS_TREE_INLINING_ANON_AGGR_TYPE_P,
23202         LANG_HOOKS_TREE_INLINING_START_INLINING,
23203         LANG_HOOKS_TREE_INLINING_END_INLINING): Remove.
23204
23205         * c-objc-common.h (LANG_HOOKS_TREE_INLINING_ANON_AGGR_TYPE_P): Do
23206         not set it.
23207
23208 2007-04-08  Anatoly Sokolov <aesok@post.ru>
23209
23210         PR target/29932
23211         * config/avr/predicates.md (io_address_operand): Delete predicate.
23212         (low_io_address_operand): Don't use 'mode' argument.
23213         (higth_io_address_operand): Rename ...
23214         (high_io_address_operand): ... to this. Don't use 'mode' argument.
23215         * config/avr/avr.md (*sbix_branch_tmp, *sbix_branch_tmp_bit7): Adjust
23216         for above change.
23217
23218 2007-04-07  Daniel Berlin  <dberlin@dberlin.org>
23219
23220         Revert change removing staticp.
23221
23222 2007-04-07  Anatoly Sokolov <aesok@post.ru>
23223
23224         PR target/30289
23225         * config/avr/avr.md (*clrmemqi, *clrmemhi): Mark operand 4 as
23226         earlyclobber.
23227
23228 2007-04-07  Bruce Korb  <bkorb@gnu.org>
23229
23230         * c.opt: Add -Wformat-contains-nul.
23231         * c-format.c (set_Wformat): Set warn_format_contains_nul to the
23232           -Wformat setting.
23233         (check_format_info_main): Check OPT_Wformat_contains_nul before emitting
23234         the NUL byte warning.
23235
23236 2007-04-07  H.J. Lu  <hongjiu.lu@intel.com>
23237
23238         * config/i386/i386.c (ix86_handle_option): Handle SSSE3.
23239
23240 2007-04-06  Daniel Berlin  <dberlin@dberlin.org>
23241
23242         * tree.c (staticp): No longer use staticp langhook.
23243         * langhooks.c (lhd_staticp): Removed.
23244         * langhooks.h (struct lang_hooks): Remove staticp.
23245         * c-common.c (c_staticp): Remove.
23246         * c-common.h (c_staticp): Ditto.
23247         * langhooks-defs.h (lhd_staticp): Ditto.
23248         (LHD_HOOKS_STATICP): Ditto
23249         * tree.h (gcc_assert_lowered): New macro.
23250
23251 2007-04-06  Zdenek Dvorak  <dvorakz@suse.cz>
23252
23253         * tree-ssa-loop-niter.c (idx_infer_loop_bounds): Add and use
23254         argument "reliable".
23255         (infer_loop_bounds_from_ref, infer_loop_bounds_from_array):
23256         Add argument "reliable".  Propagate it through calls.
23257         (infer_loop_bounds_from_undefined): Derive number of iterations
23258         estimates from references in blocks that do not dominate loop latch.
23259         (gcov_type_to_double_int): New function.
23260         (estimate_numbers_of_iterations_loop): Use gcov_type_to_double_int
23261         and expected_loop_iterations_unbounded.
23262         * cfgloopanal.c (expected_loop_iterations_unbounded): New function.
23263         (expected_loop_iterations): Use expected_loop_iterations_unbounded.
23264         * tree-data-ref.c (estimated_loop_iterations): Export.
23265         (get_references_in_stmt): Fix -- do not return addresses of local
23266         objects.
23267         * cfgloop.h (expected_loop_iterations_unbounded,
23268         estimated_loop_iterations): Declare.
23269
23270 2007-04-06  Andreas Tobler  <a.tobler@schweiz.org>
23271
23272         * tree-sra.c (sra_build_elt_assignment): Initialize min/maxshift.
23273
23274 2007-04-06  Uros Bizjak  <ubizjak@gmail.com>
23275
23276         * config/i386/i386.md (extend<mode>xf2): Rename from extendsfxf2
23277         and extenddfxf2. Macroize expander using X87MODEF12 mode macro.
23278         (*truncdfsf_mixed, *truncdfsf_i387, *truncdfsf2_i387_1):
23279         Use output_387_reg_move().
23280         (*truncxf<mode>2): Rename from *truncxfsf2 and truncxfdf2. Macroize
23281         expander using X87MODEF12 mode macro.
23282         (*truncxfsf2_mixed): Combine alternatives, ignore "r" alternative when
23283         choosing register preferences.  Use output_387_reg_move().
23284         (*truncxfdf2_mixed): Combine alternatives, use "r" alternative
23285         instead of "x".  Use output_387_reg_move().
23286         (*truncxf<mode>2_i387_noop): Rename from *truncxfsf2_i387_noop and
23287         *truncxfdf2_i387_noop.  Macroize insn using X87MODEF12 mode macro.
23288         (*truncxf<mode>2_i387): Rename from *truncxfsf2_i387 and
23289         *truncxfdf2_i387.  Macroize insn using X87MODEF12 mode macro.
23290         Use output_387_reg_move().
23291         (*truncxf?f_mixed splitter): Macroize splitter using X87MODEF12
23292         mode macro.
23293         (*truncxf?f_i387 splitter): Ditto.
23294
23295 2007-04-06  Daniel Berlin  <dberlin@dberlin.org>
23296
23297         * langhooks-def.h (LANG_HOOKS_INITIALIZER): Remove
23298         LANG_HOOKS_SAFE_FROM_P.
23299         * expr.c (safe_from_p): Remove langhook call.
23300         * langhooks.h (lang_hooks): Remove safe_from_p.
23301         (lhd_safe_from_p): Remove prototype.
23302         * langhooks.c (lhd_safe_from_p): Remove.
23303
23304 2007-04-06  Jan Hubicka  <jh@suse.cz>
23305
23306         * cgraphunit.c (decide_is_function_needed): Do not keep always_inline
23307         functions.
23308
23309 2007-04-06  Uros Bizjak  <ubizjak@gmail.com>
23310
23311         * config/i386/i386.c (output_387_reg_move): Handle memory operand[0].
23312         * config/i386/i386.md (*movsf_1, *movdf_nointeger,
23313         *movdf_integer_rex64, *movdf_integer, *movxf_nointeger,
23314         *movxf_integer): Use output_387_reg_move() for x87 reg->mem
23315         alternative.
23316         (*extendsfdf2_mixed, *extendsfdf2_i387, *extendsfxf2_i387,
23317         *extenddfxf2_i387, *truncdfsf_fast_mixed): Ditto.
23318
23319 2007-04-05  Richard Henderson  <rth@redhat.com>
23320
23321         * config/alpha/alpha.c (print_operand) [+]: Remove.
23322         (alpha_end_function): Print nop if call at end of function.
23323         * config/alpha/alpha.h (PRINT_OPERAND_PUNCT_VALID_P): Remove +.
23324         * config/alpha/alpha.md (UNSPEC_LDGP1): New.
23325         (call_osf_1_er_noreturn, call_value_osf_1_er_noreturn): New.
23326         (call_osf_2_er_nogp, call_value_osf_2_er_nogp): New.
23327         (call_osf_2_er, call_value_osf_2_er): Merge the ldgp highpart into
23328         the call pattern. Update peepholes to match.
23329
23330 2007-04-05  Janis Johnson  <janis187@us.ibm.com>
23331
23332         * doc/extend.texi (Other Builtins): Add decimal float variants
23333         of signbit.
23334         * builtins.def: Ditto.
23335         * builtins.c (expand_builtin): Ditto.
23336
23337 2007-04-05  Uros Bizjak  <ubizjak@gmail.com>
23338             H.J. Lu  <hongjiu.lu@intel.com>
23339
23340         PR target/31478
23341         * config/i386/sse.md (sse2_umulv2siv2di3): Use V4SImode instead
23342         of V8HImode when calling ix86_binary_operator_ok.
23343         (sse2_pmaddwd): Call ix86_binary_operator_ok.
23344         (sdot_prodv8hi): Operands 1 and 2 must be register.
23345
23346 2007-04-05  Alexandre Oliva  <aoliva@redhat.com>
23347
23348         * tree-sra.c (try_instantiate_multiple_fields): Needlessly
23349         initialize align to silence bogus warning.
23350
23351 2007-04-05  Alexandre Oliva  <aoliva@redhat.com>
23352
23353         PR middle-end/22156
23354         * tree-sra.c (struct sra_elt): Add in_bitfld_block.  Remove
23355         all_no_warning.
23356         (struct sra_walk_fns): Remove use_all parameter from use.
23357         (sra_hash_tree): Handle BIT_FIELD_REFs.
23358         (sra_elt_hash): Don't hash bitfld blocks.
23359         (sra_elt_eq): Skip them in parent compares as well.  Handle
23360         BIT_FIELD_REFs.
23361         (sra_walk_expr): Don't maintain or pass down use_all_p.
23362         (scan_use): Remove use_all parameter.
23363         (scalarize_use): Likewise.  Re-expand assignment to
23364         BIT_FIELD_REF of gimple_reg.  De-scalarize before input or
23365         output, and re-scalarize after output.  Don't mark anything
23366         for no warning.
23367         (scalarize_ldst): Adjust.
23368         (scalarize_walk_gimple_modify_statement): Likewise.
23369         (build_element_name_1): Handle BIT_FIELD_REFs.
23370         (instantiate_element): Don't warn for any element whose parent
23371         is used as a whole.
23372         (instantiate_missing_elements_1): Return the sra_elt.
23373         (canon_type_for_field): New.
23374         (try_instantiate_multiple_fields): New.
23375         (instantiate_missing_elemnts): Use them.
23376         (mark_no_warning): Removed.
23377         (generate_one_element_ref): Handle BIT_FIELD_REFs.
23378         (REPLDUP, sra_build_elt_assignment): New.
23379         (generate_copy_inout): Use them.
23380         (generate_element_copy): Likewise.  Handle bitfld differences.
23381         (generate_element_zero): Don't recurse for blocks.  Use
23382         sra_build_elt_assignment.
23383         (generate_one_element_int): Take elt instead of var.  Use
23384         sra_build_elt_assignment.
23385         (generate_element_init_1): Adjust.
23386         (scalarize_use, scalarize_copy): Use REPLDUP.
23387         (scalarize_ldst): Move assert before dereference.
23388         (dump_sra_elt_name): Handle BIT_FIELD_REFs.
23389
23390 2007-04-05  Steven Bosscher  <steven@gcc.gnu.org>
23391
23392         * regmove.c: Fix unused variable warnings due to previous commit.
23393
23394 2007-04-05  Steven Bosscher  <steven@gcc.gnu.org>
23395
23396         * regmove.c (STACK_GROWS_DOWNWARD): Don't boolean-ize.
23397         (regmove_bb_head): Remove.
23398         (copy_src_to_dest): Don't update regmove_bb_head and BB_HEAD.
23399         (regmove_optimize): Don't do unnecessary CFG fixes for non-existing
23400         problems with fixup_match_1.
23401         Don't initialize/free regmove_bb_head.
23402
23403         (reg_is_remote_constant_p): If an insn is in the same basic block
23404         but not before INSN, consider it remote, too.
23405
23406 2007-04-05  Anatoly Sokolov <aesok@post.ru>
23407
23408         PR target/25448
23409         * config/avr/avr.c (avr_handle_fndecl_attribute): Use the
23410         DECL_ASSEMBLER_NAME, not the DECL_NAME.
23411
23412 2007-04-05  H.J. Lu  <hongjiu.lu@intel.com>
23413
23414         * config/i386/i386.h (TARGET_CPU_CPP_BUILTINS): Reformat.
23415         (CONDITIONAL_REGISTER_USAGE): Likewise.
23416
23417 2007-04-04  Richard Henderson  <rth@redhat.com>
23418
23419         * config/alpha/lib1funcs.asm: Remove unused file.
23420
23421 2007-04-04  Brooks Moses  <brooks.moses@codesourcery.com>
23422
23423         PR other/31356
23424         * opts.c (print_specific_help): Fix --help=<language>
23425         header line.
23426         (common_handle_option): Support --help=common.
23427
23428 2007-04-04  Brooks Moses  <brooks.moses@codesourcery.com>
23429
23430         PR other/31353
23431         * gcc.c (main): Do not run the linker if
23432         print_subprocess_help indicates that it shouldn't be
23433         run.
23434
23435 2007-04-04  Brooks Moses  <brooks.moses@codesourcery.com>
23436
23437         PR doc/31355
23438         * doc/invoke.texi (--help=): Document <languages> value, fix
23439         formatting in tables of values.
23440
23441 2007-04-04  Danny Smith  <dannysmith.users.sourceforge.net>
23442
23443         * config/i386/winnt-cxx.c (i386_pe_type_dllimport_p): Don't ignore
23444         dllimport attribute of virtual methods.
23445
23446 2007-04-04  Chen Liqin  <liqin@sunnorth.com.cn>
23447
23448         * config/score/crti.asm: Change _bss_start to __bss_start.
23449         * config/score/score.h (CONDITIONAL_REGISTER_USAGE): Added.
23450         (OUTGOING_REG_PARM_STACK_SPACE) update.
23451         * config/score/score.opt: add options to make backend support
23452         score5, score5u, score7 and score7d.
23453         * config/score/score.md: Likewise.
23454         * config/score/misc.md: Likewise.
23455         * config/score/mac.md: Likewise.
23456         * doc/invoke.texi: Likewise.
23457         * doc/md.texi: update constraints define.
23458
23459 2007-04-03  Richard Henderson  <rth@redhat.com>
23460
23461         * expr.c (store_expr): If get_signed_or_unsigned_type doesn't yield
23462         an appropriate type, use the mode instead.
23463
23464 2007-04-03  Richard Sandiford  <richard@codesourcery.com>
23465
23466         * config.gcc (mips-wrs-vxworks): Add vx-common.h to tm_file.
23467         Set the default --with-arch setting to mips2.
23468         * config/mips/t-vxworks (MULTILIB_OPTIONS, MULTILIB_MATCHES)
23469         (MULTILIB_EXCEPTIONS): Redefine with new multilibs.
23470         (MULTILIB_OSDIRNAMES): Delete.
23471         (MULTILIB_DIRNAMES): Define.
23472         * config/mips/vxworks.h (LINK_SPEC): Add VXWORKS_LINK_SPEC.
23473         (LIB_SPEC, STARTFILE_SPEC, ENDFILE_SPEC): Define.
23474         (TARGET_OS_CPP_BUILTINS): Incorporate old SUBTARGET_CPP_SPEC
23475         definitions, except for _WRS_R3K_EXC_SUPPORT.  Call
23476         VXWORKS_OS_CPP_BUILTINS.
23477         (SUBTARGET_CPP_SPEC): Redefine to VXWORKS_ADDITIONAL_CPP_SPEC.
23478         (MIPS_DEBUGGING_INFO): Undefine.
23479         (FUNCTION_PROFILER): Define to VXWORKS_FUNCTION_PROFILER.
23480
23481 2007-04-03  Jakub Jelinek  <jakub@redhat.com>
23482
23483         PR middle-end/30704
23484         * fold-const.c (native_encode_real): Encode real.c provided longs
23485         as a series of 32-bit native integers.
23486         (native_interpret_real): Interpret buffer as a series of 32-bit
23487         native integers.
23488
23489 2007-04-03  Richard Guenther  <rguenther@suse.de>
23490
23491         * genpreds.c (write_insn_constraint_len): Write function
23492         optimized for CONSTRAINT_LEN implementation.
23493         (write_tm_preds_h): Output insn_constraint_len inline and
23494         use it for CONSTRAINT_LEN.
23495         (write_insn_preds_c): Don't output insn_constraint_len.
23496         * doc/md.texi (define_register_constraint): Document multi-letter
23497         constraints shall have the same length if they start with the same
23498         letter.
23499
23500 2007-04-03  Uros Bizjak  <ubizjak@gmail.com>
23501
23502         PR target/31175
23503         * config/i386/i386.md (isinf<mode>2): Expand only when
23504         TARGET_C99_FUNCTIONS is set.
23505
23506 2007-04-03  Uros Bizjak  <ubizjak@gmail.com>
23507
23508         * config.gcc (i[34567]86-*-linux*): Add i386/t-crtpc to tm-file.
23509         (x86_64-*-linux*): Ditto.
23510         * config/i386/i386.opt (mpc): New option.
23511         * config/i386/i386.c (overrride_options): Handle
23512         ix87_precision_string.
23513         * config/i386/crtprec.c: New file.
23514         * config/i386/t-crtpc: Ditto.
23515         * config/i386/linux.h (ENDFILE_SPEC): Add handling of -mpc32, -mpc64
23516         and -mpc80 options.
23517         * config/i386/linux64.h (ENDFILE_SPEC): Ditto.
23518         * config/i386/t-linux64 (EXTRA_MULTILIB_PARTS): Add
23519         crtprec32.o, crtprec64.o and crtprec80.o.
23520
23521         * doc/invoke.texi (Machine Dependent Options): Add -mpc32, -mpc64
23522         and -mpc80 options.
23523         (i386 and x86-64 Options): Document -mpc32, -mpc64 and -mpc80 options.
23524
23525 2007-04-02  Eric Christopher  <echristo@apple.com>
23526
23527         * doc/invoke.texi (i386 and x86-64 Options): Document -m64
23528         limitations on darwin.
23529
23530 2007-04-02  Anatoly Sokolov <aesok@post.ru>
23531
23532         PR target/31137
23533         * config/avr/avr.c (avr_rtx_costs): Add missing 'break' statements.
23534
23535 2007-04-02  Dave Korn  <dave.korn@artimi.com>
23536
23537         * doc/tm.texi (FUNCTION_MODE): Update and extend documentation.
23538
23539 2007-04-02  Dave Korn  <dave.korn@artimi.com>
23540
23541         * libgcc2.h (exception_descriptor): Don't forward-declare.
23542         (__get_eh_table_language, __get_eh_table_version): Delete
23543         prototypes of long-dead functions.
23544
23545 2007-04-01  Daniel Berlin  <dberlin@dberlin.org>
23546
23547         * ebitmap.h: New file
23548         * ebitmap.c: New file
23549         * Makefile.in (ebitmap.o): New target.
23550
23551 2007-04-01  Jan Hubicka  <jh@suse.cz>
23552
23553         * emit-rtl.c (emit_insn_before_setloc): Do not ICE when asked to emit
23554         before very first instruction.
23555
23556 2007-04-01  Jan Hubicka  <jh@suse.cz>
23557
23558         * ggc-page.c (ggc_print_statistics): Fix formatting string to avoid
23559         waring on 64bit hosts.
23560         * bitmap.h: Fix typo in bitmap_head_def.
23561
23562 2007-04-01  Steven Bosscher  <steven@gcc.gnu.org>
23563
23564         PR rtl-optimization/31391
23565         * cfgcleanup.c (try_optimize_cfg): If a removed label is turned
23566         into a DELETED_LABEL note, and the label is in an empty basic
23567         block, update BB_END as well as BB_HEAD.
23568
23569 2007-04-01  Richard Henderson  <rth@redhat.com>
23570
23571         PR tree-optimization/31169
23572         * tree-vrp.c (extract_range_from_binary_expr) <RSHIFT_EXPR>: Drop
23573         to varying if the range is outside [0,  prec-1].
23574
23575 2007-04-01  Richard Sandiford  <richard@codesourcery.com>
23576
23577         PR target/31388
23578         * config/mips/mips.md (load_const_gp): New insn.
23579         * config/mips/mips.c (mips_split_symbol): Avoid using or creating
23580         the MIPS16 GP pseudo register if no_new_pseudos.
23581         (mips16_gp_pseudo_reg): Use gen_load_const_gp.
23582
23583 2007-03-31  Andrew Pinski  <andrew_pinski@playstation.sony.com>
23584
23585         PR target/31364
23586         * config/rs6000/rs6000.md (call): Convert to LR hard reg for
23587         secureplt.
23588         (call_value): Likewise.
23589
23590 2007-03-31  Wolfgang Bangerth  <bangerth@dealii.org>
23591             Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
23592
23593         PR 14737
23594         * doc/invoke.texi: (optimization options): Reword description
23595         of -ffast-math. Document its primary purpose.
23596
23597 2007-03-31  Richard Guenther  <rguenther@suse.de>
23598
23599         * omp-low.c (splay-tree.h): Include.
23600         (lookup_decl): Replace splay-tree usage by pointer-map.
23601         (maybe_lookup_decl): Likewise.
23602         (new_omp_context): Likewise.
23603         (delete_omp_context): Likewise.
23604         * gimplify.c (splay-tree.h): Include.
23605         * tree-inline.c (insert_decl_map): Replace splay-tree usage by
23606         pointer-map.
23607         (remap_ssa_name): Likewise.
23608         (remap_decl): Likewise.
23609         (remap_type_1): Likewise.
23610         (remap_type): Likewise.
23611         (copy_body_r): Likewise.
23612         (expand_call_inline): Likewise.
23613         (clone_body): Likewise.
23614         (copy_tree_r): Likewise.
23615         (remap_save_expr): Likewise.
23616         (unsave_r): Likewise.
23617         (unsave_expr_now): Likewise.
23618         (tree_function_versioning): Likewise.
23619         (build_duplicate_type): Likewise.
23620         * tree-inline.h (pointer-set.h): Include instead of splay-tree.h.
23621         (struct copy_body_data): Replace splay-tree by pointer-map.
23622         * Makefile.in (TREE_INLINE_H): Depend on pointer-map.h,
23623         not $(SPLAY_TREE_H).
23624         (gimplify.o): Depend on $(SPLAY_TREE_H).
23625         (omp-low.p): Likewise.
23626
23627 2007-03-31  Anatoly Sokolov <aesok@post.ru>
23628
23629         * config/avr/predicates.md (even_register_operand,
23630         odd_register_operand): New predicates.
23631         * config/avr/avr.md (movw peephole2): New.
23632         (movw_r peephole2): New.
23633
23634 2007-03-30  Rafael Avila de Espindola  <espindola@google.com>
23635
23636         * tree.h (get_signed_or_unsigned_type): New.
23637         * fold-const.c (operand_equal_for_comparison_p): Use
23638         get_signed_or_unsigned_type instead of
23639         lang_hooks.types.signed_or_unsigned_type.
23640         * expr.c (store_expr): Ditto.
23641         * langhooks.c (get_signed_or_unsigned_type): New.
23642         (lhd_signed_or_unsigned_type): New.
23643         * langhooks.h (lhd_signed_or_unsigned_type): New.
23644         * langhooks-def.h (LANG_HOOKS_SIGNED_OR_UNSIGNED_TYPE): Define.
23645
23646 2007-03-30  Richard Henderson  <rth@redhat.com>
23647
23648         * tree-ssa-loop-ivopts.c: Include target.h.
23649         (produce_memory_decl_rtl): Pass the rtx through encode_section_info.
23650         (get_address_cost): Force SYMBOL_FLAG_LOCAL set.
23651         (force_expr_to_var_cost): Use produce_memory_decl_rtl.
23652         * Makefile.in (tree-ssa-loop-ivopts.o): Depend on TARGET_H.
23653
23654 2007-03-30  Richard Henderson  <rth@redhat.com>
23655             Kai Tietz  <kai.tietz@onevision.com>
23656
23657         * config/i386/cygming.h (DWARF2_DEBUGGING_INFO): Enable by
23658         default for 64-bit.
23659         (PREFERRED_DEBUGGING_TYPE): Prefer dwarf2 for 64-bit.
23660         (TARGET_64BIT_MS_ABI): New.
23661         (DBX_REGISTER_NUMBER): Handle 64-bit.
23662         (SIZE_TYPE, PTRDIFF_TYPE): Use long long for 64-bit.
23663         (LONG_TYPE_SIZE): Force to 32.
23664         (REG_PARM_STACK_SPACE): New.
23665         (OUTGOING_REG_PARM_STACK_SPACE): New.
23666         (REGPARM_MAX, SSE_REGPARM_MAX): New.
23667         (HANDLE_PRAGMA_PUSH_POP_MACRO): New.
23668         (STACK_BOUNDARY): Use 128 for 64-bit.
23669         * config/i386/cygwin.asm: Use push/ret to preserve call stack.
23670         Add 64-bit implementation.
23671         * config/i386/gthr-win32.c (__gthr_win32_key_create): Mark dtor
23672         argument unused.
23673         * config/i386/i386.c (x86_64_ms_abi_int_parameter_registers): New.
23674         (override_options): Set ix86_cmodel for TARGET_64BIT_MS_ABI.
23675         Warn for -mregparm, -mrtd in 64-bit mode; force ix86_regparm
23676         for 64-bit; use TARGET_SUBTARGET64_DEFAULT.
23677         (ix86_handle_cconv_attribute): Don't warn when ignoring if
23678         TARGET_64BIT_MS_ABI.
23679         (ix86_function_arg_regno_p): Handle TARGET_64BIT_MS_ABI.
23680         (ix86_pass_by_reference): Likewise.
23681         (ix86_function_value_regno_p): Likewise.
23682         (ix86_build_builtin_va_list): Likewise.
23683         (ix86_va_start, ix86_gimplify_va_arg): Likewise.
23684         (function_arg_advance_ms_64): New.
23685         (function_arg_advance): Call it.
23686         (function_arg_ms_64): New.
23687         (function_arg): Call it.
23688         (function_value_ms_64): New.
23689         (ix86_function_value_1): Call it.
23690         (return_in_memory_ms_64): New.
23691         (ix86_return_in_memory): Call it.
23692         (setup_incoming_varargs_ms_64): New.
23693         (ix86_setup_incoming_varargs): Call it.
23694         (ix86_expand_prologue): Handle 64-bit stack probing.
23695         (legitimize_pic_address): Handle TARGET_64BIT_MS_ABI.
23696         (output_pic_addr_const): Likewise.
23697         (x86_this_parameter): Likewise.
23698         (x86_output_mi_thunk): Likewise.
23699         (x86_function_profiler): Likewise.
23700         (TARGET_STRICT_ARGUMENT_NAMING): New.
23701         * config/i386/i386.h (TARGET_SUBTARGET64_DEFAULT): New.
23702         (TARGET_64BIT_MS_ABI): New.
23703         (CONDITIONAL_REGISTER_USAGE): Handle TARGET_64BIT_MS_ABI.
23704         * config/i386/i386.md (allocate_stack_worker): Remove.
23705         (allocate_stack_worker_32): Rename from allocate_stack_worker_1;
23706         describe the clobber of eax without a match_scratch.
23707         (allocate_stack_worker_postreload): Remove.
23708         (allocate_stack_worker_64): Rename from allocate_stack_worker_rex64;
23709         describe the clobbers of rax, r10, r11 properly; use __chkstk symbol.
23710         (allocate_stack_worker_rex64_postreload): Remove.
23711         (allocate_stack): Handle 64-bit.
23712         * config/i386/i386elf (TARGET_SUBTARGET_DEFAULT): Remove.
23713         * config/i386/mingw32.h (TARGET_VERSION): Set correctly for 64-bit.
23714         (EXTRA_OS_CPP_BUILTINS): Handle 64-bit.
23715         (STANDARD_INCLUDE_DIR): Handle TARGET_64BIT_DEFAULT.
23716         (STANDARD_STARTFILE_PREFIX_1): Likewise.
23717         * config/i386/unix.h (TARGET_SUBTARGET64_DEFAULT): New.
23718         * config.build (x86_64-*-mingw*): New host.
23719         * config.host (x86_64-*-mingw*): New host.
23720         * config.gcc (x86_64-*-mingw*): New target.
23721         * gthr-win32.h (__gthread_key_create): Mark dtor unused.
23722
23723 2007-03-30  Richard Henderson  <rth@redhat.com>
23724             Kai Tietz  <kai.tietz@onevision.com>
23725
23726         * c-pragma.c (struct def_pragma_macro_value): New.
23727         (struct def_pragma_macro): New.
23728         (pushed_macro_table): New.
23729         (dpm_hash, dpm_eq): New.
23730         (handle_pragma_push_macro, handle_pragma_pop_macro): New.
23731         (init_pragma): Install them.
23732         * doc/tm.texi (HANDLE_PRAGMA_PUSH_POP_MACRO): New.
23733
23734 2007-03-30  Anatoly Sokolov <aesok@post.ru>
23735
23736         * config/avr/avr.c (avr_override_options): Clear
23737         'flag_delete_null_pointer_checks'.
23738
23739 2007-03-30  Paolo Carlini  <pcarlini@suse.de>
23740
23741         PR c++/26099
23742         * c-common.h (enum rid): Add RID_HAS_NOTHROW_ASSIGN,
23743         RID_HAS_NOTHROW_CONSTRUCTOR, RID_HAS_NOTHROW_COPY,
23744         RID_HAS_TRIVIAL_ASSIGN, RID_HAS_TRIVIAL_CONSTRUCTOR,
23745         RID_HAS_TRIVIAL_COPY, RID_HAS_TRIVIAL_DESTRUCTOR,
23746         RID_HAS_VIRTUAL_DESTRUCTOR, RID_IS_ABSTRACT, RID_IS_BASE_OF,
23747         RID_IS_CONVERTIBLE_TO, RID_IS_CLASS, RID_IS_EMPTY, RID_IS_ENUM,
23748         RID_IS_POD, RID_IS_POLYMORPHIC, RID_IS_UNION, as
23749         C++ extensions.
23750         * doc/extend.texi (Extensions to the C++ Language): Add Type Traits.
23751
23752 2007-03-30  Steven Bosscher  <steven@gcc.gnu.org>
23753
23754         * regmove.c: Move all of pass_stack_adjustments from here...
23755         * combine-stack-adj.c: ...to this new file.
23756         * Makefile.in: Add rules for combine-stack-adj.o.
23757
23758 2007-03-30  Zdenek Dvorak  <dvorakz@suse.cz>
23759
23760         PR tree-optimization/31383
23761         * tree-data-ref.c (affine_function_equal_p): Do not require the
23762         vectors to have the same length.
23763
23764 2007-03-30  Jan Hubicka  <jh@suse.cz>
23765
23766         PR middle-end/30700
23767         * dwarf2out.c (reference_to_unused): Ask cgraph for functions
23768         availablility; add more sanity checking; ask varpool only about
23769         VAR_DECL.
23770
23771 2007-03-29  Richard Henderson  <rth@redhat.com>
23772
23773         * unwind-generic.h (_sleb128_t, _uleb128_t): Don't use HAVE_LONG_LONG
23774         to decide, but __SIZEOF_LONG_LONG__.
23775
23776 2007-03-29  Richard Henderson  <rth@redhat.com>
23777
23778         * emutls.c (struct __emutls_array): New.
23779         (emutls_destroy): Use it instead of casting element 0 from void*.
23780         (__emutls_get_address): Likewise.
23781
23782 2007-03-29  Richard Henderson  <rth@redhat.com>
23783
23784         * varasm.c (initializer_constant_valid_p): Don't deny
23785         DECL_DLLIMPORT_P on functions.
23786
23787         * config/i386/cygming.h: Remove function declarations.
23788         (SUBTARGET_ENCODE_SECTION_INFO): Don't undef first.
23789         (ASM_OUTPUT_LABELREF): Remove.
23790         (COMMON_ASM_OP): Remove.
23791         (ASM_OUTPUT_COMMON): Remove.
23792         (ASM_OUTPUT_ALIGNED_DECL_COMMON): New.
23793         (ASM_DECLARE_OBJECT_NAME): Use i386_pe_maybe_record_exported_symbol.
23794         (ASM_DECLARE_FUNCTION_NAME): Likewise.
23795         * config/i386/i386-interix.h (SUBTARGET_ENCODE_SECTION_INFO):
23796         Rename from TARGET_ENCODE_SECTION_INFO.
23797         * config/i386/netware.h: Likewise.
23798         * config/i386/i386-protos.h: Update.
23799         * config/i386/i386.c (ix86_function_ok_for_sibcall): Turn ifdef
23800         of TARGET_DLLIMPORT_DECL_ATTRIBUTES into straight if.
23801         (legitimate_constant_p): Reject dllimports.
23802         (dllimport_map, get_dllimport_decl): New.
23803         (legitimize_dllimport_symbol): New.
23804         (legitimize_address, ix86_expand_move): Use it.
23805         (TARGET_BINDS_LOCAL_P): Redefine for TARGET_DLLIMPORT_DECL_ATTRIBUTES.
23806         * config/i386/i386.h (DLL_IMPORT_EXPORT_PREFIX): Remove.
23807         (SYMBOL_FLAG_DLLIMPORT, SYMBOL_REF_DLLIMPORT_P): New.
23808         (SYMBOL_FLAG_DLLEXPORT, SYMBOL_REF_DLLEXPORT_P): New.
23809         * config/i386/predicates.md (constant_call_address_operand): Only
23810         accept symbols; reject dllimport_p symbols.
23811         * config/i386/uwin.h (ASM_DECLARE_FUNCTION_NAME): Use
23812         i386_pe_maybe_record_exported_symbol.
23813         * config/i386/winnt.c (DLL_IMPORT_PREFIX, DLL_EXPORT_PREFIX): Remove.
23814         (i386_pe_determine_dllexport_p): Rename from i386_pe_dllexport_p.
23815         (i386_pe_determine_dllimport_p): Rename from i386_pe_dllimport_p;
23816         trust the setting of DECL_DLLIMPORT_P.
23817         (i386_pe_dllexport_name_p, i386_pe_dllimport_name_p): Remove.
23818         (i386_pe_mark_dllexport, i386_pe_mark_dllimport): Remove.
23819         (gen_stdcall_or_fastcall_suffix): Return NULL if no change required;
23820         tidy the argument scanning loop.
23821         (i386_pe_encode_section_info): Set SYMBOL_FLAG_DLLIMPORT and
23822         SYMBOL_FLAG_DLLEXPORT in SYMBOL_REF_FLAGS.
23823         (i386_pe_strip_name_encoding): Remove.
23824         (i386_pe_binds_local_p): New.
23825         (i386_pe_strip_name_encoding_full): Use default_strip_name_encoding.
23826         (i386_pe_output_labelref): Remove.
23827         (i386_pe_asm_output_aligned_decl_common): New.
23828         (i386_pe_maybe_record_exported_symbol): Rename from
23829         i386_pe_record_exported_symbol; check for dllexported symbols.
23830
23831 2007-03-29  Zack Weinberg  <zack@mrtock.ucsd.edu>
23832
23833         * gengtype.c (oprintf): Mostly revert changes from 2007-03-26;
23834         add comment explaining why vsnprintf cannot be used.
23835
23836 2007-03-29  Douglas Gregor  <doug.gregor@gmail.com>
23837
23838         PR tree-optimization/30666
23839         * tree.c (build_complex_type): When creating type names for DWARF2
23840         debug info, create TYPE_DECLs for TYPE_NAME instead of
23841         IDENTIFIER_NODEs.
23842         (build_common_tree_nodes_2): Use build_complex_type when building
23843         predefined complex types, to preserve canonical types.
23844
23845 2007-03-29  Steven Bosscher  <steven@gcc.gnu.org>
23846
23847         * ifcvt.c (struct noce_if_info): Add then_else_reversed field.
23848         (noce_get_alt_condition): Look at it to determine whether to
23849         reverse the condition or not.
23850         (noce_get_condition): Substitute the truth for lies.
23851         (noce_find_if_block): Set the then_else_reversed field.
23852
23853 2007-03-29  Lars Poeschel <larsi@wh2.tu-dresden.de>
23854
23855         * config/fr30/fr30.md (movdi): Do not accept immediates as the
23856         destination of this insn.
23857         * config/fr30/fr30.c (fr30_move_double): Use emit_move_insn rather
23858         than calling gen_rtx_SET directly.  Use r0 to hold the value of
23859         'address + 4' rather than a stack based temporary which can be
23860         mis-optimized away.
23861
23862 2007-03-29  Andreas Krebbel  <krebbel1@de.ibm.com>
23863
23864         * config/s390/s390.c (s390_secondary_input_reload_class,
23865         s390_secondary_output_reload_class): Functions removed.
23866         (s390_secondary_reload): New function.
23867         (TARGET_SECONDARY_RELOAD): Target macro defined.
23868         * config/s390/s390.h (SECONDARY_INPUT_RELOAD_CLASS,
23869         SECONDARY_OUTPUT_RELOAD_CLASS): Macro definitions removed.
23870         * config/s390/s390.md ("reload_outti", "reload_outdi",
23871         "reload_indi", "reload_insi", "reload_out<mode>", "reload_in<mode>",
23872         "reload_out<mode>"): Expanders removed.
23873         ("reload<mode>_plus", "reload<mode>_nonoffmem_in",
23874         "reload<mode>_nonoffmem_out"): Expanders added.
23875
23876 2007-03-29  Andreas Krebbel  <krebbel1@de.ibm.com>
23877
23878         * regmove.c (optimize_reg_copy_1): Don't perform DEST->SRC repair
23879         action if SRC->DEST replacement failed anyway.
23880
23881 2007-03-28  Mike Stump  <mrs@apple.com>
23882
23883         * config/darwin9.h (ASM_OUTPUT_ALIGNED_COMMON): Add.
23884         * config/darwin.h (MAX_OFILE_ALIGNMENT): Fix.
23885         * config/rs6000/darwin.h (ASM_OUTPUT_ALIGNED_COMMON): Removed #undef.
23886
23887 2007-03-28  Dwarakanath Rajagopal  <dwarak.rajagopal@amd.com>
23888
23889         * config.gcc: Accept barcelona as a variant of amdfam10.
23890         * config/i386/i386.c (override_options): Likewise.
23891         * doc/invoke.texi: Likewise.
23892
23893 2007-03-28  Eric Botcazou  <ebotcazou@adacore.com>
23894
23895         * tree-dfa.c (get_ref_base_and_extent): Do not expect positive
23896         offsets for BIT_FIELD_REF and COMPONENT_REF.
23897
23898 2007-03-28  Richard Guenther  <rguenther@suse.de>
23899
23900         * tree.c (is_global_var): Move ...
23901         * tree-flow-inline.h (is_global_var): ... here.
23902         * tree.h (is_global_var): Remove declaration.
23903
23904 2007-03-28  Uros Bizjak  <ubizjak@gmail.com>
23905
23906         * config/i386/i386.h (X86_TUNE_PROMOTE_HIMODE_IMUL): New tuning
23907         option.
23908         (TARGET_TUNE_PROMOTE_HIMODE_IMUL): New define. Use new tuning option.
23909         * config/i386/i386.c (ix86_tune_features): Initialize new
23910         tuning option.
23911         * config/i386/predicates.md (promotable_binary_operator): Use
23912         TARGET_TUNE_PROMOTE_HIMODE_IMUL.
23913
23914 2007-03-28  Grigory Zagorodnev <grigory_zagorodnev@linux.intel.com>
23915
23916         PR target/31380
23917         * config/i386/sse.md (uminv16qi3): Use UMIN instead of UMAX.
23918
23919 2007-03-28  Lars Poeschel <larsi@wh2.tu-dresden.de>
23920
23921         * config/fr30/fr30.md (movsi_internal): Change destination
23922         constraint from m to V and add m to the end.
23923
23924 2007-03-28  Christian Bruel  <christian.bruel@st.com>
23925
23926         * config/sh/sh.md (movsi_i): Fix type attribute.
23927
23928 2007-03-28  Christian Bruel  <christian.bruel@st.com>
23929
23930         * config/sh/sh.md (movsi_ie): Fix memory constraints attribute length.
23931         (movsf_ie): Likewise.
23932
23933 2007-03-28  Christian Bruel  <christian.bruel@st.com>
23934
23935         * config.gcc: Add sh4-300 to multilib.
23936         * config/sh/t-mlib-sh4-300: New file.
23937
23938 2007-03-28  Andreas Krebbel  <krebbel1@de.ibm.com>
23939
23940         * config/s390/s390.md ("fix_trunc<mode>di2"): New expander.
23941         ("fix_trunc<DFP:mode>di2_dfp"): New insn definition renamed from
23942         fix_trunc<mode>di2.
23943         ("fixuns_truncdddi2", "fixuns_trunctddi2"): Use
23944         fix_trunc<DFP:mode>di2_dfp instead of fix_trunc<mode>di2.
23945         ("fix_truncdfsi2", "fix_truncsfsi2", "fixuns_truncdddi2",
23946         "fixuns_trunctddi2"): Whitespace fix.
23947
23948 2007-03-28  Kaz Kojima  <kkojima@gcc.gnu.org>
23949
23950         * config/sh/sh.h (CALL_COOKIE_RET_TRAMP_SHIFT): Move after
23951         the definition of struct sh_args.
23952         (CALL_COOKIE_RET_TRAMP, CALL_COOKIE_STACKSEQ_SHIFT,
23953         CALL_COOKIE_INT_REG_GET): Likewise.
23954
23955 2007-03-28  Steven Bosscher  <steven@gcc.gnu.org>
23956
23957         * ifcvt.c (cond_exec_find_if_block): Return FALSE if no
23958         transformations are applied successfully.
23959
23960 2007-03-27  Douglas Gregor  <doug.gregor@gmail.com>
23961
23962         * tree.c (tree_contains_struct): Permit 512 tree codes.
23963         * tree.h (tree_contains_struct): Ditto.
23964         (MAX_TREE_CODES): Ditto.
23965         (struct tree_base): Make CODE 16 bits, instead of 8 bits. Add
23966         SPARE member to store remaining padding bits.
23967
23968 2007-03-27  Anatoly Sokolov <aesok@post.ru>
23969
23970         * config/avr/avr.c (avr_mcu_types): Move at90usb82 device to 'avr4'
23971         architecture.
23972
23973 2007-03-27  Janis Johnson  <janis187@us.ibm.com>
23974
23975         * configure.ac: Fix assembler test for powerpc*-linux decimal float.
23976         * configure: Regenerate.
23977
23978         * configure: Regenerate using the correct version of autoconf.
23979
23980 2007-03-27  Anatoly Sokolov  <aesok@post.ru>
23981
23982         * config/avr/avr.c (avr_hard_regno_mode_ok): Disallow QImode in stack
23983         pointer regs.
23984         * config/avr/avr.h (REGISTER_NAMES): Rename "__SPL__" and "__SPH__"
23985         regs to "__SP_L__" and "__SP_H__".
23986
23987 2007-03-27  Richard Guenther  <rguenther@suse.de>
23988
23989         * tree-dfa.c (get_ref_base_and_extent): Replace bit_offset and
23990         computations with it with a HOST_WIDE_INT variable.
23991
23992 2007-03-26  Mike Stump  <mrs@apple.com>
23993
23994         * config/rs6000/darwin.h (DARWIN_MINVERSION_SPEC): Add
23995         objective-c-header, objective-c++-header and objc++-cpp-output
23996         support.
23997         * config/i386/darwin.h (DARWIN_MINVERSION_SPEC): Likewise.
23998
23999 2007-03-26  Richard Henderson  <rth@redhat.com>
24000
24001         PR target/31361
24002         * config/i386/i386.c (IX86_BUILTIN_PSLLDQ128, IX86_BUILTIN_PSLLW128,
24003         IX86_BUILTIN_PSLLD128, IX86_BUILTIN_PSLLQ128, IX86_BUILTIN_PSRAW128,
24004         IX86_BUILTIN_PSRAD128, IX86_BUILTIN_PSRLW128, IX86_BUILTIN_PSRLD128,
24005         IX86_BUILTIN_PSRLQ128): New.
24006         (ix86_init_mmx_sse_builtins): Add them.
24007         (ix86_expand_builtin): Expand them.
24008         * config/i386/sse.md (ashr<mode>3, lshr<mode>3, ashl<mode>3): Make
24009         operand 2 be TImode.
24010         * config/i386/emmintrin.h (_mm_slli_epi64, _mm_srai_epi16,
24011         _mm_srai_epi32, _mm_srli_epi16, _mm_srli_epi32,
24012         _mm_srli_epi64): Mark __B const.
24013         (_mm_srli_si128, _mm_srli_si128): Fix disabled inline versions.
24014         (_mm_sll_epi16, _mm_sll_epi32, _mm_sll_epi64, _mm_sra_epi16,
24015         _mm_sra_epi32, _mm_srl_epi16, _mm_srl_epi32, _mm_srl_epi64): Use
24016         new two-vector shift builtins.
24017
24018 2007-03-26  Ian Lance Taylor  <iant@google.com>
24019
24020         PR tree-optimization/31345
24021         * tree-vrp.c (extract_range_from_binary_expr): Turn ranges like
24022         [+INF, +INF(OVF)] into VARYING.
24023
24024 2007-03-26  Zack Weinberg  <zackw@panix.com>
24025
24026         * gengtype-parse.c: New file.
24027         * gengtype-yacc.y: Delete.
24028         * gengtype-lex.l: Don't include gengtype-yacc.h.
24029         Define YY_DECL and yyterminate appropriately for recursive
24030         descent parser.  yylval is now a string out-parameter to yylex.
24031         (HWS, EOID): New shorthand.
24032         (IWORD): Add a couple more types.
24033         (yylex): Add a setup stanza.  Remove the complex rules for
24034         detecting GTY'ed types and typedefs; replace with simple
24035         keyword detectors.  Adjust everything for the changed
24036         definition of yylval.  Ignore all pp-directives, not just #define.
24037         (yyerror): Delete.
24038         (parse_file): Rename yybegin; do not call yyparse.
24039         (yyend): New.
24040         * gengtype.c (xasprintf): Export again.
24041         (this_file): New.  Use everywhere __FILE__ was being used.
24042         (get_lang_bitmap): Special case types defined in gengtype.c.
24043         (do_typedef, new_structure): Suppress definition of certain types.
24044         (new_structure): Improve diagnostics of duplicate definitions.
24045         Make sure location_s is associated with input.h.
24046         (nreverse_pairs, define_location_structures): New functions.
24047         (main): Improve tagging of kludge types.  Remove old kludges
24048         for input.h types; use define_location_structures.
24049         * gengtype.h: Update prototypes.  Define token codes here.
24050         * Makefile.in: Remove all references to gengtype-yacc.
24051         Add rules for gengtype-parse.o.  Adjust rules for gengtype-lex.o
24052         and gengtype.
24053         * bitmap.h (struct bitmap_head_def): Coalesce definitions,
24054         add GTY((skip)) to the field that's only conditionally there.
24055         * doc/install.texi: Document that Bison is no longer required
24056         unless building treelang.
24057
24058         * gengtype.c: Don't include gtyp-gen.h.
24059         (srcdir): Declare here.
24060         (base_files, lang_dir_names): Allocate dynamically.
24061         (gt_files, num_gt_files, num_lang_dirs): New globals.
24062         (measure_input_list, read_input_line, read_input_list)
24063         (set_lang_bitmap): New functions.
24064         (get_base_file_bitmap): Rename get_lang_bitmap and drastically
24065         simplify, relying on read_input_list to set up the bitmaps.
24066         (main): Arguments are no longer unused.  Check for correct number
24067         of command line arguments, set srcdir and srcdir_len, then call
24068         read_input_list, before doing anything else.  No need to worry
24069         about duplicates in main loop.
24070         * configure.ac: Simplify the calculation of all_gtfiles.
24071         Put language tags in there.  Don't set or substitute
24072         all_gtfiles_files_langs or all_gtfiles_files_frags.
24073         * Makefile.in: Revamp the way gengtype is invoked, now that it
24074         takes a file on its command line with a much simpler format.
24075         Remove or replace with gtyp-input.list all references to gtyp-gen.h.
24076         (GTFILES): Remove duplicates and C source files.
24077         * c-config-lang.in, cp/config-lang.in, objc/config-lang.in
24078         * objcp/config-lang.in: Add c-pragma.h to gtfiles.
24079         * configure: Regenerate.
24080
24081         * gengtype.h: Remove all type definitions to gengtype.c; leave
24082         only definitions of options_p, type_p, and pair_p as opaque
24083         pointers.  Update prototypes.
24084         * gengtype.c: Many type definitions moved here from gengtype.h.
24085         Consolidate type definitions at the top of the file.
24086         (xvasprintf): Delete.
24087         (xasprintf): Make static.
24088         (create_nested_pointer_option): Add 'next' parameter.
24089         (create_field_all, create_field_at): New functions.
24090         (create_field): Now a thin wrapper around create_field_all.
24091         (create_optional_field): Rename create_optional_field_ and add
24092         line argument.  Original name is now a macro which supplies
24093         __LINE__.
24094         (oprintf): Use vsnprintf directly.
24095         (close_output_files): Use fatal rather than perror/exit.
24096         (note_def_vec, note_def_vec_alloc): Use create_field_at.
24097         (main): Set progname.  Don't use exit.
24098         * gengtype-yacc.y (struct_fields): Use create_field_at.
24099         (option, optionseqopt): Delete.
24100         (optionseq): Consolidate productions from option here so we
24101         can use the first argument to create_option.
24102
24103         * gengtype-lex.l: Distinguish unions from structures in the
24104         token type.  Don't call find_structure; return the tag as a string.
24105         * gengtype-yacc.y: Add new token types ENT_TYPEDEF_UNION and
24106         ENT_UNION.  Type of these, ENT_TYPEDEF_STRUCT, and ENT_STRUCT is
24107         string.  Reorganize typedef_struct production accordingly.
24108         Use create_nested_ptr_option.
24109         * gengtype.c (create_nested_ptr_option): New function.
24110         * gengtype.h: Declare it.
24111
24112         * gengtype.h (struct type): Replace 'sc' with boolean, scalar_is_char.
24113         (string_type): Don't declare.
24114         (do_scalar_typedef): Declare.
24115         (create_scalar_type): Update prototype.
24116         * gengtype.c (string_type): Make static.
24117         (scalar_nonchar, scalar_char): New.
24118         (do_scalar_typedef): Export.  Always use scalar_nonchar for the type.
24119         (resolve_typedef): Use scalar_nonchar for error recovery.
24120         (create_scalar_type): Remove name_len field.  Return scalar_char
24121         or scalar_nonchar as appropriate.
24122         (adjust_field_type): Look at scalar_is_char boolean to decide whether
24123         to use string_type.
24124         (throughout): Use scalar_nonchar instead of calling
24125         create_scalar_type, whenever possible.
24126         (main): Initialize scalar_char and scalar_nonchar before calling
24127         gen_rtx_next.
24128         * gengtype-lex.l: Adjust for removal of second argument to
24129         create_scalar_type.  Use yylval.s instead of yylval.t when
24130         returning SCALAR.
24131         * gengtype-yacc.y: Type of SCALAR is string.  Call
24132         create_scalar_type from type:SCALAR rule.  Adjust for removal of
24133         second argument to create_scalar_type.
24134
24135         * vec.h: Remove all #if IN_GENGTYPE blocks.
24136         Add comment saying that changes may require adjustments to gengtype.
24137         * gengtype.c: Don't include coretypes.h or tm.h.
24138         Add comment to inclusion of errors.h.
24139         (note_def_vec, note_def_vec_alloc): New functions.
24140         * gengtype.h: Declare new functions.
24141         * gengtype-lex.l: Don't include coretypes.h.
24142         (YY_INPUT, macro_input, push_macro_expansion, mangle_macro_name):
24143         Delete.
24144         (update_lineno): Remove unnecessary prototype.
24145         (DEF_VEC_* rules): Simplify using note_def_vec / note_def_vec_alloc.
24146         (VEC rule): Just return VEC_TOKEN.
24147         * gengtype-yacc.y (VEC_TOKEN): New token type.
24148         (type): Add a production for VEC(a,b).
24149         * Makefile.in: Update dependencies.
24150
24151         * gengtype-lex.l: Remove rules for parsing pointer-to-function
24152         typedefs that use the old PARAMS macro.
24153
24154         * gengtype-lex.l: Remove all rules and states relating to yacc
24155         input files.
24156         * gengtype-yacc.y: Similarly.
24157         * gengtype.c (note_yacc_type): Delete function.
24158         * gengtype.h: Update prototypes.
24159
24160 2007-03-26  Joseph Myers  <joseph@codesourcery.com>
24161
24162         * tree-pretty-print.c (dump_generic_node): Report precision of
24163         unnamed integer types.
24164
24165 2007-03-26  Steven Bosscher  <steven@gcc.gnu.org>
24166
24167         * ifcvt.c (noce_try_store_flag_constants): Don't check
24168         no_new_pseudos here.
24169         (noce_try_store_flag_constants): Don't check no_new_pseudos.
24170         (noce_try_addcc, noce_try_store_flag_mask, noce_try_cmove_arith,
24171         noce_try_cmove_arith, noce_try_minmax, noce_try_abs,
24172         noce_try_sign_mask): Likewise.
24173         (if_convert): Check no_new_pseudos here.
24174
24175         (cond_exec_process_if_block, noce_process_if_block, find_if_block):
24176         Remove prototypes.
24177         (struct noce_if_info): Add then_bb, else_bb, join_bb members.
24178         (noce_get_condition): Handle new then_else_reversed argument.
24179         (noce_init_if_info): Remove, fold into noce_find_if_block.
24180         (noce_process_if_block): Take a struct noce_if_info as the
24181         argument.  Don't set up one based on ce_if_info.  Update pointer
24182         references accordingly.
24183         (cond_move_process_if_block): Likewise.
24184         (process_if_block): Removed.
24185         (find_if_block): Removed.  Move functionality two new functions,
24186         noce_find_if_block and cond_exec_find_if_block.
24187         (noce_find_if_block): New function.  Be aware of IF-THEN-JOIN
24188         blocks and the symmetric IF-ELSE-JOIN case.
24189         (cond_exec_find_if_block): Also new function mostly based on old
24190         find_if_block and process_if_block.
24191         (find_if_header): Replace find_if_block call with separately
24192         guarded calls to noce_find_if_block and cond_exec_find_if_block.
24193         (find_cond_trap): Update noce_get_condition call.
24194         (dead_or_predicable): Likewise.
24195
24196 2007-03-26  Jakub Jelinek  <jakub@redhat.com>
24197
24198         * config/i386/i386.c (IX86_BUILTIN_CMPNEPD, IX86_BUILTIN_CMPNESD):
24199         Remove.
24200         (IX86_BUILTIN_PSLLW128, IX86_BUILTIN_PSLLD128, IX86_BUILTIN_PSLLQ128,
24201         IX86_BUILTIN_PSRAW128, IX86_BUILTIN_PSRAD128, IX86_BUILTIN_PSRLW128,
24202         IX86_BUILTIN_PSRLD128, IX86_BUILTIN_PSRLQ128): Remove.
24203         (ix86_init_mmx_sse_builtins): Remove v8hi_ftype_v8hi_v2di and
24204         v4si_ftype_v4si_v2di.  Remove __builtin_ia32_psllw128,
24205         __builtin_ia32_pslld128, __builtin_ia32_psllq128,
24206         __builtin_ia32_psrlw128, __builtin_ia32_psrld128,
24207         __builtin_ia32_psrlq128, __builtin_ia32_psraw128 and
24208         __builtin_ia32_psrad128 builtins.
24209
24210 2007-03-26  Uros Bizjak  <ubizjak@gmail.com>
24211
24212         * reg-stack.c (replace_reg): Use IN_RANGE macro in gcc_assert().
24213         * config/i386/constraints.md
24214         (define_constraint "I"): Use IN_RANGE macro.
24215         (define_constraint "J"): Ditto.
24216         (define_constraint "K"): Ditto.
24217         (define_constraint "M"): Ditto.
24218         (define_constraint "N"): Ditto.
24219         (define_constraint "O"): Ditto.
24220         * config/i386/predicates.md
24221         (define_predicate "register_no_elim_operand"): Use IN_RANGE macro.
24222         (define_predicate "const_0_to_3_operand"): Ditto.
24223         (define_predicate "const_0_to_7_operand"): Ditto.
24224         (define_predicate "const_0_to_15_operand"): Ditto.
24225         (define_predicate "const_0_to_63_operand"): Ditto.
24226         (define_predicate "const_0_to_255_operand"): Ditto.
24227         (define_predicate "const_1_to_31_operand"): Ditto.
24228         (define_predicate "const_2_to_3_operand"): Ditto.
24229         (define_predicate "const_4_to_7_operand"): Ditto.
24230
24231 2007-03-25  David Edelsohn  <edelsohn@gnu.org>
24232
24233         * config/rs6000/rs6000.c (rs6000_emit_prologue): Always clobber LR
24234         in SImode for save_world.
24235         * config/rs6000/altivec.md (save_world, restore_world): Convert to
24236         LR hard reg.
24237
24238 2007-03-25  Dorit Nuzman  <dorit@il.ibm.com>
24239
24240         PR tree-optimization/30784
24241         * fold-const.c (fold_ternary): Handle CONSTRUCTOR in case
24242         BIT_FIELD_REF.
24243
24244 2007-03-25  Revital Eres  <eres@il.ibm.com>
24245
24246         * tree-if-conv.c (if_convertible_gimple_modify_stmt_p):
24247           Fold movement_possibility function into it.
24248
24249 2007-03-25  David Edelsohn  <edelsohn@gnu.org>
24250
24251         * config/rs6000/darwin.md (load_macho_picbase): Ignore operand 0.
24252         (load_macho_picbase_{si,di}): Convert to LR hard reg.
24253         (call_indirect_nonlocal_darwin64): Same.
24254         (call_nonlocal_darwin64): Same.
24255         (call_value_indirect_nonlocal_darwin64): Same.
24256         (call_value_nonlocal_darwin64): Same.
24257         (sibcall_nonlocal_darwin64): Same.
24258         (sibcall_value_nonlocal_darwin64): Same.
24259         (sibcall_symbolic_64): Same.
24260         (sibcall_value_symbolic_64): Same.
24261         * config/rs6000/rs6000.c (rs6000_legitimize_tls_address): Remove
24262         LR pseudo.
24263         (rs6000_emit_load_toc_table): Same.
24264         * config/rs6000/altivec.md (restore_world): Convert to LR hard reg.
24265         * config/rs6000/rs6000.md (mulh_call): Convert to LR hard reg.
24266         (mull_call): Same.
24267         (divss_call): Same.
24268         (divus_call): Same.
24269         (quoss_call): Same.
24270         (quous_call): Same.
24271         (load_toc_v4_pic_si): Same
24272         (load_toc_v4_PIC_1): Same.
24273         (load_toc_v4_PIC_1b): Same.
24274         (call_indirect_aix{32,64}): Same.
24275         (call_value_indirect_aix{32,64}): Same.
24276         (call): Same.
24277         (call_value): Same.
24278         (call_local{32,64}): Same.
24279         (call_value_local{32,64}): Same.
24280         (call_indirect_nonlocal_aix{32,64}): Same.
24281         (call_nonlocal_aix{32,64}): Same.
24282         (call_value_indirect_nonlocal_aix{32,64}): Same.
24283         (call_value_nonlocal_aix{32,64}): Same.
24284         (call_indirect_nonlocal_sysv<mode>): Same.
24285         (call_nonlocal_sysv<mode>): Same.
24286         (call_value_indirect_nonlocal_sysv<mode>): Same.
24287         (call_value_nonlocal_sysv<mode>): Same.
24288         (sibcall): Same.
24289         (sibcall_local{32,64}): Same.
24290         (sibcall_value_local{32,64}): Same.
24291         (sibcall_nonlocal_aix{32,64}): Same.
24292         (sibcall_value_nonlocal_aix{32,64}): Same.
24293         (sibcall_nonlocal_sysv<mode>): Same.
24294         (sibcall_value): Same.
24295         (sibcall_value_nonlocal_sysv<mode>): Same.
24296
24297 2007-03-24  Paul Brook  <paul@codesourcery.com>
24298
24299         * config/arm/lib1funcs.asm (div0): Use ARM_FUNC_START and do_push.
24300         * config/arm/linux-eabi.h: Remove legacy syscall hack.
24301
24302 2007-03-24  Richard Henderson  <rth@redhat.com>
24303
24304         * config/ia64/constraints.md: New file.
24305         * config/ia64/predicates.md: Replace CONST_OK_FOR_? with
24306         satisfies_constraint_?.
24307         * config/ia64/ia64.c (ia64_move_ok, ia64_legitimate_constant_p,
24308         ia64_reload_gp, spill_restore_mem, ia64_expand_prologue,
24309         ia64_expand_epilogue, ia64_split_return_addr_rtx, ia64_rtx_costs,
24310         ia64_output_mi_thunk): Likewise.
24311         (ia64_const_ok_for_letter_p): Remove.
24312         (ia64_const_double_ok_for_letter_p): Remove.
24313         (ia64_extra_constraint): Remove.
24314         * config/ia64/ia64.h (REG_CLASS_FROM_LETTER): Remove.
24315         (CONST_OK_FOR_I, CONST_OK_FOR_J, CONST_OK_FOR_K, CONST_OK_FOR_L,
24316         CONST_OK_FOR_M, CONST_OK_FOR_N, CONST_OK_FOR_O, CONST_OK_FOR_P,
24317         CONST_OK_FOR_LETTER_P, CONST_DOUBLE_OK_FOR_G,
24318         CONST_DOUBLE_OK_FOR_LETTER_P, EXTRA_CONSTRAINT,
24319         EXTRA_MEMORY_CONSTRAINT): Remove.
24320         * config/ia64/ia64.md: Include constriants.md.  Replace
24321         CONST_OK_FOR_? with satisfies_constraint_?.
24322
24323 2007-03-23  Michael Meissner  <michael.meissner@amd.com>
24324             H.J. Lu  <hongjiu.lu@intel.com>
24325
24326         * config/dfp-bit.h (DPD_BID_NAME): New macro to give either the
24327         DPD or BID name.
24328         (name macros): Use DPD_BID_NAME to convert names properly.
24329
24330         * optabs.c (DECIMAL_PREFIX): Prefix string to use for the current
24331         decimal floating point format.
24332         (init_floating_libfuncs): Change decimal functions so that they
24333         have a "bid_" prefix if the decimal system uses the BID format,
24334         and "dpd_" prefix if the decimal system uses the DPD format.
24335         (init_interclass_conv_libfuncs): Ditto.
24336         (init_intraclass_conv_libfuncs): Ditto.
24337
24338         * config.in (ENABLE_DECIMAL_BID_FORMAT): New macro to say we are
24339         using the BID format.
24340
24341         * configure.ac (ENABLE_DECIMAL_BID_FORMAT): Set to 1/0 to say
24342         whether we are using the BID decimal format.
24343         * configure: Regenerate.
24344
24345         * c-cppbuiltin.c (c_cpp_builtins): Define __STDC_WANT_DEC_FP__ if
24346         the compiler has decimal floating point enabled.  Define
24347         __DECIMAL_BID_FORMAT__ if BID decimal floating point is used
24348         instead of DPD.
24349
24350         * config.in (ENABLE_DECIMAL_BID_FORMAT): New macro to say we are
24351         using the BID format.
24352
24353         * configure.ac (ENABLE_DECIMAL_BID_FORMAT): Set to 1/0 to say
24354         whether we are using the BID decimal format.
24355         * configure: Regenerate.
24356
24357         * c-cppbuiltin.c (c_cpp_builtins): Define __STDC_WANT_DEC_FP__ if
24358         the compiler has decimal floating point enabled.  Define
24359         __DECIMAL_BID_FORMAT__ if BID decimal floating point is used
24360         instead of DPD.
24361
24362         * doc/install.texi (--enable-decimal-float): Document BID and DPD
24363         options, and that it is enabled for i386/x86_64 systems.
24364
24365         * Makefile.in (enable_decimal_float): New.
24366         (DECNUMFMT): New.
24367         (DECNUMINC): Add  -I$(DECNUMFMT).
24368         (DECNUM_H): Mov decimal32.h, decimal64.h and decimal128.h
24369         to $(DECNUMFMT) from $(DECNUM).
24370
24371         * configure.ac: Support * --enable-decimal-float={no,yes,bid,dpd}.
24372         Substitute enable_decimal_float.
24373         * configure: Regenerated.
24374
24375         PR other/30529
24376         * config/dfp-bit.c (__dec_byte_swap): Use uint32_t instead of
24377         unsigned long.
24378
24379         * configure.ac: Enable decimal float for x86_64-*-linux*.
24380         * configure: Regenerated.
24381
24382         PR other/30530
24383         * dfp.c (decimal_real_arithmetic): Use decimal128FlipSign and
24384         decimal128ClearSign to flip and clear the sign bit in decimal128.
24385         (decimal_real_maxval): Set decimal128SetSign to set the sign
24386         bit in decimal128.
24387
24388 2007-03-23  Ian Lance Taylor  <iant@google.com>
24389
24390         * fold-const.c (fold_binary): Correct warning for X - c >= X.
24391
24392 2007-03-23  Ian Lance Taylor  <iant@google.com>
24393
24394         * tree-dump.c (dump_files): Correct comment.
24395
24396 2007-03-23  Ian Lance Taylor  <iant@google.com>
24397
24398         * tree-vrp.c (operand_less_p): Ignore fold overflow warnings.
24399
24400 2007-03-23  Steven Bosscher  <steven@gcc.gnu.org>
24401
24402         * tracer.c (tracer): Don't take FLAGS argument.  Assert we are
24403         in cfglayout mode.  Don't go into and out of cfglayout mode.
24404         Link the blocks in the order of the constructed traces.
24405         (rest_of_handle_tracer): Adjust call to tracer.
24406         * loop-init.c (rtl_loop_init): Assert we are in cfglayout mode.
24407         Don't go into cfglayout mode.
24408         (rtl_loop_done): Don't go out of cfglayout mode.
24409         * cfglayout.c (relink_block_chain): New function, split out from...
24410         (fixup_reorder_chain): ...here.  Remove redundant checking.
24411         (cfg_layout_finalize): Don't clear the header, footer, and aux
24412         fields here, move the code to do so to relink_block_chain.  Likewise
24413         for free_original_copy_tables.
24414         * rtl.h (tracer): Update prototype.
24415         * bb-reorder.c (reorder_basic_blocks): Don't take FLAGS argument.
24416         Assert we are in cfglayout mode.  Don't go into and out of cfglayout
24417         mode.  Use relink_block_chain to serialize the CFG according to the
24418         new basic block order.  Move targetm.cannot_modify_jumps_p check from
24419         here...
24420         (gate_handle_reorder_blocks): ...to here.
24421         (duplicate_computed_gotos): Move targetm.cannot_modify_jumps_p check
24422         from here...
24423         (gate_duplicate_computed_gotos): ...to here.
24424         (rest_of_handle_reorder_blocks): Don't see if anything has changed,
24425         something always changes when going into and out of cfglayout mode.
24426         Perform an expensive cfg cleanup while going into cfglayout mode.
24427         Always update liveness information on HAVE_conditional_execution
24428         targets.  Reserialize the basic blocks and go out of cfglayout mode.
24429         * reg-stack.c: Include cfglayout.h.
24430         (rest_of_handle_stack_regs): Go into and out of cfglayout mode around
24431         the call to reorder_basic_blocks.
24432         * basic-block.h (reorder_basic_blocks): Update prototype.
24433         (relink_block_chain): New prototype.
24434         * passes.c (pass_outof_cfg_layout_mode): Move after cse2.
24435
24436 2007-03-23  Joseph Myers  <joseph@codesourcery.com>
24437
24438         * config/mips/mips.md (type, hazard, *movdi_32bit,
24439         *movdi_gp32_fp64, *movdi_64bit, *movsi_internal, movcc,
24440         *movhi_internal, *movqi_internal, *movsf_hardfloat,
24441         *movdf_hardfloat_64bit, *movdf_hardfloat_32bit, *movdf_softfloat,
24442         movv2sf_hardfloat_64bit, load_df_low, load_df_high, store_df_high,
24443         mthc1, mfhc1): Change xfer instruction type to mfc and mtc, as
24444         applicable.
24445         (movcc): Change first xfer to multi.
24446         * config/mips/24k.md, config/mips/4100.md, config/mips/4300.md,
24447         config/mips/5000.md, config/mips/5400.md, config/mips/5500.md,
24448         config/mips/5k.md, config/mips/7000.md, config/mips/9000.md,
24449         config/mips/generic.md: Change reservations using "xfer" to use
24450         "mfc,mtc".
24451         * config/mips/sb1.md (ir_sb1_mtxfer): Use "mtc" instead of
24452         using match_operand.
24453         (ir_sb1_mfxfer): Use "mfc" instead of using match_operand.
24454         * config/mips/sr71k.md (ir_sr70_xfer_from): Use "mfc" instead of
24455         examining mode.
24456         (ir_sr70_xfer_to): Use "mtc" instead of examining mode.
24457
24458 2007-03-22  Richard Henderson  <rth@redhat.com>
24459
24460         * config/i386/i386.c: Remove unnecessary function declarations.
24461         Move targetm definition, and all related macros, to the end of
24462         the file.  Resort some functions to put definitions before uses.
24463         (ix86_attribute_table): Make static.  Move to end of file.
24464         (ix86_gimplify_va_arg): Make static.
24465
24466 2007-03-22  Richard Henderson  <rth@redhat.com>
24467
24468         * config/i386/i386.c (ix86_function_regparm): Early exit for 64-bit;
24469         don't increase local_regparm with force_align_arg_pointer check.
24470         (ix86_function_sseregparm): Assert 32-bit.
24471         (type_has_variadic_args_p): New.
24472         (ix86_return_pops_args): Early exit for 64-bit.  Reindent; use
24473         type_has_variadic_args_p.
24474         (ix86_function_arg_regno_p): Use == 0 instead of ! test for eax.
24475         (init_cumulative_args): Remove TARGET_DEBUG_ARG.  Remove zero_cum;
24476         use memset instead.  Do maybe_vaarg check first; skip attribute
24477         tests if true; skip attribute tests for 64-bit.
24478         (construct_container): Remove TARGET_DEBUG_ARG.
24479         (function_arg_advance_32, function_arg_advance_64): Split out ...
24480         (function_arg_advance): ... from here.
24481         (function_arg_32, function_arg_64): Split out ...
24482         (function_arg): ... from here.
24483         (ix86_pass_by_reference): Tidy.
24484         (ix86_function_value_regno_p): Rearrange w/ switch on regno.
24485         (function_value_32): New, from parts of ix86_function_value
24486         and ix86_value_regno.
24487         (function_value_64): New, from parts of ix86_function_value
24488         and ix86_libcall_value.
24489         (ix86_function_value_1): New.
24490         (ix86_function_value, ix86_libcall_value): Use it.
24491         (return_in_memory_32, return_in_memory_64): Split out ...
24492         (ix86_return_in_memory): ... from here.
24493         (ix86_struct_value_rtx): Skip for 64-bit.
24494         (ix86_libcall_value, ix86_value_regno): Remove.
24495         (setup_incoming_varargs_64): Split out ...
24496         (ix86_setup_incoming_varargs): ... from here.
24497         (ix86_va_start): Remove TARGET_DEBUG_ARG.
24498         (legitimate_address_p, legitimize_address): Remove TARGET_DEBUG_ADDR.
24499         * config/i386/i386-protos.h (ix86_function_value): Remove.
24500         * config/i386/i386.opt (TARGET_DEBUG_ADDR, TARGET_DEBUG_ARG): Remove.
24501
24502 2007-03-22  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
24503
24504         PR other/23572
24505         * c-lex.c (interpret_float): On overflow, emit pedantic warning if
24506         infinities not supported, otherwise emit warning if -Woverflow. On
24507         underflow, emit warning if -Woverflow.
24508         * real.c (real_from_string): Return -1 if underflow, +1 if overflow
24509         and 0 otherwise.
24510         * real.h (real_from_string): Update declaration
24511
24512 2007-03-22  Kai Tietz  <kai.tietz@onevision.com>
24513             Richard Henderson  <rth@redhat.com>
24514
24515         * defaults.h (OUTGOING_REG_PARM_STACK_SPACE): Provide default.
24516         * calls.c (compute_argument_block_size, expand_call,
24517         emit_library_call_value_1): Don't ifdef OUTGOING_REG_PARM_STACK_SPACE.
24518         * expr.c (block_move_libcall_safe_for_call_parm): Likewise.
24519         * function.c (STACK_DYNAMIC_OFFSET): Likewise.
24520         * doc/tm.texi (OUTGOING_REG_PARM_STACK_SPACE): Update.
24521         * config/alpha/unicosmk.h, config/bfin/bfin.h, config/iq2000/iq2000.h,
24522         config/mips/mips.h, config/mn10300/mn10300.h, config/mt/mt.h,
24523         config/pa/pa.h, config/rs6000/rs6000.h, config/score/score.h,
24524         config/spu/spu.h, config/v850/v850.h (OUTGOING_REG_PARM_STACK_SPACE):
24525         Set to 1.
24526
24527 2007-03-22  Joseph Myers  <joseph@codesourcery.com>
24528
24529         * c-incpath.c (add_sysroot_to_chain): New.
24530         (merge_include_chains): Add sysroot argument.  Call
24531         add_sysroot_to_chain if sysrooted.
24532         (register_include_chains): Update call to merge_include_chains.
24533         * doc/cppopts.texi: Document use of '=' in include directory
24534         arguments.
24535
24536 2007-03-22  Uros Bizjak  <ubizjak@gmail.com>
24537
24538         * config/i386/i386.md (cmp<mode>): Rename from cmpsf and cmpdf.
24539         Macroize expander using SSEMODEF mode macro.  Use SSE_FLOAT_MODE_P.
24540         (*cmpfp_<mode>): Rename from *cmpfp_sf and *cmpfp_df. Macroize
24541         insn pattern using X87MODEF12 mode macro.
24542
24543 2007-03-21  Seongbae Park <seongbae.park@gmail.com>
24544
24545         * regmove.c (regmove_optimize): Use reg_mentioned_p
24546         instead of reg_overlap_mentioned_p for DST.
24547
24548 2007-03-21  Mike Stump  <mrs@apple.com>
24549
24550         * c.opt: Fixup for Objective-C/C++.
24551
24552 2007-03-21  Steve Ellcey  <sje@cup.hp.com>
24553
24554         * explow.c (convert_memory_address): Fold memory reference when
24555         POINTERS_EXTEND_UNSIGNED < 0
24556
24557 2007-03-21  Richard Henderson  <rth@redhat.com>
24558
24559         PR target/31245
24560         * config/i386/emmintrin.h (__m128i, __m128d): Mark may_alias.
24561         * config/i386/mmintrin.h (__m64): Likewise.
24562         * config/i386/xmmintrin.h (__m128): Likewise.
24563
24564 2007-03-21  Richard Sandiford  <richard@codesourcery.com>
24565
24566         * config/vxworks.h (VXWORKS_ADDITIONAL_CPP_SPEC): Remove -D options.
24567         (VXWORKS_OS_CPP_BUILTINS): Define.
24568         * config/i386/vxworks.h (VXWORKS_CPU_DEFINE): Fold into...
24569         (TARGET_OS_CPP_BUILTINS): ...here.  Use VXWORKS_OS_CPP_BUILTINS.
24570
24571 2007-03-21  Richard Sandiford  <richard@codesourcery.com>
24572
24573         * rtl.h (constant_pool_reference_p): Delete.
24574         (find_constant_src): Declare.
24575         * rtlanal.c (find_constant_src): New function.
24576         * simplify-rtx.c (constant_pool_reference_p): Delete.
24577         * config/i386/i386.md: Use find_constant_src instead of
24578         constant_pool_reference_p/avoid_constant_pool_reference pairs.
24579
24580 2007-03-21  Richard Sandiford  <richard@codesourcery.com>
24581
24582         * doc/invoke.texi (-fpie, -fPIE): Document __pie__ and __PIE__.
24583         * c-cppbuiltin.c (c_cpp_builtins): Define them.
24584
24585 2007-03-20  Mark Mitchell  <mark@codesourcery.com>
24586
24587         * config/arm/elf.h (TARGET_ASM_DESTRUCTOR): Define.
24588         * config/arm/arm.c (arm_elf_asm_cdtor): New function.
24589         (arm_elf_asm_constructor): Use it.
24590         (arm_elf_asm_destructor): New function.
24591
24592 2007-03-20  Bernd Schmidt  <bernd.schmidt@analog.com>
24593
24594         * jump.c (mark_jump_label): Treat SEQUENCE specially.
24595
24596 2007-03-20  Nathan Sidwell  <nathan@codesourcery.com>
24597
24598         * config/vxlib.c (tls_delete_hook): Use TCB for kernel tasks.
24599
24600 2007-03-19  Andrew Haley  <aph@redhat.com>
24601
24602         PR tree-optimization/31264
24603         * tree-vrp.c (register_edge_assert_for_1): Don't look though
24604         VIEW_CONVERT_EXPRs.
24605
24606 2007-03-19  Paolo Bonzini  <bonzini@gnu.org>
24607
24608         PR rtl-optimization/30907
24609         * fwprop.c (forward_propagate_into): Never propagate inside a loop.
24610         (fwprop_init): Always call loop_optimizer_initialize.
24611         (fwprop_done): Always call loop_optimizer_finalize.
24612         (fwprop): We always have loop info now.
24613         (gate_fwprop_addr): Remove.
24614         (pass_fwprop_addr): Use gate_fwprop as gate.
24615
24616         PR rtl-optimization/30841
24617         * df-problems.c (df_ru_local_compute, df_rd_local_compute,
24618         df_chain_alloc): Call df_reorganize_refs unconditionally.
24619         * df-scan.c (df_rescan_blocks, df_reorganize_refs): Change
24620         refs_organized to refs_organized_size.
24621         (df_ref_create_structure): Use refs_organized_size instead of
24622         bitmap_size if refs had been organized, and keep refs_organized_size
24623         up-to-date.
24624         * df.h (struct df_ref_info): Change refs_organized to
24625         refs_organized_size.
24626         (DF_DEFS_SIZE, DF_USES_SIZE): Use refs_organized_size instead of
24627         bitmap_size.
24628
24629 2007-03-19  Mark Mitchell  <mark@codesourcery.com>
24630
24631         * except.c (output_function_exception_table): Do not reference the
24632         EH personality routine for functions that do not require an
24633         exception table.
24634
24635 2007-03-20  Jakub Jelinek  <jakub@redhat.com>
24636
24637         PR c/30762
24638         * c-typeck.c (convert_for_assignment): Call comptypes for
24639         RECORD_TYPE or UNION_TYPE.
24640
24641         PR inline-asm/30505
24642         * reload1.c (reload): Do invalid ASM checking after
24643         cleanup_subreg_operands.
24644
24645 2007-03-19  Jeff Law  <law@redhat.com>
24646
24647         * tree-cfg.c (find_taken_edge): Tighten conditions for
24648         optimizing computed gotos.
24649
24650 2007-03-19  Michael Matz  <matz@suse.de>
24651
24652         * builtins.c (expand_builtin_sync_operation,
24653         expand_builtin_compare_and_swap,
24654         expand_builtin_lock_test_and_set): Care for extending CONST_INTs
24655         correctly.
24656
24657         * config/i386/sync.md (sync_double_compare_and_swapdi_pic,
24658         sync_double_compare_and_swap_ccdi_pic): Use "SD" as constraint
24659         for operand 3.
24660
24661 2007-03-19  Andreas Krebbel  <krebbel1@de.ibm.com>
24662
24663         * doc/tm.texi: Add brackets around the return type of
24664         TARGET_SECONDARY_RELOAD.
24665
24666 2007-03-19  Andrew Pinski  <andrew_pinski@playstation.sony.com>
24667         Richard Guenther  <rguenther@suse.de>
24668
24669         PR tree-optimization/31254
24670         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1):
24671         Use handled_component_p () where appropriate.  Continue
24672         propagating into the rhs if we propagated into an INDIRECT_REF
24673         on the lhs.
24674
24675 2007-03-19  Andreas Krebbel  <krebbel1@de.ibm.com>
24676
24677         * config/s390/s390.md (op_type attribute): RRR instruction type added.
24678         (FP, DFP, SD_SF, DD_DF, TD_TF): New mode macros.
24679         (xde, xdee): Mode attributes adjusted to support DFP modes.
24680         (RRer, f0, op1, Rf, bt, bfp, HALF_TMODE): New mode attributes added.
24681         ("cmp<mode>", "*cmp<mode>_css_0", "*cmp<mode>_ccs", TF move splitters,
24682         DF move splitters, "floatdi<mode>2", "add<mode>3", "*add<mode>3",
24683         "*add<mode>3_cc", "*add<mode>3_cconly", "sub<mode>3", "*sub<mode>3",
24684         "*sub<mode>3_cc", "*sub<mode>3_cconly", "mul<mode>3", "*mul<mode>3",
24685         "div<mode>3", "*div<mode>3", "*neg<mode>2_nocc", "*abs<mode>2_nocc",
24686         "*negabs<mode>2_nocc", "copysign<mode>3"): Adjusted to support DFP
24687         numbers.
24688         ("*movtf_64", "*movtf_31", "*movdf_64dfp", "*movdf_64", "*movdf_31",
24689         "movsf"): Insn definitions removed.
24690         ("*mov<mode>_64", "*mov<mode>_31", "mov<mode>", "*mov<mode>_64dfp",
24691         "*mov<mode>_64", "*mov<mode>_31", "fix_trunc<DFP:mode>di2",
24692         "trunctddd2", "truncddsd2", "extendddtd2", "extendsddd2"): Insn
24693         definitions added.
24694         ("fixuns_truncdddi2", "fixuns_trunctddi2", "mov<mode>",
24695         "reload_in<mode>", "reload_out<mode>"): Expander added.
24696         ("movtf", "movdf", "reload_outtf", "reload_outdf", "reload_intf"):
24697         Expander removed.
24698
24699 2007-03-19  Andreas Krebbel  <krebbel1@de.ibm.com>
24700
24701         * config/s390/s390.md: Only non-functional changes.  Renamed
24702         FPR mode macro to BFP all over the file.
24703
24704 2007-03-19  Andreas Krebbel  <krebbel1@de.ibm.com>
24705
24706         * config/s390/s390.md (UNSPEC_COPYSIGN): New constant.
24707         (op_type attribute): RRF instruction type added.
24708         (fT0): New mode attribute.
24709         ("*movdi_64dfp", "*movdf_64dfp", "*neg<mode>2_nocc", "*abs<mode>2_nocc",
24710         "*negabs<mode>2_nocc", "copysign<mode>3"): Insn definitions added.
24711         * config/s390/s390.h (SECONDARY_MEMORY_NEEDED): Due to a new
24712         instruction no secondary memory is needed when moving DFmode values
24713         between GPRs and FPRs.
24714
24715 2007-03-19  Andreas Krebbel  <krebbel1@de.ibm.com>
24716
24717         * config/s390/s390.opt ("mhard-float", "msoft-float"): Bit value
24718         inverted and documentation adjusted.
24719         ("mhard-dfp", "msoft-dfp"): New options.
24720         * config/s390/s390.c (s390_handle_arch_option): New architecture
24721         switch: z9-ec.
24722         (override_options): Sanity checks for the new options added.
24723         * config.gcc: New architecture switch: z9-ec.
24724         * config/s390/s390.h (processor_flags): PF_DFP added.
24725         (TARGET_CPU_DFP, TARGET_DFP): Macro definitions added.
24726         (TARGET_DEFAULT): Due to the s390.opt changes hard float is enabled
24727         when the bit is NOT set so remove it from the defaults.
24728
24729 2007-03-19  Andreas Krebbel  <krebbel1@de.ibm.com>
24730
24731         * genemit.c (main): Print include statement for dfp.h.
24732         * dfp.h (decimal_real_arithmetic): Hide prototype if tree_code enum
24733         is not available.
24734
24735 2007-03-19  Hans-Peter Nilsson  <hp@axis.com>
24736
24737         * config/cris/t-elfmulti (EXTRA_MULTILIB_PARTS): Do not define here.
24738
24739 2007-03-19  Kaz Kojima  <kkojima@gcc.gnu.org>
24740
24741         PR target/31022
24742         * config/sh/sh.c (sh_adjust_cost): Use the result of single_set
24743         instead of PATTERN.
24744
24745 2007-03-18  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
24746
24747         * pa.c (output_deferred_plabels, output_bb, output_millicode_call,
24748         attr_length_call, output_call, output_indirect_call): Cleanup
24749         formatting of targetm calls.
24750
24751 2007-03-19  Hans-Peter Nilsson  <hp@axis.com>
24752
24753         * config/cris/cris.h (HANDLE_PRAGMA_PACK_PUSH_POP): Define to 1.
24754
24755 2007-03-18  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
24756
24757         * pa.md: Add fpstore_load and store_fpload instruction types.  Provide
24758         reservation, bypass and anti-bypass descriptions for these
24759         instructions.  Update move patterns.
24760         * pa.c (hppa_fpstore_bypass_p): Check for both TYPE_FPSTORE_LOAD and
24761         TYPE_FPSTORE.
24762
24763 2007-03-18  Dorit Nuzman  <dorit@il.ibm.com>
24764
24765         * tree-vect-transform.c (get_initial_def_for_induction): Replace
24766         GET_MODE_NUNITS with TYPE_VECTOR_SUBPARTS.
24767         (get_initial_def_for_reduction): Likewise.
24768
24769 2007-03-16  Daniel Berlin  <dberlin@dberlin.org>
24770
24771         Fix PR tree-optimization/29922
24772         * tree-ssa-pre.c (bb_bitmap_sets): Remove RVUSE_* members.
24773         (get_representative): Removed.
24774         (value_dies_in_block_x): Update for rvuse removal.
24775         (valid_in_sets): Update for renaming of vuses_dies_in_block_x.
24776         (compute_antic_aux): Handle when PHI nodes appear in
24777         non-single-successors.
24778         (dump_bitmap_of_names): Removed.
24779         (compute_antic_safe): Renamed and removed rvuse calculation.
24780         Calculate only antic safe.
24781         (insert_into_preds_of_block): Remove assert.
24782         (execute_pre): Update for renamed functions.
24783         (defer_or_phi_translate_block): New function.
24784
24785 2007-03-17  Kazu Hirata  <kazu@codesourcery.com>
24786
24787         * config/arm/arm.c, config/arm/thumb2.md, config/m68k/m68k.c,
24788         config/spu/spu.c, omega.h, passes.c, predict.c: Fix comment
24789         typos.
24790         * doc/cpp.texi, doc/extend.texi, doc/invoke.texi: Fix typos.
24791         Follow spelling conventions.
24792
24793         * tree-data-ref.h: Remove the prototype for analyze_array.
24794
24795 2007-03-17  Dorit Nuzman  <dorit@il.ibm.com>
24796
24797         PR tree-optimization/31041
24798         * tree-vect-transform.c (get_initial_def_for_induction): Call
24799         force_gimple_operand.
24800
24801 2007-03-17  Olga Golovanevsky  <olga@il.ibm.com>
24802
24803         * ipa-type-escape.c (look_for_casts) : Revert code to use
24804         handled_component_p due to ada test a-numaux.adb.
24805
24806 2007-03-17  Kazu Hirata  <kazu@codesourcery.com>
24807
24808         * final.c (final_scan_insn): Alter the condition of a
24809         conditional trap if we have nonstandard CC.
24810
24811 2007-03-16  Alexandre Oliva  <aoliva@redhat.com>
24812
24813         * configure.ac: Remove excess quoting from asm line 0 test.
24814         * configure: Rebuilt.
24815
24816 2007-03-16  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
24817
24818         * doc/invoke.texi (-Wconversion): Document warnings specific to C++.
24819         * c-common.c (convert_and_check): Move warning logic to...
24820         (warnings_for_convert_and_check): ...here. Define.
24821         * c-common.h (warnings_for_convert_and_check): Declare.
24822
24823 2007-03-16  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
24824
24825         * pa.c (attr_length_call): Partially revert change of 2007-03-09.
24826         (output_call): Likewise.
24827
24828 2007-03-16  Richard Sandiford  <richard@codesourcery.com>
24829
24830         * config/vxworks.h (SUPPORTS_INIT_PRIORITY): Define.
24831
24832 2007-03-16  Richard Sandiford  <richard@codesourcery.com>
24833
24834         * config/vx-common.h (WINT_TYPE, WINT_TYPE_SIZE): Define.
24835
24836 2007-03-16  Uros Bizjak  <ubizjak@gmail.com>
24837
24838         * config/i386/i386.c (override_options): Add PTA_NO_SAHF to k8,
24839         opteron, athlon-64 and athlon-fx processor_alias_table entries.
24840
24841 2007-03-16  Sebastian Pop  <sebastian.pop@inria.fr>
24842
24843         PR tree-optimization/31183
24844         * tree-loop-linear.c (gather_interchange_stats, try_interchange_loops):
24845         Use double_int instead of unsigned int for representing access_strides.
24846         * testsuite/gcc.dg/tree-ssa/pr31183.c: New.
24847
24848 2007-03-16  Richard Guenther  <rguenther@suse.de>
24849
24850         PR tree-optimization/31146
24851         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Restructure
24852         to allow recursion of forward_propagate_addr_expr.
24853         (forward_propagate_addr_into_variable_array_index): Likewise.
24854         (forward_propagate_addr_expr): Likewise.
24855         (tree_ssa_forward_propagate_single_use_vars): Likewise.
24856         (forward_propagate_addr_expr_1): Recurse on simple copies
24857         instead of propagating into them.  Do so for useless conversions
24858         as well.
24859         (forward_propagate_addr_expr): Clean up unused statements after
24860         recursion.
24861
24862 2007-03-16  Richard Guenther  <rguenther@suse.de>
24863
24864         * builtins.c (expand_builtin_cexpi): Use the right argument
24865         for the expansion via cexp.
24866
24867 2007-03-16  Alexandre Oliva  <aoliva@redhat.com>
24868
24869         * configure.ac: Don't require ELF binutils to tolerate # 0 "".
24870         * configure: Rebuilt.
24871
24872 2007-03-16  Alexandre Oliva  <aoliva@redhat.com>
24873
24874         PR debug/29906
24875         * dwarf2out.c (force_type_die): Adjust comment.
24876         (dwarf2out_imported_module_or_decl): Handle base AT_import types.
24877
24878 2007-03-15  DJ Delorie  <dj@redhat.com>
24879
24880         * config/frv/predicates.md (minmax_operator): Don't check operands
24881         here.
24882
24883 2007-03-15  Zdenek Dvorak  <dvorakz@suse.cz>
24884
24885         * tree-ssa-loop-niter.c (record_estimate): Add "upper" argument.
24886         Update constant estimates of number of iterations.
24887         (record_nonwrapping_iv): Add "upper" argument.  "data_size_bounds_p"
24888         argument renamed to "realistic".
24889         (compute_estimated_nb_iterations): Removed.
24890         (record_niter_bound): New function.
24891         (idx_infer_loop_bounds): For possible but unlikely tail arrays,
24892         call record_nonwrapping_iv with upper = false.
24893         (infer_loop_bounds_from_signedness): Pass upper argument to
24894         record_nonwrapping_iv.
24895         (estimate_numbers_of_iterations_loop): Do not call
24896         compute_estimated_nb_iterations.  Record estimate based on profile
24897         information.  Initialize the constant estimates of number of
24898         iterations.
24899         * tree-data-ref.c (estimated_loop_iterations): Return the recorded
24900         estimates.
24901         * tree-ssa-loop-prefetch.c (loop_prefetch_arrays): Add dump when
24902         number of iterations is too small.
24903         * cfgloop.h (struct nb_iter_bound): Remove "realistic" field.
24904         (EST_NOT_AVAILABLE): Removed.
24905         (struct loop): Replace estimated_nb_iterations by any_upper_bound,
24906         nb_iterations_upper_bound, any_estimate and nb_iterations_estimate
24907         fields.
24908
24909 2007-03-15  Zdenek Dvorak  <dvorakz@suse.cz>
24910
24911         * tree-ssa-loop-niter.c (refine_bounds_using_guard, bound_difference):
24912         Handle NE_EXPR guards.
24913
24914 2007-03-15  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
24915
24916         PR c++/24924
24917         * c-opts.c (c_common_post_options): Handle C++ post-processing here.
24918         Set also -pedantic-errors by default for the  preprocessor unless
24919         -fpermissive is given.
24920
24921 2007-03-15  Richard Guenther  <rguenther@suse.de>
24922
24923         PR middle-end/29719
24924         PR middle-end/31161
24925         * builtins.c (expand_builtin_cexpi): As a fallback if we
24926         don't have builtins for sincos or cexp create a function
24927         declaration for cexp and expand to a call to that.
24928         (expand_builtin_int_roundingfn): Always fall
24929         back to floor/ceil and its variants even if they may be
24930         not available.
24931
24932 2007-03-15  Steven Bosscher  <steven@gcc.gnu.org>
24933
24934         PR middle-end/31159
24935         * cfglayout.c (fixup_reorder_chain): Postpone deleting dead
24936         jump tables, move the call to delete_dead_jumptables from here...
24937         (cfg_layout_finalize): ...to here.  But rebuild jump labels first.
24938         * cfgrtl.c (cfg_layout_can_merge_blocks_p): When not optimizing,
24939         don't allow merging of blocks that try_redirect_by_replacing_jump
24940         also does not handle when not optimizing.
24941
24942 2007-03-15  Uros Bizjak  <ubizjak@gmail.com>
24943             Francois-Xavier Coudert  <coudert@clipper.ens.fr>
24944
24945         * config/i386/i386.md (x86_sahf_1): Correctly handle
24946         HAVE_AS_IX86_SAHF.
24947
24948 2007-03-15  Uros Bizjak  <ubizjak@gmail.com>
24949
24950         PR target/31167
24951         * config/i386/i386.md (*addti3_1, *addti3_1 splitter): Use
24952         x86_64_general_operand as operand[2] predicate.  Remove "iF"
24953         from operand constraints and use "e" constraint instead.
24954         (*subti3_1, *subti3_1 splitter): Ditto.
24955         (*negti2_1, *negti2_1 splitter): Use nonimmediate_operand as
24956         operand[1] predicate.
24957
24958 2007-03-14  Sebastian Pop  <sebastian.pop@inria.fr>
24959
24960         * tree-loop-linear.c (gather_interchange_stats): For multidimensional
24961         arrays, multiply the access strides by the size of the sub-array.
24962         * testsuite/gcc.dg/tree-ssa/ltrans-5.c: New.
24963
24964 2007-03-14  Uros Bizjak  <ubizjak@gmail.com>
24965
24966         * configure.ac (HAVE_AS_IX86_SAHF): On x86 targets check whether
24967         the configured assembler supports the sahf mnemonic.
24968         * configure: Regenerate.
24969         * config.in: Regenerate.
24970
24971         * config/i386/i386.md (x86_sahf_1): Depending on HAVE_AS_IX86_SAHF,
24972         emit "sahf" or ".byte\t0x9e" as asm template.
24973
24974 2007-03-14  Michael Meissner  <michael.meissner@amd.com>
24975
24976         PR 31018
24977         * config/i386/i386.h (X86_TUNE_SHORTEN_X87_SSE): New tuning
24978         option to replace hard coded TARGET_xxx in md file.
24979         (X86_TUNE_AVOID_VECTOR_DECODE): Ditto.
24980         (X86_TUNE_SLOW_IMUL_IMM32_MEM): Ditto.
24981         (X86_TUNE_SLOW_IMUL_IMM8): Ditto.
24982         (X86_TUNE_MOVE_M1_VIA_OR): Ditto.
24983         (X86_TUNE_NOT_UNPAIRABLE): Ditto.
24984         (X86_TUNE_NOT_VECTORMODE): Ditto.
24985         (TUNE_SHORTEN_X87_SSE): Use new tuning option.
24986         (TUNE_AVOID_VECTOR_DECODE): Ditto.
24987         (TUNE_SLOW_IMUL_IMM32_MEM): Ditto.
24988         (TUNE_SLOW_IMUL_IMM8): Ditto.
24989         (TUNE_MOVE_M1_VIA_OR): Ditto.
24990         (TUNE_NOT_UNPAIRABLE): Ditto.
24991         (TUNE_NOT_VECTORMODE): Ditto.
24992
24993         * config/i386/i386.c (ix86_tune_features): Fill in new tuning
24994         options.
24995
24996         * config/i386/i386.md (fix_trunc?f?1_sse peephole2): Use new
24997         tuning options instead of hard coded TARGET_xxx.
24998         (fix ssemode peephole2's): Ditto.
24999         (imul peephole2's): Ditto.
25000         (movsi_or): Ditto.
25001         (movdi_or_rex64): Ditto.
25002         (move peephole2): Ditto.
25003         (not peephole2's): Ditto.
25004
25005 2007-03-14  Dirk Mueller  <dmueller@suse.de>
25006
25007         * c-common.h (empty_body_warning): Rename to empty_if_body_warning.
25008         * c-common.c (empty_if_body_warning): Rephrase diagnostic message.
25009         * c-parser.c (c_parser_if_body): Always add an empty statement in case
25010         of empty body.
25011         * c-parser.c (c_parser_do_statement): Warn about empty body in
25012         do/while statement.
25013         * c-typeck (c_finish_if_stmt): Call empty_if_body_warning.
25014         * doc/invoke.texi (-Wempty-body): Update documentation.
25015
25016 2007-03-14  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
25017
25018         PR c/21438
25019         * c-common.h (warn_for_div_by_zero): Declare.
25020         * c-common.c (warn_for_div_by_zero): Define.
25021         * c-typeck.c (build_binary_op): Call warn_for_div_zero instead of
25022         warning.
25023
25024 2007-03-14  Richard Sandiford  <richard@codesourcery.com>
25025
25026         * Makefile.in (PREPROCESSOR_DEFINES): Add directory terminators
25027         to PREFIX and STANDARD_PREFIX.
25028
25029 2007-03-14  Richard Sandiford  <richard@codesourcery.com>
25030             Phil Edwards  <phil@codesourcery.com>
25031
25032         * gthr-vxworks.h: Add an extern "C" wrapper for C++.
25033         (__gthread_once_t): Remove busy field for RTPs.
25034         (__GTHREAD_ONCE_INIT): Update accordingly.
25035
25036 2007-03-14  Richard Sandiford  <richard@codesourcery.com>
25037
25038         * doc/invoke.texi: Document VxWorks options.
25039
25040 2007-03-14  Uros Bizjak  <ubizjak@gmail.com>
25041
25042         * doc/invoke.texi (i386 and x86-64 Options): Clarify -msahf option.
25043
25044 2007-03-13  Seongbae Park <seongbae.park@gmail.com>
25045
25046         PR tree-optimization/30590
25047         * tree-nrv.c (tree_nrv): Check for the partial update of the
25048         return value.
25049
25050 2007-03-13  Alexandre Oliva  <aoliva@redhat.com>
25051
25052         * flags.h (flag_random_seed): Remove declaration, in favor of...
25053         * toplev.h (get_random_seed, set_random_seed): ... these.
25054         * tree.c (get_file_function_name): Use the former.
25055         * opts.c (common_handle_option): Use the latter.
25056         * toplev.c
25057
25058 2007-03-13  Steven Bosscher  <steven@gcc.gnu.org>
25059
25060         PR middle-end/31127
25061         * cse.c (cse_find_path): Do not bail out if a basic block that
25062         we already visited now becomes part of a path that starts at a
25063         different basic block.  Just disallow this, to make sure we
25064         visit each basic block at most once.
25065
25066 2007-03-13  Jan Hubicka  <jh@suse.cz>
25067
25068         * ipa-inline.c (cgraph_maybe_hot_edge_p): Look for hot/cold
25069         attributes, when profile esitmate is present, calls with very low
25070         frequency are cold.
25071
25072 2007-03-13  Zdenek Dvorak  <dvorakz@suse.cz>
25073
25074         PR tree-optimization/30730
25075         PR tree-optimization/26900
25076         * tree-ssa-loop-niter.c: Include gmp.h.
25077         (bounds): New type.
25078         (mpz_set_double_int, get_type_bounds, mpz_to_double_int,
25079         split_to_var_and_offset, determine_value_range,
25080         bound_difference_of_offsetted_base, refine_bounds_using_guard,
25081         bound_difference, bounds_add, bounds_negate,
25082         number_of_iterations_ne_max, dump_affine_iv): New functions.
25083         (number_of_iterations_ne, number_of_iterations_lt_to_ne,
25084         assert_loop_rolls_lt, assert_loop_rolls_le): Use bounds on the
25085         difference of initial and final value of control iv to validate
25086         results.
25087         (number_of_iterations_cond): Add loop parameter.  Determine bounds
25088         on the difference of the extremes of the control iv.  Add dumps.
25089         (expand_simple_operations): Handle phi nodes.
25090         (simplify_using_initial_conditions): Do not record used conditions.
25091         (number_of_iterations_exit): Pass loop to number_of_iterations_cond.
25092         Do not set additional_info.
25093         (implies_nonnegative_p, implies_ge_p): Removed.
25094         (derive_constant_upper_bound): Do not use parameter `additional'.
25095         (record_estimate): Parameter `additional' removed.  Parameter
25096         `i_bound' added.  Do not call derive_constant_upper_bound.
25097         (record_nonwrapping_iv): Use derive_constant_upper_bound to
25098         bound the number of iterations estimate.
25099         (estimate_numbers_of_iterations_loop): Pass the estimate from
25100         the number of iterations analysis to record_estimate.
25101         * tree.h (multiple_of_p): Declare.
25102         * tree-scalar-evolution.c (expression_expensive_p): Removed.
25103         (scev_const_prop): Do not check expression_expensive_p.
25104         * fold-const.c (multiple_of_p): Exported.
25105         * double-int.c (double_int_mask): Exported.
25106         * double-int.h (double_int_mask): Declare.
25107         * tree-flow.h (struct tree_niter_desc): Removed additional_info
25108         field.  Added max field.
25109
25110 2007-03-13  David Taylor  <taylor@candd.org>
25111
25112         PR driver/12448:
25113         * gcc.c (cpp_unique_options): If -MT or -MQ is seen, don't pass
25114         default -MQ.
25115
25116 2007-03-13  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
25117
25118         PR target/31123
25119         * pa.md (vdepi_ior): Don't allow zero length deposit.  Likewise for
25120         two unamed patterns.
25121
25122 2007-03-13  Uros Bizjak  <ubizjak@gmail.com>
25123
25124         * config/i386/i386.opt (mcx16, msahf): New options.
25125         * config/i386/i386.c (x86_cmpxchg16b, x86_sahf): Remove.
25126         (ix86_tune_features) [X86_TUNE_USE_SAHF]: Enable for m_GENERIC.
25127
25128         * config/i386/driver-i386.c (bit_LAHF_LM): New define.
25129         (host_detect_local_cpu): Detect cx16 and lahf_lm cpuid bits.
25130         Output -mcx16 and -msahf options when corresponding bit is set.
25131
25132         * doc/invoke.texi (i386 and x86-64 Options): Document -mcx16
25133         and -msahf options.
25134
25135 2007-03-13  Alexandre Oliva  <aoliva@redhat.com>
25136
25137         * configure.ac: Test for assembler tolerance to # 0 "".
25138         * configure, config.in: Rebuilt.
25139         * final.c (final_scan_insn): Emit it if HAVE_AS_LINE_ZERO.
25140
25141 2007-03-13  Geoffrey Keating  <geoffk@apple.com>
25142
25143         * doc/invoke.texi (Spec Files): Update for '%{,' spec.
25144
25145         * config/rs6000/darwin-fallback.c: Compile file only on powerpc.
25146         (handle_syscall): Handle direct system calls.
25147         * config/rs6000/darwin.h (HAS_MD_FALLBACK_FRAME_STATE_FOR): Delete.
25148
25149 2007-03-12  Brooks Moses  <brooks.moses@codesourcery.com>
25150
25151         * doc/invoke.texi: Fix cpp.info cross-reference.
25152         * doc/passes.texi: Fix gcc.info cross-reference.
25153
25154 2007-03-12  Zdenek Dvorak  <dvorakz@suse.cz>
25155
25156         PR tree-optimization/30835
25157         * lambda-code.c (can_convert_to_perfect_nest): Check whether
25158         bb_for_stmt is not NULL before accessing it.
25159
25160 2007-03-12  Joseph Myers  <joseph@codesourcery.com>
25161
25162         * gcc.c (main): Handle target_sysroot_hdrs_suffix being NULL for
25163         some multilibs.
25164
25165 2007-03-12  Brooks Moses  <brooks.moses@codesourcery.com>
25166
25167         PR 30635
25168         * doc/install.texi: Document --enable-stage1-languages
25169
25170 2007-03-12  Steven Bosscher  <steven@gcc.gnu.org>
25171
25172         * tree-pass.h (pass_into_cfg_layout_mode,
25173         pass_outof_cfg_layout_mode): Declare.
25174         * cfglayout.c (into_cfg_layout_mode, outof_cfg_layout_mode,
25175         pass_into_cfg_layout_mode, pass_outof_cfg_layout_mode): New.
25176         * passes.c (pass_into_cfg_layout_mode): Schedule before jump2.
25177         (pass_outof_cfg_layout_mode): Schedule after pass_rtl_ifcvt.
25178
25179 2007-03-12  Seongbae Park <seongbae.park@gmail.com>
25180
25181         * c-decl.c (warn_variable_length_array): New function.
25182         Refactored from grokdeclarator to handle warn_vla
25183         and handle unnamed array case.
25184         (grokdeclarator): Refactored VLA warning case.
25185         * c.opt (Wvla): New flag.
25186         * doc/invoke.texi (Wvla): New warning.
25187
25188 2007-03-12  Richard Henderson  <rth@redhat.com>
25189
25190         * config/alpha/alpha.c (alpha_elf_section_type_flags): New.
25191         (TARGET_SECTION_TYPE_FLAGS): New.
25192
25193 2007-03-12  Richard Henderson  <rth@redhat.com>
25194
25195         * config/darwin.c (machopic_reloc_rw_mask): New.
25196         * config/darwin-protos.h (machopic_reloc_rw_mask): Declare.
25197         * config/darwin.h (TARGET_ASM_RELOC_RW_MASK): New.
25198
25199 2007-03-12  Mark Mitchell  <mark@codesourcery.com>
25200
25201         * cppdefault.c (cpp_EXEC_PREFIX): New variable.
25202         * cppdefault.h (cpp_PREFIX): Document.
25203         (cpp_PREFIX_len): Likewise.
25204         (cpp_EXEC_PREFIX): New variable.
25205         * Makefile.in (PREPROCESSOR_DEFINES): Add STANDARD_EXEC_PREFIX.
25206         * c-incpath.c (add_standard_paths): Correct logic for relocating
25207         paths within prefix.
25208
25209 2007-03-12  Uros Bizjak  <ubizjak@gmail.com>
25210
25211         * config/i386/i386.md (fixuns_trunc<mode>hi2): Implement from
25212         fixuns_truncsfhi2 and fixuns_truncdfhi2 using SSEMODEF
25213         mode macro.
25214         (fix_trunc<mode>di_sse): Implement from fix_truncsfdi_sse and
25215         fix_truncdfdi_sse using SSEMODEF mode macro.
25216         (fix_trunc<mode>si_sse): Implement from fix_truncsfsi_sse and
25217         fix_truncdfsi_sse using SSEMODEF mode macro.
25218         (fix_trunc?f?i_sse peephole2): Implement using SSEMODEF mode macro.
25219         (fix_trunc?f?i_sse K8 peephole2): Fix register constraint.
25220
25221 2007-03-12  Richard Sandiford  <richard@codesourcery.com>
25222
25223         * config.gcc (i[4567]86-wrs-vxworks, i[4567]86-wrs-vxworksae): Add
25224         elfos.h to tm_file.
25225
25226 2007-03-12  Olga Golovanevsky  <olga@il.ibm.com>
25227
25228         * tree.h : Add multiple_of_p declaration.
25229         * fold-const.c (multiple_of_p): Make multiple_of_p public.
25230         * ipa-type-escape.c (results_of_malloc): Redundant.
25231         (visited_stmts): New. Visited stmt for walk_use_def_chains.
25232         (cast_type): Extended with new members.
25233         (check_cast): Returns cast_type.
25234         (cast): New structure for data of walk_use_def_chains.
25235         (is_malloc_result, is_cast_from_non_pointer_1,
25236         is_cast_from_non_pointer,
25237         is_array_access_through_pointer_and_index): New functions.
25238         (look_for_casts): Returns cast types.
25239         (check_call): Returns void.
25240         (okay_pointer_operation): Use support of pointer plus index,
25241         pointer plus constant and allow all multiplications.
25242
25243 2007-03-11  Richard Guenther  <rguenther@suse.de>
25244
25245         PR tree-optimization/31115
25246         * tree-vrp.c (extract_range_from_binary_expr): Make sure
25247         the shift count is positive and non-anti-range for RSHIFT_EXPR.
25248         A shift count of zero is not special as with *_DIV_EXPR.
25249         (vrp_int_const_binop): Handle RSHIFT_EXPR for determining overflow
25250         direction.
25251
25252 2007-03-11  Ian Lance Taylor  <iant@google.com>
25253
25254         * tree-vrp.c (vrp_int_const_binop): Handle PLUS_EXPR and
25255         the *_DIV_EXPR codes correctly with overflow infinities.
25256
25257 2007-03-11  Ira Rosen  <irar@il.ibm.com>
25258
25259         * tree-data-ref.c (analyze_offset): Add a return value (bool) to
25260         indicate success/failure of the analysis. Add negation to subtrahend
25261         in case of subtraction. Fail if both operands contain constants.
25262         (create_data_ref): Fail if analyze_offset fails.
25263
25264 2007-03-11  Uros Bizjak  <ubizjak@gmail.com>
25265
25266         * config/i386/i386.md (frndintxf2): Rename to ...
25267         (rintxf2): ... this. Remove expander having same name.
25268         (rintsf2, rintdf2): Implement using SSEMODEF macro.
25269         (roundsf2, rounddf2): Ditto.
25270         (lrint<mode>di2, lrint<mode>si2): Implement using SSEMODEI24 macro.
25271         (lround<mode>di2, lround<mode>si2): Ditto.
25272
25273 2007-03-11  Steven Bosscher  <steven@gcc.gnu.org>
25274
25275         * lower-subreg.c: Include except.h.
25276         (decompose_multiword_subregs): Verify that the only control flow
25277         insns we can split are loads to multi-words pseudos.
25278         Handle breaking such blocks after splitting, instead of calling
25279         find_many_sub_basic_blocks.
25280
25281         * loop-unroll.c (split_edge_and_insert): Don't set BB_SUPERBLOCK
25282         on the new basic block.  Add a lengthy comment explaining why we
25283         thought this was necessary.
25284         * cfglayout.c (cfg_layout_finalize): Don't break superblocks.
25285
25286 2007-03-10  Mark Mitchell  <mark@codesourcery.com>
25287
25288         PR c++/30924
25289         * tree.c (walk_type_fields): Recurse into the element type of
25290         ARRAY_TYPEs if there is a pointer set.
25291
25292 2007-03-10  Dirk Mueller  <dmueller@suse.de>
25293
25294         * c-common.c (warn_logical_operator): Fix condition.
25295
25296 2007-03-10  Tobias Schl�ter  <tobi@gcc.gnu.org>
25297
25298         * config/i386/darwin.h (DARWIN_MINVERSION_SPEC): Add missing
25299         quotation mark.
25300         * config/darwin.c (machopic_select_section): Remove superfluous
25301         argument in call to categorize_decl_for_section.  Remove unused
25302         variable shlib.
25303
25304 2007-03-10  Joseph Myers  <joseph@codesourcery.com>
25305
25306         * configure.ac (glibc_header_dir): Set using with_build_sysroot if
25307         defined.
25308         * configure: Regenerate.
25309
25310 2007-03-10  Uros Bizjak  <ubizjak@gmail.com>
25311
25312         PR target/31101
25313         * config/i386/i386.md (UNSPEC_C2_FLAG): New constant.
25314         (fpremxf4_i387, fprem1xf4_i387): Use UNSPEC_C2_FLAG.
25315         (fmodxf3, fmod<mode>3, remainderxf3, remainder<mode>3):
25316         Add LABEL_NUSES to emitted label.
25317         * config/i386/i386.c (ix86_emit_fp_unordered_jump): Add
25318         branch probability value to emitted jump insn.
25319         * reg-stack.c (subst_stack_regs_pat)[UNSPEC]: Handle UNSPEC_C2_FLAG.
25320         Do not check life information and do not re-arrange input operands
25321         for UNSPEC_FSCALE_EXP, UNSPEC_FPREM_U and UNSPEC_FPREM1_U.
25322
25323 2007-03-10  Kaz Kojima  <kkojima@gcc.gnu.org>
25324
25325         * config/sh/sh.c (sh_insn_length_adjustment): Adjust for
25326         the change of decode_asm_operands.
25327
25328 2007-03-10  Kaz Kojima  <kkojima@gcc.gnu.org>
25329
25330         * mode-switching.c (create_pre_exit): Skip blockage insn.
25331
25332 2007-03-09  Diego Novillo  <dnovillo@redhat.com>
25333
25334         * tree-pass.h (TODO_update_smt_usage): Remove.
25335         Update all users.
25336         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Remove
25337         argument SOME.
25338         Update all users.
25339
25340 2007-03-09  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
25341
25342         * pa.c (attr_length_call): Revise condition for long
25343         pc-relative branch.
25344         (output_call): Use "LONG_PIC_SDIFF" instruction sequence for long
25345         local calls on the SOM target.  Don't use "LONG_PIC_PCREL" call
25346         sequence on SOM target.
25347
25348 2007-03-09  Geoffrey Keating  <geoffk@apple.com>
25349
25350         * gcc.c: Document %{, in big comment at top.
25351         (input_suffix_matches): Remove special handling for .s and
25352         .S.
25353         (input_spec_matches): New.
25354         (handle_braces): Handle %{,.
25355         (validate_switches): ',' indicates a value which is not a switch.
25356         * config/alpha/osf.h (ASM_FINAL_SPEC): Use %{, rather than %{.
25357         to detect assembler input.
25358         * config/i386/sol2.h (CPP_SPEC): Likewise.
25359         * config/rs6000/sysv4.h (ASM_SPEC): Likewise.
25360         * config/rs6000/vxworks.h (ASM_SPEC): Likewise.
25361         * config/rs6000/lynx.h (ASM_SPEC): Likewise.
25362         * config/rs6000/linux64.h (ASM_SPEC_COMMON): Likewise.
25363         * config/i386/darwin.h (DARWIN_MINVERSION_SPEC): Objective-C plus
25364         -m64 causes deployment target to default to 10.5.
25365         * config/rs6000/darwin.h (DARWIN_MINVERSION_SPEC): Likewise.
25366
25367 2007-03-09  Richard Henderson  <rth@redhat.com>
25368
25369         PR target/26090
25370         * target.h (targetm.asm.out.reloc_rw_mask): New.
25371         * target-def.h (TARGET_ASM_RELOC_RW_MASK): New.
25372         (TARGET_ASM_OUT): Use it.
25373         * targhooks.c, targhooks.h (default_reloc_rw_mask): New.
25374         * varasm.c (categorize_decl_for_section): Remove shlib argument;
25375         use the new reloc_rw_mask target hook instead.
25376         (default_section_type_flags_1): Merge into...
25377         (default_section_type_flags): ... here.
25378         (decl_readonly_section_1): Merge into...
25379         (decl_readonly_section): ... here.
25380         (default_elf_select_section_1): Merge into...
25381         (default_elf_select_section): ... here.
25382         (default_unique_section_1): Merge into...
25383         (default_unique_section): ... here.
25384         (compute_reloc_for_rtx_1, compute_reloc_for_rtx): New.
25385         (default_select_rtx_section): Use it.
25386         (default_elf_select_rtx_section): Likewise.
25387         * output.h: Update to match.
25388         * doc/tm.texi (TARGET_ASM_RELOC_RW_MASK): New.
25389         * config/alpha/alpha.c (alpha_elf_reloc_rw_mask): New.
25390         (TARGET_ASM_RELOC_RW_MASK): New.
25391         * config/i386/i386.c (x86_64_elf_select_section): Adjust call
25392         to categorize_decl_for_section.
25393         (x86_64_elf_unique_section): Likewise.
25394         * config/ia64/hpux.h (TARGET_ASM_SELECT_SECTION,
25395         TARGET_ASM_UNIQUE_SECTION, TARGET_ASM_SELECT_RTX_SECTION): Remove.
25396         (TARGET_ASM_RELOC_RW_MASK): New.
25397         * config/ia64/ia64.c (ia64_rwreloc_select_section,
25398         ia64_rwreloc_unique_section, ia64_rwreloc_select_rtx_section): Remove.
25399         (ia64_hpux_reloc_rw_mask, ia64_reloc_rw_mask): New.
25400         (TARGET_RWRELOC): Remove.
25401         (ia64_section_type_flags): Adjust call to default_section_type_flags.
25402         * config/ia64/sysv4.h (TARGET_ASM_RELOC_RW_MASK): New.
25403         * config/rs6000/rs6000.c (rs6000_elf_section_type_flags): Remove.
25404         (rs6000_elf_select_section, rs6000_elf_unique_section): Remove.
25405         (rs6000_elf_reloc_rw_mask, rs6000_xcoff_reloc_rw_mask): New.
25406         (rs6000_xcoff_select_section): Use decl_readonly_section.
25407         (rs6000_xcoff_section_type_flags): Use default_section_type_flags.
25408         * config/rs6000/sysv4.h (TARGET_ASM_RELOC_RW_MASK): New.
25409         (TARGET_ASM_SELECT_SECTION, TARGET_ASM_UNIQUE_SECTION): Remove.
25410         (TARGET_SECTION_TYPE_FLAGS): Remove.
25411         * config/rs6000/xcoff.h (TARGET_ASM_RELOC_RW_MASK): New.
25412
25413 2007-03-09  Roger Sayle  <roger@eyesopen.com>
25414
25415         * fold-const.c (fold_comparison): Remove compile-time evaluation of
25416         complex constant equality/inequality comparisons for here.
25417         (fold_binary) <EQ_EXPR>: Simplify complex comparisons that are
25418         known at compile-time or can be simplified to a scalar comparison.
25419         (fold_relational_const): Move compile-time evaluation of complex
25420         constant equality/inequality comparisons to here.
25421
25422 2007-03-09  Alexandre Oliva  <aoliva@redhat.com>
25423
25424         PR rtl-optimization/30643
25425         * cse.c (cse_insn): Recompute dest_hash after insert_regs for
25426         dest_addr_elt.
25427         (fold_rtx): Recurse, like before 2006-11-03.
25428
25429 2007-03-09  DJ Delorie  <dj@redhat.com>
25430
25431         * config/m32c/t-m32c (m32c-pragma.o): Add TM_H dependency to
25432         m32c-pragma.o.
25433
25434 2007-03-09  Aldy Hernandez  <aldyh@redhat.com>
25435
25436         PR tree-optimization/30375
25437         * tree-ssa-dse.c (dse_possible_dead_store_p): Do not eliminate if
25438         LHS of statements is not the same.
25439         * testsuite/gcc.dg/tree-ssa/ssa-dse-10.c: New.
25440
25441 2007-03-09  Chao-ying Fu  <fu@mips.com>
25442
25443         * doc/extend.texi (MIPS DSP Built-in Functions): Document the DSP
25444         REV 2.
25445         * doc/invoke.texi (-mdspr2): Document new option.
25446         * config/mips/mips.md (UNSPEC_ABSQ_S_QB .. UNSPEC_DPSQX_SA_W_PH):
25447         New unspec for DSP REV 2.
25448         (<u>mulsidi3_32bit_internal): Check if !TARGET_DSPR2, because
25449         these instructions are extended in DSP REV 2.
25450         (mips-dspr2.md): Include.
25451         * config/mips/mips.opt (mdspr2): New option.
25452         * config/mips/mips.c (mips_function_type): Add MIPS_V4QI_FTYPE_V4QI,
25453         MIPS_SI_FTYPE_SI_SI_SI, MIPS_DI_FTYPE_DI_USI_USI, MIPS_DI_FTYPE_SI_SI,
25454         MIPS_DI_FTYPE_USI_USI, MIPS_V2HI_FTYPE_SI_SI_SI.
25455         (override_options): Check TARGET_DSPR2 to enable MASK_DSP.
25456         (CODE_FOR_mips_mul_ph): Define it to CODE_FOR_mulv2hi3.
25457         (dsp_bdesc): Add DSP REV 2 builtins.  Remove 32-bit only DSP builtins.
25458         (dsp_32only_bdesc): New description table for 32-bit only DSP REV 1
25459         and 2 builtins.
25460         (bdesc_map): Add one field of unsupported_target_flags.
25461         (bdesc_arrays): Update entries to have extra fields.  Add
25462         dsp_32only_bdesc.
25463         (mips_init_builtins): Initialize new function types.
25464         Check unsupported_target_fileds to filter out builtins.
25465         * config/mips/mips.h (TARGET_CPU_CPP_BUILTINS): Define __mips_dspr2 if
25466         TARGET_DSPR2.
25467         (ASM_SPEC): Pass mdspr2 to the assembler.
25468         * config/mips/mips-dspr2.md: New file.
25469
25470 2007-03-09  Sa Liu  <saliu@de.ibm.com>
25471
25472         * config/rs6000/altivec.md: Fix vcond patterns using if_then_else.
25473
25474 2007-03-09  Ian Lance Taylor  <iant@google.com>
25475
25476         * opts.c (common_handle_option): Treat -Wstrict-overflow (with no
25477         argument) like -Wstrict-overflow=2.
25478         * doc/invoke.texi (Warning Options): Update documentation.
25479
25480 2007-03-09  Dirk Mueller  <dmueller@suse.de>
25481
25482         PR c++/17946
25483         * doc/invoke.texi (-Wlogical-op): Document.
25484         * common.opt (-Wlogical-op): New.
25485         * c-common.h (warn_logical_operator): Declare.
25486         * c-common.c (warn_logical_operator): Define.
25487         * c-typeck.c (parser_build_binary_op): Call
25488         warn_logical_operator.
25489
25490 2007-03-09  Alexandre Oliva  <aoliva@redhat.com>
25491
25492         * rtl.h (gen_rtx_ASM_INPUT): Use "" instead of NULL file name.
25493         * final.c (final_scan_insn): Test for non-"" file name.
25494
25495 2007-03-09  Sebastian Pop  <sebastian.pop@inria.fr>
25496
25497         * doc/loop.texi: Document the Omega linear constraints solver.
25498         * doc/invoke.texi: Document -fcheck-data-deps, omega-max-vars,
25499         omega-max-geqs, omega-max-eqs, omega-max-wild-cards,
25500         omega-hash-table-size, omega-max-keys, and
25501         omega-eliminate-redundant-constraints.
25502         * tree-pass.h (pass_check_data_deps): Declared.
25503         * omega.c: New.
25504         * omega.h: New.
25505         * timevar.def (TV_CHECK_DATA_DEPS): Declared.
25506         * tree-ssa-loop.c (check_data_deps, gate_check_data_deps,
25507         pass_check_data_deps): New.
25508         * tree-data-ref.c (init_data_ref): Remove declaration.
25509         (dump_data_dependence_relation): Dump DDR_INNER_LOOP.
25510         (analyze_array): Renamed init_array_ref, move up initializations.
25511         (init_data_ref): Renamed init_pointer_ref.  Moved before its call.
25512         Removed arguments that are set to NULL.
25513         (analyze_indirect_ref): Correct indentation, correct call to
25514         init_pointer_ref.
25515         (object_analysis): Call init_array_ref instead of analyze_array.
25516         (initialize_data_dependence_relation): Initialize DDR_INNER_LOOP.
25517         (access_functions_are_affine_or_constant_p): Use DR_ACCESS_FNS instead
25518         of DR_ACCESS_FNS_ADDR.
25519         (init_omega_eq_with_af, omega_extract_distance_vectors,
25520         omega_setup_subscript, init_omega_for_ddr_1, init_omega_for_ddr,
25521         ddr_consistent_p): New.
25522         (compute_affine_dependence): Check consistency of ddrs when
25523         flag_check_data_deps is passed.
25524         (analyze_all_data_dependences): Uncomment.
25525         (tree_check_data_deps): New.
25526         * tree-data-ref.h: Include omega.h.
25527         (DR_ACCESS_FNS_ADDR): Removed.
25528         (data_dependence_relation): Add inner_loop.
25529         (DDR_INNER_LOOP): New.
25530         * common.opt (fcheck-data-deps): New.
25531         * tree-flow.h (tree_check_data_deps): Declare.
25532         * Makefile.in (TREE_DATA_REF_H): Depend on omega.h.
25533         (OBJS-common): Depend on omega.o.
25534         (omega.o): Define.
25535         * passes.c (pass_check_data_deps): Scheduled.
25536         * params.def (PARAM_OMEGA_MAX_VARS, PARAM_OMEGA_MAX_GEQS,
25537         PARAM_OMEGA_MAX_EQS, PARAM_OMEGA_MAX_WILD_CARDS,
25538         PARAM_OMEGA_HASH_TABLE_SIZE, PARAM_OMEGA_MAX_KEYS,
25539         PARAM_VECT_MAX_VERSION_CHECKS,
25540         PARAM_OMEGA_ELIMINATE_REDUNDANT_CONSTRAINTS): New.
25541
25542 2007-03-09  Richard Guenther  <rguenther@suse.de>
25543
25544         PR tree-optimization/30904
25545         PR middle-end/31058
25546         * tree-vrp.c (extract_range_from_binary_expr): Handle RSHIFT_EXPR
25547         the same way as *_DIV_EXPR.
25548
25549 2007-03-09  Alexandre Oliva  <aoliva@redhat.com>
25550
25551         * recog.c (decode_asm_operands): No mixed declarations and code.
25552
25553 2007-03-09  Alexandre Oliva  <aoliva@redhat.com>
25554
25555         * rtl.def (ASM_INPUT): Add location.
25556         * rtl.h (ASM_INPUT_SOURCE_LOCATION): New.
25557         (ASM_INPUT_SOURCE_FILE, ASM_INPUT_SOURCE_LINE): New.
25558         (decode_asm_operands): Add loc operand.
25559         (gen_rtx_ASM_INPUT, gen_rtx_ASM_INPUT_loc): Define.
25560         * stmt.c (expand_asm): Rename to...
25561         (expand_asm_loc): ... this.  Add locus argument.  Pass it on to
25562         gen_rtx_ASM_INPUT_loc.
25563         (expand_asm_expr): Adjust.
25564         * recog.c (decode_asm_operands): Add loc operand.
25565         (check_asm_operands, extract_insn): Adjust.
25566         * reload1.c (maybe_fix_stack_asms): Likewise.
25567         * final.c (asm_insn_count): Likewise.
25568         (final_scan_insn): Output # line before and after asm.
25569
25570 2007-03-09  Daniel Berlin  <dberlin@dberlin.org>
25571
25572         * tree-ssa-structalias.c (variable_info): Remove
25573         finished_solution.
25574         (new_var_info): Ditto.
25575         (shared_bitmap_info_t): New structure.
25576         (shared_bitmap_table): New variable.
25577         (shared_bitmap_hash): New function.
25578         (shared_bitmap_eq): Ditto
25579         (shared_bitmap_lookup): Ditto.
25580         (shared_bitmap_add): Ditto.
25581         (merge_smts_into): Change to take bitmap directly.
25582         (find_what_p_points_to): Rewrite to use shared bitmap hashtable.
25583         (init_alias_vars): Init shared bitmap hashtable.
25584         (delete_points_to_sets): Delete shared bitmap hashtable.
25585         * tree-ssa-operands.c (add_virtual_operand): Partially revert the
25586         is_aliased removal as a change that was still necessary was
25587         deleted.
25588
25589 2007-03-09  Uros Bizjak  <ubizjak@gmail.com>
25590
25591         * config/i386/i386.h (override_options): Conditionally disable
25592         x86_sahf for 64bit targets only.
25593
25594 2007-03-08  Andrew Pinski  <andrew_pinski@playstation.sony.com>
25595
25596         PR C/31072
25597         * c-decl.c (merge_decls): Don't call make_var_volatile.
25598         * varasm.c (make_var_volatile): Remove.
25599         * output.h (make_var_volatile): Remove.
25600
25601 2007-03-08  Zdenek Dvorak  <dvorakz@suse.cz>
25602
25603         PR tree-optimization/31085
25604         * tree-ssa-address.c (create_mem_ref): Fix test of type of base.
25605
25606 2007-03-08  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
25607
25608         * builtins.def (lceil, lceilf, lceill, lfloor, lfloorf, lfloorl,
25609         llceil, llceilf, llceill, llfloor, llfloorf, llfloorl): Mark with
25610         ATTR_CONST_NOTHROW_LIST.
25611
25612         * fold-const.c (tree_expr_nonnegative_warnv_p): Handle
25613         FIX_TRUNC_EXPR.
25614
25615 2007-03-08  Diego Novillo  <dnovillo@redhat.com>
25616
25617         * doc/tree-ssa.texi: Remove documentation for V_MUST_DEF.
25618
25619 2007-03-08  Geoffrey Keating  <geoffk@apple.com>
25620
25621         PR 31013
25622         * gccspec.c (lang_specific_driver): Do nothing when NEXT_OBJC_RUNTIME
25623         is declared.
25624         * config/darwin.h (REAL_LIBGCC_SPEC): When -fgnu-runtime is
25625         passed, use shared libgcc.
25626
25627 2007-03-08  Roger Sayle  <roger@eyesopen.com>
25628
25629         * tree-eh.c (do_return_redirection): Call build_gimple_modify_stmt
25630         instead of calling build2 with a GIMPLE_MODIFY_STMT.
25631         (honor_protect_cleanup_actions, lower_try_finally_switch):
25632         Likewise.
25633         * tree-if-conv.c (replace_phi_with_cond_gimple_modify_stmt,
25634         ifc_temp_var): Likewise.
25635         * tree-inline.c (setup_one_parameter): Likewise.
25636         * tree-mudflap.c (mf_decl_cache_locals,
25637         mf_build_check_statement_for): Likewise.
25638         * tree-nested.c (init_tmp_var, save_tmp_var,
25639         finalize_nesting_tree_1): Likewise.
25640         * tree-outof-ssa.c (insert_copy_on_edge,
25641         insert_backedge_copies): Likewise.
25642         * tree-profile.c (tree_gen_edge_profiler,
25643         tree_gen_ic_profiler): Likewise.
25644         * tree-scalar-evolution.c (scev_const_prop): Likewise.
25645         * tree-sra.c (sra_build_assignment): Likewise.
25646         * tree-ssa-loop-im.c (determine_invariantness_stmt): Likewise.
25647         * tree-ssa-math-opts.c (insert_reciprocals,
25648         execute_cse_sincos_1): Likewise.
25649         * tree-tailcall.c (adjust_accumulator_values,
25650         adjust_return_value): Likewise.
25651         * tree-vect-patterns.c (vect_pattern_recog_1): Likewise.
25652         * tree-vect-transform.c (vect_create_data_ref_ptr,
25653         bump_vector_ptr, vect_init_vector, get_initial_def_for_induction,
25654         vect_create_epilog_for_reduction, vectorizable_reduction,
25655         vectorizable_call, vectorizable_conversion,
25656         vectorizable_assignment, vectorizable_operation,
25657         vectorizable_type_demotion, vect_gen_widened_results_half,
25658         vect_permute_store_chain, vectorizable_store,
25659         vect_setup_realignment, vect_permute_load_chain,
25660         vectorizable_load, vectorizable_condition,
25661         vect_create_cond_for_align_checks): Likewise.
25662         * tree-vrp.c (build_assert_expr_for): Likewise.
25663
25664 2007-03-08  Ian Lance Taylor  <iant@google.com>
25665
25666         * tree-vrp.c: Include "intl.h".
25667         (usable_range_p): New static function.
25668         (compare_values_warnv): Don't test TYPE_OVERFLOW_UNDEFINED for
25669         overflowed values, juts set *strict_overflow_p.
25670         (compare_values): Only return -2 if one of the operands is not a
25671         constant.
25672         (compare_ranges): Call usable_range_p.
25673         (compare_range_with_value): Likewise.
25674         (vrp_evaluate_conditional_warnv): Rename from
25675         vrp_evaluate_conditional.  Make static.  Change all callers.
25676         (vrp_evaluate_conditional): New function.
25677         (simplify_div_or_mod_using_ranges): Issue warning about reliance
25678         on signed overflow.
25679         (simplify_abs_using_ranges): Likewise.
25680         (simplify_stmt_for_jump_threading): Add within_stmt parameter.
25681         * tree-ssa-dom.c (simplify_stmt_for_jump_threading): Add
25682         within_stmt parameter.
25683         * tree-ssa-propagate.c (fold_predicate_in): Update call to
25684         vrp_evaluate_conditional.
25685         * tree-ssa-threadedge.c
25686         (record_temporary_equivalences_from_stmts_at_dest): Change
25687         simplify parameter to take a second tree parameter.
25688         (simplify_control_stmt_condition): Likewise.
25689         (thread_across_edge): Likewise.
25690         * tree-flow.h (vrp_evaluate_conditional): Update declaration.
25691         (thread_across_edge): Likewise.
25692         * Makefile.in (tree-vrp.o): Depend upon intl.h.
25693
25694 2007-03-08  Uros Bizjak  <ubizjak@gmail.com>
25695
25696         * config/i386/i386.h (TARGET_SAHF): New define.
25697         * config/i386/i386.c (ix86_tune_features) [X86_TUNE_USE_SAHF]:
25698         Also enable for m_K8, m_AMDFAM10 and m_CORE2.
25699         (x86_sahf): New global variable.
25700         (override_options): Add PTA_NO_SAHF to pta_flags enum.  Recode
25701         pta_flags masks using shifts.  Add PTA_NO_SAHF to x86_64 and
25702         nocona processor flags.  Set x86_sahf when PTA_NO_SAHF is not set
25703         in processor flags.  Do not unconditionally disable TARGET_USE_SAHF
25704         for 64-bit.
25705         (ix86_fp_comparison_sahf_cost): Return high value for !TARGET_SAHF.
25706         (ix86_expand_fp_compare): Check for TARGET_CMOVE or TARGET_SAHF
25707         when expanding fcomi/sahf based tests.
25708         (ix86_emit_fp_unordered_jump): Check for TARGET_SAHF when
25709         expanding sahf based alternative. Emit sahf based sequence when
25710         optimizing for code size.
25711         * config/i386/i386.md (x86_sahf_1): Do not disable for
25712         TARGET_64BIT, enable for TARGET_SAHF.
25713
25714 2007-03-08  Martin Michlmayr  <tbm@cyrius.com>
25715
25716         * tree-ssa-coalesce.c (fail_abnormal_edge_coalesce): Remove
25717         spurious whitespace from error message.
25718
25719 2007-03-08  Volker Reichelt  <reichelt@netcologne.de>
25720
25721         PR c++/30852
25722         * c-common.c (fold_offsetof_1): Handle COMPOUND_EXPR.
25723
25724 2007-03-08  Alexandre Oliva  <aoliva@redhat.com>
25725
25726         * c-decl.c (grokdeclarator): Disable warnings for anonymous
25727         bitfields.
25728         * tree-sra.c (instantiate_element): Propagate disabled warnings
25729         from the element itself to the created variable.
25730
25731 2007-03-07  Richard Henderson  <rth@redhat.com>
25732
25733         PR target/30848
25734         * reg-stack.c (emit_swap_insn): If a malformed asm was seen,
25735         silently fix up the stack in the case of a missing register.
25736
25737 2007-03-07  Paul Brook  <paul@codesourcery.com>
25738
25739         * config/arm/libunwind.S: Add .arch/.object_arch for armv4 builds.
25740
25741 2007-03-07  Joseph Myers  <joseph@codesourcery.com>
25742
25743         * config/arm/unwind-arm.c (struct wmmxd_regs, struct wmmxc_regs):
25744         New.
25745         (phase1_vrs): Use them.
25746         (DEMAND_SAVE_WMMXD, DEMAND_SAVE_WMMXC): New.
25747         (__gnu_Unwind_Save_WMMXD, __gnu_Unwind_Restore_WMMXD,
25748         __gnu_Unwind_Save_WMMXC, __gnu_Unwind_Restore_WMMXC): Declare.
25749         (restore_non_core_regs): Call __gnu_Unwind_Restore_WMMXD and
25750         __gnu_Unwind_Restore_WMMXC if required.
25751         (_Unwind_VRS_Pop): Implement iWMMXt support.
25752         * config/arm/libunwind.S (gnu_Unwind_Restore_WMMXD,
25753         gnu_Unwind_Save_WMMXD, gnu_Unwind_Restore_WMMXC,
25754         gnu_Unwind_Save_WMMXC): Define.
25755
25756 2007-03-07  Richard Sandiford  <richard@codesourcery.com>
25757
25758         * config/vxworks.h (vxworks_override_options): Declare.
25759         (VXWORKS_OVERRIDE_OPTIONS): Use it.
25760         * config/vxworks.c: Include target.h and toplev.h.
25761         (vxworks_override_options): New function.
25762         * config/t-vxworks (vxworks.o): Depend on $(TARGET_H) and toplev.h.
25763
25764 2007-03-07  Andreas Krebbel  <krebbel1@de.ibm.com>
25765
25766         * config/s390/s390.c (override_options): Don't emit an error when
25767         -mstack-size is used without providing -mstack-guard.
25768         (s390_emit_prologue): Choose stack_guard value automatically if not
25769         provided via command line.
25770         * doc/invoke.texi: Adjust description of -mstack-guard and
25771         -mstack-size.
25772
25773 2007-03-07  Richard Sandiford  <richard@codesourcery.com>
25774
25775         * config/i386/i386.c (output_set_got): Add a GOT initialization
25776         sequence for VxWorks PIC.
25777         (legitimate_pic_address_disp_p): Allow UNSPEC_GOT wrappers
25778         around labels as well as symbols.  Use gotoff_operand instead
25779         of local_symbolic_operand.
25780         (legitimize_pic_address): Use gotoff_operand instead of
25781         local_symbolic_operand.  Use @GOT accesses for labels as
25782         well as symbols.
25783         (ix86_output_addr_diff_elt): Use PC-relative rather than
25784         GP-relative offsets for VxWorks PIC.
25785         (ix86_expand_move): Pass NULL_RTX to legitimize_pic_address unless
25786         no_new_pseudos.  Check whether the returned register is op0.
25787         * config/i386/i386.md (tablejump): Use PC-relative rather than
25788         GP-relative offsets for VxWorks PIC.
25789         * config/i386/predicates.md (gotoff_operand): New predicate.
25790
25791 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
25792
25793         * config/vxworks.h (VXWORKS_GOTT_BASE, VXWORKS_GOTT_INDEX): Undefine
25794         before defining.
25795         * config/vxworks-dummy.h: New file.
25796         * config/i386/i386.h: Include it.
25797
25798 2007-03-07  Alexandre Oliva  <aoliva@redhat.com>
25799
25800         * dwarf2out.c (is_inlined_entry_point): New
25801         (add_high_low_attributes): Emit DW_AT_entry_pc along with
25802         DW_AT_ranges if the first subblock is the entry point.
25803
25804 2007-03-06  David Daney  <ddaney@avtrex.com>
25805
25806         * doc/install.texi (mips-*-*): Change recommended binutils
25807         version.
25808
25809 2007-03-06  Anatoly Sokolov <aesok@post.ru>
25810
25811         * config/avr/avr.c (avr_mcu_types): Add support for ATmega325P,
25812         ATmega3250P, ATmega329P, ATmega3290P, AT90USB82 and AT90USB162
25813         devices.
25814         * config/avr/avr.h (LINK_SPEC, CRT_BINUTILS_SPECS): (Ditto.).
25815         * config/avr/t-avr (MULTILIB_MATCHES): (Ditto.).
25816
25817 2007-03-06  Jan Hubicka  <jh@suse.cz>
25818
25819         * errors.h (warning, error, fatal, internal_error): Mark as cold.
25820         * predict.c (maybe_hot_bb): Cold functions are never hot; hot
25821         functions are hot.
25822         (probably_cold_bb_p): Cold functions are cold.
25823         (probably_never_executed_bb_p): Cold functions are cold.
25824         (tree_bb_level_predictions): Predict calls to cold functions as not
25825         taken.
25826         (compute_function_frequency): Check hot/cold attributes.
25827         * function.h (function_frequency): Update comments.
25828         * predict.def (PRED_COLD_FUNCTION): Predict cold function.
25829         * c-common.c (handle_hot_attribute, handle_cold_attribute): New.
25830         (c_common_att): Add cold and hot.
25831
25832         * doc/extend.texi (hot,cold attributes): Document.
25833
25834 2007-03-06  Andrew Haley  <aph@redhat.com>
25835
25836         * function.c (expand_function_end): Move blockage to just after we
25837         emit the label for the naked return from the function.
25838
25839 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
25840
25841         * config/i386/att.h (ASM_OUTPUT_ASCII, ASM_OUTPUT_SKIP): Undefine
25842         before redefining.
25843
25844 2007-03-06  Jan Hubicka  <jh@suse.cz>
25845
25846         * reg-stack.c (reg_to_stack): Large models don't allow NAN to be
25847         loaded for constant large models.  Non-large 64bit PIC can do.
25848         * i386.h (CASE_VECTOR_MODE): Large PIC cases are 64bit.
25849         * cmodel.h: Add LARGE PIC.
25850         * i386.md (UNSPEC_PLTOFF): New.
25851         (UNSPEC_SET_RIP, UNSPEC_SET_GOT_OFFSET): New; renumber other
25852         unspecs as needed.
25853         (*call_1_rex64): Disable for large models.
25854         (*call_1_rex64_large): New.
25855         (*call_value_1_rex64): Disable for large models.
25856         (*call_value_1_rex64_large): New.
25857         (set_rip_rex4): New.
25858         (set_got_offset_rex64): New.
25859         * predicates.md (constant_call_address_operand): For large model
25860         constant calls are not possible.
25861         * i386-protos.h (construct_plt_address): Declare.
25862         * i386.c (override_options): Accept large models.
25863         (ix86_expand_prologue): Expand large PIC GOT pointer load.
25864         (legitimate_constant_p): Add new UNSPECs.
25865         (legitimate_pic_operand_p): Likewise.
25866         (legitimate_pic_address_disp_p): Disallow local symbols for large PICs.
25867         (legitimize_pic_address): Do easy RIP relative way for TLS only for
25868         non-large model.
25869         (output_pic_addr_const): Add PLTOFF.
25870         (ix86_output_addr_diff_elt): Output 64bit tables when needed.
25871         (ix86_expand_move): Legitimize pic address when in PIC mode.
25872         (construct_plt_address): New function.
25873         (ix86_expand_call): Offload the address to register and use GOT
25874         pointer for large model.
25875         * invoke.texi (mcmodel=large): Update documentation.
25876
25877 2007-03-06  Richard Henderson  <rth@redhat.com>
25878
25879         * config/i386/i386.c (x86_use_leave, x86_push_memory,
25880         x86_zero_extend_with_and, x86_movx, x86_double_with_add,
25881         x86_use_bit_test, x86_unroll_strlen, x86_deep_branch,
25882         x86_branch_hints, x86_use_sahf, x86_partial_reg_stall,
25883         x86_partial_flag_reg_stall, x86_use_himode_fiop, x86_use_simode_fiop,
25884         x86_use_mov0, x86_use_cltd, x86_read_modify_write, x86_read_modify,
25885         x86_split_long_moves, x86_promote_QImode, x86_fast_prefix,
25886         x86_single_stringop, x86_qimode_math, x86_promote_qi_regs,
25887         x86_himode_math, x86_promote_hi_regs, x86_sub_esp_4, x86_sub_esp_8,
25888         x86_add_esp_4, x86_add_esp_8, x86_integer_DFmode_moves,
25889         x86_partial_reg_dependency, x86_memory_mismatch_stall,
25890         x86_prologue_using_move, x86_epilogue_using_move, x86_shift1,
25891         x86_sse_partial_reg_dependency, x86_sse_split_regs,
25892         x86_sse_unaligned_move_optimal, x86_sse_typeless_stores,
25893         x86_sse_load0_by_pxor, x86_use_ffreep, x86_use_incdec,
25894         x86_inter_unit_moves, x86_ext_80387_constants, x86_four_jump_limit,
25895         x86_schedule, x86_use_bt, x86_pad_returns,
25896         x86_use_xchgb): Merge into ...
25897         (ix86_tune_features): ... here.  New array.
25898         (x86_cmove, x86_cmpxchg, x86_cmpxchg8b, x86_xadd,
25899         x86_bswap): Merge into ...
25900         (ix86_arch_features): ... here.  New array.
25901         (x86_3dnow_a): Remove.
25902         (x86_accumulate_outgoing_args): Make static.
25903         (x86_arch_always_fancy_math_387): Make static.
25904         (ix86_tune_mask, ix86_arch_mask): Move ...
25905         (override_options): ... to local variables here.  Apply the
25906         appropriate mask to each element of ix86_arch_features and
25907         ix86_tune_features.  Adjust TARGET_CMOVE and TARGET_USE_SAHF
25908         as were done in the old macros.
25909         (standard_80387_constant_p): Use TARGET_EXT_80387_CONSTANTS.
25910         * config/i386/i386.h (x86_use_leave, x86_push_memory,
25911         x86_zero_extend_with_and, x86_use_bit_test, x86_cmove, x86_deep_branch,
25912         x86_branch_hints, x86_unroll_strlen, x86_double_with_add,
25913         x86_partial_reg_stall, x86_movx, x86_use_himode_fiop,
25914         x86_use_simode_fiop, x86_use_mov0, x86_use_cltd, x86_use_xchgb,
25915         x86_read_modify_write, x86_read_modify, x86_split_long_moves,
25916         x86_promote_QImode, x86_single_stringop, x86_fast_prefix,
25917         x86_himode_math, x86_qimode_math, x86_promote_qi_regs,
25918         x86_promote_hi_regs, x86_integer_DFmode_moves, x86_add_esp_4,
25919         x86_add_esp_8, x86_sub_esp_4, x86_sub_esp_8,
25920         x86_partial_reg_dependency, x86_memory_mismatch_stall,
25921         x86_accumulate_outgoing_args, x86_prologue_using_move,
25922         x86_epilogue_using_move, x86_decompose_lea,
25923         x86_arch_always_fancy_math_387, x86_shift1,
25924         x86_sse_partial_reg_dependency, x86_sse_split_regs,
25925         x86_sse_unaligned_move_optimal, x86_sse_typeless_stores,
25926         x86_sse_load0_by_pxor, x86_use_ffreep, x86_inter_unit_moves,
25927         x86_schedule, x86_use_bt, x86_cmpxchg, x86_cmpxchg8b, x86_xadd,
25928         x86_use_incdec, x86_pad_returns, x86_bswap,
25929         x86_partial_flag_reg_stall): Remove.
25930         (enum ix86_tune_indices): New.
25931         (ix86_tune_features): New.
25932         (TARGET_USE_LEAVE, TARGET_PUSH_MEMORY, TARGET_ZERO_EXTEND_WITH_AND,
25933         TARGET_USE_BIT_TEST, TARGET_UNROLL_STRLEN,
25934         TARGET_DEEP_BRANCH_PREDICTION, TARGET_BRANCH_PREDICTION_HINTS,
25935         TARGET_DOUBLE_WITH_ADD, TARGET_USE_SAHF, TARGET_MOVX,
25936         TARGET_PARTIAL_REG_STALL, TARGET_PARTIAL_FLAG_REG_STALL,
25937         TARGET_USE_HIMODE_FIOP, TARGET_USE_SIMODE_FIOP, TARGET_USE_MOV0,
25938         TARGET_USE_CLTD, TARGET_USE_XCHGB, TARGET_SPLIT_LONG_MOVES,
25939         TARGET_READ_MODIFY_WRITE, TARGET_READ_MODIFY, TARGET_PROMOTE_QImode,
25940         TARGET_FAST_PREFIX, TARGET_SINGLE_STRINGOP, TARGET_QIMODE_MATH,
25941         TARGET_HIMODE_MATH, TARGET_PROMOTE_QI_REGS, TARGET_PROMOTE_HI_REGS,
25942         TARGET_ADD_ESP_4, TARGET_ADD_ESP_8, TARGET_SUB_ESP_4,
25943         TARGET_SUB_ESP_8, TARGET_INTEGER_DFMODE_MOVES,
25944         TARGET_PARTIAL_REG_DEPENDENCY, TARGET_SSE_PARTIAL_REG_DEPENDENCY,
25945         TARGET_SSE_UNALIGNED_MOVE_OPTIMAL, TARGET_SSE_SPLIT_REGS,
25946         TARGET_SSE_TYPELESS_STORES, TARGET_SSE_LOAD0_BY_PXOR,
25947         TARGET_MEMORY_MISMATCH_STALL, TARGET_PROLOGUE_USING_MOVE,
25948         TARGET_EPILOGUE_USING_MOVE, TARGET_SHIFT1, TARGET_USE_FFREEP,
25949         TARGET_INTER_UNIT_MOVES, TARGET_FOUR_JUMP_LIMIT, TARGET_SCHEDULE,
25950         TARGET_USE_BT, TARGET_USE_INCDEC, TARGET_PAD_RETURNS,
25951         TARGET_EXT_80387_CONSTANTS): Use it.
25952         (enum ix86_arch_indices): New.
25953         (ix86_arch_features): New.
25954         (TARGET_CMOVE, TARGET_CMPXCHG, TARGET_CMPXCHG8B, TARGET_XADD,
25955         TARGET_BSWAP): Use it.
25956         (ix86_tune_mask, ix86_arch_mask): Remove.
25957
25958 2007-03-06  Joseph Myers  <joseph@codesourcery.com>
25959
25960         PR bootstrap/31020
25961         * configure.ac (CROSS_SYSTEM_HEADER_DIR, build_system_header_dir):
25962         Define using $${sysroot_headers_suffix}.
25963         * configure: Regenerate.
25964         * cppdefault.c (cpp_include_defaults): Make FIXED_INCLUDE_DIR a
25965         multilib-suffixed directory if SYSROOT_HEADERS_SUFFIX_SPEC
25966         defined.
25967         * doc/invoke.texi (-print-sysroot-headers-suffix): Document.
25968         * gcc.c (print_sysroot_headers_suffix): New.
25969         (option_map): Include --print-sysroot-headers-suffix.
25970         (display_help): Mention -print-sysroot-headers-suffix.
25971         (process_command): Handle -print-sysroot-headers-suffix.
25972         (do_spec_1): Append multilib directory to include-fixed path if
25973         sysroot suffixes in use.
25974         (main): Handle -print-sysroot-headers-suffix.
25975         * Makefile.in (start.encap): Don't depend on xlimits.h
25976         (xlimits.h): Remove.
25977         (stmp-int-hdrs): Don't depend on xlimits.h.  Inline generation of
25978         limits.h for each multilib in fixinc_list.
25979         (fixinc_list, s-fixinc_list): New.
25980         (stmp-fixinc): Depend on fixinc_list.  If not copying headers,
25981         generate them for each multilib in fixinc_list.
25982         (stmp-fixproto): Use include-fixed.  Run fixproto for each
25983         multilib in fixinc_list.
25984         (mostlyclean): Don't remove xlimits.h.
25985         (clean): Remove include-fixed.
25986         (real-install-headers-tar, real-install-headers-cpio,
25987         real-install-headers-cp): Don't copy include, only include-fixed.
25988         (install-mkheaders): Depend on fixinc_list.  Don't depend on
25989         xlimits.h.  Save limits.h files for each multilib in fixinc_list.
25990         Always save mkinstalldirs.  Preserve ${sysroot_headers_suffix} in
25991         SYSTEM_HEADER_DIR setting in mkheaders.conf.
25992
25993 2007-03-06  Jan Hubicka  <jh@suse.cz>
25994
25995         * regstack.c (reg_to_stack): When in 64bit PIC mode, we still can load
25996         NANs easilly.
25997
25998 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
25999
26000         * configure.ac: Allow tm_file to contain build-directory files.
26001         * configure: Regenerate.
26002         * config.gcc (m68k-*-uclinux*): Add ./sysroot-suffix.h to tm_file.
26003         * config/m68k/t-uclinux (sysroot-suffix.h): New target.
26004         * config/m68k/print-sysroot-suffix.sh: New file.
26005
26006 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
26007
26008         * config/m68k/m68k.h (PIC_OFFSET_TABLE_REGNUM): Use the REGNO
26009         of pic_offset_table_rtx if reload_completed.
26010         (CONDITIONAL_REGISTER_USAGE): Use PIC_REG instead of
26011         PIC_OFFSET_TABLE_REGNUM.
26012         * config/m68k/m68k.c (TARGET_ASM_CAN_OUTPUT_MI_THUNK): Always
26013         return true.
26014         (m68k_save_reg): Use PIC_REG instead of PIC_OFFSET_TABLE_REGNO.
26015         (m68k_output_mi_thunk): Rewrite to use RTL.  Honor vcall_offset.
26016
26017 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
26018
26019         * config/m68k/m68k.c (m68k_save_reg): Save the PIC register in
26020         functions that call eh_return.
26021
26022 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
26023
26024         * config/m68k/m68k.c (m68k_save_reg): Save the PIC register in
26025         functions that need a constant pool.
26026
26027 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
26028
26029         PR target/28181
26030         * config/m68k/m68k-protos.h (m68k_secondary_reload_class): Declare.
26031         (m68k_preferred_reload_class): Likewise.
26032         * config/m68k/m68k.h (HARD_REGNO_MODE_OK): Remove duplicated comment.
26033         (SECONDARY_RELOAD_CLASS): Define.
26034         (PREFERRED_RELOAD_CLASS): Use m68k_preferred_reload_class.
26035         (LIMIT_RELOAD_CLASS): Delete.
26036         * config/m68k/m68k.c (m68k_regno_mode_ok): Don't prevent address
26037         registers from storing bytes.
26038         (m68k_secondary_reload_class): New function.
26039         (m68k_preferred_reload_class): Likewise.
26040
26041 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
26042
26043         * config/m68k/m68k.c (m68k_save_reg): Remove special case for
26044         leaf functions.
26045         (m68k_expand_prologue): Likewise.
26046
26047 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
26048
26049         * config/m68k/m68k-protos.h (output_sibcall): Declare.
26050         (mips_expand_epilogue): Add a bool parameter.
26051         (m68k_legitimize_sibcall_address): Declare.
26052         * config/m68k/m68k.c (TARGET_FUNCTION_OK_FOR_SIBCALL): Define.
26053         (m68k_expand_epilogue): Add a parameter to select between sibling
26054         and normal epilogues.  Only generate a return for the latter.
26055         (m68k_ok_for_sibcall_p): New function.
26056         (m68k_legitimize_sibcall_address, output_sibcall): New functions.
26057         * config/m68k/m68k.md (sibcall, *sibcall): New patterns.
26058         (sibcall_value, *sibcall_value): Likewise.
26059         (*call, *call_value): Require !SIBLING_CALL_P.
26060         (epilogue): Update call to m68k_expand_epilogue.
26061         (sibcall_epilogue): New pattern.
26062         * config/m68k/predicates.md (const_call_operand): Say that this
26063         predicate applies to sibling calls too.
26064         (sibcall_operand): New predicate.
26065
26066 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
26067
26068         * config/m68k/m68k.md (movsf_cf_soft): Provide the same non-mov3q
26069         alternatives as movsi_cf.
26070         (movsf_cf_hard): Add commentary.
26071
26072 2007-03-06  Kazu Hirata  <kazu@codesourcery.com>
26073             Richard Sandiford  <richard@codesourcery.com>
26074
26075         * config/m68k/m68k-protos.h (m68k_interrupt_function_p): Declare.
26076         (m68k_movem_pattern_p, m68k_output_movem): Likewise.
26077         (m68k_expand_prologue, m68k_expand_epilogue): Likewise.
26078         * config/m68k/m68k.h (EPILOGUE_USES): Define.  Treat all registers
26079         as being live on exit from an interrupt function.
26080         (PRINT_OPERAND_PUNCT_VALID_P): Return true for '?'.
26081         * config/m68k/m68k.c (MIN_MOVEM_REGS, MIN_FMOVEM_REGS): New macros.
26082         (m68k_frame): Remove reg_rev_mask and fpu_rev_mask.
26083         (TARGET_ASM_FUNCTION_PROLOGUE, TARGET_ASM_FUNCTION_EPILOGUE): Delete.
26084         (m68k_interrupt_function_p): Globalize.
26085         (m68k_compute_frame_layout): Remove reverse mask code.
26086         (m68k_emit_movem, m68k_set_frame_related): New functions.
26087         (m68k_output_function_prologue): Delete in favor of...
26088         (m68k_expand_prologue): ...this new function.
26089         (m68k_output_function_epilogue): Delete in favor of...
26090         (m68k_expand_epilogue): ...this new function.
26091         (m68k_split_offset, m68k_movem_pattern_p, m68k_output_movem): New
26092         functions.
26093         (print_operand): Handle %?.
26094         * config/m68k/m68k.md (UNSPEC_SIN, UNSPEC_COS): Remove excess space.
26095         (UNSPEC_GOT, A1_REG, PIC_REG, FP0_REG): New constants.
26096         (prologue, epilogue): New patterns.
26097         (return): Turn into a define_expand.
26098         (*return): New pattern, derived from old "return" pattern.  Use rte
26099         rather than rts for interrupt functions.  Only use rtd if the pop
26100         count is nonzero.
26101         (*m68k_store_multiple, *m68k_store_multiple_automod): New patterns.
26102         (*m68k_load_multiple, *m68k_load_multiple_automod): Likewise.
26103         (link, *link, unlink, *unlink, load_got): Likewise.
26104
26105 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
26106
26107         PR target/23482
26108         PR target/17114
26109         * config/m68k/m68k-protos.h (m68k_legitimate_base_reg_p): Declare.
26110         (m68k_legitimate_index_reg_p, m68k_legitimate_address_p): Likewise.
26111         (m68k_matches_q_p, m68k_matches_u_p): Likewise.
26112         * config/m68k/m68k.h (EXTRA_CONSTRAINT): Use m68k_matches_q_p
26113         and m68k_matches_u_p.
26114         (PCREL_GENERAL_OPERAND_OK, LEGITIMATE_BASE_REG_P): Delete.
26115         (INDIRECTABLE_1_ADDRESS_P, GO_IF_NONINDEXED_ADDRESS): Delete.
26116         (GO_IF_INDEXABLE_BASE, GO_IF_INDEXING, GO_IF_INDEXED_ADDRESS): Delete.
26117         (LEGITIMATE_INDEX_REG_P, LEGITIMATE_INDEX_P): Delete.
26118         (GO_IF_COLDFIRE_FPU_LEGITIMATE_ADDRESS): Delete.
26119         (REG_STRICT_P): New macro.
26120         (LEGITIMATE_PIC_OPERAND_P): Use REG_STRICT_P rather than
26121         PCREL_GENERAL_OPERAND_OK.
26122         (REG_OK_FOR_BASE_P): Merge definitions.  Use REG_STRICT_P and
26123         m68k_legitimate_base_reg_p.
26124         (REG_MODE_OK_FOR_INDEX_P): Likewise m68k_legitimate_index_reg_p.
26125         (GO_IF_LEGITIMATE_ADDRESS): Likewise m68k_legitimate_address_p.
26126         (PIC_CASE_VECTOR_ADDRESS): Update comment.
26127         * config/m68k/m68k.c (m68k_address): New structure.
26128         (m68k_legitimate_base_reg_p, m68k_legitimate_index_reg_p)
26129         (m68k_decompose_index, m68k_legitimate_constant_address_p)
26130         (m68k_jump_table_ref_p, m68k_decompose_address)
26131         (m68k_legitimate_address_p, m68k_legitimate_mem_p, m68k_matches_q_p)
26132         (m68k_matches_u_p): New functions.
26133         (print_operand_address): Rewrite to use m68k_decompose_index.
26134
26135 2007-03-05  David Taylor  <dtaylor@emc.com>
26136
26137         * gcc.c: Correct copyright date in --version output.
26138
26139 2007-03-05  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
26140
26141         * pa.md: In unamed move patterns, disparge copies between general
26142         and floating point registers using '?' modifier.  Don't include 'f'
26143         constraint for register preferences in DImode, SImode, HImode and
26144         QImode patterns.  Likewise for 'r' in DFmode and SFmode patterns.
26145         Remove constraints for copies between general and floating registers
26146         in soft-float DFmode pattern.
26147         (movdf): Fail if operand1 is a CONST_DOUBLE and operand0 is a hard
26148         floating register.
26149         (movsf): Likewise.
26150
26151 2007-03-05  Mike Stump  <mrs@apple.com>
26152
26153         * c-common.c (targetcm): Add.
26154         * c-opts.c (c_common_handle_option): Handle language specific
26155         target options.
26156         * opts.c (handle_option): Verify language for target options, if
26157         any are given.
26158         * opth-gen.awk: Add CL_LANG_ALL.
26159         * target-def.h (TARGET_HANDLE_C_OPTION): Add.
26160         (TARGETCM_INITIALIZER): Add.
26161         * target.h (struct gcc_targetcm): Add.
26162         (targetcm): Add.
26163         * targhooks.c (default_handle_c_option): Add.
26164         * targhooks.h (default_handle_c_option): Add.
26165         * doc/tm.texi (TARGET_HANDLE_C_OPTION): Add.
26166
26167         * config/darwin.opt (iframework): Add.
26168         * config/darwin.h (TARGET_HAS_TARGETCM): Add.
26169         * config/darwin-c.c (handle_c_option): Add.
26170         (TARGET_HANDLE_C_OPTION): Add.
26171         (targetcm): Add.
26172         * doc/invoke.texi (Darwin Options): Add -iframework.
26173
26174 2007-03-05  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
26175
26176         * convert.c (convert_to_integer): Fix nearbyint/rint -> *lrint
26177         conversion.
26178
26179 2007-03-05  Ian Lance Taylor  <iant@google.com>
26180
26181         * c.opt (fgnu89-inline): New option.
26182         * c-opts.c (c_common_post_options): Set default value for
26183         flag_gnu89_inline.
26184         * c-decl.c (WANT_C99_INLINE_SEMANTICS): Remove.
26185         (pop_scope): Check flag_gnu89_inline rather than flag_isoc99 for
26186         inline functions.
26187         (diagnose_mismatched_decls, merge_decls, start_decl): Likewise.
26188         (grokdeclarator, start_function): Likewise.
26189         * c-cppbuiltin.c (c_cpp_builtins): Define either
26190         __GNUC_GNU_INLINE__ or __GNUC_STDC_INLINE__.
26191         * doc/invoke.texi (Option Summary): Mention -fgnu89-inline.
26192         (C Dialect Options): Document -fgnu89-inline.
26193         * doc/extend.texi (Function Attributes): Explain what the
26194         gnu_inline attribute does.
26195         * doc/cpp.texi (Common Predefined Macros): Document
26196         __GNUC_GNU_INLINE__ and __GNUC_STDC_INLINE__.
26197
26198 2007-03-05  Ian Lance Taylor  <iant@google.com>
26199
26200         PR tree-optimization/31034
26201         * tree-vrp.c (extract_range_from_assert): Don't try to handle a
26202         half-range if the other side is an overflow infinity.
26203
26204 2007-03-05  Bernd Schmidt  <bernd.schmidt@analog.com>
26205
26206         * config.gcc (bfin*-uclinux*): Use t-bfin-uclinux.
26207         (bfin*-linux-uclibc*): New configuration.
26208         * config/linux.h (LINK_GCC_C_SEQUENCE_SPEC): Undefined before
26209         defining.
26210         * config/bfin/linux.h: New file.
26211         * config/bfin/libgcc-bfin.ver: New file.
26212         * config/bfin/t-bfin-uclinux: New file.
26213         * config/bfin/t-bfin-linux: New file.
26214         * config/bfin/uclinux.h (LINUX_TARGET_OS_CPP_BUILTINS): New macro.
26215         (TARGET_OS_CPP_BUILTINS): New macro.
26216
26217 2007-03-05  Richard Guenther  <rguenther@suse.de>
26218
26219         * fold-const.c (fold_binary): Remove duplicate folding
26220         of comparison of non-null ADDR_EXPR against null.
26221
26222 2007-03-05  Richard Guenther  <rguenther@suse.de>
26223             Dorit Nuzman  <dorit@il.ibm.com>
26224
26225         PR tree-optimization/26420
26226         * tree-vectorizer.c (vectorize_loops): Bail out early if there
26227         are no loops in the function.  Only print the number of
26228         vectorized loops if it is greater than zero or we are supposed
26229         to print information about unvectorized loops.
26230
26231 2007-03-05  Revital Eres  <eres@il.ibm.com>
26232
26233         * gcc.dg/var-expand1.c: New test.
26234         * loop-unroll.c (analyze_insn_to_expand_var): Add dump info
26235         when an accumulator is expanded.
26236
26237 2007-03-04  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
26238
26239         PR other/30465
26240         * c-common.c (convert_and_check): Don't give warnings for
26241         conversion if 'expr' already overflowed.
26242
26243 2007-03-04  Roger Sayle  <roger@eyesopen.com>
26244
26245         PR middle-end/30744
26246         * fold-const.c (fold_comparison): Enforce type consistency when
26247         transforming ~X op ~Y to Y op X, and ~X op C to X op' ~C.
26248
26249 2007-03-04  Zdenek Dvorak  <dvorakz@suse.cz>
26250
26251         * tree-ssa-address.c (create_mem_ref): Do not put an expression
26252         containing a cast to the base of TARGET_MEM_REF.
26253
26254 2007-03-04  Martin Michlmayr  <tbm@cyrius.com>
26255
26256         * tree.c (tree_contains_struct_check_failed): Remove spurious
26257         whitespace from error message.
26258
26259 2007-03-04 Andrew Pinski <andrew_pinski@playstation.sony.com>
26260
26261         PR target/30406
26262         * config/rs6000/rs6000.c (rs6000_function_value): Look at bit size
26263         instead of precision.
26264
26265 2007-03-04  Roman Zippel <zippel@linux-m68k.org>
26266             Nathan Sidwell  <nathan@codesourcery.com>
26267
26268         * emit-rtl.c (find_auto_inc): New.
26269         (try_split): recreate REG_INC notes,
26270         Use regular for loops rather than whiles.
26271
26272 2007-03-03  Andreas Schwab  <schwab@suse.de>
26273
26274         * configure.ac (HAVE_AS_REL16): Move test back to correct place.
26275         * configure: Regenerate.
26276
26277 2007-03-03  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
26278
26279         * builtins.def (ATTR_MATHFN_FPROUNDING): Rely on
26280         flag_rounding_math, not flag_unsafe_math_optimizations.
26281
26282         * c-pretty-print.c (pp_c_direct_abstract_declarator): Use
26283         fold_build2.
26284         * config/alpha/alpha.c (alpha_fold_builtin_zapnot,
26285         alpha_fold_vector_minmax): Likewise.
26286         * config/i386/i386.c (ix86_gimplify_va_arg): Likewise.
26287         * config/sparc/sparc.c (sparc_gimplify_va_arg): Likewise.
26288
26289 2007-03-02  Eric Botcazou  <ebotcazou@adacore.com>
26290
26291         * tree-sra.c (sra_walk_fns) <ldst>: Document new restriction.
26292         (sra_walk_modify_expr) <rhs_elt>: Treat the reference as a use
26293         if the lhs has side-effects.
26294         <lhs_elt>: Treat the reference as a use if the rhs has side-effects.
26295
26296 2007-03-02  Uros Bizjak  <ubizjak@gmail.com>
26297
26298         * config/i386/i386.h (TUNEMASK): Remove define.
26299         (ARCHMASK): Remove define.
26300         (TARGET_*): Use ix86_tune_mask variable instead of TUNEMASK.
26301          Use ix86_arch_mask variable instead of ARCHMASK.
26302         * config/i386/i386.c (override_options): Ditto.
26303         (standard_80387_constant_p): Ditto.
26304
26305 2007-03-02  Ian Lance Taylor  <iant@google.com>
26306
26307         Used signed infinities in VRP.
26308         * tree-vrp.c (uses_overflow_infinity): New static function.
26309         (supports_overflow_infinity): New static function.
26310         (make_overflow_infinity): New static function.
26311         (negative_overflow_infinity): New static function.
26312         (positive_overflow_infinity): New static function.
26313         (is_negative_overflow_infinity): New static function.
26314         (is_positive_overflow_infinity): New static function.
26315         (is_overflow_infinity): New static function.
26316         (overflow_infinity_range_p): New static function.
26317         (compare_values_warnv): New function split out of compare_values.
26318         (compare_value): Call it.
26319         (set_value_range_to_nonnegative): Add overflow_infinity
26320         parameter.  Change caller.
26321         (vrp_expr_computes_nonnegative): Add strict_overflow_p parameter.
26322         Change callers.
26323         (vrp_expr_computes_nonzero): Likewise.
26324         (compare_ranges, compare_range_with_value): Likewise.
26325         (compare_name_with_value, compare_names): Likewise.
26326         (vrp_evaluate_conditional): Likewise.
26327         (set_value_range): Handle infinity
26328         (vrp_operand_equal_p, operand_less_p): Likewise.
26329         (extract_range_from_assert): Likewise.
26330         (vrp_int_const_binop): Likewise.
26331         (extract_range_from_binary_expr): Likewise.
26332         (extract_range_from_unary_expr): Likewise.
26333         (extract_range_from_comparison): Likewise.
26334         (extract_range_from_expr): Likewise.
26335         (dump_value_range): Likewise.
26336         (vrp_visit_cond_stmt, vrp_visit_phi_node): Likewise.
26337         (test_for_singularity): Likewise.
26338         (vrp_int_const_binop): Remove inline qualifier.
26339         (adjust_range_with_scev): Add comment.
26340         * tree-flow.h (vrp_evaluate_conditional): Update declaration.
26341
26342 2007-03-02  Diego Novillo  <dnovillo@redhat.com>
26343
26344         * tree-ssa-structalias.c (could_have_pointers): Tidy.
26345         (get_constraint_for): Likewise.
26346         (do_structure_copy): Likewise.
26347         (find_func_aliases): Fix references to MODIFY_EXPR.
26348         (intra_create_variable_infos): Tidy.
26349         * tree-ssa-operands.c (add_virtual_operand): Add argument
26350         IS_CALL_SITE.
26351         When adding members of alias sets, if IS_CALL_SITE is true and
26352         the symbol is not call-clobbered, skip it.
26353         Adjust all callers.
26354
26355 2007-03-02  Eric Botcazou  <ebotcazou@adacore.com>
26356
26357         * config/alpha/alpha.c (alpha_gp_save_rtx): Insert the insns at the
26358         entry by means of emit_insn_at_entry.
26359
26360 2007-03-02  Richard Henderson  <rth@redhat.com>
26361
26362         * expr.h (promoted_input_arg): Remove decl.
26363         * function.c (promoted_input_arg): Merge into ...
26364         * combine.c (setup_incoming_promotions): ... only caller.
26365         Rearrange to avoid double loop.
26366
26367 2007-03-02  Ben Elliston  <bje@au.ibm.com>
26368             Peter Bergner  <bergner@vnet.ibm.com>
26369             Janis Johnson  <janis187@us.ibm.com>
26370
26371         * config/rs6000/dfp.md: New file.
26372         * config/rs6000/rs6000.md: Include dfp.md.
26373         (add<mode>3_internal1): Disable for DECIMAL_FLOAT_MODE_P operands.
26374         * config/rs6000/rs6000.c (rs6000_hard_regno_mode_ok): Handle DDmode
26375         and TDmode decimal float modes in FP registers.
26376         (num_insns_constant): Likewise.
26377         (rs6000_legitimate_offset_address_p): Likewise.
26378         (rs6000_legitimize_address): Likewise.
26379         (rs6000_legitimize_reload_address): Likewise.
26380         (rs6000_legitimate_address): Likewise.
26381         (rs6000_emit_move): Likewise.
26382         (function_arg_boundary): Likewise.
26383         (function_arg_advance): Likewise.
26384         (rs6000_darwin64_record_arg_recurse): Likewise.
26385         (function_arg): Likewise.
26386         (rs6000_gimplify_va_arg): Likewise.
26387         (rs6000_split_multireg_move): Likewise.
26388         (rs6000_output_function_epilogue): Likewise.
26389         (rs6000_output_function_epilogue): Likewise.
26390         (rs6000_register_move_cost): Likewise.
26391         (rs6000_function_value): Likewise.
26392         (rs6000_libcall_value): Likewise.
26393
26394 2007-03-02  Richard Sandiford  <richard@codesourcery.com>
26395
26396         * config/t-vxworks (LIMITS_H_TEST): Define to true for VxWorks.
26397
26398 2007-03-02  Richard Sandiford  <richard@codesourcery.com>
26399
26400         * config/t-vxworks (LIBGCC2_INCLUDES): Pass -nostdinc.
26401         Use $MULTIDIR to choose between the kernel and RTP headers,
26402         and use $WIND_BASE and $WIND_USR to locate them.
26403
26404 2007-03-02  Uros Bizjak  <ubizjak@gmail.com>
26405
26406         * config/i386/i386.c (override_options): Put initialization of
26407         ix86_tune_mask and ix86_arch_mask to the correct place.
26408
26409 2007-03-02  Uros Bizjak  <ubizjak@gmail.com>
26410             Michael Meissner  <michael.meissner@amd.com>
26411
26412         PR target/31019
26413         * config/i386/i386.h (TUNEMASK): Redefine to use ix86_tune_mask.
26414         (ARCHMASK): Define.
26415         (TARGET_CMOVE): Use ARCHMASK.
26416         (TARGET_CMPXCHG): Ditto.
26417         (TARGET_CMPXCHG8B): Ditto.
26418         (TARGET_XADD): Ditto.
26419         (TARGET_BSWAP): Ditto.
26420         * config/i386/i386.c (ix86_tune_mask): New global variable.
26421         (ix86_arch_mask): Ditto.
26422         (override_options): Initialize ix86_tune_mask and
26423         ix86_arch_mask. Use ARCHMASK to clear MASK_NO_FANCY_MATH_387 in
26424         target_flags.
26425
26426 2007-03-02  Ben Elliston  <bje@au.ibm.com>
26427
26428         PR 30992
26429         * config/dfp-bit.c (DFP_TO_INT): Initialise qval with "1.".
26430
26431 2007-03-02  Joseph Myers  <joseph@codesourcery.com>
26432
26433         * target.h (init_dwarf_reg_sizes_extra): New target hook.
26434         * target-def.h (TARGET_INIT_DWARF_REG_SIZES_EXTRA): New default.
26435         * doc/tm.texi (TARGET_INIT_DWARF_REG_SIZES_EXTRA): Document.
26436         * dwarf2out.c (expand_builtin_init_dwarf_reg_sizes): Call this
26437         hook.
26438         * config/rs6000/rs6000.c (TARGET_INIT_DWARF_REG_SIZES_EXTRA,
26439         rs6000_init_dwarf_reg_sizes_extra): New.
26440         * config/rs6000/linux-unwind.h (ppc_fallback_frame_state): Support
26441         SPE register high parts.
26442
26443 2007-03-01  Brooks Moses  <brooks.moses@codesourcery.com>
26444
26445         * Makefile.in: Add install-pdf target as
26446         copied from automake v1.10 rules.
26447         * configure.ac: Add install-pdf to target list.
26448         * configure: Regenerate.
26449
26450 2007-03-01  Paul Brook  <paul@codesourcery.com>
26451
26452         * config/arm/arm.c (arm_legitimate_index_p): Limit iWMMXt addressing
26453         modes to LDRD for DImode.
26454         (output_move_double): Fixup out of range ldrd/strd.
26455         (vfp_secondary_reload_class): Rename...
26456         (coproc_secondary_reload_class): ... to this.  Add wb argument.
26457         * config/arm/arm.h (SECONDARY_OUTPUT_RELOAD_CLASS): Use
26458         coproc_secondary_reload_class for CLASS_IWMMXT.
26459         (SECONDARY_INPUT_RELOAD_CLASS): Ditto.
26460         * arm-protos.h (coproc_secondary_reload_class): Update prototype.
26461
26462 2007-03-01  Zdenek Dvorak  <dvorakz@suse.cz>
26463
26464         * tree-ssa-loop-prefetch.c (determine_unroll_factor): Bound the
26465         unroll factor by the estimated number of iterations.
26466         (loop_prefetch_arrays): Do not prefetch in loops that iterate less
26467         than prefetch latency.
26468
26469         * config/i386/driver-i386.c (describe_cache, detect_caches_amd,
26470         decode_caches_intel, detect_caches_intel): New functions.
26471         (host_detect_local_cpu): Use detect_caches_amd and
26472         detect_caches_intel.
26473
26474 2007-03-01  Richard Henderson  <rth@redhat.com>
26475
26476         * expr.c (emit_move_complex_push): Export.
26477         (emit_move_complex_parts): Split out from ...
26478         (emit_move_complex): ... here.
26479         * expr.h (emit_move_complex_push, emit_move_complex_parts): Declare.
26480         * config/i386/i386.md (movcdi): New.
26481
26482 2007-03-01  Uros Bizjak  <ubizjak@gmail.com>
26483
26484         * config/i386/i386.c (ix86_modes_tieable_p): Fix typo, use also
26485         size of mode1 to check for tieable modes in MMX case.
26486
26487 2007-03-01  Richard Sandiford  <richard@codesourcery.com>
26488
26489         * Makefile.in (rtlanal.o): Depend on tree.h.
26490         * rtl.h (offset_within_section_p, split_const): Declare.
26491         * rtlanal.c: Include tree.h.
26492         (offset_within_block_p): New function, taken from
26493         mips_offset_within_object_p.
26494         (split_const): New function, taken from mips_split_const.
26495         * config/m68k/m68k-protos.h (m68k_illegitimate_symbolic_constant_p):
26496         Declare.
26497         * config/m68k/m68k.h (M68K_OFFSETS_MUST_BE_WITHIN_SECTIONS_P): Define.
26498         (CONSTANT_ADDRESS_P): Only accept legitimate constants.
26499         (LEGITIMATE_CONSTANT_P): Check m68k_illegitimate_symbolic_constant_p.
26500         * config/m68k/m68k.c (TARGET_CANNOT_FORCE_CONST_MEM): Define.
26501         (m68k_illegitimate_symbolic_constant_p): New function.
26502         * config/m68k/m68k.md (movsi): Remove misleading predicates.
26503         If M68K_OFFSETS_MUST_BE_WITHIN_SECTIONS_P and the source is a
26504         symbolic constant that might be outside the symbol's section,
26505         move the symbol first and then add the offset.
26506         * config/m68k/uclinux.h (M68K_OFFSETS_MUST_BE_WITHIN_SECTIONS_P):
26507         Override.
26508         * config/mips/mips.c (mips_split_const): Delete.
26509         (mips_offset_within_object_p): Delete.
26510         (mips_symbolic_constant_p): Use offset_within_section_p and
26511         split_const instead of mips_offset_within_object_p and
26512         mips_split_const.
26513         (mips_cannot_force_const_mem, mips_const_insns, mips_unspec_address)
26514         (mips_legitimize_const_move, print_operand_reloc)
26515         (mips_dangerous_for_la25_p): Use split_const instead of
26516         mips_split_const.
26517
26518 2007-02-28  Eric Christopher  <echristo@apple.com>
26519
26520         * Makefile.in (install-include-dir): Don't rm -rf include.
26521
26522 2007-02-28  Richard Guenther  <rguenther@suse.de>
26523
26524         PR middle-end/30364
26525         * fold-const.c (fold_binary): Do not associate expressions
26526         with more than one variable for integer types that do not wrap.
26527
26528 2007-02-28  Sandra Loosemore  <sandra@codesourcery.com>
26529
26530         * builtins.c (fold_builtin_call_list, fold_builtin_call_valist):
26531         Delete, and replace with...
26532         (fold_builtin_call_array): This.  Update callers to use it.
26533         * fold-const.c (fold_build_call_list): Delete, and replace with...
26534         (fold_build_call_array): This.
26535         (fold_build_call_list_initializer): Delete, and replace with...
26536         (fold_build_call_array_initializer): This.
26537         * tree.h: Update declarations to reflect above changes.
26538
26539         * c-typeck.c (build_function_call): Store converted arguments
26540         in a stack-allocated array instead of building a list.
26541         (convert_arguments): Store arguments in the array passed in as an
26542         argument, and return the actual number of arguments.
26543         * c-format.c: (check_function_format): Pass arguments in an
26544         array instead of a list.
26545         * c-common.c (check_function_nonnull): Likewise.
26546         (check_function_sentinel): Likewise.
26547         (check_function_arguments): Likewise.
26548         * c-common.h: Update declarations to reflect above changes.
26549
26550 2007-02-28  Jan Hubicka  <jh@suse.cz>
26551
26552         * predict.def (PRED_TREE_EARLY_RETURN, PRED_CONST_RETURN,
26553         PRED_NEGATIVE_RETURN): Update outcomes.
26554
26555 2007-02-28  Bernd Schmidt  <bernd.schmidt@analog.com>
26556
26557         * calls.c (emit_library_call_value_1): Handle partial registers
26558         correctly when building up CALL_INSN_FUNCTION_USAGE.
26559
26560 2007-02-27  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
26561
26562         * pa/predicates.md (move_src_operand): Allow zero for mode.
26563         * pa/pa.md: Fix constraints for zero CONST_DOUBLE in 64-bit DFmode
26564         move pattern.
26565
26566 2007-02-27  Uros Bizjak  <ubizjak@gmail.com>
26567
26568         PR target/30970
26569         * config/i386/sse.md (*mov<mode>_internal, *movv4sf_internal,
26570         *movv2df_internal): Enable pattern only for valid operand
26571         combinations.
26572         * config/i386/i386.c (ix86_modes_tieable_p): For SSE registers,
26573         tie only 128bit modes. For MMX registers, tie only 64bit modes.
26574
26575 2007-02-27  Mike Stump  <mrs@apple.com>
26576
26577         * config/darwin-crt3.c: Avoid compilation when compiling for a
26578         kext multilib.
26579
26580 2007-02-27  Joseph Myers  <joseph@codesourcery.com>
26581
26582         * Makefile.in (PREPROCESSOR_DEFINES, test-protoize-simple): Define
26583         FIXED_INCLUDE_DIR.
26584         (stmp-int-hdrs, stmp-fixinc, install-headers): Use include-fixed
26585         for fixed headers and limits.h.
26586         (install-include-dir, install-headers-tar, install-headers-cpio,
26587         install-headers-cp, real-install-headers-tar,
26588         real-install-headers-cpio, real-install-headers-cp): Handle
26589         include-fixed as well as include.
26590         (install-mkheaders): Don't install files that go only in include
26591         not include-fixed.
26592         * cppdefault.c (cpp_include_defaults): Separate FIXED_INCLUDE_DIR
26593         from GCC_INCLUDE_DIR.
26594         * gcc.c (process_command): Remove special -BstageN/ handling.
26595         (do_spec_1): Add include-fixed directories.
26596
26597 2007-02-27  Bernd Schmidt  <bernd.schmidt@analog.com>
26598
26599         * config/bfin/t-bfin-elf (LIB1ASMFUNCS): Add _umulsi3_highpart and
26600         _smulsi3_highpart.
26601         * config/bfin/lib1funcs.asm (___umulsi3_highpart, ___smulsi3_highpart):
26602         New functions.
26603         * config/bfin/bfin.md (smulsi3_highpart, umulsi3_highpart): New
26604         patterns.
26605
26606 2007-02-27  Mark Mitchell  <mark@codesourcery.com>
26607
26608         * c-common.c (get_priority): Add check for
26609         SUPPORTS_INIT_PRIORITY.
26610
26611 2007-02-27  Bernd Schmidt  <bernd.schmidt@analog.com>
26612
26613         * config/bfin/bfin.md (doloop_end): FAIL if counter reg isn't SImode.
26614
26615         * config/bfin/bfin.c: Include "cfglayout.h".
26616         (MAX_LSETUP_DISTANCE): New macro.
26617         (struct loop_info): New members incoming, incoming_src and
26618         incoming_dest.  Delete member predecessor.
26619         (length_for_loop): New function.
26620         (bfin_optimize_loop): Handle more different loop structures.
26621         (bfin_discover_loop): Rework detection of predecessor blocks by
26622         examining incoming edges.
26623         (bfin_discover_loops, bfin_free_loops): New functions, broken out of
26624         bfin_reorg_loops.
26625         (bfin_reorder_loops): New function.
26626         (bfin_reorg_loops): Use these three new functions.
26627
26628         * config/bfin/bfin.h (enum reg_class, REG_CLASS_NAMES,
26629         REG_CLASS_CONTENTS): Add D0REGS through D7REGS.
26630         (CONSTRAINT_LEN): Add entry for 'q'.
26631         (REG_CLASS_FROM_CONSTRAINT): Renamed from REG_CLASS_FROM_LETTER.
26632         Add 'q' constraints.
26633         (REGNO_REG_CLASS): For R0 through R7, return corresponding regclass.
26634         (CLASS_LIKELY_SPILLED_P): True for R0, R1 and R2.
26635
26636         * config/bfin/bfin.md (add_with_carry): New pattern.
26637         (s_or_u, su_optab, su_modifier): New code macros/attrs.
26638         (<su_optab>hisi_ll, <su_optab>hisi_lh, <su_optab>hisi_hl,
26639         <su_optab>hisi_hh): Renamed from mulhisi_xx patterns; macroized to
26640         support unsigned multiplies too.  Removed incorrect commutativity from
26641         operand 1 constraint where appropriate.
26642         (usmulhisi_ull, usmulhisi_ulh, usmulhisi_uhl, usmulhisi_uhh): New
26643         patterns.
26644         (<su_optab>hisi_ll_lh, <su_optab>hisi_ll_hl, <su_optab>hisi_ll_hh,
26645         <su_optab>hisi_lh_hl, <su_optab>hisi_lh_hh, <su_optab>hisi_hl_hh):
26646         New patterns.
26647         (usmulhisi_ll_lul, usmulhisi_ll_luh, usmulhisi_ll_hul,
26648         usmulhisi_ll_huh, usmulhisi_lh_lul, usmulhisi_lh_luh, usmulhisi_lh_hul,
26649         usmulhisi_lh_huh, usmulhisi_hl_lul, usmulhisi_hl_luh, usmulhisi_hl_hul,
26650         usmulhisi_hl_huh, usmulhisi_hh_lul, usmulhisi_hh_luh, usmulhisi_hh_hul,
26651         usmulhisi_hh_huh): New patterns.
26652
26653         * config/bfin/bfin.md (ssashiftv2hi3, ssashifthi3, lshiftv2hi3,
26654         lshifthi3): Fix output template to use half reg for operand 2.
26655
26656         * config/bfin/bfin.c (bfin_output_mi_thunk): Use R3 as scratch reg
26657         instead of R2.
26658
26659         * config/bfin/bfin.md (rotl16, rotlsi3, rotrsi3): New patterns.
26660
26661 2007-02-27  Andreas Schwab  <schwab@suse.de>
26662
26663         * Makefile.in (TEXI_GCCINSTALL_FILES): Add gcc-common.texi.
26664
26665 2007-02-27  Jan Hubicka  <jh@suse.cz>
26666
26667         * predict.c (last_basic_block_p): Remove.
26668         (tree_estimate_probability): Update return heuristic for commonized
26669         return blocks.
26670
26671 2007-02-26  Brooks Moses  <brooks.moses@codesourcery.com>
26672
26673         * Makefile.in (TEXI_GCCINSTALL_FILES): Add gcc-vers.texi dependency.
26674
26675 2007-02-26  Brooks Moses  <brooks.moses@codesourcery.com>
26676
26677         * doc/include/gcc-common.texi (versionsubtitle): New macro.
26678         * doc/cpp.texi: Standardize title page.
26679         * doc/cppinternals.texi: Likewise.
26680         * doc/gcc.texi: Standardize title page, remove version number
26681         from copyright page.
26682         * doc/gccint.texi: Likewise.
26683         * doc/install.texi: Standardize title page, add table of
26684         contents.
26685
26686 2007-02-26  Jan Hubicka  <jh@suse.cz>
26687
26688         * predict.def: Set outcomes according to more recent results.
26689         (PRED_LOOP_CONDITION, PRED_LOOP_PRECONDITIONING, PRED_LOOP_HEADER):
26690         Remove dead predictors.
26691         * predict.c (return_prediction): Fix pasto.
26692
26693 2007-02-27  Bernd Schmidt  <bernd.schmidt@analog.com>
26694
26695         * loop-iv.c (simplify_using_initial_values): Fix oversight in previous
26696         change; avoid a memory leak when returning early.
26697
26698 2007-02-26  Mark Mitchell  <mark@codesourcery.com>
26699
26700         * c-decl.c (static_ctors): Move to c-common.c.
26701         (static_dtors): Likewise.
26702         (finish_function): Use c_record_cdtor_fn.
26703         (build_cdtor): Move to c-common.c.
26704         (c_write_global_declarations): Use c_build_cdtor_fns.
26705         * c-common.h (static_ctors): Declare.
26706         (static_dtors): Likewise.
26707         (c_record_cdtor_fn): Likewise.
26708         (c_build_cdtor_fns): Likewise.
26709         * c-common.c (static_ctors): New variable.
26710         (static_dtors): Likewise.
26711         (c_record_cdtor_fn): New function.
26712         (build_cdtor): Move from c-decl.c
26713         (c_build_cdtor_fns): New function.
26714
26715         * output.h (assemble_addr_to_section): Declare.
26716         (get_cdtor_priority_section): Likewise.
26717         * varasm.c (assemble_addr_to_section): New function.
26718         (get_cdtor_priority_section): Likewise.
26719         (default_named_section_asm_out_destructor): Use them.
26720         (destor_dtor_section_asm_out_destructor): Likewise.
26721         (default_named_section_asm_out_constructor): Likewise.
26722         (default_ctor_section_asm_out_constructor): Likewise.
26723         * config.gcc (*-*-vxworks*): Include vxworks.o.
26724         * config/t-vxworks (vxworks.o): New target.
26725         * config/vxworks.h (ALWAYS_NUMBER_CTORS_SECTIONS): Remove.
26726         (TARGET_ASM_CONSTRUCTOR): Define.
26727         (TARGET_ASM_DESTRUCTOR): Likewise.
26728         (vxworks_asm_out_constructor): Declare.
26729         (vxworks_asm_out_destructor): Likewise.
26730
26731         * c-common.c (get_priority): Check that we have not just an
26732         INTEGER_CST, but an integer constant with integeral type.
26733
26734 2007-02-25  Uros Bizjak  <ubizjak@gmail.com>
26735
26736         PR tree-optimization/30938
26737         * tree-vect-transform.c (vectorizable_call): Fix off-by-one error:
26738         use &dt[nargs-1] instead of &dt[nargs] in the call to
26739         vect_is_simple_use().
26740
26741 2007-02-25  Ulrich Weigand  <uweigand@de.ibm.com>
26742
26743         * reload.c (find_reloads_address_1): Handle PLUS expressions resulting
26744         from register elimination as PRE_MODIFY / POST_MODIFY increments.
26745         Do not attempt to handle MEM inside auto-inc expressions.
26746         * reload1.c (eliminate_regs_1): Do not attempt to handle elimination
26747         of a register modified by an auto-inc expression.  However, do handle
26748         elimination of a register used as PRE_MODIFY / POST_MODIFY increment.
26749         (elimination_effects): Prohibit elimination of a register modified
26750         by an auto-inc expression.  Disable register elimination rules whose
26751         target register is modified by an auto-inc expression with variable
26752         increment.
26753
26754 2007-02-25  Zdenek Dvorak  <dvorakz@suse.cz>
26755
26756         * tree-ssa-loop-niter.c (compute_estimated_nb_iterations): Fix
26757         off-by-one error.
26758         (array_at_struct_end_p): New function.
26759         (idx_infer_loop_bounds): Use it.
26760         (estimate_numbers_of_iterations_loop): Export.
26761         * predict.c (predict_loops): Use estimated_loop_iterations_int.
26762         Do not use PRED_LOOP_EXIT on exits predicted by # of iterations.
26763         (tree_estimate_probability): Call record_loop_exits.
26764         * tree-data-ref.c (get_number_of_iters_for_loop): Replaced by ...
26765         (estimated_loop_iterations, estimated_loop_iterations_int,
26766         estimated_loop_iterations_tree): New functions.
26767         (analyze_siv_subscript_cst_affine,
26768         compute_overlap_steps_for_affine_1_2,
26769         analyze_subscript_affine_affine): Use estimated_loop_iterations_int.
26770         (analyze_miv_subscript): Use estimated_loop_iterations_tree.
26771         * predict.def (PRED_LOOP_ITERATIONS): Update comment.
26772         (PRED_LOOP_ITERATIONS_GUESSED): New.
26773         * cfgloop.c (record_loop_exits): Do nothing if there are no loops.
26774         * cfgloop.h (estimate_numbers_of_iterations_loop,
26775         estimated_loop_iterations_int): Declare.
26776
26777 2007-02-25  Mark Mitchell  <mark@codesourcery.com>
26778
26779         * doc/extend.texi: Document optional priority argument to
26780         constructors and destructors.
26781         * tree.c (init_priority_for_decl): Adjust GTY markers.
26782         (init_ttree): Use priority-info hash functions for
26783         init_priority_for_decl.
26784         (tree_map_eq): Rename to ...
26785         (tree_map_base_eq): ... this.
26786         (tree_map_marked_p): Rename to ...
26787         (tree_map_base_marked_p): ... this.
26788         (tree_map_base_hash): New function.
26789         (decl_init_priority_lookup): Rework.
26790         (decl_fini_priority_lookup): New function.
26791         (decl_priority_info): New function.
26792         (decl_init_priority_insert): Use it.
26793         (decl_fini_priority_insert): Likewise.
26794         (decl_restrict_base_lookup): Adjust for refactoring of tree_map
26795         hierarchy.
26796         (decl_restrict_base_insert): Likewise.
26797         (decl_debug_expr_insert): Likewise.
26798         (decl_value_expr_lookup): Likewise.
26799         (decl_value_expr_insert): Likewise.
26800         * tree.h (priority_type): New type.
26801         (decl_init_priority_lookup): Use priority_type.
26802         (decl_fini_priority_lookup): New function.
26803         (decl_init_priority_insert): Use priority_type.
26804         (decl_fini_priority_insert): New function.
26805         (DECL_HAS_INIT_PRIORITY): Tweak comments.
26806         (DECL_INIT_PRIORITY): Likewise.
26807         (SET_DECL_INIT_PRIORITY): Add comment.
26808         (DECL_FINI_PRIORITY): New macro.
26809         (SET_DECL_FINI_PRIORITY): Likewise.
26810         (DEFAULT_INIT_PRIORITY): Document.
26811         (MAX_INIT_PRIORITY): Likewise.
26812         (MAX_RESERVED_INIT_PRIORITY): Likewise.
26813         (tree_map_base): New type.
26814         (tree_map_base_eq): New function.
26815         (tree_map_base_hash): Likewise.
26816         (tree_map_base_marked_p): Likewise.
26817         (tree_map): Inherit from tree_map_base.
26818         (tree_map_eq): Make it a macro.
26819         (tree_map_marked_p): Likewise.
26820         (tree_int_map): Inherit from tree_map_base.
26821         (tree_int_map_eq): Make it a macro.
26822         (tree_int_map_hash): Likewise.
26823         (tree_int_map_marked_p): Likewise.
26824         (tree_priority_map): New type.
26825         (tree_priority_map_eq): New macro.
26826         (tree_priority_map_hash): Likewise.
26827         (tree_priority_map_marked_p): Likewise.
26828         * varasm.c (emults_decl): Adjust for refactoring of tree_map
26829         hierarchy.
26830         (emutls_common_1): Likewise.
26831         * lambda-code.c (replace_uses_equiv_to_x_with_y): Likewise.
26832         * tree-ssa-structalias.c (heapvar_lookup): Adjust for refactoring
26833         of tree_map hierarchy.
26834         * tree-cfg.c (move_stmt_r): Likewise.
26835         (new_label_mapper): Likewise.
26836         * c-tree.h (c_expand_body): Move to ...
26837         * c-common.h (c_expand_body): ... here.
26838         * c-decl.c (c_expand_body): Move to ...
26839         * c-common.c (c_expand_body): ... here.
26840         (c_common_attribute_table): Allow 1 argument for the constructor
26841         and destructor attributes.
26842         (get_priority): New function.
26843         (handle_constructor_attribute): Set DECL_INIT_PRIORITY.
26844         (handle_destructor_attribute): Set DECL_FINI_PRIORITY.
26845
26846 2007-02-24  Jan Hubicka  <jh@suse.cz>
26847
26848         PR middle-end/30509
26849         * tree-inline.c (copy_bb): Produce exact copy of EH info when
26850         copying for inlining.
26851
26852 2007-02-24  Uros Bizjak  <ubizjak@gmail.com>
26853             Jan Hubicka  <jh@suse.cz>
26854
26855         PR target/30778
26856         * i386.c (counter_mode): New function.
26857         (expand_set_or_movmem_via_loop): Use it.
26858         (expand_movmem_epilogue): Likewise; fix pasto.
26859         (ix86_expand_movmem): Do emit guard even for constant counts.
26860         (ix86_expand_setmem): Likewise.
26861
26862 2007-02-25  Nick Clifton  <nickc@redhat.com>
26863
26864         * config/frv/frv.h (ASM_OUTPUT_CASE_LABEL): Delete.
26865         (JUMP_TABLES_IN_TEXT_SECTION): Define.
26866
26867 2007-02-24  Uros Bizjak  <ubizjak@gmail.com>
26868
26869         PR target/30770
26870         * config/i386/i386.md (expand_movmem_epilogue): Fix typo, mask
26871         count argument with 0x10, not with 0x16.
26872         (expand_setmem_epilogue): Ditto.
26873
26874 2007-02-24  Mike Stump  <mrs@apple.com>
26875
26876         * config/i386/i386.c (output_pic_addr_const): Stubify optimized
26877         symbols.
26878
26879 2007-02-24  Richard Guenther  <rguenther@suse.de>
26880
26881         PR middle-end/30951
26882         * fold-const.c (fold_binary): Fold x +- CST op x for
26883         EQ_EXPR and NE_EXPR.
26884
26885 2007-02-24  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
26886
26887         * pa.md (muldi3): Force subregs to registers in 64-bit expander.
26888
26889 2007-02-24  Jan Hubicka  <jh@suse.cz>
26890
26891         * cgraphunit.c (decide_is_function_needed): Honor
26892         -fkeep-inline-functions.
26893
26894 2007-02-24  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
26895
26896         * builtins.c (fold_builtin_modf): New.
26897         (fold_builtin_2): Use it.
26898
26899 2007-02-24  Bernd Schmidt  <bernd.schmidt@analog.com>
26900
26901         * loop-iv.c (implies_p): Detect additional cases where A implies B.
26902         (determine_max_iter): Take additional LOOP arg; all callers changed.
26903         Lose broken logic dealing with PLUS.  Try to limit the upper bound by
26904         one using simplifications.
26905         (simplify_using_initial_values): Return if the expression becomes
26906         invalid due to altered regs.
26907
26908 2007-02-23  DJ Delorie  <dj@redhat.com>
26909
26910         * doc/tm.h (BIGGEST_ALIGNMENT): Clarify the purpose of this macro.
26911
26912 2007-02-23  Mike Stump  <mrs@apple.com>
26913
26914         * tlink.c (scan_linker_output): Parse linker messages from
26915         darwin9's linker better.
26916
26917 2007-02-23  Steve Ellcey  <sje@cup.hp.com>
26918
26919         PR debug/29614
26920         * varpool.c (varpool_assemble_pending_decls): Set
26921         varpool_last_needed_node to null.
26922
26923 2007-02-23  DJ Delorie  <dj@redhat.com>
26924
26925         * config/i386/i386.c (ix86_data_alignment): Don't specify an
26926         alignment bigger than the object file can handle.
26927
26928 2007-02-23  Uros Bizjak  <ubizjak@gmail.com>
26929
26930         PR target/30825
26931         * config/i386/i386.md (*movdi_1_rex64, zero_extendsidi2_32,
26932         zero_extendsidi2_rex64): Penalize MMX register<->memory moves.
26933         (*movsf_1): Penalize MMX moves.
26934
26935 2007-02-23  Bernd Schmidt  <bernd.schmidt@analog.com>
26936
26937         * config/bfin/bfin.md (doloop_end): Fail for loops that can iterate
26938         2^32-1 or more times unless flag_unsafe_loop_optimizations.
26939
26940         * loop-iv.c (determine_max_iter): Moved in front of its sole user.
26941
26942 2007-02-23  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
26943
26944         * builtins.c (fold_builtin_logb, fold_builtin_significand): New.
26945         (fold_builtin_1): Use them.
26946         * fold-const.c (tree_expr_nonnegative_warnv_p): Handle
26947         BUILT_IN_SIGNIFICAND.
26948
26949 2007-02-23  H.J. Lu  <hongjiu.lu@intel.com>
26950
26951         * config/i386/i386.c (bdesc_1arg): Initialize
26952         IX86_BUILTIN_MOVSHDUP and IX86_BUILTIN_MOVSLDUP with
26953         "__builtin_ia32_movshdup" and "__builtin_ia32_movsldup".
26954         (ix86_init_mmx_sse_builtins): Remove IX86_BUILTIN_MOVSHDUP
26955         and IX86_BUILTIN_MOVSLDUP.
26956
26957 2007-02-22  Paolo Bonzini  <bonzini@gnu.org>
26958
26959         PR rtl-optimization/30841
26960         * fwprop.c (propagate_rtx_1): Accept a VOIDmode replacement address.
26961
26962 2007-02-22  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
26963
26964         * builtins.c (fold_builtin_frexp): New.
26965         (fold_builtin_2): Use it.
26966
26967 2007-02-22  Mark Mitchell  <mark@codesourcery.com>
26968
26969         * doc/invoke.texi (Spec Files): Document getenv spec function.
26970
26971         * gcc.c (getenv_spec_function): New function.
26972         (static_spec_functions): Add it.
26973         * config/vxworks.h (VXWORKS_TARGET_DIR): Remove.
26974         (VXWORKS_ADDITIONAL_CPP_SPEC): Use getenv to find the VxWorks
26975         header files.
26976
26977 2007-02-22  Michael Matz  <matz@suse.de
26978
26979         PR c++/29433
26980         * dwarf2out.c (add_AT_string): Call ggc_strdup once per string.
26981         (type_tag): Use lang_hooks.dwarf_name instead of DECL_NAME.
26982
26983 2007-02-22  Ian Lance Taylor  <iant@google.com>
26984
26985         PR debug/30898
26986         * dwarf2out.c (concatn_mem_loc_descriptor): New static function.
26987         (mem_loc_descriptor): Call it.
26988
26989 2007-02-22  Zdenek Dvorak  <dvorakz@suse.cz>
26990             Ira Rosen  <irar@il.ibm.com>
26991
26992         * tree-data-ref.c (ptr_ptr_may_alias_p): Take alias sets into account.
26993
26994 2007-02-22  Ira Rosen  <irar@il.ibm.com>
26995
26996         PR tree-optimization/30843
26997         * tree-vect-transform.c (vect_transform_loop): Remove strided scalar
26998         stores only after all the group is vectorized.
26999
27000 2007-02-22  Dorit Nuzman  <dorit@il.ibm.com>
27001
27002         PR tree-optimization/30858
27003         * tree-vectorizer.c (vect_is_simple_reduction): Check that the stmts
27004         in the reduction cycle have a single use in the loop.
27005         * tree-vectorizer.h (relevant): Add documentation.
27006
27007 2007-02-20  Mike Stump  <mrs@apple.com>
27008
27009         * configure.ac (powerpc*-*-darwin*): #include <sys/cdefs.h>.
27010         * configure: Regenerate.
27011
27012 2007-02-21  Trevor Smigiel  <trevor_smigiel@playstation.sony.com>
27013
27014         Change the defaults of some parameters and options.
27015         * config/spu/spu-protos.h (spu_optimization_options): Declare.
27016         * config/spu/spu.c (spu_optimization_options): Add.
27017         (spu_override_options): Change params in spu_optimization_options.
27018         * config/spu/spu.h (OPTIMIZATION_OPTIONS): Define.
27019
27020         Register 127 is only 16 byte aligned when used as a frame pointer.
27021         * config/spu/spu-protos.h (spu_init_expanders): Declare.
27022         * config/spu/spu.c (spu_expand_prologue): Set REGNO_POINTER_ALIGN for
27023         HARD_FRAME_POINTER_REGNUM.
27024         (spu_legitimate_address): Use regno_aligned_for_reload.
27025         (regno_aligned_for_load): HARD_FRAME_POINTER_REGNUM is only 16 byte
27026         aligned when frame_pointer_needed is true.
27027         (spu_init_expanders): New.  Set alignment of HARD_FRAME_POINTER_REGNUM
27028         to 8 bits.
27029         * config/spu/spu.h (INIT_EXPANDERS): Define.
27030
27031         Make sure shift and rotate instructions have valid immediate operands.
27032         * config/spu/predicates.md (spu_shift_operand): Remove.
27033         * config/spu/spu.c (print_operand): Add [efghEFGH] modifiers.
27034         * config/spu/constraints.md (W, O): Extend range.
27035         * config/spu/spu.md (umask, nmask): Define.
27036         (ashl<mode>3, ashldi3, ashlti3_imm, shlqbybi_ti, shlqbi_ti, shlqby_ti,
27037         lshr<mode>3, rotm_<mode>, lshr<mode>3_imm, rotqmbybi_<mode>,
27038         rotqmbi_<mode>, rotqmby_<mode>, ashr<mode>3, rotma_<mode>,
27039         rotl<mode>3, rotlti3, rotqbybi_ti, rotqby_ti, rotqbi_ti): Use
27040         spu_nonmem_operand instead of spu_shift_operands.  Use new modifiers.
27041         (lshr<mode>3_reg): Fix rtl description.
27042
27043         Make sure mulhisi immediate operands are valid.
27044         * config/spu/predicates.md (imm_K_operand): Add.
27045         * config/spu/spu.md (mulhisi3_imm, umulhisi3_imm): Use imm_K_operand.
27046
27047         Generate constants using fsmbi and andi.
27048         * config/spu/spu.c (enum immediate_class): Add IC_FSMBI2.
27049         (print_operand, spu_split_immediate, classify_immediate,
27050         fsmbi_const_p): Handle IC_FSMBI2.
27051
27052         Correctly handle a CONST_VECTOR containing symbols.
27053         * config/spu/spu.c (print_operand): Handle HIGH correctly.
27054         (spu_split_immediate): Split CONST_VECTORs with -mlarge-mem.
27055         (immediate_load_p): Allow symbols that use 2 instructions to create.
27056         (classify_immediate, spu_builtin_splats): Don't accept a CONST_VECTOR
27057         with symbols when flag_pic is set.
27058         (const_vector_immediate_p): New.
27059         (logical_immediate_p, iohl_immediate_p, arith_immediate_p): Don't
27060         accept a CONST_VECTOR with symbols.
27061         (spu_legitimate_constant_p): Use const_vector_immediate_p.  Don't
27062         accept a CONST_VECTOR with symbols when flag_pic is set.  Handle HIGH
27063         correctly.
27064         * config/spu/spu.md (high, low): Delete.
27065         (low_<mode>): Define.
27066
27067         Remove INTRmode and INTR_REGNUM, which didn't work.
27068         * config/spu/spu.c (spu_conditional_register_usage): Remove reference
27069         of INTR_REGNUM.
27070         * config/spu/spu-builtins.md (spu_idisable, spu_ienable, set_intr,
27071         set_intr_pic, set_intr_cc, set_intr_cc_pic, set_intr_return, unnamed
27072         peephole2 pattern): Don't use INTR or 131.
27073         (movintrcc): Delete.
27074         * config/spu/spu.h (FIRST_PSEUDO_REGISTER, FIXED_REGISTERS,
27075         CALL_USED_REGISTERS, REGISTER_NAMES, INTR_REGNUM): Remove INTR_REGNUM.
27076         * config/spu/spu.md (UNSPEC_IDISABLE, UNSPEC_IENABLE): Remove.
27077         (UNSPEC_SET_INTR): Add.
27078         * config/spu/spu-modes.def (INTR): Remove.
27079
27080         More accurate warnings about run-time relocations.
27081         * config/spu/spu.c (reloc_diagnostic): Test in_section.
27082
27083         Correctly warn about immediate arguments to specific intrinsics.
27084         * config/spu/spu.c (spu_check_builtin_parm): Handle CONST_VECTORs.
27085         (spu_expand_builtin_1): Call spu_check_builtin_parm before checking
27086         the instruction predicate.
27087
27088         Fix tree check errors with latest update.
27089         * config/spu/spu.c (expand_builtin_args, spu_expand_builtin_1): Use
27090         CALL_EXPR_ARG.
27091         (spu_expand_builtin): Use CALL_EXPR_FN.
27092
27093         Add missing specific intrinsics.
27094         * config/spu/spu-builtins.def: Add si_bisled, si_bisledd and
27095         si_bislede.
27096         * config/spu/spu_internals.h: Ditto.
27097
27098         Fix incorrect operand modifiers.
27099         * config/spu/spu-builtins.md (spu_mpy, spu_mpyu): Remove use of %H.
27100         * config/spu/spu.md (xor<mode>3): Change %S to %J.
27101
27102         Optimize one case of zero_extend of a vec_select.
27103         * config/spu/spu.md (_vec_extractv8hi_ze): Add.
27104
27105         Accept any immediate for hbr.
27106         * config/spu/spu.md (hbr): Change s constraints to i.
27107
27108 2007-02-21  Paul Brook  <paul@codesourcery.com>
27109
27110         * config/arm/arm.c (thumb2_final_prescan_insn): Don't incrememnt
27111         condexec_count when skipping USE and CLOBBER.
27112
27113 2007-02-21  Nick Clifton  <nickc@redhat.com>
27114
27115         * common.opt (Warray-bounds): Add Warning attribute.
27116         (Wstrict-overflow, Wstrict-overflow=, Wcoverage-mismatch):
27117         Likewise.
27118         (fsized-zeroes): Add Optimization attribute.
27119         (fsplit-wide-types, ftree-scev-cprop): Likewise.
27120         * c.opt (Wc++0x-compat): Add Warning attribute.
27121
27122 2007-02-21  Ulrich Weigand  <uweigand@de.ibm.com>
27123
27124         PR middle-end/30761
27125         * reload1.c (eliminate_regs_in_insn): In the single_set special
27126         case, attempt to re-recognize the insn before falling back to
27127         having reload fix it up.
27128
27129 2007-02-20  Eric Christopher  <echristo@gmail.com>
27130
27131         * config/frv/frv.c (frv_read_argument): Take a tree and int argument.
27132         Rewrite accordingly.
27133         (frv_read_iacc_argument): Ditto.
27134         (frv_expand_set_builtin): Take a call instead of arglist, update for
27135         above changes.
27136         (frv_expand_unop_builtin): Ditto.
27137         (frv_expand_binop_builtin): Ditto.
27138         (frv_expand_cut_builtin): Ditto.
27139         (frv_expand_binopimm_builtin): Ditto.
27140         (frv_expand_voidbinop_builtin): Ditto.
27141         (frv_expand_int_void2arg): Ditto.
27142         (frv_expand_prefetches): Ditto.
27143         (frv_expand_voidtriop_builtin): Ditto.
27144         (frv_expand_voidaccop_builtin): Ditto.
27145         (frv_expand_load_builtin): Ditto.
27146         (frv_expand_store_builtin): Ditto.
27147         (frv_expand_mdpackh_builtin): Ditto.
27148         (frv_expand_mclracc_builtin): Ditto.
27149         (frv_expand_mrdacc_builtin): Ditto.
27150         (frv_expand_mwtacc_builtin): Ditto.
27151         (frv_expand_builtin): Remove usage of CALL_EXPR_ARGS, update
27152         calls for above.
27153
27154 2007-02-20  Janis Johnson  <janis187@us.ibm.com>
27155
27156         * doc/invoke.texi (RS/6000 and PowerPC Options): Add -mcmpb and -mdfp.
27157         * configure.ac (HAVE_GAS_CMPB): Check for assembler support of the
27158         cmpb instruction.
27159         (HAVE_GAS_DFP): Check for assembler support of decimal floating
27160         point instructions.
27161         * configure: Regenerate.
27162         * config.in: Regenerate.
27163         * config/rs6000/rs6000.opt (mcmpb, mdfp): New.
27164         * config/rs6000/rs6000.c (rs6000_override_options): Add CMPB and DFP
27165         masks to power6 and power6x and to POWERPC_MASKS.
27166         * config/rs6000/rs6000-c.c (rs6000_cpu_cpp_builtins): Define
27167         _ARCH_PWR6.
27168         * config/rs6000/rs6000.h: Check assembler support for CMPB and DFP.
27169         * config/rs6000/sysv4.opt (mprototype): Use variable, not mask.
27170         * config/rs6000/linux64.h (SUBSUBTARGET_OVERRIDE_OPTIONS):
27171         Access PROTOTYPE as variable, not mask.
27172
27173 2007-02-20  Steven Bosscher  <steven@gcc.gnu.org>
27174
27175         * rtl.h (remove_reg_equal_equiv_notes): New prototype.
27176         * rtlanal.c (remove_reg_equal_equiv_notes): New function.
27177         * combine.c (adjust_for_new_dest): Use it.
27178         * postreload.c (reload_combine): Likewise.
27179
27180 2007-02-20  Steven Bosscher  <steven@gcc.gnu.org>
27181
27182         * rtlanal.c (find_reg_equal_equiv_note): Do not find REG_EQ*
27183         notes on an insn with multiple sets, even if single_set returns
27184         non-NULL for that insn.
27185
27186 2007-02-20  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
27187
27188         * fold-const.c (tree_expr_nonnegative_warnv_p): Handle scalb,
27189         scalbn and scalbln.
27190
27191 2007-02-20  Geoffrey Keating  <geoffk@apple.com>
27192
27193         * config/darwin.h (LINK_SPEC): Default -mmacosx-version-min only
27194         if user didn't pass it.
27195         * config/i386/darwin.h (CC1_SPEC): Likewise.
27196         * config/rs6000/darwin.h (CC1_SPEC): Likewise.
27197         (DARWIN_MINVERSION_SPEC): Don't depend on user's setting of
27198         -mmacosx-version-min.
27199
27200 2007-02-20  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
27201             Uros Bizjak  <ubizjak@gmail.com>
27202
27203         * optabs.h (enum optab_index): Add new OTI_scalb.
27204         (scalb_optab): Define corresponding macro.
27205         * optabs.c (init_optabs): Initialize scalb_optab.
27206         * genopinit.c (optabs): Implement scalb_optab using scalb?f3
27207         patterns.
27208         * builtins.c (expand_builtin_mathfn_2, expand_builtin): Handle
27209         BUILT_IN_SCALB{,F,L}, BUILT_IN_SCALBN{,F,L} and BUILT_IN_SCALBLN{,F,L}.
27210         (expand_builtin): Expand BUILT_IN_SCALB{,F,L}, BUILT_IN_SCALBN{,F,L}
27211         and BUILT_IN_SCALBLN{,F,L} using expand_builtin_mathfn_2 if
27212         flag_unsafe_math_optimizations is set.
27213
27214         * config/i386/i386.md (scalbxf3, scalb<mode>3): New expanders
27215         to implement scalbf, scalb and scalbl built-ins as inline x87
27216         intrinsics.
27217
27218 2007-02-20  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
27219             DJ Delorie <dj@redhat.com>
27220
27221         PR other/30824
27222         * diagnostic.c (diagnostic_count_diagnostic): Move -Werror logic to...
27223         (diagnostic_report_diagnostic): ... here, and turn them into real
27224         errors. If warnings are inhibited, no need to do anything.
27225
27226 2007-02-20  Uros Bizjak  <ubizjak@gmail.com>
27227
27228         * config/i386/i386.md (expm1xf2): Reorder insn sequence for
27229         better code generation.
27230
27231 2007-02-20  Ben Elliston  <bje@au.ibm.com>
27232
27233         * config/m68hc11/m68hc11.h (OVERRIDE_OPTIONS): Remove extra ;.
27234
27235 2007-02-20  Kazu Hirata  <kazu@codesourcery.com>
27236
27237         * config/alpha/alpha.c, config/alpha/alpha.md,
27238         config/alpha/lib1funcs.asm, config/alpha/vms-crt0-64.c,
27239         config/alpha/vms-psxcrt0-64.c, config/arc/arc.c,
27240         config/arc/arc.h, config/arm/arm.c, config/arm/arm.md,
27241         config/arm/lib1funcs.asm: Follow spelling conventions.
27242
27243         * config/c4x/c4x.md, config/cris/cris.c, config/crx/crx.c,
27244         config/fr30/fr30.md, config/i386/i386.h,
27245         config/iq2000/iq2000.h, config/iq2000/predicates.md,
27246         config/pa/milli64.S, config/pa/pa.c, config/pa/pa.h,
27247         config/pa/pa.md, config/pa/pa32-regs.h, config/pa/pa64-regs.h,
27248         config/pdp11/pdp11.c, config/pdp11/pdp11.h,
27249         config/rs6000/altivec.md, config/rs6000/rs6000.c,
27250         config/s390/s390-modes.def, config/sparc/netbsd-elf.h,
27251         config/sparc/sparc.c, config/sparc/sparc.h,
27252         config/sparc/sparc.md, config/spu/constraints.md,
27253         config/spu/spu.c, config/stormy16/stormy16.md: Follow spelling
27254         conventions.
27255
27256 2007-02-20  Alan Modra  <amodra@bigpond.net.au>
27257
27258         PR target/29943
27259         * varasm.c (use_blocks_for_decl_p): Return false for decls with
27260         alias attribute.
27261
27262 2007-02-19  Kazu Hirata  <kazu@codesourcery.com>
27263
27264         * doc/invoke.texi (-ftree-lrs): Remove.
27265
27266 2007-02-19  Diego Novillo  <dnovillo@redhat.com>
27267
27268         * tree-ssa-pre.c (create_value_expr_from): Initialize POOL to
27269         NULL.
27270
27271 2007-02-19  Lee Millward  <lee.millward@codesourcery.com>
27272
27273         * config/ia64/ia64.c (ia64_expand_builtin): Use the
27274         new CALL_EXPR_FN macro for retrieving the function
27275         declaration of the input expression.
27276
27277 2007-02-19  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
27278
27279         * c.opt (Waddress): New.
27280         * common.opt (Walways-true): Delete.
27281         (Wstring-literal-comparison): Delete.
27282         * doc/invoke.texi (Warning Options): Delete -Walways-true and
27283         -Wstring-literal-comparison. Add -Waddress.
27284         (Waddress): New.
27285         (Walways-true): Delete.
27286         (Wstring-literal-comparison): Delete.
27287         * doc/extend.texi (#pragma GCC diagnostic): Use -Wformat
27288         consistently instead of -Walways-true in example.
27289         * c-opts.c (c_common_handle_option): -Waddress is enabled by -Wall.
27290         * c-typeck.c (parser_build_binary_op): Replace
27291         -Wstring-literal-comparison and -Walways-true with -Waddress.
27292         * c-common.c (c_common_truthvalue_conversion): Replace -Walways-true
27293         with -Waddress.
27294
27295 2007-02-19  Eric Botcazou  <ebotcazou@adacore.com>
27296
27297         * tree-cfg.c (dump_function_to_file): Be prepared for functions
27298         without DECL_STRUCT_FUNCTION initialized.
27299
27300 2007-02-19  Eric Botcazou  <ebotcazou@adacore.com>
27301
27302         * gimplify.c (gimplify_init_ctor_preeval_1): Detect potential overlap
27303         due to calls to functions taking pointers as parameters.
27304
27305 2007-02-19  Richard Henderson  <rth@redhat.com>
27306
27307         PR debug/29558
27308         * var-tracking.c (track_expr_p): Disallow AGGREGATE_TYPE_P
27309         in memory.
27310
27311 2007-02-19  Andreas Krebbel  <krebbel1@de.ibm.com>
27312
27313         * config/s390/s390.c (s390_call_saved_register_used,
27314         s390_function_ok_for_sibcall): Adjust the way CALL_EXPR arguments are
27315         accessed to the new scheme.
27316
27317 2007-02-19  Jan-Benedict Glaw  <jbglaw@lug-owl.de>
27318
27319         * config/cris/cris.c (cris_movem_load_rest_p, cris_store_multiple_op_p)
27320         (cris_print_index, cris_print_operand, cris_print_operand_address)
27321         (cris_reload_address_legitimized, cris_rtx_costs, cris_address_cost)
27322         (cris_side_effect_mode_ok, cris_valid_pic_const, cris_split_movdx)
27323         (cris_expand_pic_call_address): Use xxx_P predicate macros instead of
27324         GET_CODE () == xxx.
27325         * config/cris/cris.h (SECONDARY_RELOAD_CLASS, EXTRA_CONSTRAINT_Q,
27326         EXTRA_CONSTRAINT_T, BDAP_INDEX_P, BIAP_INDEX_P, SIMPLE_ADDRESS_P,
27327         GO_IF_LEGITIMATE_ADDRESS): Ditto.
27328         * config/cris/cris.md (define_insns: *btst, movdi, *mov_side<mode>)
27329         (*mov_sidesisf, *mov_side<mode>_mem, *mov_sidesisf_mem)
27330         (*clear_side<mode>, movsi, *movsi_internal, *ext_sideqihi)
27331         (*ext_side<mode>si, *op_side<mode>, *op_swap_side<mode>, addsi3)
27332         (*extopqihi_side, *extop<mode>si_side, *extopqihi_swap_side)
27333         (*extop<mode>si_swap_side, addi_mul, *addi,andsi3, andhi3, ashl<mode>3)
27334         (uminsi3, call, call_value): Ditto.
27335         (define_split: indir_to_reg_split, unnamed): Ditto.
27336
27337 2007-02-19  Dorit Nuzman  <dorit@il.ibm.com>
27338
27339         PR tree-optimization/30975
27340         * tree-vect-trasnform.c (vect_get_vec_def_for_stmt_copy): Remove
27341         wrong assert.
27342
27343 2007-02-18  Eric Christopher  <echristo@gmail.com>
27344
27345         * mips.c (mips_prepare_builtin_arg): Add argnum parameter.
27346         Remove use of arglist.
27347         (mips_expand_builtin): Remove use of arglist, pass in expr.
27348         (mips_expand_builtin_direct): Rewrite handling for arglist removal.
27349         (mips_expand_builtin_movtf): Ditto.
27350         (mips_expand_builtin_compare): Ditto.
27351
27352 2007-02-19  Alexandre Oliva  <aoliva@redhat.com>
27353
27354         * tree-sra.c (sra_build_assignment): Replace assertion
27355         checking with a comment explaining why it can't be done.
27356
27357 2007-02-18  Sandra Loosemore  <sandra@codesourcery.com>
27358
27359         PR middle-end/30833
27360         * tree-dump.c (dequeue_and_dump): Add tcc_vl_exp case missed
27361         during CALL_EXPR representation conversion.
27362         * tree-ssa-propagate.c (set_rhs): Likewise.
27363
27364 2007-02-19  Alexandre Oliva  <aoliva@redhat.com>
27365
27366         * tree-sra.c (sra_build_assignment): Disable assertion checking
27367         for now.
27368
27369 2007-02-18  Roger Sayle  <roger@eyesopen.com>
27370
27371         * function.c (gimplify_parameters): Call build_gimple_modify_stmt
27372         instead of calling build2 with a GIMPLE_MODIFY_STMT.
27373         * gimple-low.c (lower_function_body, lower_builtin_setjmp):
27374         Likewise.
27375         * gimplify.c (build_stack_save_restore, gimplify_return_expr,
27376         gimplify_decl_expr,  gimplify_self_mod_expr, gimplify_cond_expr,
27377         gimplify_init_ctor_eval_range, gimple_push_cleanup,
27378         gimplify_omp_for, gimplify_omp_atomic_pipeline,
27379         gimplify_omp_atomic_mutex, gimplify_expr, gimplify_one_sizepos,
27380         force_gimple_operand): Likewise.
27381         * ipa-cp.c (constant_val_insert): Likewise.
27382         * lambda-code.c (lbv_to_gcc_expression, lle_to_gcc_expression,
27383         lambda_loopnest_to_gcc_loopnest, replace_uses_equiv_to_x_with_y,
27384         perfect_nestify): Likewise.
27385         * langhooks.c (lhd_omp_assignment): Likewise.
27386         * omp-low.c (lower_rec_input_clauses, lower_reduction_clauses,
27387         lower_copyprivate_clauses, lower_send_clauses,
27388         lower_send_shared_vars, expand_parallel_call,
27389         expand_omp_for_generic, expand_omp_for_static_nochunk,
27390         expand_omp_for_static_chunk, expand_omp_sections,
27391         lower_omp_single_copy, lower_omp_for_lastprivate,
27392         lower_omp_parallel, init_tmp_var, save_tmp_var): Likewise.
27393         * value-prof.c (tree_divmod_fixed_value, tree_mod_pow2,
27394         tree_mod_subtract, tree_ic, tree_stringop_fixed_value):
27395         Likewise.
27396
27397 2007-02-19  Kazu Hirata  <kazu@codesourcery.com>
27398
27399         * config/sh/divtab.c, config/sh/sh.c, config/sh/sh.h,
27400         config/sh/sh.md: Follow spelling conventions.
27401
27402         * config/frv/frv.c, config/frv/frv.h, config/frv/frv.md,
27403         config/frv/predicates.md: Follow spelling conventions.
27404
27405         * config/m68k/linux-unwind.h: Fix a comment typo.
27406         * target.h: Follow spelling conventions.
27407
27408 2007-02-18  Roger Sayle  <roger@eyesopen.com>
27409
27410         PR rtl-optimization/28173
27411         * simplify-rtx.c (simplify_binary_operation_1) <IOR>: Optimize
27412         (X & C1) | C2 as C2 when (C1 & C2) == C1 and X has no side-effects.
27413         Optimize (X & C1) | C2 as X | C2 when (C1 | C2) == ~0.
27414         Canonicalize (X & C1) | C2 as (X & (C1 & ~C2)) | C2.
27415         <AND>: Canonicalize (X | C1) & C2 as (X & C2) | (C1 & C2).
27416
27417 2007-02-18  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
27418
27419         * builtins.c (fold_builtin_load_exponent): New.
27420         (fold_builtin_2): Use it.
27421
27422 2007-02-18  Steven Bosscher  <steven@gcc.gnu.org>
27423
27424         PR rtl-optimization/30773
27425         * local-alloc.c (update_equiv_regs): Do not set reg_equiv_init
27426         if we fail to attach a REG_EQUIV note.
27427
27428 2007-02-18  David Edelsohn  <edelsohn@gnu.org>
27429             Roger Sayle  <roger@eyesopen.com>
27430
27431         * config/rs6000/rs6000.md (bswapsi2): New define_insn and splitter.
27432
27433 2007-02-18  Sandra Loosemore  <sandra@codesourcery.com>
27434
27435         * calls.c (initialize_argument_information): Pass original EXP
27436         and STRUCT_VALUE_ADDR_VALUE instead of a list of arguments.  Move
27437         code to split complex arguments here, as part of initializing the
27438         ARGS array.
27439         (expand_call): Remove code that builds a list of arguments and
27440         inserts implicit arguments into it.  Instead, just count how many
27441         implicit arguments there will be so we can determine the size of
27442         the ARGS array, and let initialize_argument_information do the work.
27443         (split_complex_values): Delete unused function.
27444
27445 2007-02-18  Eric Botcazou  <ebotcazou@adacore.com>
27446
27447         * tree-eh.c (tree_could_trap_p): Handle VIEW_CONVERT_EXPR.
27448
27449 2007-02-18  Eric Botcazou  <ebotcazou@adacore.com>
27450
27451         * calls.c (mem_overlaps_already_clobbered_arg_p): Return true
27452         for arg pointer based indexed addressing.
27453
27454 2007-02-18  Kazu Hirata  <kazu@codesourcery.com>
27455
27456         * config/ia64/ia64.h, config/ia64/ia64.md,
27457         config/ia64/predicates.md, config/ia64/sysv4.h: Follow
27458         spelling conventions.
27459
27460 2007-02-18  Roman Zippel <zippel@linux-m68k.org>
27461
27462         * config/m68k/m68k.c (split_di): New.
27463         * config/m68k/m68k-protos.h: Declare split_di.
27464         * config/m68k/m68k.md (extendsidi2*,ashldi3*,ashrdi3*,lshrdi3*):
27465           Improve predicate handling and split constant shifts.
27466
27467 2007-02-18  Roman Zippel <zippel@linux-m68k.org>
27468
27469         * config/m68k/m68k.md (extv,extzv,insv): disable dynamic
27470         parameter for register bitfield operations, general predicates
27471         cleanup
27472
27473 2007-02-18  Roman Zippel <zippel@linux-m68k.org>
27474
27475         * config/m68k/linux.h (MD_UNWIND_SUPPORT): Define.
27476         * config/m68k/linux-unwind.h: New file.
27477
27478 2007-02-18  Kazu Hirata  <kazu@codesourcery.com>
27479
27480         * cfgloop.c, config/alpha/alpha.c, config/bfin/bfin.c,
27481         config/i386/athlon.md, config/ia64/ia64.md,
27482         config/rs6000/rs6000.c, config/s390/s390.c, config/spu/spu.md,
27483         df-problems.c, df.h, fold-const.c, ipa-cp.c, ipa-inline.c,
27484         ipa-prop.h, see.c, struct-equiv.c, tree-inline.c,
27485         tree-ssa-loop-niter.c, tree-vect-analyze.c,
27486         tree-vect-transform.c: Fix comment typos.
27487
27488 2007-02-17  Kazu Hirata  <kazu@codesourcery.com>
27489
27490         * sched-deps.c (find_insn_list): Remove.
27491         * sched-int.h: Remove the prototype for find_insn_list.
27492
27493 2007-02-16  Geoffrey Keating  <geoffk@apple.com>
27494
27495         * config/darwin.h (LINK_SPEC): Always pass -macosx_version_min
27496         to linker.
27497         (DARWIN_EXTRA_SPECS): Add %(darwin_minversion).
27498         * config/rs6000/darwin.h (SUBTARGET_OVERRIDE_OPTIONS): Just call
27499         darwin_rs6000_override_options.
27500         (C_COMMON_OVERRIDE_OPTIONS): Expect
27501         darwin_macosx_version_min to be non-NULL always.
27502         (TARGET_C99_FUNCTIONS): Likewise.
27503         (CC1_SPEC): Always pass -mmacosx-version-min to cc1*.
27504         (DARWIN_MINVERSION_SPEC): New.
27505         * config/rs6000/rs6000.c (darwin_rs6000_override_options): New.
27506         * config/i386/darwin.h (CC1_SPEC): Always pass -mmacosx-version-min
27507         to cc1*.
27508         (DARWIN_MINVERSION_SPEC): New.
27509         * config/darwin.opt (mmacosx-version-min): Initialize to non-NULL
27510         value.
27511         * config/darwin-c.c (darwin_cpp_builtins): Expect
27512         darwin_macosx_version_min to be non-NULL always.
27513
27514         * config/rs6000/rs6000.c: Clean up trailing whitespace.
27515
27516 2007-02-16  Uros Bizjak  <ubizjak@gmail.com>
27517
27518         * config/i386/i386.h (x86_use_xchgb): New.
27519         (TARGET_USE_XCHGB): New macro.
27520         * config/i386/i386.c (x86_use_xchgb): Set for PENT4.
27521         * config/i386/i386.md (*rotlhi3_1 splitter, *rotrhi3_1 splitter):
27522         Split after reload into bswaphi for shifts of 8.
27523         (bswaphi_lowpart): Generate rolw insn for HImode byte swaps.
27524         (*bswaphi_lowpart_1): Generate xchgb for Q registers for TARGET_XCHGB
27525         or when optimizing for size.
27526
27527 2007-02-16  Richard Guenther  <rguenther@suse.de>
27528             Christian Bruel  <christian.bruel@st.com>
27529
27530         * fold-const.c (tree_swap_operands_p): Treat SSA_NAMEs like
27531         DECLs but prefer SSA_NAMEs over DECLs.
27532
27533 2007-02-16  Richard Guenther  <rguenther@suse.de>
27534
27535         * tree-flow-inline.h (single_imm_use_p): Remove.
27536         (zero_imm_uses_p): Likewise.
27537         * tree-ssa-coalesce.c (create_outofssa_var_map): Use has_single_use
27538         instead of single_imm_use_p.
27539         * tree-cfg.c (replace_uses_by): Use has_zero_use instead of
27540         zero_imm_uses_p.
27541
27542 2007-02-16  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
27543
27544         PR other/27843
27545         * Makefile.in (SYSTEM_HEADER_DIR): Use single quotes to avoid
27546         nested double- and backquotes.
27547
27548 2007-02-15  Roger Sayle  <roger@eyesopen.com>
27549
27550         PR middle-end/30391
27551         * tree.c (expr_align): Handle MODIFY_EXPR.  GIMPLE_MODIFY_STMT
27552         should be unreachable.
27553         (build2_stat): Allow construction of MODIFY_EXPR at any time.
27554         For the time being redirect GIMPLE_MODIFY_STMT to the new
27555         (renamed) build_gimple_modify_stmt_stat.
27556         (build2_gimple_stat): Rename to...
27557         (build_gimple_modify_stmt_stat): Now longer take a CODE argument.
27558         Always build a GIMPLE_MODIFY_STMT node.
27559         * tree.h (build2_gimple, build2_gimple_stat): Delete.
27560         (build_gimple_modify_stmt, build_gimple_modify_stmt_stat): New
27561         declarations.
27562
27563         * tree-cfg.c (factor_computed_gotos, tree_merge_blocks,
27564         gimplify_val): Use build_gimple_modify_stmt instead of build2_gimple.
27565         * tree-complex.c (set_component_ssa_name, expand_complex_move,
27566         expand_complex_div_wide): Likewise.
27567         * tree-ssa-dom.c (record_equivalences_from_stmt): Likewise.
27568         * tree-ssa-loop-im.c (schedule_sm): Likewise.
27569         * tree-ssa-loop-ivopts.c (rewrite_use_nonlinear_expr): Likewise.
27570         * tree-ssa-loop-manip.c (create_iv): Likewise.
27571         * tree-ssa-phiopt.c (conditional_replacement, minmax_replacement,
27572         abs_replacement): Likewise.
27573         * tree-ssa-pre.c (create_expression_by_pieces, poolify_modify_stmt,
27574         realify_fake_stores): Likewise.
27575
27576         * builtins.c (std_expand_builtin_va_start): Build a MODIFY_EXPR
27577         node rather than a GIMPLE_MODIFY_STMT node.
27578         (std_gimpify_va_arg_expr, expand_builtin_va_copy,
27579         fold_builtin_memset, fold_builtin_memory_op, do_mpfr_sincos):
27580         Likewise.
27581         (integer_valued_real_p): Handle MODIFY_EXPR, not GIMPLE_MODIFY_STMT.
27582         * expr.c (expand_expr_real_1): Handle both MODIFY_EXPR and
27583         GIMPLE_MODIFY_STMT.
27584
27585 2007-02-15  Andrew Pinski  <andrew_pinski@playstation.sony.com>
27586
27587         PR middle-end/30433
27588         * fold-const.c (fold_comparison): Add back the
27589         folding of constant complex comparisions.
27590
27591 2007-02-15  Andrew Pinski  <andrew_pinski@playstation.sony.com>
27592
27593         PR middle-end/30729
27594         * stmt.c (warn_if_unused_value): VA_ARG_EXPR has side
27595         effects unknown to this function, return early.
27596
27597 2007-02-15  Ian Lance Taylor  <iant@google.com>
27598
27599         * lower-subreg.c (move_eh_region_note): New static function.
27600         (resolve_simple_move): Call it.
27601         (decompose_multiword_subregs): Track blocks for which we resolve a
27602         simple move which is also a control flow insn.  Pass them to
27603         find_many_sub_basic_blocks.
27604         (pass_lower_subreg): Add TODO_verify_flow.
27605         (pass_lower_subreg2): Likewise.
27606
27607 2007-02-15  Sandra Loosemore  <sandra@codesourcery.com>
27608             Brooks Moses  <brooks.moses@codesourcery.com>
27609             Lee Millward  <lee.millward@codesourcery.com>
27610
27611         * tree.h (enum tree_code_class): Add tcc_vl_exp.
27612         (VL_EXP_CLASS_P): New.
27613         (TREE_OPERAND_CHECK): Use TREE_OPERAND_LENGTH instead of
27614         TREE_CODE_LENGTH.
27615         (TREE_OPERAND_CHECK_CODE): Likewise.
27616         (GIMPLE_STMT_OPERAND_CHECK): Likewise.
27617         (TREE_RTL_OPERAND_CHECK): Likewise.
27618         (tree_operand_check_failed): Make second parameter the whole tree
27619         instead of its code.  Fixed callers.
27620         (VL_EXP_CHECK): New.
27621         (TREE_OPERAND_LENGTH): New.
27622         (VL_EXP_OPERAND_LENGTH): New.
27623         (CALL_EXPR_FN): New.
27624         (CALL_EXPR_STATIC_CHAIN): New.
27625         (CALL_EXPR_ARGS): New.
27626         (CALL_EXPR_ARG): New.
27627         (call_expr_nargs): New.
27628         (CALL_EXPR_ARGP): New.
27629         (build_nt_call_list): Declare.
27630         (build_vl_exp_stat): Declare.
27631         (build_vl_exp): New.
27632         (build_call_list): Declare.
27633         (build_call_nary): Declare.
27634         (build_call_valist): Declare.
27635         (build_call_array): Declare.
27636         (call_expr_arg): Declare.
27637         (call_expr_argp): Declare.
27638         (call_expr_arglist): Declare.
27639         (fold_build_call_list): Declare.
27640         (fold_build_call_list_initializer): Declare.
27641         (fold_call_expr): Declare to replace fold_builtin.
27642         (fold_builtin_fputs): Update to agree with modified definition.
27643         (fold_builtin_strcpy): Likewise.
27644         (fold_builtin_strncpy): Likewise.
27645         (fold_builtin_memory_chk): Likewise.
27646         (fold_builtin_stxcpy_chk): Likewise.
27647         (fold_builtin_strncpy_chk): Likewise.
27648         (fold_builtin_next_arg): Likewise.
27649         (fold_build_call_expr): Declare.
27650         (fold_builtin_call_list): Declare.
27651         (fold_builtin_call_valist): Declare.
27652         (build_call_expr): Declare.
27653         (validate_arglist): Update to agree with modified definition.
27654         (tree_operand_length): New.
27655         (call_expr_arg_iterator): New.
27656         (init_call_expr_arg_iterator): New.
27657         (next_call_expr_arg): New.
27658         (first_call_expr_arg): New.
27659         (more_call_expr_args_p): New.
27660         (FOR_EACH_CALL_EXPR_ARG): New.
27661
27662         * tree.c (tree_code_class_string): Add entries for tcc_vl_exp
27663         and tcc_gimple_stmt.
27664         (tree_code_size): Update documentation.  Use sizeof (tree) rather
27665         than sizeof (char *).
27666         (tree_size): Likewise.  Add case for tcc_vl_exp.
27667         (tree_node_structure): Add case for tcc_vl_exp.
27668         (contains_placeholder_p): Likewise.
27669         (substitute_in_expr): Likewise.
27670         (substitute_placeholder_in_expr): Likewise.
27671         (stabilize_reference_1): Likewise.
27672         (build3_stat): Remove logic for CALL_EXPRs.  Replace with assertion
27673         to diagnose breakage of this interface for constructing CALL_EXPRs.
27674         (build_nt): Add similar assertion here.
27675         (build_nt_call_list): New.
27676         (simple_cst_equal) <CALL_EXPR>: Rewrite to use new accessors.
27677         (iterative_hash_expr): Use TREE_OPERAND_LENGTH instead of
27678         TREE_CODE_LENGTH.
27679         (get_callee_fndecl): Use new CALL_EXPR accessors.
27680         (tree_operand_check_failed): Change parameters to pass entire node
27681         instead of its code, so that we can call TREE_OPERAND_LENGTH on it.
27682         (process_call_operands): New.
27683         (build_vl_exp_stat): New.
27684         (build_call_list): New.
27685         (build_call_nary): New.
27686         (build_call_valist): New.
27687         (build_call_array): New.
27688         (walk_tree): Use TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
27689         (call_expr_arglist): New.
27690
27691         * tree.def (CALL_EXPR): Change representation of CALL_EXPRs to use
27692         tcc_vl_exp instead of a fixed-size tcc_expression.
27693
27694         * doc/c-tree.texi (CALL_EXPR): Document new representation and
27695         accessors for CALL_EXPRs.
27696         (AGGR_INIT_EXPR): Likewise.
27697
27698 2007-02-15  Sandra Loosemore  <sandra@codesourcery.com>
27699             Brooks Moses  <brooks.moses@codesourcery.com>
27700             Lee Millward  <lee.millward@codesourcery.com>
27701
27702         * builtins.c (c_strlen): Return NULL_TREE instead of 0.
27703         (expand_builtin_nonlocal_goto): Change parameter to be entire
27704         CALL_EXPR instead of an arglist.  Use new CALL_EXPR accessors.
27705         (expand_builtin_prefetch): Likewise.
27706         (expand_builtin_classify_type): Likewise.
27707         (mathfn_built_in): Return NULL_TREE instead of 0.
27708         (expand_errno_check): Use new CALL_EXPR accessors.
27709         (expand_builtin_mathfn): Use new CALL_EXPR accessors and constructors.
27710         Return NULL_RTX instead of 0.
27711         (expand_builtin_mathfn_2): Likewise.
27712         (expand_builtin_mathfn_3): Likewise.
27713         (expand_builtin_interclass_mathfn): Likewise.
27714         (expand_builtin_sincos): Likewise.
27715         (expand_builtin_cexpi): Likewise.
27716         (expand_builtin_int_roundingfn): Likewise.
27717         (expand_builtin_int_roundingfn_2): Likewise.
27718         (expand_builtin_pow): Likewise.
27719         (expand_builtin_powi): Likewise.
27720         (expand_builtin_strlen): Pass entire CALL_EXPR as parameter instead
27721         of arglist, fixing callers appropriately.  Use new CALL_EXPR
27722         accessors and constructors.  Return NULL_RTX instead of 0.
27723         (expand_builtin_strstr): Likewise.
27724         (expand_builtin_strchr): Likewise.
27725         (expand_builtin_strrchr): Likewise.
27726         (expand_builtin_strpbrk): Likewise.
27727         (expand_builtin_memcpy): Likewise.
27728         (expand_builtin_mempcpy): Likewise.
27729         (expand_builtin_mempcpy_args): New.
27730         (expand_builtin_memmove): Similarly to expand_builtin_mempcpy.
27731         (expand_builtin_memmove_args): New.
27732         (expand_builtin_bcopy): Similarly to expand_builtin_mempcpy.
27733         (expand_movstr): Likewise.
27734         (expand_builtin_strcpy): Likewise.
27735         (expand_builtin_strcpy_args): New.
27736         (expand_builtin_stpcpy): Similarly to expand_builtin_strcpy.
27737         (expand_builtin_strncpy): Likewise.
27738         (expand_builtin_memset): Likewise.
27739         (expand_builtin_memset_args): New.
27740         (expand_builtin_bzero): Similarly to expand_builtin_memset.
27741         (expand_builtin_memcmp): Likewise.
27742         (expand_builtin_strcmp): Likewise.
27743         (expand_builtin_strncmp): Likewise.
27744         (expand_builtin_strcat): Likewise.
27745         (expand_builtin_strncat): Likewise.
27746         (expand_builtin_strspn): Likewise.
27747         (expand_builtin_strcspn): Likewise.
27748         (expand_builtin_args_info): Likewise.
27749         (expand_builtin_va_start): Likewise.
27750         (gimplify_va_arg_expr): Likewise.
27751         (expand_builtin_va_end): Likewise.
27752         (expand_builtin_va_copy): Likewise.
27753         (expand_builtin_frame_address): Likewise.
27754         (expand_builtin_alloca): Likewise.
27755         (expand_builtin_bswap): Likewise.
27756         (expand_builtin_unop): Likewise.
27757         (expand_builtin_fputs): Likewise.
27758         (expand_builtin_expect): Likewise.
27759         (expand_builtin_fabs): Likewise.
27760         (expand_builtin_copysign): Likewise.
27761         (expand_builtin_printf): Likewise.
27762         (expand_builtin_fprintf): Likewise.
27763         (expand_builtin_sprintf): Likewise.
27764         (expand_builtin_init_trampoline): Likewise.
27765         (expand_builtin_signbit): Likewise.
27766         (expand_builtin_fork_or_exec): Likewise.
27767         (expand_builtin_sync_operation): Likewise.
27768         (expand_builtin_compare_and_swap): Likewise.
27769         (expand_builtin_lock_test_and_set): Likewise.
27770         (expand_builtin_lock_release): Likewise.
27771         (expand_builtin): Likewise.
27772         (builtin_mathfn_code): Likewise.
27773
27774         (fold_builtin_constant_p): Pass call arguments individually instead
27775         of as an arglist, fixing callers appropriately.  Use new CALL_EXPR
27776         accessors and constructors.  Return NULL_TREE instead of 0.
27777         (fold_builtin_expect): Likewise.
27778         (fold_builtin_classify_type): Likewise.
27779         (fold_builtin_strlen): Likewise.
27780         (fold_builtin_nan): Likewise.
27781         (integer_valued_real_p): Likewise.
27782         (fold_trunc_transparent_mathfn): Likewise.
27783         (fold_fixed_mathfn): Likewise.
27784         (fold_builtin_cabs): Likewise.
27785         (fold_builtin_sqrt): Likewise.
27786         (fold_builtin_cbrt): Likewise.
27787         (fold_builtin_cos): Likewise.
27788         (fold_builtin_cosh): Likewise.
27789         (fold_builtin_tan): Likewise.
27790         (fold_builtin_sincos): Likewise.
27791         (fold_builtin_cexp): Likewise.
27792         (fold_builtin_trunc): Likewise.
27793         (fold_builtin_floor): Likewise.
27794         (fold_builtin_ceil): Likewise.
27795         (fold_builtin_round): Likewise.
27796         (fold_builtin_int_roundingfn): Likewise.
27797         (fold_builtin_bitop): Likewise.
27798         (fold_builtin_bswap): Likewise.
27799         (fold_builtin_logarithm): Likewise.
27800         (fold_builtin_hypot): Likewise.
27801         (fold_builtin_pow): Likewise.
27802         (fold_builtin_powi): Likewise.
27803         (fold_builtin_exponent): Likewise.
27804         (fold_builtin_memset): Likewise.
27805         (fold_builtin_bzero): Likewise.
27806         (fold_builtin_memory_op): Likewise.
27807         (fold_builtin_bcopy): Deleted; call site changed to invoke
27808         fold_builtin_memory_op directly.
27809         (fold_builtin_strcpy): Similarly as for fold_builtin_memory_op.
27810         (fold_builtin_strncpy): Likewise.
27811         (fold_builtin_memcmp): Likewise.
27812         (fold_builtin_strcmp): Likewise.
27813         (fold_builtin_strncmp): Likewise.
27814         (fold_builtin_signbit): Likewise.
27815         (fold_builtin_copysign): Likewise.
27816         (fold_builtin_isascii): Likewise.
27817         (fold_builtin_toascii): Likewise.
27818         (fold_builtin_isdigit): Likewise.
27819         (fold_builtin_fabs): Likewise.
27820         (fold_builtin_abs): Likewise.
27821         (fold_builtin_fmin_fmax): Likewise.
27822         (fold_builtin_carg): Likewise.
27823         (fold_builtin_classify): Likewise.
27824         (fold_builtin_unordered_cmp): Likewise.
27825
27826         (fold_builtin_0, fold_builtin_2, fold_builtin_3, fold_builtin_4):
27827         New functions split out from fold_builtin_1.
27828         (fold_builtin_n): New.
27829         (fold_builtin_varargs): New.
27830         (fold_builtin): Deleted.  Most callers changed to use fold_call_expr
27831         instead.
27832         (fold_call_expr): New.
27833         (build_function_call_expr): Rewrite to use new helper function.
27834         (fold_builtin_call_list): New.
27835         (build_call_expr): New.
27836         (fold_builtin_call_valist): New.
27837         (rewrite_call_expr): New.
27838         (validate_arg): New.
27839         (validate_arglist): Change parameter to be entire CALL_EXPR instead
27840         of an arglist.  Change return type to bool.  Use new CALL_EXPR
27841         accessors.
27842
27843         (fold_builtin_strstr): Pass call arguments individually instead
27844         of as an arglist, fixing callers appropriately.  Use new CALL_EXPR
27845         accessors and constructors.  Return NULL_TREE instead of 0.
27846         (fold_builtin_strchr): Likewise.
27847         (fold_builtin_strrchr): Likewise.
27848         (fold_builtin_strpbrk): Likewise.
27849         (fold_builtin_strcat): Likewise.
27850         (fold_builtin_strncat): Likewise.
27851         (fold_builtin_strspn): Likewise.
27852         (fold_builtin_strcspn): Likewise.
27853         (fold_builtin_fputs): Likewise.
27854         (fold_builtin_next_arg): Likewise.
27855         (fold_builtin_sprintf): Likewise.
27856
27857         (expand_builtin_object_size): Use new CALL_EXPR accessors.  Use
27858         NULL_RTX instead of 0.
27859         (expand_builtin_memory_chk): Likewise.
27860         (maybe_emit_chk_warning): Likewise.
27861         (maybe_emit_sprintf_chk_warning): Likewise.
27862
27863         (fold_builtin_object_size): Pass call arguments individually instead
27864         of as an arglist, fixing callers appropriately.  Use new CALL_EXPR
27865         accessors and constructors.  Return NULL_TREE instead of 0.
27866         (fold_builtin_memory_chk): Likewise.
27867         (fold_builtin_stxcpy_chk): Likewise.
27868         (fold_builtin_strncpy_chk): Likewise.
27869         (fold_builtin_strcat_chk): Likewise.
27870         (fold_builtin_strcat_chk): Likewise.
27871         (fold_builtin_strncat_chk): Likewise.
27872         (fold_builtin_sprintf_chk): Likewise.
27873         (fold_builtin_snprintf_chk): Likewise.
27874         (fold_builtin_printf): Likewise.
27875         (fold_builtin_vprintf): Likewise.
27876
27877         * fold-const.c (negate_expr_p): Use new CALL_EXPR accessors and
27878         constructors.
27879         (operand_equal_p): Add separate tcc_vl_exp/CALL_EXPR case.
27880         (make_range): Use TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
27881         (extract_muldiv_1): Add VL_EXP_CLASS_P case.
27882         (fold_mathfn_compare): Use new CALL_EXPR accessors and constructors.
27883         (fold_unary): Likewise.
27884         (fold_binary): Likewise.
27885         (fold_ternary): Remove CALL_EXPR case, since they are no longer
27886         ternary expressions.
27887         (fold): Add logic for tcc_vl_exp.
27888         (fold_checksum_tree): Make it know about tcc_vl_exp.  Use
27889         TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
27890         (fold_build3_stat): Add assertion to flag broken interface for
27891         constructing CALL_EXPRs.
27892         (fold_build_call_list): New.
27893         (fold_build_call_list_initializer): New.
27894         (tree_expr_nonnegative_p): Use new CALL_EXPR accessors and
27895         constructors.
27896         (fold_strip_sign_ops): Likewise.
27897
27898 2007-02-15  Sandra Loosemore  <sandra@codesourcery.com>
27899             Brooks Moses  <brooks.moses@codesourcery.com>
27900             Lee Millward  <lee.millward@codesourcery.com>
27901
27902         * tree-dump.c (dequeue_and_dump) <CALL_EXPR>: Use new CALL_EXPR
27903         accessors and dump arguments explicitly.
27904
27905         * tree-pretty-print.c (do_niy): Use TREE_OPERAND_LENGTH instead of
27906         TREE_CODE_LENGTH.
27907         (dump_generic_node): Use new CALL_EXPR accessors and walk arguments
27908         explicitly.
27909         (print_call_name): Use new CALL_EXPR accessors.
27910
27911         * print-tree.c (print_node): Add case tcc_vl_exp.  Print
27912         CALL_EXPR arguments explicitly instead of as a list.  Use
27913         TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
27914
27915         * tree-vrp.c (stmt_interesting_for_vrp): Use new CALL_EXPR accessors.
27916         (vrp_visit_stmt): Likewise.
27917
27918         * tree-ssa-loop-im.c (outermost_invariant_loop_expr): Make it
27919         know about tcc_vl_exp.  Use TREE_OPERAND_LENGTH instead of
27920         TREE_CODE_LENGTH.
27921         (force_move_till_expr): Likewise.
27922
27923         * targhooks.c (default_external_stack_protect_fail): Use
27924         build_call_expr instead of build_function_call_expr.
27925         (default_hidden_stack_protect_fail): Likewise.
27926
27927         * tree-complex.c (expand_complex_libcall): Use build_call_expr to
27928         build the call.
27929
27930         * cgraphbuild.c (build_cgraph_edges): Use new CALL_EXPR accessors
27931         and walk arguments explicitly.
27932
27933         * tree-ssa-loop-niter.c (simplify_replace_tree): Use
27934         TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
27935         (expand_simple_operations): Likewise.
27936         (infer_loop_bounds_from_array): Use new CALL_EXPR accessors.
27937
27938         * gengtype.c (adjust_field_tree_exp): Use TREE_OPERAND_LENGTH instead
27939         of TREE_CODE_LENGTH.
27940         (walk_type): Tweak walking of arrays not to blow up on CALL_EXPRs.
27941
27942         * optabs.c (expand_widen_pattern-expr): Use TREE_OPERAND_LENGTH
27943         instead of TREE_CODE_LENGTH.
27944
27945         * value_prof.c (tree_ic): Use new CALL_EXPR accessors.
27946         (tree_ic_transform): Likewise.
27947         (interesting_stringop_to_profile_p): Pass entire CALL_EXPR as
27948         parameter instead of arglist.  Fix callers.
27949         (tree_stringop_fixed_value): Use new CALL_EXPR accessors.
27950         (tree_stringops_transform): Likewise.
27951         (tree_indirect_call_to_profile): Likewise.
27952         (tree_stringops_values_to_profile): Likewise.
27953
27954         * tree-tailcall.c (find_tail_calls): Use new CALL_EXPR iterator.
27955         (eliminate_tail_call): Likewise.
27956
27957         * ipa-cp.c (ipcp_update_callgraph): Use new CALL_EXPR accessors.
27958
27959         * tree-scalar-evolution.c (chrec_contains_symbols_defined_in_loop):
27960         Use TREE_OPERAND_LENGTH and generalize to handle any number of
27961         operands.
27962         (instantiate_parameters_1): Can't handle tcc_vl_exp here.
27963
27964         * omp-low.c (build_omp_barrier): Use build_call_expr.
27965         (lower_rec_input_clauses): Likewise.
27966         (lower_reduction_clauses): Likewise.
27967         (expand_parallel_call): Likewise.
27968         (maybe_catch_exception): Likewise.
27969         (expand_omp_for_generic): Likewise.
27970         (expand_omp_for_static_nochunk): Likewise.
27971         (expand_omp_sections): Likewise.
27972         (lower_omp_single_simple): Likewise.
27973         (lower_omp_single_copy): Likewise.
27974         (lower_omp_master): Likewise.
27975         (lower_omp_ordered): Likewise.
27976         (lower_omp_critical): Likewise.
27977
27978         * ipa-reference.c (check-call): Use new CALL_EXPR iterator.
27979         (scan_for_static_refs): Create tcc_vl_exp case for CALL_EXPR.
27980
27981         * tree-gimple.c (is_gimple_call_addr): Fix doc.
27982         (recalculate_side_effects): Use TREE_OPERAND_LENGTH instead of
27983         TREE_CODE_LENGTH.  Add tcc_vl_exp case.
27984
27985         * tree-chrec.c (chrec_contains_symbols): Use TREE_OPERAND_LENGTH
27986         and generalize to handle any number of operands.
27987         (chrec_contains_undetermined): Likewise.
27988         (tree_contains_chrecs): Likewise.
27989         (evolution_function_is_invariant_rec_p): Use TREE_OPERAND_LENGTH.
27990
27991         * cgraphunit.c (update_call_expr): Use new CALL_EXPR accessors.
27992
27993         * tree-ssa-ccp.c (ccp_fold): Use new CALL_EXPR accessors.  Use
27994         fold_call_expr instead of fold_builtin.
27995         (ccp_fold_builtin): Likewise.  Update calls into builtins.c to
27996         match declarations there.
27997         (fold_stmt): Use new CALL_EXPR constructor and accessors.  Doc
27998         updates.
27999
28000         * tree-ssa-loop-ivopts.c (expr_invariant_in_loop_p): Use
28001         TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
28002
28003         * ipa-pure-const.c (check_call): Use new CALL_EXPR accessors.
28004         (scan_function): Add case tcc_vl_exp for CALL_EXPR.
28005
28006         * tree-stdarg.c (execute_optimize_stdarg): Use new CALL_EXPR
28007         accessors.
28008
28009         * tree-ssa-math-opts.c (execute_cse_sincos_1): Use build_call_expr.
28010         (execute_cse_sincos): Use new CALL_EXPR accessors.
28011
28012         * tree-ssa-alias.c (find_used_portions): Use new CALL_EXPR iterator.
28013
28014         * gimple-low.c (lower_function_body): Use build_call_expr.
28015         (lower_builtin_setjmp): Likewise.
28016
28017         * expr.c (emit_block_move_via_libcall): Use build_call_expr.
28018         (set_storage_via_libcall): Likewise.
28019         (safe_from_p): Add tcc_vl_exp case.  Use TREE_OPERAND_LENGTH
28020         instead of TREE_CODE_LENGTH.
28021         (expand_expr_real_1): Use new CALL_EXPR accessors.
28022
28023         * tree-browser.c (store_child_info): Use TREE_OPERAND_LENGTH and
28024         generalize to handle any number of operands.
28025         (TB_parent_eq): Likewise.
28026
28027         * predict.c (expr_expected_value): Use new CALL_EXPR accessors.
28028         (strip_builtin_expect): Likewise.
28029
28030         * function.c (gimplify_parameters): Use build_call_expr.
28031
28032         * tree-vectorizer.c (vect_is_simple_reduction): Use
28033         TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
28034
28035         * ipa-type-escape.c (check_call): Use new CALL_EXPR iterators.
28036         (scan_for_refs): Add case tcc_vl_exp for CALL_EXPR.
28037
28038         * tree-data-ref.c (get_references_in_stmt): Use new CALL_EXPR
28039         iterators.
28040
28041         * gimplify.c (build_stack_save_restore): Use build_call_expr.
28042         (gimplify_decl_expr): Likewise.
28043         (gimplify_call_expr): Use fold_call_expr instead of fold_builtin.
28044         Use new CALL_EXPR iterators.
28045         (gimplify_modify_expr_to_memcpy): Use build_call_expr.
28046         (gimplify_modify_expr_to_memset): Likewise.
28047         (gimplify_variable_sized_compare): Likewise.
28048         (gimplify_omp_atomic_fetch_op): Likewise.
28049         (gimplify_omp_atomic_pipeline): Likewise.
28050         (gimplify_omp_atomic_mutex): Likewise.
28051         (gimplify_function_tree): Likewise.
28052
28053         * calls.c (alloca_call_p): Use new CALL_EXPR accessors.
28054         (call_expr_flags): Likewise.
28055         (expand_call): Likewise.
28056
28057         * except.c (expand_builtin_eh_return_data_regno): Pass entire
28058         CALL_EXPR as parameter instead of arglist.  Use new CALL_EXPR
28059         accessors.
28060
28061         * coverage.c (create_coverage): Use build_call_expr.
28062
28063         * tree-ssa-pre.c (expression_node_pool, list_node_pool): Delete.
28064         (temp_call_expr_obstack): New.
28065         (pool_copy_list): Delete.
28066         (temp_copy_call_expr): New.
28067         (phi_translate): Add case tcc_vl_exp for CALL_EXPR.  Use new
28068         CALL_EXPR accessors.  Get rid of special goo for copying argument
28069         lists and use temp_copy_call_expr instead.
28070         (valid_in_sets): Add case tcc_vl_exp for CALL_EXPR.  Use new
28071         CALL_EXPR accessors.
28072         (create_expression_by_pieces): Likewise.  Use build_call_array
28073         to construct the result instead of fold_build3.
28074         (create_value_expr_from): Add tcc_vl_exp.  Delete special goo for
28075         dealing with argument lists.
28076         (init_pre): Remove references to expression_node_pool and
28077         list_node_pool.  Init temp_call_expr_obstack instead.
28078         (fini_pre): Remove references to expression_node_pool and
28079         list_node_pool.
28080
28081         * tree-sra.c (sra_walk_call_expr): Use new CALL_EXPR accessors
28082         and walk arguments explicitly instead of as a list.
28083
28084         * tree-mudflap.c (mf_build_check_statement_for): Use build_call_expr.
28085         (mx_register_decls): Likewise.
28086         (mudflap_register_call): Likewise.
28087         (mudflap_finish_file): Likewise.
28088
28089         * ipa-prop.c (ipa_callsite_compute_count): Use new CALL_EXPR accessors.
28090         (ipa_callsite_compute_param): Likewise.
28091
28092         * tree-vect-patterns.c (vect_recog_pow_pattern): Use new CALL_EXPR
28093         accessors and constructor.
28094
28095         * tree-nested.c (convert_nl_goto_reference): Use new CALL_EXPR
28096         accessors and constructor.
28097         (convert_tramp_reference): Likewise.
28098         (convert_call_expr): Likewise.
28099         (finalize_nesting_tree_1): Likewise.
28100
28101         * tree-ssa.c (tree_ssa_useless_type_conversion): Use new CALL_EXPR
28102         accessors.
28103
28104         * tree-ssa-loop-prefetch.c (issue_prefetch_ref): Use build_call_expr.
28105
28106         * tree-inline.c (initialize_inlined_parameters): Pass entire
28107         CALL_EXPR as parameter instead of arglist.  Use new CALL_EXPR
28108         accessors.
28109         (estimate_num_insns_1): Use new CALL_EXPR accessors.
28110         (expand_call_inline): Tidy up call to initialize_inlined_parameters.
28111
28112         * tree-vect-transform.c (vect_create_epilog_for_reduction): Use
28113         TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
28114         (vectorizable_reduction): Likewise.
28115         (vectorizable_call): Use new CALL_EXPR iterators.
28116         (vectorizable_conversion): Use build_call_expr.
28117         (vectorizable_operation): Use TREE_OPERAND_LENGTH.
28118         (vect_gen_widened_results_half): Use build_call_expr.
28119         (vect_setup_realignment): Likewise.
28120         (vectorizable_live_operation): Use TREE_OPERAND_LENGTH.
28121
28122         * tree-object-size.c (alloc_object_size): Use new CALL_EXPR accessors.
28123         (pass_through_call): Likewise.
28124         (compute_object_sizes): Likewise.  Use fold_call_expr instead of
28125         fold_builtin.
28126
28127         * tree-profile.c (tree_gen_interval_profiler): Use build_call_expr.
28128         (tree_gen_pow2_profiler): Likewise.
28129         (tree_gen_one_value_profiler): Likewise.
28130         (tree_gen_ic_func_profiler): Likewise.
28131         (tree_gen_average_profiler): Likewise.
28132         (tree_gen_ior_profiler): Likewise.
28133
28134         * tree-ssa-structalias.c (get_constraint_for): Add case tcc_vl_exp.
28135         (find_func_aliases): Use new CALL_EXPR accessors.  Add case
28136         tcc_vl_exp.  Use TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
28137
28138         * tree-ssa-reassoc.c (get_rank): Use TREE_OPERAND_LENGTH instead
28139         of TREE_CODE_LENGTH.
28140
28141         * stmt.c (warn_if_unused_value): Use TREE_OPERAND_LENGTH instead
28142         of TREE_CODE_LENGTH.
28143
28144         * convert.c (convert_to_real): Use new CALL_EXPR accessors and
28145         constructor.
28146         (convert_to_integer): Likewise.
28147
28148         * tree-ssa-operands.c (get_call_expr_operands): Use new CALL_EXPR
28149         accessors.
28150
28151 2007-02-15  Sandra Loosemore  <sandra@codesourcery.com>
28152             Brooks Moses  <brooks.moses@codesourcery.com>
28153             Lee Millward  <lee.millward@codesourcery.com>
28154
28155         * config/alpha/alpha.c (alpha_expand_builtin): Use new CALL_EXPR
28156         accessors.
28157         * config/frv/frv.c (frv_expand_builtin): Likewise.
28158         * config/s390/s390.c (s390_expand_builtin): Likewise.
28159
28160         * config/sparc/sparc.c (sparc_gimplify_va_arg): Use build_call_expr.
28161         (sparc_expand_builtin): Use new CALL_EXPR accessors.
28162
28163         * config/i386/i386.c (ix86_function_ok_for_sibcall): Likewise.
28164         (ix86_expand_binop_builtin): Pass entire CALL_EXPR as parameter
28165         instead of arglist.  Use new CALL_EXPR accessors on it.  Fix callers.
28166         (ix86_expand_store_builtin): Likewise.
28167         (ix86_expand_unop_builtin): Likewise.
28168         (ix86_expand_unop1_builtin): Likewise.
28169         (ix86_expand_sse_compare): Likewise.
28170         (ix86_expand_sse_comi): Likewise.
28171         (ix86_expand_vec_init_builtin): Likewise.
28172         (ix86_expand_vec_ext_builtin): Likewise.
28173         (ix86_expand_vec_set_builtin): Likewise.
28174         (ix86_expand_builtin): Use new CALL_EXPR accessors.
28175
28176         * config/sh/sh.c (sh_expand_builtin): Use new CALL_EXPR accessors.
28177         * config/c4x/c4x.c (c4x_expand_builtin): Likewise.
28178
28179         * config/iq2000/iq2000.c (expand_one_builtin): Pass entire CALL_EXPR
28180         instead of arglist.  Use new CALL_EXPR accessors.  Fix callers.
28181         (iq2000_expand_builtin): Use new CALL_EXPR accessors.
28182
28183         * config/rs6000/rs6000-c.c (altivec_build_resolved_builtin): Use
28184         build_call_expr.
28185         * config/rs6000/rs6000.c (rs6000_gimplify_va_arg): Likewise.
28186         (rs6000_expand_unop_builtin): Pass entire CALL_EXPR instead of
28187         arglist.  Use new CALL_EXPR accessors.  Fix callers.
28188         (altivec_expand_abs_builtin): Likewise.
28189         (rs6000_expand_binop_builtin): Likewise.
28190         (altivec_expand_predicate_builtin): Likewise.
28191         (altivec_expand_lv_builtin): Likewise.
28192         (spe_expand_stv_builtin): Likewise.
28193         (altivec_expand_stv_builtin): Likewise.
28194         (rs6000_expand_ternop_builtin): Likewise.
28195         (altivec_expand_ld_builtin): Use new CALL_EXPR accessors.
28196         (altivec_expand_st_builtin): Likewise.
28197         (altivec_expand_dst_builtin): Likewise.
28198         (altivec_expand_vec_init_builtin): Pass entire CALL_EXPR instead of
28199         arglist.  Use new CALL_EXPR accessors.  Fix callers.
28200         (altivec_expand_vec_set_builtin): Likewise.
28201         (altivec_expand_vec_ext_builtin): Likewise.
28202         (altivec_expand_builtin): Use new CALL_EXPR accessors.
28203         (spe_expand_builtin): Likewise.
28204         (spe_expand_predicate_builtin): Pass entire CALL_EXPR instead of
28205         arglist.  Use new CALL_EXPR accessors.  Fix callers.
28206         (spe_expand_evsel_builtin): Likewise.
28207         (rs6000_expand_builtin): Use new CALL_EXPR accessors.  VCFUX and
28208         FCFSX cases must construct whole new CALL_EXPR, not just arglist.
28209
28210         * config/arm/arm.c (arm_expand_binop_builtin): Pass entire CALL_EXPR
28211         instead of arglist.  Use new CALL_EXPR accessors.  Fix callers.
28212         (arm_expand_unop_builtin): Likewise.
28213         (arm_expand_builtin): Use new CALL_EXPR accessors.
28214
28215         * config/mips/mips.c (mips_expand_builtin): Use new CALL_EXPR
28216         accessors.
28217
28218         * config/bfin/bfin.c (bfin_expand_binop_builtin): Pass entire
28219         CALL_EXPR instead of arglist.  Use new CALL_EXPR accessors.
28220         Fix callers.
28221         (bfin_expand_unop_builtin): Likewise.
28222         (bfin_expand_builtin): Use new CALL_EXPR accessors.
28223
28224 2007-02-15  Sandra Loosemore  <sandra@codesourcery.com>
28225             Brooks Moses  <brooks.moses@codesourcery.com>
28226             Lee Millward  <lee.millward@codesourcery.com>
28227
28228         * c-semantics.c (build_stmt): Add internal diagnostic check.
28229
28230         * c-pretty-print.c (pp_c_postfix_expression): Use new CALL_EXPR
28231         accessors.  Print arguments explicitly instead of as a list.
28232
28233         * c-typeck.c (build_function_call): Use new CALL_EXPR constructors.
28234
28235         * c-omp.c (c_finish_omp_barrier): Use build_call_expr.
28236         (c_finish_omp_flish): Likewise.
28237
28238         * c-common.c (verify_tree): Use new CALL_EXPR accessors.  Traverse
28239         arguments explicitly instead of as a list.  Use TREE_OPERAND_LENGTH
28240         instead of TREE_CODE_LENGTH.
28241         (check_function_arguments_recurse): Use new CALL_EXPR accessors.
28242         (c_warn_unused_result): Likewise.
28243
28244 2007-02-15  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
28245
28246         PR c/26494
28247         * doc/invoke.texi (Warning Options): Remove
28248         -Werror-implicit-function-declaration.
28249         (Wimplicit-function-declaration): Update description.
28250         * opts.c (common_handle_option): Move handling of -Werror=* to...
28251         (enable_warning_as_error): ...here.
28252         * opts.h (enable_warning_as_error): Declare.
28253         * c-decl.c (implicit_decl_warning): Unless
28254         -Wno-implicit-function-declaration is given, emit a pedwarn if
28255         -std=c99 or emit a warning if -Wimplicit-function-declaration.
28256         * c.opt (Wimplicit-function-declaration): Replace
28257         mesg_implicit_function_declaration with
28258         warn_implicit_function_declaration.
28259         * c-opts.c (c_common_handle_option):
28260         -Werror-implicit-function-declaration is exactly equal as
28261         -Werror=implicit-function-declaration.
28262         (set_Wimplicit): Replace mesg_implicit_function_declaration with
28263         warn_implicit_function_declaration.
28264         (c_common_post_options): -Wimplict-function-declaration is enabled
28265         by default by -std=c99, otherwise is disabled by default.
28266         * c-objc-common.c (c_objc_common_init): Remove flawed logic.
28267
28268 2007-02-15  Eric Botcazou  <ebotcazou@adacore.com>
28269
28270         * gimplify.c (gimplify_modify_expr): During gimplification, attach a
28271         DECL on the rhs to a DECL on the lhs for debug info purposes if the
28272         former is ignored but not the latter.
28273
28274 2007-02-15  Eric Botcazou  <ebotcazou@adacore.com>
28275
28276         * expr.c (expand_expr_real_1) <normal_inner_ref>: If a temporary
28277         is made and the reference doesn't use the alias set of its type,
28278         do not create the temporary using that type.
28279
28280 2007-02-15  Aldy Hernandez  <aldyh@redhat.com>
28281
28282         * jump.c: Remove prototypes for delete_computation and
28283         delete_prior_computation.
28284
28285 2007-02-15  Paolo Bonzini  <bonzini@gnu.org>
28286
28287         * jump.c (get_label_after): Delete.
28288         (get_label_before, delete_computation, delete_jump,
28289         delete_prior_computation, follow_jumps): Move...
28290         * reorg.c (delete_computation, delete_prior_computation): ... here...
28291         (get_label_before, delete_jump): ... making these static ...
28292         (follow_jumps): ... and simplifying this since it only runs after
28293         reload.
28294         * rtl.h (get_label_after, get_label_before, delete_jump,
28295         follow_jumps): Delete prototypes.
28296
28297 2007-02-15  Paolo Bonzini  <bonzini@gnu.org>
28298
28299         * caller-save.c (save_call_clobbered_regs): Do not process sibcalls.
28300
28301 2007-02-15  Nick Clifton  <nickc@redhat.com>
28302
28303         * varasm.c (default_asm_output_anchor): Prepend * to . symbol in
28304         order to prevent it from being munged by the target.
28305
28306 2007-02-15  Uros Bizjak  <ubizjak@gmail.com>
28307
28308         * config/i386/i386.md: Remove misleading comment.
28309
28310 2007-02-15  Alexandre Oliva  <aoliva@redhat.com>
28311
28312         * config/frv/frv.md (reload_incc, reload_outcc, reload_incc_uns,
28313         reload_outcc_uns, reload_incc_nz, reload_outcc_nz): Remove
28314         invalid patterns.
28315
28316 2007-02-15  Alexandre Oliva  <aoliva@redhat.com>
28317
28318         * tree-sra.c (instantiate_missing_elements): Canonicalize
28319         bit-field types.
28320         (sra_build_assignment): New.
28321         (generate_copy_inout, generate_element_copy,
28322         generate_element_zero, generate_one_element_init): Use it.
28323
28324 2007-02-15  Alexandre Oliva  <aoliva@redhat.com>
28325
28326         * tree-sra.c (instantiate_missing_elements): Canonicalize
28327         bit-field types.
28328         (sra_build_assignment): New.
28329         (generate_copy_inout, generate_element_copy,
28330         generate_element_zero, generate_one_element_init): Use it.
28331
28332 2007-02-15  Alexandre Oliva  <aoliva@redhat.com>
28333
28334         * dwarf2out.c (dwarf2out_finish): Accept namespaces as context of
28335         limbo die nodes.
28336
28337 2007-02-14  Joseph Myers  <joseph@codesourcery.com>
28338
28339         * emit-rtl.c (set_mem_attributes_minus_bitpos): Treat complex
28340         types as aggregates not scalars.
28341         * function.c (assign_stack_temp_for_type): Likewise.
28342
28343 2007-02-14  Roger Sayle  <roger@eyesopen.com>
28344             Zdenek Dvorak  <dvorakz@suse.cz>
28345
28346         * tree-dump.c (dump_switch_p_1): Require exact match of the option
28347         name.
28348
28349 2007-02-14  Zdenek Dvorak  <dvorakz@suse.cz>
28350
28351         * passes.c (next_pass_1): Clear the next field of the copied
28352         pass structure.
28353
28354 2007-02-14  Richard Henderson  <rth@redhat.com>
28355
28356         * tree-sra.c (early_sra): New.
28357         (decl_can_be_decomposed_p): Deny va_list if early_sra.
28358         (tree_sra_early, pass_sra_early): New.
28359         * tree-pass.h (pass_sra_early): Declare.
28360         * passes.c (init_optimization_passes): Use it.
28361
28362 2007-02-14  Richard Guenther  <rguenther@suse.de>
28363
28364         * flags.h (issue_strict_overflow_warning): Convert to a macro.
28365
28366 2007-02-14  Dorit Nuzman  <dorit@il.ibm.com>
28367
28368          PR tree-optimization/30771
28369         * tree-vect-analyze.c (vect_determine_vectorization_factor): Traverse
28370         also phi nodes.
28371         (vect_analyze_operations): Induction phis can now be marked as
28372         used_in_loop.
28373         (vect_mark_stmts_to_be_vectorized): No special treatment for phis.
28374         Update documentation accordingly.
28375
28376 2007-02-14  Nick Clifton  <nickc@redhat.com>
28377
28378         * builtin-types.def (DEF_FUNCTION_TYPE_x): Do not imply that at
28379         most 3 arguments are supported.
28380         (DEF_FUNCTION_TYPE_VAR_5): Fix typo in its description.
28381
28382 2007-02-13  Seongbae Park <seongbae.park@gmail.com>
28383
28384         * bitmap.c (bitmap_and, bitmap_and_compl, bitmap_xor):
28385         Ensure dst->current is valid.
28386
28387 2007-02-13  Paul Brook  <paul@codesourcery.com>
28388
28389         * config.gcc: Add arm*-*-uclinux-*eabi.
28390         * config/arm/uclinux-elf.h (TARGET_OS_CPP_BUILTINS): Define.
28391         (SUBTARGET_EXTRA_LINK_SPEC): Define.
28392         (STARTFILE_SPEC, ENDFILE_SPEC): Remove broken -shared handling.
28393         (LINK_GCC_C_SEQUENCE_SPEC): Undef.
28394         (LINK_SPEC): Define.
28395         (LIB_SPEC): Define.
28396         * config/arm/arm.c (arm_override_options): Use r9 as EABI PIC
28397         register.
28398         * config/arm/uclinux-eabi.h: New file.
28399         * config/arm/linux-eabi.h (WCHAR_TYPE): Remove.
28400         * config/arm/linux-gas.h (WCHAR_TYPE): Use unsigned long on AAPCS
28401         based targets.
28402
28403 2007-02-13  Ian Lance Taylor  <iant@google.com>
28404
28405         * common.opt: Add Wstrict-overflow and Wstrict-overflow=.
28406         * flags.h (warn_strict_overflow): Declare.
28407         (enum warn_strict_overflow_code): Define.
28408         (issue_strict_overflow_warning): New static inline function.
28409         * opts.c (warn_strict_overflow): New variable.
28410         (common_handle_option): Handle OPT_Wstrict_overflow and
28411         OPT_Wstrict_overflow_.
28412         * c-opts.c (c_common_handle_option): Set warn_strict_overflow for
28413         OPT_Wall.
28414         * fold-const.c: Include intl.h.
28415         (fold_deferring_overflow_warnings): New static variable.
28416         (fold_deferred_overflow_warning): New static variable.
28417         (fold_deferred_overflow_code): New static variable.
28418         (fold_defer_overflow_warnings): New function.
28419         (fold_undefer_overflow_warnings): New function.
28420         (fold_undefer_and_ignore_overflow_warnings): New function.
28421         (fold_deferring_overflow_warnings_p): New function.
28422         (fold_overflow_warning): New static function.
28423         (make_range): Add strict_overflow_p parameter.  Change all
28424         callers.
28425         (extract_muldiv, extract_muldiv_1): Likewise.
28426         (fold_unary) [ABS_EXPR]: Check ABS_EXPR before calling
28427         tree_expr_nonnegative_p.
28428         (fold_negate_expr): Call fold_overflow_warning.
28429         (fold_range_test): Likewise.
28430         (fold_comparison): Likewise.
28431         (fold_binary): Likewise.  Call tree_expr_nonnegative_warnv_p
28432         instead of tree_expr_nonnegative_p.
28433         (tree_expr_nonnegative_warnv_p): Rename from
28434         tree_expr_nonnegative_p, add strict_overflow_p parameter.
28435         (tree_expr_nonnegative_p): New function.
28436         (tree_expr_nonzero_warnv_p): Rename from tree_expr_nonzero_p, add
28437         strict_overflow_p parameter.
28438         (tree_expr_nonzero_p): New function.
28439         * passes.c (verify_interpass_invariants): New static function.
28440         (execute_one_pass): Call it.
28441         * tree-ssa-loop-niter.c (expand_simple_operations): Ignore fold
28442         warnings.
28443         (number_of_iterations_exit, loop_niter_by_eval): Likewise.
28444         (estimate_numbers_of_iterations): Likewise.
28445         (scev_probably_wraps_p): Likewise.
28446         * tree-ssa-ccp.c: Include "toplev.h".
28447         (evaluate_stmt): Defer fold overflow warnings until we know we are
28448         going to optimize.
28449         (struct fold_stmt_r_data): Add stmt field.
28450         (fold_stmt_r): Defer fold overflow warnings until we know we
28451         optimized.
28452         (fold_stmt): Initialize stmt field of fold_stmt_r_data.
28453         (fold_stmt_inplace): Likewise.
28454         * tree-cfgcleanup.c: Include "toplev.h" rather than "errors.h".
28455         (cleanup_control_expr_graph): Defer fold overflow warnings until
28456         we know we are going to optimize.
28457         * tree-cfg.c (fold_cond_expr_cond): Likewise.
28458         * tree-ssa-threadedge.c (simplify_control_stmt_condition):
28459         Likewise.
28460         * tree-vrp.c (vrp_expr_computes_nonnegative): Call
28461         tree_expr_nonnegative_warnv_p instead of tree_expr_nonnegative_p.
28462         * tree-ssa-loop-manip.c (create_iv): Likewise.
28463         * c-typeck.c (build_conditional_expr): Likewise.
28464         (build_binary_op): Likewise.
28465         * tree-vrp.c (vrp_expr_computes_nonzero): Call
28466         tree_expr_nonzero_warnv_p instead of tree_expr_nonzero_p.
28467         (extract_range_from_unary_expr): Likewise.
28468         * simplify-rtx.c (simplify_const_relational_operation): Warn when
28469         assuming that signed overflow does not occur.
28470         * c-common.c (pointer_int_sum): Ignore fold overflow warnings.
28471         * tree.h (tree_expr_nonnegative_warnv_p): Declare.
28472         (fold_defer_overflow_warnings): Declare.
28473         (fold_undefer_overflow_warnings): Declare.
28474         (fold_undefer_and_ignore_overflow_warnings): Declare.
28475         (fold_deferring_overflow_warnings_p): Declare.
28476         (tree_expr_nonzero_warnv_p): Declare.
28477         * doc/invoke.texi (Option Summary): Add -Wstrict-overflow to list
28478         of warning options.
28479         (Warning Options): Document -Wstrict-overflow.
28480         * Makefile.in (tree-ssa-threadedge.o): Depend on toplev.h.
28481         (tree-ssa-ccp.o): Likewise.
28482         (tree-cfgcleanup.o): Change errors.h dependency to toplev.h.
28483         (fold-const.o): Depend on intl.h.
28484
28485 2007-02-13  Ian Lance Taylor  <iant@google.com>
28486
28487         PR middle-end/30751
28488         * lower-subreg.c (resolve_simple_move): Decompose subregs in
28489         addresses.
28490
28491 2007-02-13  Stuart Hastings  <stuart@apple.com>
28492
28493         * config/i386/i386.md (fixuns_truncdfhi2): Require SSE2.
28494
28495 2007-02-13  Richard Henderson  <rth@redhat.com>
28496
28497         * config/alpha/alpha.c (alpha_stdarg_optimize_hook): Strip
28498         handled_component_p before looking for the indirect_ref.
28499
28500 2007-02-13  Richard Henderson  <rth@redhat.com>
28501
28502         * config/i386/i386.md (bswapsi_1): Rename from bswapsi2,
28503         remove flags clobber.
28504         (bswapsi2): New expander, emit code for !TARGET_BSWAP.
28505         (bswaphi_lowpart): New.
28506         (bswapdi2): Rename from bswapdi2_rex, remove flags clobber,
28507         remove TARGET_BSWAP test.  Delete expander of the same name.
28508
28509         * optabs.c (widen_bswap, expand_doubleword_bswap): New.
28510         (expand_unop): Use them.
28511
28512 2007-02-13  Uros Bizjak  <ubizjak@gmail.com>
28513
28514         * config/i386/i386.md (cmpdi_ccno_1_rex64, *cmpsi_ccno_1,
28515         *cmphi_ccno_1, *cmpqi_ccno_1, *movsi_xor, *movstricthi_xor,
28516         *movstrictqi_xor, *movdi_xor_rex64, *ashldi3_1_rex64,
28517         *ashldi3_cmp_rex64, *ashldi3_cconly_rex64, ashlsi3, *ashlsi3_1_zext,
28518         *ashlsi3_cmp, *ashlsi3_cconly, *ashlsi3_cmp_zext, *ashlhi3_1_lea,
28519         *ashlhi3_1, *ashlhi3_cmp, *ashlhi3_cconly, *ashlqi3_1_lea,
28520         *ashlqi3_1, *ashlqi3_cmp, *ashlqi3_cconly): Remove equivalent
28521         assembler dialect choice from asm templates.
28522
28523 2007-02-12  Richard Henderson  <rth@redhat.com>
28524
28525         * config/i386/i386.md (fixuns_trunc<SSEMODEF>si_1): New insn.
28526         (fixuns_trunc<SSEMODEF>si2): Use it.
28527         * config/i386/sse.md (vec_setv4sf_0): Export.
28528         * config/i386/i386.c (ix86_build_const_vector): Export.
28529         (ix86_split_convert_uns_si_sse): Rename from
28530         ix86_expand_convert_uns_si_sse and rewrite as a splitter.
28531         * config/i386/i386-protos.h: Update.
28532
28533 2007-02-13  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
28534
28535         PR c/29521
28536         * c-typeck.c (c_finish_return): Improve warning message.
28537
28538 2007-02-12  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
28539
28540         * alias.c (find_symbolic_term): Delete unused function.
28541
28542 2007-02-12  Uros Bizjak  <ubizjak@gmail.com>
28543
28544         * config/i386/i386.md (paritydi2, paritysi2): New expanders.
28545         (paritydi2_cmp, paritydi2_cmp): New insn and split patterns.
28546         (*parityhi2_cmp, *parityqi2_cmp): New insn patterns.
28547
28548 2007-02-12  Eric Botcazou  <ebotcazou@adacore.com>
28549
28550         * tree.h (DECL_IGNORED_P): Document further effect for FUNCTION_DECL.
28551         * cgraphunit.c (cgraph_expand_function): If DECL_IGNORED_P is set on
28552         the function, temporarily point the debug interface to the null one.
28553
28554 2007-02-12  Eric Botcazou  <ebotcazou@adacore.com>
28555
28556         * dwarf2out.c (round_up_to_align): New static function.
28557         (field_byte_offset): Use it to round the offset.
28558
28559 2007-02-12  Richard Henderson  <rth@redhat.com>
28560
28561         * config/alpha/alpha.md (bswapsi2, bswapdi2): New.
28562         (inswl_const): Export.
28563
28564 2007-02-12  Richard Henderson  <rth@redhat.com>
28565
28566         * calls.c (emit_library_call_value_1): If PROMOTE_MODE modifed the
28567         result mode of the libcall, convert back to outmode.
28568
28569 2007-02-12  Roger Sayle  <roger@eyesopen.com>
28570
28571         * config/i386/i386.md (*bswapdi2_rex): Renamed from bswapdi2.
28572         (bswapdi2): New define_expand to implement 32-bit implementation.
28573
28574 2007-02-12  Nick Clifton  <nickc@redhat.com>
28575
28576         * doc/invoke.texi (Overall Options): Document --help=.
28577         * gcc.c (target_help_flag): Rename to print_subprocess_flag.
28578         (cc1_options): Pass --help= on to cc1.
28579         (display_help): Add description of --help=.
28580         (process_command): Add code to handle --help=.  Allow translated
28581         --help and --target-help switches to be passed on to compiler
28582         sub-process.
28583         (main): Remove unused if statement.
28584         * opts.c (columns): Remove.
28585         (LEFT_COLUMN): Define.
28586         (wrap_help): Add columns argument.
28587         (print_filtered_help): Change parameters to be an include bitmask,
28588         an exclude bitmask, an any bitmask and the column width.  Move the
28589         code to display the params list here.  Add code to display the
28590         status of options rather than their descriptions if the quiet flag
28591         is not active.
28592         (print_specific_help): Change parameters to be an include bitmask,
28593         an exclude bitmask and an any bitmask.  Move code to look up the
28594         column width here.  Decide upon the title for an options listing.
28595         (common_handle_options): Add code to handle --help=.  Adapt code
28596         for --help and --target-help to use the revised form of the
28597         print_specific_help function.
28598         (print_help): Delete.
28599         (print_param_help): Delete.
28600         (print_switch): Delete.
28601         * opts.h (cl_lang_count): Add prototype.
28602         (CL_PARAMS, CL_WARNING, CL_OPTIMIZATION, CL_MIN_OPTION_CLASS,
28603         CL_MAX_OPTION_CLASS): New defines.
28604         * optc-gen.awk: Add construction of cl_lang_count.
28605         * c.opt: Add Warning attribute to warning options and Optimization
28606         attribute to optimization options.
28607         * common.opt: Likewise.
28608         Add --help=.
28609         Add -fhelp and -ftarget-help as aliases for the transformed --help
28610         and --target-help options.
28611         * opt-functions.awk: Add code to handle Warning and Optimization
28612         attributes.
28613
28614 2007-02-12  Richard Henderson  <rth@redhat.com>
28615
28616         * config/alpha/constraints.md: New file.
28617         * config/alpha/alpha.c: Include tm-constrs.h.
28618         (alpha_const_ok_for_letter_p, alpha_const_double_ok_for_letter_p,
28619         alpha_extra_constraint): Remove.
28620         (alpha_emit_conditional_branch): Use satisfies_constraint_*.
28621         * config/alpha/alpha-protos.h: Update.
28622         * config/alpha/alpha.h (REG_CLASS_FROM_LETTER): Remove.
28623         (CONST_OK_FOR_LETTER_P, CONST_DOUBLE_OK_FOR_LETTER_P): Remove.
28624         (EXTRA_CONSTRAINT): Remove.
28625         * config/alpha/alpha.md: Include constraints.md.
28626         (adddi splitter): Use satisfies_constraint_*.
28627         * config/alpha/predicates.md (add_operand): Likewise.
28628         (sext_add_operand, addition_operation): Likewise.
28629
28630 2007-02-12  Dorit Nuzman  <dorit@il.ibm.com>
28631
28632         PR tree-optimization/29145
28633         * tree-data-ref.c (base_addr_differ_p): Make us more conservative
28634         in our handling of restrict qualified pointers.
28635
28636 2007-02-12  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
28637
28638         PR middle-end/7651
28639         * doc/invoke.texi (Wunused-value): Update description.
28640         (Wextra): Delete item.
28641         * opts.c (set_Wextra): Don't use the value of Wextra to set the
28642         value of Wunused-value.
28643         * c-typeck.c (c_process_expr_stmt): Don't check extra_warnings.
28644         (c_finish_stmt_expr): Don't check extra_warnings.
28645         (emit_side_effect_warnings): The caller is responsible to check
28646         warn_unused_value.
28647
28648 2007-02-11  Roger Sayle  <roger@eyesopen.com>
28649             Matt Thomas  <matt@3am-software.com>
28650
28651         * simplify-rtx.c (simplify_relational_operation_1): Correct typo.
28652
28653 2007-02-11  Roger Sayle  <roger@eyesopen.com>
28654
28655         * simplify-rtx.c (simplify_relational_operation_1): Optimize
28656         comparisons of POPCOUNT against zero.
28657         (simplify_const_relational_operation): Likewise.
28658
28659 2007-02-11  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
28660
28661         * doc/invoke.texi (Wextra): Delete outdated paragraph.
28662
28663 2007-02-11  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
28664
28665         * dwarf2out.c (root_type): Delete unused function.
28666
28667 2007-02-11  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
28668
28669         * genattrtab.c (contained_in_p): Delete unused function.
28670         (write_expr_attr_cache): Likewise.
28671
28672 2007-02-11  Jan Hubicka  <jh@suse.cz>
28673
28674         * ipa-inline.c (cgraph_edge_badness): Add "else" missing in the
28675         previous patch.
28676
28677 2007-02-11  Steven Bosscher  <steven@gcc.gnu.org>
28678
28679         * fwprop.c (try_fwprop_subst): Use set_unique_reg_note
28680         to add the REG_EQ* note.
28681         * see.c (see_merge_one_use_extension): Likewise.
28682         * local-alloc.c (update_equiv_regs): Likewise.  Also don't
28683         turn REG_EQUAL notes into REG_EQUIV notes if the target
28684         register may have more than one set.
28685         * function.c (assign_parm_setup_reg): Use set_unique_reg_note.
28686         * gcse.c (try_replace_reg): Likewise.
28687         * alias.c (init_alias_analysis): Use find_reg_equal_equiv_note.
28688         * calls.c (fixup_tail_calls): Likewise.  Abort if there is
28689         more than one REG_EQUIV note.
28690         * reload1.c (gen_reload): Use set_unique_reg_note.
28691
28692 2007-02-11  Uros Bizjak  <ubizjak@gmail.com>
28693
28694         * config/i386/i386.c (TARGET_VECTORIZE_BUILTIN_CONVERSION): Define.
28695         (ix86_builtin_conversion): New function.
28696
28697 2007-02-06  Mark Mitchell  <mark@codesourcery.com>
28698
28699         PR target/29487
28700         * tree.h (DECL_REPLACEABLE_P): New macro.
28701         * except.c (set_nothrow_function_flags): Likewise.
28702
28703 2007-02-11  Tehila Meyzels  <tehila@il.ibm.com>
28704             Ira Rosen  <irar@il.ibm.com>
28705             Dorit Nuzman  <dorit@il.ibm.com>
28706
28707         * doc/tm.texi (TARGET_VECTORIZE_BUILTIN_CONVERSION): New target hook.
28708         * targhooks.c (default_builtin_vectorized_conversion): New.
28709         * targhooks.h (default_builtin_vectorized_function): New declaration.
28710         * target.h (struct vectorize): Add builtin_conversion field.
28711         * tree-vectorizer.h (type_conversion_vec_info_type): New enum
28712         stmt_vec_info_type value.
28713         (vectorizable_conversion): New declaration.
28714         * tree-vect-analyze.c (vect_analyze_operations): Add
28715         vectorizable_conversion call.
28716         * target-def.h (TARGET_VECTORIZE_BUILTIN_CONVERSION): New.
28717         * tree-vect-transform.c (vectorizable_conversion): New function.
28718         (vect_transform_stmt): Add case for type_conversion_vec_info_type.
28719         * tree-vect-generic.c (expand_vector_operations_1): Consider correct
28720         mode.
28721         * config/rs6000/rs6000.c (rs6000_builtin_conversion): New.
28722         (TARGET_VECTORIZE_BUILTIN_CONVERSION): Defined.
28723         (rs6000_expand_builtin): Add handling a case of ALTIVEC_BUILTIN_VCFUX
28724         or ALTIVEC_BUILTIN_VCFSX.
28725
28726 2007-02-10  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
28727
28728         PR target/30634
28729         * pa.md (movdf): For 64-bit target, fail if operand 1 is a non-zero
28730         CONST_DOUBLE and operand 0 is a hard register.
28731         (movdi): For 64-bit target, remove code to force CONST_DOUBLE to
28732         memory.  Fail if operand 1 is a non-zero CONST_INT and operand 0
28733         is a hard floating-point register.
28734
28735 2007-02-10  Richard Henderson  <rth@redhat.com>
28736             Jakub Jelinek  <jakub@redhat.com>
28737             Alexandre Oliva  <aoliva@redhat.com>
28738
28739         * Makefile.in (libgcc-support, libgcc.mvars): Add emutls.c.
28740         * builtin-types.def (BT_WORD): Make unsigned.
28741         (BT_FN_VOID_PTR_WORD_WORD_PTR): New.
28742         * builtins.def (BUILT_IN_EMUTLS_GET_ADDRESS): New.
28743         (BUILT_IN_EMUTLS_REGISTER_COMMON): New.
28744         * c-decl.c (grokdeclarator): Don't error if !have_tls.
28745         * c-parser.c (c_parser_omp_threadprivate): Likewise.
28746         * dwarf2out.c (loc_descriptor_from_tree_1): Don't do anything for
28747         emulated tls.
28748         * expr.c (emutls_var_address): New.
28749         (expand_expr_real_1): Expand emulated tls.
28750         (expand_expr_addr_expr_1): Likewise.
28751         * libgcc-std.ver: Add __emutls_get_address, __emutls_register_common.
28752         * output.h (emutls_finish): Declare.
28753         * toplev.c (compile_file): Call it.
28754         * tree-ssa-address.c (gen_addr_rtx): Check for const-ness of the
28755         address before wrapping in CONST.
28756         * varasm.c (emutls_htab, emutls_object_type): New.
28757         (EMUTLS_VAR_PREFIX, EMUTLS_TMPL_PREFIX): New.
28758         (get_emutls_object_name, get_emutls_object_type): New.
28759         (get_emutls_init_templ_addr, emutls_decl): New.
28760         (emutls_common_1, emutls_finish): New.
28761         (assemble_variable): When emulating tls, swap decls; generate
28762         constructor for the emutls objects.
28763         (do_assemble_alias): When emulating tls, swap decl and target name.
28764         (default_encode_section_info): Don't add SYMBOL_FLAG_TLS_SHIFT
28765         for emulated tls.
28766         * varpool.c (decide_is_variable_needed): Look at force_output.
28767         Recurse for emulated tls.
28768         (cgraph_varpool_remove_unreferenced_decls): Remove checks redundant
28769         with decide_is_variable_needed.
28770         * emutls.c: New file.
28771         * config/sparc/sol2.h (ASM_DECLARE_OBJECT_NAME): Only emit
28772         tls_object for real tls.
28773
28774 2007-02-10  Kaz Kojima  <kkojima@gcc.gnu.org>
28775
28776         PR rtl-optimization/29599
28777         * reload1.c (eliminate_regs_in_insn): Take the destination
28778         mode into account when computing the offset.
28779
28780 2007-02-09  Stuart Hastings  <stuart@apple.com>
28781             Richard Henderson  <rth@redhat.com>
28782
28783         * config/i386/i386.h (TARGET_KEEPS_VECTOR_ALIGNED_STACK): New.
28784         * config/i386/darwin.h: (TARGET_KEEPS_VECTOR_ALIGNED_STACK): New.
28785         * config/i386/i386.md (fixuns_trunc<mode>si2, fixuns_truncsfhi2,
28786         fixuns_truncdfhi2): New.
28787         (fix_truncsfdi_sse): Call ix86_expand_convert_sign_didf_sse.
28788         (floatunsdidf2): Call ix86_expand_convert_uns_didf_sse.
28789         (floatunssisf2): Add call to ix86_expand_convert_uns_sisf_sse.
28790         (floatunssidf2): Allow nonimmediate source.
28791         * config/i386/sse.md (movdi_to_sse): New.
28792         (vec_concatv2di): Drop '*'.
28793         * config/i386/i386-protos.h (ix86_expand_convert_uns_si_sse,
28794         ix86_expand_convert_uns_didf_sse, ix86_expand_convert_uns_sidf_sse,
28795         ix86_expand_convert_uns_sisf_sse, ix86_expand_convert_sign_didf_sse):
28796         New.
28797         * config/i386/i386.c (ix86_expand_convert_uns_si_sse,
28798         ix86_expand_convert_uns_didf_sse, ix86_expand_convert_uns_sidf_sse,
28799         ix86_expand_convert_uns_sisf_sse, ix86_expand_convert_sign_didf_sse,
28800         ix86_build_const_vector, ix86_expand_vector_init_one_nonzero): New.
28801         (ix86_build_signbit_mask): Fix decl of v, refactor to call
28802         ix86_build_const_vector.
28803         (x86_emit_floatuns): Rewrite.
28804
28805 2007-02-10  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
28806
28807         * genautomata.c (longest_path_length): Delete unused function.
28808         (struct state): Delete unused longest_path_length.
28809         (UNDEFINED_LONGEST_PATH_LENGTH): Delete unused macro.
28810         (get_free_state): Delete unused.
28811
28812 2007-02-09  Jan Hubicka  <jh@suse.cz>
28813
28814         * params.def (PARAM_INLINE_UNIT_GROWTH): Set to 30.
28815         * doc/invoke.texi (inline-unit-growth): Update default value.
28816
28817         * Makefile.in (passes.o, ipa-inline.o): Add dependencies.
28818         * cgraphbuild.c (build_cgraph_edges): Compute frequencies.
28819         (rebuild_cgraph_edges): Likewise.
28820         * cgraph.c (cgraph_set_call_stmt): Add new argument frequency.
28821         (dump_cgraph_node): Dump frequencies.
28822         (cgraph_clone_edge): Add frequency scales.
28823         (cgraph_clone_node): Add freuqnecy.
28824         * cgraph.h (cgraph_edge): Add freuqnecy argument.
28825         (CGRAPH_FREQ_BASE, CGRAPH_FREQ_MAX): New constants.
28826         (cgraph_create_edge, cgraph_clone_edge, cgraph_clone_node): Update.
28827         * tree-pass.h (TODO_rebuild_frequencies): New constant.
28828         * cgraphunit.c (verify_cgraph_node): Verify frequencies.
28829         (cgraph_copy_node_for_versioning): Update call of cgraph_clone_edge.
28830         (save_inline_function_body): Likewise.
28831         * ipa-inline.c: inluce rtl.h
28832         (cgraph_clone_inlined_nods): Update call of cgraph_clone_node.
28833         (cgraph_edge_badness): Use frequencies.
28834         (cgraph_decide_recursive_inlining): Update clonning.
28835         (cgraph_decide_inlining_of_small_function): Dump frequency.
28836         * predict.c (estimate_bb_frequencies): Export.
28837         * predict.h (estimate_bb_frequencies): Declare.
28838         * tree-inline.c (copy_bb): Watch overflows.
28839         (expand_call_inline): Update call of cgraph_create_edge.
28840         (optimize_inline_calls): Use TODO flags to update frequnecies.
28841         * passes.h: Include predict.h
28842         (init_optimization_passes): Move profile ahead.
28843         (execute_function_todo): Handle TODO_rebuild_frequencies.
28844
28845 2007-02-09  Roger Sayle  <roger@eyesopen.com>
28846
28847         * config/alpha/alpha.c (emit_insxl): Force the first operand of
28848         the insbl or inswl pattern into a register.
28849
28850 2007-02-09  Roger Sayle  <roger@eyesopen.com>
28851
28852         * config/ia64/ia64.md (bswapdi2): New define_insn.
28853
28854 2007-02-09  Richard Henderson  <rth@redhat.com>
28855
28856         * config/i386/constraints.md (Ym): New constraint.
28857         * config/i386/i386.md (movsi_1): Change Y2 to Yi constraints.
28858         (movdi_1_rex64): Split sse and xmm general register moves from
28859         memory move alternatives.  Use conditional register constraints.
28860         (movsf_1, movdf_integer): Likewise.
28861         (zero_extendsidi2_32, zero_extendsidi2_rex64): Likewise.
28862         (movdf_integer_rex64): New.
28863         (pushsf_rex64): Fix output constraints.
28864         * config/i386/sse.md (sse2_loadld): Split rm alternative, use Yi.
28865         (sse2_stored): Likewise.
28866         (sse2_storeq_rex64): New.
28867         * config/i386/i386.c (x86_inter_unit_moves): Enable for not
28868         amd and not generic.
28869         (ix86_secondary_memory_needed): Don't bypass TARGET_INTER_UNIT_MOVES
28870         for optimize_size.  Remove SF/DFmode hack.
28871
28872 2007-02-09  Dwarakanath Rajagopal  <dwarak.rajagopal@amd.com>
28873
28874         * config/i386/driver-i386.c: Turn on -mtune=native for AMDFAM10.
28875         (bit_SSE4a): New.
28876
28877 2007-02-09  Nathan Sidwell  <nathan@codesourcery.com>
28878             Richard Sandiford  <richard@codesourcery.com>
28879
28880         * config.gcc (m68010-*-netbsdelf*, m68k*-*-netbsdelf*)
28881         (m68k*-*-openbsd*, m68k-*-linux*): Set default_cf_cpu.
28882         (m68k-*-aout*, m68k-*-coff*, m68k-*-uclinux*, m68k-*-rtems*): Add
28883         m68k/t-mlib to tmake_file.
28884         (m68020-*-elf*, m68k-*-elf*): Likewise.  Add t-m68kbare as well.
28885         (m68k*-*-*): Use --with-arch to pick a default for --with-cpu.
28886         (m680[012]0-*-*, m68k*-*-*): Add support for --with-arch.
28887         Allow it to be cf or m68k.  Set m68k_arch_family.  If that
28888         variable is not empty, add t-$m68k_arch_family to tmake_file.
28889         Add t-mlibs to tmake_file.
28890         * doc/install.texi: Document --with-arch=m68k and --with-arch=cf.
28891         * config/m68k/t-cf: New file.
28892         * config/m68k/t-m68k: Likewise.
28893         * config/m68k/t-mlibs: Likewise.
28894         * config/m68k/t-m68kbare (MULTILIB_OPTIONS, MULTILIB_DIRNAMES)
28895         (MULTILIB_MATCHES, MULTILIB_EXCEPTIONS): Delete.
28896         (M68K_MLIB_DIRNAMES, M68K_MLIB_OPTIONS): Define.
28897         * config/m68k/t-m68kelf (MULTILIB_OPTIONS, MULTILIB_DIRNAMES)
28898         (MULTILIB_MATCHES, MULTILIB_EXCEPTIONS, LIBGCC, INSTALL_LIBGCC):
28899         Delete.
28900         * config/m68k/t-openbsd (MULTILIB_OPTIONS, LIBGCC): Delete.
28901         (INSTALL_LIBGCC): Delete.
28902         (M68K_MLIB_DIRNAMES, M68K_MLIB_OPTIONS): Define.
28903         * config/m68k/t-rtems (MULTILIB_OPTIONS, MULTILIB_DIRNAMES)
28904         (MULTILIB_MATCHES, MULTILIB_EXCEPTIONS): Delete.
28905         (M68K_MLIB_CPU): Define.
28906         * config/m68k/t-uclinux (MULTILIB_OPTIONS, MULTILIB_DIRNAMES)
28907         (MULTILIB_MATCHES, MULTILIB_EXCEPTIONS): Delete.
28908         (M68K_MLIB_CPU, M68K_MLIB_OPTIONS, M68K_MLIB_DIRNAMES): Define.
28909
28910 2007-02-09  Zdenek Dvorak  <dvorakz@suse.cz>
28911             Richard Guenther  <rguenther@suse.de>
28912
28913         PR middle-end/23361
28914         * fold-const.c (fold_comparison): Handle obfuscated comparisons
28915         against INT_MIN/INT_MAX.
28916         * tree-ssa-loop-ivcanon.c (remove_empty_loop): Print to dump
28917         file if a loop is removed.
28918
28919 2007-02-09  Joseph Myers  <joseph@codesourcery.com>
28920
28921         * calls.c (store_one_arg): Pass correct alignment to
28922         emit_push_insn for non-BLKmode values.
28923         * expr.c (emit_push_insn): If STRICT_ALIGNMENT, copy to an
28924         unaligned stack slot via a suitably aligned slot.
28925
28926 2007-02-08  DJ Delorie  <dj@redhat.com>
28927
28928         * config/m32c/m32c.c (m32c_unpend_compare): Add default to silence
28929         warnings.
28930         (legal_subregs): Use unsigned char, make const.
28931         (m32c_illegal_subreg_p): Use ARRAY_SIZE.  Delete unused variables.
28932
28933 2007-02-08  Paul Brook  <paul@codesourcery.com>
28934
28935         * config/arm/lib1funcs.asm (RETLDM): Pop directly into PC when no
28936         special interworking needed.
28937
28938 2007-02-08  Harsha Jagasia  <harsha.jagasia@amd.com>
28939
28940         * config/i386/xmmintrin.h: Make inclusion of emmintrin.h
28941         conditional to __SSE2__.
28942         (Entries below should have been added to first ChangeLog
28943         entry for amdfam10 dated 2007-02-05)
28944         * config/i386/emmintrin.h: Generate #error if __SSE2__ is not
28945         defined.
28946         * config/i386/pmmintrin.h: Generate #error if __SSE3__ is not
28947         defined.
28948         * config/i386/tmmintrin.h: Generate #error if __SSSE3__ is not
28949         defined.
28950
28951 2007-02-08  DJ Delorie  <dj@redhat.com>
28952
28953         * config/m32c/m32c-protos.h (m32c_illegal_subreg_p): New.
28954         * config/m32c/m32c.c (legal_subregs): New.
28955         (m32c_illegal_subreg_p): New.
28956         * config/m32c/predicates.md (m32c_any_operand): Use it to reject
28957         unsupported subregs of hard regs.
28958
28959 2007-02-08  Jan Hubicka  <jh@suse.cz>
28960
28961         * tree-cfg.c (bsi_replace): Shortcut when replacing the statement with
28962         the same one; always update histograms.
28963
28964 2007-02-08  Diego Novillo  <dnovillo@redhat.com>
28965
28966         * passes.c (init_optimization_passes): Tidy comment.
28967
28968 2007-02-08  Roger Sayle  <roger@eyesopen.com>
28969
28970         * simplify-rtx.c (simplify_unary_operation_1) <POPCOUNT>: We can
28971         strip zero_extend, bswap and rotates from POCOUNT's argument.
28972         <PARITY>: Likewise, we can strip not, bswap, sign_extend,
28973         zero_extend and rotates from PARITY's argument.
28974         <BSWAP>: A byte-swap followed by a byte-swap is an identity.
28975         (simplify_const_unary_operation) <BSWAP>: Evaluate the byte-swap
28976         of an integer constant at compile-time.
28977
28978 2007-02-08  Diego Novillo  <dnovillo@redhat.com>
28979
28980         PR 30562
28981         * tree-flow.h (struct var_ann_d): Remove field 'is_used'.
28982         Update all users.
28983         * tree-ssa-alias.c (compute_is_aliased): Remove.  Update all
28984         users.
28985         (init_alias_info):
28986         * tree-ssa-live.c (remove_unused_locals): Do not remove
28987         TREE_ADDRESSABLE variables.
28988         * tree-ssa-structalias.c (compute_points_to_sets): Tidy.
28989         * tree-ssa-operands.c (add_virtual_operand): Remove argument
28990         FOR_CLOBBER.  Update all users.
28991         If VAR has an associated alias set, add a virtual operand for
28992         it if no alias is found to conflict with the memory reference.
28993
28994 2007-02-07  Jan Hubicka  <jh@suse.cz>
28995             Robert Kidd <rkidd@crhc.uiuc.edu>
28996
28997         * value-prof.c (visit_hist, free_hist): Return 1 instead of 0.
28998
28999 2007-02-07  Ian Lance Taylor  <iant@google.com>
29000
29001         * lower-subreg.c (simple_move): Reject PARTIAL_INT modes.
29002
29003 2007-02-07  Roger Sayle  <roger@eyesopen.com>
29004
29005         * config/rs6000/rs6000.md (ctz<mode>2, ffs<mode>2, popcount<mode>2,
29006         parity<mode>2, smulsi3_highpart, abstf2_internal, allocate_stack,
29007         tablejumpdi, movsi_to_cr_one): Remove constraints from
29008         define_expand's match_operands.
29009
29010 2007-02-07  Roger Sayle  <roger@eyesopen.com>
29011
29012         * global.c (compute_regsets): Move declatation of "i" inside of
29013         #ifdef ELIMINABLE_REGS to avoid unused variable bootstrap failure.
29014
29015 2007-02-07  Jakub Jelinek  <jakub@redhat.com>
29016
29017         PR c++/30703
29018         * gimplify.c (gimplify_scan_omp_clauses): Remove special casing
29019         of INDIRECT_REF <RESULT_DECL>.
29020
29021         * config/i386/i386.c (override_options): Set PTA_SSSE3 for core2.
29022
29023 2007-02-06  J"orn Rennecke  <joern.rennecke@arc.com>
29024             Kaz Kojima  <kkojima@gcc.gnu.org>
29025
29026         PR target/29746
29027         * config/sh/sh.c (expand_cbranchdi4): Use scratch register
29028         properly.
29029         (sh_initialize_trampoline): Add parentheses to avoid a warning.
29030
29031 2007-02-06  Zdenek Dvorak <dvorakz@suse.cz>
29032
29033         * doc/loop.texi: Document possibility not to perform disambiguation
29034         of loops with multiple latches.
29035         * cfgloopmanip.c (alp_enum_p): Removed.
29036         (add_loop): Handle subloops.  Use get_loop_body_with_size.
29037         (create_preheader): Do not allow ENTRY_BLOCK_PTR to be preheader.
29038         * cfghooks.c (redirect_edge_and_branch_force): Set dominator for
29039         the new forwarder block.
29040         (make_forwarder_block): Only call new_bb_cbk if it is not NULL.
29041         Handle the case latch is NULL.
29042         * tree-ssa-dom.c (tree_ssa_dominator_optimize): Avoid cfg
29043         modifications when marking loop exits.
29044         * ifcvt.c (if_convert): Ditto.  Mark loop exits even if cfg cannot
29045         be modified.
29046         * loop-init.c (loop_optimizer_init): Do not modify cfg.  Call
29047         disambiguate_loops_with_multiple_latches.
29048         * tree-cfgcleanup.c (cleanup_tree_cfg_loop): Calculate dominators
29049         before fix_loop_structure.
29050         * cfgloop.c: Include pointer-set.h and output.h.
29051         (canonicalize_loop_headers, HEADER_BLOCK, LATCH_EDGE,
29052         update_latch_info, mfb_keep_just, mfb_keep_nonlatch): Removed.
29053         (get_loop_latch_edges, find_subloop_latch_edge_by_profile,
29054         find_subloop_latch_edge_by_ivs, find_subloop_latch_edge,
29055         mfb_redirect_edges_in_set, form_subloop, merge_latch_edges,
29056         disambiguate_multiple_latches, get_loop_body_with_size,
29057         disambiguate_loops_with_multiple_latches): New functions.
29058         (flow_loop_dump): Dump multiple latch edges.
29059         (flow_loop_nodes_find): Handle loops with multiple latches.
29060         (flow_loops_find): Ditto. Do not call canonicalize_loop_headers.
29061         (glb_enum_p): Modified.
29062         (get_loop_body): Use get_loop_body_with_size.
29063         * cfgloop.h (LOOPS_HAVE_RECORDED_EXITS): New flag.
29064         (AVOID_CFG_MODIFICATIONS): New constant.
29065         (disambiguate_loops_with_multiple_latches, add_loop,
29066         get_loop_body_with_size): Declare.
29067         * Makefile.in (cfgloop.o): Add pointer-set.h and output.h.
29068
29069 2007-02-06  Seongbae Park <seongbae.park@gmail.com>
29070
29071         PR inline-asm/28686
29072         * global.c (compute_regsets): New function.
29073         (global_alloc): Refactored ELIMINABLE_REGSET
29074         and NO_GLOBAL_ALLOC_REGS computation out.
29075         (rest_of_handle_global_alloc): Call compute_regsets()
29076         for non-optimizing case.
29077
29078 2007-02-06  Richard Henderson  <rth@redhat.com>
29079
29080         * config/i386/constraints.md (Y2): Rename from Y.
29081         (Yi): New constraint.
29082         * config/i386/i386.md (movsi_1, movdi_2, pushdf_nointeger,
29083         pushdf_integer, movdf_nointeger, movdf_integer, zero_extendsidi2_32,
29084         zero_extendsidi2_rex64, truncxfdf2_mixed): Change Y constraints to Y2.
29085         (extendsfdf2_mixed, extendsfdf2_sse, truncdfsf_fast_mixed,
29086         truncdfsf_fast_sse, truncdfsf_mixed, fix_truncdfdi_sse,
29087         fix_truncdfsi_sse, floatsidf2_mixed, floatsidf2_sse,
29088         floatdidf2_mixed, floatdidf2_sse, absnegdf2_mixed,
29089         absnegdf2_sse, sse_setccdf, fop_df_comm_mixed, fop_df_comm_sse,
29090         fop_df_1_mixed, fop_df_1_sse): Change Y constraints to x.
29091         * config/i386/mmx.md (mov<MMXMODEI>_internal_rex64,
29092         mov<MMXMODEI>_internal, movv2sf_internal_rex64, movv2sf_internal,
29093         vec_extractv2si_1): Change Y constraints to Y2.
29094         * config/i386/sse.md (vec_setv4sf_0, vec_concatv2df, vec_dupv4si,
29095         vec_dupv2di, sse2_concatv2si, vec_concatv4si_1, vec_concatv2di):
29096         Change Y constraints to Y2.
29097         (sse2_loadld): Change Y constraints to x.
29098
29099 2007-02-06  Roger Sayle  <roger@eyesopen.com>
29100
29101         * config/rs6000/rs6000.md (popcount<mode>2): Rewrite.
29102         (parity<mode>2): New define_expand using rs6000_emit_parity.
29103         * config/rs6000/rs6000.c (rs6000_emit_popcount,
29104         rs6000_emit_parity): New functions.
29105         * config/rs6000/rs6000-protos.h (rs6000_emit_popcount,
29106         rs6000_emit_parity): Prototype here.
29107
29108 2007-02-06  Ian Lance Taylor  <iant@google.com>
29109
29110         * lower-subreg.c (simple_move_operand): Reject CONST.
29111         (resolve_clobber): Call validate_change rather than directly
29112         assigning to XEXP (pat, 0).
29113
29114 2006-02-06  Paolo Bonzini  <bonzini@gnu.org>
29115
29116         * Makefile.in (tree-ssa-loop-ivopts.o): Add pointer-set.h dependency.
29117         (tree-ssa-reassoc.o): Add pointer-set.h dependency.
29118         (tree-cfg.o): Remove hashtab.h dependency.
29119
29120         * tree-ssa-loop-ivopts.c: Include pointer-set.h.
29121         (struct ivopts_data): Change niters to pointer_map_t.
29122         (struct nfe_cache_elt, nfe_hash, nfe_eq): Delete.
29123         (niter_for_exit): Create pointer_map on demand.  Change for
29124         pointer_map API.
29125         (tree_ssa_iv_optimize_init): Initialize data->niters to NULL.
29126         (free_loop_data): Destroy data->niters if created and reset field.
29127         (tree_ssa_iv_optimize_finalize): Don't delete data->niters here.
29128         (tree_ssa_iv_optimize_loop): Check for presence of stale data.
29129
29130         * tree-ssa-reassoc.c: Include pointer-set.h.
29131         (bb_rank): Change to long *.
29132         (operand_rank): Change to pointer_map_t.
29133         (find_operand_rank): Return long, -1 if not found.  Declare as inline.
29134         (insert_operand_rank): Accept long.
29135         (operand_entry_hash, operand_entry_eq): Remove.
29136         (get_rank): Return long.  Adjust for changes above.
29137         (init_reassoc): Change rank type to long.  Adjust creation of bb_rank
29138         and operand_rank.
29139         (fini_reassoc): Delete operand_rank with pointer_map_destroy.
29140
29141         * tree-ssa-structalias.c (vi_for_tree): Change to pointer_map.
29142         (struct tree_vi, tree_vi_t, tree_vi_hash, tree_vi_eq): Delete.
29143         (insert_vi_for_tree): Rewrite for pointer_map API.  Assert argument
29144         is not NULL.
29145         (lookup_vi_for_tree): Rewrite for pointer_map API.  Return varinfo_t
29146         directly since it cannot be NULL.
29147         (get_vi_for_tree): Rewrite for pointer_map API.
29148         (find_what_p_points_to): Adjust for change to lookup_vi_for_tree.
29149         (init_alias_vars): Create vi_for_tree as pointer_map.
29150         (delete_points_to_sets): Delete vi_for_tree using pointer_map_destroy.
29151
29152         * tree-cfg.c: Don't include hashtab.h.
29153         (edge_to_cases): Declare as pointer_map.
29154         (struct edge_to_cases_elt, edge_to_cases_hash, edge_to_cases_eq):
29155         Delete.
29156         (edge_to_cases_cleanup): Rewrite as pointer_map_traverse callback.
29157         (start_recording_case_labels): Create edge_to_cases as pointer_map.
29158         (end_recoding_case_labels): Cleanup edge_to_cases manually before
29159         destroying it.
29160         (record_switch_edge): Delete.
29161         (get_cases_for_edge): Adjust for pointer_map API, inline
29162         record_switch_edge (rewritten for new API), remove goto.
29163
29164 2006-02-06  Paolo Bonzini  <bonzini@gnu.org>
29165
29166         * Makefile.in (tree-nested.o): Add pointer-set.h dependency.
29167         * tree-nested.c: Include pointer-set.h.
29168         (var_map_elt, var_map_eq, var_map_hash): Delete.
29169         (struct nesting_info): Remove GTY marker.  Change the two htab_t's
29170         to pointer_map_t's.
29171         (nesting_info_bitmap_obstack): New.
29172         (lookup_field_for_decl): Adjust for pointer_map API.
29173         (lookup_tramp_for_decl): Adjust for pointer_map API.
29174         (get_nonlocal_debug_decl): Adjust for pointer_map API.
29175         (get_local_debug_decl): Adjust for pointer_map API.
29176         (convert_nl_goto_reference): Adjust for pointer_map API.
29177         (convert_nl_goto_receiver): Adjust for pointer_map API.
29178         (create_nesting_tree): Create outside GGC space.  Create bitmap on
29179         the new obstack.  Create field_map and var_map as pointer_maps.
29180         (free_nesting_tree): Adjust for changes to create_nesting_tree.
29181         (root): Delete.
29182         (lower_nested_functions): Move root here, no need to NULL it.
29183         Initialize and release the obstack.
29184
29185 2007-02-06  Paolo Bonzini  <bonzini@gnu.org>
29186
29187         * tree.c (tree_int_map_hash, tree_int_map_eq, tree_int_map_marked_p):
29188         Remove prototypes and make them non-static.
29189         (struct tree_int_map): Remove.
29190         * tree.h (struct tree_int_map): Move here, turning TO into an
29191         unsigned int.
29192         (tree_int_map_hash, tree_int_map_eq, tree_int_map_marked_p): Declare.
29193
29194         * tree.h (TREE_COMPLEXITY): Remove.
29195         (struct tree_exp): Remove complexity field.
29196         * tree.c (build1_stat): Don't set it.
29197
29198 2007-02-06  Dorit Nuzman  <dorit@il.ibm.com>
29199             Victor Kaplansky  <victork@il.ibm.com>
29200
29201         * tree-vectorizer.c (vect_is_simple_use): Support induction.
29202         (vect_is_simple_reduction): Support reduction with induction as
29203         one of the operands.
29204         (vect_is_simple_iv_evolution): Fix formatting.
29205         * tree-vect-analyze.c (vect_mark_stmts_to_be_vectorized): Fix
29206         formatting.  Don't mark induction phis for vectorization.
29207         (vect_analyze_scalar_cycles): Analyze all inductions, then reductions.
29208         * tree-vect-transform.c (get_initial_def_for_induction): New function.
29209         (vect_get_vec_def_for_operand): Support induction.
29210         (vect_get_vec_def_for_stmt_copy): Fix formatting and add check for
29211         induction case.
29212         (vectorizable_reduction): Support reduction with induction as one of
29213         the operands.
29214         (vectorizable_type_demotion): Use def-type of stmt argument rather
29215         than dummy def-type.
29216
29217         * tree-ssa-loop.c (gate_scev_const_prop): Return the value of
29218         flag_tree_scev_cprop.
29219         * common.opt (tree-scev-cprop): New flag.
29220
29221         * tree-vect-transform.c (vect_create_destination_var): Use 'kind' in
29222         call to vect_get_new_vect_var.
29223
29224 2007-02-06  Ira Rosen  <irar@il.ibm.com>
29225
29226         * tree-vect-patterns.c (vect_recog_widen_mult_pattern): Check that
29227         vectype is not NULL.
29228         (vect_pattern_recog_1): Likewise.
29229
29230 2007-02-05  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
29231
29232         * fold-const.c (negate_expr_p): Handle CONJ_EXPR.
29233         (fold_negate_expr): Likewise.
29234
29235 2007-02-05  Alexandre Oliva  <aoliva@redhat.com>
29236
29237         PR debug/30189
29238         * dwarf2out.c (modified_type_die): Follow DECL_ORIGINAL_TYPE
29239         even if cv-qualification is the same.
29240
29241 2007-02-05  Geoffrey Keating  <geoffk@apple.com>
29242
29243         * config/rs6000/darwin-tramp.asm (__trampoline_setup): Call
29244         __enable_execute_stack on completion.
29245
29246 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
29247
29248         * config/i386/athlon.md (athlon_fldxf_k8, athlon_fld_k8,
29249         athlon_fstxf_k8, athlon_fst_k8, athlon_fist, athlon_fmov,
29250         athlon_fadd_load, athlon_fadd_load_k8, athlon_fadd, athlon_fmul,
29251         athlon_fmul_load, athlon_fmul_load_k8, athlon_fsgn,
29252         athlon_fdiv_load, athlon_fdiv_load_k8, athlon_fdiv_k8,
29253         athlon_fpspc_load, athlon_fpspc, athlon_fcmov_load,
29254         athlon_fcmov_load_k8, athlon_fcmov_k8, athlon_fcomi_load_k8,
29255         athlon_fcomi, athlon_fcom_load_k8, athlon_fcom): Added amdfam10.
29256
29257 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
29258
29259         * config/i386/i386.md (x86_sahf_1, cmpfp_i_mixed, cmpfp_i_sse,
29260         cmpfp_i_i387, cmpfp_iu_mixed, cmpfp_iu_sse, cmpfp_iu_387,
29261         swapsi, swaphi_1, swapqi_1, swapdi_rex64, fix_truncsfdi_sse,
29262         fix_truncdfdi_sse, fix_truncsfsi_sse, fix_truncdfsi_sse,
29263         x86_fldcw_1, floatsisf2_mixed, floatsisf2_sse, floatdisf2_mixed,
29264         floatdisf2_sse, floatsidf2_mixed, floatsidf2_sse,
29265         floatdidf2_mixed, floatdidf2_sse, muldi3_1_rex64, mulsi3_1,
29266         mulsi3_1_zext, mulhi3_1, mulqi3_1, umulqihi3_1, mulqihi3_insn,
29267         umulditi3_insn, umulsidi3_insn, mulditi3_insn, mulsidi3_insn,
29268         umuldi3_highpart_rex64, umulsi3_highpart_insn,
29269         umulsi3_highpart_zext, smuldi3_highpart_rex64,
29270         smulsi3_highpart_insn, smulsi3_highpart_zext, x86_64_shld,
29271         x86_shld_1, x86_64_shrd, sqrtsf2_mixed, sqrtsf2_sse,
29272         sqrtsf2_i387, sqrtdf2_mixed, sqrtdf2_sse, sqrtdf2_i387,
29273         sqrtextendsfdf2_i387, sqrtxf2, sqrtextendsfxf2_i387,
29274         sqrtextenddfxf2_i387): Added amdfam10_decode.
29275
29276         * config/i386/athlon.md (athlon_idirect_amdfam10,
29277         athlon_ivector_amdfam10, athlon_idirect_load_amdfam10,
29278         athlon_ivector_load_amdfam10, athlon_idirect_both_amdfam10,
29279         athlon_ivector_both_amdfam10, athlon_idirect_store_amdfam10,
29280         athlon_ivector_store_amdfam10): New define_insn_reservation.
29281         (athlon_idirect_loadmov, athlon_idirect_movstore): Added
29282         amdfam10.
29283
29284 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
29285
29286         * config/i386/athlon.md (athlon_call_amdfam10,
29287         athlon_pop_amdfam10, athlon_lea_amdfam10): New
29288         define_insn_reservation.
29289         (athlon_branch, athlon_push, athlon_leave_k8, athlon_imul_k8,
29290         athlon_imul_k8_DI, athlon_imul_mem_k8, athlon_imul_mem_k8_DI,
29291         athlon_idiv, athlon_idiv_mem, athlon_str): Added amdfam10.
29292
29293 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
29294
29295         * config/i386/athlon.md (athlon_sseld_amdfam10,
29296         athlon_mmxld_amdfam10, athlon_ssest_amdfam10,
29297         athlon_mmxssest_short_amdfam10): New define_insn_reservation.
29298
29299 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
29300
29301         * config/i386/athlon.md (athlon_sseins_amdfam10): New
29302         define_insn_reservation.
29303         * config/i386/i386.md (sseins): Added sseins to define_attr type
29304         and define_attr unit.
29305         * config/i386/sse.md: Set type attribute to sseins for insertq
29306         and insertqi.
29307
29308 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
29309
29310         * config/i386/athlon.md (sselog_load_amdfam10, sselog_amdfam10,
29311         ssecmpvector_load_amdfam10, ssecmpvector_amdfam10,
29312         ssecomi_load_amdfam10, ssecomi_amdfam10,
29313         sseaddvector_load_amdfam10, sseaddvector_amdfam10): New
29314         define_insn_reservation.
29315         (ssecmp_load_k8, ssecmp, sseadd_load_k8, seadd): Added amdfam10.
29316
29317 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
29318
29319         * config/i386/athlon.md (cvtss2sd_load_amdfam10,
29320         cvtss2sd_amdfam10, cvtps2pd_load_amdfam10, cvtps2pd_amdfam10,
29321         cvtsi2sd_load_amdfam10, cvtsi2ss_load_amdfam10,
29322         cvtsi2sd_amdfam10, cvtsi2ss_amdfam10, cvtsd2ss_load_amdfam10,
29323         cvtsd2ss_amdfam10, cvtpd2ps_load_amdfam10, cvtpd2ps_amdfam10,
29324         cvtsX2si_load_amdfam10, cvtsX2si_amdfam10): New
29325         define_insn_reservation.
29326
29327         * config/i386/sse.md (cvtsi2ss, cvtsi2ssq, cvtss2si,
29328         cvtss2siq, cvttss2si, cvttss2siq, cvtsi2sd, cvtsi2sdq,
29329         cvtsd2si, cvtsd2siq, cvttsd2si, cvttsd2siq,
29330         cvtpd2dq, cvttpd2dq, cvtsd2ss, cvtss2sd,
29331         cvtpd2ps, cvtps2pd): Added amdfam10_decode attribute.
29332
29333 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
29334
29335         * config/i386/athlon.md (athlon_ssedivvector_amdfam10,
29336         athlon_ssedivvector_load_amdfam10, athlon_ssemulvector_amdfam10,
29337         athlon_ssemulvector_load_amdfam10): New define_insn_reservation.
29338         (athlon_ssediv, athlon_ssediv_load_k8, athlon_ssemul,
29339         athlon_ssemul_load_k8): Added amdfam10.
29340
29341 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
29342
29343         * config/i386/i386.h (TARGET_SSE_UNALIGNED_MOVE_OPTIMAL): New macro.
29344         (x86_sse_unaligned_move_optimal): New variable.
29345
29346         * config/i386/i386.c (x86_sse_unaligned_move_optimal): Enable for
29347         m_AMDFAM10.
29348         (ix86_expand_vector_move_misalign): Add code to generate movupd/movups
29349         for unaligned vector SSE double/single precision loads for AMDFAM10.
29350
29351 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
29352
29353         * config/i386/i386.h (TARGET_AMDFAM10): New macro.
29354         (TARGET_CPU_CPP_BUILTINS): Add code for amdfam10.
29355         Define TARGET_CPU_DEFAULT_amdfam10.
29356         (TARGET_CPU_DEFAULT_NAMES): Add amdfam10.
29357         (processor_type): Add PROCESSOR_AMDFAM10.
29358
29359         * config/i386/i386.md: Add amdfam10 as a new cpu attribute to match
29360         processor_type in config/i386/i386.h.
29361         Enable imul peepholes for TARGET_AMDFAM10.
29362
29363         * config.gcc: Add support for --with-cpu option for amdfam10.
29364
29365         * config/i386/i386.c (amdfam10_cost): New variable.
29366         (m_AMDFAM10): New macro.
29367         (m_ATHLON_K8_AMDFAM10): New macro.
29368         (x86_use_leave, x86_push_memory, x86_movx, x86_unroll_strlen,
29369         x86_cmove, x86_3dnow_a, x86_deep_branch, x86_use_simode_fiop,
29370         x86_promote_QImode, x86_integer_DFmode_moves,
29371         x86_partial_reg_dependency, x86_memory_mismatch_stall,
29372         x86_accumulate_outgoing_args, x86_arch_always_fancy_math_387,
29373         x86_sse_partial_reg_dependency, x86_sse_typeless_stores,
29374         x86_use_ffreep, x86_use_incdec, x86_four_jump_limit,
29375         x86_schedule, x86_use_bt, x86_cmpxchg16b, x86_pad_returns):
29376         Enable/disable for amdfam10.
29377         (override_options): Add amdfam10_cost to processor_target_table.
29378         Set up PROCESSOR_AMDFAM10 for amdfam10 entry in
29379         processor_alias_table.
29380         (ix86_issue_rate): Add PROCESSOR_AMDFAM10.
29381         (ix86_adjust_cost): Add code for amdfam10.
29382
29383 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
29384
29385         * config/i386/i386.opt: Add new Advanced Bit Manipulation (-mabm)
29386         instruction set feature flag. Add new (-mpopcnt) flag for popcnt
29387         instruction. Add new SSE4A (-msse4a) instruction set feature flag.
29388         * config/i386/i386.h: Add builtin definition for SSE4A.
29389         * config/i386/i386.md: Add support for ABM instructions
29390         (popcnt and lzcnt).
29391         * config/i386/sse.md: Add support for SSE4A instructions
29392         (movntss, movntsd, extrq, insertq).
29393         * config/i386/i386.c: Add support for ABM and SSE4A builtins.
29394         Add -march=amdfam10 flag.
29395         * config/i386/ammintrin.h: Add support for SSE4A intrinsics.
29396         * doc/invoke.texi: Add documentation on flags for sse4a, abm, popcnt
29397         and amdfam10.
29398         * doc/extend.texi: Add documentation for SSE4A builtins.
29399
29400 2007-02-05  Bob Wilson  <bob.wilson@acm.org>
29401
29402         * config/xtensa/xtensa.c (constantpool_mem_p): Skip over SUBREGs.
29403
29404 2007-02-05  Richard Guenther  <rguenther@suse.de>
29405
29406         * tree-vectorizer.h (vectorizable_function): Add argument type
29407         argument, change return type.
29408         * tree-vect-patterns.c (vect_recog_pow_pattern): Adjust caller.
29409         * tree-vect-transform.c (vectorizable_function): Handle extra
29410         argument, return vectorized function decl.
29411         (build_vectorized_function_call): Remove.
29412         (vectorizable_call): Handle calls with result and argument types
29413         differing.  Handle loop vectorization factor correctly.
29414         * targhooks.c (default_builtin_vectorized_function): Adjust for
29415         extra argument.
29416         * targhooks.h (default_builtin_vectorized_function): Likewise.
29417         * target.h (builtin_vectorized_function): Add argument type
29418         argument.
29419         * config/i386/i386.c (ix86_builtin_vectorized_function): Handle
29420         extra argument, allow vectorizing of lrintf.
29421         * doc/tm.texi (TARGET_VECTORIZE_BUILTIN_VECTORIZED_FUNCTION): Adjust
29422         documentation of target hook.
29423
29424 2007-02-05  Hans-Peter Nilsson  <hp@axis.com>
29425
29426         PR target/30665
29427         * config/cris/cris.md ("*andsi_movu", "*andsi_clear", "*andhi_movu")
29428         ("*andhi_clear", andu (casesi+45)): For size-changed operand where
29429         memory is allowed, require !side_effects_p, not just !MEM_VOLATILE_P.
29430
29431 2007-02-05  Roger Sayle  <roger@eyesopen.com>
29432
29433         * fold-const.c (fold_unary) <REAL_PART>: Test for availability of
29434         BUILT_IN_COS before simplifying REAL_PART(CEXPI)) to COS.
29435         <IMAG_PART>: Likewise, check for availability of BUILT_IN_SIN.
29436         * builtins.c (fold_builtin_sincos): Check for TARGET_C99_FUNCTIONS
29437         before canonicalizing sincos to cexpi.
29438         (fold_builtin_cexp): Likewise, for canonicalizing cexp to cexpi.
29439
29440 2007-02-05  Roger Sayle  <roger@eyesopen.com>
29441
29442         * config/alpha/alpha.c (alpha_add_builtins): New Helper function.
29443         Set TREE_READONLY and TREE_NOTHROW directly, not via attributes.
29444         (alpha_init_builtins): Use alpha_add_builtins to process tables.
29445
29446 2007-02-05  Roger Sayle  <roger@eyesopen.com>
29447
29448         * mips-tfile.c (initialize_init_file): Correct endianness test.
29449
29450 2007-02-05  Kazu Hirata  <kazu@codesourcery.com>
29451
29452         * config/m68k/m68k.md (pushdi-1, pushdi, movsi+1): Don't use
29453         the 'y' constraint.
29454
29455 2007-02-05  Richard Sandiford  <richard@codesourcery.com>
29456
29457         * dwarf2out.c (dwarf2out_frame_debug_expr): Record the register
29458         saves in a PARALLEL before the register assignments.
29459
29460 2007-02-05  Richard Sandiford  <richard@codesourcery.com>
29461
29462         * doc/tm.texi (DWARF_ALT_FRAME_RETURN_COLUMN): Do not require
29463         DWARF_FRAME_RETURN_COLUMN to be a general register.
29464         * dwarf2out.c (init_return_column_size): New function, split from...
29465         (expand_builtin_init_dwarf_reg_sizes): ...here.  Allow both
29466         DWARF_FRAME_RETURN_COLUMN and DWARF_ALT_FRAME_RETURN_COLUMN
29467         to be nongeneral registers.
29468         * config/m68k/m68k.h (DWARF_FRAME_REGNUM): Only map FP and
29469         integer registers.
29470         (DWARF_FRAME_REGISTERS, DWARF_FRAME_RETURN_COLUMN): Define.
29471         (DWARF_ALT_FRAME_RETURN_COLUMN): Define.
29472
29473 2007-02-04  Zdenek Dvorak <dvorakz@suse.cz>
29474
29475         * cfgcleanup.c (try_optimize_cfg): Avoid removing ENTRY_BLOCK_PTR.
29476
29477 2007-02-04  Zdenek Dvorak <dvorakz@suse.cz>
29478
29479         * cfgloopmanip.c (loop_delete_branch_edge): Removed.
29480         (remove_path): Use can_remove_branch_p and remove_branch instead
29481         of loop_delete_branch_edge.
29482         * tree-ssa-loop-manip.c (scale_dominated_blocks_in_loop): New function.
29483         (tree_transform_and_unroll_loop): Remove dead branches immediately.
29484         Update profile using scale_dominated_blocks_in_loop.
29485         * cfghooks.c (can_remove_branch_p, remove_branch): New functions.
29486         * cfghooks.h (struct cfg_hooks): Add can_remove_branch_p.
29487         (can_remove_branch_p, remove_branch): Declare.
29488         * tree-cfg.c (tree_can_remove_branch_p): New function.
29489         (tree_cfg_hooks): Add tree_can_remove_branch_p.
29490         * cfgrtl.c (rtl_can_remove_branch_p): New function.
29491         (rtl_cfg_hooks, cfg_layout_rtl_cfg_hook): Add rtl_can_remove_branch_p.
29492
29493 2007-02-05  Jan Hubicka  <jh@suse.cz>
29494
29495         PR middle-end/30696
29496         * ipa-inline.c (cgraph_clone_inlined_nodes): When there are unanalyzed
29497         nodes in cgraph, don't remove offline copy of the function.
29498
29499 2007-02-04  Jan Hubicka  <jh@suse.cz>
29500
29501         * tree-sra.c (sra_walk_expr): Add linebreaks. BITFIELD_REFs into
29502         vectors might cause maybe_lookup_element_for_expr to be called
29503         on non-sra-candidate.
29504
29505 2007-02-04  Kazu Hirata  <kazu@codesourcery.com>
29506
29507         * config/bfin/bfin-modes.def, config/bfin/bfin.c,
29508         config/bfin/bfin.md, config/bfin/predicates.md: Follow
29509         spelling conventions.
29510
29511 2007-02-04  Richard Guenther  <rguenther@suse.de>
29512
29513         PR middle-end/30636
29514         * fold-const.c (try_move_mult_to_index): Make sure to not
29515         overflow one dimension of a multi-dimensional array access.
29516
29517 2007-02-04  Jan Hubicka  <jh@suse.cz>
29518
29519         * passes.c (init_optimization_passes): Reindent.
29520
29521 2007-02-04  Jan Hubicka  <jh@suse.cz>
29522             Eric Botcazou  <ebotcazou@adacore.com>
29523
29524         * tree-optimize.c (has_abnormal_outgoing_edge_p): Move to...
29525         (execute_fixup_cfg): Break out the abnormal goto code.
29526         * tree-inline.c (has_abnormal_outgoing_edge_p): ...here.
29527         (make_nonlocal_label_edges): Move here from execute_fixup_cfg.
29528         (optimize_inline_calls): Call make_nonlocal_label_edges.
29529
29530 2007-02-04  Jan Hubicka  <jh@suse.cz>
29531
29532         * tree-ssa-copyrename.c (copy_rename_partition_coalesce): Return
29533         true when something was changed.
29534         (rename_ssa_copies): When something was changed, do
29535         TODO_remove_unused_locals.
29536         * tree-ssa-forwprop.c (tree_ssa_forward_propagate_single_use_value):
29537         add TODO_remove_unused_locals when instruction was removed.
29538
29539 2007-02-04  Jan Hubicka  <jh@suse.cz>
29540
29541         * ipa-inline.c (try_inline): Improve debug output; work on already
29542         inline edges too.
29543         (cgraph_decide_inlining_incrementally): Indent; improve debug output;
29544         call try_inline for already inlined edges too when flattening;
29545         inline also functions that make callee growth but overall unit size
29546         reduce.
29547
29548 2007-02-04  Kazu Hirata  <kazu@codesourcery.com>
29549
29550         * config/m32c/bitops.md, config/m32c/jump.md,
29551         config/m32c/m32c.c, config/m32c/m32c.h, config/m32r/m32r.c,
29552         config/m32r/m32r.h, config/m32r/m32r.md,
29553         config/m32r/predicates.md, config/m68hc11/larith.asm,
29554         config/m68hc11/m68hc11.c, config/m68hc11/m68hc11.h,
29555         config/m68k/m68k.h, config/mcore/mcore.md, config/mips/4k.md,
29556         config/mips/mips-protos.h, config/mips/mips.c,
29557         config/mips/mips.h, config/mips/mips.md, config/mips/mips16.S,
29558         config/mn10300/mn10300.h, config/mn10300/predicates.md,
29559         config/mt/mt.c, config/mt/mt.h, config/mt/mt.md: Follow
29560         spelling conventions.
29561
29562         * config/v850/v850.c, config/v850/v850.h, config/v850/v850.md:
29563         Follow spelling conventions.
29564
29565 2007-02-03  Douglas Gregor  <doug.gregor@gmail.com>
29566
29567         * c-opts.c (c_common_post_options): If C++0x mode is enabled, don't
29568         warn about C++0x compatibility.
29569
29570 2007-02-04  Kazu Hirata  <kazu@codesourcery.com>
29571
29572         * config/h8300/h8300.c, config/h8300/h8300.h,
29573         config/h8300/h8300.md: Follow spelling conventions.
29574
29575 2007-02-03  Uros Bizjak  <ubizjak@gmail.com>
29576
29577         PR middle-end/30667
29578         * combine.c (try_combine): Do not substitute source operand
29579         with constants wider than 2 * HOST_BITS_PER_WIDE_INT.
29580
29581 2007-02-03  Jan Hubicka  <jh@suse.cz>
29582
29583         PR gcov-profile/30650
29584         * value-prof.c (stringop_block_profile): Fix handling of size counter;
29585         do not divide by zero for never executed counters.
29586         (tree_find_values_to_profile): Fix counters.
29587         * gcov-ui.h (GCOV_COUNTER_AVERAGE, GCOV_COUNTER_IOR): Fix comments.
29588
29589 2007-02-03  Ian Lance Taylor  <iant@google.com>
29590
29591         * lower-subreg.c (simple_move_operand): New static function,
29592         broken out of simple_move.  Reject LABEL_REF, SYMBOL_REF, and HIGH
29593         operands.
29594         (simple_move): Call simple_move_operand.
29595         (find_decomposable_subregs): Add special handling of MEMs.
29596         (can_decompose_p): Rename from cannot_decompose_p.  Reverse
29597         meaning of return value.  If we see a hard register, test whether
29598         it can store a word_mode value.  Change all callers.
29599
29600 2007-02-03  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
29601
29602         * pa.md (addvdi3, addvsi3, subvdi3, subvsi3, negvdi2, negvsi2): New
29603         ftrapv insns and expanders.
29604         (subdi3): Change define_expand operand 1 to arith11_operand, and
29605         operand 2 to reg_or_0_operand.  Change constraints of 64-bit insn
29606         pattern to handle reg_or_0 operands.  Revise 32-bit insn pattern to
29607         handle 11-bit constants and reg_or_0 operands in operands 1 and 2,
29608         respectively.
29609
29610         PR middle-end/30174
29611         * varasm.c (notice_global_symbol): Treat global objects as weak when
29612         flag_shlib is true.
29613
29614 2007-02-03  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
29615
29616         * emit-rtl.c (dconstpi): Delete.
29617         (dconstsqrt2): New.
29618         (init_emit_once): Delete dconstpi and init dconstsqrt2.
29619         * real.h (dconstpi): Delete.
29620         (dconstsqrt2): New.
29621         * builtins.c (fold_builtin_cabs): Use dconstsqrt2.
29622         (fold_builtin_hypot): Likewise.
29623
29624 2007-02-03  Tom Tromey  <tromey@redhat.com>
29625
29626         PR driver/30246
29627         * gcc.c (cpp_unique_options): Any of -ggdb3, -gstabs3,
29628         -gcoff3, -gxcoff3, -gvms3 implies -dD.
29629
29630 2007-02-03  Kazu Hirata  <kazu@codesourcery.com>
29631
29632         * c-decl.c, config/avr/avr.c, config/avr/avr.h,
29633         config/m68k/m68k.c, config/m68k/netbsd-elf.h,
29634         config/mn10300/mn10300.c, config/pdp11/pdp11.h,
29635         config/rs6000/cell.md, config/rs6000/darwin.h,
29636         config/sh/sh.md, config/sh/sh4-300.md, config/spu/spu.c,
29637         config/spu/spu.md, cselib.c, expr.c, haifa-sched.c, hwint.h,
29638         jump.c, reload.c, sched-deps.c, sched-int.h, tree-inline.c,
29639         tree-profile.c, tree-ssa-live.h, tree-vrp.c: Fix comment
29640         typos.  Follow spelling conventions.
29641         * doc/invoke.texi: Follow spelling conventions.
29642
29643 2007-02-03  Roger Sayle  <roger@eyesopen.com>
29644
29645         * simplify-rtx.c (simplify_relational_operation_1): Implement some
29646         canonicalization transformations that attempt to simplify integer
29647         constant comparisons to become comparisons against zero.
29648
29649 2007-02-03  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
29650
29651         * builtins.c (fold_builtin_cabs): Fold cabs(x+xi) into
29652         fabs(x)*sqrt(2).
29653         * fold-const.c (fold_binary): Fix comment typos.  Fold complex
29654         (x,0)-(0,y) into (x,-y).  Likewise (0,y)-(x,0) into (-x,y).
29655
29656 2007-02-02  Mike Stump  <mrs@apple.com>
29657
29658         * config/darwin9.h (DARWIN_LINKER_GENERATES_ISLANDS): Add.
29659         * config/rs6000/rs6000.c (DARWIN_GENERATE_ISLANDS): Add.
29660         (output_call): Use DARWIN_GENERATE_ISLANDS to decide when to
29661         generate a branch island.
29662
29663 2007-02-02  Bob Wilson  <bob.wilson@acm.org>
29664
29665         * config/xtensa/xtensa.c (smalloffset_mem_p): Use BASE_REG_P.
29666         (xtensa_legitimate_address_p): New.
29667         (xtensa_legitimize_address): New.
29668         (xtensa_output_addr_const_extra): New.
29669         * config/xtensa/xtensa.h (REG_OK_STRICT_FLAG): Define.
29670         (BASE_REG_P): New.
29671         (REG_OK_FOR_BASE_P): Use BASE_REG_P.
29672         (GO_IF_LEGITIMATE_ADDRESS): Move code to xtensa_legitimate_address_p.
29673         (LEGITIMIZE_ADDRESS): Move code to xtensa_legitimize_address.
29674         (OUTPUT_ADDR_CONST_EXTRA): Move code to xtensa_output_addr_const_extra.
29675         * config/xtensa/xtensa-protos.h (xtensa_legitimate_address_p): New.
29676         (xtensa_legitimize_address): New.
29677         (xtensa_output_addr_const_extra): New.
29678
29679 2007-02-02  Steve Ellcey  <sje@cup.hp.com>
29680
29681         * config/ia64/ia64.c (ia64_print_operand): Fix compare strings.
29682
29683 2007-02-02  Ian Lance Taylor  <iant@google.com>
29684
29685         * expmed.c (expand_divmod): Add comment.
29686
29687 2007-02-02  Kazu Hirata  <kazu@codesourcery.com>
29688
29689         * emit-rtl.c (renumber_insns): Remove.
29690         * flags.h: Remove the extern for flag_renumber_insns.
29691         * rtl.h: Remove the prototype for renumber_insns.
29692         * toplev.c (flag_renumber_insns): Remove.
29693
29694 2007-02-02  Hui-May Chang  <hm.chang@apple.com>
29695
29696         Revert for x86 darwin:
29697         2005-06-19  Uros Bizjak  <uros@kss-loka.si>
29698
29699         * config/i386/i386.c (ix86_function_arg_regno_p): Put back the
29700         code before the following patch under TARGET_MACHO.
29701         (ix86_function_value_regno_p): Likewise.
29702
29703 2007-02-02  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
29704
29705         * fold-const.c (negate_expr_p, fold_negate_expr): Handle
29706         COMPLEX_EXPR.
29707
29708 2007-02-02  Maxim Kuvyrkov  <mkuvyrkov@ispras.ru>
29709
29710         PR target/29682
29711         * config/ia64/ia64.c (ia64_speculate_insn): Restrict to memory
29712         loads to general or fp registers.  Add comments.
29713         * config/ia64/ia64.md (reg_pred_prefix): Add comment.
29714
29715 2007-02-02  Paolo Bonzini  <bonzini@gnu.org>
29716
29717         * pointer-set.c (insert_aux): Only return insertion slot.
29718         (pointer_set_insert): Adjust.
29719         (pointer_set_traverse, struct pointer_map_t, pointer_map_create,
29720         pointer_map_destroy, pointer_map_insert, pointer_map_contains,
29721         pointer_map_traverse): New.
29722         * pointer-set.h (pointer_set_traverse, struct pointer_map_t,
29723         pointer_map_create,  pointer_map_destroy, pointer_map_insert,
29724         pointer_map_contains, pointer_map_traverse): Declare.
29725
29726 2007-02-02  Jakub Jelinek  <jakub@redhat.com>
29727
29728         PR middle-end/30473
29729         * builtins.c (fold_builtin_sprintf): Do not attempt to optimize
29730         sprintf (str, "%s").  Do not optimize sprintf (str, "nopercent", p++).
29731
29732 2007-02-02  Maxim Kuvyrkov  <mkuvyrkov@ispras.ru>
29733
29734         * sched-int.h (ds_to_dk, dk_to_ds): Declare functions.
29735
29736         (struct _dep): New type.
29737         (dep_t): New typedef.
29738         (DEP_PRO, DEP_CON, DEP_KIND): New access macros.
29739         (DEP_STATUS): New access macro.  The macro with the same name was
29740         renamed to DEP_LINK_STATUS.
29741         (dep_init): Declare function
29742
29743         (struct _dep_link): New type.
29744         (dep_link_t): New typedef.
29745         (DEP_LINK_NODE, DEP_LINK_NEXT, DEP_LINK_PREV_NEXTP): New access macros.
29746         (DEP_LINK_DEP, DEP_LINK_PRO, DEP_LINK_CON, DEP_LINK_KIND): New macros.
29747         (DEP_LINK_STATUS): New macro.
29748         (debug_dep_links): New debug function.
29749
29750         (struct _deps_list): New type.
29751         (deps_list_t): New typedef.
29752         (DEPS_LIST_FIRST): New access macro.
29753         (FOR_EACH_DEP_LINK): New cycle macro.
29754         (create_deps_list, free_deps_list, delete_deps_list): Declare
29755         functions.
29756         (deps_list_empty_p, debug_deps_list, add_back_dep_to_deps_list): Ditto.
29757         (find_link_by_pro_in_deps_list, find_link_by_con_in_deps_list): Ditto.
29758         (copy_deps_list_change_con): Ditto.
29759
29760         (move_dep_link): Declare function.
29761
29762         (struct _dep_node): New type.
29763         (dep_node_t): New typedef.
29764         (DEP_NODE_BACK, DEP_NODE_DEP, DEP_NODE_FORW): New access macros.
29765
29766         (struct haifa_insn_data.back_deps): New field to hold backward
29767         dependencies of the insn.
29768         (struct haifa_insn_data.depend): Rename to forw_deps.  Change its type
29769         to deps_list_t.
29770         (struct haifa_insn_data.resolved_deps): Rename to resolved_back_deps.
29771         Change its type to deps_list_t.
29772         (INSN_BACK_DEPS): New access macro to use instead of LOG_LINKS.
29773         (INSN_DEPEND): Rename to INSN_FORW_DEPS.
29774         (RESOLVED_DEPS): Rename to INSN_RESOLVED_BACK_DEPS.
29775
29776         (INSN_COST): Move to haifa-sched.c.  Use insn_cost () instead.
29777
29778         (DEP_STATUS): Rename to DEP_LINK_STATUS.  Fix typo in the comment.
29779
29780         (add_forw_dep, delete_back_forw_dep, insn_cost): Update declaration
29781         and all callers.
29782         (dep_cost): Declare.
29783
29784         * sched-deps.c (CHECK): New macro to (en/dis)able sanity checks.
29785         (ds_to_dk, dk_to_ds): New functions.
29786
29787         (init_dep_1): New static function.
29788         (init_dep): New function.
29789         (copy_dep): New static function.
29790
29791         (dep_link_consistent_p, attach_dep_link, add_to_deps_list): New static
29792         functions.
29793         (detach_dep_link): New static function.
29794         (move_dep_link): New function.
29795
29796         (dep_links_consistent_p, dump_dep_links): New static functions.
29797         (debug_dep_links): New debugging function.
29798
29799         (deps_obstack, dl_obstack, dn_obstack): New static variables.
29800
29801         (alloc_deps_list, init_deps_list): New static functions.
29802         (create_deps_list): New function.
29803         (clear_deps_list): New static function.
29804         (free_deps_list, delete_deps_list, deps_list_empty_p): New functions.
29805         (deps_list_consistent_p, dump_deps_list): New static functions.
29806         (debug_deps_list): New function.
29807         (add_back_dep_to_deps_list, find_link_by_pro_in_deps_list): New
29808         functions.
29809         (find_link_by_con_in_deps_list, copy_deps_list_change_con): Ditto.
29810
29811         (maybe_add_or_update_back_dep_1, add_or_update_back_dep_1): Update to
29812         use new scheduler dependencies lists.
29813         (add_back_dep, delete_all_dependences, fixup_sched_groups): Ditto.
29814         (sched_analyze): Ditto.  Initialize dependencies lists.
29815         (add_forw_dep, compute_forward_dependences): Update to use new
29816         scheduler dependencies lists.
29817
29818         (init_dependency_caches): Init deps_obstack.
29819         (free_dependency_caches): Free deps_obstack.
29820
29821         (adjust_add_sorted_back_dep, adjust_back_add_forw_dep): Update to use
29822         new scheduler dependencies lists.
29823         (delete_forw_dep, add_or_update_back_forw_dep): Ditto.
29824         (add_back_forw_dep, delete_back_forw_dep): Ditto.
29825
29826         * sched-rgn.c (set_spec_fed, find_conditional_protection, is_pfree):
29827         Update to use new scheduler dependencies lists.
29828         (is_conditionally_protected, is_prisky, add_branch_dependences): Ditto.
29829         (debug_dependencies): Ditto.
29830         (schedule_region): Update comments.
29831
29832         * sched-ebb.c (earliest_block_with_similiar_load): Update to use new
29833         scheduler dependencies lists.
29834         (schedule_ebb): Update comments.
29835
29836         * rtl.def (DEPS_LIST): Remove.
29837
29838         * lists.c (unused_deps_list): Remove.
29839         (free_list): Update assertions.
29840
29841         (alloc_DEPS_LIST, free_DEPS_LIST_list, free_DEPS_LIST_node): Remove.
29842         (remove_free_DEPS_LIST_elem, copy_DEPS_LIST_list): Ditto.
29843
29844         * rtl.h (free_DEPS_LIST_list, alloc_DEPS_LIST): Remove declarations.
29845         (remove_free_DEPS_LIST_elem, copy_DEPS_LIST_list): Ditto.
29846
29847         * haifa-sched.c (comments): Update.
29848         (insn_cost1): Remove.  Inline the code into insn_cost ().
29849         (insn_cost): Update to use new scheduler dependencies lists.  Move
29850         processing of the dependency cost to dep_cost ().
29851         (dep_cost): New function.  Use it instead of insn_cost () when
29852         evaluating cost of the dependency.  Use compatible interface to
29853         interact with the target.
29854         (priority): Update to use new scheduler dependencies lists.
29855         (rank_for_schedule): Ditto.  Optimize heuristic that prefers the insn
29856         with greater number of insns that depend on the insn.
29857         (schedule_insn): Update to use new scheduler dependencies lists.  Add
29858         code to free backward dependencies lists.  Inline and optimize code
29859         from resolve_dep () - see PR28071.
29860         (ok_for_early_queue_removal): Update to use new scheduler dependencies
29861         lists.  Update call to targetm.sched.is_costly_dependence hook.
29862
29863         (fix_inter_tick, try_ready, fix_tick_ready): Update to use new
29864         scheduler dependencies lists.
29865
29866         (resolve_dep): Remove.  Move the logic to schedule_insn ().
29867         (init_h_i_d): Initialize dependencies lists.
29868
29869         (process_insn_depend_be_in_spec): Rename to
29870         process_insn_forw_deps_be_in_spec.  Update to use new scheduler
29871         dependencies lists.
29872         (add_to_speculative_block, create_check_block_twin, fix_recovery_deps):
29873         Update to use new scheduler dependencies lists.
29874         (clear_priorities, calc_priorities, add_jump_dependencies): Ditto.
29875
29876         * ddg.c (create_ddg_dependence, create_ddg_dep_no_link): Update to use
29877         new scheduler dependencies lists.
29878         (build_intra_loop_deps): Ditto.
29879
29880         * target.h (struct _dep): Declare to use in
29881         gcc_target.sched.is_costly_dependence.
29882         (struct gcc_target.sched.adjust_cost): Fix typo.
29883         (struct gcc_target.sched.is_costly_dependence): Change signature to
29884         use single dep_t parameter instead of an equivalent triad.
29885         (struct gcc_target.sched.adjust_cost_2): Remove.
29886
29887         * target-def.h (TARGET_SCHED_ADJUST_COST_2): Remove.
29888
29889         * reg-notes.def (DEP_TRUE, DEP_OUTPUT, DEP_ANTI): Update comments.
29890
29891         * doc/tm.texi (TARGET_SCHED_IS_COSTLY_DEPENDENCE): Update
29892         documentation.
29893         (TARGET_SCHED_ADJUST_COST_2): Remove documentation.
29894
29895         * doc/rtl.texi (LOG_LINKS): Remove part about instruction scheduler.
29896         (REG_DEP_TRUE): Document.
29897
29898         * config/ia64/ia64.c (ia64_adjust_cost_2): Rename to ia64_adjust_cost.
29899         Change signature to correspond to the targetm.sched.adjust_cost hook.
29900         Update use in TARGET_SCHED_ADJUST_COST_2.
29901         (TARGET_SCHED_ADJUST_COST_2): Rename to TARGET_SCHED_ADJUST_COST.
29902         (ia64_dependencies_evaluation_hook, ia64_dfa_new_cycle): Update to use
29903         new scheduler dependencies lists.
29904         (ia64_gen_check): Ditto.
29905
29906         * config/mips/mips.c (vr4130_swap_insns_p): Update to use new
29907         scheduler dependencies lists.
29908
29909         * config/rs6000/rs6000.c (rs6000_is_costly_dependence): Change
29910         signature to correspond to the targetm.sched.is_costly_dependence hook.
29911         (is_costly_group): Update to use new scheduler dependencies lists.
29912
29913         * config/spu/spu.c (spu_sched_adjust_cost): Use insn_cost () function
29914         instead of INSN_COST () macro.
29915
29916 2007-02-01  Ian Lance Taylor  <iant@google.com>
29917
29918         * lower-subreg.c (resolve_clobber): Handle a subreg of a concatn.
29919
29920 2007-02-01  Guy Martin  <gmsoft@gentoo.org>
29921
29922         * pa.md (tp_load): Correct mfctl instruction syntax.
29923
29924 2007-02-01  Geoffrey Keating  <geoffk@apple.com>
29925
29926         * config/rs6000/rs6000.c (rs6000_stack_info): Correct
29927         altivec_padding_size calculation on AIX.  Improve comment, add
29928         assert to verify that it's right.
29929
29930         * config/rs6000/darwin.h (MD_UNWIND_SUPPORT): Don't define for
29931         64-bit.
29932
29933 2007-2-01  Seongbae Park  <seongbae.park@gmail.com>
29934
29935         PR inline-asm/28686
29936         * global.c (global_alloc): Add mising initialization of
29937         ELIMINABLE_REGSET.
29938
29939 2007-02-01  Roger Sayle  <roger@eyesopen.com>
29940
29941         * alias.c (init_alias_analysis): Correct whitespace.
29942         * bb-reorder.c (fix_edges_for_rarely_executed_code,
29943         partition_hot_cold_basic_blocks): Likewise.
29944         * builtins.c (expand_builtin_printf, expand_builtin_fprintf,
29945         expand_builtin_sprintf, fold_builtin_carg, fold_builtin_sprintf,
29946         maybe_emit_sprintf_chk_warning, fold_builtin_sprintf_chk,
29947         fold_builtin_snprintf_chk, fold_builtin_printf,
29948         fold_builtin_fprintf, do_mpfr_ckconv, do_mpfr_arg1, do_mpfr_arg2,
29949         do_mpfr_arg3, do_mpfr_sincos): Likewise.
29950         * cfgcleanup.c (cleanup_cfg): Likewise.
29951         * cfgexpand.c (tree_expand_cfg): Likewise.
29952         * fold-const.c (fold_binary) <RDIV_EXPR>: Likewise.
29953         * function.c (get_next_funcdef_no): Likewise.
29954         * gengtype.c (main): Likewise.
29955         * genmodes.c (main): Likewise.
29956         * gcse.c (bypass_conditional_jumps, print_ldst_list): Likewise.
29957         * haifa-sched.c (schedule_block, extend_h_i_d): Likewise.
29958         * ifcvt.c (noce_emit_move_insn): Likewise.
29959         * modulo-sched.c (generate_prolog_epilog, sms_schedule_by_order):
29960         Likewise.
29961         * stor-layout.c (get_best_mode): Likewise.
29962         * tree-ssa-loop-niter.c (get_val_for): Likewise.
29963         * tree-ssa-structalias.c (get_varinfo, get_varinfo_fc,
29964         scc_visit, do_ds_constraint, do_complex_constraint, label_visit,
29965         perform_var_substitution, solve_graph): Likewise.
29966         * tree-vrp.c (vrp_finalize): Likewise.
29967
29968 2007-02-01  Ian Lance Taylor  <iant@google.com>
29969
29970         * lower-subreg.c (simplify_gen_subreg_concatn): If we ask for the
29971         high part of a paradoxical subreg, return a constant zero.
29972
29973 2007-02-01  Zdenek Dvorak <dvorakz@suse.cz>
29974
29975         * toplev.c (lang_dependent_init): Call init_set_costs.
29976         * loop-init.c (loop_optimizer_init): Do not call init_set_costs.
29977
29978 2007-02-01  Richard Guenther  <rguenther@suse.de>
29979
29980         PR middle-end/30656
29981         * fold-const.c (fold_negate_expr): Allow negating a
29982         constant if overflow does not change.
29983
29984 2007-02-01  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
29985
29986         * doc/c-tree.texi (Expression trees): Improve markup.
29987         * doc/tm.texi (Register Classes, Addressing Modes)
29988         (Floating Point): Fix spacing after abbreviations.  Fix some
29989         typos.
29990
29991 2007-02-01  Ben Elliston  <bje@au.ibm.com>
29992
29993         * doc/invoke.texi: Replace "bugfix" with "bug fix" throughout.
29994         * doc/contrib.texi: Likewise.
29995         * doc/install.texi: Likewise.
29996
29997 2007-01-31  Richard Henderson  <rth@redhat.com>
29998             Ian Lance Taylor  <iant@google.com>
29999
30000         * lower-subreg.c: New file.
30001         * rtl.def (CONCATN): Define.
30002         * passes.c (init_optimization_passes): Add pass_lower_subreg and
30003         pass_lower_subreg2.
30004         * emit-rtl.c (update_reg_offset): New static function, broken out
30005         of gen_rtx_REG_offset.
30006         (gen_rtx_REG_offset): Call update_reg_offset.
30007         (gen_reg_rtx_offset): New function.
30008         * regclass.c: Revert patch of 2006-03-05, restoring
30009         reg_scan_update.
30010         (clear_reg_info_regno): New function.
30011         * dwarf2out.c (concatn_loc_descriptor): New static function.
30012         (loc_descriptor): Handle CONCATN.
30013         * common.opt (fsplit_wide_types): New option.
30014         * opts.c (decode_options): Set flag_split_wide_types when
30015         optimizing.
30016         * timevar.def (TV_LOWER_SUBREG): Define.
30017         * rtl.h (gen_reg_rtx_offset): Declare.
30018         (reg_scan_update): Declare.
30019         * regs.h (clear_reg_info_regno): Declare.
30020         * tree-pass.h (pass_lower_subreg): Declare.
30021         (pass_lower_subreg2): Declare.
30022         * doc/invoke.texi (Option Summary): List -fno-split-wide-types.
30023         (Optimize Options): Add -fsplit-wide-types to -O1 list.  Document
30024         -fsplit-wide-types.
30025         * doc/rtl.texi (Regs and Memory): Document concat and concatn.
30026         * Makefile.in (OBJS-common): Add lower-subreg.o.
30027         (lower-subreg.o): New target.
30028
30029 2007-01-31  Kazu Hirata  <kazu@codesourcery.com>
30030
30031         * config/sh/sh.h (HAVE_SECONDARY_RELOADS): Remove.
30032
30033 2007-01-31  Anatoly Sokolov <aesok@post.ru>
30034
30035         PR target/19087
30036         * config/avr/avr.c (DWARF2_ADDR_SIZE): Define.
30037
30038 2007-01-31  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
30039
30040         PR middle-end/29335
30041         * builtins.c (fold_builtin_sqrt): Use MPFR for constant args.
30042
30043 2007-01-31  Zdenek Dvorak <dvorakz@suse.cz>
30044
30045         * cfgloop.h: Include vec-prim.h.
30046         (enum li_flags): Remove LI_ONLY_OLD.
30047         (loop_iterator): Changed.
30048         (fel_next, fel_init): Iterate over loop tree.
30049         (FOR_EACH_LOOP_BREAK): New macro.
30050         * loop-unswitch.c (unswitch_loops): Do not pass LI_ONLY_OLD to
30051         FOR_EACH_LOOP.
30052         * tree-ssa-loop-unswitch.c (tree_ssa_unswitch_loops): Ditto.
30053         * modulo-sched.c (sms_schedule): Ditto.
30054         * tree-vectorizer.c (vectorize_loops): Ditto.
30055         * doc/loop.texi: Update information on loop numbering and behavior of
30056         FOR_EACH_LOOP wrto new loops.
30057         * tree-scalar-evolution.c (compute_overall_effect_of_inner_loop,
30058         add_to_evolution_1): Test nestedness of loops instead of comparing
30059         their numbers.
30060         * tree-chrec.c (chrec_fold_plus_poly_poly,
30061         chrec_fold_multiply_poly_poly, chrec_evaluate,
30062         hide_evolution_in_other_loops_than_loop, chrec_component_in_loop_num,
30063         reset_evolution_in_loop): Ditto.
30064         * Makefile.in (CFGLOOP_H): Add vecprim.h dependency.
30065
30066 2007-01-31  Dirk Mueller  <dmueller@suse.de>
30067
30068         * c-common.c (warn_about_parentheses): Separate warning about
30069         un-parenthized sequence of comparison operators from the one
30070         which is supposed to warn about x <= y <= z.
30071
30072 2007-01-31  Uros Bizjak  <ubizjak@gmail.com>
30073
30074         * optabs.h (enum optab_index): Add new OTI_isinf.
30075         (isinf_optab): Define corresponding macro.
30076         * optabs.c (init_optabs): Initialize isinf_optab.
30077         * genopinit.c (optabs): Implement isinf_optab using isinf?f2
30078         patterns.
30079         * builtins.c (mathfn_built_in): Handle BUILT_IN_ISINF{,F,L}.
30080         (expand_builtin_interclass_mathfn): Expand BUILT_IN_ISINF{,F,L}
30081         using isinf_optab.
30082         (expand_builtin): Expand BUILT_IN_ISINF{,F,L} using
30083         expand_builtin_interclass_mathfn.
30084         * reg_stack.c (subst_stack_regs_pat): Handle UNSPEC_FXAM.
30085         * config/i386/i386.md (UNSPEC_FXAM): New constant.
30086         (fxam<mode>2_i387): New insn pattern.
30087         (isinf<mode>2) New expander to implement isinf, isinff and isinfl
30088         built-in functions as x87 inline asm.
30089
30090 2007-01-31  Kazu Hirata  <kazu@codesourcery.com>
30091
30092         * config/arm/unwind-arm.h (_sleb128_t, _uleb128_t): New.
30093
30094 2007-01-30  Eric Christopher  <echristo@apple.com>
30095
30096         * config.gcc: Add geode.
30097
30098 2007-01-31  Kazu Hirata  <kazu@codesourcery.com>
30099
30100         * cgraphunit.c, config/arm/arm.c, config/m68k/m68k.c,
30101         ipa-inline.c, tree-profile.c, tree-ssa-live.c,
30102         tree-ssa-math-opts.c, tree-ssanames.c, tree-vect-analyze.c,
30103         value-prof.c: Fix comment typos.
30104
30105 2007-01-30  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
30106
30107         PR c++/24745
30108         * doc/invoke.texi (Wpointer-arith): Document warning.
30109
30110 2007-01-30  Janis Johnson  <janis187@us.ibm.com>
30111
30112         * doc/extend.texi (Decimal Floating Types): Remove decfloat.h from
30113         the list of discrepancies from the draft TR.
30114
30115 2007-01-30  Dirk Mueller  <dmueller@suse.de>
30116
30117         PR c++/30601
30118         * doc/invoke.texi (-Wreturn-type): Update description to
30119         match new behavior.
30120
30121 2007-01-30  Richard Sandiford  <richard@codesourcery.com>
30122
30123         * cfgrtl.c (try_redirect_by_replacing_jump): Check only_sets_cc0_p.
30124
30125 2007-01-30  Uros Bizjak  <ubizjak@gmail.com>
30126
30127         * builtins.c (expand_builtin_int_interclass_roundingfn): New function
30128         to handle optabs that operate on floating point input argument and
30129         output to integer output.
30130         (expand_builtin_mathfn) [BUILT_IN_ILOGB]: Move from here ...
30131         (expand_builtin_interclass_mathfn) [BUILT_IN_ILOGB]: ... to here.
30132         (expand_builtin): Expand BUILT_IN_ILOGB{,F,L} using
30133         expand_builtin_interclass_mathfn ().
30134         * config/i386/i386.md (fxtractxf3_i387): Rename from *fxtractxf3_i387.
30135         (ilogbsi2): Remove.
30136         (ilogbxf2, ilogb<mode>2): New expanders to implement ilogb, ilogbf and
30137         ilogbl built-in functions as x87 intrinsics.
30138
30139 2007-01-30  Richard Guenther  <rguenther@suse.de>
30140
30141         PR middle-end/27657
30142         * dwarf2out.c (reference_to_unused): Query varpool if the
30143         variable was output.
30144
30145 2007-01-30  Richard Guenther  <rguenther@suse.de>
30146
30147         PR middle-end/30313
30148         * passes.c (execute_one_pass): Reset in_gimple_form to not
30149         confuse non-unit-at-a-time mode.
30150
30151 2007-01-29  Roger Sayle  <roger@eyesopen.com>
30152             Richard Guenther  <rguenther@suse.de>
30153
30154         * fold-const.c (round_up): Make HIGH an unsigned HOST_WIDE_INT to
30155         avoid undefined behaviour on overflow.  Use force_fit_type_double
30156         to construct the constant with the specified TREE_OVERFLOW.
30157
30158 2007-01-29  Janis Johnson  <janis187@us.ibm.com>
30159
30160         * config/dfp-bit.c: Add parameterized support for fp exceptions.
30161         * config/dfp-bit.h: Ditto.
30162
30163 2007-01-29  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
30164
30165         * c-decl.c (pop_scope): Replace warnings with call to
30166         warn_for_unused_label.
30167         * c-common.h (warn_for_unused_label): Declare.
30168         * c-common.c (warn_for_unused_label): Define.
30169
30170 2007-01-29  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
30171
30172         * tree-optimize.c (update_inlined_to_pointers): Delete unused
30173         function.
30174
30175 2007-01-29  Janis Johnson  <janis187@us.ibm.com>
30176
30177         * Makefile.in (USER_H): Remove decfloat.h.
30178         * ginclude/decfloat.h: Delete, moving contents to ...
30179         * ginclude/float.h: Add support for decimal floating point,
30180         guarded by __STDC_WANT_DEC_FP__.
30181
30182 2007-01-29  Mike Stump  <mrs@apple.com>
30183
30184         * doc/gccint.texi (Top): Rename Loop Representation to Loop
30185         Analysis and Representation to resolve case insensitive conflict.
30186         * doc/loop.texi (Loop Analysis and Representation): Likewise.
30187
30188 2007-01-28  Daniel Berlin  <dberlin@dberlin.org>
30189
30190         * tree.h (struct tree_memory_tag): Add aliases member.
30191         (MTAG_ALIASES): New macro.
30192         * tree-ssa-alias.c (alias_bitmap_obstack): New variable.
30193         (add_may_alias): Remove pointer-set. Update for may_aliases being
30194         a bitmap.
30195         (mark_aliases_call_clobbered): Update for may_aliases being a
30196         bitmap.
30197         (compute_tag_properties): Ditto.
30198         (create_partition_for): Ditto.
30199         (compute_memory_partitions): Ditto.
30200         (dump_may_aliases_for): Ditto.
30201         (is_aliased_with): Ditto.
30202         (add_may_alias_for_new_tag): Ditto.
30203         (rewrite_alias_set_for): Rewrite for may_aliases being a bitmap.
30204         (compute_is_aliased): New function.
30205         (compute_may_aliases): Call compute_is_aliased).
30206         (init_alias_info): Initialize alias_bitmap_obstack.
30207         (union_alias_set_into): New function.
30208         (compute_flow_sensitive_aliasing): Use union_aliases_into.
30209         (have_common_aliases_p): Rewrite to take two bitmaps and use
30210         intersection.
30211         (compute_flow_insensitive_aliasing): Stop using pointer-sets.
30212         Update for bitmaps.
30213         (finalize_ref_all_pointers): Update for add_may_alias changes.
30214         (new_type_alias): Ditto.
30215         * tree-flow-inline.h (may_aliases): Return a bitmap.
30216         * tree-dfa.c (dump_variable): Check for MTAG_P'ness.
30217         * tree-ssa.c (verify_flow_insensitive_alias_info): Update for
30218         may_aliases being a bitmap.
30219         * tree-flow.h (struct var_ann_d): Remove may_aliases member.
30220         may_aliases now returns a bitmap.
30221         * tree-ssa-structalias.c (merge_smts_into): Update for may_aliases
30222         being a bitmap.
30223         * tree-ssa-operands.c (add_virtual_operand): Update for
30224         may_aliases being a bitmap.
30225
30226 2007-01-29  Daniel Berlin  <dberlin@dberlin.org>
30227
30228         PR tree-optimization/30630
30229         * tree-ssa-structalias.c (do_complex_constraint): Mark correct
30230         variable as changed.
30231
30232 2007-01-29  Simon Martin  <simartin@users.sourceforge.net>
30233
30234         PR c++/28266
30235         * gimplify.c (gimplify_target_expr): Make sure that the TARGET_EXPR is
30236         expanded only once even if an error occurs.
30237
30238 2007-01-29  Ben Elliston  <bje@au.ibm.com>
30239
30240         * gcov-io.h (__gcov_indirect_call_profiler): Declare.
30241         (__gcov_average_profiler): Likewise.
30242         (__gcov_ior_profiler): Likewise.
30243         (__gcov_merge_ior): Likewise.
30244
30245 2007-01-28  Jan Hubicka  <jh@suse.cz>
30246
30247         * builtins.c (expand_builtin_memset): Fix typo in my last patch.
30248         * value-prof.c (stringop_block_profile): Likewise.
30249
30250 2007-01-28  Jan Hubicka  <jh@suse.cz>
30251
30252         * expr.c (emit_block_move_via_movmem, emit_block_move_via_libcall):
30253         Add variant handling histograms; add wrapper.
30254         (clear_storage_via_libcall): Export.
30255         (emit_block_move_hints): Break out from ...; add histograms.
30256         (emit_block_move): ... this one.
30257         (clear_storage_hints): Break out from ...; add histograms.
30258         (clear_storage): ... this one.
30259         (set_storage_via_memset): Handle histogram.
30260         * expr.h (emit_block_move_via_libcall, emit_block_move_hints): Declare.
30261         (clear_storage_hints, clear_storage_via_libcall): Declare.
30262         (set_storage_via_setmem): Update prototype.
30263         * doc/md.texi (movmem, setmem): Document new arguments.
30264
30265         * value-prof.c (dump_histogram_value, tree_find_values_to_profile):
30266         Add new histograms.
30267         (stringop_block_profile): New global function.
30268         (tree_stringops_values_to_profile): Profile block size and alignment.
30269         * value-prof.h (enum hist_type): add HIST_TYPE_AVERAGE and
30270         HIST_TYPE_IOR.
30271         (struct profile_hooks): Add gen_average_profiler and gen_ior_profiler.
30272         (stringop_block_profile): Declare.
30273         * builtins.c: Include value-prof.h.
30274         (expand_builtin_memcpy, expand_builtin_memset): Pass block profile.
30275         * gcov-ui.h (GCOV_COUNTER_NAMES): Add new counter.
30276         (GCOV_COUNTER_AVERAGE, GCOV_COUNTER_IOR): New constants.
30277         (GCOV_COUNTERS, GCOV_LAST_VALUE_COUNTER): Update.
30278         * profile.c (instrument_values): Add new counters.
30279         * cfgexpand.c (expand_gimple_basic_block): Propagate histograms to
30280         calls.
30281         * tree-profile.c (tree_average_profiler_fn, tree_ior_profiler_fn): New.
30282         (tree_init_edge_profiler): Build new profilers.
30283         (tree_gen_average_profiler, tree_gen_ior_profiler): New.
30284         (pass_tree_profile): Add dump.
30285         (tree_profile_hooks): Update.
30286         * Makefile.in (LIBGCOV): Add new constants.
30287         * libgcov.c (__gcov_merge_ior, __gcov_average_profiler,
30288         __gcov_ior_profiler): New.
30289         * i386.md (movmem/setmem expanders): Add new optional arguments.
30290
30291 2007-01-28  David Edelsohn  <edelsohn@gnu.org>
30292
30293         * doc/md.texi (Standard Pattern Names): Document blockage pattern.
30294
30295 2007-01-28  Zdenek Dvorak <dvorakz@suse.cz>
30296
30297         * tree-ssa-loop-unswitch.c: Include tree-inline.h.
30298         (tree_unswitch_single_loop): Pass eni_size_weights to
30299         tree_num_loop_insns.
30300         * tree-ssa-loop-manip.c: Include tree-inline.h.
30301         (can_unroll_loop_p): Pass eni_size_weights to
30302         tree_num_loop_insns.
30303         * tree-ssa-loop-ch.c (should_duplicate_loop_header_p):
30304         Pass eni_size_weights to estimate_num_insns.
30305         * tree.h (init_inline_once): Export.
30306         * toplev.c (backend_init): Call init_inline_once.
30307         * cgraphunit.c (cgraph_process_new_functions,
30308         cgraph_analyze_function): Pass eni_inlining_weights to
30309         estimate_num_insns.
30310         * ipa-inline.c (compute_inline_parameters): Ditto.
30311         * tree-ssa-loop-ivcanon.c (tree_num_loop_insns): Pass weights
30312         to estimate_num_insns.
30313         (try_unroll_loop_completely): Pass eni_size_weights to
30314         tree_num_loop_insns.
30315         * tree-eh.c (decide_copy_try_finally): Pass eni_size_weights
30316         ot estimate_num_insns.
30317         * tree-ssa-loop-prefetch.c: Include tree-inline.h.
30318         (loop_prefetch_arrays): Pass eni_time_weights to tree_num_loop_insns.
30319         * tree-inline.c (eni_inlining_weights, eni_size_weights,
30320         eni_time_weights): New variables.
30321         (init_inline_once): Initialize them.
30322         (struct eni_data): Mew.
30323         (estimate_num_insns_1, estimate_num_insns): Use weights.
30324         * tree-inline.h (struct eni_weights_d): New.
30325         (eni_inlining_weights, eni_size_weights, eni_time_weights): Declare.
30326         (estimate_num_insns): Declaration changed.
30327         * cfgloop.h (tree_num_loop_insns): Declaration changed.
30328         * Makefile.in (tree-ssa-loop-unswitch.o, tree-ssa-loop-prefetch.o,
30329         tree-ssa-loop-manip.o): Add TREE_INLINE_H dependency.
30330
30331 2007-01-28  Zdenek Dvorak <dvorakz@suse.cz>
30332
30333         * tree-data-ref.c (conflict_fn): Assert that the number of affine
30334         relations in the conflict function is valid.
30335
30336 2007-01-27  Ian Lance Taylor  <iant@google.com>
30337
30338         * common.opt: Add fstrict-overflow.
30339         * opts.c (decode_options): Set flag_strict_overflow if -O2.
30340         * flags.h (TYPE_OVERFLOW_WRAPS): Define.
30341         (TYPE_OVERFLOW_UNDEFINED): Define.
30342         (TYPE_OVERFLOW_TRAPS): Define.  This replaces TYPE_TRAP_SIGNED.
30343         Replace all uses.
30344         * tree.h (TYPE_TRAP_SIGNED): Don't define.
30345         * fold-const.c (negate_expr_p): Use TYPE_OVERFLOW_UNDEFINED.
30346         (fold_negate_expr): Likewise.
30347         (make_range): Likewise.
30348         (extract_muldiv_1): Likewise.
30349         (maybe_canonicalize_comparison): Likewise.
30350         (fold_comparison): Likewise.
30351         (fold_binary): Likewise.
30352         (tree_expr_nonnegative_p): Likewise.
30353         (tree_expr_nonzero_p): Likewise.
30354         * tree-vrp.c (compare_values): Likewise.
30355         (extract_range_from_binary_expr): Likewise.
30356         (extract_range_from_unary_expr): Likewise.
30357         * tree-ssa-loop-niter.c (infer_loop_bounds_from_signedness):
30358         Likewise.
30359         (nowrap_type_p): Likewise.
30360         * tree-scalar-evolution.c (simple_iv): Likewise.
30361         * fold-const.c (negate_expr_p): Use TYPE_OVERFLOW_WRAPS.
30362         (build_range_check): Likewise.
30363         (extract_muldiv_1): Likewise.
30364         (fold_comparison): Likewise.
30365         * tree-vrp.c (vrp_int_const_binop): Likewise.
30366         (extract_range_from_unary_expr): Likewise.
30367         * convert.c (convert_to_integer): Likewise.
30368         * fold-const.c (fold_negate_expr): Use TYPE_OVERFLOW_TRAPS.
30369         (fold_comparison): Likewise.
30370         (fold_binary): Likewise.
30371         * optabs.c (optab_for_tree_code): Likewise.
30372         * tree-vectorizer.c (vect_is_simple_reduction): Likewise.
30373         * simplify-rtx.c (simplify_const_relational_operation): Check
30374         flag_strict_overflow and flag_trapv.
30375         (simplify_const_relational_operation): Likewise.
30376         * doc/invoke.texi (Option Summary): Mention -fstrict-overflow.
30377         (Optimize Options): Add -fstrict-overflow to -O2 list.  Document
30378         -fstrict-overflow.
30379
30380 2007-01-27  Roger Sayle  <roger@eyesopen.com>
30381
30382         * tree.c (tree_fold_gcd): Delete.
30383         * tree.h (tree_fold_gcd): Remove prototype.
30384         * tree-data-ref.c (tree_fold_divides_p): Don't use tree_fold_gcd to
30385         test whether one constant integer is a multiple of another.  Instead
30386         call int_const_binop with TRUNC_MOD_EXPR and test for a zero result.
30387         * fold-const.c (multiple_of_p): We've determined both TOP and
30388         BOTTOM are integer constants so we can call int_const_binop directly
30389         instead of the more generic const_binop.
30390
30391 2007-01-27  Roger Sayle  <roger@eyesopen.com>
30392
30393         * fold-const.c (size_binop): In the fast-paths for X+0, 0+X, X-0 and
30394         1*X check that the constant hasn't overflowed, to preserve the
30395         TREE_OVERFLOW bit.
30396         (round_up): Provide an efficient implementation when rouding-up an
30397         INTEGER_CST to a power-of-two.
30398
30399 2007-01-28  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
30400
30401         * doc/sourcebuild.texi: Add comma for clarity.
30402         * doc/extend.texi: Fix some typos.
30403         * doc/passes.texi: Likewise.
30404         * doc/cppinternals.texi: Likewise.
30405         * doc/c-tree.texi: Likewise.
30406         * doc/tree-ssa.texi: Likewise.
30407         * doc/install.texi: Likewise.
30408
30409 2007-01-27  Jan Hubicka  <jh@suse.cz>
30410
30411         * tree-sra.c (sra_walk_function): Don't rely on aliases being build.
30412         (pass_sra): Do not require alias information.
30413         * passes.c (init_optimization_passes): Add SRA
30414
30415 2007-01-27  Steven Bosscher  <steven@gcc.gnu.org>
30416
30417         * tracer.c (rest_of_handle_tracer): We already cleaned
30418         up the CFG in tracer() so don't do it here again.
30419         * cfgcleanup.c (rest_of_handle_jump2): Don't repeat
30420         cleanup_cfg here, either.  And don't call renumber_insns.
30421
30422         * cfgrtl.c (rtl_verify_flow_info_1): Don't verify that BB_END
30423         and BB_HEAD are in the insn stream here.  Instead make sure
30424         that BB_INSN is valid on all insns.  Also, do check here that
30425         there are no pending branch predictions...
30426         (rtl_verify_flow_info): ...instead of doing it here.  Checks
30427         for BB_END and BB_HEAD moved from rtl_verify_flow_info_1 to
30428         here.
30429
30430 2007-01-26  Roger Sayle  <roger@eyesopen.com>
30431
30432         * config/i386/i386.c (ix86_swap_binary_operands_p): New helper
30433         function to simplify/factorize operand order canonicalization.
30434         (ix86_fixup_binary_operands): Reorganize using the above function.
30435         (ix86_binary_operator_ok): Likewise.
30436
30437 2007-01-27  Jakub Jelinek  <jakub@redhat.com>
30438
30439         * genattrtab.c (struct attr_value_list, insn_code_values): Move to
30440         file scope from optimize_attrs.
30441         (simplify_test_exp): If insn_code_values is not NULL, use it to speed
30442         up search.
30443         (optimize_attrs): Clear insn_code_values after freeing it.
30444
30445 2007-01-26  Zdenek Dvorak <dvorakz@suse.cz>
30446
30447         * tree-ssa-address.c (create_mem_ref): Remove ", bsi" from
30448         a parts.base assignment.
30449
30450 2007-01-26  Zdenek Dvorak <dvorakz@suse.cz>
30451
30452         * tree-data-ref.c (dump_subscript): Use dump_conflict_function.
30453         (compute_subscript_distance, initialize_data_dependence_relation,
30454         finalize_ddr_dependent, analyze_ziv_subscript,
30455         analyze_siv_subscript_cst_affine,
30456         compute_overlap_steps_for_affine_univar,
30457         compute_overlap_steps_for_affine_1_2, analyze_subscript_affine_affine,
30458         analyze_siv_subscript, analyze_miv_subscript,
30459         analyze_overlapping_iterations, subscript_dependence_tester_1,
30460         compute_self_dependence, free_dependence_relation): Work
30461         with affine_fn instead of chrecs.
30462         (dump_affine_function, dump_conflict_function, affine_function_equal_p,
30463         common_affine_function, affine_function_base,
30464         affine_function_constant_p, affine_fn_op, affine_fn_plus,
30465         affine_fn_minus, affine_fn_free, conflict_fn_not_known,
30466         conflict_fn_no_dependence, free_conflict_function, free_subscripts,
30467         conflict_fn, affine_fn_cst, affine_fn_univar): New functions.
30468         (all_chrecs_equal_p): Removed.
30469         * tree-data-ref.h (affine_fn, conflict_function): New types.
30470         (struct subscript): Change type of conflicting_iterations_in_a
30471         and conflicting_iterations_in_b.
30472
30473 2007-01-26  Steve Ellcey  <sje@cup.hp.com>
30474
30475         PR other/30182
30476         * config/pa/pa.h (TARGET_HPUX_11): New.
30477         * config/pa/pa-hpux11.h (TARGET_HPUX_11): New.
30478         * config/pa/pa.c (pa_init_builtins): Use TARGET_HPUX_11.
30479
30480 2007-01-26  Daniel Berlin  <dberlin@dberlin.org>
30481         Richard Guenther  <rguenther@suse.de>
30482
30483         * tree-ssa-structalias.c (solve_graph): Handle case
30484         we merged the variable to another.
30485
30486 2007-01-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
30487
30488         * builtins.c (fold_builtin_1): Treat ccos and ccosh as 'even'
30489         functions.
30490
30491         * fold-const.c (negate_mathfn_p): Treat casin, casinh, catan,
30492         catanh, cproj, csin, csinh, ctan and ctanh as 'odd' functions.
30493
30494 2007-01-25  DJ Delorie  <dj@redhat.com>
30495
30496         * config/m32c/m32c.c (m32c_cannot_change_mode_class): We don't
30497         allow changes to modes which don't fit in those registers.
30498
30499         * reload1.c (choose_reload_regs): Check for invalid subregs before
30500         computing their locations, not after.
30501
30502 2007-01-25  Geoffrey Keating  <geoffk@apple.com>
30503
30504         PR 25127
30505         * config/rs6000/rs6000.c (first_altivec_reg_to_save): On Darwin,
30506         save Altivec registers in an eh_return function.
30507         (compute_vrsave_mask): Likewise.
30508         (rs6000_stack_info): Correct AIX/Darwin stack alignment computation
30509         for saving Altivec registers.
30510         (rs6000_emit_prologue): Don't allocate stack twice in
30511         eh_return function.  Correct expected value of altivec_save_offset
30512         when using save_world.  Describe save of R0 to stack when using
30513         save_world.  Describe stack pointer adjustment when using
30514         save_world.  Remove duplicated eh_return parameter register saving.
30515         Update sp_offset variable after save_world.
30516         * config/rs6000/t-darwin (LIB2FUNCS_STATIC_EXTRA): Remove
30517         darwin-world.asm.
30518         (LIB2FUNCS_EXTRA): Add darwin-world.asm.
30519         * config/rs6000/darwin.h (SUBTARGET_OVERRIDE_OPTIONS): -m64
30520         implies Altivec.
30521
30522 2007-01-25  Steve Ellcey  <sje@cup.hp.com>
30523
30524         * config.gcc (ia64*-*-hpux*): Make posix threads the default.
30525
30526 2007-01-25  Steve Ellcey  <sje@cup.hp.com>
30527
30528         PR other/30182
30529         * config/pa/pa.c (pa_init_builtins): Set asm names for finite routines.
30530         * config/ia64/ia64.c (ia64_init_builtins): Ditto.
30531
30532 2007-01-25  Richard Guenther  <rguenther@suse.de>
30533
30534         * doc/invoke.texi (-Wcoverage-mismatch): Document.
30535         * common.opt (-Wcoverage-mismatch): New warning option.
30536         * coverage.c (get_coverage_counts): Ignore coverage mismatch
30537         if -Wcoverage-mismatch is given.
30538
30539 2007-01-25  Razya Ladelsky  <razya@il.ibm.com>
30540
30541         * ipa-cp.c (ipcp_insert_stage, ipcp_driver): Support for SSA.
30542         (ipcp_driver): Change to static definition.
30543         Add dumping of the ifunctions.
30544         (constant_val_insert): Remove unused parameter. Support for SSA.
30545         (ipcp_propagate_const): Support for SSA.
30546         (ipcp_profile_bb_print): Print only analyzed nodes.
30547         (ipcp_replace_map_create): Remove support for Fortran constant
30548         for now.
30549         * ipa-prop.c (ipa_method_modify_stmt,
30550         ipa_callsite_compute_param): Support for SSA.
30551         * ipa-prop.h (ipcp_driver): Remove declaration.
30552         (IS_VALID_TREE_MAP_INDEX): Add define.
30553
30554 2007-01-24  Geoffrey Keating  <geoffk@apple.com>
30555
30556         * unwind-dw2.c (execute_stack_op): Handle DW_OP_swap.
30557
30558 2007-01-24  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
30559
30560         PR middle-end/30447
30561         * builtins.c (fold_builtin_cabs): Use MPFR to evaluate a
30562         constant argument to cabs and do it without checking for
30563         -funsafe-math-optimizations.
30564
30565 2007-01-24  Douglas Gregor  <dgregor@osl.iu.edu>
30566
30567         * c-common.h (RID_FIRST_CXX0X): New.
30568         (RID_LAST_CXX0X): New.
30569         * c-opts.c (c_common_handle_option): -Wc++0x-compat is triggered
30570         by -Wall.
30571         * c.opt (Wc++0x-compat): New.
30572         * doc/invoke.texi (-Wc++0x-compat): Document.
30573
30574 2007-01-24  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
30575
30576         * builtins.c (fold_builtin_carg): New.
30577         (fold_builtin_1): Use it.
30578
30579 2007-01-24  Jan Hubicka  <jh@suse.cz>
30580
30581         * ipa-inline.c (cgraph_decide_inlining): Initialize initial_insns.
30582
30583         * ipa-inline.c (initial_insns, max_insns): Delete.
30584         (compute_max_insns): New function.
30585         (cgraph_decide_inlining_of_small_function): Use it; take minimal
30586         amount of insns as base for code growth.
30587         (cgraph_decide_inlining): Make initial_insns local; do not compute
30588         max_insns.
30589         * params.def (PARAM_INLINE_UNIT_GROWTH): Set to 60.
30590         * doc/invoke.texi (inline-unit-growth): Update docs.
30591
30592 2007-01-24  Jakub Jelinek  <jakub@redhat.com>
30593
30594         * config/i386/i386.h (x86_cmpxchg16b): Remove const.
30595         (TARGET_CMPXCHG16B): Define to x86_cmpxchg16b.
30596         * config/i386/i386.c (x86_cmpxchg16b): Remove const.
30597         (override_options): Add PTA_CX16 flag.  Set x86_cmpxchg16b
30598         for CPUs that have PTA_CX16 set.
30599
30600         PR middle-end/27416
30601         * gimplify.c (omp_check_private): New function.
30602         (gimplify_scan_omp_clauses): Use it for
30603         firstprivate/lastprivate/reduction.
30604
30605         PR middle-end/30494
30606         * gimplify.c (omp_add_variable): Don't call omp_notice_variable
30607         on TYPE_SIZE_UNIT for GOVD_LOCAL VLAs.
30608
30609         PR middle-end/30421
30610         * omp-low.c (lower_omp_for_lastprivate): Add dlist argument.
30611         If lower_lastprivate_clauses emits some statements, append them
30612         to dlist rather than body_p and to body_p append an initializer.
30613         (lower_omp_for): Adjust caller.
30614
30615 2007-01-24  Steve Ellcey  <sje@cup.hp.com>
30616
30617         * target.h (globalize_decl_name): New.
30618         * target-def.h (TARGET_ASM_GLOBALIZE_DECL_NAME): New.
30619         * output.h (default_globalize_decl_name): New.
30620         * varasm.c (asm_output_bss): Use globalize_decl_name instead of
30621         globalize_label.
30622         (globalize_decl): Ditto.
30623         (default_globalize_decl_name): New.
30624         * config/ia64/ia64.c (ia64_globalize_decl_name): New.
30625         (ia64_handle_version_id_attribute): New.
30626         (TARGET_ASM_GLOBALIZE_DECL_NAME): New.
30627         (ia64_asm_output_external): Use globalize_decl_name instead
30628         of globalize_label.
30629         * doc/extend.texi (version_id): New pragma.
30630         * doc/tm.texi (ARGET_ASM_GLOBALIZE_DECL_NAME): New target hook.
30631
30632 2007-01-24  Andreas Krebbel  <krebbel1@de.ibm.com>
30633
30634         * unwind-dw2-fde.c (get_cie_encoding): Replaced _Unwind_Word with
30635         _uleb128_t and _Unwind_SWord with _sleb128_t.
30636         * unwind-dw2.c (extract_cie_info, execute_stack_op,
30637         execute_cfa_program, uw_frame_state_for, uw_update_context_1):
30638         Likewise.
30639         * unwind-c.c (parse_lsda_header, PERSONALITY_FUNCTION): Likewise.
30640         * unwind-pe.h (read_uleb128, read_sleb128,
30641         read_encoded_value_with_base): Likewise.
30642         * unwind-generic.h: Define _sleb128_t and _uleb128_t types.
30643
30644 2007-01-24  Richard Guenther  <rguenther@suse.de>
30645
30646         * builtins.c (expand_builtin_cexpi): Get the fndecl
30647         for cexp in the correct way.
30648
30649 2007-01-24  Jan Hubicka  <jh@suse.cz>
30650
30651         * tree-ssa-dce.c (eliminate_unnecesary_stmts): Remove dead LHS
30652         of calls.
30653
30654 2007-01-24  Andreas Krebbel  <krebbel1@de.ibm.com>
30655
30656         * c-cppbuiltin.c (builtin_define_type_sizeof): New function.
30657         (c_cpp_builtins): New builtin macros: __SIZEOF_INT__, __SIZEOF_LONG__,
30658         __SIZEOF_LONG_LONG__, __SIZEOF_SHORT__, __SIZEOF_POINTER__,
30659         __SIZEOF_FLOAT__, __SIZEOF_DOUBLE__, __SIZEOF_LONG_DOUBLE__,
30660         __SIZEOF_SIZE_T__, __SIZEOF_WCHAR_T__, __SIZEOF_WINT_T__ and
30661         __SIZEOF_PTRDIFF_T__.
30662         * doc/cpp.texi: Documentation for the new builtin macros added.
30663
30664 2007-01-24  Uros Bizjak  <ubizjak@gmail.com>
30665
30666         * config/i386/i386.md (tanxf2, tan<mode>2, atan<mode>2, log<mode>2,
30667         log10<mode>2, log2<mode>2, expxf2, exp10xf2, exp2xf2): Use op2
30668         instead of operands[2] to avoid access past the end of array.
30669
30670 2007-01-24  Richard Sandiford  <richard@codesourcery.com>
30671
30672         * reload1.c (emit_reload_insns): Pass the reload register
30673         for a non-spill output reload through forget_old_reloads_1.
30674
30675 2007-01-23  Joseph Myers  <joseph@codesourcery.com>
30676
30677         * config/rs6000/rs6000-c.c (rs6000_cpu_cpp_builtins): Define
30678         _SOFT_DOUBLE if doubles use software floating-point.
30679         * config/rs6000/libgcc-ppc-glibc.ver: Export additional long
30680         double functions if _SOFT_DOUBLE, not _SOFT_FLOAT.
30681         * config/rs6000/darwin-ldouble.c: Also compile functions for
30682         hard-float without FPRs.  Use fmsub function for all __NO_FPRS__
30683         cases.  Compile extra functions if _SOFT_DOUBLE, not _SOFT_FLOAT.
30684         * config/rs6000/linuxspe.h (SUBSUBTARGET_OVERRIDE_OPTIONS): Remove
30685         commented-out long double override.
30686         (CPP_LONGDOUBLE_DEFAULT_SPEC): Likewise.
30687         * config/rs6000/eabispe.h: Likewise.
30688         * config/rs6000/rs6000.c (rs6000_override_options): Don't override
30689         long double for non-SPE.
30690         (rs6000_handle_option): Likewise.
30691         (invalid_e500_subreg): Disallow more subregs involding DImode,
30692         DFmode, TImode or TFmode.
30693         (rs6000_legitimate_offset_address_p): Check TFmode offsets for
30694         E500 double.
30695         (legitimate_lo_sum_address_p): Also check for TFmode for E500
30696         double.
30697         (rs6000_legitimize_address): Also handle TFmode for E500 double.
30698         (rs6000_legitimize_reload_address): Also handle TFmode for E500
30699         double.
30700         (rs6000_legitimate_address): Also check for TFmode for E500
30701         double.
30702         (rs6000_emit_move): Use DFmode subregs of TFmode for E500 double.
30703         (spe_build_register_parallel): Handle TFmode and TCmode.
30704         (rs6000_spe_function_arg): Handle TFmode and TCmode for E500
30705         double.
30706         (function_arg): Handle TFmode and TCmode for E500 double.
30707         (rs6000_init_libfuncs): Initialize extra libfuncs for soft double
30708         in general.
30709         (print_operand): Handle TFmode and TImode for %y.
30710         (rs6000_generate_compare): Handle TFmode comparisons for E500
30711         double.
30712         (spe_func_has_64bit_regs_p): Check for TFmode for E500 double.
30713         (rs6000_function_value): Handle TFmode and TCmode for E500 double.
30714         (rs6000_libcall_value): Handle TFmode and TCmode for E500 double.
30715         * config/rs6000/rs6000.h (CANNOT_CHANGE_MODE_CLASS): Check for
30716         TFmode for E500 double.
30717         * config/rs6000/rs6000.md (FP): Allow TF for E500 double.
30718         (floatsidf2): Enable for E500 double.
30719         (movtf_softfloat): Use rs6000_nonimmediate_operand.
30720         (extenddftf2): Change to extenddftf2_fprs.
30721         (extenddftf2): Call gen_spe_extenddftf2 or gen_extenddftf2_fprs
30722         depending on TARGET_E500_DOUBLE.
30723         (extendsftf2): Enable for E500 double.
30724         (trunctfdf2): Enable for E500 double.
30725         (trunctfsf2): Change to trunctfsf2_fprs.
30726         (trunctfsf2): Call gen_spe_trunctfsf2 or gen_trunctfsf2_fprs
30727         depending on TARGET_E500_DOUBLE.
30728         (floatsitf2): Enable for E500 double.
30729         (fix_trunctfsi2): Change to fix_trunctfsi2_fprs.
30730         (fix_trunctfsi2): Call gen_spe_fix_trunctfsi2 or
30731         gen_fix_trunctfsi2_fprs depending on TARGET_E500_DOUBLE.
30732         (negtf2): Change to negtf2_internal.
30733         (negtf2): New expander.
30734         (abstf2): Enable for E500 double.  Call gen_spe_abstf2_tst,
30735         gen_spe_abstf2_cmp or gen_abstf2_internal depending on
30736         TARGET_E500_DOUBLE and flag_unsafe_math_optimizations.
30737         (movdi_internal32): Use rs6000_nonimmediate_operand.
30738         (unnamed splitter): Likewise.
30739         * config/rs6000/spe.md (CMPTFEQ_GPR, TSTTFEQ_GPR, CMPTFGT_GPR,
30740         TSTTFGT_GPR, CMPTFLT_GPR, TSTTFLT_GPR): New unspecs.
30741         (SPE64TF, DITI): New mode macros.
30742         (frob_df_di): Change to frob_<SPE64:mode>_<DITI:mode>; allow more
30743         modes.
30744         (frob_tf_ti): New.
30745         (frob_<mode>_di_2): New.
30746         (frob_tf_di_8_2): New.
30747         (frob_di_df): Change to frob_di_<mode>; allow more modes.
30748         (frob_ti_tf): New.
30749         (frob_di_df_2): Change to frob_<DITI:mode>_<SPE64:mode>_2; allow
30750         more modes.
30751         (frob_ti_<mode>_8_2): New.
30752         (frob_ti_tf_2): New.
30753         (mov_si<mode>_e500_subreg0, mov_si<mode>_e500_subreg0_2,
30754         mov_si<mode>_e500_subreg4, mov_si<mode>_e500_subreg4_2): Allow
30755         TFmode.
30756         (mov_sitf_e500_subreg8, mov_sitf_e500_subreg8_2,
30757         mov_sitf_e500_subreg12, mov_sitf_e500_subreg12_2): New.
30758         (spe_trunctfdf2_internal1, spe_trunctfsf2, spe_extenddftf2,
30759         spe_fix_trunctfsi2, spe_fix_trunctfsi2_internal,
30760         spe_negtf2_internal, spe_abstf2_cmp, spe_abstf2_tst): New.
30761         (cmptfeq_gpr, tsttfeq_gpr, cmptfgt_gpr, tsttfgt_gpr, cmptflt_gpr,
30762         tsttflt_gp): New.
30763
30764 2007-01-23  Ian Lance Taylor  <iant@google.com>
30765
30766         * Makefile.in (OBJS-common): Reformat, alphabetize, but put
30767         insn-*.o first.
30768         (OBJS-archive): Reformat, alphabetize.
30769         (OBJS): Change out_object_file to OBJS-md.
30770
30771 2007-01-23  Uros Bizjak  <ubizjak@gmail.com>
30772
30773         * config/i386/i386.md: Use REG_P, MEM_P, CONST_INT_P, LABEL_P,
30774         JUMP_P and CALL_P predicates where applicable.
30775         * config/i386/i386.c: Ditto.
30776         * config/i386/i386.md: Ditto.
30777         * config/i386/mmx.md: Ditto.
30778         * config/i386/predicates.md: Ditto.
30779
30780 2007-01-22  Andreas Schwab  <schwab@suse.de>
30781
30782         * config/m68k/m68k.h: Fix comment.
30783
30784 2007-01-22  Jan Hubicka  <jh@suse.cz>
30785
30786         * passes.c (init_optimization_passes): Do not rerun
30787         pass_early_warn_uninitialized.
30788
30789 2007-01-22  Richard Guenther  <rguenther@suse.de>
30790
30791         PR tree-optimization/30038
30792         * tree-ssa-math-opts.c (maybe_record_sincos): New static helper
30793         function.
30794         (execute_cse_sincos_1): Likewise.
30795         (execute_cse_sincos): Likewise.
30796         (gate_cse_sincos): Likewise.
30797         (pass_cse_sincos): New pass CSEing sin() and cos() calls using
30798         the cexpi() canonicalization of sincos().
30799         * tree-pass.h (pass_cse_sincos): Declare.
30800         * passes.c (init_optimization_passes): New pass pas_cse_sincos.
30801
30802 2007-01-21  Eric Botcazou  <ebotcazou@libertysurf.fr>
30803
30804         PR rtl-optimization/29329
30805         * combine.c (replaced_rhs_insn): Rename to i2mod.
30806         (replaced_rhs_value): Rename to i2mod_new_rhs.
30807         (i2mod_old_rhs): New global variable.
30808         (combine_instructions): Adjust for above change.  Save a copy of
30809         the old RHS into i2mod_old_rhs when the contents of a REG_EQUAL
30810         note are substituted in the second instruction.
30811         (distribute_notes) <REG_DEAD>: Adjust for above change.  Do not
30812         ditch the note if it pertains to the second eliminated register
30813         and this register is mentioned in i2mod_old_rhs.
30814
30815         Revert:
30816         2006-09-12  Eric Botcazou  <ebotcazou@libertysurf.fr>
30817
30818         * combine.c (distribute_notes) <REG_DEAD>: Do not consider SETs past
30819         the insn to which the note was originally attached.
30820
30821 2007-01-21  Jan Hubicka  <jh@suse.cz>
30822
30823         * ipa-inline.c (inlining_mode): Comment, move up.
30824         (cgraph_decide_inlining_incrementally): Do not perform inlining
30825         itself; fix handling of flattening of self recursive functions.
30826         (cgraph_find_cycles): Remove.
30827         (cgraph_flatten_node): Remove.
30828         (cgraph_decide_inlining): Use incremental inliner to handle flattening.
30829         (try_inline): New function.
30830         (cgraph_early_inlining): Update call of
30831         cgraph_decide_inlining_incrementally.  Apply inlining here.
30832         (apply_inline): Update call of cgraph_decide_inlining_incrementally.
30833
30834 2007-01-21  Dirk Mueller  <dmueller@suse.de>
30835
30836         PR bootstrap/30511
30837         * tree-vrp.c (check_array_bounds): do not warn
30838         about ADDR_EXPR's of ARRAY_REF's which are immediately
30839         used in binary expressions.
30840
30841 2007-01-21  Ira Rosen  <irar@il.ibm.com>
30842
30843         * tree-vectorizer.h (struct _stmt_vec_info): Add new field
30844         read_write_dep and macros for its access.
30845         * tree-vectorizer.c (new_stmt_vec_info): Initialize the new field.
30846         * tree-vect-analyze.c (vect_analyze_data_ref_dependence): Remove
30847         argument, call vect_check_interleaving for every independent pair of
30848         data-refs. Mark loads that access the same memory location as a store
30849         in the loop.
30850         (vect_check_dependences): Remove.
30851         (vect_analyze_data_ref_dependences): Remove  vect_check_dependences
30852         call, fix the call to vect_analyze_data_ref_dependence.
30853         (vect_analyze_data_ref_access): For statements that access the same
30854         data-ref, check that they are not stores; for loads, check that there
30855         is no store that access the same location.
30856
30857 2007-01-20  Roger Sayle  <roger@eyesopen.com>
30858             Joseph Myers  <joseph@codesourcery.com>
30859
30860         * doc/invoke.texi (-fdump-rtl-combine): Fix under/overfull hbox.
30861         (-fdump-rtl-stack): Likewise.
30862         (-fno-signed-zeros): Use @minus{} for a minus sign.  Correct typo.
30863         (-mcheck-zero-division, -mcpu): Fix under/overfull hbox.
30864         (-mpt-fixed): Use @minus{} for minus sign.
30865         (Using Precompiled Headers): Fix under/overfull hbox.
30866
30867 2007-01-20  Jan Hubicka  <jh@suse.cz>
30868
30869         * tree-flow.h (struct stmt_ann_d): Move references_memory to proper
30870         place within annotation.
30871
30872 2007-01-20  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
30873
30874         * pa.c (output_move_double): Change array size of xoperands to 4.
30875
30876 2007-01-20  Jan Hubicka  <jh@suse.cz>
30877
30878         * tree-tailcall.c (adjust_return_value): Do not use RESULT_DECL
30879         as temporary.
30880
30881 2007-01-19  Ian Lance Taylor  <iant@google.com>
30882
30883         * expmed.c (expand_divmod) [TRUNC_MOD_EXPR, TRUNC_DIV_EXPR]: Cast
30884         constant to unsigned HOST_WIDE_INT before negating.
30885
30886 2007-01-19  Ian Lance Taylor  <iant@google.com>
30887
30888         * tree-ssa-operands.h (struct vuse_vec_d): Change num_vuse field
30889         to unsigned.
30890         (VUSE_VECT_ELEMENT) [ENABLE_CHECKING]: Use unsigned comparison.
30891         (VUSE_ELEMENT_PTR) [ENABLE_CHECKING]: Likewise.
30892         (SET_VUSE_VECT_ELEMENT) [ENABLE_CHECKING]: Likewise.
30893         (SET_VUSE_ELEMENT_VAR) [ENABLE_CHECKING]: Likewise.
30894         (SET_VUSE_ELEMENT_PTR) [ENABLE_CHECKING]: Likewise.
30895         (realloc_vdef, realloc_vuse): Change second parameter to
30896         unsigned.
30897         (ssa_operand_iterator_d): Change vuse_index and mayuse_index
30898         fields to unsigned.
30899         * tree-ssa-operands.c (realloc_vop): Change num_elem parameter to
30900         unsigned. Change x and lim locals to unsigned.
30901         (realloc_vdef, realloc_vuse): Change num_elem parameter to
30902         unsigned.
30903         (finalize_ssa_vuse_ops): Change old_i local to unsigned.
30904         (copy_virtual_operands): Change i and n locals to unsigned.
30905
30906 2007-01-19  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
30907
30908         PR middle-end/29335
30909         * builtins.c (fold_builtin_1): Handle builtin fdim.
30910
30911 2007-01-20  Jan Hubicka  <jh@suse.cz>
30912
30913         * tree-ssa.c (init_tree_ssa): Do not call init_alias_heapvars.
30914         * tree-ssa-structalias.c (compute_points_to_sets): Do call
30915         init_alias_heapvars.
30916         (init_alias_heapvars): Initialize only when not already initialized.
30917         (delete_alias_heapvars): Set heapvar_for_stmt to NULL.
30918
30919 2007-01-19  Roger Sayle  <roger@eyesopen.com>
30920
30921         * common.opt (fsigned-zeros): New command line option.
30922         * flags.h (HONOR_SIGNED_ZEROS): Control via flag_signed_zeros instead
30923         of flag_unsafe_math_optimizations.
30924         * opts.c (set_fast_math_flags): The -ffast-math command line option
30925         implies -fno-signed-zeros.
30926         (fast_math_flags_set_p): Likewise.
30927
30928         * doc/invoke.texi: Document new -fno-signed-zeros option, and update
30929         the documentation of -ffast-math appropriately.  Wrap long lines.
30930
30931 2007-01-19  Steve Ellcey  <sje@cup.hp.com>
30932
30933         * system.h (ASM_MAKE_LABEL_LINKONCE): Poison.
30934         * varasm.c (globalize_decl): Remove ASM_MAKE_LABEL_LINKONCE ifdef.
30935
30936 2007-01-19  Tomas Bily  <tbily@suse.cz>
30937
30938         * cgraphunit.c (cgraph_finalize_function): Updating of pid
30939         * tree-profile.c:
30940         (tree_init_ic_make_global_vars): New function
30941         (tree_init_edge_profiler): call of tree_init_ic_make_global_vars
30942         (tree_gen_ic_profiler): New function
30943         (tree_gen_ic_func_profiler): New function
30944         (tree_profiling): Added calling of tree_gen_ic_func_profiler
30945         (tree_profile_hooks): Added hook for indirec/virtual calls
30946         * value-prof.c (tree_find_values_to_profile): New case for
30947         indirect calls
30948         (tree_values_to_profile): Call for determining indirect/virtual
30949         counters
30950         (tree_indirect_call_to_profile): New function
30951         (tree_ic_transform): New function
30952         (tree_ic): New function
30953         (find_func_by_pid): New function
30954         (init_pid_map): New function
30955         (tree_value_profile_transformations): Added check for
30956         indirect/virtual call transformation
30957         * value-prof.h (enum hist_type): New counter type for
30958         indirect/virtual calls
30959         (profile_hooks): Added new hook for profiling indirect/virtual
30960         calls
30961         * profile.c (instrument_values): New case for indirect/virtual
30962         call added
30963         * gcov-io.h (GCOV_LAST_VALUE_COUNTER): Changed to 6
30964         (GCOV_COUNTER_V_INDIR): New counter type
30965         (GCOV_COUNTER_NAMES): New name of counter "indirect" added
30966         (GCOV_MERGE_FUNCTIONS): New merge function for indirect/virtual
30967         call added
30968         * cgraph.c: Definition of cgraph_max_pid
30969         (cgraph_create_node): Default init of pid attribute
30970         * cgraph.h: Declaration of cgraph_max_pid
30971         (struct cgraph_node): Added pid attribute
30972         * libgcov.c (__gcov_indirect_call_profiler): New function
30973         (__gcov_one_value_profiler_body): New function
30974         (__gcov_one_value_profiler): Body was moved to
30975         __gcov_one_value_profiler_body and calls it
30976
30977 2007-01-19  Basile Starynkevitch  <basile@starynkevitch.net>
30978
30979         * doc/gty.texi (Options): Document the mark_hook option to GTY.
30980         * gengtype.c (write_types_data, write_func_for_structure,
30981         write_types, ggc_wtd, pch_wtd): Add skip_hooks to
30982         write_types_data, ggc_wtd, pch_wtd for processing mark_hook.
30983         (walk_type, write_func_for_structure): Generate the mark_hook if
30984         needed.
30985
30986 2007-01-19  Jan Hubicka  <jh@suse.cz>
30987
30988         * ipa-inline.c (cgraph_decide_inlining_incrementally): Instead of
30989         'early' argument take inlining mode argument specifying whether to
30990         inline for size/speeed or all functions; add support for flattening;
30991         improve dumpting.
30992         (cgraph_early_inlining): Update call of decide_inlining_incrementally.
30993
30994 2007-01-19  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
30995
30996         PR c++/17947
30997         * toplev.c (warn_deprecated_use): Use %qD instead of %qs to print
30998         the name of the declared identifier.
30999
31000 2007-01-19  Dirk Mueller  <dmueller@suse.de>
31001
31002         * config/i386.h (CONDITIONAL_REGISTER_USAGE): Store
31003         result of PIC_OFFSET_TABLE_REGNUM in temporary variable to avoid
31004         duplicate evaluation.
31005
31006 2007-01-19  Uros Bizjak  <ubizjak@gmail.com>
31007
31008         * config/i386/i386.md (acos<mode>2): Rename from acossf2 and acosdf2.
31009         Macroize expander using X87MODEF12 mode macro.  Extend operand 1
31010         to XFMode, use acosxf2 and truncate result to requested mode.
31011         Use SSE_FLOAT_MODE_P to disable patterns for SSE math.
31012         (asin<mode>2): Similarly, with asin expanders.
31013         (*fscalexf4_i387): Rename from *fscalexf4.
31014         (expNcorexf3): New expander.
31015         (expxf2, exp10xf2, exp2xf2): Use expNcorexf3 expander.
31016         (exp<mode>2): Rename from expsf2 and expdf2. Macroize expander using
31017         X87MODEF12 mode macro.  Extend operand 1 to XFMode, use expxf2 and
31018         truncate result to requested mode. Use SSE_FLOAT_MODE_P to disable
31019         patterns for SSE math.
31020         (exp10<mode>2): Similarly, with exp10 expanders.
31021         (exp2<mode>2): Similarly, with exp2 expanders.
31022         (expm1<mode>2): Similarly, with expm1 expanders.
31023         (ldexp<mode>3): Similarly, with ldexp expanders.
31024         (log<mode>2, log10<mode>2, log2<mode>2, log1p<mode>2, logb<mode>2):
31025         Use gen_truncxf<mode>2_i387_noop to truncate result.
31026
31027 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
31028
31029         * config/m68k/m68k.h (PREFERRED_STACK_BOUNDARY): Define to 32
31030         for ColdFire targets.
31031
31032 2007-01-19  Nathan Sidwell  <nathan@codesourcery.com>
31033             Richard Sandiford  <richard@codesourcery.com>
31034
31035         * config/m68k/m68k.h (M68K_STATIC_CHAIN_REG_NAME): New macro.
31036         (INITIALIZE_TRAMPOLINE): Use STATIC_CHAIN_REGNUM.
31037         (__transfer_from_trampoline): Use M68K_STATIC_CHAIN_REG_NAME.
31038         * config/m68k/m68kelf.h (STATIC_CHAIN_REGNUM): Override.
31039         (M68K_STATIC_CHAIN_REG_NAME): Likewise.
31040         * config/m68k/netbsd-elf.h (M68K_STATIC_CHAIN_REG_NAME): Likewise.
31041
31042 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
31043
31044         * config/m68k/m68k.md (adddi_dilshr32): Rename to...
31045         (*adddi_dilshr32): ...this.  Fix formatting.  Remove commented-out
31046         non-canonical pattern.  Restrict to !TARGET_COLDFIRE.
31047         (*adddi_dilshr32_cf): New pattern.
31048         (adddi3, subdi3): Remove first alternatives.
31049
31050 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
31051
31052         * config/m68k/m68k.c (notice_update_cc): If an SFmode move is
31053         implemented using move.l, do not use its cc result for floating-point
31054         comparisons.
31055
31056 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
31057
31058         * config/m68k/m68k.h (EXTRA_CONSTRAINT): Stop the 'T' constraint
31059         from accepting 's' constraints if flag_pic.
31060
31061 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
31062
31063         * config/m68k/m68k.md (bordered, bunordered, buneq, bunge, bungt)
31064         (bunle, bunlt, bltgt, bordered_rev, bunordered_rev, buneq_rev)
31065         (bunge_rev, bungt_rev, bunle_rev, bunlt_rev, bltgt_rev): Change
31066         condition from TARGET_68881 to TARGET_HARD_FLOAT.
31067
31068 2007-01-19  Sandra Loosemore  <sandra@codesourcery.com>
31069
31070         * longlong.h (count_leading_zeros, COUNT_LEADING_ZEROS_0): Add
31071         ColdFire alternatives.
31072         * config/m68k/m68k.h (CLZ_DEFINED_VALUE_AT_ZERO): New macro.
31073         * config/m68k/m68k.md (clzsi2): Define for ColdFire
31074         architectures that support ff1 instruction.
31075
31076 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
31077             Julian Brown  <julian@codesourcery.com>
31078
31079         * config/m68k/m68k.h (CONST_OK_FOR_LETTER_P): Add an 'R' case.
31080         * config/m68k/m68k.md (*movsi_cfv4): Fold into...
31081         (*movsi_cf): ...here.  Remove unnecessary 'R' from 'Rg'.
31082         Add commentary.
31083
31084 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
31085
31086         * config/m68k/m68k-protos.h (valid_mov3q_const): Take a HOST_WIDE_INT
31087         and return a bool.
31088         (output_move_const_into_data_reg, output_move_simode_const): Delete.
31089         * config/m68k/m68k.c (const_method, const_int_cost): Take a
31090         HOST_WIDE_INT instead of an rtx.
31091         (m68k_rtx_costs): Update call accordingly.
31092         (output_move_const_into_data_reg): Likewise.  Fix formatting.
31093         (valid_mov3q_const): Take a HOST_WIDE_INT instead of an rtx.
31094         Return a bool.
31095         (output_move_simode_const): Update calls after above changes.
31096         Rework to use automatic variables and predicates like MEM_P.
31097         * config/m68k/m68k.md (pushexthisi_const): Update call to
31098         valid_mov3q_const.
31099
31100 2007-01-19  Dirk Mueller  <dmueller@suse.de>
31101
31102         * tree-ssa-alias.c (perform_var_substitution): Fix typo
31103         in dump_flags test.
31104
31105 2007-01-19  Richard Guenther  <rguenther@suse.de>
31106
31107         * builtins.c (expand_builtin_cexpi): Fall back to expanding
31108         via cexp in case sincos is not available.
31109
31110 2007-01-19  Richard Guenther  <rguenther@suse.de>
31111
31112         * doc/tm.texi (TARGET_HAS_SINCOS): Document new target macro.
31113         * defaults.h (TARGET_HAS_SINCOS): Default to off.
31114         * config/linux.h (TARGET_HAS_SINCOS): Set to on if we have glibc.
31115         * config/alpha/linux.h (TARGET_HAS_SINCOS): Likewise.
31116         * config/sparc/linux.h (TARGET_HAS_SINCOS): Likewise.
31117         * config/sparc/linux64.h (TARGET_HAS_SINCOS): Likewise.
31118         * config/rs6000/linux.h (TARGET_HAS_SINCOS): Likewise.
31119         * config/rs6000/linux64.h (TARGET_HAS_SINCOS): Likewise.
31120
31121 2007-01-19  Uros Bizjak  <ubizjak@gmail.com>
31122
31123         * config/i386/i386.md (*fpatanxf3_i387, fpatan_extend<mode>xf3_i387):
31124         New insn patterns.
31125         (atan2sf3_1, atan2df3_1, atan2xf3_1): Remove insn patterns.
31126         (atan2xf3): Directly generate RTL pattern.
31127         (atan2<mode>3): Rename from atan2sf3 and atan2df3 and macroize insn
31128         patterns using X87MODEF12 mode macro.  Use fpatan_extend<mode>xf3_i387
31129         and truncate result to requested mode.  Use SSE_FLOAT_MODE_P to
31130         disable patterns for SSE math.
31131         (atan<mode>2): Rename from atansf2 and atandf2 and macroize insn
31132         patterns using X87MODEF12 mode macro.  Use fpatan_extend<mode>xf3_i387
31133         and truncate result to requested mode.  Use SSE_FLOAT_MODE_P to
31134         disable patterns for SSE math.
31135
31136 2007-01-19  Alexandre Oliva  <aoliva@redhat.com>
31137
31138         * libgcc-std.ver: Fix typo in %inherit for GCC_4.3.0.
31139
31140 2007-01-18  Roger Sayle  <roger@eyesopen.com>
31141
31142         * fold-const.c (fold_unary) <VIEW_CONVERT_EXPR>: Optimize away a
31143         VIEW_CONVERT_EXPR to the same type as it's operand.
31144
31145 2007-01-18  David Edelsohn  <edelsohn@gnu.org>
31146
31147         * config/rs6000/darwin-ldouble.c: Only build _SOFT_FLOAT if
31148         configured for long double 128.
31149
31150 2007-01-18  Mike Stump  <mrs@apple.com>
31151
31152         * config/rs6000/rs6000.c (rs6000_emit_vector_compare): Fix build
31153         error.
31154
31155 2007-01-18  Michael Meissner  <michael.meissner@amd.com>
31156
31157         * i386.c (ix86_compute_frame_layout): Make fprintf's in #if 0 code
31158         type correct.
31159
31160 2007-01-18  Jan Hubicka  <jh@suse.cz>
31161
31162         * tree-ssa-operands.c (vop_free_bucket_size): Never return value
31163         greater than NUM_VOP_FREE_BUCKETS.
31164
31165 2007-01-18  Daniel Berlin  <dberlin@dberlin.org>
31166
31167         * tree-ssa-structalias.c: Update comments.
31168         (ptabitmap_obstack): Removed.
31169         (pta_obstack): New.
31170         (oldpta_obstack): Ditto.
31171         (stats): Add a few members.
31172         (struct variable_info): Remove node, complex, address_taken, and
31173         indirect_target members. Add oldsolution member.
31174         (new_var_info): Do not initialize removed members.
31175         (constraint_expr_type): Remove INCLUDES.
31176         (constraint_graph): Add size, implicit_preds, rep,
31177         indirect_cycles, eq_rep, label, direct_nodes, and complex members.
31178         (FIRST_REF_NODE): New macro.
31179         (LAST_REF_NODE): Ditto.
31180         (FIRST_ADDR_NODE): Ditto.
31181         (find): New function.
31182         (unite): Ditto.
31183         (dump_constraint): Do not handle INCLUDES.
31184         (insert_into_complex): Do not insert duplicate constraints.
31185         (condense_varmap_nodes): Renamed and rewritten into ...
31186         (merge_node_constraints): This. Also fix bug in handling of
31187         offseted copy constraints.
31188         (clear_edges_for_node): No longer need to deal with preds at all,
31189         or removing associated preds/succs.
31190         (merge_graph_nodes): Deal with indirect_cycles.
31191         Don't deal with predecessors.
31192         (add_implicit_graph_edge): New function.
31193         (add_pred_graph_edge): Ditto.
31194         (add_graph_edge): Don't deal with predecessors.
31195         (build_constraint_graph): Removed.
31196         (build_pred_graph): New function.
31197         (build_succ_graph): Ditto.
31198         (struct scc_info): Removed in_component. Added roots, dfs, and
31199         node_mapping. Remove visited_index, unification_queue.
31200         (scc_visit): Deal with union-find we do now.
31201         Deal with cycles with REF nodes.
31202         (collapse_nodes): Renamed and rewritten to ...
31203         (unify_nodes): This.
31204         (process_unification_queue): Removed.
31205         (topo_visit): Cleanup
31206         (do_da_constraint): Use find.
31207         (do_sd_constraint): Ditto.
31208         (do_ds_constraint): Ditto.
31209         (do_complex_constraint): Ditto.
31210         (init_scc_info): Update for removed and added members.
31211         (find_and_collapse_graph_cycles): Renamed and rewritten into ...
31212         (find_indirect_cycles): This.
31213         (equivalence_class): New variable.
31214         (label_visit): New function.
31215         (perform_variable_substitution): Rewritten.
31216         (free_var_substitution_info): New function.
31217         (find_equivalent_node): Ditto.
31218         (move_complex_constraints): Ditto.
31219         (eliminate_indirect_cycles): Ditto.
31220         (solve_graph): Only propagate changed bits.
31221         Use indirect cycle elimination.
31222         Use find.
31223         (tree_id_t): Rename to tree_vi_t, delete id member, add vi member.
31224         (tree_id_eq): Renamed to ...
31225         (tree_vi_eq): This. Update for member change
31226         (insert_id_for_tree): Renamed and rewritten to ...
31227         (insert_vi_for_tree): This.
31228         (lookup_id_for_tree): Renamed and rewritten to ...
31229         (lookup_vi_for_tree): This.
31230         (get_id_for_tree): Renamed and rewritten to ...
31231         (get_vi_for_tree): Ditto.
31232         (get_constraint_exp_from_ssa_var): Update to use get_vi_for_tree.
31233         (process_constraint): Don't handle INCLUDES.
31234         Remove special ADDRESSOF case.
31235         (find_func_aliases): Rewrite to use vi functions instead of id
31236         ones.
31237         (create_function_info_for): Ditto.
31238         (create_variable_info_for): Ditto.
31239         (intra_create_variable_infos): Ditto.
31240         (merge_smts_into): Ditto.
31241         (find_what_p_points_to): Ditto.
31242         (init_base_vars): Ditto.
31243         (init_alias_vars): Ditto.
31244         (remove_preds_and_fake_succs): New function.
31245         (dump_sa_points_to_info): Dump new stats.
31246         (dump_solution_for_var): Use find.
31247         (set_used_smts): Fix formatting.
31248         (compute_points_to_sets): Updated for new functions.
31249         (ipa_pta_execute): Ditto.
31250
31251 2007-01-18  Kazu Hirata  <kazu@codesourcery.com>
31252             Richard Sandiford  <richard@codesourcery.com>
31253
31254         * doc/tm.texi (TARGET_FUNCTION_VALUE): Expand documentation of
31255         parallels.
31256         * calls.c (expand_call): If the return value is a PARALLEL,
31257         extract its first member.
31258         * config/m68k/linux.h (FUNCTION_EXTRA_EPILOGUE): Remove.
31259         * config/m68k/m68k.c (m68k_output_function_epilogue): Don't
31260         use FUNCTION_EXTRA_EPILOGUE.
31261         (m68k_function_value): Return a PARALLEL if the return value
31262         is of a pointer type.
31263         * config/m68k/netbsd-elf.h (current_function_returns_pointer)
31264         (FUNCTION_EXTRA_EPILOGUE): Remove.
31265         * config/m68k/m68k.md (D0_REG): New constant.
31266
31267 2007-01-18  Kazu Hirata  <kazu@codesourcery.com>
31268
31269         * config/m68k/m68k.c (m68k_output_function_epilogue): Don't
31270         output a NOP for empty epilogues.
31271
31272 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
31273
31274         * config/m68k/m68k.c (m68k_use_return_insn): Update comments
31275         before function.  Extend register save check to include all
31276         registers, not just integer ones.
31277
31278 2007-01-18  Kazu Hirata  <kazu@codesourcery.com>
31279
31280         * config/m68k/m68k-protos.h (use_return_insn): Rename to...
31281         (m68k_use_return_insn): ...this.
31282         * config/m68k/m68k.h (USE_RETURN_INSN): Delete.
31283         * config/m68k/m68k.c (use_return_insn): Rename to...
31284         (m68k_use_return_insn): ...this.
31285         * config/m68k/m68k.md (return): Use m68k_use_return_insn instead
31286         of USE_RETURN_INSN.
31287
31288 2007-01-18  Nathan Sidwell  <nathan@codesourcery.com>
31289
31290         * config/m68k/fpgnulib.c (__truncdfsf2): Implement round to
31291         nearest even, fix denormal rounding overflow.
31292
31293 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
31294
31295         * config/m68k/m68k.md (movsf_cf_hard): Use fsmove instead of
31296         f%$smove and f%$move.
31297         (movdf_cf_hard): Use fdmove for cases 0 and 3 and fmove for case 1.
31298         (extendsfdf2_cf): Use fdmove instead of f%&move.
31299         (truncdfsf2_cf): Use fsmove instead of f%$smove.
31300         (add<mode>3_cf, sub<mode>3_cf): Use <FP:prec> instead of <FP:round>.
31301
31302 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
31303
31304         * config/m68k/m68k.md (movdf_cf_hard): Use output_move_double for
31305         GPR<-GPR moves.
31306
31307 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
31308
31309         * real.h (real_format): Add a canonical_nan_lsbs_set field.
31310         (coldfire_single_format): Declare.
31311         (coldfire_double_format): Likewise.
31312         * real.c (encode_ieee_single): Use canonical_nan_lsbs_set instead
31313         of qnan_msb_set to determine the lower bits of a canonical
31314         NaN significand.
31315         (encode_ieee_double): Likewise.
31316         (encode_ieee_quad): Likewise.
31317         (ieee_single_format): Initialize canonical_nan_lsbs_set.
31318         (mips_single_format): Likewise.
31319         (ieee_double_format): Likewise.
31320         (mips_double_format): Likewise.
31321         (ieee_extended_motorola_format): Likewise.
31322         (ieee_extended_intel_96_format): Likewise.
31323         (ieee_extended_intel_128_format): Likewise.
31324         (ieee_extended_intel_96_round_53_format): Likewise.
31325         (ibm_extended_format): Likewise.
31326         (mips_extended_format): Likewise.
31327         (ieee_quad_format): Likewise.
31328         (mips_quad_format): Likewise.
31329         (vax_f_format): Likewise.
31330         (vax_d_format): Likewise.
31331         (vax_g_format): Likewise.
31332         (i370_single_format): Likewise.
31333         (i370_double_format): Likewise.
31334         (decimal_single_format): Likewise.
31335         (decimal_double_format): Likewise.
31336         (decimal_quad_format): Likewise.
31337         (c4x_single_format): Likewise.
31338         (c4x_extended_format): Likewise.
31339         (real_internal_format): Likewise.
31340         (coldfire_single_format): New real_format.
31341         (coldfire_double_format): Likewise.
31342         * config/pdp11/pdp11.c (pdp11_f_format): Initialize
31343         canonical_nan_lsbs_set.
31344         (pdp11_d_format): Likewise.
31345         * config/m68k/m68k.c (override_options): Override REAL_FORMAT_MODE
31346         if TARGET_COLDFIRE_CPU.
31347
31348 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
31349
31350         * config/m68k/m68k-protos.h (m68k_output_pic_call): Delete.
31351         (output_call, m68k_legitimize_call_address): Declare.
31352         * config/m68k/m68k.h (EXTRA_CONSTRAINT): Remove unnecessary
31353         parenthesees.  Add support for a 'W' constraint.
31354         (LEGITIMATE_PIC_OPERAND_P): Remove SYMBOL_REF_FLAG handling.
31355         (PRINT_OPERAND_PUNCT_VALID_P): Remove comment about 'o'.
31356         (m68k_symbolic_call, m68k_symbolic_jump): Declare.
31357         * config/m68k/m68k.c (m68k_symbolic_call, m68k_symbolic_jump): New
31358         variables.
31359         (override_options): Initialize them.  Do not set flag_no_function_cse
31360         for TARGET_ID_SHARED_LIBRARY.
31361         (m68k_output_pic_call): Delete.
31362         (m68k_legitimize_call_address): New function.
31363         (print_operand): Remove the %o prefix.  Handle the %p prefix.
31364         (output_call): New function.
31365         (m68k_output_mi_thunk): Use m68k_symbolic_jump.  Always load the
31366         target address from the GOT if symbolic jumps are not allowed.
31367         * config/m68k/m68k.md (call, general_operand): Do not set
31368         SYMBOL_REF_FLAG.  Use m68k_legitimize_call_address instead.
31369         Merge separate flag_pic and !flag_pic define_insns into...
31370         (*call, *call_value): ...these new patterns.  Match the address
31371         rather than the containing MEM and require it to be a call_operand.
31372         Use output_call to generate the asm template.
31373         * config/m68k/predicates.md (const_call_operand): New predicate.
31374         (call_operand): Likewise.
31375
31376 2007-01-18  Nathan Sidwell  <nathan@codesourcery.com>
31377
31378         * config/m68k/m68k.h (REGISTER_MOVE_COST): Simplify definition.
31379         (STACK_GROWS_DOWNWARD): Define to 1.
31380         (FUNCTION_VALUE, LIBCALL_VALUE, FUNCTION_VALUE_REGNO_P): Equivocate
31381         comments, emphasizing that these values are only defaults.
31382         * config/m68k/linux.h (LINK_SPEC): Fix formatting in #undef.
31383         * config/m68k/m68k.c (const_method): Remove trailing whitespace.
31384
31385 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
31386
31387         * config/m68k/m68k.md (cmpsi): Remove outdated flag_pic handling.
31388
31389 2007-01-18  Kazu Hirata  <kazu@codesourcery.com>
31390             Richard Sandiford  <richard@codesourcery.com>
31391
31392         * config/m68k/m68k.h (DATA_REGNO_P, ADDRESS_REGNO_P, INT_REGNO_P)
31393         (FP_REGNO_P): New macros.
31394         (REGNO_OK_FOR_INDEX_P, REGNO_OK_FOR_BASE_P, REGNO_OK_FOR_DATA_P)
31395         (REGNO_OK_FOR_FP_P, REG_OK_FOR_INDEX_P, REG_OK_FOR_BASE_P): Use them.
31396         (EH_RETURN_STACKADJ_RTX): Use A0_REG.
31397         * config/m68k/m68k.c (m68k_regno_mode_ok): Use the new REGNO macros.
31398
31399 2007-01-18  Nathan Sidwell  <nathan@codesourcery.com>
31400
31401         * config.gcc (m68k-*-aout*, m68k-*-coff*, m68020-*-elf*, m68k-*-elf*)
31402         (m68k-*-uclinuxoldabi, m68k-*-uclinux*, m68k-*-rtems*): Add t-floatlib
31403         to $tmake_file.
31404         * config/m68k/t-floatlib: New file, extracting common code from...
31405         * config/m68k/t-m68kbare, config/m68k/t-m68kelf,
31406         * config/m68k/t-uclinux: Here.
31407         * config/m68k/fpgnulib.c: Do not compile extendeed precision
31408         routines on ColdFire targets.
31409
31410 2007-01-18  Nathan Sidwell  <nathan@codesourcery.com>
31411
31412         * config.gcc (m68k-*-aout*, m68k-*-coff*, m68020-*-elf*, m68k-*-elf*)
31413         (m68010-*-netbsdelf*, m68k*-*-netbsdelf*, m68k*-*-openbsd*)
31414         (m68k-*-uclinuxoldabi, m68k-*-uclinux*, m68k-*-linux*)
31415         (m68k-*-rtems*): Use tm_file rather than m68k/m68k.h and
31416         explicitly set MOTOROLA to 1.
31417         * config/m68k/m68k.h (MOTOROLA): Simplify definition accordingly.
31418
31419 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
31420             Nathan Sidwell  <nathan@codesourcery.com>
31421
31422         * config/m68k/m68k.h (PCC_STATIC_STRUCT_RETURN): Delete.
31423         (ASM_OUTPUT_REG_PUSH, ASM_OUTPUT_REG_POP): Add MOTOROLA cases.
31424         * config/m68k/coff.h (REGISTER_PREFIX_MD): Delete.
31425         * config/m68k/m68020-elf.h (LIB_SPEC): Delete.
31426         * config/m68k/m68k-none.h (CC1_SPEC, CPP_SUBTARGET_SPEC): Delete.
31427         * config/m68k/m68kelf.h (IMMEDIATE_PREFIX, REGISTER_PREFIX_MD)
31428         (ASM_OUTPUT_REG_PUSH, ASM_OUTPUT_REG_POP): Delete.
31429         (NO_DOLLAR_IN_LABEL, PCC_STATIC_STRUCT_RETURN): Don't undefine.
31430         (BSS_ASM_OP, ASM_OUTPUT_SKIP, ASM_OUTPUT_ASCII): Delete.
31431         * config/m68k/m68kemb.h (PCC_STATIC_STRUCT_RETURN): Don't undefine.
31432         * config/m68k/linux.h (SIZE_TYPE, PTRDIFF_TYPE, WCHAR_TYPE)
31433         (WCHAR_TYPE_SIZE, TARGET_OBJFMT_CPP_BUILTINS): Delete.
31434         (TARGET_OS_CPP_BUILTINS): Don't define mc68000 and mc68020 here.
31435         (DBX_REGISTER_NUMBER): Delete.
31436         * config/m68k/netbsd-elf.h (IMMEDIATE_PREFIX): Delete.
31437         (PCC_STATIC_STRUCT_RETURN): Don't undefine.
31438         * config/m68k/openbsd.h (PCC_STATIC_STRUCT_RETURN): Define.
31439
31440 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
31441
31442         * config.gcc (m68k-*-uclinux*): Add flat.h to $tm_file.
31443         * config/flat.h: New file.
31444         * crtstuff.c (USE_PT_GNU_EH_FRAME): Don't define if
31445         OBJECT_FORMAT_FLAT.
31446         * config/m68k/m68k.h (ASM_PREFERRED_EH_DATA_FORMAT): Do not use
31447         indirect references for -msep-data or -mid-shared-library.
31448         Do not use PC-relative code addresses either.
31449         * config/m68k/m68k.c (override_options): Restrict -fPIC error
31450         to -mpcrel.
31451         * config/m68k/uclinux.h (STARTFILE_SPEC): Define.  Use Scrt1.o
31452         for shared libraries and crt1.o for executables.  Use crti.o and
31453         crtbegin.o.
31454         (ENDFILE_SPEC): Use crtend.o and crtn.o.
31455         (LIB_SPEC): Suppress -Rlibc.gdb if -static-libc is given.
31456         Do not add -elf2flt or -shared-lib-id options here.
31457         (LINK_SPEC): Define.  Pass -elf2flt if no -elf2flt option is given.
31458         Pass -shared-lib-id if -mid-shared-library, taking the library
31459         identifier from -mshared-library-id if given, otherwise
31460         defaulting to 0.
31461         (EH_FRAME_IN_DATA_SECTION): Do not undefine.
31462         (INIT_SECTION_ASM_OP, FINI_SECTION_ASM_OP): Likewise.
31463         (TARGET_OS_CPP_BUILTINS): Define __GXX_MERGED_TYPEINFO_NAMES=0
31464         and __GXX_TYPEINFO_EQUALITY_INLINE=0 if -mid-shared-library.
31465         (DRIVER_SELF_SPECS): Map unadorned PIC options to -msep-data.
31466         * config/m68k/t-uclinux (EXTRA_MULTILIB_PARTS): Add crtbegin.o
31467         and crtend.o.
31468         * config/m68k/lb1sf68.asm (PICCALL): Use an lea and pc-relative
31469         jump sequence for ISA A and ISA A+.
31470         (PICJUMP): Likewise.
31471
31472 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
31473
31474         * config.gcc (m68k-*-uclinux*): Base the port on the common
31475         and m68k GNU/Linux files rather than on the generic ELF ones.
31476         * config/m68k/uclinux.h (TARGET_VERSION): Override.
31477         (TARGET_OS_CPP_BUILTINS): Use LINUX_TARGET_OS_CPP_BUILTINS.
31478
31479 2007-01-18  Julian Brown  <julian@codesourcery.com>
31480             Richard Sandiford  <richard@codesourcery.com>
31481
31482         * config/m68k/m68k.h (LONG_DOUBLE_TYPE_SIZE): Make 64-bit on ColdFire.
31483         (LIBGCC2_LONG_DOUBLE_TYPE_SIZE): Likewise.
31484         * config/m68k/netbsd-elf.h (LIBGCC2_LONG_DOUBLE_TYPE_SIZE): Undefine
31485         before redefining.
31486         * config/m68k/uclinux-oldabi.h (LONG_DOUBLE_TYPE_SIZE): Redefine to
31487         80 unconditionally.
31488         (LIBGCC2_LONG_DOUBLE_TYPE_SIZE): Likewise.
31489
31490 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
31491
31492         * doc/install.texi: Document m68k-uclinuxoldabi.
31493         * config.gcc (m68k-*-uclinuxoldabi): New configuration.
31494         * config/m68k/uclinux-oldabi.h: New file, copied from
31495         config/m68k/uclinux.h.
31496
31497 2007-01-18  Kaz Kojima  <kkojima@rr.iij4u.or.jp>
31498
31499         * config/m32r/m32r-protos.h (m32r_expand_epilogue): Declare it.
31500         * config/m32r/m32r.c (m32r_setup_incoming_varargs): Use gen_frame_mem.
31501         (m32r_compute_frame_size): Use unsigned for regno.
31502         (m32r_reload_lr): Use gen_frame_mem.
31503         (pop): New.
31504         (m32r_output_function_epilogue): Don't output the function epilogue
31505         textually here.
31506         (m32r_expand_epilogue): New.
31507         (direct_return): Return false if the function has the interrupt
31508         attribute.
31509         (m32r_hard_regno_rename_ok): Remove code for the textual epilogue.
31510         * config/m32r/m32r.md (epilogue): New expander.
31511         (return_lr, return_rte): New insns.
31512         (return): Make it expander.
31513         (return_normal): New expander.
31514
31515 2007-01-18  Josh Conner  <jconner@apple.com>
31516
31517         PR target/30485
31518         * config/rs6000/rs6000.c (rs6000_emit_vector_compare): Add
31519         support for UNLE, UNLT, UNGE, and UNGT.
31520
31521 2007-01-18  Jan Hubicka  <jh@suse.cz>
31522
31523         * tree-vrp.c (finalize_jump_threads): Do not call cleanup_cfg by hand.
31524         * tree-tailcall (add_virtual_phis): Likewise.
31525         (optimize_tail_call): Return TODOs.
31526         (execute_tail_calls): Return TODOs.
31527         * tree-ssa-ccp (execute_fold_all_builtins): Do cleanup_cfg via TODO.
31528         * tree-cfgcleanup.c (cleanup_tree_cfg_loop): Return if something
31529         changed.
31530         * tree-ssa-forwprop.c (tree_ssa_forward_propagate_single_use_value):
31531         Cleanup cfg using TODO.
31532         * tree-flow.h (cleanup_tree_cfg_loop): Update prototype.
31533         * passes.c (execute_function_todo): When cleanup did something, remove
31534         unused locals.
31535         * tree-cfg.c (pass_build_cfg): Add cleanup_cfg TODO.
31536         (make_edges): Don't cleanup_cfg.
31537
31538 2007-01-18  Uros Bizjak  <ubizjak@gmail.com>
31539
31540         * reg-stack.c (subst_stack_regs_pat) [UNSPEC_SINCOS_COS,
31541         UNSPEC_XTRACT_FRACT]: Use generic code for instructions that
31542         operate on the top of stack.
31543         [UNSPEC_SINCOS_SIN, UNSPEC_XTRACT_EXP, UNSPEC_TAN]: Rewrite
31544         register handling of instructions that output to the second
31545         stack slot.
31546         [UNSPEC_TAN_ONE, UNSPEC_TAN_TAN]: Remove.
31547         (move_for_stack_reg): Special-case check for dead destination
31548         stack slot for constant load of 1.0 inside UNSPEC_TAN.
31549
31550         * config/i386/i386.md (UNSPEC_TAN): New constant.
31551         (UNSPEC_TAN_ONE, UNSPEC_TAN_TAN): Remove.
31552         (fptanxf4_i387, fptan_extend<mode>xf4_i387): New patterns
31553         to correctly model move of constant 1.0 to top stack slot.
31554         (*tandf3_1, *tansf3_1, *tanxf3_1): Remove insn patterns.
31555         (unnamed peephole2 pattern): Remove corresponding peephole2
31556         pattern that optimizes tan insn and loading of constant 1.0.
31557         (tanxf2): Use fptanxf4_i387.
31558         (tan<mode>2): Rename from tansf2 and tandf2 and macroize insn
31559         patterns using X87MODEF12 mode macro.  Use fptan_extend<mode>xf4_i387
31560         and truncate result to requested mode.  Use SSE_FLOAT_MODE_P to
31561         disable patterns for SSE math.
31562         (sincos<mode>3): Use truncxf<mode>2_i387_noop for truncation.
31563         (fyl2x_extend<mode>xf3_i387): Use X87MODEF12 for operand 1.
31564
31565 2007-01-18  Dirk Mueller  <dmueller@suse.de>
31566             Richard Guenther <rguenther@suse.de>
31567
31568         PR diagnostic/8268
31569         * doc/invoke.texi (Warray-bounds): Document -Warray-bounds.
31570         * common.opt (Warray-bounds): Add new warning option.
31571         * c-opts.c (c_common_handle_option): Define -Warray-bounds
31572         if -Wall is given.
31573         * Makefile.in: make tree-vrp.o depend on toplev.h
31574         * tree-vrp.c (vrp_finalize): Call check_array_refs if -Warray-bounds
31575         is enabled.
31576         (check_array_refs, check_array_bounds, check_array_ref): New.
31577
31578 2007-01-18  Jan Hubicka  <jh@suse.cz>
31579
31580         * tree-ssa-ccp.c (ccp_finalize): Return if something changed.
31581         (execute_ssa_ccp): Return flags conditionally.
31582         * tree-ssa-propagate.c (substitue_and_fold): Return if something was
31583         changed.
31584         * tree-ssa-propagate.h (substitute_and_fold): Update prototype.
31585
31586 2007-01-18  Steven Bosscher  <steven@gcc.gnu.org>
31587
31588         * cfgcleanup.c (cleanup_cfg): Detect cfglayout mode and set
31589         the CLEANUP_CFGLAYOUT flag when in cfglayout mode.
31590
31591         * Makefile.c (GTFILES): Add cfglayout.h.
31592         * gengtype.c (open_base_files): Likewise.
31593         * cfglayout.c (cfg_layout_function_footer,
31594         cfg_layout_function_header) Reindent to make gengtype happy.
31595         * cfglayout.h (cfg_layout_function_footer,
31596         cfg_layout_function_header): Add GTY(()) marker.
31597
31598         * ifcvt.c (noce_try_sign_mask): Make sure INSN_B is non-null.
31599
31600 2007-01-18  Ben Elliston  <bje@au.ibm.com>
31601
31602         * genautomata.c (write_automata): Include xstrerror output in the
31603         error message if writing the DFA description file fails.
31604
31605 2007-01-17  H.J. Lu  <hongjiu.lu@intel.com>
31606
31607         * config/mips/mips-protos.h (mips_output_external): Make it
31608         return void.
31609         * config/mips/iris.h (TARGET_ASM_EXTERNAL_LIBCALL): Removed.
31610         * config/mips/mips.c (irix_output_external_libcall): Likewise.
31611         (extern_list): Likewise.
31612         (extern_head): Likewise.
31613         (TARGET_ASM_FILE_END): Likewise.
31614         (mips_file_end): Likewise.
31615         (mips_output_external): Rewritten.
31616
31617 2007-01-18  Ben Elliston  <bje@au.ibm.com>
31618
31619         * genpreds.c (write_insn_preds_c): Only write out the function
31620         body for regclass_for_constraint if we have register constraints.
31621
31622 2007-01-17  Tom Tromey  <tromey@redhat.com>
31623
31624         * doc/sourcebuild.texi (libgcj Tests): Use sourceware.org.
31625         * doc/install.texi (Testing): Use sourceware.org.
31626         (Binaries): Likewise.
31627         (Specific): Likewise.
31628         * doc/contrib.texi (Contributors): Use sourceware.org.
31629
31630 2007-01-17  Anatoly Sokolov <aesok@post.ru>
31631
31632         * config/avr/avr.h (AVR_HAVE_LPMX): New macro.
31633         (AVR_ENHANCED): Rename to ...
31634         (AVR_HAVE_MUL): ... new.
31635         (avr_enhanced_p): Rename to ...
31636         (avr_have_mul_p): ... new.
31637         (TARGET_CPU_CPP_BUILTINS): Use 'avr_have_mul_p' instead of
31638         'avr_enhanced_p' for "__AVR_ENHANCED__". Define "__AVR_HAVE_MUL__".
31639         * config/avr/avr.c (avr_enhanced_p): Rename to ...
31640         (avr_have_mul_p): ... new.
31641         (base_arch_s): Rename 'enhanced' to 'have_mul'.
31642         (avr_override_options): Use 'avr_have_mul_p' and 'have_mul' instead of
31643         'avr_enhanced_p' and 'enhanced'.
31644         (ashlhi3_out, ashrhi3_out, lshrhi3_out, avr_rtx_costs): Use
31645         AVR_HAVE_MUL instead of AVR_ENHANCED.
31646         * avr.md (*tablejump_enh): Use AVR_HAVE_LPMX instead of AVR_ENHANCED.
31647         (mulqi3, *mulqi3_enh, *mulqi3_call, mulqihi3, umulqihi3, mulhi3,
31648         *mulhi3_enh, *mulhi3_call, mulsi3, *mulsi3_call): Use AVR_HAVE_MUL
31649         instead of AVR_ENHANCED.
31650         (*tablejump_enh): Use AVR_HAVE_LPMX instead of AVR_ENHANCED.
31651         * libgcc.S: Use __AVR_HAVE_MUL__ instead of __AVR_ENHANCED__.
31652         (__tablejump__): Use __AVR_HAVE_LPMX__ instead of __AVR_ENHANCED__.
31653
31654 2007-01-17  Ian Lance Taylor  <iant@google.com>
31655
31656         * vec.h (VEC_reserve_exact): Define.
31657         (vec_gc_p_reserve_exact): Declare.
31658         (vec_gc_o_reserve_exact): Declare.
31659         (vec_heap_p_reserve_exact): Declare.
31660         (vec_heap_o_reserve_exact): Declare.
31661         (VEC_OP (T,A,reserve_exact)): New static inline function, three
31662         versions.
31663         (VEC_OP (T,A,reserve)) [all versions]: Remove handling of
31664         negative parameter.
31665         (VEC_OP (T,A,alloc)) [all versions]: Call ...reserve_exact.
31666         (VEC_OP (T,A,copy)) [all versions]: Likewise.
31667         (VEC_OP (T,a,safe_grow)) [all versions]: Likewise.
31668         * vec.c (calculate_allocation): Add exact parameter.  Change all
31669         callers.
31670         (vec_gc_o_reserve_1): New static function, from vec_gc_o_reserve.
31671         (vec_gc_p_reserve, vec_gc_o_reserve): Call vec_gc_o_reserve_1.
31672         (vec_gc_p_reserve_exact, vec_gc_o_reserve_exact): New functions.
31673         (vec_heap_o_reserve_1): New static function, from vec_heap_o_reserve.
31674         (vec_heap_p_reserve, vec_heap_o_reserve): Call vec_heap_o_reserve_1.
31675         (vec_heap_p_reserve_exact): New function.
31676         (vec_heap_o_reserve_exact): New function.
31677
31678 2007-01-17  Jan Hubicka  <jh@suse.cz>
31679
31680         * ipa-type-escape.c (look_for_casts): Revamp using handled_component_p.
31681
31682 2007-01-17  Eric Christopher  <echristo@apple.com>
31683
31684         * config.gcc: Support core2 processor.
31685
31686 2007-01-16  Jan Hubicka  <jh@suse.cz>
31687
31688         * tree-ssanames.c (release_dead_ssa_names): Instead of ggc_freeing
31689         the names, just unlink the chain so we don't crash on dangling
31690         pointers
31691         to dead SSA names.
31692
31693 2007-01-16  Jan Hubicka  <jh@suse.cz>
31694
31695         * cgraph.h (cgraph_decide_inlining_incrementally): Kill.
31696         * tree-pass.h: Reorder to make IPA passes appear toegher.
31697         (pass_early_inline, pass_inline_parameters, pass_apply_inline):
31698         Declare.
31699         * cgraphunit.c (cgraph_finalize_function): Do not compute inling
31700         parameters, do not call early inliner.
31701         * ipa-inline.c: Update comments.  Include tree-flow.h
31702         (cgraph_decide_inlining): Do not compute inlining parameters.
31703         (cgraph_decide_inlining_incrementally): Return TODOs; assume to
31704         be called with function context set up.
31705         (pass_ipa_inline): Remove unreachable functions before pass.
31706         (cgraph_early_inlining): Simplify assuming to be called from the
31707         PM as local pass.
31708         (pass_early_inline): New pass.
31709         (cgraph_gate_ipa_early_inlining): New gate.
31710         (pass_ipa_early_inline): Turn into simple wrapper.
31711         (compute_inline_parameters): New function.
31712         (gate_inline_passes): New gate.
31713         (pass_inline_parameters): New pass.
31714         (apply_inline): Move here from tree-optimize.c
31715         (pass_apply_inline): New pass.
31716         * ipa.c (cgraph_remove_unreachable_nodes): Verify cgraph after
31717         transforming.
31718         * tree-inline.c (optimize_inline_calls): Return TODOs rather than
31719         doing them by hand.
31720         (tree_function_versioning): Do not allocate dummy struct function.
31721         * tree-inline.h (optimize_inline_calls): Update prototype.
31722         * tree-optimize.c (execute_fixup_cfg): Export.
31723         (pass_fixup_cfg): Remove
31724         (tree_rest_of_compilation): Do not apply inlines.
31725         * tree-flow.h (execute_fixup_cfg): Declare.
31726         * Makefile.in (gt-passes.c): New.
31727         * passes.c: Include gt-passes.h
31728         (init_optimization_passes): New passes.
31729         (nnodes, order): New static vars.
31730         (do_per_function_toporder): New function.
31731         (execute_one_pass): Dump current pass here.
31732         (execute_ipa_pass_list): Don't dump current pass here.
31733
31734 2007-01-16  Janis Johnson  <janis187@us.ibm.com>
31735
31736         * config/dfp-bit.c (dfp_compare_op): Return separate value for NaN.
31737         (DFP_NE, DFP_LE, DFP_GE): Return false for NaN.
31738
31739 2007-01-16  David Edelsohn  <edelsohn@gnu.org>
31740
31741         * config/rs6000/darwin-ldouble.c: Build file for SOFT_FLOAT.
31742         (strong_alias): Define.
31743         (__gcc_qmul): Provide non-FMA for soft-float.
31744         (__gcc_qdiv): Same.
31745         (__gcc_qneg): New.
31746         (__gcc_qeq): New.
31747         (__gcc_qle): New.
31748         (__gcc_qge): New.
31749         (__gcc_qunord): New.
31750         (__gcc_stoq): New.
31751         (__gcc_dtoq): New.
31752         (__gcc_qtos): New.
31753         (__gcc_qtod): New.
31754         (__gcc_qtoi): New.
31755         (__gcc_qtou): New.
31756         (__gcc_itoq): New.
31757         (__gcc_utoq): New.
31758         (fmsub): New.
31759         * config/rs6000/rs6000.c (rs6000_init_libfuncs): Initialize
31760         soft-float functions.
31761         * config/rs6000/libgcc-ppc-glibc.ver: Version soft-float symbols.
31762         * config/rs6000/sysv4.h (SUBTARGET_OVERRIDE_OPTIONS): Do not warn
31763         about long double soft float.
31764
31765 2007-01-16  Dorit Nuzman  <dorit@il.ibm.com>
31766             Tehila Meyzels  <tehila@il.ibm.com>
31767
31768         * tree-vectorizer.h (is_pattern_stmt_p): New.
31769         * tree-vect-analyze.c (vect_determine_vectorization_factor): Fix
31770         formatting (tabs instead of spaces). Cleanup and clarify setting
31771         of STMT_VINFO_VECTYPE. Call is_pattern_stmt_p.
31772         * tree-vect-transform.c (vect_get_vec_def_for_operand): Fix typo.
31773         (vectorizable_type_demotion): Check that types are integral.
31774         (vectorizable_type_promotion): Likewise.
31775         (vectorizable_store): Fix typo.  Eliminate new-line at end of
31776         comments.
31777
31778 2007-01-16  Jan Hubicka  <jh@suse.cz>
31779
31780         * tree-ssanames.c (release_dead_ssa_names): Remove invalidated
31781         cgraph edges too.
31782
31783 2007-01-15  Eric Christopher  <echristo@apple.com>
31784
31785         * ifcvt.c: Include vec.h, vecprim.h.
31786         (check_cond_move_block): New argument regs.
31787         Reorganize. Add registers used to regs.
31788         (cond_move_process_if_block): Use regs set above as
31789         loop bounds.
31790
31791 2007-01-15  Eric Christopher  <echristo@apple.com>
31792
31793         * config/darwin.h: Update copyright.
31794         (TARGET_OPTION_TRANSLATE_TABLE): Add umbrella.
31795         (LINK_COMMAND_SPEC): Add -u.
31796         (LINK_SPEC): Fix umbrella for above.
31797
31798 2007-01-15  Joseph S. Myers  <joseph@codesourcery.com>
31799
31800         * config/soft-fp/op-common.h, config/soft-fp/op-4.h: Update from
31801         glibc CVS.
31802
31803 2007-01-15  Tom Tromey  <tromey@redhat.com>
31804
31805         * doc/sourcebuild.texi (libgcj Tests): Don't mention jacks.
31806         * doc/install.texi (Testing): Don't mention jacks.
31807         (Configuration): Document --enable-java-maintainer-mode.  Move
31808         --with-java-home to libgcj-specific section.  Document
31809         --with-ecj-jar.
31810         (Prerequisites): Mention --enable-java-maintainer-mode, ecj1.
31811
31812 2007-01-15  Jan Hubicka  <jh@suse.cz>
31813
31814         * tree-ssa-dce.c (DCE_TODOs): New.
31815         (propagate_necessity): Return if something changed.
31816         (eliminate_unnecessary_stmts): Likewise.
31817         (perform_tree_ssa_dce): Return TODO flags when needed.
31818         (pass_dce, pass_dce_loop, pass_cd_dce): Remove TODO flags.
31819
31820 2007-01-15  Uros Bizjak  <ubizjak@gmail.com>
31821
31822         * config/i386/i386.md (fyl2xxf3_i387): Rename from fyl2x_xf3.
31823         (fyl2x_extend<mode>xf3_i387): New insn pattern.
31824         (log<mode>2): Rename from logsf2 and logdf2 and macroize insn
31825         patterns using X87MODEF12 mode macro.  Extend operand 1
31826         to XFmode. Use SSE_FLOAT_MODE_P to disable patterns for SSE math.
31827         (log10<mode>2): Ditto.
31828         (log2<mode>2): Ditto.
31829         (log1p<mode>2): Ditto.
31830         (logb<mode>2): Ditto.
31831         (fyl2xp1xf3_i387): Rename from fyl2xp1_xf3.
31832         (fyl2xp1_extend<mode>xf3_i387): New insn pattern.
31833         (*fxtractxf3_i387): Rename from *fxtractxf3.
31834         (fxtract_extend<mode>xf3_i387): New insn pattern.
31835         (ilogbsi2): Use match_dup 3, not match_operand:XF 3.
31836         * config/i386/i386.c (ix86_emit_i387_log1p): Use gen_fyl2xp1xf3_i387()
31837         and gen_fyl2xxf3_i387().
31838
31839 2007-01-14  Zdenek Dvorak <dvorakz@suse.cz>
31840
31841         * loop-unswitch.c (unswitch_loop): Do not call fix_loop_placement.
31842         * cfgloopmanip.c (fix_loop_placement): Made static.  Use
31843         get_loop_exit_edges.  Changed return type to bool.
31844         * cfgloop.h (fix_loop_placement): Declaration removed.
31845
31846 2007-01-14  Dorit Nuzman  <dorit@il.ibm.com>
31847
31848         * param.h (MIN_VECT_LOOP_BOUND): New.
31849         * params.def (MIN_VECT_LOOP_BOUND): New.
31850         * tree-vectorizer.c (slpeel_tree_peel_loop_to_edge): Takes another
31851         argument - minimum threshold for number of iterations.
31852         * tree-vectorizer.h (slpeel_tree_peel_loop_to_edge): Add another
31853         argument to declaration.
31854         * tree-vect-analyze.c (vect_analyze_operations): Check value of
31855         MIN_VECT_LOOP_BOUND.
31856         * tree-vect-transform.c (vect_do_peeling_for_loop_bound): Call
31857         slpeel_tree_peel_loop_to_edge with additional argument.
31858         (vect_do_peeling_for_alignment): Likewise.
31859         * doc/invoke.texi (min-vect-loop-bound): Document new param option.
31860
31861 2007-01-14  Uros Bizjak  <ubizjak@gmail.com>
31862
31863         PR target/30413
31864         * config/i386/i386.c (print_operand) ['z']: Output 'b' for
31865         operands of size 1.
31866
31867 2007-01-14  Jan Hubicka  <jh@suse.cz>
31868
31869         * tree-dfa.c (remove_referenced_var): New function.
31870         * tree-ssa-live.c (remove_unused_locals): Walk referenced vars and
31871         prune referenced vars list too.
31872         * tree-flow.h (remove_referenced_var): Declare.
31873
31874 2007-01-14  Jan Hubicka  <jh@suse.cz>
31875
31876         * tree-eh.c (add_stmt_to_eh_region_fn): Do not add call_exprs
31877         separately.
31878         (remove_stmt_from_eh_region_fn): Do not remove call_exprs.
31879         (verify_eh_throw_stmt_node, verify_eh_throw_table_statements): Kill.
31880         * except.h (verify_eh_throw_table_statements): Kill prototype.
31881         * cfgexpand.c (expand_gimple_basic_block): Propagate Eh regions
31882         into call exrepssions.
31883         * tree-optimize.c (execute_free_cfg_annotatiosn): Do not call
31884         eh trhow verifier.
31885         * tree-cfg.c: Include pointer-set.h.
31886         (verify_node_sharing): Work on pointer set.
31887         (verify_eh_throw_stmt_node): New.
31888         (verify_stmts): Use pointers sets, verify throw_stmt.
31889
31890 2007-01-13  Zdenek Dvorak <dvorakz@suse.cz>
31891
31892         * ipa-reference.c (analyze_function): Consider also addresses taken
31893         in phi nodes.
31894
31895 2007-01-12  Roger Sayle  <roger@eyesopen.com>
31896
31897         * c-typeck.c (null_pointer_constant_p): Replace use of
31898         TREE_CONSTANT_OVERFLOW with TREE_OVERFLOW.
31899         (build_c_cast): Likewise.
31900
31901 2007-01-12  Roger Sayle  <roger@eyesopen.com>
31902
31903         * tree.h (force_fit_type_double): Remove unused final argument.
31904         * c-common.c (constant_expression_warning): Replace use of
31905         TREE_CONSTANT_OVERFLOW with TREE_OVERFLOW.
31906         (convert_and_check): Likewise.
31907         (shorten_compare): Update call to force_fit_type_double.
31908         (c_common_truthvalue_conversion) <INTEGER_CST>: Use integer_zerop.
31909         * convert.c (convert_to_pointer): Update call to
31910         force_fit_type_double.
31911         * fold-const.c (force_fit_type_double): Remove overflowed_const
31912         argument.
31913         (int_const_binop, fold_convert_const_int_from_int,
31914         fold_convert_const_int_from_real, fold_div_compare,
31915         fold_sign_changed_comparison, fold_unary, fold_negate_const,
31916         fold_abs_const, fold_not_const): Remove the final argument from
31917         calls to force_fit_type_double.
31918
31919 2007-01-12  Andrew Pinski  <andrew_pinski@playstation.sony.com>
31920
31921         * configure.ac: Set insn to "nop" for spu-*-* also.
31922         * configure: Regenerate.
31923
31924 2007-01-12  Olga Golovanevsky  <olga@il.ibm.com>
31925
31926         * builtins.def : Add BUILT_IN_FREE.
31927
31928 2007-01-12  Jan Hubicka  <jh@suse.cz>
31929
31930         PR tree-optimization/30443
31931         * tree-inline.c (tree_function_versioning): Do not optimize when
31932         cloning for inlining.
31933
31934 2007-01-12  Zdenek Dvorak <dvorakz@suse.cz>
31935
31936         * doc/loop.texi: Document recording of loop exits.
31937         * cfgloopmanip.c (loopify, duplicate_loop): Use alloc_loop.
31938         (update_single_exits_after_duplication,
31939         update_single_exit_for_duplicated_loop,
31940         update_single_exit_for_duplicated_loops): Removed.
31941         (duplicate_loop_to_header_edge): Do not call
31942         update_single_exits_after_duplication and
31943         update_single_exit_for_duplicated_loops.
31944         (loop_version): Do not update single_exit information.
31945         (fix_loop_structure): Use record_loop_exits instead of
31946         mark_single_exit_loops.
31947         * tree-ssa-loop-manip.c (tree_transform_and_unroll_loop): Update
31948         the lists of loop exits.
31949         * cfghooks.c (redirect_edge_and_branch, redirect_edge_and_branch_force,
31950         split_edge, merge_blocks): Update the lists of loop exits.
31951         * modulo-sched.c (sms_schedule): Pass LOOPS_HAVE_RECORDED_EXITS to
31952         loop_optimizer_init.
31953         * loop-init.c (loop_optimizer_init): Call record_loop_exits instead
31954         of mark_single_exit_loops.
31955         (loop_optimizer_finalize): Call release_recorded_exits.
31956         * tree-ssa-loop.c (tree_loop_optimizer_init): Pass
31957         LOOPS_HAVE_RECORDED_EXITS to loop_optimizer_init.
31958         * tree-vectorizer.c (slpeel_tree_duplicate_loop_to_edge_cfg): Do not
31959         update single exit information.
31960         * lambda-code.c (perfect_nestify): Ditto.
31961         * cfgloop.c (flow_loop_free): Destroy the list of exits of the loop.
31962         (mark_single_exit_loops): Removed.
31963         (alloc_loop, loop_exit_hash, loop_exit_eq, loop_exit_free,
31964         get_exit_descriptions, rescan_loop_exit, record_loop_exits,
31965         dump_recorded_exit, dump_recorded_exits, release_recorded_exits): New
31966         functions.
31967         (get_loop_exit_edges, single_exit): Use recorded exit lists.
31968         (add_bb_to_loop, remove_bb_from_loops): Update the lists of loop exits.
31969         (verify_loop_structure): Verify consistency of the exit lists.
31970         (flow_loops_find): Use alloc_loop.  Initialize exits hash.
31971         (set_single_exit): Removed.
31972         * cfgloop.h (struct loop_exit): New function.
31973         (struct loop): single_exit_ field replaced by exits field.
31974         (LOOPS_HAVE_MARKED_SINGLE_EXITS): Replaced by
31975         LOOPS_HAVE_RECORDED_EXITS.
31976         (struct loops): Added exits hash.
31977         (mark_single_exit_loops, set_single_exit): Declaration removed.
31978         (release_recorded_exits, record_loop_exits, rescan_loop_exit): Declare.
31979
31980 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
31981
31982         * doc/invoke.texi: Avoid use of @headitem.
31983
31984 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
31985
31986         * cse.c (cse_insn): Move HAVE_CC0 code after declarations.
31987
31988 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
31989
31990         * doc/install.texi: Fix m68k-*-* anchor and add m68k-*-* to the
31991         list of targets.
31992
31993 2007-01-12  Nathan Sidwell  <nathan@codesourcery.com>
31994             Richard Sandiford  <richard@codesourcery.com>
31995
31996         * doc/invoke.texi: Document -mno-bitfield, -mno-rtd and -mno-short.
31997         * config/m68k/m68k.opt: Resort options.
31998         (mbitfield, mrtd, mshort): Remove RejectNegative properties.
31999
32000 2007-01-12  Nathan Sidwell  <nathan@codesourcery.com>
32001             Richard Sandiford  <richard@codesourcery.com>
32002
32003         * doc/invoke.texi: Document the macros that are defined by
32004         m68k's -mtune and -mhard-float options.
32005         * config/m68k/m68k-protos.h (m68k_cpp_cpu_ident) Declare.
32006         (m68k_cpp_cpu_family): Likewise.
32007         * config/m68k/m68k.h (TARGET_CPU_CPP_BUILTINS): Add a full set
32008         of __ucfv*__ macros.  Define __mcffpu__ if generating code for
32009         ColdFire FPUs.  Define __mcf_cpu_* and __mcf_family_* macros.
32010         * config/m68k/m68k.c (m68k_cpp_cpu_ident): New function.
32011         (m68k_cpp_cpu_family): Likewise.
32012
32013 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
32014
32015         * config/m68k/m68k.h (TARGET_CPU_CPP_BUILTINS): Treat all mc68*
32016         macros besides mc68000 as tuning macros.  Use a switch statement
32017         to set them and mcpu32.
32018
32019 2007-01-12  Julian Brown  <julian@codesourcery.com>
32020
32021         * config/m68k/m68k.h: Use TARGET_68040 instead of TARGET_68040_ONLY.
32022         (TARGET_68040_ONLY): Rename to...
32023         (TARGET_68040): ...this.
32024         * config/m68k/m68k.c: Use TARGET_68040 instead of TARGET_68040_ONLY.
32025         * config/m68k/m68k.md: Likewise.
32026
32027 2007-01-12  Julian Brown  <julian@codesourcery.com>
32028             Nathan Sidwell  <nathan@codesourcery.com>
32029             Richard Sandiford  <richard@codesourcery.com>
32030
32031         * config.gcc (m680[012]0-*-*, m68k*-*-*): Set m68k_cpu_ident to
32032         the -mcpu= argument associated with the --with-cpu setting.
32033         Define M68K_DEFAULT_TUNE to the default -mtune= option,
32034         if different from the one implied by the -mcpu setting.
32035         Accept --with-cpu=FOO if FOO is listed in m68k-devices.def,
32036         using mcpu=FOO as the default CPU option.  Set target_cpu_default2.
32037         * doc/invoke.texi: Mention ColdFire in the introduction to the
32038         m68k options.  Document the new -march, -mcpu, -mtune, -mdiv,
32039         -mno-div and -mhard-float options.  Make -m68881 a synonym for
32040         -mhard-float.  Document the previously-undocumented -m5206e,
32041         -m528x, -m5307 and -m5407 options.  Tweak the existing option
32042         documentation for consistency.
32043         * doc/install.texi: Mention new --with-cpu arguments.
32044         * config/m68k/m68k.h (OPTION_DEFAULT_SPECS): Only use the
32045         default CPU if neither -mcpu nor -march are specified.
32046         (ASM_CPU_SPEC): Pass down -mcpu and -march options.
32047         (TARGET_CPU_CPP_BUILTINS): Set __mcfisa*__ macros from
32048         TARGET_ISA*.  Set the legacy __mcf*__ cpu macros in the same way,
32049         using m68k_tune to decide between families that implement the
32050         same ISA.  Use m68k_tune to set __mcfv4e__.
32051         (FL_BITFIELD, FL_68881, FL_COLDFIRE, FL_CF_HWDIV, FL_CF_MAC)
32052         (FL_CF_EMAC, FL_CF_EMAC_B, FL_CF_USP, FL_CF_FPU, FL_ISA_68000)
32053         (FL_ISA_68010, FL_ISA_68020, FL_ISA_68040, FL_ISA_A, FL_ISA_B)
32054         (FL_ISA_C, FL_ISA_MMU): New macros.
32055         (MASK_COLDFIRE): Delete.
32056         (TARGET_68010, TARGET_68020, TARGET_68040_ONLY, TARGET_COLDFIRE)
32057         (TARGET_ISAB): Redefine in terms of m68k_cpu_flags.
32058         (TARGET_68881, TARGET_COLDFIRE_FPU): Redefine in terms of m68k_fpu.
32059         (TARGET_HARD_FLOAT): Do not define here.
32060         (TARGET_ISAAPLUS, TARGET_ISAC): New macros.
32061         (TUNE_68000): New macro.
32062         (TUNE_68000_10): Redefine in terms of TUNE_68000 and TUNE_68010.
32063         (TUNE_68010, TUNE_68030, TUNE_68040, TUNE_68060, TUNE_CPU32)
32064         (TUNE_CFV2): Redefine in terms of m68k_tune.
32065         (uarch_type, target_device, fpu_type): New enums.
32066         (m68k_cpu, m68k_tune, m68k_fpu, m68k_cpu_flags): Declare.
32067         * config/m68k/m68k.c (TARGET_DEFAULT): Remove MASK_68881.
32068         (FL_FOR_isa_00, FL_FOR_isa_10, FL_FOR_isa_20, FL_FOR_isa_40)
32069         (FL_FOR_isa_cpu32, FL_FOR_isa_a, FL_FOR_isa_aplus, FL_FOR_isa_b)
32070         (FL_FOR_isa_c): New macros.
32071         (m68k_isa): New enum.
32072         (m68k_target_selection): New structure.
32073         (all_devices, all_isas, all_microarchs): New tables.
32074         (m68k_cpu_entry, m68k_arch_entry, m68k_tune_entry, m68k_cpu)
32075         (m68k_tune, m68k_fpu, m68k_cpu_flags): New variables.
32076         (MASK_ALL_CPU_BITS): Delete.
32077         (m68k_find_selection): New function.
32078         (m68k_handle_option): Handle -mcpu=, -march= and -mtune=.
32079         Map the legacy target options to a combination of the new ones.
32080         (override_options): Set m68k_cpu, m68k_tune, m68k_fpu and
32081         m68k_cpu_flags.  Handle M68K_DEFAULT_TUNE.  Use m68k_cpu_flags
32082         to derive default MASK_BITFIELD, MASK_CF_HWDIV and MASK_HARD_FLOAT
32083         settings.
32084         * config/m68k/m68k.opt (m5200, m5206e, m528x, m5307, m5407, mcfv4e)
32085         (m68010, m68020, m68020-40, m68020-60, m68030, m68040): Remove Mask
32086         properties.
32087         (m68881, msoft-float): Change mask from 68881 to HARD_FLOAT.
32088         (march=, mcpu=, mdiv, mhard-float, mtune=): New options.
32089         * config/m68k/m68k-devices.def: New file.
32090
32091 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
32092             Nathan Sidwell  <nathan@codesourcery.com>
32093
32094         * config/m68k/m68k.h (ASM_CPU_SPEC, ASM_SPEC, EXTRA_SPECS)
32095         (SUBTARGET_EXTRA_SPECS): New macros.
32096         * config/m68k/linux.h (ASM_SPEC): Remove CPU flags;
32097         use %(asm_cpu_spec) instead.
32098         * config/m68k/m68k-none.h (ASM_SPEC): Likewise.
32099         * config/m68k/openbsd.h (ASM_SPEC): Likewise.
32100         * config/m68k/netbsd-elf.h (ASM_SPEC): Likewise.
32101         (EXTRA_SPECS): Rename to...
32102         (SUBTARGET_EXTRA_SPECS): ...this.
32103
32104 2007-01-12  Nathan Sidwell  <nathan@codesourcery.com>
32105             Richard Sandiford  <richard@codesourcery.com>
32106             Julian Brown  <julian@codesourcery.com>
32107
32108         * config.gcc (m68k-*-aout*, m68k-*-coff*, m68020-*-elf*, m68k-*-elf*)
32109         (m68k-*-uclinux*, m68k-*-linux*, m68k-*-rtems*): Set default_m68k_cpu
32110         to the configuration's default CPU.
32111         (m68010-*-netbsdelf*, m68k*-*-netbsdelf*, m68k*-*-openbsd*): Likewise.
32112         Remove default masks.
32113         (m680[012]0-*-*): Set the default with_cpu to the first part of
32114         the target name.
32115         (m68k*-*-*): Set the default with_cpu to m$default_m68k_cpu.
32116         (m68k*-*-linux): Extend the --with-cpu handling to...
32117         (m680[012]0-*-*, m68k*-*-*): ...these configurations.  Allow m68000
32118         and m68010.  Don't set target_cpu_default2.
32119         * doc/install.texi: Document --with-cpu for m68k.
32120         * config/m68k/m68k.h (OPTION_DEFAULT_SPECS): Define.
32121         * config/m68k/m68k-none.h (TARGET_CPU_DEFAULT, M68K_CPU_m68k)
32122         (M68K_CPU_m68000, M68K_CPU_m68010, M68K_CPU_m68020, M68K_CPU_m68030)
32123         (M68K_CPU_m68040, M68K_CPU_m68302, M68K_CPU_m68332, TARGET_DEFAULT)
32124         (ASM_CPU_DEFAULT_SPEC, CC1_CPU_DEFAULT_SPEC): Delete.
32125         (ASM_SPEC): Remove use of %(asm_cpu_default).
32126         (EXTRA_SPECS, SUBTARGET_EXTRA_SPECS, MULTILIB_DEFAULTS): Delete.
32127         * config/m68k/linux.h (TARGET_DEFAULT): Delete.
32128         (CPP_SPEC): Merge definitions.  Do not handle __HAVE_68881__ here.
32129         * config/m68k/netbsd-elf.h (TARGET_OS_CPP_BUILTINS): Define
32130         __HAVE_FPU__ if TARGET_HARD_FLOAT.
32131         (TARGET_DEFAULT): Delete.
32132         (EXTRA_SPECS): Delete cpp_cpu_default_spec, cpp_cpu_spec,
32133         cpp_fpu_spec, asm_default_spec and netbsd_cpp_spec.
32134         (CPP_CPU_SPEC): Delete.
32135         (TARGET_VERSION): Merge definitions, using TARGET_68010 to pick
32136         the appropriate string.
32137         (CPP_CPU_DEFAULT_SPEC, ASM_DEFAULT_SPEC, CPP_FPU_SPEC): Delete.
32138         (CPP_SPEC): Define to NETBSD_CPP_SPEC.
32139         (ASM_SPEC): Don't use %(asm_default_spec).
32140         * config/m68k/m68k.c (TARGET_DEFAULT_TARGET_FLAGS): Remove
32141         TARGET_DEFAULT and add MASK_68881.
32142         * config/m68k/m68k.md: Remove mention of TARGET_DEFAULT from comments.
32143
32144 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
32145
32146         * config.gcc (m68010-*-netbsdelf*): Add MASK_68010.
32147         (m68k*-*-netbsdelf*, m68k*-*-openbsd*, m68k*-linux*): Add
32148         MASK_68010 alongside MASK_68020.
32149         * doc/invoke.texi: Document -m68010.
32150         * config/m68k/m68k.opt (m68010): New.
32151         * config/m68k/m68k.h (TARGET_CPU_CPP_BUILTINS): Define mc68010
32152         if TUNE_68010.
32153         (TUNE_68010): New macro.
32154         * config/m68k/m68k-none.h (M68K_CPU_m68k, M68K_CPU_m68010)
32155         (M68K_CPU_m68020, M68K_CPU_m68030, M68K_CPU_m68040)
32156         (M68K_CPU_m68332): Add MASK_68010.
32157         * config/m68k/linux.h (TARGET_DEFAULT): Add MASK_68010 to
32158         fallback definition.
32159         * config/m68k/netbsd-elf.h (CPP_CPU_SPEC): Remove now-redundant
32160         defines.
32161         * config/m68k/m68k.c (MASK_ALL_CPU_BITS): Add MASK_68010.
32162         (m68k_handle_option): Handle OPT_m68010.  Add MASK_68010
32163         to all entries that use MASK_68020.
32164         (output_move_simode_const, output_move_himode, output_move_qimode)
32165         (output_move_stricthi, output_move_strictqi): Use TARGET_68010
32166         instead of TARGET_68020 to select clr behavior.  Remove comment
32167         about there being no TARGET_68010.
32168         * config/m68k/m68k.md: Likewise throughout.
32169
32170 2007-01-12  Julian Brown  <julian@codesourcery.com>
32171
32172         * config/m68k/m68k.h (TARGET_ISAB): New macro.
32173         * config/m68k/m68k.c: Use TARGET_ISAB rather than TARGET_CFV4.
32174         * config/m68k/m68k.md: Likewise.
32175
32176 2007-01-12  Julian Brown  <julian@codesourcery.com>
32177
32178         * config/m68k/m68k.h (LEGITIMATE_INDEX_P, LEGITIMIZE_ADDRESS): Use
32179         TARGET_COLDFIRE_FPU instead of TARGET_CFV4E.
32180
32181 2007-01-12  Julian Brown  <julian@codesourcery.com>
32182
32183         * config/m68k/m68k.h (TUNE_68040_60): New macro.
32184         * config/m68k/m68k.c (standard_68881_constant_p): Use it.
32185         * config/m68k/m68k.md: Likewise.
32186
32187 2007-01-12  Julian Brown  <julian@codesourcery.com>
32188             Richard Sandiford  <richard@codesourcery.com>
32189
32190         * config/m68k/m68k.h (TARGET_CPU_CPP_BUILTINS): Use TUNE_68030
32191         instead of TARGET_68030, TUNE_68040 instead of TARGET_68040,
32192         TUNE_68060 instead of TARGET_68060 and TUNE_CPU32 instead of
32193         TARGET_CPU32.
32194         (TARGET_CPU32): Rename to...
32195         (TUNE_CPU32): ...this.
32196         (TUNE_68000_10, TUNE_68030, TUNE_68040, TUNE_68060)
32197         (TUNE_CFV2): New macros.
32198         * config/m68k/netbsd-elf.h (LONG_DOUBLE_TYPE_SIZE): Simplify;
32199         remove conditions that are implied by TARGET_68020.
32200         * config/m68k/m68k.c (m68k_output_function_prologue): Use TUNE_68040
32201         instead of TARGET_68040 and TUNE_CPU32 instead of TARGET_CPU32.
32202         (m68k_output_function_epilogue): Likewise.
32203         (m68k_rtx_costs): Likewise.  Use TUNE_68060 instead of TARGET_68060
32204         and TUNE_CFV2 instead of TARGET_5200.  Use TUNE_68000_10 instead of
32205         "!TARGET_68020 && !TARGET_COLDFIRE" to choose between 68000 and
32206         non-68000 timings.  Refactor multiplication and division costs.
32207         (output_addsi3): Use TUNE_68040 instead of TARGET_68040 and
32208         TUNE_CPU32 instead of TARGET_CPU32.
32209         (standard_68881_constant_p): Use TUNE_68040 instead of TARGET_68040
32210         and TUNE_68060 instead of TARGET_68060.
32211         * config/m68k/m68k.md: Use TUNE_68040 instead of TARGET_68040,
32212         TUNE_68060 instead of TARGET_68060, and TUNE_CPU32 instead of
32213         TARGET_CPU32.
32214         (movsi_const0): Use TUNE_68000_10 rather than "!TARGET_68020
32215         && !TARGET_COLDFIRE" to choose between moveq and clr.
32216         Likewise in the unnamed movsf pattern.
32217         (ashlsi_17_24, lshrsi_17_24): Guard with TUNE_68000_10 rather than
32218         "!TARGET_68020 && !TARGET_COLDFIRE".  Likewise the unnamed
32219         ashiftrt pattern.
32220
32221 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
32222
32223         * config/m68k/m68k.h (TARGET_CPU_CPP_BUILTINS): Increase amount
32224         of tabbing before backslashes.
32225
32226 2007-01-11  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
32227
32228         * pa-linux.h (ASM_OUTPUT_INTERNAL_LABEL): Undefine.
32229         * pa.h (ASM_OUTPUT_LABEL): Output colon when using GAS.
32230         (ASM_OUTPUT_INTERNAL_LABEL): Define.
32231
32232 2007-01-11  Zdenek Dvorak <dvorakz@suse.cz>
32233
32234         * tree-ssa-loop-ivopts.c (extract_cond_operands): Split from
32235         find_interesting_uses_cond.
32236         (find_interesting_uses_cond): Use extract_cond_operands.
32237         (rewrite_use_compare): Use extract_cond_operands and
32238         force_gimple_operand_bsi.  Do not call update_stmt.
32239         (determine_use_iv_cost_condition): Use extract_cond_operands.
32240         Return cheaper of using original bound and changing the exit bound.
32241
32242 2007-01-11  Zdenek Dvorak <dvorakz@suse.cz>
32243
32244         PR tree-optimization/29516
32245         * tree-ssa-address.c (tree_mem_ref_addr, add_to_parts,
32246         most_expensive_mult_to_index, addr_to_parts,
32247         create_mem_ref, maybe_fold_tmr): Make the type of
32248         fields of TARGET_MEM_REF sizetype.
32249         (move_fixed_address_to_symbol, move_pointer_to_base):
32250         New functions.
32251         * tree.def (TARGET_MEM_REF): Add comment on types of
32252         the operands.
32253
32254 2007-01-11  Joseph Myers  <joseph@codesourcery.com>
32255
32256         * c-common.c (vector_types_convertible_p): Treat opaque types as
32257         always convertible if they have the same size, but not otherwise.
32258
32259 2007-01-11  Steven Bosscher  <steven@gcc.gnu.org>
32260
32261         * ifcvt.c (struct noce_if_info): Add comments to the fields.
32262         Remove the b_unconditional field.
32263         (noce_try_sign_mask): Do not look at b_unconditional.
32264         (noce_process_if_block): Do not use merge_if_blocks.  Update
32265         the CFG here.  Do not set b_unconditional.
32266         (cond_move_process_if_block): Likewise.
32267         (find_cond_trap): Likewise.
32268         (check_cond_move_block): Require simple jump insns at the end
32269         of the basic block.
32270
32271 2007-01-11  Jan Hubicka  <jh@suse.cz>
32272
32273         PR tree-optimization/1046
32274         * tree-tailcall.c (suitable_for_tail_call_opt_p): Use TREE_ADDRESSABLE
32275         when alias info is not ready.
32276         (pass_tail_recursion): Do not require aliasing.
32277         * tree-ssa-copyrename.c (pass_rename_ssa_cop): Likewise.
32278         * tree-ssa-ccp.c (pass_ccp, pass_fold_builtins): Likewise.
32279         * tree-ssa-copy.c (pass_copy_prop): Likewise.
32280         * tree-ssa-forwprop.c (pass_forwprop): Likewise.
32281         * tree-ssa-dce.c (pass_dce, pass_dce_loop, pass_cd_dce): Likewise.
32282         * passes.c (init_optimization_passes): Execute rename_ssa_copies,
32283         ccp, forwprop, copy_prop, merge_phi, copy_prop, dce and tail recursion
32284         before inlining.
32285         * tree-ssa-operands.c (add_virtual_operand, get_indirect_ref_operand):
32286         When aliasing is not build, mark statement as volatile.
32287
32288 2007-01-11  Tom Tromey  <tromey@redhat.com>
32289
32290         PR preprocessor/15185, PR preprocessor/20989:
32291         * doc/cppopts.texi <-MT>: Update description of algorithm for
32292         computing default target.
32293         <-M, -MD>: Reword "basename" text.
32294
32295 2007-01-11  Roger Sayle  <roger@eyesopen.com>
32296
32297         * builtins.c (expand_builtin_pow, expand_builtin_powi,
32298         fold_builtin_cabs, fold_builtin_sqrt, fold_builtin_trunc,
32299         fold_builtin_floor, fold_builtin_ceil, fold_builtin_round,
32300         fold_builtin_int_int_roundingfn, fold_builtin_bitop,
32301         fold_builtin_bswap, real_constp, fold_builtin_pow,
32302         fold_builtin_powi, fold_builtin_signbit, fold_builtin_copysign,
32303         do_mpfr_arg1, do_mpfr_arg2, do_mpfr_arg3, do_mpfr_sincos): Replace
32304         uses of the macro TREE_CONSTANT_OVERFLOW with TREE_OVERFLOW.
32305         * convert.c (convert_to_pointer): Likewise.
32306         * expr.c (highest_pow2_factor, expand_expr_real_1): Likewise.
32307         * fold-const.c (force_fit_type, fold_negate_expr, int_const_binop,
32308         const_binop, fold_convert_const_int_from_int,
32309         fold_convert_const_int_from_real,
32310         fold_convert_const_real_from_real, sign_bit_p,
32311         optimize_minmax_comparison, extract_muldiv_1, fold_div_compare,
32312         fold_sign_changed_comparison, fold_unary, fold_comparison,
32313         fold_binary, multiple_of_p, tree_Expr_non_zero_p,
32314         fold_negate_const, fold_abs_const, fold_not_const): Likewise.
32315         * print-tree.c (print_node_brief, print_node): Likewise.
32316         * stor-layout.c (place_field, layout_type): Likewise.
32317         * tree-chrec.c (keep_cast): Likewise.
32318         * tree.c (build_vector, build_real, build_real_from_int_cst,
32319         build_complex): Likewise.
32320
32321 2007-01-11  Roger Sayle  <roger@eyesopen.com>
32322
32323         * tree.h (TREE_CONSTANT_OVERFLOW): Obsolete.  For the time being,
32324         treat TREE_CONSTANT_OVERFLOW as a synonym of TREE_OVERFLOW.
32325
32326 2007-01-11  Paolo Bonzini  <bonzini@gnu.org>
32327
32328         * configure.ac (strict1_warn): Rename to strict_warn.
32329         (WERROR, --enable-werror, symlink hacks, stage1_cflags,
32330         cc_set_by_configure, quoted_cc_set_by_configure,
32331         stage_prefix_set_by_configure, quoted_stage_prefix_set_by_configure,
32332         all_boot_languages, all_stagestuff): Remove.
32333         (target_list): Remove bootstrap targets.
32334         * Makefile.in (quickstrap): Unconditionally make a synonym of all.
32335         (BOOT_LANGUAGES, STAGE1_CFLAGS, STAGE1_CHECKING,
32336         REMAKEFLAGS, FLAGS_TO_PASS, PREPEND_DOTDOT_TO_RELATIVE_PATHS,
32337         SUBDIR_FLAGS_TO_PASS, WERROR_FLAGS, STRICT2_WARN, LANG_STAGESTUFF,
32338         VOL_FILES, POSTSTAGE1_FLAGS_TO_PASS, STAGE2_FLAGS_TO_PASS,
32339         STAGEPROFILE_FLAGS_TO_PASS, STAGEFEEDBACK_FLAGS_TO_PASS, stage1_build,
32340         stage1_copy, stage2_build, stage2_copy, stageprofile_build,
32341         stageprofile_copy, stage3_build, stage3_copy, stagefeedback_build,
32342         stagefeedback_copy, stage4_build, clean_s1, clean_sw, bootstrap,
32343         bootstrap-lean, bootstrap2, bootstrap2-lean, bootstrap3,
32344         bootstrap3-lean, bootstrap4, bootstrap4-lean, unstage1, unstage2,
32345         unstage3, unstage4, unstageprofile, unstagefeedback, restage, restage2,
32346         restage3, restage4, restageprofile, restagefeedback, bubbleestrap,
32347         cleanstrap, unstrap, restrap, *compare, *compare3, *compare4,
32348         *compare-lean, *compare3-lean, *compare4-lean, stage1-start, stage1,
32349         stage2-start, stage2, stage3-start, stage3, stage4-start, stage4,
32350         stageprofile-start, stageprofile, stagefeedback-start, stagefeedback,
32351         risky-stage1, risky-stage2, risky-stage3, risky-stage4): Remove.
32352         (ORDINARY_FLAGS_TO_PASS): Rename to FLAGS_TO_PASS.
32353         (STAGECOPYSTUFF, STAGEMOVESTUFF): Consolidate into MOSTLYCLEANFILES.
32354         (mostlyclean): Adjust.
32355         (clean, distclean): Don't mention bootstrap stuff.
32356         * configure: Regenerate.
32357         * ada/config-lang.in, cp/config-lang.in, forttran/config-lang.in,
32358         java/config-lang.in, objc/config-lang.in, objcp/config-lang.in,
32359         treelang/config-lang.in (stagestuff): Remove.
32360         * doc/sourcebuild.texi (stage1, stage2, stage3, stage4,
32361         stageprofile, stagefeedback, stagestuff): Remove mention.
32362
32363 2007-01-11  Nick Clifton  <nickc@redhat.com>
32364
32365         * config/mcore/predicates.md (mcore_general_movesrc_operand):
32366         Accept CONSTs.
32367         (mcore_general_movdst_operand): Do not accept CONST_INTs.
32368         (mcore_arith_K_S_operand): Run the test for the S constraint not
32369         the test for the M constraint.
32370         (mcore_addsub_operand): Do not accept integer values that are
32371         larger than 32 bits.
32372         * config/mcore/mcore.md: Remove unused constraints from split.
32373         (andsi3): Use HOST_WIDE_INT instead of int to hold an INTVAL.
32374         (addsi3): Likewise.
32375         (allocate_stack): Likewise.
32376         * config/mcore/mcore.c (mcore_print_operand): Restrict output of P
32377         operands to 32 bits.
32378         (mcore_const_costs): Use HOST_WIDE_INT instead of int to hold an
32379         INTVAL.
32380         (mcore_and_cost, mcore_modify_comparison, const_ok_for_mcore,
32381         mcore_const_ok_for_inline, mcore_const_trick_uses_not,
32382         try_constant_tricks, mcore_num_ones, mcore_num_zeros,
32383         mcore_output_bclri, mcore_output_andn, output_inline_const,
32384         mcore_output_move, mcore_output_movedouble): Likewise.
32385         (mcore_output_cmov): Use CONST_OK_FOR_M and CONST_OK_FOR_N.
32386         (output_inline_const): Likewise.
32387         (output_inline_const): Fix format strings used in sprintf
32388         statements.
32389         * config/mcore/mcore-protos.h: Update prototypes for changed
32390         functions in mcore.c.
32391         * config/mcore/mcore.h (CONST_OK_FOR_I): Cast values to
32392         HOST_WIDE_INT and not int.
32393         (CONST_OK_FOR_J, CONST_OK_FOR_K, CONST_OK_FOR_L, CONST_OK_FOR_M,
32394         CONST_OK_FOR_N): Likewise.
32395         (LEGITIMATE_CONSTANT_P): Also check CONSTANT_P.
32396         (GO_IF_LEGITIMATE_INDEX): Use HOST_WIDE_INT instead of int to hold
32397         an INTVAL.
32398
32399 2007-01-10  Jan Hubicka  <jh@suse.cz>
32400
32401         * tree-vrp.c (remove_range_assertions): Release defs.
32402         * tree-ssa-loop-ivopts.c (rmeove_statement): Likewise.
32403         * tree-ssa-dom.c (remove_stmt_or_phi): Likewise.
32404
32405 2007-01-10  Paul Brook  <paul@codesourcery.com>
32406
32407         * config/arm/arm.c (arm_rtx_costs_1): Handle mutiply-subtract.
32408         * config/arm/arm.md (mulsi3subsi): New insn.
32409
32410 2007-01-10  Zdenek Dvorak <dvorakz@suse.cz>
32411
32412         * tree-ssa-loop-manip.c (tree_unroll_loop): Make it a wrapper over ...
32413         (tree_transform_and_unroll_loop): New.
32414         * tree-flow.h (transform_callback, tree_transform_and_unroll_loop):
32415         Declare.
32416
32417 2007-01-10  Robert Kennedy <jimbob@google.com>
32418
32419         * fold-const.c (fold_comparison): Fold comparisons like (x *
32420         1000 < 0) to (x < 0).
32421
32422 2007-01-10  Ian Lance Taylor  <iant@google.com>
32423
32424         * tree-pretty-print.c (dump_generic_node): Print parentheses when
32425         operands have the same priority.
32426
32427 2007-01-10  Tom Tromey  <tromey@redhat.com>
32428
32429         * fold-const.c (fold_truthop): Don't check can_use_bit_fields_p.
32430         (fold_binary): Likewise.
32431         * langhooks.c (lhd_can_use_bit_fields_p): Removed.
32432         * langhooks-def.h (lhd_can_use_bit_fields_p): Removed.
32433         (LANG_HOOKS_CAN_USE_BIT_FIELDS_P): Removed.
32434         (LANG_HOOKS_INITIALIZER): Remove LANG_HOOKS_CAN_USE_BIT_FIELDS_P.
32435         * langhooks.h (struct lang_hooks): Removed field
32436         'can_use_bit_fields_p'.
32437
32438 2007-01-10  Ralf Corsépius <ralf.corsepius@rtems.org>
32439
32440         * config/bfin/t-bfin, config/bfin/t-bfin-elf: Remove GCC_CFLAGS.
32441
32442 2007-01-10  Razya Ladelsky  <razya@il.ibm.com>
32443
32444         * function.c (get_last_funcdef_no): New function.
32445         * function.h (get_last_funcdef_no): Declare.
32446         * tree-inline.c (initialize_cfun): Add initialization.
32447         (tree_function_versioning): Cleanup.
32448
32449 2007-01-10  Jan Hubicka  <jh@suse.cz>
32450
32451         * tree-inline.c (setup_one_parameter): Do not propagate into abnormal
32452         PHIs.
32453
32454 2007-01-10  Sa Liu  <saliu@de.ibm.com>
32455             Ben Elliston  <bje@au.ibm.com>
32456
32457         * spu.h (STACK_SAVE_AREA): Use VOIDmode for SAVE_FUNCTION, SImode
32458         for SAVE_NONLOCAL and Pmode for any other save level.
32459         * spu-protos.h (spu_restore_stack_block): Declare.
32460         * spu.md (save_stack_block): Remove.
32461         (restore_stack_block): Call spu_restore_stack_block.
32462         * spu.c (spu_restore_stack_block): New function.
32463         (spu_expand_epilogue): Remove old comment.
32464
32465 2007-01-09  Zdenek Dvorak <dvorakz@suse.cz>
32466
32467         PR tree-optimization/30322
32468         * tree-ssa-loop-ivopts.c (fold_affine_expr, iv_value): Removed.
32469         (cand_value_at): Return the value as aff_tree.
32470         (may_eliminate_iv): Convert the bound from aff_tree to tree.
32471         * tree-affine.c (aff_combination_add_cst, aff_combination_add_product,
32472         aff_combination_mult): New functions.
32473         (aff_combination_add): Use aff_combination_add_cst.
32474         (aff_combination_convert): Allow conversions to a wider type.
32475         (tree_to_aff_combination): Handle BIT_NOT_EXPR.
32476         * tree-affine.h (aff_combination_mult): Declare.
32477
32478 2007-01-09  Carlos O'Donell  <carlos@codesourcery.com>
32479
32480         * doc/tm.texi: Update documentation to reflect reality of exec
32481         and start file search behaviours. Update copyright year.
32482         * doc/invoke.texi: Explain how GCC_EXEC_PREFIX is used to find
32483         header file directories.
32484
32485 2007-01-09  Uros Bizjak  <ubizjak@gmail.com>
32486
32487         * config/i386/i386.md (*sinxf2): Rename to *sinxf2_i387.
32488         (*cosxf2): Rename to cosxf2_i387.
32489         (*sindf2, *sinsf2): Extend operand 1 to XFmode.  Macroize patterns
32490         using X87MODEF12 mode macro. Rename patterns to
32491         *sin_extend<mode>xf2_i387.  Use SSE_FLOAT_MODE_P to disable patterns
32492         for SSE math.
32493         (*cosdf2, *cossf2): Ditto.
32494         (sincosdf3, sincossf3): Ditto.  Rewrite corresponding splitters
32495         to match extended input operands.
32496         (sincos<mode>3): New expander.
32497         (*sinextendsfdf2, *cosextendsfdf2, *sincosextendsfdf3): Remove
32498         insn patterns and corresponding splitters.
32499
32500 2007-01-09  Kaz Kojima  <kkojima@gcc.gnu.org>
32501
32502         * config/sh/t-linux (TARGET_LIBGCC2_CFLAGS): Delete.
32503         (SHLIB_MAPFILES, SHLIB_LINK, SHLIB_INSTALL): Likewise.
32504
32505 2007-01-09  Nicolas Pitre  <nico@cam.org>
32506
32507         PR target/30173
32508         * arm/ieee754-df.S (Lad_s): Also test the low word of X for zero.
32509
32510 2007-01-08  Geoffrey Keating  <geoffk@apple.com>
32511
32512         * target.h (struct gcc_target): New field library_rtti_comdat.
32513         * target-def.h (TARGET_CXX_LIBRARY_RTTI_COMDAT): New.
32514         (TARGET_CXX): Add TARGET_CXX_LIBRARY_RTTI_COMDAT.
32515         * doc/tm.texi (C++ ABI): Document TARGET_CXX_LIBRARY_RTTI_COMDAT.
32516         * config/darwin.h (TARGET_CXX_LIBRARY_RTTI_COMDAT): Define.
32517
32518 2007-01-08  Geoffrey Keating  <geoffk@apple.com>
32519
32520         * doc/invoke.texi (Optimize Options): Correct description of -O0.
32521
32522 2007-01-08  Richard Guenther  <rguenther@suse.de>
32523
32524         * tree.h (force_fit_type_double): Export.
32525         (force_fit_type): Remove.
32526         * fold-const.c (force_fit_type_double): New function.
32527         (force_fit_type): Remove.
32528         (int_const_binop): Use it.
32529         (fold_convert_const_int_from_int): Likewise.
32530         (fold_convert_const_int_from_real): Likewise.
32531         (fold_div_compare): Likewise.
32532         (fold_sign_changed_comparison): Likewise.
32533         (fold_unary): Likewise.
32534         (fold_negate_const): Likewise.
32535         (fold_abs_const): Likewise.
32536         (fold_not_const): Likewise.
32537         * c-common.c (shorten_compare): Use force_fit_type_double.
32538         * convert.c (convert_to_pointer): Likewise.
32539
32540 2007-01-08  Richard Guenther  <rguenther@suse.de>
32541
32542         * tree.h (build_int_cst_wide_type): Export.
32543         * tree.c (build_int_cst_wide_type): New function.
32544         (build_int_cst_wide): Fix comment.
32545         * builtins.c (fold_builtin_object_size): Use build_int_cst
32546         to build -1 or 0 of the correct type.  Use fit_double_type
32547         to check for overflow.
32548         * fold-const.c (optimize_bit_field_compare): Use build_int_cst_type
32549         to build the mask.
32550         (decode_field_reference): Likewise.
32551         (all_ones_mask_p): Likewise.
32552         (native_interpret_int): Use build_int_cst_wide_type.
32553         (fold_binary): Use build_int_cst_type to build an all-ones
32554         value.
32555         * stor-layout.c (set_sizetype): Use build_int_cst_wide_type.
32556
32557 2007-01-08  Daniel Jacobowitz  <dan@codesourcery.com>
32558
32559         * config/pa/t-pa64 (libgcc_stub.a): Use $(T).
32560
32561 2007-01-09  Ben Elliston  <bje@au.ibm.com>
32562
32563         * genautomata.c (STATS_OPTION): New option.
32564         (stats_flag): New flag.
32565         (gen_automata_option): Handle it.
32566         (initiate_automaton_gen): Ditto.
32567         (write_automata): Output statistics only if stats_flag is
32568         set. Likewise, output time statistics only if time_flag is set.
32569         * doc/md.texi (Processor pipeline description): Document new flag.
32570
32571 2007-01-08  Richard Guenther  <rguenther@suse.de>
32572
32573         * builtins.c (fold_builtin_int_roundingfn): Use fit_double_type.
32574         * tree.c (build_int_cst_type): Likewise.
32575         (size_in_bytes): Don't call force_fit_type on the result.
32576         (int_fits_type_p): Use fit_double_type.
32577         * fold-const.c (fit_double_type): New function.
32578         (force_fit_type): Use it.
32579         * tree.h (fit_double_type): Export.
32580
32581 2007-01-08  Jan Hubicka  <jh@suse.cz>
32582
32583         * tree-vectorizer.c (gate_increase_alignment): Fix return type.
32584         * ipa.c (function_and_variable_visibility): Fix return type.
32585
32586 2007-01-08  Richard Guenther  <rguenther@suse.de>
32587
32588         * tree-ssa-ccp.c (maybe_fold_offset_to_array_ref): Use type
32589         of offset to build the index.
32590         * tree-pretty-print.c (dump_generic_node): Don't build negated
32591         const just for printing.
32592         * c-pretty-print.c (pp_c_integer_constant): Likewise.
32593         * builtins.c (fold_builtin_int_roundingfn): Check if result
32594         fits the type by using force_fit_type and comparing the result.
32595         * predict.c (predict_loops): Use compare_tree_int for comparison.
32596         * tree.c (build_int_cst): Fall back to integer_type_node for
32597         NULL_TREE type.
32598         (build_int_cst_wide): Assert type is non-null.
32599
32600 2007-01-08  Roberto Costa  <roberto.costa@st.com>
32601
32602         * tree-vrp.c (extract_range_from_cond_expr): New.
32603         (extract_range_from_expr): Handle COND_EXPR nodes used as expressions.
32604         * tree-ssa-ccp.c (get_maxval_strlen): Handle COND_EXPR nodes used
32605         as expressions.
32606         (fold_stmt): Bug fix, avoid infinite recursion when folding COND_EXPRs.
32607         * tree-ssa-forwprop.c (simplify_cond, forward_propagate_into_cond,
32608         tree_ssa_forward_propagate_single_use_vars): Handle COND_EXPR nodes
32609         used as expressions.
32610         * tree-object-size.c (cond_expr_object_size): New.
32611         (collect_object_sizes_for): Handle COND_EXPR nodes used as expressions.
32612
32613 2007-01-08  Jan Hubicka  <jh@suse.cz>
32614
32615         * tree-ssa-forwprop.c (forward_propagate_into_cond,
32616         tree_ssa_forward_propagate_single_use_va): Release defs of propagated
32617         statement.
32618
32619 2007-01-08  Richard Guenther  <rguenther@suse.de>
32620
32621         PR tree-optimization/23603
32622         * tree-vrp.c (set_value_range_to_truthvalue): New function.
32623         (extract_range_from_binary): Fall back to truthvalue instead of
32624         varying for TRUTH_*_EXPR.
32625         (extract_range_from_comparison): Fall back to truthvalue instead of
32626         varying.
32627         (vrp_visit_phi_node): Don't adjust new range bounds to +INF/-INF
32628         if all visited PHI values were constant.
32629
32630 2007-01-08  Jan Hubicka  <jh@suse.cz>
32631
32632         * cgraphunit.c (cgraph_process_new_functions): Reset reachable flag.
32633         (cgraph_analyze_function): break out from ...
32634         (cgraph_finalize_compilation_unit): ... here.
32635         (cgraph_expand_function): Remove forgoten commented out line.
32636         (cgraph_optimize): Analyze functions.
32637
32638 2007-01-08  Jan Hubicka  <jh@suse.cz>
32639
32640         * tree-pas.h (TODO_remove_function): New flag.
32641         (TODO_update*): Renumber.
32642         (pass_ipa_increase_alignment,
32643         pass_ipa_function_and_variable_visibility): New passes.
32644         * cgraphunit.c (cgraph_increase_alignment): Move to tree-vectorizer.c
32645         (cgraph_function_and_variable_visibility): Move to ipa.c
32646         (cgraph_optimize): Don't call cgraph_function_and_variable_visibility,
32647         cgraph_increase_alignment.
32648         * ipa-inline.c (cgraph_decide_inlining): Don't push timevar.
32649         (cgraph_decide_inlining_incrementally): Push TV_INTEGRATION before
32650         calling tree-inline.
32651         (cgraph_early_inlining): Do not call cgraph_remove_unreachable_nodes.
32652         (pass_ipa_inline, pass_early_ipa_inlining): Set TODO_remove_functions
32653         * tree-vectorizer.c (increase_alignment): Move here from cgraphunit.c
32654         (gate_increase_alignment): New function.
32655         (pass_ipa_increase_alignment): New pass.
32656         * ipa.c: Inline tree-pass.h and timevar.h
32657         (function_and_variable_visibility): Move here from cgraphunit.c
32658         * tree-optimize.c (pass_early_local_passes): Add TODO_remove_functions.
32659         * passes.c (init_optimization_passes): Add the two new passes.
32660         (execute_todo): Handle cgraph_remove_functions.
32661
32662 2007-01-08  Nick Clifton  <nickc@redhat.com>
32663
32664         * config/frv/predicates.md (reg_or_0_operand): Accept
32665         CONST_DOUBLEs.
32666
32667 2007-01-08  Ralf Corsépius <ralf.corsepius@rtems.org>
32668
32669         * config/bfin/rtems.h, config/bfin/t-rtems: New.
32670         * config.gcc: Add bfin*-rtems*.
32671
32672 2007-01-08  Mark Shinwell  <shinwell@codesourcery.com>
32673
32674         * c.opt: Add -flax-vector-conversions.
32675         * c-typeck.c (convert_for_assignment): Pass flag to
32676         vector_types_convertible_p to allow emission of note.
32677         (digest_init): Likewise.
32678         * c-opts.c: Handle -flax-vector-conversions.
32679         * c-common.c (flag_lax_vector_conversions): New.
32680         (vector_types_convertible_p): Unless -flax-vector conversions
32681         has been passed, disallow conversions between vectors with
32682         differing numbers of subparts and/or element types.  If such
32683         a conversion is disallowed, possibly emit a note on the first
32684         occasion only to inform the user of -flax-vector-conversions.
32685         The new last argument specifies this.
32686         * c-common.h (flag_lax_vector_conversions): New.
32687         (vector_types_convertible_p): Add extra argument.
32688         * config/i386/i386.c (ix86_init_mmx_sse_builtins): Use
32689         char_type_node for V*QI type vectors.
32690         * config/rs6000/rs6000-c.c (altivec_overloaded_builtins):
32691         Update to satisfy new typechecking rules.
32692         * config/rs6000/altivec.h (vec_cmple): Use vec_cmpge, for both
32693         C and C++ variants.
32694         * doc/invoke.texi (C Dialect Options): Document
32695         -flax-vector-conversions.
32696
32697 2007-01-08  Mark Shinwell  <shinwell@codesourcery.com>
32698
32699         PR tree-optimization/29877
32700         * tree-ssa-ter.c (is_replaceable_p): Deem assignments with
32701         a register variable on the RHS to not be replaceable.
32702
32703 2007-01-08  Chen Liqin  <liqin@sunnorth.com.cn>
32704         * config/score/t-score-elf (MULTILIB_OPTIONS): Change.
32705         * config/score/predicates.md (const_uimm5, sr0_operand, const_simm12,
32706         const_simm15, const_pow2, const_npow2): Added.
32707         * config/score/misc.md (insv, extv, extzv, movmemsi,
32708         move_lbu_a/b, mov_lhu_a/b etc): Added and fix some bug.
32709         * config/score/score.c (score_address_cost, score_select_cc_mode):
32710         Added.
32711         Change CONST_OK_FOR_LETTER_P/EXTRA_CONSTRAINT define.
32712         Update score_rtx_costs for MACRO TARGET_RTX_COSTS.
32713         Update score_print_operand.
32714         * config/score/score.h (DATA_ALIGNMENT, SELECT_CC_MODE): Added.
32715         Adjust register allocate order and update some macro define.
32716         * config/score/score-mdaux.c (mdx_unaligned_load, mdx_unsigned_store,
32717         mdx_block_move_straight, mdx_block_move_loop_head,
32718         mdx_block_move_loop_body, mdx_block_move_loop_foot,
32719         mdx_block_move_loop, mdx_block_move): Added.
32720         (mdx_movsicc, mdp_select_add_imm, mdp_select, mds_zero_extract_andi,
32721         mdp_limm): Updated and fix some bug and typo.
32722         * config/score/score.md (movqi/hi/si, add/sub/zero/ext): Updated.
32723         (movsf, movdf, doloop_end): Added.
32724
32725 2007-01-08  Kazu Hirata  <kazu@codesourcery.com>
32726
32727         * config/arm/arm.c, config/arm/arm.h, config/arm/arm.md,
32728         config/arm/thumb2.md: Fix comment typos.
32729         * doc/extend.texi: Fix a typo.
32730
32731 2007-01-07  Eric Christopher  <echristo@apple.com>
32732
32733         * configure.ac: Check for __stack_chk_fail for darwin.
32734         * configure: Regenerate.
32735
32736 2007-01-07  Richard Guenther  <rguenther@suse.de>
32737
32738         * tree-vrp.c (extract_range_from_assert): CSE calls to
32739         compare_values where possible.
32740         (extract_range_from_unary_expr): Likewise.
32741
32742 2007-01-07  Anatoly Sokolov <aesok@post.ru>
32743
32744         * config/avr/avr-protos.h (call_insn_operand): Delete prototype.
32745         * config/avr/avr.c (call_insn_operand): Delete function.
32746         * config/avr/avr.md (*pushqi, *pushhi, *pushsi, *pushsf): Use REG_SP
32747         instead of register number. Use predicates.
32748         * config/avr/predicates.md (const0_operand, reg_or_0_operand,
32749         call_insn_operand): Add.
32750
32751 2007-01-06  Jan Hubicka  <jh@suse.cz>
32752
32753         * tree-pass.h (pass_build_cgraph_edges): Declare.
32754         * cgraphunit.c (record_refernece): Move to cgraphbuild.c
32755         (visited_nodes): Remove.
32756         (cgraph_create_edges): Move to cgraphbuild.c; rename to
32757         build_cgrpah_edges; make visited_nodes local.
32758         (cgraph_process_new_functions): DO not call initialize_inline_failed.
32759         (record_references_in_initializer): Move to cgraphbuild.c
32760         (initialize_inline_failed, rebuild_cgraph_edges,
32761         pass_rebuild_cgraph_edges): Move to cgraphbuild.c.
32762         (verify_cgraph_node): Make visited_nodes local.
32763         (cgraph_analyze_function): Do not call cgraph_create_edges and
32764         initialize_inline_failed.
32765         (cgraph_expand_function): Do not call cgraph_lower_function;
32766         assert that function is already lowered.
32767         * Makefile.in (cgraphbuild.o): New.
32768         * passes.c (init_optimization_passes): Add pass_build_cgraph_edges
32769         at the end of lowering passes.
32770
32771 2007-01-06  Steven Bosscher  <steven@gcc.gnu.org>
32772
32773         * ifcvt.c (cond_move_convert_if_block): New function, code
32774         factored out from...
32775         (cond_move_process_if_block): ...here.  Call the new function
32776         on the THEN and ELSE blocks.
32777         (merge_if_block): Do not copy global_live_at_end, merge_blocks
32778         already takes care of this.
32779
32780 2007-01-05  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
32781
32782         PR c/19978
32783         * tree.h (TREE_OVERFLOW_P): New.
32784         * c-typeck.c (parser_build_unary_op): Warn only if result
32785         overflowed and operands did not.
32786         (parser_build_binary_op): Likewise.
32787         (convert_for_assignment): Remove redundant overflow_warning.
32788         * c-common.c (overflow_warning): Don't check or set TREE_OVERFLOW.
32789
32790 2007-01-05  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
32791
32792         * c-typeck.c (store_init_value): Split over two lines to follow
32793         the GNU coding style.
32794
32795 2007-01-05  Benjamin Kosnik  <bkoz@redhat.com>
32796
32797         * c-cppbuiltin.c (c_cpp_builtins): __GXX_EXPERIMENTAL_CPP0X__ to
32798         __GXX_EXPERIMENTAL_CXX0X__.
32799         * doc/cpp.texi: Same.
32800
32801 2007-01-05  Richard Guenther  <rguenther@suse.de>
32802
32803         PR middle-end/27826
32804         * tree.c (get_narrower): Do not construct COMPONENT_REFs
32805         with mismatched types.  Instead explicitly build a
32806         conversion NOP_EXPR.
32807
32808 2007-01-05  Ian Lance Taylor  <iant@google.com>
32809
32810         * c-common.c (decl_with_nonnull_addr_p): New function.
32811         (c_common_truthvalue_conversion): Call it.
32812         * c-typeck.c (build_binary_op): Likewise.
32813         * c-common.h (decl_with_nonnull_addr_p): Declare.
32814
32815 2007-01-05  Jakub Jelinek  <jakub@redhat.com>
32816
32817         PR c/30360
32818         * libgcc2.c (__divdc3): Compare c and d against 0.0 instead of
32819         denom against 0.0.
32820
32821 2007-01-05  Joel Brobecker  <brobecker@adacore.com>
32822
32823         * doc/install.texi (Final install): Document the fact that
32824         the GNAT runtime should not be stripped.
32825
32826 2007-01-04  Jan Hubicka  <jh@suse.cz>
32827
32828         * tree-inline.c (fold_marked_statements): Update operand caches
32829         and EH after folding
32830
32831 2007-01-04  Ian Lance Taylor  <iant@google.com>
32832
32833         * c-common.c (check_function_nonnull): Whitespace fix.
32834
32835 2007-01-04  Jan Hubicka  <jh@suse.cz>
32836
32837         * tree-optimize.c (execute_fixup_cfg): Correct previously mistakely
32838         comitted older version of patch.
32839         (pass_fixup_cfg): Add TODOs to verify flow and statements, dump
32840         function, celanup cfg and collect garbage.
32841
32842 2007-01-04  Mike Stump  <mrs@apple.com>
32843
32844         * Makefile.in (mostlyclean): Don't remove libgcc anymore.
32845         (clean): Likewise.
32846
32847 2007-01-04  Eric Christopher  <echristo@apple.com>
32848
32849         * libgcc2.c (__bswapsi2): Use SItype.
32850         (__bswapdi2): Use DItype.
32851         * libgcc2.h: Update for above.
32852
32853 2007-01-04  Paul Brook  <paul@codesourcery.com>
32854
32855         * config/arm/arm.md (arm_mulsi3, thumb_mulsi3, mulsi3_compare0,
32856         mulsi_compare0_scratch, mulsi3addsi, mulsi3addsi_compare0,
32857         mulsi3addsi_compare0_scratch, mulsidi3adddi, mulsidi3,
32858         umulsidi3, umulsidi3adddi, smulsi3_highpart,
32859         umulsi3_highpart): Make conditional on !arm_arch6.
32860         (arm_mulsi3_v6, thumb_mulsi3_v6, mulsi3_compare0_v6,
32861         mulsi_compare0_scratch_v6, mulsi3addsi_v6, mulsi3addsi_compare0_v6,
32862         mulsi3addsi_compare0_scratch_v6, mulsidi3adddi_v6, mulsidi3_v6,
32863         umulsidi3_v6, umulsidi3adddi_v6, smulsi3_highpart_v6,
32864         umulsi3_highpart_v6): New insns.
32865
32866 2007-01-04  Roger Sayle  <roger@eyesopen.com>
32867
32868         * fold-const.c (fold_convert): When casting an expression to void,
32869         fold_ignored_result may discover a GIMPLE_MODIFY_STMT which doesn't
32870         have a type.  Instead of attempting to build a NOP_EXPR, return
32871         these "special" trees directly.
32872
32873 2007-01-04  Joseph Myers  <joseph@codesourcery.com>
32874
32875         * config/rs6000/rs6000.c (rs6000_rtx_costs): Make adjustment for
32876         MULT inside MINUS as either argument.  Use rs6000_cost->dmul -
32877         rs6000_cost->fp not 0 as adjustment for outer NEG.
32878
32879 2007-01-04  Jan Hubicka  <jh@suse.cz>
32880
32881         * cgraph.c (cgraph_release_function_body): New function.
32882         (cgraph_remove_node): Use it.
32883         * cgraph.h (cgraph_release_function_body): Declare.
32884         * cgraphunit.c (cgraph_expand_function): Use it.
32885         * ipa.c (cgraph_remove_unreahchable_nodes): Use it.
32886         * tree-ssa.c (delete_tree_ssa): Allow to be called before aliasing
32887         is initialized and while compilation of other function is running.
32888         * tree-optimize.c (execute_free_cfg_annotations): Move code to clear
32889         statement CFG annotations from here to ...
32890         * tree-cfg.c (delete_tree_cfg_annotations): ... here.
32891
32892 2007-01-04  Zdenek Dvorak <dvorakz@suse.cz>
32893
32894         * cfgloop.h (enum li_flags): Make the constants powers of two.
32895
32896 2007-01-04  Jan Hubicka  <jh@suse.cz>
32897
32898         * tree-inline.c (copy_bb): Insert new statements to statements_to_fold
32899         set.
32900         (fold_marked_statements): New function.
32901         (optimize_inline_calls, tree_function_versioning): Fold new statements.
32902         * tree-inline.h (copy_body_data): Add statements_to_fold.
32903
32904 2007-01-03  Daniel Jacobowitz  <dan@codesourcery.com>
32905
32906         * config.gcc: Mention libgcc/config.host.
32907         * Makefile.in: Update comments mentioning libgcc.
32908         (LIBGCC, INSTALL_LIBGCC, GCC_PARTS, mklibgcc): Delete.
32909         (all.cross, start.encap, rest.encap, rest.cross): Update
32910         dependencies for libgcc move.
32911         (libgcc.mk, LIBGCC_DEPS, libgcov.a, libgcc.a, stmp-multilib)
32912         (clean-target, clean-target-libgcc): Delete.
32913         (srcdirify, GCC_EXTRA_PARTS): New macros.
32914         (libgcc-support, libgcc.mvars): New rules.
32915         (distclean): Remove mention of mklibgcc.
32916         (install): Don't reference INSTALL_LIBGCC.
32917         (install-common): Don't reference EXTRA_PARTS.
32918         (install-libgcc, install-multilib): Delete rules.
32919         * mklibgcc.in: Delete file.
32920         * doc/configfiles.texi: Don't mention mklibgcc.
32921
32922         * config/i386/t-darwin (SHLIB_VERPFX): Delete (moved to libgcc).
32923         * config/i386/t-darwin64 (SHLIB_VERPFX): Likewise.
32924         * config/rs6000/t-darwin (SHLIB_VERPFX): Likewise.
32925         * config/rs6000/t-ppccomm (TARGET_LIBGCC2_CFLAGS, SHLIB_MAPFILES)
32926         (mklibgcc, ldblspecs): Likewise.
32927
32928         * config/i386/t-nwld (libgcc.def, libc.def, libpcre.def)
32929         (posixpre.def): Use $(T).
32930         (SHLIB_EXT, SHLIB_NAME, SHLIB_SLIBDIR_QUAL, SHLIB_DEF, SHLIB_MAP)
32931         (SHLIB_SRC, SHLIB_INSTALL): Delete.
32932         (SHLIB_LINK): Make dummy.
32933         * config/t-slibgcc-darwin: Delete contents except for dummy SHLIB_LINK.
32934
32935         * config/frv/t-linux (EXTRA_MULTILIB_PARTS): Clear.
32936
32937         * config/alpha/t-crtfm: Use $(T) in rules for EXTRA_PARTS.
32938         * config/alpha/t-vms, config/alpha/t-vms64, config/fr30/t-fr30,
32939         config/i386/t-rtems-i386, config/ia64/t-ia64, config/rs6000/t-beos,
32940         config/rs6000/t-newas, config/sparc/t-elf: Likewise.
32941
32942         * configure.ac (all_outputs): Remove mklibgcc.
32943         * configure: Regenerated.
32944
32945 2007-01-03  Josh Conner  <jconner@apple.com>
32946
32947         PR middle-end/29683
32948         * calls.c (compute_argument_addresses): Set stack and stack_slot
32949         for partial args, too.
32950         (store_one_arg): Use locate.size.constant for the size when
32951         generating a save_area.
32952
32953 2007-01-03  Robert Kennedy <jimbob@google.com>
32954
32955         * tree-cfg.c (tree_merge_blocks): Release SSA_NAME phi results
32956         whose definitions are deleted due to basic block merging.
32957
32958 2007-01-03  Paul Brook  <paul@codesourcery.com>
32959
32960         PR target/16634
32961         * config/arm/arm.c (output_return_instruction): Pop PC in interrupt
32962         functions.
32963         (use_return_insn): Return 0 for Thumb interrupt functions.
32964         (print_multi_reg): Add rfe argument for IRQ returns.
32965         (arm_output_epilogue): Pop interrupt return address directly into PC.
32966         (arm_expand_prologue): Only adjust IRQ return address in Arm mode.
32967
32968 2007-01-03  Paul Brook  <paul@codesourcery.com>
32969
32970         Merge from sourcerygxx-4_1.
32971         * config/arm/thumb2.md: New file.
32972         * config/arm/elf.h (JUMP_TABLES_IN_TEXT_SECTION): Return True for
32973         Thumb-2.
32974         * config/arm/coff.h (JUMP_TABLES_IN_TEXT_SECTION): Ditto.
32975         * config/arm/aout.h (ASM_OUTPUT_ADDR_VEC_ELT): Add !Thumb-2 assertion.
32976         (ASM_OUTPUT_ADDR_DIFF_ELT): Output Thumb-2 jump tables.
32977         * config/arm/aof.h (ASM_OUTPUT_ADDR_DIFF_ELT): Output Thumb-2 jump
32978         tables.
32979         (ASM_OUTPUT_ADDR_VEC_ELT): Add !Thumb-2 assertion.
32980         * config/arm/ieee754-df.S: Use macros for Thumb-2/Unified asm
32981         comptibility.
32982         * config/arm/ieee754-sf.S: Ditto.
32983         * config/arm/arm.c (thumb_base_register_rtx_p): Rename...
32984         (thumb1_base_register_rtx_p): ... to this.
32985         (thumb_index_register_rtx_p): Rename...
32986         (thumb1_index_register_rtx_p): ... to this.
32987         (thumb_output_function_prologue): Rename...
32988         (thumb1_output_function_prologue): ... to this.
32989         (thumb_legitimate_address_p): Rename...
32990         (thumb1_legitimate_address_p): ... to this.
32991         (thumb_rtx_costs): Rename...
32992         (thumb1_rtx_costs): ... to this.
32993         (thumb_compute_save_reg_mask): Rename...
32994         (thumb1_compute_save_reg_mask): ... to this.
32995         (thumb_final_prescan_insn): Rename...
32996         (thumb1_final_prescan_insn): ... to this.
32997         (thumb_expand_epilogue): Rename...
32998         (thumb1_expand_epilogue): ... to this.
32999         (arm_unwind_emit_stm): Rename...
33000         (arm_unwind_emit_sequence): ... to this.
33001         (thumb2_legitimate_index_p, thumb2_legitimate_address_p,
33002         thumb1_compute_save_reg_mask, arm_dwarf_handle_frame_unspec,
33003         thumb2_index_mul_operand, output_move_vfp, arm_shift_nmem,
33004         arm_save_coproc_regs, thumb_set_frame_pointer, arm_print_condition,
33005         thumb2_final_prescan_insn, thumb2_asm_output_opcode, arm_output_shift,
33006         thumb2_output_casesi): New functions.
33007         (TARGET_DWARF_HANDLE_FRAME_UNSPEC): Define.
33008         (FL_THUMB2, FL_NOTM, FL_DIV, FL_FOR_ARCH6T2, FL_FOR_ARCH7,
33009         FL_FOR_ARCH7A, FL_FOR_ARCH7R, FL_FOR_ARCH7M, ARM_LSL_NAME,
33010         THUMB2_WORK_REGS): Define.
33011         (arm_arch_notm, arm_arch_thumb2, arm_arch_hwdiv, arm_condexec_count,
33012         arm_condexec_mask, arm_condexec_masklen)): New variables.
33013         (all_architectures): Add armv6t2, armv7, armv7a, armv7r and armv7m.
33014         (arm_override_options): Check new CPU capabilities.
33015         Set new architecture flag variables.
33016         (arm_isr_value): Handle v7m interrupt functions.
33017         (user_return_insn): Return 0 for v7m interrupt functions.  Handle
33018         Thumb-2.
33019         (const_ok_for_arm): Handle Thumb-2 constants.
33020         (arm_gen_constant): Ditto.  Use movw when available.
33021         (arm_function_ok_for_sibcall): Return false for v7m interrupt
33022         functions.
33023         (legitimize_pic_address, arm_call_tls_get_addr): Handle Thumb-2.
33024         (thumb_find_work_register, arm_load_pic_register,
33025         legitimize_tls_address, arm_address_cost, load_multiple_sequence,
33026         emit_ldm_seq, emit_stm_seq, arm_select_cc_mode, get_jump_table_size,
33027         print_multi_reg, output_mov_long_double_fpa_from_arm,
33028         output_mov_long_double_arm_from_fpa, output_mov_double_fpa_from_arm,
33029         output_mov_double_fpa_from_arm, output_move_double,
33030         arm_compute_save_reg_mask, arm_compute_save_reg0_reg12_mask,
33031         output_return_instruction, arm_output_function_prologue,
33032         arm_output_epilogue, arm_get_frame_offsets, arm_regno_class,
33033         arm_output_mi_thunk, thumb_set_return_address): Ditto.
33034         (arm_expand_prologue): Handle Thumb-2.  Use arm_save_coproc_regs.
33035         (arm_coproc_mem_operand): Allow POST_INC/PRE_DEC.
33036         (arithmetic_instr, shift_op): Use arm_shift_nmem.
33037         (arm_print_operand): Use arm_print_condition.  Handle '(', ')', '.',
33038         '!' and 'L'.
33039         (arm_final_prescan_insn): Use extract_constrain_insn_cached.
33040         (thumb_expand_prologue): Use thumb_set_frame_pointer.
33041         (arm_file_start): Output directive for unified syntax.
33042         (arm_unwind_emit_set): Handle stack alignment instruction.
33043         * config/arm/lib1funcs.asm: Remove default for __ARM_ARCH__.
33044         Add v6t2, v7, v7a, v7r and v7m.
33045         (RETLDM): Add Thumb-2 code.
33046         (do_it, shift1, do_push, do_pop, COND, THUMB_SYNTAX): New macros.
33047         * config/arm/arm.h (TARGET_CPU_CPP_BUILTINS): Define __thumb2__.
33048         (TARGET_THUMB1, TARGET_32BIT, TARGET_THUMB2, TARGET_DSP_MULTIPLY,
33049         TARGET_INT_SIMD, TARGET_UNIFIED_ASM, ARM_FT_STACKALIGN, IS_STACKALIGN,
33050         THUMB2_TRAMPOLINE_TEMPLATE, TRAMPOLINE_ADJUST_ADDRESS,
33051         ASM_OUTPUT_OPCODE, THUMB2_GO_IF_LEGITIMATE_ADDRESS,
33052         THUMB2_LEGITIMIZE_ADDRESS, CASE_VECTOR_PC_RELATIVE,
33053         CASE_VECTOR_SHORTEN_MODE, ADDR_VEC_ALIGN, ASM_OUTPUT_CASE_END,
33054         ADJUST_INSN_LENGTH): Define.
33055         (TARGET_REALLY_IWMMXT, TARGET_IWMMXT_ABI, CONDITIONAL_REGISTER_USAGE,
33056         STATIC_CHAIN_REGNUM, HARD_REGNO_NREGS, INDEX_REG_CLASS,
33057         BASE_REG_CLASS, MODE_BASE_REG_CLASS, SMALL_REGISTER_CLASSES,
33058         PREFERRED_RELOAD_CLASS, SECONDARY_OUTPUT_RELOAD_CLASS,
33059         SECONDARY_INPUT_RELOAD_CLASS, LIBCALL_VALUE, FUNCTION_VALUE_REGNO_P,
33060         TRAMPOLINE_SIZE, INITIALIZE_TRAMPOLINE, HAVE_PRE_INCREMENT,
33061         HAVE_POST_DECREMENT, HAVE_PRE_DECREMENT, HAVE_PRE_MODIFY_DISP,
33062         HAVE_POST_MODIFY_DISP, HAVE_PRE_MODIFY_REG, HAVE_POST_MODIFY_REG,
33063         REGNO_MODE_OK_FOR_BASE_P, LEGITIMATE_CONSTANT_P,
33064         REG_MODE_OK_FOR_BASE_P, REG_OK_FOR_INDEX_P, GO_IF_LEGITIMATE_ADDRESS,
33065         LEGITIMIZE_ADDRESS, THUMB2_LEGITIMIZE_ADDRESS,
33066         GO_IF_MODE_DEPENDENT_ADDRESS, MEMORY_MOVE_COST, BRANCH_COST,
33067         ASM_APP_OFF, ASM_OUTPUT_CASE_LABEL, ARM_DECLARE_FUNCTION_NAME,
33068         FINAL_PRESCAN_INSN, PRINT_OPERAND_PUNCT_VALID_P,
33069         PRINT_OPERAND_ADDRESS): Adjust for Thumb-2.
33070         (arm_arch_notm, arm_arch_thumb2, arm_arch_hwdiv): New declarations.
33071         * config/arm/arm-cores.def: Add arm1156t2-s, cortex-a8, cortex-r4 and
33072         cortex-m3.
33073         * config/arm/arm-tune.md: Regenerate.
33074         * config/arm/arm-protos.h: Update prototypes.
33075         * config/arm/vfp.md: Enable patterns for Thumb-2.
33076         (arm_movsi_vfp): Add movw alternative.  Use output_move_vfp.
33077         (arm_movdi_vfp, movsf_vfp, movdf_vfp): Use output_move_vfp.
33078         (thumb2_movsi_vfp, thumb2_movdi_vfp, thumb2_movsf_vfp,
33079         thumb2_movdf_vfp, thumb2_movsfcc_vfp, thumb2_movdfcc_vfp): New.
33080         * config/arm/libunwind.S: Add Thumb-2 code.
33081         * config/arm/constraints.md: Update include Thumb-2.
33082         * config/arm/ieee754-sf.S: Add Thumb-2/Unified asm support.
33083         * config/arm/ieee754-df.S: Ditto.
33084         * config/arm/bpabi.S: Ditto.
33085         * config/arm/t-arm (MD_INCLUDES): Add thumb2.md.
33086         * config/arm/predicates.md (low_register_operand,
33087         low_reg_or_int_operand, thumb_16bit_operator): New.
33088         (thumb_cmp_operand, thumb_cmpneg_operand): Rename...
33089         (thumb1_cmp_operand, thumb1_cmpneg_operand): ... to this.
33090         * config/arm/t-arm-elf: Add armv7 multilib.
33091         * config/arm/arm.md: Update patterns for Thumb-2 and Unified asm.
33092         Include thumb2.md.
33093         (UNSPEC_STACK_ALIGN, ce_count): New.
33094         (arm_incscc, arm_decscc, arm_umaxsi3, arm_uminsi3,
33095         arm_zero_extendsidi2, arm_zero_extendqidi2): New
33096         insns/expanders.
33097         * config/arm/fpa.md: Update patterns for Thumb-2 and Unified asm.
33098         (thumb2_movsf_fpa, thumb2_movdf_fpa, thumb2_movxf_fpa,
33099         thumb2_movsfcc_fpa, thumb2_movdfcc_fpa): New insns.
33100         * config/arm/cirrus.md: Update patterns for Thumb-2 and Unified asm.
33101         (cirrus_thumb2_movdi, cirrus_thumb2_movsi_insn,
33102         thumb2_cirrus_movsf_hard_insn, thumb2_cirrus_movdf_hard_insn): New
33103         insns.
33104         * doc/extend.texi: Document ARMv7-M interrupt functions.
33105         * doc/invoke.texi: Document Thumb-2 new cores+architectures.
33106
33107 2007-01-03  Jakub Jelinek  <jakub@redhat.com>
33108
33109         * unwind-dw2.c (SIGNAL_FRAME_BIT, EXTENDED_CONTEXT_BIT): Define.
33110         (struct _Unwind_Context): Rename args_size to flags, remove
33111         signal_frame field, add a new args_size field and version field.
33112         (_Unwind_IsSignalFrame, _Unwind_SetSignalFrame,
33113         _Unwind_IsExtendedContext): New inline functions.
33114         (_Unwind_GetGR, _Unwind_SetGR, _Unwind_GetGRPtr, _Unwind_SetGRPtr):
33115         Assume by_value array is only present if _Unwind_IsExtendedContext.
33116         (_Unwind_GetIPInfo, execute_cfa_program, uw_frame_state_for): Use
33117         _Unwind_IsSignalFrame.
33118         (__frame_state_for): Initialize context.flags to EXTENDED_CONTEXT_BIT.
33119         (uw_update_context_1): Use _Unwind_SetSignalFrame.
33120         (uw_init_context_1): Initialize context->flags to
33121         EXTENDED_CONTEXT_BIT.
33122         * config/rs6000/linux-unwind.h (frob_update_context): Use
33123         _Unwind_SetSignalFrame.
33124
33125 2007-01-03  Andrew Pinski  <andrew_pinski@playstation.sony.com>
33126
33127         PR middle-end/30353
33128         * gimplify.c (gimplify_modify_expr_complex_part): Move below
33129         tree_to_gimple_tuple.  Call tree_to_gimple_tuple when we need
33130         the value.
33131
33132 2007-01-03  Kazu Hirata  <kazu@codesourcery.com>
33133
33134         * config/i386/i386.h (NON_STACK_REG_P, REGNO_OK_FOR_SIREG_P,
33135         REGNO_OK_FOR_DIREG_P, REWRITE_ADDRESS, ASM_OPERAND_LETTER,
33136         RET, AT_SP): Remove.
33137         * config/i386/i386.md (*sse_prologue_save_insn): Use return
33138         instead of RET.
33139
33140         * alias.c (init_alias_analysis): Use VEC_safe_grow_cleared.
33141         * cfgbuild.c (find_basic_blocks): Likewise.
33142         * cfgrtl.c (rtl_create_basic_block): Likewise.
33143         * function.c (temp_slots_at_level): Likewise.
33144         * reg-stack.c (stack_regs_mentioned): Likewise.
33145         * regclass.c (allocate_reg_info): Likewise.
33146         * tree-cfg.c (init_empty_tree_cfg, build_tree_cfg, create_bb,
33147         set_bb_for_stmt, move_block_to_fn): Likewise.
33148         * tree-complex.c (tree_lower_complex): Likewise.
33149         * vec.h (VEC_safe_grow_cleared): New.
33150
33151         * cgraphunit.c, tree-ssa-alias.c: Fix comment typos.
33152
33153 2007-01-03  Zdenek Dvorak <dvorakz@suse.cz>
33154
33155         * loop-unswitch.c (unswitch_loop): Pass probabilities to loopify.
33156         * tree-ssa-loop-unswitch.c (tree_unswitch_loop): Pass probabilities
33157         to loop_version.
33158         * cfgloopmanip.c (scale_loop_frequencies): Export.
33159         (loopify): Scale the frequencies by prescribed coefficients.
33160         (set_zero_probability): New function.
33161         (duplicate_loop_to_header_edge): Improve updating of frequencies.
33162         (lv_adjust_loop_entry_edge, loop_version): Set probabilities
33163         and frequencies according to arguments.
33164         * tree-ssa-loop-manip.c (tree_unroll_loop): Set probabilities
33165         correctly.
33166         * cfg.c (scale_bbs_frequencies_int): Allow scaling the frequencies up.
33167         * modulo-sched.c (sms_schedule): Set probabilities for entering
33168         versioned loop correctly.
33169         * tree-vect-transform.c (vect_transform_loop): Ditto.
33170         * cfgloop.h (loopify, loop_version): Declaration changed.
33171         (scale_loop_frequencies): Declared.
33172
33173 2007-01-02  Jan Hubicka  <jh@suse.cz>
33174
33175         * cgraph.c: Include tree-flow.h
33176         (cgraph_add_new-function): Handle IPA_SSA mode; execute
33177         early_local_passes.
33178         * cgraph.h (enum cgraph_state): Add CGRAPH_STATE_IPA_SSA.
33179         * tree-pass.h (pass_all_early_optimizations): Declare.
33180         * cgraphunit.c (cgraph_process_new_functions): Add IPA_SSA; execute
33181         early_local_passes.
33182         (cgraph_analyze_function): Do early_local_passes.
33183         * tree-mudflap.c (mf_decl_cache_locals, mf_build_check_statement_for):
33184         Do not add referenced vars.
33185         * tree-optimize.c (gate_all_optimizations): Do not execute when not in
33186         SSA form.
33187         (gate_all_early_local_passes): New gate.
33188         (pass_early_local_passes): Use new gate.
33189         (execute_early_local_optimizations): New functions.
33190         (gate_all_early_optimizations): New gate.
33191         (pass_all_early_optimizations): New pass.
33192         (execute_free_datastructures): Free SSA only when initialized.
33193         (gate_init_datastructures): Init only when optimizing.
33194         (tree_lowering_passes): Do early local passes when called late.
33195         * tree-profile.c (do_tree_profiling): Don't profile functions added
33196         late.
33197         (do_early_tree_profiling, pass_early_tree_profile): Kill.
33198         * tree-cfg.c (update_modified_stmts): Do not update when operands are
33199         not active.
33200         * passes.c (init_optimizations_passes): Reorder so we go into SSA
33201         during early_local_passes.
33202         * Makefile.in (cgraph.o): Add dependency on tree-flow.h.
33203
33204
33205 2007-01-02  Carlos O'Donell  <carlos@codesourcery.com>
33206
33207         * Makefile.in: Update copyright year.
33208
33209 2007-01-02  Carlos O'Donell  <carlos@codesourcery.com>
33210
33211         * Makefile.in: Export GCC_EXEC_PREFIX before calling $(RUNTEST)
33212         in $(lang_checks) and check-consistency targets.
33213
33214 2007-01-02  Jan Hubicka  <jh@suse.cz>
33215
33216         * tree-mudflap.c (mf_decl_cache_locals, mf_build_check_statement_for):
33217         Do not add referenced vars.
33218         * tree-cfg.c (update_modified_stmts): Do not update when SSA operands
33219         are not active.
33220         * passes.c (init_optimization_passes): Put mudflap_2 after
33221         free_datastructures.
33222
33223 2007-01-02  Jan Hubicka  <jh@suse.cz>
33224
33225         * tree-optimize (execute_fixup_cfg): Set after_inlining flag.
33226         Set NOTHROW flag on call statements proved to be nothrow.
33227         Update statement of local calls so new pure/const functions are
33228         updated. Update_ssa when in ssa form. Mark PHI nodes of nonlocal
33229         goto receivers.
33230         (tree_rest_of_compilation): Register hooks and initialize bitmap
33231         early. Do not set after_inlining flag.
33232
33233 2007-01-02  Steve Ellcey  <sje@cup.hp.com>
33234
33235         * sbitmap.c (HOST_BITS_PER_LONG_LONG): Change to
33236         HOST_BITS_PER_LONGLONG
33237
33238 2007-01-02  Manuel Lopez-Ibanez <manu@gcc.gnu.org>
33239
33240         PR c/19977
33241         * c-typeck.c (store_init_value): Don't emit pedantic overflow
33242         warning for non-static initializers.
33243
33244 2007-01-02  Steven Bosscher  <steven@gcc.gnu.org>
33245
33246         * config/alpha/alpha.md, arm/arm.c, darwin.c, frv/frv.md,
33247         m32r/m32r.c, m32r/m32r.c, mn10300/mn10300.md, pa/pa.c,
33248         rs6000/rs6000.c, s390/s390.md, sh/sh.md, sparc/sparc.c:
33249         Always use set_unique_reg_note to add REG_EQUAL notes.
33250
33251 2007-01-02  Kazu Hirata  <kazu@codesourcery.com>
33252
33253         Revert:
33254         2007-01-02  Kazu Hirata  <kazu@codesourcery.com>
33255
33256         * alias.c (init_alias_analysis): Use VEC_safe_grow_cleared.
33257         * cfgbuild.c (find_basic_blocks): Likewise.
33258         * cfgrtl.c (rtl_create_basic_block): Likewise.
33259         * function.c (temp_slots_at_level): Likewise.
33260         * reg-stack.c (stack_regs_mentioned): Likewise.
33261         * regclass.c (allocate_reg_info): Likewise.
33262         * tree-cfg.c (init_empty_tree_cfg, build_tree_cfg, create_bb,
33263         set_bb_for_stmt, move_block_to_fn): Likewise.
33264         * tree-complex.c (tree_lower_complex): Likewise.
33265         * vec.h (VEC_safe_grow_cleared): New.
33266
33267 2007-01-02  Ian Lance Taylor  <iant@google.com>
33268
33269         * c-common.c (c_common_truthvalue_conversion): When warning about
33270         using an assignment as a truth value, set TREE_NO_WARNING.
33271
33272 2007-01-02  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
33273
33274         PR middle-end/7651
33275         * c.opt (Wold-style-declaration): New.
33276         * doc/invoke.texi (C-only Warning Options): New.
33277         (Wold-style-declaration): Document it.
33278         (Wextra): Enabled by -Wextra.
33279         * c-opts.c (c_common_post_options): Enabled by -Wextra.
33280         * c-decl.c (declspecs_add_scspec): Replace -Wextra with
33281         -Wold-style-declaration.
33282
33283 2007-01-02  Kazu Hirata  <kazu@codesourcery.com>
33284
33285         * alias.c (init_alias_analysis): Use VEC_safe_grow_cleared.
33286         * cfgbuild.c (find_basic_blocks): Likewise.
33287         * cfgrtl.c (rtl_create_basic_block): Likewise.
33288         * function.c (temp_slots_at_level): Likewise.
33289         * reg-stack.c (stack_regs_mentioned): Likewise.
33290         * regclass.c (allocate_reg_info): Likewise.
33291         * tree-cfg.c (init_empty_tree_cfg, build_tree_cfg, create_bb,
33292         set_bb_for_stmt, move_block_to_fn): Likewise.
33293         * tree-complex.c (tree_lower_complex): Likewise.
33294         * vec.h (VEC_safe_grow_cleared): New.
33295
33296 2007-01-02  Douglas Gregor  <doug.gregor@gmail.com>
33297
33298         * c-common.c (c_common_nodes_and_builtins): Since variants of
33299         void_type_node get built before it is given a name, we need to
33300         give those variants the name, too.
33301         (complete_array_type): We need to work with the canonical main
33302         type of the array, from which we will build the qualified version.
33303         * params.def (PARAM_VERIFY_CANONICAL_TYPES): New.
33304         * print-tree.c (print_node): Display canonical type information
33305         for each type.
33306         * stor-layout.c (layout_type): When we don't know the
33307         alignment of a type for which we're building an array, we end up
33308         guessing wrong, so make the type require structural equality.
33309         * tree.c (make_node_stat): When we build a new type, it is its
33310         own canonical type.
33311         (build_type_attribute_qual_variant): When building an attribute
33312         variant, its canonical type is the non-attribute variant. However,
33313         if the attributes are target-dependent and they differ, we need to
33314         use structural equality checks for this type.
33315         (build_qualified_type): A qualified type is not equivalent to its
33316         unqualified variant; set the canonical type appropriately.
33317         (build_distinct_type_copy): When building a distinct type from
33318         another type, the new type is its own canonical type.
33319         (build_variant_type_copy): When building a new type variant, we
33320         assume that it is equivalent to the original type.
33321         (build_pointer_type_for_mode): When building a pointer type, also
33322         build a canonical type pointer.
33323         (build_reference_type_for_mode): When building a reference type,
33324         also build a canonical type reference.
33325         (build_index_type): When we can't hash an index type (e.g.,
33326         because its maximum value is negative), the index type requires
33327         structural equality tests.
33328         (build_array_type): Build the canonical form of an array type.
33329         (build_function_type): Function types require structural equality,
33330         because they contain default arguments, attributes, etc.
33331         (build_method_type_directly): Ditto for method types.
33332         (build_offset_type): Build the canonical offset type.
33333         (build_complex_type): Build the canonical vector type.
33334         (make_vector_type): Build the canonical vector type.
33335         * tree.h (TYPE_CANONICAL): New.
33336         (TYPE_STRUCTURAL_EQUALITY_P): New.
33337         (SET_TYPE_STRUCTURAL_EQUALITY): New.
33338         (struct tree_type): Added "canonical" field.
33339         * params.h (VERIFY_CANONICAL_TYPES): New.
33340         * doc/c-tree.texi (TYPE_CANONICAL): Document.
33341         (TYPE_STRUCTURAL_EQUALITY_P): Document.
33342         (SET_TYPE_STRUCTURAL_EQUALITY): Document.
33343         * doc/invoke.texi (verify-canonical-types): Document --param
33344         parameter for verifying canonical types.
33345
33346 2007-01-02  Joseph Myers  <joseph@codesourcery.com>
33347
33348         * config.gcc (powerpc-*-eabispe*, powerpc-*-eabisimaltivec*,
33349         powerpc-*-eabisim*, powerpc-*-eabialtivec*, powerpc-*-eabi*,
33350         powerpc-*-rtems*, powerpc-wrs-vxworks, powerpc-wrs-vxworksae,
33351         powerpcle-*-eabisim*, powerpcle-*-eabi*): Add rs6000/e500.h to
33352         tm_file.
33353         * config/rs6000/e500.h: New.
33354         * config/rs6000/eabi.h (TARGET_SPE_ABI, TARGET_SPE, TARGET_E500,
33355         TARGET_ISEL, TARGET_FPRS, TARGET_E500_SINGLE, TARGET_E500_DOUBLE):
33356         Remove.
33357         * config/rs6000/linuxspe.h (TARGET_SPE_ABI, TARGET_SPE,
33358         TARGET_E500, TARGET_ISEL, TARGET_FPRS, TARGET_E500_SINGLE,
33359         TARGET_E500_DOUBLE): Remove.
33360         * config/rs6000/vxworks.h (TARGET_SPE_ABI, TARGET_SPE,
33361         TARGET_E500, TARGET_ISEL, TARGET_FPRS): Remove.
33362         * config/rs6000/rs6000.h (CHECK_E500_OPTIONS): Define.
33363         * config/rs6000/rs6000.c (rs6000_override_options): Use
33364         CHECK_E500_OPTIONS.
33365
33366 2007-01-02  Joseph Myers  <joseph@codesourcery.com>
33367
33368         * config/rs6000/rs6000.c (print_operand): Check (TARGET_SPE ||
33369         TARGET_E500_DOUBLE), not TARGET_E500, for %y.
33370         (rs6000_generate_compare, rs6000_emit_sCOND, output_cbranch,
33371         rs6000_emit_cmove): Don't check TARGET_E500.
33372         * config/rs6000/rs6000.md (bunordered, bordered, sunordered,
33373         sordered): Don't check TARGET_E500.
33374
33375 2007-01-01  Eric Christopher  <echristo@apple.com>
33376
33377         * config/mips/mips.c (mips_regno_mode_ok_for_base_p): Use
33378         HARD_REGISTER_NUM_P.
33379
33380 2007-01-01  Roger Sayle  <roger@eyesopen.com>
33381
33382         * fold-const.c (fold_binary) <EQ_EXPR>: Fold "(X^C1) eq/ne C2" into
33383         "X eq/ne (C1^C2)".  Fold "(X^Z) eq/ne (Y^Z)" as "X eq/ne Y" when Z
33384         has no side-effects.  Fold "(X^C1) eq/ne (Y^C2)" as "(X^(C1^C2))
33385         eq/ne Y".
33386
33387 2007-01-01  Mike Stump  <mrs@apple.com>
33388
33389         * configure.ac: Remove support for building with Apple's gcc-3.1.
33390
33391 2007-01-02  Joseph Myers  <joseph@codesourcery.com>
33392
33393         PR middle-end/30311
33394         * caller-save.c (add_stored_regs): Only handle SUBREGs if inner
33395         REG is a hard register.  Do not modify REG before calling
33396         subreg_nregs.
33397         * rtlanal.c (subreg_get_info): Don't assert size of XMODE is a
33398         multiple of the size of YMODE for certain lowpart cases.
33399
33400 2007-01-01  Andrew Pinski  <pinskia@gmail.com>
33401
33402         PR middle-end/30253
33403         * gimplify (voidify_wrapper_expr): Update for
33404         GIMPLE_MODIFY_STMT.
33405
33406 2007-01-01  Andreas Schwab  <schwab@suse.de>
33407
33408         PR target/29166
33409         * config/ia64/ia64.c (ia64_compute_frame_size): Account space for
33410         save of BR0 in extra_spill_size instead of spill_size.
33411         (ia64_expand_prologue): Save BR0 outside of the gr/br/fr spill
33412         area.
33413         (ia64_expand_epilogue): Restore BR0 from its new location.
33414
33415 2007-01-01  Andrew Pinski  <pinskia@gmail.com>
33416
33417         * gimplify.c (gimplify_init_constructor <case VECTOR_TYPE>):
33418         Use a temporary variable if the left hand side is not a gimple
33419         register.
33420
33421 2007-01-01  Andrew Pinski  <pinskia@gmail.com>
33422
33423         * gimplify.c (gimplify_return_expr): Make the temporary variable
33424         for the return expression, a gimple register variable.
33425
33426 2007-01-01  Jan Hubicka  <jh@suse.cz>
33427
33428         * emit-rtl.c (emit_copy_of_insn_after): Do not call copy_insn_1 for
33429         INSN_LIST.
33430
33431 2007-01-01  Mike Stump  <mrs@apple.com>
33432
33433         * configure.ac (HAVE_GAS_LITERAL16): Add autoconf check for
33434         .literal16.
33435         * config/darwin.c (machopic_select_rtx_section): Use
33436         HAVE_GAS_LITERAL16.
33437         (darwin_mergeable_constant_section): Likewise.
33438         * configure: Regenerate.
33439         * config.in: Regenerate.
33440
33441 2007-01-01  Jan Hubicka  <jh@suse.cz>
33442             Andrew Pinski  <pinskia@gmail.com>
33443
33444         * cgraphunit.c (cgraph_optimize): Call cgraph_add_new_functions
33445         before starting IPA passes.