OSDN Git Service

PR middle-end/31541
[pf3gnuchains/gcc-fork.git] / gcc / ChangeLog
1 2007-06-23  Jan Hubicka  <jh@suse.cz>
2
3         PR middle-end/31541
4         * gimplify.c (mark_addressable): New function.
5         (gimplify_modify_expr_rhs, gimplify_addr_expr, gimplify_expr): Use it.
6
7 2007-06-19  Uros Bizjak  <ubizjak@gmail.com>
8
9         PR middle-end/32374
10         * expr.c (store_constructor): Do not clobber non-zeroed memory. 
11
12 2007-06-22  Uros Bizjak  <ubizjak@gmail.com>
13
14         PR target/32413
15         * config/i386/i386.c (ix86_register_move_cost): Rise the cost of
16         moves between MMX/SSE registers to at least 8 units to prevent
17         ICE caused by non-tieable SI/HI/QImodes in SSE registers. 
18
19 2007-06-22  Uros Bizjak  <ubizjak@gmail.com>
20
21         * config/i386/i386.c (override_options): Correct x86_sahf
22         setting condition.
23
24 2007-06-21  David Daney  <ddaney@avtrex.com>
25
26         PR target/32406
27         * config/mips/mips.md (define_constants): Rename UNSPEC_EH_RECEIVER
28         to UNSPEC_NONLOCAL_GOTO_RECEIVER globally.
29         (exception_receiver): Renamed to ...
30         (nonlocal_goto_receiver): ... this.
31
32 2007-06-22  Roman Zippel <zippel@linux-m68k.org>
33
34         * df-scan.c (df_read_modify_subreg_p): Use REGMODE_NATURAL_SIZE.
35         (df_def_record_1): Set (DF_REF_READ_WRITE | DF_REF_PARTIAL) for
36         partial register accesses.
37
38 2007-06-21  Adam Nemet  <anemet@caviumnetworks.com>
39
40         * fold-const.c (debug_fold_checksum): Move it under
41         ENABLE_FOLD_CHECKING.
42
43 2007-06-21  Sebastian Pop  <sebpop@gmail.com>
44
45         PR middle-end/20623
46         * tree.h (debug_fold_checksum): Declared.
47         * fold-const.c (build_fold_addr_expr_with_type_1): New.
48         (build_fold_addr_expr_with_type, build_fold_addr_expr): Use 
49         build_fold_addr_expr_with_type_1.
50         (fold_addr_expr, debug_fold_checksum): New.
51         (fold_checksum_tree): Don't fold TREE_CHAIN of an SSA_NAME.
52         (fold_unary, fold_comparison, split_address_to_core_and_offset):
53         Use fold_addr_expr.
54         
55 2007-06-21  Sebastian Pop  <sebpop@gmail.com>
56
57         PR tree-optimization/19590
58         * tree-vrp.c (adjust_range_with_scev): Set the range when the result
59         of scev is a constant.
60         * gcc/testsuite/gcc.dg/tree-ssa/pr19590.c: New.
61
62 2007-06-21  Kenneth Zadeck <zadeck@naturalbridge.com>
63
64         * df-problems.c (df_note_bb_compute): Made computation of live
65         info consistent with df_lr.
66
67 2007-06-21  Richard Guenther  <rguenther@suse.de>
68
69         PR tree-optimization/32453
70         * tree-vrp.c (extract_range_from_assert): Build POINTER_PLUS_EXPR
71         for pointer anti-range.
72
73 2007-06-21  H.J. Lu  <hongjiu.lu@intel.com>
74
75         * config/i386/i386.c (processor_target_table): Increase maximum
76         skip from 7 byte to 10 byte for Pentium Pro, Core 2 Duo and
77         default 64bit.
78
79         * config/i386/linux.h (ASM_OUTPUT_MAX_SKIP_ALIGN): Ensure 8
80         byte alignment if > 8 byte alignment is preferred.
81         * config/i386/x86-64.h (ASM_OUTPUT_MAX_SKIP_ALIGN): Likewise.
82
83 2007-06-21  Jakub Jelinek  <jakub@redhat.com>
84
85         PR tree-optimization/31866
86         * tree-ssa-coalesce.c (create_outofssa_var_map): Do nothing
87         if ASM_EXPR's input is not a SSA_NAME.
88
89         PR middle-end/32362
90         * omp-low.c (lookup_decl_in_outer_ctx): Don't ICE if t is NULL,
91         but decl is a global var, instead return decl.
92         * gimplify.c (gimplify_adjust_omp_clauses_1): Add shared clauses
93         even for is_global_var decls, if they are private in some outer
94         context.
95
96 2007-06-21  Richard Guenther  <rguenther@suse.de>
97
98         PR tree-optimization/32451
99         * tree-ssa-threadupdate.c (thread_single_edge): Fixup edge flags.
100
101 2007-06-21  Christian Bruel  <christian.bruel@st.com>
102
103         * config/sh/sh-protos.h (sh_loads_bankedreg_p): Declare.
104         * config/sh/sh.c (sh_loads_bankedreg_p): New function.
105         (push_regs): Changed saving order or banked registers.
106         (sh_expand_epilogue): Likewise.
107         * config/sh/sh.h (BANKED_REGISTER_P): New macro.
108         (FIRST_BANKED_REG): Likewise.
109         (LAST_BANKED_REG): Likewise.
110         * config/sh/sh.md (banked) New attribute.
111         (in_delay_slot): Check banked attribute.
112         
113 2007-06-20  Sebastian Pop  <sebpop@gmail.com>
114
115         PR tree-optimization/32075
116         * tree-data-ref.c (subscript_dependence_tester_1, 
117         analyze_miv_subscript, analyze_overlapping_iterations,
118         add_distance_for_zero_overlaps, build_classic_dist_vector,
119         subscript_dependence_tester_1, analyze_overlapping_iterations,
120         subscript_dependence_tester, access_functions_are_affine_or_constant_p,
121         compute_affine_dependence, compute_all_dependences): Pass loop_nest 
122         to evolution_function_is_affine_multivariate_p.
123
124 2007-06-20  Eric Botcazou  <ebotcazou@libertysurf.fr>
125
126         * df-scan.c (df_get_call_refs): Be prepared for MEMs inside CLOBBERs.
127
128 2007-06-20  Rask Ingemann Lambertsen  <rask@sygehus.dk>
129
130         PR target/32335
131         * config/m32c/m32c.c (m32c_emit_epilogue): Use new HImode epilogue
132         for TARGET_A16.
133         * config/m32c/prologue.md (epilogue_exitd_16): New.
134         (epilogue_reit_16): New.
135         (epilogue_exitd): Rename to epilogue_exitd_24.
136         (epilogue_reit): Rename to epilogue_reit_24.
137
138 2007-06-20  Seongbae Park  <seongbae.park@gmail.com>
139             Maxim Kuvyrkov  <mkuvyrkov@ispras.ru>
140
141         * dbgcnt.def (global_alloc_at_func, global_alloc_at_reg):
142         New counters.
143         * haifa-sched.c (queue_to_ready): Don't requeue next insn
144         if dbg_cnt (sched_insn) reaches the limit.
145         (choose_ready): New parameter INSN_PTR and new return value.
146         (schedule_block): Handle dbg_cnt (sched_insn). Handle
147         the new return value from choose_ready.
148         * global.c (global_aloc): New dbgcnt global_alloc_at_reg.
149         (rest_of_handle_global_alloc): New global_alloc_at_func.
150
151 2007-06-20  Adam Nemet  <anemet@caviumnetworks.com>
152
153         PR tree-optimization/25737
154         * tree.h (struct tree_struct_field_tag): Add new field alias_set.
155         (SFT_NONADDRESSABLE_P, SFT_ALIAS_SET): New macros.
156         * tree-flow.h (struct fieldoff): Add new field alias_set.
157         * tree-ssa-structalias.c (push_fields_onto_fieldstack): Add new
158         argument addressable_type.  Set alias_set of fieldoff.
159         * tree-ssa-alias.c (create_sft): Add new argument alias_set.
160         (create_overlap_variables_for): Pass alias_set from fieldoff to
161         create_sft.
162         * alias.c (get_alias_set): Use alias_set from SFT if set.
163
164 2007-06-20  Hui-May Chang  <hm.chang@apple.com>
165
166         * config/i386/darwin.h (ASM_OUTPUT_COMMON): Print the size
167         of a variable as an unsigned HOST_WIDE_INT integer.
168
169 2007-06-20  Zdenek Dvorak  <dvorakz@suse.cz>
170
171         PR rtl-optimization/32405
172         * loop-iv.c (iv_get_reaching_def): Fail for partial defs.
173
174 2007-06-20  Jakub Jelinek  <jakub@redhat.com>
175
176         * Makefile.in (omega.o): Depend on $(DIAGNOSTIC_H).
177
178         PR middle-end/31959
179         * builtins.c: Include diagnostic.h.
180         (expand_builtin_expect): Make gcc_assert more permissive.
181         * Makefile.in (builtins.o): Depend on $(DIAGNOSTIC_H).
182
183         PR inline-asm/32109
184         * gimplify.c (gimplify_asm_expr): Issue error if type is addressable
185         and !allows_mem.
186
187         PR middle-end/32285
188         * calls.c (precompute_arguments): Also precompute CALL_EXPR arguments
189         if ACCUMULATE_OUTGOING_ARGS.
190
191 2007-06-19  Rask Ingemann Lambertsen  <rask@sygehus.dk>
192
193         * config/m68hc11/m68hc11.c: Include dataflow header file.
194         (m68hc11_reorg): Port to dataflow.
195
196 2007-06-19  Kenneth Zadeck <zadeck@naturalbridge.com>
197
198         * df.h (DF_FIRST_OPTIONAL_PROBLEM): Removed.
199         (struct df_problem.free_blocks_on_set_blocks): New field.
200         (struct dataflow.optional_p): New field.
201         (df_bb_regno_last_use_find, df_insn_regno_def_p): Removed.
202         (df_live_set_all_dirty): New function.
203         * df-scan.c (df_scan_alloc): Initialize optional_p.
204         (problem_SCAN): Initialize free_blocks_on_set_blocks.
205         * df-core.c (df_set_blocks): Removed use of
206         DF_FIRST_OPTIONAL_PROBLEM.  Now uses
207         df_problem.free_blocks_on_set_blocks to determine which blocks are
208         recycled.
209         (df_remove_problem): Removed use of DF_FIRST_OPTIONAL_PROBLEM.
210         (df_finish_pass): Removed use of DF_FIRST_OPTIONAL_PROBLEM.  Now
211         uses dataflow.optional_p to determine if problem should be
212         deleted.
213         (rest_of_handle_df_initialize): Only start live problem if 
214         -02 or above.
215         (df_bb_regno_last_use_find, df_insn_regno_def_p): Removed.
216         * df-problems.c (df_ru_alloc, df_rd_alloc, df_lr_alloc,
217         df_live_alloc, df_urec_alloc, df_note_alloc): set optional_p.
218         (problem_RU, problem_RD, problem_LR, problem_UREC, problem_CHAIN,
219         problem_NOTE):  Initialize free_blocks_on_set_blocks.
220         (df_lr_bb_local_compute): Recompute luids if df_live problem is
221         not active.
222         (df_live_set_all_dirty, df_note_alloc): New function.
223         * regrename.c (merge_overlapping_regs): Change DF_LIVE_* to
224         df_get_live_*.
225         * sched_ebb.c (compute_jump_reg_dependencies): Ditto.
226         * postreload.c (reload_combine): Ditto.
227         * cse.c (cse_extended_basic_block): Ditto.
228         * regmove.c (mark_flags_life_zones): Ditto.
229         * rtlfactoring.c (split_blocks_after_seqs, split_pattern_seq,
230         erase_matching_seqs): Ditto.
231         * bt-load.c (compute_defs_uses_and_gen): Ditto.
232         * integrate (allocate_initial_values): Ditto.
233         * combine.c (reg_dead_at_p): Ditto.
234         * resource.c (mark_target_live_regs): Ditto.
235         * sched-rgn.c (check_live_1, update_live_1): Ditto.
236         * config/sh/sh.c (find_r0_life_regions): Ditto.
237         * global.c (rest_of_handle_global_alloc): Only add back df_live
238         for -O > 1.
239         * local-alloc.c (rest_of_handle_local_alloc): Only remove
240         df_live for -O > 1.
241         * ifcvt.c (dead_or_predicable): Change DF_LIVE_* to
242         df_get_live_*.
243         (if_convert): Make sure df_live is there at -O == 1.
244         (pass_if_after_combine): Cleanup flags.
245         * init-regs.c (initialize_uninitialized_regs): Make sure df_live
246         is there at -O == 1.
247         
248 2007-06-19  Seongbae Park  <seongbae.park@gmail.com>
249
250         * config/arm/arm.c (arm_get_frame_offsets): Set
251         offsets->locals_base to avoid negative stack size.
252         (thumb1_expand_prologue): Assert on negative stack size.
253
254 2007-04-19  Sebastian Pop  <sebpop@gmail.com>
255
256         PR tree-optimization/32367
257         * tree-chrec.h (build_polynomial_chrec): Verify that the left hand side 
258         of the chrec has no evolution in that loop.
259         * testsuite/gcc.dg/tree-ssa/pr32367.c: New.
260
261 2007-06-19  Bob Wilson  <bob.wilson@acm.org>
262
263         * config/xtensa/xtensa.c: Include "df.h".
264         (xtensa_builtin_saveregs): Use adjust_address instead of change_address.
265         (xtensa_va_start): Invoke make_tree with sizetype for
266         expand_builtin_saveregs and then convert the result to a pointer.
267         Use POINTER_PLUS_EXPR.  Use size_int instead of build_int_cst.
268         (xtensa_gimplify_va_arg_expr): Use size_int instead of build_int_cst.
269         Subtract argument size from index value as integers and then use
270         POINTER_PLUS_EXPR to add the result to the array address.
271         
272 2007-06-19  Rask Ingemann Lambertsen  <rask@sygehus.dk>
273
274         PR target/32335
275         * config/m32c/m32c.c: Include dataflow header file.
276         (m32c_emit_prologue): Adjust for prologue insn change.
277         * config/m32c/prologue.md (prologue_enter_16): Only modify SP_REGNO
278         once inside a PARALLEL. Assume frame size passed in operand 0
279         includes space to save the fb register.
280         (prologue_enter_24): Likewise.
281         (epilogue_exitd): Only modify SP_REGNO once inside a PARALLEL.
282
283 2007-06-19  David Daney  <ddaney@avtrex.com
284
285         PR target/32313
286         * config/mips/mips.md (cprestore): Mark $gp as used.
287
288 2007-06-19  Rask Ingemann Lambertsen  <rask@sygehus.dk>
289
290         PR target/32369
291         * config/frv/frv.c (frv_ifcvt_modify_tests): Dataflow merge fix.
292         (frv_ifcvt_modify_insn): Likewise.
293
294 2007-06-19  Richard Guenther  <rguenther@suse.de>
295
296         * tree-ssa-structalias.c (handle_ptr_arith): Make sure to
297         only handle positive offsets that fit in a HOST_WIDE_INT.
298
299 2007-06-19  Uros Bizjak  <ubizjak@gmail.com>
300
301         * config/i386/i386.c (ix86_emit_swsqrtsf): Filter out infinity
302         result of rsqrt insn for zero input argument to avoid NaN.
303
304 2007-06-19  Richard Guenther  <rguenther@suse.de>
305
306         PR middle-end/31950
307         * tree-ssa-alias-warnings.c (ffan_walker): Punt on MTAGs.
308
309 2007-06-19  Jakub Jelinek  <jakub@redhat.com>
310
311         PR tree-optimization/32353
312         * tree-ssa-structalias.c (set_uids_in_ptset): Also handle RESULT_DECL.
313
314 2007-06-19  Nick Clifton  <nickc@redhat.com>
315
316         * config/m32r/linux.h (LIB_SPEC): Always imply -lpthread for
317         -pthread.
318
319 2007-06-18  Uros Bizjak  <ubizjak@gmail.com>
320
321         PR target/32389
322         * config/i386/i386.h (enum ix86_stack_slot): Add SLOT_VIRTUAL.
323         * config/i386/i386.c (assign_386_stack_local): Assert that
324         SLOT_VIRTUAL is valid only before virtual regs are instantiated.
325         (ix86_expand_builtin) [IX86_BUILTIN_LDMXCSR, IX86_BUILTIN_STMXCSR]:
326         Use SLOT_VIRTUAL stack slot instead of SLOT_TEMP.
327         * config/i386/i386.md (truncdfsf2, truncxf<mode>2): Ditto.
328
329 2007-06-18  Steve Ellcey  <sje@cup.hp.com>
330
331         * config/ia64/ia64.h (LIBGCC2_TF_CEXT): New.
332
333 2007-06-18  Seongbae Park  <seongbae.park@gmail.com>
334
335         PR rtl-optimization/32321
336         * gcse.c (replace_store_insn): Update the note before
337         calling emit_insn_after.
338
339 2007-06-18  David Daney  <ddaney@avtrex.com
340
341         Revert:
342
343         2007-06-18  David Daney  <ddaney@avtrex.com
344
345         PR target/32313
346         * config/mips/mips.c (mips_expand_call): Mark $gp as used by
347         local function call.
348
349 2007-06-18  David Daney  <ddaney@avtrex.com
350
351         PR target/32313
352         * config/mips/mips.c (mips_expand_call): Mark $gp as used by
353         local function call.
354
355 2007-06-18  Kenneth Zadeck <zadeck@naturalbridge.com>
356
357         PR middle-end/32355
358         * gcse (rest_of_handle_gcse): Add call to df_finish_pass after
359         cse_main.
360         * df-problems.c (df_note_bb_compute): Fix dumping info.
361         
362 2007-06-18  Kazu Hirata  <kazu@codesourcery.com>
363
364         * config/m68k/m68k.c (m68k_expand_epilogue): Emit a return
365         insn with emit_jump_insn.
366
367 2007-06-18  Uros Bizjak  <ubizjak@gmail.com>
368
369         PR tree-optimization/32383
370         * targhooks.c (default_builtin_reciprocal): Add new bool argument.
371         * targhooks.h (default_builtin_reciprocal): Update prototype.
372         * target.h (struct gcc_target): Update builtin_reciprocal.
373         * doc/tm.texi (TARGET_BUILTIN_RECIPROCAL): Update description.
374         * tree-ssa-math-opts (execute_cse_reciprocals): Skip statements
375         where arg1 is not SSA_NAME.  Pass true to targetm.builtin_reciprocal
376         when fndecl is in BUILT_IN_MD class.
377         (execute_convert_to_rsqrt): Ditto.
378
379         * config/i386/i386.c (ix86_builtin_reciprocal): Update for new bool
380         argument.  Convert IX86_BUILTIN_SQRTPS code only when md_fn is true.
381         Convert BUILT_IN_SQRTF code only  when md_fn is false.
382
383 2007-06-18  Kaz Kojima  <kkojima@gcc.gnu.org>
384
385         * bt-load.c (move_btr_def): Fix the order of arguments
386         to validate_replace_rtx.
387
388 2007-06-18  Nathan Sidwell  <nathan@codesourcery.com>
389
390         * config/m68k/m68k-devices.def: Add 54450..54455.
391
392 2007-06-17  Uros Bizjak  <ubizjak@gmail.com>
393
394         PR rtl-optimization/32366
395         * simplify-rtx.c (simplify_unary_operation_1) [FLOAT_TRUNCATE,
396         FLOAT_EXTEND]: Prevent non-scalar modes from entering
397         significand_size.
398
399 2007-06-17  Kenneth Zadeck <zadeck@naturalbridge.com>
400
401         PR middle-end/32349
402         * modulo-sched (generate_reg_moves): Added rescan parameter and if
403         this is true, rescan insn being modified.
404         (sms_schedule): Added rescan parameter.
405         (rest_of_handle_sms): Moved freeing of dominance info to before
406         getting out of cfg_layout.
407         
408 2007-06-17  Nathan Sidwell  <nathan@codesourcery.com>
409
410         * config/m68k/m68k.h (ISA_HAS_FF1, ISA_HAS_MVS_MVZ): New.
411         * config/m68k/m68k.md: Use ISA_HAS_FF1 and ISA_HAS_MVS_MVZ as
412         appropriate.
413
414         * config/m68k/m68k.c (all_isas): Remove FL_CF_FPU and
415         FL_CF_EMAC from the entry for isac.
416
417         * config/m68k/predicates.md (const_call_operand): Adjust comment.
418         (const_sibcall_operand): New.
419         (sibcall_operand): Use it.
420         * config/m68k/m68k.c (FL_FOR_isa_c): Not ISA_B compatible.
421         (m68k_isas): ISAC does not imply FPU or EMAC.
422         (override_options): Add ISA_C logic for symbolic jump & call.
423
424 2007-06-17  Eric Botcazou  <ebotcazou@libertysurf.fr>
425
426         * config/sparc/sparc.c (sparc_vis_init_builtins): Retrieve the
427         return mode from the builtin itself.
428         (sparc_fold_builtin): Fix cast of zero constant.
429
430 2007-06-16  Uros Bizjak  <ubizjak@gmail.com>
431
432         * targhooks.c (default_builtin_reciprocal): New default target hook.
433         * targhooks.h (default_builtin_reciprocal): Add prototype.
434         * hooks.c (hook_tree_tree_bool_null): Remove hook.
435         * hooks.h (hook_tree_tree_bool_null): Remove prototype.
436         * target-def.h (TARGET_BUILTIN_RECIPROCAL): Define as
437         default_builtin_reciprocal.
438
439 2007-06-16  Uros Bizjak  <ubizjak@gmail.com>
440
441         PR middle-end/31723
442         * hooks.c (hook_tree_tree_bool_null): New hook.
443         * hooks.h (hook_tree_tree_bool_null): Add prototype.
444         * tree-pass.h (pass_convert_to_rsqrt): Declare.
445         * passes.c (init_optimization_passes): Add pass_convert_to_rsqrt.
446         * tree-ssa-math-opts.c (execute_cse_reciprocals): Scan for a/func(b)
447         and convert it to reciprocal a*rfunc(b).
448         (execute_convert_to_rsqrt): New function.
449         (gate_convert_to_rsqrt): New function.
450         (pass_convert_to_rsqrt): New pass definition.
451         * target.h (struct gcc_target): Add builtin_reciprocal.
452         * target-def.h (TARGET_BUILTIN_RECIPROCAL): New define.
453         (TARGET_INITIALIZER): Initialize builtin_reciprocal with
454         TARGET_BUILTIN_RECIPROCAL.
455         * doc/tm.texi (TARGET_BUILTIN_RECIPROCAL): Document.
456
457         * config/i386/i386.h (TARGET_RECIP): New define.
458         * config/i386/i386.md (divsf3): Expand by calling ix86_emit_swdivsf
459         for TARGET_SSE_MATH and TARGET_RECIP when flag_finite_math_only and
460         flag_unsafe_math_optimizations are set, flag_trapping_math is unset
461         and not optimizing for size.
462         (*rcpsf2_sse): New insn pattern.
463         (*rsqrtsf2_sse): Ditto.
464         (rsqrtsf2): New expander.  Expand by calling ix86_emit_swsqrtsf
465         for TARGET_SSE_MATH and TARGET_RECIP when flag_finite_math_only and
466         flag_unsafe_math_optimizations are set, flag_trapping_math is unset
467         and not optimizing for size.
468         (sqrt<mode>2): Expand SFmode operands by calling ix86_emit_swsqrtsf
469         for TARGET_SSE_MATH and TARGET_RECIP when flag_finite_math_only and
470         flag_unsafe_math_optimizations are set, flag_trapping_math is unset
471         and not optimizing for size.
472         * config/i386/sse.md (divv4sf): Expand by calling ix86_emit_swdivsf
473         for TARGET_SSE_MATH and TARGET_RECIP when flag_finite_math_only and
474         flag_unsafe_math_optimizations are set, flag_trapping_math is unset
475         and not optimizing for size.
476         (*sse_rsqrtv4sf2): Do not export.
477         (sqrtv4sf2): Ditto.
478         (sse_rsqrtv4sf2): New expander.  Expand by calling ix86_emit_swsqrtsf
479         for TARGET_SSE_MATH and TARGET_RECIP when flag_finite_math_only and
480         flag_unsafe_math_optimizations are set, flag_trapping_math is unset
481         and not optimizing for size.
482         (sqrtv4sf2): Ditto.
483         * config/i386/i386.opt (mrecip): New option.
484         * config/i386/i386-protos.h (ix86_emit_swdivsf): Declare.
485         (ix86_emit_swsqrtsf): Ditto.
486         * config/i386/i386.c (IX86_BUILTIN_RSQRTF): New constant.
487         (ix86_init_mmx_sse_builtins): __builtin_ia32_rsqrtf: New
488         builtin definition.
489         (ix86_expand_builtin): Expand IX86_BUILTIN_RSQRTF using
490         ix86_expand_unop1_builtin.
491         (ix86_emit_swdivsf): New function.
492         (ix86_emit_swsqrtsf): Ditto.
493         (ix86_builtin_reciprocal): New function.
494         (TARGET_BUILTIN_RECIPROCAL): Use it.
495         (ix86_vectorize_builtin_conversion): Rename from
496         ix86_builtin_conversion.
497         (TARGET_VECTORIZE_BUILTIN_CONVERSION): Use renamed function.
498         * doc/invoke.texi (Machine Dependent Options): Add -mrecip to
499         "i386 and x86_64 Options" section.
500         (Intel 386 and AMD x86_64 Options): Document -mrecip.
501
502 2007-06-15  Andrew Pinski <andrew_pinski@playstation.sony.com>
503             Zdenek Dvorak <dvorakz@suse.cz>
504             Richard Guenther  <rguenther@suse.de>
505             Kaz Kojima  <kkojima@gcc.gnu.org>
506
507         * tree-vrp.c (compare_values_warnv): Convert val2 to
508         the type of val1.
509         (extract_range_from_assert): Create
510         POINTER_PLUS_EXPR for pointer types.
511         (extract_range_from_binary_expr): Handle
512         only POINTER_PLUS_EXPR, MIN_EXPR, and MAX_EXPR
513         for pointer types.
514         * doc/c-tree.texi (POINTER_PLUS_EXPR): Document.
515         * tree-ssa-loop-niter.c (split_to_var_and_offset): Handle
516         POINTER_PLUS_EXPR as PLUS_EXPR.
517         (number_of_iterations_lt_to_ne):
518         For pointer types, use sizetype when
519         creating MINUS_EXPR/PLUS_EXPRs.
520         (assert_loop_rolls_lt): For pointer types, use sizetype when
521         creating MINUS_EXPR/PLUS_EXPRs.
522         (number_of_iterations_le): Likewise.
523         (expand_simple_operations): POINTER_PLUS_EXPR are simple also.
524         (derive_constant_upper_bound): Handle POINTER_PLUS_EXPR just
525         like PLUS_EXPR and MINUS_EXPR.
526         * tree-pretty-print.c (dump_generic_node): Handle
527         POINTER_PLUS_EXPR.
528         (op_prio): Likewise.
529         (op_symbol_1): Likewise.
530         * optabs.c (optab_for_tree_code): Likewise.
531         * tree-ssa-loop-manip.c (create_iv): Handle pointer base
532         specially.
533         * tree-tailcall.c (process_assignment): Mention
534         POINTER_PLUS_EXPR in a TODO comment.
535         * tree.c (build2_stat): Assert when trying to use PLUS_EXPR or 
536         MINUS_EXPR with a pointer. Also assert for POINTER_PLUS_EXPR
537         not used with a pointer and an integer type.
538         * tree-scalar-evolution.c (add_to_evolution_1): Convert the
539         increment using chrec_convert_rhs instead of chrec_convert.
540         (follow_ssa_edge_in_rhs): Handle POINTER_PLUS_EXPR like
541         PLUS_EXPR except for the right hand side's type will be
542         sizetype.
543         (interpret_rhs_modify_stmt): Handle POINTER_PLUS_EXPR.
544         (fold_used_pointer_cast): Kill.
545         (pointer_offset_p): Kill.
546         (fold_used_pointer): Kill.
547         (pointer_used_p): Kill.
548         (analyze_scalar_evolution_1 <case GIMPLE_MODIFY_STMT>): Don't
549         call fold_used_pointer.
550         (instantiate_parameters_1): Convert the increment
551         using chrec_convert_rhs instead of chrec_convert.
552         Handle POINTER_PLUS_EXPR as PLUS_EXPR.
553         * builtins.c (get_pointer_alignment): Handle POINTER_PLUS_EXPR
554         instead of PLUS_EXPR.
555         (expand_builtin_strcat): Create a POINTER_PLUS_EXPR instead of
556         PLUS_EXPR for pointers.
557         (std_gimplify_va_arg_expr): Likewise.
558         (fold_builtin_memory_op): Likewise.
559         (fold_builtin_strstr): Likewise.
560         (fold_builtin_strchr): Likewise.
561         (fold_builtin_strrchr): Likewise.
562         (fold_builtin_strpbrk): Likewise.
563         (expand_builtin_memory_chk): Likewise.
564         (fold_builtin_memory_chk): Likewise.
565         (std_expand_builtin_va_start): Use
566         sizetype for the call to make_tree and then convert
567         to the pointer type.
568         (fold_builtin_memchr): Use POINTER_PLUS_EXPR
569         instead of PLUS_EXPR for adding to a pointer.
570         (std_gimplify_va_arg_expr): Use fold_build2 for
571         the creating of POINTER_PLUS_EXPR.  For the BIT_AND_EXPR, cast
572         the operands to sizetype first and then cast the BIT_AND_EXPR
573         back to the pointer type.
574         * fold-const.c (build_range_check): Handle pointer types
575         specially.
576         (extract_array_ref): Look for POINTER_PLUS_EXPR instead
577         of PLUS_EXPR's. Make sure the offset is converted to
578         sizetype.
579         (try_move_mult_to_index): Strip the NOPs from the offset.
580         Remove code argument and replace all uses with PLUS_EXPR.
581         (fold_to_nonsharp_ineq_using_bound): Handle pointer types
582         specially. Don't use a pointer type for MINUS_EXPR.
583         (fold_unary): Handle for (T1)(X op Y),
584         only p+ as that is the only as that can be handled for
585         binary operators now.
586         (fold_binary <case POINTER_PLUS_EXPR>): Add folding of
587         POINTER_PLUS_EXPR.
588         <case PLUS_EXPR>: Add folding of PTR+INT into
589         PTR p+ INT.
590         Don't call try_move_mult_to_index.
591         <case MINUS_EXPR>: Fold (PTR0 p+ A) - (PTR1 p+ B)
592         into (PTR0 - PTR1) + (A - B). Fold (PTR0 p+ A) - PTR1 into
593         (PTR0 - PTR1) + A iff (PTR0 - PTR1) simplifies.
594         Don't call try_move_mult_to_index.
595         (tree_expr_nonnegative_warnv_p): Handle POINTER_PLUS_EXPR.
596         (tree_expr_nonzero_p): Likewise.
597         (fold_indirect_ref_1): Look at POINTER_PLUS_EXPR instead
598         of PLUS_EXPR for the complex expression folding.
599         * tree-chrec.c (chrec_fold_plus_poly_poly): If the
600         first chrec is a pointer type, then the second should
601         be sizetype and not the first's type.
602         For POINTER_PLUS_EXPR, use a different right hand side type.
603         Handle POINTER_PLUS_EXPR like PLUS_EXPR.
604         (chrec_fold_plus_1): For POINTER_PLUS_EXPR, use a
605         different right hand side type.
606         Handle POINTER_PLUS_EXPR like PLUS_EXPR.
607         (chrec_fold_plus): For pointer types, use POINTER_PLUS_EXPR
608         instead of PLUS_EXPR.
609         When either operand is zero, convert the other operand.
610         (chrec_apply): Use chrec_convert_rhs
611         on the argument x instead of chrec_convert.
612         (reset_evolution_in_loop): For pointer types, the new_evol
613         should be sizetype.
614         (convert_affine_scev): For POINTER_PLUS_EXPR, use a
615         different right hand side type.
616         Handle POINTER_PLUS_EXPR like PLUS_EXPR.
617         (chrec_convert_rhs): New function.
618         (chrec_convert_aggressive): For POINTER_PLUS_EXPR, use a
619         different right hand side type.
620         Handle POINTER_PLUS_EXPR like PLUS_EXPR.
621         * tree-chrec.h (chrec_convert_rhs): New prototype.
622         (build_polynomial_chrec): For pointer types, the right hand
623         * tree-ssa-ccp.c (maybe_fold_stmt_indirect): Look for
624         POINTER_PLUS_EXPR instead of PLUS_EXPR's.
625         Remove subtraction case as it is always addition now.
626         Make sure the offset is converted to sizetype.
627         (fold_stmt_r): Don't handle PLUS_EXPR/MINUS_EXPR specially.
628         Handle POINTER_PLUS_EXPR like PLUS_EXPR was handled before.
629         * tree-ssa-loop-ivopts.c (determine_base_object): Abort for 
630         PLUS_EXPR in pointer type.
631         Handle POINTER_PLUS_EXPR.
632         (tree_to_aff_combination): Likewise.
633         (force_expr_to_var_cost): Likewise.
634         (force_expr_to_var_cost): Likewise. Create a POINTER_PLUS_EXPR
635         instead of PLUS_EXPR for pointers.
636         * c-format.c (check_format_arg): Handle POINTER_PLUS_EXPR
637         instead of PLUS_EXPR of pointer types.
638         * tree-stdarg.c (va_list_counter_bump): Handle POINTER_PLUS_EXPR
639         as PLUS_EXPR.
640         (check_va_list_escapes): Likewise.
641         (check_all_va_list_escapes): Likewise.
642         * dwarf2out.c (loc_descriptor_from_tree_1):
643         Handle POINT_PLUS_EXPR as a PLUS_EXPR.
644         * expr.c (expand_expr_real_1): Handle POINTER_PLUS_EXPR.
645         (string_constant): Likewise.
646         * tree-ssa-address.c (tree_mem_ref_addr): When adding
647         the offset to the base, use POINTER_PLUS_EXPR.
648         (add_to_parts): Convert the index to sizetype.
649         (create_mem_ref): Create A POINTER_PLUS_EXPR for the one case.
650         * matrix-reorg.c (collect_data_for_malloc_call): Stmt
651         will now only be either INDIRECT_REF and POINTER_PLUS_EXPR.
652         Offset only holds something for PLUS_EXPR.
653         (ssa_accessed_in_tree): Handle POINTER_PLUS_EXPR just as
654         a PLUS_EXPR.
655         (analyze_transpose): POINTER_PLUS_EXPR will only show up now
656         and not PLUS_EXPR.
657         (analyze_accesses_for_modify_stmt): Likewise.
658         Remove comment about the type being integral type as it is
659         wrong now.
660         (can_calculate_expr_before_stmt): Handle POINTER_PLUS_EXPR as
661         PLUS_EXPR.
662         (transform_access_sites): POINTER_PLUS_EXPR will only show up now
663         and not PLUS_EXPR.
664         Correct the type which the artimentic is done in (is now
665         sizetype).
666         Reindent one loop.
667         * tree-data-ref.c (split_constant_offset): Handle
668         POINTER_PLUS_EXPR
669         * tree-affine.c (tree_to_aff_combination): Likewise.
670         * c-typeck.c (build_unary_op): For pointers create the increment
671         as a sizetype. Create a POINTER_PLUS_EXPR instead of PLUS_EXPR
672         for pointers.
673         * gimplify.c (gimplify_self_mod_expr): Create a
674         POINTER_PLUS_EXPR instead of PLUS_EXPR for pointers.
675         (gimplify_omp_atomic_fetch_op): Handle POINTER_PLUS_EXPR.
676         * tree.def (POINTER_PLUS_EXPR): New tree code.
677         * tree-predcom.c (ref_at_iteration): If we have a pointer
678         type do the multiplication in sizetype.
679         * tree-mudflap.c (mf_xform_derefs_1): Create a
680         POINTER_PLUS_EXPR instead of PLUS_EXPR for pointers.
681         * tree-ssa-forwprop.c 
682         (forward_propagate_addr_into_variable_array_index):
683         Don't expect there to be a cast for the index as that
684         does not exist anymore.
685         (forward_propagate_addr_expr_1): Check for POINTER_PLUS_EXPR
686         instead of PLUS_EXPR.
687         Don't check for the first operand of the POINTER_PLUS_EXPR
688         was the index as it cannot be.
689         Call forward_propagate_addr_into_variable_array_index with
690         the SSA_NAME instead of the statement.
691         * varasm.c (const_hash_1): Handle POINTER_PLUS_EXPR.
692         (compare_constant): Likewise.
693         (copy_constant): Likewise.
694         (compute_reloc_for_constant): Likewise.
695         (output_addressed_constants): Likewise.
696         (initializer_constant_valid_p): Likewise.
697         * tree-ssa.c (tree_ssa_useless_type_conversion_1):
698         Convert the MIN/MAX of the inner type to the outer
699         type before comparing them.
700         * tree-ssa-loop-prefetch.c (idx_analyze_ref):  Handle
701         POINTER_PLUS_EXPR instead of PLUS_EXPR.
702         (issue_prefetch_ref): Create a POINTER_PLUS_EXPR instead
703         of PLUS_EXPR for pointers.
704         * tree-inline.c (estimate_num_insns_1): Handle
705         POINTER_PLUS_EXPR.
706         * tree-vect-transform.c (vect_create_addr_base_for_vector_ref): 
707         Create a POINTER_PLUS_EXPR instead of PLUS_EXPR for pointers.
708         (bump_vector_ptr): Create a POINTER_PLUS_EXPR
709         instead of PLUS_EXPR for the pointer increment statement.
710         (vect_update_ivs_after_vectorizer): For pointer types, create
711         POINTER_PLUS_EXPR instead of PLUS_EXPR and also create
712         MULT_EXPR in sizetype.
713         (vect_gen_niters_for_prolog_loop): Add a cast when creating
714         byte_misalign.
715         * tree-object-size.c (plus_expr_object_size): Handle
716         POINTER_PLUS_EXPR instead of PLUS_EXPR.  Removing all the extra
717         code which is trying to figure out which side is a pointer and 
718         is the index.
719         (check_for_plus_in_loops_1): Likewise.
720         (check_for_plus_in_loops): Likewise.
721         * c-common.c (pointer_int_sum): Create a
722         POINTER_PLUS_EXPR instead of PLUS_EXPR for pointers.
723         * tree-ssa-structalias.c (handle_ptr_arith): Handle
724         only POINTER_PLUS_EXPR.  Removing all the extra
725         code which is trying to figure out which side is a pointer and 
726         is the index.
727         * tree-cfg.c (verify_expr): Add extra checking for pointers and
728         PLUS_EXPR and MINUS_EXPR.
729         Also add checking to make sure the operands of POINTER_PLUS_EXPR
730         are correct.
731         * config/frv/frv.c (frv_expand_builtin_va_start): Use sizetype
732         with make_tree, instead of a pointer type.
733         * config/s390/s390.c (s390_va_start): Use POINTER_PLUS_EXPR
734         for pointers instead of PLUS_EXPR.
735         (s390_gimplify_va_arg): Likewise.
736         * config/spu/spu.c (spu_va_start): Create POINTER_PLUS_EXPR
737         instead of PLUS_EXPR when doing addition on pointer
738         types.  Use sizetype for the second operand.
739         (spu_gimplify_va_arg_expr): Likewise.
740         * config/sparc/sparc.c (sparc_gimplify_va_arg): Use 
741         POINTER_PLUS_EXPR instead of PLUS_EXPR when the operand was
742         a pointer.  Don't create a BIT_AND_EXPR for pointer types.
743         * config/i386/i386.c (ix86_va_start): Use POINTER_PLUS_EXPR
744         for the pointer addition and also use size_int/sizetype
745         for the offset.
746         (ix86_gimplify_va_arg): Likewise.
747         Perform BIT_AND_EXPR on sizetype arguments.
748         * config/sh/sh.c (sh_va_start): Call make_tree with sizetype
749         and convert its result to a pointer type.  Use POINTER_PLUS_EXPR
750         for the pointer additions and also use size_int for the offsets.
751         (sh_gimplify_va_arg_expr): Use POINTER_PLUS_EXPR for the pointer
752         additions and also use size_int for the offsets.  Perform
753         BIT_AND_EXPR on sizetype arguments.
754         * config/ia64/ia64.c (ia64_gimplify_va_arg): Use
755         POINTER_PLUS_EXPR for pointers and create the
756         BIT_AND_EXPR in sizetype.
757         * config/rs6000/rs6000.c (rs6000_va_start): Use POINTER_PLUS_EXPR
758         instead of PLUS_EXPR for pointer addition.
759         (rs6000_va_start): Likewise.
760         Also use sizetype for the offset.
761         * config/pa/pa.c (reloc_needed): Handle POINTER_PLUS_EXPR
762         as PLUS_EXPR/MINUS_EXPR.
763         (hppa_gimplify_va_arg_expr): Don't create MINUS_EXPR or
764         PLUS_EXPR for pointers, instead use POINTER_PLUS_EXPR.
765         Don't use BIT_AND_EXPR on a pointer type, convert the
766         expression to sizetype first.
767         * config/mips/mips.c (mips_va_start): Use POINTER_PLUS_EXPR
768         for pointers.
769         (mips_gimplify_va_arg_expr): Likewise.
770         Don't create BIT_AND_EXPR in a pointer type.
771
772 2007-06-15  Eric Christopher  <echristo@apple.com>
773
774         * config.gcc (i?86-*-darwin*): Add t-crtfm and t-crtpc.
775         (x86_64-*-darwin*): Ditto.
776         * config/i386/darwin.h (CRTEND_SPEC): New. Add support
777         for above.
778
779 2007-06-15  Matthew Wilcox <matthew@wil.cx>
780
781         * doc/extend.texi: Document behavior of __attribute__((aligned))
782         on typedefs.
783
784 2007-06-15  Mark Mitchell  <mark@codesourcery.com>
785
786         * rtlanal.c (note_stores): Improve documentation.
787
788 2007-06-15  Bernd Schmidt  <bernd.schmidt@analog.com>
789
790         * config/bfin/elf.h (ASM_GENERATE_INTERNAL_LABEL,
791         LOCAL_LABEL_PREFIX): Delete.
792         * config/bfin/bfin.c (TARGET_ASM_INTERNAL_LABEL): Delete.
793         (bfin_internal_label): Delete.
794
795 2007-06-15  Uros Bizjak  <ubizjak@gmail.com>
796
797         * libgcc2.c (CEXT): When compiling L_multc3 and L_divtc3,
798         define to "l" if LIBGCC_LONG_DOUBLE_SIZE == 128,
799         otherwise define to LIBGCC2_TF_CEXT.
800         * config/i386/linux64.h (LIBGCC2_HAS_TF_MODE): New define.
801         (LIBGCC_TF_CEXT): Ditto.
802         (TF_SIZE): Ditto.
803
804 2007-06-14  Seongbae Park  <seongbae.park@gmail.com>
805
806         PR rtl-optimization/32339
807         * df-scan.c (df_uses_record): Don't modify flags but just add to
808         it for df_ref_record.
809
810 2007-06-14  Andrew Pinski  <andrew_pinski@playstation.sony.com>
811
812         * tree-mudflap.c: Fix whitespace issues.
813
814 2007-06-15  Kazu Hirata  <kazu@codesourcery.com>
815
816         * config/m68k/m68k.c (ASM_DOT, ASM_DOTW, ASM_DOTL): Remove.
817
818 2007-06-14  Eric Christopher  <echristo@apple.com>
819
820         * config/i386/sse.md (movdi_to_sse): Rewrite body.
821         (movv4sf): Use gcc_unreachable instead of abort.
822
823 2007-06-14  Uros Bizjak  <ubizjak@gmail.com>
824
825         PR target/32268
826         * config/i386/sfp-machine.h (CMPtype): New define.
827         (mach stubs): Use CMPtype instead of int as a return type.
828
829 2007-06-14  Uros Bizjak  <ubizjak@gmail.com>
830
831         * config/soft-fp/eqdf2.c, config/soft-fp/eqsf2.c,
832         config/soft-fp/eqtf2.c, config/soft-fp/gedf2.c,
833         config/soft-fp/gesf2.c, config/soft-fp/getf2.c,
834         config/soft-fp/ledf2.c, config/soft-fp/lesf2.c,
835         config/soft-fp/letf2.c, config/soft-fp/unorddf2.c,
836         config/soft-fp/unordsf2.c, config/soft-fp/unordtf2.c,
837         config/soft-fp/soft-fp.h: Update from glibc CVS.
838
839 2007-06-14  Bernd Schmidt  <bernd.schmidt@analog.com>
840
841         * config/bfin/uclinux.h (MFWRAP_SPEC): New.
842
843 2007-06-14  Rask Ingemann Lambertsen  <rask@sygehus.dk>
844
845         PR target/32341
846         * config/v850/v850.c: Include dataflow header file.
847         (substitute_ep_register): Fix typo.
848
849 2007-06-14  Paolo Bonzini  <bonzini@gnu.org>
850
851         * configure.ac: Fix earlier checkin.
852         * configure: Regenerated.
853
854 2007-06-14  Paolo Bonzini  <bonzini@gnu.org>
855
856         * acinclude.m4 (gcc_AC_CHECK_PROG_VER): Remove.
857         * aclocal.m4: Regenerate.
858         * configure.ac: Use ACX_PROG_CC_WARNING_OPTS,
859         ACX_PROG_CC_WARNINGS_ARE_ERRORS,
860         ACX_PROG_CC_WARNING_ALMOST_PEDANTIC, ACX_CHECK_PROG_VER.
861         * configure: Regenerate.
862         * Makefile.in (LOOSE_WARN): Subst loose_warn.
863
864         * Makefile.in (quickstrap): Build libgcc too.
865
866 2007-06-14  Paolo Bonzini  <bonzini@gnu.org>
867
868         * configure.ac: Add --enable-checking=df.  Explicitly mention that
869         the variables are initialized as for "release".
870         * df-core.c: Use it.
871         * configure: Regenerate.
872         * config.in: Regenerate.
873
874 2007-06-14  Bob Wilson  <bob.wilson@acm.org>
875
876         * config/xtensa/xtensa.c (xtensa_expand_nonlocal_goto): Use
877         validate_replace_rtx instead of replace_rtx.
878         (xtensa_expand_prologue): Call df_insn_rescan after replace_rtx.
879
880 2007-06-14  Danny Smith  <dannysmith@users.sourceforge.net>
881
882         * config/i386/cygming.h (DWARF_FRAME_REGNUM): Define.
883         (DWARF2_UNWIND_INFO): Override default if configured with
884         SJLJ EH disabled.
885         * config/i386/cygwin.h (STARTFILE_SPEC): Add crtbegin.o.
886         (ENDFILE_SPEC): Add crtend.o.
887         * config/i386/mingw32.h (STARTFILE_SEC): Add crtbegin.o.
888         (ENDFILE_SPEC): Add crtend.o.
889         (TARGET_USE_JCR_SECTION): Define.
890         (MD_UNWIND_SUPPORT): Define for 32-bit target.
891
892         * config/i386/cygming-crtbegin.c: New file.
893         * config/i386/cygming-crtend.c: New file.
894
895 2007-06-14  Pascal Obry Pascal Obry  <obry@adacore.com>
896
897         * config/i386/w32-unwind.h: New file.
898
899 2007-06-13  Eric Christopher  <echristo@apple.com>
900
901         * config/i386/darwin.h (PREFERRED_STACK_BOUNDARY): Don't let
902         the user set a value below STACK_BOUNDARY.
903
904 2007-06-13  Thiemo Seufer  <ths@networkno.de>
905
906         * config/mips/linux.h, config/mips/linux64.h (LIB_SPEC): Always
907         imply -lpthread for -pthread.
908
909 2007-06-13  Kazu Hirata  <kazu@codesourcery.com>
910
911         * basic-block.h: Remove the prototype for
912         free_basic_block_vars.
913         * cfglayout.h: Remove the prototype for
914         insn_locators_initialize.
915         * tree.h: Remove the prototype for emit_line_note.
916
917         * tree-ssa-pre.c (mergephitemp): Remove.
918         (init_pre): Don't use mergephitemp.
919
920 2007-06-13  Eric Christopher  <echristo@apple.com>
921
922         * config/i386/i386.c (override_options): If we've specified
923         an arch then don't use TARGET_SUBTARGET_ISA_DEFAULTs.
924
925 2007-06-13  Bob Wilson  <bob.wilson@acm.org>
926
927         * df-scan.c (df_get_entry_block_def_set): Check if STATIC_CHAIN_REGNUM
928         is defined.
929
930 2007-06-13  Bernd Schmidt  <bernd.schmidt@analog.com>
931
932         * config/bfin/bfin.h (EH_RETURN_HANDLER_RTX): Use gen_frame_mem.
933         * config/bfin/bfin.md (UNSPEC_VOLATILE_STORE_EH_HANDLER): New constant.
934         (eh_store_handler): New pattern.
935         (eh_return): Emit it instead of a plain move.
936
937 2007-06-13  Uros Bizjak  <ubizjak@gmail.com>
938
939         * config/i386/i386.c (ix86_init_mmx_sse_builtins)
940         [__builtin_infq, __builtin_fabsq]: Define usign def_builtin.
941         [__builtin_ia32_rsqrtps, __builtin_ia32_rsqrtss]: Define using
942         def_builtin_const.
943
944 2007-06-13  Bernd Schmidt  <bernd.schmidt@analog.com>
945
946         * config/bfin/bfin.c (gen_one_bundle): Delete unused local variables.
947         (find_next_insn_start, find_load): New functions.
948         (bfin_reorg): Use them to deal with the fact that parallel insns are
949         no longer represented as a SEQUENCE.
950
951 2007-06-13  Eric Botcazou  <ebotcazou@libertysurf.fr>
952
953         * config/sparc/sparc.c (sparc_override_options): Initialize
954         fpu mask correctly.
955
956 2007-06-13  Dave Korn  <dave.korn@artimi.com>
957
958         * config/i386/i386.c (ix86_eax_live_at_start_p): Use
959         df_get_live_out.
960
961 2007-06-13  Kazu Hirata  <kazu@codesourcery.com>
962
963         * auto-inc-dec.c, c-incpath.c, config/c4x/libgcc.S,
964         config/sh/divcost-analysis, dbgcnt.def, df-core.c,
965         df-problems.c, df-scan.c, df.h, dominance.c, dse.c, regstat.c,
966         tree-data-ref.c, tree-ssa-loop-im.c, tree-ssa-loop-prefetch.c,
967         tree-vect-transform.c: Fix comment typos.  Follow spelling
968         conventions.
969
970 2007-06-12  Seongbae Park  <seongbae.park@gmail.com>
971
972        * df-scan.c (df_get_exit-block_use_set): Always add the stack pointer
973        to the exit block use set.
974        (df_insn_delete, df_insn_rescan): Fixed spelling of "deferring". 
975        * gcse.c (cpro_jump): Don't emit barrier in cfglayout mode.
976        * config/sparc/sparc.c (sparc_check_64): Check df != NULL.
977
978 2007-06-12  Seongbae Park  <seongbae.park@gmail.com>
979
980         * opts.c (common_handle_option): Handle new option -fdbg-cnt-list.
981         * dbgcnt.c (dbg_cnt_set_limit_by_name): Return value
982         to indicate an error.
983         (dbg_cnt_process_single_pair, dbg_cnt_list_all_counters): New functions
984         (dbg_cnt_process_opt): Print an error on a bad argument.
985         * dbgcnt.h (dbg_cnt_list_all_counters): New function declaration.
986         * common.opt (-fdbg-cnt-list): New.
987         * doc/invoke.texi (-fdbg-cnt-list,-fdbg-cnt=): New.
988
989 2007-06-12  Eric Botcazou  <ebotcazou@adacore.com>
990
991         * tree-ssa-alias.c (finalize_ref_all_pointers): Clear pt_anything
992         flag on ref-all pointers.
993
994 2007-06-12  Andrew Pinski  <andrew_pinski@playstation.sony.com>
995
996         PR middle-end/31579
997         * expr.c (expand_expr_addr_expr_1): Call expand_expr
998         for the offset with the modifier as EXPAND_INITIALIZER
999         if the modifier is EXPAND_INITIALIZER.
1000         (expand_expr_real_1 <case INTEGER_CST>): Don't force to
1001         a register if we had an overflow.
1002
1003 2007-06-12  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
1004
1005         * real.c (real_isfinite): New.
1006         (real_sqrt): Use it.
1007         * real.h (real_isfinite): New.
1008         * builtins.c: Use it.
1009
1010 2007-06-12  Ian Lance Taylor  <iant@google.com>
1011             Daniel Berlin  <dberlin@dberlin.org>
1012
1013         PR libstdc++/29286
1014         * tree.def: Add CHANGE_DYNAMIC_TYPE_EXPR.
1015         * tree.h (CHANGE_DYNAMIC_TYPE_NEW_TYPE): Define.
1016         (CHANGE_DYNAMIC_TYPE_LOCATION): Define.
1017         (DECL_NO_TBAA_P): Define.
1018         (struct tree_decl_common): Add no_tbaa_flag field.
1019         * tree-ssa-structalias.c (struct variable_info): Add
1020         no_tbaa_pruning field.
1021         (new_var_info): Initialize no_tbaa_pruning field.
1022         (unify_nodes): Copy no_tbaa_pruning field.
1023         (find_func_aliases): Handle CHANGE_DYNAMIC_TYPE_EXPR.
1024         (dump_solution_for_var): Print no_tbaa_pruning flag.
1025         (set_uids_in_ptset): Add no_tbaa_pruning parameter.  Change all
1026         callers.
1027         (compute_tbaa_pruning): New static function.
1028         (compute_points_to_sets): Remove CHANGE_DYNAMIC_TYPE_EXPR nodes.
1029         Call compute_tbaa_pruning.
1030         * tree-ssa-alias.c (may_alias_p): Test no_tbaa_flag for pointers.
1031         * gimplify.c (gimplify_expr): Handle CHANGE_DYNAMIC_TYPE_EXPR.
1032         * gimple-low.c (lower_stmt): Likewise.
1033         * tree-gimple.c (is_gimple_stmt): Likewise.
1034         * tree-ssa-operands.c (get_expr_operands): Likewise.
1035         * tree-ssa-dce.c (mark_stmt_if_obviously_necessary): Likewise.
1036         * tree-inline.c (estimate_num_insns_1): Likewise.
1037         (copy_result_decl_to_var): Likewise.
1038         * expr.c (expand_expr_real_1): Likewise.
1039         * tree-pretty-print.c (dump_generic_node): Likewise.
1040         * tree-inline.c (copy_decl_to_var): Copy DECL_NO_TBAA_P flag.
1041         * omp-low.c (omp_copy_decl_2): Likewise.
1042         * print-tree.c (print_node): Print DECL_NO_TBAA_P flag.
1043         * doc/c-tree.texi (Expression trees): Document
1044         CHANGE_DYNAMIC_TYPE_EXPR.
1045
1046 2007-06-12  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
1047
1048         * fold-const.c (fold_binary): Guard (X-X) -> 0 transformation
1049         with !HONOR_NANS and !HONOR_INFINITIES.
1050         * simplify-rtx.c (simplify_binary_operation_1): Likewise.
1051
1052 2007-06-12  Tristan Gingold  <gingold@adacore.com>
1053
1054         * gcov.c: Comments updated.
1055         (source_info): Add file_time field.
1056         (source_index): New variable.
1057         (mutiple_files): New variable.
1058         (generate_results): New function extracted from process_file.
1059         (process_file): Save and restore chain of functions, generate
1060         results and free structures only if not merging results.
1061         (release_structures): File names are now freed in create_file_names
1062         (create_file_names): Free previous file names.
1063         (find_source): File date is now read here and modifications in
1064         source files is checked here.
1065         (read_graph_file): Only reverse order of functions for the current
1066         object file.
1067         (make_gcov_file_name): Do not generate long names if input_name is
1068         NULL.
1069         (output_lines): If merging results do not display graph, data and
1070         runs informations.
1071         Checking source file modification is done in find_source.
1072
1073         * doc/gcov.texi: Append an s to sourcefile.
1074
1075 2007-06-12  Bernd Schmidt  <bernd.schmidt@analog.com>
1076
1077         * config/bfin/bfin.md (UNSPEC_NOP): New constant.
1078         (forced_nop): New pattern.
1079         * config/bfin/bfin.c: Include "df.h".
1080         (add_to_reg): Use df_regs_ever_live_p instead of regs_ever_live.
1081         (bfin_discover_loop): Use df_get_live_in instead of
1082         global_live_at_start.
1083         (bfin_reorder_loops): Pass 0 to cfg_layout_initialize.  Call
1084         df_analyze when done.
1085         (gen_one_bundle): Don't generate SEQUENCE insns, just put modes on
1086         the insns.  Use QImode for the final insn in a bundle.  Call
1087         df_insn_rescan on generated NOPs; use gen_forced_nop instead of
1088         gen_nop.
1089         (reorder_var_tracking_notes): New function.
1090         (bfin_reorg): Pass no argument to split_all_insns.  Don't call
1091         update_life_info.  Call df_analyze after scheduling and bundle
1092         generation.  Call reorder_var_tracking_notes if generating these notes.
1093         Call df_finish_pass at the end.
1094
1095 2007-06-12  Dirk Mueller  <dmueller@suse.de>
1096
1097         * optabs.c (debug_optab_libfuncs): fix gcc_assert to
1098         a comparison, not an assignment.
1099
1100 2007-06-12  Olivier Hainque  <hainque@adacore.com>
1101
1102         * tree-nested.c (convert_local_reference): Handle VIEW_CONVERT_EXPR.
1103         Request walking the subtrees only, leaving the current is_lhs/val_only
1104         untouched.
1105         (convert_non_local_reference): Likewise.
1106
1107 2007-06-12  Nathan Sidwell  <nathan@codesourcery.com>
1108
1109         * config/m68k/m68k-devices.def (52221, 52223, 5253): New.
1110
1111 2007-06-12  Richard Guenther  <rguenther@suse.de>
1112
1113         PR tree-optimization/15353
1114         PR tree-optimization/31657
1115         * passes.c (init_optimization_passes): Add pass_tree_ifcombine.
1116         * timevar.def: Add TV_TREE_IFCOMBINE.
1117         * tree-pass.h (pass_tree_ifcombine): Declare.
1118         * tree-ssa-ifcombine.c: New file.
1119         * tree-ssa-phiopt.c (blocks_in_phiopt_order): Export.
1120         * tree-flow.h (blocks_in_phiopt_order): Declare.
1121         * Makefile.in (OBJS-common): Add tree-ssa-ifcombine.o.
1122         (tree-ssa-ifcombine.o): New dependencies.
1123
1124 2007-06-12  Uros Bizjak  <ubizjak@gmail.com>
1125
1126         PR rtl-optimization/32293
1127         * combine.c (simplify_if_then_else): Truncate return from
1128         nonzero_bits() to correct mode.
1129
1130 2007-06-12  Uros Bizjak  <ubizjak@gmail.com>
1131
1132         * fold-const (fold_binary) [RDIV_EXPR]: Also optimize a/cbrt(b/c)
1133         into a*cbrt(c/b) if flag_unsafe_math_optimizations is set.
1134
1135 2007-06-11  Diego Novillo  <dnovillo@google.com>
1136
1137         * Makefile.in (reload1.o-warn): Remove.
1138
1139 2007-06-11  Seongbae Park <seongbae.park@gmail.com>
1140
1141         * combine.c (subst): Use reg_overlap_mentioned_p
1142         instead of comparing register numbers directly.
1143
1144 2007-06-11  Kenneth Zadeck <zadeck@naturalbridge.com>
1145
1146         * reload1.c (mark_home_live_1): Use the mode parameter.
1147
1148 2007-06-11  Kenneth Zadeck <zadeck@naturalbridge.com>
1149
1150         * df-scan.c (df_insn_delete, df_insn_rescan, df_insn_rescan_all,
1151         df_process_deferred_rescans, df_notes_rescan): Fixed spelling of
1152         word "deferred".
1153         * df-core.c: Ditto.
1154
1155 2007-06-11  Daniel Berlin  <dberlin@dberlin.org>
1156
1157         * Merge dataflow-branch into mainline (see ChangeLog.dataflow)
1158
1159 2007-06-11  Uros Bizjak  <ubizjak@gmail.com>
1160
1161         * config/i386/i386.md ("*movtf_internal): Penalize moves to and
1162         from integer registers.
1163         (FP mode splitters): Handle TFmode.
1164
1165 2007-06-11  Eric Botcazou  <ebotcazou@adacore.com>
1166
1167         * tree-ssa-structalias.c (find_what_p_points_to): Return false
1168         for ref-all pointers that point-to anything.
1169
1170 2007-06-11  Joseph Myers  <joseph@codesourcery.com>
1171
1172         * config/arm/arm.c (arm_output_dwarf_dtprel,
1173         TARGET_ASM_OUTPUT_DWARF_DTPREL): New.
1174
1175 2007-06-11  Bernd Schmidt  <bernd.schmidt@analog.com>
1176
1177         * config/bfin/bfin.md (movdi_insn, movsi_insn, movv2hi_insn,
1178         movhi_insn, movqi_insn, movsf_insn, movdf_insn): Don't allow constant
1179         to memory moves.
1180
1181 2007-06-11  Rafael Avila de Espindola  <espindola@google.com>
1182
1183         * gcc/tree.c (signed_or_unsigned_type_for): New.
1184         (unsigned_type_for): Use signed_or_unsigned_type_for.
1185         (signed_type_for): Use signed_or_unsigned_type_for.
1186         * gcc/tree.h (signed_or_unsigned_type_for): New.
1187         (get_signed_or_unsigned_type): Remove.
1188         * gcc/fold-const.c (fold_negate_expr): Use signed_type_for instead of
1189         lang_hooks.types.signed_type
1190         (size_diffop): Likewise.
1191         (all_ones_mask_p): Likewise.
1192         (build_range_check): Likewise.
1193         (fold_cond_expr_with_comparison): Likewise.
1194         (fold_cond_expr_with_comparison): Likewise.
1195         (unextend): Likewise.
1196         (extract_muldiv_1): Likewise.
1197         (fold_single_bit_test_into_sign_test): Likewise.
1198         (fold_binary): Likewise.
1199         (fold_ternary): Likewise.
1200         (operand_equal_for_comparison_p): Use signed_or_unsigned_type_for
1201         instead of get_signed_or_unsigned_type.
1202         * gcc/c-objc-common.h (LANG_HOOKS_SIGNED_TYPE): Remove.
1203         (LANG_HOOKS_SIGNED_OR_UNSIGNED_TYPE): Remove.
1204         * gcc/expr.c (signed_or_unsigned_type_for): Use
1205         signed_or_unsigned_type_for instead of get_signed_or_unsigned_type.
1206         * gcc/langhooks.c (get_signed_or_unsigned_type): Remove.
1207         (lhd_signed_or_unsigned_type): Remove.
1208         * gcc/langhooks.h (lang_hooks_for_types): Remove signed_type and
1209         signed_or_unsigned_type.
1210         (lhd_signed_or_unsigned_type): Remove.
1211         * gcc/expmed.c (make_tree): Use signed_type_for instead of
1212         lang_hooks.types.signed_type.
1213         * gcc/c-common.c (same_scalar_type_ignoring_signedness): Use
1214         c_common_signed_type instead of lang_hooks.types.signed_type.
1215         (c_common_unsigned_type): New.
1216         (c_common_signed_type): Just call c_common_signed_or_unsigned_type.
1217         (shorten_compare): Use c_common_unsigned_type instead of
1218         c_common_signed_or_unsigned_type.
1219         (c_common_nodes_and_builtins): Use c_common_unsigned_type instead of
1220         unsigned_type_for.
1221         * gcc/convert.c (convert_to_integer): Use signed_type_for instead of
1222         lang_hooks.types.signed_type.
1223         * gcc/langhooks-def.h (LANG_HOOKS_SIGNED_OR_UNSIGNED_TYPE): Remove.
1224         (LANG_HOOK_FOR_TYPES_INITIALIZER): Remove LANG_HOOKS_SIGNED_TYPE and
1225         LANG_HOOKS_SIGNED_OR_UNSIGNED_TYPE.
1226         * gcc/c-format.c (check_format_types): Use c_common_unsigned_type
1227         instead of unsigned_type_for.
1228         * gcc/c-decl.c (groakdeclarator): Likewise.
1229         * gcc/c-typeck.c (convert_for_assignment): Likewise.
1230         * gcc/c-common.h (c_common_unsigned_type): New.
1231
1232 2007-06-11  Uros Bizjak  <ubizjak@gmail.com>
1233
1234         PR target/32280
1235         * config/i386/sse.md ("sse2_ashlti", "sse2_lshrti3"): Move ...
1236         * config/i386/i386.md ("sse2_ashlti", "sse2_lshrti3"): ... to here.
1237
1238 2007-06-11  Uros Bizjak  <ubizjak@gmail.com>
1239
1240         PR middle-end/32279
1241         * fold-const (fold_binary) [RDIV_EXPR]: Optimize a/sqrt(b/c)
1242         into a*sqrt(c/b) if flag_unsafe_math_optimizations is set.
1243
1244 2007-06-10  Jan Sjodin  <jan.sjodin@amd.com>
1245             Sebastian Pop  <sebpop@gmail.com>
1246
1247         * lambda-code.c (remove_iv): New.
1248         (lambda_loopnest_to_gcc_loopnest): Use remove_iv.
1249
1250 2007-06-10  Zdenek Dvorak  <dvorakz@suse.cz>
1251
1252         * tree-data-ref.c (dr_analyze_alias): Handle case smt is NULL.
1253         * tree-predcom.c (mark_virtual_ops_for_renaming): Exported.
1254         * tree-ssa-loop-prefetch.c: Include optabs.h.
1255         (FENCE_FOLLOWING_MOVNT): New macro.
1256         (struct mem_ref): Add independent_p and storent_p fields.
1257         (record_ref): Initalize the new fields.
1258         (gather_memory_references_ref): Return true if the reference
1259         could be analysed.
1260         (gather_memory_references): Check whether all memory accesses
1261         in loop were recorded.
1262         (should_issue_prefetch_p): Return false for nontemporal stores.
1263         (nontemporal_store_p, mark_nontemporal_store, emit_mfence_after_loop,
1264         may_use_storent_in_loop_p, mark_nontemporal_stores): New functions.
1265         (determine_loop_nest_reuse): Detect independent memory references.
1266         (loop_prefetch_arrays): Call mark_nontemporal_stores.
1267         * tree-flow.h (mark_virtual_ops_for_renaming): Declare.
1268         * Makefile.in (tree-ssa-loop-prefetch.o): Add OPTABS_H dependency.
1269         * config/i386/i386.h (x86_mfence): Declare.
1270         (FENCE_FOLLOWING_MOVNT): Return x86_mfence.
1271         * config/i386/i386.c (x86_mfence): New variable.
1272         (ix86_init_mmx_sse_builtins): Initialize x86_mfence.
1273
1274         * tree-pretty-print.c (dump_generic_node): Mark nontemporal stores.
1275         * optabs.c (init_optabs): Initialize storent_optab.
1276         * optabs.h (enum optab_index): Add OTI_storent.
1277         (storent_optab): Declare.
1278         * genopinit.c (optabs): Add initialization for storent_optab.
1279         * tree.h (MOVE_NONTEMPORAL): New macro.
1280         * expr.c (expand_assignment, store_expr, store_constructor_field,
1281         store_constructor, store_field, expand_expr_real_1): Propagate
1282         nontemporality of the expanded store.
1283         (emit_storent_insn): New function.
1284         * expr.h (expand_assignment, store_expr): Declaration changed.
1285         * function.c (assign_parm_setup_reg): Pass false as nontemporality
1286         to expand_assignment.
1287         * stmt.c (expand_asm_expr): Ditto.
1288         * calls.c (initialize_argument_information): Pass false as
1289         nontemporality to store_expr.
1290         * config/i386/sse.md (storentv4sf, storentv2df, storentv2di,
1291         storentsi): New.
1292
1293 2007-06-09  Daniel Berlin  <dberlin@dberlin.org>
1294
1295         * tree-ssa-structalias.c (set_uids_in_ptset): Add is_deref'd
1296         parameter, use it.
1297         (find_what_p_points_to): Pass new parameter to set_uids_in_ptset.
1298
1299 2007-06-09  Daniel Berlin  <dberlin@dberlin.org>
1300
1301         * tree-data-ref.c (dr_may_alias_p): Check that decl_a != decl_b,
1302         and allow DECL_P here.
1303
1304 2007-06-09  Zdenek Dvorak  <dvorakz@suse.cz>
1305
1306         * tree-scalar-evolution.c (follow_ssa_edge_in_rhs,
1307         follow_ssa_edge_in_condition_phi, follow_ssa_edge): Keep more precise
1308         track of the size of the expression.
1309         * cfghooks.c (merge_blocks): Remove block from loops structure only
1310         after call of the merge_blocks hook.
1311
1312 2007-06-09  Tom Tromey  <tromey@redhat.com>
1313
1314         * c-decl.c (grokdeclarator): Added 'deprecated_state' argument.
1315         (deprecated_state): Removed.
1316         (start_decl): Update.
1317         (enum deprecated_states): Moved earlier.
1318         (groktypename): Update.
1319         (push_parm_decl): Likewise.
1320         (grokfield): Likewise.
1321         (start_function): Likewise.
1322
1323 2007-06-09  Ian Lance Taylor  <iant@google.com>
1324
1325         PR tree-optimization/32169
1326         * tree-vrp.c (extract_range_from_unary_expr): For NOP_EXPR and
1327         CONVERT_EXPR, check whether min and max both converted to an
1328         overflow infinity representation.
1329
1330 2007-06-08  Eric Botcazou  <ebotcazou@adacore.com>
1331
1332         * reload1.c (fixup_abnormal_edges): Clear bb field for insns
1333         not inserted on the edge.
1334
1335 2007-06-08  Bob Wilson  <bob.wilson@acm.org>
1336
1337         * config/xtensa/lib1funcs.asm (__udivsi3): Use hardware divide
1338         instructions if they are supported.
1339         (__divsi3, __umodsi3, __modsi3): Likewise.
1340         (__ashldi3, __ashrdi3, __lshrdi3): New.
1341         * config/xtensa/t-xtensa (LIB1ASMFUNCS): Add DImode shift functions.
1342
1343 2007-06-08  Harsha Jagasia <harsha.jagasia@amd.com>
1344             Tony Linthicum <tony.linthicum@amd.com>
1345
1346         * doc/extend.texi: Add fvect-cost-model flag.
1347         * common.opt (fvect-cost-model): New flag.
1348         * tree-vectorizer.c (new_stmt_vec_info): Initialize inside and outside
1349         cost fields in stmt_vec_info struct for STMT.
1350         * tree-vectorizer.h (stmt_vec_info): Define inside and outside cost
1351         fields in stmt_vec_info struct and access functions for the same.
1352         (TARG_COND_BRANCH_COST): Define cost of conditional branch.
1353         (TARG_VEC_STMT_COST): Define cost of any vector operation, excluding
1354         load, store and vector to scalar operation.
1355         (TARG_VEC_TO_SCALAR_COST): Define cost of vector to scalar operation.
1356         (TARG_VEC_LOAD_COST): Define cost of aligned vector load.
1357         (TARG_VEC_UNALIGNED_LOAD_COST): Define cost of misasligned vector load.
1358         (TARG_VEC_STORE_COST): Define cost of vector store.
1359         (vect_estimate_min_profitable_iters): Define new function.
1360         * tree-vect-analyze.c (vect_analyze_operations): Add a compile-time
1361         check to evaluate if loop iterations are less than minimum profitable
1362         iterations determined by cost model or minimum vect loop bound defined
1363         by user, whichever is more conservative.
1364         * tree-vect-transform.c (vect_do_peeling_for_loop_bound): Add a
1365         run-time check to evaluate if loop iterations are less than minimum
1366         profitable iterations determined by cost model or minimum vect loop
1367         bound defined by user, whichever is more conservative.
1368         (vect_estimate_min_profitable_iterations): New function to estimate
1369         mimimimum iterartions required for vector version of loop to be
1370         profitable over scalar version.
1371         (vect_model_reduction_cost): New function.
1372         (vect_model_induction_cost): New function.
1373         (vect_model_simple_cost): New function.
1374         (vect_cost_strided_group_size): New function.
1375         (vect_model_store_cost): New function.
1376         (vect_model_load_cost): New function.
1377         (vectorizable_reduction): Call vect_model_reduction_cost during
1378         analysis phase.
1379         (vectorizable_induction): Call vect_model_induction_cost during
1380         analysis phase.
1381         (vectorizable_load): Call vect_model_load_cost during analysis phase.
1382         (vectorizable_store): Call vect_model_store_cost during analysis phase.
1383         (vectorizable_call, vectorizable_assignment, vectorizable_operation,
1384         vectorizable_promotion, vectorizable_demotion): Call
1385         vect_model_simple_cost during analysis phase.
1386
1387 2007-06-08  Simon Baldwin  <simonb@google.com>
1388
1389         * reg-stack.c (get_true_reg): Readability change.  Moved default case
1390         label into direct switch statement scope.
1391
1392 2007-06-08  Simon Baldwin  <simonb@google.com>
1393
1394         * tree-flow-inline.h (var_ann): Replaced erroneous '=' assignment
1395         in gcc_assert() with '==' comparison.
1396
1397 2007-06-08  Uros Bizjak  <ubizjak@gmail.com>
1398
1399         * config/i386/i386.c (override_options): Merge TARGET_SSE4_2 and
1400         TARGET_ABM handling of x86_popcnt variable.
1401
1402 2007-06-08  Uros Bizjak  <ubizjak@gmail.com>
1403
1404         * doc/extend.texi (X86 Built-in Functions): Document __builtin_fabsq,
1405         __builtin_copysignq and __builtin_infq built-in functions.
1406
1407 2007-06-08  Uros Bizjak  <ubizjak@gmail.com>
1408
1409         * doc/extend.texi (X86 Built-in Functions): Add missing `@item's in
1410         SSE4.2 section.  Correct built-in function names in SSE4A section.
1411
1412 2007-06-08  Uros Bizjak  <ubizjak@gmail.com>
1413
1414         PR tree-optimization/32243
1415         * tree-vect-transform.c (vectorizable_type_promotion): Move check
1416         for ncopies after ratio check between nunits_out and nunits_in.
1417         (vectorizable_type_demotion): Remove single-use variable "scalar_type".
1418
1419 2007-06-08  Dorit Nuzman  <dorit@il.ibm.com>
1420
1421         PR tree-optimization/32224
1422         * tree-vect-analyze.c (vect_determine_vectorization_factor): Fail
1423         vectorization upon a non GIMPLE_MODIFY_STMT.
1424
1425 2007-06-08  Christian Bruel  <christian.bruel@st.com>
1426
1427         PR target/29953
1428         * config/sh/sh.md (doloop_end): New pattern and splitter.
1429         * loop-iv.c (simple_rhs_p): Check for hardware registers.
1430
1431 2007-06-08  Zdenek Dvorak  <dvorakz@suse.cz>
1432
1433         PR middle-end/32209
1434         * dominance.c (debug_dominance_tree, debug_dominance_tree_1): New
1435         functions.
1436         (verify_dominators): Do not change dominance tree.
1437
1438 2007-06-08  Kaz Kojima  <kkojima@gcc.gnu.org>
1439
1440         * config/sh/constraints.md: New file.
1441         * config/sh/sh.c: Include tm-constrs.h.
1442         (reg_class_from_letter): Remove.
1443         (prepare_cbranch_operands): Use satisfies_constraint_*
1444         function instead of macro.
1445         (andcosts, broken_move, sh_secondary_reload): Likewise.
1446         * config/sh/predicates.md (trapping_target_operand): Likewise.
1447         (and_operand, arith_operand, arith_reg_or_0_operand,
1448         cmp_operand, logical_operand, target_operand,
1449         ua_address_operand, ua_offset, xor_operand): Likewise.
1450         * config/sh/sh.md: Include constraints.md.
1451         (*movsicc_t_false): Use satisfies_constraint_* function
1452         instead of macro.
1453         (*movsicc_t_true, ashlsi3_std, ashlhi3_k, lshrsi3_m,
1454         lshrsi3_k, movsi_const_16bit+2, *movhi_media+1,
1455         movdi_const_16bit+1, beq, bne, *ptb): Likewise.
1456         * config/sh/sh.h (reg_class_from_letter): Remove prototype.
1457         (OVERRIDE_OPTIONS): Don't modify reg_class_from_letter.
1458         (REG_CLASS_FROM_CONSTRAINT): Remove.
1459         (CONSTRAINT_LEN, CONST_OK_FOR_I20, CONST_OK_FOR_I,
1460         CONST_OK_FOR_J, CONST_OK_FOR_K16, CONST_OK_FOR_K,
1461         CONST_OK_FOR_P27, CONST_OK_FOR_P, CONST_OK_FOR_M,
1462         CONST_OK_FOR_N, CONST_OK_FOR_CONSTRAINT_P,
1463         CONST_DOUBLE_OK_FOR_LETTER_P): Likewise.
1464         (SECONDARY_INOUT_RELOAD_CLASS): Use satisfies_constraint_*
1465         function instead of macro.
1466         (SECONDARY_INPUT_RELOAD_CLASS): Likewise.
1467         (EXTRA_CONSTRAINT_Q, EXTRA_CONSTRAINT_A,
1468         EXTRA_CONSTRAINT_Bsc, EXTRA_CONSTRAINT_B,
1469         EXTRA_CONSTRAINT_Css, EXTRA_CONSTRAINT_Csu): Remove.
1470         (IS_PC_RELATIVE_LOAD_ADDR_P): New macro.
1471         (IS_LITERAL_OR_SYMBOLIC_S16_P): Likewise.
1472         (IS_LITERAL_OR_SYMBOLIC_U16_P): Likewise.
1473         (IS_NON_EXPLICIT_CONSTANT_P): Likewise.
1474         (EXTRA_CONSTRAINT_Csy, EXTRA_CONSTRAINT_Z, EXTRA_CONSTRAINT_W,
1475         EXTRA_CONSTRAINT_Cpg, EXTRA_CONSTRAINT_C,
1476         EXTRA_MEMORY_CONSTRAINT, EXTRA_CONSTRAINT_Sr0,
1477         EXTRA_CONSTRAINT_Sua, EXTRA_CONSTRAINT_S,
1478         EXTRA_CONSTRAINT_STR): Likewise.
1479         (GO_IF_LEGITIMATE_INDEX): Fix indentation.
1480
1481 2007-06-07  Geoffrey Keating  <geoffk@apple.com>
1482
1483         * config/i386/darwin.h (STACK_BOUNDARY): Define.
1484
1485 2007-06-07  Simon Martin  <simartin@users.sourceforge.net>
1486
1487         PR c++/30759
1488         * c-common.h (flag_cpp0x): Replaced by...
1489         (cxx_dialect): ... this new variable specifying the C++ dialect that
1490         is used.
1491         * c-common.c (flag_cpp0x): Removed.
1492         (cxx_dialect): Defined.
1493         * c-cppbuiltin.c (c_cpp_builtins): flag_cpp0x rewritten in terms of
1494         cxx_dialect.
1495         * c-opts.c (c_common_post_options): Likewise.
1496         (set_std_cxx98): Set cxx_dialect to cxx98.
1497         (set_std_cxx0x): Set cxx_dialect to cxx0x.
1498
1499 2007-06-07  Geoffrey Keating  <geoffk@apple.com>
1500             Hui-May Chang <hm.chang@apple.com>
1501
1502         * doc/invoke.texi (Darwin Options): Update documentation for
1503         -mmacosx-version-min.
1504         * config.gcc (*-*-darwin*): Set extra_gcc_objs.
1505         * config/darwin-driver.c: New file.
1506         * config/darwin.h (GCC_DRIVER_HOST_INITIALIZATION): New.
1507         * config/t-darwin (darwin-driver.o): New rule.
1508
1509         * config/darwin-c.c (version_as_macro): Ignore low digit.
1510
1511 2007-06-07  Uros Bizjak  <ubizjak@gmail.com>
1512
1513         * config/i386/i386.md (standard sse constant splitter): Handle TFmode.
1514         (negtf2, abstf2, *absnegtf2_sse): New insn patterns.
1515         (CSGNMODE): New mode macro.
1516         (CSGNVMODE): New mode attribute.
1517         (copysign<mode>3): Rename from copysingsf3 and copysigndf3.  Macroize
1518         expander using CSGNMODE mode macro.  Handle TFmode.
1519         (copysign<mode>3_const): Rename from copysignsf3_const and
1520         copysigndf3_const.  Macroize pattern using CSGNMODE mode macro.
1521         Handle TFmode.
1522         (copysign<mode>3_var): Rename from copysignsf3_var and
1523         copysigndf3_var.  Macroize pattern using CSGNMODE mode macro.
1524         Handle TFmode.
1525         (copysign<mode>3_var splitter): Macroize pattern using CSGNMODE
1526         mode macro.  Handle TFmode.
1527         * config/i386/sse.md (andtf3, *andtf3, *nandtf3): New insn patterns.
1528         (iortf3, *iortf3): Ditto.
1529         (xortf3, *xortf3): Ditto.
1530         * config/i386/i386.c (ix86_build_signbit_mask): Create scalar
1531         TFmode and TImode masks.
1532         (ix86_expand_copysign): Expand TFmode copysign insn.
1533         (IX86_BUILTIN_INFQ): New.
1534         (IX86_BUILTIN_FABSQ): Ditto.
1535         (IX86_BUILTIN_COPYSIGNQ): Ditto.
1536         (ix86_init_mmx_sse_builtins) [__builtin_infq]: New builtin definition.
1537         [__builtin_fabsq]: Ditto.
1538         [__builtin_copysignq]: Ditto.
1539         (ix86_expand_builtin) [IX86_BUILTIN_INFQ]: Expand builtin.
1540         [IX86_BUILTIN_FABSQ]: Expand builtin using ix86_expand_unop_builtin().
1541         [IX86_BUILTIN_COPYSIGNQ]: Expand builtin using
1542         ix86_expand_binop_builtin().
1543
1544 2007-06-07  Bob Wilson  <bob.wilson@acm.org>
1545
1546         * config/xtensa/lib1funcs.asm: Clean up whitespace.
1547
1548 2007-06-07  Steve Ellcey  <sje@cup.hp.com>
1549
1550         PR target/31850
1551         * rtl.h (push_to_sequence2): New.
1552         * emit-rtl.c (push_to_sequence2): New.
1553         * function.c (assign_parm_data_all): Add new fields.
1554         (assign_parm_setup_block): Call push_to_sequence2 instead of
1555         push_to_sequence.
1556         (assign_parm_setup_reg): Ditto.
1557         (assign_parm_setup_stack): Ditto.
1558         (assign_parms_unsplit_complex): Ditto.
1559         (assign_parms): Change field name.
1560
1561 2007-06-07  Zdenek Dvorak  <dvorakz@suse.cz>
1562
1563         PR tree-optimization/32220
1564         * tree-predcom.c (eliminate_temp_copies): Handle the case that loop
1565         phi node is reached before defining statement.
1566
1567 2007-06-06  Andrew Pinski  <andrew_pinski@playstation.sony.com>
1568
1569         PR tree-opt/32231
1570         * tree-vect-transform.c (vectorizable_call): Call update_stmt
1571         after changing the right hand side of the assignment.
1572
1573 2007-06-06  Eric Christopher  <echristo@apple.com>
1574
1575         * config.gcc (i?86-*-darwin*): Remove arch parameter.
1576         (x86_64-*-darwin*): Ditto.
1577         * config/i386/darwin.h (TARGET_SUBTARGET32_ISA_DEFAULT): Define.
1578         (TARGET_SUBTARGET64_ISA_DEFAULT): Ditto.
1579
1580 2007-06-06  Thomas Neumann  <tneumann@users.sourceforge.net>
1581
1582         * tree-ssa-alias-warnings.c (maybe_add_match): Cast according to the
1583         coding conventions.
1584         (add_key): Likewise.
1585         * tree-ssa.c (init_tree_ssa): Use type safe memory macros.
1586         * tree-ssa-ccp.c (ccp_fold_builtin): Avoid using C++ keywords as
1587         variable names.
1588         * tree-ssa-coalesce.c (find_coalesce_pair): Use type safe memory macros.
1589         (add_cost_one_coalesce): Likewise.
1590         * tree-ssa-copy.c (merge_alias_info): Avoid using C++ keywords as
1591         variable names. Rename orig to orig_name for consistency.
1592         * tree-ssa-dom.c (dom_thread_across_edge): Cast according to the coding
1593         conventions.
1594         (cprop_into_successor_phis): Avoid using C++ keywords as variable names.
1595         (record_equivalences_from_stmt): Likewise.
1596         * tree-ssa-dse.c (dse_initialize_block_local_data): Cast according to
1597         the coding conventions.
1598         (memory_ssa_name_same): Likewise.
1599         (dse_optimize_stmt): Likewise.
1600         (dse_record_phis): Likewise.
1601         (dse_finalize_block): Likewise.
1602         * tree-ssa-loop-im.c (outermost_invariant_loop_expr): Avoid using C++
1603         keywords as variable names.
1604         (may_move_till): Cast according to the coding conventions.
1605         (force_move_till_expr): Avoid using C++ keywords as variable names.
1606         (force_move_till): Cast according to the coding conventions.
1607         (memref_hash): Likewise.
1608         (memref_eq): Likewise.
1609         (gather_mem_refs_stmt): Likewise.
1610         * tree-ssa-loop-ivopts.c (contains_abnormal_ssa_name_p): Avoid using C++
1611         keywords as variable names.
1612         (idx_find_step): Cast according to the coding conventions.
1613         (idx_record_use): Likewise.
1614         (find_depends): Likewise.
1615         (prepare_decl_rtl): Likewise.
1616         (mbc_entry_hash): Likewise.
1617         (mbc_entry_eq): Likewise.
1618         * tree-ssa-loop-niter.c (SWAP): Use the correct the type for tmp.
1619         (simplify_replace_tree): Avoid using C++ keywords as variable names.
1620         (idx_infer_loop_bounds): Cast according to the coding conventions.
1621         * tree-ssa-loop-prefetch.c (idx_analyze_ref): Likewise.
1622         * tree-ssa-math-opts.c (occ_new ): Likwise.
1623         * tree-ssanames.c (duplicate_ssa_name_ptr_info): Use type safe memory
1624         macros.
1625         * tree-ssa-operands.c (add_def_op): Avoid using C++ keywords as variable
1626         names.
1627         (add_use_op): Likewise.
1628         (add_vop): Likewise.
1629         (add_vuse_op): Likewise.
1630         (add_vdef_op): Likewise.
1631         (get_expr_operands): Likewise.
1632         (push_stmt_changes): Use type safe memory macros.
1633         * tree-ssa-phiopt.c (replace_phi_edge_with_variable): Avoid using C++
1634         keywords as variable names.
1635         (conditional_replacement): Likewise.
1636         (minmax_replacement): Likewise.
1637         (abs_replacement): Likewise.
1638         * tree-ssa-pre.c (create_expression_by_pieces): Cast according to the
1639         coding conventions.
1640         (insert_fake_stores): Avoid using C++ keywords as variable names.
1641         * tree-ssa-reassoc.c (add_to_ops_vec): Cast according to the coding
1642         conventions.
1643         * tree-ssa-structalias.c (heapvar_lookup): Likewise.
1644         (heapvar_insert): Use type safe memory macros.
1645         (new_var_info): Cast according to the coding conventions.
1646         (new_constraint): Likewise.
1647         (remove_preds_and_fake_succs): Use type safe memory macros.
1648         * tree-ssa-threadupdate.c (thread_block): Cast according to the coding
1649         conventions.
1650         (thread_single_edge): Likewise.
1651         (thread_through_loop_header): Likewise.
1652
1653 2007-06-06  Eric Christopher  <echristo@apple.com>
1654
1655         * config/i386/i386.c (override_options): Move handling
1656         of TARGET_SUBTARGET* earlier.
1657
1658 2007-06-06  Paolo Bonzini  <bonzini@gnu.org>
1659
1660         * genmodes.c (tagged_printf, emit_insn_modes_h): Don't
1661         use %n on printf.
1662
1663 2007-06-06  Zdenek Dvorak  <dvorakz@suse.cz>
1664
1665         * haifa-sched.c (restore_bb_notes): Clear bb field of the notes
1666         emited outside of basic block.
1667         * cfgbuild.c (find_bb_boundaries): Clear bb field for insns between
1668         the created blocks.
1669         * rtl.h (delete_insn_chain): Declaration changed.
1670         * cfgrtl.c (delete_insn_chain): Add option to clear bb field for
1671         non-removed insns.
1672         (rtl_delete_block, rtl_merge_blocks): Pass true to delete_insn_chain.
1673         (delete_insn_chain_and_edges, try_redirect_by_replacing_jump,
1674         rtl_tidy_fallthru_edge, cfg_layout_merge_blocks): Pass false
1675         to delete_insn_chain.
1676         (rtl_verify_flow_info_1): Verify that the insns in header and footer
1677         do not have bb field set.
1678         (rtl_verify_flow_info): Verify that insns between basic blocks do not
1679         have bb field set.
1680         * recog.c (peephole2_optimize): Add argument to delete_insn_chain call.
1681         * cfgcleanup.c (try_optimize_cfg): Ditto.
1682
1683 2007-06-06  Thomas Neumann  <tneumann@users.sourceforge.net>
1684
1685         * lambda-code.c (struct lambda_lattice_s): Add a name to the struct.
1686         (lambda_body_vector_new): Use type safe memory macros.
1687         (lambda_linear_expression_new): Likewise.
1688         (lambda_loopnest_new): Likewise.
1689         (lambda_lattice_new): Likewise.
1690         (replace_uses_equiv_to_x_with_y): Cast according to the coding
1691         conventions. Use type safe memory macros.
1692         * lambda.h (struct lambda_trans_matrix_s): Add a name to the struct.
1693         (lambda_body_vector_s): Likewise.
1694         * lambda-mat.c (lambda_matrix_new): Use type safe memory macros.
1695         * lambda-trans.c (lambda_trans_matrix_new): Likewise.
1696
1697 2007-06-06  Richard Guenther  <rguenther@suse.de>
1698
1699         * tree-ssa-forwprop.c (forward_propagate_into_cond): Return 2
1700         if we need to schedule cfg_cleanup.
1701         (tree_ssa_forward_propagate_single_use_vars): Do so.
1702
1703 2007-06-06  Ian Lance Taylor  <iant@google.com>
1704
1705         * fold-const.c (merge_ranges): If range_successor or
1706         range_predecessor fail, just return 0.
1707
1708 2007-06-06  Uros Bizjak  <ubizjak@gmail.com>
1709
1710         PR tree-optimization/32216
1711         * tree-vectorizer.c (supportable_widening_operation): Determine
1712         signedness of FIX_TRUNC_EXPR from output operand.
1713         (supportable_narrowing_operation): Ditto.
1714         * tree-vect-generic.c (expand_vector_operations_1): Determine
1715         signedness of VEC_UNPACK_FLOAT_HI_EXPR and VEC_UNPACK_FLOAT_LO_EXPR
1716         from input operand.
1717
1718 2007-06-06  Thomas Neumann  <tneumann@users.sourceforge.net>
1719
1720         * config/i386/i386.c (enum pta_flags): Move out of struct scope...
1721         (struct pta): ...from here. Change flags to unsigned to avoid
1722         excessive casting (as it is used as a bit mask).
1723         (override_options): Add casts according to the coding convenventions.
1724         (x86_64_elf_unique_section): Likewise.
1725         (examine_argument): Avoid using C++ keywords as variable names.
1726         (construct_container): Likewise.
1727         (legitimize_pic_address): Likewise.
1728         (get_dllimport_decl): Cast according to the coding conventions. Use
1729         type safe memory macros.
1730         (legitimize_address): Cast according to the coding conventions.
1731         (emit_i387_cw_initialization): Corrected the type of slot to enum
1732         ix86_stack_slot.
1733         (ix86_init_machine_status): Use type safe memory macros.
1734         (bdesc_pcmpestr): Use UNKNOWN instead of integer 0.
1735         (bdesc_pcmpistr): Likewise.
1736         (bdesc_crc32): Likewise.
1737         (bdesc_sse_3arg): Likewise.
1738         (bdesc_2arg): Likewise.
1739         (bdesc_1arg): Likewise.
1740         (ix86_expand_sse_pcmpestr): Cast according to the coding conventions.
1741         (ix86_expand_sse_pcmpistr): Likewise.
1742         (ix86_expand_vec_set_builtin): Use EXPAND_NORMAL instead of integer 0.
1743         (ix86_builtin_vectorized_function): Change the type of fn to unsigned
1744         int to match the langhook definition.
1745         (ix86_builtin_conversion): Change the type of code to unsigned init to
1746         match the langhook definition.
1747         (ix86_preferred_reload_class): Avoid using C++ keywords as variable
1748         names.
1749         (ix86_preferred_output_reload_class): Likewise.
1750         (ix86_cannot_change_mode_class): Likewise.
1751         (ix86_memory_move_cost): Likewise.
1752         (ix86_rtx_costs): Cast the outer_code parameter to enum rtx_code to
1753         avoid excessive casting later on.
1754         (x86_output_mi_thunk): Avoid using C++ keywords as variable names.
1755
1756 2007-06-06  Uros Bizjak  <ubizjak@gmail.com>
1757
1758         * config/i386/sse.md (sse4_2_pcmpestr_cconly): Prefer pcmpestrm
1759         as flags setting insn.
1760         (sse4_2_pcmpistr_cconly): Prefer pcmpistrm as flags setting insn.
1761
1762 2007-06-06  Uros Bizjak  <ubizjak@gmail.com>
1763
1764         * config/i386/i386.md (UNSPEC_ROUNDP, UNSPEC_ROUNDS): Remove.
1765         (UNSPEC_ROUND): New.
1766         ("sse4_1_round<mode>2"): New insn pattern.
1767         ("rint<mode>2"): Expand using "sse4_1_round<mode>2" pattern for
1768         SSE4.1 targets.
1769         ("floor<mode>2"): Rename from floordf2 and floorsf2.  Macroize
1770         expander using SSEMODEF mode macro.  Expand using
1771         "sse4_1_round<mode>2" pattern for SSE4.1 targets.
1772         ("ceil<mode>2"): Rename from ceildf2 and ceilsf2.  Macroize
1773         expander using SSEMODEF mode macro.  Expand using
1774         "sse4_1_round<mode>2" pattern for SSE4.1 targets.
1775         ("btrunc<mode>2"): Rename from btruncdf2 and btruncsf2.  Macroize
1776         expander using SSEMODEF mode macro.  Expand using
1777         "sse4_1_round<mode>2" pattern for SSE4.1 targets.
1778         * config/i386/sse.md ("sse4_1_roundpd", "sse4_1_roundps"): Use
1779         UNSPEC_ROUND instead of UNSPEC_ROUNDP.
1780         ("sse4_1_roundsd", "sse4_1_roundss"): Use UNSPEC_ROUND instead of
1781         UNSPEC_ROUNDS.
1782
1783 2007-06-06  Jan Sjodin  <jan.sjodin@amd.com>
1784             Sebastian Pop  <sebpop@gmail.com>
1785
1786         * lambda.h (build_linear_expr): New.
1787         * lambda-code.c (lbv_to_gcc_expression, lle_to_gcc_expression):
1788         Use build_linear_expr, call fold and force_gimple_operand.
1789         (lambda_loopnest_to_gcc_loopnest): Check that there is
1790         something to insert.
1791         * testsuite/gcc.dg/tree-ssa/ltrans-6.c: New.
1792
1793 2007-06-05  Joerg Wunsch  <j.gnu@uriah.heep.sax.de>
1794
1795         PR preprocessor/23479
1796         * doc/extend.texi: Document the 0b-prefixed binary integer
1797         constant extension.
1798
1799 2007-06-05  Uros Bizjak  <ubizjak@gmail.com>
1800
1801         PR tree-optimization/32215
1802         * tree-vectorizer.c (supportable_widening_operation): Return false
1803         for unsupported FIX_TRUNC_EXPR tree code.
1804         (supportable_narrowing_operation): Ditto for FLOAT_EXPR tree code.
1805
1806 2007-06-06  Nathan Froyd  <froydnj@codesourcery.com>
1807
1808         * config/rs6000/rs6000.h (FIXED_SCRATCH): Use r0 as a scratch
1809         register on SPE targets.  Change documentation to reflect
1810         reality.
1811         * config/rs6000/rs6000.c (rs6000_conditional_register_usage):
1812         Change FIXED_SCRATCH to 14 and document why we're keeping r14
1813         out of the register allocation pool.
1814         (rs6000_reg_live_or_pic_offset_p): New function.
1815         (rs6000_emit_prologue): Move the actual saving of LR up to free
1816         r0 for holding r11.  Split saving of SPE 64-bit registers into
1817         its own case.  Ensure that offsets will always be in-range for
1818         'evstdd' by using r11 as a scratch register to point at the start
1819         of the SPE save area.  Save r11 if necessary, as it is the static
1820         chain register.
1821         (rs6000_emit_epilogue): Split restoring of SPE 64-bit registers
1822         into its own case.  Ensure that offsets will always be in-range
1823         for 'evldd' by using r11 as a scratch register to point at the
1824         start of the SPE save area.  Also adjust r11 when restoring
1825         the stack pointer to compensate for pre-loading r11.
1826
1827 2007-06-05  Thomas Neumann  <tneumann@users.sourceforge.net>
1828
1829         * cfg.c (init_flow): Use type safe memory macros.
1830         (alloc_block): Likewise.
1831         (unchecked_make_edge): Likewise.
1832         (dump_flow_info): Avoid using C++ keywords as variable names.
1833         (copy_original_table_clear): Cast according to the coding conventions.
1834         (copy_original_table_set): Likewise.
1835         * cfgexpand (label_rtx_for_bb): Likewise.
1836         (expand_gimple_basic_block): Likewise.
1837         * cfghooks.c (dump_bb): Likewise.
1838         (lv_adjust_loop_header_phi): Avoid using C++ keywords as
1839         variable names.
1840         (lv_add_condition_to_bb): Likewise.
1841         * cfglayout (relink_block_chain): Cast according to the coding
1842         conventions.
1843         (fixup_reorder_chain): Likewise.
1844         (fixup_fallthru_exit_predecessor): Likewise.
1845         * cfgloop.c (glb_enum_p): Likewise.
1846         (get_exit_description): Likewise.
1847         (dump_recorded_exit): Likewise.
1848         * cfgloop.h (enum loop_estimation): Move out of struct scope...
1849         (struct loop): ... from here.
1850         * cfgloopmanip.c (rpe_enum_p): Cast according to the coding
1851         conventions.
1852         * cfgrtl.c (rtl_create_basic_block): Likewise.
1853         (rtl_split_block): Likewise.
1854         (rtl_dump_bb): Likewise.
1855         (cfg_layout_split_block): Likewise.
1856         (init_rtl_bb_info): Use typesafe memory macros.
1857
1858         * graphds.h (struct graph_edge): Renamed edge to graph_edge.
1859         * graphds.h: Updated all usages of edge to graph_edge.
1860         * graphds.c: Likewise.
1861         * cfgloopanal.c: Likewise.
1862
1863 2007-06-05  Ian Lance Taylor  <iant@google.com>
1864
1865         * tree-vrp.c (compare_values_warnv): Check TREE_NO_WARNING on a
1866         PLUS_EXPR or MINUS_EXPR node before setting *strict_overflow_p.
1867         (extract_range_from_assert): Set TREE_NO_WARNING when creating an
1868         expression.
1869         (test_for_singularity): Likewise.
1870
1871 2007-06-05  H.J. Lu  <hongjiu.lu@intel.com>
1872
1873         * config/i386/constraints.md ("Y2"): Replaced by ...
1874         ("Yt"): This.
1875         * config/i386/i386.md: Likewise.
1876         * config/i386/mmx.md: Likewise.
1877         * config/i386/sse.md: Likewise.
1878
1879 2007-06-05  H.J. Lu  <hongjiu.lu@intel.com>
1880
1881         * config/i386/constraints.md ("z"): Replaced by ...
1882         ("Y0"): This.
1883         * config/i386/sse.md (sse4_1_blendvpd): Likewise.
1884         (sse4_1_blendvps): Likewise.
1885         (sse4_1_pblendvb): Likewise.
1886         (sse4_2_pcmpestr): Likewise.
1887         (sse4_2_pcmpestrm): Likewise.
1888         (sse4_2_pcmpestr_cconly): Likewise.
1889         (sse4_2_pcmpistr): Likewise.
1890         (sse4_2_pcmpistrm): Likewise.
1891         (sse4_2_pcmpistr_cconly): Likewise.
1892
1893 2007-06-05  Razya Ladelsky  <razya@il.ibm.com>
1894
1895         * matrix-reorg.c (transform_access_sites): Fix computation.
1896         (transform_allocation_sites): Same.
1897
1898 2007-06-05  Uros Bizjak  <ubizjak@gmail.com>
1899
1900         * config/i386/i386.c (override_options): Use
1901         TARGET_SUBTARGET32_ISA_DEFAULT to select default ix86_isa_flags.
1902
1903 2007-06-05  Uros Bizjak  <ubizjak@gmail.com>
1904
1905         * config/i386/predicates.md (reg_not_xmm0_operand): New predicate.
1906         (nonimm_not_xmm0_operand): Ditto.
1907         * config/i386/sse.md ("sse4_1_blendvpd"): Use "reg_not_xmm0_operand"
1908         as operand[0] and operand[1] predicate.  Use "nonimm_not_xmm0_operand"
1909         as operand[2] predicate.  Require "z" class XMM register for
1910         operand[3].  Adjust asm template.
1911         ("sse4_1_blendvpd"): Ditto.
1912         ("sse4_1_pblendvb"): Ditto.
1913         * config/i386/i386.c (ix86_expand_sse_4_operands_builtin): Do not
1914         force op2 into xmm0 register for variable blend instructions.
1915
1916 2007-06-04  Tom Tromey  <tromey@redhat.com>
1917
1918         * c-tree.h (start_enum): Update.
1919         (build_enumerator): Likewise.
1920         * c-decl.c (enum_next_value): Removed.
1921         (enum_overflow): Likewise.
1922         (start_enum): Add c_enum_contents argument.  Don't use globals.
1923         (build_enumerator): Likewise.
1924         * c-tree.h (struct c_enum_contents): New struct.
1925
1926 2007-06-04  Tom Tromey  <tromey@redhat.com>
1927
1928         * c-common.c (c_common_get_alias_set): Fix indentation.
1929
1930 2007-06-04  Ian Lance Taylor  <iant@google.com>
1931
1932         * tree-vrp.c (adjust_range_with_scev): When loop is not expected
1933         to overflow, reduce overflow infinity to regular infinity.
1934         (vrp_var_may_overflow): New static function.
1935         (vrp_visit_phi_node): Check vrp_var_may_overflow.
1936
1937 2007-06-04  Kazu Hirata  <kazu@codesourcery.com>
1938
1939         * stor-layout.c (layout_type): Remove duplicate code.
1940
1941 2007-06-04  Uros Bizjak  <ubizjak@gmail.com>
1942
1943         PR c/32191
1944         * gcc/c-common.c (c_define_builtins): Call targetm.init_builtins ()
1945         before build_common_builtin_nodes ().
1946
1947 2007-06-04  Steve Ellcey  <sje@cup.hp.com>
1948
1949         PR target/31733
1950         * cfgrtl.c (rtl_verify_flow_info): Skip notes when looking for barrier.
1951
1952 2007-06-04  Jan Hubicka  <jh@suse.cz>
1953
1954         * tree-predcom.c (replace_ref_with, initialize_root_vars_lm,
1955         reassociate_to_the_same_stmt): Call build_gimple_modify_stmt
1956         instead of _stat version.
1957
1958 2007-06-03  Zdenek Dvorak  <dvorakz@suse.cz>
1959
1960         PR tree-optimization/32194
1961         * tree-predcom.c (determine_offset): Check that both references have
1962         the same type.
1963
1964 2007-06-03  Zdenek Dvorak  <dvorakz@suse.cz>
1965
1966         * cfgloopmanip.c (remove_path, loopify, duplicate_loop_to_header_edge):
1967         Change dom_bbs to vector.  Add argument to iterate_fix_dominators call.
1968         * loop-unroll.c (unroll_loop_runtime_iterations): Ditto.
1969         * tree-cfg.c (tree_duplicate_sese_region): Change doms to vector.
1970         Add argument to iterate_fix_dominators call.
1971         (remove_edge_and_dominated_blocks): Pass vector to bbs_to_fix_dom.
1972         * gcse.c (hoist_code): Change domby to vector.
1973         * cfghooks.c (make_forwarder_block): Change doms_to_fix to vector.
1974         Add argument to iterate_fix_dominators call.
1975         * loop-doloop.c (doloop_modify): Changed recount_dominator to
1976         recompute_dominator.
1977         * lambda-code.c (perfect_nestify): Ditto.
1978         * cfgloopanal.c: Include graphds.h.
1979         (struct edge, struct vertex, struct graph, dump_graph, new_graph,
1980         add_edge, dfs, for_each_edge, free_graph): Moved to graphds.c.
1981         (mark_irreducible_loops): Use graphds_scc.  Remove argument from
1982         add_edge call.
1983         * graphds.c: New file.
1984         * graphds.h: New file.
1985         * dominance.c: Include vecprim.h, pointer-set.h and graphds.h.
1986         (get_dominated_by, get_dominated_by_region): Change return type to
1987         vector.
1988         (verify_dominators): Recompute all dominators and compare the results.
1989         (recount_dominator): Renamed to ...
1990         (recompute_dominator): ... this.  Do not check that the block is
1991         dominated by entry.
1992         (iterate_fix_dominators): Reimplemented.
1993         (prune_bbs_to_update_dominators, root_of_dom_tree,
1994         determine_dominators_for_sons): New functions.
1995         * et-forest.c (et_root): New function.
1996         * et-forest.h (et_root): Declare.
1997         * Makefile.in (graphds.o): Add.
1998         (cfgloopanal.o): Add graphds.h dependency.
1999         (dominance.o): Add graphds.h, vecprim.h and pointer-set.h dependency.
2000         * basic-block.h (get_dominated_by, get_dominated_by_region,
2001         iterate_fix_dominators): Declaration changed.
2002         (recount_dominator): Renamed to ...
2003         (recompute_dominator): ... this.
2004         * tree-ssa-threadupdate.c (thread_block): Free dominance info.
2005         (thread_through_all_blocks): Do not free dominance info.
2006
2007 2007-06-03  Andreas Schwab  <schwab@suse.de>
2008
2009         * config/m68k/m68k.c (override_options): Don't override
2010         REAL_MODE_FORMAT.
2011         * config/m68k/m68k-modes.def (SF, DF): Define to use
2012         motorola_single_format and motorola_double_format, resp.
2013         * real.c (motorola_single_format): Renamed from
2014         coldfire_single_format.
2015         (motorola_double_format): Renamed from coldfire_double_format.
2016         (encode_ieee_extended): Generate a proper canonical NaN image
2017         respecting canonical_nan_lsbs_set.
2018         (ieee_extended_motorola_format): Set canonical_nan_lsbs_set to
2019         true.
2020         * real.h: Adjust declarations.
2021
2022 2007-06-03  Kaz Kojima  <kkojima@gcc.gnu.org>
2023
2024         PR target/32163
2025         * config/sh/sh.md (symGOT_load): Don't schedule insns when
2026         the symbol is generated with the stack protector.
2027
2028 2007-06-03  Kazu Hirata  <kazu@codesourcery.com>
2029
2030         * config/m68k/m68k.c (m68k_attribute_table): Add "interrupt".
2031         (m68k_get_function_kind): Return m68k_fk_interrupt_handler on
2032         "interrupt".
2033         * doc/extend.texi (interrupt): Mention m68k.
2034
2035 2007-06-02  Uros Bizjak  <ubizjak@gmail.com>
2036
2037         * config/i386/i386.c (ix86_expand_sse_4_operands_builtin): Call
2038         safe_vector_operand() if input operand is VECTOR_MODE_P operand.
2039         (ix86_expand_sse_pcmpestr): Do not check operands for
2040         "register_operand", when insn operand predicate is "register_operand".
2041         (ix86_expand_sse_pcmpistr): Ditto.
2042
2043 2007-06-02  H.J. Lu  <hongjiu.lu@intel.com>
2044             Uros Bizjak  <ubizjak@gmail.com>
2045
2046         * config/i386/i386.h (enum reg_class) [SSE_FIRST_REG]: New.
2047         (SSE_CLASS_P): Use reg_class_subset_p between SSE_REGS.
2048         (REG_CLASS_NAMES): Add "FIRST_SSE_REG" string.
2049         (REG_CLASS_CONTENTS): Add members of FIRST_SSE_REG class.
2050         * config/i386/constraints.md ("z"): New register constraint
2051         for members of SSE_FIRST_REG class.
2052         * config/i386/i386-modes.def (CCA, CCC, CCO, CCS): New compare modes.
2053         * config/i386/i386.c (regclass_map): Change class of %xmm0 to
2054         SSE_FIRST_REG class.
2055         (put_condition_code) [EQ, NE]: Output suffixes for new compare modes.
2056         (ix86_cc_modes_compatible): Handle CCA, CCC, CCO and CCS modes.
2057         (IX86_BUILTIN_PCMPESTRI128): New for SSE4.2.
2058         (IX86_BUILTIN_PCMPESTRM128): Likewise.
2059         (IX86_BUILTIN_PCMPESTRA128): Likewise.
2060         (IX86_BUILTIN_PCMPESTRC128): Likewise.
2061         (IX86_BUILTIN_PCMPESTRO128): Likewise.
2062         (IX86_BUILTIN_PCMPESTRS128): Likewise.
2063         (IX86_BUILTIN_PCMPESTRZ128): Likewise.
2064         (IX86_BUILTIN_PCMPISTRI128): Likewise.
2065         (IX86_BUILTIN_PCMPISTRM128): Likewise.
2066         (IX86_BUILTIN_PCMPISTRA128): Likewise.
2067         (IX86_BUILTIN_PCMPISTRC128): Likewise.
2068         (IX86_BUILTIN_PCMPISTRO128): Likewise.
2069         (IX86_BUILTIN_PCMPISTRS128): Likewise.
2070         (IX86_BUILTIN_PCMPISTRZ128): Likewise.
2071         (struct builtin_description): Change "flag" field to unsigned.
2072         (bdesc_pcmpestr): New builtin description table.
2073         (bdesc_pcmpistr): Likewise.
2074         (ix86_init_mmx_sse_builtins): Define int_ftype_v16qi_int_v16qi_int_int,
2075         v16qi_ftype_v16qi_int_v16qi_int_int and int_ftype_v16qi_v16qi_int.
2076         Initialize pcmp[ei]str[im] insns for SSE4.2.
2077         (ix86_expand_sse_pcmpestr): New subroutine of ix86_expand_builtin.
2078         (ix86_expand_sse_pcmpistr): Likewise.
2079         (ix86_expand_builtin): Expand pcmp[ei]str[im] builtins for SSE4.2.
2080         * config/i386/i386.md (UNSPEC_PCMPESTR): New for SSE4.2.
2081         (UNSPEC_PCMPISTR): Likewise.
2082         * config/i386/sse.md (sse4_2_pcmpestr): New insn patern and splitter.
2083         (sse4_2_pcmpestri):New isns pattern.
2084         (sse4_2_pcmpestrm): Likewise.
2085         (sse4_2_pcmpestr_cconly): Likewise.
2086         (sse4_2_pcmpistr): New insn patern and splitter.
2087         (sse4_2_pcmpistri):New isns pattern.
2088         (sse4_2_pcmpistrm): Likewise.
2089         (sse4_2_pcmpistr_cconly): Likewise.
2090         * config/i386/smmintrin.h: Enable pcmp[ei]str[im] intrinsics
2091         in SSE4.2.
2092
2093 2007-06-01  David Daney  <ddaney@avtrex.com>
2094
2095         * config/mips/mips.c (mips_output_mi_thunk): Only load gp if not
2096         LOADGP_ABSOLUTE and not binds_local_p.
2097
2098 2007-06-01  Geoffrey Keating  <geoffk@apple.com>
2099
2100         * config/darwin.h (LINK_SPEC): Pass -fpie through to the linker.
2101
2102 2007-06-01  Ian Lance Taylor  <iant@google.com>
2103
2104         * tree-vrp.c (compare_name_with_value): Always set
2105         used_strict_overflow if we get a result from the variable itself.
2106
2107 2007-06-01  Ian Lance Taylor  <iant@google.com>
2108
2109         PR rtl-optimization/31455
2110         * lower-subreg.c (find_decomposable_subregs): Don't decompose
2111         subregs which have a cast between modes which are not tieable.
2112
2113 2007-06-01  Uros Bizjak  <ubizjak@gmail.com>
2114
2115         * expr.c (force_operand) [DIV, MOD, UDIV, UMOD, ASHIFTRT]: Remove
2116         breaks after return statements.
2117
2118 2007-06-01  Kaz Kojima  <kkojima@gcc.gnu.org>
2119
2120         * config/sh/sh.c (fpscr_set_from_mem): Call get_free_reg
2121         only after no_new_pseudos.
2122
2123 2007-05-31  Eric Christopher  <echristo@apple.com>
2124
2125         * expr.c (convert_move): Assert that we don't have a BLKmode
2126         operand.
2127         (store_expr): Handle BLKmode moves by calling emit_block_move.
2128
2129 2007-05-31  Daniel Berlin  <dberlin@dberlin.org>
2130
2131         * c-typeck.c (build_indirect_ref): Include type in error message.
2132         (build_binary_op): Pass types to binary_op_error.
2133         * c-common.c (binary_op_error): Take two type arguments, print out
2134         types with error.
2135         * c-common.h (binary_op_error): Update prototype.
2136
2137 2007-05-31  H.J. Lu  <hongjiu.lu@intel.com>
2138
2139         * config/i386/i386.c: Correct coments on -mno-sse4.
2140
2141 2007-05-31  H.J. Lu  <hongjiu.lu@intel.com>
2142
2143         * config.gcc (i[34567]86-*-*): Add nmmintrin.h to extra_headers.
2144         (x86_64-*-*): Likewise.
2145         * config/i386/i386.c (OPTION_MASK_ISA_MMX_UNSET): New.
2146         (OPTION_MASK_ISA_3DNOW_UNSET): Likewise.
2147         (OPTION_MASK_ISA_SSE_UNSET): Likewise.
2148         (OPTION_MASK_ISA_SSE2_UNSET): Likewise.
2149         (OPTION_MASK_ISA_SSE3_UNSET): Likewise.
2150         (OPTION_MASK_ISA_SSSE3_UNSET): Likewise.
2151         (OPTION_MASK_ISA_SSE4_1_UNSET): Likewise.
2152         (OPTION_MASK_ISA_SSE4_2_UNSET): Likewise.
2153         (OPTION_MASK_ISA_SSE4): Likewise.
2154         (OPTION_MASK_ISA_SSE4_UNSET): Likewise.
2155         (OPTION_MASK_ISA_SSE4A_UNSET): Likewise.
2156         (ix86_handle_option): Use OPTION_MASK_ISA_*_UNSET.  Handle SSE4.2.
2157         (override_options): Support SSE4.2.
2158         (ix86_build_const_vector): Support SImode and DImode.
2159         (ix86_build_signbit_mask): Likewise.
2160         (ix86_expand_int_vcond): Support V2DImode.
2161         (IX86_BUILTIN_CRC32QI): New for SSE4.2.
2162         (IX86_BUILTIN_CRC32HI): Likewise.
2163         (IX86_BUILTIN_CRC32SI): Likewise.
2164         (IX86_BUILTIN_CRC32DI): Likewise.
2165         (IX86_BUILTIN_PCMPGTQ): Likewise.
2166         (bdesc_crc32): Likewise.
2167         (bdesc_sse_3arg): Likewise.
2168         (ix86_expand_crc32): Likewise.
2169         (ix86_init_mmx_sse_builtins): Support SSE4.2.
2170         (ix86_expand_builtin): Likewise.
2171         * config/i386/i386.h (TARGET_CPU_CPP_BUILTINS): Define
2172         __SSE4_2__ for -msse4.2.
2173         * config/i386/i386.md (UNSPEC_CRC32): New for SSE4.2.
2174         (CRC32MODE): Likewise.
2175         (crc32modesuffix): Likewise.
2176         (crc32modeconstraint): Likewise.
2177         (sse4_2_crc32<mode>): Likewise.
2178         (sse4_2_crc32di): Likewise.
2179         * config/i386/i386.opt (msse4.2): New for SSE4.2.
2180         (msse4): Likewise.
2181         * config/i386/nmmintrin.h: New. The dummy SSE4.2 intrinsic header file.
2182         * config/i386/smmintrin.h: Add SSE4.2 intrinsics.
2183         * config/i386/sse.md (sse4_2_gtv2di3): New pattern for SSE4.2.
2184         (vcond<mode>): Use SSEMODEI instead of SSEMODE124.
2185         (vcondu<mode>): Likewise.
2186         * doc/extend.texi: Document SSE4.2 built-in functions.
2187         * doc/invoke.texi: Document -msse4.2/-msse4.
2188
2189 2007-05-31  Zdenek Dvorak  <dvorakz@suse.cz>
2190
2191         PR tree-optimization/32160
2192         * tree-predcom.c (predcom_tmp_var): New function.  Mark created
2193         variable as gimple reg.
2194         (initialize_root_vars, initialize_root_vars_lm): Use predcom_tmp_var.
2195
2196 2007-05-31  Kazu Hirata  <kazu@codesourcery.com>
2197
2198         * gcc.c (main): Don't consider linker options when issuing the
2199         warning about a linker input file not being used.
2200
2201 2007-05-30  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
2202
2203         * tree-vrp.c (compare_names): Initialize sop.
2204
2205 2007-05-30  Dirk Mueller  <dmueller@suse.de>
2206
2207         * cgraphunit.c (cgraph_analyze_function): Remove
2208         computation of inline parameters.
2209
2210 2007-05-30  Uros Bizjak  <ubizjak@gmail.com>
2211
2212         * config/i386/darwin.h (TARGET_SUBTARGET_DEFAULT): Undef before define.
2213
2214 2007-05-30  Richard Sandiford  <richard@codesourcery.com>
2215
2216         * config.gcc (arm-wrs-vxworks): Remove dbxelf.h from tm_file.
2217         Add vx-common.h.  Include vxworks.h between vx-common.h and
2218         arm/vxworks.h.
2219         * config/vx-common.h (DWARF2_UNWIND_INFO): Undefine before
2220         redefining.
2221         * config/vxworks.h (TARGET_ASM_CONSTRUCTOR): Likewise.
2222         (TARGET_ASM_DESTRUCTOR): Likewise.
2223         * config/arm/vxworks.h (TARGET_OS_CPP_BUILTINS): Check arm_arch_xscale
2224         instead of arm_is_xscale.  Use VXWORKS_OS_CPP_BUILTINS.
2225         (OVERRIDE_OPTIONS, SUBTARGET_CPP_SPEC): Define.
2226         (CC1_SPEC): Add -tstrongarm.  Line up backslashes.
2227         (VXWORKS_ENDIAN_SPEC): Define.
2228         (ASM_SPEC): Add VXWORKS_ENDIAN_SPEC.
2229         (LIB_SPEC, STARTFILE_SPEC, ENDFILE_SPEC): Redefine to their
2230         VXWORKS_* equivalents.
2231         (LINK_SPEC): Likewise, but add VXWORKS_ENDIAN_SPEC.
2232         (ASM_FILE_START): Delete.
2233         (TARGET_VERSION): Reformat.
2234         (FPUTYPE_DEFAULT, FUNCTION_PROFILER): Define.
2235         (DEFAULT_STRUCTURE_SIZE_BOUNDARY): Define.
2236         * config/arm/t-vxworks (LIB1ASMSRC, LIB1ASMFUNCS): Define.
2237         (FPBIT, DPBIT): Define.
2238         (fp-bit.c, dp-bit.c): New rules.
2239         (MULTILIB_OPTIONS): Add strongarm, -mrtp and -mrtp/-fPIC multilibs.
2240         (MULTILIB_MATCHES, MULTILIB_EXCEPTIONS): Define.
2241         * config/arm/arm-protos.h (arm_emit_call_insn): Declare.
2242         * config/arm/arm.h: Include vxworks-dummy.h.
2243         * config/arm/arm.c (arm_elf_asm_constructor, arm_elf_asm_destructor):
2244         Mark with ATTRIBUTE_UNUSED.
2245         (arm_override_options): Do not allow VxWorks RTP PIC to be used
2246         for Thumb.  Force r9 to be the PIC register for VxWorks RTPs and
2247         make it incompatible with -msingle-pic-base.
2248         (arm_function_ok_for_sibcall): Return false for calls that might
2249         go through a VxWorks PIC PLT entry.
2250         (require_pic_register): New function, split out from...
2251         (legitimize_pic_address): ...here.  Do not use GOTOFF accesses
2252         for VxWorks RTPs.
2253         (arm_load_pic_register): Handle the VxWorks RTP initialization
2254         sequence.  Use pic_reg as a shorthand for cfun->machine->pic_reg.
2255         (arm_emit_call_insn): New function.
2256         (arm_assemble_integer): Do not use GOTOFF accesses for VxWorks RTP.
2257         * config/arm/arm.md (UNSPEC_PIC_OFFSET): New unspec number.
2258         (pic_offset_arm): New pattern.
2259         (call, call_value): Use arm_emit_call_insn.
2260         (call_internal, call_value_internal): New expanders.
2261         * config/arm/lib1funcs.asm (__PLT__): Define to empty for
2262         VxWorks unless __PIC__.
2263
2264 2007-05-30  Eric Christopher  <echristo@gmail.com>
2265
2266         * genrecog.c: Include regs.h in generated file.
2267         * genemit.c: Ditto. Fix up formatting.
2268         * config/mn10300/constraints.md: New.
2269         * config/mn10300/mn10300.md: Include.
2270         * config/mn10300/mn10300.c(mn10300_secondary_reload_class):
2271         Fix up for removed macro.
2272         * config/mn10300/predicates.md (call_address_operand):  Ditto.
2273         * config/mn10300/mn10300.h (REG_CLASS_FROM_LETTER): Delete.
2274         (CONST_OK_FOR_I): Ditto.
2275         (CONST_OK_FOR_J): Ditto.
2276         (CONST_OK_FOR_K): Ditto.
2277         (CONST_OK_FOR_L): Ditto.
2278         (CONST_OK_FOR_M): Ditto.
2279         (CONST_OK_FOR_N): Ditto.
2280         (CONST_DOUBLE_OK_FOR_LETTER_P): Ditto.
2281         (OK_FOR_Q): Ditto.
2282         (OK_FOR_R): Ditto.
2283         (OK_FOR_T): Ditto.
2284         (EXTRA_CONSTRAINT): Ditto.
2285
2286 2007-05-30 Uros Bizjak <ubizjak@gmail.com>
2287
2288         * config/i386/i386.h (MASK_64BIT, MASK_MMX, MASK_3DNOW*, MASK_SSE*):
2289         Remove defines.
2290         * config/i386/biarch.h (TARGET_64BIT_DEFAULT): Define to
2291         OPTION_MASK_ISA_64BIT.
2292         * config/i386/i386.c: Rename MASK_* macros to OPTION_MASK_ISA_*.
2293
2294 2007-05-30  Richard Guenther  <rguenther@suse.de>
2295
2296         PR middle-end/32152
2297         * gimplify.c (gimplify_omp_atomic_pipeline): Use correct
2298         types for comparison.
2299         * fold-const.c (fold_comparison): Call maybe_canonicalize_comparison
2300         with original typed arguments.
2301         * config/i386/i386.c (ix86_gimplify_va_arg): Fix type mismatches.
2302
2303 2007-05-30  Jakub Jelinek  <jakub@redhat.com>
2304
2305         PR tree-optimization/31769
2306         * except.c (duplicate_eh_regions): Clear prev_try if
2307         ERT_MUST_NOT_THROW region is inside of ERT_TRY region.
2308
2309 2007-05-30  Zdenek Dvorak  <dvorakz@suse.cz>
2310
2311         * tree-scalar-evolution.c (scev_const_prop): Do not create labels.
2312         * tree-ssa-sink.c (statement_sink_location): Return basic block and
2313         bsi of the location where statements should be inserted.
2314         (sink_code_in_bb): Take bsi from statement_sink_location.
2315         * lambda-code.c (lambda_loopnest_to_gcc_loopnest): Use bsi_after_labels
2316         instead of bsi_start.
2317         * tree-profile.c (tree_gen_ic_func_profiler): Pass BSI_NEW_STMT to
2318         bsi_insert_after.
2319         * tree-cfg.c (bsi_move_after): Pass BSI_NEW_STMT to bsi_insert_after.
2320         (bsi_move_before): Document inconsistency with bsi_move_after.
2321         (tree_redirect_edge_and_branch): Do not create labels if not necessary.
2322
2323 2007-05-30 Uros Bizjak <ubizjak@gmail.com>
2324
2325         * config/i386/i386.h (TARGET_ABM): New define.
2326         (TARGET_POPCNT): Ditto.
2327         (TARGET_64BIT, TARGET_MMX, TARGET_3DNOW, TARGET_3DNOW_A, TARGET_SSE*):
2328         New temporary defines to redefine from OPTION_ISA_* defines.
2329         (MASK_64BIT, MASK_MMX, MASK_3DNOW, MASK_3DNOW_A, MASK_SSE*):
2330         New temporary defines to redefine from OPTION_MASK_ISA_* defines.
2331         (ix86_isa_flags): New extern int declaration.
2332         (TARGET_SUBTARGET_DEFAULT): New define.
2333         (TARGET_SUBTARGET_ISA_DEFAULT): Ditto.
2334         (TARGET_SUBTARGET32_DEFAULT): Ditto.
2335         (TARGET_SUBTARGET32_ISA_DEFAULT): Ditto.
2336         (TARGET_SUBTARGET64_ISA_DEFAULT): Ditto.
2337         * config/i386/unix.h: Undef TARGET_SUBTARGET_DEFAULT before define.
2338         * config/i386/darwin.h: Change TARGET_64BIT define to
2339         OPTION_ISA_64BIT.
2340
2341         * config/i386/i386.opt (m3dnowa): Define as undocumented option
2342         using existing "ix86_isa_flags" varible.
2343         (m32, m64): Use existing "ix86_isa_flags" variable.
2344         (mmmx, m3dnow): Ditto.
2345         (msse, msse2, msse3, mssse3, msse4.1, msse4a): Ditto.
2346         (mabm): Define as non-negative option using "x86_abm" variable.
2347         (mpopcnt): Define as non-negative option using "x86_popcnt" variable.
2348
2349         * config/i386/i386.c (ix86_arch_features) [X86_ARCH_CMOVE]:
2350         Rewrite feature test bitmap.
2351         (ix86_isa_flags): New initialized global int varible.
2352         (ix86_isa_flags_explicit): New static int variable.
2353         (ix86_handle_option): Set "ix86_isa_flags_explicit" when mmmx, m3dnow,
2354         msse, msse2, msse3, msse4.1 and msse4a option is processed.  Change
2355         i86_isa_flags and ix86_isa_flags_explicit, not target_flags and
2356         target_flags_explicit.
2357         (override_options): Remove "target_enable" and "target_disable" fields
2358         from "struct ptt". Update processor_target_table accordingly. Remove
2359         PTA_PREFETCH_SSE from processor_alias_table entry if PTE_SSE is
2360         defined and rearrange PTA_* bits.  Use "ix86_isa_flags" instead of
2361         "target_flags" and "ix86_isa_flags_explicit" instead of
2362         "target_flags_explicit" when masked with MASK_64BIT, MASK_MMX,
2363         MASK_3DNOW, MASK_3DNOW_A or MASK_SSE*.  Set "x86_abm" to true when
2364         PTA_ABM is set in processor_alias_table flags entry.  Set "x86_popcnt"
2365         to true when either of PTA_POPCNT or PTA_ABM is set in
2366         processor_alias_table flags entry.  Set "x86_prefetch_sse" to true
2367         when either of PTA_PREFETCH_SSE or PTA_SSE is set in
2368         processor_alias_table flags entry.  Remove handling of
2369         "target_enable" and "target_disable" fields of processor_target_table.
2370         Mask "target_flags" with TARGET_SUBTARGET32_DEFAULT for 32-bit
2371         targets or with TARGET_SUBTARGET64_DEFAULT for 64-bit targets.
2372         Mask "ix86_isa_flags" with TARGET_SUBTARGET32_ISA_DEFAULT for 32-bit
2373         targets or with TARGET_SUBTARGET64_ISA_DEFAULT for 64-bit targets.
2374         (def_builtin): Mask "mask" variable with "ix86_isa_flags", not
2375         "target_flags".
2376         (TARGET_DEFAULT_TARGET_FLAGS): Do not include TARGET_64BIT_DEFAULT.
2377
2378 2007-05-29  David Daney  <ddaney@avtrex.com>
2379
2380         PR gcc/31975
2381         * config/mips/mips.c (mips_output_mi_thunk): Emit
2382         NOTE_INSN_PROLOGUE_END at beginning of the thunk.
2383
2384 2007-05-29  Hui-May Chang  <hm.chang@apple.com>
2385         * config/i386/i386.c (ix86_function_regparm): Added checking of
2386         ix86_force_align_arg_pointer to determine the number of
2387         register parameters.
2388
2389 2007-05-29  Zdenek Dvorak  <dvorakz@suse.cz>
2390
2391         * tree-vectorizer.h (DR_MISALIGNMENT): Cast aux to integer.
2392         (SET_DR_MISALIGNMENT): New.
2393         * tree-vect-analyze.c (vect_compute_data_ref_alignment,
2394         vect_update_misalignment_for_peel, vect_enhance_data_refs_alignment):
2395         Use SET_DR_MISALIGNMENT.
2396         * tree-predcom.c (split_data_refs_to_components): Cast dr->aux from
2397         pointer.
2398         * tree-data-ref.c (create_data_ref, compute_all_dependences,
2399         find_loop_nest): Export.
2400         * tree-data-ref.h (struct data_reference): Change aux field to pointer.
2401         (create_data_ref, compute_all_dependences, find_loop_nest): Declare.
2402         * tree-ssa-loop-prefetch.c: Include tree-data-ref.h.
2403         (L1_CACHE_SIZE_BYTES, L2_CACHE_SIZE_BYTES, NONTEMPORAL_FRACTION):
2404         New macros.
2405         (struct mem_ref): Add field reuse_distance.
2406         (find_or_create_group, record_ref): Use XNEW instead of xcalloc.
2407         Initialize reuse_distance field.
2408         (issue_prefetch_ref): Select temporality of prefetch according to
2409         reuse_distance.
2410         (volume_of_references, volume_of_dist_vector, add_subscript_strides,
2411         self_reuse_distance, determine_loop_nest_reuse): New functions.
2412         (loop_prefetch_arrays): Call determine_loop_nest_reuse.
2413         (tree_ssa_prefetch_arrays): Dump L2 cache size.
2414         * Makefile.in (tree-ssa-loop-prefetch.o): Add TREE_DATA_REF_H
2415         dependency.
2416
2417 2007-05-29  Daniel Berlin  <dberlin@dberlin.org>
2418
2419         * tree-ssa-alias.c: Add aliasing overview.
2420
2421 2007-05-29  Zuxy Meng  <zuxy.meng@gmail.com>
2422             Danny Smith  <dannysmith@users.sourceforge.net>
2423
2424         PR target/29498
2425         * config/i386/t-crtfm: Compile crtfastmath.o with
2426         -minline-all-stringops.
2427         * config/i386/cygwin.h (ENDFILE_SPECS): Add crtfastmath.o.
2428         * config/i386/mingw32.h (ENDFILE_SPECS): Add crtfastmath.o.
2429
2430 2007-05-28  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
2431
2432         * doc/md.texi: Document constraints on HP PA-RISC.
2433
2434         * pa/constraints.md: New file.
2435         * pa.md: Include constraints.md.
2436         * pa.c (cint_ok_for_move): Avoid using CONST_OK_FOR_LETTER_P.
2437         (integer_store_memory_operand, ldil_cint_p): New functions.
2438         * pa-protos.h (integer_store_memory_operand, ldil_cint_p): Declare.
2439         * pa.h (CONST_OK_FOR_LETTER_P, CONST_DOUBLE_OK_FOR_LETTER_P,
2440         IS_RELOADING_PSEUDO_P, EXTRA_CONSTRAINT): Remove.
2441         * pa32-regs.h (REG_CLASS_FROM_LETTER): Remove.
2442         * pa64-regs.h (REG_CLASS_FROM_LETTER): Remove.
2443
2444 2007-05-28  Andrew Pinski  <Andrew_pinski@playstation.sony.com>
2445
2446         PR c/31339
2447         * c-typeck.c (build_unary_op <case PREINCREMENT_EXPR,
2448         case POSTINCREMENT_EXPR, case PREDECREMENT_EXPR,
2449         case POSTDECREMENT_EXPR>): Return the error_mark_node
2450         if either the real or imaginary parts would an
2451         error_mark_node.
2452
2453 2007-05-28  Daniel Berlin  <dberlin@dberlin.org>
2454
2455         * tree-ssa-dce.c (eliminate_unnecessary_stmts): Release LHS SSA
2456         name when we remove it from a call.
2457
2458 2007-05-28  Kazu Hirata  <kazu@codesourcery.com>
2459
2460         * targhooks.c (default_narrow_bitfield): Remove.
2461         * targhooks.h: Remove the prototype for
2462         default_narrow_bitfield.
2463
2464         * langhooks-def.h: Remove the prototype for
2465         hook_get_alias_set_0.
2466         * langhooks.c (hook_get_alias_set_0): Remove.
2467
2468         * global.c (EXECUTE_IF_CONFLICT): Remove.
2469
2470 2007-05-28  Andrew Pinski  <andrew_pinski@playstation.sony.com>
2471
2472         PR tree-opt/32100
2473         * fold-const.c (tree_expr_nonnegative_warnv_p): Don't
2474         return true when truth_value_p is true and the type
2475         is of signed:1.
2476
2477 2007-05-28  Gerald Pfeifer  <gerald@pfeifer.com>
2478
2479         * doc/install.texi (Prerequisites): We no longer require Autoconf
2480         2.13 for the top-level.
2481
2482 2007-05-28  Uros Bizjak  <ubizjak@gmail.com>
2483
2484         * target/i386/i386.c (ix86_expand_vector_move): Expand unaligned
2485         memory access via x86_expand_vector_move_misalign() only for
2486         TImode values on 32-bit targets.
2487
2488 2007-05-28  Razya Ladelsky  <razya@il.ibm.com>
2489
2490         * matrix-reorg.c: New file. Implement matrix flattening and
2491         transposing optimization.
2492         * tree-pass.h: Add matrix reorg pass.
2493         * common.opt: Add fipa-mreorg flag.
2494         * Makefile.in: Add matrix-reorg.c.
2495         * passes.c: Add matrix reorg pass.
2496         * varpool.c (add_new_static_var): New function.
2497         * cgraph.h (add_new_static_var): Declare.
2498
2499 2007-05-27  Eric Christopher  <echristo@apple.com>
2500
2501         * config/rs6000/rs6000.c (rs6000_emit_prologue): Update
2502         sp_offset depending on stack size. Save r12 depending
2503         on registers we're saving later.
2504         (rs6000_emit_epilogue): Update sp_offset depending only
2505         on stack size.
2506
2507 2007-05-27  Zdenek Dvorak  <dvorakz@suse.cz>
2508
2509         * tree-vrp.c (execute_vrp): Do not check whether current_loops == NULL.
2510         * tree-chrec.c (evolution_function_is_invariant_rec_p): Ditto.
2511         * ifcvt.c (if_convert): Ditto.
2512         * tree-ssa-threadupdate.c (thread_block): Ditto.
2513         (thread_through_all_blocks): Ditto.  Assert that loops were analysed.
2514         * tree-ssa-loop-manip.c (rewrite_into_loop_closed_ssa,
2515         verify_loop_closed_ssa): Check number_of_loops instead of
2516         current_loops.
2517         * predict.c (tree_estimate_probability): Ditto.
2518         * tree-if-conv.c (main_tree_if_conversion): Ditto.
2519         * tree-ssa-loop-ch.c (copy_loop_headers): Ditto.
2520         * modulo-sched.c (sms_schedule): Ditto.
2521         * tree-scalar-evolution.c (scev_const_prop): Ditto.
2522         (scev_finalize): Do not do anything if scev analysis was not
2523         initialized.
2524         * cfgloopanal.c (mark_irreducible_loops): Do not check whether
2525         current_loops == NULL.
2526         (mark_loop_exit_edges): Check number_of_loops instead of current_loops.
2527         * loop-init.c (loop_optimizer_init): Do not free current_loops when
2528         there are no loops.
2529         (loop_optimizer_finalize): Assert that loops were analyzed.
2530         (rtl_move_loop_invariants, rtl_unswitch, rtl_unroll_and_peel_loops,
2531         rtl_doloop): Check number_of_loops instead of current_loops.
2532         * tree-ssa-loop.c (tree_loop_optimizer_init): Do not check whether
2533         current_loops == NULL.
2534         (tree_ssa_loop_init, tree_ssa_loop_im, tree_ssa_loop_unswitch,
2535         gate_tree_vectorize tree_linear_transform, check_data_deps,
2536         tree_ssa_loop_ivcanon, tree_ssa_empty_loop, tree_ssa_loop_bounds,
2537         tree_complete_unroll, tree_ssa_loop_prefetch, tree_ssa_loop_ivopts):
2538         Check number_of_loops instead of current_loops.
2539         (tree_ssa_loop_done): Do not check whether current_loops == NULL.
2540         * tree-ssa-pre.c (fini_pre): Do not take do_fre argument.  Always
2541         free loops if available.
2542         (execute_pre): Do not pass do_fre to fini_pre.
2543
2544 2007-05-27  Tobias Burnus  <burnus@net-b.de>
2545
2546         PR middle-end/32083
2547         * real.c (mpfr_from_real): Fix sign of -Inf.
2548
2549 2007-05-27  H.J. Lu  <hongjiu.lu@intel.com>
2550
2551         * tree-vect-transform.c (vectorizable_conversion): Initialize
2552         tree_code variables to ERROR_MARK.
2553         (vectorizable_type_demotion): Likewise.
2554         (vectorizable_type_promotion): Likewise.
2555
2556 2007-05-26  Uros Bizjak  <ubizjak@gmail.com>
2557
2558         PR target/32065
2559         * config/i386/i386.md (movti): Handle push operands via
2560         ix86_expand_push().
2561
2562 2007-05-26  Kazu Hirata  <kazu@codesourcery.com>
2563
2564         * basic-block.h: Remove the prototype for merge_seq_blocks.
2565         * cfgcleanup.c (merge_seq_blocks): Remove.
2566
2567         * tree-flow.h: Remove the prototype for is_aliased_with.
2568         * tree-ssa-alias.c (is_aliased_with): Remove.
2569
2570 2007-05-26  H.J. Lu  <hongjiu.lu@intel.com>
2571
2572         * config/i386/i386-protos.h (ix86_expand_sse4_unpack): New.
2573
2574         * config/i386/i386.c (ix86_expand_sse4_unpack): New.
2575
2576         * config/i386/sse.md (vec_unpacku_hi_v16qi): Call
2577         ix86_expand_sse4_unpack if SSE4.1 is enabled.
2578         (vec_unpacks_hi_v16qi): Likewise.
2579         (vec_unpacku_lo_v16qi): Likewise.
2580         (vec_unpacks_lo_v16qi): Likewise.
2581         (vec_unpacku_hi_v8hi): Likewise.
2582         (vec_unpacks_hi_v8hi): Likewise.
2583         (vec_unpacku_lo_v8hi): Likewise.
2584         (vec_unpacks_lo_v8hi): Likewise.
2585         (vec_unpacku_hi_v4si): Likewise.
2586         (vec_unpacks_hi_v4si): Likewise.
2587         (vec_unpacku_lo_v4si): Likewise.
2588         (vec_unpacks_lo_v4si): Likewise.
2589
2590 2007-05-26  Kazu Hirata  <kazu@codesourcery.com>
2591
2592         * c-typeck.c, config/arm/arm.c, config/darwin.c,
2593         config/sh/symbian.c, gcc.c, ipa-cp.c, ipa-inline.c, loop-iv.c,
2594         omega.c, tree-ssa-loop-niter.c, treestruct.def: Fix typos and
2595         follow spelling conventions in various
2596         warning/error/diagnostic messages.
2597
2598         * config/i386/i386.c, config/pa/pa.c, config/spu/spu.c,
2599         df-problems.c, df-scan.c, domwalk.c, ebitmap.c, ebitmap.h,
2600         fold-const.c, gcc.c, ipa-type-escape.c, omega.c, omega.h,
2601         tree-ssa-coalesce.c, tree-ssa-live.c, tree-ssa-structalias.c,
2602         tree-vrp.c: Fix comment typos.  Follow spelling conventions.
2603         * doc/tm.texi: Follow spelling conventions.
2604
2605 2007-05-25  Andrew Pinski  <andrew_pinski@playstation.sony.com>
2606
2607         PR tree-opt/32090
2608         * tree-ssa-forwprop.c
2609         (forward_propagate_addr_into_variable_array_index): Remove
2610         the lhs argument.  Use the type of def_rhs instead of lhs.
2611         (forward_propagate_addr_expr_1): Update use of
2612         forward_propagate_addr_into_variable_array_index.
2613
2614 2007-05-25  Sandra Loosemore  <sandra@codesourcery.com>
2615             Nigel Stephens  <nigel@mips.com>
2616
2617         * config/mips/mips.c (mips_attribute_table): Add "near" and "far"
2618         function attributes, "far" being an alias for "long_call".
2619         (TARGET_COMP_TYPE_ATTRIBUTES): Define as mips_comp_type_attributes.
2620         (mips_near_type_p, mips_far_type_p): New.
2621         (mips_comp_type_attributes): New function to check that attributes
2622         attached to a function type are compatible.
2623         (mips_output_mi_thunk): Test SYMBOL_REF_LONG_CALL_P() rather than
2624         TARGET_LONG_CALLS when deciding whether we can do a direct sibcall
2625         to the target function of the thunk.
2626         (mips_encode_section_info): Check for "near" and "far" function
2627         attributes, and always set the SYMBOL_FLAG_LONG_CALL bit explicitly.
2628
2629         * config/mips/predicates.md (const_call_insn_operand): Test only
2630         SYMBOL_REF_LONG_CALL_P() and not TARGET_LONG_CALLS.
2631
2632         * doc/extend.texi (Function Attributes): Document MIPS "near" and
2633         "far" attributes.
2634
2635         * testsuite/gcc.target/mips/near-far-1.c:  New test case.
2636         * testsuite/gcc.target/mips/near-far-2.c:  New test case.
2637         * testsuite/gcc.target/mips/near-far-3.c:  New test case.
2638         * testsuite/gcc.target/mips/near-far-4.c:  New test case.
2639
2640 2007-05-25  Eric Christopher  <echristo@apple.com>
2641
2642         * config.gcc: Add i386/t-fprules-softfp64 and soft-fp/t-softfp
2643         to x86-darwin configurations.
2644         * config/i386/t-darwin: Add softfp support.
2645         * config/i386/t-darwin64: Ditto.
2646         * config/i386/sfp-machine.h: If mach then don't use
2647         aliasing, emit a stub to call.
2648
2649 2007-05-25  Kazu Hirata  <kazu@codesourcery.com>
2650
2651         * cfglayout.c, cgraphunit.c, config/avr/avr.c, fold-const.c,
2652         haifa-sched.c, optabs.h, tree-affine.c, tree-data-ref.c,
2653         tree-predcom.c, tree-ssa-alias-warnings.c,
2654         tree-ssa-forwprop.c, tree-vect-analyze.c, tree-vrp.c: Fix
2655         comment typos.  Follow spelling conventions.
2656         * doc/cpp.texi, doc/invoke.texi: Fix typos.
2657
2658 2007-05-26  Uros Bizjak  <ubizjak@gmail.com>
2659
2660         PR target/32065
2661         * target/i386/i386.c (ix86_expand_vector_move): Force SUBREGs of
2662         constants into memory.  Expand unaligned memory references for
2663         SSE modes via x86_expand_vector_move_misalign() function.
2664
2665 2007-05-25  Uros Bizjak  <ubizjak@gmail.com>
2666
2667         * config/i386/sse.md (*vec_extractv2di_1_sse2): Do not calculate
2668         "memory" attribute for "sseishft" type insn without operands[2].
2669
2670 2007-05-25  Dirk Mueller  <dmueller@suse.de>
2671             Marcus Meissner <meissner@suse.de>
2672
2673         * doc/extend.texi (alloc_size): New attribute.
2674         * c-common.c (handle_alloc_size_attribute): New.
2675         * tree-object-size.c (alloc_object_size): Use alloc_size
2676         attribute, if available.
2677
2678 2007-05-25  H.J. Lu  <hongjiu.lu@intel.com>
2679
2680         * config/i386/i386.c (__builtin_ia32_vec_ext_v2df): Mark it
2681         with MASK_SSE2.
2682         (__builtin_ia32_vec_ext_v2di): Likewise.
2683         (__builtin_ia32_vec_ext_v4si): Likewise.
2684         (__builtin_ia32_vec_ext_v8hi): Likewise.
2685         (__builtin_ia32_vec_ext_v16qi): Likewise.
2686         (__builtin_ia32_vec_set_v8hi): Likewise.
2687
2688 2007-05-25  H.J. Lu  <hongjiu.lu@intel.com>
2689
2690         * config/i386/sse.md (*vec_extractv2di_1_sse2): Correct shift.
2691
2692 2007-05-25  Richard Sandiford  <richard@codesourcery.com>
2693
2694         * config/arm/arm-protos.h (arm_encode_call_attribute): Delete.
2695         (arm_is_longcall_p): Rename to...
2696         (arm_is_long_call_p): ...this.  Take a single tree argument and
2697         return a bool.
2698         * config/arm/arm.h (CALL_SHORT, CALL_LONG, CALL_NORMAL): Delete.
2699         (CUMULATIVE_ARGS): Remove call_cookie.
2700         (SHORT_CALL_FLAG_CHAR, LONG_CALL_FLAG_CHAR, ENCODED_SHORT_CALL_ATTR_P)
2701         (ENCODED_LONG_CALL_ATTR_P): Delete.
2702         (ARM_NAME_ENCODING_LENGTHS): Remove SHORT_CALL_FLAG_CHAR and
2703         LONG_CALL_FLAG_CHAR cases.
2704         (ARM_DECLARE_FUNCTION_SIZE): Delete.
2705         * config/arm/elf.h (ASM_DECLARE_FUNCTION_SIZE): Don't use
2706         ARM_DECLARE_FUNCTION_SIZE.
2707         * config/arm/arm.c (arm_init_cumulative_args): Don't set call_cookie.
2708         (arm_function_arg): Return const0_rtx for VOIDmode arguments.
2709         (arm_encode_call_attribute, current_file_function_operand): Delete.
2710         (arm_function_in_section_p): New function.
2711         (arm_is_longcall_p): Rename to...
2712         (arm_is_long_call_p): ...this.  Take the target function as a single
2713         argument and return a bool.  Do not rely on call cookies.  Check
2714         whether the target symbol is in the same section as the current
2715         function, not just the same compilation unit.
2716         (arm_function_ok_for_sibcall): Use arm_is_long_call_p.
2717         (arm_encode_section_info): Don't encode a call type.
2718         * config/arm/arm.md (call, call_value): Update calls to
2719         arm_is_long(_)call_p.  Simplify logic.
2720         (*call_symbol, *call_value_symbol, *call_insn, *call_value_insn):
2721         Update calls to arm_is_long(_)call_p.
2722
2723 2007-05-25  Richard Guenther  <rguenther@suse.de>
2724
2725         PR tree-optimization/31982
2726         * tree-ssa-forwprop.c
2727         (forward_propagate_addr_into_variable_array_index): Handle arrays
2728         with element size one.
2729
2730 2007-05-24  Andrew Pinski  <andrew_pinski@playstation.sony.com>
2731
2732         * config/spu/spu.md (smulsi3_highpart): Unshare the rtl chain.
2733         (umulsi3_highpart): Likewise.
2734
2735 2007-05-24  Ian Lance Taylor  <iant@google.com>
2736
2737         PR rtl-optimization/32069
2738         * regclass.c (regclass): Don't crash if the entry in regno_reg_rtx
2739         is NULL.
2740
2741 2007-05-24  Ollie Wild  <aaw@google.com>
2742
2743         * doc/cpp.texi (Common Predefined Macros): Add __COUNTER__
2744         description.
2745
2746 2007-05-24  Richard Sandiford  <rsandifo@nildram.co.uk>
2747
2748         * postreload-gcse.c (reg_changed_after_insn_p): New function.
2749         (oprs_unchanged_p): Use it to check all registers in a REG.
2750         (record_opr_changes): Look for clobbers in CALL_INSN_FUNCTION_USAGE.
2751         (reg_set_between_after_reload_p): Delete.
2752         (reg_used_between_after_reload_p): Likewise.
2753         (reg_set_or_used_since_bb_start): Likewise.
2754         (eliminate_partially_redundant_load): Use reg_changed_after_insn_p
2755         and reg_used_between_p instead of reg_set_or_used_since_bb_start.
2756         Use reg_set_between_p instead of reg_set_between_after_reload_p.
2757         * rtlanal.c (reg_set_p): Check whether REG overlaps
2758         regs_invalidated_by_call, rather than just checking the
2759         membership of REGNO (REG).
2760
2761 2007-05-24  Zdenek Dvorak  <dvorakz@suse.cz>
2762
2763         * doc/passes.texi: Document predictive commoning.
2764         * doc/invoke.texi (-fpredictive-commoning): Document.
2765         * opts.c (decode_options): Enable flag_predictive_commoning on -O3.
2766         * tree-ssa-loop-im.c (get_lsm_tmp_name): Export.  Allow
2767         adding indices to the generated name.
2768         (schedule_sm): Pass 0 to get_lsm_tmp_name.
2769         * tree-ssa-loop-niter.c (stmt_dominates_stmt_p): Export.
2770         * tree-pretty-print.c (op_symbol_1): Renamed to ...
2771         (op_symbol_code): ... and exported.
2772         (dump_omp_clause, op_symbol): Use op_symbol_code
2773         instead of op_symbol_1.
2774         * tree-pass.h (pass_predcom): Declare.
2775         * timevar.def (TV_PREDCOM): New timevar.
2776         * tree-ssa-loop.c (run_tree_predictive_commoning,
2777         gate_tree_predictive_commoning, pass_predcom): New.
2778         * tree-data-ref.c (find_data_references_in_loop): Find the
2779         references in dominance order.
2780         (canonicalize_base_object_address): Ensure that the result has
2781         pointer type.
2782         (dr_analyze_innermost): Export.
2783         (create_data_ref): Code to fail for references with invariant
2784         address moved ...
2785         (find_data_references_in_stmt): ... here.
2786         * tree-data-ref.h (dr_analyze_innermost): Declare.
2787         * tree-affine.c: Include tree-gimple.h and hashtab.h.
2788         (aff_combination_find_elt, name_expansion_hash,
2789         name_expansion_eq, tree_to_aff_combination_expand,
2790         double_int_constant_multiple_p, aff_combination_constant_multiple_p):
2791         New functions.
2792         * tree-affine.h (aff_combination_constant_multiple_p,
2793         tree_to_aff_combination_expand): Declare.
2794         * tree-predcom.c: New file.
2795         * common.opt (fpredictive-commoning): New option.
2796         * tree-flow.h (op_symbol_code, tree_predictive_commoning,
2797         stmt_dominates_stmt_p, get_lsm_tmp_name): Declare.
2798         * Makefile.in (tree-predcom.o): Add.
2799         (tree-affine.o): Add TREE_GIMPLE_H dependency.
2800         * passes.c (init_optimization_passes):  Add dceloop after
2801         copy propagation in loop optimizer.  Add predictive commoning
2802         to loop optimizer passes.
2803
2804 2007-05-24  H.J. Lu  <hongjiu.lu@intel.com>
2805
2806         * target-def.h (TARGET_MANGLE_DECL_ASSEMBLER_NAME): Correct
2807         default hook.
2808
2809 2007-05-24  Jan Hubicka  <jh@suse.cz>
2810
2811         * gengenrtl.c (gendecl, gendef): Output the gens annotated for
2812         statistics.
2813         (genheader): Include statistics.h.
2814
2815         * doc/invoke.texi (-fdump-unnumbered): Update docs when line number
2816         notes are gone.
2817         * print-rtl.c (flag_dump_unnumbered): Update comments.
2818         (print_rtl): Fix my previous change.
2819         * emit-rtl.c (emit_note_before, emit_note_after): Clear out note
2820         specific data.
2821
2822 2007-05-24  Zdenek Dvorak  <dvorakz@suse.cz>
2823
2824         PR middle-end/32018
2825         * tree-ssa-threadupdate.c (thread_through_loop_header): Use
2826         set_loop_copy.
2827         (thread_through_all_blocks): Call initialize_original_copy_tables
2828         and free_original_copy_tables.
2829         * cfgloopmanip.c (duplicate_loop, duplicate_loop_to_header_edge):
2830         Use set_loop_copy.
2831         * tree-cfg.c (tree_duplicate_sese_region): Ditto.
2832         * cfghooks.c (duplicate_block): Use get_loop_copy.
2833         * cfg.c: Include cfgloop.h.
2834         (loop_copy): New hash table.
2835         (initialize_original_copy_tables): Initialize loop_copy table.
2836         (free_original_copy_tables): Free loop_copy table.
2837         (copy_original_table_clear, copy_original_table_set,
2838         set_loop_copy, get_loop_copy): New functions.
2839         (set_bb_original, set_bb_copy): Use copy_original_table_set.
2840         * cfgloop.h (struct loop): Remove copy field.
2841         * Makefile.in (cfg.o): Add CFGLOOP_H dependency.
2842         * basic-block.h (set_loop_copy, get_loop_copy): Declare.
2843
2844 2007-05-24  H.J. Lu  <hongjiu.lu@intel.com>
2845
2846         * config/i386/i386.c (ix86_handle_option): Handle SSE4.1 for
2847         -msse/-msse2/-msse3.
2848
2849 2007-05-24  H.J. Lu  <hongjiu.lu@intel.com>
2850
2851         * config/i386/i386.c (ix86_init_mmx_sse_builtins): Mark
2852         __builtin_ia32_vec_set_v2di with MASK_64BIT.
2853
2854 2007-05-24  Danny Smith  <dannysmith@users.sourceforge.net>
2855
2856         PR target/27067
2857         * doc/tm.texi (TARGET_MANGLE_DECL_ASSEMBLER_NAME): Document.
2858         * targhooks.h (default_mangle_decl_assembler_name): Declare
2859         default hook.
2860         * targhooks.c (default_mangle_decl_assembler_name): Define
2861         default hook.
2862         * target-def.h (TARGET_MANGLE_DECL_ASSEMBLER_NAME) New. Set to
2863         default hook.
2864         * target.h (struct gcc_target): Add mangle_decl_assembler_name field.
2865         * langhooks.c (lhd_set_decl_assembler_name): Call
2866         targetm.mangle_decl_assembler_name for names with global scope.
2867
2868         * config/i386/cygming.h (TARGET_MANGLE_DECL_ASSEMBLER_NAME) Override
2869         default.
2870         (ASM_OUTPUT_DEF_FROM_DECLS): Simplify to use DECL_ASSEMBLER_NAME.
2871         * config/i386/i386-protos.h (i386_pe_mangle_decl_assembler_name):
2872         Declare.
2873         * config/i386/winnt.c (i386_pe_maybe_mangle_decl_assembler_name):
2874         New. Factored out of i386_pe_encode_section_info.
2875         (gen_stdcall_or_fastcall_suffix): Get name identifier as argument.
2876         Move check for prior decoration of stdcall
2877         symbols to i386_pe_encode_section_info.
2878         (i386_pe_encode_section_info): Adjust call to
2879         gen_stdcall_or_fastcall_suffix.  Use
2880         i386_pe_maybe_mangle_decl_assembler_name, if needed.
2881         (i386_pe_mangle_decl_assembler_name): New. Wrap
2882         i386_pe_maybe_mangle_decl_assembler_name.
2883
2884 2007-05-16  Rafael Avila de Espindola  <espindola@google.com>
2885
2886         * c-common.c (c_common_signed_or_unsigned_type): Delay the check for
2887         INTEGRAL_TYPE_P and TYPE_UNSIGNED.
2888         * langhooks.c (get_signed_or_unsigned_type): Don't check for
2889         INTEGRAL_TYPE_P or TYPE_UNSIGNED.
2890         (lhd_signed_or_unsigned_type): Check for INTEGRAL_TYPE_P and
2891         TYPE_UNSIGNED.
2892
2893 2007-05-23  Sandra Loosemore  <sandra@codesourcery.com>
2894             Nigel Stephens  <nigel@mips.com>
2895             Richard Sandiford  <richard@codesourcery.com>
2896
2897         Fix up MIPS16 hard float and add support for complex.
2898
2899         * config/mips/mips.h (TARGET_HARD_FLOAT_ABI): New.
2900         (TARGET_SOFT_FLOAT_ABI): New.
2901         (TARGET_CPU_CPP_BUILTINS): Define __mips_hard_float and
2902         __mips_soft_float to reflect the ABI in use, not whether the
2903         FPU is directly accessible (e.g., in MIPS16 mode).
2904         (UNITS_PER_HWFPVALUE): Use TARGET_SOFT_FLOAT_ABI.
2905         (UNITS_PER_FPVALUE): Likewise.
2906
2907         * config/mips/mips.c (mips_expand_call): Remove redundant
2908         TARGET_MIPS16 check.
2909         (mips_arg_regno): New.
2910         (function_arg_advance): When setting bits in cum->fp_code for
2911         MIPS16, don't subtract 1 from cum->arg_number, since it is now
2912         zero-based.
2913         (function_arg): Use mips_arg_regno.
2914         (mips_return_mode_in_fpr_p): New.
2915         (mips16_call_stub_mode_suffix): New.
2916         (mips16_cfun_returns_in_fpr_p): New.
2917         (mips_save_reg_p): Use mips16_cfun_returns_in_fpr_p.
2918         (mips_output_function_prologue): Test mips16_hard_float, not
2919         !TARGET_SOFT_FLOAT, to decide when a function stub is required.
2920         (mips_expand_epilogue): Call MIPS16 helper routines to copy
2921         return value into a floating-point register.
2922         (mips_can_use_return_insn): Use mips16_cfun_returns_in_fpr_p.
2923         (mips_function_value): Rewrite to use mips_return_mode_in_fpr_p.
2924         (mips16_fp_args): Handle MIPS32r2 ISA which supports
2925         TARGET_FLOAT64, and use mfhc1/mthc1 to copy the most significant
2926         word of double arguments from or to the high bits of 64-bit
2927         floating point registers.
2928         (build_mips16_function_stub): Fill in DECL_RESULT for stubdecl.
2929         (mips16_fpret_double): New helper function.
2930         (build_mips16_call_stub): Use mips16_return_mode_in_fpr_p.  Add
2931         support for complex modes.  Fill in DECL_RESULT for stubdecl.
2932         (mips_init_libfuncs): Remove redundant TARGET_MIPS16 check.
2933
2934         * config/mips/mips16.S
2935         (RET, ARG1, ARG2): New.
2936         (MERGE_GPRf, MERGE_GPRt): New.
2937         (DELAYt, DELAYf): New.
2938         (MOVE_SF_BYTE0, MOVE_SI_BYTE0): New.
2939         (MOVE_SF_BYTE4, MOVE_SF_BYTE8): New.
2940         (MOVE_DF_BYTE0, MOVE_DF_BYTE8): New.
2941         (MOVE_SF_RET, MOVE_SC_RET, MOVE_DF_RET, MOVE_DC_RET, MOVE_SI_RET): New.
2942         (SFOP): Renamed to...
2943         (OPSF3): This, and macro-ified.  Updated all uses.
2944         (SFOP2): Renamed to...
2945         (OPSF2): This, and macro-ified.  Updated all uses.
2946         (SFCMP): Renamed to...
2947         (CMPSF): This, and macro-ified.  Updated all uses.
2948         (SFREVCMP): Renamed to...
2949         (REVCMPSF): This, and macro-ified.  Updated all uses.
2950         (__mips16_floatsisf, __mips16_fix_truncsfsi): Macro-ified.
2951         (LDDBL1, LDDBL2, RETDBL): Deleted.
2952         (DFOP): Renamed to...
2953         (OPDF3): This, and macro-ified.  Updated all uses.
2954         (DFOP2): Renamed to...
2955         (OPDF2): This, and macro-ified.  Updated all uses.
2956         (__mips16_extendsfdf2, __mips16_truncdfsf2): Macro-ified.
2957         (DFCMP): Renamed to...
2958         (CMPDF): This, and macro-ified.  Updated all uses.
2959         (DFREVCMP): Renamed to...
2960         (REVCMPDF): This, and macro-ified.  Updated all uses.
2961         (__mips16_floatsidf, __mips16_fix_truncdfsi): Macro-ified.
2962         (RET_FUNCTION): New.
2963         (__mips16_ret_sf, __mips16_ret_df): Macro-ified.
2964         (__mips16_ret_sc, __mips16_ret_dc): New.
2965         (STUB_ARGS_0, STUB_ARGS_1, STUB_ARGS_5, STUB_ARGS_9, STUB_ARGS_2,
2966         STUB_ARGS_6, STUB_ARGS_10): New.
2967         (CALL_STUB_NO_RET): New.
2968         (__mips16_call_stub_1): Macro-ified.
2969         (__mips16_call_stub_5): Macro-ified.
2970         (__mips16_call_stub_2): Macro-ified.
2971         (__mips16_call_stub_6): Macro-ified.
2972         (__mips16_call_stub_9): Macro-ified.
2973         (__mips16_call_stub_10): Macro-ified.
2974         (CALL_STUB_RET): New.
2975         (__mips16_call_stub_sf_0): Macro-ified.
2976         (__mips16_call_stub_sf_1): Macro-ified.
2977         (__mips16_call_stub_sf_5): Macro-ified.
2978         (__mips16_call_stub_sf_2): Macro-ified.
2979         (__mips16_call_stub_sf_6): Macro-ified.
2980         (__mips16_call_stub_sf_9): Macro-ified.
2981         (__mips16_call_stub_sf_10): Macro-ified.
2982         (__mips16_call_stub_df_0): Macro-ified.
2983         (__mips16_call_stub_df_1): Macro-ified.
2984         (__mips16_call_stub_df_5): Macro-ified.
2985         (__mips16_call_stub_df_2): Macro-ified.
2986         (__mips16_call_stub_df_6): Macro-ified.
2987         (__mips16_call_stub_df_9): Macro-ified.
2988         (__mips16_call_stub_df_10): Macro-ified.
2989         (__mips16_call_stub_sc_0): New.
2990         (__mips16_call_stub_sc_1): New.
2991         (__mips16_call_stub_sc_5): New.
2992         (__mips16_call_stub_sc_2): New.
2993         (__mips16_call_stub_sc_6): New.
2994         (__mips16_call_stub_sc_9): New.
2995         (__mips16_call_stub_sc_10): New.
2996         (__mips16_call_stub_dc_0): New.
2997         (__mips16_call_stub_dc_1): New.
2998         (__mips16_call_stub_dc_5): New.
2999         (__mips16_call_stub_dc_2): New.
3000         (__mips16_call_stub_dc_6): New.
3001         (__mips16_call_stub_dc_9): New.
3002         (__mips16_call_stub_dc_10): New.
3003
3004         * config/mips/t-elf (LIB1ASMFUNCS): Add MIPS16 floating-point stubs.
3005         * config/mips/t-isa3264 (LIB1ASMFUNCS): Likewise.
3006         * config/mips/t-r2900 (LIB1ASMFUNCS): Likewise.
3007
3008 2007-05-23  Ian Lance Taylor  <iant@google.com>
3009
3010         * doc/invoke.texi (Invoking GCC): Document that the order of the
3011         -l option matters.
3012
3013 2007-05-23  Chen Liqin  <liqin@sunnorth.com.cn>
3014
3015         PR target/30987
3016         * config/score/misc.md (bitclr_c, bitset_c, bittgl_c): Remove.
3017         * config/score/predicate.md (const_pow2, const_npow2): Remove.
3018         * config/score/score.h (ASM_OUTPUT_EXTERNAL): Add ASM_OUTPUT_EXTERNAL
3019         undef.
3020
3021         PR target/30474
3022         * config/score/score.c (score_print_operand): Make sure that only
3023         lower bits are used.
3024
3025 2007-05-22  Ian Lance Taylor  <iant@google.com>
3026
3027         * tree-vrp.c (avoid_overflow_infinity): New static function,
3028         broken out of set_value_range_to_value.
3029         (set_value_range_to_value): Call avoid_overflow_infinity.
3030         (extract_range_from_assert): Likewise.
3031
3032 2007-05-22  Andrew Pinski  <andrew_pinski@playstation.sony.com>
3033
3034         PR middle-end/31095
3035          * builtins.c (expand_builtin_memmove_args): Strip nops that don't
3036         change the type before looking for a COMPOUND_EXPR.
3037
3038 2007-05-22  Ian Lance Taylor  <iant@google.com>
3039
3040         * lower-subreg.c (decompose_multiword_subregs): If we change an
3041         insn, call remove_retval_note on it.
3042
3043 2007-05-22  Richard Sandiford  <rsandifo@nildram.co.uk>
3044
3045         * regs.h (end_hard_regno): New function.
3046         (END_HARD_REGNO, END_REGNO): New macros.
3047         (add_to_hard_reg_set): New function.
3048         (remove_from_hard_reg_set): Likewise.
3049         (in_hard_reg_set_p): Likewise.
3050         (overlaps_hard_reg_set_p): Likewise.
3051         * bt-load.c (find_btr_reference): Use overlaps_hard_reg_set_p.
3052         (note_btr_set): Use END_HARD_REGNO.
3053         * caller-save.c (setup_save_areas): Use end_hard_regno.
3054         (mark_set_regs): Use END_HARD_REGNO.
3055         (add_stored_regs): Use end_hard_regno.
3056         (mark_referenced_regs): Use add_to_hard_reg_set.
3057         * combine.c (update_table_tick): Use END_REGNO.
3058         (record_value_for_reg): Likewise.
3059         (record_dead_and_set_regs): Likewise.
3060         (get_last_value_validate): Likewise.
3061         (use_crosses_set_p): Likewise.
3062         (reg_dead_at_p_1): Likewise.
3063         (reg_dead_at_p): Likewise.
3064         (mark_used_regs_combine): Use add_to_hard_reg_set.
3065         (move_deaths): Use END_HARD_REGNO.
3066         (reg_bitfield_target_p): Use end_hard_regno.
3067         (distribute_notes): Use END_HARD_REGNO.
3068         * cse.c (mention_regs): Use END_REGNO.
3069         (insert): Use add_to_hard_reg_set.
3070         (invalidate): Use END_HARD_REGNO.
3071         (invalidate_for_call): Likewise.
3072         (exp_equiv_p): Use END_REGNO.
3073         (cse_insn): Likewise.
3074         * cselib.c (cselib_invalidate_regno): Use end_hard_regno.
3075         * df-problems.c (df_urec_mark_reg_change): Use END_HARD_REGNO.
3076         * df-scan.c (df_ref_record): Use END_HARD_REGNO.
3077         * function.c (keep_stack_depressed): Use end_hard_regno.
3078         * global.c (global_alloc): Use end_hard_regno.
3079         (global_conflicts): Use add_to_hard_reg_set instead of
3080         mark_reg_live_nc.
3081         (find_reg): Likewise.
3082         (mark_reg_store): Likewise.
3083         (mark_reg_conflicts): Likewise.
3084         (mark_reg_death): Use remove_from_hard_reg_set.
3085         (mark_reg_live_nc): Delete.
3086         (set_preference): Use end_hard_regno.
3087         * local-alloc.c (mark_life): Use add_to_hard_reg_set and
3088         remove_from_hard_reg_set.
3089         (post_mark_life): Use add_to_hard_reg_set.
3090         * mode-switching.c (reg_dies): Use remove_from_hard_reg_set.
3091         (reg_becomes_live): Use add_to_hard_reg_set.
3092         * recog.c (reg_fits_class_p): Use in_hard_reg_set_p.
3093         (peep2_find_free_register): Use add_to_hard_reg_set.
3094         * reg-stack.c (convert_regs_exit): Use END_HARD_REGNO.
3095         * regclass.c (record_reg_classes): Use in_hard_reg_set_p.
3096         * regrename.c (note_sets): Use add_to_hard_reg_set.
3097         (clear_dead_regs): Use remove_from_hard_reg_set.
3098         (regrename_optimize): Use add_to_hard_reg_set.
3099         (find_oldest_value_reg): Use in_hard_reg_set_p.
3100         * reload.c (push_reload): Use in_hard_reg_set_p and end_hard_regno.
3101         (hard_reg_set_here_p): Use end_hard_regno.
3102         (decompose): Likewise.
3103         (reg_overlap_mentioned_for_reload_p): Use END_HARD_REGNO.
3104         (find_equiv_reg): Use in_hard_reg_set_p and end_hard_regno.
3105         * reload1.c (compute_use_by_pseudos): Use add_to_hard_reg_set.
3106         (mark_home_live): Use end_hard_regno.
3107         (spill_hard_reg): Likewise.
3108         (clear_reload_reg_in_use): Likewise.
3109         * reorg.c (delete_prior_computation): Use END_REGNO.
3110         * resource.c (update_live_status): Use END_HARD_REGNO.
3111         (mark_referenced_resources): Use add_to_hard_reg_set.
3112         (mark_set_resources): Likewise.
3113         (mark_target_live_regs): Likewise.  Use remove_from_hard_reg_set.
3114         * rtlanal.c (refers_to_regno_p): Use END_REGNO.
3115         (reg_overlap_mentioned_p): Likewise.
3116         (dead_or_set_p): Likewise.  Use an exclusive upper loop bound.
3117         (covers_regno_no_parallel_p): Use END_REGNO.
3118         (find_regno_note): Likewise.
3119         (find_reg_fusage): Use END_HARD_REGNO.
3120         * stmt.c (decl_overlaps_hard_reg_set_p): Use overlaps_hard_reg_set_p.
3121         * var-tracking.c (emit_note_insn_var_location): Use end_hard_regno.
3122
3123 2007-05-22  Richard Sandiford  <rsandifo@nildram.co.uk>
3124
3125         * mode-switching.c (reg_dies): Change type of second argument to
3126         "HARD_REG_SET *".
3127         (optimize_mode_switching): Update accordingly.
3128
3129 2007-05-22  Richard Sandiford  <richard@codesourcery.com>
3130
3131         * hard-reg-set.h (GO_IF_HARD_REG_SUBSET, GO_IF_HARD_REG_EQUAL): Delete
3132         in favor of...
3133         (hard_reg_subset_p, hard_reg_sets_equal_p, hard_reg_sets_intersect_p)
3134         (hard_reg_set_empty_p): ...these new functions.
3135         * bt-load.c (choose_btr): Use hard_reg_subset_p instead of
3136         GO_IF_HARD_REG_SUBSET.
3137         * cfgcleanup.c (old_insns_match_p): Use hard_reg_sets_equal_p
3138         instead of GO_IF_HARD_REG_EQUAL.
3139         * df-problems.c (df_urec_local_compute): Use hard_reg_set_empty_p
3140         instead of GO_IF_HARD_REG_EQUAL.
3141         * global.c (find_reg): Use hard_reg_set_empty_p instead of
3142         GO_IF_HARD_REG_SUBSET.
3143         (modify_reg_pav): Use hard_reg_set_empty_p instead of
3144         GO_IF_HARD_REG_EQUAL.
3145         * local-alloc.c (find_free_reg): Use hard_reg_subset_p instead
3146         of GO_IF_HARD_REG_SUBSET.
3147         * reg-stack.c (change_stack, convert_regs_1): Use hard_reg_sets_equal_p
3148         instead of GO_IF_HARD_REG_EQUAL.
3149         * regclass.c (init_reg_sets_1, reg_scan_mark_refs): Use
3150         hard_reg_subset_p instead of GO_IF_HARD_REG_SUBSET.
3151         (reg_classes_intersect_p): Use hard_reg_sets_intersect_p instead
3152         of GO_IF_HARD_REG_SUBSET,
3153         * reload1.c (finish_spills): Use hard_reg_subset_p instead of
3154         GO_IF_HARD_REG_SUBSET.
3155         * struct-equiv.c (death_notes_match_p): Use hard_reg_sets_equal_p
3156         instead of GO_IF_HARD_REG_EQUAL.
3157         * config/sh/sh.c (push_regs, calc_live_regs): Use
3158         hard_reg_sets_intersect_p instead of hard_regs_intersect_p.
3159         (hard_regs_intersect_p): Delete.
3160
3161 2007-05-22  Janis Johnson  <janis187@us.ibm.com>
3162
3163         * doc/sourcebuild.texi (Test Directives) Add dg-message.
3164
3165 2007-05-22  H.J. Lu  <hongjiu.lu@intel.com>
3166             Richard Henderson  <rth@redhat.com>
3167
3168         * config.gcc (i[34567]86-*-*): Add smmintrin.h to
3169         extra_headers.
3170         (x86_64-*-*): Likewise.
3171
3172         * i386/i386-modes.def (V2QI): New.
3173
3174         * config/i386/i386.c (ix86_handle_option): Handle SSE4.1 and
3175         SSE4A.
3176         (override_options): Support SSE4.1.
3177         (IX86_BUILTIN_BLENDPD): New for SSE4.1.
3178         (IX86_BUILTIN_BLENDPS): Likewise.
3179         (IX86_BUILTIN_BLENDVPD): Likewise.
3180         (IX86_BUILTIN_BLENDVPS): Likewise.
3181         (IX86_BUILTIN_PBLENDVB128): Likewise.
3182         (IX86_BUILTIN_PBLENDW128): Likewise.
3183         (IX86_BUILTIN_DPPD): Likewise.
3184         (IX86_BUILTIN_DPPS): Likewise.
3185         (IX86_BUILTIN_INSERTPS128): Likewise.
3186         (IX86_BUILTIN_MOVNTDQA): Likewise.
3187         (IX86_BUILTIN_MPSADBW128): Likewise.
3188         (IX86_BUILTIN_PACKUSDW128): Likewise.
3189         (IX86_BUILTIN_PCMPEQQ): Likewise.
3190         (IX86_BUILTIN_PHMINPOSUW128): Likewise.
3191         (IX86_BUILTIN_PMAXSB128): Likewise.
3192         (IX86_BUILTIN_PMAXSD128): Likewise.
3193         (IX86_BUILTIN_PMAXUD128): Likewise.
3194         (IX86_BUILTIN_PMAXUW128): Likewise.
3195         (IX86_BUILTIN_PMINSB128): Likewise.
3196         (IX86_BUILTIN_PMINSD128): Likewise.
3197         (IX86_BUILTIN_PMINUD128): Likewise.
3198         (IX86_BUILTIN_PMINUW128): Likewise.
3199         (IX86_BUILTIN_PMOVSXBW128): Likewise.
3200         (IX86_BUILTIN_PMOVSXBD128): Likewise.
3201         (IX86_BUILTIN_PMOVSXBQ128): Likewise.
3202         (IX86_BUILTIN_PMOVSXWD128): Likewise.
3203         (IX86_BUILTIN_PMOVSXWQ128): Likewise.
3204         (IX86_BUILTIN_PMOVSXDQ128): Likewise.
3205         (IX86_BUILTIN_PMOVZXBW128): Likewise.
3206         (IX86_BUILTIN_PMOVZXBD128): Likewise.
3207         (IX86_BUILTIN_PMOVZXBQ128): Likewise.
3208         (IX86_BUILTIN_PMOVZXWD128): Likewise.
3209         (IX86_BUILTIN_PMOVZXWQ128): Likewise.
3210         (IX86_BUILTIN_PMOVZXDQ128): Likewise.
3211         (IX86_BUILTIN_PMULDQ128): Likewise.
3212         (IX86_BUILTIN_PMULLD128): Likewise.
3213         (IX86_BUILTIN_ROUNDPD): Likewise.
3214         (IX86_BUILTIN_ROUNDPS): Likewise.
3215         (IX86_BUILTIN_ROUNDSD): Likewise.
3216         (IX86_BUILTIN_ROUNDSS): Likewise.
3217         (IX86_BUILTIN_PTESTZ): Likewise.
3218         (IX86_BUILTIN_PTESTC): Likewise.
3219         (IX86_BUILTIN_PTESTNZC): Likewise.
3220         (IX86_BUILTIN_VEC_EXT_V16QI): Likewise.
3221         (IX86_BUILTIN_VEC_SET_V2DI): Likewise.
3222         (IX86_BUILTIN_VEC_SET_V4SF): Likewise.
3223         (IX86_BUILTIN_VEC_SET_V4SI): Likewise.
3224         (IX86_BUILTIN_VEC_SET_V16QI): Likewise.
3225         (bdesc_ptest): New.
3226         (bdesc_sse_3arg): Likewise.
3227         (bdesc_2arg): Likewise.
3228         (bdesc_1arg): Likewise.
3229         (ix86_init_mmx_sse_builtins): Support SSE4.1.  Handle SSE builtins
3230         with 3 args.
3231         (ix86_expand_sse_4_operands_builtin): New.
3232         (ix86_expand_unop_builtin): Support 2 arg builtins with a constant
3233         smaller than 8 bits as the 2nd arg.
3234         (ix86_expand_sse_ptest): New.
3235         (ix86_expand_builtin): Support SSE4.1. Support 3 arg SSE builtins.
3236         (ix86_expand_vector_set): Support SSE4.1.
3237         (ix86_expand_vector_extract): Likewise.
3238
3239         * config/i386/i386.h (TARGET_CPU_CPP_BUILTINS): Define
3240         __SSE4_1__ for -msse4.1.
3241
3242         * config/i386/i386.md (UNSPEC_BLENDV): New for SSE4.1.
3243         (UNSPEC_INSERTPS): Likewise.
3244         (UNSPEC_DP): Likewise.
3245         (UNSPEC_MOVNTDQA): Likewise.
3246         (UNSPEC_MPSADBW): Likewise.
3247         (UNSPEC_PHMINPOSUW): Likewise.
3248         (UNSPEC_PTEST): Likewise.
3249         (UNSPEC_ROUNDP): Likewise.
3250         (UNSPEC_ROUNDS): Likewise.
3251
3252         * config/i386/i386.opt (msse4.1): New for SSE4.1.
3253
3254         * config/i386/predicates.md (const_pow2_1_to_2_operand): New.
3255         (const_pow2_1_to_32768_operand): Likewise.
3256
3257         * config/i386/smmintrin.h: New. The SSE4.1 intrinsic header
3258         file.
3259
3260         * config/i386/sse.md (*vec_setv4sf_sse4_1): New pattern for
3261         SSE4.1.
3262         (sse4_1_insertps): Likewise.
3263         (*sse4_1_extractps): Likewise.
3264         (sse4_1_ptest): Likewise.
3265         (sse4_1_mulv2siv2di3): Likewise.
3266         (*sse4_1_mulv4si3): Likewise.
3267         (*sse4_1_smax<mode>3): Likewise.
3268         (*sse4_1_umax<mode>3): Likewise.
3269         (*sse4_1_smin<mode>3): Likewise.
3270         (*sse4_1_umin<mode>3): Likewise.
3271         (sse4_1_eqv2di3): Likewise.
3272         (*sse4_1_pinsrb): Likewise.
3273         (*sse4_1_pinsrd): Likewise.
3274         (*sse4_1_pinsrq): Likewise.
3275         (*sse4_1_pextrb): Likewise.
3276         (*sse4_1_pextrb_memory): Likewise.
3277         (*sse4_1_pextrw_memory): Likewise.
3278         (*sse4_1_pextrq): Likewise.
3279         (sse4_1_blendpd): Likewise.
3280         (sse4_1_blendps): Likewise.
3281         (sse4_1_blendvpd): Likewise.
3282         (sse4_1_blendvps): Likewise.
3283         (sse4_1_dppd): Likewise.
3284         (sse4_1_dpps): Likewise.
3285         (sse4_1_movntdqa): Likewise.
3286         (sse4_1_mpsadbw): Likewise.
3287         (sse4_1_packusdw): Likewise.
3288         (sse4_1_pblendvb): Likewise.
3289         (sse4_1_pblendw): Likewise.
3290         (sse4_1_phminposuw): Likewise.
3291         (sse4_1_extendv8qiv8hi2): Likewise.
3292         (*sse4_1_extendv8qiv8hi2): Likewise.
3293         (sse4_1_extendv4qiv4si2): Likewise.
3294         (*sse4_1_extendv4qiv4si2): Likewise.
3295         (sse4_1_extendv2qiv2di2): Likewise.
3296         (*sse4_1_extendv2qiv2di2): Likewise.
3297         (sse4_1_extendv4hiv4si2): Likewise.
3298         (*sse4_1_extendv4hiv4si2): Likewise.
3299         (sse4_1_extendv2hiv2di2): Likewise.
3300         (*sse4_1_extendv2hiv2di2): Likewise.
3301         (sse4_1_extendv2siv2di2): Likewise.
3302         (*sse4_1_extendv2siv2di2): Likewise.
3303         (sse4_1_zero_extendv8qiv8hi2): Likewise.
3304         (*sse4_1_zero_extendv8qiv8hi2): Likewise.
3305         (sse4_1_zero_extendv4qiv4si2): Likewise.
3306         (*sse4_1_zero_extendv4qiv4si2): Likewise.
3307         (sse4_1_zero_extendv2qiv2di2): Likewise.
3308         (*sse4_1_zero_extendv2qiv2di2): Likewise.
3309         (sse4_1_zero_extendv4hiv4si2): Likewise.
3310         (*sse4_1_zero_extendv4hiv4si2): Likewise.
3311         (sse4_1_zero_extendv2hiv2di2): Likewise.
3312         (*sse4_1_zero_extendv2hiv2di2): Likewise.
3313         (sse4_1_zero_extendv2siv2di2): Likewise.
3314         (*sse4_1_zero_extendv2siv2di2): Likewise.
3315         (sse4_1_roundpd): Likewise.
3316         (sse4_1_roundps): Likewise.
3317         (sse4_1_roundsd): Likewise.
3318         (sse4_1_roundss): Likewise.
3319         (mulv4si3): Don't expand for SSE4.1.
3320         (smax<mode>3): Likewise.
3321         (umaxv4si3): Likewise.
3322         (uminv16qi3): Likewise.
3323         (umin<mode>3): Likewise.
3324         (umaxv8hi3): Rewrite.  Only enabled for SSE4.1.
3325
3326         * doc/extend.texi: Document SSE4.1 built-in functions.
3327
3328         * doc/invoke.texi: Document -msse4.1.
3329
3330 2007-05-22  Nathan Sidwell  <nathan@codesourcery.com>
3331
3332         * config/m68k/linux.h (ASM_SPEC): Add asm_pcrel_spec.
3333         * config/m68k/m68k-none.h (ASM_SPEC): Don't override here.
3334         * config/m68k/m68k.h (ASM_PCREL_SPEC): New.
3335         (ASM_SPEC): Add asm_pcrel_spec.
3336         (EXTRA_SPECS): Add asm_pcrel_spec.
3337
3338 2007-05-21  David Daney  <ddaney@avtrex.com>
3339
3340         * doc/install.texi (Building a cross compiler): Add requirements
3341         for Java cross compiler.
3342
3343 2007-05-21  Andrew Pinski  <andrew_pinski@playstation.sony.com>
3344
3345         PR middle-end/31995
3346         * tree-chrec.c (evolution_function_is_affine_multivariate_p):
3347         Add loopno argument.  Use evolution_function_is_invariant_rec_p
3348         instead of evolution_function_is_constant_p.
3349         Update calls to evolution_function_is_affine_multivariate_p.
3350         * tree-chrec.h (evolution_function_is_affine_multivariate_p):
3351         Add loopno argument.
3352         * tree-scalar-evolution.c (gather_chrec_stats): Call
3353         evolution_function_is_affine_multivariate_p with a loop
3354         number of 0.
3355         * tree-data-ref.c (analyze_miv_subscript): Likewise.
3356         (analyze_overlapping_iterations): Likewise.
3357         (access_functions_are_affine_or_constant_p): Likewise.
3358         (build_classic_dist_vector_1): If the access functions
3359         are equal, don't do anything.
3360
3361 2007-05-21  Paolo Bonzini  <bonzini@gnu.org>
3362             Paolo Carlini  <pcarlini@suse.de>
3363             Uros Bizjak  <ubizjak@gmail.com>
3364
3365         * c-cppbuiltin.c (c_cpp_builtins): Define
3366         __GCC_HAVE_SYNC_COMPARE_AND_SWAP_1, __GCC_HAVE_SYNC_COMPARE_AND_SWAP_2,
3367         __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4, __GCC_HAVE_SYNC_COMPARE_AND_SWAP_8,
3368         __GCC_HAVE_SYNC_COMPARE_AND_SWAP_16, if appropriate.
3369         * doc/cpp.texi ([Standard Predefined Macros]): Document.
3370
3371 2007-05-21  Mike Stump  <mrs@apple.com>
3372
3373         * config/darwin.h (LINK_COMMAND_SPEC): Add .cxx/.cp for dsymutil
3374         handling as well.
3375         * config/darwin9.h (LINK_COMMAND_SPEC): Likewise.
3376
3377 2007-05-21  Uros Bizjak  <ubizjak@gmail.com>
3378
3379         * config/i386/tmmintrin.h (_mm_alignr_epi8): Provide macro
3380         implementation if __OPTIMIZE__ is not defined.
3381         (_mm_alignr_pi8): Ditto.
3382         * config/i386/ammintrin.h (_mm_extracti_si64): Ditto.
3383         (_mm_inserti_si64): Ditto.
3384         * config/i386/emmintrin.h (_mm_shuffle_pd): Ditto.
3385         (_mm_slli_epi16): Ditto.
3386         (_mm_slli_epi32): Ditto.
3387         (_mm_slli_epi64): Ditto.
3388         (_mm_srai_epi16): Ditto.
3389         (_mm_srai_epi32): Ditto.
3390         (_mm_srli_si128): Ditto.
3391         (_mm_slli_si128): Ditto.
3392         (_mm_srli_epi16): Ditto.
3393         (_mm_srli_epi32): Ditto.
3394         (_mm_srli_epi64): Ditto.
3395         (_mm_extract_epi16): Ditto.
3396         (_mm_insert_epi16): Ditto.
3397         (_mm_shufflehi_epi16): Ditto.
3398         (_mm_shufflelo_epi16): Ditto.
3399         (_mm_shuffle_epi32): Ditto.
3400         * config/i386/xmmintrin.h (_mm_extract_pi16): Ditto.
3401         (_m_pextrw): Ditto.
3402         (_mm_insert_pi16): Ditto.
3403         (_m_pinsrw): Ditto.
3404         (_mm_shuffle_pi16): Ditto.
3405         (_m_pshufw): Ditto.
3406         (_mm_shufle_ps): Ditto.
3407         (_mm_prefetch): Ditto.
3408
3409 2007-05-21  Andreas Krebbel  <krebbel1@de.ibm.com>
3410
3411         * defaults.h (IBM_FLOAT_FORMAT): Macro definition removed.
3412         * doc/tm.texi (IBM_FLOAT_FORMAT): Documentation entry removed.
3413         * real.c (encode_i370_single, decode_i370_single,
3414         encode_i370_double, decode_i370_double): Functions removed.
3415         (i370_single_format, i370_double_format): Initializations removed.
3416         (real_maxval, round_for_format, exact_real_truncate, significand_size):
3417         Consider the log2_b field to always be one.
3418         (ieee_single_format, mips_single_format, coldfire_single_format,
3419         ieee_double_format, mips_double_format, coldfire_double_format,
3420         ieee_extended_motorola_format, ieee_extended_intel_96_format,
3421         ieee_extended_intel_128_format, ieee_extended_intel_96_round_53_format,
3422         ibm_extended_format, mips_extended_format, ieee_quad_format,
3423         mips_quad_format, vax_f_format, vax_d_format, vax_g_format,
3424         decimal_single_format, decimal_double_format, decimal_quad_format,
3425         c4x_single_format, c4x_extended_format, real_internal_format): Remove
3426         initialization of log2_b.
3427         * real.h (i370_single_format, i370_double_format): Declarations removed.
3428         * c-cppbuiltin.c (builtin_define_float_constants): Consider the log2_b
3429         field to always be one.
3430
3431 2007-05-21  Andreas Schwab  <schwab@suse.de>
3432
3433         * config/ia64/ia64.c (emit_predicate_relation_info): Fix use of
3434         NOTE_INSN_BASIC_BLOCK_P.
3435         (process_for_unwind_directive): Likewise.
3436
3437 2007-05-21  Nathan Sidwell  <nathan@codesourcery.com>
3438
3439         * builtins.c (expand_builtin_setjmp_setup): Update comment.
3440         * function.h (struct function): Move va_list_gpr_size,
3441         va_list_fpr_size, function_frequency to front of bitfields.  Add
3442         calls_unwind_init.
3443         (current_function_calls_unwind_init): New.
3444         * except.c (expand_builtin_unwind_init): Set
3445         current_function_calls_unwind_init not
3446         current_function_has_nonlocal_label.
3447         * reload1.c (has_nonexceptional_receiver): New.
3448         (reload): Use it and current_function_calls_unwind_init to
3449         determine whether call-saved regs must be saved.
3450
3451 2007-05-20  Jan Hubicka  <jh@suse.cz>
3452
3453         * gengtype.c (adjust_field_rtx_def): Use NOTE_KIND instead of
3454         NOTE_LINE_NUMBER; use NOTE_INSN_BASIC_BLOCK_P when possible.
3455         * ddg.c (create_ddg): LIkewise.
3456         * final.c (final): Remove hunk moving line numbernotes around since
3457         they are no longer present at this stage.
3458         (final_scan_insn): Use NOTE_KIND instead of
3459         NOTE_LINE_NUMBER; use NOTE_INSN_BASIC_BLOCK_P when possible.
3460         (output_asm_label): Likewise.
3461         * reorg.c (dbr_schedule): Likewise.
3462         * haifa-sched.c (unlink_other_notes): Likewise.
3463         * mode-switching.c (optimize_mode_switching): Likewise.
3464         * graph.c (start_bb): Likewise.
3465         * rtl.def (NOTE): Update description.
3466         * jump.c (squeeze_notes): Delete.
3467         (mark_jump_label): Use NOTE_KIND instead of NOTE_LINE_NUMBER; use
3468         NOTE_INSN_BASIC_BLOCK_P when possible.
3469         * ifcvt.c (dead_or_predicable): Remove call of squeeze_notes.
3470         * dwarf2out.c (gen_label_die): Use NOTE_KIND instead of
3471         NOTE_LINE_NUMBER; use NOTE_INSN_BASIC_BLOCK_P when possible.
3472         (dwarf2out_var_location): Likewise.
3473         * cfgbuild.c (make_edges): Likewise.
3474         (find_basic_blocks_1): Likewise.
3475         * function.c (reorder_blocks_1): Likewise.
3476         (epilogue_done): Likewise.
3477         (reposition_prologue_and_epilogue_notes): Likewise.
3478         * print-rtl.c (print_rtx): Likewise; drop code for printing line number
3479         notes.
3480         (print_rtl): Likewise.
3481         (print_rtl_single): Likewise.
3482         * gcse.c (insert_insn_start_bb): Likewise.
3483         * alias.c (init_alias_analysis): Likewise.
3484         * calls.c (fixup_tail_calls): Likewise.
3485         * except.c (sjlj_emit_function_enter): Likewise.
3486         * emit-rtl.c (add_insn_after): Likeiwse.
3487         (emit_label_before): Likewise.
3488         (emit_label_after): Likewise.
3489         (emit_note_before, emit_note_after, emit_note): Update
3490         parameter to be enum insn_note; do not deal with source
3491         files.
3492         * cfgcleanup.c (merge_blocks_move_predecessor_nojumps):
3493         Use NOTE_KIND instead of NOTE_LINE_NUMBER; use NOTE_INSN_BASIC_BLOCK_P
3494         when possible.
3495         (merge_blocks_move_successor_nojumps): Simplify now when
3496         we don't have BLOCK notes.
3497         (try_optimize_cfg): Likewise.
3498         * cfglayout.c (skip_insns_after_block): Likewise.
3499         (record_effective_endpoints): Likewise.
3500         (duplicate_insn_chain): Likewise.
3501         * varasm.c (output_constant_pool_1): Likewise.
3502         * sched-deps.c (sched_analyze): Likewise.
3503         * rtl.c (NOTE_INSN_MAX_isnt_negative_adjust_NOTE_INSN_BIAS):
3504         Exterminate.
3505         (note_insn_name): Simplify now when NOTE_INSN_BIAS is gone.
3506         * rtl.h (NOTE_SOURCE_LOCATION, NOTE_EXPANDED_LOCATION): Exterminate.
3507         (SET_INSN_DELETED): Simplify.
3508         (NOTE_LINE_NUMBER): Exterminate.
3509         (NOTE_LINE_KIND): New.
3510         (NOTE_INSN_BASIC_BLOCK_P): Update.
3511         (enum insn_note): Simplify.
3512         (GET_NOTE_INSN_NAME) Simplify.
3513         (emit_note_before, emit_note_after, emit_note): Update prototype.
3514         (squeeze_notes): Remove.
3515         * sched-int.h (NOTE_NOT_BB_P): Update.
3516         * resource.c (mark_target_live_regs): Update.
3517         * sched-rgn.c (debug_dependencies): Update.
3518         * sched-vis.c (print_insn): Update.
3519         * config/alpha/alpha.c (alpha_handle_trap_shadows): Update.
3520         * config/i386/i386.c (ix86_output_function_epilogue): Update.
3521         * config/sh/sh.c (sh_adjust_unroll_max): Function dead since gcc 4.0.0.
3522         (TARGET_ADJUST_UNROLL_MAX): Likewise.
3523         (split_branches): Update.
3524         (sh_optimize_target_register_callee_saved): Remove hunk dead since gcc
3525         4.0.0.
3526         (sh_adjust_unroll_max): Exterminate.
3527         * config/c4x/c4x.c (c4x_reorg): Use SET_INSN_DELETED.
3528         * config/m68hc11/m68hc11.c (m68hc11_check_z_replacement): Likewise.
3529         (m68hc11_reorg): Likewise.
3530         * config/ia64/ia64.c (emit_insn_group_barriers): Update.
3531         (emit_predicate_relation_info): Update.
3532         (process_for_unwind_directive): Update.
3533         * config/rs6000/rs6000.c (rs6000_output_function_epilogue): Update.
3534         (output_call): Update.
3535         * config/pa/pa.c (output_lbranch): Update.
3536         (output_millicode_call): Update.
3537         (output_call): Update.
3538         (pa_combine_instructions): Update.
3539         * config/mips/mips.c (mips16_gp_pseudo_reg): Update.
3540         * config/bfin/bfin.c (gen_one_bundle): Update.
3541         * cfgrtl.c (can_delete_note_p): Update.
3542         (delete_insn): Update.
3543         (rtl_merge_blocks): Update.
3544         (commit_one_edge_insertion): Update.
3545         (rtl_verify_flow_info): Update.
3546         * stmt.c (expand_case): Do not call squeeze_notes.
3547
3548 2007-05-20  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
3549
3550         PR middle-end/7651
3551         PR c++/11856
3552         PR c/12963
3553         PR c/23587
3554         PR other/29694
3555         * c.opt (Wtype-limits): New.
3556         * doc/invoke.texi (Wtype-limits): Document it.
3557         (Wextra): Enabled by -Wextra.
3558         * c-opts.c (c_common_post_options): Enabled by -Wextra.
3559         * c-common.c (shorten_compare): Warn with Wtype-limits.
3560
3561 2007-05-20  Uros Bizjak  <ubizjak@gmail.com>
3562
3563         * config/i386/tmmintrin.h (_mm_alignr_epi32): Implement as always
3564         inlined function, not as a macro.
3565         (_mm_alignr_pi8): Ditto.
3566         * config/i386/ammintrin.h (_mm_extracti_si64): Ditto.
3567         (_mm_inserti_si64): Ditto.
3568         * config/i386/emmintrin.h (_mm_shuffle_pd): Ditto.
3569         (_mm_extract_epi16): Ditto.
3570         (_mm_insert_epi16): Ditto.
3571         (_mm_shufflehi_epi16): Ditto.
3572         (_mm_shufflelo_epi16): Ditto.
3573         (_mm_shuffle_epi32): Ditto.
3574         * config/i386/xmmintrin.h (_mm_set_ss): Use 0.0f for float constant.
3575         * config/386/mm3dnow.h: Add __attribute__((__always_inline__)) to
3576         all functions.
3577         (_m_from_float): Add __extension__ to conversion.  Use 0.0f for
3578         float constant.
3579         (_m_to_float): Use C89 compatible assignment.
3580
3581 2007-04-20  Martin Michlmayr  <tbm@cyrius.com>
3582
3583         PR target/32007
3584         * config/arm/lib1funcs.asm: Define __ARM_ARCH__ on v2/v3 machines.
3585
3586 2007-05-20  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
3587
3588         PR middle-end/7651
3589         * doc/invoke.texi (Wreturn-type): Complete description.
3590         (Wextra): Delete item about return-type warning.
3591         * c-decl.c: Delete redundant Wextra warning.
3592
3593 2007-05-20  Uros Bizjak  <ubizjak@gmail.com>
3594
3595         PR target/31585
3596         * config/i386/pmmintrin.h: Do not include xmmintrin.h
3597         * config/i386/xmmintrin.h (_mm_extract_pi16): Implement as always
3598         inlined function, not as a macro.
3599         (_mm_prefetch): Ditto.
3600         (_m_pextrw): Ditto.
3601         (_mm_insert_pi16): Ditto.
3602         (_m_pinsrw): Ditto.
3603         (_mm_shuffle_pi16): Ditto.  Add const to __N argument.
3604         (_m_pshufw): Ditto. Add const to __N argument.
3605         (_mm_shufle_ps): Ditto.  Add const to __mask argument.
3606         * config/i386/emmintrin.h (_mm_slli_epi16): Add const to __B argument.
3607         (_mm_slli_epi32): Ditto.
3608         (_mm_srli_si128): Implement as always inlined function, not as a macro.
3609         Add __inline to function declaration.
3610         (_mm_slli_si128): Ditto.
3611
3612 2007-05-19  Uros Bizjak  <ubizjak@gmail.com>
3613
3614         * config/i386/sfp-machine.h (FP_EX_INVALID, FP_EX_DENORM,
3615         FP_EXP_DIVZERO, FP_EX_OVERFLOW, FP_EX_UNDERFLOW, FP_EX_INEXACT):
3616         New constants.
3617         (struct fenv): New structure.
3618         (FP_HANDLE_EXCEPTIONS): New define.
3619         (FP_RND_NEAREST, FP_RND_ZERO, FP_RND_PINF, FP_RND_MINF): New constants.
3620         (_FP_DECL_EXP): New define.
3621         (FP_INIT_ROUNDMODE): New define.
3622         (FP_ROUNDMODE): New define.
3623
3624 2007-05-19  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
3625
3626         * doc/invoke.texi (Warning Options): Add -Wconversion-sign.
3627         (Wconversion): Update description.
3628         (Wconversion-sign): New.
3629         * c.opt (Wconversion-sign): New.
3630         * c-opts.c (c_common_post_options): Uninitialized Wconversion-sign
3631         means disabled for C++. Otherwise, take the status of Wconversion.
3632         * c-common.c (conversion_warning): Warn with either Wconversion or
3633         Wconversion-sign.
3634         (warnings_for_convert_and_check): Conditions are already checked by
3635         conversion_warning.
3636         (convert_and_check): Don't check warnings if the conversion failed.
3637
3638 2007-05-19 Andy Hutchinson <HutchinsonAndy@netscape.net>
3639            Anatoly Sokolov <aesok@dol.ru>
3640
3641         * config/avr/avr-protos.h (expand_prologue, expand_epilogue,
3642         avr_epilogue_uses) : Add declaration.
3643         * config/avr/predicates.md (avr_sp_immediate_operand): New predicate.
3644         * config/avr/constraints.md (R): New constraint.
3645         config/avr/avr.md (SREG_ADDR, UNSPEC_SEI, UNSPEC_CLI,
3646         UNSPECV_PROLOGUE_SAVES, UNSPECV_EPILOGUE_RESTORES): New constants.
3647         (*pop1, *pop2, *pop3, *pop4, *pop5): Combine into ...
3648         (*addhi3_sp_R_pc2, *addhi3_sp_R_pc3): ... these patterns.
3649         (*movhi_sp, popqi, pophi, enable_interrupt, disable_interrupt,
3650         call_prologue_saves, epilogue_restores, return_from_epilogue,
3651         return_from_main_epilogue, return_from_interrupt_epilogue,
3652         return_from_naked_epilogue, prologue, epilogue): New patterns.
3653         (jump): Handle symbol reference.
3654         * config/avr/avr.c (out_adj_frame_ptr, out_set_stack_ptr,
3655         avr_output_function_prologue, avr_output_function_epilogue): Remove
3656         functions.
3657         (avr_init_machine_status, expand_prologue, expand_epilogue,
3658         avr_asm_function_end_prologue, avr_epilogue_uses,
3659         avr_asm_function_begin_epilogue): New functions.
3660         (prologue_size, epilogue_size, jump_tables_size): Remove global
3661         variables.
3662         (TARGET_ASM_FUNCTION_PROLOGUE, TARGET_ASM_FUNCTION_EPILOGUE): Remove.
3663         (TARGET_ASM_FUNCTION_END_PROLOGUE): Define.
3664         (TARGET_ASM_FUNCTION_BEGIN_EPILOGUE): Define.
3665         (avr_override_options): Initialise init_machine_status.
3666         (output_movhi): Handle all stack pointer loads.
3667         (out_movqi_r_mr, out_movqi_mr_r): Handle SREG_ADDR address.
3668         (avr_output_addr_vec_elt): Do not use variable jump_tables_size.
3669         * config/avr/avr.h (AVR_2_BYTE_PC, AVR_3_BYTE_PC): New.
3670         (EPILOGUE_USES) Redefine.
3671         (machine_function) Declare.
3672
3673 2007-05-19  Richard Sandiford  <richard@codesourcery.com>
3674
3675         * config/mips/mips.c (mips_offset_within_alignment_p): Tweak comment.
3676         Use a single return statement.
3677
3678 2007-05-19  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
3679
3680         PR middle-end/30250
3681         * builtins.c (do_mpfr_lgamma_r): New.
3682         (fold_builtin_2): Handle builtin gamma_r/lgamma_r.
3683         * tree.h (CASE_FLT_FN_REENT): New.
3684
3685 2007-05-18  Geoffrey Keating  <geoffk@apple.com>
3686
3687         * dwarf2out.c (print_die): Use '%ld' not '%lu' to print a 'long'.
3688         (output_die): Use 'unsigned long' with %x.
3689         * sched-vis.c (print_value): Use 'unsigned HOST_WIDE_INT' and
3690         HOST_WIDE_INT_PRINT_HEX to print HOST_WIDE_INT.
3691         * tree-dump.c (dump_pointer): Use 'unsigned long' for %lx.
3692
3693         * unwind-dw2.c (uw_identify_context): Use the CFA, not the IP.
3694
3695 2007-05-18  H.J. Lu  <hongjiu.lu@intel.com>
3696
3697         PR target/31989
3698         PR target/31681
3699         PR target/31666
3700         * config/i386/i386.c (init_cumulative_args): Set maybe_vaarg to
3701         true if function has no argument.
3702
3703 2007-05-18  DJ Delorie  <dj@redhat.com>
3704
3705         * config/mips/mips.c (mips_offset_within_alignment_p): New.
3706         (mips_symbolic_constant_p): Call it for TPREL and DTPREL symbols.
3707
3708 2007-05-18  Uros Bizjak  <ubizjak@gmail.com>
3709
3710         * longlong.h (__x86_64__): Add definitions for add_ssaaaa,
3711         sub_ddmmss, umul_ppmm, udiv_qrnnd, count_leading_zeros and
3712         count_trailing_zeros.
3713         (__i386__): Implement count_leading_zeros using __builtin_clz().
3714         Implement count_trailing_zeros usign __builtin_ctz().
3715
3716 2007-05-18  Richard Sandiford  <richard@codesourcery.com>
3717
3718         * config/i386/vxworks.h (ASM_PREFERRED_EH_DATA_FORMAT): Undefine.
3719
3720 2007-05-18  Uros Bizjak  <ubizjak@gmail.com>
3721
3722         PR middle-end/31344
3723         * expr.c (emit_move_change_mode): Change mode of push operands here.
3724
3725 2007-05-17  Ian Lance Taylor  <iant@google.com>
3726
3727         PR tree-optimization/31953
3728         * tree-vrp.c (set_value_range_to_value): Add equiv parameter.
3729         Change all callers.
3730         (set_value_range_to_null): Call set_value_range_to_value.
3731         (extract_range_from_comparison): Likewise.
3732
3733 2007-05-17  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
3734
3735         * toplev.c (print_version): Output GMP/MPFR version info.
3736
3737         * builtins.c (CASE_MATHFN_REENT): New macro.
3738         (mathfn_built_in): Use it.
3739         * builtins.def (BUILT_IN_GAMMA_R, BUILT_IN_GAMMAF_R,
3740         BUILT_IN_GAMMAL_R, BUILT_IN_LGAMMA_R, BUILT_IN_LGAMMAF_R,
3741         BUILT_IN_LGAMMAL_R): New.
3742         * doc/extend.texi: Document new builtins.
3743
3744         PR middle-end/31796
3745         * builtins.c (do_mpfr_remquo): New.
3746         (fold_builtin_2): Handle BUILT_IN_DREM/BUILT_IN_REMAINDER.
3747         (fold_builtin_3): Handle BUILT_IN_REMQUO.
3748
3749         PR middle-end/30251
3750         * builtins.c (fold_builtin_1): Handle y0, y1.
3751         (fold_builtin_2): Handle yn.
3752
3753         PR middle-end/30251
3754         * builtins.c (do_mpfr_bessel_n): New.
3755         (fold_builtin_1): Handle BUILT_IN_J0 and BUILT_IN_J1.
3756         (fold_builtin_2): Handle BUILT_IN_JN.
3757
3758 2007-05-17  Danny Smith  <dannysmith@users.sourceforge.net>
3759
3760         PR target/31965
3761         * config/i386/mingw32.h (_INTEGRAL_MAX_BITS): Define builtin as
3762         TYPE_PRECISION (intmax_type_node).
3763
3764 2007-05-17  Steve Ellcey  <sje@cup.hp.com>
3765
3766         PR target/31850
3767         * reload.c (subst_reloads): Remove checking.
3768
3769 2007-05-17  Eric Botcazou  <ebotcazou@libertysurf.fr>
3770
3771         PR rtl-optimization/31691
3772         * combine.c (simplify_set): Build a new src pattern instead of
3773         substituting its operands in the COMPARE case.
3774
3775 2007-05-17  Zdenek Dvorak  <dvorakz@suse.cz>
3776
3777         * tree-vrp.c (finalize_jump_threads): Do not care about dominance info.
3778         (execute_vrp): Preserve loops through jump threading.
3779         * tree-ssa-threadupdate.c (thread_single_edge,
3780         dbds_continue_enumeration_p, determine_bb_domination_status,
3781         thread_through_loop_header): New functions.
3782         (create_edge_and_update_destination_phis,
3783         create_edge_and_update_destination_phis): Set loops for the new blocks.
3784         (prune_undesirable_thread_requests): Removed.
3785         (redirect_edges): Do not pretend that redirect_edge_and_branch can
3786         create new blocks.
3787         (thread_block): Do not call prune_undesirable_thread_requests.
3788         Update loops.
3789         (mark_threaded_blocks): Select edges to thread here.
3790         (thread_through_all_blocks): Take may_peel_loop_headers argument.
3791         Thread edges through loop headers independently.
3792         * cfgloopmanip.c (create_preheader, mfb_keep_just): Export.
3793         * tree-pass.h (TODO_mark_first_instance): New.
3794         (first_pass_instance): Declare.
3795         * cfghooks.c (duplicate_block): Put the block to the original loop
3796         if copy is not specified.
3797         * tree-ssa-dom.c (tree_ssa_dominator_optimize): Preserve loops through
3798         jump threading.  Pass may_peel_loop_headers to
3799         thread_through_all_blocks according to first_pass_instance.
3800         * cfgloop.h (create_preheader): Declare.
3801         * tree-flow.h (thread_through_all_blocks): Declaration changed.
3802         * basic-block.h (mfb_keep_just, mfb_kj_edge): Declare.
3803         * passes.c (first_pass_instance): New variable.
3804         (next_pass_1): Set TODO_mark_first_instance.
3805         (execute_todo): Set first_pass_instance.
3806
3807 2007-05-17  Uros Bizjak  <ubizjak@gmail.com>
3808
3809         PR tree-optimization/24659
3810         * optabs.h (enum optab_index): Add OTI_vec_unpacks_float_hi,
3811         OTI_vec_unpacks_float_lo, OTI_vec_unpacku_float_hi,
3812         OTI_vec_unpacku_float_lo, OTI_vec_pack_sfix_trunc and
3813         OTI_vec_pack_ufix_trunc.
3814         (vec_unpacks_float_hi_optab): Define new macro.
3815         (vec_unpacks_float_lo_optab): Ditto.
3816         (vec_unpacku_float_hi_optab): Ditto.
3817         (vec_unpacku_float_lo_optab): Ditto.
3818         (vec_pack_sfix_trunc_optab): Ditto.
3819         (vec_pack_ufix_trunc_optab): Ditto.
3820         * genopinit.c (optabs): Implement vec_unpack[s|u]_[hi|lo]_optab
3821         and vec_pack_[s|u]fix_trunc_optab using
3822         vec_unpack[s|u]_[hi\lo]_* and vec_pack_[u|s]fix_trunc_* patterns
3823         * tree-vectorizer.c (supportable_widening_operation): Handle
3824         FLOAT_EXPR and CONVERT_EXPR.  Update comment.
3825         (supportable_narrowing_operation): New function.
3826         * tree-vectorizer.h (supportable_narrowing_operation): Prototype.
3827         * tree-vect-transform.c (vectorizable_conversion): Handle
3828         (nunits_in == nunits_out / 2) and (nunits_out == nunits_in / 2) cases.
3829         (vect_gen_widened_results_half): Move before vectorizable_conversion.
3830         (vectorizable_type_demotion): Call supportable_narrowing_operation()
3831         to check for target support.
3832         * optabs.c (optab_for_tree_code) Return vec_unpack[s|u]_float_hi_optab
3833         for VEC_UNPACK_FLOAT_HI_EXPR, vec_unpack[s|u]_float_lo_optab
3834         for VEC_UNPACK_FLOAT_LO_EXPR and vec_pack_[u|s]fix_trunc_optab
3835         for VEC_PACK_FIX_TRUNC_EXPR.
3836         (expand_binop): Special case mode of the result for
3837         vec_pack_[u|s]fix_trunc_optab.
3838         (init_optabs): Initialize vec_unpack[s|u]_[hi|lo]_optab and
3839         vec_pack_[u|s]fix_trunc_optab.
3840
3841         * tree.def (VEC_UNPACK_FLOAT_HI_EXPR, VEC_UNPACK_FLOAT_LO_EXPR,
3842         VEC_PACK_FIX_TRUNC_EXPR): New tree codes.
3843         * tree-pretty-print.c (dump_generic_node): Handle
3844         VEC_UNPACK_FLOAT_HI_EXPR, VEC_UNPACK_FLOAT_LO_EXPR and
3845         VEC_PACK_FIX_TRUNC_EXPR.
3846         (op_prio): Ditto.
3847         * expr.c (expand_expr_real_1): Ditto.
3848         * tree-inline.c (estimate_num_insns_1): Ditto.
3849         * tree-vect-generic.c (expand_vector_operations_1): Ditto.
3850
3851         * config/i386/sse.md (vec_unpacks_float_hi_v8hi): New expander.
3852         (vec_unpacks_float_lo_v8hi): Ditto.
3853         (vec_unpacku_float_hi_v8hi): Ditto.
3854         (vec_unpacku_float_lo_v8hi): Ditto.
3855         (vec_unpacks_float_hi_v4si): Ditto.
3856         (vec_unpacks_float_lo_v4si): Ditto.
3857         (vec_pack_sfix_trunc_v2df): Ditto.
3858
3859         * doc/c-tree.texi (Expression trees) [VEC_UNPACK_FLOAT_HI_EXPR]:
3860         Document.
3861         [VEC_UNPACK_FLOAT_LO_EXPR]: Ditto.
3862         [VEC_PACK_FIX_TRUNC_EXPR]: Ditto.
3863         * doc/md.texi (Standard Names) [vec_pack_sfix_trunc]: Document.
3864         [vec_pack_ufix_trunc]: Ditto.
3865         [vec_unpacks_float_hi]: Ditto.
3866         [vec_unpacks_float_lo]: Ditto.
3867         [vec_unpacku_float_hi]: Ditto.
3868         [vec_unpacku_float_lo]: Ditto.
3869
3870 2007-05-16  Uros Bizjak  <ubizjak@gmail.com>
3871
3872         * soft-fp/README: Update for new files.
3873         * soft-fp/floattisf.c: New file.
3874         * soft-fp/floattidf.c: New file.
3875         * soft-fp/floattitf.c: New file.
3876         * soft-fp/floatuntisf.c: New file.
3877         * soft-fp/floatuntidf.c: New file.
3878         * soft-fp/floatuntitf.c: New file.
3879         * soft-fp/fixsfti.c: New file.
3880         * soft-fp/fixdfti.c: New file.
3881         * soft-fp/fixtfti.c: New file.
3882         * soft-fp/fixunssfti.c: New file.
3883         * soft-fp/fixunsdfti.c: New file.
3884         * soft-fp/fixunstfti.c: New file.
3885         * soft-fp/extendxftf.c: New file.
3886         * soft-fp/trunctfxf.c: New file.
3887
3888         * libgcc-std.ver (__extendxftf2): Added to GCC_4.3.0 section.
3889         (__trunctfxf2): Ditto.
3890
3891         * config/i386/libgcc-x86_64-glibc.ver (__addtf3, __divtf3, __eqtf2,
3892         __extenddftf2, __extendsftf2, __fixtfdi, __fixtfsi, __fixtfti,
3893         __fixunstfdi, __fixunstfsi, __fixunstfti, __floatditf, __floatsitf,
3894         __floattitf, __floatunditf, __floatunsitf, __floatuntitf, __getf2,
3895         __letf2, __multf3, __negtf2, __subtf3, __trunctfdf2, __trunctfsf2,
3896         __unordtf2): Exclude and add to GCC_4.3.0 section for x86_64 targets.
3897
3898         * config/i386/t-fprules-softfp64: New file.
3899         * config/i386/sfp-machine.h: New file.
3900         * config.gcc (x86_64-*-linux*, x86_64-*-kfreebsd*-gnu,
3901         x86_64-*-knetbsd*-gnu): Add i386/t-fprules-softfp64
3902         and soft-fp/t-softfp to tmake_file.
3903         (i[34567]86-*-linux*, i[34567]86-*-kfreebsd*-gnu,
3904         i[34567]86-*-knetbsd*-gnu): Ditto for --enable-targets=all.
3905
3906         * config/i386/t-linux64 (softfp_wrap_start): New.
3907         (softfp_wrap_end): New.
3908         * config/i386/i386.c (ix86_scalar_mode_supported): TFmode is
3909         supported for TARGET_64BIT.
3910
3911 2007-05-16  Rafael Avila de Espindola  <espindola@google.com>
3912
3913         * c-common.c (c_common_signed_or_unsigned_type): Emulate
3914         c_common_unsigned_type behavior.
3915
3916 2007-05-16  Paolo Bonzini  <bonzini@gnu.org>
3917
3918         * config/i386/i386.c (legitimize_tls_address): Mark __tls_get_addr
3919         calls as pure.
3920
3921 2007-05-16  Eric Christopher  <echristo@apple.com>
3922
3923         * config/rs6000/rs6000.c (rs6000_emit_prologue): Move altivec register
3924         saving after stack push. Set sp_offset whenever we push.
3925         (rs6000_emit_epilogue): Move altivec register restore before
3926         stack push.
3927
3928 2007-05-16  Richard Sandiford  <richard@codesourcery.com>
3929
3930         * configure.ac: Allow sysroots to be relocated under $prefix as
3931         well as $exec_prefix.
3932         * configure: Regenerate.
3933
3934 2007-05-16  Richard Sandiford  <richard@codesourcery.com>
3935
3936         Revert:
3937
3938         2007-05-12  Richard Sandiford  <richard@codesourcery.com>
3939
3940         * configure.ac (gcc_gxx_include_dir): Use $(libsubdir_to_prefix).
3941         (gcc_tooldir): Likewise.
3942         * configure: Regenerate.
3943         * Makefile.in (libsubdir_to_prefix): New variable, based on the
3944         old configure.ac gcc_tooldir setting.
3945         (prefix_to_exec_prefix): New variable.
3946         (DRIVER_DEFINES): Use $(libsubdir_to_prefix)$(prefix_to_exec_prefix)
3947         rather than $(unlibsubdir)/../ to derive TOOLDIR_BASE_PREFIX.
3948
3949 2007-05-14  Janis Johnson  <janis187@us.ibm.com>
3950
3951         * c-typeck.c (build_binary_op): Return early for error.
3952
3953 2007-05-15  Zdenek Dvorak  <dvorakz@suse.cz>
3954
3955         * tree-ssa-loop-niter.c (record_estimate): Use GGC_NEW to allocate
3956         struct nb_iter_bound.
3957         (free_numbers_of_iterations_estimates_loop): Use ggc_free.
3958         * gengtype.c (open_base_files): Add cfhloop.h to the list of includes.
3959         * cfgloopmanip.c (place_new_loop): Vector larray is gc-allocated.
3960         * tree-scalar-evolution.c: Include gt-tree-scalar-evolution.h.
3961         (struct scev_info_str, scalar_evolution_info): Add GTY markers.
3962         (new_scev_info_str): Use GGC_NEW to allocate struct scev_info_str.
3963         (del_scev_info): Use ggc_free.
3964         (scev_initialize): Allocate scalar_evolution_info in gc memory.
3965         * loop-init.c: Include ggc.h.
3966         (loop_optimizer_init): Use GGC_CNEW to allocate struct loops.
3967         (loop_optimizer_finalize): Use ggc_free.
3968         * tree-ssa-loop.c (pass_tree_unswitch, pass_vectorize,
3969         pass_linear_transfom, pass_empty_loop, pass_complete_unroll,
3970         pass_iv_optimize): Add TODO_ggc_collect.
3971         * function.h (struct function): Remove skip marker from x_current_loops.
3972         * cfgloop.c: Include ggc.h.
3973         (flow_loops_free, flow_loop_free): Free the loop descriptions in gc
3974         memory.
3975         (establish_preds): Vector superloops is gc allocated.
3976         (alloc_loop): Allocate loop using GGC_CNEW.  Allocate head of
3977         loop->exits list.
3978         (flow_loops_find): Vector larray is gc allocated.
3979         (loop_exit_free): Use ggc_free.
3980         (rescan_loop_exit): Use GGC_NEW to allocate struct loop_exit.  Reflect
3981         that head of exits list is now not a part of struct loop.
3982         (record_loop_exits): Allocate exits table in gc memory.
3983         (get_loop_exit_edges, verify_loop_structure, single_exit): Reflect that
3984         head of exits list is now not a part of struct loop.
3985         * cfgloop.h (struct lpt_decision, struct nb_iter_bound,
3986         struct loop_exit): Add GTY marker.
3987         (struct loop): Add GTY marker.  Make superloops vector gc allocated.
3988         Add skip marker to aux field.  Make head of exits list a separate
3989         object.
3990         (struct loops): Add GTY marker.  Make larray vector gc allocated.
3991         Add param marker to exits table.
3992         (get_loops): Type changed.
3993         * Makefile.in (tree-scalar-evolution.o): Add gt-tree-scalar-evolution.h
3994         dependency.
3995         (cfgloop.o, loop-init.o): Add ggc.h dependency.
3996         (GTFILES): Add cfgloop.h and tree-scalar-evolution.c.
3997         * basic-block.h (struct basic_block_def): Remove skip marker from
3998         loop_father field.
3999
4000 2007-05-14  Uros Bizjak  <ubizjak@gmail.com>
4001
4002         * builtins.c (expand_builtin_mathfn): Use EXPAND_NORMAL instead
4003         of 0 in the call to expand_expr().
4004         (expand_builtin_mathfn_3): Ditto.
4005         (expand_builtin_interclass_mathfn): Ditto.
4006         (expand_builtin_cexpi): Ditto.
4007         (expand_builtin_int_roundingfn): Ditto.
4008         (expand_builtin_int_roundingfn_2): Ditto.
4009         (expand_builtin_pow): Ditto.
4010         (expand_builtin_powi): Ditto.
4011         (expand_builtin_bswap): Ditto.
4012         (expand_builtin_unop): Ditto.
4013         (expand_builtin_fabs): Ditto.
4014         (get_builtin_sync_mem): Use NULL_RTX instead of NULL in
4015         the call to expand_expr().
4016         (expand_builtin_sync_operation): Ditto.
4017         (expand_builtin_compare_and_swap): Ditto.
4018         (expand_builtin_lock_test_and_set): Ditto.
4019         * except.c (expand_builtin_eh_return_data_regno): Use EXPAND_NORMAL
4020         instead of 0 in the call to expand_expr().
4021         (expand_builtin_extract_return_addr): Ditto.
4022         (expand_builtin_eh_return): Ditto.
4023         (expand_eh_return): Ditto.
4024         * explow.c (expr_size): Ditto.
4025         * expr.c (optimize_bitfield_assignment_op): Ditto.
4026         (expand_assignement): Ditto.
4027         (store_expr): Ditto.
4028         (store_field): Ditto.
4029         (expand_expr_addr_expr_1): Use NULL_RTX instead of NULL in
4030         the call to expand_expr().
4031         (expand_expr_real_1) [COMPLEX_CST]: Use EXPAND_NORMAL instead of 0
4032         in the call to expand_expr().
4033         [CONSTRUCTOR, PLUS_EXPR, MINUS_EXPR, NEGATE_EXPR, ABS_EXPR,
4034         BIT_NOT_EXPR, LSHIFT_EXPR, LT_EXPR, TRUTH_NOT_EXPR]: Ditto.
4035         [VEC_UNPACK_HI_EXPR, VEC_UNPACK_LO]: Use expand_normal() instead
4036         of expand_expr().
4037         * optabs.c (expand_vec_shift_expr): Ditto.
4038         (expand_vec_cond_expr): Ditto.
4039         (vector_compare_rtx): Use EXPAND_STACK_PARM instead of 1 in the
4040         call to expand_expr().
4041         * stmt.c (expand_return): Use EXPAND_NORMAL instead of 0
4042         in the call to expand_expr().
4043
4044 2007-05-14  Dave Korn  <dave.korn@artimi.com>
4045
4046         * genautomata.c (gen_regexp_el):  Allocate correct size for regexp.
4047
4048 2007-05-14  Rafael Avila de Espindola  <espindola@google.com>
4049
4050         * c-common.c (warnings_for_convert_and_check): Use unsigned_type_for
4051         instead of c_common_unsigned_type.
4052         (c_common_unsigned_type): Remove.
4053         (shorten_compare): Use c_common_signed_or_unsigned_type instead of
4054         c_common_unsigned_type.
4055         (c_common_nodes_and_builtins): Use unsigned_type_for instead of
4056         c_common_unsigned_type.
4057         * c-common.h (c_common_unsigned_type): Remove.
4058         * c-decl.c (grokdeclarator): Use unsigned_type_for instead of
4059         c_common_unsigned_type.
4060         * c-format.c (check_format_types): Use unsigned_type_for instead of
4061         c_common_unsigned_type.
4062         * c-objc-common.h (LANG_HOOKS_UNSIGNED_TYPE): Remove.
4063         * c-typeck.c (convert_for_assignment): Use unsigned_type_for instead of
4064         c_common_unsigned_type.
4065         * convert.c (convert_to_integer): Use unsigned_type_for instead of
4066         lang_hooks.types.unsigned_type.
4067         * expmed.c (make_tree): Use unsigned_type_for instead of
4068         lang_hooks.types.unsigned_type.
4069         * fold-const.c (fold_negate_expr): Use unsigned_type_for instead of
4070         lang_hooks.types.unsigned_type.
4071         (build_range_check): Likewise.
4072         (fold_unary): Likewise.
4073         (fold_binary): Likewise.
4074         (fold_ternary): Likewise.
4075         * langhooks-def.h (LANG_HOOKS_UNSIGNED_TYPE): Remove.
4076         * langhooks.h (lang_hooks_for_types): Remove unsigned_type.
4077         * tree.c (get_unsigned_type): New.
4078         (unsigned_type_for): Use get_unsigned_type instead of
4079         lang_hooks.types.unsigned_type.
4080
4081 2007-05-14  Kazu Hirata  <kazu@codesourcery.com>
4082
4083         * config/m68k/m68k-protos.h: Rename m68k_interrupt_function_p
4084         to m68k_get_function_kind.  Update its prototype.
4085         * config/m68k/m68k.c (m68k_attribute_table): Add an entry for
4086         interrupt_thread.
4087         (m68k_interrupt_function_p): Return enum m68k_function_type
4088         instead of bool.  Rename to m68k_get_function_kind.
4089         (m68k_handle_fndecl_attribute): Reject interrupt_thread if the
4090         target is not fido.
4091         (m68k_compute_frame_layout): Don't mark any register for save
4092         if an interrupt_thread attribute is specified.
4093         (m68k_hard_regno_rename_ok): Update a use of
4094         m68k_interrupt_function_p.
4095         * config/m68k/m68k.h (EPILOGUE_USES): Update a use of
4096         m68k_interrupt_function_p.
4097         (m68k_function_type): New.
4098         * config/m68k/m68k.md (*return): Output a 'sleep' instruction
4099         for a function with an interrupt_thread attribute.
4100         * doc/extend.texi: Document the interrupt_thread attribute.
4101
4102 2007-05-13  Daniel Berlin  <dberlin@dberlin.org>
4103
4104         Fix PR tree-optimization/31911
4105         * tree-ssa-pre.c (phi_translate): Make sure to cache results even
4106         if they didn't change the expression.
4107
4108 2007-05-13  Zdenek Dvorak  <dvorakz@suse.cz>
4109
4110         * tree-scalar-evolution.c (resolve_mixers): Exported.
4111         * tree-scalar-evolution.h (resolve_mixers): Declare.
4112         * tree-data-ref.c (object_analysis, ptr_decl_may_alias_p,
4113         ptr_ptr_may_alias_p, may_alias_p, record_ptr_differ_p,
4114         record_record_differ_p, record_array_differ_p, array_ptr_differ_p,
4115         base_object_differ_p, base_addr_differ_p, analyze_array_indexes,
4116         init_array_ref, init_pointer_ref, analyze_indirect_ref,
4117         strip_conversion, analyze_offset_expr, address_analysis,
4118         object_analysis, analyze_offset): Removed.
4119         (dr_analyze_innermost, dr_analyze_indices, dr_analyze_alias,
4120         split_constant_offset, canonicalize_base_object_address,
4121         object_address_invariant_in_loop_p, disjoint_objects_p,
4122         dr_may_alias_p, dr_address_invariant_p): New functions.
4123         (create_data_ref): Use dr_analyze_innermost, dr_analyze_indices
4124         and dr_analyze_alias.
4125         (initialize_data_dependence_relation): Use dr_may_alias_p
4126         and object_address_invariant_in_loop_p.
4127         (compute_self_dependence): Handle the case when DDR_ARE_DEPENDENT (ddr)
4128         is chrec_dont_know.
4129         (find_data_references_in_stmt): Restrict the analysis of data references
4130         to the given loop nest.
4131         (find_data_references_in_loop): Made static.  Pass loop nest to
4132         find_data_references_in_stmt.
4133         (compute_data_dependences_for_loop): Use DR_VOPS.
4134         (free_data_ref): Free DR_VOPS.
4135         * tree-data-ref.h (struct first_location_in_loop): Replaced by ...
4136         (struct innermost_loop_behavior): ... new.
4137         (struct base_object_info): Replaced by ...
4138         (struct indices): ... new.
4139         (struct dr_alias): New.
4140         (enum data_ref_type): Removed.
4141         (struct data_reference): Consist of struct innermost_loop_behavior,
4142         struct indices and struct dr_alias.
4143         (DR_SET_ACCESS_FNS, DR_FREE_ACCESS_FNS): Removed.
4144         (DR_MEMTAG): Renamed to ...
4145         (DR_SYMBOL_TAG): ... this.
4146         (find_data_references_in_loop): Declaration removed.
4147         * tree-vect-analyze.c (vect_compute_data_ref_alignment): Use DR_INIT
4148         instead of DR_OFFSET_MISALIGNMENT.  DR_ALIGNED_TO is never NULL.
4149         (vect_analyze_data_refs): Use DR_SYMBOL_TAG instead of DR_MEMTAG.
4150         * tree-vect-transform.c (vect_create_data_ref_ptr): Ditto.
4151
4152 2007-05-13  Revital Eres  <eres@il.ibm.com>
4153
4154         * tree-ssa-dse.c (get_use_of_stmt_lhs): New function
4155         which walks virtual def-use chains to find redundant stores.
4156         (dse_optimize_stmt): Call it.
4157
4158 2007-05-12  Steven Bosscher  <steven@gcc.gnu.org>
4159
4160         * gcse.c (gcse_main): Do jump bypassing in CPROP2.
4161         * passes.c (init_optimization_passes): Move pass_jump_bypass
4162         after loop2.
4163
4164         * basic-block.h (bb_has_eh_pred): Fix style issue.
4165
4166 2007-05-12  Steven Bosscher  <steven@gcc.gnu.org>
4167
4168         PR rtl-optimization/31848
4169         * loop-invariant.c (move_invariant_reg): If we move an insn
4170         with a REG_EQUAL note, and that insn is not always executed,
4171         remove the REG_EQUAL note.
4172
4173 2007-05-12  Richard Guenther  <rguenther@suse.de>
4174
4175         PR tree-optimization/31797
4176         * tree-ssa-forwprop.c (forward_propagate_addr_expr): Do not
4177         propagate into a stmt that has volatile ops.
4178
4179 2007-05-12  Richard Sandiford  <richard@codesourcery.com>
4180
4181         * configure.ac (gcc_gxx_include_dir): Use $(libsubdir_to_prefix).
4182         (gcc_tooldir): Likewise.
4183         * configure: Regenerate.
4184         * Makefile.in (libsubdir_to_prefix): New variable, based on the
4185         old configure.ac gcc_tooldir setting.
4186         (prefix_to_exec_prefix): New variable.
4187         (DRIVER_DEFINES): Use $(libsubdir_to_prefix)$(prefix_to_exec_prefix)
4188         rather than $(unlibsubdir)/../ to derive TOOLDIR_BASE_PREFIX.
4189
4190 2007-05-11  Silvius Rus  <rus@google.com>
4191
4192         * Makefile.in (OBJS-common): Add tree-ssa-alias-warnings.o.
4193         * c-common.c (strict_aliasing_warning): Modify -Wstrict-aliasing logic.
4194         * c-common.h (strict_aliasing_warning): Change return type.
4195         * c-opts.c (c_common_handle_option): Add call to set_Wstrict_aliasing.
4196         * c-typeck.c (build_indirect_ref): Add call to strict_aliasing_warning.
4197         (build_c_cast): Condition call to strict_aliasing_warning.
4198         * doc/invoke.texi: Update description of -Wstrict-aliasing[=n].
4199         * flags.h (set_Wstrict_aliasing): Declare.
4200         * opts.c (set_Wstrict_alising): Define, add call to.
4201         * tree-flow.h (strict_aliasing_warning_backend): Declare.
4202         * tree-ssa-alias-warnings.c: New file.
4203         * tree-ssa-alias.c (compute_may_aliases): Add call to
4204         strict_aliasing_warning_backend.
4205
4206 2007-05-11  Zdenek Dvorak  <dvorakz@suse.cz>
4207
4208         * tree-loop-linear.c (gather_interchange_stats, try_interchange_loops):
4209         Use loop_depth and loop_outer accessor functions.
4210         * tree-ssa-loop-im.c (outermost_invariant_loop, set_level,
4211         determine_invariantness_stmt, move_computations_stmt): Ditto.
4212         * cfgloopmanip.c (fix_bb_placement, fix_loop_placement, remove_path,
4213         add_loop, loopify, unloop, fix_loop_structure): Ditto.
4214         * tree-ssa-loop-manip.c (find_uses_to_rename_use): Ditto.
4215         * tree-scalar-evolution.c (interpret_loop_phi,
4216         compute_scalar_evolution_in_loop, analyze_scalar_evolution_in_loop,
4217         instantiate_parameters_1, scev_const_prop): Ditto.
4218         * cfghooks.c (make_forwarder_block): Ditto.
4219         * cfgloopanal.c (mark_irreducible_loops, mark_loop_exit_edges): Ditto.
4220         * modulo-sched.c (loop_canon_p): Ditto.
4221         * tree-vectorizer.c (slpeel_tree_duplicate_loop_to_edge_cfg,
4222         slpeel_can_duplicate_loop_p): Ditto.
4223         * lambda-code.c (invariant_in_loop_and_outer_loops): Ditto.
4224         * tree-cfg.c (tree_duplicate_sese_region): Ditto.
4225         * cfgloop.c (flow_loop_dump, flow_loop_nodes_find, rescan_loop_exit,
4226         cancel_loop, verify_loop_structure): Ditto.
4227         (flow_loop_nested_p, superloop_at_depth, flow_loop_free,
4228         add_bb_to_loop, remove_bb_from_loops, find_common_loop): Use the
4229         superloops vector instead of "pred" array.
4230         (establish_preds): Take father loop as an argument.  Initialize the
4231         superloops vector.
4232         (flow_loop_tree_node_add): Pass father loop to establish_preds.  Do not
4233         initialize loop->outer.
4234         (flow_loop_tree_node_remove): Truncate the superloops vector.
4235         * cfgloop.h (struct loop): Removed field "outer", fields "depth" and
4236         "pred" merged to "superloops" vector.
4237         (loop_depth, loop_outer): New.
4238         (fel_init): Use loop_outer.
4239
4240 2007-05-11  Jan Hubicka  <jh@suse.cz>
4241
4242         * cgraphunit.c: Include gt-cgraphunit.h
4243         (static_ctors, static_dtors): New static vars.
4244         (record_cdtor_fn, build_cdtor, cgraph_build_cdtor_fns): New functions,
4245         based on implementation in c-common.c
4246         (cgraph_finalize_function): Call record_cdtor_fn.
4247         (cgraph_optimize): Call cgraph_build_cdtor_fns.
4248         * decl.c (finish_function): Do not call c_record_cdtor_fn.
4249         (c_write_global_declarations): Do not call c_build_cdtor_fns.
4250         * c-common.c (static_ctors, static_dtors, c_record_cdtor_fn,
4251         build_cdtor, c_build_cdtor_fns): Remove.
4252         * c-common.h (static_ctors, static_dtors, c_record_cdtor_fn,
4253         c_build_cdtor_fns): Remove prototype.
4254
4255 2007-05-11  Paolo Carlini  <pcarlini@suse.de>
4256
4257         PR other/31852
4258         * builtin-types.def: Add BT_FN_PTR_CONST_PTR_INT_SIZE.
4259         * builtins.def: Add BUILT_IN_MEMCHR, use the latter.
4260         * builtins.c (fold_builtin_memchr): New.
4261         (expand_builtin_memchr): Call the latter.
4262         (expand_builtin, fold_builtin_3): Deal with BUILT_IN_MEMCHR.
4263         * doc/extend.texi ([Other built-in functions provided by GCC]):
4264         Document memchr.
4265
4266 2007-05-11  Andreas Krebbel  <krebbel1@de.ibm.com>
4267
4268         * config/s390/s390.md (GPR0_REGNUM, FPR0_REGNUM, FPR2_REGNUM,
4269         PFPO_CONVERT, PFPO_OP_TYPE_SF, PFPO_OP_TYPE_DF, PFPO_OP_TYPE_TF,
4270         PFPO_OP_TYPE_SD, PFPO_OP_TYPE_DD, PFPO_OP_TYPE_TD, PFPO_OP0_TYPE_SHIFT,
4271         PFPO_OP1_TYPE_SHIFT): Constants added.
4272         (DFP_ALL): Mode macro defined.
4273         ("*trunc<BFP:mode><DFP_ALL:mode>2", "*trunc<DFP_ALL:mode><BFP:mode>2",
4274         "*extend<BFP:mode><DFP_ALL:mode>2", "*extend<DFP_ALL:mode><BFP:mode>2"):
4275         Insn definitions added.
4276         ("trunc<BFP:mode><DFP_ALL:mode>2", "trunc<DFP_ALL:mode><BFP:mode>2",
4277         "extend<BFP:mode><DFP_ALL:mode>2", "extend<DFP_ALL:mode><BFP:mode>2"):
4278         Expanders added.
4279
4280 2007-05-10  Zdenek Dvorak  <dvorakz@suse.cz>
4281
4282         PR tree-optimization/31885
4283         * tree-chrec.c (chrec_contains_undetermined): Do not consider NULL_TREE
4284         to be undetermined.
4285         (automatically_generated_chrec_p): Return false for NULL.
4286
4287 2007-05-08  Bernd Schmidt  <bernd.schmidt@analog.com>
4288
4289         * config/bfin/bfin.h (MOVE_RATIO): Define.
4290
4291 2007-05-10  Richard Sandiford  <richard@codesourcery.com>
4292
4293         * config.gcc (sparc-wrs-vxworks): New target.
4294         * config/sparc/vxworks.h, config/sparc/t-vxworks: New files.
4295         * config/sparc/sparc-protos.h (sparc_emit_call_insn): Declare.
4296         * config/sparc/sparc.h: Include vxworks-dummy.h.
4297         (PRINT_OPERAND_ADDRESS): Extend SYMBOL_REF handling to
4298         include LABEL_REFs too.
4299         * config/sparc/sparc.c (sparc_expand_move): Don't assume that
4300         _GLOBAL_OFFSET_TABLE_ - label_ref is a link-time constant on
4301         VxWorks.
4302         (legitimize_pic_address): Handle LABEL_REFs like SYMBOL_REFs
4303         on VxWorks.
4304         (load_pic_register): Use gen_vxworks_load_got for VxWorks.
4305         (sparc_emit_call_insn): New function.
4306         (sparc_function_ok_for_sibcall): Restrict sibcalls to locally-binding
4307         functions when generating VxWorks PIC.
4308         * config/sparc/sparc.md (vxworks_load_got): New pattern.
4309         (call, call_value): Use sparc_emit_call_insn instead of
4310         emit_call_insn.
4311
4312 2007-05-09  Bob Wilson  <bob.wilson@acm.org>
4313
4314         * config/xtensa/xtensa.c (xtensa_output_literal): Don't use #if.
4315
4316 2007-05-09  Bob Wilson  <bob.wilson@acm.org>
4317
4318         * config/xtensa/xtensa.c (xtensa_output_literal): Mask out high bits
4319         for floating-point values if HOST_BITS_PER_LONG > 32.  Use split_double
4320         instead of operand_subword.
4321
4322 2007-05-08  Bernd Schmidt  <bernd.schmidt@analog.com>
4323
4324         * config/bfin/bfin.h (LOCAL_ALIGNMENT): Define.
4325         * config/bfin/bfin.c (bfin_local_alignment): New function.
4326         * config/bfin/bfin-protos.h (bfin_local_alignment): Declare it.
4327
4328 2007-05-08  Chao-ying Fu  <fu@mips.com>
4329
4330         * doc/md.texi (msub@var{m}@var{n}4, usub@var{m}@var{n}4): Document.
4331         * optabs.h (OTI_smsub_widen, OTI_umsub_widen): New optab_indexes.
4332         (smsub_widen_optab, umsub_widen_optab): Define.
4333         * optabs.c (init_optabs): Initialize smsub_widen_optab and
4334         umsub_widen_optab.
4335         * genopinit.c (optabs): Fill in smsub_widen_optab and
4336         umsub_widen_optab.
4337         * expr.c (expand_expr_real_1): Try to use smsub_widen_optab
4338         and umsub_widen_optab to implement multiply-subtract sequences.
4339         * config/mips/mips.md (*msac<u>_di): Rename to...
4340         (<u>msubsidi4): ...this.  Extend condition to include
4341         GENERATE_MADD_MSUB and TARGET_DSPR2.  Change the constraint
4342         of operand 0 to "ka" and use the three-operand form of msub<u>
4343         for TARGET_DSPR2.
4344         * config/mips/mips-dspr2.md (mips_msub, mips_msubu): Convert
4345         to define_expands.
4346
4347 2007-05-08  Kaz Kojima  <kkojima@gcc.gnu.org>
4348
4349         PR rtl-optimization/28011
4350         * reload.c (push_reload): Set dont_share if IN appears in OUT
4351         also when IN is a PLUS rtx.
4352         (reg_overlap_mentioned_for_reload_p): Return true if X and IN
4353         are same PLUS rtx.
4354
4355 2007-05-08  Kazu Hirata  <kazu@codesourcery.com>
4356
4357         * emit-rtl.c (unshare_all_rtl_1): Don't copy DECL_RTL.  Don't
4358         call unshare_all_decls.
4359         (unshare_all_rtl): Adjust the call to unshare_all_rtl_1.
4360         (unshare_all_decls): Remove.
4361
4362 2007-05-08  Simon Martin  <simartin@users.sourceforge.net>
4363
4364         PR 31847
4365         * tree-dump.c (dump_options): Don't use TDF_DIAGNOSTIC in "*-all" tree
4366         dumps.
4367
4368 2007-05-08  Sandra Loosemore  <sandra@codesourcery.com>
4369             Nigel Stephens  <nigel@mips.com>
4370
4371         * config/mips/mips.h (MAX_FPRS_PER_FMT): Renamed from FP_INC.
4372         Update comments and all uses.
4373         (MIN_FPRS_PER_FMT): Define.
4374         * config/mips/mips.c (function_arg): Fix to correctly handle
4375         the -mips32r2 -mfp64 -mabi=32 case.
4376         (override_options): Enable use of odd-numbered registers for
4377         SFmode values on MIPS32.
4378         (mips_save_reg_p): Save whole floating-point register pair if
4379         either half is used.
4380         (compute_frame_size): Fix comment.
4381
4382 2007-05-08  Jie Zhang  <jie.zhang@analog.com>
4383
4384         * config/bfin/bfin-protos.h (bfin_expand_epilogue): Add a third
4385         argument of type bool.
4386         * config/bfin/bfin.c (add_to_reg): Add epilogue_p as a fourth
4387         argument. Safely select temporary P register according to it.
4388         (do_link): Change call site of add_to_reg accordingly.
4389         (do_unlink): Add epilogue_p as a fourth argument and pass it
4390         to add_to_reg.
4391         (expand_interrupt_handler_epilogue): Change call of do_unlink
4392         accordingly.
4393         (bfin_expand_prologue): Add a third argument sibcall_p.
4394         * config/bfin/bfin.md (epilogue): Change call of
4395         bfin_expand_epilogue accordingly.
4396         (sibcall_epilogue): Likewise.
4397         (eh_return_internal): Likewise.
4398
4399         * config/bfin/bfin-protos.h (enum bfin_cpu): Add
4400         BFIN_CPU_BF534, BFIN_CPU_BF536 and BFIN_CPU_BF561.
4401         * config/bfin/bfin.c (bfin_handle_option): Handle
4402         -mcpu=bf534, -mcpu=bf536 and -mcpu=bf561.
4403         * config/bfin/bfin.h (TARGET_CPU_CPP_BUILTINS):
4404         Support bf534, bf536 and bf561.
4405         * doc/invoke.texi (Blackfin Options): Document -mcpu and -msim.
4406
4407 2007-05-08  Uros Bizjak  <ubizjak@gmail.com>
4408
4409         PR target/31854
4410         * config/i386/i386.c (ix86_function_regparm): Process local
4411         functions only when TREE_CODE (decl) equals FUNCTION_DECL.
4412
4413 2007-05-07  Mike Stump  <mrs@apple.com>
4414
4415         * doc/invoke.texi (Warning Options): Document that -Wempty-body
4416         also checks for and while statements in C++.
4417
4418 2007-05-07  Nathan Froyd  <froydnj@codesourcery.com>
4419
4420         * gcc.c (at_file_supplied): New variable.
4421         (main): Set it if we expanded argv.
4422         (do_spec_1): Pass an @-file to the linker if we were called with
4423         an @-file argument and HAVE_GNU_LD.
4424         * collect2.c (at_file_supplied): New variable.
4425         (response_file): New variable.
4426         (collect_exit): Unlink response_file if necessary.
4427         (handler): Likewise.
4428         (do_wait): Likewise.
4429         (main): Set at_file_supplied if we expanded argv.
4430         (collect_execute): Pass an @-file to subprocesses if we were called
4431         with an @-file argument.
4432         * configure.ac: Add define for HAVE_GNU_LD.
4433         * configure: Regenerate.
4434         * config.in: Regenerate.
4435
4436 2007-05-07  Naveen.H.S  <naveen.hs@kpitcummins.com>
4437
4438         * config/m32c/muldiv.md (mulhisi3_c): Limit the mode of the 2nd
4439         operand to HI mode.
4440         (mulsi3): New.
4441         (divsi3): New.
4442         (udivsi3): New.
4443
4444 2007-05-07  Jayant Sonar  <jayants@kpitcummins.com>
4445
4446         * config/m32c/m32c.c (SYMBOL_FLAG_FUNCVEC_FUNCTION): Define.
4447         (TARGET_ENCODE_SECTION_INFO): Re-define.
4448         (m32c_encode_section_info): New
4449         (function_vector_handler): New
4450         (current_function_special_page_vector): New
4451         (m32c_special_page_vector_p): New.
4452         * config/m32c/m32c-protos.h (m32c_special_page_vector_p):
4453         Prototype.
4454         * config/m32c/jump.md: Added instruction JSRS for functions
4455         with attribute "function_vector".
4456         * doc/extend.texi (function_vector): Added description
4457         for M16C, M32C targets.
4458
4459 2007-05-07  DJ Delorie  <dj@redhat.com>
4460
4461         PR 31794
4462         * config/m32c/shift.md (ashlpsi3_i, ashrpsi3_i, ashlpsi3,
4463         ashrpsi3, lshrpsi3): Update shift count constraint.
4464
4465 2007-05-07  Danny Smith  <dannysmith@users.sourceforge.net>
4466             Nathan Froyd  <froydnj@codesourcery.com>
4467
4468         PR 22133
4469         * c-incpath.c (add_path): Strip trailing path separators.
4470
4471 2007-05-07  Eric Botcazou  <ebotcazou@adacore.com>
4472
4473         * tree-ssa-dom.c (tree_ssa_dominator_optimize): Reset cfg_altered.
4474         Free dominance info before purging EH edges.
4475         (eliminate_degenerate_phis): Likewise.
4476         (propagate_rhs_into_lhs): Set cfg_altered to true instead of 1.
4477
4478 2007-05-07  Jan Hubicka  <jh@suse.cz>
4479
4480         * gimplify.c (gimplify_expr): Do not crash when folding
4481         (void *)(int)&a + 4.
4482
4483 2007-05-07  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
4484
4485         PR driver/31694
4486         * c-opts.c (lang_fortran): Make it non static.
4487         * c-common.h (lang_fortran): New prototype.
4488         * c-cppbuiltin.c (c_cpp_builtins): Create a __GFORTRAN__ if the
4489         -lang-fortran option was passed by the driver.
4490
4491 2007-05-06  Eric Botcazou  <ebotcazou@adacore.com>
4492
4493         * timevar.c (timevar_print): Test ENABLE_ASSERT_CHECKING instead
4494         of ASSERT_CHECKING.  Tweak message.
4495
4496 2007-05-06  Revital Eres  <eres@il.ibm.com>
4497
4498         PR 30957
4499         * loop-unroll.c (insert_var_expansion_initialization):
4500         Initialize the expansions with -zero instead of +zero.
4501
4502 2007-05-05  Aurelien Jarno  <aurelien@aurel32.net>
4503
4504         * config/pa/pa.md: Split tgd_load, tld_load and tie_load
4505         into pic and non-pic versions. Mark r19 as used for
4506         tgd_load_pic, tld_load_pic and tie_load_pic. Mark r27 as used
4507         for tgd_load, tld_load and tie_load .
4508         * config/pa/pa.c (legitimize_tls_address): Emit pic or non-pic
4509         version of tgd_load, tld_load and tie_load depending on the
4510         value of flag_pic.
4511
4512 2007-05-04  Ulrich Drepper  <drepper@redhat.com>
4513             Jakub Jelinek  <jakub@redhat.com>
4514
4515         * crtstuff.c (HIDDEN_DTOR_LIST_END): New macro.
4516         (__do_global_dtors_aux): Use more paranoid loop to run
4517         destructors if HIDDEN_DTOR_LIST_END.
4518         (__DTOR_END__): Export as a hidden symbol when HIDDEN_DTOR_LIST_END.
4519
4520 2007-05-04  Jakub Jelinek  <jakub@redhat.com>
4521
4522         * varasm.c (align_variable): Don't increase alignment for
4523         DECL_THREAD_LOCAL_P variables above BITS_PER_WORD through
4524         DATA_ALIGNMENT or CONSTANT_ALIGNMENT.
4525
4526 2007-05-04  Josh Conner  <jconner@apple.com>
4527
4528         * basic-block.h (cdi_direction): Assign values to all enumeration
4529         constants.
4530         (dom_computed): Remove.
4531         (dom_info_state): New.
4532         (set_dom_info_availability): New.
4533         * tree-ssa-loop-im.c (determine_invariantness): Initialize
4534         walk_data.dom_direction.
4535         * cfghooks.c (delete_basic_block): Use dom_info_available_p()
4536         instead of dom_computed[].
4537         (split_edge): Likewise.
4538         (create_basic_block): Likewise.
4539         (merge_blocks): Likewise.
4540         * ifcvt.c (find_if_header): Likewise.
4541         * tree-cfgcleanup.c (cleanup_tree_cfg): Likewise.
4542         * tree-ssa-dce.c (remove_dead_stmt): Likewise.
4543         * tree-ssa.c (verify_ssa): Likewise.
4544         * tree-cfg.c (tree_verify_flow_info): Likewise.
4545         (remove_edge_and_dominated_blocks): Likewise.
4546         * dominance.c (dom_computed): Make static.
4547         (calc_dfs_tree_nonrec): Change third param to a bool.
4548         (calc_dfs_tree): Change second param to a bool.
4549         (calc_idioms): Change second param to a bool.  Use
4550         dom_convert_dir_to_idx.
4551         (init_dom_info): Validate dir before using.
4552         (dom_convert_dir_to_idx): New.
4553         (calculate_dominance_info): Use dom_convert_dir_to_idx.  New
4554         variable 'reverse' used for calling calc_dfs_tree and calc_idoms.
4555         (free_dominance_info): Use dom_convert_dir_to_idx.
4556         (get_immediate_dominator): Likewise.
4557         (set_immediate_dominator): Likewise.
4558         (get_dominated_by): Likewise.
4559         (redirect_immediate_dominators): Likewise.
4560         (nearest_common_denominator): Likewise.
4561         (dominated_by_p): Likewise.
4562         (bb_dom_dfs_in): Likewise.
4563         (bb_dom_dfs_out): Likewise.
4564         (recount_dominator): Likewise.
4565         (iterate_fix_dominators): Likewise.
4566         (add_to_dominance_info): Likewise.
4567         (delete_from_dominance_info): Likewise.
4568         (first_dom_son): Likewise.
4569         (next_dom_son): Likewise.
4570         (dom_info_available_p): Likewise.
4571         (dom_info_state): New.
4572         (set_dom_info_availability): New.
4573
4574 2007-05-04  Andreas Krebbel  <krebbel1@de.ibm.com>
4575
4576         * config/s390/s390.md ("fix_trunc<mode>di2", "fix_trunc<mode>si2"):
4577         Expander removed.
4578         ("fix_trunc<DSF:mode><GPR:mode>2"): Expander added.
4579
4580 2007-05-04  Bob Wilson  <bob.wilson@acm.org>
4581
4582         * config/xtensa/xtensa.md (adddi3, adddi_carry): Delete.
4583         (subdi3, subdi_carry): Delete.
4584
4585 2007-05-04  Jan Hubicka  <jh@suse.cz>
4586             Richard Guenther  <rguenther@suse.de>
4587
4588         * opts.c (decode_options): Do not fiddle with inlining
4589         parameters in case of optimizing for size.
4590         * ipa-inline.c (cgraph_decide_recursive_inlining): When optimizing
4591         for size do nothing.
4592         (cgraph_decide_inlining_of_small_function): When optimizing for
4593         size never inline functions increasing caller size.
4594         (cgraph_early_inlining): Inline for size when optimizing for size.
4595
4596 2007-04-18  Bernd Schmidt  <bernd.schmidt@analog.com>
4597
4598         * config/bfin/bfin.md (<optab>di3): Now a define_expand which expands
4599         logical operations piecewise.
4600         (<optab>di_zesidi_di, <optab>di_sesidi_di, negdi2, one_cmpldi2,
4601         zero_extendsidi2, subdi_di_zesidi, subdi_zesidi_di, subdi_di_sesidi,
4602         subdi_sesidi_di): Delete.
4603         (add_with_carry): Produce carry in CC instead of a DREG to shorten
4604         the generated sequence.  Allow three-reg add in constraints.  Rewrite
4605         the rtl expression for carry to avoid zero_extend of a constant.
4606         (sub_with_carry): New pattern.
4607         (adddi3, subdi3): Change into define_expand.  For subtract, generate a
4608         different sequence not involving jumps.
4609         (notbi): Now a named pattern.
4610
4611 2007-05-04  Bradley Lucier  <lucier@math.purdue.edu>
4612
4613         * doc/invoke.texi (i386 and x86-64 Options) [-mpc32, -mpc64, -mpc80]:
4614         Add the note about a significant loss of accuracy of some
4615         mathematical routines when these options are used.
4616
4617 2007-05-04  Maxim Kuvyrkov  <mkuvyrkov@ispras.ru>
4618
4619         * haifa-sched.c (rtx_vec_t): New typedef.
4620         (contributes_to_priority_p): Extract piece of priority () into new
4621         static function.
4622         (priority): Use the function.  Add assertion.
4623         (rank_for_schedule, set_priorities): Add assertion to check that
4624         insn's priority is initialized.
4625         (clear_priorities, calc_priorities): Change signature.  Make it update
4626         all relevant insns.  Update all callers ('add_to_speculative_block ()'
4627         and 'create_block_check_twin ()').
4628         * sched-int.h (struct haifa_insn_data): Remove field 'priority_known'.
4629         Add new field 'priority_status'.
4630         (INSN_PRIORITY_STATUS): New macro.
4631         (INSN_PRIORITY_KNOWN): Change to use INSN_PRIORITY_STATUS.
4632
4633 2007-05-04  Maxim Kuvyrkov  <mkuvyrkov@ispras.ru>
4634
4635         * sched-ebb.c (debug_ebb_dependencies): New static function.
4636         (init_ready_list): Use it.
4637
4638         * sched-rgn.c (debug_dependencies): Split into 'debug_dependencies ()'
4639         with changed signature and 'debug_rgn_dependencies ()'.
4640         (debug_rgn_dependencies): New static function.
4641         (init_ready_list): Use it.
4642
4643         * sched-int.h (debug_dependencies): Declare.
4644
4645 2007-05-04  Andreas Krebbel  <krebbel1@de.ibm.com>
4646
4647         * libgcc-std.ver (__ffssi2): Added to GCC_4.3.0 section.
4648
4649 2007-05-04  Dirk Mueller  <dmueller@suse.de>
4650
4651         * c.opt(Wmain,ffreestanding): Enable for C++,ObjC++.
4652
4653 2007-05-03  Jan Hubicka  <jh@suse.cz>
4654
4655         * fold-const.c (fold_unary): Convert (T1)(X op Y) into ((T1)X op (T1)Y),
4656         for pointer type in more cases than before.
4657
4658         * gimplify.c (gimplify_expr): Fold (void *)&a + 4.
4659
4660         * tree-object-size.c (plus_expr_object_size): When operand size is
4661         unknown, return unknown.
4662
4663 2007-05-03  Dirk Mueller  <dmueller@suse.de>
4664
4665         * doc/invoke.texi (-m386,-m486,-mpentium,-mpentiumpro): Remove.
4666
4667         * config/i386/i386.h (CC1_CPU_SPEC): Remove handling for deprecated
4668         options.
4669
4670         * config/i386/i386.opt (m386,m486,mpentium,mpentiumpro): Remove.
4671
4672 2007-05-03  Janis Johnson  <janis187@us.ibm.com>
4673
4674         * doc/sourcebuild.texi (Test Directives) Clarify dg-excess-errors.
4675
4676 2007-05-03  Joseph Myers  <joseph@codesourcery.com>
4677
4678         * config/soft-fp/double.h, config/soft-fp/extended.h,
4679         config/soft-fp/floatundidf.c, config/soft-fp/floatundisf.c,
4680         config/soft-fp/floatunsidf.c, config/soft-fp/floatunsisf.c,
4681         config/soft-fp/op-2.h, config/soft-fp/op-4.h,
4682         config/soft-fp/op-common.h, config/soft-fp/quad.h: Update from
4683         glibc CVS.
4684
4685 2007-05-03  Ian Lance Taylor  <iant@google.com>
4686
4687         * config/rs6000/rs6000.c (rs6000_override_options): Don't set
4688         MASK_PPC_GFXOPT for 8540 or 8548.
4689
4690 2007-05-03  Uros Bizjak  <ubizjak@gmail.com>
4691
4692         * tree-vect-transform.c (vect_update_inits_of_drs): Use
4693         vect_print_dump_info() to output debug information.
4694
4695 2007-05-03  Uros Bizjak  <ubizjak@gmail.com>
4696
4697         PR target/31768
4698         * config/i386/i386.c (print_operand) ['z']: Output 'w' for
4699         operands of size 2 when operand is not MEM_P.
4700
4701 2007-05-03  Zdenek Dvorak  <dvorakz@suse.cz>
4702
4703         PR tree-optimization/30565
4704         * lambda-code.c (perfect_nestify): Fix updating of dominators.
4705
4706 2007-05-03  Bernd Schmidt  <bernd.schmidt@analog.com>
4707
4708         * config/bfin/bfin.md (addpdi3, us_truncpdisi2): New patterns.
4709         (umulsi3_highpart): Use them.
4710         * config/bfin/lib1funcs.asm (__umulsi3_highpart): Use unsigned move
4711         for final accumulator to D regisster tranfser.
4712
4713 2007-05-03  Dorit Nuzman  <dorit@il.ibm.com>
4714
4715         PR tree-optimization/31699
4716         * tree-vect-analyze.c (vect_update_misalignment_for_peel): Remove wrong
4717         code.
4718         (vect_enhance_data_refs_alignment): Compute peel amount using
4719         TYPE_VECTOR_SUBPARTS instead of vf.
4720         * tree-vect-transform.c (vect_gen_niters_for_prolog_loop): Likewise.
4721
4722 2007-05-02  Brooks Moses  <brooks.moses@codesourcery.com>
4723
4724         PR bootstrap/31776
4725         * system.h: Remove inclusion of double-int.h
4726         * tree.h: Include double-int.h
4727         * gengtype.c: Likewise
4728         * cfgloop.h: Likewise
4729         * Makefile.in: Adjust dependencies on double-int.h
4730
4731 2007-05-02  Eric Christopher  <echristo@apple.com>
4732
4733         * config/darwin.h (TARGET_OPTION_TRANSLATE_TABLE): Translate
4734         -shared to -Zdynamiclib.
4735
4736 2007-05-02  Seongbae Park  <seongbae.park@gmail.com>
4737
4738         PR c++/31663
4739         * c-common.c (strip_pointer_or_array_types): New function.
4740         * c-common.h (strip_pointer_or_array_types): New function declaration.
4741
4742 2007-05-03  Zdenek Dvorak  <dvorakz@suse.cz>
4743
4744         PR tree-optimization/31771
4745         * tree-cfg.c (move_block_to_fn): Assign bb to the correct index.
4746
4747 2007-05-02  Paul Brook  <paul@codesourcery.com>
4748
4749         * config/arm/bpabi.S (aeabi_lcmp): Fix result on overflow.
4750
4751 2007-05-02  Andrew Pinski  <andrew_pinski@playstation.sony.com>
4752
4753         PR middle-end/29715
4754         * fold-const.c (fold_comparision): Remove the "foo++ == CONST"
4755         transformation.
4756
4757 2007-05-02  Nick Clifton  <nickc@redhat.com>
4758
4759         * config/frv/predicates.md (symbolic_operand): Accept CONSTs.
4760
4761 2007-05-02  Richard Guenther  <rguenther@suse.de>
4762
4763         PR tree-optimization/31146
4764         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): New
4765         argument, single_use_p.  If we have a single use that is
4766         a conversion to the definition rhs type, propagate that rhs.
4767         (forward_propagate_addr_expr): Pass single_use_p argument
4768         to forward_propagate_addr_expr_1.
4769
4770 2007-05-01  H.J. Lu  <hongjiu.lu@intel.com>
4771
4772         * config/i386/i386.c (ix86_expand_sse_comi): Remove unused
4773         variable.
4774
4775 2007-05-01  Dwarakanath Rajagopal <dwarak.rajagopal@amd.com>
4776
4777         * doc/invoke.texi: Fix typo, 'AMD Family 10h core' instead of
4778         'AMD Family 10 core'.
4779
4780 2007-05-01  Dwarakanath Rajagopal <dwarak.rajagopal@amd.com>
4781
4782         * config/i386/i386.c (override_options): Accept k8-sse3, opteron-sse3
4783         and athlon64-sse3 as improved versions of k8, opteron and athlon64
4784         with SSE3 instruction set support.
4785         * doc/invoke.texi: Likewise.
4786
4787 2007-05-01  Dwarakanath Rajagopal <dwarak.rajagopal@amd.com>
4788
4789         * config/i386/i386.c (override_options): Tuning 32-byte loop
4790         alignment for amdfam10 architecture. Increasing the max loop
4791         alignment to 24 bytes.
4792
4793 2007-05-01  Kazu Hirata  <kazu@codesourcery.com>
4794
4795         * config/m68k/constraints.md: New.
4796         * config/m68k/m68k.h (REG_CLASS_FROM_LETTER,
4797         CONST_OK_FOR_LETTER_P, CONST_DOUBLE_OK_FOR_LETTER_P,
4798         EXTRA_CONSTRAINT): Remove.
4799         * config/m68k/m68k.md: Include constraints.md.
4800         * expr.c (expand_expr_real_1): Copy DECL_RTL before using it.
4801
4802 2007-05-01  Ian Lance Taylor  <iant@google.com>
4803
4804         PR tree-optimization/31739
4805         * tree-vrp.c (vrp_val_is_max): New static function.
4806         (vrp_val_is_min): New static function.
4807         (set_value_range_to_value): Use TYPE_{MAX,MIN}_VALUE rather than
4808         copying the node.
4809         (set_value_range): Use vrp_val_is_{max,min}.
4810         (extract_range_from_assert): Likewise.
4811         (extract_range_from_binary_expr): Likewise.
4812         (extract_range_from_unary_expr): Likewise.
4813         (dump_value_range, vrp_meet): Likewise.
4814         (vrp_visit_phi_node): Likewise.
4815         * tree.c (build_distinct_type_copy): Revert change of 2007-04-27.
4816
4817 2007-05-01  Mark Mitchell  <mark@codesourcery.com>
4818
4819         * config/i386/gmon-sol2.c (size_t): New type.
4820         (intptr_t): Likewise.
4821         (s_textsize): Declare as size_t.
4822         (sbrk): Declare.
4823         (monstartup): Use size_t for sizes.
4824         (_mcount): Save and restore registers.
4825         (internal_mcount): Pass 0 as the first argument to monstartup
4826         in 64-bit mode.
4827         (moncontrol): Convert pointer to appropriately sized integer
4828         before passing to profil.
4829
4830 2007-05-01  Joseph Myers  <joseph@codesourcery.com>
4831
4832         * config/rs6000/darwin-ldouble.c (__gcc_qunord): Define if
4833         __NO_FPRS__, not just if _SOFT_DOUBLE.
4834         * config/rs6000/libgcc-ppc-glibc.ver (__gcc_qunord): Likewise.
4835         * config/rs6000/rs6000.c (rs6000_init_libfuncs): Use __gcc_qunord
4836         also for E500 double.
4837         * config/rs6000/rs6000.md (buneq, bunge, bungt, bunle, bunlt,
4838         suneq, sunge, sungt, sunle, sunlt): Disable for (TARGET_HARD_FLOAT
4839         && !TARGET_FPRS).
4840
4841 2007-05-01  Richard Guenther  <rguenther@suse.de>
4842
4843         * tree-ssa-loop-manip.c (ip_normal_pos): Check if last stmt
4844         is NULL.
4845
4846 2007-05-01  Joseph Myers  <joseph@codesourcery.com>
4847
4848         * config/rs6000/libgcc-ppc-glibc.ver (__gcc_qgt): Fix typo.
4849
4850 2007-05-01  Jan Hubicka  <jh@suse.cz>
4851
4852         * tree-vectorize.c (vect_is_simple_use): gimple_min_invariant is
4853         invariant.
4854
4855 2007-05-01  Jan Hubicka  <jh@suse.cz>
4856
4857         * tree.h (maybe_fold_offset_to_component_ref): Remove.
4858         (maybe_fold_offset_to_reference): Declare.
4859         * fold-const.c (fold_unary): Do not fold
4860         (type *)&A into &A->field_of_type_and_offset_0
4861         * tree-ssa-ccp.c (maybe_fold_offset_to_array_ref): When base type
4862         size is unknown, give up.
4863         (maybe_fold_offset_to_component_ref): Ignore firelds with unknown
4864         offsets.
4865         (maybe_fold_offset_to_reference): New.
4866         (maybe_fold_stmt_indirect): Use it.
4867         (fold_stmt_r): Fold (type *)&A+offset into A->field_if_type_and_offset.
4868         * gimplify.c (gimplify_conversion): Canonicalize conversions to
4869         field references.
4870         (gimplify_expr): Likewise for plus_expr.
4871
4872 2007-05-01  Zdenek Dvorak  <dvorakz@suse.cz>
4873
4874         * tree-ssa-loop-ivopts.c (rewrite_use_nonlinear_expr): Use
4875         bsi_after_labels.  Always insert statements before bsi.
4876         * tree-vect-transform.c (vect_create_epilog_for_reduction): Ditto.
4877         * predict.c (apply_return_prediction): Check for empty blocks.
4878         * cfgexpand.c (lab_rtx_for_bb): New variable.
4879         (label_rtx_for_bb): Do not create new tree labels.
4880         (expand_gimple_basic_block): Add labels recorded in lab_rtx_for_bb.
4881         (tree_expand_cfg): Initialize lab_rtx_for_bb.
4882         * tree-cfg.c (build_tree_cfg): Call cleanup_dead_labels after
4883         creating edges.
4884         (label_for_bb): Add field used.
4885         (update_eh_label, main_block_label): Mark the label used.
4886         (cleanup_dead_labels): Remove unused labels.
4887
4888 2007-05-01  Richard Guenther  <rguenther@suse.de>
4889
4890         * tree-vrp.c (set_value_range): Do not allocate equiv bitmap
4891         if it is not about to be set.
4892         (get_value_range): Do not pre-allocate equiv bitmap.
4893         (update_value_range): No need to clear equiv field.
4894         (add_equivalence): Change prototype to get bitmap pointer.
4895         Allocate bitmap here if it is not already.
4896         (extract_range_from_assert): Do not allocate bitmap here.
4897         Update callers to add_equivalence.
4898         (extract_range_from_ssa_name): Likewise.
4899         (get_vr_for_comparison): New static helper.
4900         (compare_name_with_value): Handle NULL equiv bitmap by
4901         peeling the first iteration of the comparison loop.
4902         Use get_vr_for_comparison.
4903         (compare_names): Handle NULL equiv bitmaps by using fake
4904         ones.  Use get_vr_for_comparison.
4905
4906 2007-04-30  Brooks Moses  <brooks.moses@codesourcery.com>
4907
4908         * double-int.c (mpz_set_double_int): Moved from
4909         tree-ssa-loop-niter.c.
4910         (mpz_get_double_int): Likewise; also, add option to wrap
4911         out-of-range integers.
4912         * double-int.h: New prototypes for above.
4913         * tree.c (get_static_type_bounds): Moved from
4914         tree-ssa-loop-niter.c; now returns TYPE_MIN_VALUE and
4915         TYPE_MAX_VALUE if they exist..
4916         * tree.h: New prototype for above.
4917         * tree-ssa-loop-niter.c: Adjust mpz_to_double_int and
4918         get_type_bounds calls.
4919         (mpz_set_double_int): Move to double-int.c.
4920         (get_type_bounds): Move to tree.c, rename to
4921         get_static_type_bounds.
4922         (mpz_to_double_int): Move to double-int.c, rename to
4923         mpz_get_double_int.
4924
4925 2007-04-30  Bob Wilson  <bob.wilson@acm.org>
4926
4927         * config/xtensa/lib1funcs.asm (__umodsi3, __modsi3): Rearrange so that
4928         DIV0 exception can fall through to a normal return.
4929
4930 2007-04-30  Alexandre Oliva  <aoliva@redhat.com>
4931
4932         PR middle-end/22156
4933         Temporarily revert:
4934         2007-04-06  Andreas Tobler  <a.tobler@schweiz.org>
4935         * tree-sra.c (sra_build_elt_assignment): Initialize min/maxshift.
4936         2007-04-05  Alexandre Oliva  <aoliva@redhat.com>
4937         * tree-sra.c (try_instantiate_multiple_fields): Needlessly
4938         initialize align to silence bogus warning.
4939         2007-04-05  Alexandre Oliva  <aoliva@redhat.com>
4940         * tree-sra.c (struct sra_elt): Add in_bitfld_block.  Remove
4941         all_no_warning.
4942         (struct sra_walk_fns): Remove use_all parameter from use.
4943         (sra_hash_tree): Handle BIT_FIELD_REFs.
4944         (sra_elt_hash): Don't hash bitfld blocks.
4945         (sra_elt_eq): Skip them in parent compares as well.  Handle
4946         BIT_FIELD_REFs.
4947         (sra_walk_expr): Don't maintain or pass down use_all_p.
4948         (scan_use): Remove use_all parameter.
4949         (scalarize_use): Likewise.  Re-expand assignment to
4950         BIT_FIELD_REF of gimple_reg.  De-scalarize before input or
4951         output, and re-scalarize after output.  Don't mark anything
4952         for no warning.
4953         (scalarize_ldst): Adjust.
4954         (scalarize_walk_gimple_modify_statement): Likewise.
4955         (build_element_name_1): Handle BIT_FIELD_REFs.
4956         (instantiate_element): Don't warn for any element whose parent
4957         is used as a whole.
4958         (instantiate_missing_elements_1): Return the sra_elt.
4959         (canon_type_for_field): New.
4960         (try_instantiate_multiple_fields): New.
4961         (instantiate_missing_elemnts): Use them.
4962         (mark_no_warning): Removed.
4963         (generate_one_element_ref): Handle BIT_FIELD_REFs.
4964         (REPLDUP, sra_build_elt_assignment): New.
4965         (generate_copy_inout): Use them.
4966         (generate_element_copy): Likewise.  Handle bitfld differences.
4967         (generate_element_zero): Don't recurse for blocks.  Use
4968         sra_build_elt_assignment.
4969         (generate_one_element_int): Take elt instead of var.  Use
4970         sra_build_elt_assignment.
4971         (generate_element_init_1): Adjust.
4972         (scalarize_use, scalarize_copy): Use REPLDUP.
4973         (scalarize_ldst): Move assert before dereference.
4974         (dump_sra_elt_name): Handle BIT_FIELD_REFs.
4975
4976 2007-04-30  Andrew Pinski  <andrew_pinski@playstation.sony.com>
4977
4978         PR C++/31721
4979         * tree.c (reconstruct_complex_type): Reconstruct a reference
4980         correctly.
4981         Also use the same mode for the pointer as the old pointer type.
4982
4983 2007-04-30  Francois-Xavier Coudert  <coudert@clipper.ens.fr>
4984
4985         * doc/trouble.texi (Interoperation): Remove note about Ultrix
4986         Fortran compiler.
4987
4988 2007-04-29  Zdenek Dvorak  <dvorakz@suse.cz>
4989
4990         PR rtl-optimization/31676
4991         * df-scan.c (record_nonlocal_goto_receiver_defs): New function.
4992         (df_refs_record): Call it.
4993
4994 2007-04-29  Bernd Schmidt  <bernd.schmidt@analog.com>
4995
4996         * rtl.def (SS_ABS): New code.
4997         * config/bfin/bfin.c (print_operand): New modifier 'v'.
4998         (enum bfin_builtins): Add BFIN_BUILTIN_SUM_2X16, BFIN_BUILTIN_ABS_1x32,
4999         BFIN_BUILTIN_ROUND_1x32, BFIN_BUILTIN_MULT_1x32x32,
5000         BFIN_BUILTIN_MULT_1x32x32NS, BFIN_BUILTIN_SSASHIFT_1x32.
5001         (bfin_init_builtins): Define them.
5002         (bdesc_1arg, bdesc_2arg): Add some of them here, ...
5003         (bfin_expand_builtin): ... and handle the others here.
5004         * config/bfin/bfin.md (ssabssi2, ssroundsi2, ssashiftsi3,
5005         flag_mul_macv2hi_parts_acconly_andcc0): New patterns.
5006         (ss_absv2hi2): Renamed from absv2hi; use ss_abs code.
5007         (ssashiftv2hi3, ssashifthi3, lshiftv2hi3, lshifthi3): Shift count
5008         operand is only HImode.
5009
5010 2007-04-29  Steven Bosscher  <steven@gcc.gnu.org>
5011
5012         * regclass.c (scan_one_insn): Remove splitting of
5013         two address insns.
5014
5015 2007-04-28  Sandra Loosemore  <sandra@codesourcery.com>
5016             Nigel Stephens  <nigel@mips.com>
5017
5018         * config/mips/mips.h (SLOW_BYTE_ACCESS): Turn off for MIPS16.
5019
5020 2007-04-28  Jan Hubicka  <jh@suse.cz>
5021
5022         * config/alpha/alpha.c (alpha_output_mi_thunk_osf): Use
5023         insn_locators_alloc instead of insn_locators_initialize;
5024         call reset_block_changes.
5025         * config/sparc/sparc.c (sparc_output_mi_thunk): Likewise.
5026         * config/sh/sh.c (sparc_output_mi_thunk): Likewise.
5027         * config/is64/ia64.c (ia64_output_mi_thunk): Likewise.
5028         * config/rs6000/rs6000.c (rs6000_output_mi_thunk): Likewise.
5029         * config/score/score.c (th_output_mi_thunk): Likewise.
5030         * config/mips/mips.c (mips_output_mi_thunk): Likewise.
5031         * cfglyaout.c (set_curr_insn_source_location, set_curr_insn_block):
5032         tolerate uninitialized locator info.
5033
5034         Re-apply:
5035         * function.c (init_function_start): Don't init line number info.
5036         (expand_function_end): Update.
5037         (reset_block_changes, record_block_change, finalize_block_changes,
5038         check_block_change, free_block_changes): Kill.
5039         * function.h (reset_block_changes, record_block_change,
5040         finalize_block_changes, check_block_change, free_block_changes): Remove
5041         prototypes.
5042         (struct function): Remove ib_boundaries_block.
5043         * emit-rtl.c (make_insn_raw, make_jump_insn_raw, make_call_insn_raw):
5044         Use curr_insn_locator to initialize locator.
5045         (emit_line_note): Remove.
5046         * cfgexpand.c (expand_gimple_cond_expr): Update.
5047         (construct_exit_block): Likewise.
5048         (tree_expand_cfg): Initialize/finalize locators.
5049         * expr.c (expand_expr_real): Update.
5050         * cfglayout.c (line_locators_locs, line_locators_lines,
5051         file_locators_locs, file_locators_files): Remove.
5052         (set_block_levels): Move to cfgexpand.c.
5053         (insn_locators_initialize): Remove.
5054         (pass_insn_locators_initialize): Remove.
5055         (locations_locators_locs, locations_locators_vals): New static vars.
5056         (curr_location, last_location, curr_block, last_block, curr_rtl_loc):
5057         Likewise.
5058         (insn_locators_alloc, insn_locators_finalize,
5059         set_curr_insn_source_location, set_curr_insn_block, curr_insn_locator):
5060         New functions.
5061         (locator_location): New.
5062         (locator_line, locator_file): Rewrite.
5063         * rtl.h (emit_line_note): Kill.
5064         (insn_locators_alloc, insn_locators_finalize,
5065         set_curr_insn_source_location, set_curr_insn_block, curr_insn_locator):
5066         Declare.
5067         * tree-inline.c (initialize_cfun): Do not initialize
5068         ib_boundaries_block.
5069         * passes.c (pass_insn_locators_initialize): Remove.
5070
5071 2007-04-28  Zdenek Dvorak  <dvorakz@suse.cz>
5072
5073         * tree-cfg.c (move_block_to_fn): Release bb from dominance
5074         info.  Update last_basic_block correctly.
5075
5076 2007-04-27  Kaz Kojima  <kkojima@gcc.gnu.org>
5077
5078         PR target/31701
5079         * config/sh/sh.c (output_stack_adjust): Avoid using the frame
5080         register itself to hold the offset constant.  Tell flow the use
5081         of r4 and r5 when they are used.
5082
5083 2007-04-27  Richard Guenther  <rguenther@suse.de>
5084
5085         * tree-ssa-forwprop.c (forward_propagate_into_cond): Keep track
5086         if we simplified anything.
5087         (tree_ssa_forward_propagate_single_use_vars): Defer overflow
5088         warnings until we did a simplification and the stmt was not
5089         marked as TREE_NO_WARNING.
5090
5091 2007-04-27  Mike Stump  <mrs@apple.com>
5092
5093         * config/rs6000/darwin.h (ALWAYS_PUSH_CONSTS_USING_REGS_P): Remove.
5094
5095 2007-04-27  Ian Lance Taylor  <iant@google.com>
5096
5097         PR middle-end/31710
5098         * tree.c (build_distinct_type_copy): If TYPE_MIN_VALUE or
5099         TYPE_MAX_VALUE exist, convert them to the new type.
5100
5101 2007-04-27  Zdenek Dvorak  <dvorakz@suse.cz>
5102
5103         * tree-cfgcleanup.c (cleanup_tree_cfg): Verify dominance info
5104         if it claims to be available.
5105         * tree-ssa-dce.c (remove_dead_stmt): Mark cfg as altered when
5106         edge is redirected.
5107         (perform_tree_ssa_dce): Always free postdominators.
5108
5109 2007-04-27  Richard Henderson  <rth@redhat.com>
5110
5111         * config/alpha/predicates.md (aligned_memory_operand): Mark
5112         as define_special_predicate.
5113         (unaligned_memory_operand, normal_memory_operand): Likewise.
5114         (reg_or_unaligned_mem_operand): Remove.
5115         (any_memory_operand): Match the documentation and check for
5116         non-renumbered pseudos during reload.
5117         * config/alpha/alpha.c (alpha_secondary_reload): Rename from
5118         alpha_secondary_reload_class, update to new interface, make static.
5119         Handle CQImode like HImode.  Remove FP subreg check.
5120         (alpha_expand_mov): Use replace_equiv_address.
5121         (alpha_expand_mov_nobwx): Use any_memory_operand.
5122         (TARGET_SECONDARY_RELOAD): New.
5123         * config/alpha/alpha.h (SECONDARY_INPUT_RELOAD_CLASS): Remove.
5124         (SECONDARY_OUTPUT_RELOAD_CLASS): Remove.
5125         * config/alpha/sync.md (I12MODE, I48MODE, modesuffix): Move ...
5126         * config/alpha/alpha.md: ... here.
5127         (RELOAD12, reloadmode): New.
5128         (movcqi): New.
5129         (reload_in<RELOAD12>): Macro-ize from reload_inqi, reload_inhi.
5130         Don't handle the aligned case here.
5131         (reload_out<RELOAD12>): Macro-ize from reload_outqi, reload_outhi.
5132         (reload_in<I12MODE>_aligned): Macro-ize from reload_inqi_help,
5133         reload_inhi_help.  Don't expect a scratch register.
5134         (reload_out<I12MODE>_aligned): Macro-ize from reload_outqi_help,
5135         reload_outhi_help.
5136         * config/alpha/alpha-protos.h (alpha_secondary_reload_class): Remove.
5137
5138 2007-04-27  Richard Guenther  <rguenther@suse.de>
5139
5140         * tree-ssa-forwprop.c (get_prop_dest_stmt): Fix comment typo.
5141
5142 2007-04-27  Richard Guenther  <rguenther@suse.de>
5143
5144         PR tree-optimization/30965
5145         PR tree-optimization/30978
5146         * Makefile.in (tree-ssa-forwprop.o): Depend on $(FLAGS_H).
5147         * tree-ssa-forwprop.c (forward_propagate_into_cond_1): Remove.
5148         (find_equivalent_equality_comparison): Likewise.
5149         (simplify_cond): Likewise.
5150         (get_prop_source_stmt): New helper.
5151         (get_prop_dest_stmt): Likewise.
5152         (can_propagate_from): Likewise.
5153         (remove_prop_source_from_use): Likewise.
5154         (combine_cond_expr_cond): Likewise.
5155         (forward_propagate_comparison): New function.
5156         (forward_propagate_into_cond): Rewrite to use fold for
5157         tree combining.
5158         (tree_ssa_forward_propagate_single_use_vars): Call
5159         forward_propagate_comparison to propagate comparisons.
5160
5161 2007-04-27  Richard Guenther  <rguenther@suse.de>
5162
5163         PR tree-optimization/31715
5164         * tree-ssa-ccp.c (maybe_fold_offset_to_array_ref): Make
5165         sure to do computation on the offset in an appropriate
5166         signed type.
5167
5168 2007-04-27  Richard Sandiford  <richard@codesourcery.com>
5169
5170         * reload.h (elimination_target_reg_p): Declare.
5171         * reload.c (find_reloads): Don't apply the reg_rtx move
5172         optimization if the SET_DEST satisfies elimination_target_reg_p.
5173         * reload1.c (elimination_target_reg_p): New function.
5174         (gen_reload): In the move/add2 fallback, make sure that op0
5175         does not overlap the destination register.
5176
5177 2007-04-27  Zdenek Dvorak  <dvorakz@suse.cz>
5178
5179         * tree-ssa-loop-im.c (determine_invariantness_stmt): Attempt to
5180         transform only GIMPLE_MODIFY_STMTs.
5181         * tree-complex.c (expand_complex_operations_1): Ditto.
5182         (expand_complex_div_wide): Do not create gotos in COND_EXPR branches.
5183         * tree-ssa-loop-manip.c (build_if_stmt): Removed.
5184         (tree_transform_and_unroll_loop): Do not create gotos in COND_EXPR
5185         branches.
5186         * value-prof.c (tree_divmod_fixed_value, tree_mod_pow2,
5187         tree_mod_subtract, tree_ic, tree_stringop_fixed_value): Ditto.
5188         * omp-low.c (expand_parallel_call, expand_omp_for_generic,
5189         expand_omp_for_static_chunk, expand_omp_for_static_nochunk): Ditto.
5190         * tree-vectorizer.c (slpeel_make_loop_iterate_ntimes,
5191         slpeel_add_loop_guard): Ditto.
5192         * tree-mudflap.c (mf_build_check_statement_for): Ditto.
5193         * lambda-code.c (perfect_nestify): Ditto.
5194         * tree-iterator.c (tsi_split_statement_list_before): Fix splitting
5195         before the first statement.
5196         * tree-optimize.c (execute_free_datastructures): Fix comments.
5197         (execute_free_cfg_annotations): Do not call disband_implicit_edges.
5198         * tree-flow.h (disband_implicit_edges): Declaration removed.
5199         * tree-cfg.c (make_cond_expr_edges): Remove gotos from COND_EXPR
5200         branches.
5201         (cleanup_dead_labels, tree_redirect_edge_and_branch): Handle COND_EXPRs
5202         without gotos.
5203         (disband_implicit_edges, has_label_p): Removed.
5204         (tree_verify_flow_info): Verify that COND_EXPR branches are empty.
5205         (tree_lv_add_condition_to_bb): Do not create gotos in COND_EXPR
5206         branches.
5207         * tree.c (build3_stat): Mark COND_EXPRs used as statements as having
5208         side effects.
5209         * tree-pretty-print.c (dump_implicit_edges): Dump implicit edges
5210         also for COND_EXPRs.
5211         * cfgexpand.c (label_rtx_for_bb): New function.
5212         (expand_gimple_cond_expr): Do not expect gotos in COND_EXPR branches.
5213         Use label_rtx_for_bb to find the labels.
5214         (expand_gimple_basic_block): Remove RETURN_EXPR at the end of the
5215         last block.  Detect fallthru edges.
5216
5217 2007-04-26  Ian Lance Taylor  <iant@google.com>
5218
5219         PR target/28675
5220         * reload.c (find_reloads_subreg_address): If the address was valid
5221         in the original mode but not in the new mode, reload the whole
5222         address.
5223
5224 2007-04-27  Zdenek Dvorak  <dvorakz@suse.cz>
5225
5226         * tree-cfgcleanup.c (cfgcleanup_altered_bbs): New global variable.
5227         (remove_fallthru_edge): Use remove_edge_and_dominated_blocks.
5228         (cleanup_control_expr_graph): Do not invalidate dominance info.
5229         Record altered blocks.
5230         (cleanup_control_flow, cleanup_forwarder_blocks): Removed.
5231         (cleanup_control_flow_bb, split_bbs_on_noreturn_calls,
5232         cleanup_tree_cfg_bb): New functions.
5233         (remove_forwarder_block): Do not maintain the worklist of blocks.
5234         Record altered blocks.
5235         (cleanup_tree_cfg_1): Iterate over cfgcleanup_altered_bbs,
5236         not over whole cfg.
5237         (cleanup_tree_cfg): Do not iterate cleanup_tree_cfg_1.  Only call
5238         delete_unreachable_blocks if dominators are not available.
5239         * tree-inline.c (optimize_inline_calls): Free dominance information
5240         earlier.
5241         * tree-flow.h (remove_edge_and_dominated_blocks,
5242         cfgcleanup_altered_bbs): Altered.
5243         * tree-cfg.c (replace_uses_by, tree_merge_blocks): Record altered
5244         blocks.
5245         (get_all_dominated_blocks, remove_edge_and_dominated_blocks): New
5246         functions.
5247         (tree_purge_dead_eh_edges): Use remove_edge_and_dominated_blocks,
5248         do not invalidate dominators.
5249
5250 2007-04-26  Anatoly Sokolov <aesok@post.ru>
5251
5252         * config/avr/avr.c (avr_mcu_types): Add support for ATmega8HVA and
5253         ATmega16HVA devices. Move AT90USB82 device to 'avr5' architecture.
5254         * config/avr/avr.h (LINK_SPEC, CRT_BINUTILS_SPECS): (Ditto.).
5255         * config/avr/t-avr (MULTILIB_MATCHES): (Ditto.).
5256
5257 2007-04-26  Steve Ellcey  <sje@cup.hp.com>
5258
5259         * config/ia64/ia64.md (ip_value):  Fix itanium_class attribute.
5260
5261 2007-04-26  Richard Guenther  <rguenther@suse.de>
5262
5263         PR tree-optimization/31703
5264         * tree-ssa-loop-im.c (rewrite_bittest): Make sure to use
5265         the right type for the target of the bittest.
5266
5267 2007-04-26  Richard Sandiford  <richard@codesourcery.com>
5268
5269         * config/i386/vx-common.h (RETURN_IN_MEMORY): Use
5270         ix86_sol10_return_in_memory.
5271
5272 2007-04-26  Richard Sandiford  <richard@codesourcery.com>
5273
5274         * config/i386/i386.c (ix86_sol10_return_in_memory): Remove unused
5275         variables.
5276
5277 2007-04-26  Jakub Jelinek  <jakub@redhat.com>
5278
5279         PR c++/31598
5280         * tree-inline.c (copy_body_r): Don't touch TREE_TYPE of OMP_CLAUSE.
5281
5282         PR tree-optimization/30558
5283         * tree-eh.c (lower_eh_filter): If EH_FILTER_MUST_NOT_THROW
5284         clear this_state.prev_try.
5285
5286 2007-04-26  Richard Sandiford  <richard@codesourcery.com>
5287             Mark Mitchell  <mark@codesourcery.com>
5288
5289         * config/i386/i386-protos.h (ix86_sol10_return_in_memory): Declare.
5290         * config/i386/i386.c (ix86_sol10_return_in_memory): New function.
5291         * config/i386/sol2-10.h (RETURN_IN_MEMORY): Use it.
5292
5293 2007-04-26  Richard Sandiford  <richard@codesourcery.com>
5294
5295         PR driver/31107
5296         * doc/invoke.texi (%:print-asm-header): Document.
5297         * gcc.c (asm_options): Use %:print-asm-header() for --target-help
5298         and -ftarget-help.
5299         (static_spec_functions): Add print-asm-header.
5300         (main): Print a banner before the --target-help linker options.
5301         (print_asm_header_spec_function): New function.
5302
5303 2007-04-25  Kaz Kojima  <kkojima@gcc.gnu.org>
5304
5305         PR target/31403
5306         * config/sh/sh.md (movsi_ie): Fix length for TARGET_SH2A.
5307         (movsf_ie): Likewise.
5308
5309 2007-04-25  Paolo Carlini  <pcarlini@suse.de>
5310
5311         * doc/extend.texi ([Type Traits]): Adjust per N2255.
5312
5313 2007-04-25  Bob Wilson  <bob.wilson@acm.org>
5314
5315         * config/xtensa/lib1funcs.asm (__udivsi3, __divsi3): Throw an exception
5316         for divide-by-zero.
5317         (__umodsi3, __modsi3): Likewise.
5318
5319 2007-04-25  Dirk Mueller  <dmueller@suse.de>
5320
5321         * c-typeck.c (build_compound_expr): Annotate warning()
5322         call with OPT_Wunused_value.
5323         * tree-ssa.c (warn_uninit): Annotate warning with
5324         OPT_Wunintialized.
5325         * c-common.c (handle_sentinel_attribute): Annotate warning
5326         call with OPT_Wattributes.
5327
5328 2007-04-25  Thiemo Seufer  <ths@mips.com>
5329
5330         * config/mips/mips.opt (mdmx, mmt, mno-mdmx): New options.
5331         (mips16): Fix typo.
5332         * config/mips/mips.h (ASM_SPEC): Pass -mmt/-mno-mt and -mdmx/-mno-mdmx
5333         on to the assembler.  Improve handling of -mno-mips16.  Add handling
5334         of -mno-mips3d, -mno-dsp, -mno-dspr2.
5335         * doc/invoke.texi (MIPS Options): Whitespace cleanup.  Fix wrong use
5336         of @itemx.  Document -mno-dsp, -mno-dspr2, -mno-paired-single, -mdmx,
5337         -mno-mdmx, -mno-mips3d, -mmt and -mno-mt.
5338
5339 2007-04-25  Danny Smith  <dannysmith.users.sourceforge.net>
5340
5341         PR target/31680
5342         * config/i386/winnt.c (i386_pe_file_end): Strip only
5343         USER_LABEL_PREFIX when writing export name.
5344
5345 2007-04-25  Richard Sandiford  <richard@codesourcery.com>
5346
5347         * config.gcc (sh-wrs-vxworks): Don't include dbxelf.h.  Include
5348         sh/elf.h, vx-common.h and vxworks.h.
5349         * config/sh/sh.h: Include config/vxworks-dummy.h.
5350         (SUBTARGET_OVERRIDE_OPTIONS): Define.
5351         (OVERRIDE_OPTIONS): Use it.
5352         * config/sh/sh.md (GOTaddr2picreg): Add suport for VxWorks RTPs.
5353         (vxworks_picreg): New pattern.
5354         * config/sh/vxworks.h (TARGET_OS_CPP_BUILTINS): Use
5355         VXWORKS_OS_CPP_BUILTINS.
5356         (LIB_SPEC, LINK_SPEC, STARTFILE_SPEC, ENDFILE_SPEC): Redefine
5357         to their VXWORKS_* equivalents.
5358         (SUBTARGET_OVERRIDE_OPTIONS, SUBTARGET_CPP_SPEC): Define.
5359         (SUBTARGET_LINK_EMUL_SUFFIX, FUNCTION_PROFILER): Define.
5360         * config/sh/lib1funcs.asm (NO_FPSCR_VALUES): Define for VxWorks PIC.
5361         (set_fpscr, ic_invalidate): Add VxWorks PIC sequences.
5362         * config/sh/t-vxworks (MULTILIB_OPTIONS): Add m4a, -mrtp and
5363         -mrtp/-fPIC multilibs.
5364         (MULTILIB_EXCEPTIONS): Generalize globs accordingly.
5365         (MULTILIB_MATCHES, EXTRA_MULTILIB_PARTS): Define.
5366         (MULTILIB_OSDIRNAMES): Delete.
5367
5368 2007-04-25  Anatoly Sokolov <aesok@post.ru>
5369
5370         PR target/18989
5371         * config/avr/avr.h (ASM_OUTPUT_ALIGN): Redefine.
5372
5373 2007-04-24  Brooks Moses  <brooks.moses@codesourcery.com>
5374
5375         * real.c (mpfr_from_real): Handle Inf and NaN, and allow the
5376         rounding mode to be specified by the caller.
5377         (real_to_mpfr) Likewise.
5378         * real.h: Update mpfr_from_real, mpfr_to_real prototypes to
5379         include new arguments.
5380         * builtins.c: Update mpfr_from_real, mpfr_to_real calls.
5381
5382 2007-04-24  Ian Lance Taylor  <iant@google.com>
5383
5384         PR tree-optimization/31605
5385         * tree-vrp.c (set_value_range): Check that min and max are not
5386         both overflow infinities.
5387         (set_value_range_to_value): New static function.
5388         (extract_range_from_binary_expr): Call set_value_range_to_value.
5389         (extract_range_from_cond_expr): Likewise.
5390         (extract_range_from_expr): Likewise.
5391         (extract_range_from_unary_expr): Likewise.  Don't create a range
5392         which overflows on both sides.
5393         (vrp_meet): Check for a useless range.
5394         (vrp_visit_phi_node): If we see a constant which looks like an
5395         overflow infinity, turn off the TREE_OVERFLOW flag.
5396
5397 2007-04-24  Ian Lance Taylor  <iant@google.com>
5398
5399         * flow.c (elim_reg_cond): Handle a comparison of a subreg.
5400
5401 2007-04-24  Simon Martin  <simartin@users.sourceforge.net>
5402
5403         PR diagnostic/25923
5404         * tree-pass.h (TDF_DIAGNOSTIC): New dump control to specify that a
5405         diagnostic message is being built.
5406         * tree-pretty-print.c (dump_generic_node): Only write the
5407         formatted text into BUFFER's stream if we are not building a
5408         diagnostic message.
5409         * toplev.c (default_tree_printer): Pass TDF_DIAGNOSTIC to
5410         dump_generic_node.
5411         * Makefile.in (toplev.o): Depend on tree-pass.h.
5412
5413 2007-04-24  Ian Lance Taylor  <iant@google.com>
5414
5415         PR tree-optimization/31602
5416         * tree-ssa-loop-ch.c (copy_loop_headers): Set TREE_NO_WARNING for
5417         conditionals in the copied loop header.
5418         * tree-cfg.c (fold_cond_expr_cond): Don't issue undefined overflow
5419         warnings if TREE_NO_WARNING is set.
5420         * doc/invoke.texi (Warning Options): Clarify that
5421         -Wstrict-overflow does not warn about loops.
5422
5423 2007-04-24  Janis Johnson  <janis187@us.ibm.com>
5424
5425         * config/rs6000/rs6000.c (function_arg_advance): For 32-bit ELF ABI,
5426         expand on the comment about _Decimal128 arguments and check the
5427         integer result of the modulus operation; for 64-bit ELF ABI, ensure
5428         that _Decimal128 argument uses even/odd register pair.
5429         (function_arg): Ditto.
5430
5431 2007-04-24  Hui-May Chang <hm.chang@apple.com>
5432
5433         * reload1.c (merge_assigned_reloads) : Do not merge a RELOAD_OTHER
5434         instruction with a RELOAD_FOR_OPERAND_ADDRESS instruction.
5435
5436 2007-04-24  Richard Guenther  <rguenther@suse.de>
5437             Olga Golovanevsky  <olga@il.ibm.com>
5438
5439         * fold-const.c (multiple_of_p): Check for bottom
5440         to be zero.
5441
5442 2007-04-24  Richard Henderson  <rth@redhat.com>
5443
5444         * libgcc2.h (AVOID_FP_TYPE_CONVERSION): Rename from
5445         IS_IBM_EXTENDED.  Also define in terms of WIDEST_HARDWARE_FP_SIZE.
5446         * libgcc2.c (__floatdisf): Avoid double-word arithmetic when
5447         looking for non-zero bits shifted out.  Avoid a recursive call
5448         when constructing the scalar.
5449         (__floatundisf): Likewise.
5450
5451 2007-04-24  Nathan Froyd  <froydnj@codesourcery.com>
5452
5453         * dwarf2out.c (field_byte_offset): Move the existing logic
5454         under the control of PCC_BITFIELD_TYPE_MATTERS and just use
5455         the bit offset of the field if !PCC_BITFIELD_TYPE_MATTERS.
5456
5457 2007-04-24  Andreas Krebbel  <krebbel1@de.ibm.com>
5458
5459         PR target/31641
5460         * config/s390/s390.c (s390_expand_setmem): Don't ICE for constant length
5461         argument of 0 for memset.
5462         (s390_expand_movmem, s390_expand_setmem, s390_expand_cmpmem): Use
5463         unsigned shift instead of the signed variant.
5464
5465 2007-04-24  Andreas Krebbel  <krebbel1@de.ibm.com>
5466
5467         * config/s390/s390.md ("*cmp<mode>_ccs_0_ibm", "*cmp<mode>_ccs_ibm",
5468         "fix_trunc<BFP:mode><GPR:mode>2_ieee", "fix_truncdfsi2_ibm",
5469         "floatsidf2_ibm", "floatsisf2", "truncdfsf2_ieee", "truncdfsf2_ibm",
5470         "*trunctfdf2_ieee", "*trunctfdf2_ibm", "*trunctfsf2_ieee",
5471         "*trunctfsf2_ibm", "extendsfdf2_ieee", "extendsfdf2_ibm",
5472         "*extenddftf2_ieee", "*extenddftf2_ibm", "*extendsftf2_ieee",
5473         "*extendsftf2_ibm", "*add<mode>3", "*add<mode>3_ibm", "*sub<mode>3_ibm",
5474         "*mul<mode>3", "*mul<mode>3_ibm", "*div<mode>3", "*div<mode>3_ibm",
5475         "*neg<mode>2_ibm", "*abs<mode>2_ibm"): Insn definitions removed.
5476         ("fix_trunc<BFP:mode><GPR:mode>2_bfp", "floatsi<mode>2",
5477         "truncdfsf2", "trunctf<mode>2", "add<mode>3", "sub<mode>3",
5478         "mul<mode>3", "div<mode>3"): Insn definitions added.
5479         ("fixuns_trunc<BFP:mode><GPR:mode>2", "fix_trunc<mode>di2",
5480         "fix_trunc<mode>si2"): gen_fix_trunc<BFP:mode><GPR:mode>2_ieee renamed
5481         to gen_fix_trunc<BFP:mode><GPR:mode>2_bfp.
5482         ("fix_truncdfsi2", "floatsitf2", "truncdfsf2", "trunctfdf2",
5483         "trunctfsf2", "extendsfdf2", "extenddftf2", "extendsftf2", "add<mode>3",
5484         "sub<mode>3", "mul<mode>3", "div<mode>3"): Expander removed.
5485         ("fix_trunc<mode>si2", "extend<DSF:mode><BFP:mode>2"): Expander added.
5486         * config/s390/s390.h (TARGET_IBM_FLOAT, TARGET_IEEE_FLOAT,
5487         TARGET_FLOAT_FORMAT): Macro definitions removed.
5488         (FP_REGNO_P): No special case for !TARGET_IEEE_FLOAT anymore.
5489         * config/s390/s390.c (struct processor_costs, z900_cost, z990_cost,
5490         z9_109_cost): Remove fields for hexfloat instructions: dxr, ddr and der.
5491         (s390_rtx_costs): Remove !TARGET_IEEE_FLOAT special branches.
5492         (s390_gen_rtx_const_DI): Function removed.
5493         * config/s390/s390-protos.h (s390_gen_rtx_const_DI): Prototype removed.
5494
5495 2007-04-24  Richard Sandiford  <richard@codesourcery.com>
5496
5497         * optabs.c (set_conv_libfunc): Prefer libgcc2's __ffsMM2 functions
5498         over an external ffs function.
5499
5500 2007-04-24  Chao-ying Fu  <fu@mips.com>
5501             Richard Sandiford  <richard@nildram.co.uk>
5502
5503         * doc/md.texi (madd@var{m}@var{n}4, umadd@var{m}@var{n}4): Document.
5504         * optabs.h (OTI_smadd_widen, OTI_umadd_widen): New optab_indexes.
5505         (smadd_widen_optab, umadd_widen_optab): Define.
5506         * optabs.c (init_optabs): Initialize smadd_widen_optab and
5507         umadd_widen_optab.
5508         * genopinit.c (optabs): Fill in smadd_widen_optab and
5509         umadd_widen_optab.
5510         * expr.c (expand_expr_real_1): Try to use smadd_widen_optab
5511         and umadd_widen_optab to implement multiply-add sequences.
5512         * config/mips/mips.md (*<su>mul_acc_di): Rename to...
5513         (<u>maddsidi4): ...this.  Extend condition to include
5514         GENERATE_MADD_MSUB and TARGET_DSPR2.  Change the constraint
5515         of operand 0 to "ka" and use the three-operand form of madd<u>
5516         for TARGET_DSPR2.
5517         * config/mips/mips-dspr2.md (mips_madd, mips_maddu): Convert
5518         to define_expands.
5519         * config/mips/constraints.md (ka): New register constraint.
5520
5521 2007-04-24  Jan Hubicka  <j@suse.cz>
5522
5523         Revert:
5524
5525         2007-04-23  Jan Hubicka  <jh@suse.cz>
5526         * function.c (init_function_start): Don't init line number info.
5527         (expand_function_end): Update.
5528         (reset_block_changes, record_block_change, finalize_block_changes,
5529         check_block_change, free_block_changes): Kill.
5530         * function.h (reset_block_changes, record_block_change,
5531         finalize_block_changes, check_block_change, free_block_changes): Remove
5532         prototypes.
5533         (struct function): Remove ib_boundaries_block.
5534         * emit-rtl.c (make_insn_raw, make_jump_insn_raw, make_call_insn_raw):
5535         Use curr_insn_locator to initialize locator.
5536         (emit_line_note): Remove.
5537         * cfgexpand.c (expand_gimple_cond_expr): Update.
5538         (construct_exit_block): Likewise.
5539         (tree_expand_cfg): Initialize/finalize locators.
5540         * expr.c (expand_expr_real): Update.
5541         * cfglayout.c (line_locators_locs, line_locators_lines,
5542         file_locators_locs, file_locators_files): Remove.
5543         (set_block_levels): Move to cfgexpand.c.
5544         (insn_locators_initialize): Remove.
5545         (pass_insn_locators_initialize): Remove.
5546         (locations_locators_locs, locations_locators_vals): New static vars.
5547         (curr_location, last_location, curr_block, last_block, curr_rtl_loc):
5548         Likewise.
5549         (insn_locators_alloc, insn_locators_finalize,
5550         set_curr_insn_source_location, set_curr_insn_block, curr_insn_locator):
5551         New functions.
5552         (locator_location): New.
5553         (locator_line, locator_file): Rewrite.
5554         * rtl.h (emit_line_note): Kill.
5555         (insn_locators_alloc, insn_locators_finalize,
5556         set_curr_insn_source_location, set_curr_insn_block, curr_insn_locator):
5557         Declare.
5558         * tree-inline.c (initialize_cfun): Do not initialize
5559         ib_boundaries_block.
5560         * passes.c (pass_insn_locators_initialize): Remove.
5561
5562 2007-04-24  Daniel Franke  <franke.daniel@gmail.com>
5563
5564         * doc/invoke.texi: Removed leading '-' from option index entries.
5565
5566 2007-04-23  Zdenek Dvorak  <dvorakz@suse.cz>
5567
5568         * tree-phinodes.c (reserve_phi_args_for_new_edge, remove_phi_node):
5569         Use phi_nodes_ptr.
5570         (create_phi_node): Use set_phi_nodes.
5571         * omp-low.c (expand_omp_parallel): Use bb_stmt_list.
5572         * tree-if-conv.c (process_phi_nodes): Use set_phi_nodes.
5573         (combine_blocks):  Use bb_stmt_list and set_bb_stmt_list.
5574         * tree-flow-inline.h (phi_nodes, set_phi_nodes,
5575         (bsi_start, bsi_last): Use bb_stmt_list.
5576         (phi_nodes_ptr, bb_stmt_list, set_bb_stmt_list): New functions.
5577         * cfgexpand.c (expand_gimple_basic_block): Use bb_stmt_list.
5578         Traverse the statements using tsi iterator.
5579         * basic-block.h (struct basic_block_def): Fields stmt_list
5580         and phi_nodes moved to ...
5581         (struct tree_bb_info): ... new structure.
5582         * tree-cfg.c (create_bb): Allocate il.tree.  Use set_bb_stmt_list.
5583         (tree_merge_blocks): Use bb_stmt_list and set_bb_stmt_list.
5584         (remove_bb): Handle blocks with NULL stmt list.  Clear il.tree field.
5585         (tree_verify_flow_info): Verify that il.tree is not set for
5586         entry and exit block.
5587         (tree_split_block): Use set_bb_stmt_list.
5588
5589 2007-04-23  Mike Stump  <mrs@apple.com>
5590
5591         * config/i386/i386.c (ix86_tune_features
5592         [X86_TUNE_DEEP_BRANCH_PREDICTION]: Prefer call over thunks on
5593         nocona and core2.
5594
5595 2007-04-23  H.J. Lu  <hongjiu.lu@intel.com>
5596
5597         * config/i386/i386.md (prefix_extra): New attribute.
5598         (length): Add prefix_extra.
5599
5600         * onfig/i386/sse.md (sse2_movdqu): Set prefix_data16.
5601         (sse2_movntv2di): Likewise.
5602         (sse2_cvtps2dq): Likewise.
5603         (sse2_cvtpd2pi): Likewise.
5604         (sse2_cvttpd2pi): Likewise.
5605         (*sse2_cvtpd2ps): Likewise.
5606         (*add<mode>3): Likewise.
5607         (sse2_ssadd<mode>3): Likewise.
5608         (sse2_usadd<mode>3): Likewise.
5609         (*sub<mode>3): Likewise.
5610         (sse2_sssub<mode>3): Likewise.
5611         (sse2_ussub<mode>3): Likewise.
5612         (*mulv8hi3): Likewise.
5613         (*smulv8hi3_highpart): Likewise.
5614         (*umulv8hi3_highpart): Likewise.
5615         (sse2_umulv2siv2di3): Likewise.
5616         (sse2_pmaddwd): Likewise.
5617         (ashr<mode>3): Likewise.
5618         (lshr<mode>3): Likewise.
5619         (ashl<mode>3): Likewise.
5620         (sse2_ashlti3): Likewise.
5621         (sse2_lshrti3): Likewise.
5622         (*umaxv16qi3): Likewise.
5623         (*smaxv8hi3): Likewise.
5624         (*uminv16qi3): Likewise.
5625         (*sminv8hi3): Likewise.
5626         (sse2_eq<mode>3): Likewise.
5627         (sse2_gt<mode>3): Likewise.
5628         (*and<mode>3): Likewise.
5629         (sse2_nand<mode>3): Likewise.
5630         (*ior<mode>3): Likewise.
5631         (*xor<mode>3): Likewise.
5632         (sse2_packsswb): Likewise.
5633         (sse2_packssdw): Likewise.
5634         (sse2_packuswb): Likewise.
5635         (sse2_punpckhbw): Likewise.
5636         (sse2_punpcklbw): Likewise.
5637         (sse2_punpckhwd): Likewise.
5638         (sse2_punpcklwd): Likewise.
5639         (sse2_punpckhdq): Likewise.
5640         (sse2_punpckldq): Likewise.
5641         (sse2_punpckhqdq): Likewise.
5642         (sse2_punpcklqdq): Likewise.
5643         (*sse2_pinsrw): Likewise.
5644         (*sse2_pextrw): Likewise.
5645         (sse2_pshufd_1): Likewise.
5646         (sse2_uavgv16qi3): Likewise.
5647         (sse2_uavgv8hi3): Likewise.
5648         (sse2_psadbw): Likewise.
5649         (sse2_pmovmskb): Likewise.
5650         (*sse2_maskmovdqu): Likewise.
5651         (*sse2_maskmovdqu_rex64): Likewise.
5652         (sse4a_extrqi): Likewise.
5653         (sse4a_extrq): Likewise.
5654         (sse3_lddqu): Set prefix_rep.
5655         (sse3_addsubv4sf3): Likewise.
5656         (sse3_haddv4sf3): Likewise.
5657         (sse3_hsubv4sf3): Likewise.
5658         (sse_cvtss2si): Likewise.
5659         (sse_cvtss2si_2): Likewise.
5660         (sse_cvtss2siq): Likewise.
5661         (sse_cvtss2siq_2): Likewise.
5662         (sse_cvttss2si): Likewise.
5663         (sse_cvttss2siq): Likewise.
5664         (sse2_cvttps2dq): Likewise.
5665         (sse3_movshdup): Likewise.
5666         (sse3_movsldup): Likewise.
5667         (sse2_cvtsd2si): Likewise.
5668         (sse2_cvtsd2si_2): Likewise.
5669         (sse2_cvtsd2siq): Likewise.
5670         (sse2_cvtsd2siq_2): Likewise.
5671         (sse2_cvttsd2si): Likewise.
5672         (sse2_cvttsd2siq): Likewise.
5673         (*sse2_cvtpd2dq): Likewise.
5674         (*sse2_cvttpd2dq): Likewise.
5675         (sse2_pshuflw_1): Likewise.
5676         (sse2_pshufhw_1): Likewise.
5677         (sse4a_insertqi): Likewise.
5678         (sse4a_insertq): Likewise.
5679         (ssse3_phaddwv8hi3): Set prefix_data16 and prefix_extra.
5680         (ssse3_phadddv4si3): Likewise.
5681         (ssse3_phaddswv8hi3): Likewise.
5682         (ssse3_phsubwv8hi3): Likewise.
5683         (ssse3_phsubdv4si3): Likewise.
5684         (ssse3_phsubswv8hi3): Likewise.
5685         (ssse3_pmaddubswv8hi3): Likewise.
5686         (ssse3_pmulhrswv8hi3): Likewise.
5687         (ssse3_pshufbv16qi3): Likewise.
5688         (ssse3_psign<mode>3): Likewise.
5689         (ssse3_palignrti): Likewise.
5690         (abs<mode>2): Likewise.
5691         (ssse3_phaddwv4hi3): Set prefix_extra.
5692         (ssse3_phadddv2si3): Likewise.
5693         (ssse3_phaddswv4hi3): Likewise.
5694         (ssse3_phsubwv4hi3): Likewise.
5695         (ssse3_phsubdv2si3): Likewise.
5696         (ssse3_phsubswv4hi3): Likewise.
5697         (ssse3_pmaddubswv4hi3): Likewise.
5698         (ssse3_pmulhrswv4hi3): Likewise.
5699         (ssse3_pshufbv8qi3): Likewise.
5700         (ssse3_psign<mode>3): Likewise.
5701         (ssse3_palignrdi): Likewise.
5702         (abs<mode>2): Likewise.
5703         (sse2_cvtdq2ps): Set mode to V4SF instead of V2DF.
5704         (*vec_dupv2df): Set mode to V2DF instead of V4SF.
5705         (sse2_pmovmskb): Set mode to SI instead of V2DF.
5706
5707 2007-04-23  Nick Clifton  <nickc@redhat.com>
5708
5709         * params.def: Fix formatting of emacs local variables.
5710
5711 2007-04-23  H.J. Lu  <hongjiu.lu@intel.com>
5712
5713         * config/i386/sse.md (sse2_stored): Don't split to inter-unit
5714         move if inter-unit move isn't allowed.
5715         Don't split moving the first element of V2DI to DI to inter-unit
5716         move if inter-unit move isn't allowed.
5717
5718 2007-04-23  Richard Guenther  <rguenther@suse.de>
5719
5720         * tree-ssa-sink.c (execute_sink_code): Calculate CDI_DOMINATORS
5721         and CDI_POST_DOMINATORS separately.
5722
5723 2007-04-23  Nick Clifton  <nickc@redhat.com>
5724
5725         * c.opt (Wformat-contains-nul): Add warning attribute.
5726
5727 2007-04-23  Jan Hubicka  <jh@suse.cz>
5728
5729         * function.c (init_function_start): Don't init line number info.
5730         (expand_function_end): Update.
5731         (reset_block_changes, record_block_change, finalize_block_changes,
5732         check_block_change, free_block_changes): Kill.
5733         * function.h (reset_block_changes, record_block_change,
5734         finalize_block_changes, check_block_change, free_block_changes): Remove
5735         prototypes.
5736         (struct function): Remove ib_boundaries_block.
5737         * emit-rtl.c (make_insn_raw, make_jump_insn_raw, make_call_insn_raw):
5738         Use curr_insn_locator to initialize locator.
5739         (emit_line_note): Remove.
5740         * cfgexpand.c (expand_gimple_cond_expr): Update.
5741         (construct_exit_block): Likewise.
5742         (tree_expand_cfg): Initialize/finalize locators.
5743         * expr.c (expand_expr_real): Update.
5744         * cfglayout.c (line_locators_locs, line_locators_lines,
5745         file_locators_locs, file_locators_files): Remove.
5746         (set_block_levels): Move to cfgexpand.c.
5747         (insn_locators_initialize): Remove.
5748         (pass_insn_locators_initialize): Remove.
5749         (locations_locators_locs, locations_locators_vals): New static vars.
5750         (curr_location, last_location, curr_block, last_block, curr_rtl_loc):
5751         Likewise.
5752         (insn_locators_alloc, insn_locators_finalize,
5753         set_curr_insn_source_location, set_curr_insn_block, curr_insn_locator):
5754         New functions.
5755         (locator_location): New.
5756         (locator_line, locator_file): Rewrite.
5757         * rtl.h (emit_line_note): Kill.
5758         (insn_locators_alloc, insn_locators_finalize,
5759         set_curr_insn_source_location, set_curr_insn_block, curr_insn_locator):
5760         Declare.
5761         * tree-inline.c (initialize_cfun): Do not initialize
5762         ib_boundaries_block.
5763         * passes.c (pass_insn_locators_initialize): Remove.
5764
5765 2007-04-22  Andrew Pinski  <andrew_pinski@playstation.sony.com>
5766
5767         PR middle-end/31448
5768         * expr.c (reduce_to_bit_field_precision): Handle
5769         CONST_INT rtx's.
5770
5771 2007-04-22  Uros Bizjak  <ubizjak@gmail.com>
5772
5773         PR tree-optimization/24659
5774         * optabs.h (enum optab_index) [OTI_vec_unpacks_hi,
5775         OTI_vec_unpacks_lo]: Update comment to mention floating point operands.
5776         (vec_pack_trunc_optab): Rename from vec_pack_mod_optab.
5777         * genopinit.c (optabs): Rename vec_pack_mod_optab
5778         to vec_pack_trunc_optab.
5779         * tree-vect-transform.c (vectorizable_type_demotion): Do not fail
5780         early for scalar floating point operands for NOP_EXPR.
5781         (vectorizable_type_promotion): Ditto.
5782         * optabs.c (optab_for_tree_code) [VEC_PACK_TRUNC_EXPR]: Return
5783         vec_pack_trunc_optab.
5784         (expand_binop): Rename vec_float_trunc_optab to vec_pack_mod_optab.
5785
5786         * tree.def (VEC_PACK_TRUNC_EXPR): Rename from VEC_PACK_MOD_EXPR.
5787         * tree-pretty-print.c (dump_generic_node) [VEC_PACK_TRUNC_EXPR]:
5788         Rename from VEC_PACK_MOD_EXPR.
5789         (op_prio) [VEC_PACK_TRUNC_EXPR]: Ditto.
5790         * expr.c (expand_expr_real_1): Ditto.
5791         * tree-inline.c (estimate_num_insns_1): Ditto.
5792         * tree-vect-generic.c (expand_vector_operations_1): Ditto.
5793
5794         * config/i386/sse.md (vec_unpacks_hi_v4sf): New expander.
5795         (vec_unpacks_lo_v4sf): Ditto.
5796         (vec_pack_trunc_v2df): Ditto.
5797         (vec_pack_trunc_v8hi): Rename from vec_pack_mod_v8hi.
5798         (vec_pack_trunc_v4si): Rename from vec_pack_mod_v4si.
5799         (vec_pack_trunc_v2di): Rename from vec_pack_mod_v2di.
5800
5801         * config/rs6000/altivec.md (vec_pack_trunc_v8hi): Rename from
5802         vec_pack_mod_v8hi.
5803         (vec_pack_trunc_v4si): Rename from vec_pack_mod_v4si.
5804
5805         * doc/c-tree.texi (Expression trees) [VEC_PACK_TRUNC_EXPR]:
5806         Rename from VEC_PACK_MOD_EXPR.  This expression also represent
5807         packing of floating point operands.
5808         [VEC_UNPACK_HI_EXPR, VEC_UNPACK_LO_EXPR]: These expression also
5809         represent unpacking of floating point operands.
5810         * doc/md.texi (Standard Names) [vec_pack_trunc]: Update documentation.
5811         [vec_unpacks_hi]: Ditto.
5812         [vec_unpacks_lo]: Ditto.
5813
5814 2007-04-22  Jan Hubicka  <jh@suse.cz>
5815
5816         * final.c (rest_of_handle_final): Call
5817         targetm.asm_out.constructor/targetm.asm_out.destructor
5818         * cgraphunit.c (cgraph_build_static_cdtor): Don't do it here; set
5819         proper priority via decl_*_priority_insert.
5820         * c-common.c (c_expand_body): Likewise.
5821
5822 2007-04-22  Richard Guenther  <rguenther@suse.de>
5823
5824         PR tree-optimization/29789
5825         * tree-ssa-loop-im.c (stmt_cost): Adjust cost of shifts.
5826         (rewrite_reciprocal): New helper split out from
5827         determine_invariantness_stmt.
5828         (rewrite_bittest): Likewise.
5829         (determine_invariantness_stmt): Rewrite (A >> B) & 1 to
5830         A & (1 << B) if (1 << B) is loop invariant but (A >> B)
5831         is not.
5832
5833 2007-04-22  Revital Eres  <eres@il.ibm.com>
5834
5835         * loop-unroll.c (var_to_expand): New field to support also
5836         insns of the form x = something + x.
5837         (analyze_insn_to_expand_var): Use it.
5838         (expand_var_during_unrolling): Likewise.
5839
5840 2007-04-21  Zdenek Dvorak  <dvorakz@suse.cz>
5841
5842         * predict.c: Include pointer-set.h.
5843         (bb_predictions): New variable.
5844         (tree_predicted_by_p, tree_predict_edge,
5845         remove_predictions_associated_with_edge): Use bb_predictions map
5846         instead of bb->predictions.
5847         (clear_bb_predictions, assert_is_empty): New functions.
5848         (combine_predictions_for_bb): Use bb_predictions map.  Call
5849         clear_bb_predictions.
5850         (tree_estimate_probability): Create and free bb_predictions map.
5851         * Makefile.in (predict.o): Add pointer-set.h dependency.
5852         * basic-block.h (struct basic_block_def): Remove predictions
5853         field.
5854         * cfgrtl.c (rtl_verify_flow_info_1): Do not check bb->predictions.
5855
5856 2007-04-21  Kaz Kojima  <kkojima@gcc.gnu.org>
5857
5858         PR target/31480
5859         * config/sh/sh.md (length): Check if prev_nonnote_insn (insn)
5860         is null.
5861
5862 2007-04-21  Andrew Pinski  <andrew_pinski@playstation.sony.com>
5863
5864         * timevar.c (timevar_print): Change reference of --disable-checking to
5865         --enable-checking=release.  Also warn if assert checking is disabled.
5866
5867 2007-04-21  Andrew Pinski  <andrew_pinski@playstation.sony.com>
5868
5869         PR C/30265
5870         * c-gimplifier.c (gimplify_compound_literal_expr): Mark the
5871         decl as addressable if the compound literal was marked as
5872         addressable.
5873         Mark the decl as a gimple register if it is a complex or
5874         vector decl and does not live in memory.
5875
5876 2007-04-21  Andrew Pinski  <andrew_pinski@playstation.sony.com>
5877
5878         * tree.h (GIMPLE_TUPLE_P): Also true for PHI_NODEs.
5879         (GENERIC_NEXT): New function macro.
5880         (PHI_CHAIN): Use phi_node's new chain variable.
5881         (tree_phi_node): Change tree_common to tree_base
5882         and add the chain field.
5883         * tree-phinodes.c (make_phi_node): Don't set
5884         TREE_TYPE on the new node.
5885         * c-decl.c (lang_tree_node): Use GENERIC_NEXT
5886         instead of checking GIMPLE_TUPLE_P in chain_next.
5887         * tree-vect-transform.c
5888         (get_initial_def_for_induction): Look at
5889         PHI_RESULT_TREE for the type of the phi node.
5890         (update_vuses_to_preheader): Use PHI_CHAIN
5891         instead of TREE_CHAIN on the phi node.
5892         * tree-ssa-structalias.c (compute_points_to_sets):
5893         Likewise.
5894         (ipa_pta_execute): Likewise.
5895
5896 2007-04-21  Richard Guenther  <rguenther@suse.de>
5897
5898         PR middle-end/31136
5899         * fold-const.c (fold_unary): Call fold_convert_const on the
5900         original tree.
5901
5902 2007-04-21  Alexandre Oliva  <aoliva@redhat.com>
5903
5904         * gcse.c (store_killed_in_insn): Handle PARALLELs.
5905         (store_killed_in_pat): New.
5906
5907 2007-04-20  Richard Henderson  <rth@redhat.com>
5908
5909         PR target/31628
5910         * config/i386/i386.c (type_has_variadic_args_p): Look for any
5911         TREE_LIST with a void_type_node value, not void_list_node exactly.
5912
5913 2007-04-21  Douglas Gregor  <doug.gregor@gmail.com>
5914
5915         * doc/standards.texi: Re-arrange into language-specific
5916         subsections. Add a C++ section, documenting which standards we
5917         support.
5918
5919 2007-04-21  Zdenek Dvorak  <dvorakz@suse.cz>
5920
5921         * tree-ssa-structalias.c (delete_points_to_sets): Free graph->complex.
5922         * tree-ssa-operands.c (finalize_ssa_vuse_ops): Free new_ops.
5923
5924 2007-04-20  Daniel Jacobowitz  <dan@codesourcery.com>
5925
5926         * config/rs6000/sysv4.h (STARTFILE_DEFAULT_SPEC): Include
5927         ecrti.o and crtbegin.o.
5928         (LIB_DEFAULT_SPEC): Include -lc.
5929         (ENDFILE_DEFAULT_SPEC): Include crtend.o and ecrtn.o.
5930
5931 2007-04-20  Richard Henderson  <rth@redhat.com>
5932
5933         PR target/28623
5934         * config/alpha/alpha.c (get_unaligned_address): Remove extra_offset
5935         argument; update all callers.
5936         (get_unaligned_offset): New.
5937         * config/alpha/alpha.md (extendqidi2, extendhidi2): Don't use
5938         get_unaligned_address, just pass on the address directly.
5939         (unaligned_extendqidi): Use gen_lowpart instead of open-coding
5940         the subreg in the helper patterns.
5941         (unaligned_extendqidi_le): Use get_unaligned_offset.
5942         (unaligned_extendqidi_be, unaligned_extendhidi_le): Likewise.
5943         (unaligned_extendhidi_be): Likewise.
5944         (unaligned_extendhidi): Tidy.
5945         * config/alpha/alpha-protos.h: Update.
5946
5947 2007-04-20  Richard Henderson  <rth@redhat.com>
5948
5949         * config/alpha/alpha.h (CPP_SPEC, CPP_SUBTARGET_SPEC): Remove.
5950         (EXTRA_SPECS, SUBTARGET_EXTRA_SPECS): Remove.
5951         * config/alpha/linux.h (CPP_SPEC): Undef before redefine.
5952         * config/alpha/linux-elf.h (EXTRA_SPECS): Rename SUBTARGET_EXTRA_SPECS.
5953         * config/alpha/freebsd.h (EXTRA_SPECS): Rename SUBTARGET_EXTRA_SPECS.
5954         (CPP_SPEC): Don't include %(cpp_subtarget).
5955         * config/alpha/netbsd.h (CPP_SPEC): Rename CPP_SUBTARGET_SPEC.
5956         (EXTRA_SPECS): Rename SUBTARGET_EXTRA_SPECS.
5957         * config/alpha/osf.h (CPP_SPEC, EXTRA_SPECS): Similarly.
5958
5959 2007-04-20  Jakub Jelinek  <jakub@redhat.com>
5960
5961         * config/i386/i386.c (bdesc_2arg): Use ORDERED rather than UNORDERED
5962         for __builtin_ia32_cmpordss.
5963
5964         PR tree-optimization/31632
5965         * fold-const.c (fold_binary): Use op0 and op1 instead of arg0
5966         and arg1 for optimizations of comparison against min/max values.
5967         Fold arg0 to arg1's type for optimizations of comparison against
5968         min+1 and max-1 values.
5969
5970 2007-04-19  Bernd Schmidt  <bernd.schmidt@analog.com>
5971
5972         * reload.c (combine_reloads): When trying to use a dying register,
5973         check whether it's uninitialized and don't use if so.
5974
5975 2007-04-19  Brooks Moses  <brooks.moses@codesourcery.com>
5976
5977         * fold-const.c: Remove prototypes for native_encode_expr and
5978         native_interpret_expr.
5979         (native_encode_expr): Make non-static.
5980         (native_interpret_expr): Likewise.
5981         * tree.h: Add prototypes for the above.
5982
5983 2007-04-19  Joseph Myers  <joseph@codesourcery.com>
5984
5985         * config/rs6000/spe.md (*frob_tf_ti, *frob_ti_tf, *frob_ti_tf_2,
5986         *mov_si<mode>_e500_subreg0, *mov_si<mode>_e500_subreg0_2,
5987         *mov_sitf_e500_subreg8, *mov_sitf_e500_subreg8_2, spe_extenddftf2,
5988         spe_fix_trunctfsi2_internal, spe_negtf2_internal, cmptfeq_gpr,
5989         tsttfeq_gpr, cmptfgt_gpr, tsttfgt_gpr, cmptflt_gpr, tsttflt_gpr):
5990         Add length attributes.
5991
5992 2007-04-19  Janis Johnson  <janis187@us.ibm.com>
5993
5994         * ginclude/float.h: Check that __STDC_WANT_DEC_FP__ is defined,
5995         not that it is 1.
5996
5997         * c-cppbuiltin.c (c_cpp_builtins): Remove definition of
5998         __STDC_WANT_DEC_FP__.
5999
6000 2007-04-19  Joseph Myers  <joseph@codesourcery.com>
6001
6002         * configure.ac: Allow both powerpc*-*-linux* and powerpc*-*-gnu*
6003         for long double compatibility.
6004         * configure: Regenerate.
6005
6006 2007-04-19  Eric Botcazou  <ebotcazou@libertysurf.fr>
6007
6008         PR rtl-optimization/29841
6009         * cfgbuild.c (control_flow_insn_p): Return TRUE for unconditional
6010         trap instructions.
6011         * sched-deps.c (sched_analyze_insn): Prevent all non-jump instructions
6012         that may cause control flow transfer from being moved.
6013
6014 2007-04-18  Jan Hubicka  <jh@suse.cz>
6015
6016         * fold-const.c (div_if_zero_remainder): Do signed divide for pointer
6017         types.
6018
6019 2007-04-18  Eric Christopher  <echristo@apple.com>
6020
6021         * config/rs6000/darwin.md (load_macho_picbase): Use link register
6022         only. Update operands.
6023         * config/rs6000/rs6000.c (rs6000_emit_prologue): Update caller.
6024         * config/rs6000/rs6000.md (builtin_setjmp_receiver): Ditto. Move from
6025         link register to pic register.
6026
6027 2007-04-18  Dirk Mueller  <dmueller@suse.de>
6028
6029         PR diagnostic/31227
6030         * tree-vrp.c (search_for_addr_array): New.
6031         (check_array_bounds): Suppress warning about
6032         address taken of array refs if its not de-referenced.
6033
6034 2007-04-18  Dorit Nuzman  <dorit@il.ibm.com>
6035
6036         * tree-vectorizer.c (destroy_loop_vec_info): Set loop->aux to NULL.
6037         * tree-vect-analyze.c (vect_analyze_loop_form): Set loop->aux.
6038
6039         * tree-vectorizer.h (NITERS_KNOWN_P): New.
6040         * tree-vect-analyze.c (vect_analyze_loop_form): Call NITERS_KNOWN_P
6041         instead of LOOP_VINFO_INT_NITERS to avoid having to geneate loop_info.
6042
6043         * tree-vect-analyze.c (vect_determine_vectorization_factor): Add
6044         dump print.
6045         (vect_analyze_operations): Fix indenetation.  Fix a comment.  Fix a
6046         print message.
6047         (vect_analyze_scalar_cycles): Fix indentation.
6048         (vect_enhance_data_refs_alignment): Fix check in case of peeling.
6049         (vect_mark_relevant): Include phis in relevance analysis.
6050
6051         * tree-vect-transform.c (vect_transform_loop): Add an assert.
6052
6053 2007-04-18  Anatoly Sokolov <aesok@post.ru>
6054
6055         * config/avr/avr.c (ptrreg_to_str): Replace error() with
6056         output_operand_lossage().
6057
6058 2007-04-18  Dorit Nuzman  <dorit@il.ibm.com>
6059
6060         * tree-vect-transform.c (get_initial_def_for_reduction): Clean away
6061         the unused code for reduction without adjust-in-epilog to simplify the
6062         function.
6063
6064 2007-04-18  Wolfgang Gellerich  <gellerich@de.ibm.com>
6065
6066         * config/s390/s390.h (S390_TDC_POSITIVE_ZERO): New constant.
6067         (S390_TDC_NEGATIVE_ZERO): New constant.
6068         (S390_TDC_POSITIVE_NORMALIZED_NUMBER): New constant.
6069         (S390_TDC_NEGATIVE_NORMALIZED_NUMBER): New constant.
6070         (S390_TDC_POSITIVE_DENORMALIZED_NUMBER): New constant.
6071         (S390_TDC_NEGATIVE_DENORMALIZED_NUMBER): New constant.
6072         (S390_TDC_POSITIVE_INFINITY): New constant.
6073         (S390_TDC_NEGATIVE_INFINITY): New constant.
6074         (S390_TDC_POSITIVE_QUIET_NAN): New constant.
6075         (S390_TDC_NEGATIVE_QUIET_NAN): New constant.
6076         (S390_TDC_POSITIVE_SIGNALING_NAN): New constant.
6077         (S390_TDC_NEGATIVE_SIGNALING_NAN): New constant.
6078         (S390_TDC_INFINITY): New constant.
6079         * config/s390/s390.c (s390_canonicalize_comparison): Renamed
6080         UNSPEC_CMPINT to UNSPEC_CCU_TO_INT, added a UNSPEC_CCU_TO_INT-like
6081         optimization for UNSPEC_CCZ_TO_INT.
6082         * config/s390/s390.md ("*TDC_insn_<mode>"): New insn.
6083         ("*ccz_to_int"): New insn.
6084         ("isinf<mode>2"): New insn.
6085         (UNSPEC_CMPINT): Renamed to UNSPEC_CCU_TO_INT.
6086         (UNSPEC_CCU_TO_INT): New constant, replaces UNSPEC_CMPINT.
6087         (UNSPEC_CCZ_TO_INT): New constant.
6088
6089 2007-04-18  Richard Guenther  <rguenther@suse.de>
6090
6091         PR tree-optimization/19431
6092         PR tree-optimization/21463
6093         * tree-pass.h (pass_phiprop): Declare.
6094         * passes.c (init_optimization_passes): New phiprop pass.
6095         * tree-ssa-forwprop.c (struct phiprop_d): New structure.
6096         (phivn_valid_p): New helper function.
6097         (phiprop_insert_phi): Likewise.
6098         (propagate_with_phi): Likewise.
6099         (tree_ssa_phiprop): New propagator propagating loads
6100         through phi nodes if profitable.
6101
6102 2007-04-18  Dorit Nuzman  <dorit@il.ibm.com>
6103
6104         * tree-vect-analyze.c (process_use): New function.
6105         (vect_mark_stmts_to_be_vectorized): Factor out code to process_use.
6106         Check phis in all bbs.
6107         * tree-vectorizer.c (vect_is_simple_use): Remove a no longer relavant
6108         assert.
6109
6110 2007-04-18  Bernd Schmidt  <bernd.schmidt@analog.com>
6111
6112         * reload1.c (eliminte_regs_in_insn): Use REG_EQUIV notes the same way
6113         we use REG_EQUAL.
6114
6115 2007-04-17  Anatoly Sokolov <aesok@post.ru>
6116
6117         PR target/30483
6118         * config/avr/avr.c (ptrreg_to_str): Replace gcc_unreachable() with
6119         error().
6120
6121 2007-04-17  H.J. Lu  <hongjiu.lu@intel.com>
6122
6123         * config/i386/sse.md (sse_vmaddv4sf3): Use register_operand
6124         on "0".
6125         (sse_vmmulv4sf3): Likewise.
6126         (sse2_vmaddv2df3): Likewise.
6127         (sse2_vmmulv2df3): Likewise.
6128
6129 2007-04-17  Zdenek Dvorak  <dvorakz@suse.cz>
6130
6131         PR rtl-optimization/31360
6132         * cfgloopanal.c (target_small_cost, target_pres_cost): Removed.
6133         (target_reg_cost): New.
6134         (init_set_costs): Initialize target_reg_cost.  Add comments
6135         regarding the rationale of the costs.
6136         (global_cost_for_size): Renamed to...
6137         (estimate_reg_pressure_cost): ... and simplify.  Decrease importance
6138         of register pressure.
6139         * tree-ssa-loop-ivopts.c (ivopts_global_cost_for_size): Use
6140         estimate_reg_pressure_cost.  Add number of ivs.
6141         (determine_set_costs): Dump target_reg_cost.
6142         * loop-invariant.c (gain_for_invariant):  Use
6143         estimate_reg_pressure_cost.  Removed n_inv_uses argument.
6144         (best_gain_for_invariant, find_invariants_to_move): Remove
6145         n_inv_uses.
6146         * cfgloop.h (target_small_cost, target_pres_cost): Removed.
6147         (target_reg_cost): Declare.
6148         (global_cost_for_size): Declaration removed.
6149         (estimate_reg_pressure_cost): Declare.
6150
6151 2007-04-17  Peter Bergner  <bergner@vnet.ibm.com>
6152
6153         * config/rs6000/rs6000.c (rs6000_hard_regno_mode_ok): Force TDmode
6154         regnos into even/odd register pairs.
6155         * config/rs6000/rs6000.h [SLOW_UNALIGNED_ACCESS]: Treat DDmode and
6156         TDmode similar to the other floating point modes.
6157         [SECONDARY_MEMORY_NEEDED]: Treat DDmode similar to DFmode.
6158         * config/rs6000/dfp.md (negdd2, absdd2, negtd2, abstd2): New
6159         define_expand's.
6160         (negdd2_fpr, absdd2_fpr, nabsdd2_fpr, negtd2_fpr, abstd2_fpr,
6161         nabstd2_fpr, movdd_hardfloat64_mfpgpr): New define_insn's.
6162         (movdd_hardfloat64): Use TARGET_MFPGPR.
6163
6164 2007-04-17  Bernd Schmidt  <bernd.schmidt@analog.com>
6165
6166         * reload1.c (delete_output_reload): Don't count output in n_inherited.
6167
6168         Revert
6169         2005-01-05  Richard Henderson  <rth@redhat.com>
6170         PR rtl-opt/10692
6171         * reload1.c (do_input_reload): Restrict the optimization deleteing
6172         a previous output reload to RELOAD_FOR_INPUT.
6173
6174 2007-04-17  Dorit Nuzman  <dorit@il.ibm.com>
6175
6176         * tree-vectorizer.h (stmt_vec_info_type): Add enum value
6177         induc_vec_info_type.
6178         (vectorizable_induction): New function declaration.
6179         * tree-vect-transform.c (get_initial_def_for_induction): No need to
6180         check if already vectorized.  Find first place in BB where new stmts
6181         can be inserted.  Takes only one argument.
6182         (vectorizable_induction): New function.
6183         (vect_transform_stmt): Add case for induc_vec_info_type to call
6184         vectorizable_induction.
6185         (vect_transform_loop): Consider phis for vectorization.
6186         * tree-vect-analyze.c (vect_determine_vectorization_factor): Simplify
6187         condition.
6188         (analyze_operations): Call vectorizable_induction when analyzing phis.
6189         Fix comment.
6190         (vect_mark_stmts_to_be_vectorized): Remove redundant checks.
6191         (vect_mark_relevant): Include phis in relevance analysis.
6192         (vect_mark_stmts_to_be_vectorize): Likewise.
6193         * tree-vect-patterns.c (widened_name_p): Remove obsolete asserts.
6194
6195 2007-04-16  Lawrence Crowl  <crowl@google.com>
6196
6197         * doc/invoke.texi (Debugging Options): Add documentation for the
6198         -femit-struct-debug options -femit-struct-debug-baseonly,
6199         -femit-struct-debug-reduced, and
6200         -femit-struct-debug-detailed[=...].
6201
6202         * c-opts.c (c_common_handle_option): Add
6203         OPT_femit_struct_debug_baseonly, OPT_femit_struct_debug_reduced,
6204         and OPT_femit_struct_debug_detailed_.
6205         * c.opt: Add specifications for
6206         -femit-struct-debug-baseonly, -femit-struct-debug-reduced,
6207         and -femit-struct-debug-detailed[=...].
6208         * opts.c (set_struct_debug_option): Parse the
6209         -femit-struct-debug-... options.
6210         * opts.c (matches_main_base, main_input_basename,
6211         main_input_baselength, base_of_path, matches_main_base): Add
6212         variables and functions to compare header base name to compilation
6213         unit base name.
6214         * opts.c (should_emit_struct_debug): Add to determine to emit a
6215         structure based on the option.
6216         (dump_struct_debug) Also disabled function to debug this
6217         function.
6218         * opts.c (handle_options): Save the base name of the
6219         compilation unit.
6220
6221         * langhooks-def.h (LANG_HOOKS_GENERIC_TYPE_P): Define.
6222         (LANG_HOOKS_FOR_TYPES_INITIALIZER): Add.
6223         This hook indicates if a type is generic.  Set it by default
6224         to "never generic".
6225         * langhooks.h (struct lang_hooks_for_types): Add a new hook
6226         to determine if a struct type is generic or not.
6227         * cp/cp-tree.h (class_tmpl_impl_spec_p): Declare a C++ hook.
6228         * cp/tree.c (class_tmpl_impl_spec_p): Implement the C++ hook.
6229         * cp/cp-lang.c (LANG_HOOKS_GENERIC_TYPE_P): Override null C hook
6230         with live C++ hook.
6231
6232         * flags.h (enum debug_info_usage): Add an enumeration to describe
6233         a program's use of a structure type.
6234         * dwarf2out.c (gen_struct_or_union_type_die): Add a new parameter
6235         to indicate the program's usage of the type.  Filter structs based
6236         on the -femit-struct-debug-... specification.
6237         (gen_type_die): Split into two routines, gen_type_die and
6238         gen_type_die_with_usage.  gen_type_die is now a wrapper
6239         that assumes direct usage.
6240         (gen_type_die_with_usage): Replace calls to gen_type_die
6241         with gen_type_die_with_usage adding the program usage of
6242         the referenced type.
6243         (dwarf2out_imported_module_or_decl): Suppress struct debug
6244         information using should_emit_struct_debug when appropriate.
6245
6246 2007-04-16  Ian Lance Taylor  <iant@google.com>
6247
6248         PR tree-optimization/31522
6249         * tree-vrp.c (vr_phi_edge_counts): New static variable.
6250         (vrp_initialize): Allocate vr_phi_edge_counts.
6251         (vrp_visit_phi_node): Don't push to infinity if we saw a new
6252         executable edge.  Drop test for all constants.
6253         (vrp_finalize): Free vrp_phi_edge_counts.
6254
6255         * doc/cpp.texi (Common Predefined Macros): Clarify description of
6256         __GNUC_GNU_INLINE__ and __GNUC_STDC_INLINE__.
6257
6258         * tree-ssa-propagate.c (cfg_blocks_add): Insert blocks with fewer
6259         predecessors at head rather than tail.
6260
6261 2007-04-16  Matthias Klose  <doko@debian.org>
6262
6263         * config/alpha/linux.h (CPP_SPEC): Define.
6264         * config/arm/linux-gas.h (SUBTARGET_CPP_SPEC): Extend.
6265
6266 2007-04-16  Aldy Hernandez  <aldyh@redhat.com>
6267
6268         * function.h: Remove sequence_stack extern declaration.
6269
6270 2007-04-16  Kazu Hirata  <kazu@codesourcery.com>
6271
6272         * config/m68k/m68k.h (LONG_DOUBLE_TYPE_SIZE): Change to 64 on
6273         TARGET_FIDOA.
6274         (LIBGCC2_LONG_DOUBLE_TYPE_SIZE): Change to 64 if __mfido__ is
6275         defined.
6276
6277 2007-04-16  Anatoly Sokolov <aesok@post.ru>
6278
6279         * config/avr/avr.c (avr_arch_types): Rearranging  array.
6280         (enum avr_arch): Add.
6281         (avr_mcu_types): Use avr_arch enumeration constants instead of
6282         numbers.
6283         * config/avr/avr.h (LINK_SPEC): Simplify.
6284
6285 2007-04-16  Kazu Hirata  <kazu@codesourcery.com>
6286
6287         * config/m68k/m68k.c (m68k_libcall_value,
6288         m68k_function_value): Use macros for register names more.
6289
6290         * config/m68k/m68k.h (FRAME_POINTER_REGNUM): Use A6_REG
6291         instead.
6292         (M68K_REGNAME): Use A6_REG.
6293         * config/m68k/m68k.md (FP_REG): Rename to A6_REG.
6294
6295 2007-04-16  Maxim Kuvyrkov  <mkuvyrkov@ispras.ru>
6296
6297         PR middle-end/28071
6298         * sched-int.h (struct deps): Split field 'pending_lists_length' into
6299         'pending_read_list_length' and 'pending_write_list_length'.  Update
6300         comment.
6301         * sched-deps.c (add_insn_mem_dependence): Change signature.  Update
6302         to handle two length counters instead of one.  Update all uses.
6303         (flush_pending_lists, sched_analyze_1, init_deps): Update to handle
6304         two length counters instead of one.
6305         * sched-rgn.c (propagate_deps): Update to handle two length counters
6306         instead of one.
6307
6308 2007-04-16  H.J. Lu  <hongjiu.lu@intel.com>
6309
6310         PR target/31582
6311         * config/i386/i386.c (ix86_expand_vec_set_builtin): Make a
6312         copy of source, pass it to ix86_expand_vector_set and return
6313         it as target.
6314
6315 2007-04-16  David Ung  <davidu@mips.com>
6316             Joseph Myers  <joseph@codesourcery.com>
6317
6318         * config/mips/mips.h (PROCESSOR_74KC, PROCESSOR_74KF,
6319         PROCESSOR_74KX, TUNE_74K, GENERATE_MADD_MSUB): Define.
6320         * config/mips/mips.c (mips_cpu_info_table, mips_rtx_cost_data):
6321         Add 74K processor information.
6322         * config/mips/mips.md: Include 74k.md.
6323         (cpu): Add 74kc,74kf,74kx.
6324         (ISA_HAS_MADD_MSUB): Change to GENERATE_MADD_MSUB throughout.
6325         * config/mips/74k.md: New.
6326         * doc/invoke.texi (MIPS Options): Document 74K support.
6327
6328 2007-04-16  Dorit Nuzman  <dorit@il.ibm.com>
6329
6330         * tree-vect-analyze.c (vect_analyze_operations): Reorganize calls to
6331         vectorizable_* functions.
6332         * tree-vect-transform.c (vectorizable_call): Add check for
6333         STMT_VINFO_RELEVANT_P, STMT_VINFO_DEF_TYPE and STMT_VINFO_LIVE_P.
6334         (vectorizable_store): likewise.
6335         (vectorizable_conversion): Add check for STMT_VINFO_DEF_TYPE.
6336         Add comments.
6337         (vectorizable_operation, vectorizable_type_demotion): Likewise.
6338         (vectorizable_type_promotion, vectorizable_load): Likewise.
6339         (vectorizable_live_operation, vectorizable_condition): Likewise.
6340         (vectorizable_assignment): Add check for STMT_VINFO_DEF_TYPE and
6341         STMT_VINFO_LIVE_P.
6342         (vect_transform_stmt): Reorganize calls to vectorizable_* functions.
6343
6344 2007-04-15  Kazu Hirata  <kazu@codesourcery.com>
6345
6346         * config/m68k/linux.h (FUNCTION_VALUE_REGNO_P): Use macros for
6347         register numbers more.
6348         * config/m68k/m68k.h (STACK_POINTER_REGNUM,
6349         FRAME_POINTER_REGNUM, STATIC_CHAIN_REGNUM,
6350         M68K_STRUCT_VALUE_REGNUM, FUNCTION_VALUE, LIBCALL_VALUE,
6351         FUNCTION_VALUE_REGNO_P): Likewise.
6352         * config/m68k/m68kelf.h (M68K_STRUCT_VALUE_REGNUM,
6353         STATIC_CHAIN_REGNUM): Likewise.
6354         * config/m68k/m68kemb.h (FUNCTION_VALUE_REGNO_P): Likewise.
6355         * config/m68k/netbsd-elf.h (M68K_STRUCT_VALUE_REGNUM,
6356         STATIC_CHAIN_REGNUM, FUNCTION_VALUE_REGNO_P): Likewise.
6357         * config/m68k/m68k.md (FP_REG): New.
6358
6359 2007-04-15  Kazu Hirata  <kazu@codesourcery.com>
6360
6361         * config/m68k/m68k.h (PREFERRED_STACK_BOUNDARY): Prefer 32-bit
6362         alignment on fido.
6363
6364 2007-04-15  Kazu Hirata  <kazu@codesourcery.com>
6365
6366         * config/i386/i386.c, config/s390/s390.c, config/s390/s390.md,
6367         tree-ssa-loop-niter.c, tree-ssa-structalias.c, tree-vrp.c: Fix
6368         comment typos.
6369
6370 2007-04-11  Zdenek Dvorak  <dvorakz@suse.cz>
6371
6372         * tree-ssa-loop-prefetch.c (loop_prefetch_arrays): Ignore
6373         cold loops.
6374
6375 2007-04-14  Andrew Pinski  <andrew_pinski@playstation.sony.com>
6376
6377         PR c/31520
6378         * c-decl.c (finish_decl): Grab the type of the decl after the call
6379         to store_init_value.
6380
6381 2007-04-14  Steven Bosscher  <steven@gcc.gnu.org>
6382
6383         * common.opt (fforward-propagate): Fix "Optimization" annotation.
6384
6385 2007-04-14  Jakub Jelinek  <jakub@redhat.com>
6386
6387         PR c++/25874
6388         * omp-low.c (expand_omp_parallel): If child_cfun->cfg, free dominators,
6389         post dominators and cleanup cfg before returning.
6390
6391 2007-04-14  Bernd Schmidt  <bernd.schmidt@analog.com>
6392
6393         * config/bfin/bfin.h (MODES_TIEABLE_P): Allow more modes to be tied.
6394         * config/bfin/bfin.md (movsi_insn): Delete two unused alternatives.
6395
6396 2007-04-14  Kazu Hirata  <kazu@codesourcery.com>
6397
6398         * config.gcc: Recognize fido.
6399         * config/m68k/m68k-devices.def (fidoa): New.
6400         * config/m68k/m68k.h (TARGET_CPU_CPP_BUILTINS): Define
6401         __mfido__.
6402         (FL_FIDOA, TARGET_FIDOA): New.
6403         * config/m68k/m68k.opt (mfidoa): New.
6404
6405 2007-04-13  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
6406
6407         PR middle-end/31322
6408         * dwarf2out.c (output_call_frame_info): Call assemble_external_libcall
6409         when a personality function is used.
6410
6411 2007-04-13  Bob Wilson  <bob.wilson@acm.org>
6412
6413         * config/xtensa/xtensa.c (xtensa_expand_builtin): Use CALL_EXPR_FN.
6414
6415 2007-04-13  Mike Stump  <mrs@apple.com>
6416
6417         * config/darwin-c.c (handle_c_option): Handle -fapple-kext here so
6418         we can...
6419         * config/darwin.opt (fapple-kext): Make C++ only.
6420         * config/darwin.c (darwin_override_options): Remove code to ensure
6421         -fapple-kext is given for C++ only.
6422
6423 2007-04-13  Richard Sandiford  <richard@codesourcery.com>
6424
6425         * config/mips/vxworks.h (SUBTARGET_OVERRIDE_OPTIONS): Define.
6426         * config/mips/mips.c (override_options): Call
6427         SUBTARGET_OVERRIDE_OPTIONS, if defined.
6428
6429 2007-04-13  H.J. Lu  <hongjiu.lu@intel.com>
6430
6431         * config/i386/i386.opt (msvr3-shlib): Removed.
6432
6433         * doc/invoke.texi: Remove -msvr3-shlib.
6434
6435 2007-04-13  H.J. Lu  <hongjiu.lu@intel.com>
6436
6437         * config/i386/i386.opt (mpopcnt): Replace "popcount" instruction
6438         with "popcnt" instruction.
6439
6440 2007-04-13  Richard Guenther  <rguenther@suse.de>
6441
6442         PR tree-optimization/21258
6443         * tree-vrp.c (compare_case_labels): New helper.
6444         (find_switch_asserts): New function.
6445         (find_assert_locations): Call it for SWITCH_EXPRs.
6446
6447 2007-04-13  Uros Bizjak  <ubizjak@gmail.com>
6448
6449         * config/i386/i386.h (X87_FLOAT_MODE_P): Check for TARGET_80387.
6450         * config/i386/i386.md (*cmpfp0): Remove check for TARGET_80387, this
6451         check is now implied in X87_FLOAT_MODE_P.
6452         (*cmpfp_u, *cmpfp_<mode>, *cmpfp_i_i387): Ditto.
6453         (*cmpfp_iu_387, fix_trunc<mode>_fisttp_i386_1): Ditto.
6454         (fix_trunc<mode>_i386_fisttp): Ditto.
6455         (fix_trunc<mode>_i387_fisttp_with_temp): Ditto.
6456         (*fix_trunc<mode>_i387_1, fix_truncdi_i387): Ditto.
6457         (fix_truncdi_i387_with_temp, fix_trunc<mode>_i387): Ditto.
6458         (fix_trunc<mode>_i387_with_temp, *fp_jcc_1_387): Ditto.
6459         (*fp_jcc_2_387, *fp_jcc_5_387, *fp_jcc_6_387): Ditto.
6460         (*fp_jcc_7_387, *fp_jcc_8<mode>_387): Ditto.
6461         (unnamed_splitters): Ditto.
6462         * config/i386/i386.c (function_value_32): Generate FIRST_FLOAT_REG
6463         for X87_FLOAT_MODE_P mode.  Override FIRST_FLOAT_REG with
6464         FIRST_SSE_REG for local functions when SSE math is enabled or
6465         for functions with sseregparm attribute.
6466         (standard_80387_constant_p): Return -1 if mode is not
6467         X87_FLOAT_MODE_P.
6468         (ix86_cc_mode): Assert that scalar mode is not DECIMAL_FLOAT_MODE_P.
6469         (ix86_expand_compare): Ditto.
6470         (ix86_expand_carry_flag_compare): Ditto.
6471         (ix86_expand_int_movcc): Check for SCALAR_FLOAT_MODE_P instead
6472         of FLOAT_MODE_P for cmp_mode and assert that cmp_mode is not
6473         DECIMAL_FLOAT_MODE_P.
6474         (ix86_preferred_output_reload_class): Use X87_FLOAT_MODE_P instead
6475         of SCALAR_FLOAT_MODE_P.
6476         (ix86_rtx_costs) [PLUS] Remove FLOAT_MODE_P and fall through to ...
6477         [MINUS]: ... here.  Add SSE_FLOAT_MODE_P and X87_FLOAT_MODE_P
6478         checks before FLOAT_MODE_P.
6479         [MULT]: Add SSE_FLOAT_MODE_P and X87_FLOAT_MODE_P checks
6480         before FLOAT_MODE_P.
6481         [DIV]: Ditto.
6482         [NEG]: Ditto.
6483         [ABS]: Ditto.
6484         [SQRT]: Ditto.
6485         [FLOAT_EXTEND]: Use SSE_FLOAT_MODE_P.
6486
6487 2007-04-12  Paolo Bonzini  <bonzini@gnu.org>
6488             Charles Wilson  <libtool@cwilson.fastmail.fm>
6489
6490         * Makefile.in (stamp-as, stamp-collect-ld, stamp-nm): Remove.
6491         (libgcc.mvars): Don't depend on them.
6492         * configure.ac (as, collect-ld, nm): Create from exec-tool.in.
6493         * exec-tool.in: New.
6494
6495 2007-04-12  Brooks Moses  <brooks.moses@codesourcery.com>
6496
6497         * doc/invoke.text (--help): Document --help=common.
6498
6499 2007-04-12  Thomas Neumann  <tneumann@users.sourceforge.net>
6500
6501         * stub-objc.c (objc_build_keyword_decl): Avoid C++ keywords.
6502
6503 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
6504
6505         * Makefile.in (insn-emit.o): Depend on $(INTEGRATE_H).
6506         * genemit.c (main): Emit #include "integrate.h".
6507         * config/mips/mips-protos.h (SYMBOL_HALF): New mips_symbol_type.
6508         (LOADGP_RTP): New mips_loadgp_style.
6509         * config/mips/mips.h: Include config/vxworks-dummy.h.
6510         (TARGET_RTP_PIC): New macro.
6511         (TARGET_USE_GOT): Return true for TARGET_RTP_PIC.
6512         (TARGET_USE_PIC_FN_ADDR_REG): Return true for TARGET_VXWORKS_RTP.
6513         (ASM_OUTPUT_ADDR_DIFF_ELT): Emit function-relative case tables
6514         for TARGET_RTP_PIC.
6515         * config/mips/vxworks.h (SUBTARGET_ASM_SPEC): Define.  Pass down
6516         -mvxworks-pic when using -mrtp and a PIC option.
6517         * config/mips/mips.c (mips_classify_symbol): Return SYMBOL_GOT_DISP
6518         for RTP PIC.
6519         (mips_symbolic_constant_p, mips_symbolic_address_p)
6520         (mips_symbol_insns): Handle SYMBOL_HALF.
6521         (override_options): Warn about -G and -mrtp being used together.
6522         Initialize mips_lo_relocs[SYMBOL_HALF].
6523         (mips_current_loadgp_style): Return LOADGP_RTP for RTP PIC.
6524         (mips_emit_loadgp): Handle LOADGP_RTP.
6525         (mips_in_small_data_p): Return false for TARGET_VXWORKS_RTP.
6526         * config/mips/mips.md (loadgp_rtp): New insn and splitter.
6527         (tablejump): Handle function-relative case table entries if
6528         TARGET_RTP_PIC.
6529         * config/mips/predicates.md (symbol_ref_operand): New predicate.
6530
6531 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
6532
6533         * config/mips/mips.md (load_call<mode>): Allow any general register.
6534         destination.
6535         (sibcall_value_internal, sibcall_value_multiple_internal)
6536         (call_value_internal, call_value_split, call_value_multiple_internal)
6537         (call_value_multiple_split): Remove constraints from operand 0.
6538
6539 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
6540
6541         * config/mips/mips-protos.h: In comments, refer to loadgp_absolute
6542         rather than loadgp_noshared.
6543         * config/mips/mips.c (mips_emit_loadgp): Use gen_loadgp_absolute
6544         instead of gen_loadgp_noshared.  Use gen_loadgp_newabi instead of
6545         gen_loadgp.
6546         * config/mips/mips.md (loadgp): Rename to...
6547         (loadgp_newabi): ...this.
6548         (loadgp_noshared): Rename to...
6549         (loadgp_absolute): ...this.
6550
6551 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
6552
6553         * config/mips/mips.c (mips_ok_for_lazy_binding_p): Always return
6554         false for locally-binding symbols.
6555         (mips_dangerous_for_la25_p): Check mips_global_symbol_p.
6556
6557 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
6558
6559         * config/mips/mips-protos.h (SYMBOL_GOT_LOCAL): Rename to...
6560         (SYMBOL_GOT_PAGE_OFST): ...this.
6561         (SYMBOL_GOT_GLOBAL): Rename to...
6562         (SYMBOL_GOT_DISP): ...this.
6563         (SYMBOL_GOTOFF_GLOBAL): Rename to...
6564         (SYMBOL_GOTOFF_DISP): ...this.  Update comments accordingly.
6565         * config/mips/mips.c (mips_global_symbol_p): New function.
6566         (mips_symbol_binds_local_p): Likewise.
6567         (mips_classify_symbol): Rename SYMBOL_GOT_GLOBAL to SYMBOL_GOT_DISP
6568         and SYMBOL_GOT_LOCAL to SYMBOL_GOT_PAGE_OFST.  Use mips_global_symbol_p
6569         and mips_symbol_binds_local_p.
6570         (mips_symbolic_constant_p, mips_symbolic_address_p, mips_symbol_insns)
6571         (override_options): Rename SYMBOL_GOT_GLOBAL to SYMBOL_GOT_DISP,
6572         SYMBOL_GOT_LOCAL to SYMBOL_GOT_PAGE_OFST and SYMBOL_GOTOFF_GLOBAL to
6573         SYMBOL_GOTOFF_DISP.
6574         (mips_ok_for_lazy_binding_p): New function.
6575         (mips_load_call_address, mips_expand_call): Use it.
6576         (mips_dangerous_for_la25_p): Likewise.
6577         * config/mips/mips.md (*xgot_hi<mode>, *xgot_lo<mode>)
6578         (*got_disp<mode>): Use got_disp_operand instead of
6579         global_got_operand.  Use SYMBOL_GOTOFF_DISP instead of
6580         SYMBOL_GOTOFF_GLOBAL.
6581         (*got_page<mode>): Use got_page_ofst_operand instead of
6582         local_got_operand.
6583         * config/mips/predicates.md (const_call_insn_operand): Use
6584         SYMBOL_GOT_DISP instead of SYMBOL_GOT_GLOBAL.
6585         (global_got_operand): Rename to...
6586         (got_disp_operand): ...this and use SYMBOL_GOT_DISP instead of
6587         SYMBOL_GOT_GLOBAL.
6588         (local_got_operand): Rename to...
6589         (got_page_ofst_operand): ...this and use SYMBOL_GOT_PAGE_OFST instead
6590         of SYMBOL_GOT_LOCAL.
6591
6592 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
6593
6594         * config/mips/mips.h (TARGET_SPLIT_CALLS): Check
6595         TARGET_CALL_CLOBBERED_GP.
6596         (TARGET_SIBCALLS): Check TARGET_USE_GOT instead of TARGET_ABICALLS.
6597         (TARGET_USE_GOT, TARGET_CALL_CLOBBERED_GP): New macros.
6598         (TARGET_CALL_SAVED_GP, TARGET_USE_PIC_FN_ADDR_REG): Likewise.
6599         (STARTING_FRAME_OFFSET): Check TARGET_CALL_CLOBBERED_GP instead
6600         of TARGET_ABICALLS && !TARGET_NEWABI.
6601         (MIPS_CALL): Check TARGET_USE_GOT instead of TARGET_ABICALLS.
6602         * config/mips/mips.c (mips_load_call_address): Check
6603         TARGET_CALL_SAVED_GP instead of TARGET_NEWABI.
6604         (mips_global_pointer): Check TARGET_USE_GOT instead of TARGET_ABICALLS.
6605         Check TARGET_CALL_SAVED_GP instead of TARGET_NEWABI.
6606         (mips_save_reg_p): Check TARGET_CALL_SAVED_GP instead of
6607         TARGET_ABICALLS && TARGET_NEWABI.
6608         (mips_current_loadgp_style): Check TARGET_USE_GOT instead of
6609         TARGET_ABICALLS.
6610         (mips_expand_prologue): Check TARGET_OLDABI instead of !TARGET_NEWABI.
6611         (mips_expand_epilogue): Check TARGET_CALL_SAVED_GP instead of
6612         TARGET_ABICALLS && TARGET_NEWABI.
6613         (mips_output_mi_thunk): Check TARGET_USE_GOT instead of
6614         TARGET_ABICALLS.  Check TARGET_CALL_SAVED_GP instead of
6615         TARGET_NEWABI.  Use TARGET_USE_PIC_FN_ADDR_REG to decide
6616         whether indirect calls must use $25.
6617         (mips_extra_live_on_entry): Check TARGET_GOT instead of
6618         TARGET_ABICALLS.
6619         * config/mips/mips.md (jal_macro): Check flag_pic and
6620         TARGET_CALL_CLOBBERED_GP instead of TARGET_ABICALLS and TARGET_NEWABI.
6621         (builtin_setjmp_setup, builtin_longjmp): Check TARGET_USE_GOT
6622         instead of TARGET_ABICALLS.
6623         (exception_receiver): Check TARGET_CALL_CLOBBERED_GP instead of
6624         TARGET_ABICALLS && TARGET_OLDABI.
6625         (load_call<mode>): Check TARGET_USE_GOT instead of TARGET_ABICALLS.
6626         (sibcall): In the comment above the define_insn, mention
6627         TARGET_USE_PIC_FN_ADDR_REG instead of TARGET_ABICALLS.
6628         * config/mips/constraints.md (c): Check TARGET_USE_PIC_FN_ADDR_REG
6629         instead of TARGET_ABICALLS.
6630
6631 2007-04-12  Bernd Schmidt  <bernd.schmidt@analog.com>
6632
6633         * doc/md.texi (Blackfin family constraints): Document PA and PB.
6634         * config/bfin/bfin.h (CONST_OK_FOR_P): Handle PA and PB.
6635         (MACFLAGS_MATCH_P): New macro.
6636         * config/bfin/bfin.c (print_operand): Handle MACFLAG_IS_M.
6637         (bfin_secondary_reload): Treat EVEN_AREGS and ODD_AREGS like AREGS.
6638         * config/bfin/bfin.md (MACFLAG_IS_M): New constant.  Renumber some of
6639         the other MACFLAG constants.
6640         (sum_of_accumulators, lshrpdi3, ashrpdi3): New patterns.
6641         (flag_machi): Tighten constraints.  Renumber some of the operands.
6642         (flag_machi_acconly): Tighten constraints.  Correct operand numbers in
6643         output template.
6644         (flag_machi_parts_acconly): New pattern.
6645         (flag_macinithi): Tighten constraints.  Allow any accumulator to be
6646         used.
6647         (flag_macinit1hi): Tighten constraints.
6648         (flag_mul_macv2hi_parts_acconly): New pattern.
6649
6650         * config/bfin/lib1funcs.asm (___umulsi3_highpart, __smulsi3_highpart):
6651         Use a more efficient implementation.
6652         * config/bfin/bfin.md (umulsi3_highpart, smulsi3_highpart): Emit
6653         inline sequences when not optimizing for size.
6654
6655         * config/bfin/bfin.md (movhi_low2high, movhi_high2high, movhi_low2low,
6656         movhi_high2low): Delete, merge functionality into...
6657         (packv2hi): ... this pattern.
6658
6659         2007-02-11  Jie Zhang  <jie.zhang@analog.com>
6660         * config/bfin/bfin.opt (msim): New option.
6661         (mcpu=): New option.
6662         * config/bfin/bfin-protos.h (enum bfin_cpu): New.
6663         (bfin_cpu_t): Typedef of enum bfin_cpu.
6664         (bfin_cpu_type): New declaration.
6665         * config/bfin/elf.h (STARTFILE_SPEC): Add support for
6666         -msim and -mcpu= options.
6667         (LIB_SPEC): Likewise.
6668         * config/bfin/bfin.c (bfin_cpu_type): Define.
6669         (bfin_handle_option): Handle -mcpu= option.
6670         * config/bfin/bfin.h (DEFAULT_CPU_TYPE): Define as BFIN_CPU_BF532.
6671         (TARGET_CPU_CPP_BUILTINS): Define __ADSPBF531__, __ADSPBF532__,
6672         __ADSPBF533__ or __ADSPBF537__ according to the cpu type.
6673
6674 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
6675
6676         * config.gcc (*-*-vxworks*): Don't add to tm_files in this stanza.
6677         (arm-wrs-vxworks, mips-wrs-vxworks, powerpc-wrs-vxworks)
6678         (powerpc-wrs-vxworksae): Use ${tm_file}.
6679         (i[4567]86-wrs-vxworks, i[4567]86-wrs-vxworksae): Add svr4.h
6680         after elfos.h.  Remove i386/sysv4.h and add i386/vx-common.h.
6681         * config/i386/vx-common.h: New file.
6682
6683 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
6684
6685         * config/vxworks.h (VXWORKS_STARTFILE_SPEC): Use -l:crt0.o instead
6686         of crt0.o%s.
6687
6688 2007-04-12  Andreas Krebbel  <krebbel1@de.ibm.com>
6689
6690         * config/s390/s390.md ("trunctddd2"): Use TDmode for the target of
6691         ldxtr.
6692
6693 2007-04-12  Douglas Gregor  <doug.gregor@gmail.com>
6694
6695         PR c++/31078
6696         PR c++/31103
6697         * c-common.c (c_build_qualified_type): Set canonical type
6698         appropriately.
6699
6700 2007-04-12  Richard Guenther  <rguenther@suse.de>
6701
6702         * tree-pretty-print.c (dump_generic_node): Print ARRAY_REF
6703         lower bound and element size if lower bound is not zero
6704         or either of the ARRAY_REF operands is set.
6705
6706 2007-04-12  Richard Guenther  <rguenther@suse.de>
6707
6708         PR tree-optimization/24689
6709         PR tree-optimization/31307
6710         * fold-const.c (operand_equal_p): Compare INTEGER_CST array
6711         indices by value.
6712         * gimplify.c (canonicalize_addr_expr): To be consistent with
6713         gimplify_compound_lval only set operands two and three of
6714         ARRAY_REFs if they are not gimple_min_invariant.  This makes
6715         it never at this place.
6716         * tree-ssa-ccp.c (maybe_fold_offset_to_array_ref): Likewise.
6717
6718 2007-04-11  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
6719
6720         * pa.c (pa_som_asm_init_sections): Ensure that cfun->machine is not
6721         null before emitting a .nsubspa directive.
6722
6723 2007-04-11  Diego Novillo  <dnovillo@redhat.com>
6724
6725         * tree-ssa-alias.c (dump_mem_ref_stats): Do not call
6726         need_to_partition_p if there are no memory statements in the
6727         function.
6728
6729 2007-04-11  Zdenek Dvorak  <dvorakz@suse.cz>
6730
6731         * tree-data-ref.c (chrec_steps_divide_constant_p): Removed.
6732         (gcd_of_steps_may_divide_p): New function.
6733         (analyze_miv_subscript): Use gcd_of_steps_may_divide_p.
6734
6735 2007-04-11  Bernd Schmidt  <bernd.schmidt@analog.com>
6736
6737         * reload.c (find_reloads_toplev, find_reloads_address,
6738         find_reloads_address_1, find_reloads_subreg_address): Use rtx_equal_p,
6739         not a pointer equality test, to decide if we need to call
6740         push_reg_equiv_alt_mem.
6741
6742 2007-04-11  Sebastian Pop  <sebastian.pop@inria.fr>
6743
6744         * tree-data-ref.c (affine_function_zero_p, constant_access_functions,
6745         insert_innermost_unit_dist_vector, add_distance_for_zero_overlaps): New.
6746         (build_classic_dist_vector): Call add_distance_for_zero_overlaps.
6747
6748 2007-04-11  Zdenek Dvorak  <dvorakz@suse.cz>
6749
6750         * tree-data-ref.c (add_multivariate_self_dist): Force the distance
6751         vector to be positive.
6752
6753 2007-04-11  Diego Novillo  <dnovillo@redhat.com>
6754
6755         PR 30735
6756         PR 31090
6757         * doc/invoke.texi: Document --params max-aliased-vops and
6758         avg-aliased-vops.
6759         * tree-ssa-operands.h (get_mpt_for, dump_memory_partitions,
6760         debug_memory_partitions): Move to tree-flow.h
6761         * params.h (AVG_ALIASED_VOPS): Define.
6762         * tree-ssa-alias.c (struct mp_info_def): Remove.  Update all
6763         users.
6764         (mp_info_t): Likewise.
6765         (get_mem_sym_stats_for): New.
6766         (set_memory_partition): Move from tree-flow-inline.h.
6767         (mark_non_addressable): Only clear the set of symbols for the
6768         partition if it exists.
6769         (dump_memory_partitions): Move from tree-ssa-operands.c
6770         (debug_memory_partitions): Likewise.
6771         (need_to_partition_p): New.
6772         (dump_mem_ref_stats): New.
6773         (debug_mem_ref_stats): New.
6774         (dump_mem_sym_stats): New.
6775         (debug_mem_sym_stats): New.
6776         (update_mem_sym_stats_from_stmt): New.
6777         (compare_mp_info_entries): New.
6778         (mp_info_cmp): Call it.
6779         (sort_mp_info): Change argument to a list of mem_sym_stats_t
6780         objects.
6781         (get_mpt_for): Move from tree-ssa-operands.c.
6782         (find_partition_for): New.
6783         (create_partition_for): Remove.
6784         (estimate_vop_reduction): New.
6785         (update_reference_counts): New.
6786         (build_mp_info): New.
6787         (compute_memory_partitions): Refactor.
6788         Document new heuristic.
6789         Call build_mp_info, update_reference_counts,
6790         find_partition_for and estimate_vop_reduction.
6791         (compute_may_aliases): Populate virtual operands before
6792         calling debugging dumps.
6793         (delete_mem_sym_stats): New.
6794         (delete_mem_ref_stats): New.
6795         (init_mem_ref_stats): New.
6796         (init_alias_info): Call it.
6797         (maybe_create_global_var): Remove alias_info argument.
6798         Get number of call sites and number of pure/const call sites
6799         from gimple_mem_ref_stats().
6800         (dump_alias_info): Call dump_memory_partitions first.
6801         (dump_points_to_info_for): Show how many times a pointer has
6802         been dereferenced.
6803         * opts.c (decode_options): For -O2 set --param
6804         max-aliased-vops to 500.
6805         For -O3 set --param max-aliased-vops to 1000 and --param
6806         avg-aliased-vops to 3.
6807         * fortran/options.c (gfc_init_options): Remove assignment to
6808         MAX_ALIASED_VOPS.
6809         * tree-flow-inline.h (gimple_mem_ref_stats): New.
6810         * tree-dfa.c (dump_variable): Dump memory reference
6811         statistics.
6812         Dump NO_ALIAS* settings.
6813         (referenced_var_lookup): Tidy.
6814         (mem_sym_stats): New.
6815         * tree-ssa-copy.c (may_propagate_copy): Return true if DEST
6816         and ORIG are different SSA names for a memory partition.
6817         * tree-ssa.c (delete_tree_ssa): Call delete_mem_ref_stats.
6818         * tree-flow.h (struct mem_sym_stats_d): Define.
6819         (mem_sym_stats_t): Define.
6820         (struct mem_ref_stats_d): Define.
6821         (struct gimple_df): Add field mem_ref_stats.
6822         (enum noalias_state): Define.
6823         (struct var_ann_d): Add bitfield noalias_state.
6824         (mem_sym_stats, delete_mem_ref_stats, dump_mem_ref_stats,
6825         debug_mem_ref_stats, debug_memory_partitions,
6826         debug_mem_sym_stats): Declare.
6827         * tree-ssa-structalias.c (update_alias_info): Update call
6828         sites, pure/const call sites and asm sites in structure
6829         returned by gimple_mem_ref_stats.
6830         Remove local variable IS_POTENTIAL_DEREF.
6831         Increase NUM_DEREFS if the memory expression is a potential
6832         dereference.
6833         Call update_mem_sym_stats_from_stmt.
6834         If the memory references memory, call
6835         update_mem_sym_stats_from_stmt for all the direct memory
6836         symbol references found.
6837         (intra_create_variable_infos): Set noalias_state field for
6838         pointer arguments according to the value of
6839         flag_argument_noalias.
6840         * tree-ssa-structalias.h (struct alias_info): Remove fields
6841         num_calls_found and num_pure_const_calls_found.
6842         (update_mem_sym_stats_from_stmt): Declare.
6843         * params.def (PARAM_MAX_ALIASED_VOPS): Change description.
6844         Set default value to 100.
6845         (PARAM_AVG_ALIASED_VOPS): Define.
6846
6847 2007-04-11  Richard Guenther  <rguenther@suse.de>
6848
6849         PR middle-end/31530
6850         * simplify-rtx.c (simplify_binary_operation_1): Do not simplify
6851         a * -b + c as c - a * b if we honor sign dependent rounding.
6852
6853 2007-04-11  Bernd Schmidt  <bernd.schmidt@analog.com>
6854
6855         * config/bfin/bfin-protos.h (bfin_expand_movmem): Renamed from
6856         bfin_expand_strmov.
6857         * config/bfin/bfin.c (bfin_expand_prologue, bfin_delegitimize_address,
6858         bfin_function_ok_for_sibcall, split_load_immediate): Remove unused
6859         variables.
6860         (initialize_trampoline): Don't use old-style function definition.
6861         (bfin_secondary_reload): Mark IN_P argument as unused.
6862
6863 2007-04-10  Sebastian Pop  <sebastian.pop@inria.fr>
6864
6865         PR tree-optimization/31343
6866         * tree-chrec.h (chrec_zerop): Moved before build_polynomial_chrec.
6867         (build_polynomial_chrec): Return a scalar when the evolution is zero.
6868         * testsuite/gcc.dg/vect/pr31343.c: New.
6869
6870 2007-04-10  Eric Christopher  <echristo@apple.com>
6871
6872         * config/i386/i386.h (X87_FLOAT_MODE_P): New.
6873         * config/i386/i386.md (*cmpfp0): Use.
6874         (*cmpfp_u, *cmpfp_<mode>, *cmpfp_i_i387): Ditto.
6875         (*cmpfp_iu_387, fix_trunc<mode>_fisttp_i386_1): Ditto.
6876         (fix_trunc<mode>_i386_fisttp): Ditto.
6877         (fix_trunc<mode>_i387_fisttp_with_temp): Ditto.
6878         (*fix_trunc<mode>_i387_1, fix_truncdi_i387): Ditto.
6879         (fix_truncdi_i387_with_temp, fix_trunc<mode>_i387): Ditto.
6880         (fix_trunc<mode>_i387_with_temp, *fp_jcc_1_387): Ditto.
6881         (*fp_jcc_2_387, *fp_jcc_5_387, *fp_jcc_6_387): Ditto.
6882         (*fp_jcc_7_387, *fp_jcc_8<mode>_387): Ditto.
6883         (unnamed_splitters): Ditto.
6884         * config/i386/i386.c (output_fix_trunc): Assert that
6885         we're not being passed a TFmode operand.
6886
6887 2007-04-10  Zdenek Dvorak  <dvorakz@suse.cz>
6888
6889         PR tree-optimization/31526
6890         * tree-inline.c (copy_cfg_body): Use last_basic_block instead of
6891         n_basic_blocks to find newly added blocks.
6892
6893 2007-04-10  Uros Bizjak  <ubizjak@gmail.com>
6894
6895         * config/i386/i386.md (fix_trunc<mode>di_sse): Remove "x" from "xm"
6896         alternative.
6897         (fix_trunc<mode>si_sse): Ditto.
6898         (*floatsisf2_mixed, *floatsisf2_sse): Ditto.
6899         (*floatsidf2_mixed, *floatsidf2_sse): Ditto.
6900         (*floatdisf2_mixed, *floatdisf2_sse): Ditto.
6901         (*floatdidf2_mixed, *floatdidf2_sse): Ditto.
6902         (floathi<mode>2): Rename from floathisf2 and floathidf2. Macroize
6903         expander using SSEMODEF mode macro.
6904         (floatsi<mode>2): Rename from floatsisf2 and floashidf2. Macroize
6905         expander using SSEMODEF mode macro.
6906         (*floathi<mode>2_i387): Rename from *floathisf2_i387 and
6907         *floathidf2_i387. Macroize insn using X87MODEF12 mode macro.
6908         (*floatsi<mode>2_i387): Rename from *floatsisf2_i387 and
6909         *floatsidf2_i387. Macroize insn using X87MODEF12 mode macro.
6910         (*floatdi<mode>2_i387): Rename from *floatdisf2_i387 and
6911         *floatdidf2_i387. Macroize insn using X87MODEF12 mode macro.
6912         (float<mode>xf2): Rename from floathixf2, floatsixf2 and floatdixf2.
6913         Macroize insn using X87MODEF mode macro.
6914
6915 2007-04-09  H.J. Lu  <hongjiu.lu@intel.com>
6916
6917         * config/i386/sse.md (sse2_pinsrw): Removed.
6918         (sse2_pextrw): Renamed to ...
6919         (*sse2_pextrw): This.
6920
6921 2007-04-09  Jan Hubicka  <jh@suse.cz>
6922
6923         PR target/27869
6924         * config/i386/sse.md
6925         (sse_vmaddv4sf3, sse_vmmulv4sf3): Remove '%' modifier.
6926         (sse_vmsmaxv4sf3_finite, sse_vmsminv4sf3_finite): Remove.
6927         (sse2_vmaddv2df3, sse2_vmmulv2df3): Remove '%' modifier.
6928         (sse2_vmsmaxv2df3_finite, sse2_vmsminv2df3_finite): Remove.
6929
6930 2007-04-09  Jan Hubicka  <jh@suse.cz>
6931
6932         * tree-ssa-ccp (maybe_fold_offset_to_component_ref): Recurse into
6933         multiple fields of union.
6934
6935 2007-04-09  Zdenek Dvorak  <dvorakz@suse.cz>
6936
6937         * cfgloopmanip.c (create_preheader): Do not use loop_preheader_edge.
6938         (create_preheaders): Check that loops are available.
6939         (fix_loop_structure): Clean up, improve comments.
6940         * tree-ssa-loop-manip.c (rewrite_into_loop_closed_ssa):
6941         Check that loops are available.  Set LOOP_CLOSED_SSA to the loops
6942         state flags.
6943         * tree-scalar-evolution.c (scev_finalize): Clear scalar_evolution_info.
6944         * predict.c (tree_estimate_probability): Do not call
6945         calculate_dominance_info.  Call create_preheaders.
6946         * tree-cfgcleanup.c (cleanup_tree_cfg_loop): Only call
6947         rewrite_into_loop_closed_ssa if LOOP_CLOSED_SSA is set in loops state
6948         flags.
6949         * cfgloop.c (loop_preheader_edge): Assert that loops have preheaders.
6950         * cfgloop.h (LOOP_CLOSED_SSA): New constant.
6951         * tree-cfg.c (tree_split_edge): Make an assert more precise.
6952         * tree-ssa-threadedge.c (thread_across_edge): Comment the function
6953         arguments.
6954
6955 2007-04-08  Jan Hubicka  <jh@suse.cz>
6956
6957         * tree.h (maybe_fold_offset_to_component_ref): Declare.
6958         * tree-ssa-ccp.c (maybe_fold_offset_to_component_ref): Export.
6959         * fold-const.c (fold_unary): Use it.
6960
6961 2007-04-08  Andrew Pinski  <andrew_pinski@playstation.sony.com>
6962
6963         * varasm.c (assemble_variable): Remove call to
6964         lang_hooks.decls.prepare_assemble_variable.
6965         * langhooks-def.h (LANG_HOOKS_PREPARE_ASSEMBLE_VARIABLE): Kill.
6966         (LANG_HOOKS_DECLS): Remove LANG_HOOKS_PREPARE_ASSEMBLE_VARIABLE.
6967         * langhooks.h (lang_hooks_for_decls): Remove
6968         prepare_assemble_variable.
6969
6970 2007-04-08  Mike Stump  <mrs@apple.com>
6971
6972         * config/i386/i386.c: Use inc/dec on Core2.
6973
6974 2007-04-08  Steven Bosscher  <steven@gcc.gnu.org>
6975
6976         * langhooks.c (lhd_tree_inlining_add_pending_fn_decls,
6977         lhd_tree_inlining_anon_aggr_type_p, lhd_tree_inlining_start_inlining,
6978         lhd_tree_inlining_end_inlining): Remove.
6979         * langhooks.h (struct lang_hooks_for_tree_inlining): Remove then
6980         add_pending_fn_decls, anon_aggr_type_p, start_inlining, and
6981         end_inlining hooks.
6982         * langhooks-def.h (lhd_tree_inlining_add_pending_fn_decls,
6983         lhd_tree_inlining_anon_aggr_type_p, lhd_tree_inlining_start_inlining,
6984         lhd_tree_inlining_end_inlining): Remove prototypes.
6985         (LANG_HOOKS_TREE_INLINING_ADD_PENDING_FN_DECLS,
6986         LANG_HOOKS_TREE_INLINING_ANON_AGGR_TYPE_P,
6987         LANG_HOOKS_TREE_INLINING_START_INLINING,
6988         LANG_HOOKS_TREE_INLINING_END_INLINING): Remove.
6989
6990         * c-objc-common.h (LANG_HOOKS_TREE_INLINING_ANON_AGGR_TYPE_P): Do
6991         not set it.
6992
6993 2007-04-08  Anatoly Sokolov <aesok@post.ru>
6994
6995         PR target/29932
6996         * config/avr/predicates.md (io_address_operand): Delete predicate.
6997         (low_io_address_operand): Don't use 'mode' argument.
6998         (higth_io_address_operand): Rename ...
6999         (high_io_address_operand): ... to this. Don't use 'mode' argument.
7000         * config/avr/avr.md (*sbix_branch_tmp, *sbix_branch_tmp_bit7): Adjust
7001         for above change.
7002
7003 2007-04-07  Daniel Berlin  <dberlin@dberlin.org>
7004
7005         Revert change removing staticp.
7006
7007 2007-04-07  Anatoly Sokolov <aesok@post.ru>
7008
7009         PR target/30289
7010         * config/avr/avr.md (*clrmemqi, *clrmemhi): Mark operand 4 as
7011         earlyclobber.
7012
7013 2007-04-07  Bruce Korb  <bkorb@gnu.org>
7014
7015         * c.opt: Add -Wformat-contains-nul.
7016         * c-format.c (set_Wformat):  Set warn_format_contains_nul to the
7017           -Wformat setting.
7018         (check_format_info_main): Check OPT_Wformat_contains_nul before emitting
7019         the NUL byte warning.
7020
7021 2007-04-07  H.J. Lu  <hongjiu.lu@intel.com>
7022
7023         * config/i386/i386.c (ix86_handle_option): Handle SSSE3.
7024
7025 2007-04-06  Daniel Berlin  <dberlin@dberlin.org>
7026
7027         * tree.c (staticp): No longer use staticp langhook.
7028         * langhooks.c (lhd_staticp): Removed.
7029         * langhooks.h (struct lang_hooks): Remove staticp.
7030         * c-common.c (c_staticp): Remove.
7031         * c-common.h (c_staticp): Ditto.
7032         * langhooks-defs.h (lhd_staticp): Ditto.
7033         (LHD_HOOKS_STATICP): Ditto
7034         * tree.h (gcc_assert_lowered): New macro.
7035
7036 2007-04-06  Zdenek Dvorak  <dvorakz@suse.cz>
7037
7038         * tree-ssa-loop-niter.c (idx_infer_loop_bounds): Add and use
7039         argument "reliable".
7040         (infer_loop_bounds_from_ref, infer_loop_bounds_from_array):
7041         Add argument "reliable".  Propagate it through calls.
7042         (infer_loop_bounds_from_undefined):  Derive number of iterations
7043         estimates from references in blocks that do not dominate loop latch.
7044         (gcov_type_to_double_int): New function.
7045         (estimate_numbers_of_iterations_loop): Use gcov_type_to_double_int
7046         and expected_loop_iterations_unbounded.
7047         * cfgloopanal.c (expected_loop_iterations_unbounded): New function.
7048         (expected_loop_iterations): Use expected_loop_iterations_unbounded.
7049         * tree-data-ref.c (estimated_loop_iterations): Export.
7050         (get_references_in_stmt): Fix -- do not return addresses of local
7051         objects.
7052         * cfgloop.h (expected_loop_iterations_unbounded,
7053         estimated_loop_iterations): Declare.
7054
7055 2007-04-06  Andreas Tobler  <a.tobler@schweiz.org>
7056
7057         * tree-sra.c (sra_build_elt_assignment): Initialize min/maxshift.
7058
7059 2007-04-06  Uros Bizjak  <ubizjak@gmail.com>
7060
7061         * config/i386/i386.md (extend<mode>xf2): Rename from extendsfxf2
7062         and extenddfxf2. Macroize expander using X87MODEF12 mode macro.
7063         (*truncdfsf_mixed, *truncdfsf_i387, *truncdfsf2_i387_1):
7064         Use output_387_reg_move().
7065         (*truncxf<mode>2): Rename from *truncxfsf2 and truncxfdf2. Macroize
7066         expander using X87MODEF12 mode macro.
7067         (*truncxfsf2_mixed): Combine alternatives, ignore "r" alternative when
7068         choosing register preferences.  Use output_387_reg_move().
7069         (*truncxfdf2_mixed): Combine alternatives, use "r" alternative
7070         instead of "x".  Use output_387_reg_move().
7071         (*truncxf<mode>2_i387_noop): Rename from *truncxfsf2_i387_noop and
7072         *truncxfdf2_i387_noop.  Macroize insn using X87MODEF12 mode macro.
7073         (*truncxf<mode>2_i387): Rename from *truncxfsf2_i387 and
7074         *truncxfdf2_i387.  Macroize insn using X87MODEF12 mode macro.
7075         Use output_387_reg_move().
7076         (*truncxf?f_mixed splitter): Macroize splitter using X87MODEF12
7077         mode macro.
7078         (*truncxf?f_i387 splitter): Ditto.
7079
7080 2007-04-06  Daniel Berlin  <dberlin@dberlin.org>
7081
7082         * langhooks-def.h (LANG_HOOKS_INITIALIZER): Remove
7083         LANG_HOOKS_SAFE_FROM_P.
7084         * expr.c (safe_from_p): Remove langhook call.
7085         * langhooks.h (lang_hooks): Remove safe_from_p.
7086         (lhd_safe_from_p): Remove prototype.
7087         * langhooks.c (lhd_safe_from_p): Remove.
7088
7089 2007-04-06  Jan Hubicka  <jh@suse.cz>
7090
7091         * cgraphunit.c (decide_is_function_needed): Do not keep always_inline
7092         functions.
7093
7094 2007-04-06  Uros Bizjak  <ubizjak@gmail.com>
7095
7096         * config/i386/i386.c (output_387_reg_move): Handle memory operand[0].
7097         * config/i386/i386.md (*movsf_1, *movdf_nointeger,
7098         *movdf_integer_rex64, *movdf_integer, *movxf_nointeger,
7099         *movxf_integer): Use output_387_reg_move() for x87 reg->mem
7100         alternative.
7101         (*extendsfdf2_mixed, *extendsfdf2_i387, *extendsfxf2_i387,
7102         *extenddfxf2_i387, *truncdfsf_fast_mixed): Ditto.
7103
7104 2007-04-05  Richard Henderson  <rth@redhat.com>
7105
7106         * config/alpha/alpha.c (print_operand) [+]: Remove.
7107         (alpha_end_function): Print nop if call at end of function.
7108         * config/alpha/alpha.h (PRINT_OPERAND_PUNCT_VALID_P): Remove +.
7109         * config/alpha/alpha.md (UNSPEC_LDGP1): New.
7110         (call_osf_1_er_noreturn, call_value_osf_1_er_noreturn): New.
7111         (call_osf_2_er_nogp, call_value_osf_2_er_nogp): New.
7112         (call_osf_2_er, call_value_osf_2_er): Merge the ldgp highpart into
7113         the call pattern. Update peepholes to match.
7114
7115 2007-04-05  Janis Johnson  <janis187@us.ibm.com>
7116
7117         * doc/extend.texi (Other Builtins): Add decimal float variants
7118         of signbit.
7119         * builtins.def: Ditto.
7120         * builtins.c (expand_builtin): Ditto.
7121
7122 2007-04-05  Uros Bizjak  <ubizjak@gmail.com>
7123             H.J. Lu  <hongjiu.lu@intel.com>
7124
7125         PR target/31478
7126         * config/i386/sse.md (sse2_umulv2siv2di3): Use V4SImode instead
7127         of V8HImode when calling ix86_binary_operator_ok.
7128         (sse2_pmaddwd): Call ix86_binary_operator_ok.
7129         (sdot_prodv8hi): Operands 1 and 2 must be register.
7130
7131 2007-04-05  Alexandre Oliva  <aoliva@redhat.com>
7132
7133         * tree-sra.c (try_instantiate_multiple_fields): Needlessly
7134         initialize align to silence bogus warning.
7135
7136 2007-04-05  Alexandre Oliva  <aoliva@redhat.com>
7137
7138         PR middle-end/22156
7139         * tree-sra.c (struct sra_elt): Add in_bitfld_block.  Remove
7140         all_no_warning.
7141         (struct sra_walk_fns): Remove use_all parameter from use.
7142         (sra_hash_tree): Handle BIT_FIELD_REFs.
7143         (sra_elt_hash): Don't hash bitfld blocks.
7144         (sra_elt_eq): Skip them in parent compares as well.  Handle
7145         BIT_FIELD_REFs.
7146         (sra_walk_expr): Don't maintain or pass down use_all_p.
7147         (scan_use): Remove use_all parameter.
7148         (scalarize_use): Likewise.  Re-expand assignment to
7149         BIT_FIELD_REF of gimple_reg.  De-scalarize before input or
7150         output, and re-scalarize after output.  Don't mark anything
7151         for no warning.
7152         (scalarize_ldst): Adjust.
7153         (scalarize_walk_gimple_modify_statement): Likewise.
7154         (build_element_name_1): Handle BIT_FIELD_REFs.
7155         (instantiate_element): Don't warn for any element whose parent
7156         is used as a whole.
7157         (instantiate_missing_elements_1): Return the sra_elt.
7158         (canon_type_for_field): New.
7159         (try_instantiate_multiple_fields): New.
7160         (instantiate_missing_elemnts): Use them.
7161         (mark_no_warning): Removed.
7162         (generate_one_element_ref): Handle BIT_FIELD_REFs.
7163         (REPLDUP, sra_build_elt_assignment): New.
7164         (generate_copy_inout): Use them.
7165         (generate_element_copy): Likewise.  Handle bitfld differences.
7166         (generate_element_zero): Don't recurse for blocks.  Use
7167         sra_build_elt_assignment.
7168         (generate_one_element_int): Take elt instead of var.  Use
7169         sra_build_elt_assignment.
7170         (generate_element_init_1): Adjust.
7171         (scalarize_use, scalarize_copy): Use REPLDUP.
7172         (scalarize_ldst): Move assert before dereference.
7173         (dump_sra_elt_name): Handle BIT_FIELD_REFs.
7174
7175 2007-04-05  Steven Bosscher  <steven@gcc.gnu.org>
7176
7177         * regmove.c: Fix unused variable warnings due to previous commit.
7178
7179 2007-04-05  Steven Bosscher  <steven@gcc.gnu.org>
7180
7181         * regmove.c (STACK_GROWS_DOWNWARD): Don't boolean-ize.
7182         (regmove_bb_head): Remove.
7183         (copy_src_to_dest): Don't update regmove_bb_head and BB_HEAD.
7184         (regmove_optimize): Don't do unnecessary CFG fixes for non-existing
7185         problems with fixup_match_1.
7186         Don't initialize/free regmove_bb_head.
7187
7188         (reg_is_remote_constant_p): If an insn is in the same basic block
7189         but not before INSN, consider it remote, too.
7190
7191 2007-04-05  Anatoly Sokolov <aesok@post.ru>
7192
7193         PR target/25448
7194         * config/avr/avr.c (avr_handle_fndecl_attribute): Use the
7195         DECL_ASSEMBLER_NAME, not the DECL_NAME.
7196
7197 2007-04-05  H.J. Lu  <hongjiu.lu@intel.com>
7198
7199         * config/i386/i386.h (TARGET_CPU_CPP_BUILTINS): Reformat.
7200         (CONDITIONAL_REGISTER_USAGE): Likewise.
7201
7202 2007-04-04  Richard Henderson  <rth@redhat.com>
7203
7204         * config/alpha/lib1funcs.asm: Remove unused file.
7205
7206 2007-04-04  Brooks Moses  <brooks.moses@codesourcery.com>
7207
7208         PR other/31356
7209         * opts.c (print_specific_help): Fix --help=<language>
7210         header line.
7211         (common_handle_option): Support --help=common.
7212
7213 2007-04-04  Brooks Moses  <brooks.moses@codesourcery.com>
7214
7215         PR other/31353
7216         * gcc.c (main): Do not run the linker if
7217         print_subprocess_help indicates that it shouldn't be
7218         run.
7219
7220 2007-04-04  Brooks Moses  <brooks.moses@codesourcery.com>
7221
7222         PR doc/31355
7223         * doc/invoke.texi (--help=): Document <languages> value, fix
7224         formatting in tables of values.
7225
7226 2007-04-04  Danny Smith  <dannysmith.users.sourceforge.net>
7227
7228         * config/i386/winnt-cxx.c (i386_pe_type_dllimport_p): Don't ignore
7229         dllimport attribute of virtual methods.
7230
7231 2007-04-04  Chen Liqin  <liqin@sunnorth.com.cn>
7232
7233         * config/score/crti.asm: Change _bss_start to __bss_start.
7234         * config/score/score.h (CONDITIONAL_REGISTER_USAGE): Added.
7235         (OUTGOING_REG_PARM_STACK_SPACE) update.
7236         * config/score/score.opt: add options to make backend support
7237         score5, score5u, score7 and score7d.
7238         * config/score/score.md: Likewise.
7239         * config/score/misc.md: Likewise.
7240         * config/score/mac.md: Likewise.
7241         * doc/invoke.texi: Likewise.
7242         * doc/md.texi: update constraints define.
7243
7244 2007-04-03  Richard Henderson  <rth@redhat.com>
7245
7246         * expr.c (store_expr): If get_signed_or_unsigned_type doesn't yield
7247         an appropriate type, use the mode instead.
7248
7249 2007-04-03  Richard Sandiford  <richard@codesourcery.com>
7250
7251         * config.gcc (mips-wrs-vxworks): Add vx-common.h to tm_file.
7252         Set the default --with-arch setting to mips2.
7253         * config/mips/t-vxworks (MULTILIB_OPTIONS, MULTILIB_MATCHES)
7254         (MULTILIB_EXCEPTIONS): Redefine with new multilibs.
7255         (MULTILIB_OSDIRNAMES): Delete.
7256         (MULTILIB_DIRNAMES): Define.
7257         * config/mips/vxworks.h (LINK_SPEC): Add VXWORKS_LINK_SPEC.
7258         (LIB_SPEC, STARTFILE_SPEC, ENDFILE_SPEC): Define.
7259         (TARGET_OS_CPP_BUILTINS): Incorporate old SUBTARGET_CPP_SPEC
7260         definitions, except for _WRS_R3K_EXC_SUPPORT.  Call
7261         VXWORKS_OS_CPP_BUILTINS.
7262         (SUBTARGET_CPP_SPEC): Redefine to VXWORKS_ADDITIONAL_CPP_SPEC.
7263         (MIPS_DEBUGGING_INFO): Undefine.
7264         (FUNCTION_PROFILER): Define to VXWORKS_FUNCTION_PROFILER.
7265
7266 2007-04-03  Jakub Jelinek  <jakub@redhat.com>
7267
7268         PR middle-end/30704
7269         * fold-const.c (native_encode_real): Encode real.c provided longs
7270         as a series of 32-bit native integers.
7271         (native_interpret_real): Interpret buffer as a series of 32-bit
7272         native integers.
7273
7274 2007-04-03  Richard Guenther  <rguenther@suse.de>
7275
7276         * genpreds.c (write_insn_constraint_len): Write function
7277         optimized for CONSTRAINT_LEN implementation.
7278         (write_tm_preds_h): Output insn_constraint_len inline and
7279         use it for CONSTRAINT_LEN.
7280         (write_insn_preds_c): Don't output insn_constraint_len.
7281         * doc/md.texi (define_register_constraint): Document multi-letter
7282         constraints shall have the same length if they start with the same
7283         letter.
7284
7285 2007-04-03  Uros Bizjak  <ubizjak@gmail.com>
7286
7287         PR target/31175
7288         * config/i386/i386.md (isinf<mode>2): Expand only when
7289         TARGET_C99_FUNCTIONS is set.
7290
7291 2007-04-03  Uros Bizjak  <ubizjak@gmail.com>
7292
7293         * config.gcc (i[34567]86-*-linux*): Add i386/t-crtpc to tm-file.
7294         (x86_64-*-linux*): Ditto.
7295         * config/i386/i386.opt (mpc): New option.
7296         * config/i386/i386.c (overrride_options): Handle
7297         ix87_precision_string.
7298         * config/i386/crtprec.c: New file.
7299         * config/i386/t-crtpc: Ditto.
7300         * config/i386/linux.h (ENDFILE_SPEC): Add handling of -mpc32, -mpc64
7301         and -mpc80 options.
7302         * config/i386/linux64.h (ENDFILE_SPEC): Ditto.
7303         * config/i386/t-linux64 (EXTRA_MULTILIB_PARTS): Add
7304         crtprec32.o, crtprec64.o and crtprec80.o.
7305
7306         * doc/invoke.texi (Machine Dependent Options): Add -mpc32, -mpc64
7307         and -mpc80 options.
7308         (i386 and x86-64 Options): Document -mpc32, -mpc64 and -mpc80 options.
7309
7310 2007-04-02  Eric Christopher  <echristo@apple.com>
7311
7312         * doc/invoke.texi (i386 and x86-64 Options): Document -m64
7313         limitations on darwin.
7314
7315 2007-04-02  Anatoly Sokolov <aesok@post.ru>
7316
7317         PR target/31137
7318         * config/avr/avr.c (avr_rtx_costs): Add missing 'break' statements.
7319
7320 2007-04-02  Dave Korn  <dave.korn@artimi.com>
7321
7322         * doc/tm.texi (FUNCTION_MODE): Update and extend documentation.
7323
7324 2007-04-02  Dave Korn  <dave.korn@artimi.com>
7325
7326         * libgcc2.h (exception_descriptor): Don't forward-declare.
7327         (__get_eh_table_language, __get_eh_table_version): Delete
7328         prototypes of long-dead functions.
7329
7330 2007-04-01  Daniel Berlin  <dberlin@dberlin.org>
7331
7332         * ebitmap.h: New file
7333         * ebitmap.c: New file
7334         * Makefile.in (ebitmap.o): New target.
7335
7336 2007-04-01  Jan Hubicka  <jh@suse.cz>
7337
7338         * emit-rtl.c (emit_insn_before_setloc): Do not ICE when asked to emit
7339         before very first instruction.
7340
7341 2007-04-01  Jan Hubicka  <jh@suse.cz>
7342
7343         * ggc-page.c (ggc_print_statistics): Fix formatting string to avoid
7344         waring on 64bit hosts.
7345         * bitmap.h: Fix typo in bitmap_head_def.
7346
7347 2007-04-01  Steven Bosscher  <steven@gcc.gnu.org>
7348
7349         PR rtl-optimization/31391
7350         * cfgcleanup.c (try_optimize_cfg): If a removed label is turned
7351         into a DELETED_LABEL note, and the label is in an empty basic
7352         block, update BB_END as well as BB_HEAD.
7353
7354 2007-04-01  Richard Henderson  <rth@redhat.com>
7355
7356         PR tree-optimization/31169
7357         * tree-vrp.c (extract_range_from_binary_expr) <RSHIFT_EXPR>: Drop
7358         to varying if the range is outside [0,  prec-1].
7359
7360 2007-04-01  Richard Sandiford  <richard@codesourcery.com>
7361
7362         PR target/31388
7363         * config/mips/mips.md (load_const_gp): New insn.
7364         * config/mips/mips.c (mips_split_symbol): Avoid using or creating
7365         the MIPS16 GP pseudo register if no_new_pseudos.
7366         (mips16_gp_pseudo_reg): Use gen_load_const_gp.
7367
7368 2007-03-31  Andrew Pinski  <andrew_pinski@playstation.sony.com>
7369
7370         PR target/31364
7371         * config/rs6000/rs6000.md (call): Convert to LR hard reg for
7372         secureplt.
7373         (call_value): Likewise.
7374
7375 2007-03-31  Wolfgang Bangerth  <bangerth@dealii.org>
7376             Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
7377
7378         PR 14737
7379         * doc/invoke.texi: (optimization options): Reword description
7380         of -ffast-math. Document its primary purpose.
7381
7382 2007-03-31  Richard Guenther  <rguenther@suse.de>
7383
7384         * omp-low.c (splay-tree.h): Include.
7385         (lookup_decl): Replace splay-tree usage by pointer-map.
7386         (maybe_lookup_decl): Likewise.
7387         (new_omp_context): Likewise.
7388         (delete_omp_context): Likewise.
7389         * gimplify.c (splay-tree.h): Include.
7390         * tree-inline.c (insert_decl_map): Replace splay-tree usage by
7391         pointer-map.
7392         (remap_ssa_name): Likewise.
7393         (remap_decl): Likewise.
7394         (remap_type_1): Likewise.
7395         (remap_type): Likewise.
7396         (copy_body_r): Likewise.
7397         (expand_call_inline): Likewise.
7398         (clone_body): Likewise.
7399         (copy_tree_r): Likewise.
7400         (remap_save_expr): Likewise.
7401         (unsave_r): Likewise.
7402         (unsave_expr_now): Likewise.
7403         (tree_function_versioning): Likewise.
7404         (build_duplicate_type): Likewise.
7405         * tree-inline.h (pointer-set.h): Include instead of splay-tree.h.
7406         (struct copy_body_data): Replace splay-tree by pointer-map.
7407         * Makefile.in (TREE_INLINE_H): Depend on pointer-map.h,
7408         not $(SPLAY_TREE_H).
7409         (gimplify.o): Depend on $(SPLAY_TREE_H).
7410         (omp-low.p): Likewise.
7411
7412 2007-03-31  Anatoly Sokolov <aesok@post.ru>
7413
7414         * config/avr/predicates.md (even_register_operand,
7415         odd_register_operand): New predicates.
7416         * config/avr/avr.md (movw peephole2): New.
7417         (movw_r peephole2): New.
7418
7419 2007-03-30  Rafael Avila de Espindola  <espindola@google.com>
7420
7421         * tree.h (get_signed_or_unsigned_type): New.
7422         * fold-const.c (operand_equal_for_comparison_p): Use
7423         get_signed_or_unsigned_type instead of
7424         lang_hooks.types.signed_or_unsigned_type.
7425         * expr.c (store_expr): Ditto.
7426         * langhooks.c (get_signed_or_unsigned_type): New.
7427         (lhd_signed_or_unsigned_type): New.
7428         * langhooks.h (lhd_signed_or_unsigned_type): New.
7429         * langhooks-def.h (LANG_HOOKS_SIGNED_OR_UNSIGNED_TYPE): Define.
7430
7431 2007-03-30  Richard Henderson  <rth@redhat.com>
7432
7433         * tree-ssa-loop-ivopts.c: Include target.h.
7434         (produce_memory_decl_rtl): Pass the rtx through encode_section_info.
7435         (get_address_cost): Force SYMBOL_FLAG_LOCAL set.
7436         (force_expr_to_var_cost): Use produce_memory_decl_rtl.
7437         * Makefile.in (tree-ssa-loop-ivopts.o): Depend on TARGET_H.
7438
7439 2007-03-30  Richard Henderson  <rth@redhat.com>
7440             Kai Tietz  <kai.tietz@onevision.com>
7441
7442         * config/i386/cygming.h (DWARF2_DEBUGGING_INFO): Enable by
7443         default for 64-bit.
7444         (PREFERRED_DEBUGGING_TYPE): Prefer dwarf2 for 64-bit.
7445         (TARGET_64BIT_MS_ABI): New.
7446         (DBX_REGISTER_NUMBER): Handle 64-bit.
7447         (SIZE_TYPE, PTRDIFF_TYPE): Use long long for 64-bit.
7448         (LONG_TYPE_SIZE): Force to 32.
7449         (REG_PARM_STACK_SPACE): New.
7450         (OUTGOING_REG_PARM_STACK_SPACE): New.
7451         (REGPARM_MAX, SSE_REGPARM_MAX): New.
7452         (HANDLE_PRAGMA_PUSH_POP_MACRO): New.
7453         (STACK_BOUNDARY): Use 128 for 64-bit.
7454         * config/i386/cygwin.asm: Use push/ret to preserve call stack.
7455         Add 64-bit implementation.
7456         * config/i386/gthr-win32.c (__gthr_win32_key_create): Mark dtor
7457         argument unused.
7458         * config/i386/i386.c (x86_64_ms_abi_int_parameter_registers): New.
7459         (override_options): Set ix86_cmodel for TARGET_64BIT_MS_ABI.
7460         Warn for -mregparm, -mrtd in 64-bit mode; force ix86_regparm
7461         for 64-bit; use TARGET_SUBTARGET64_DEFAULT.
7462         (ix86_handle_cconv_attribute): Don't warn when ignoring if
7463         TARGET_64BIT_MS_ABI.
7464         (ix86_function_arg_regno_p): Handle TARGET_64BIT_MS_ABI.
7465         (ix86_pass_by_reference): Likewise.
7466         (ix86_function_value_regno_p): Likewise.
7467         (ix86_build_builtin_va_list): Likewise.
7468         (ix86_va_start, ix86_gimplify_va_arg): Likewise.
7469         (function_arg_advance_ms_64): New.
7470         (function_arg_advance): Call it.
7471         (function_arg_ms_64): New.
7472         (function_arg): Call it.
7473         (function_value_ms_64): New.
7474         (ix86_function_value_1): Call it.
7475         (return_in_memory_ms_64): New.
7476         (ix86_return_in_memory): Call it.
7477         (setup_incoming_varargs_ms_64): New.
7478         (ix86_setup_incoming_varargs): Call it.
7479         (ix86_expand_prologue): Handle 64-bit stack probing.
7480         (legitimize_pic_address): Handle TARGET_64BIT_MS_ABI.
7481         (output_pic_addr_const): Likewise.
7482         (x86_this_parameter): Likewise.
7483         (x86_output_mi_thunk): Likewise.
7484         (x86_function_profiler): Likewise.
7485         (TARGET_STRICT_ARGUMENT_NAMING): New.
7486         * config/i386/i386.h (TARGET_SUBTARGET64_DEFAULT): New.
7487         (TARGET_64BIT_MS_ABI): New.
7488         (CONDITIONAL_REGISTER_USAGE): Handle TARGET_64BIT_MS_ABI.
7489         * config/i386/i386.md (allocate_stack_worker): Remove.
7490         (allocate_stack_worker_32): Rename from allocate_stack_worker_1;
7491         describe the clobber of eax without a match_scratch.
7492         (allocate_stack_worker_postreload): Remove.
7493         (allocate_stack_worker_64): Rename from allocate_stack_worker_rex64;
7494         describe the clobbers of rax, r10, r11 properly; use __chkstk symbol.
7495         (allocate_stack_worker_rex64_postreload): Remove.
7496         (allocate_stack): Handle 64-bit.
7497         * config/i386/i386elf (TARGET_SUBTARGET_DEFAULT): Remove.
7498         * config/i386/mingw32.h (TARGET_VERSION): Set correctly for 64-bit.
7499         (EXTRA_OS_CPP_BUILTINS): Handle 64-bit.
7500         (STANDARD_INCLUDE_DIR): Handle TARGET_64BIT_DEFAULT.
7501         (STANDARD_STARTFILE_PREFIX_1): Likewise.
7502         * config/i386/unix.h (TARGET_SUBTARGET64_DEFAULT): New.
7503         * config.build (x86_64-*-mingw*): New host.
7504         * config.host (x86_64-*-mingw*): New host.
7505         * config.gcc (x86_64-*-mingw*): New target.
7506         * gthr-win32.h (__gthread_key_create): Mark dtor unused.
7507
7508 2007-03-30  Richard Henderson  <rth@redhat.com>
7509             Kai Tietz  <kai.tietz@onevision.com>
7510
7511         * c-pragma.c (struct def_pragma_macro_value): New.
7512         (struct def_pragma_macro): New.
7513         (pushed_macro_table): New.
7514         (dpm_hash, dpm_eq): New.
7515         (handle_pragma_push_macro, handle_pragma_pop_macro): New.
7516         (init_pragma): Install them.
7517         * doc/tm.texi (HANDLE_PRAGMA_PUSH_POP_MACRO): New.
7518
7519 2007-03-30  Anatoly Sokolov <aesok@post.ru>
7520
7521         * config/avr/avr.c (avr_override_options): Clear
7522         'flag_delete_null_pointer_checks'.
7523
7524 2007-03-30  Paolo Carlini  <pcarlini@suse.de>
7525
7526         PR c++/26099
7527         * c-common.h (enum rid): Add RID_HAS_NOTHROW_ASSIGN,
7528         RID_HAS_NOTHROW_CONSTRUCTOR, RID_HAS_NOTHROW_COPY,
7529         RID_HAS_TRIVIAL_ASSIGN, RID_HAS_TRIVIAL_CONSTRUCTOR,
7530         RID_HAS_TRIVIAL_COPY, RID_HAS_TRIVIAL_DESTRUCTOR,
7531         RID_HAS_VIRTUAL_DESTRUCTOR, RID_IS_ABSTRACT, RID_IS_BASE_OF,
7532         RID_IS_CONVERTIBLE_TO, RID_IS_CLASS, RID_IS_EMPTY, RID_IS_ENUM,
7533         RID_IS_POD, RID_IS_POLYMORPHIC, RID_IS_UNION, as
7534         C++ extensions.
7535         * doc/extend.texi (Extensions to the C++ Language): Add Type Traits.
7536
7537 2007-03-30  Steven Bosscher  <steven@gcc.gnu.org>
7538
7539         * regmove.c: Move all of pass_stack_adjustments from here...
7540         * combine-stack-adj.c: ...to this new file.
7541         * Makefile.in: Add rules for combine-stack-adj.o.
7542
7543 2007-03-30  Zdenek Dvorak  <dvorakz@suse.cz>
7544
7545         PR tree-optimization/31383
7546         * tree-data-ref.c (affine_function_equal_p): Do not require the vectors
7547         to have the same length.
7548
7549 2007-03-30  Jan Hubicka  <jh@suse.cz>
7550
7551         PR middle-end/30700
7552         * dwarf2out.c (reference_to_unused): Ask cgraph for functions
7553         availablility; add more sanity checking; ask varpool only about
7554         VAR_DECL.
7555
7556 2007-03-29  Richard Henderson  <rth@redhat.com>
7557
7558         * unwind-generic.h (_sleb128_t, _uleb128_t): Don't use HAVE_LONG_LONG
7559         to decide, but __SIZEOF_LONG_LONG__.
7560
7561 2007-03-29  Richard Henderson  <rth@redhat.com>
7562
7563         * emutls.c (struct __emutls_array): New.
7564         (emutls_destroy): Use it instead of casting element 0 from void*.
7565         (__emutls_get_address): Likewise.
7566
7567 2007-03-29  Richard Henderson  <rth@redhat.com>
7568
7569         * varasm.c (initializer_constant_valid_p): Don't deny
7570         DECL_DLLIMPORT_P on functions.
7571
7572         * config/i386/cygming.h: Remove function declarations.
7573         (SUBTARGET_ENCODE_SECTION_INFO): Don't undef first.
7574         (ASM_OUTPUT_LABELREF): Remove.
7575         (COMMON_ASM_OP): Remove.
7576         (ASM_OUTPUT_COMMON): Remove.
7577         (ASM_OUTPUT_ALIGNED_DECL_COMMON): New.
7578         (ASM_DECLARE_OBJECT_NAME): Use i386_pe_maybe_record_exported_symbol.
7579         (ASM_DECLARE_FUNCTION_NAME): Likewise.
7580         * config/i386/i386-interix.h (SUBTARGET_ENCODE_SECTION_INFO):
7581         Rename from TARGET_ENCODE_SECTION_INFO.
7582         * config/i386/netware.h: Likewise.
7583         * config/i386/i386-protos.h: Update.
7584         * config/i386/i386.c (ix86_function_ok_for_sibcall): Turn ifdef
7585         of TARGET_DLLIMPORT_DECL_ATTRIBUTES into straight if.
7586         (legitimate_constant_p): Reject dllimports.
7587         (dllimport_map, get_dllimport_decl): New.
7588         (legitimize_dllimport_symbol): New.
7589         (legitimize_address, ix86_expand_move): Use it.
7590         (TARGET_BINDS_LOCAL_P): Redefine for TARGET_DLLIMPORT_DECL_ATTRIBUTES.
7591         * config/i386/i386.h (DLL_IMPORT_EXPORT_PREFIX): Remove.
7592         (SYMBOL_FLAG_DLLIMPORT, SYMBOL_REF_DLLIMPORT_P): New.
7593         (SYMBOL_FLAG_DLLEXPORT, SYMBOL_REF_DLLEXPORT_P): New.
7594         * config/i386/predicates.md (constant_call_address_operand): Only
7595         accept symbols; reject dllimport_p symbols.
7596         * config/i386/uwin.h (ASM_DECLARE_FUNCTION_NAME): Use
7597         i386_pe_maybe_record_exported_symbol.
7598         * config/i386/winnt.c (DLL_IMPORT_PREFIX, DLL_EXPORT_PREFIX): Remove.
7599         (i386_pe_determine_dllexport_p): Rename from i386_pe_dllexport_p.
7600         (i386_pe_determine_dllimport_p): Rename from i386_pe_dllimport_p;
7601         trust the setting of DECL_DLLIMPORT_P.
7602         (i386_pe_dllexport_name_p, i386_pe_dllimport_name_p): Remove.
7603         (i386_pe_mark_dllexport, i386_pe_mark_dllimport): Remove.
7604         (gen_stdcall_or_fastcall_suffix): Return NULL if no change required;
7605         tidy the argument scanning loop.
7606         (i386_pe_encode_section_info): Set SYMBOL_FLAG_DLLIMPORT and
7607         SYMBOL_FLAG_DLLEXPORT in SYMBOL_REF_FLAGS.
7608         (i386_pe_strip_name_encoding): Remove.
7609         (i386_pe_binds_local_p): New.
7610         (i386_pe_strip_name_encoding_full): Use default_strip_name_encoding.
7611         (i386_pe_output_labelref): Remove.
7612         (i386_pe_asm_output_aligned_decl_common): New.
7613         (i386_pe_maybe_record_exported_symbol): Rename from
7614         i386_pe_record_exported_symbol; check for dllexported symbols.
7615
7616 2007-03-29  Zack Weinberg  <zack@mrtock.ucsd.edu>
7617
7618         * gengtype.c (oprintf): Mostly revert changes from 2007-03-26;
7619         add comment explaining why vsnprintf cannot be used.
7620
7621 2007-03-29  Douglas Gregor  <doug.gregor@gmail.com>
7622
7623         PR tree-optimization/30666
7624         * tree.c (build_complex_type): When creating type names for DWARF2
7625         debug info, create TYPE_DECLs for TYPE_NAME instead of
7626         IDENTIFIER_NODEs.
7627         (build_common_tree_nodes_2): Use build_complex_type when building
7628         predefined complex types, to preserve canonical types.
7629
7630 2007-03-29  Steven Bosscher  <steven@gcc.gnu.org>
7631
7632         * ifcvt.c (struct noce_if_info): Add then_else_reversed field.
7633         (noce_get_alt_condition): Look at it to determine whether to
7634         reverse the condition or not.
7635         (noce_get_condition): Substitute the truth for lies.
7636         (noce_find_if_block): Set the then_else_reversed field.
7637
7638 2007-03-29  Lars Poeschel <larsi@wh2.tu-dresden.de>
7639
7640         * config/fr30/fr30.md (movdi): Do not accept immediates as the
7641         destination of this insn.
7642         * config/fr30/fr30.c (fr30_move_double): Use emit_move_insn rather
7643         than calling gen_rtx_SET directly.  Use r0 to hold the value of
7644         'address + 4' rather than a stack based temporary which can be
7645         mis-optimized away.
7646
7647 2007-03-29  Andreas Krebbel  <krebbel1@de.ibm.com>
7648
7649         * config/s390/s390.c (s390_secondary_input_reload_class,
7650         s390_secondary_output_reload_class): Functions removed.
7651         (s390_secondary_reload): New function.
7652         (TARGET_SECONDARY_RELOAD): Target macro defined.
7653         * config/s390/s390.h (SECONDARY_INPUT_RELOAD_CLASS,
7654         SECONDARY_OUTPUT_RELOAD_CLASS): Macro definitions removed.
7655         * config/s390/s390.md ("reload_outti", "reload_outdi",
7656         "reload_indi", "reload_insi", "reload_out<mode>", "reload_in<mode>",
7657         "reload_out<mode>"): Expanders removed.
7658         ("reload<mode>_plus", "reload<mode>_nonoffmem_in",
7659         "reload<mode>_nonoffmem_out"): Expanders added.
7660
7661 2007-03-29  Andreas Krebbel  <krebbel1@de.ibm.com>
7662
7663         * regmove.c (optimize_reg_copy_1): Don't perform DEST->SRC repair action if
7664         SRC->DEST replacement failed anyway.
7665
7666 2007-03-28  Mike Stump  <mrs@apple.com>
7667
7668         * config/darwin9.h (ASM_OUTPUT_ALIGNED_COMMON): Add.
7669         * config/darwin.h (MAX_OFILE_ALIGNMENT): Fix.
7670         * config/rs6000/darwin.h (ASM_OUTPUT_ALIGNED_COMMON): Removed #undef.
7671
7672 2007-03-28  Dwarakanath Rajagopal  <dwarak.rajagopal@amd.com>
7673
7674         * config.gcc: Accept barcelona as a variant of amdfam10.
7675         * config/i386/i386.c (override_options): Likewise.
7676         * doc/invoke.texi: Likewise.
7677
7678 2007-03-28  Eric Botcazou  <ebotcazou@adacore.com>
7679
7680         * tree-dfa.c (get_ref_base_and_extent): Do not expect positive
7681         offsets for BIT_FIELD_REF and COMPONENT_REF.
7682
7683 2007-03-28  Richard Guenther  <rguenther@suse.de>
7684
7685         * tree.c (is_global_var): Move ...
7686         * tree-flow-inline.h (is_global_var): ... here.
7687         * tree.h (is_global_var): Remove declaration.
7688
7689 2007-03-28  Uros Bizjak  <ubizjak@gmail.com>
7690
7691         * config/i386/i386.h (X86_TUNE_PROMOTE_HIMODE_IMUL): New tuning
7692         option.
7693         (TARGET_TUNE_PROMOTE_HIMODE_IMUL): New define. Use new tuning option.
7694         * config/i386/i386.c (ix86_tune_features): Initialize new
7695         tuning option.
7696         * config/i386/predicates.md (promotable_binary_operator): Use
7697         TARGET_TUNE_PROMOTE_HIMODE_IMUL.
7698
7699 2007-03-28  Grigory Zagorodnev <grigory_zagorodnev@linux.intel.com>
7700
7701         PR target/31380
7702         * config/i386/sse.md (uminv16qi3): Use UMIN instead of UMAX.
7703
7704 2007-03-28  Lars Poeschel <larsi@wh2.tu-dresden.de>
7705
7706         * config/fr30/fr30.md (movsi_internal): Change destination
7707         constraint from m to V and add m to the end.
7708
7709 2007-03-28  Christian Bruel  <christian.bruel@st.com>
7710
7711         * config/sh/sh.md (movsi_i): Fix type attribute.
7712
7713 2007-03-28  Christian Bruel  <christian.bruel@st.com>
7714
7715         * config/sh/sh.md (movsi_ie): Fix memory constraints attribute length.
7716         (movsf_ie): Likewise.
7717
7718 2007-03-28  Christian Bruel  <christian.bruel@st.com>
7719
7720         * config.gcc: Add sh4-300 to multilib.
7721         * config/sh/t-mlib-sh4-300: New file.
7722
7723 2007-03-28  Andreas Krebbel  <krebbel1@de.ibm.com>
7724
7725         * config/s390/s390.md ("fix_trunc<mode>di2"): New expander.
7726         ("fix_trunc<DFP:mode>di2_dfp"): New insn definition renamed from
7727         fix_trunc<mode>di2.
7728         ("fixuns_truncdddi2", "fixuns_trunctddi2"): Use
7729         fix_trunc<DFP:mode>di2_dfp instead of fix_trunc<mode>di2.
7730         ("fix_truncdfsi2", "fix_truncsfsi2", "fixuns_truncdddi2",
7731         "fixuns_trunctddi2"): Whitespace fix.
7732
7733 2007-03-28  Kaz Kojima  <kkojima@gcc.gnu.org>
7734
7735         * config/sh/sh.h (CALL_COOKIE_RET_TRAMP_SHIFT): Move after
7736         the definition of struct sh_args.
7737         (CALL_COOKIE_RET_TRAMP, CALL_COOKIE_STACKSEQ_SHIFT,
7738         CALL_COOKIE_INT_REG_GET): Likewise.
7739
7740 2007-03-28  Steven Bosscher  <steven@gcc.gnu.org>
7741
7742         * ifcvt.c (cond_exec_find_if_block): Return FALSE if no
7743         transformations are applied successfully.
7744
7745 2007-03-27  Douglas Gregor  <doug.gregor@gmail.com>
7746
7747         * tree.c (tree_contains_struct): Permit 512 tree codes.
7748         * tree.h (tree_contains_struct): Ditto.
7749         (MAX_TREE_CODES): Ditto.
7750         (struct tree_base): Make CODE 16 bits, instead of 8 bits. Add
7751         SPARE member to store remaining padding bits.
7752
7753 2007-03-27  Anatoly Sokolov <aesok@post.ru>
7754
7755         * config/avr/avr.c (avr_mcu_types): Move at90usb82 device to 'avr4'
7756         architecture.
7757
7758 2007-03-27  Janis Johnson  <janis187@us.ibm.com>
7759
7760         * configure.ac: Fix assembler test for powerpc*-linux decimal float.
7761         * configure: Regenerate.
7762
7763         * configure: Regenerate using the correct version of autoconf.
7764
7765 2007-03-27  Anatoly Sokolov  <aesok@post.ru>
7766
7767         * config/avr/avr.c (avr_hard_regno_mode_ok): Disallow QImode in stack
7768         pointer regs.
7769         * config/avr/avr.h (REGISTER_NAMES): Rename "__SPL__" and "__SPH__"
7770         regs to "__SP_L__" and "__SP_H__".
7771
7772 2007-03-27  Richard Guenther  <rguenther@suse.de>
7773
7774         * tree-dfa.c (get_ref_base_and_extent): Replace bit_offset and
7775         computations with it with a HOST_WIDE_INT variable.
7776
7777 2007-03-26  Mike Stump  <mrs@apple.com>
7778
7779         * config/rs6000/darwin.h (DARWIN_MINVERSION_SPEC): Add
7780         objective-c-header, objective-c++-header and objc++-cpp-output
7781         support.
7782         * config/i386/darwin.h (DARWIN_MINVERSION_SPEC): Likewise.
7783
7784 2007-03-26  Richard Henderson  <rth@redhat.com>
7785
7786         PR target/31361
7787         * config/i386/i386.c (IX86_BUILTIN_PSLLDQ128, IX86_BUILTIN_PSLLW128,
7788         IX86_BUILTIN_PSLLD128, IX86_BUILTIN_PSLLQ128, IX86_BUILTIN_PSRAW128,
7789         IX86_BUILTIN_PSRAD128, IX86_BUILTIN_PSRLW128, IX86_BUILTIN_PSRLD128,
7790         IX86_BUILTIN_PSRLQ128): New.
7791         (ix86_init_mmx_sse_builtins): Add them.
7792         (ix86_expand_builtin): Expand them.
7793         * config/i386/sse.md (ashr<mode>3, lshr<mode>3, ashl<mode>3): Make
7794         operand 2 be TImode.
7795         * config/i386/emmintrin.h (_mm_slli_epi64, _mm_srai_epi16,
7796         _mm_srai_epi32, _mm_srli_epi16, _mm_srli_epi32,
7797         _mm_srli_epi64): Mark __B const.
7798         (_mm_srli_si128, _mm_srli_si128): Fix disabled inline versions.
7799         (_mm_sll_epi16, _mm_sll_epi32, _mm_sll_epi64, _mm_sra_epi16,
7800         _mm_sra_epi32, _mm_srl_epi16, _mm_srl_epi32, _mm_srl_epi64): Use
7801         new two-vector shift builtins.
7802
7803 2007-03-26  Ian Lance Taylor  <iant@google.com>
7804
7805         PR tree-optimization/31345
7806         * tree-vrp.c (extract_range_from_binary_expr): Turn ranges like
7807         [+INF, +INF(OVF)] into VARYING.
7808
7809 2007-03-26  Zack Weinberg  <zackw@panix.com>
7810
7811         * gengtype-parse.c: New file.
7812         * gengtype-yacc.y: Delete.
7813         * gengtype-lex.l: Don't include gengtype-yacc.h.
7814         Define YY_DECL and yyterminate appropriately for recursive
7815         descent parser.  yylval is now a string out-parameter to yylex.
7816         (HWS, EOID): New shorthand.
7817         (IWORD): Add a couple more types.
7818         (yylex): Add a setup stanza.  Remove the complex rules for
7819         detecting GTY'ed types and typedefs; replace with simple
7820         keyword detectors.  Adjust everything for the changed
7821         definition of yylval.  Ignore all pp-directives, not just #define.
7822         (yyerror): Delete.
7823         (parse_file): Rename yybegin; do not call yyparse.
7824         (yyend): New.
7825         * gengtype.c (xasprintf): Export again.
7826         (this_file): New.  Use everywhere __FILE__ was being used.
7827         (get_lang_bitmap): Special case types defined in gengtype.c.
7828         (do_typedef, new_structure): Suppress definition of certain types.
7829         (new_structure): Improve diagnostics of duplicate definitions.
7830         Make sure location_s is associated with input.h.
7831         (nreverse_pairs, define_location_structures): New functions.
7832         (main): Improve tagging of kludge types.  Remove old kludges
7833         for input.h types; use define_location_structures.
7834         * gengtype.h: Update prototypes.  Define token codes here.
7835         * Makefile.in: Remove all references to gengtype-yacc.
7836         Add rules for gengtype-parse.o.  Adjust rules for gengtype-lex.o
7837         and gengtype.
7838         * bitmap.h (struct bitmap_head_def): Coalesce definitions,
7839         add GTY((skip)) to the field that's only conditionally there.
7840         * doc/install.texi: Document that Bison is no longer required
7841         unless building treelang.
7842
7843         * gengtype.c: Don't include gtyp-gen.h.
7844         (srcdir): Declare here.
7845         (base_files, lang_dir_names): Allocate dynamically.
7846         (gt_files, num_gt_files, num_lang_dirs): New globals.
7847         (measure_input_list, read_input_line, read_input_list)
7848         (set_lang_bitmap): New functions.
7849         (get_base_file_bitmap): Rename get_lang_bitmap and drastically
7850         simplify, relying on read_input_list to set up the bitmaps.
7851         (main): Arguments are no longer unused.  Check for correct number
7852         of command line arguments, set srcdir and srcdir_len, then call
7853         read_input_list, before doing anything else.  No need to worry
7854         about duplicates in main loop.
7855         * configure.ac: Simplify the calculation of all_gtfiles.
7856         Put language tags in there.  Don't set or substitute
7857         all_gtfiles_files_langs or all_gtfiles_files_frags.
7858         * Makefile.in: Revamp the way gengtype is invoked, now that it
7859         takes a file on its command line with a much simpler format.
7860         Remove or replace with gtyp-input.list all references to gtyp-gen.h.
7861         (GTFILES): Remove duplicates and C source files.
7862         * c-config-lang.in, cp/config-lang.in, objc/config-lang.in
7863         * objcp/config-lang.in: Add c-pragma.h to gtfiles.
7864         * configure: Regenerate.
7865
7866         * gengtype.h: Remove all type definitions to gengtype.c; leave
7867         only definitions of options_p, type_p, and pair_p as opaque
7868         pointers.  Update prototypes.
7869         * gengtype.c: Many type definitions moved here from gengtype.h.
7870         Consolidate type definitions at the top of the file.
7871         (xvasprintf): Delete.
7872         (xasprintf): Make static.
7873         (create_nested_pointer_option): Add 'next' parameter.
7874         (create_field_all, create_field_at): New functions.
7875         (create_field): Now a thin wrapper around create_field_all.
7876         (create_optional_field): Rename create_optional_field_ and add
7877         line argument.  Original name is now a macro which supplies
7878         __LINE__.
7879         (oprintf): Use vsnprintf directly.
7880         (close_output_files): Use fatal rather than perror/exit.
7881         (note_def_vec, note_def_vec_alloc): Use create_field_at.
7882         (main): Set progname.  Don't use exit.
7883         * gengtype-yacc.y (struct_fields): Use create_field_at.
7884         (option, optionseqopt): Delete.
7885         (optionseq): Consolidate productions from option here so we
7886         can use the first argument to create_option.
7887
7888         * gengtype-lex.l: Distinguish unions from structures in the
7889         token type.  Don't call find_structure; return the tag as a string.
7890         * gengtype-yacc.y: Add new token types ENT_TYPEDEF_UNION and ENT_UNION.
7891         Type of these, ENT_TYPEDEF_STRUCT, and ENT_STRUCT is string.
7892         Reorganize typedef_struct production accordingly.
7893         Use create_nested_ptr_option.
7894         * gengtype.c (create_nested_ptr_option): New function.
7895         * gengtype.h: Declare it.
7896
7897         * gengtype.h (struct type): Replace 'sc' with boolean, scalar_is_char.
7898         (string_type): Don't declare.
7899         (do_scalar_typedef): Declare.
7900         (create_scalar_type): Update prototype.
7901         * gengtype.c (string_type): Make static.
7902         (scalar_nonchar, scalar_char): New.
7903         (do_scalar_typedef): Export.  Always use scalar_nonchar for the type.
7904         (resolve_typedef): Use scalar_nonchar for error recovery.
7905         (create_scalar_type): Remove name_len field.  Return scalar_char
7906         or scalar_nonchar as appropriate.
7907         (adjust_field_type): Look at scalar_is_char boolean to decide whether
7908         to use string_type.
7909         (throughout): Use scalar_nonchar instead of calling create_scalar_type,
7910         whenever possible.
7911         (main): Initialize scalar_char and scalar_nonchar before calling
7912         gen_rtx_next.
7913         * gengtype-lex.l: Adjust for removal of second argument to
7914         create_scalar_type.  Use yylval.s instead of yylval.t when
7915         returning SCALAR.
7916         * gengtype-yacc.y: Type of SCALAR is string.  Call
7917         create_scalar_type from type:SCALAR rule.  Adjust for removal of
7918         second argument to create_scalar_type.
7919
7920         * vec.h: Remove all #if IN_GENGTYPE blocks.
7921         Add comment saying that changes may require adjustments to gengtype.
7922         * gengtype.c: Don't include coretypes.h or tm.h.
7923         Add comment to inclusion of errors.h.
7924         (note_def_vec, note_def_vec_alloc): New functions.
7925         * gengtype.h: Declare new functions.
7926         * gengtype-lex.l: Don't include coretypes.h.
7927         (YY_INPUT, macro_input, push_macro_expansion, mangle_macro_name):
7928         Delete.
7929         (update_lineno): Remove unnecessary prototype.
7930         (DEF_VEC_* rules): Simplify using note_def_vec / note_def_vec_alloc.
7931         (VEC rule): Just return VEC_TOKEN.
7932         * gengtype-yacc.y (VEC_TOKEN): New token type.
7933         (type): Add a production for VEC(a,b).
7934         * Makefile.in: Update dependencies.
7935
7936         * gengtype-lex.l: Remove rules for parsing pointer-to-function
7937         typedefs that use the old PARAMS macro.
7938
7939         * gengtype-lex.l: Remove all rules and states relating to yacc
7940         input files.
7941         * gengtype-yacc.y: Similarly.
7942         * gengtype.c (note_yacc_type): Delete function.
7943         * gengtype.h: Update prototypes.
7944
7945 2007-03-26  Joseph Myers  <joseph@codesourcery.com>
7946
7947         * tree-pretty-print.c (dump_generic_node): Report precision of
7948         unnamed integer types.
7949
7950 2007-03-26  Steven Bosscher  <steven@gcc.gnu.org>
7951
7952         * ifcvt.c (noce_try_store_flag_constants): Don't check
7953         no_new_pseudos here.
7954         (noce_try_store_flag_constants): Don't check no_new_pseudos.
7955         (noce_try_addcc, noce_try_store_flag_mask, noce_try_cmove_arith,
7956         noce_try_cmove_arith, noce_try_minmax, noce_try_abs,
7957         noce_try_sign_mask): Likewise.
7958         (if_convert): Check no_new_pseudos here.
7959
7960         (cond_exec_process_if_block, noce_process_if_block, find_if_block):
7961         Remove prototypes.
7962         (struct noce_if_info): Add then_bb, else_bb, join_bb members.
7963         (noce_get_condition): Handle new then_else_reversed argument.
7964         (noce_init_if_info): Remove, fold into noce_find_if_block.
7965         (noce_process_if_block): Take a struct noce_if_info as the
7966         argument.  Don't set up one based on ce_if_info.  Update pointer
7967         references accordingly.
7968         (cond_move_process_if_block): Likewise.
7969         (process_if_block): Removed.
7970         (find_if_block): Removed.  Move functionality two new functions,
7971         noce_find_if_block and cond_exec_find_if_block.
7972         (noce_find_if_block): New function.  Be aware of IF-THEN-JOIN
7973         blocks and the symmetric IF-ELSE-JOIN case.
7974         (cond_exec_find_if_block): Also new function mostly based on old
7975         find_if_block and process_if_block.
7976         (find_if_header): Replace find_if_block call with separately
7977         guarded calls to noce_find_if_block and cond_exec_find_if_block.
7978         (find_cond_trap): Update noce_get_condition call.
7979         (dead_or_predicable): Likewise.
7980
7981 2007-03-26  Jakub Jelinek  <jakub@redhat.com>
7982
7983         * config/i386/i386.c (IX86_BUILTIN_CMPNEPD, IX86_BUILTIN_CMPNESD):
7984         Remove.
7985         (IX86_BUILTIN_PSLLW128, IX86_BUILTIN_PSLLD128, IX86_BUILTIN_PSLLQ128,
7986         IX86_BUILTIN_PSRAW128, IX86_BUILTIN_PSRAD128, IX86_BUILTIN_PSRLW128,
7987         IX86_BUILTIN_PSRLD128, IX86_BUILTIN_PSRLQ128): Remove.
7988         (ix86_init_mmx_sse_builtins): Remove v8hi_ftype_v8hi_v2di and
7989         v4si_ftype_v4si_v2di.  Remove __builtin_ia32_psllw128,
7990         __builtin_ia32_pslld128, __builtin_ia32_psllq128,
7991         __builtin_ia32_psrlw128, __builtin_ia32_psrld128,
7992         __builtin_ia32_psrlq128, __builtin_ia32_psraw128 and
7993         __builtin_ia32_psrad128 builtins.
7994
7995 2007-03-26  Uros Bizjak  <ubizjak@gmail.com>
7996
7997         * reg-stack.c (replace_reg): Use IN_RANGE macro in gcc_assert().
7998         * config/i386/constraints.md
7999         (define_constraint "I"): Use IN_RANGE macro.
8000         (define_constraint "J"): Ditto.
8001         (define_constraint "K"): Ditto.
8002         (define_constraint "M"): Ditto.
8003         (define_constraint "N"): Ditto.
8004         (define_constraint "O"): Ditto.
8005         * config/i386/predicates.md
8006         (define_predicate "register_no_elim_operand"): Use IN_RANGE macro.
8007         (define_predicate "const_0_to_3_operand"): Ditto.
8008         (define_predicate "const_0_to_7_operand"): Ditto.
8009         (define_predicate "const_0_to_15_operand"): Ditto.
8010         (define_predicate "const_0_to_63_operand"): Ditto.
8011         (define_predicate "const_0_to_255_operand"): Ditto.
8012         (define_predicate "const_1_to_31_operand"): Ditto.
8013         (define_predicate "const_2_to_3_operand"): Ditto.
8014         (define_predicate "const_4_to_7_operand"): Ditto.
8015
8016 2007-03-25  David Edelsohn  <edelsohn@gnu.org>
8017
8018         * config/rs6000/rs6000.c (rs6000_emit_prologue): Always clobber LR
8019         in SImode for save_world.
8020         * config/rs6000/altivec.md (save_world, restore_world): Convert to
8021         LR hard reg.
8022
8023 2007-03-25  Dorit Nuzman  <dorit@il.ibm.com>
8024
8025         PR tree-optimization/30784
8026         * fold-const.c (fold_ternary): Handle CONSTRUCTOR in case
8027         BIT_FIELD_REF.
8028
8029 2007-03-25  Revital Eres  <eres@il.ibm.com>
8030
8031         * tree-if-conv.c (if_convertible_gimple_modify_stmt_p):
8032           Fold movement_possibility function into it.
8033
8034 2007-03-25  David Edelsohn  <edelsohn@gnu.org>
8035
8036         * config/rs6000/darwin.md (load_macho_picbase): Ignore operand 0.
8037         (load_macho_picbase_{si,di}): Convert to LR hard reg.
8038         (call_indirect_nonlocal_darwin64): Same.
8039         (call_nonlocal_darwin64): Same.
8040         (call_value_indirect_nonlocal_darwin64): Same.
8041         (call_value_nonlocal_darwin64): Same.
8042         (sibcall_nonlocal_darwin64): Same.
8043         (sibcall_value_nonlocal_darwin64): Same.
8044         (sibcall_symbolic_64): Same.
8045         (sibcall_value_symbolic_64): Same.
8046         * config/rs6000/rs6000.c (rs6000_legitimize_tls_address): Remove
8047         LR pseudo.
8048         (rs6000_emit_load_toc_table): Same.
8049         * config/rs6000/altivec.md (restore_world): Convert to LR hard reg.
8050         * config/rs6000/rs6000.md (mulh_call): Convert to LR hard reg.
8051         (mull_call): Same.
8052         (divss_call): Same.
8053         (divus_call): Same.
8054         (quoss_call): Same.
8055         (quous_call): Same.
8056         (load_toc_v4_pic_si): Same
8057         (load_toc_v4_PIC_1): Same.
8058         (load_toc_v4_PIC_1b): Same.
8059         (call_indirect_aix{32,64}): Same.
8060         (call_value_indirect_aix{32,64}): Same.
8061         (call): Same.
8062         (call_value): Same.
8063         (call_local{32,64}): Same.
8064         (call_value_local{32,64}): Same.
8065         (call_indirect_nonlocal_aix{32,64}): Same.
8066         (call_nonlocal_aix{32,64}): Same.
8067         (call_value_indirect_nonlocal_aix{32,64}): Same.
8068         (call_value_nonlocal_aix{32,64}): Same.
8069         (call_indirect_nonlocal_sysv<mode>): Same.
8070         (call_nonlocal_sysv<mode>): Same.
8071         (call_value_indirect_nonlocal_sysv<mode>): Same.
8072         (call_value_nonlocal_sysv<mode>): Same.
8073         (sibcall): Same.
8074         (sibcall_local{32,64}): Same.
8075         (sibcall_value_local{32,64}): Same.
8076         (sibcall_nonlocal_aix{32,64}): Same.
8077         (sibcall_value_nonlocal_aix{32,64}): Same.
8078         (sibcall_nonlocal_sysv<mode>): Same.
8079         (sibcall_value): Same.
8080         (sibcall_value_nonlocal_sysv<mode>): Same.
8081
8082 2007-03-24  Paul Brook  <paul@codesourcery.com>
8083
8084         * config/arm/lib1funcs.asm (div0): Use ARM_FUNC_START and do_push.
8085         * config/arm/linux-eabi.h: Remove legacy syscall hack.
8086
8087 2007-03-24  Richard Henderson  <rth@redhat.com>
8088
8089         * config/ia64/constraints.md: New file.
8090         * config/ia64/predicates.md: Replace CONST_OK_FOR_? with
8091         satisfies_constraint_?.
8092         * config/ia64/ia64.c (ia64_move_ok, ia64_legitimate_constant_p,
8093         ia64_reload_gp, spill_restore_mem, ia64_expand_prologue,
8094         ia64_expand_epilogue, ia64_split_return_addr_rtx, ia64_rtx_costs,
8095         ia64_output_mi_thunk): Likewise.
8096         (ia64_const_ok_for_letter_p): Remove.
8097         (ia64_const_double_ok_for_letter_p): Remove.
8098         (ia64_extra_constraint): Remove.
8099         * config/ia64/ia64.h (REG_CLASS_FROM_LETTER): Remove.
8100         (CONST_OK_FOR_I, CONST_OK_FOR_J, CONST_OK_FOR_K, CONST_OK_FOR_L,
8101         CONST_OK_FOR_M, CONST_OK_FOR_N, CONST_OK_FOR_O, CONST_OK_FOR_P,
8102         CONST_OK_FOR_LETTER_P, CONST_DOUBLE_OK_FOR_G,
8103         CONST_DOUBLE_OK_FOR_LETTER_P, EXTRA_CONSTRAINT,
8104         EXTRA_MEMORY_CONSTRAINT): Remove.
8105         * config/ia64/ia64.md: Include constriants.md.  Replace
8106         CONST_OK_FOR_? with satisfies_constraint_?.
8107
8108 2007-03-23  Michael Meissner  <michael.meissner@amd.com>
8109             H.J. Lu  <hongjiu.lu@intel.com>
8110
8111         * config/dfp-bit.h (DPD_BID_NAME): New macro to give either the
8112         DPD or BID name.
8113         (name macros): Use DPD_BID_NAME to convert names properly.
8114
8115         * optabs.c (DECIMAL_PREFIX): Prefix string to use for the current
8116         decimal floating point format.
8117         (init_floating_libfuncs): Change decimal functions so that they
8118         have a "bid_" prefix if the decimal system uses the BID format,
8119         and "dpd_" prefix if the decimal system uses the DPD format.
8120         (init_interclass_conv_libfuncs): Ditto.
8121         (init_intraclass_conv_libfuncs): Ditto.
8122
8123         * config.in (ENABLE_DECIMAL_BID_FORMAT): New macro to say we are
8124         using the BID format.
8125
8126         * configure.ac (ENABLE_DECIMAL_BID_FORMAT): Set to 1/0 to say
8127         whether we are using the BID decimal format.
8128         * configure: Regenerate.
8129
8130         * c-cppbuiltin.c (c_cpp_builtins): Define __STDC_WANT_DEC_FP__ if
8131         the compiler has decimal floating point enabled.  Define
8132         __DECIMAL_BID_FORMAT__ if BID decimal floating point is used
8133         instead of DPD.
8134
8135         * config.in (ENABLE_DECIMAL_BID_FORMAT): New macro to say we are
8136         using the BID format.
8137
8138         * configure.ac (ENABLE_DECIMAL_BID_FORMAT): Set to 1/0 to say
8139         whether we are using the BID decimal format.
8140         * configure: Regenerate.
8141
8142         * c-cppbuiltin.c (c_cpp_builtins): Define __STDC_WANT_DEC_FP__ if
8143         the compiler has decimal floating point enabled.  Define
8144         __DECIMAL_BID_FORMAT__ if BID decimal floating point is used
8145         instead of DPD.
8146
8147         * doc/install.texi (--enable-decimal-float): Document BID and DPD
8148         options, and that it is enabled for i386/x86_64 systems.
8149
8150         * Makefile.in (enable_decimal_float): New.
8151         (DECNUMFMT): New.
8152         (DECNUMINC): Add  -I$(DECNUMFMT).
8153         (DECNUM_H): Mov decimal32.h, decimal64.h and decimal128.h
8154         to $(DECNUMFMT) from $(DECNUM).
8155
8156         * configure.ac: Support * --enable-decimal-float={no,yes,bid,dpd}.
8157         Substitute enable_decimal_float.
8158         * configure: Regenerated.
8159
8160         PR other/30529
8161         * config/dfp-bit.c (__dec_byte_swap): Use uint32_t instead of
8162         unsigned long.
8163
8164         * configure.ac: Enable decimal float for x86_64-*-linux*.
8165         * configure: Regenerated.
8166
8167         PR other/30530
8168         * dfp.c (decimal_real_arithmetic): Use decimal128FlipSign and
8169         decimal128ClearSign to flip and clear the sign bit in decimal128.
8170         (decimal_real_maxval): Set decimal128SetSign to set the sign
8171         bit in decimal128.
8172
8173 2007-03-23  Ian Lance Taylor  <iant@google.com>
8174
8175         * fold-const.c (fold_binary): Correct warning for X - c >= X.
8176
8177 2007-03-23  Ian Lance Taylor  <iant@google.com>
8178
8179         * tree-dump.c (dump_files): Correct comment.
8180
8181 2007-03-23  Ian Lance Taylor  <iant@google.com>
8182
8183         * tree-vrp.c (operand_less_p): Ignore fold overflow warnings.
8184
8185 2007-03-23  Steven Bosscher  <steven@gcc.gnu.org>
8186
8187         * tracer.c (tracer): Don't take FLAGS argument.  Assert we are
8188         in cfglayout mode.  Don't go into and out of cfglayout mode.
8189         Link the blocks in the order of the constructed traces.
8190         (rest_of_handle_tracer): Adjust call to tracer.
8191         * loop-init.c (rtl_loop_init): Assert we are in cfglayout mode.
8192         Don't go into cfglayout mode.
8193         (rtl_loop_done): Don't go out of cfglayout mode.
8194         * cfglayout.c (relink_block_chain): New function, split out from...
8195         (fixup_reorder_chain): ...here.  Remove redundant checking.
8196         (cfg_layout_finalize): Don't clear the header, footer, and aux
8197         fields here, move the code to do so to relink_block_chain.  Likewise
8198         for free_original_copy_tables.
8199         * rtl.h (tracer): Update prototype.
8200         * bb-reorder.c (reorder_basic_blocks): Don't take FLAGS argument.
8201         Assert we are in cfglayout mode.  Don't go into and out of cfglayout
8202         mode.  Use relink_block_chain to serialize the CFG according to the
8203         new basic block order.  Move targetm.cannot_modify_jumps_p check from
8204         here...
8205         (gate_handle_reorder_blocks): ...to here.
8206         (duplicate_computed_gotos): Move targetm.cannot_modify_jumps_p check
8207         from here...
8208         (gate_duplicate_computed_gotos): ...to here.
8209         (rest_of_handle_reorder_blocks): Don't see if anything has changed,
8210         something always changes when going into and out of cfglayout mode.
8211         Perform an expensive cfg cleanup while going into cfglayout mode.
8212         Always update liveness information on HAVE_conditional_execution
8213         targets.  Reserialize the basic blocks and go out of cfglayout mode.
8214         * reg-stack.c: Include cfglayout.h.
8215         (rest_of_handle_stack_regs): Go into and out of cfglayout mode around
8216         the call to reorder_basic_blocks.
8217         * basic-block.h (reorder_basic_blocks): Update prototype.
8218         (relink_block_chain): New prototype.
8219         * passes.c (pass_outof_cfg_layout_mode): Move after cse2.
8220
8221 2007-03-23  Joseph Myers  <joseph@codesourcery.com>
8222
8223         * config/mips/mips.md (type, hazard, *movdi_32bit,
8224         *movdi_gp32_fp64, *movdi_64bit, *movsi_internal, movcc,
8225         *movhi_internal, *movqi_internal, *movsf_hardfloat,
8226         *movdf_hardfloat_64bit, *movdf_hardfloat_32bit, *movdf_softfloat,
8227         movv2sf_hardfloat_64bit, load_df_low, load_df_high, store_df_high,
8228         mthc1, mfhc1): Change xfer instruction type to mfc and mtc, as
8229         applicable.
8230         (movcc): Change first xfer to multi.
8231         * config/mips/24k.md, config/mips/4100.md, config/mips/4300.md,
8232         config/mips/5000.md, config/mips/5400.md, config/mips/5500.md,
8233         config/mips/5k.md, config/mips/7000.md, config/mips/9000.md,
8234         config/mips/generic.md: Change reservations using "xfer" to use
8235         "mfc,mtc".
8236         * config/mips/sb1.md (ir_sb1_mtxfer): Use "mtc" instead of
8237         using match_operand.
8238         (ir_sb1_mfxfer): Use "mfc" instead of using match_operand.
8239         * config/mips/sr71k.md (ir_sr70_xfer_from): Use "mfc" instead of
8240         examining mode.
8241         (ir_sr70_xfer_to): Use "mtc" instead of examining mode.
8242
8243 2007-03-22  Richard Henderson  <rth@redhat.com>
8244
8245         * config/i386/i386.c: Remove unnecessary function declarations.
8246         Move targetm definition, and all related macros, to the end of
8247         the file.  Resort some functions to put definitions before uses.
8248         (ix86_attribute_table): Make static.  Move to end of file.
8249         (ix86_gimplify_va_arg): Make static.
8250
8251 2007-03-22  Richard Henderson  <rth@redhat.com>
8252
8253         * config/i386/i386.c (ix86_function_regparm): Early exit for 64-bit;
8254         don't increase local_regparm with force_align_arg_pointer check.
8255         (ix86_function_sseregparm): Assert 32-bit.
8256         (type_has_variadic_args_p): New.
8257         (ix86_return_pops_args): Early exit for 64-bit.  Reindent; use
8258         type_has_variadic_args_p.
8259         (ix86_function_arg_regno_p): Use == 0 instead of ! test for eax.
8260         (init_cumulative_args): Remove TARGET_DEBUG_ARG.  Remove zero_cum;
8261         use memset instead.  Do maybe_vaarg check first; skip attribute
8262         tests if true; skip attribute tests for 64-bit.
8263         (construct_container): Remove TARGET_DEBUG_ARG.
8264         (function_arg_advance_32, function_arg_advance_64): Split out ...
8265         (function_arg_advance): ... from here.
8266         (function_arg_32, function_arg_64): Split out ...
8267         (function_arg): ... from here.
8268         (ix86_pass_by_reference): Tidy.
8269         (ix86_function_value_regno_p): Rearrange w/ switch on regno.
8270         (function_value_32): New, from parts of ix86_function_value
8271         and ix86_value_regno.
8272         (function_value_64): New, from parts of ix86_function_value
8273         and ix86_libcall_value.
8274         (ix86_function_value_1): New.
8275         (ix86_function_value, ix86_libcall_value): Use it.
8276         (return_in_memory_32, return_in_memory_64): Split out ...
8277         (ix86_return_in_memory): ... from here.
8278         (ix86_struct_value_rtx): Skip for 64-bit.
8279         (ix86_libcall_value, ix86_value_regno): Remove.
8280         (setup_incoming_varargs_64): Split out ...
8281         (ix86_setup_incoming_varargs): ... from here.
8282         (ix86_va_start): Remove TARGET_DEBUG_ARG.
8283         (legitimate_address_p, legitimize_address): Remove TARGET_DEBUG_ADDR.
8284         * config/i386/i386-protos.h (ix86_function_value): Remove.
8285         * config/i386/i386.opt (TARGET_DEBUG_ADDR, TARGET_DEBUG_ARG): Remove.
8286
8287 2007-03-22  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
8288
8289         PR other/23572
8290         * c-lex.c (interpret_float): On overflow, emit pedantic warning if
8291         infinities not supported, otherwise emit warning if -Woverflow. On
8292         underflow, emit warning if -Woverflow.
8293         * real.c (real_from_string): Return -1 if underflow, +1 if overflow
8294         and 0 otherwise.
8295         * real.h (real_from_string): Update declaration
8296
8297 2007-03-22  Kai Tietz  <kai.tietz@onevision.com>
8298             Richard Henderson  <rth@redhat.com>
8299
8300         * defaults.h (OUTGOING_REG_PARM_STACK_SPACE): Provide default.
8301         * calls.c (compute_argument_block_size, expand_call,
8302         emit_library_call_value_1): Don't ifdef OUTGOING_REG_PARM_STACK_SPACE.
8303         * expr.c (block_move_libcall_safe_for_call_parm): Likewise.
8304         * function.c (STACK_DYNAMIC_OFFSET): Likewise.
8305         * doc/tm.texi (OUTGOING_REG_PARM_STACK_SPACE): Update.
8306         * config/alpha/unicosmk.h, config/bfin/bfin.h, config/iq2000/iq2000.h,
8307         config/mips/mips.h, config/mn10300/mn10300.h, config/mt/mt.h,
8308         config/pa/pa.h, config/rs6000/rs6000.h, config/score/score.h,
8309         config/spu/spu.h, config/v850/v850.h (OUTGOING_REG_PARM_STACK_SPACE):
8310         Set to 1.
8311
8312 2007-03-22  Joseph Myers  <joseph@codesourcery.com>
8313
8314         * c-incpath.c (add_sysroot_to_chain): New.
8315         (merge_include_chains): Add sysroot argument.  Call
8316         add_sysroot_to_chain if sysrooted.
8317         (register_include_chains): Update call to merge_include_chains.
8318         * doc/cppopts.texi: Document use of '=' in include directory
8319         arguments.
8320
8321 2007-03-22  Uros Bizjak  <ubizjak@gmail.com>
8322
8323         * config/i386/i386.md (cmp<mode>): Rename from cmpsf and cmpdf.
8324         Macroize expander using SSEMODEF mode macro.  Use SSE_FLOAT_MODE_P.
8325         (*cmpfp_<mode>): Rename from *cmpfp_sf and *cmpfp_df. Macroize
8326         insn pattern using X87MODEF12 mode macro.
8327
8328 2007-03-21  Seongbae Park <seongbae.park@gmail.com>
8329
8330         * regmove.c (regmove_optimize): Use reg_mentioned_p
8331         instead of reg_overlap_mentioned_p for DST.
8332
8333 2007-03-21  Mike Stump  <mrs@apple.com>
8334
8335         * c.opt: Fixup for Objective-C/C++.
8336
8337 2007-03-21  Steve Ellcey  <sje@cup.hp.com>
8338
8339         * explow.c (convert_memory_address): Fold memory reference when
8340         POINTERS_EXTEND_UNSIGNED < 0
8341
8342 2007-03-21  Richard Henderson  <rth@redhat.com>
8343
8344         PR target/31245
8345         * config/i386/emmintrin.h (__m128i, __m128d): Mark may_alias.
8346         * config/i386/mmintrin.h (__m64): Likewise.
8347         * config/i386/xmmintrin.h (__m128): Likewise.
8348
8349 2007-03-21  Richard Sandiford  <richard@codesourcery.com>
8350
8351         * config/vxworks.h (VXWORKS_ADDITIONAL_CPP_SPEC): Remove -D options.
8352         (VXWORKS_OS_CPP_BUILTINS): Define.
8353         * config/i386/vxworks.h (VXWORKS_CPU_DEFINE): Fold into...
8354         (TARGET_OS_CPP_BUILTINS): ...here.  Use VXWORKS_OS_CPP_BUILTINS.
8355
8356 2007-03-21  Richard Sandiford  <richard@codesourcery.com>
8357
8358         * rtl.h (constant_pool_reference_p): Delete.
8359         (find_constant_src): Declare.
8360         * rtlanal.c (find_constant_src): New function.
8361         * simplify-rtx.c (constant_pool_reference_p): Delete.
8362         * config/i386/i386.md: Use find_constant_src instead of
8363         constant_pool_reference_p/avoid_constant_pool_reference pairs.
8364
8365 2007-03-21  Richard Sandiford  <richard@codesourcery.com>
8366
8367         * doc/invoke.texi (-fpie, -fPIE): Document __pie__ and __PIE__.
8368         * c-cppbuiltin.c (c_cpp_builtins): Define them.
8369
8370 2007-03-20  Mark Mitchell  <mark@codesourcery.com>
8371
8372         * config/arm/elf.h (TARGET_ASM_DESTRUCTOR): Define.
8373         * config/arm/arm.c (arm_elf_asm_cdtor): New function.
8374         (arm_elf_asm_constructor): Use it.
8375         (arm_elf_asm_destructor): New function.
8376
8377 2007-03-20  Bernd Schmidt  <bernd.schmidt@analog.com>
8378
8379         * jump.c (mark_jump_label): Treat SEQUENCE specially.
8380
8381 2007-03-20  Nathan Sidwell  <nathan@codesourcery.com>
8382
8383         * config/vxlib.c (tls_delete_hook): Use TCB for kernel tasks.
8384
8385 2007-03-19  Andrew Haley  <aph@redhat.com>
8386
8387         PR tree-optimization/31264
8388         * tree-vrp.c (register_edge_assert_for_1): Don't look though
8389         VIEW_CONVERT_EXPRs.
8390
8391 2007-03-19  Paolo Bonzini  <bonzini@gnu.org>
8392
8393         PR rtl-optimization/30907
8394         * fwprop.c (forward_propagate_into): Never propagate inside a loop.
8395         (fwprop_init): Always call loop_optimizer_initialize.
8396         (fwprop_done): Always call loop_optimizer_finalize.
8397         (fwprop): We always have loop info now.
8398         (gate_fwprop_addr): Remove.
8399         (pass_fwprop_addr): Use gate_fwprop as gate.
8400
8401         PR rtl-optimization/30841
8402         * df-problems.c (df_ru_local_compute, df_rd_local_compute,
8403         df_chain_alloc): Call df_reorganize_refs unconditionally.
8404         * df-scan.c (df_rescan_blocks, df_reorganize_refs): Change
8405         refs_organized to refs_organized_size.
8406         (df_ref_create_structure): Use refs_organized_size instead of
8407         bitmap_size if refs had been organized, and keep refs_organized_size
8408         up-to-date.
8409         * df.h (struct df_ref_info): Change refs_organized to
8410         refs_organized_size.
8411         (DF_DEFS_SIZE, DF_USES_SIZE): Use refs_organized_size instead of
8412         bitmap_size.
8413
8414 2007-03-19  Mark Mitchell  <mark@codesourcery.com>
8415
8416         * except.c (output_function_exception_table): Do not reference the
8417         EH personality routine for functions that do not require an
8418         exception table.
8419
8420 2007-03-20  Jakub Jelinek  <jakub@redhat.com>
8421
8422         PR c/30762
8423         * c-typeck.c (convert_for_assignment): Call comptypes for
8424         RECORD_TYPE or UNION_TYPE.
8425
8426         PR inline-asm/30505
8427         * reload1.c (reload): Do invalid ASM checking after
8428         cleanup_subreg_operands.
8429
8430 2007-03-19  Jeff Law  <law@redhat.com>
8431
8432         * tree-cfg.c (find_taken_edge): Tighten conditions for
8433         optimizing computed gotos.
8434
8435 2007-03-19  Michael Matz  <matz@suse.de>
8436
8437         * builtins.c (expand_builtin_sync_operation,
8438         expand_builtin_compare_and_swap,
8439         expand_builtin_lock_test_and_set): Care for extending CONST_INTs
8440         correctly.
8441
8442         * config/i386/sync.md (sync_double_compare_and_swapdi_pic,
8443         sync_double_compare_and_swap_ccdi_pic): Use "SD" as constraint
8444         for operand 3.
8445
8446 2007-03-19  Andreas Krebbel  <krebbel1@de.ibm.com>
8447
8448         * doc/tm.texi: Add brackets around the return type of
8449         TARGET_SECONDARY_RELOAD.
8450
8451 2007-03-19  Andrew Pinski  <andrew_pinski@playstation.sony.com>
8452         Richard Guenther  <rguenther@suse.de>
8453
8454         PR tree-optimization/31254
8455         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1):
8456         Use handled_component_p () where appropriate.  Continue
8457         propagating into the rhs if we propagated into an INDIRECT_REF
8458         on the lhs.
8459
8460 2007-03-19  Andreas Krebbel  <krebbel1@de.ibm.com>
8461
8462         * config/s390/s390.md (op_type attribute): RRR instruction type added.
8463         (FP, DFP, SD_SF, DD_DF, TD_TF): New mode macros.
8464         (xde, xdee): Mode attributes adjusted to support DFP modes.
8465         (RRer, f0, op1, Rf, bt, bfp, HALF_TMODE): New mode attributes added.
8466         ("cmp<mode>", "*cmp<mode>_css_0", "*cmp<mode>_ccs", TF move splitters,
8467         DF move splitters, "floatdi<mode>2", "add<mode>3", "*add<mode>3",
8468         "*add<mode>3_cc", "*add<mode>3_cconly", "sub<mode>3", "*sub<mode>3",
8469         "*sub<mode>3_cc", "*sub<mode>3_cconly", "mul<mode>3", "*mul<mode>3",
8470         "div<mode>3", "*div<mode>3", "*neg<mode>2_nocc", "*abs<mode>2_nocc",
8471         "*negabs<mode>2_nocc", "copysign<mode>3"): Adjusted to support DFP
8472         numbers.
8473         ("*movtf_64", "*movtf_31", "*movdf_64dfp", "*movdf_64", "*movdf_31",
8474         "movsf"): Insn definitions removed.
8475         ("*mov<mode>_64", "*mov<mode>_31", "mov<mode>", "*mov<mode>_64dfp",
8476         "*mov<mode>_64", "*mov<mode>_31", "fix_trunc<DFP:mode>di2",
8477         "trunctddd2", "truncddsd2", "extendddtd2", "extendsddd2"): Insn
8478         definitions added.
8479         ("fixuns_truncdddi2", "fixuns_trunctddi2", "mov<mode>",
8480         "reload_in<mode>", "reload_out<mode>"): Expander added.
8481         ("movtf", "movdf", "reload_outtf", "reload_outdf", "reload_intf"):
8482         Expander removed.
8483
8484 2007-03-19  Andreas Krebbel  <krebbel1@de.ibm.com>
8485
8486         * config/s390/s390.md: Only non-functional changes.  Renamed
8487         FPR mode macro to BFP all over the file.
8488
8489 2007-03-19  Andreas Krebbel  <krebbel1@de.ibm.com>
8490
8491         * config/s390/s390.md (UNSPEC_COPYSIGN): New constant.
8492         (op_type attribute): RRF instruction type added.
8493         (fT0): New mode attribute.
8494         ("*movdi_64dfp", "*movdf_64dfp", "*neg<mode>2_nocc", "*abs<mode>2_nocc",
8495         "*negabs<mode>2_nocc", "copysign<mode>3"): Insn definitions added.
8496         * config/s390/s390.h (SECONDARY_MEMORY_NEEDED): Due to a new instruction
8497         no secondary memory is needed when moving DFmode values between GPRs
8498         and FPRs.
8499
8500 2007-03-19  Andreas Krebbel  <krebbel1@de.ibm.com>
8501
8502         * config/s390/s390.opt ("mhard-float", "msoft-float"): Bit value
8503         inverted and documentation adjusted.
8504         ("mhard-dfp", "msoft-dfp"): New options.
8505         * config/s390/s390.c (s390_handle_arch_option): New architecture
8506         switch: z9-ec.
8507         (override_options): Sanity checks for the new options added.
8508         * config.gcc: New architecture switch: z9-ec.
8509         * config/s390/s390.h (processor_flags): PF_DFP added.
8510         (TARGET_CPU_DFP, TARGET_DFP): Macro definitions added.
8511         (TARGET_DEFAULT): Due to the s390.opt changes hard float is enabled
8512         when the bit is NOT set so remove it from the defaults.
8513
8514 2007-03-19  Andreas Krebbel  <krebbel1@de.ibm.com>
8515
8516         * genemit.c (main): Print include statement for dfp.h.
8517         * dfp.h (decimal_real_arithmetic): Hide prototype if tree_code enum
8518         is not available.
8519
8520 2007-03-19  Hans-Peter Nilsson  <hp@axis.com>
8521
8522         * config/cris/t-elfmulti (EXTRA_MULTILIB_PARTS): Do not define here.
8523
8524 2007-03-19  Kaz Kojima  <kkojima@gcc.gnu.org>
8525
8526         PR target/31022
8527         * config/sh/sh.c (sh_adjust_cost): Use the result of single_set
8528         instead of PATTERN.
8529
8530 2007-03-18  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
8531
8532         * pa.c (output_deferred_plabels, output_bb, output_millicode_call,
8533         attr_length_call, output_call, output_indirect_call): Cleanup
8534         formatting of targetm calls.
8535
8536 2007-03-19  Hans-Peter Nilsson  <hp@axis.com>
8537
8538         * config/cris/cris.h (HANDLE_PRAGMA_PACK_PUSH_POP): Define to 1.
8539
8540 2007-03-18  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
8541
8542         * pa.md: Add fpstore_load and store_fpload instruction types.  Provide
8543         reservation, bypass and anti-bypass descriptions for these instructions.
8544         Update move patterns.
8545         * pa.c (hppa_fpstore_bypass_p): Check for both TYPE_FPSTORE_LOAD and
8546         TYPE_FPSTORE.
8547
8548 2007-03-18  Dorit Nuzman  <dorit@il.ibm.com>
8549
8550         * tree-vect-transform.c (get_initial_def_for_induction): Replace
8551         GET_MODE_NUNITS with TYPE_VECTOR_SUBPARTS.
8552         (get_initial_def_for_reduction): Likewise.
8553
8554 2007-03-16  Daniel Berlin  <dberlin@dberlin.org>
8555
8556         Fix PR tree-optimization/29922
8557         * tree-ssa-pre.c (bb_bitmap_sets): Remove RVUSE_* members.
8558         (get_representative): Removed.
8559         (value_dies_in_block_x): Update for rvuse removal.
8560         (valid_in_sets): Update for renaming of vuses_dies_in_block_x.
8561         (compute_antic_aux): Handle when PHI nodes appear in
8562         non-single-successors.
8563         (dump_bitmap_of_names): Removed.
8564         (compute_antic_safe): Renamed and removed rvuse calculation.
8565         Calculate only antic safe.
8566         (insert_into_preds_of_block): Remove assert.
8567         (execute_pre): Update for renamed functions.
8568         (defer_or_phi_translate_block): New function.
8569
8570 2007-03-17  Kazu Hirata  <kazu@codesourcery.com>
8571
8572         * config/arm/arm.c, config/arm/thumb2.md, config/m68k/m68k.c,
8573         config/spu/spu.c, omega.h, passes.c, predict.c: Fix comment
8574         typos.
8575         * doc/cpp.texi, doc/extend.texi, doc/invoke.texi: Fix typos.
8576         Follow spelling conventions.
8577
8578         * tree-data-ref.h: Remove the prototype for analyze_array.
8579
8580 2007-03-17  Dorit Nuzman  <dorit@il.ibm.com>
8581
8582         PR tree-optimization/31041
8583         * tree-vect-transform.c (get_initial_def_for_induction): Call
8584         force_gimple_operand.
8585
8586 2007-03-17  Olga Golovanevsky  <olga@il.ibm.com>
8587
8588         * ipa-type-escape.c (look_for_casts) : Revert code to use
8589         handled_component_p due to ada test a-numaux.adb.
8590
8591 2007-03-17  Kazu Hirata  <kazu@codesourcery.com>
8592
8593         * final.c (final_scan_insn): Alter the condition of a
8594         conditional trap if we have nonstandard CC.
8595
8596 2007-03-16  Alexandre Oliva  <aoliva@redhat.com>
8597
8598         * configure.ac: Remove excess quoting from asm line 0 test.
8599         * configure: Rebuilt.
8600
8601 2007-03-16  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
8602
8603         * doc/invoke.texi (-Wconversion): Document warnings specific to C++.
8604         * c-common.c (convert_and_check): Move warning logic to...
8605         (warnings_for_convert_and_check): ...here. Define.
8606         * c-common.h (warnings_for_convert_and_check): Declare.
8607
8608 2007-03-16  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
8609
8610         * pa.c (attr_length_call): Partially revert change of 2007-03-09.
8611         (output_call): Likewise.
8612
8613 2007-03-16  Richard Sandiford  <richard@codesourcery.com>
8614
8615         * config/vxworks.h (SUPPORTS_INIT_PRIORITY): Define.
8616
8617 2007-03-16  Richard Sandiford  <richard@codesourcery.com>
8618
8619         * config/vx-common.h (WINT_TYPE, WINT_TYPE_SIZE): Define.
8620
8621 2007-03-16  Uros Bizjak  <ubizjak@gmail.com>
8622
8623         * config/i386/i386.c (override_options): Add PTA_NO_SAHF to k8,
8624         opteron, athlon-64 and athlon-fx processor_alias_table entries.
8625
8626 2007-03-16  Sebastian Pop  <sebastian.pop@inria.fr>
8627
8628         PR tree-optimization/31183
8629         * tree-loop-linear.c (gather_interchange_stats, try_interchange_loops):
8630         Use double_int instead of unsigned int for representing access_strides.
8631         * testsuite/gcc.dg/tree-ssa/pr31183.c: New.
8632
8633 2007-03-16  Richard Guenther  <rguenther@suse.de>
8634
8635         PR tree-optimization/31146
8636         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Restructure
8637         to allow recursion of forward_propagate_addr_expr.
8638         (forward_propagate_addr_into_variable_array_index): Likewise.
8639         (forward_propagate_addr_expr): Likewise.
8640         (tree_ssa_forward_propagate_single_use_vars): Likewise.
8641         (forward_propagate_addr_expr_1): Recurse on simple copies
8642         instead of propagating into them.  Do so for useless conversions
8643         as well.
8644         (forward_propagate_addr_expr): Clean up unused statements after
8645         recursion.
8646
8647 2007-03-16  Richard Guenther  <rguenther@suse.de>
8648
8649         * builtins.c (expand_builtin_cexpi): Use the right argument
8650         for the expansion via cexp.
8651
8652 2007-03-16  Alexandre Oliva  <aoliva@redhat.com>
8653
8654         * configure.ac: Don't require ELF binutils to tolerate # 0 "".
8655         * configure: Rebuilt.
8656
8657 2007-03-16  Alexandre Oliva  <aoliva@redhat.com>
8658
8659         PR debug/29906
8660         * dwarf2out.c (force_type_die): Adjust comment.
8661         (dwarf2out_imported_module_or_decl): Handle base AT_import types.
8662
8663 2007-03-15  DJ Delorie  <dj@redhat.com>
8664
8665         * config/frv/predicates.md (minmax_operator): Don't check operands
8666         here.
8667
8668 2007-03-15  Zdenek Dvorak  <dvorakz@suse.cz>
8669
8670         * tree-ssa-loop-niter.c (record_estimate): Add "upper" argument.
8671         Update constant estimates of number of iterations.
8672         (record_nonwrapping_iv): Add "upper" argument.  "data_size_bounds_p"
8673         argument renamed to "realistic".
8674         (compute_estimated_nb_iterations): Removed.
8675         (record_niter_bound): New function.
8676         (idx_infer_loop_bounds): For possible but unlikely tail arrays,
8677         call record_nonwrapping_iv with upper = false.
8678         (infer_loop_bounds_from_signedness): Pass upper argument to
8679         record_nonwrapping_iv.
8680         (estimate_numbers_of_iterations_loop): Do not call
8681         compute_estimated_nb_iterations.  Record estimate based on profile
8682         information.  Initialize the constant estimates of number of
8683         iterations.
8684         * tree-data-ref.c (estimated_loop_iterations): Return the recorded
8685         estimates.
8686         * tree-ssa-loop-prefetch.c (loop_prefetch_arrays): Add dump when
8687         number of iterations is too small.
8688         * cfgloop.h (struct nb_iter_bound): Remove "realistic" field.
8689         (EST_NOT_AVAILABLE): Removed.
8690         (struct loop): Replace estimated_nb_iterations by any_upper_bound,
8691         nb_iterations_upper_bound, any_estimate and nb_iterations_estimate
8692         fields.
8693
8694 2007-03-15  Zdenek Dvorak  <dvorakz@suse.cz>
8695
8696         * tree-ssa-loop-niter.c (refine_bounds_using_guard, bound_difference):
8697         Handle NE_EXPR guards.
8698
8699 2007-03-15  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
8700
8701         PR c++/24924
8702         * c-opts.c (c_common_post_options): Handle C++ post-processing here.
8703         Set also -pedantic-errors by default for the  preprocessor unless
8704         -fpermissive is given.
8705
8706 2007-03-15  Richard Guenther  <rguenther@suse.de>
8707
8708         PR middle-end/29719
8709         PR middle-end/31161
8710         * builtins.c (expand_builtin_cexpi): As a fallback if we
8711         don't have builtins for sincos or cexp create a function
8712         declaration for cexp and expand to a call to that.
8713         (expand_builtin_int_roundingfn): Always fall
8714         back to floor/ceil and its variants even if they may be
8715         not available.
8716
8717 2007-03-15  Steven Bosscher  <steven@gcc.gnu.org>
8718
8719         PR middle-end/31159
8720         * cfglayout.c (fixup_reorder_chain): Postpone deleting dead
8721         jump tables, move the call to delete_dead_jumptables from here...
8722         (cfg_layout_finalize): ...to here.  But rebuild jump labels first.
8723         * cfgrtl.c (cfg_layout_can_merge_blocks_p): When not optimizing,
8724         don't allow merging of blocks that try_redirect_by_replacing_jump
8725         also does not handle when not optimizing.
8726
8727 2007-03-15  Uros Bizjak  <ubizjak@gmail.com>
8728             Francois-Xavier Coudert  <coudert@clipper.ens.fr>
8729
8730         * config/i386/i386.md (x86_sahf_1): Correctly handle
8731         HAVE_AS_IX86_SAHF.
8732
8733 2007-03-15  Uros Bizjak  <ubizjak@gmail.com>
8734
8735         PR target/31167
8736         * config/i386/i386.md (*addti3_1, *addti3_1 splitter): Use
8737         x86_64_general_operand as operand[2] predicate.  Remove "iF"
8738         from operand constraints and use "e" constraint instead.
8739         (*subti3_1, *subti3_1 splitter): Ditto.
8740         (*negti2_1, *negti2_1 splitter): Use nonimmediate_operand as
8741         operand[1] predicate.
8742
8743 2007-03-14  Sebastian Pop  <sebastian.pop@inria.fr>
8744
8745         * tree-loop-linear.c (gather_interchange_stats): For multidimensional
8746         arrays, multiply the access strides by the size of the sub-array.
8747         * testsuite/gcc.dg/tree-ssa/ltrans-5.c: New.
8748
8749 2007-03-14  Uros Bizjak  <ubizjak@gmail.com>
8750
8751         * configure.ac (HAVE_AS_IX86_SAHF): On x86 targets check whether
8752         the configured assembler supports the sahf mnemonic.
8753         * configure: Regenerate.
8754         * config.in: Regenerate.
8755
8756         * config/i386/i386.md (x86_sahf_1): Depending on HAVE_AS_IX86_SAHF,
8757         emit "sahf" or ".byte\t0x9e" as asm template.
8758
8759 2007-03-14  Michael Meissner  <michael.meissner@amd.com>
8760
8761         PR 31018
8762         * config/i386/i386.h (X86_TUNE_SHORTEN_X87_SSE): New tuning
8763         option to replace hard coded TARGET_xxx in md file.
8764         (X86_TUNE_AVOID_VECTOR_DECODE): Ditto.
8765         (X86_TUNE_SLOW_IMUL_IMM32_MEM): Ditto.
8766         (X86_TUNE_SLOW_IMUL_IMM8): Ditto.
8767         (X86_TUNE_MOVE_M1_VIA_OR): Ditto.
8768         (X86_TUNE_NOT_UNPAIRABLE): Ditto.
8769         (X86_TUNE_NOT_VECTORMODE): Ditto.
8770         (TUNE_SHORTEN_X87_SSE): Use new tuning option.
8771         (TUNE_AVOID_VECTOR_DECODE): Ditto.
8772         (TUNE_SLOW_IMUL_IMM32_MEM): Ditto.
8773         (TUNE_SLOW_IMUL_IMM8): Ditto.
8774         (TUNE_MOVE_M1_VIA_OR): Ditto.
8775         (TUNE_NOT_UNPAIRABLE): Ditto.
8776         (TUNE_NOT_VECTORMODE): Ditto.
8777
8778         * config/i386/i386.c (ix86_tune_features): Fill in new tuning
8779         options.
8780
8781         * config/i386/i386.md (fix_trunc?f?1_sse peephole2): Use new
8782         tuning options instead of hard coded TARGET_xxx.
8783         (fix ssemode peephole2's): Ditto.
8784         (imul peephole2's): Ditto.
8785         (movsi_or): Ditto.
8786         (movdi_or_rex64): Ditto.
8787         (move peephole2): Ditto.
8788         (not peephole2's): Ditto.
8789
8790 2007-03-14  Dirk Mueller  <dmueller@suse.de>
8791
8792         * c-common.h (empty_body_warning): Rename to empty_if_body_warning.
8793         * c-common.c (empty_if_body_warning): Rephrase diagnostic message.
8794         * c-parser.c (c_parser_if_body): Always add an empty statement in case
8795         of empty body.
8796         * c-parser.c (c_parser_do_statement): Warn about empty body in
8797         do/while statement.
8798         * c-typeck (c_finish_if_stmt): Call empty_if_body_warning.
8799         * doc/invoke.texi (-Wempty-body): Update documentation.
8800
8801 2007-03-14  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
8802
8803         PR c/21438
8804         * c-common.h (warn_for_div_by_zero): Declare.
8805         * c-common.c (warn_for_div_by_zero): Define.
8806         * c-typeck.c (build_binary_op): Call warn_for_div_zero instead of
8807         warning.
8808
8809 2007-03-14  Richard Sandiford  <richard@codesourcery.com>
8810
8811         * Makefile.in (PREPROCESSOR_DEFINES): Add directory terminators
8812         to PREFIX and STANDARD_PREFIX.
8813
8814 2007-03-14  Richard Sandiford  <richard@codesourcery.com>
8815             Phil Edwards  <phil@codesourcery.com>
8816
8817         * gthr-vxworks.h: Add an extern "C" wrapper for C++.
8818         (__gthread_once_t): Remove busy field for RTPs.
8819         (__GTHREAD_ONCE_INIT): Update accordingly.
8820
8821 2007-03-14  Richard Sandiford  <richard@codesourcery.com>
8822
8823         * doc/invoke.texi: Document VxWorks options.
8824
8825 2007-03-14  Uros Bizjak  <ubizjak@gmail.com>
8826
8827         * doc/invoke.texi (i386 and x86-64 Options): Clarify -msahf option.
8828
8829 2007-03-13  Seongbae Park <seongbae.park@gmail.com>
8830
8831         PR tree-optimization/30590
8832         * tree-nrv.c (tree_nrv): Check for the partial update of the
8833         return value.
8834
8835 2007-03-13  Alexandre Oliva  <aoliva@redhat.com>
8836
8837         * flags.h (flag_random_seed): Remove declaration, in favor of...
8838         * toplev.h (get_random_seed, set_random_seed): ... these.
8839         * tree.c (get_file_function_name): Use the former.
8840         * opts.c (common_handle_option): Use the latter.
8841         * toplev.c
8842
8843 2007-03-13  Steven Bosscher  <steven@gcc.gnu.org>
8844
8845         PR middle-end/31127
8846         * cse.c (cse_find_path): Do not bail out if a basic block that
8847         we already visited now becomes part of a path that starts at a
8848         different basic block.  Just disallow this, to make sure we
8849         visit each basic block at most once.
8850
8851 2007-03-13  Jan Hubicka  <jh@suse.cz>
8852
8853         * ipa-inline.c (cgraph_maybe_hot_edge_p): Look for hot/cold attributes,
8854         when profile esitmate is present, calls with very low frequency are
8855         cold.
8856
8857 2007-03-13  Zdenek Dvorak  <dvorakz@suse.cz>
8858
8859         PR tree-optimization/30730
8860         PR tree-optimization/26900
8861         * tree-ssa-loop-niter.c: Include gmp.h.
8862         (bounds): New type.
8863         (mpz_set_double_int, get_type_bounds, mpz_to_double_int,
8864         split_to_var_and_offset, determine_value_range,
8865         bound_difference_of_offsetted_base, refine_bounds_using_guard,
8866         bound_difference, bounds_add, bounds_negate,
8867         number_of_iterations_ne_max, dump_affine_iv): New functions.
8868         (number_of_iterations_ne, number_of_iterations_lt_to_ne,
8869         assert_loop_rolls_lt, assert_loop_rolls_le): Use bounds on the
8870         difference of initial and final value of control iv to validate
8871         results.
8872         (number_of_iterations_cond): Add loop parameter.  Determine bounds
8873         on the difference of the extremes of the control iv.  Add dumps.
8874         (expand_simple_operations): Handle phi nodes.
8875         (simplify_using_initial_conditions): Do not record used conditions.
8876         (number_of_iterations_exit): Pass loop to number_of_iterations_cond.
8877         Do not set additional_info.
8878         (implies_nonnegative_p, implies_ge_p): Removed.
8879         (derive_constant_upper_bound): Do not use parameter `additional'.
8880         (record_estimate): Parameter `additional' removed.  Parameter
8881         `i_bound' added.  Do not call derive_constant_upper_bound.
8882         (record_nonwrapping_iv): Use derive_constant_upper_bound to
8883         bound the number of iterations estimate.
8884         (estimate_numbers_of_iterations_loop): Pass the estimate from
8885         the number of iterations analysis to record_estimate.
8886         * tree.h (multiple_of_p): Declare.
8887         * tree-scalar-evolution.c (expression_expensive_p): Removed.
8888         (scev_const_prop): Do not check expression_expensive_p.
8889         * fold-const.c (multiple_of_p): Exported.
8890         * double-int.c (double_int_mask): Exported.
8891         * double-int.h (double_int_mask): Declare.
8892         * tree-flow.h (struct tree_niter_desc): Removed additional_info
8893         field.  Added max field.
8894
8895 2007-03-13  David Taylor  <taylor@candd.org>
8896
8897         PR driver/12448:
8898         * gcc.c (cpp_unique_options): If -MT or -MQ is seen, don't pass
8899         default -MQ.
8900
8901 2007-03-13  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
8902
8903         PR target/31123
8904         * pa.md (vdepi_ior): Don't allow zero length deposit.  Likewise for
8905         two unamed patterns.
8906
8907 2007-03-13  Uros Bizjak  <ubizjak@gmail.com>
8908
8909         * config/i386/i386.opt (mcx16, msahf): New options.
8910         * config/i386/i386.c (x86_cmpxchg16b, x86_sahf): Remove.
8911         (ix86_tune_features) [X86_TUNE_USE_SAHF]: Enable for m_GENERIC.
8912
8913         * config/i386/driver-i386.c (bit_LAHF_LM): New define.
8914         (host_detect_local_cpu): Detect cx16 and lahf_lm cpuid bits.
8915         Output -mcx16 and -msahf options when corresponding bit is set.
8916
8917         * doc/invoke.texi (i386 and x86-64 Options): Document -mcx16
8918         and -msahf options.
8919
8920 2007-03-13  Alexandre Oliva  <aoliva@redhat.com>
8921
8922         * configure.ac: Test for assembler tolerance to # 0 "".
8923         * configure, config.in: Rebuilt.
8924         * final.c (final_scan_insn): Emit it if HAVE_AS_LINE_ZERO.
8925
8926 2007-03-13  Geoffrey Keating  <geoffk@apple.com>
8927
8928         * doc/invoke.texi (Spec Files): Update for '%{,' spec.
8929
8930         * config/rs6000/darwin-fallback.c: Compile file only on powerpc.
8931         (handle_syscall): Handle direct system calls.
8932         * config/rs6000/darwin.h (HAS_MD_FALLBACK_FRAME_STATE_FOR): Delete.
8933
8934 2007-03-12  Brooks Moses  <brooks.moses@codesourcery.com>
8935
8936         * doc/invoke.texi: Fix cpp.info cross-reference.
8937         * doc/passes.texi: Fix gcc.info cross-reference.
8938
8939 2007-03-12  Zdenek Dvorak  <dvorakz@suse.cz>
8940
8941         PR tree-optimization/30835
8942         * lambda-code.c (can_convert_to_perfect_nest): Check whether
8943         bb_for_stmt is not NULL before accessing it.
8944
8945 2007-03-12  Joseph Myers  <joseph@codesourcery.com>
8946
8947         * gcc.c (main): Handle target_sysroot_hdrs_suffix being NULL for
8948         some multilibs.
8949
8950 2007-03-12  Brooks Moses  <brooks.moses@codesourcery.com>
8951
8952         PR 30635
8953         * doc/install.texi: Document --enable-stage1-languages
8954
8955 2007-03-12  Steven Bosscher  <steven@gcc.gnu.org>
8956
8957         * tree-pass.h (pass_into_cfg_layout_mode,
8958         pass_outof_cfg_layout_mode): Declare.
8959         * cfglayout.c (into_cfg_layout_mode, outof_cfg_layout_mode,
8960         pass_into_cfg_layout_mode, pass_outof_cfg_layout_mode): New.
8961         * passes.c (pass_into_cfg_layout_mode): Schedule before jump2.
8962         (pass_outof_cfg_layout_mode): Schedule after pass_rtl_ifcvt.
8963
8964 2007-03-12  Seongbae Park <seongbae.park@gmail.com>
8965
8966         * c-decl.c (warn_variable_length_array): New function.
8967         Refactored from grokdeclarator to handle warn_vla
8968         and handle unnamed array case.
8969         (grokdeclarator): Refactored VLA warning case.
8970         * c.opt (Wvla): New flag.
8971         * doc/invoke.texi (Wvla): New warning.
8972
8973 2007-03-12  Richard Henderson  <rth@redhat.com>
8974
8975         * config/alpha/alpha.c (alpha_elf_section_type_flags): New.
8976         (TARGET_SECTION_TYPE_FLAGS): New.
8977
8978 2007-03-12  Richard Henderson  <rth@redhat.com>
8979
8980         * config/darwin.c (machopic_reloc_rw_mask): New.
8981         * config/darwin-protos.h (machopic_reloc_rw_mask): Declare.
8982         * config/darwin.h (TARGET_ASM_RELOC_RW_MASK): New.
8983
8984 2007-03-12  Mark Mitchell  <mark@codesourcery.com>
8985
8986         * cppdefault.c (cpp_EXEC_PREFIX): New variable.
8987         * cppdefault.h (cpp_PREFIX): Document.
8988         (cpp_PREFIX_len): Likewise.
8989         (cpp_EXEC_PREFIX): New variable.
8990         * Makefile.in (PREPROCESSOR_DEFINES): Add STANDARD_EXEC_PREFIX.
8991         * c-incpath.c (add_standard_paths): Correct logic for relocating
8992         paths within prefix.
8993
8994 2007-03-12  Uros Bizjak  <ubizjak@gmail.com>
8995
8996         * config/i386/i386.md (fixuns_trunc<mode>hi2): Implement from
8997         fixuns_truncsfhi2 and fixuns_truncdfhi2 using SSEMODEF
8998         mode macro.
8999         (fix_trunc<mode>di_sse): Implement from fix_truncsfdi_sse and
9000         fix_truncdfdi_sse using SSEMODEF mode macro.
9001         (fix_trunc<mode>si_sse): Implement from fix_truncsfsi_sse and
9002         fix_truncdfsi_sse using SSEMODEF mode macro.
9003         (fix_trunc?f?i_sse peephole2): Implement using SSEMODEF mode macro.
9004         (fix_trunc?f?i_sse K8 peephole2): Fix register constraint.
9005
9006 2007-03-12  Richard Sandiford  <richard@codesourcery.com>
9007
9008         * config.gcc (i[4567]86-wrs-vxworks, i[4567]86-wrs-vxworksae): Add
9009         elfos.h to tm_file.
9010
9011 2007-03-12  Olga Golovanevsky  <olga@il.ibm.com>
9012
9013         * tree.h : Add multiple_of_p declaration.
9014         * fold-const.c (multiple_of_p): Make multiple_of_p public.
9015         * ipa-type-escape.c (results_of_malloc): Redundant.
9016         (visited_stmts): New. Visited stmt for walk_use_def_chains.
9017         (cast_type): Extended with new members.
9018         (check_cast): Returns cast_type.
9019         (cast): New structure for data of walk_use_def_chains.
9020         (is_malloc_result, is_cast_from_non_pointer_1,
9021         is_cast_from_non_pointer,
9022         is_array_access_through_pointer_and_index): New functions.
9023         (look_for_casts): Returns cast types.
9024         (check_call): Returns void.
9025         (okay_pointer_operation): Use support of pointer plus index,
9026         pointer plus constant and allow all multiplications.
9027
9028 2007-03-11  Richard Guenther  <rguenther@suse.de>
9029
9030         PR tree-optimization/31115
9031         * tree-vrp.c (extract_range_from_binary_expr): Make sure
9032         the shift count is positive and non-anti-range for RSHIFT_EXPR.
9033         A shift count of zero is not special as with *_DIV_EXPR.
9034         (vrp_int_const_binop): Handle RSHIFT_EXPR for determining overflow
9035         direction.
9036
9037 2007-03-11  Ian Lance Taylor  <iant@google.com>
9038
9039         * tree-vrp.c (vrp_int_const_binop): Handle PLUS_EXPR and
9040         the *_DIV_EXPR codes correctly with overflow infinities.
9041
9042 2007-03-11  Ira Rosen  <irar@il.ibm.com>
9043
9044         * tree-data-ref.c (analyze_offset): Add a return value (bool) to
9045         indicate success/failure of the analysis. Add negation to subtrahend
9046         in case of subtraction. Fail if both operands contain constants.
9047         (create_data_ref): Fail if analyze_offset fails.
9048
9049 2007-03-11  Uros Bizjak  <ubizjak@gmail.com>
9050
9051         * config/i386/i386.md (frndintxf2): Rename to ...
9052         (rintxf2): ... this. Remove expander having same name.
9053         (rintsf2, rintdf2): Implement using SSEMODEF macro.
9054         (roundsf2, rounddf2): Ditto.
9055         (lrint<mode>di2, lrint<mode>si2): Implement using SSEMODEI24 macro.
9056         (lround<mode>di2, lround<mode>si2): Ditto.
9057
9058 2007-03-11  Steven Bosscher  <steven@gcc.gnu.org>
9059
9060         * lower-subreg.c: Include except.h.
9061         (decompose_multiword_subregs): Verify that the only control flow
9062         insns we can split are loads to multi-words pseudos.
9063         Handle breaking such blocks after splitting, instead of calling
9064         find_many_sub_basic_blocks.
9065
9066         * loop-unroll.c (split_edge_and_insert): Don't set BB_SUPERBLOCK
9067         on the new basic block.  Add a lengthy comment explaining why we
9068         thought this was necessary.
9069         * cfglayout.c (cfg_layout_finalize): Don't break superblocks.
9070
9071 2007-03-10  Mark Mitchell  <mark@codesourcery.com>
9072
9073         PR c++/30924
9074         * tree.c (walk_type_fields): Recurse into the element type of
9075         ARRAY_TYPEs if there is a pointer set.
9076
9077 2007-03-10  Dirk Mueller  <dmueller@suse.de>
9078
9079         * c-common.c (warn_logical_operator): Fix condition.
9080
9081 2007-03-10  Tobias Schl�ter  <tobi@gcc.gnu.org>
9082
9083         * config/i386/darwin.h (DARWIN_MINVERSION_SPEC): Add missing
9084         quotation mark.
9085         * config/darwin.c (machopic_select_section): Remove superfluous
9086         argument in call to categorize_decl_for_section.  Remove unused
9087         variable shlib.
9088
9089 2007-03-10  Joseph Myers  <joseph@codesourcery.com>
9090
9091         * configure.ac (glibc_header_dir): Set using with_build_sysroot if
9092         defined.
9093         * configure: Regenerate.
9094
9095 2007-03-10  Uros Bizjak  <ubizjak@gmail.com>
9096
9097         PR target/31101
9098         * config/i386/i386.md (UNSPEC_C2_FLAG): New constant.
9099         (fpremxf4_i387, fprem1xf4_i387): Use UNSPEC_C2_FLAG.
9100         (fmodxf3, fmod<mode>3, remainderxf3, remainder<mode>3):
9101         Add LABEL_NUSES to emitted label.
9102         * config/i386/i386.c (ix86_emit_fp_unordered_jump): Add
9103         branch probability value to emitted jump insn.
9104         * reg-stack.c (subst_stack_regs_pat)[UNSPEC]: Handle UNSPEC_C2_FLAG.
9105         Do not check life information and do not re-arrange input operands
9106         for UNSPEC_FSCALE_EXP, UNSPEC_FPREM_U and UNSPEC_FPREM1_U.
9107
9108 2007-03-10  Kaz Kojima  <kkojima@gcc.gnu.org>
9109
9110         * config/sh/sh.c (sh_insn_length_adjustment): Adjust for
9111         the change of decode_asm_operands.
9112
9113 2007-03-10  Kaz Kojima  <kkojima@gcc.gnu.org>
9114
9115         * mode-switching.c (create_pre_exit): Skip blockage insn.
9116
9117 2007-03-09  Diego Novillo  <dnovillo@redhat.com>
9118
9119         * tree-pass.h (TODO_update_smt_usage): Remove.
9120         Update all users.
9121         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Remove
9122         argument SOME.
9123         Update all users.
9124
9125 2007-03-09  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
9126
9127         * pa.c (attr_length_call): Revise condition for long pc-relative branch.
9128         (output_call): Use "LONG_PIC_SDIFF" instruction sequence for long local
9129         calls on the SOM target.  Don't use "LONG_PIC_PCREL" call sequence on
9130         SOM target.
9131
9132 2007-03-09  Geoffrey Keating  <geoffk@apple.com>
9133
9134         * gcc.c: Document %{, in big comment at top.
9135         (input_suffix_matches): Remove special handling for .s and
9136         .S.
9137         (input_spec_matches): New.
9138         (handle_braces): Handle %{,.
9139         (validate_switches): ',' indicates a value which is not a switch.
9140         * config/alpha/osf.h (ASM_FINAL_SPEC): Use %{, rather than %{.
9141         to detect assembler input.
9142         * config/i386/sol2.h (CPP_SPEC): Likewise.
9143         * config/rs6000/sysv4.h (ASM_SPEC): Likewise.
9144         * config/rs6000/vxworks.h (ASM_SPEC): Likewise.
9145         * config/rs6000/lynx.h (ASM_SPEC): Likewise.
9146         * config/rs6000/linux64.h (ASM_SPEC_COMMON): Likewise.
9147         * config/i386/darwin.h (DARWIN_MINVERSION_SPEC): Objective-C plus
9148         -m64 causes deployment target to default to 10.5.
9149         * config/rs6000/darwin.h (DARWIN_MINVERSION_SPEC): Likewise.
9150
9151 2007-03-09  Richard Henderson  <rth@redhat.com>
9152
9153         PR target/26090
9154         * target.h (targetm.asm.out.reloc_rw_mask): New.
9155         * target-def.h (TARGET_ASM_RELOC_RW_MASK): New.
9156         (TARGET_ASM_OUT): Use it.
9157         * targhooks.c, targhooks.h (default_reloc_rw_mask): New.
9158         * varasm.c (categorize_decl_for_section): Remove shlib argument;
9159         use the new reloc_rw_mask target hook instead.
9160         (default_section_type_flags_1): Merge into...
9161         (default_section_type_flags): ... here.
9162         (decl_readonly_section_1): Merge into...
9163         (decl_readonly_section): ... here.
9164         (default_elf_select_section_1): Merge into...
9165         (default_elf_select_section): ... here.
9166         (default_unique_section_1): Merge into...
9167         (default_unique_section): ... here.
9168         (compute_reloc_for_rtx_1, compute_reloc_for_rtx): New.
9169         (default_select_rtx_section): Use it.
9170         (default_elf_select_rtx_section): Likewise.
9171         * output.h: Update to match.
9172         * doc/tm.texi (TARGET_ASM_RELOC_RW_MASK): New.
9173         * config/alpha/alpha.c (alpha_elf_reloc_rw_mask): New.
9174         (TARGET_ASM_RELOC_RW_MASK): New.
9175         * config/i386/i386.c (x86_64_elf_select_section): Adjust call
9176         to categorize_decl_for_section.
9177         (x86_64_elf_unique_section): Likewise.
9178         * config/ia64/hpux.h (TARGET_ASM_SELECT_SECTION,
9179         TARGET_ASM_UNIQUE_SECTION, TARGET_ASM_SELECT_RTX_SECTION): Remove.
9180         (TARGET_ASM_RELOC_RW_MASK): New.
9181         * config/ia64/ia64.c (ia64_rwreloc_select_section,
9182         ia64_rwreloc_unique_section, ia64_rwreloc_select_rtx_section): Remove.
9183         (ia64_hpux_reloc_rw_mask, ia64_reloc_rw_mask): New.
9184         (TARGET_RWRELOC): Remove.
9185         (ia64_section_type_flags): Adjust call to default_section_type_flags.
9186         * config/ia64/sysv4.h (TARGET_ASM_RELOC_RW_MASK): New.
9187         * config/rs6000/rs6000.c (rs6000_elf_section_type_flags): Remove.
9188         (rs6000_elf_select_section, rs6000_elf_unique_section): Remove.
9189         (rs6000_elf_reloc_rw_mask, rs6000_xcoff_reloc_rw_mask): New.
9190         (rs6000_xcoff_select_section): Use decl_readonly_section.
9191         (rs6000_xcoff_section_type_flags): Use default_section_type_flags.
9192         * config/rs6000/sysv4.h (TARGET_ASM_RELOC_RW_MASK): New.
9193         (TARGET_ASM_SELECT_SECTION, TARGET_ASM_UNIQUE_SECTION): Remove.
9194         (TARGET_SECTION_TYPE_FLAGS): Remove.
9195         * config/rs6000/xcoff.h (TARGET_ASM_RELOC_RW_MASK): New.
9196
9197 2007-03-09  Roger Sayle  <roger@eyesopen.com>
9198
9199         * fold-const.c (fold_comparison): Remove compile-time evaluation of
9200         complex constant equality/inequality comparisons for here.
9201         (fold_binary) <EQ_EXPR>: Simplify complex comparisons that are
9202         known at compile-time or can be simplified to a scalar comparison.
9203         (fold_relational_const): Move compile-time evaluation of complex
9204         constant equality/inequality comparisons to here.
9205
9206 2007-03-09  Alexandre Oliva  <aoliva@redhat.com>
9207
9208         PR rtl-optimization/30643
9209         * cse.c (cse_insn): Recompute dest_hash after insert_regs for
9210         dest_addr_elt.
9211         (fold_rtx): Recurse, like before 2006-11-03.
9212
9213 2007-03-09  DJ Delorie  <dj@redhat.com>
9214
9215         * config/m32c/t-m32c (m32c-pragma.o): Add TM_H dependency to
9216         m32c-pragma.o.
9217
9218 2007-03-09  Aldy Hernandez  <aldyh@redhat.com>
9219
9220         PR tree-optimization/30375
9221         * tree-ssa-dse.c (dse_possible_dead_store_p): Do not eliminate if
9222         LHS of statements is not the same.
9223         * testsuite/gcc.dg/tree-ssa/ssa-dse-10.c: New.
9224
9225 2007-03-09  Chao-ying Fu  <fu@mips.com>
9226
9227         * doc/extend.texi (MIPS DSP Built-in Functions): Document the DSP
9228         REV 2.
9229         * doc/invoke.texi (-mdspr2): Document new option.
9230         * config/mips/mips.md (UNSPEC_ABSQ_S_QB .. UNSPEC_DPSQX_SA_W_PH):
9231         New unspec for DSP REV 2.
9232         (<u>mulsidi3_32bit_internal): Check if !TARGET_DSPR2, because
9233         these instructions are extended in DSP REV 2.
9234         (mips-dspr2.md): Include.
9235         * config/mips/mips.opt (mdspr2): New option.
9236         * config/mips/mips.c (mips_function_type): Add MIPS_V4QI_FTYPE_V4QI,
9237         MIPS_SI_FTYPE_SI_SI_SI, MIPS_DI_FTYPE_DI_USI_USI, MIPS_DI_FTYPE_SI_SI,
9238         MIPS_DI_FTYPE_USI_USI, MIPS_V2HI_FTYPE_SI_SI_SI.
9239         (override_options): Check TARGET_DSPR2 to enable MASK_DSP.
9240         (CODE_FOR_mips_mul_ph): Define it to CODE_FOR_mulv2hi3.
9241         (dsp_bdesc): Add DSP REV 2 builtins.  Remove 32-bit only DSP builtins.
9242         (dsp_32only_bdesc): New description table for 32-bit only DSP REV 1
9243         and 2 builtins.
9244         (bdesc_map): Add one field of unsupported_target_flags.
9245         (bdesc_arrays):  Update entries to have extra fields.  Add
9246         dsp_32only_bdesc.
9247         (mips_init_builtins): Initialize new function types.
9248         Check unsupported_target_fileds to filter out builtins.
9249         * config/mips/mips.h (TARGET_CPU_CPP_BUILTINS): Define __mips_dspr2 if
9250         TARGET_DSPR2.
9251         (ASM_SPEC): Pass mdspr2 to the assembler.
9252         * config/mips/mips-dspr2.md: New file.
9253
9254 2007-03-09  Sa Liu  <saliu@de.ibm.com>
9255
9256         * config/rs6000/altivec.md: Fix vcond patterns using if_then_else.
9257
9258 2007-03-09  Ian Lance Taylor  <iant@google.com>
9259
9260         * opts.c (common_handle_option): Treat -Wstrict-overflow (with no
9261         argument) like -Wstrict-overflow=2.
9262         * doc/invoke.texi (Warning Options): Update documentation.
9263
9264 2007-03-09  Dirk Mueller  <dmueller@suse.de>
9265
9266         PR c++/17946
9267         * doc/invoke.texi (-Wlogical-op): Document.
9268         * common.opt (-Wlogical-op): New.
9269         * c-common.h (warn_logical_operator): Declare.
9270         * c-common.c (warn_logical_operator): Define.
9271         * c-typeck.c (parser_build_binary_op): Call
9272         warn_logical_operator.
9273
9274 2007-03-09  Alexandre Oliva  <aoliva@redhat.com>
9275
9276         * rtl.h (gen_rtx_ASM_INPUT): Use "" instead of NULL file name.
9277         * final.c (final_scan_insn): Test for non-"" file name.
9278
9279 2007-03-09  Sebastian Pop  <sebastian.pop@inria.fr>
9280
9281         * doc/loop.texi: Document the Omega linear constraints solver.
9282         * doc/invoke.texi: Document -fcheck-data-deps, omega-max-vars,
9283         omega-max-geqs, omega-max-eqs, omega-max-wild-cards,
9284         omega-hash-table-size, omega-max-keys, and
9285         omega-eliminate-redundant-constraints.
9286         * tree-pass.h (pass_check_data_deps): Declared.
9287         * omega.c: New.
9288         * omega.h: New.
9289         * timevar.def (TV_CHECK_DATA_DEPS): Declared.
9290         * tree-ssa-loop.c (check_data_deps, gate_check_data_deps,
9291         pass_check_data_deps): New.
9292         * tree-data-ref.c (init_data_ref): Remove declaration.
9293         (dump_data_dependence_relation): Dump DDR_INNER_LOOP.
9294         (analyze_array): Renamed init_array_ref, move up initializations.
9295         (init_data_ref): Renamed init_pointer_ref.  Moved before its call.
9296         Removed arguments that are set to NULL.
9297         (analyze_indirect_ref): Correct indentation, correct call to
9298         init_pointer_ref.
9299         (object_analysis): Call init_array_ref instead of analyze_array.
9300         (initialize_data_dependence_relation): Initialize DDR_INNER_LOOP.
9301         (access_functions_are_affine_or_constant_p): Use DR_ACCESS_FNS instead
9302         of DR_ACCESS_FNS_ADDR.
9303         (init_omega_eq_with_af, omega_extract_distance_vectors,
9304         omega_setup_subscript, init_omega_for_ddr_1, init_omega_for_ddr,
9305         ddr_consistent_p): New.
9306         (compute_affine_dependence): Check consistency of ddrs when
9307         flag_check_data_deps is passed.
9308         (analyze_all_data_dependences): Uncomment.
9309         (tree_check_data_deps): New.
9310         * tree-data-ref.h: Include omega.h.
9311         (DR_ACCESS_FNS_ADDR): Removed.
9312         (data_dependence_relation): Add inner_loop.
9313         (DDR_INNER_LOOP): New.
9314         * common.opt (fcheck-data-deps): New.
9315         * tree-flow.h (tree_check_data_deps): Declare.
9316         * Makefile.in (TREE_DATA_REF_H): Depend on omega.h.
9317         (OBJS-common): Depend on omega.o.
9318         (omega.o): Define.
9319         * passes.c (pass_check_data_deps): Scheduled.
9320         * params.def (PARAM_OMEGA_MAX_VARS, PARAM_OMEGA_MAX_GEQS,
9321         PARAM_OMEGA_MAX_EQS, PARAM_OMEGA_MAX_WILD_CARDS,
9322         PARAM_OMEGA_HASH_TABLE_SIZE, PARAM_OMEGA_MAX_KEYS,
9323         PARAM_VECT_MAX_VERSION_CHECKS,
9324         PARAM_OMEGA_ELIMINATE_REDUNDANT_CONSTRAINTS): New.
9325
9326 2007-03-09  Richard Guenther  <rguenther@suse.de>
9327
9328         PR tree-optimization/30904
9329         PR middle-end/31058
9330         * tree-vrp.c (extract_range_from_binary_expr): Handle RSHIFT_EXPR
9331         the same way as *_DIV_EXPR.
9332
9333 2007-03-09  Alexandre Oliva  <aoliva@redhat.com>
9334
9335         * recog.c (decode_asm_operands): No mixed declarations and code.
9336
9337 2007-03-09  Alexandre Oliva  <aoliva@redhat.com>
9338
9339         * rtl.def (ASM_INPUT): Add location.
9340         * rtl.h (ASM_INPUT_SOURCE_LOCATION): New.
9341         (ASM_INPUT_SOURCE_FILE, ASM_INPUT_SOURCE_LINE): New.
9342         (decode_asm_operands): Add loc operand.
9343         (gen_rtx_ASM_INPUT, gen_rtx_ASM_INPUT_loc): Define.
9344         * stmt.c (expand_asm): Rename to...
9345         (expand_asm_loc): ... this.  Add locus argument.  Pass it on to
9346         gen_rtx_ASM_INPUT_loc.
9347         (expand_asm_expr): Adjust.
9348         * recog.c (decode_asm_operands): Add loc operand.
9349         (check_asm_operands, extract_insn): Adjust.
9350         * reload1.c (maybe_fix_stack_asms): Likewise.
9351         * final.c (asm_insn_count): Likewise.
9352         (final_scan_insn): Output # line before and after asm.
9353
9354 2007-03-09  Daniel Berlin  <dberlin@dberlin.org>
9355
9356         * tree-ssa-structalias.c (variable_info): Remove
9357         finished_solution.
9358         (new_var_info): Ditto.
9359         (shared_bitmap_info_t): New structure.
9360         (shared_bitmap_table): New variable.
9361         (shared_bitmap_hash): New function.
9362         (shared_bitmap_eq): Ditto
9363         (shared_bitmap_lookup): Ditto.
9364         (shared_bitmap_add): Ditto.
9365         (merge_smts_into): Change to take bitmap directly.
9366         (find_what_p_points_to): Rewrite to use shared bitmap hashtable.
9367         (init_alias_vars): Init shared bitmap hashtable.
9368         (delete_points_to_sets): Delete shared bitmap hashtable.
9369         * tree-ssa-operands.c (add_virtual_operand): Partially revert the
9370         is_aliased removal as a change that was still necessary was
9371         deleted.
9372
9373 2007-03-09  Uros Bizjak  <ubizjak@gmail.com>
9374
9375         * config/i386/i386.h (override_options): Conditionally disable
9376         x86_sahf for 64bit targets only.
9377
9378 2007-03-08  Andrew Pinski  <andrew_pinski@playstation.sony.com>
9379
9380         PR C/31072
9381         * c-decl.c (merge_decls): Don't call make_var_volatile.
9382         * varasm.c (make_var_volatile): Remove.
9383         * output.h (make_var_volatile): Remove.
9384
9385 2007-03-08  Zdenek Dvorak  <dvorakz@suse.cz>
9386
9387         PR tree-optimization/31085
9388         * tree-ssa-address.c (create_mem_ref): Fix test of type of base.
9389
9390 2007-03-08  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
9391
9392         * builtins.def (lceil, lceilf, lceill, lfloor, lfloorf, lfloorl,
9393         llceil, llceilf, llceill, llfloor, llfloorf, llfloorl): Mark with
9394         ATTR_CONST_NOTHROW_LIST.
9395
9396         * fold-const.c (tree_expr_nonnegative_warnv_p): Handle
9397         FIX_TRUNC_EXPR.
9398
9399 2007-03-08  Diego Novillo  <dnovillo@redhat.com>
9400
9401         * doc/tree-ssa.texi: Remove documentation for V_MUST_DEF.
9402
9403 2007-03-08  Geoffrey Keating  <geoffk@apple.com>
9404
9405         PR 31013
9406         * gccspec.c (lang_specific_driver): Do nothing when NEXT_OBJC_RUNTIME
9407         is declared.
9408         * config/darwin.h (REAL_LIBGCC_SPEC): When -fgnu-runtime is
9409         passed, use shared libgcc.
9410
9411 2007-03-08  Roger Sayle  <roger@eyesopen.com>
9412
9413         * tree-eh.c (do_return_redirection): Call build_gimple_modify_stmt
9414         instead of calling build2 with a GIMPLE_MODIFY_STMT.
9415         (honor_protect_cleanup_actions, lower_try_finally_switch):
9416         Likewise.
9417         * tree-if-conv.c (replace_phi_with_cond_gimple_modify_stmt,
9418         ifc_temp_var): Likewise.
9419         * tree-inline.c (setup_one_parameter): Likewise.
9420         * tree-mudflap.c (mf_decl_cache_locals,
9421         mf_build_check_statement_for): Likewise.
9422         * tree-nested.c (init_tmp_var, save_tmp_var,
9423         finalize_nesting_tree_1): Likewise.
9424         * tree-outof-ssa.c (insert_copy_on_edge,
9425         insert_backedge_copies): Likewise.
9426         * tree-profile.c (tree_gen_edge_profiler,
9427         tree_gen_ic_profiler): Likewise.
9428         * tree-scalar-evolution.c (scev_const_prop): Likewise.
9429         * tree-sra.c (sra_build_assignment): Likewise.
9430         * tree-ssa-loop-im.c (determine_invariantness_stmt): Likewise.
9431         * tree-ssa-math-opts.c (insert_reciprocals,
9432         execute_cse_sincos_1): Likewise.
9433         * tree-tailcall.c (adjust_accumulator_values,
9434         adjust_return_value): Likewise.
9435         * tree-vect-patterns.c (vect_pattern_recog_1): Likewise.
9436         * tree-vect-transform.c (vect_create_data_ref_ptr,
9437         bump_vector_ptr, vect_init_vector, get_initial_def_for_induction,
9438         vect_create_epilog_for_reduction, vectorizable_reduction,
9439         vectorizable_call, vectorizable_conversion,
9440         vectorizable_assignment, vectorizable_operation,
9441         vectorizable_type_demotion, vect_gen_widened_results_half,
9442         vect_permute_store_chain, vectorizable_store,
9443         vect_setup_realignment, vect_permute_load_chain,
9444         vectorizable_load, vectorizable_condition,
9445         vect_create_cond_for_align_checks): Likewise.
9446         * tree-vrp.c (build_assert_expr_for): Likewise.
9447
9448 2007-03-08  Ian Lance Taylor  <iant@google.com>
9449
9450         * tree-vrp.c: Include "intl.h".
9451         (usable_range_p): New static function.
9452         (compare_values_warnv): Don't test TYPE_OVERFLOW_UNDEFINED for
9453         overflowed values, juts set *strict_overflow_p.
9454         (compare_values): Only return -2 if one of the operands is not a
9455         constant.
9456         (compare_ranges): Call usable_range_p.
9457         (compare_range_with_value): Likewise.
9458         (vrp_evaluate_conditional_warnv): Rename from
9459         vrp_evaluate_conditional.  Make static.  Change all callers.
9460         (vrp_evaluate_conditional): New function.
9461         (simplify_div_or_mod_using_ranges): Issue warning about reliance
9462         on signed overflow.
9463         (simplify_abs_using_ranges): Likewise.
9464         (simplify_stmt_for_jump_threading): Add within_stmt parameter.
9465         * tree-ssa-dom.c (simplify_stmt_for_jump_threading): Add
9466         within_stmt parameter.
9467         * tree-ssa-propagate.c (fold_predicate_in): Update call to
9468         vrp_evaluate_conditional.
9469         * tree-ssa-threadedge.c
9470         (record_temporary_equivalences_from_stmts_at_dest): Change
9471         simplify parameter to take a second tree parameter.
9472         (simplify_control_stmt_condition): Likewise.
9473         (thread_across_edge): Likewise.
9474         * tree-flow.h (vrp_evaluate_conditional): Update declaration.
9475         (thread_across_edge): Likewise.
9476         * Makefile.in (tree-vrp.o): Depend upon intl.h.
9477
9478 2007-03-08  Uros Bizjak  <ubizjak@gmail.com>
9479
9480         * config/i386/i386.h (TARGET_SAHF): New define.
9481         * config/i386/i386.c (ix86_tune_features) [X86_TUNE_USE_SAHF]:
9482         Also enable for m_K8, m_AMDFAM10 and m_CORE2.
9483         (x86_sahf): New global variable.
9484         (override_options): Add PTA_NO_SAHF to pta_flags enum.  Recode
9485         pta_flags masks using shifts.  Add PTA_NO_SAHF to x86_64 and
9486         nocona processor flags.  Set x86_sahf when PTA_NO_SAHF is not set
9487         in processor flags.  Do not unconditionally disable TARGET_USE_SAHF
9488         for 64-bit.
9489         (ix86_fp_comparison_sahf_cost): Return high value for !TARGET_SAHF.
9490         (ix86_expand_fp_compare): Check for TARGET_CMOVE or TARGET_SAHF
9491         when expanding fcomi/sahf based tests.
9492         (ix86_emit_fp_unordered_jump): Check for TARGET_SAHF when
9493         expanding sahf based alternative. Emit sahf based sequence when
9494         optimizing for code size.
9495         * config/i386/i386.md (x86_sahf_1): Do not disable for
9496         TARGET_64BIT, enable for TARGET_SAHF.
9497
9498 2007-03-08  Martin Michlmayr  <tbm@cyrius.com>
9499
9500         * tree-ssa-coalesce.c (fail_abnormal_edge_coalesce): Remove
9501         spurious whitespace from error message.
9502
9503 2007-03-08  Volker Reichelt  <reichelt@netcologne.de>
9504
9505         PR c++/30852
9506         * c-common.c (fold_offsetof_1): Handle COMPOUND_EXPR.
9507
9508 2007-03-08  Alexandre Oliva  <aoliva@redhat.com>
9509
9510         * c-decl.c (grokdeclarator): Disable warnings for anonymous
9511         bitfields.
9512         * tree-sra.c (instantiate_element): Propagate disabled warnings
9513         from the element itself to the created variable.
9514
9515 2007-03-07  Richard Henderson  <rth@redhat.com>
9516
9517         PR target/30848
9518         * reg-stack.c (emit_swap_insn): If a malformed asm was seen,
9519         silently fix up the stack in the case of a missing register.
9520
9521 2007-03-07  Paul Brook  <paul@codesourcery.com>
9522
9523         * config/arm/libunwind.S: Add .arch/.object_arch for armv4 builds.
9524
9525 2007-03-07  Joseph Myers  <joseph@codesourcery.com>
9526
9527         * config/arm/unwind-arm.c (struct wmmxd_regs, struct wmmxc_regs):
9528         New.
9529         (phase1_vrs): Use them.
9530         (DEMAND_SAVE_WMMXD, DEMAND_SAVE_WMMXC): New.
9531         (__gnu_Unwind_Save_WMMXD, __gnu_Unwind_Restore_WMMXD,
9532         __gnu_Unwind_Save_WMMXC, __gnu_Unwind_Restore_WMMXC): Declare.
9533         (restore_non_core_regs): Call __gnu_Unwind_Restore_WMMXD and
9534         __gnu_Unwind_Restore_WMMXC if required.
9535         (_Unwind_VRS_Pop): Implement iWMMXt support.
9536         * config/arm/libunwind.S (gnu_Unwind_Restore_WMMXD,
9537         gnu_Unwind_Save_WMMXD, gnu_Unwind_Restore_WMMXC,
9538         gnu_Unwind_Save_WMMXC): Define.
9539
9540 2007-03-07  Richard Sandiford  <richard@codesourcery.com>
9541
9542         * config/vxworks.h (vxworks_override_options): Declare.
9543         (VXWORKS_OVERRIDE_OPTIONS): Use it.
9544         * config/vxworks.c: Include target.h and toplev.h.
9545         (vxworks_override_options): New function.
9546         * config/t-vxworks (vxworks.o): Depend on $(TARGET_H) and toplev.h.
9547
9548 2007-03-07  Andreas Krebbel  <krebbel1@de.ibm.com>
9549
9550         * config/s390/s390.c (override_options): Don't emit an error when
9551         -mstack-size is used without providing -mstack-guard.
9552         (s390_emit_prologue): Choose stack_guard value automatically if not
9553         provided via command line.
9554         * doc/invoke.texi: Adjust description of -mstack-guard and -mstack-size.
9555
9556 2007-03-07  Richard Sandiford  <richard@codesourcery.com>
9557
9558         * config/i386/i386.c (output_set_got): Add a GOT initialization
9559         sequence for VxWorks PIC.
9560         (legitimate_pic_address_disp_p): Allow UNSPEC_GOT wrappers
9561         around labels as well as symbols.  Use gotoff_operand instead
9562         of local_symbolic_operand.
9563         (legitimize_pic_address): Use gotoff_operand instead of
9564         local_symbolic_operand.  Use @GOT accesses for labels as
9565         well as symbols.
9566         (ix86_output_addr_diff_elt): Use PC-relative rather than
9567         GP-relative offsets for VxWorks PIC.
9568         (ix86_expand_move): Pass NULL_RTX to legitimize_pic_address unless
9569         no_new_pseudos.  Check whether the returned register is op0.
9570         * config/i386/i386.md (tablejump): Use PC-relative rather than
9571         GP-relative offsets for VxWorks PIC.
9572         * config/i386/predicates.md (gotoff_operand): New predicate.
9573
9574 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
9575
9576         * config/vxworks.h (VXWORKS_GOTT_BASE, VXWORKS_GOTT_INDEX): Undefine
9577         before defining.
9578         * config/vxworks-dummy.h: New file.
9579         * config/i386/i386.h: Include it.
9580
9581 2007-03-07  Alexandre Oliva  <aoliva@redhat.com>
9582
9583         * dwarf2out.c (is_inlined_entry_point): New
9584         (add_high_low_attributes): Emit DW_AT_entry_pc along with
9585         DW_AT_ranges if the first subblock is the entry point.
9586
9587 2007-03-06  David Daney  <ddaney@avtrex.com>
9588
9589         * doc/install.texi (mips-*-*): Change recommended binutils
9590         version.
9591
9592 2007-03-06  Anatoly Sokolov <aesok@post.ru>
9593
9594         * config/avr/avr.c (avr_mcu_types): Add support for ATmega325P,
9595         ATmega3250P, ATmega329P, ATmega3290P, AT90USB82 and AT90USB162
9596         devices.
9597         * config/avr/avr.h (LINK_SPEC, CRT_BINUTILS_SPECS): (Ditto.).
9598         * config/avr/t-avr (MULTILIB_MATCHES): (Ditto.).
9599
9600 2007-03-06  Jan Hubicka  <jh@suse.cz>
9601
9602         * errors.h (warning, error, fatal, internal_error): Mark as cold.
9603         * predict.c (maybe_hot_bb): Cold functions are never hot; hot functions
9604         are hot.
9605         (probably_cold_bb_p): Cold functions are cold.
9606         (probably_never_executed_bb_p): Cold functions are cold.
9607         (tree_bb_level_predictions): Predict calls to cold functions as not
9608         taken.
9609         (compute_function_frequency): Check hot/cold attributes.
9610         * function.h (function_frequency): Update comments.
9611         * predict.def (PRED_COLD_FUNCTION): Predict cold function.
9612         * c-common.c (handle_hot_attribute, handle_cold_attribute): New.
9613         (c_common_att): Add cold and hot.
9614
9615         * doc/extend.texi (hot,cold attributes): Document.
9616
9617 2007-03-06  Andrew Haley  <aph@redhat.com>
9618
9619         * function.c (expand_function_end): Move blockage to just after we
9620         emit the label for the naked return from the function.
9621
9622 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
9623
9624         * config/i386/att.h (ASM_OUTPUT_ASCII, ASM_OUTPUT_SKIP): Undefine
9625         before redefining.
9626
9627 2007-03-06  Jan Hubicka  <jh@suse.cz>
9628
9629         * reg-stack.c (reg_to_stack): Large models don't allow NAN to be
9630         loaded for constant large models.  Non-large 64bit PIC can do.
9631         * i386.h (CASE_VECTOR_MODE): Large PIC cases are 64bit.
9632         * cmodel.h: Add LARGE PIC.
9633         * i386.md (UNSPEC_PLTOFF): New.
9634         (UNSPEC_SET_RIP, UNSPEC_SET_GOT_OFFSET): New; renumber other unspecs as
9635         needed.
9636         (*call_1_rex64): Disable for large models.
9637         (*call_1_rex64_large): New.
9638         (*call_value_1_rex64): Disable for large models.
9639         (*call_value_1_rex64_large): New.
9640         (set_rip_rex4): New.
9641         (set_got_offset_rex64): New.
9642         * predicates.md (constant_call_address_operand): For large model
9643         constant calls are not possible.
9644         * i386-protos.h (construct_plt_address): Declare.
9645         * i386.c (override_options): Accept large models.
9646         (ix86_expand_prologue): Expand large PIC GOT pointer load.
9647         (legitimate_constant_p): Add new UNSPECs.
9648         (legitimate_pic_operand_p): Likewise.
9649         (legitimate_pic_address_disp_p): Disallow local symbols for large PICs.
9650         (legitimize_pic_address): Do easy RIP relative way for TLS only for
9651         non-large model.
9652         (output_pic_addr_const): Add PLTOFF.
9653         (ix86_output_addr_diff_elt): Output 64bit tables when needed.
9654         (ix86_expand_move): Legitimize pic address when in PIC mode.
9655         (construct_plt_address): New function.
9656         (ix86_expand_call): Offload the address to register and use GOT pointer
9657         for large model.
9658         * invoke.texi (mcmodel=large): Update documentation.
9659
9660 2007-03-06  Richard Henderson  <rth@redhat.com>
9661
9662         * config/i386/i386.c (x86_use_leave, x86_push_memory,
9663         x86_zero_extend_with_and, x86_movx, x86_double_with_add,
9664         x86_use_bit_test, x86_unroll_strlen, x86_deep_branch,
9665         x86_branch_hints, x86_use_sahf, x86_partial_reg_stall,
9666         x86_partial_flag_reg_stall, x86_use_himode_fiop, x86_use_simode_fiop,
9667         x86_use_mov0, x86_use_cltd, x86_read_modify_write, x86_read_modify,
9668         x86_split_long_moves, x86_promote_QImode, x86_fast_prefix,
9669         x86_single_stringop, x86_qimode_math, x86_promote_qi_regs,
9670         x86_himode_math, x86_promote_hi_regs, x86_sub_esp_4, x86_sub_esp_8,
9671         x86_add_esp_4, x86_add_esp_8, x86_integer_DFmode_moves,
9672         x86_partial_reg_dependency, x86_memory_mismatch_stall,
9673         x86_prologue_using_move, x86_epilogue_using_move, x86_shift1,
9674         x86_sse_partial_reg_dependency, x86_sse_split_regs,
9675         x86_sse_unaligned_move_optimal, x86_sse_typeless_stores,
9676         x86_sse_load0_by_pxor, x86_use_ffreep, x86_use_incdec,
9677         x86_inter_unit_moves, x86_ext_80387_constants, x86_four_jump_limit,
9678         x86_schedule, x86_use_bt, x86_pad_returns,
9679         x86_use_xchgb): Merge into ...
9680         (ix86_tune_features): ... here.  New array.
9681         (x86_cmove, x86_cmpxchg, x86_cmpxchg8b, x86_xadd,
9682         x86_bswap): Merge into ...
9683         (ix86_arch_features): ... here.  New array.
9684         (x86_3dnow_a): Remove.
9685         (x86_accumulate_outgoing_args): Make static.
9686         (x86_arch_always_fancy_math_387): Make static.
9687         (ix86_tune_mask, ix86_arch_mask): Move ...
9688         (override_options): ... to local variables here.  Apply the
9689         appropriate mask to each element of ix86_arch_features and
9690         ix86_tune_features.  Adjust TARGET_CMOVE and TARGET_USE_SAHF
9691         as were done in the old macros.
9692         (standard_80387_constant_p): Use TARGET_EXT_80387_CONSTANTS.
9693         * config/i386/i386.h (x86_use_leave, x86_push_memory,
9694         x86_zero_extend_with_and, x86_use_bit_test, x86_cmove, x86_deep_branch,
9695         x86_branch_hints, x86_unroll_strlen, x86_double_with_add,
9696         x86_partial_reg_stall, x86_movx, x86_use_himode_fiop,
9697         x86_use_simode_fiop, x86_use_mov0, x86_use_cltd, x86_use_xchgb,
9698         x86_read_modify_write, x86_read_modify, x86_split_long_moves,
9699         x86_promote_QImode, x86_single_stringop, x86_fast_prefix,
9700         x86_himode_math, x86_qimode_math, x86_promote_qi_regs,
9701         x86_promote_hi_regs, x86_integer_DFmode_moves, x86_add_esp_4,
9702         x86_add_esp_8, x86_sub_esp_4, x86_sub_esp_8,
9703         x86_partial_reg_dependency, x86_memory_mismatch_stall,
9704         x86_accumulate_outgoing_args, x86_prologue_using_move,
9705         x86_epilogue_using_move, x86_decompose_lea,
9706         x86_arch_always_fancy_math_387, x86_shift1,
9707         x86_sse_partial_reg_dependency, x86_sse_split_regs,
9708         x86_sse_unaligned_move_optimal, x86_sse_typeless_stores,
9709         x86_sse_load0_by_pxor, x86_use_ffreep, x86_inter_unit_moves,
9710         x86_schedule, x86_use_bt, x86_cmpxchg, x86_cmpxchg8b, x86_xadd,
9711         x86_use_incdec, x86_pad_returns, x86_bswap,
9712         x86_partial_flag_reg_stall): Remove.
9713         (enum ix86_tune_indices): New.
9714         (ix86_tune_features): New.
9715         (TARGET_USE_LEAVE, TARGET_PUSH_MEMORY, TARGET_ZERO_EXTEND_WITH_AND,
9716         TARGET_USE_BIT_TEST, TARGET_UNROLL_STRLEN,
9717         TARGET_DEEP_BRANCH_PREDICTION, TARGET_BRANCH_PREDICTION_HINTS,
9718         TARGET_DOUBLE_WITH_ADD, TARGET_USE_SAHF, TARGET_MOVX,
9719         TARGET_PARTIAL_REG_STALL, TARGET_PARTIAL_FLAG_REG_STALL,
9720         TARGET_USE_HIMODE_FIOP, TARGET_USE_SIMODE_FIOP, TARGET_USE_MOV0,
9721         TARGET_USE_CLTD, TARGET_USE_XCHGB, TARGET_SPLIT_LONG_MOVES,
9722         TARGET_READ_MODIFY_WRITE, TARGET_READ_MODIFY, TARGET_PROMOTE_QImode,
9723         TARGET_FAST_PREFIX, TARGET_SINGLE_STRINGOP, TARGET_QIMODE_MATH,
9724         TARGET_HIMODE_MATH, TARGET_PROMOTE_QI_REGS, TARGET_PROMOTE_HI_REGS,
9725         TARGET_ADD_ESP_4, TARGET_ADD_ESP_8, TARGET_SUB_ESP_4,
9726         TARGET_SUB_ESP_8, TARGET_INTEGER_DFMODE_MOVES,
9727         TARGET_PARTIAL_REG_DEPENDENCY, TARGET_SSE_PARTIAL_REG_DEPENDENCY,
9728         TARGET_SSE_UNALIGNED_MOVE_OPTIMAL, TARGET_SSE_SPLIT_REGS,
9729         TARGET_SSE_TYPELESS_STORES, TARGET_SSE_LOAD0_BY_PXOR,
9730         TARGET_MEMORY_MISMATCH_STALL, TARGET_PROLOGUE_USING_MOVE,
9731         TARGET_EPILOGUE_USING_MOVE, TARGET_SHIFT1, TARGET_USE_FFREEP,
9732         TARGET_INTER_UNIT_MOVES, TARGET_FOUR_JUMP_LIMIT, TARGET_SCHEDULE,
9733         TARGET_USE_BT, TARGET_USE_INCDEC, TARGET_PAD_RETURNS,
9734         TARGET_EXT_80387_CONSTANTS): Use it.
9735         (enum ix86_arch_indices): New.
9736         (ix86_arch_features): New.
9737         (TARGET_CMOVE, TARGET_CMPXCHG, TARGET_CMPXCHG8B, TARGET_XADD,
9738         TARGET_BSWAP): Use it.
9739         (ix86_tune_mask, ix86_arch_mask): Remove.
9740
9741 2007-03-06  Joseph Myers  <joseph@codesourcery.com>
9742
9743         PR bootstrap/31020
9744         * configure.ac (CROSS_SYSTEM_HEADER_DIR, build_system_header_dir):
9745         Define using $${sysroot_headers_suffix}.
9746         * configure: Regenerate.
9747         * cppdefault.c (cpp_include_defaults): Make FIXED_INCLUDE_DIR a
9748         multilib-suffixed directory if SYSROOT_HEADERS_SUFFIX_SPEC
9749         defined.
9750         * doc/invoke.texi (-print-sysroot-headers-suffix): Document.
9751         * gcc.c (print_sysroot_headers_suffix): New.
9752         (option_map): Include --print-sysroot-headers-suffix.
9753         (display_help): Mention -print-sysroot-headers-suffix.
9754         (process_command): Handle -print-sysroot-headers-suffix.
9755         (do_spec_1): Append multilib directory to include-fixed path if
9756         sysroot suffixes in use.
9757         (main): Handle -print-sysroot-headers-suffix.
9758         * Makefile.in (start.encap): Don't depend on xlimits.h
9759         (xlimits.h): Remove.
9760         (stmp-int-hdrs): Don't depend on xlimits.h.  Inline generation of
9761         limits.h for each multilib in fixinc_list.
9762         (fixinc_list, s-fixinc_list): New.
9763         (stmp-fixinc): Depend on fixinc_list.  If not copying headers,
9764         generate them for each multilib in fixinc_list.
9765         (stmp-fixproto): Use include-fixed.  Run fixproto for each
9766         multilib in fixinc_list.
9767         (mostlyclean): Don't remove xlimits.h.
9768         (clean): Remove include-fixed.
9769         (real-install-headers-tar, real-install-headers-cpio,
9770         real-install-headers-cp): Don't copy include, only include-fixed.
9771         (install-mkheaders): Depend on fixinc_list.  Don't depend on
9772         xlimits.h.  Save limits.h files for each multilib in fixinc_list.
9773         Always save mkinstalldirs.  Preserve ${sysroot_headers_suffix} in
9774         SYSTEM_HEADER_DIR setting in mkheaders.conf.
9775
9776 2007-03-06  Jan Hubicka  <jh@suse.cz>
9777
9778         * regstack.c (reg_to_stack): When in 64bit PIC mode, we still can load
9779         NANs easilly.
9780
9781 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
9782
9783         * configure.ac: Allow tm_file to contain build-directory files.
9784         * configure: Regenerate.
9785         * config.gcc (m68k-*-uclinux*): Add ./sysroot-suffix.h to tm_file.
9786         * config/m68k/t-uclinux (sysroot-suffix.h): New target.
9787         * config/m68k/print-sysroot-suffix.sh: New file.
9788
9789 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
9790
9791         * config/m68k/m68k.h (PIC_OFFSET_TABLE_REGNUM): Use the REGNO
9792         of pic_offset_table_rtx if reload_completed.
9793         (CONDITIONAL_REGISTER_USAGE): Use PIC_REG instead of
9794         PIC_OFFSET_TABLE_REGNUM.
9795         * config/m68k/m68k.c (TARGET_ASM_CAN_OUTPUT_MI_THUNK): Always
9796         return true.
9797         (m68k_save_reg): Use PIC_REG instead of PIC_OFFSET_TABLE_REGNO.
9798         (m68k_output_mi_thunk): Rewrite to use RTL.  Honor vcall_offset.
9799
9800 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
9801
9802         * config/m68k/m68k.c (m68k_save_reg): Save the PIC register in
9803         functions that call eh_return.
9804
9805 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
9806
9807         * config/m68k/m68k.c (m68k_save_reg): Save the PIC register in
9808         functions that need a constant pool.
9809
9810 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
9811
9812         PR target/28181
9813         * config/m68k/m68k-protos.h (m68k_secondary_reload_class): Declare.
9814         (m68k_preferred_reload_class): Likewise.
9815         * config/m68k/m68k.h (HARD_REGNO_MODE_OK): Remove duplicated comment.
9816         (SECONDARY_RELOAD_CLASS): Define.
9817         (PREFERRED_RELOAD_CLASS): Use m68k_preferred_reload_class.
9818         (LIMIT_RELOAD_CLASS): Delete.
9819         * config/m68k/m68k.c (m68k_regno_mode_ok): Don't prevent address
9820         registers from storing bytes.
9821         (m68k_secondary_reload_class): New function.
9822         (m68k_preferred_reload_class): Likewise.
9823
9824 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
9825
9826         * config/m68k/m68k.c (m68k_save_reg): Remove special case for
9827         leaf functions.
9828         (m68k_expand_prologue): Likewise.
9829
9830 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
9831
9832         * config/m68k/m68k-protos.h (output_sibcall): Declare.
9833         (mips_expand_epilogue): Add a bool parameter.
9834         (m68k_legitimize_sibcall_address): Declare.
9835         * config/m68k/m68k.c (TARGET_FUNCTION_OK_FOR_SIBCALL): Define.
9836         (m68k_expand_epilogue): Add a parameter to select between sibling
9837         and normal epilogues.  Only generate a return for the latter.
9838         (m68k_ok_for_sibcall_p): New function.
9839         (m68k_legitimize_sibcall_address, output_sibcall): New functions.
9840         * config/m68k/m68k.md (sibcall, *sibcall): New patterns.
9841         (sibcall_value, *sibcall_value): Likewise.
9842         (*call, *call_value): Require !SIBLING_CALL_P.
9843         (epilogue): Update call to m68k_expand_epilogue.
9844         (sibcall_epilogue): New pattern.
9845         * config/m68k/predicates.md (const_call_operand): Say that this
9846         predicate applies to sibling calls too.
9847         (sibcall_operand): New predicate.
9848
9849 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
9850
9851         * config/m68k/m68k.md (movsf_cf_soft): Provide the same non-mov3q
9852         alternatives as movsi_cf.
9853         (movsf_cf_hard): Add commentary.
9854
9855 2007-03-06  Kazu Hirata  <kazu@codesourcery.com>
9856             Richard Sandiford  <richard@codesourcery.com>
9857
9858         * config/m68k/m68k-protos.h (m68k_interrupt_function_p): Declare.
9859         (m68k_movem_pattern_p, m68k_output_movem): Likewise.
9860         (m68k_expand_prologue, m68k_expand_epilogue): Likewise.
9861         * config/m68k/m68k.h (EPILOGUE_USES): Define.  Treat all registers
9862         as being live on exit from an interrupt function.
9863         (PRINT_OPERAND_PUNCT_VALID_P): Return true for '?'.
9864         * config/m68k/m68k.c (MIN_MOVEM_REGS, MIN_FMOVEM_REGS): New macros.
9865         (m68k_frame): Remove reg_rev_mask and fpu_rev_mask.
9866         (TARGET_ASM_FUNCTION_PROLOGUE, TARGET_ASM_FUNCTION_EPILOGUE): Delete.
9867         (m68k_interrupt_function_p): Globalize.
9868         (m68k_compute_frame_layout): Remove reverse mask code.
9869         (m68k_emit_movem, m68k_set_frame_related): New functions.
9870         (m68k_output_function_prologue): Delete in favor of...
9871         (m68k_expand_prologue): ...this new function.
9872         (m68k_output_function_epilogue): Delete in favor of...
9873         (m68k_expand_epilogue): ...this new function.
9874         (m68k_split_offset, m68k_movem_pattern_p, m68k_output_movem): New
9875         functions.
9876         (print_operand): Handle %?.
9877         * config/m68k/m68k.md (UNSPEC_SIN, UNSPEC_COS): Remove excess space.
9878         (UNSPEC_GOT, A1_REG, PIC_REG, FP0_REG): New constants.
9879         (prologue, epilogue): New patterns.
9880         (return): Turn into a define_expand.
9881         (*return): New pattern, derived from old "return" pattern.  Use rte
9882         rather than rts for interrupt functions.  Only use rtd if the pop
9883         count is nonzero.
9884         (*m68k_store_multiple, *m68k_store_multiple_automod): New patterns.
9885         (*m68k_load_multiple, *m68k_load_multiple_automod): Likewise.
9886         (link, *link, unlink, *unlink, load_got): Likewise.
9887
9888 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
9889
9890         PR target/23482
9891         PR target/17114
9892         * config/m68k/m68k-protos.h (m68k_legitimate_base_reg_p): Declare.
9893         (m68k_legitimate_index_reg_p, m68k_legitimate_address_p): Likewise.
9894         (m68k_matches_q_p, m68k_matches_u_p): Likewise.
9895         * config/m68k/m68k.h (EXTRA_CONSTRAINT): Use m68k_matches_q_p
9896         and m68k_matches_u_p.
9897         (PCREL_GENERAL_OPERAND_OK, LEGITIMATE_BASE_REG_P): Delete.
9898         (INDIRECTABLE_1_ADDRESS_P, GO_IF_NONINDEXED_ADDRESS): Delete.
9899         (GO_IF_INDEXABLE_BASE, GO_IF_INDEXING, GO_IF_INDEXED_ADDRESS): Delete.
9900         (LEGITIMATE_INDEX_REG_P, LEGITIMATE_INDEX_P): Delete.
9901         (GO_IF_COLDFIRE_FPU_LEGITIMATE_ADDRESS): Delete.
9902         (REG_STRICT_P): New macro.
9903         (LEGITIMATE_PIC_OPERAND_P): Use REG_STRICT_P rather than
9904         PCREL_GENERAL_OPERAND_OK.
9905         (REG_OK_FOR_BASE_P): Merge definitions.  Use REG_STRICT_P and
9906         m68k_legitimate_base_reg_p.
9907         (REG_MODE_OK_FOR_INDEX_P): Likewise m68k_legitimate_index_reg_p.
9908         (GO_IF_LEGITIMATE_ADDRESS): Likewise m68k_legitimate_address_p.
9909         (PIC_CASE_VECTOR_ADDRESS): Update comment.
9910         * config/m68k/m68k.c (m68k_address): New structure.
9911         (m68k_legitimate_base_reg_p, m68k_legitimate_index_reg_p)
9912         (m68k_decompose_index, m68k_legitimate_constant_address_p)
9913         (m68k_jump_table_ref_p, m68k_decompose_address)
9914         (m68k_legitimate_address_p, m68k_legitimate_mem_p, m68k_matches_q_p)
9915         (m68k_matches_u_p): New functions.
9916         (print_operand_address): Rewrite to use m68k_decompose_index.
9917
9918 2007-03-05  David Taylor  <dtaylor@emc.com>
9919
9920         * gcc.c: Correct copyright date in --version output.
9921
9922 2007-03-05  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
9923
9924         * pa.md: In unamed move patterns, disparge copies between general
9925         and floating point registers using '?' modifier.  Don't include 'f'
9926         constraint for register preferences in DImode, SImode, HImode and
9927         QImode patterns.  Likewise for 'r' in DFmode and SFmode patterns.
9928         Remove constraints for copies between general and floating registers
9929         in soft-float DFmode pattern.
9930         (movdf): Fail if operand1 is a CONST_DOUBLE and operand0 is a hard
9931         floating register.
9932         (movsf): Likewise.
9933
9934 2007-03-05  Mike Stump  <mrs@apple.com>
9935
9936         * c-common.c (targetcm): Add.
9937         * c-opts.c (c_common_handle_option): Handle language specific
9938         target options.
9939         * opts.c (handle_option): Verify language for target options, if
9940         any are given.
9941         * opth-gen.awk: Add CL_LANG_ALL.
9942         * target-def.h (TARGET_HANDLE_C_OPTION): Add.
9943         (TARGETCM_INITIALIZER): Add.
9944         * target.h (struct gcc_targetcm): Add.
9945         (targetcm): Add.
9946         * targhooks.c (default_handle_c_option): Add.
9947         * targhooks.h (default_handle_c_option): Add.
9948         * doc/tm.texi (TARGET_HANDLE_C_OPTION): Add.
9949
9950         * config/darwin.opt (iframework): Add.
9951         * config/darwin.h (TARGET_HAS_TARGETCM): Add.
9952         * config/darwin-c.c (handle_c_option): Add.
9953         (TARGET_HANDLE_C_OPTION): Add.
9954         (targetcm): Add.
9955         * doc/invoke.texi (Darwin Options): Add -iframework.
9956
9957 2007-03-05  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
9958
9959         * convert.c (convert_to_integer): Fix nearbyint/rint -> *lrint
9960         conversion.
9961
9962 2007-03-05  Ian Lance Taylor  <iant@google.com>
9963
9964         * c.opt (fgnu89-inline): New option.
9965         * c-opts.c (c_common_post_options): Set default value for
9966         flag_gnu89_inline.
9967         * c-decl.c (WANT_C99_INLINE_SEMANTICS): Remove.
9968         (pop_scope): Check flag_gnu89_inline rather than flag_isoc99 for
9969         inline functions.
9970         (diagnose_mismatched_decls, merge_decls, start_decl): Likewise.
9971         (grokdeclarator, start_function): Likewise.
9972         * c-cppbuiltin.c (c_cpp_builtins): Define either
9973         __GNUC_GNU_INLINE__ or __GNUC_STDC_INLINE__.
9974         * doc/invoke.texi (Option Summary): Mention -fgnu89-inline.
9975         (C Dialect Options): Document -fgnu89-inline.
9976         * doc/extend.texi (Function Attributes): Explain what the
9977         gnu_inline attribute does.
9978         * doc/cpp.texi (Common Predefined Macros): Document
9979         __GNUC_GNU_INLINE__ and __GNUC_STDC_INLINE__.
9980
9981 2007-03-05  Ian Lance Taylor  <iant@google.com>
9982
9983         PR tree-optimization/31034
9984         * tree-vrp.c (extract_range_from_assert): Don't try to handle a
9985         half-range if the other side is an overflow infinity.
9986
9987 2007-03-05  Bernd Schmidt  <bernd.schmidt@analog.com>
9988
9989         * config.gcc (bfin*-uclinux*): Use t-bfin-uclinux.
9990         (bfin*-linux-uclibc*): New configuration.
9991         * config/linux.h (LINK_GCC_C_SEQUENCE_SPEC): Undefined before
9992         defining.
9993         * config/bfin/linux.h: New file.
9994         * config/bfin/libgcc-bfin.ver: New file.
9995         * config/bfin/t-bfin-uclinux: New file.
9996         * config/bfin/t-bfin-linux: New file.
9997         * config/bfin/uclinux.h (LINUX_TARGET_OS_CPP_BUILTINS): New macro.
9998         (TARGET_OS_CPP_BUILTINS): New macro.
9999
10000 2007-03-05  Richard Guenther  <rguenther@suse.de>
10001
10002         * fold-const.c (fold_binary): Remove duplicate folding
10003         of comparison of non-null ADDR_EXPR against null.
10004
10005 2007-03-05  Richard Guenther  <rguenther@suse.de>
10006             Dorit Nuzman  <dorit@il.ibm.com>
10007
10008         PR tree-optimization/26420
10009         * tree-vectorizer.c (vectorize_loops): Bail out early if there
10010         are no loops in the function.  Only print the number of
10011         vectorized loops if it is greater than zero or we are supposed
10012         to print information about unvectorized loops.
10013
10014 2007-03-05  Revital Eres  <eres@il.ibm.com>
10015
10016         * gcc.dg/var-expand1.c: New test.
10017         * loop-unroll.c (analyze_insn_to_expand_var): Add dump info
10018         when an accumulator is expanded.
10019
10020 2007-03-04  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
10021
10022         PR other/30465
10023         * c-common.c (convert_and_check): Don't give warnings for
10024         conversion if 'expr' already overflowed.
10025
10026 2007-03-04  Roger Sayle  <roger@eyesopen.com>
10027
10028         PR middle-end/30744
10029         * fold-const.c (fold_comparison): Enforce type consistency when
10030         transforming ~X op ~Y to Y op X, and ~X op C to X op' ~C.
10031
10032 2007-03-04  Zdenek Dvorak  <dvorakz@suse.cz>
10033
10034         * tree-ssa-address.c (create_mem_ref): Do not put an expression
10035         containing a cast to the base of TARGET_MEM_REF.
10036
10037 2007-03-04  Martin Michlmayr  <tbm@cyrius.com>
10038
10039         * tree.c (tree_contains_struct_check_failed): Remove spurious
10040         whitespace from error message.
10041
10042 2007-03-04 Andrew Pinski <andrew_pinski@playstation.sony.com>
10043
10044         PR target/30406
10045         * config/rs6000/rs6000.c (rs6000_function_value): Look at bit size
10046         instead of precision.
10047
10048 2007-03-04  Roman Zippel <zippel@linux-m68k.org>
10049             Nathan Sidwell  <nathan@codesourcery.com>
10050
10051         * emit-rtl.c (find_auto_inc): New.
10052         (try_split): recreate REG_INC notes,
10053         Use regular for loops rather than whiles.
10054
10055 2007-03-03  Andreas Schwab  <schwab@suse.de>
10056
10057         * configure.ac (HAVE_AS_REL16): Move test back to correct place.
10058         * configure: Regenerate.
10059
10060 2007-03-03  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
10061
10062         * builtins.def (ATTR_MATHFN_FPROUNDING): Rely on
10063         flag_rounding_math, not flag_unsafe_math_optimizations.
10064
10065         * c-pretty-print.c (pp_c_direct_abstract_declarator): Use
10066         fold_build2.
10067         * config/alpha/alpha.c (alpha_fold_builtin_zapnot,
10068         alpha_fold_vector_minmax): Likewise.
10069         * config/i386/i386.c (ix86_gimplify_va_arg): Likewise.
10070         * config/sparc/sparc.c (sparc_gimplify_va_arg): Likewise.
10071
10072 2007-03-02  Eric Botcazou  <ebotcazou@adacore.com>
10073
10074         * tree-sra.c (sra_walk_fns) <ldst>: Document new restriction.
10075         (sra_walk_modify_expr) <rhs_elt>: Treat the reference as a use
10076         if the lhs has side-effects.
10077         <lhs_elt>: Treat the reference as a use if the rhs has side-effects.
10078
10079 2007-03-02  Uros Bizjak  <ubizjak@gmail.com>
10080
10081         * config/i386/i386.h (TUNEMASK): Remove define.
10082         (ARCHMASK): Remove define.
10083         (TARGET_*): Use ix86_tune_mask variable instead of TUNEMASK.
10084          Use ix86_arch_mask variable instead of ARCHMASK.
10085         * config/i386/i386.c (override_options): Ditto.
10086         (standard_80387_constant_p): Ditto.
10087
10088 2007-03-02  Ian Lance Taylor  <iant@google.com>
10089
10090         Used signed infinities in VRP.
10091         * tree-vrp.c (uses_overflow_infinity): New static function.
10092         (supports_overflow_infinity): New static function.
10093         (make_overflow_infinity): New static function.
10094         (negative_overflow_infinity): New static function.
10095         (positive_overflow_infinity): New static function.
10096         (is_negative_overflow_infinity): New static function.
10097         (is_positive_overflow_infinity): New static function.
10098         (is_overflow_infinity): New static function.
10099         (overflow_infinity_range_p): New static function.
10100         (compare_values_warnv): New function split out of compare_values.
10101         (compare_value): Call it.
10102         (set_value_range_to_nonnegative): Add overflow_infinity
10103         parameter.  Change caller.
10104         (vrp_expr_computes_nonnegative): Add strict_overflow_p parameter.
10105         Change callers.
10106         (vrp_expr_computes_nonzero): Likewise.
10107         (compare_ranges, compare_range_with_value): Likewise.
10108         (compare_name_with_value, compare_names): Likewise.
10109         (vrp_evaluate_conditional): Likewise.
10110         (set_value_range): Handle infinity
10111         (vrp_operand_equal_p, operand_less_p): Likewise.
10112         (extract_range_from_assert): Likewise.
10113         (vrp_int_const_binop): Likewise.
10114         (extract_range_from_binary_expr): Likewise.
10115         (extract_range_from_unary_expr): Likewise.
10116         (extract_range_from_comparison): Likewise.
10117         (extract_range_from_expr): Likewise.
10118         (dump_value_range): Likewise.
10119         (vrp_visit_cond_stmt, vrp_visit_phi_node): Likewise.
10120         (test_for_singularity): Likewise.
10121         (vrp_int_const_binop): Remove inline qualifier.
10122         (adjust_range_with_scev): Add comment.
10123         * tree-flow.h (vrp_evaluate_conditional): Update declaration.
10124
10125 2007-03-02  Diego Novillo  <dnovillo@redhat.com>
10126
10127         * tree-ssa-structalias.c (could_have_pointers): Tidy.
10128         (get_constraint_for): Likewise.
10129         (do_structure_copy): Likewise.
10130         (find_func_aliases): Fix references to MODIFY_EXPR.
10131         (intra_create_variable_infos): Tidy.
10132         * tree-ssa-operands.c (add_virtual_operand): Add argument
10133         IS_CALL_SITE.
10134         When adding members of alias sets, if IS_CALL_SITE is true and
10135         the symbol is not call-clobbered, skip it.
10136         Adjust all callers.
10137
10138 2007-03-02  Eric Botcazou  <ebotcazou@adacore.com>
10139
10140         * config/alpha/alpha.c (alpha_gp_save_rtx): Insert the insns at the
10141         entry by means of emit_insn_at_entry.
10142
10143 2007-03-02  Richard Henderson  <rth@redhat.com>
10144
10145         * expr.h (promoted_input_arg): Remove decl.
10146         * function.c (promoted_input_arg): Merge into ...
10147         * combine.c (setup_incoming_promotions): ... only caller.
10148         Rearrange to avoid double loop.
10149
10150 2007-03-02  Ben Elliston  <bje@au.ibm.com>
10151             Peter Bergner  <bergner@vnet.ibm.com>
10152             Janis Johnson  <janis187@us.ibm.com>
10153
10154         * config/rs6000/dfp.md: New file.
10155         * config/rs6000/rs6000.md: Include dfp.md.
10156         (add<mode>3_internal1): Disable for DECIMAL_FLOAT_MODE_P operands.
10157         * config/rs6000/rs6000.c (rs6000_hard_regno_mode_ok): Handle DDmode
10158         and TDmode decimal float modes in FP registers.
10159         (num_insns_constant): Likewise.
10160         (rs6000_legitimate_offset_address_p): Likewise.
10161         (rs6000_legitimize_address): Likewise.
10162         (rs6000_legitimize_reload_address): Likewise.
10163         (rs6000_legitimate_address): Likewise.
10164         (rs6000_emit_move): Likewise.
10165         (function_arg_boundary): Likewise.
10166         (function_arg_advance): Likewise.
10167         (rs6000_darwin64_record_arg_recurse): Likewise.
10168         (function_arg): Likewise.
10169         (rs6000_gimplify_va_arg): Likewise.
10170         (rs6000_split_multireg_move): Likewise.
10171         (rs6000_output_function_epilogue): Likewise.
10172         (rs6000_output_function_epilogue): Likewise.
10173         (rs6000_register_move_cost): Likewise.
10174         (rs6000_function_value): Likewise.
10175         (rs6000_libcall_value): Likewise.
10176
10177 2007-03-02  Richard Sandiford  <richard@codesourcery.com>
10178
10179         * config/t-vxworks (LIMITS_H_TEST): Define to true for VxWorks.
10180
10181 2007-03-02  Richard Sandiford  <richard@codesourcery.com>
10182
10183         * config/t-vxworks (LIBGCC2_INCLUDES): Pass -nostdinc.
10184         Use $MULTIDIR to choose between the kernel and RTP headers,
10185         and use $WIND_BASE and $WIND_USR to locate them.
10186
10187 2007-03-02  Uros Bizjak  <ubizjak@gmail.com>
10188
10189         * config/i386/i386.c (override_options): Put initialization of
10190         ix86_tune_mask and ix86_arch_mask to the correct place.
10191
10192 2007-03-02  Uros Bizjak  <ubizjak@gmail.com>
10193             Michael Meissner  <michael.meissner@amd.com>
10194
10195         PR target/31019
10196         * config/i386/i386.h (TUNEMASK): Redefine to use ix86_tune_mask.
10197         (ARCHMASK): Define.
10198         (TARGET_CMOVE): Use ARCHMASK.
10199         (TARGET_CMPXCHG): Ditto.
10200         (TARGET_CMPXCHG8B): Ditto.
10201         (TARGET_XADD): Ditto.
10202         (TARGET_BSWAP): Ditto.
10203         * config/i386/i386.c (ix86_tune_mask): New global variable.
10204         (ix86_arch_mask): Ditto.
10205         (override_options): Initialize ix86_tune_mask and
10206         ix86_arch_mask. Use ARCHMASK to clear MASK_NO_FANCY_MATH_387 in
10207         target_flags.
10208
10209 2007-03-02  Ben Elliston  <bje@au.ibm.com>
10210
10211         PR 30992
10212         * config/dfp-bit.c (DFP_TO_INT): Initialise qval with "1.".
10213
10214 2007-03-02  Joseph Myers  <joseph@codesourcery.com>
10215
10216         * target.h (init_dwarf_reg_sizes_extra): New target hook.
10217         * target-def.h (TARGET_INIT_DWARF_REG_SIZES_EXTRA): New default.
10218         * doc/tm.texi (TARGET_INIT_DWARF_REG_SIZES_EXTRA): Document.
10219         * dwarf2out.c (expand_builtin_init_dwarf_reg_sizes): Call this
10220         hook.
10221         * config/rs6000/rs6000.c (TARGET_INIT_DWARF_REG_SIZES_EXTRA,
10222         rs6000_init_dwarf_reg_sizes_extra): New.
10223         * config/rs6000/linux-unwind.h (ppc_fallback_frame_state): Support
10224         SPE register high parts.
10225
10226 2007-03-01  Brooks Moses  <brooks.moses@codesourcery.com>
10227
10228         * Makefile.in: Add install-pdf target as
10229         copied from automake v1.10 rules.
10230         * configure.ac: Add install-pdf to target list.
10231         * configure: Regenerate.
10232
10233 2007-03-01  Paul Brook  <paul@codesourcery.com>
10234
10235         * config/arm/arm.c (arm_legitimate_index_p): Limit iWMMXt addressing
10236         modes to LDRD for DImode.
10237         (output_move_double): Fixup out of range ldrd/strd.
10238         (vfp_secondary_reload_class): Rename...
10239         (coproc_secondary_reload_class): ... to this.  Add wb argument.
10240         * config/arm/arm.h (SECONDARY_OUTPUT_RELOAD_CLASS): Use
10241         coproc_secondary_reload_class for CLASS_IWMMXT.
10242         (SECONDARY_INPUT_RELOAD_CLASS): Ditto.
10243         * arm-protos.h (coproc_secondary_reload_class): Update prototype.
10244
10245 2007-03-01  Zdenek Dvorak  <dvorakz@suse.cz>
10246
10247         * tree-ssa-loop-prefetch.c (determine_unroll_factor):  Bound the unroll
10248         factor by the estimated number of iterations.
10249         (loop_prefetch_arrays): Do not prefetch in loops that iterate less than
10250         prefetch latency.
10251
10252         * config/i386/driver-i386.c (describe_cache, detect_caches_amd,
10253         decode_caches_intel, detect_caches_intel): New functions.
10254         (host_detect_local_cpu): Use detect_caches_amd and
10255         detect_caches_intel.
10256
10257 2007-03-01  Richard Henderson  <rth@redhat.com>
10258
10259         * expr.c (emit_move_complex_push): Export.
10260         (emit_move_complex_parts): Split out from ...
10261         (emit_move_complex): ... here.
10262         * expr.h (emit_move_complex_push, emit_move_complex_parts): Declare.
10263         * config/i386/i386.md (movcdi): New.
10264
10265 2007-03-01  Uros Bizjak  <ubizjak@gmail.com>
10266
10267         * config/i386/i386.c (ix86_modes_tieable_p): Fix typo, use also
10268         size of mode1 to check for tieable modes in MMX case.
10269
10270 2007-03-01  Richard Sandiford  <richard@codesourcery.com>
10271
10272         * Makefile.in (rtlanal.o): Depend on tree.h.
10273         * rtl.h (offset_within_section_p, split_const): Declare.
10274         * rtlanal.c: Include tree.h.
10275         (offset_within_block_p): New function, taken from
10276         mips_offset_within_object_p.
10277         (split_const): New function, taken from mips_split_const.
10278         * config/m68k/m68k-protos.h (m68k_illegitimate_symbolic_constant_p):
10279         Declare.
10280         * config/m68k/m68k.h (M68K_OFFSETS_MUST_BE_WITHIN_SECTIONS_P): Define.
10281         (CONSTANT_ADDRESS_P): Only accept legitimate constants.
10282         (LEGITIMATE_CONSTANT_P): Check m68k_illegitimate_symbolic_constant_p.
10283         * config/m68k/m68k.c (TARGET_CANNOT_FORCE_CONST_MEM): Define.
10284         (m68k_illegitimate_symbolic_constant_p): New function.
10285         * config/m68k/m68k.md (movsi): Remove misleading predicates.
10286         If M68K_OFFSETS_MUST_BE_WITHIN_SECTIONS_P and the source is a
10287         symbolic constant that might be outside the symbol's section,
10288         move the symbol first and then add the offset.
10289         * config/m68k/uclinux.h (M68K_OFFSETS_MUST_BE_WITHIN_SECTIONS_P):
10290         Override.
10291         * config/mips/mips.c (mips_split_const): Delete.
10292         (mips_offset_within_object_p): Delete.
10293         (mips_symbolic_constant_p): Use offset_within_section_p and
10294         split_const instead of mips_offset_within_object_p and
10295         mips_split_const.
10296         (mips_cannot_force_const_mem, mips_const_insns, mips_unspec_address)
10297         (mips_legitimize_const_move, print_operand_reloc)
10298         (mips_dangerous_for_la25_p): Use split_const instead of
10299         mips_split_const.
10300
10301 2007-02-28  Eric Christopher  <echristo@apple.com>
10302
10303         * Makefile.in (install-include-dir): Don't rm -rf include.
10304
10305 2007-02-28  Richard Guenther  <rguenther@suse.de>
10306
10307         PR middle-end/30364
10308         * fold-const.c (fold_binary): Do not associate expressions
10309         with more than one variable for integer types that do not wrap.
10310
10311 2007-02-28  Sandra Loosemore  <sandra@codesourcery.com>
10312
10313         * builtins.c (fold_builtin_call_list, fold_builtin_call_valist):
10314         Delete, and replace with...
10315         (fold_builtin_call_array): This.  Update callers to use it.
10316         * fold-const.c (fold_build_call_list): Delete, and replace with...
10317         (fold_build_call_array): This.
10318         (fold_build_call_list_initializer): Delete, and replace with...
10319         (fold_build_call_array_initializer): This.
10320         * tree.h: Update declarations to reflect above changes.
10321
10322         * c-typeck.c (build_function_call): Store converted arguments
10323         in a stack-allocated array instead of building a list.
10324         (convert_arguments): Store arguments in the array passed in as an
10325         argument, and return the actual number of arguments.
10326         * c-format.c: (check_function_format): Pass arguments in an
10327         array instead of a list.
10328         * c-common.c (check_function_nonnull): Likewise.
10329         (check_function_sentinel): Likewise.
10330         (check_function_arguments): Likewise.
10331         * c-common.h: Update declarations to reflect above changes.
10332
10333 2007-02-28  Jan Hubicka  <jh@suse.cz>
10334
10335         * predict.def (PRED_TREE_EARLY_RETURN, PRED_CONST_RETURN,
10336         PRED_NEGATIVE_RETURN): Update outcomes.
10337
10338 2007-02-28  Bernd Schmidt  <bernd.schmidt@analog.com>
10339
10340         * calls.c (emit_library_call_value_1): Handle partial registers
10341         correctly when building up CALL_INSN_FUNCTION_USAGE.
10342
10343 2007-02-27  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
10344
10345         * pa/predicates.md (move_src_operand): Allow zero for mode.
10346         * pa/pa.md: Fix constraints for zero CONST_DOUBLE in 64-bit DFmode
10347         move pattern.
10348
10349 2007-02-27  Uros Bizjak  <ubizjak@gmail.com>
10350
10351         PR target/30970
10352         * config/i386/sse.md (*mov<mode>_internal, *movv4sf_internal,
10353         *movv2df_internal): Enable pattern only for valid operand
10354         combinations.
10355         * config/i386/i386.c (ix86_modes_tieable_p): For SSE registers,
10356         tie only 128bit modes. For MMX registers, tie only 64bit modes.
10357
10358 2007-02-27  Mike Stump  <mrs@apple.com>
10359
10360         * config/darwin-crt3.c: Avoid compilation when compiling for a
10361         kext multilib.
10362
10363 2007-02-27  Joseph Myers  <joseph@codesourcery.com>
10364
10365         * Makefile.in (PREPROCESSOR_DEFINES, test-protoize-simple): Define
10366         FIXED_INCLUDE_DIR.
10367         (stmp-int-hdrs, stmp-fixinc, install-headers): Use include-fixed
10368         for fixed headers and limits.h.
10369         (install-include-dir, install-headers-tar, install-headers-cpio,
10370         install-headers-cp, real-install-headers-tar,
10371         real-install-headers-cpio, real-install-headers-cp): Handle
10372         include-fixed as well as include.
10373         (install-mkheaders): Don't install files that go only in include
10374         not include-fixed.
10375         * cppdefault.c (cpp_include_defaults): Separate FIXED_INCLUDE_DIR
10376         from GCC_INCLUDE_DIR.
10377         * gcc.c (process_command): Remove special -BstageN/ handling.
10378         (do_spec_1): Add include-fixed directories.
10379
10380 2007-02-27  Bernd Schmidt  <bernd.schmidt@analog.com>
10381
10382         * config/bfin/t-bfin-elf (LIB1ASMFUNCS): Add _umulsi3_highpart and
10383         _smulsi3_highpart.
10384         * config/bfin/lib1funcs.asm (___umulsi3_highpart, ___smulsi3_highpart):
10385         New functions.
10386         * config/bfin/bfin.md (smulsi3_highpart, umulsi3_highpart): New
10387         patterns.
10388
10389 2007-02-27  Mark Mitchell  <mark@codesourcery.com>
10390
10391         * c-common.c (get_priority): Add check for
10392         SUPPORTS_INIT_PRIORITY.
10393
10394 2007-02-27  Bernd Schmidt  <bernd.schmidt@analog.com>
10395
10396         * config/bfin/bfin.md (doloop_end): FAIL if counter reg isn't SImode.
10397
10398         * config/bfin/bfin.c: Include "cfglayout.h".
10399         (MAX_LSETUP_DISTANCE): New macro.
10400         (struct loop_info): New members incoming, incoming_src and
10401         incoming_dest.  Delete member predecessor.
10402         (length_for_loop): New function.
10403         (bfin_optimize_loop): Handle more different loop structures.
10404         (bfin_discover_loop): Rework detection of predecessor blocks by
10405         examining incoming edges.
10406         (bfin_discover_loops, bfin_free_loops): New functions, broken out of
10407         bfin_reorg_loops.
10408         (bfin_reorder_loops): New function.
10409         (bfin_reorg_loops): Use these three new functions.
10410
10411         * config/bfin/bfin.h (enum reg_class, REG_CLASS_NAMES,
10412         REG_CLASS_CONTENTS): Add D0REGS through D7REGS.
10413         (CONSTRAINT_LEN): Add entry for 'q'.
10414         (REG_CLASS_FROM_CONSTRAINT): Renamed from REG_CLASS_FROM_LETTER.
10415         Add 'q' constraints.
10416         (REGNO_REG_CLASS): For R0 through R7, return corresponding regclass.
10417         (CLASS_LIKELY_SPILLED_P): True for R0, R1 and R2.
10418
10419         * config/bfin/bfin.md (add_with_carry): New pattern.
10420         (s_or_u, su_optab, su_modifier): New code macros/attrs.
10421         (<su_optab>hisi_ll, <su_optab>hisi_lh, <su_optab>hisi_hl,
10422         <su_optab>hisi_hh): Renamed from mulhisi_xx patterns; macroized to
10423         support unsigned multiplies too.  Removed incorrect commutativity from
10424         operand 1 constraint where appropriate.
10425         (usmulhisi_ull, usmulhisi_ulh, usmulhisi_uhl, usmulhisi_uhh): New
10426         patterns.
10427         (<su_optab>hisi_ll_lh, <su_optab>hisi_ll_hl, <su_optab>hisi_ll_hh,
10428         <su_optab>hisi_lh_hl, <su_optab>hisi_lh_hh, <su_optab>hisi_hl_hh):
10429         New patterns.
10430         (usmulhisi_ll_lul, usmulhisi_ll_luh, usmulhisi_ll_hul,
10431         usmulhisi_ll_huh, usmulhisi_lh_lul, usmulhisi_lh_luh, usmulhisi_lh_hul,
10432         usmulhisi_lh_huh, usmulhisi_hl_lul, usmulhisi_hl_luh, usmulhisi_hl_hul,
10433         usmulhisi_hl_huh, usmulhisi_hh_lul, usmulhisi_hh_luh, usmulhisi_hh_hul,
10434         usmulhisi_hh_huh): New patterns.
10435
10436         * config/bfin/bfin.md (ssashiftv2hi3, ssashifthi3, lshiftv2hi3,
10437         lshifthi3): Fix output template to use half reg for operand 2.
10438
10439         * config/bfin/bfin.c (bfin_output_mi_thunk): Use R3 as scratch reg
10440         instead of R2.
10441
10442         * config/bfin/bfin.md (rotl16, rotlsi3, rotrsi3): New patterns.
10443
10444 2007-02-27  Andreas Schwab  <schwab@suse.de>
10445
10446         * Makefile.in (TEXI_GCCINSTALL_FILES): Add gcc-common.texi.
10447
10448 2007-02-27  Jan Hubicka  <jh@suse.cz>
10449
10450         * predict.c (last_basic_block_p): Remove.
10451         (tree_estimate_probability): Update return heuristic for commonized
10452         return blocks.
10453
10454 2007-02-26  Brooks Moses  <brooks.moses@codesourcery.com>
10455
10456         * Makefile.in (TEXI_GCCINSTALL_FILES): Add gcc-vers.texi dependency.
10457
10458 2007-02-26  Brooks Moses  <brooks.moses@codesourcery.com>
10459
10460         * doc/include/gcc-common.texi (versionsubtitle): New macro.
10461         * doc/cpp.texi: Standardize title page.
10462         * doc/cppinternals.texi: Likewise.
10463         * doc/gcc.texi: Standardize title page, remove version number
10464         from copyright page.
10465         * doc/gccint.texi: Likewise.
10466         * doc/install.texi: Standardize title page, add table of
10467         contents.
10468
10469 2007-02-26  Jan Hubicka  <jh@suse.cz>
10470
10471         * predict.def: Set outcomes according to more recent results.
10472         (PRED_LOOP_CONDITION, PRED_LOOP_PRECONDITIONING, PRED_LOOP_HEADER):
10473         Remove dead predictors.
10474         * predict.c (return_prediction): Fix pasto.
10475
10476 2007-02-27  Bernd Schmidt  <bernd.schmidt@analog.com>
10477
10478         * loop-iv.c (simplify_using_initial_values): Fix oversight in previous
10479         change; avoid a memory leak when returning early.
10480
10481 2007-02-26  Mark Mitchell  <mark@codesourcery.com>
10482
10483         * c-decl.c (static_ctors): Move to c-common.c.
10484         (static_dtors): Likewise.
10485         (finish_function): Use c_record_cdtor_fn.
10486         (build_cdtor): Move to c-common.c.
10487         (c_write_global_declarations): Use c_build_cdtor_fns.
10488         * c-common.h (static_ctors): Declare.
10489         (static_dtors): Likewise.
10490         (c_record_cdtor_fn): Likewise.
10491         (c_build_cdtor_fns): Likewise.
10492         * c-common.c (static_ctors): New variable.
10493         (static_dtors): Likewise.
10494         (c_record_cdtor_fn): New function.
10495         (build_cdtor): Move from c-decl.c
10496         (c_build_cdtor_fns): New function.
10497
10498         * output.h (assemble_addr_to_section): Declare.
10499         (get_cdtor_priority_section): Likewise.
10500         * varasm.c (assemble_addr_to_section): New function.
10501         (get_cdtor_priority_section): Likewise.
10502         (default_named_section_asm_out_destructor): Use them.
10503         (destor_dtor_section_asm_out_destructor): Likewise.
10504         (default_named_section_asm_out_constructor): Likewise.
10505         (default_ctor_section_asm_out_constructor): Likewise.
10506         * config.gcc (*-*-vxworks*): Include vxworks.o.
10507         * config/t-vxworks (vxworks.o): New target.
10508         * config/vxworks.h (ALWAYS_NUMBER_CTORS_SECTIONS): Remove.
10509         (TARGET_ASM_CONSTRUCTOR): Define.
10510         (TARGET_ASM_DESTRUCTOR): Likewise.
10511         (vxworks_asm_out_constructor): Declare.
10512         (vxworks_asm_out_destructor): Likewise.
10513
10514         * c-common.c (get_priority): Check that we have not just an
10515         INTEGER_CST, but an integer constant with integeral type.
10516
10517 2007-02-25  Uros Bizjak  <ubizjak@gmail.com>
10518
10519         PR tree-optimization/30938
10520         * tree-vect-transform.c (vectorizable_call): Fix off-by-one error:
10521         use &dt[nargs-1] instead of &dt[nargs] in the call to
10522         vect_is_simple_use().
10523
10524 2007-02-25  Ulrich Weigand  <uweigand@de.ibm.com>
10525
10526         * reload.c (find_reloads_address_1): Handle PLUS expressions resulting
10527         from register elimination as PRE_MODIFY / POST_MODIFY increments.
10528         Do not attempt to handle MEM inside auto-inc expressions.
10529         * reload1.c (eliminate_regs_1): Do not attempt to handle elimination
10530         of a register modified by an auto-inc expression.  However, do handle
10531         elimination of a register used as PRE_MODIFY / POST_MODIFY increment.
10532         (elimination_effects): Prohibit elimination of a register modified
10533         by an auto-inc expression.  Disable register elimination rules whose
10534         target register is modified by an auto-inc expression with variable
10535         increment.
10536
10537 2007-02-25  Zdenek Dvorak  <dvorakz@suse.cz>
10538
10539         * tree-ssa-loop-niter.c (compute_estimated_nb_iterations): Fix
10540         off-by-one error.
10541         (array_at_struct_end_p): New function.
10542         (idx_infer_loop_bounds): Use it.
10543         (estimate_numbers_of_iterations_loop): Export.
10544         * predict.c (predict_loops): Use estimated_loop_iterations_int.
10545         Do not use PRED_LOOP_EXIT on exits predicted by # of iterations.
10546         (tree_estimate_probability): Call record_loop_exits.
10547         * tree-data-ref.c (get_number_of_iters_for_loop): Replaced by ...
10548         (estimated_loop_iterations, estimated_loop_iterations_int,
10549         estimated_loop_iterations_tree): New functions.
10550         (analyze_siv_subscript_cst_affine,
10551         compute_overlap_steps_for_affine_1_2,
10552         analyze_subscript_affine_affine): Use estimated_loop_iterations_int.
10553         (analyze_miv_subscript): Use estimated_loop_iterations_tree.
10554         * predict.def (PRED_LOOP_ITERATIONS): Update comment.
10555         (PRED_LOOP_ITERATIONS_GUESSED): New.
10556         * cfgloop.c (record_loop_exits): Do nothing if there are no loops.
10557         * cfgloop.h (estimate_numbers_of_iterations_loop,
10558         estimated_loop_iterations_int): Declare.
10559
10560 2007-02-25  Mark Mitchell  <mark@codesourcery.com>
10561
10562         * doc/extend.texi: Document optional priority argument to
10563         constructors and destructors.
10564         * tree.c (init_priority_for_decl): Adjust GTY markers.
10565         (init_ttree): Use priority-info hash functions for
10566         init_priority_for_decl.
10567         (tree_map_eq): Rename to ...
10568         (tree_map_base_eq): ... this.
10569         (tree_map_marked_p): Rename to ...
10570         (tree_map_base_marked_p): ... this.
10571         (tree_map_base_hash): New function.
10572         (decl_init_priority_lookup): Rework.
10573         (decl_fini_priority_lookup): New function.
10574         (decl_priority_info): New function.
10575         (decl_init_priority_insert): Use it.
10576         (decl_fini_priority_insert): Likewise.
10577         (decl_restrict_base_lookup): Adjust for refactoring of tree_map
10578         hierarchy.
10579         (decl_restrict_base_insert): Likewise.
10580         (decl_debug_expr_insert): Likewise.
10581         (decl_value_expr_lookup): Likewise.
10582         (decl_value_expr_insert): Likewise.
10583         * tree.h (priority_type): New type.
10584         (decl_init_priority_lookup): Use priority_type.
10585         (decl_fini_priority_lookup): New function.
10586         (decl_init_priority_insert): Use priority_type.
10587         (decl_fini_priority_insert): New function.
10588         (DECL_HAS_INIT_PRIORITY): Tweak comments.
10589         (DECL_INIT_PRIORITY): Likewise.
10590         (SET_DECL_INIT_PRIORITY): Add comment.
10591         (DECL_FINI_PRIORITY): New macro.
10592         (SET_DECL_FINI_PRIORITY): Likewise.
10593         (DEFAULT_INIT_PRIORITY): Document.
10594         (MAX_INIT_PRIORITY): Likewise.
10595         (MAX_RESERVED_INIT_PRIORITY): Likewise.
10596         (tree_map_base): New type.
10597         (tree_map_base_eq): New function.
10598         (tree_map_base_hash): Likewise.
10599         (tree_map_base_marked_p): Likewise.
10600         (tree_map): Inherit from tree_map_base.
10601         (tree_map_eq): Make it a macro.
10602         (tree_map_marked_p): Likewise.
10603         (tree_int_map): Inherit from tree_map_base.
10604         (tree_int_map_eq): Make it a macro.
10605         (tree_int_map_hash): Likewise.
10606         (tree_int_map_marked_p): Likewise.
10607         (tree_priority_map): New type.
10608         (tree_priority_map_eq): New macro.
10609         (tree_priority_map_hash): Likewise.
10610         (tree_priority_map_marked_p): Likewise.
10611         * varasm.c (emults_decl): Adjust for refactoring of tree_map
10612         hierarchy.
10613         (emutls_common_1): Likewise.
10614         * lambda-code.c (replace_uses_equiv_to_x_with_y): Likewise.
10615         * tree-ssa-structalias.c (heapvar_lookup): Adjust for refactoring
10616         of tree_map hierarchy.
10617         * tree-cfg.c (move_stmt_r): Likewise.
10618         (new_label_mapper): Likewise.
10619         * c-tree.h (c_expand_body): Move to ...
10620         * c-common.h (c_expand_body): ... here.
10621         * c-decl.c (c_expand_body): Move to ...
10622         * c-common.c (c_expand_body): ... here.
10623         (c_common_attribute_table): Allow 1 argument for the constructor
10624         and destructor attributes.
10625         (get_priority): New function.
10626         (handle_constructor_attribute): Set DECL_INIT_PRIORITY.
10627         (handle_destructor_attribute): Set DECL_FINI_PRIORITY.
10628
10629 2007-02-24  Jan Hubicka  <jh@suse.cz>
10630
10631         PR middle-end/30509
10632         * tree-inline.c (copy_bb): Produce exact copy of EH info when copying for inlining.
10633
10634 2007-02-24  Uros Bizjak  <ubizjak@gmail.com>
10635             Jan Hubicka  <jh@suse.cz>
10636
10637         PR target/30778
10638         * i386.c (counter_mode): New function.
10639         (expand_set_or_movmem_via_loop): Use it.
10640         (expand_movmem_epilogue): Likewise; fix pasto.
10641         (ix86_expand_movmem): Do emit guard even for constant counts.
10642         (ix86_expand_setmem): Likewise.
10643
10644 2007-02-25  Nick Clifton  <nickc@redhat.com>
10645
10646         * config/frv/frv.h (ASM_OUTPUT_CASE_LABEL): Delete.
10647         (JUMP_TABLES_IN_TEXT_SECTION): Define.
10648
10649 2007-02-24  Uros Bizjak  <ubizjak@gmail.com>
10650
10651         PR target/30770
10652         * config/i386/i386.md (expand_movmem_epilogue): Fix typo, mask
10653         count argument with 0x10, not with 0x16.
10654         (expand_setmem_epilogue): Ditto.
10655
10656 2007-02-24  Mike Stump  <mrs@apple.com>
10657
10658         * config/i386/i386.c (output_pic_addr_const): Stubify optimized
10659         symbols.
10660
10661 2007-02-24  Richard Guenther  <rguenther@suse.de>
10662
10663         PR middle-end/30951
10664         * fold-const.c (fold_binary): Fold x +- CST op x for
10665         EQ_EXPR and NE_EXPR.
10666
10667 2007-02-24  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
10668
10669         * pa.md (muldi3): Force subregs to registers in 64-bit expander.
10670
10671 2007-02-24  Jan Hubicka  <jh@suse.cz>
10672
10673         * cgraphunit.c (decide_is_function_needed): Honor
10674         -fkeep-inline-functions.
10675
10676 2007-02-24  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
10677
10678         * builtins.c (fold_builtin_modf): New.
10679         (fold_builtin_2): Use it.
10680
10681 2007-02-24  Bernd Schmidt  <bernd.schmidt@analog.com>
10682
10683         * loop-iv.c (implies_p): Detect additional cases where A implies B.
10684         (determine_max_iter): Take additional LOOP arg; all callers changed.
10685         Lose broken logic dealing with PLUS.  Try to limit the upper bound by
10686         one using simplifications.
10687         (simplify_using_initial_values): Return if the expression becomes
10688         invalid due to altered regs.
10689
10690 2007-02-23  DJ Delorie  <dj@redhat.com>
10691
10692         * doc/tm.h (BIGGEST_ALIGNMENT): Clarify the purpose of this macro.
10693
10694 2007-02-23  Mike Stump  <mrs@apple.com>
10695
10696         * tlink.c (scan_linker_output): Parse linker messages from
10697         darwin9's linker better.
10698
10699 2007-02-23  Steve Ellcey  <sje@cup.hp.com>
10700
10701         PR debug/29614
10702         * varpool.c (varpool_assemble_pending_decls):  Set
10703         varpool_last_needed_node to null.
10704
10705 2007-02-23  DJ Delorie  <dj@redhat.com>
10706
10707         * config/i386/i386.c (ix86_data_alignment): Don't specify an
10708         alignment bigger than the object file can handle.
10709
10710 2007-02-23  Uros Bizjak  <ubizjak@gmail.com>
10711
10712         PR target/30825
10713         * config/i386/i386.md (*movdi_1_rex64, zero_extendsidi2_32,
10714         zero_extendsidi2_rex64): Penalize MMX register<->memory moves.
10715         (*movsf_1): Penalize MMX moves.
10716
10717 2007-02-23  Bernd Schmidt  <bernd.schmidt@analog.com>
10718
10719         * config/bfin/bfin.md (doloop_end): Fail for loops that can iterate
10720         2^32-1 or more times unless flag_unsafe_loop_optimizations.
10721
10722         * loop-iv.c (determine_max_iter): Moved in front of its sole user.
10723
10724 2007-02-23  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
10725
10726         * builtins.c (fold_builtin_logb, fold_builtin_significand): New.
10727         (fold_builtin_1): Use them.
10728         * fold-const.c (tree_expr_nonnegative_warnv_p): Handle
10729         BUILT_IN_SIGNIFICAND.
10730
10731 2007-02-23  H.J. Lu  <hongjiu.lu@intel.com>
10732
10733         * config/i386/i386.c (bdesc_1arg): Initialize
10734         IX86_BUILTIN_MOVSHDUP and IX86_BUILTIN_MOVSLDUP with
10735         "__builtin_ia32_movshdup" and "__builtin_ia32_movsldup".
10736         (ix86_init_mmx_sse_builtins): Remove IX86_BUILTIN_MOVSHDUP
10737         and IX86_BUILTIN_MOVSLDUP.
10738
10739 2007-02-22  Paolo Bonzini  <bonzini@gnu.org>
10740
10741         PR rtl-optimization/30841
10742         * fwprop.c (propagate_rtx_1): Accept a VOIDmode replacement address.
10743
10744 2007-02-22  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
10745
10746         * builtins.c (fold_builtin_frexp): New.
10747         (fold_builtin_2): Use it.
10748
10749 2007-02-22  Mark Mitchell  <mark@codesourcery.com>
10750
10751         * doc/invoke.texi (Spec Files): Document getenv spec function.
10752
10753         * gcc.c (getenv_spec_function): New function.
10754         (static_spec_functions): Add it.
10755         * config/vxworks.h (VXWORKS_TARGET_DIR): Remove.
10756         (VXWORKS_ADDITIONAL_CPP_SPEC): Use getenv to find the VxWorks
10757         header files.
10758
10759 2007-02-22  Michael Matz  <matz@suse.de
10760
10761         PR c++/29433
10762         * dwarf2out.c (add_AT_string): Call ggc_strdup once per string.
10763         (type_tag): Use lang_hooks.dwarf_name instead of DECL_NAME.
10764
10765 2007-02-22  Ian Lance Taylor  <iant@google.com>
10766
10767         PR debug/30898
10768         * dwarf2out.c (concatn_mem_loc_descriptor): New static function.
10769         (mem_loc_descriptor): Call it.
10770
10771 2007-02-22  Zdenek Dvorak  <dvorakz@suse.cz>
10772             Ira Rosen  <irar@il.ibm.com>
10773
10774         * tree-data-ref.c (ptr_ptr_may_alias_p): Take alias sets into account.
10775
10776 2007-02-22  Ira Rosen  <irar@il.ibm.com>
10777
10778         PR tree-optimization/30843
10779         * tree-vect-transform.c (vect_transform_loop): Remove strided scalar
10780         stores only after all the group is vectorized.
10781
10782 2007-02-22  Dorit Nuzman  <dorit@il.ibm.com>
10783
10784         PR tree-optimization/30858
10785         * tree-vectorizer.c (vect_is_simple_reduction): Check that the stmts
10786         in the reduction cycle have a single use in the loop.
10787         * tree-vectorizer.h (relevant): Add documentation.
10788
10789 2007-02-20  Mike Stump  <mrs@apple.com>
10790
10791         * configure.ac (powerpc*-*-darwin*): #include <sys/cdefs.h>.
10792         * configure: Regenerate.
10793
10794 2007-02-21  Trevor Smigiel  <trevor_smigiel@playstation.sony.com>
10795
10796         Change the defaults of some parameters and options.
10797         * config/spu/spu-protos.h (spu_optimization_options): Declare.
10798         * config/spu/spu.c (spu_optimization_options): Add.
10799         (spu_override_options): Change params in spu_optimization_options.
10800         * config/spu/spu.h (OPTIMIZATION_OPTIONS): Define.
10801
10802         Register 127 is only 16 byte aligned when used as a frame pointer.
10803         * config/spu/spu-protos.h (spu_init_expanders): Declare.
10804         * config/spu/spu.c (spu_expand_prologue): Set REGNO_POINTER_ALIGN for
10805         HARD_FRAME_POINTER_REGNUM.
10806         (spu_legitimate_address):  Use regno_aligned_for_reload.
10807         (regno_aligned_for_load):  HARD_FRAME_POINTER_REGNUM is only 16 byte
10808         aligned when frame_pointer_needed is true.
10809         (spu_init_expanders): New.  Set alignment of HARD_FRAME_POINTER_REGNUM
10810         to 8 bits.
10811         * config/spu/spu.h (INIT_EXPANDERS): Define.
10812
10813         Make sure shift and rotate instructions have valid immediate operands.
10814         * config/spu/predicates.md (spu_shift_operand): Remove.
10815         * config/spu/spu.c (print_operand): Add [efghEFGH] modifiers.
10816         * config/spu/constraints.md (W, O): Extend range.
10817         * config/spu/spu.md (umask, nmask): Define.
10818         (ashl<mode>3, ashldi3, ashlti3_imm, shlqbybi_ti, shlqbi_ti, shlqby_ti,
10819         lshr<mode>3, rotm_<mode>, lshr<mode>3_imm, rotqmbybi_<mode>,
10820         rotqmbi_<mode>, rotqmby_<mode>, ashr<mode>3, rotma_<mode>,
10821         rotl<mode>3, rotlti3, rotqbybi_ti, rotqby_ti, rotqbi_ti): Use
10822         spu_nonmem_operand instead of spu_shift_operands.  Use new modifiers.
10823         (lshr<mode>3_reg):  Fix rtl description.
10824
10825         Make sure mulhisi immediate operands are valid.
10826         * config/spu/predicates.md (imm_K_operand): Add.
10827         * config/spu/spu.md (mulhisi3_imm, umulhisi3_imm): Use imm_K_operand.
10828
10829         Generate constants using fsmbi and andi.
10830         * config/spu/spu.c (enum immediate_class): Add IC_FSMBI2.
10831         (print_operand, spu_split_immediate, classify_immediate,
10832         fsmbi_const_p): Handle IC_FSMBI2.
10833
10834         Correctly handle a CONST_VECTOR containing symbols.
10835         * config/spu/spu.c (print_operand): Handle HIGH correctly.
10836         (spu_split_immediate): Split CONST_VECTORs with -mlarge-mem.
10837         (immediate_load_p): Allow symbols that use 2 instructions to create.
10838         (classify_immediate, spu_builtin_splats):  Don't accept a CONST_VECTOR
10839         with symbols when flag_pic is set.
10840         (const_vector_immediate_p): New.
10841         (logical_immediate_p, iohl_immediate_p, arith_immediate_p): Don't
10842         accept a CONST_VECTOR with symbols.
10843         (spu_legitimate_constant_p): Use const_vector_immediate_p.  Don't
10844         accept a CONST_VECTOR with symbols when flag_pic is set.  Handle HIGH
10845         correctly.
10846         * config/spu/spu.md (high, low): Delete.
10847         (low_<mode>): Define.
10848
10849         Remove INTRmode and INTR_REGNUM, which didn't work.
10850         * config/spu/spu.c (spu_conditional_register_usage): Remove reference
10851         of INTR_REGNUM.
10852         * config/spu/spu-builtins.md (spu_idisable, spu_ienable, set_intr,
10853         set_intr_pic, set_intr_cc, set_intr_cc_pic, set_intr_return, unnamed
10854         peephole2 pattern): Don't use INTR or 131.
10855         (movintrcc): Delete.
10856         * config/spu/spu.h (FIRST_PSEUDO_REGISTER, FIXED_REGISTERS,
10857         CALL_USED_REGISTERS, REGISTER_NAMES, INTR_REGNUM): Remove INTR_REGNUM.
10858         * config/spu/spu.md (UNSPEC_IDISABLE, UNSPEC_IENABLE): Remove.
10859         (UNSPEC_SET_INTR): Add.
10860         * config/spu/spu-modes.def (INTR): Remove.
10861
10862         More accurate warnings about run-time relocations.
10863         * config/spu/spu.c (reloc_diagnostic): Test in_section.
10864
10865         Correctly warn about immediate arguments to specific intrinsics.
10866         * config/spu/spu.c (spu_check_builtin_parm): Handle CONST_VECTORs.
10867         (spu_expand_builtin_1): Call spu_check_builtin_parm before checking
10868         the instruction predicate.
10869
10870         Fix tree check errors with latest update.
10871         * config/spu/spu.c (expand_builtin_args, spu_expand_builtin_1): Use
10872         CALL_EXPR_ARG.
10873         (spu_expand_builtin): Use CALL_EXPR_FN.
10874
10875         Add missing specific intrinsics.
10876         * config/spu/spu-builtins.def: Add si_bisled, si_bisledd and
10877         si_bislede.
10878         * config/spu/spu_internals.h: Ditto.
10879
10880         Fix incorrect operand modifiers.
10881         * config/spu/spu-builtins.md (spu_mpy, spu_mpyu):  Remove use of %H.
10882         * config/spu/spu.md (xor<mode>3):  Change %S to %J.
10883
10884         Optimize one case of zero_extend of a vec_select.
10885         * config/spu/spu.md (_vec_extractv8hi_ze):  Add.
10886
10887         Accept any immediate for hbr.
10888         * config/spu/spu.md (hbr):  Change s constraints to i.
10889
10890 2007-02-21  Paul Brook  <paul@codesourcery.com>
10891
10892         * config/arm/arm.c (thumb2_final_prescan_insn): Don't incrememnt
10893         condexec_count when skipping USE and CLOBBER.
10894
10895 2007-02-21  Nick Clifton  <nickc@redhat.com>
10896
10897         * common.opt (Warray-bounds): Add Warning attribute.
10898         (Wstrict-overflow, Wstrict-overflow=, Wcoverage-mismatch):
10899         Likewise.
10900         (fsized-zeroes): Add Optimization attribute.
10901         (fsplit-wide-types, ftree-scev-cprop): Likewise.
10902         * c.opt (Wc++0x-compat): Add Warning attribute.
10903
10904 2007-02-21  Ulrich Weigand  <uweigand@de.ibm.com>
10905
10906         PR middle-end/30761
10907         * reload1.c (eliminate_regs_in_insn): In the single_set special
10908         case, attempt to re-recognize the insn before falling back to
10909         having reload fix it up.
10910
10911 2007-02-20  Eric Christopher  <echristo@gmail.com>
10912
10913         * config/frv/frv.c (frv_read_argument): Take a tree and int argument.
10914         Rewrite accordingly.
10915         (frv_read_iacc_argument): Ditto.
10916         (frv_expand_set_builtin): Take a call instead of arglist, update for
10917         above changes.
10918         (frv_expand_unop_builtin): Ditto.
10919         (frv_expand_binop_builtin): Ditto.
10920         (frv_expand_cut_builtin): Ditto.
10921         (frv_expand_binopimm_builtin): Ditto.
10922         (frv_expand_voidbinop_builtin): Ditto.
10923         (frv_expand_int_void2arg): Ditto.
10924         (frv_expand_prefetches): Ditto.
10925         (frv_expand_voidtriop_builtin): Ditto.
10926         (frv_expand_voidaccop_builtin): Ditto.
10927         (frv_expand_load_builtin): Ditto.
10928         (frv_expand_store_builtin): Ditto.
10929         (frv_expand_mdpackh_builtin): Ditto.
10930         (frv_expand_mclracc_builtin): Ditto.
10931         (frv_expand_mrdacc_builtin): Ditto.
10932         (frv_expand_mwtacc_builtin): Ditto.
10933         (frv_expand_builtin): Remove usage of CALL_EXPR_ARGS, update
10934         calls for above.
10935
10936 2007-02-20  Janis Johnson  <janis187@us.ibm.com>
10937
10938         * doc/invoke.texi (RS/6000 and PowerPC Options): Add -mcmpb and -mdfp.
10939         * configure.ac (HAVE_GAS_CMPB): Check for assembler support of the
10940         cmpb instruction.
10941         (HAVE_GAS_DFP): Check for assembler support of decimal floating
10942         point instructions.
10943         * configure: Regenerate.
10944         * config.in: Regenerate.
10945         * config/rs6000/rs6000.opt (mcmpb, mdfp): New.
10946         * config/rs6000/rs6000.c (rs6000_override_options): Add CMPB and DFP
10947         masks to power6 and power6x and to POWERPC_MASKS.
10948         * config/rs6000/rs6000-c.c (rs6000_cpu_cpp_builtins): Define
10949         _ARCH_PWR6.
10950         * config/rs6000/rs6000.h: Check assembler support for CMPB and DFP.
10951         * config/rs6000/sysv4.opt (mprototype): Use variable, not mask.
10952         * config/rs6000/linux64.h (SUBSUBTARGET_OVERRIDE_OPTIONS):
10953         Access PROTOTYPE as variable, not mask.
10954
10955 2007-02-20  Steven Bosscher  <steven@gcc.gnu.org>
10956
10957         * rtl.h (remove_reg_equal_equiv_notes): New prototype.
10958         * rtlanal.c (remove_reg_equal_equiv_notes): New function.
10959         * combine.c (adjust_for_new_dest): Use it.
10960         * postreload.c (reload_combine): Likewise.
10961
10962 2007-02-20  Steven Bosscher  <steven@gcc.gnu.org>
10963
10964         * rtlanal.c (find_reg_equal_equiv_note): Do not find REG_EQ*
10965         notes on an insn with multiple sets, even if single_set returns
10966         non-NULL for that insn.
10967
10968 2007-02-20  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
10969
10970         * fold-const.c (tree_expr_nonnegative_warnv_p): Handle scalb,
10971         scalbn and scalbln.
10972
10973 2007-02-20  Geoffrey Keating  <geoffk@apple.com>
10974
10975         * config/darwin.h (LINK_SPEC): Default -mmacosx-version-min only
10976         if user didn't pass it.
10977         * config/i386/darwin.h (CC1_SPEC): Likewise.
10978         * config/rs6000/darwin.h (CC1_SPEC): Likewise.
10979         (DARWIN_MINVERSION_SPEC): Don't depend on user's setting of
10980         -mmacosx-version-min.
10981
10982 2007-02-20  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
10983             Uros Bizjak  <ubizjak@gmail.com>
10984
10985         * optabs.h (enum optab_index): Add new OTI_scalb.
10986         (scalb_optab): Define corresponding macro.
10987         * optabs.c (init_optabs): Initialize scalb_optab.
10988         * genopinit.c (optabs): Implement scalb_optab using scalb?f3
10989         patterns.
10990         * builtins.c (expand_builtin_mathfn_2, expand_builtin): Handle
10991         BUILT_IN_SCALB{,F,L}, BUILT_IN_SCALBN{,F,L} and BUILT_IN_SCALBLN{,F,L}.
10992         (expand_builtin): Expand BUILT_IN_SCALB{,F,L}, BUILT_IN_SCALBN{,F,L}
10993         and BUILT_IN_SCALBLN{,F,L} using expand_builtin_mathfn_2 if
10994         flag_unsafe_math_optimizations is set.
10995
10996         * config/i386/i386.md (scalbxf3, scalb<mode>3): New expanders
10997         to implement scalbf, scalb and scalbl built-ins as inline x87
10998         intrinsics.
10999
11000 2007-02-20  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
11001             DJ Delorie <dj@redhat.com>
11002
11003         PR other/30824
11004         * diagnostic.c (diagnostic_count_diagnostic): Move -Werror logic to...
11005         (diagnostic_report_diagnostic): ... here, and turn them into real
11006         errors. If warnings are inhibited, no need to do anything.
11007
11008 2007-02-20  Uros Bizjak  <ubizjak@gmail.com>
11009
11010         * config/i386/i386.md (expm1xf2): Reorder insn sequence for
11011         better code generation.
11012
11013 2007-02-20  Ben Elliston  <bje@au.ibm.com>
11014
11015         * config/m68hc11/m68hc11.h (OVERRIDE_OPTIONS): Remove extra ;.
11016
11017 2007-02-20  Kazu Hirata  <kazu@codesourcery.com>
11018
11019         * config/alpha/alpha.c, config/alpha/alpha.md,
11020         config/alpha/lib1funcs.asm, config/alpha/vms-crt0-64.c,
11021         config/alpha/vms-psxcrt0-64.c, config/arc/arc.c,
11022         config/arc/arc.h, config/arm/arm.c, config/arm/arm.md,
11023         config/arm/lib1funcs.asm: Follow spelling conventions.
11024
11025         * config/c4x/c4x.md, config/cris/cris.c, config/crx/crx.c,
11026         config/fr30/fr30.md, config/i386/i386.h,
11027         config/iq2000/iq2000.h, config/iq2000/predicates.md,
11028         config/pa/milli64.S, config/pa/pa.c, config/pa/pa.h,
11029         config/pa/pa.md, config/pa/pa32-regs.h, config/pa/pa64-regs.h,
11030         config/pdp11/pdp11.c, config/pdp11/pdp11.h,
11031         config/rs6000/altivec.md, config/rs6000/rs6000.c,
11032         config/s390/s390-modes.def, config/sparc/netbsd-elf.h,
11033         config/sparc/sparc.c, config/sparc/sparc.h,
11034         config/sparc/sparc.md, config/spu/constraints.md,
11035         config/spu/spu.c, config/stormy16/stormy16.md: Follow spelling
11036         conventions.
11037
11038 2007-02-20  Alan Modra  <amodra@bigpond.net.au>
11039
11040         PR target/29943
11041         * varasm.c (use_blocks_for_decl_p): Return false for decls with
11042         alias attribute.
11043
11044 2007-02-19  Kazu Hirata  <kazu@codesourcery.com>
11045
11046         * doc/invoke.texi (-ftree-lrs): Remove.
11047
11048 2007-02-19  Diego Novillo  <dnovillo@redhat.com>
11049
11050         * tree-ssa-pre.c (create_value_expr_from): Initialize POOL to
11051         NULL.
11052
11053 2007-02-19  Lee Millward  <lee.millward@codesourcery.com>
11054
11055         * config/ia64/ia64.c (ia64_expand_builtin): Use the
11056         new CALL_EXPR_FN macro for retrieving the function
11057         declaration of the input expression.
11058
11059 2007-02-19  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
11060
11061         * c.opt (Waddress): New.
11062         * common.opt (Walways-true): Delete.
11063         (Wstring-literal-comparison): Delete.
11064         * doc/invoke.texi (Warning Options): Delete -Walways-true and
11065         -Wstring-literal-comparison. Add -Waddress.
11066         (Waddress): New.
11067         (Walways-true): Delete.
11068         (Wstring-literal-comparison): Delete.
11069         * doc/extend.texi (#pragma GCC diagnostic): Use -Wformat
11070         consistently instead of -Walways-true in example.
11071         * c-opts.c (c_common_handle_option): -Waddress is enabled by -Wall.
11072         * c-typeck.c (parser_build_binary_op): Replace
11073         -Wstring-literal-comparison and -Walways-true with -Waddress.
11074         * c-common.c (c_common_truthvalue_conversion): Replace -Walways-true
11075         with -Waddress.
11076
11077 2007-02-19  Eric Botcazou  <ebotcazou@adacore.com>
11078
11079         * tree-cfg.c (dump_function_to_file): Be prepared for functions
11080         without DECL_STRUCT_FUNCTION initialized.
11081
11082 2007-02-19  Eric Botcazou  <ebotcazou@adacore.com>
11083
11084         * gimplify.c (gimplify_init_ctor_preeval_1): Detect potential overlap
11085         due to calls to functions taking pointers as parameters.
11086
11087 2007-02-19  Richard Henderson  <rth@redhat.com>
11088
11089         PR debug/29558
11090         * var-tracking.c (track_expr_p): Disallow AGGREGATE_TYPE_P
11091         in memory.
11092
11093 2007-02-19  Andreas Krebbel  <krebbel1@de.ibm.com>
11094
11095         * config/s390/s390.c (s390_call_saved_register_used,
11096         s390_function_ok_for_sibcall): Adjust the way CALL_EXPR arguments are
11097         accessed to the new scheme.
11098
11099 2007-02-19  Jan-Benedict Glaw  <jbglaw@lug-owl.de>
11100
11101         * config/cris/cris.c (cris_movem_load_rest_p, cris_store_multiple_op_p)
11102         (cris_print_index, cris_print_operand, cris_print_operand_address)
11103         (cris_reload_address_legitimized, cris_rtx_costs, cris_address_cost)
11104         (cris_side_effect_mode_ok, cris_valid_pic_const, cris_split_movdx)
11105         (cris_expand_pic_call_address): Use xxx_P predicate macros instead of
11106         GET_CODE () == xxx.
11107         * config/cris/cris.h (SECONDARY_RELOAD_CLASS, EXTRA_CONSTRAINT_Q,
11108         EXTRA_CONSTRAINT_T, BDAP_INDEX_P, BIAP_INDEX_P, SIMPLE_ADDRESS_P,
11109         GO_IF_LEGITIMATE_ADDRESS): Ditto.
11110         * config/cris/cris.md (define_insns: *btst, movdi, *mov_side<mode>)
11111         (*mov_sidesisf, *mov_side<mode>_mem, *mov_sidesisf_mem)
11112         (*clear_side<mode>, movsi, *movsi_internal, *ext_sideqihi)
11113         (*ext_side<mode>si, *op_side<mode>, *op_swap_side<mode>, addsi3)
11114         (*extopqihi_side, *extop<mode>si_side, *extopqihi_swap_side)
11115         (*extop<mode>si_swap_side, addi_mul, *addi,andsi3, andhi3, ashl<mode>3)
11116         (uminsi3, call, call_value): Ditto.
11117         (define_split: indir_to_reg_split, unnamed): Ditto.
11118
11119 2007-02-19  Dorit Nuzman  <dorit@il.ibm.com>
11120
11121         PR tree-optimization/30975
11122         * tree-vect-trasnform.c (vect_get_vec_def_for_stmt_copy): Remove
11123         wrong assert.
11124
11125 2007-02-18  Eric Christopher  <echristo@gmail.com>
11126
11127         * mips.c (mips_prepare_builtin_arg): Add argnum parameter.
11128         Remove use of arglist.
11129         (mips_expand_builtin): Remove use of arglist, pass in expr.
11130         (mips_expand_builtin_direct): Rewrite handling for arglist removal.
11131         (mips_expand_builtin_movtf): Ditto.
11132         (mips_expand_builtin_compare): Ditto.
11133
11134 2007-02-19  Alexandre Oliva  <aoliva@redhat.com>
11135
11136         * tree-sra.c (sra_build_assignment): Replace assertion
11137         checking with a comment explaining why it can't be done.
11138
11139 2007-02-18  Sandra Loosemore  <sandra@codesourcery.com>
11140
11141         PR middle-end/30833
11142         * tree-dump.c (dequeue_and_dump): Add tcc_vl_exp case missed
11143         during CALL_EXPR representation conversion.
11144         * tree-ssa-propagate.c (set_rhs): Likewise.
11145
11146 2007-02-19  Alexandre Oliva  <aoliva@redhat.com>
11147
11148         * tree-sra.c (sra_build_assignment): Disable assertion checking
11149         for now.
11150
11151 2007-02-18  Roger Sayle  <roger@eyesopen.com>
11152
11153         * function.c (gimplify_parameters): Call build_gimple_modify_stmt
11154         instead of calling build2 with a GIMPLE_MODIFY_STMT.
11155         * gimple-low.c (lower_function_body, lower_builtin_setjmp):
11156         Likewise.
11157         * gimplify.c (build_stack_save_restore, gimplify_return_expr,
11158         gimplify_decl_expr,  gimplify_self_mod_expr, gimplify_cond_expr,
11159         gimplify_init_ctor_eval_range, gimple_push_cleanup,
11160         gimplify_omp_for, gimplify_omp_atomic_pipeline,
11161         gimplify_omp_atomic_mutex, gimplify_expr, gimplify_one_sizepos,
11162         force_gimple_operand): Likewise.
11163         * ipa-cp.c (constant_val_insert): Likewise.
11164         * lambda-code.c (lbv_to_gcc_expression, lle_to_gcc_expression,
11165         lambda_loopnest_to_gcc_loopnest, replace_uses_equiv_to_x_with_y,
11166         perfect_nestify): Likewise.
11167         * langhooks.c (lhd_omp_assignment): Likewise.
11168         * omp-low.c (lower_rec_input_clauses, lower_reduction_clauses,
11169         lower_copyprivate_clauses, lower_send_clauses,
11170         lower_send_shared_vars, expand_parallel_call,
11171         expand_omp_for_generic, expand_omp_for_static_nochunk,
11172         expand_omp_for_static_chunk, expand_omp_sections,
11173         lower_omp_single_copy, lower_omp_for_lastprivate,
11174         lower_omp_parallel, init_tmp_var, save_tmp_var): Likewise.
11175         * value-prof.c (tree_divmod_fixed_value, tree_mod_pow2,
11176         tree_mod_subtract, tree_ic, tree_stringop_fixed_value):
11177         Likewise.
11178
11179 2007-02-19  Kazu Hirata  <kazu@codesourcery.com>
11180
11181         * config/sh/divtab.c, config/sh/sh.c, config/sh/sh.h,
11182         config/sh/sh.md: Follow spelling conventions.
11183
11184         * config/frv/frv.c, config/frv/frv.h, config/frv/frv.md,
11185         config/frv/predicates.md: Follow spelling conventions.
11186
11187         * config/m68k/linux-unwind.h: Fix a comment typo.
11188         * target.h: Follow spelling conventions.
11189
11190 2007-02-18  Roger Sayle  <roger@eyesopen.com>
11191
11192         PR rtl-optimization/28173
11193         * simplify-rtx.c (simplify_binary_operation_1) <IOR>:  Optimize
11194         (X & C1) | C2 as C2 when (C1 & C2) == C1 and X has no side-effects.
11195         Optimize (X & C1) | C2 as X | C2 when (C1 | C2) == ~0.
11196         Canonicalize (X & C1) | C2 as (X & (C1 & ~C2)) | C2.
11197         <AND>: Canonicalize (X | C1) & C2 as (X & C2) | (C1 & C2).
11198
11199 2007-02-18  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
11200
11201         * builtins.c (fold_builtin_load_exponent): New.
11202         (fold_builtin_2): Use it.
11203
11204 2007-02-18  Steven Bosscher  <steven@gcc.gnu.org>
11205
11206         PR rtl-optimization/30773
11207         * local-alloc.c (update_equiv_regs): Do not set reg_equiv_init
11208         if we fail to attach a REG_EQUIV note.
11209
11210 2007-02-18  David Edelsohn  <edelsohn@gnu.org>
11211             Roger Sayle  <roger@eyesopen.com>
11212
11213         * config/rs6000/rs6000.md (bswapsi2): New define_insn and splitter.
11214
11215 2007-02-18  Sandra Loosemore  <sandra@codesourcery.com>
11216
11217         * calls.c (initialize_argument_information): Pass original EXP
11218         and STRUCT_VALUE_ADDR_VALUE instead of a list of arguments.  Move
11219         code to split complex arguments here, as part of initializing the
11220         ARGS array.
11221         (expand_call): Remove code that builds a list of arguments and
11222         inserts implicit arguments into it.  Instead, just count how many
11223         implicit arguments there will be so we can determine the size of
11224         the ARGS array, and let initialize_argument_information do the work.
11225         (split_complex_values): Delete unused function.
11226
11227 2007-02-18  Eric Botcazou  <ebotcazou@adacore.com>
11228
11229         * tree-eh.c (tree_could_trap_p): Handle VIEW_CONVERT_EXPR.
11230
11231 2007-02-18  Eric Botcazou  <ebotcazou@adacore.com>
11232
11233         * calls.c (mem_overlaps_already_clobbered_arg_p): Return true
11234         for arg pointer based indexed addressing.
11235
11236 2007-02-18  Kazu Hirata  <kazu@codesourcery.com>
11237
11238         * config/ia64/ia64.h, config/ia64/ia64.md,
11239         config/ia64/predicates.md, config/ia64/sysv4.h: Follow
11240         spelling conventions.
11241
11242 2007-02-18  Roman Zippel <zippel@linux-m68k.org>
11243
11244         * config/m68k/m68k.c (split_di): New.
11245         * config/m68k/m68k-protos.h: Declare split_di.
11246         * config/m68k/m68k.md (extendsidi2*,ashldi3*,ashrdi3*,lshrdi3*):
11247           Improve predicate handling and split constant shifts.
11248
11249 2007-02-18  Roman Zippel <zippel@linux-m68k.org>
11250
11251         * config/m68k/m68k.md (extv,extzv,insv): disable dynamic
11252         parameter for register bitfield operations, general predicates
11253         cleanup
11254
11255 2007-02-18  Roman Zippel <zippel@linux-m68k.org>
11256
11257         * config/m68k/linux.h (MD_UNWIND_SUPPORT): Define.
11258         * config/m68k/linux-unwind.h: New file.
11259
11260 2007-02-18  Kazu Hirata  <kazu@codesourcery.com>
11261
11262         * cfgloop.c, config/alpha/alpha.c, config/bfin/bfin.c,
11263         config/i386/athlon.md, config/ia64/ia64.md,
11264         config/rs6000/rs6000.c, config/s390/s390.c, config/spu/spu.md,
11265         df-problems.c, df.h, fold-const.c, ipa-cp.c, ipa-inline.c,
11266         ipa-prop.h, see.c, struct-equiv.c, tree-inline.c,
11267         tree-ssa-loop-niter.c, tree-vect-analyze.c,
11268         tree-vect-transform.c: Fix comment typos.
11269
11270 2007-02-17  Kazu Hirata  <kazu@codesourcery.com>
11271
11272         * sched-deps.c (find_insn_list): Remove.
11273         * sched-int.h: Remove the prototype for find_insn_list.
11274
11275 2007-02-16  Geoffrey Keating  <geoffk@apple.com>
11276
11277         * config/darwin.h (LINK_SPEC): Always pass -macosx_version_min
11278         to linker.
11279         (DARWIN_EXTRA_SPECS): Add %(darwin_minversion).
11280         * config/rs6000/darwin.h (SUBTARGET_OVERRIDE_OPTIONS): Just call
11281         darwin_rs6000_override_options.
11282         (C_COMMON_OVERRIDE_OPTIONS): Expect
11283         darwin_macosx_version_min to be non-NULL always.
11284         (TARGET_C99_FUNCTIONS): Likewise.
11285         (CC1_SPEC): Always pass -mmacosx-version-min to cc1*.
11286         (DARWIN_MINVERSION_SPEC): New.
11287         * config/rs6000/rs6000.c (darwin_rs6000_override_options): New.
11288         * config/i386/darwin.h (CC1_SPEC): Always pass -mmacosx-version-min
11289         to cc1*.
11290         (DARWIN_MINVERSION_SPEC): New.
11291         * config/darwin.opt (mmacosx-version-min): Initialize to non-NULL
11292         value.
11293         * config/darwin-c.c (darwin_cpp_builtins): Expect
11294         darwin_macosx_version_min to be non-NULL always.
11295
11296         * config/rs6000/rs6000.c: Clean up trailing whitespace.
11297
11298 2007-02-16  Uros Bizjak  <ubizjak@gmail.com>
11299
11300         * config/i386/i386.h (x86_use_xchgb): New.
11301         (TARGET_USE_XCHGB): New macro.
11302         * config/i386/i386.c (x86_use_xchgb): Set for PENT4.
11303         * config/i386/i386.md (*rotlhi3_1 splitter, *rotrhi3_1 splitter):
11304         Split after reload into bswaphi for shifts of 8.
11305         (bswaphi_lowpart): Generate rolw insn for HImode byte swaps.
11306         (*bswaphi_lowpart_1): Generate xchgb for Q registers for TARGET_XCHGB
11307         or when optimizing for size.
11308
11309 2007-02-16  Richard Guenther  <rguenther@suse.de>
11310             Christian Bruel  <christian.bruel@st.com>
11311
11312         * fold-const.c (tree_swap_operands_p): Treat SSA_NAMEs like
11313         DECLs but prefer SSA_NAMEs over DECLs.
11314
11315 2007-02-16  Richard Guenther  <rguenther@suse.de>
11316
11317         * tree-flow-inline.h (single_imm_use_p): Remove.
11318         (zero_imm_uses_p): Likewise.
11319         * tree-ssa-coalesce.c (create_outofssa_var_map): Use has_single_use
11320         instead of single_imm_use_p.
11321         * tree-cfg.c (replace_uses_by): Use has_zero_use instead of
11322         zero_imm_uses_p.
11323
11324 2007-02-16  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
11325
11326         PR other/27843
11327         * Makefile.in (SYSTEM_HEADER_DIR): Use single quotes to avoid
11328         nested double- and backquotes.
11329
11330 2007-02-15  Roger Sayle  <roger@eyesopen.com>
11331
11332         PR middle-end/30391
11333         * tree.c (expr_align): Handle MODIFY_EXPR.  GIMPLE_MODIFY_STMT
11334         should be unreachable.
11335         (build2_stat): Allow construction of MODIFY_EXPR at any time.
11336         For the time being redirect GIMPLE_MODIFY_STMT to the new
11337         (renamed) build_gimple_modify_stmt_stat.
11338         (build2_gimple_stat): Rename to...
11339         (build_gimple_modify_stmt_stat): Now longer take a CODE argument.
11340         Always build a GIMPLE_MODIFY_STMT node.
11341         * tree.h (build2_gimple, build2_gimple_stat): Delete.
11342         (build_gimple_modify_stmt, build_gimple_modify_stmt_stat): New
11343         declarations.
11344
11345         * tree-cfg.c (factor_computed_gotos, tree_merge_blocks,
11346         gimplify_val): Use build_gimple_modify_stmt instead of build2_gimple.
11347         * tree-complex.c (set_component_ssa_name, expand_complex_move,
11348         expand_complex_div_wide): Likewise.
11349         * tree-ssa-dom.c (record_equivalences_from_stmt): Likewise.
11350         * tree-ssa-loop-im.c (schedule_sm): Likewise.
11351         * tree-ssa-loop-ivopts.c (rewrite_use_nonlinear_expr): Likewise.
11352         * tree-ssa-loop-manip.c (create_iv): Likewise.
11353         * tree-ssa-phiopt.c (conditional_replacement, minmax_replacement,
11354         abs_replacement): Likewise.
11355         * tree-ssa-pre.c (create_expression_by_pieces, poolify_modify_stmt,
11356         realify_fake_stores): Likewise.
11357
11358         * builtins.c (std_expand_builtin_va_start): Build a MODIFY_EXPR
11359         node rather than a GIMPLE_MODIFY_STMT node.
11360         (std_gimpify_va_arg_expr, expand_builtin_va_copy,
11361         fold_builtin_memset, fold_builtin_memory_op, do_mpfr_sincos):
11362         Likewise.
11363         (integer_valued_real_p): Handle MODIFY_EXPR, not GIMPLE_MODIFY_STMT.
11364         * expr.c (expand_expr_real_1): Handle both MODIFY_EXPR and
11365         GIMPLE_MODIFY_STMT.
11366
11367 2007-02-15  Andrew Pinski  <andrew_pinski@playstation.sony.com>
11368
11369         PR middle-end/30433
11370         * fold-const.c (fold_comparison): Add back the
11371         folding of constant complex comparisions.
11372
11373 2007-02-15  Andrew Pinski  <andrew_pinski@playstation.sony.com>
11374
11375         PR middle-end/30729
11376         * stmt.c (warn_if_unused_value): VA_ARG_EXPR has side
11377         effects unknown to this function, return early.
11378
11379 2007-02-15  Ian Lance Taylor  <iant@google.com>
11380
11381         * lower-subreg.c (move_eh_region_note): New static function.
11382         (resolve_simple_move): Call it.
11383         (decompose_multiword_subregs): Track blocks for which we resolve a
11384         simple move which is also a control flow insn.  Pass them to
11385         find_many_sub_basic_blocks.
11386         (pass_lower_subreg): Add TODO_verify_flow.
11387         (pass_lower_subreg2): Likewise.
11388
11389 2007-02-15  Sandra Loosemore  <sandra@codesourcery.com>
11390             Brooks Moses  <brooks.moses@codesourcery.com>
11391             Lee Millward  <lee.millward@codesourcery.com>
11392
11393         * tree.h (enum tree_code_class): Add tcc_vl_exp.
11394         (VL_EXP_CLASS_P): New.
11395         (TREE_OPERAND_CHECK): Use TREE_OPERAND_LENGTH instead of
11396         TREE_CODE_LENGTH.
11397         (TREE_OPERAND_CHECK_CODE): Likewise.
11398         (GIMPLE_STMT_OPERAND_CHECK): Likewise.
11399         (TREE_RTL_OPERAND_CHECK): Likewise.
11400         (tree_operand_check_failed): Make second parameter the whole tree
11401         instead of its code.  Fixed callers.
11402         (VL_EXP_CHECK): New.
11403         (TREE_OPERAND_LENGTH): New.
11404         (VL_EXP_OPERAND_LENGTH): New.
11405         (CALL_EXPR_FN): New.
11406         (CALL_EXPR_STATIC_CHAIN): New.
11407         (CALL_EXPR_ARGS): New.
11408         (CALL_EXPR_ARG): New.
11409         (call_expr_nargs): New.
11410         (CALL_EXPR_ARGP): New.
11411         (build_nt_call_list): Declare.
11412         (build_vl_exp_stat): Declare.
11413         (build_vl_exp): New.
11414         (build_call_list): Declare.
11415         (build_call_nary): Declare.
11416         (build_call_valist): Declare.
11417         (build_call_array): Declare.
11418         (call_expr_arg): Declare.
11419         (call_expr_argp): Declare.
11420         (call_expr_arglist): Declare.
11421         (fold_build_call_list): Declare.
11422         (fold_build_call_list_initializer): Declare.
11423         (fold_call_expr): Declare to replace fold_builtin.
11424         (fold_builtin_fputs): Update to agree with modified definition.
11425         (fold_builtin_strcpy): Likewise.
11426         (fold_builtin_strncpy): Likewise.
11427         (fold_builtin_memory_chk): Likewise.
11428         (fold_builtin_stxcpy_chk): Likewise.
11429         (fold_builtin_strncpy_chk): Likewise.
11430         (fold_builtin_next_arg): Likewise.
11431         (fold_build_call_expr): Declare.
11432         (fold_builtin_call_list): Declare.
11433         (fold_builtin_call_valist): Declare.
11434         (build_call_expr): Declare.
11435         (validate_arglist): Update to agree with modified definition.
11436         (tree_operand_length): New.
11437         (call_expr_arg_iterator): New.
11438         (init_call_expr_arg_iterator): New.
11439         (next_call_expr_arg): New.
11440         (first_call_expr_arg): New.
11441         (more_call_expr_args_p): New.
11442         (FOR_EACH_CALL_EXPR_ARG): New.
11443
11444         * tree.c (tree_code_class_string): Add entries for tcc_vl_exp
11445         and tcc_gimple_stmt.
11446         (tree_code_size): Update documentation.  Use sizeof (tree) rather
11447         than sizeof (char *).
11448         (tree_size): Likewise.  Add case for tcc_vl_exp.
11449         (tree_node_structure): Add case for tcc_vl_exp.
11450         (contains_placeholder_p): Likewise.
11451         (substitute_in_expr): Likewise.
11452         (substitute_placeholder_in_expr): Likewise.
11453         (stabilize_reference_1): Likewise.
11454         (build3_stat): Remove logic for CALL_EXPRs.  Replace with assertion
11455         to diagnose breakage of this interface for constructing CALL_EXPRs.
11456         (build_nt): Add similar assertion here.
11457         (build_nt_call_list): New.
11458         (simple_cst_equal) <CALL_EXPR>: Rewrite to use new accessors.
11459         (iterative_hash_expr): Use TREE_OPERAND_LENGTH instead of
11460         TREE_CODE_LENGTH.
11461         (get_callee_fndecl): Use new CALL_EXPR accessors.
11462         (tree_operand_check_failed): Change parameters to pass entire node
11463         instead of its code, so that we can call TREE_OPERAND_LENGTH on it.
11464         (process_call_operands): New.
11465         (build_vl_exp_stat): New.
11466         (build_call_list): New.
11467         (build_call_nary): New.
11468         (build_call_valist): New.
11469         (build_call_array): New.
11470         (walk_tree): Use TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
11471         (call_expr_arglist): New.
11472
11473         * tree.def (CALL_EXPR): Change representation of CALL_EXPRs to use
11474         tcc_vl_exp instead of a fixed-size tcc_expression.
11475
11476         * doc/c-tree.texi (CALL_EXPR): Document new representation and
11477         accessors for CALL_EXPRs.
11478         (AGGR_INIT_EXPR): Likewise.
11479
11480 2007-02-15  Sandra Loosemore  <sandra@codesourcery.com>
11481             Brooks Moses  <brooks.moses@codesourcery.com>
11482             Lee Millward  <lee.millward@codesourcery.com>
11483
11484         * builtins.c (c_strlen): Return NULL_TREE instead of 0.
11485         (expand_builtin_nonlocal_goto): Change parameter to be entire
11486         CALL_EXPR instead of an arglist.  Use new CALL_EXPR accessors.
11487         (expand_builtin_prefetch): Likewise.
11488         (expand_builtin_classify_type): Likewise.
11489         (mathfn_built_in): Return NULL_TREE instead of 0.
11490         (expand_errno_check): Use new CALL_EXPR accessors.
11491         (expand_builtin_mathfn): Use new CALL_EXPR accessors and constructors.
11492         Return NULL_RTX instead of 0.
11493         (expand_builtin_mathfn_2): Likewise.
11494         (expand_builtin_mathfn_3): Likewise.
11495         (expand_builtin_interclass_mathfn): Likewise.
11496         (expand_builtin_sincos): Likewise.
11497         (expand_builtin_cexpi): Likewise.
11498         (expand_builtin_int_roundingfn): Likewise.
11499         (expand_builtin_int_roundingfn_2): Likewise.
11500         (expand_builtin_pow): Likewise.
11501         (expand_builtin_powi): Likewise.
11502         (expand_builtin_strlen): Pass entire CALL_EXPR as parameter instead
11503         of arglist, fixing callers appropriately.  Use new CALL_EXPR
11504         accessors and constructors.  Return NULL_RTX instead of 0.
11505         (expand_builtin_strstr): Likewise.
11506         (expand_builtin_strchr): Likewise.
11507         (expand_builtin_strrchr): Likewise.
11508         (expand_builtin_strpbrk): Likewise.
11509         (expand_builtin_memcpy): Likewise.
11510         (expand_builtin_mempcpy): Likewise.
11511         (expand_builtin_mempcpy_args): New.
11512         (expand_builtin_memmove): Similarly to expand_builtin_mempcpy.
11513         (expand_builtin_memmove_args): New.
11514         (expand_builtin_bcopy): Similarly to expand_builtin_mempcpy.
11515         (expand_movstr): Likewise.
11516         (expand_builtin_strcpy): Likewise.
11517         (expand_builtin_strcpy_args): New.
11518         (expand_builtin_stpcpy): Similarly to expand_builtin_strcpy.
11519         (expand_builtin_strncpy): Likewise.
11520         (expand_builtin_memset): Likewise.
11521         (expand_builtin_memset_args): New.
11522         (expand_builtin_bzero): Similarly to expand_builtin_memset.
11523         (expand_builtin_memcmp): Likewise.
11524         (expand_builtin_strcmp): Likewise.
11525         (expand_builtin_strncmp): Likewise.
11526         (expand_builtin_strcat): Likewise.
11527         (expand_builtin_strncat): Likewise.
11528         (expand_builtin_strspn): Likewise.
11529         (expand_builtin_strcspn): Likewise.
11530         (expand_builtin_args_info): Likewise.
11531         (expand_builtin_va_start): Likewise.
11532         (gimplify_va_arg_expr): Likewise.
11533         (expand_builtin_va_end): Likewise.
11534         (expand_builtin_va_copy): Likewise.
11535         (expand_builtin_frame_address): Likewise.
11536         (expand_builtin_alloca): Likewise.
11537         (expand_builtin_bswap): Likewise.
11538         (expand_builtin_unop): Likewise.
11539         (expand_builtin_fputs): Likewise.
11540         (expand_builtin_expect): Likewise.
11541         (expand_builtin_fabs): Likewise.
11542         (expand_builtin_copysign): Likewise.
11543         (expand_builtin_printf): Likewise.
11544         (expand_builtin_fprintf): Likewise.
11545         (expand_builtin_sprintf): Likewise.
11546         (expand_builtin_init_trampoline): Likewise.
11547         (expand_builtin_signbit): Likewise.
11548         (expand_builtin_fork_or_exec): Likewise.
11549         (expand_builtin_sync_operation): Likewise.
11550         (expand_builtin_compare_and_swap): Likewise.
11551         (expand_builtin_lock_test_and_set): Likewise.
11552         (expand_builtin_lock_release): Likewise.
11553         (expand_builtin): Likewise.
11554         (builtin_mathfn_code): Likewise.
11555
11556         (fold_builtin_constant_p): Pass call arguments individually instead
11557         of as an arglist, fixing callers appropriately.  Use new CALL_EXPR
11558         accessors and constructors.  Return NULL_TREE instead of 0.
11559         (fold_builtin_expect): Likewise.
11560         (fold_builtin_classify_type): Likewise.
11561         (fold_builtin_strlen): Likewise.
11562         (fold_builtin_nan): Likewise.
11563         (integer_valued_real_p): Likewise.
11564         (fold_trunc_transparent_mathfn): Likewise.
11565         (fold_fixed_mathfn): Likewise.
11566         (fold_builtin_cabs): Likewise.
11567         (fold_builtin_sqrt): Likewise.
11568         (fold_builtin_cbrt): Likewise.
11569         (fold_builtin_cos): Likewise.
11570         (fold_builtin_cosh): Likewise.
11571         (fold_builtin_tan): Likewise.
11572         (fold_builtin_sincos): Likewise.
11573         (fold_builtin_cexp): Likewise.
11574         (fold_builtin_trunc): Likewise.
11575         (fold_builtin_floor): Likewise.
11576         (fold_builtin_ceil): Likewise.
11577         (fold_builtin_round): Likewise.
11578         (fold_builtin_int_roundingfn): Likewise.
11579         (fold_builtin_bitop): Likewise.
11580         (fold_builtin_bswap): Likewise.
11581         (fold_builtin_logarithm): Likewise.
11582         (fold_builtin_hypot): Likewise.
11583         (fold_builtin_pow): Likewise.
11584         (fold_builtin_powi): Likewise.
11585         (fold_builtin_exponent): Likewise.
11586         (fold_builtin_memset): Likewise.
11587         (fold_builtin_bzero): Likewise.
11588         (fold_builtin_memory_op): Likewise.
11589         (fold_builtin_bcopy): Deleted; call site changed to invoke
11590         fold_builtin_memory_op directly.
11591         (fold_builtin_strcpy): Similarly as for fold_builtin_memory_op.
11592         (fold_builtin_strncpy): Likewise.
11593         (fold_builtin_memcmp): Likewise.
11594         (fold_builtin_strcmp): Likewise.
11595         (fold_builtin_strncmp): Likewise.
11596         (fold_builtin_signbit): Likewise.
11597         (fold_builtin_copysign): Likewise.
11598         (fold_builtin_isascii): Likewise.
11599         (fold_builtin_toascii): Likewise.
11600         (fold_builtin_isdigit): Likewise.
11601         (fold_builtin_fabs): Likewise.
11602         (fold_builtin_abs): Likewise.
11603         (fold_builtin_fmin_fmax): Likewise.
11604         (fold_builtin_carg): Likewise.
11605         (fold_builtin_classify): Likewise.
11606         (fold_builtin_unordered_cmp): Likewise.
11607
11608         (fold_builtin_0, fold_builtin_2, fold_builtin_3, fold_builtin_4):
11609         New functions split out from fold_builtin_1.
11610         (fold_builtin_n): New.
11611         (fold_builtin_varargs): New.
11612         (fold_builtin): Deleted.  Most callers changed to use fold_call_expr
11613         instead.
11614         (fold_call_expr): New.
11615         (build_function_call_expr): Rewrite to use new helper function.
11616         (fold_builtin_call_list): New.
11617         (build_call_expr): New.
11618         (fold_builtin_call_valist): New.
11619         (rewrite_call_expr): New.
11620         (validate_arg): New.
11621         (validate_arglist): Change parameter to be entire CALL_EXPR instead
11622         of an arglist.  Change return type to bool.  Use new CALL_EXPR
11623         accessors.
11624
11625         (fold_builtin_strstr):  Pass call arguments individually instead
11626         of as an arglist, fixing callers appropriately.  Use new CALL_EXPR
11627         accessors and constructors.  Return NULL_TREE instead of 0.
11628         (fold_builtin_strchr): Likewise.
11629         (fold_builtin_strrchr): Likewise.
11630         (fold_builtin_strpbrk): Likewise.
11631         (fold_builtin_strcat): Likewise.
11632         (fold_builtin_strncat): Likewise.
11633         (fold_builtin_strspn): Likewise.
11634         (fold_builtin_strcspn): Likewise.
11635         (fold_builtin_fputs): Likewise.
11636         (fold_builtin_next_arg): Likewise.
11637         (fold_builtin_sprintf): Likewise.
11638
11639         (expand_builtin_object_size): Use new CALL_EXPR accessors.  Use
11640         NULL_RTX instead of 0.
11641         (expand_builtin_memory_chk): Likewise.
11642         (maybe_emit_chk_warning): Likewise.
11643         (maybe_emit_sprintf_chk_warning): Likewise.
11644
11645         (fold_builtin_object_size): Pass call arguments individually instead
11646         of as an arglist, fixing callers appropriately.  Use new CALL_EXPR
11647         accessors and constructors.  Return NULL_TREE instead of 0.
11648         (fold_builtin_memory_chk): Likewise.
11649         (fold_builtin_stxcpy_chk): Likewise.
11650         (fold_builtin_strncpy_chk): Likewise.
11651         (fold_builtin_strcat_chk): Likewise.
11652         (fold_builtin_strcat_chk): Likewise.
11653         (fold_builtin_strncat_chk): Likewise.
11654         (fold_builtin_sprintf_chk): Likewise.
11655         (fold_builtin_snprintf_chk): Likewise.
11656         (fold_builtin_printf): Likewise.
11657         (fold_builtin_vprintf): Likewise.
11658
11659         * fold-const.c (negate_expr_p): Use new CALL_EXPR accessors and
11660         constructors.
11661         (operand_equal_p): Add separate tcc_vl_exp/CALL_EXPR case.
11662         (make_range): Use TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
11663         (extract_muldiv_1): Add VL_EXP_CLASS_P case.
11664         (fold_mathfn_compare): Use new CALL_EXPR accessors and constructors.
11665         (fold_unary): Likewise.
11666         (fold_binary): Likewise.
11667         (fold_ternary): Remove CALL_EXPR case, since they are no longer
11668         ternary expressions.
11669         (fold): Add logic for tcc_vl_exp.
11670         (fold_checksum_tree):  Make it know about tcc_vl_exp.  Use
11671         TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
11672         (fold_build3_stat): Add assertion to flag broken interface for
11673         constructing CALL_EXPRs.
11674         (fold_build_call_list): New.
11675         (fold_build_call_list_initializer): New.
11676         (tree_expr_nonnegative_p): Use new CALL_EXPR accessors and
11677         constructors.
11678         (fold_strip_sign_ops): Likewise.
11679
11680 2007-02-15  Sandra Loosemore  <sandra@codesourcery.com>
11681             Brooks Moses  <brooks.moses@codesourcery.com>
11682             Lee Millward  <lee.millward@codesourcery.com>
11683
11684         * tree-dump.c (dequeue_and_dump) <CALL_EXPR>: Use new CALL_EXPR
11685         accessors and dump arguments explicitly.
11686
11687         * tree-pretty-print.c (do_niy): Use TREE_OPERAND_LENGTH instead of
11688         TREE_CODE_LENGTH.
11689         (dump_generic_node): Use new CALL_EXPR accessors and walk arguments
11690         explicitly.
11691         (print_call_name): Use new CALL_EXPR accessors.
11692
11693         * print-tree.c (print_node): Add case tcc_vl_exp.  Print
11694         CALL_EXPR arguments explicitly instead of as a list.  Use
11695         TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
11696
11697         * tree-vrp.c (stmt_interesting_for_vrp): Use new CALL_EXPR accessors.
11698         (vrp_visit_stmt): Likewise.
11699
11700         * tree-ssa-loop-im.c (outermost_invariant_loop_expr):  Make it
11701         know about tcc_vl_exp.  Use TREE_OPERAND_LENGTH instead of
11702         TREE_CODE_LENGTH.
11703         (force_move_till_expr): Likewise.
11704
11705         * targhooks.c (default_external_stack_protect_fail): Use
11706         build_call_expr instead of build_function_call_expr.
11707         (default_hidden_stack_protect_fail): Likewise.
11708
11709         * tree-complex.c (expand_complex_libcall): Use build_call_expr to
11710         build the call.
11711
11712         * cgraphbuild.c (build_cgraph_edges): Use new CALL_EXPR accessors
11713         and walk arguments explicitly.
11714
11715         * tree-ssa-loop-niter.c (simplify_replace_tree): Use
11716         TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
11717         (expand_simple_operations): Likewise.
11718         (infer_loop_bounds_from_array): Use new CALL_EXPR accessors.
11719
11720         * gengtype.c (adjust_field_tree_exp): Use TREE_OPERAND_LENGTH instead
11721         of TREE_CODE_LENGTH.
11722         (walk_type): Tweak walking of arrays not to blow up on CALL_EXPRs.
11723
11724         * optabs.c (expand_widen_pattern-expr): Use TREE_OPERAND_LENGTH
11725         instead of TREE_CODE_LENGTH.
11726
11727         * value_prof.c (tree_ic): Use new CALL_EXPR accessors.
11728         (tree_ic_transform): Likewise.
11729         (interesting_stringop_to_profile_p): Pass entire CALL_EXPR as
11730         parameter instead of arglist.  Fix callers.
11731         (tree_stringop_fixed_value): Use new CALL_EXPR accessors.
11732         (tree_stringops_transform): Likewise.
11733         (tree_indirect_call_to_profile): Likewise.
11734         (tree_stringops_values_to_profile): Likewise.
11735
11736         * tree-tailcall.c (find_tail_calls): Use new CALL_EXPR iterator.
11737         (eliminate_tail_call): Likewise.
11738
11739         * ipa-cp.c (ipcp_update_callgraph): Use new CALL_EXPR accessors.
11740
11741         * tree-scalar-evolution.c (chrec_contains_symbols_defined_in_loop):
11742         Use TREE_OPERAND_LENGTH and generalize to handle any number of
11743         operands.
11744         (instantiate_parameters_1): Can't handle tcc_vl_exp here.
11745
11746         * omp-low.c (build_omp_barrier): Use build_call_expr.
11747         (lower_rec_input_clauses): Likewise.
11748         (lower_reduction_clauses): Likewise.
11749         (expand_parallel_call): Likewise.
11750         (maybe_catch_exception): Likewise.
11751         (expand_omp_for_generic): Likewise.
11752         (expand_omp_for_static_nochunk): Likewise.
11753         (expand_omp_sections): Likewise.
11754         (lower_omp_single_simple): Likewise.
11755         (lower_omp_single_copy): Likewise.
11756         (lower_omp_master): Likewise.
11757         (lower_omp_ordered): Likewise.
11758         (lower_omp_critical): Likewise.
11759
11760         * ipa-reference.c (check-call): Use new CALL_EXPR iterator.
11761         (scan_for_static_refs): Create tcc_vl_exp case for CALL_EXPR.
11762
11763         * tree-gimple.c (is_gimple_call_addr): Fix doc.
11764         (recalculate_side_effects): Use TREE_OPERAND_LENGTH instead of
11765         TREE_CODE_LENGTH.  Add tcc_vl_exp case.
11766
11767         * tree-chrec.c (chrec_contains_symbols): Use TREE_OPERAND_LENGTH
11768         and generalize to handle any number of operands.
11769         (chrec_contains_undetermined): Likewise.
11770         (tree_contains_chrecs): Likewise.
11771         (evolution_function_is_invariant_rec_p): Use TREE_OPERAND_LENGTH.
11772
11773         * cgraphunit.c (update_call_expr): Use new CALL_EXPR accessors.
11774
11775         * tree-ssa-ccp.c (ccp_fold): Use new CALL_EXPR accessors.  Use
11776         fold_call_expr instead of fold_builtin.
11777         (ccp_fold_builtin): Likewise.  Update calls into builtins.c to
11778         match declarations there.
11779         (fold_stmt): Use new CALL_EXPR constructor and accessors.  Doc
11780         updates.
11781
11782         * tree-ssa-loop-ivopts.c (expr_invariant_in_loop_p): Use
11783         TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
11784
11785         * ipa-pure-const.c (check_call): Use new CALL_EXPR accessors.
11786         (scan_function): Add case tcc_vl_exp for CALL_EXPR.
11787
11788         * tree-stdarg.c (execute_optimize_stdarg): Use new CALL_EXPR
11789         accessors.
11790
11791         * tree-ssa-math-opts.c (execute_cse_sincos_1): Use build_call_expr.
11792         (execute_cse_sincos): Use new CALL_EXPR accessors.
11793
11794         * tree-ssa-alias.c (find_used_portions): Use new CALL_EXPR iterator.
11795
11796         * gimple-low.c (lower_function_body): Use build_call_expr.
11797         (lower_builtin_setjmp): Likewise.
11798
11799         * expr.c (emit_block_move_via_libcall): Use build_call_expr.
11800         (set_storage_via_libcall): Likewise.
11801         (safe_from_p): Add tcc_vl_exp case.  Use TREE_OPERAND_LENGTH
11802         instead of TREE_CODE_LENGTH.
11803         (expand_expr_real_1): Use new CALL_EXPR accessors.
11804
11805         * tree-browser.c (store_child_info): Use TREE_OPERAND_LENGTH and
11806         generalize to handle any number of operands.
11807         (TB_parent_eq): Likewise.
11808
11809         * predict.c (expr_expected_value): Use new CALL_EXPR accessors.
11810         (strip_builtin_expect): Likewise.
11811
11812         * function.c (gimplify_parameters): Use build_call_expr.
11813
11814         * tree-vectorizer.c (vect_is_simple_reduction): Use TREE_OPERAND_LENGTH
11815         instead of TREE_CODE_LENGTH.
11816
11817         * ipa-type-escape.c (check_call): Use new CALL_EXPR iterators.
11818         (scan_for_refs): Add case tcc_vl_exp for CALL_EXPR.
11819
11820         * tree-data-ref.c (get_references_in_stmt): Use new CALL_EXPR
11821         iterators.
11822
11823         * gimplify.c (build_stack_save_restore): Use build_call_expr.
11824         (gimplify_decl_expr): Likewise.
11825         (gimplify_call_expr): Use fold_call_expr instead of fold_builtin.
11826         Use new CALL_EXPR iterators.
11827         (gimplify_modify_expr_to_memcpy): Use build_call_expr.
11828         (gimplify_modify_expr_to_memset): Likewise.
11829         (gimplify_variable_sized_compare): Likewise.
11830         (gimplify_omp_atomic_fetch_op): Likewise.
11831         (gimplify_omp_atomic_pipeline): Likewise.
11832         (gimplify_omp_atomic_mutex): Likewise.
11833         (gimplify_function_tree): Likewise.
11834
11835         * calls.c (alloca_call_p): Use new CALL_EXPR accessors.
11836         (call_expr_flags): Likewise.
11837         (expand_call): Likewise.
11838
11839         * except.c (expand_builtin_eh_return_data_regno): Pass entire
11840         CALL_EXPR as parameter instead of arglist.  Use new CALL_EXPR
11841         accessors.
11842
11843         * coverage.c (create_coverage): Use build_call_expr.
11844
11845         * tree-ssa-pre.c (expression_node_pool, list_node_pool): Delete.
11846         (temp_call_expr_obstack): New.
11847         (pool_copy_list): Delete.
11848         (temp_copy_call_expr): New.
11849         (phi_translate): Add case tcc_vl_exp for CALL_EXPR.  Use new
11850         CALL_EXPR accessors.  Get rid of special goo for copying argument
11851         lists and use temp_copy_call_expr instead.
11852         (valid_in_sets): Add case tcc_vl_exp for CALL_EXPR.  Use new
11853         CALL_EXPR accessors.
11854         (create_expression_by_pieces): Likewise.  Use build_call_array
11855         to construct the result instead of fold_build3.
11856         (create_value_expr_from): Add tcc_vl_exp.  Delete special goo for
11857         dealing with argument lists.
11858         (init_pre): Remove references to expression_node_pool and
11859         list_node_pool.  Init temp_call_expr_obstack instead.
11860         (fini_pre): Remove references to expression_node_pool and
11861         list_node_pool.
11862
11863         * tree-sra.c (sra_walk_call_expr): Use new CALL_EXPR accessors
11864         and walk arguments explicitly instead of as a list.
11865
11866         * tree-mudflap.c (mf_build_check_statement_for): Use build_call_expr.
11867         (mx_register_decls): Likewise.
11868         (mudflap_register_call): Likewise.
11869         (mudflap_finish_file): Likewise.
11870
11871         * ipa-prop.c (ipa_callsite_compute_count): Use new CALL_EXPR accessors.
11872         (ipa_callsite_compute_param): Likewise.
11873
11874         * tree-vect-patterns.c (vect_recog_pow_pattern): Use new CALL_EXPR
11875         accessors and constructor.
11876
11877         * tree-nested.c (convert_nl_goto_reference): Use new CALL_EXPR
11878         accessors and constructor.
11879         (convert_tramp_reference): Likewise.
11880         (convert_call_expr): Likewise.
11881         (finalize_nesting_tree_1): Likewise.
11882
11883         * tree-ssa.c (tree_ssa_useless_type_conversion): Use new CALL_EXPR
11884         accessors.
11885
11886         * tree-ssa-loop-prefetch.c (issue_prefetch_ref): Use build_call_expr.
11887
11888         * tree-inline.c (initialize_inlined_parameters): Pass entire
11889         CALL_EXPR as parameter instead of arglist.  Use new CALL_EXPR
11890         accessors.
11891         (estimate_num_insns_1): Use new CALL_EXPR accessors.
11892         (expand_call_inline): Tidy up call to initialize_inlined_parameters.
11893
11894         * tree-vect-transform.c (vect_create_epilog_for_reduction):  Use
11895         TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
11896         (vectorizable_reduction): Likewise.
11897         (vectorizable_call): Use new CALL_EXPR iterators.
11898         (vectorizable_conversion): Use build_call_expr.
11899         (vectorizable_operation): Use TREE_OPERAND_LENGTH.
11900         (vect_gen_widened_results_half): Use build_call_expr.
11901         (vect_setup_realignment): Likewise.
11902         (vectorizable_live_operation): Use TREE_OPERAND_LENGTH.
11903
11904         * tree-object-size.c (alloc_object_size): Use new CALL_EXPR accessors.
11905         (pass_through_call): Likewise.
11906         (compute_object_sizes): Likewise.  Use fold_call_expr instead of
11907         fold_builtin.
11908
11909         * tree-profile.c (tree_gen_interval_profiler): Use build_call_expr.
11910         (tree_gen_pow2_profiler): Likewise.
11911         (tree_gen_one_value_profiler): Likewise.
11912         (tree_gen_ic_func_profiler): Likewise.
11913         (tree_gen_average_profiler): Likewise.
11914         (tree_gen_ior_profiler): Likewise.
11915
11916         * tree-ssa-structalias.c (get_constraint_for): Add case tcc_vl_exp.
11917         (find_func_aliases): Use new CALL_EXPR accessors.  Add case
11918         tcc_vl_exp.  Use TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
11919
11920         * tree-ssa-reassoc.c (get_rank): Use TREE_OPERAND_LENGTH instead
11921         of TREE_CODE_LENGTH.
11922
11923         * stmt.c (warn_if_unused_value): Use TREE_OPERAND_LENGTH instead
11924         of TREE_CODE_LENGTH.
11925
11926         * convert.c (convert_to_real): Use new CALL_EXPR accessors and
11927         constructor.
11928         (convert_to_integer): Likewise.
11929
11930         * tree-ssa-operands.c (get_call_expr_operands): Use new CALL_EXPR
11931         accessors.
11932
11933 2007-02-15  Sandra Loosemore  <sandra@codesourcery.com>
11934             Brooks Moses  <brooks.moses@codesourcery.com>
11935             Lee Millward  <lee.millward@codesourcery.com>
11936
11937         * config/alpha/alpha.c (alpha_expand_builtin): Use new CALL_EXPR
11938         accessors.
11939         * config/frv/frv.c (frv_expand_builtin): Likewise.
11940         * config/s390/s390.c (s390_expand_builtin): Likewise.
11941
11942         * config/sparc/sparc.c (sparc_gimplify_va_arg): Use build_call_expr.
11943         (sparc_expand_builtin): Use new CALL_EXPR accessors.
11944
11945         * config/i386/i386.c (ix86_function_ok_for_sibcall): Likewise.
11946         (ix86_expand_binop_builtin): Pass entire CALL_EXPR as parameter
11947         instead of arglist.  Use new CALL_EXPR accessors on it.  Fix callers.
11948         (ix86_expand_store_builtin): Likewise.
11949         (ix86_expand_unop_builtin): Likewise.
11950         (ix86_expand_unop1_builtin): Likewise.
11951         (ix86_expand_sse_compare): Likewise.
11952         (ix86_expand_sse_comi): Likewise.
11953         (ix86_expand_vec_init_builtin): Likewise.
11954         (ix86_expand_vec_ext_builtin): Likewise.
11955         (ix86_expand_vec_set_builtin): Likewise.
11956         (ix86_expand_builtin): Use new CALL_EXPR accessors.
11957
11958         * config/sh/sh.c (sh_expand_builtin): Use new CALL_EXPR accessors.
11959         * config/c4x/c4x.c (c4x_expand_builtin): Likewise.
11960
11961         * config/iq2000/iq2000.c (expand_one_builtin): Pass entire CALL_EXPR
11962         instead of arglist.  Use new CALL_EXPR accessors.  Fix callers.
11963         (iq2000_expand_builtin): Use new CALL_EXPR accessors.
11964
11965         * config/rs6000/rs6000-c.c (altivec_build_resolved_builtin): Use
11966         build_call_expr.
11967         * config/rs6000/rs6000.c (rs6000_gimplify_va_arg): Likewise.
11968         (rs6000_expand_unop_builtin): Pass entire CALL_EXPR instead of
11969         arglist.  Use new CALL_EXPR accessors.  Fix callers.
11970         (altivec_expand_abs_builtin): Likewise.
11971         (rs6000_expand_binop_builtin): Likewise.
11972         (altivec_expand_predicate_builtin): Likewise.
11973         (altivec_expand_lv_builtin): Likewise.
11974         (spe_expand_stv_builtin): Likewise.
11975         (altivec_expand_stv_builtin): Likewise.
11976         (rs6000_expand_ternop_builtin): Likewise.
11977         (altivec_expand_ld_builtin): Use new CALL_EXPR accessors.
11978         (altivec_expand_st_builtin): Likewise.
11979         (altivec_expand_dst_builtin): Likewise.
11980         (altivec_expand_vec_init_builtin): Pass entire CALL_EXPR instead of
11981         arglist.  Use new CALL_EXPR accessors.  Fix callers.
11982         (altivec_expand_vec_set_builtin): Likewise.
11983         (altivec_expand_vec_ext_builtin): Likewise.
11984         (altivec_expand_builtin): Use new CALL_EXPR accessors.
11985         (spe_expand_builtin): Likewise.
11986         (spe_expand_predicate_builtin): Pass entire CALL_EXPR instead of
11987         arglist.  Use new CALL_EXPR accessors.  Fix callers.
11988         (spe_expand_evsel_builtin): Likewise.
11989         (rs6000_expand_builtin): Use new CALL_EXPR accessors.  VCFUX and
11990         FCFSX cases must construct whole new CALL_EXPR, not just arglist.
11991
11992         * config/arm/arm.c (arm_expand_binop_builtin): Pass entire CALL_EXPR
11993         instead of arglist.  Use new CALL_EXPR accessors.  Fix callers.
11994         (arm_expand_unop_builtin): Likewise.
11995         (arm_expand_builtin): Use new CALL_EXPR accessors.
11996
11997         * config/mips/mips.c (mips_expand_builtin):  Use new CALL_EXPR
11998         accessors.
11999
12000         * config/bfin/bfin.c (bfin_expand_binop_builtin): Pass entire CALL_EXPR
12001         instead of arglist.  Use new CALL_EXPR accessors.  Fix callers.
12002         (bfin_expand_unop_builtin): Likewise.
12003         (bfin_expand_builtin): Use new CALL_EXPR accessors.
12004
12005 2007-02-15  Sandra Loosemore  <sandra@codesourcery.com>
12006             Brooks Moses  <brooks.moses@codesourcery.com>
12007             Lee Millward  <lee.millward@codesourcery.com>
12008
12009         * c-semantics.c (build_stmt): Add internal diagnostic check.
12010
12011         * c-pretty-print.c (pp_c_postfix_expression): Use new CALL_EXPR
12012         accessors.  Print arguments explicitly instead of as a list.
12013
12014         * c-typeck.c (build_function_call): Use new CALL_EXPR constructors.
12015
12016         * c-omp.c (c_finish_omp_barrier): Use build_call_expr.
12017         (c_finish_omp_flish): Likewise.
12018
12019         * c-common.c (verify_tree): Use new CALL_EXPR accessors.  Traverse
12020         arguments explicitly instead of as a list.  Use TREE_OPERAND_LENGTH
12021         instead of TREE_CODE_LENGTH.
12022         (check_function_arguments_recurse): Use new CALL_EXPR accessors.
12023         (c_warn_unused_result): Likewise.
12024
12025 2007-02-15  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
12026
12027         PR c/26494
12028         * doc/invoke.texi (Warning Options): Remove
12029         -Werror-implicit-function-declaration.
12030         (Wimplicit-function-declaration): Update description.
12031         * opts.c (common_handle_option): Move handling of -Werror=* to...
12032         (enable_warning_as_error): ...here.
12033         * opts.h (enable_warning_as_error): Declare.
12034         * c-decl.c (implicit_decl_warning): Unless
12035         -Wno-implicit-function-declaration is given, emit a pedwarn if
12036         -std=c99 or emit a warning if -Wimplicit-function-declaration.
12037         * c.opt (Wimplicit-function-declaration): Replace
12038         mesg_implicit_function_declaration with
12039         warn_implicit_function_declaration.
12040         * c-opts.c (c_common_handle_option):
12041         -Werror-implicit-function-declaration is exactly equal as
12042         -Werror=implicit-function-declaration.
12043         (set_Wimplicit): Replace mesg_implicit_function_declaration with
12044         warn_implicit_function_declaration.
12045         (c_common_post_options): -Wimplict-function-declaration is enabled
12046         by default by -std=c99, otherwise is disabled by default.
12047         * c-objc-common.c (c_objc_common_init): Remove flawed logic.
12048
12049 2007-02-15  Eric Botcazou  <ebotcazou@adacore.com>
12050
12051         * gimplify.c (gimplify_modify_expr): During gimplification, attach a
12052         DECL on the rhs to a DECL on the lhs for debug info purposes if the
12053         former is ignored but not the latter.
12054
12055 2007-02-15  Eric Botcazou  <ebotcazou@adacore.com>
12056
12057         * expr.c (expand_expr_real_1) <normal_inner_ref>: If a temporary
12058         is made and the reference doesn't use the alias set of its type,
12059         do not create the temporary using that type.
12060
12061 2007-02-15  Aldy Hernandez  <aldyh@redhat.com>
12062
12063         * jump.c: Remove prototypes for delete_computation and
12064         delete_prior_computation.
12065
12066 2007-02-15  Paolo Bonzini  <bonzini@gnu.org>
12067
12068         * jump.c (get_label_after): Delete.
12069         (get_label_before, delete_computation, delete_jump,
12070         delete_prior_computation, follow_jumps): Move...
12071         * reorg.c (delete_computation, delete_prior_computation): ... here...
12072         (get_label_before, delete_jump): ... making these static ...
12073         (follow_jumps): ... and simplifying this since it only runs after
12074         reload.
12075         * rtl.h (get_label_after, get_label_before, delete_jump,
12076         follow_jumps): Delete prototypes.
12077
12078 2007-02-15  Paolo Bonzini  <bonzini@gnu.org>
12079
12080         * caller-save.c (save_call_clobbered_regs): Do not process sibcalls.
12081
12082 2007-02-15  Nick Clifton  <nickc@redhat.com>
12083
12084         * varasm.c (default_asm_output_anchor): Prepend * to . symbol in
12085         order to prevent it from being munged by the target.
12086
12087 2007-02-15  Uros Bizjak  <ubizjak@gmail.com>
12088
12089         * config/i386/i386.md: Remove misleading comment.
12090
12091 2007-02-15  Alexandre Oliva  <aoliva@redhat.com>
12092
12093         * config/frv/frv.md (reload_incc, reload_outcc, reload_incc_uns,
12094         reload_outcc_uns, reload_incc_nz, reload_outcc_nz): Remove
12095         invalid patterns.
12096
12097 2007-02-15  Alexandre Oliva  <aoliva@redhat.com>
12098
12099         * tree-sra.c (instantiate_missing_elements): Canonicalize
12100         bit-field types.
12101         (sra_build_assignment): New.
12102         (generate_copy_inout, generate_element_copy,
12103         generate_element_zero, generate_one_element_init): Use it.
12104
12105 2007-02-15  Alexandre Oliva  <aoliva@redhat.com>
12106
12107         * tree-sra.c (instantiate_missing_elements): Canonicalize
12108         bit-field types.
12109         (sra_build_assignment): New.
12110         (generate_copy_inout, generate_element_copy,
12111         generate_element_zero, generate_one_element_init): Use it.
12112
12113 2007-02-15  Alexandre Oliva  <aoliva@redhat.com>
12114
12115         * dwarf2out.c (dwarf2out_finish): Accept namespaces as context of
12116         limbo die nodes.
12117
12118 2007-02-14  Joseph Myers  <joseph@codesourcery.com>
12119
12120         * emit-rtl.c (set_mem_attributes_minus_bitpos): Treat complex
12121         types as aggregates not scalars.
12122         * function.c (assign_stack_temp_for_type): Likewise.
12123
12124 2007-02-14  Roger Sayle  <roger@eyesopen.com>
12125             Zdenek Dvorak  <dvorakz@suse.cz>
12126
12127         * tree-dump.c (dump_switch_p_1): Require exact match of the option
12128         name.
12129
12130 2007-02-14  Zdenek Dvorak  <dvorakz@suse.cz>
12131
12132         * passes.c (next_pass_1): Clear the next field of the copied
12133         pass structure.
12134
12135 2007-02-14  Richard Henderson  <rth@redhat.com>
12136
12137         * tree-sra.c (early_sra): New.
12138         (decl_can_be_decomposed_p): Deny va_list if early_sra.
12139         (tree_sra_early, pass_sra_early): New.
12140         * tree-pass.h (pass_sra_early): Declare.
12141         * passes.c (init_optimization_passes): Use it.
12142
12143 2007-02-14  Richard Guenther  <rguenther@suse.de>
12144
12145         * flags.h (issue_strict_overflow_warning): Convert to a macro.
12146
12147 2007-02-14  Dorit Nuzman  <dorit@il.ibm.com>
12148
12149          PR tree-optimization/30771
12150         * tree-vect-analyze.c (vect_determine_vectorization_factor): Traverse
12151         also phi nodes.
12152         (vect_analyze_operations): Induction phis can now be marked as
12153         used_in_loop.
12154         (vect_mark_stmts_to_be_vectorized): No special treatment for phis.
12155         Update documentation accordingly.
12156
12157 2007-02-14  Nick Clifton  <nickc@redhat.com>
12158
12159         * builtin-types.def (DEF_FUNCTION_TYPE_x): Do not imply that at
12160         most 3 arguments are supported.
12161         (DEF_FUNCTION_TYPE_VAR_5): Fix typo in its description.
12162
12163 2007-02-13  Seongbae Park <seongbae.park@gmail.com>
12164
12165         * bitmap.c (bitmap_and, bitmap_and_compl, bitmap_xor):
12166         Ensure dst->current is valid.
12167
12168 2007-02-13  Paul Brook  <paul@codesourcery.com>
12169
12170         * config.gcc: Add arm*-*-uclinux-*eabi.
12171         * config/arm/uclinux-elf.h (TARGET_OS_CPP_BUILTINS): Define.
12172         (SUBTARGET_EXTRA_LINK_SPEC): Define.
12173         (STARTFILE_SPEC, ENDFILE_SPEC): Remove broken -shared handling.
12174         (LINK_GCC_C_SEQUENCE_SPEC): Undef.
12175         (LINK_SPEC): Define.
12176         (LIB_SPEC): Define.
12177         * config/arm/arm.c (arm_override_options): Use r9 as EABI PIC
12178         register.
12179         * config/arm/uclinux-eabi.h: New file.
12180         * config/arm/linux-eabi.h (WCHAR_TYPE): Remove.
12181         * config/arm/linux-gas.h (WCHAR_TYPE): Use unsigned long on AAPCS
12182         based targets.
12183
12184 2007-02-13  Ian Lance Taylor  <iant@google.com>
12185
12186         * common.opt: Add Wstrict-overflow and Wstrict-overflow=.
12187         * flags.h (warn_strict_overflow): Declare.
12188         (enum warn_strict_overflow_code): Define.
12189         (issue_strict_overflow_warning): New static inline function.
12190         * opts.c (warn_strict_overflow): New variable.
12191         (common_handle_option): Handle OPT_Wstrict_overflow and
12192         OPT_Wstrict_overflow_.
12193         * c-opts.c (c_common_handle_option): Set warn_strict_overflow for
12194         OPT_Wall.
12195         * fold-const.c: Include intl.h.
12196         (fold_deferring_overflow_warnings): New static variable.
12197         (fold_deferred_overflow_warning): New static variable.
12198         (fold_deferred_overflow_code): New static variable.
12199         (fold_defer_overflow_warnings): New function.
12200         (fold_undefer_overflow_warnings): New function.
12201         (fold_undefer_and_ignore_overflow_warnings): New function.
12202         (fold_deferring_overflow_warnings_p): New function.
12203         (fold_overflow_warning): New static function.
12204         (make_range): Add strict_overflow_p parameter.  Change all
12205         callers.
12206         (extract_muldiv, extract_muldiv_1): Likewise.
12207         (fold_unary) [ABS_EXPR]: Check ABS_EXPR before calling
12208         tree_expr_nonnegative_p.
12209         (fold_negate_expr): Call fold_overflow_warning.
12210         (fold_range_test): Likewise.
12211         (fold_comparison): Likewise.
12212         (fold_binary): Likewise.  Call tree_expr_nonnegative_warnv_p
12213         instead of tree_expr_nonnegative_p.
12214         (tree_expr_nonnegative_warnv_p): Rename from
12215         tree_expr_nonnegative_p, add strict_overflow_p parameter.
12216         (tree_expr_nonnegative_p): New function.
12217         (tree_expr_nonzero_warnv_p): Rename from tree_expr_nonzero_p, add
12218         strict_overflow_p parameter.
12219         (tree_expr_nonzero_p): New function.
12220         * passes.c (verify_interpass_invariants): New static function.
12221         (execute_one_pass): Call it.
12222         * tree-ssa-loop-niter.c (expand_simple_operations): Ignore fold
12223         warnings.
12224         (number_of_iterations_exit, loop_niter_by_eval): Likewise.
12225         (estimate_numbers_of_iterations): Likewise.
12226         (scev_probably_wraps_p): Likewise.
12227         * tree-ssa-ccp.c: Include "toplev.h".
12228         (evaluate_stmt): Defer fold overflow warnings until we know we are
12229         going to optimize.
12230         (struct fold_stmt_r_data): Add stmt field.
12231         (fold_stmt_r): Defer fold overflow warnings until we know we
12232         optimized.
12233         (fold_stmt): Initialize stmt field of fold_stmt_r_data.
12234         (fold_stmt_inplace): Likewise.
12235         * tree-cfgcleanup.c: Include "toplev.h" rather than "errors.h".
12236         (cleanup_control_expr_graph): Defer fold overflow warnings until
12237         we know we are going to optimize.
12238         * tree-cfg.c (fold_cond_expr_cond): Likewise.
12239         * tree-ssa-threadedge.c (simplify_control_stmt_condition):
12240         Likewise.
12241         * tree-vrp.c (vrp_expr_computes_nonnegative): Call
12242         tree_expr_nonnegative_warnv_p instead of tree_expr_nonnegative_p.
12243         * tree-ssa-loop-manip.c (create_iv): Likewise.
12244         * c-typeck.c (build_conditional_expr): Likewise.
12245         (build_binary_op): Likewise.
12246         * tree-vrp.c (vrp_expr_computes_nonzero): Call
12247         tree_expr_nonzero_warnv_p instead of tree_expr_nonzero_p.
12248         (extract_range_from_unary_expr): Likewise.
12249         * simplify-rtx.c (simplify_const_relational_operation): Warn when
12250         assuming that signed overflow does not occur.
12251         * c-common.c (pointer_int_sum): Ignore fold overflow warnings.
12252         * tree.h (tree_expr_nonnegative_warnv_p): Declare.
12253         (fold_defer_overflow_warnings): Declare.
12254         (fold_undefer_overflow_warnings): Declare.
12255         (fold_undefer_and_ignore_overflow_warnings): Declare.
12256         (fold_deferring_overflow_warnings_p): Declare.
12257         (tree_expr_nonzero_warnv_p): Declare.
12258         * doc/invoke.texi (Option Summary): Add -Wstrict-overflow to list
12259         of warning options.
12260         (Warning Options): Document -Wstrict-overflow.
12261         * Makefile.in (tree-ssa-threadedge.o): Depend on toplev.h.
12262         (tree-ssa-ccp.o): Likewise.
12263         (tree-cfgcleanup.o): Change errors.h dependency to toplev.h.
12264         (fold-const.o): Depend on intl.h.
12265
12266 2007-02-13  Ian Lance Taylor  <iant@google.com>
12267
12268         PR middle-end/30751
12269         * lower-subreg.c (resolve_simple_move): Decompose subregs in
12270         addresses.
12271
12272 2007-02-13  Stuart Hastings  <stuart@apple.com>
12273
12274         * config/i386/i386.md (fixuns_truncdfhi2): Require SSE2.
12275
12276 2007-02-13  Richard Henderson  <rth@redhat.com>
12277
12278         * config/alpha/alpha.c (alpha_stdarg_optimize_hook): Strip
12279         handled_component_p before looking for the indirect_ref.
12280
12281 2007-02-13  Richard Henderson  <rth@redhat.com>
12282
12283         * config/i386/i386.md (bswapsi_1): Rename from bswapsi2,
12284         remove flags clobber.
12285         (bswapsi2): New expander, emit code for !TARGET_BSWAP.
12286         (bswaphi_lowpart): New.
12287         (bswapdi2): Rename from bswapdi2_rex, remove flags clobber,
12288         remove TARGET_BSWAP test.  Delete expander of the same name.
12289
12290         * optabs.c (widen_bswap, expand_doubleword_bswap): New.
12291         (expand_unop): Use them.
12292
12293 2007-02-13  Uros Bizjak  <ubizjak@gmail.com>
12294
12295         * config/i386/i386.md (cmpdi_ccno_1_rex64, *cmpsi_ccno_1,
12296         *cmphi_ccno_1, *cmpqi_ccno_1, *movsi_xor, *movstricthi_xor,
12297         *movstrictqi_xor, *movdi_xor_rex64, *ashldi3_1_rex64,
12298         *ashldi3_cmp_rex64, *ashldi3_cconly_rex64, ashlsi3, *ashlsi3_1_zext,
12299         *ashlsi3_cmp, *ashlsi3_cconly, *ashlsi3_cmp_zext, *ashlhi3_1_lea,
12300         *ashlhi3_1, *ashlhi3_cmp, *ashlhi3_cconly, *ashlqi3_1_lea,
12301         *ashlqi3_1, *ashlqi3_cmp, *ashlqi3_cconly): Remove equivalent
12302         assembler dialect choice from asm templates.
12303
12304 2007-02-12  Richard Henderson  <rth@redhat.com>
12305
12306         * config/i386/i386.md (fixuns_trunc<SSEMODEF>si_1): New insn.
12307         (fixuns_trunc<SSEMODEF>si2): Use it.
12308         * config/i386/sse.md (vec_setv4sf_0): Export.
12309         * config/i386/i386.c (ix86_build_const_vector): Export.
12310         (ix86_split_convert_uns_si_sse): Rename from
12311         ix86_expand_convert_uns_si_sse and rewrite as a splitter.
12312         * config/i386/i386-protos.h: Update.
12313
12314 2007-02-13  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
12315
12316         PR c/29521
12317         * c-typeck.c (c_finish_return): Improve warning message.
12318
12319 2007-02-12  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
12320
12321         * alias.c (find_symbolic_term): Delete unused function.
12322
12323 2007-02-12  Uros Bizjak  <ubizjak@gmail.com>
12324
12325         * config/i386/i386.md (paritydi2, paritysi2): New expanders.
12326         (paritydi2_cmp, paritydi2_cmp): New insn and split patterns.
12327         (*parityhi2_cmp, *parityqi2_cmp): New insn patterns.
12328
12329 2007-02-12  Eric Botcazou  <ebotcazou@adacore.com>
12330
12331         * tree.h (DECL_IGNORED_P): Document further effect for FUNCTION_DECL.
12332         * cgraphunit.c (cgraph_expand_function): If DECL_IGNORED_P is set on
12333         the function, temporarily point the debug interface to the null one.
12334
12335 2007-02-12  Eric Botcazou  <ebotcazou@adacore.com>
12336
12337         * dwarf2out.c (round_up_to_align): New static function.
12338         (field_byte_offset): Use it to round the offset.
12339
12340 2007-02-12  Richard Henderson  <rth@redhat.com>
12341
12342         * config/alpha/alpha.md (bswapsi2, bswapdi2): New.
12343         (inswl_const): Export.
12344
12345 2007-02-12  Richard Henderson  <rth@redhat.com>
12346
12347         * calls.c (emit_library_call_value_1): If PROMOTE_MODE modifed the
12348         result mode of the libcall, convert back to outmode.
12349
12350 2007-02-12  Roger Sayle  <roger@eyesopen.com>
12351
12352         * config/i386/i386.md (*bswapdi2_rex): Renamed from bswapdi2.
12353         (bswapdi2): New define_expand to implement 32-bit implementation.
12354
12355 2007-02-12  Nick Clifton  <nickc@redhat.com>
12356
12357         * doc/invoke.texi (Overall Options): Document --help=.
12358         * gcc.c (target_help_flag): Rename to print_subprocess_flag.
12359         (cc1_options): Pass --help= on to cc1.
12360         (display_help): Add description of --help=.
12361         (process_command): Add code to handle --help=.  Allow translated
12362         --help and --target-help switches to be passed on to compiler
12363         sub-process.
12364         (main): Remove unused if statement.
12365         * opts.c (columns): Remove.
12366         (LEFT_COLUMN): Define.
12367         (wrap_help): Add columns argument.
12368         (print_filtered_help): Change parameters to be an include bitmask,
12369         an exclude bitmask, an any bitmask and the column width.  Move the
12370         code to display the params list here.  Add code to display the
12371         status of options rather than their descriptions if the quiet flag
12372         is not active.
12373         (print_specific_help): Change parameters to be an include bitmask,
12374         an exclude bitmask and an any bitmask.  Move code to look up the
12375         column width here.  Decide upon the title for an options listing.
12376         (common_handle_options): Add code to handle --help=.  Adapt code
12377         for --help and --target-help to use the revised form of the
12378         print_specific_help function.
12379         (print_help): Delete.
12380         (print_param_help): Delete.
12381         (print_switch): Delete.
12382         * opts.h (cl_lang_count): Add prototype.
12383         (CL_PARAMS, CL_WARNING, CL_OPTIMIZATION, CL_MIN_OPTION_CLASS,
12384         CL_MAX_OPTION_CLASS): New defines.
12385         * optc-gen.awk: Add construction of cl_lang_count.
12386         * c.opt: Add Warning attribute to warning options and Optimization
12387         attribute to optimization options.
12388         * common.opt: Likewise.
12389         Add --help=.
12390         Add -fhelp and -ftarget-help as aliases for the transformed --help
12391         and --target-help options.
12392         * opt-functions.awk: Add code to handle Warning and Optimization
12393         attributes.
12394
12395 2007-02-12  Richard Henderson  <rth@redhat.com>
12396
12397         * config/alpha/constraints.md: New file.
12398         * config/alpha/alpha.c: Include tm-constrs.h.
12399         (alpha_const_ok_for_letter_p, alpha_const_double_ok_for_letter_p,
12400         alpha_extra_constraint): Remove.
12401         (alpha_emit_conditional_branch): Use satisfies_constraint_*.
12402         * config/alpha/alpha-protos.h: Update.
12403         * config/alpha/alpha.h (REG_CLASS_FROM_LETTER): Remove.
12404         (CONST_OK_FOR_LETTER_P, CONST_DOUBLE_OK_FOR_LETTER_P): Remove.
12405         (EXTRA_CONSTRAINT): Remove.
12406         * config/alpha/alpha.md: Include constraints.md.
12407         (adddi splitter): Use satisfies_constraint_*.
12408         * config/alpha/predicates.md (add_operand): Likewise.
12409         (sext_add_operand, addition_operation): Likewise.
12410
12411 2007-02-12  Dorit Nuzman  <dorit@il.ibm.com>
12412
12413         PR tree-optimization/29145
12414         * tree-data-ref.c (base_addr_differ_p): Make us more conservative
12415         in our handling of restrict qualified pointers.
12416
12417 2007-02-12  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
12418
12419         PR middle-end/7651
12420         * doc/invoke.texi (Wunused-value): Update description.
12421         (Wextra): Delete item.
12422         * opts.c (set_Wextra): Don't use the value of Wextra to set the
12423         value of Wunused-value.
12424         * c-typeck.c (c_process_expr_stmt): Don't check extra_warnings.
12425         (c_finish_stmt_expr): Don't check extra_warnings.
12426         (emit_side_effect_warnings): The caller is responsible to check
12427         warn_unused_value.
12428
12429 2007-02-11  Roger Sayle  <roger@eyesopen.com>
12430             Matt Thomas  <matt@3am-software.com>
12431
12432         * simplify-rtx.c (simplify_relational_operation_1): Correct typo.
12433
12434 2007-02-11  Roger Sayle  <roger@eyesopen.com>
12435
12436         * simplify-rtx.c (simplify_relational_operation_1): Optimize
12437         comparisons of POPCOUNT against zero.
12438         (simplify_const_relational_operation): Likewise.
12439
12440 2007-02-11  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
12441
12442         * doc/invoke.texi (Wextra): Delete outdated paragraph.
12443
12444 2007-02-11  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
12445
12446         * dwarf2out.c (root_type): Delete unused function.
12447
12448 2007-02-11  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
12449
12450         * genattrtab.c (contained_in_p): Delete unused function.
12451         (write_expr_attr_cache): Likewise.
12452
12453 2007-02-11  Jan Hubicka  <jh@suse.cz>
12454
12455         * ipa-inline.c (cgraph_edge_badness): Add "else" missing in the
12456         previous patch.
12457
12458 2007-02-11  Steven Bosscher  <steven@gcc.gnu.org>
12459
12460         * fwprop.c (try_fwprop_subst): Use set_unique_reg_note
12461         to add the REG_EQ* note.
12462         * see.c (see_merge_one_use_extension): Likewise.
12463         * local-alloc.c (update_equiv_regs): Likewise.  Also don't
12464         turn REG_EQUAL notes into REG_EQUIV notes if the target
12465         register may have more than one set.
12466         * function.c (assign_parm_setup_reg): Use set_unique_reg_note.
12467         * gcse.c (try_replace_reg): Likewise.
12468         * alias.c (init_alias_analysis): Use find_reg_equal_equiv_note.
12469         * calls.c (fixup_tail_calls): Likewise.  Abort if there is
12470         more than one REG_EQUIV note.
12471         * reload1.c (gen_reload): Use set_unique_reg_note.
12472
12473 2007-02-11  Uros Bizjak  <ubizjak@gmail.com>
12474
12475         * config/i386/i386.c (TARGET_VECTORIZE_BUILTIN_CONVERSION): Define.
12476         (ix86_builtin_conversion): New function.
12477
12478 2007-02-06  Mark Mitchell  <mark@codesourcery.com>
12479
12480         PR target/29487
12481         * tree.h (DECL_REPLACEABLE_P): New macro.
12482         * except.c (set_nothrow_function_flags): Likewise.
12483
12484 2007-02-11  Tehila Meyzels  <tehila@il.ibm.com>
12485             Ira Rosen  <irar@il.ibm.com>
12486             Dorit Nuzman  <dorit@il.ibm.com>
12487
12488         * doc/tm.texi (TARGET_VECTORIZE_BUILTIN_CONVERSION): New target hook.
12489         * targhooks.c (default_builtin_vectorized_conversion): New.
12490         * targhooks.h (default_builtin_vectorized_function): New declaration.
12491         * target.h (struct vectorize): Add builtin_conversion field.
12492         * tree-vectorizer.h (type_conversion_vec_info_type): New enum
12493         stmt_vec_info_type value.
12494         (vectorizable_conversion): New declaration.
12495         * tree-vect-analyze.c (vect_analyze_operations): Add
12496         vectorizable_conversion call.
12497         * target-def.h (TARGET_VECTORIZE_BUILTIN_CONVERSION): New.
12498         * tree-vect-transform.c (vectorizable_conversion): New function.
12499         (vect_transform_stmt): Add case for type_conversion_vec_info_type.
12500         * tree-vect-generic.c (expand_vector_operations_1): Consider correct
12501         mode.
12502         * config/rs6000/rs6000.c (rs6000_builtin_conversion): New.
12503         (TARGET_VECTORIZE_BUILTIN_CONVERSION): Defined.
12504         (rs6000_expand_builtin): Add handling a case of ALTIVEC_BUILTIN_VCFUX
12505         or ALTIVEC_BUILTIN_VCFSX.
12506
12507 2007-02-10  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
12508
12509         PR target/30634
12510         * pa.md (movdf): For 64-bit target, fail if operand 1 is a non-zero
12511         CONST_DOUBLE and operand 0 is a hard register.
12512         (movdi): For 64-bit target, remove code to force CONST_DOUBLE to
12513         memory.  Fail if operand 1 is a non-zero CONST_INT and operand 0
12514         is a hard floating-point register.
12515
12516 2007-02-10  Richard Henderson  <rth@redhat.com>
12517             Jakub Jelinek  <jakub@redhat.com>
12518             Alexandre Oliva  <aoliva@redhat.com>
12519
12520         * Makefile.in (libgcc-support, libgcc.mvars): Add emutls.c.
12521         * builtin-types.def (BT_WORD): Make unsigned.
12522         (BT_FN_VOID_PTR_WORD_WORD_PTR): New.
12523         * builtins.def (BUILT_IN_EMUTLS_GET_ADDRESS): New.
12524         (BUILT_IN_EMUTLS_REGISTER_COMMON): New.
12525         * c-decl.c (grokdeclarator): Don't error if !have_tls.
12526         * c-parser.c (c_parser_omp_threadprivate): Likewise.
12527         * dwarf2out.c (loc_descriptor_from_tree_1): Don't do anything for
12528         emulated tls.
12529         * expr.c (emutls_var_address): New.
12530         (expand_expr_real_1): Expand emulated tls.
12531         (expand_expr_addr_expr_1): Likewise.
12532         * libgcc-std.ver: Add __emutls_get_address, __emutls_register_common.
12533         * output.h (emutls_finish): Declare.
12534         * toplev.c (compile_file): Call it.
12535         * tree-ssa-address.c (gen_addr_rtx): Check for const-ness of the
12536         address before wrapping in CONST.
12537         * varasm.c (emutls_htab, emutls_object_type): New.
12538         (EMUTLS_VAR_PREFIX, EMUTLS_TMPL_PREFIX): New.
12539         (get_emutls_object_name, get_emutls_object_type): New.
12540         (get_emutls_init_templ_addr, emutls_decl): New.
12541         (emutls_common_1, emutls_finish): New.
12542         (assemble_variable): When emulating tls, swap decls; generate
12543         constructor for the emutls objects.
12544         (do_assemble_alias): When emulating tls, swap decl and target name.
12545         (default_encode_section_info): Don't add SYMBOL_FLAG_TLS_SHIFT
12546         for emulated tls.
12547         * varpool.c (decide_is_variable_needed): Look at force_output.
12548         Recurse for emulated tls.
12549         (cgraph_varpool_remove_unreferenced_decls): Remove checks redundant
12550         with decide_is_variable_needed.
12551         * emutls.c: New file.
12552         * config/sparc/sol2.h (ASM_DECLARE_OBJECT_NAME): Only emit
12553         tls_object for real tls.
12554
12555 2007-02-10  Kaz Kojima  <kkojima@gcc.gnu.org>
12556
12557         PR rtl-optimization/29599
12558         * reload1.c (eliminate_regs_in_insn): Take the destination
12559         mode into account when computing the offset.
12560
12561 2007-02-09  Stuart Hastings  <stuart@apple.com>
12562             Richard Henderson  <rth@redhat.com>
12563
12564         * config/i386/i386.h (TARGET_KEEPS_VECTOR_ALIGNED_STACK): New.
12565         * config/i386/darwin.h: (TARGET_KEEPS_VECTOR_ALIGNED_STACK): New.
12566         * config/i386/i386.md (fixuns_trunc<mode>si2, fixuns_truncsfhi2,
12567         fixuns_truncdfhi2): New.
12568         (fix_truncsfdi_sse): Call ix86_expand_convert_sign_didf_sse.
12569         (floatunsdidf2): Call ix86_expand_convert_uns_didf_sse.
12570         (floatunssisf2): Add call to ix86_expand_convert_uns_sisf_sse.
12571         (floatunssidf2): Allow nonimmediate source.
12572         * config/i386/sse.md (movdi_to_sse): New.
12573         (vec_concatv2di): Drop '*'.
12574         * config/i386/i386-protos.h (ix86_expand_convert_uns_si_sse,
12575         ix86_expand_convert_uns_didf_sse, ix86_expand_convert_uns_sidf_sse,
12576         ix86_expand_convert_uns_sisf_sse, ix86_expand_convert_sign_didf_sse):
12577         New.
12578         * config/i386/i386.c (ix86_expand_convert_uns_si_sse,
12579         ix86_expand_convert_uns_didf_sse, ix86_expand_convert_uns_sidf_sse,
12580         ix86_expand_convert_uns_sisf_sse, ix86_expand_convert_sign_didf_sse,
12581         ix86_build_const_vector, ix86_expand_vector_init_one_nonzero): New.
12582         (ix86_build_signbit_mask): Fix decl of v, refactor to call
12583         ix86_build_const_vector.
12584         (x86_emit_floatuns): Rewrite.
12585
12586 2007-02-10  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
12587
12588         * genautomata.c (longest_path_length): Delete unused function.
12589         (struct state): Delete unused longest_path_length.
12590         (UNDEFINED_LONGEST_PATH_LENGTH): Delete unused macro.
12591         (get_free_state): Delete unused.
12592
12593 2007-02-09  Jan Hubicka  <jh@suse.cz>
12594
12595         * params.def (PARAM_INLINE_UNIT_GROWTH): Set to 30.
12596         * doc/invoke.texi (inline-unit-growth): Update default value.
12597
12598         * Makefile.in (passes.o, ipa-inline.o): Add dependencies.
12599         * cgraphbuild.c (build_cgraph_edges): Compute frequencies.
12600         (rebuild_cgraph_edges): Likewise.
12601         * cgraph.c (cgraph_set_call_stmt): Add new argument frequency.
12602         (dump_cgraph_node): Dump frequencies.
12603         (cgraph_clone_edge): Add frequency scales.
12604         (cgraph_clone_node): Add freuqnecy.
12605         * cgraph.h (cgraph_edge): Add freuqnecy argument.
12606         (CGRAPH_FREQ_BASE, CGRAPH_FREQ_MAX): New constants.
12607         (cgraph_create_edge, cgraph_clone_edge, cgraph_clone_node): Update.
12608         * tree-pass.h (TODO_rebuild_frequencies): New constant.
12609         * cgraphunit.c (verify_cgraph_node): Verify frequencies.
12610         (cgraph_copy_node_for_versioning): Update call of cgraph_clone_edge.
12611         (save_inline_function_body): Likewise.
12612         * ipa-inline.c: inluce rtl.h
12613         (cgraph_clone_inlined_nods): Update call of cgraph_clone_node.
12614         (cgraph_edge_badness): Use frequencies.
12615         (cgraph_decide_recursive_inlining): Update clonning.
12616         (cgraph_decide_inlining_of_small_function): Dump frequency.
12617         * predict.c (estimate_bb_frequencies): Export.
12618         * predict.h (estimate_bb_frequencies): Declare.
12619         * tree-inline.c (copy_bb): Watch overflows.
12620         (expand_call_inline): Update call of cgraph_create_edge.
12621         (optimize_inline_calls): Use TODO flags to update frequnecies.
12622         * passes.h: Include predict.h
12623         (init_optimization_passes): Move profile ahead.
12624         (execute_function_todo): Handle TODO_rebuild_frequencies.
12625
12626 2007-02-09  Roger Sayle  <roger@eyesopen.com>
12627
12628         * config/alpha/alpha.c (emit_insxl): Force the first operand of
12629         the insbl or inswl pattern into a register.
12630
12631 2007-02-09  Roger Sayle  <roger@eyesopen.com>
12632
12633         * config/ia64/ia64.md (bswapdi2): New define_insn.
12634
12635 2007-02-09  Richard Henderson  <rth@redhat.com>
12636
12637         * config/i386/constraints.md (Ym): New constraint.
12638         * config/i386/i386.md (movsi_1): Change Y2 to Yi constraints.
12639         (movdi_1_rex64): Split sse and xmm general register moves from
12640         memory move alternatives.  Use conditional register constraints.
12641         (movsf_1, movdf_integer): Likewise.
12642         (zero_extendsidi2_32, zero_extendsidi2_rex64): Likewise.
12643         (movdf_integer_rex64): New.
12644         (pushsf_rex64): Fix output constraints.
12645         * config/i386/sse.md (sse2_loadld): Split rm alternative, use Yi.
12646         (sse2_stored): Likewise.
12647         (sse2_storeq_rex64): New.
12648         * config/i386/i386.c (x86_inter_unit_moves): Enable for not
12649         amd and not generic.
12650         (ix86_secondary_memory_needed): Don't bypass TARGET_INTER_UNIT_MOVES
12651         for optimize_size.  Remove SF/DFmode hack.
12652
12653 2007-02-09  Dwarakanath Rajagopal  <dwarak.rajagopal@amd.com>
12654
12655         * config/i386/driver-i386.c: Turn on -mtune=native for AMDFAM10.
12656         (bit_SSE4a): New.
12657
12658 2007-02-09  Nathan Sidwell  <nathan@codesourcery.com>
12659             Richard Sandiford  <richard@codesourcery.com>
12660
12661         * config.gcc (m68010-*-netbsdelf*, m68k*-*-netbsdelf*)
12662         (m68k*-*-openbsd*, m68k-*-linux*): Set default_cf_cpu.
12663         (m68k-*-aout*, m68k-*-coff*, m68k-*-uclinux*, m68k-*-rtems*): Add
12664         m68k/t-mlib to tmake_file.
12665         (m68020-*-elf*, m68k-*-elf*): Likewise.  Add t-m68kbare as well.
12666         (m68k*-*-*): Use --with-arch to pick a default for --with-cpu.
12667         (m680[012]0-*-*, m68k*-*-*): Add support for --with-arch.
12668         Allow it to be cf or m68k.  Set m68k_arch_family.  If that
12669         variable is not empty, add t-$m68k_arch_family to tmake_file.
12670         Add t-mlibs to tmake_file.
12671         * doc/install.texi: Document --with-arch=m68k and --with-arch=cf.
12672         * config/m68k/t-cf: New file.
12673         * config/m68k/t-m68k: Likewise.
12674         * config/m68k/t-mlibs: Likewise.
12675         * config/m68k/t-m68kbare (MULTILIB_OPTIONS, MULTILIB_DIRNAMES)
12676         (MULTILIB_MATCHES, MULTILIB_EXCEPTIONS): Delete.
12677         (M68K_MLIB_DIRNAMES, M68K_MLIB_OPTIONS): Define.
12678         * config/m68k/t-m68kelf (MULTILIB_OPTIONS, MULTILIB_DIRNAMES)
12679         (MULTILIB_MATCHES, MULTILIB_EXCEPTIONS, LIBGCC, INSTALL_LIBGCC):
12680         Delete.
12681         * config/m68k/t-openbsd (MULTILIB_OPTIONS, LIBGCC): Delete.
12682         (INSTALL_LIBGCC): Delete.
12683         (M68K_MLIB_DIRNAMES, M68K_MLIB_OPTIONS): Define.
12684         * config/m68k/t-rtems (MULTILIB_OPTIONS, MULTILIB_DIRNAMES)
12685         (MULTILIB_MATCHES, MULTILIB_EXCEPTIONS): Delete.
12686         (M68K_MLIB_CPU): Define.
12687         * config/m68k/t-uclinux (MULTILIB_OPTIONS, MULTILIB_DIRNAMES)
12688         (MULTILIB_MATCHES, MULTILIB_EXCEPTIONS): Delete.
12689         (M68K_MLIB_CPU, M68K_MLIB_OPTIONS, M68K_MLIB_DIRNAMES): Define.
12690
12691 2007-02-09  Zdenek Dvorak  <dvorakz@suse.cz>
12692             Richard Guenther  <rguenther@suse.de>
12693
12694         PR middle-end/23361
12695         * fold-const.c (fold_comparison): Handle obfuscated comparisons
12696         against INT_MIN/INT_MAX.
12697         * tree-ssa-loop-ivcanon.c (remove_empty_loop): Print to dump
12698         file if a loop is removed.
12699
12700 2007-02-09  Joseph Myers  <joseph@codesourcery.com>
12701
12702         * calls.c (store_one_arg): Pass correct alignment to
12703         emit_push_insn for non-BLKmode values.
12704         * expr.c (emit_push_insn): If STRICT_ALIGNMENT, copy to an
12705         unaligned stack slot via a suitably aligned slot.
12706
12707 2007-02-08  DJ Delorie  <dj@redhat.com>
12708
12709         * config/m32c/m32c.c (m32c_unpend_compare): Add default to silence
12710         warnings.
12711         (legal_subregs): Use unsigned char, make const.
12712         (m32c_illegal_subreg_p): Use ARRAY_SIZE.  Delete unused variables.
12713
12714 2007-02-08  Paul Brook  <paul@codesourcery.com>
12715
12716         * config/arm/lib1funcs.asm (RETLDM): Pop directly into PC when no
12717         special interworking needed.
12718
12719 2007-02-08  Harsha Jagasia  <harsha.jagasia@amd.com>
12720
12721         * config/i386/xmmintrin.h: Make inclusion of emmintrin.h
12722         conditional to __SSE2__.
12723         (Entries below should have been added to first ChangeLog
12724         entry for amdfam10 dated 2007-02-05)
12725         * config/i386/emmintrin.h: Generate #error if __SSE2__ is not
12726         defined.
12727         * config/i386/pmmintrin.h: Generate #error if __SSE3__ is not
12728         defined.
12729         * config/i386/tmmintrin.h: Generate #error if __SSSE3__ is not
12730         defined.
12731
12732 2007-02-08  DJ Delorie  <dj@redhat.com>
12733
12734         * config/m32c/m32c-protos.h (m32c_illegal_subreg_p): New.
12735         * config/m32c/m32c.c (legal_subregs): New.
12736         (m32c_illegal_subreg_p): New.
12737         * config/m32c/predicates.md (m32c_any_operand): Use it to reject
12738         unsupported subregs of hard regs.
12739
12740 2007-02-08  Jan Hubicka  <jh@suse.cz>
12741
12742         * tree-cfg.c (bsi_replace): Shortcut when replacing the statement with
12743         the same one; always update histograms.
12744
12745 2007-02-08  Diego Novillo  <dnovillo@redhat.com>
12746
12747         * passes.c (init_optimization_passes): Tidy comment.
12748
12749 2007-02-08  Roger Sayle  <roger@eyesopen.com>
12750
12751         * simplify-rtx.c (simplify_unary_operation_1) <POPCOUNT>: We can
12752         strip zero_extend, bswap and rotates from POCOUNT's argument.
12753         <PARITY>: Likewise, we can strip not, bswap, sign_extend,
12754         zero_extend and rotates from PARITY's argument.
12755         <BSWAP>: A byte-swap followed by a byte-swap is an identity.
12756         (simplify_const_unary_operation) <BSWAP>: Evaluate the byte-swap
12757         of an integer constant at compile-time.
12758
12759 2007-02-08  Diego Novillo  <dnovillo@redhat.com>
12760
12761         PR 30562
12762         * tree-flow.h (struct var_ann_d): Remove field 'is_used'.
12763         Update all users.
12764         * tree-ssa-alias.c (compute_is_aliased): Remove.  Update all
12765         users.
12766         (init_alias_info):
12767         * tree-ssa-live.c (remove_unused_locals): Do not remove
12768         TREE_ADDRESSABLE variables.
12769         * tree-ssa-structalias.c (compute_points_to_sets): Tidy.
12770         * tree-ssa-operands.c (add_virtual_operand): Remove argument
12771         FOR_CLOBBER.  Update all users.
12772         If VAR has an associated alias set, add a virtual operand for
12773         it if no alias is found to conflict with the memory reference.
12774
12775 2007-02-07  Jan Hubicka  <jh@suse.cz>
12776             Robert Kidd <rkidd@crhc.uiuc.edu>
12777
12778         * value-prof.c (visit_hist, free_hist): Return 1 instead of 0.
12779
12780 2007-02-07  Ian Lance Taylor  <iant@google.com>
12781
12782         * lower-subreg.c (simple_move): Reject PARTIAL_INT modes.
12783
12784 2007-02-07  Roger Sayle  <roger@eyesopen.com>
12785
12786         * config/rs6000/rs6000.md (ctz<mode>2, ffs<mode>2, popcount<mode>2,
12787         parity<mode>2, smulsi3_highpart, abstf2_internal, allocate_stack,
12788         tablejumpdi, movsi_to_cr_one): Remove constraints from
12789         define_expand's match_operands.
12790
12791 2007-02-07  Roger Sayle  <roger@eyesopen.com>
12792
12793         * global.c (compute_regsets): Move declatation of "i" inside of
12794         #ifdef ELIMINABLE_REGS to avoid unused variable bootstrap failure.
12795
12796 2007-02-07  Jakub Jelinek  <jakub@redhat.com>
12797
12798         PR c++/30703
12799         * gimplify.c (gimplify_scan_omp_clauses): Remove special casing
12800         of INDIRECT_REF <RESULT_DECL>.
12801
12802         * config/i386/i386.c (override_options): Set PTA_SSSE3 for core2.
12803
12804 2007-02-06  J"orn Rennecke  <joern.rennecke@arc.com>
12805             Kaz Kojima  <kkojima@gcc.gnu.org>
12806
12807         PR target/29746
12808         * config/sh/sh.c (expand_cbranchdi4): Use scratch register
12809         properly.
12810         (sh_initialize_trampoline): Add parentheses to avoid a warning.
12811
12812 2007-02-06  Zdenek Dvorak <dvorakz@suse.cz>
12813
12814         * doc/loop.texi: Document possibility not to perform disambiguation
12815         of loops with multiple latches.
12816         * cfgloopmanip.c (alp_enum_p): Removed.
12817         (add_loop): Handle subloops.  Use get_loop_body_with_size.
12818         (create_preheader): Do not allow ENTRY_BLOCK_PTR to be preheader.
12819         * cfghooks.c (redirect_edge_and_branch_force): Set dominator for
12820         the new forwarder block.
12821         (make_forwarder_block): Only call new_bb_cbk if it is not NULL.
12822         Handle the case latch is NULL.
12823         * tree-ssa-dom.c (tree_ssa_dominator_optimize): Avoid cfg modifications
12824         when marking loop exits.
12825         * ifcvt.c (if_convert): Ditto.  Mark loop exits even if cfg cannot
12826         be modified.
12827         * loop-init.c (loop_optimizer_init): Do not modify cfg.  Call
12828         disambiguate_loops_with_multiple_latches.
12829         * tree-cfgcleanup.c (cleanup_tree_cfg_loop): Calculate dominators
12830         before fix_loop_structure.
12831         * cfgloop.c: Include pointer-set.h and output.h.
12832         (canonicalize_loop_headers, HEADER_BLOCK, LATCH_EDGE,
12833         update_latch_info, mfb_keep_just, mfb_keep_nonlatch): Removed.
12834         (get_loop_latch_edges, find_subloop_latch_edge_by_profile,
12835         find_subloop_latch_edge_by_ivs, find_subloop_latch_edge,
12836         mfb_redirect_edges_in_set, form_subloop, merge_latch_edges,
12837         disambiguate_multiple_latches, get_loop_body_with_size,
12838         disambiguate_loops_with_multiple_latches): New functions.
12839         (flow_loop_dump): Dump multiple latch edges.
12840         (flow_loop_nodes_find): Handle loops with multiple latches.
12841         (flow_loops_find): Ditto. Do not call canonicalize_loop_headers.
12842         (glb_enum_p): Modified.
12843         (get_loop_body): Use get_loop_body_with_size.
12844         * cfgloop.h (LOOPS_HAVE_RECORDED_EXITS): New flag.
12845         (AVOID_CFG_MODIFICATIONS): New constant.
12846         (disambiguate_loops_with_multiple_latches, add_loop,
12847         get_loop_body_with_size): Declare.
12848         * Makefile.in (cfgloop.o): Add pointer-set.h and output.h.
12849
12850 2007-02-06  Seongbae Park <seongbae.park@gmail.com>
12851
12852         PR inline-asm/28686
12853         * global.c (compute_regsets): New function.
12854         (global_alloc): Refactored ELIMINABLE_REGSET
12855         and NO_GLOBAL_ALLOC_REGS computation out.
12856         (rest_of_handle_global_alloc): Call compute_regsets()
12857         for non-optimizing case.
12858
12859 2007-02-06  Richard Henderson  <rth@redhat.com>
12860
12861         * config/i386/constraints.md (Y2): Rename from Y.
12862         (Yi): New constraint.
12863         * config/i386/i386.md (movsi_1, movdi_2, pushdf_nointeger,
12864         pushdf_integer, movdf_nointeger, movdf_integer, zero_extendsidi2_32,
12865         zero_extendsidi2_rex64, truncxfdf2_mixed): Change Y constraints to Y2.
12866         (extendsfdf2_mixed, extendsfdf2_sse, truncdfsf_fast_mixed,
12867         truncdfsf_fast_sse, truncdfsf_mixed, fix_truncdfdi_sse,
12868         fix_truncdfsi_sse, floatsidf2_mixed, floatsidf2_sse,
12869         floatdidf2_mixed, floatdidf2_sse, absnegdf2_mixed,
12870         absnegdf2_sse, sse_setccdf, fop_df_comm_mixed, fop_df_comm_sse,
12871         fop_df_1_mixed, fop_df_1_sse): Change Y constraints to x.
12872         * config/i386/mmx.md (mov<MMXMODEI>_internal_rex64,
12873         mov<MMXMODEI>_internal, movv2sf_internal_rex64, movv2sf_internal,
12874         vec_extractv2si_1): Change Y constraints to Y2.
12875         * config/i386/sse.md (vec_setv4sf_0, vec_concatv2df, vec_dupv4si,
12876         vec_dupv2di, sse2_concatv2si, vec_concatv4si_1, vec_concatv2di):
12877         Change Y constraints to Y2.
12878         (sse2_loadld): Change Y constraints to x.
12879
12880 2007-02-06  Roger Sayle  <roger@eyesopen.com>
12881
12882         * config/rs6000/rs6000.md (popcount<mode>2): Rewrite.
12883         (parity<mode>2): New define_expand using rs6000_emit_parity.
12884         * config/rs6000/rs6000.c (rs6000_emit_popcount,
12885         rs6000_emit_parity): New functions.
12886         * config/rs6000/rs6000-protos.h (rs6000_emit_popcount,
12887         rs6000_emit_parity): Prototype here.
12888
12889 2007-02-06  Ian Lance Taylor  <iant@google.com>
12890
12891         * lower-subreg.c (simple_move_operand): Reject CONST.
12892         (resolve_clobber): Call validate_change rather than directly
12893         assigning to XEXP (pat, 0).
12894
12895 2006-02-06  Paolo Bonzini  <bonzini@gnu.org>
12896
12897         * Makefile.in (tree-ssa-loop-ivopts.o): Add pointer-set.h dependency.
12898         (tree-ssa-reassoc.o): Add pointer-set.h dependency.
12899         (tree-cfg.o): Remove hashtab.h dependency.
12900
12901         * tree-ssa-loop-ivopts.c: Include pointer-set.h.
12902         (struct ivopts_data): Change niters to pointer_map_t.
12903         (struct nfe_cache_elt, nfe_hash, nfe_eq): Delete.
12904         (niter_for_exit): Create pointer_map on demand.  Change for
12905         pointer_map API.
12906         (tree_ssa_iv_optimize_init): Initialize data->niters to NULL.
12907         (free_loop_data): Destroy data->niters if created and reset field.
12908         (tree_ssa_iv_optimize_finalize): Don't delete data->niters here.
12909         (tree_ssa_iv_optimize_loop): Check for presence of stale data.
12910
12911         * tree-ssa-reassoc.c: Include pointer-set.h.
12912         (bb_rank): Change to long *.
12913         (operand_rank): Change to pointer_map_t.
12914         (find_operand_rank): Return long, -1 if not found.  Declare as inline.
12915         (insert_operand_rank): Accept long.
12916         (operand_entry_hash, operand_entry_eq): Remove.
12917         (get_rank): Return long.  Adjust for changes above.
12918         (init_reassoc): Change rank type to long.  Adjust creation of bb_rank
12919         and operand_rank.
12920         (fini_reassoc): Delete operand_rank with pointer_map_destroy.
12921
12922         * tree-ssa-structalias.c (vi_for_tree): Change to pointer_map.
12923         (struct tree_vi, tree_vi_t, tree_vi_hash, tree_vi_eq): Delete.
12924         (insert_vi_for_tree): Rewrite for pointer_map API.  Assert argument
12925         is not NULL.
12926         (lookup_vi_for_tree): Rewrite for pointer_map API.  Return varinfo_t
12927         directly since it cannot be NULL.
12928         (get_vi_for_tree): Rewrite for pointer_map API.
12929         (find_what_p_points_to): Adjust for change to lookup_vi_for_tree.
12930         (init_alias_vars): Create vi_for_tree as pointer_map.
12931         (delete_points_to_sets): Delete vi_for_tree using pointer_map_destroy.
12932
12933         * tree-cfg.c: Don't include hashtab.h.
12934         (edge_to_cases): Declare as pointer_map.
12935         (struct edge_to_cases_elt, edge_to_cases_hash, edge_to_cases_eq):
12936         Delete.
12937         (edge_to_cases_cleanup): Rewrite as pointer_map_traverse callback.
12938         (start_recording_case_labels): Create edge_to_cases as pointer_map.
12939         (end_recoding_case_labels): Cleanup edge_to_cases manually before
12940         destroying it.
12941         (record_switch_edge): Delete.
12942         (get_cases_for_edge): Adjust for pointer_map API, inline
12943         record_switch_edge (rewritten for new API), remove goto.
12944
12945 2006-02-06  Paolo Bonzini  <bonzini@gnu.org>
12946
12947         * Makefile.in (tree-nested.o): Add pointer-set.h dependency.
12948         * tree-nested.c: Include pointer-set.h.
12949         (var_map_elt, var_map_eq, var_map_hash): Delete.
12950         (struct nesting_info): Remove GTY marker.  Change the two htab_t's
12951         to pointer_map_t's.
12952         (nesting_info_bitmap_obstack): New.
12953         (lookup_field_for_decl): Adjust for pointer_map API.
12954         (lookup_tramp_for_decl): Adjust for pointer_map API.
12955         (get_nonlocal_debug_decl): Adjust for pointer_map API.
12956         (get_local_debug_decl): Adjust for pointer_map API.
12957         (convert_nl_goto_reference): Adjust for pointer_map API.
12958         (convert_nl_goto_receiver): Adjust for pointer_map API.
12959         (create_nesting_tree): Create outside GGC space.  Create bitmap on
12960         the new obstack.  Create field_map and var_map as pointer_maps.
12961         (free_nesting_tree): Adjust for changes to create_nesting_tree.
12962         (root): Delete.
12963         (lower_nested_functions): Move root here, no need to NULL it.
12964         Initialize and release the obstack.
12965
12966 2007-02-06  Paolo Bonzini  <bonzini@gnu.org>
12967
12968         * tree.c (tree_int_map_hash, tree_int_map_eq, tree_int_map_marked_p):
12969         Remove prototypes and make them non-static.
12970         (struct tree_int_map): Remove.
12971         * tree.h (struct tree_int_map): Move here, turning TO into an
12972         unsigned int.
12973         (tree_int_map_hash, tree_int_map_eq, tree_int_map_marked_p): Declare.
12974
12975         * tree.h (TREE_COMPLEXITY): Remove.
12976         (struct tree_exp): Remove complexity field.
12977         * tree.c (build1_stat): Don't set it.
12978
12979 2007-02-06  Dorit Nuzman  <dorit@il.ibm.com>
12980             Victor Kaplansky  <victork@il.ibm.com>
12981
12982         * tree-vectorizer.c (vect_is_simple_use): Support induction.
12983         (vect_is_simple_reduction): Support reduction with induction as
12984         one of the operands.
12985         (vect_is_simple_iv_evolution): Fix formatting.
12986         * tree-vect-analyze.c (vect_mark_stmts_to_be_vectorized): Fix
12987         formatting.  Don't mark induction phis for vectorization.
12988         (vect_analyze_scalar_cycles): Analyze all inductions, then reductions.
12989         * tree-vect-transform.c (get_initial_def_for_induction): New function.
12990         (vect_get_vec_def_for_operand): Support induction.
12991         (vect_get_vec_def_for_stmt_copy): Fix formatting and add check for
12992         induction case.
12993         (vectorizable_reduction): Support reduction with induction as one of
12994         the operands.
12995         (vectorizable_type_demotion): Use def-type of stmt argument rather
12996         than dummy def-type.
12997
12998         * tree-ssa-loop.c (gate_scev_const_prop): Return the value of
12999         flag_tree_scev_cprop.
13000         * common.opt (tree-scev-cprop): New flag.
13001
13002         * tree-vect-transform.c (vect_create_destination_var): Use 'kind' in
13003         call to vect_get_new_vect_var.
13004
13005 2007-02-06  Ira Rosen  <irar@il.ibm.com>
13006
13007         * tree-vect-patterns.c (vect_recog_widen_mult_pattern): Check that
13008         vectype is not NULL.
13009         (vect_pattern_recog_1): Likewise.
13010
13011 2007-02-05  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
13012
13013         * fold-const.c (negate_expr_p): Handle CONJ_EXPR.
13014         (fold_negate_expr): Likewise.
13015
13016 2007-02-05  Alexandre Oliva  <aoliva@redhat.com>
13017
13018         PR debug/30189
13019         * dwarf2out.c (modified_type_die): Follow DECL_ORIGINAL_TYPE
13020         even if cv-qualification is the same.
13021
13022 2007-02-05  Geoffrey Keating  <geoffk@apple.com>
13023
13024         * config/rs6000/darwin-tramp.asm (__trampoline_setup): Call
13025         __enable_execute_stack on completion.
13026
13027 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
13028
13029         * config/i386/athlon.md (athlon_fldxf_k8, athlon_fld_k8,
13030         athlon_fstxf_k8, athlon_fst_k8, athlon_fist, athlon_fmov,
13031         athlon_fadd_load, athlon_fadd_load_k8, athlon_fadd, athlon_fmul,
13032         athlon_fmul_load, athlon_fmul_load_k8, athlon_fsgn,
13033         athlon_fdiv_load, athlon_fdiv_load_k8, athlon_fdiv_k8,
13034         athlon_fpspc_load, athlon_fpspc, athlon_fcmov_load,
13035         athlon_fcmov_load_k8, athlon_fcmov_k8, athlon_fcomi_load_k8,
13036         athlon_fcomi, athlon_fcom_load_k8, athlon_fcom): Added amdfam10.
13037
13038 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
13039
13040         * config/i386/i386.md (x86_sahf_1, cmpfp_i_mixed, cmpfp_i_sse,
13041         cmpfp_i_i387, cmpfp_iu_mixed, cmpfp_iu_sse, cmpfp_iu_387,
13042         swapsi, swaphi_1, swapqi_1, swapdi_rex64, fix_truncsfdi_sse,
13043         fix_truncdfdi_sse, fix_truncsfsi_sse, fix_truncdfsi_sse,
13044         x86_fldcw_1, floatsisf2_mixed, floatsisf2_sse, floatdisf2_mixed,
13045         floatdisf2_sse, floatsidf2_mixed, floatsidf2_sse,
13046         floatdidf2_mixed, floatdidf2_sse, muldi3_1_rex64, mulsi3_1,
13047         mulsi3_1_zext, mulhi3_1, mulqi3_1, umulqihi3_1, mulqihi3_insn,
13048         umulditi3_insn, umulsidi3_insn, mulditi3_insn, mulsidi3_insn,
13049         umuldi3_highpart_rex64, umulsi3_highpart_insn,
13050         umulsi3_highpart_zext, smuldi3_highpart_rex64,
13051         smulsi3_highpart_insn, smulsi3_highpart_zext, x86_64_shld,
13052         x86_shld_1, x86_64_shrd, sqrtsf2_mixed, sqrtsf2_sse,
13053         sqrtsf2_i387, sqrtdf2_mixed, sqrtdf2_sse, sqrtdf2_i387,
13054         sqrtextendsfdf2_i387, sqrtxf2, sqrtextendsfxf2_i387,
13055         sqrtextenddfxf2_i387): Added amdfam10_decode.
13056
13057         * config/i386/athlon.md (athlon_idirect_amdfam10,
13058         athlon_ivector_amdfam10, athlon_idirect_load_amdfam10,
13059         athlon_ivector_load_amdfam10, athlon_idirect_both_amdfam10,
13060         athlon_ivector_both_amdfam10, athlon_idirect_store_amdfam10,
13061         athlon_ivector_store_amdfam10): New define_insn_reservation.
13062         (athlon_idirect_loadmov, athlon_idirect_movstore): Added
13063         amdfam10.
13064
13065 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
13066
13067         * config/i386/athlon.md (athlon_call_amdfam10,
13068         athlon_pop_amdfam10, athlon_lea_amdfam10): New
13069         define_insn_reservation.
13070         (athlon_branch, athlon_push, athlon_leave_k8, athlon_imul_k8,
13071         athlon_imul_k8_DI, athlon_imul_mem_k8, athlon_imul_mem_k8_DI,
13072         athlon_idiv, athlon_idiv_mem, athlon_str): Added amdfam10.
13073
13074 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
13075
13076         * config/i386/athlon.md (athlon_sseld_amdfam10,
13077         athlon_mmxld_amdfam10, athlon_ssest_amdfam10,
13078         athlon_mmxssest_short_amdfam10): New define_insn_reservation.
13079
13080 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
13081
13082         * config/i386/athlon.md (athlon_sseins_amdfam10): New
13083         define_insn_reservation.
13084         * config/i386/i386.md (sseins): Added sseins to define_attr type
13085         and define_attr unit.
13086         * config/i386/sse.md: Set type attribute to sseins for insertq
13087         and insertqi.
13088
13089 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
13090
13091         * config/i386/athlon.md (sselog_load_amdfam10, sselog_amdfam10,
13092         ssecmpvector_load_amdfam10, ssecmpvector_amdfam10,
13093         ssecomi_load_amdfam10, ssecomi_amdfam10,
13094         sseaddvector_load_amdfam10, sseaddvector_amdfam10): New
13095         define_insn_reservation.
13096         (ssecmp_load_k8, ssecmp, sseadd_load_k8, seadd): Added amdfam10.
13097
13098 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
13099
13100         * config/i386/athlon.md (cvtss2sd_load_amdfam10,
13101         cvtss2sd_amdfam10, cvtps2pd_load_amdfam10, cvtps2pd_amdfam10,
13102         cvtsi2sd_load_amdfam10, cvtsi2ss_load_amdfam10,
13103         cvtsi2sd_amdfam10, cvtsi2ss_amdfam10, cvtsd2ss_load_amdfam10,
13104         cvtsd2ss_amdfam10, cvtpd2ps_load_amdfam10, cvtpd2ps_amdfam10,
13105         cvtsX2si_load_amdfam10, cvtsX2si_amdfam10): New
13106         define_insn_reservation.
13107
13108         * config/i386/sse.md (cvtsi2ss, cvtsi2ssq, cvtss2si,
13109         cvtss2siq, cvttss2si, cvttss2siq, cvtsi2sd, cvtsi2sdq,
13110         cvtsd2si, cvtsd2siq, cvttsd2si, cvttsd2siq,
13111         cvtpd2dq, cvttpd2dq, cvtsd2ss, cvtss2sd,
13112         cvtpd2ps, cvtps2pd): Added amdfam10_decode attribute.
13113
13114 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
13115
13116         * config/i386/athlon.md (athlon_ssedivvector_amdfam10,
13117         athlon_ssedivvector_load_amdfam10, athlon_ssemulvector_amdfam10,
13118         athlon_ssemulvector_load_amdfam10): New define_insn_reservation.
13119         (athlon_ssediv, athlon_ssediv_load_k8, athlon_ssemul,
13120         athlon_ssemul_load_k8): Added amdfam10.
13121
13122 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
13123
13124         * config/i386/i386.h (TARGET_SSE_UNALIGNED_MOVE_OPTIMAL): New macro.
13125         (x86_sse_unaligned_move_optimal): New variable.
13126
13127         * config/i386/i386.c (x86_sse_unaligned_move_optimal): Enable for
13128         m_AMDFAM10.
13129         (ix86_expand_vector_move_misalign): Add code to generate movupd/movups
13130         for unaligned vector SSE double/single precision loads for AMDFAM10.
13131
13132 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
13133
13134         * config/i386/i386.h (TARGET_AMDFAM10): New macro.
13135         (TARGET_CPU_CPP_BUILTINS): Add code for amdfam10.
13136         Define TARGET_CPU_DEFAULT_amdfam10.
13137         (TARGET_CPU_DEFAULT_NAMES): Add amdfam10.
13138         (processor_type): Add PROCESSOR_AMDFAM10.
13139
13140         * config/i386/i386.md: Add amdfam10 as a new cpu attribute to match
13141         processor_type in config/i386/i386.h.
13142         Enable imul peepholes for TARGET_AMDFAM10.
13143
13144         * config.gcc: Add support for --with-cpu option for amdfam10.
13145
13146         * config/i386/i386.c (amdfam10_cost): New variable.
13147         (m_AMDFAM10): New macro.
13148         (m_ATHLON_K8_AMDFAM10): New macro.
13149         (x86_use_leave, x86_push_memory, x86_movx, x86_unroll_strlen,
13150         x86_cmove, x86_3dnow_a, x86_deep_branch, x86_use_simode_fiop,
13151         x86_promote_QImode, x86_integer_DFmode_moves,
13152         x86_partial_reg_dependency, x86_memory_mismatch_stall,
13153         x86_accumulate_outgoing_args, x86_arch_always_fancy_math_387,
13154         x86_sse_partial_reg_dependency, x86_sse_typeless_stores,
13155         x86_use_ffreep, x86_use_incdec, x86_four_jump_limit,
13156         x86_schedule, x86_use_bt, x86_cmpxchg16b, x86_pad_returns):
13157         Enable/disable for amdfam10.
13158         (override_options): Add amdfam10_cost to processor_target_table.
13159         Set up PROCESSOR_AMDFAM10 for amdfam10 entry in
13160         processor_alias_table.
13161         (ix86_issue_rate): Add PROCESSOR_AMDFAM10.
13162         (ix86_adjust_cost): Add code for amdfam10.
13163
13164 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
13165
13166         * config/i386/i386.opt: Add new Advanced Bit Manipulation (-mabm)
13167         instruction set feature flag. Add new (-mpopcnt) flag for popcnt
13168         instruction. Add new SSE4A (-msse4a) instruction set feature flag.
13169         * config/i386/i386.h: Add builtin definition for SSE4A.
13170         * config/i386/i386.md: Add support for ABM instructions
13171         (popcnt and lzcnt).
13172         * config/i386/sse.md: Add support for SSE4A instructions
13173         (movntss, movntsd, extrq, insertq).
13174         * config/i386/i386.c: Add support for ABM and SSE4A builtins.
13175         Add -march=amdfam10 flag.
13176         * config/i386/ammintrin.h: Add support for SSE4A intrinsics.
13177         * doc/invoke.texi: Add documentation on flags for sse4a, abm, popcnt
13178         and amdfam10.
13179         * doc/extend.texi: Add documentation for SSE4A builtins.
13180
13181 2007-02-05  Bob Wilson  <bob.wilson@acm.org>
13182
13183         * config/xtensa/xtensa.c (constantpool_mem_p): Skip over SUBREGs.
13184
13185 2007-02-05  Richard Guenther  <rguenther@suse.de>
13186
13187         * tree-vectorizer.h (vectorizable_function): Add argument type
13188         argument, change return type.
13189         * tree-vect-patterns.c (vect_recog_pow_pattern): Adjust caller.
13190         * tree-vect-transform.c (vectorizable_function): Handle extra
13191         argument, return vectorized function decl.
13192         (build_vectorized_function_call): Remove.
13193         (vectorizable_call): Handle calls with result and argument types
13194         differing.  Handle loop vectorization factor correctly.
13195         * targhooks.c (default_builtin_vectorized_function): Adjust for
13196         extra argument.
13197         * targhooks.h (default_builtin_vectorized_function): Likewise.
13198         * target.h (builtin_vectorized_function): Add argument type
13199         argument.
13200         * config/i386/i386.c (ix86_builtin_vectorized_function): Handle
13201         extra argument, allow vectorizing of lrintf.
13202         * doc/tm.texi (TARGET_VECTORIZE_BUILTIN_VECTORIZED_FUNCTION): Adjust
13203         documentation of target hook.
13204
13205 2007-02-05  Hans-Peter Nilsson  <hp@axis.com>
13206
13207         PR target/30665
13208         * config/cris/cris.md ("*andsi_movu", "*andsi_clear", "*andhi_movu")
13209         ("*andhi_clear", andu (casesi+45)): For size-changed operand where
13210         memory is allowed, require !side_effects_p, not just !MEM_VOLATILE_P.
13211
13212 2007-02-05  Roger Sayle  <roger@eyesopen.com>
13213
13214         * fold-const.c (fold_unary) <REAL_PART>: Test for availability of
13215         BUILT_IN_COS before simplifying REAL_PART(CEXPI)) to COS.
13216         <IMAG_PART>: Likewise, check for availability of BUILT_IN_SIN.
13217         * builtins.c (fold_builtin_sincos): Check for TARGET_C99_FUNCTIONS
13218         before canonicalizing sincos to cexpi.
13219         (fold_builtin_cexp): Likewise, for canonicalizing cexp to cexpi.
13220
13221 2007-02-05  Roger Sayle  <roger@eyesopen.com>
13222
13223         * config/alpha/alpha.c (alpha_add_builtins): New Helper function.
13224         Set TREE_READONLY and TREE_NOTHROW directly, not via attributes.
13225         (alpha_init_builtins): Use alpha_add_builtins to process tables.
13226
13227 2007-02-05  Roger Sayle  <roger@eyesopen.com>
13228
13229         * mips-tfile.c (initialize_init_file): Correct endianness test.
13230
13231 2007-02-05  Kazu Hirata  <kazu@codesourcery.com>
13232
13233         * config/m68k/m68k.md (pushdi-1, pushdi, movsi+1): Don't use
13234         the 'y' constraint.
13235
13236 2007-02-05  Richard Sandiford  <richard@codesourcery.com>
13237
13238         * dwarf2out.c (dwarf2out_frame_debug_expr): Record the register
13239         saves in a PARALLEL before the register assignments.
13240
13241 2007-02-05  Richard Sandiford  <richard@codesourcery.com>
13242
13243         * doc/tm.texi (DWARF_ALT_FRAME_RETURN_COLUMN): Do not require
13244         DWARF_FRAME_RETURN_COLUMN to be a general register.
13245         * dwarf2out.c (init_return_column_size): New function, split from...
13246         (expand_builtin_init_dwarf_reg_sizes): ...here.  Allow both
13247         DWARF_FRAME_RETURN_COLUMN and DWARF_ALT_FRAME_RETURN_COLUMN
13248         to be nongeneral registers.
13249         * config/m68k/m68k.h (DWARF_FRAME_REGNUM): Only map FP and
13250         integer registers.
13251         (DWARF_FRAME_REGISTERS, DWARF_FRAME_RETURN_COLUMN): Define.
13252         (DWARF_ALT_FRAME_RETURN_COLUMN): Define.
13253
13254 2007-02-04  Zdenek Dvorak <dvorakz@suse.cz>
13255
13256         * cfgcleanup.c (try_optimize_cfg): Avoid removing ENTRY_BLOCK_PTR.
13257
13258 2007-02-04  Zdenek Dvorak <dvorakz@suse.cz>
13259
13260         * cfgloopmanip.c (loop_delete_branch_edge): Removed.
13261         (remove_path): Use can_remove_branch_p and remove_branch instead
13262         of loop_delete_branch_edge.
13263         * tree-ssa-loop-manip.c (scale_dominated_blocks_in_loop): New function.
13264         (tree_transform_and_unroll_loop): Remove dead branches immediately.
13265         Update profile using scale_dominated_blocks_in_loop.
13266         * cfghooks.c (can_remove_branch_p, remove_branch): New functions.
13267         * cfghooks.h (struct cfg_hooks): Add can_remove_branch_p.
13268         (can_remove_branch_p, remove_branch): Declare.
13269         * tree-cfg.c (tree_can_remove_branch_p): New function.
13270         (tree_cfg_hooks): Add tree_can_remove_branch_p.
13271         * cfgrtl.c (rtl_can_remove_branch_p): New function.
13272         (rtl_cfg_hooks, cfg_layout_rtl_cfg_hook): Add rtl_can_remove_branch_p.
13273
13274 2007-02-05  Jan Hubicka  <jh@suse.cz>
13275
13276         PR middle-end/30696
13277         * ipa-inline.c (cgraph_clone_inlined_nodes): When there are unanalyzed
13278         nodes in cgraph, don't remove offline copy of the function.
13279
13280 2007-02-04  Jan Hubicka  <jh@suse.cz>
13281
13282         * tree-sra.c (sra_walk_expr): Add linebreaks. BITFIELD_REFs into
13283         vectors might cause maybe_lookup_element_for_expr to be called
13284         on non-sra-candidate.
13285
13286 2007-02-04  Kazu Hirata  <kazu@codesourcery.com>
13287
13288         * config/bfin/bfin-modes.def, config/bfin/bfin.c,
13289         config/bfin/bfin.md, config/bfin/predicates.md: Follow
13290         spelling conventions.
13291
13292 2007-02-04  Richard Guenther  <rguenther@suse.de>
13293
13294         PR middle-end/30636
13295         * fold-const.c (try_move_mult_to_index): Make sure to not
13296         overflow one dimension of a multi-dimensional array access.
13297
13298 2007-02-04  Jan Hubicka  <jh@suse.cz>
13299
13300         * passes.c (init_optimization_passes): Reindent.
13301
13302 2007-02-04  Jan Hubicka  <jh@suse.cz>
13303             Eric Botcazou  <ebotcazou@adacore.com>
13304
13305         * tree-optimize.c (has_abnormal_outgoing_edge_p): Move to...
13306         (execute_fixup_cfg): Break out the abnormal goto code.
13307         * tree-inline.c (has_abnormal_outgoing_edge_p): ...here.
13308         (make_nonlocal_label_edges): Move here from execute_fixup_cfg.
13309         (optimize_inline_calls): Call make_nonlocal_label_edges.
13310
13311 2007-02-04  Jan Hubicka  <jh@suse.cz>
13312
13313         * tree-ssa-copyrename.c (copy_rename_partition_coalesce): Return
13314         true when something was changed.
13315         (rename_ssa_copies): When something was changed, do
13316         TODO_remove_unused_locals.
13317         * tree-ssa-forwprop.c (tree_ssa_forward_propagate_single_use_value):
13318         add TODO_remove_unused_locals when instruction was removed.
13319
13320 2007-02-04  Jan Hubicka  <jh@suse.cz>
13321
13322         * ipa-inline.c (try_inline): Improve debug output; work on already
13323         inline edges too.
13324         (cgraph_decide_inlining_incrementally): Indent; improve debug output;
13325         call try_inline for already inlined edges too when flattening;
13326         inline also functions that make callee growth but overall unit size
13327         reduce.
13328
13329 2007-02-04  Kazu Hirata  <kazu@codesourcery.com>
13330
13331         * config/m32c/bitops.md, config/m32c/jump.md,
13332         config/m32c/m32c.c, config/m32c/m32c.h, config/m32r/m32r.c,
13333         config/m32r/m32r.h, config/m32r/m32r.md,
13334         config/m32r/predicates.md, config/m68hc11/larith.asm,
13335         config/m68hc11/m68hc11.c, config/m68hc11/m68hc11.h,
13336         config/m68k/m68k.h, config/mcore/mcore.md, config/mips/4k.md,
13337         config/mips/mips-protos.h, config/mips/mips.c,
13338         config/mips/mips.h, config/mips/mips.md, config/mips/mips16.S,
13339         config/mn10300/mn10300.h, config/mn10300/predicates.md,
13340         config/mt/mt.c, config/mt/mt.h, config/mt/mt.md: Follow
13341         spelling conventions.
13342
13343         * config/v850/v850.c, config/v850/v850.h, config/v850/v850.md:
13344         Follow spelling conventions.
13345
13346 2007-02-03  Douglas Gregor  <doug.gregor@gmail.com>
13347
13348         * c-opts.c (c_common_post_options): If C++0x mode is enabled, don't
13349         warn about C++0x compatibility.
13350
13351 2007-02-04  Kazu Hirata  <kazu@codesourcery.com>
13352
13353         * config/h8300/h8300.c, config/h8300/h8300.h,
13354         config/h8300/h8300.md: Follow spelling conventions.
13355
13356 2007-02-03  Uros Bizjak  <ubizjak@gmail.com>
13357
13358         PR middle-end/30667
13359         * combine.c (try_combine): Do not substitute source operand
13360         with constants wider than 2 * HOST_BITS_PER_WIDE_INT.
13361
13362 2007-02-03  Jan Hubicka  <jh@suse.cz>
13363
13364         PR gcov-profile/30650
13365         * value-prof.c (stringop_block_profile): Fix handling of size counter;
13366         do not divide by zero for never executed counters.
13367         (tree_find_values_to_profile): Fix counters.
13368         * gcov-ui.h (GCOV_COUNTER_AVERAGE, GCOV_COUNTER_IOR): Fix comments.
13369
13370 2007-02-03  Ian Lance Taylor  <iant@google.com>
13371
13372         * lower-subreg.c (simple_move_operand): New static function,
13373         broken out of simple_move.  Reject LABEL_REF, SYMBOL_REF, and HIGH
13374         operands.
13375         (simple_move): Call simple_move_operand.
13376         (find_decomposable_subregs): Add special handling of MEMs.
13377         (can_decompose_p): Rename from cannot_decompose_p.  Reverse
13378         meaning of return value.  If we see a hard register, test whether
13379         it can store a word_mode value.  Change all callers.
13380
13381 2007-02-03  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
13382
13383         * pa.md (addvdi3, addvsi3, subvdi3, subvsi3, negvdi2, negvsi2): New
13384         ftrapv insns and expanders.
13385         (subdi3): Change define_expand operand 1 to arith11_operand, and
13386         operand 2 to reg_or_0_operand.  Change constraints of 64-bit insn
13387         pattern to handle reg_or_0 operands.  Revise 32-bit insn pattern to
13388         handle 11-bit constants and reg_or_0 operands in operands 1 and 2,
13389         respectively.
13390
13391         PR middle-end/30174
13392         * varasm.c (notice_global_symbol): Treat global objects as weak when
13393         flag_shlib is true.
13394
13395 2007-02-03  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
13396
13397         * emit-rtl.c (dconstpi): Delete.
13398         (dconstsqrt2): New.
13399         (init_emit_once): Delete dconstpi and init dconstsqrt2.
13400         * real.h (dconstpi): Delete.
13401         (dconstsqrt2): New.
13402         * builtins.c (fold_builtin_cabs): Use dconstsqrt2.
13403         (fold_builtin_hypot): Likewise.
13404
13405 2007-02-03  Tom Tromey  <tromey@redhat.com>
13406
13407         PR driver/30246
13408         * gcc.c (cpp_unique_options): Any of -ggdb3, -gstabs3,
13409         -gcoff3, -gxcoff3, -gvms3 implies -dD.
13410
13411 2007-02-03  Kazu Hirata  <kazu@codesourcery.com>
13412
13413         * c-decl.c, config/avr/avr.c, config/avr/avr.h,
13414         config/m68k/m68k.c, config/m68k/netbsd-elf.h,
13415         config/mn10300/mn10300.c, config/pdp11/pdp11.h,
13416         config/rs6000/cell.md, config/rs6000/darwin.h,
13417         config/sh/sh.md, config/sh/sh4-300.md, config/spu/spu.c,
13418         config/spu/spu.md, cselib.c, expr.c, haifa-sched.c, hwint.h,
13419         jump.c, reload.c, sched-deps.c, sched-int.h, tree-inline.c,
13420         tree-profile.c, tree-ssa-live.h, tree-vrp.c: Fix comment
13421         typos.  Follow spelling conventions.
13422         * doc/invoke.texi: Follow spelling conventions.
13423
13424 2007-02-03  Roger Sayle  <roger@eyesopen.com>
13425
13426         * simplify-rtx.c (simplify_relational_operation_1): Implement some
13427         canonicalization transformations that attempt to simplify integer
13428         constant comparisons to become comparisons against zero.
13429
13430 2007-02-03  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
13431
13432         * builtins.c (fold_builtin_cabs): Fold cabs(x+xi) into
13433         fabs(x)*sqrt(2).
13434         * fold-const.c (fold_binary): Fix comment typos.  Fold complex
13435         (x,0)-(0,y) into (x,-y).  Likewise (0,y)-(x,0) into (-x,y).
13436
13437 2007-02-02  Mike Stump  <mrs@apple.com>
13438
13439         * config/darwin9.h (DARWIN_LINKER_GENERATES_ISLANDS): Add.
13440         * config/rs6000/rs6000.c (DARWIN_GENERATE_ISLANDS): Add.
13441         (output_call): Use DARWIN_GENERATE_ISLANDS to decide when to
13442         generate a branch island.
13443
13444 2007-02-02  Bob Wilson  <bob.wilson@acm.org>
13445
13446         * config/xtensa/xtensa.c (smalloffset_mem_p): Use BASE_REG_P.
13447         (xtensa_legitimate_address_p): New.
13448         (xtensa_legitimize_address): New.
13449         (xtensa_output_addr_const_extra): New.
13450         * config/xtensa/xtensa.h (REG_OK_STRICT_FLAG): Define.
13451         (BASE_REG_P): New.
13452         (REG_OK_FOR_BASE_P): Use BASE_REG_P.
13453         (GO_IF_LEGITIMATE_ADDRESS): Move code to xtensa_legitimate_address_p.
13454         (LEGITIMIZE_ADDRESS): Move code to xtensa_legitimize_address.
13455         (OUTPUT_ADDR_CONST_EXTRA): Move code to xtensa_output_addr_const_extra.
13456         * config/xtensa/xtensa-protos.h (xtensa_legitimate_address_p): New.
13457         (xtensa_legitimize_address): New.
13458         (xtensa_output_addr_const_extra): New.
13459
13460 2007-02-02  Steve Ellcey  <sje@cup.hp.com>
13461
13462         * config/ia64/ia64.c (ia64_print_operand): Fix compare strings.
13463
13464 2007-02-02  Ian Lance Taylor  <iant@google.com>
13465
13466         * expmed.c (expand_divmod): Add comment.
13467
13468 2007-02-02  Kazu Hirata  <kazu@codesourcery.com>
13469
13470         * emit-rtl.c (renumber_insns): Remove.
13471         * flags.h: Remove the extern for flag_renumber_insns.
13472         * rtl.h: Remove the prototype for renumber_insns.
13473         * toplev.c (flag_renumber_insns): Remove.
13474
13475 2007-02-02  Hui-May Chang  <hm.chang@apple.com>
13476
13477         Revert for x86 darwin:
13478         2005-06-19  Uros Bizjak  <uros@kss-loka.si>
13479
13480         * config/i386/i386.c (ix86_function_arg_regno_p): Put back the
13481         code before the following patch under TARGET_MACHO.
13482         (ix86_function_value_regno_p): Likewise.
13483
13484 2007-02-02  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
13485
13486         * fold-const.c (negate_expr_p, fold_negate_expr): Handle
13487         COMPLEX_EXPR.
13488
13489 2007-02-02  Maxim Kuvyrkov  <mkuvyrkov@ispras.ru>
13490
13491         PR target/29682
13492         * config/ia64/ia64.c (ia64_speculate_insn): Restrict to memory loads to
13493         general or fp registers.  Add comments.
13494         * config/ia64/ia64.md (reg_pred_prefix): Add comment.
13495
13496 2007-02-02  Paolo Bonzini  <bonzini@gnu.org>
13497
13498         * pointer-set.c (insert_aux): Only return insertion slot.
13499         (pointer_set_insert): Adjust.
13500         (pointer_set_traverse, struct pointer_map_t, pointer_map_create,
13501         pointer_map_destroy, pointer_map_insert, pointer_map_contains,
13502         pointer_map_traverse): New.
13503         * pointer-set.h (pointer_set_traverse, struct pointer_map_t,
13504         pointer_map_create,  pointer_map_destroy, pointer_map_insert,
13505         pointer_map_contains, pointer_map_traverse): Declare.
13506
13507 2007-02-02  Jakub Jelinek  <jakub@redhat.com>
13508
13509         PR middle-end/30473
13510         * builtins.c (fold_builtin_sprintf): Do not attempt to optimize
13511         sprintf (str, "%s").  Do not optimize sprintf (str, "nopercent", p++).
13512
13513 2007-02-02  Maxim Kuvyrkov  <mkuvyrkov@ispras.ru>
13514
13515         * sched-int.h (ds_to_dk, dk_to_ds): Declare functions.
13516
13517         (struct _dep): New type.
13518         (dep_t): New typedef.
13519         (DEP_PRO, DEP_CON, DEP_KIND): New access macros.
13520         (DEP_STATUS): New access macro.  The macro with the same name was
13521         renamed to DEP_LINK_STATUS.
13522         (dep_init): Declare function
13523
13524         (struct _dep_link): New type.
13525         (dep_link_t): New typedef.
13526         (DEP_LINK_NODE, DEP_LINK_NEXT, DEP_LINK_PREV_NEXTP): New access macros.
13527         (DEP_LINK_DEP, DEP_LINK_PRO, DEP_LINK_CON, DEP_LINK_KIND): New macros.
13528         (DEP_LINK_STATUS): New macro.
13529         (debug_dep_links): New debug function.
13530
13531         (struct _deps_list): New type.
13532         (deps_list_t): New typedef.
13533         (DEPS_LIST_FIRST): New access macro.
13534         (FOR_EACH_DEP_LINK): New cycle macro.
13535         (create_deps_list, free_deps_list, delete_deps_list): Declare
13536         functions.
13537         (deps_list_empty_p, debug_deps_list, add_back_dep_to_deps_list): Ditto.
13538         (find_link_by_pro_in_deps_list, find_link_by_con_in_deps_list): Ditto.
13539         (copy_deps_list_change_con): Ditto.
13540
13541         (move_dep_link): Declare function.
13542
13543         (struct _dep_node): New type.
13544         (dep_node_t): New typedef.
13545         (DEP_NODE_BACK, DEP_NODE_DEP, DEP_NODE_FORW): New access macros.
13546
13547         (struct haifa_insn_data.back_deps): New field to hold backward
13548         dependencies of the insn.
13549         (struct haifa_insn_data.depend): Rename to forw_deps.  Change its type
13550         to deps_list_t.
13551         (struct haifa_insn_data.resolved_deps): Rename to resolved_back_deps.
13552         Change its type to deps_list_t.
13553         (INSN_BACK_DEPS): New access macro to use instead of LOG_LINKS.
13554         (INSN_DEPEND): Rename to INSN_FORW_DEPS.
13555         (RESOLVED_DEPS): Rename to INSN_RESOLVED_BACK_DEPS.
13556
13557         (INSN_COST): Move to haifa-sched.c.  Use insn_cost () instead.
13558
13559         (DEP_STATUS): Rename to DEP_LINK_STATUS.  Fix typo in the comment.
13560
13561         (add_forw_dep, delete_back_forw_dep, insn_cost): Update declaration and
13562         all callers.
13563         (dep_cost): Declare.
13564
13565         * sched-deps.c (CHECK): New macro to (en/dis)able sanity checks.
13566         (ds_to_dk, dk_to_ds): New functions.
13567
13568         (init_dep_1): New static function.
13569         (init_dep): New function.
13570         (copy_dep): New static function.
13571
13572         (dep_link_consistent_p, attach_dep_link, add_to_deps_list): New static
13573         functions.
13574         (detach_dep_link): New static function.
13575         (move_dep_link): New function.
13576
13577         (dep_links_consistent_p, dump_dep_links): New static functions.
13578         (debug_dep_links): New debugging function.
13579
13580         (deps_obstack, dl_obstack, dn_obstack): New static variables.
13581
13582         (alloc_deps_list, init_deps_list): New static functions.
13583         (create_deps_list): New function.
13584         (clear_deps_list): New static function.
13585         (free_deps_list, delete_deps_list, deps_list_empty_p): New functions.
13586         (deps_list_consistent_p, dump_deps_list): New static functions.
13587         (debug_deps_list): New function.
13588         (add_back_dep_to_deps_list, find_link_by_pro_in_deps_list): New
13589         functions.
13590         (find_link_by_con_in_deps_list, copy_deps_list_change_con): Ditto.
13591
13592         (maybe_add_or_update_back_dep_1, add_or_update_back_dep_1): Update to
13593         use new scheduler dependencies lists.
13594         (add_back_dep, delete_all_dependences, fixup_sched_groups): Ditto.
13595         (sched_analyze): Ditto.  Initialize dependencies lists.
13596         (add_forw_dep, compute_forward_dependences): Update to use new
13597         scheduler dependencies lists.
13598
13599         (init_dependency_caches): Init deps_obstack.
13600         (free_dependency_caches): Free deps_obstack.
13601
13602         (adjust_add_sorted_back_dep, adjust_back_add_forw_dep): Update to use
13603         new scheduler dependencies lists.
13604         (delete_forw_dep, add_or_update_back_forw_dep): Ditto.
13605         (add_back_forw_dep, delete_back_forw_dep): Ditto.
13606
13607         * sched-rgn.c (set_spec_fed, find_conditional_protection, is_pfree):
13608         Update to use new scheduler dependencies lists.
13609         (is_conditionally_protected, is_prisky, add_branch_dependences): Ditto.
13610         (debug_dependencies): Ditto.
13611         (schedule_region): Update comments.
13612
13613         * sched-ebb.c (earliest_block_with_similiar_load): Update to use new
13614         scheduler dependencies lists.
13615         (schedule_ebb): Update comments.
13616
13617         * rtl.def (DEPS_LIST): Remove.
13618
13619         * lists.c (unused_deps_list): Remove.
13620         (free_list): Update assertions.
13621
13622         (alloc_DEPS_LIST, free_DEPS_LIST_list, free_DEPS_LIST_node): Remove.
13623         (remove_free_DEPS_LIST_elem, copy_DEPS_LIST_list): Ditto.
13624
13625         * rtl.h (free_DEPS_LIST_list, alloc_DEPS_LIST): Remove declarations.
13626         (remove_free_DEPS_LIST_elem, copy_DEPS_LIST_list): Ditto.
13627
13628         * haifa-sched.c (comments): Update.
13629         (insn_cost1): Remove.  Inline the code into insn_cost ().
13630         (insn_cost): Update to use new scheduler dependencies lists.  Move
13631         processing of the dependency cost to dep_cost ().
13632         (dep_cost): New function.  Use it instead of insn_cost () when
13633         evaluating cost of the dependency.  Use compatible interface to
13634         interact with the target.
13635         (priority): Update to use new scheduler dependencies lists.
13636         (rank_for_schedule): Ditto.  Optimize heuristic that prefers the insn
13637         with greater number of insns that depend on the insn.
13638         (schedule_insn): Update to use new scheduler dependencies lists.  Add
13639         code to free backward dependencies lists.  Inline and optimize code
13640         from resolve_dep () - see PR28071.
13641         (ok_for_early_queue_removal): Update to use new scheduler dependencies
13642         lists.  Update call to targetm.sched.is_costly_dependence hook.
13643
13644         (fix_inter_tick, try_ready, fix_tick_ready): Update to use new
13645         scheduler dependencies lists.
13646
13647         (resolve_dep): Remove.  Move the logic to schedule_insn ().
13648         (init_h_i_d): Initialize dependencies lists.
13649
13650         (process_insn_depend_be_in_spec): Rename to
13651         process_insn_forw_deps_be_in_spec.  Update to use new scheduler
13652         dependencies lists.
13653         (add_to_speculative_block, create_check_block_twin, fix_recovery_deps):
13654         Update to use new scheduler dependencies lists.
13655         (clear_priorities, calc_priorities, add_jump_dependencies): Ditto.
13656
13657         * ddg.c (create_ddg_dependence, create_ddg_dep_no_link): Update to use
13658         new scheduler dependencies lists.
13659         (build_intra_loop_deps): Ditto.
13660
13661         * target.h (struct _dep): Declare to use in
13662         gcc_target.sched.is_costly_dependence.
13663         (struct gcc_target.sched.adjust_cost): Fix typo.
13664         (struct gcc_target.sched.is_costly_dependence): Change signature to use
13665         single dep_t parameter instead of an equivalent triad.
13666         (struct gcc_target.sched.adjust_cost_2): Remove.
13667
13668         * target-def.h (TARGET_SCHED_ADJUST_COST_2): Remove.
13669
13670         * reg-notes.def (DEP_TRUE, DEP_OUTPUT, DEP_ANTI): Update comments.
13671
13672         * doc/tm.texi (TARGET_SCHED_IS_COSTLY_DEPENDENCE): Update
13673         documentation.
13674         (TARGET_SCHED_ADJUST_COST_2): Remove documentation.
13675
13676         * doc/rtl.texi (LOG_LINKS): Remove part about instruction scheduler.
13677         (REG_DEP_TRUE): Document.
13678
13679         * config/ia64/ia64.c (ia64_adjust_cost_2): Rename to ia64_adjust_cost.
13680         Change signature to correspond to the targetm.sched.adjust_cost hook.
13681         Update use in TARGET_SCHED_ADJUST_COST_2.
13682         (TARGET_SCHED_ADJUST_COST_2): Rename to TARGET_SCHED_ADJUST_COST.
13683         (ia64_dependencies_evaluation_hook, ia64_dfa_new_cycle): Update to use
13684         new scheduler dependencies lists.
13685         (ia64_gen_check): Ditto.
13686
13687         * config/mips/mips.c (vr4130_swap_insns_p): Update to use new scheduler
13688         dependencies lists.
13689
13690         * config/rs6000/rs6000.c (rs6000_is_costly_dependence): Change
13691         signature to correspond to the targetm.sched.is_costly_dependence hook.
13692         (is_costly_group): Update to use new scheduler dependencies lists.
13693
13694         * config/spu/spu.c (spu_sched_adjust_cost): Use insn_cost () function
13695         instead of INSN_COST () macro.
13696
13697 2007-02-01  Ian Lance Taylor  <iant@google.com>
13698
13699         * lower-subreg.c (resolve_clobber): Handle a subreg of a concatn.
13700
13701 2007-02-01  Guy Martin  <gmsoft@gentoo.org>
13702
13703         * pa.md (tp_load): Correct mfctl instruction syntax.
13704
13705 2007-02-01  Geoffrey Keating  <geoffk@apple.com>
13706
13707         * config/rs6000/rs6000.c (rs6000_stack_info): Correct
13708         altivec_padding_size calculation on AIX.  Improve comment, add
13709         assert to verify that it's right.
13710
13711         * config/rs6000/darwin.h (MD_UNWIND_SUPPORT): Don't define for
13712         64-bit.
13713
13714 2007-2-01  Seongbae Park  <seongbae.park@gmail.com>
13715
13716         PR inline-asm/28686
13717         * global.c (global_alloc): Add mising initialization of
13718         ELIMINABLE_REGSET.
13719
13720 2007-02-01  Roger Sayle  <roger@eyesopen.com>
13721
13722         * alias.c (init_alias_analysis): Correct whitespace.
13723         * bb-reorder.c (fix_edges_for_rarely_executed_code,
13724         partition_hot_cold_basic_blocks): Likewise.
13725         * builtins.c (expand_builtin_printf, expand_builtin_fprintf,
13726         expand_builtin_sprintf, fold_builtin_carg, fold_builtin_sprintf,
13727         maybe_emit_sprintf_chk_warning, fold_builtin_sprintf_chk,
13728         fold_builtin_snprintf_chk, fold_builtin_printf,
13729         fold_builtin_fprintf, do_mpfr_ckconv, do_mpfr_arg1, do_mpfr_arg2,
13730         do_mpfr_arg3, do_mpfr_sincos): Likewise.
13731         * cfgcleanup.c (cleanup_cfg): Likewise.
13732         * cfgexpand.c (tree_expand_cfg): Likewise.
13733         * fold-const.c (fold_binary) <RDIV_EXPR>: Likewise.
13734         * function.c (get_next_funcdef_no): Likewise.
13735         * gengtype.c (main): Likewise.
13736         * genmodes.c (main): Likewise.
13737         * gcse.c (bypass_conditional_jumps, print_ldst_list): Likewise.
13738         * haifa-sched.c (schedule_block, extend_h_i_d): Likewise.
13739         * ifcvt.c (noce_emit_move_insn): Likewise.
13740         * modulo-sched.c (generate_prolog_epilog, sms_schedule_by_order):
13741         Likewise.
13742         * stor-layout.c (get_best_mode): Likewise.
13743         * tree-ssa-loop-niter.c (get_val_for): Likewise.
13744         * tree-ssa-structalias.c (get_varinfo, get_varinfo_fc,
13745         scc_visit, do_ds_constraint, do_complex_constraint, label_visit,
13746         perform_var_substitution, solve_graph): Likewise.
13747         * tree-vrp.c (vrp_finalize): Likewise.
13748
13749 2007-02-01  Ian Lance Taylor  <iant@google.com>
13750
13751         * lower-subreg.c (simplify_gen_subreg_concatn): If we ask for the
13752         high part of a paradoxical subreg, return a constant zero.
13753
13754 2007-02-01  Zdenek Dvorak <dvorakz@suse.cz>
13755
13756         * toplev.c (lang_dependent_init): Call init_set_costs.
13757         * loop-init.c (loop_optimizer_init): Do not call init_set_costs.
13758
13759 2007-02-01  Richard Guenther  <rguenther@suse.de>
13760
13761         PR middle-end/30656
13762         * fold-const.c (fold_negate_expr): Allow negating a
13763         constant if overflow does not change.
13764
13765 2007-02-01  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
13766
13767         * doc/c-tree.texi (Expression trees): Improve markup.
13768         * doc/tm.texi (Register Classes, Addressing Modes)
13769         (Floating Point): Fix spacing after abbreviations.  Fix some
13770         typos.
13771
13772 2007-02-01  Ben Elliston  <bje@au.ibm.com>
13773
13774         * doc/invoke.texi: Replace "bugfix" with "bug fix" throughout.
13775         * doc/contrib.texi: Likewise.
13776         * doc/install.texi: Likewise.
13777
13778 2007-01-31  Richard Henderson  <rth@redhat.com>
13779             Ian Lance Taylor  <iant@google.com>
13780
13781         * lower-subreg.c: New file.
13782         * rtl.def (CONCATN): Define.
13783         * passes.c (init_optimization_passes): Add pass_lower_subreg and
13784         pass_lower_subreg2.
13785         * emit-rtl.c (update_reg_offset): New static function, broken out
13786         of gen_rtx_REG_offset.
13787         (gen_rtx_REG_offset): Call update_reg_offset.
13788         (gen_reg_rtx_offset): New function.
13789         * regclass.c: Revert patch of 2006-03-05, restoring
13790         reg_scan_update.
13791         (clear_reg_info_regno): New function.
13792         * dwarf2out.c (concatn_loc_descriptor): New static function.
13793         (loc_descriptor): Handle CONCATN.
13794         * common.opt (fsplit_wide_types): New option.
13795         * opts.c (decode_options): Set flag_split_wide_types when
13796         optimizing.
13797         * timevar.def (TV_LOWER_SUBREG): Define.
13798         * rtl.h (gen_reg_rtx_offset): Declare.
13799         (reg_scan_update): Declare.
13800         * regs.h (clear_reg_info_regno): Declare.
13801         * tree-pass.h (pass_lower_subreg): Declare.
13802         (pass_lower_subreg2): Declare.
13803         * doc/invoke.texi (Option Summary): List -fno-split-wide-types.
13804         (Optimize Options): Add -fsplit-wide-types to -O1 list.  Document
13805         -fsplit-wide-types.
13806         * doc/rtl.texi (Regs and Memory): Document concat and concatn.
13807         * Makefile.in (OBJS-common): Add lower-subreg.o.
13808         (lower-subreg.o): New target.
13809
13810 2007-01-31  Kazu Hirata  <kazu@codesourcery.com>
13811
13812         * config/sh/sh.h (HAVE_SECONDARY_RELOADS): Remove.
13813
13814 2007-01-31  Anatoly Sokolov <aesok@post.ru>
13815
13816         PR target/19087
13817         * config/avr/avr.c (DWARF2_ADDR_SIZE): Define.
13818
13819 2007-01-31  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
13820
13821         PR middle-end/29335
13822         * builtins.c (fold_builtin_sqrt): Use MPFR for constant args.
13823
13824 2007-01-31  Zdenek Dvorak <dvorakz@suse.cz>
13825
13826         * cfgloop.h: Include vec-prim.h.
13827         (enum li_flags): Remove LI_ONLY_OLD.
13828         (loop_iterator): Changed.
13829         (fel_next, fel_init): Iterate over loop tree.
13830         (FOR_EACH_LOOP_BREAK): New macro.
13831         * loop-unswitch.c (unswitch_loops): Do not pass LI_ONLY_OLD to
13832         FOR_EACH_LOOP.
13833         * tree-ssa-loop-unswitch.c (tree_ssa_unswitch_loops): Ditto.
13834         * modulo-sched.c (sms_schedule): Ditto.
13835         * tree-vectorizer.c (vectorize_loops): Ditto.
13836         * doc/loop.texi: Update information on loop numbering and behavior of
13837         FOR_EACH_LOOP wrto new loops.
13838         * tree-scalar-evolution.c (compute_overall_effect_of_inner_loop,
13839         add_to_evolution_1): Test nestedness of loops instead of comparing
13840         their numbers.
13841         * tree-chrec.c (chrec_fold_plus_poly_poly,
13842         chrec_fold_multiply_poly_poly, chrec_evaluate,
13843         hide_evolution_in_other_loops_than_loop, chrec_component_in_loop_num,
13844         reset_evolution_in_loop): Ditto.
13845         * Makefile.in (CFGLOOP_H): Add vecprim.h dependency.
13846
13847 2007-01-31  Dirk Mueller  <dmueller@suse.de>
13848
13849         * c-common.c (warn_about_parentheses): Separate warning about
13850         un-parenthized sequence of comparison operators from the one
13851         which is supposed to warn about x <= y <= z.
13852
13853 2007-01-31  Uros Bizjak  <ubizjak@gmail.com>
13854
13855         * optabs.h (enum optab_index): Add new OTI_isinf.
13856         (isinf_optab): Define corresponding macro.
13857         * optabs.c (init_optabs): Initialize isinf_optab.
13858         * genopinit.c (optabs): Implement isinf_optab using isinf?f2
13859         patterns.
13860         * builtins.c (mathfn_built_in): Handle BUILT_IN_ISINF{,F,L}.
13861         (expand_builtin_interclass_mathfn): Expand BUILT_IN_ISINF{,F,L}
13862         using isinf_optab.
13863         (expand_builtin): Expand BUILT_IN_ISINF{,F,L} using
13864         expand_builtin_interclass_mathfn.
13865         * reg_stack.c (subst_stack_regs_pat): Handle UNSPEC_FXAM.
13866         * config/i386/i386.md (UNSPEC_FXAM): New constant.
13867         (fxam<mode>2_i387): New insn pattern.
13868         (isinf<mode>2) New expander to implement isinf, isinff and isinfl
13869         built-in functions as x87 inline asm.
13870
13871 2007-01-31  Kazu Hirata  <kazu@codesourcery.com>
13872
13873         * config/arm/unwind-arm.h (_sleb128_t, _uleb128_t): New.
13874
13875 2007-01-30  Eric Christopher  <echristo@apple.com>
13876
13877         * config.gcc: Add geode.
13878
13879 2007-01-31  Kazu Hirata  <kazu@codesourcery.com>
13880
13881         * cgraphunit.c, config/arm/arm.c, config/m68k/m68k.c,
13882         ipa-inline.c, tree-profile.c, tree-ssa-live.c,
13883         tree-ssa-math-opts.c, tree-ssanames.c, tree-vect-analyze.c,
13884         value-prof.c: Fix comment typos.
13885
13886 2007-01-30  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
13887
13888         PR c++/24745
13889         * doc/invoke.texi (Wpointer-arith): Document warning.
13890
13891 2007-01-30  Janis Johnson  <janis187@us.ibm.com>
13892
13893         * doc/extend.texi (Decimal Floating Types): Remove decfloat.h from
13894         the list of discrepancies from the draft TR.
13895
13896 2007-01-30  Dirk Mueller  <dmueller@suse.de>
13897
13898         PR c++/30601
13899         * doc/invoke.texi (-Wreturn-type): Update description to
13900         match new behavior.
13901
13902 2007-01-30  Richard Sandiford  <richard@codesourcery.com>
13903
13904         * cfgrtl.c (try_redirect_by_replacing_jump): Check only_sets_cc0_p.
13905
13906 2007-01-30  Uros Bizjak  <ubizjak@gmail.com>
13907
13908         * builtins.c (expand_builtin_int_interclass_roundingfn): New function
13909         to handle optabs that operate on floating point input argument and
13910         output to integer output.
13911         (expand_builtin_mathfn) [BUILT_IN_ILOGB]: Move from here ...
13912         (expand_builtin_interclass_mathfn) [BUILT_IN_ILOGB]: ... to here.
13913         (expand_builtin): Expand BUILT_IN_ILOGB{,F,L} using
13914         expand_builtin_interclass_mathfn ().
13915         * config/i386/i386.md (fxtractxf3_i387): Rename from *fxtractxf3_i387.
13916         (ilogbsi2): Remove.
13917         (ilogbxf2, ilogb<mode>2): New expanders to implement ilogb, ilogbf and
13918         ilogbl built-in functions as x87 intrinsics.
13919
13920 2007-01-30  Richard Guenther  <rguenther@suse.de>
13921
13922         PR middle-end/27657
13923         * dwarf2out.c (reference_to_unused): Query varpool if the
13924         variable was output.
13925
13926 2007-01-30  Richard Guenther  <rguenther@suse.de>
13927
13928         PR middle-end/30313
13929         * passes.c (execute_one_pass): Reset in_gimple_form to not
13930         confuse non-unit-at-a-time mode.
13931
13932 2007-01-29  Roger Sayle  <roger@eyesopen.com>
13933             Richard Guenther  <rguenther@suse.de>
13934
13935         * fold-const.c (round_up): Make HIGH an unsigned HOST_WIDE_INT to
13936         avoid undefined behaviour on overflow.  Use force_fit_type_double
13937         to construct the constant with the specified TREE_OVERFLOW.
13938
13939 2007-01-29  Janis Johnson  <janis187@us.ibm.com>
13940
13941         * config/dfp-bit.c: Add parameterized support for fp exceptions.
13942         * config/dfp-bit.h: Ditto.
13943
13944 2007-01-29  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
13945
13946         * c-decl.c (pop_scope): Replace warnings with call to
13947         warn_for_unused_label.
13948         * c-common.h (warn_for_unused_label): Declare.
13949         * c-common.c (warn_for_unused_label): Define.
13950
13951 2007-01-29  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
13952
13953         * tree-optimize.c (update_inlined_to_pointers): Delete unused
13954         function.
13955
13956 2007-01-29  Janis Johnson  <janis187@us.ibm.com>
13957
13958         * Makefile.in (USER_H): Remove decfloat.h.
13959         * ginclude/decfloat.h: Delete, moving contents to ...
13960         * ginclude/float.h: Add support for decimal floating point,
13961         guarded by __STDC_WANT_DEC_FP__.
13962
13963 2007-01-29  Mike Stump  <mrs@apple.com>
13964
13965         * doc/gccint.texi (Top): Rename Loop Representation to Loop
13966         Analysis and Representation to resolve case insensitive conflict.
13967         * doc/loop.texi (Loop Analysis and Representation): Likewise.
13968
13969 2007-01-28  Daniel Berlin  <dberlin@dberlin.org>
13970
13971         * tree.h (struct tree_memory_tag): Add aliases member.
13972         (MTAG_ALIASES): New macro.
13973         * tree-ssa-alias.c (alias_bitmap_obstack): New variable.
13974         (add_may_alias): Remove pointer-set. Update for may_aliases being
13975         a bitmap.
13976         (mark_aliases_call_clobbered): Update for may_aliases being a
13977         bitmap.
13978         (compute_tag_properties): Ditto.
13979         (create_partition_for): Ditto.
13980         (compute_memory_partitions): Ditto.
13981         (dump_may_aliases_for): Ditto.
13982         (is_aliased_with): Ditto.
13983         (add_may_alias_for_new_tag): Ditto.
13984         (rewrite_alias_set_for): Rewrite for may_aliases being a bitmap.
13985         (compute_is_aliased): New function.
13986         (compute_may_aliases): Call compute_is_aliased).
13987         (init_alias_info): Initialize alias_bitmap_obstack.
13988         (union_alias_set_into): New function.
13989         (compute_flow_sensitive_aliasing): Use union_aliases_into.
13990         (have_common_aliases_p): Rewrite to take two bitmaps and use
13991         intersection.
13992         (compute_flow_insensitive_aliasing): Stop using pointer-sets.
13993         Update for bitmaps.
13994         (finalize_ref_all_pointers): Update for add_may_alias changes.
13995         (new_type_alias): Ditto.
13996         * tree-flow-inline.h (may_aliases): Return a bitmap.
13997         * tree-dfa.c (dump_variable): Check for MTAG_P'ness.
13998         * tree-ssa.c (verify_flow_insensitive_alias_info): Update for
13999         may_aliases being a bitmap.
14000         * tree-flow.h (struct var_ann_d): Remove may_aliases member.
14001         may_aliases now returns a bitmap.
14002         * tree-ssa-structalias.c (merge_smts_into): Update for may_aliases
14003         being a bitmap.
14004         * tree-ssa-operands.c (add_virtual_operand): Update for
14005         may_aliases being a bitmap.
14006
14007 2007-01-29  Daniel Berlin  <dberlin@dberlin.org>
14008
14009         PR tree-optimization/30630
14010         * tree-ssa-structalias.c (do_complex_constraint): Mark correct
14011         variable as changed.
14012
14013 2007-01-29  Simon Martin  <simartin@users.sourceforge.net>
14014
14015         PR c++/28266
14016         * gimplify.c (gimplify_target_expr): Make sure that the TARGET_EXPR is
14017         expanded only once even if an error occurs.
14018
14019 2007-01-29  Ben Elliston  <bje@au.ibm.com>
14020
14021         * gcov-io.h (__gcov_indirect_call_profiler): Declare.
14022         (__gcov_average_profiler): Likewise.
14023         (__gcov_ior_profiler): Likewise.
14024         (__gcov_merge_ior): Likewise.
14025
14026 2007-01-28  Jan Hubicka  <jh@suse.cz>
14027
14028         * builtins.c (expand_builtin_memset): Fix typo in my last patch.
14029         * value-prof.c (stringop_block_profile): Likewise.
14030
14031 2007-01-28  Jan Hubicka  <jh@suse.cz>
14032
14033         * expr.c (emit_block_move_via_movmem, emit_block_move_via_libcall): Add
14034         variant handling histograms; add wrapper.
14035         (clear_storage_via_libcall): Export.
14036         (emit_block_move_hints): Break out from ...; add histograms.
14037         (emit_block_move): ... this one.
14038         (clear_storage_hints): Break out from ...; add histograms.
14039         (clear_storage): ... this one.
14040         (set_storage_via_memset): Handle histogram.
14041         * expr.h (emit_block_move_via_libcall, emit_block_move_hints): Declare.
14042         (clear_storage_hints, clear_storage_via_libcall): Declare.
14043         (set_storage_via_setmem): Update prototype.
14044         * doc/md.texi (movmem, setmem): Document new arguments.
14045
14046         * value-prof.c (dump_histogram_value, tree_find_values_to_profile): Add
14047         new histograms.
14048         (stringop_block_profile): New global function.
14049         (tree_stringops_values_to_profile): Profile block size and alignment.
14050         * value-prof.h (enum hist_type): add HIST_TYPE_AVERAGE and
14051         HIST_TYPE_IOR.
14052         (struct profile_hooks): Add gen_average_profiler and gen_ior_profiler.
14053         (stringop_block_profile): Declare.
14054         * builtins.c: Include value-prof.h.
14055         (expand_builtin_memcpy, expand_builtin_memset): Pass block profile.
14056         * gcov-ui.h (GCOV_COUNTER_NAMES): Add new counter.
14057         (GCOV_COUNTER_AVERAGE, GCOV_COUNTER_IOR): New constants.
14058         (GCOV_COUNTERS, GCOV_LAST_VALUE_COUNTER): Update.
14059         * profile.c (instrument_values): Add new counters.
14060         * cfgexpand.c (expand_gimple_basic_block): Propagate histograms to
14061         calls.
14062         * tree-profile.c (tree_average_profiler_fn, tree_ior_profiler_fn): New.
14063         (tree_init_edge_profiler): Build new profilers.
14064         (tree_gen_average_profiler, tree_gen_ior_profiler): New.
14065         (pass_tree_profile): Add dump.
14066         (tree_profile_hooks): Update.
14067         * Makefile.in (LIBGCOV): Add new constants.
14068         * libgcov.c (__gcov_merge_ior, __gcov_average_profiler,
14069         __gcov_ior_profiler): New.
14070         * i386.md (movmem/setmem expanders): Add new optional arguments.
14071
14072 2007-01-28  David Edelsohn  <edelsohn@gnu.org>
14073
14074         * doc/md.texi (Standard Pattern Names): Document blockage pattern.
14075
14076 2007-01-28  Zdenek Dvorak <dvorakz@suse.cz>
14077
14078         * tree-ssa-loop-unswitch.c: Include tree-inline.h.
14079         (tree_unswitch_single_loop): Pass eni_size_weights to
14080         tree_num_loop_insns.
14081         * tree-ssa-loop-manip.c: Include tree-inline.h.
14082         (can_unroll_loop_p): Pass eni_size_weights to
14083         tree_num_loop_insns.
14084         * tree-ssa-loop-ch.c (should_duplicate_loop_header_p):
14085         Pass eni_size_weights to estimate_num_insns.
14086         * tree.h (init_inline_once): Export.
14087         * toplev.c (backend_init): Call init_inline_once.
14088         * cgraphunit.c (cgraph_process_new_functions,
14089         cgraph_analyze_function): Pass eni_inlining_weights to
14090         estimate_num_insns.
14091         * ipa-inline.c (compute_inline_parameters): Ditto.
14092         * tree-ssa-loop-ivcanon.c (tree_num_loop_insns): Pass weights
14093         to estimate_num_insns.
14094         (try_unroll_loop_completely): Pass eni_size_weights to
14095         tree_num_loop_insns.
14096         * tree-eh.c (decide_copy_try_finally): Pass eni_size_weights
14097         ot estimate_num_insns.
14098         * tree-ssa-loop-prefetch.c: Include tree-inline.h.
14099         (loop_prefetch_arrays): Pass eni_time_weights to tree_num_loop_insns.
14100         * tree-inline.c (eni_inlining_weights, eni_size_weights,
14101         eni_time_weights): New variables.
14102         (init_inline_once): Initialize them.
14103         (struct eni_data): Mew.
14104         (estimate_num_insns_1, estimate_num_insns): Use weights.
14105         * tree-inline.h (struct eni_weights_d): New.
14106         (eni_inlining_weights, eni_size_weights, eni_time_weights): Declare.
14107         (estimate_num_insns): Declaration changed.
14108         * cfgloop.h (tree_num_loop_insns): Declaration changed.
14109         * Makefile.in (tree-ssa-loop-unswitch.o, tree-ssa-loop-prefetch.o,
14110         tree-ssa-loop-manip.o): Add TREE_INLINE_H dependency.
14111
14112 2007-01-28  Zdenek Dvorak <dvorakz@suse.cz>
14113
14114         * tree-data-ref.c (conflict_fn): Assert that the number of affine
14115         relations in the conflict function is valid.
14116
14117 2007-01-27  Ian Lance Taylor  <iant@google.com>
14118
14119         * common.opt: Add fstrict-overflow.
14120         * opts.c (decode_options): Set flag_strict_overflow if -O2.
14121         * flags.h (TYPE_OVERFLOW_WRAPS): Define.
14122         (TYPE_OVERFLOW_UNDEFINED): Define.
14123         (TYPE_OVERFLOW_TRAPS): Define.  This replaces TYPE_TRAP_SIGNED.
14124         Replace all uses.
14125         * tree.h (TYPE_TRAP_SIGNED): Don't define.
14126         * fold-const.c (negate_expr_p): Use TYPE_OVERFLOW_UNDEFINED.
14127         (fold_negate_expr): Likewise.
14128         (make_range): Likewise.
14129         (extract_muldiv_1): Likewise.
14130         (maybe_canonicalize_comparison): Likewise.
14131         (fold_comparison): Likewise.
14132         (fold_binary): Likewise.
14133         (tree_expr_nonnegative_p): Likewise.
14134         (tree_expr_nonzero_p): Likewise.
14135         * tree-vrp.c (compare_values): Likewise.
14136         (extract_range_from_binary_expr): Likewise.
14137         (extract_range_from_unary_expr): Likewise.
14138         * tree-ssa-loop-niter.c (infer_loop_bounds_from_signedness):
14139         Likewise.
14140         (nowrap_type_p): Likewise.
14141         * tree-scalar-evolution.c (simple_iv): Likewise.
14142         * fold-const.c (negate_expr_p): Use TYPE_OVERFLOW_WRAPS.
14143         (build_range_check): Likewise.
14144         (extract_muldiv_1): Likewise.
14145         (fold_comparison): Likewise.
14146         * tree-vrp.c (vrp_int_const_binop): Likewise.
14147         (extract_range_from_unary_expr): Likewise.
14148         * convert.c (convert_to_integer): Likewise.
14149         * fold-const.c (fold_negate_expr): Use TYPE_OVERFLOW_TRAPS.
14150         (fold_comparison): Likewise.
14151         (fold_binary): Likewise.
14152         * optabs.c (optab_for_tree_code): Likewise.
14153         * tree-vectorizer.c (vect_is_simple_reduction): Likewise.
14154         * simplify-rtx.c (simplify_const_relational_operation): Check
14155         flag_strict_overflow and flag_trapv.
14156         (simplify_const_relational_operation): Likewise.
14157         * doc/invoke.texi (Option Summary): Mention -fstrict-overflow.
14158         (Optimize Options): Add -fstrict-overflow to -O2 list.  Document
14159         -fstrict-overflow.
14160
14161 2007-01-27  Roger Sayle  <roger@eyesopen.com>
14162
14163         * tree.c (tree_fold_gcd): Delete.
14164         * tree.h (tree_fold_gcd): Remove prototype.
14165         * tree-data-ref.c (tree_fold_divides_p): Don't use tree_fold_gcd to
14166         test whether one constant integer is a multiple of another.  Instead
14167         call int_const_binop with TRUNC_MOD_EXPR and test for a zero result.
14168         * fold-const.c (multiple_of_p):  We've determined both TOP and
14169         BOTTOM are integer constants so we can call int_const_binop directly
14170         instead of the more generic const_binop.
14171
14172 2007-01-27  Roger Sayle  <roger@eyesopen.com>
14173
14174         * fold-const.c (size_binop): In the fast-paths for X+0, 0+X, X-0 and
14175         1*X check that the constant hasn't overflowed, to preserve the
14176         TREE_OVERFLOW bit.
14177         (round_up): Provide an efficient implementation when rouding-up an
14178         INTEGER_CST to a power-of-two.
14179
14180 2007-01-28  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
14181
14182         * doc/sourcebuild.texi: Add comma for clarity.
14183         * doc/extend.texi: Fix some typos.
14184         * doc/passes.texi: Likewise.
14185         * doc/cppinternals.texi: Likewise.
14186         * doc/c-tree.texi: Likewise.
14187         * doc/tree-ssa.texi: Likewise.
14188         * doc/install.texi: Likewise.
14189
14190 2007-01-27  Jan Hubicka  <jh@suse.cz>
14191
14192         * tree-sra.c (sra_walk_function): Don't rely on aliases being build.
14193         (pass_sra): Do not require alias information.
14194         * passes.c (init_optimization_passes): Add SRA
14195
14196 2007-01-27  Steven Bosscher  <steven@gcc.gnu.org>
14197
14198         * tracer.c (rest_of_handle_tracer): We already cleaned
14199         up the CFG in tracer() so don't do it here again.
14200         * cfgcleanup.c (rest_of_handle_jump2): Don't repeat
14201         cleanup_cfg here, either.  And don't call renumber_insns.
14202
14203         * cfgrtl.c (rtl_verify_flow_info_1): Don't verify that BB_END
14204         and BB_HEAD are in the insn stream here.  Instead make sure
14205         that BB_INSN is valid on all insns.  Also, do check here that
14206         there are no pending branch predictions...
14207         (rtl_verify_flow_info): ...instead of doing it here.  Checks
14208         for BB_END and BB_HEAD moved from rtl_verify_flow_info_1 to
14209         here.
14210
14211 2007-01-26  Roger Sayle  <roger@eyesopen.com>
14212
14213         * config/i386/i386.c (ix86_swap_binary_operands_p): New helper
14214         function to simplify/factorize operand order canonicalization.
14215         (ix86_fixup_binary_operands): Reorganize using the above function.
14216         (ix86_binary_operator_ok): Likewise.
14217
14218 2007-01-27  Jakub Jelinek  <jakub@redhat.com>
14219
14220         * genattrtab.c (struct attr_value_list, insn_code_values): Move to
14221         file scope from optimize_attrs.
14222         (simplify_test_exp): If insn_code_values is not NULL, use it to speed
14223         up search.
14224         (optimize_attrs): Clear insn_code_values after freeing it.
14225
14226 2007-01-26  Zdenek Dvorak <dvorakz@suse.cz>
14227
14228         * tree-ssa-address.c (create_mem_ref): Remove ", bsi" from
14229         a parts.base assignment.
14230
14231 2007-01-26  Zdenek Dvorak <dvorakz@suse.cz>
14232
14233         * tree-data-ref.c (dump_subscript): Use dump_conflict_function.
14234         (compute_subscript_distance, initialize_data_dependence_relation,
14235         finalize_ddr_dependent, analyze_ziv_subscript,
14236         analyze_siv_subscript_cst_affine,
14237         compute_overlap_steps_for_affine_univar,
14238         compute_overlap_steps_for_affine_1_2, analyze_subscript_affine_affine,
14239         analyze_siv_subscript, analyze_miv_subscript,
14240         analyze_overlapping_iterations, subscript_dependence_tester_1,
14241         compute_self_dependence, free_dependence_relation): Work
14242         with affine_fn instead of chrecs.
14243         (dump_affine_function, dump_conflict_function, affine_function_equal_p,
14244         common_affine_function, affine_function_base,
14245         affine_function_constant_p, affine_fn_op, affine_fn_plus,
14246         affine_fn_minus, affine_fn_free, conflict_fn_not_known,
14247         conflict_fn_no_dependence, free_conflict_function, free_subscripts,
14248         conflict_fn, affine_fn_cst, affine_fn_univar): New functions.
14249         (all_chrecs_equal_p): Removed.
14250         * tree-data-ref.h (affine_fn, conflict_function): New types.
14251         (struct subscript): Change type of conflicting_iterations_in_a
14252         and conflicting_iterations_in_b.
14253
14254 2007-01-26  Steve Ellcey  <sje@cup.hp.com>
14255
14256         PR other/30182
14257         * config/pa/pa.h (TARGET_HPUX_11): New.
14258         * config/pa/pa-hpux11.h (TARGET_HPUX_11): New.
14259         * config/pa/pa.c (pa_init_builtins): Use TARGET_HPUX_11.
14260
14261 2007-01-26  Daniel Berlin  <dberlin@dberlin.org>
14262         Richard Guenther  <rguenther@suse.de>
14263
14264         * tree-ssa-structalias.c (solve_graph): Handle case
14265         we merged the variable to another.
14266
14267 2007-01-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
14268
14269         * builtins.c (fold_builtin_1): Treat ccos and ccosh as 'even'
14270         functions.
14271
14272         * fold-const.c (negate_mathfn_p): Treat casin, casinh, catan,
14273         catanh, cproj, csin, csinh, ctan and ctanh as 'odd' functions.
14274
14275 2007-01-25  DJ Delorie  <dj@redhat.com>
14276
14277         * config/m32c/m32c.c (m32c_cannot_change_mode_class): We don't
14278         allow changes to modes which don't fit in those registers.
14279
14280         * reload1.c (choose_reload_regs): Check for invalid subregs before
14281         computing their locations, not after.
14282
14283 2007-01-25  Geoffrey Keating  <geoffk@apple.com>
14284
14285         PR 25127
14286         * config/rs6000/rs6000.c (first_altivec_reg_to_save): On Darwin,
14287         save Altivec registers in an eh_return function.
14288         (compute_vrsave_mask): Likewise.
14289         (rs6000_stack_info): Correct AIX/Darwin stack alignment computation
14290         for saving Altivec registers.
14291         (rs6000_emit_prologue): Don't allocate stack twice in
14292         eh_return function.  Correct expected value of altivec_save_offset
14293         when using save_world.  Describe save of R0 to stack when using
14294         save_world.  Describe stack pointer adjustment when using
14295         save_world.  Remove duplicated eh_return parameter register saving.
14296         Update sp_offset variable after save_world.
14297         * config/rs6000/t-darwin (LIB2FUNCS_STATIC_EXTRA): Remove
14298         darwin-world.asm.
14299         (LIB2FUNCS_EXTRA): Add darwin-world.asm.
14300         * config/rs6000/darwin.h (SUBTARGET_OVERRIDE_OPTIONS): -m64
14301         implies Altivec.
14302
14303 2007-01-25  Steve Ellcey  <sje@cup.hp.com>
14304
14305         * config.gcc (ia64*-*-hpux*): Make posix threads the default.
14306
14307 2007-01-25  Steve Ellcey  <sje@cup.hp.com>
14308
14309         PR other/30182
14310         * config/pa/pa.c (pa_init_builtins): Set asm names for finite routines.
14311         * config/ia64/ia64.c (ia64_init_builtins):  Ditto.
14312
14313 2007-01-25  Richard Guenther  <rguenther@suse.de>
14314
14315         * doc/invoke.texi (-Wcoverage-mismatch): Document.
14316         * common.opt (-Wcoverage-mismatch): New warning option.
14317         * coverage.c (get_coverage_counts): Ignore coverage mismatch
14318         if -Wcoverage-mismatch is given.
14319
14320 2007-01-25  Razya Ladelsky  <razya@il.ibm.com>
14321
14322         * ipa-cp.c (ipcp_insert_stage, ipcp_driver): Support for SSA.
14323         (ipcp_driver): Change to static definition.
14324         Add dumping of the ifunctions.
14325         (constant_val_insert): Remove unused parameter. Support for SSA.
14326         (ipcp_propagate_const): Support for SSA.
14327         (ipcp_profile_bb_print): Print only analyzed nodes.
14328         (ipcp_replace_map_create): Remove support for Fortran constant
14329         for now.
14330         * ipa-prop.c (ipa_method_modify_stmt,
14331         ipa_callsite_compute_param): Support for SSA.
14332         * ipa-prop.h (ipcp_driver): Remove declaration.
14333         (IS_VALID_TREE_MAP_INDEX): Add define.
14334
14335 2007-01-24  Geoffrey Keating  <geoffk@apple.com>
14336
14337         * unwind-dw2.c (execute_stack_op): Handle DW_OP_swap.
14338
14339 2007-01-24  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
14340
14341         PR middle-end/30447
14342         * builtins.c (fold_builtin_cabs): Use MPFR to evaluate a
14343         constant argument to cabs and do it without checking for
14344         -funsafe-math-optimizations.
14345
14346 2007-01-24  Douglas Gregor  <dgregor@osl.iu.edu>
14347
14348         * c-common.h (RID_FIRST_CXX0X): New.
14349         (RID_LAST_CXX0X): New.
14350         * c-opts.c (c_common_handle_option): -Wc++0x-compat is triggered
14351         by -Wall.
14352         * c.opt (Wc++0x-compat): New.
14353         * doc/invoke.texi (-Wc++0x-compat): Document.
14354
14355 2007-01-24  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
14356
14357         * builtins.c (fold_builtin_carg): New.
14358         (fold_builtin_1): Use it.
14359
14360 2007-01-24  Jan Hubicka  <jh@suse.cz>
14361
14362         * ipa-inline.c (cgraph_decide_inlining): Initialize initial_insns.
14363
14364         * ipa-inline.c (initial_insns, max_insns): Delete.
14365         (compute_max_insns): New function.
14366         (cgraph_decide_inlining_of_small_function): Use it; take minimal amount
14367         of insns as base for code growth.
14368         (cgraph_decide_inlining): Make initial_insns local; do not compute
14369         max_insns.
14370         * params.def (PARAM_INLINE_UNIT_GROWTH): Set to 60.
14371         * doc/invoke.texi (inline-unit-growth): Update docs.
14372
14373 2007-01-24  Jakub Jelinek  <jakub@redhat.com>
14374
14375         * config/i386/i386.h (x86_cmpxchg16b): Remove const.
14376         (TARGET_CMPXCHG16B): Define to x86_cmpxchg16b.
14377         * config/i386/i386.c (x86_cmpxchg16b): Remove const.
14378         (override_options): Add PTA_CX16 flag.  Set x86_cmpxchg16b
14379         for CPUs that have PTA_CX16 set.
14380
14381         PR middle-end/27416
14382         * gimplify.c (omp_check_private): New function.
14383         (gimplify_scan_omp_clauses): Use it for
14384         firstprivate/lastprivate/reduction.
14385
14386         PR middle-end/30494
14387         * gimplify.c (omp_add_variable): Don't call omp_notice_variable
14388         on TYPE_SIZE_UNIT for GOVD_LOCAL VLAs.
14389
14390         PR middle-end/30421
14391         * omp-low.c (lower_omp_for_lastprivate): Add dlist argument.
14392         If lower_lastprivate_clauses emits some statements, append them
14393         to dlist rather than body_p and to body_p append an initializer.
14394         (lower_omp_for): Adjust caller.
14395
14396 2007-01-24  Steve Ellcey  <sje@cup.hp.com>
14397
14398         * target.h (globalize_decl_name): New.
14399         * target-def.h (TARGET_ASM_GLOBALIZE_DECL_NAME): New.
14400         * output.h (default_globalize_decl_name): New.
14401         * varasm.c (asm_output_bss): Use globalize_decl_name instead of
14402         globalize_label.
14403         (globalize_decl): Ditto.
14404         (default_globalize_decl_name): New.
14405         * config/ia64/ia64.c (ia64_globalize_decl_name): New.
14406         (ia64_handle_version_id_attribute): New.
14407         (TARGET_ASM_GLOBALIZE_DECL_NAME): New.
14408         (ia64_asm_output_external): Use globalize_decl_name instead
14409         of globalize_label.
14410         * doc/extend.texi (version_id): New pragma.
14411         * doc/tm.texi (ARGET_ASM_GLOBALIZE_DECL_NAME): New target hook.
14412
14413 2007-01-24  Andreas Krebbel  <krebbel1@de.ibm.com>
14414
14415         * unwind-dw2-fde.c (get_cie_encoding): Replaced _Unwind_Word with
14416         _uleb128_t and _Unwind_SWord with _sleb128_t.
14417         * unwind-dw2.c (extract_cie_info, execute_stack_op, execute_cfa_program,
14418         uw_frame_state_for, uw_update_context_1): Likewise.
14419         * unwind-c.c (parse_lsda_header, PERSONALITY_FUNCTION): Likewise.
14420         * unwind-pe.h (read_uleb128, read_sleb128,
14421         read_encoded_value_with_base): Likewise.
14422         * unwind-generic.h: Define _sleb128_t and _uleb128_t types.
14423
14424 2007-01-24  Richard Guenther  <rguenther@suse.de>
14425
14426         * builtins.c (expand_builtin_cexpi): Get the fndecl
14427         for cexp in the correct way.
14428
14429 2007-01-24  Jan Hubicka  <jh@suse.cz>
14430
14431         * tree-ssa-dce.c (eliminate_unnecesary_stmts): Remove dead LHS of calls.
14432
14433 2007-01-24  Andreas Krebbel  <krebbel1@de.ibm.com>
14434
14435         * c-cppbuiltin.c (builtin_define_type_sizeof): New function.
14436         (c_cpp_builtins): New builtin macros: __SIZEOF_INT__, __SIZEOF_LONG__,
14437         __SIZEOF_LONG_LONG__, __SIZEOF_SHORT__, __SIZEOF_POINTER__,
14438         __SIZEOF_FLOAT__, __SIZEOF_DOUBLE__, __SIZEOF_LONG_DOUBLE__,
14439         __SIZEOF_SIZE_T__, __SIZEOF_WCHAR_T__, __SIZEOF_WINT_T__ and
14440         __SIZEOF_PTRDIFF_T__.
14441         * doc/cpp.texi: Documentation for the new builtin macros added.
14442
14443 2007-01-24  Uros Bizjak  <ubizjak@gmail.com>
14444
14445         * config/i386/i386.md (tanxf2, tan<mode>2, atan<mode>2, log<mode>2,
14446         log10<mode>2, log2<mode>2, expxf2, exp10xf2, exp2xf2): Use op2
14447         instead of operands[2] to avoid access past the end of array.
14448
14449 2007-01-24  Richard Sandiford  <richard@codesourcery.com>
14450
14451         * reload1.c (emit_reload_insns): Pass the reload register
14452         for a non-spill output reload through forget_old_reloads_1.
14453
14454 2007-01-23  Joseph Myers  <joseph@codesourcery.com>
14455
14456         * config/rs6000/rs6000-c.c (rs6000_cpu_cpp_builtins): Define
14457         _SOFT_DOUBLE if doubles use software floating-point.
14458         * config/rs6000/libgcc-ppc-glibc.ver: Export additional long
14459         double functions if _SOFT_DOUBLE, not _SOFT_FLOAT.
14460         * config/rs6000/darwin-ldouble.c: Also compile functions for
14461         hard-float without FPRs.  Use fmsub function for all __NO_FPRS__
14462         cases.  Compile extra functions if _SOFT_DOUBLE, not _SOFT_FLOAT.
14463         * config/rs6000/linuxspe.h (SUBSUBTARGET_OVERRIDE_OPTIONS): Remove
14464         commented-out long double override.
14465         (CPP_LONGDOUBLE_DEFAULT_SPEC): Likewise.
14466         * config/rs6000/eabispe.h: Likewise.
14467         * config/rs6000/rs6000.c (rs6000_override_options): Don't override
14468         long double for non-SPE.
14469         (rs6000_handle_option): Likewise.
14470         (invalid_e500_subreg): Disallow more subregs involding DImode,
14471         DFmode, TImode or TFmode.
14472         (rs6000_legitimate_offset_address_p): Check TFmode offsets for
14473         E500 double.
14474         (legitimate_lo_sum_address_p): Also check for TFmode for E500
14475         double.
14476         (rs6000_legitimize_address): Also handle TFmode for E500 double.
14477         (rs6000_legitimize_reload_address): Also handle TFmode for E500
14478         double.
14479         (rs6000_legitimate_address): Also check for TFmode for E500
14480         double.
14481         (rs6000_emit_move): Use DFmode subregs of TFmode for E500 double.
14482         (spe_build_register_parallel): Handle TFmode and TCmode.
14483         (rs6000_spe_function_arg): Handle TFmode and TCmode for E500
14484         double.
14485         (function_arg): Handle TFmode and TCmode for E500 double.
14486         (rs6000_init_libfuncs): Initialize extra libfuncs for soft double
14487         in general.
14488         (print_operand): Handle TFmode and TImode for %y.
14489         (rs6000_generate_compare): Handle TFmode comparisons for E500
14490         double.
14491         (spe_func_has_64bit_regs_p): Check for TFmode for E500 double.
14492         (rs6000_function_value): Handle TFmode and TCmode for E500 double.
14493         (rs6000_libcall_value): Handle TFmode and TCmode for E500 double.
14494         * config/rs6000/rs6000.h (CANNOT_CHANGE_MODE_CLASS): Check for
14495         TFmode for E500 double.
14496         * config/rs6000/rs6000.md (FP): Allow TF for E500 double.
14497         (floatsidf2): Enable for E500 double.
14498         (movtf_softfloat): Use rs6000_nonimmediate_operand.
14499         (extenddftf2): Change to extenddftf2_fprs.
14500         (extenddftf2): Call gen_spe_extenddftf2 or gen_extenddftf2_fprs
14501         depending on TARGET_E500_DOUBLE.
14502         (extendsftf2): Enable for E500 double.
14503         (trunctfdf2): Enable for E500 double.
14504         (trunctfsf2): Change to trunctfsf2_fprs.
14505         (trunctfsf2): Call gen_spe_trunctfsf2 or gen_trunctfsf2_fprs
14506         depending on TARGET_E500_DOUBLE.
14507         (floatsitf2): Enable for E500 double.
14508         (fix_trunctfsi2): Change to fix_trunctfsi2_fprs.
14509         (fix_trunctfsi2): Call gen_spe_fix_trunctfsi2 or
14510         gen_fix_trunctfsi2_fprs depending on TARGET_E500_DOUBLE.
14511         (negtf2): Change to negtf2_internal.
14512         (negtf2): New expander.
14513         (abstf2): Enable for E500 double.  Call gen_spe_abstf2_tst,
14514         gen_spe_abstf2_cmp or gen_abstf2_internal depending on
14515         TARGET_E500_DOUBLE and flag_unsafe_math_optimizations.
14516         (movdi_internal32): Use rs6000_nonimmediate_operand.
14517         (unnamed splitter): Likewise.
14518         * config/rs6000/spe.md (CMPTFEQ_GPR, TSTTFEQ_GPR, CMPTFGT_GPR,
14519         TSTTFGT_GPR, CMPTFLT_GPR, TSTTFLT_GPR): New unspecs.
14520         (SPE64TF, DITI): New mode macros.
14521         (frob_df_di): Change to frob_<SPE64:mode>_<DITI:mode>; allow more
14522         modes.
14523         (frob_tf_ti): New.
14524         (frob_<mode>_di_2): New.
14525         (frob_tf_di_8_2): New.
14526         (frob_di_df): Change to frob_di_<mode>; allow more modes.
14527         (frob_ti_tf): New.
14528         (frob_di_df_2): Change to frob_<DITI:mode>_<SPE64:mode>_2; allow
14529         more modes.
14530         (frob_ti_<mode>_8_2): New.
14531         (frob_ti_tf_2): New.
14532         (mov_si<mode>_e500_subreg0, mov_si<mode>_e500_subreg0_2,
14533         mov_si<mode>_e500_subreg4, mov_si<mode>_e500_subreg4_2): Allow
14534         TFmode.
14535         (mov_sitf_e500_subreg8, mov_sitf_e500_subreg8_2,
14536         mov_sitf_e500_subreg12, mov_sitf_e500_subreg12_2): New.
14537         (spe_trunctfdf2_internal1, spe_trunctfsf2, spe_extenddftf2,
14538         spe_fix_trunctfsi2, spe_fix_trunctfsi2_internal,
14539         spe_negtf2_internal, spe_abstf2_cmp, spe_abstf2_tst): New.
14540         (cmptfeq_gpr, tsttfeq_gpr, cmptfgt_gpr, tsttfgt_gpr, cmptflt_gpr,
14541         tsttflt_gp): New.
14542
14543 2007-01-23  Ian Lance Taylor  <iant@google.com>
14544
14545         * Makefile.in (OBJS-common): Reformat, alphabetize, but put
14546         insn-*.o first.
14547         (OBJS-archive): Reformat, alphabetize.
14548         (OBJS): Change out_object_file to OBJS-md.
14549
14550 2007-01-23  Uros Bizjak  <ubizjak@gmail.com>
14551
14552         * config/i386/i386.md: Use REG_P, MEM_P, CONST_INT_P, LABEL_P,
14553         JUMP_P and CALL_P predicates where applicable.
14554         * config/i386/i386.c: Ditto.
14555         * config/i386/i386.md: Ditto.
14556         * config/i386/mmx.md: Ditto.
14557         * config/i386/predicates.md: Ditto.
14558
14559 2007-01-22  Andreas Schwab  <schwab@suse.de>
14560
14561         * config/m68k/m68k.h: Fix comment.
14562
14563 2007-01-22  Jan Hubicka  <jh@suse.cz>
14564
14565         * passes.c (init_optimization_passes): Do not rerun
14566         pass_early_warn_uninitialized.
14567
14568 2007-01-22  Richard Guenther  <rguenther@suse.de>
14569
14570         PR tree-optimization/30038
14571         * tree-ssa-math-opts.c (maybe_record_sincos): New static helper
14572         function.
14573         (execute_cse_sincos_1): Likewise.
14574         (execute_cse_sincos): Likewise.
14575         (gate_cse_sincos): Likewise.
14576         (pass_cse_sincos): New pass CSEing sin() and cos() calls using
14577         the cexpi() canonicalization of sincos().
14578         * tree-pass.h (pass_cse_sincos): Declare.
14579         * passes.c (init_optimization_passes): New pass pas_cse_sincos.
14580
14581 2007-01-21  Eric Botcazou  <ebotcazou@libertysurf.fr>
14582
14583         PR rtl-optimization/29329
14584         * combine.c (replaced_rhs_insn): Rename to i2mod.
14585         (replaced_rhs_value): Rename to i2mod_new_rhs.
14586         (i2mod_old_rhs): New global variable.
14587         (combine_instructions): Adjust for above change.  Save a copy of
14588         the old RHS into i2mod_old_rhs when the contents of a REG_EQUAL
14589         note are substituted in the second instruction.
14590         (distribute_notes) <REG_DEAD>: Adjust for above change.  Do not
14591         ditch the note if it pertains to the second eliminated register
14592         and this register is mentioned in i2mod_old_rhs.
14593
14594         Revert:
14595         2006-09-12  Eric Botcazou  <ebotcazou@libertysurf.fr>
14596
14597         * combine.c (distribute_notes) <REG_DEAD>: Do not consider SETs past
14598         the insn to which the note was originally attached.
14599
14600 2007-01-21  Jan Hubicka  <jh@suse.cz>
14601
14602         * ipa-inline.c (inlining_mode): Comment, move up.
14603         (cgraph_decide_inlining_incrementally): Do not perform inlining
14604         itself; fix handling of flattening of self recursive functions.
14605         (cgraph_find_cycles): Remove.
14606         (cgraph_flatten_node): Remove.
14607         (cgraph_decide_inlining): Use incremental inliner to handle flattening.
14608         (try_inline): New function.
14609         (cgraph_early_inlining): Update call of
14610         cgraph_decide_inlining_incrementally.  Apply inlining here.
14611         (apply_inline): Update call of cgraph_decide_inlining_incrementally.
14612
14613 2007-01-21  Dirk Mueller  <dmueller@suse.de>
14614
14615         PR bootstrap/30511
14616         * tree-vrp.c (check_array_bounds): do not warn
14617         about ADDR_EXPR's of ARRAY_REF's which are immediately
14618         used in binary expressions.
14619
14620 2007-01-21  Ira Rosen  <irar@il.ibm.com>
14621
14622         * tree-vectorizer.h (struct _stmt_vec_info): Add new field
14623         read_write_dep and macros for its access.
14624         * tree-vectorizer.c (new_stmt_vec_info): Initialize the new field.
14625         * tree-vect-analyze.c (vect_analyze_data_ref_dependence): Remove
14626         argument, call vect_check_interleaving for every independent pair of
14627         data-refs. Mark loads that access the same memory location as a store
14628         in the loop.
14629         (vect_check_dependences): Remove.
14630         (vect_analyze_data_ref_dependences): Remove  vect_check_dependences
14631         call, fix the call to vect_analyze_data_ref_dependence.
14632         (vect_analyze_data_ref_access): For statements that access the same
14633         data-ref, check that they are not stores; for loads, check that there
14634         is no store that access the same location.
14635
14636 2007-01-20  Roger Sayle  <roger@eyesopen.com>
14637             Joseph Myers  <joseph@codesourcery.com>
14638
14639         * doc/invoke.texi (-fdump-rtl-combine): Fix under/overfull hbox.
14640         (-fdump-rtl-stack): Likewise.
14641         (-fno-signed-zeros): Use @minus{} for a minus sign.  Correct typo.
14642         (-mcheck-zero-division, -mcpu): Fix under/overfull hbox.
14643         (-mpt-fixed): Use @minus{} for minus sign.
14644         (Using Precompiled Headers): Fix under/overfull hbox.
14645
14646 2007-01-20  Jan Hubicka  <jh@suse.cz>
14647
14648         * tree-flow.h (struct stmt_ann_d): Move references_memory to proper
14649         place within annotation.
14650
14651 2007-01-20  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
14652
14653         * pa.c (output_move_double): Change array size of xoperands to 4.
14654
14655 2007-01-20  Jan Hubicka  <jh@suse.cz>
14656
14657         * tree-tailcall.c (adjust_return_value): Do not use RESULT_DECL
14658         as temporary.
14659
14660 2007-01-19  Ian Lance Taylor  <iant@google.com>
14661
14662         * expmed.c (expand_divmod) [TRUNC_MOD_EXPR, TRUNC_DIV_EXPR]: Cast
14663         constant to unsigned HOST_WIDE_INT before negating.
14664
14665 2007-01-19  Ian Lance Taylor  <iant@google.com>
14666
14667         * tree-ssa-operands.h (struct vuse_vec_d): Change num_vuse field
14668         to unsigned.
14669         (VUSE_VECT_ELEMENT) [ENABLE_CHECKING]: Use unsigned comparison.
14670         (VUSE_ELEMENT_PTR) [ENABLE_CHECKING]: Likewise.
14671         (SET_VUSE_VECT_ELEMENT) [ENABLE_CHECKING]: Likewise.
14672         (SET_VUSE_ELEMENT_VAR) [ENABLE_CHECKING]: Likewise.
14673         (SET_VUSE_ELEMENT_PTR) [ENABLE_CHECKING]: Likewise.
14674         (realloc_vdef, realloc_vuse): Change second parameter to
14675         unsigned.
14676         (ssa_operand_iterator_d): Change vuse_index and mayuse_index
14677         fields to unsigned.
14678         * tree-ssa-operands.c (realloc_vop): Change num_elem parameter to
14679         unsigned. Change x and lim locals to unsigned.
14680         (realloc_vdef, realloc_vuse): Change num_elem parameter to
14681         unsigned.
14682         (finalize_ssa_vuse_ops): Change old_i local to unsigned.
14683         (copy_virtual_operands): Change i and n locals to unsigned.
14684
14685 2007-01-19  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
14686
14687         PR middle-end/29335
14688         * builtins.c (fold_builtin_1): Handle builtin fdim.
14689
14690 2007-01-20  Jan Hubicka  <jh@suse.cz>
14691
14692         * tree-ssa.c (init_tree_ssa): Do not call init_alias_heapvars.
14693         * tree-ssa-structalias.c (compute_points_to_sets): Do call
14694         init_alias_heapvars.
14695         (init_alias_heapvars): Initialize only when not already initialized.
14696         (delete_alias_heapvars): Set heapvar_for_stmt to NULL.
14697
14698 2007-01-19  Roger Sayle  <roger@eyesopen.com>
14699
14700         * common.opt (fsigned-zeros): New command line option.
14701         * flags.h (HONOR_SIGNED_ZEROS): Control via flag_signed_zeros instead
14702         of flag_unsafe_math_optimizations.
14703         * opts.c (set_fast_math_flags): The -ffast-math command line option
14704         implies -fno-signed-zeros.
14705         (fast_math_flags_set_p): Likewise.
14706
14707         * doc/invoke.texi: Document new -fno-signed-zeros option, and update
14708         the documentation of -ffast-math appropriately.  Wrap long lines.
14709
14710 2007-01-19  Steve Ellcey  <sje@cup.hp.com>
14711
14712         * system.h (ASM_MAKE_LABEL_LINKONCE): Poison.
14713         * varasm.c (globalize_decl): Remove ASM_MAKE_LABEL_LINKONCE ifdef.
14714
14715 2007-01-19  Tomas Bily  <tbily@suse.cz>
14716
14717         * cgraphunit.c (cgraph_finalize_function): Updating of pid
14718         * tree-profile.c:
14719         (tree_init_ic_make_global_vars): New function
14720         (tree_init_edge_profiler): call of tree_init_ic_make_global_vars
14721         (tree_gen_ic_profiler): New function
14722         (tree_gen_ic_func_profiler): New function
14723         (tree_profiling): Added calling of tree_gen_ic_func_profiler
14724         (tree_profile_hooks): Added hook for indirec/virtual calls
14725         * value-prof.c (tree_find_values_to_profile): New case for
14726         indirect calls
14727         (tree_values_to_profile): Call for determining indirect/virtual
14728         counters
14729         (tree_indirect_call_to_profile): New function
14730         (tree_ic_transform): New function
14731         (tree_ic): New function
14732         (find_func_by_pid): New function
14733         (init_pid_map): New function
14734         (tree_value_profile_transformations): Added check for
14735         indirect/virtual call transformation
14736         * value-prof.h (enum hist_type): New counter type for
14737         indirect/virtual calls
14738         (profile_hooks): Added new hook for profiling indirect/virtual
14739         calls
14740         * profile.c (instrument_values): New case for indirect/virtual
14741         call added
14742         * gcov-io.h (GCOV_LAST_VALUE_COUNTER): Changed to 6
14743         (GCOV_COUNTER_V_INDIR): New counter type
14744         (GCOV_COUNTER_NAMES): New name of counter "indirect" added
14745         (GCOV_MERGE_FUNCTIONS): New merge function for indirect/virtual
14746         call added
14747         * cgraph.c: Definition of cgraph_max_pid
14748         (cgraph_create_node): Default init of pid attribute
14749         * cgraph.h: Declaration of cgraph_max_pid
14750         (struct cgraph_node): Added pid attribute
14751         * libgcov.c (__gcov_indirect_call_profiler): New function
14752         (__gcov_one_value_profiler_body): New function
14753         (__gcov_one_value_profiler): Body was moved to
14754         __gcov_one_value_profiler_body and calls it
14755
14756 2007-01-19  Basile Starynkevitch  <basile@starynkevitch.net>
14757
14758         * doc/gty.texi (Options): Document the mark_hook option to GTY.
14759         * gengtype.c (write_types_data, write_func_for_structure,
14760         write_types, ggc_wtd, pch_wtd): Add skip_hooks to
14761         write_types_data, ggc_wtd, pch_wtd for processing mark_hook.
14762         (walk_type, write_func_for_structure): Generate the mark_hook if
14763         needed.
14764
14765 2007-01-19  Jan Hubicka  <jh@suse.cz>
14766
14767         * ipa-inline.c (cgraph_decide_inlining_incrementally): Instead of
14768         'early' argument take inlining mode argument specifying whether to
14769         inline for size/speeed or all functions; add support for flattening;
14770         improve dumpting.
14771         (cgraph_early_inlining): Update call of decide_inlining_incrementally.
14772
14773 2007-01-19  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
14774
14775         PR c++/17947
14776         * toplev.c (warn_deprecated_use): Use %qD instead of %qs to print
14777         the name of the declared identifier.
14778
14779 2007-01-19  Dirk Mueller  <dmueller@suse.de>
14780
14781         * config/i386.h (CONDITIONAL_REGISTER_USAGE): Store
14782         result of PIC_OFFSET_TABLE_REGNUM in temporary variable to avoid
14783         duplicate evaluation.
14784
14785 2007-01-19  Uros Bizjak  <ubizjak@gmail.com>
14786
14787         * config/i386/i386.md (acos<mode>2): Rename from acossf2 and acosdf2.
14788         Macroize expander using X87MODEF12 mode macro.  Extend operand 1
14789         to XFMode, use acosxf2 and truncate result to requested mode.
14790         Use SSE_FLOAT_MODE_P to disable patterns for SSE math.
14791         (asin<mode>2): Similarly, with asin expanders.
14792         (*fscalexf4_i387): Rename from *fscalexf4.
14793         (expNcorexf3): New expander.
14794         (expxf2, exp10xf2, exp2xf2): Use expNcorexf3 expander.
14795         (exp<mode>2): Rename from expsf2 and expdf2. Macroize expander using
14796         X87MODEF12 mode macro.  Extend operand 1 to XFMode, use expxf2 and
14797         truncate result to requested mode. Use SSE_FLOAT_MODE_P to disable
14798         patterns for SSE math.
14799         (exp10<mode>2): Similarly, with exp10 expanders.
14800         (exp2<mode>2): Similarly, with exp2 expanders.
14801         (expm1<mode>2): Similarly, with expm1 expanders.
14802         (ldexp<mode>3): Similarly, with ldexp expanders.
14803         (log<mode>2, log10<mode>2, log2<mode>2, log1p<mode>2, logb<mode>2):
14804         Use gen_truncxf<mode>2_i387_noop to truncate result.
14805
14806 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
14807
14808         * config/m68k/m68k.h (PREFERRED_STACK_BOUNDARY): Define to 32
14809         for ColdFire targets.
14810
14811 2007-01-19  Nathan Sidwell  <nathan@codesourcery.com>
14812             Richard Sandiford  <richard@codesourcery.com>
14813
14814         * config/m68k/m68k.h (M68K_STATIC_CHAIN_REG_NAME): New macro.
14815         (INITIALIZE_TRAMPOLINE): Use STATIC_CHAIN_REGNUM.
14816         (__transfer_from_trampoline): Use M68K_STATIC_CHAIN_REG_NAME.
14817         * config/m68k/m68kelf.h (STATIC_CHAIN_REGNUM): Override.
14818         (M68K_STATIC_CHAIN_REG_NAME): Likewise.
14819         * config/m68k/netbsd-elf.h (M68K_STATIC_CHAIN_REG_NAME): Likewise.
14820
14821 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
14822
14823         * config/m68k/m68k.md (adddi_dilshr32): Rename to...
14824         (*adddi_dilshr32): ...this.  Fix formatting.  Remove commented-out
14825         non-canonical pattern.  Restrict to !TARGET_COLDFIRE.
14826         (*adddi_dilshr32_cf): New pattern.
14827         (adddi3, subdi3): Remove first alternatives.
14828
14829 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
14830
14831         * config/m68k/m68k.c (notice_update_cc): If an SFmode move is
14832         implemented using move.l, do not use its cc result for floating-point
14833         comparisons.
14834
14835 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
14836
14837         * config/m68k/m68k.h (EXTRA_CONSTRAINT): Stop the 'T' constraint
14838         from accepting 's' constraints if flag_pic.
14839
14840 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
14841
14842         * config/m68k/m68k.md (bordered, bunordered, buneq, bunge, bungt)
14843         (bunle, bunlt, bltgt, bordered_rev, bunordered_rev, buneq_rev)
14844         (bunge_rev, bungt_rev, bunle_rev, bunlt_rev, bltgt_rev): Change
14845         condition from TARGET_68881 to TARGET_HARD_FLOAT.
14846
14847 2007-01-19  Sandra Loosemore  <sandra@codesourcery.com>
14848
14849         * longlong.h (count_leading_zeros, COUNT_LEADING_ZEROS_0): Add
14850         ColdFire alternatives.
14851         * config/m68k/m68k.h (CLZ_DEFINED_VALUE_AT_ZERO): New macro.
14852         * config/m68k/m68k.md (clzsi2):  Define for ColdFire
14853         architectures that support ff1 instruction.
14854
14855 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
14856             Julian Brown  <julian@codesourcery.com>
14857
14858         * config/m68k/m68k.h (CONST_OK_FOR_LETTER_P): Add an 'R' case.
14859         * config/m68k/m68k.md (*movsi_cfv4): Fold into...
14860         (*movsi_cf): ...here.  Remove unnecessary 'R' from 'Rg'.
14861         Add commentary.
14862
14863 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
14864
14865         * config/m68k/m68k-protos.h (valid_mov3q_const): Take a HOST_WIDE_INT
14866         and return a bool.
14867         (output_move_const_into_data_reg, output_move_simode_const): Delete.
14868         * config/m68k/m68k.c (const_method, const_int_cost): Take a
14869         HOST_WIDE_INT instead of an rtx.
14870         (m68k_rtx_costs): Update call accordingly.
14871         (output_move_const_into_data_reg): Likewise.  Fix formatting.
14872         (valid_mov3q_const): Take a HOST_WIDE_INT instead of an rtx.
14873         Return a bool.
14874         (output_move_simode_const): Update calls after above changes.
14875         Rework to use automatic variables and predicates like MEM_P.
14876         * config/m68k/m68k.md (pushexthisi_const): Update call to
14877         valid_mov3q_const.
14878
14879 2007-01-19  Dirk Mueller  <dmueller@suse.de>
14880
14881         * tree-ssa-alias.c (perform_var_substitution): Fix typo
14882         in dump_flags test.
14883
14884 2007-01-19  Richard Guenther  <rguenther@suse.de>
14885
14886         * builtins.c (expand_builtin_cexpi): Fall back to expanding
14887         via cexp in case sincos is not available.
14888
14889 2007-01-19  Richard Guenther  <rguenther@suse.de>
14890
14891         * doc/tm.texi (TARGET_HAS_SINCOS): Document new target macro.
14892         * defaults.h (TARGET_HAS_SINCOS): Default to off.
14893         * config/linux.h (TARGET_HAS_SINCOS): Set to on if we have glibc.
14894         * config/alpha/linux.h (TARGET_HAS_SINCOS): Likewise.
14895         * config/sparc/linux.h (TARGET_HAS_SINCOS): Likewise.
14896         * config/sparc/linux64.h (TARGET_HAS_SINCOS): Likewise.
14897         * config/rs6000/linux.h (TARGET_HAS_SINCOS): Likewise.
14898         * config/rs6000/linux64.h (TARGET_HAS_SINCOS): Likewise.
14899
14900 2007-01-19  Uros Bizjak  <ubizjak@gmail.com>
14901
14902         * config/i386/i386.md (*fpatanxf3_i387, fpatan_extend<mode>xf3_i387):
14903         New insn patterns.
14904         (atan2sf3_1, atan2df3_1, atan2xf3_1): Remove insn patterns.
14905         (atan2xf3): Directly generate RTL pattern.
14906         (atan2<mode>3): Rename from atan2sf3 and atan2df3 and macroize insn
14907         patterns using X87MODEF12 mode macro.  Use fpatan_extend<mode>xf3_i387
14908         and truncate result to requested mode.  Use SSE_FLOAT_MODE_P to
14909         disable patterns for SSE math.
14910         (atan<mode>2): Rename from atansf2 and atandf2 and macroize insn
14911         patterns using X87MODEF12 mode macro.  Use fpatan_extend<mode>xf3_i387
14912         and truncate result to requested mode.  Use SSE_FLOAT_MODE_P to
14913         disable patterns for SSE math.
14914
14915 2007-01-19  Alexandre Oliva  <aoliva@redhat.com>
14916
14917         * libgcc-std.ver: Fix typo in %inherit for GCC_4.3.0.
14918
14919 2007-01-18  Roger Sayle  <roger@eyesopen.com>
14920
14921         * fold-const.c (fold_unary) <VIEW_CONVERT_EXPR>: Optimize away a
14922         VIEW_CONVERT_EXPR to the same type as it's operand.
14923
14924 2007-01-18  David Edelsohn  <edelsohn@gnu.org>
14925
14926         * config/rs6000/darwin-ldouble.c: Only build _SOFT_FLOAT if
14927         configured for long double 128.
14928
14929 2007-01-18  Mike Stump  <mrs@apple.com>
14930
14931         * config/rs6000/rs6000.c (rs6000_emit_vector_compare): Fix build
14932         error.
14933
14934 2007-01-18  Michael Meissner  <michael.meissner@amd.com>
14935
14936         * i386.c (ix86_compute_frame_layout): Make fprintf's in #if 0 code
14937         type correct.
14938
14939 2007-01-18  Jan Hubicka  <jh@suse.cz>
14940
14941         * tree-ssa-operands.c (vop_free_bucket_size): Never return value
14942         greater than NUM_VOP_FREE_BUCKETS.
14943
14944 2007-01-18  Daniel Berlin  <dberlin@dberlin.org>
14945
14946         * tree-ssa-structalias.c: Update comments.
14947         (ptabitmap_obstack): Removed.
14948         (pta_obstack): New.
14949         (oldpta_obstack): Ditto.
14950         (stats): Add a few members.
14951         (struct variable_info): Remove node, complex, address_taken, and
14952         indirect_target members. Add oldsolution member.
14953         (new_var_info): Do not initialize removed members.
14954         (constraint_expr_type): Remove INCLUDES.
14955         (constraint_graph): Add size, implicit_preds, rep,
14956         indirect_cycles, eq_rep, label, direct_nodes, and complex members.
14957         (FIRST_REF_NODE): New macro.
14958         (LAST_REF_NODE): Ditto.
14959         (FIRST_ADDR_NODE): Ditto.
14960         (find): New function.
14961         (unite): Ditto.
14962         (dump_constraint): Do not handle INCLUDES.
14963         (insert_into_complex): Do not insert duplicate constraints.
14964         (condense_varmap_nodes): Renamed and rewritten into ...
14965         (merge_node_constraints): This. Also fix bug in handling of
14966         offseted copy constraints.
14967         (clear_edges_for_node): No longer need to deal with preds at all,
14968         or removing associated preds/succs.
14969         (merge_graph_nodes): Deal with indirect_cycles.
14970         Don't deal with predecessors.
14971         (add_implicit_graph_edge): New function.
14972         (add_pred_graph_edge): Ditto.
14973         (add_graph_edge): Don't deal with predecessors.
14974         (build_constraint_graph): Removed.
14975         (build_pred_graph): New function.
14976         (build_succ_graph): Ditto.
14977         (struct scc_info): Removed in_component. Added roots, dfs, and
14978         node_mapping. Remove visited_index, unification_queue.
14979         (scc_visit): Deal with union-find we do now.
14980         Deal with cycles with REF nodes.
14981         (collapse_nodes): Renamed and rewritten to ...
14982         (unify_nodes): This.
14983         (process_unification_queue): Removed.
14984         (topo_visit): Cleanup
14985         (do_da_constraint): Use find.
14986         (do_sd_constraint): Ditto.
14987         (do_ds_constraint): Ditto.
14988         (do_complex_constraint): Ditto.
14989         (init_scc_info): Update for removed and added members.
14990         (find_and_collapse_graph_cycles): Renamed and rewritten into ...
14991         (find_indirect_cycles): This.
14992         (equivalence_class): New variable.
14993         (label_visit): New function.
14994         (perform_variable_substitution): Rewritten.
14995         (free_var_substitution_info): New function.
14996         (find_equivalent_node): Ditto.
14997         (move_complex_constraints): Ditto.
14998         (eliminate_indirect_cycles): Ditto.
14999         (solve_graph): Only propagate changed bits.
15000         Use indirect cycle elimination.
15001         Use find.
15002         (tree_id_t): Rename to tree_vi_t, delete id member, add vi member.
15003         (tree_id_eq): Renamed to ...
15004         (tree_vi_eq): This. Update for member change
15005         (insert_id_for_tree): Renamed and rewritten to ...
15006         (insert_vi_for_tree): This.
15007         (lookup_id_for_tree): Renamed and rewritten to ...
15008         (lookup_vi_for_tree): This.
15009         (get_id_for_tree): Renamed and rewritten to ...
15010         (get_vi_for_tree): Ditto.
15011         (get_constraint_exp_from_ssa_var): Update to use get_vi_for_tree.
15012         (process_constraint): Don't handle INCLUDES.
15013         Remove special ADDRESSOF case.
15014         (find_func_aliases): Rewrite to use vi functions instead of id
15015         ones.
15016         (create_function_info_for): Ditto.
15017         (create_variable_info_for): Ditto.
15018         (intra_create_variable_infos): Ditto.
15019         (merge_smts_into): Ditto.
15020         (find_what_p_points_to): Ditto.
15021         (init_base_vars): Ditto.
15022         (init_alias_vars): Ditto.
15023         (remove_preds_and_fake_succs): New function.
15024         (dump_sa_points_to_info): Dump new stats.
15025         (dump_solution_for_var): Use find.
15026         (set_used_smts): Fix formatting.
15027         (compute_points_to_sets): Updated for new functions.
15028         (ipa_pta_execute): Ditto.
15029
15030 2007-01-18  Kazu Hirata  <kazu@codesourcery.com>
15031             Richard Sandiford  <richard@codesourcery.com>
15032
15033         * doc/tm.texi (TARGET_FUNCTION_VALUE): Expand documentation of
15034         parallels.
15035         * calls.c (expand_call): If the return value is a PARALLEL,
15036         extract its first member.
15037         * config/m68k/linux.h (FUNCTION_EXTRA_EPILOGUE): Remove.
15038         * config/m68k/m68k.c (m68k_output_function_epilogue): Don't
15039         use FUNCTION_EXTRA_EPILOGUE.
15040         (m68k_function_value): Return a PARALLEL if the return value
15041         is of a pointer type.
15042         * config/m68k/netbsd-elf.h (current_function_returns_pointer)
15043         (FUNCTION_EXTRA_EPILOGUE): Remove.
15044         * config/m68k/m68k.md (D0_REG): New constant.
15045
15046 2007-01-18  Kazu Hirata  <kazu@codesourcery.com>
15047
15048         * config/m68k/m68k.c (m68k_output_function_epilogue): Don't
15049         output a NOP for empty epilogues.
15050
15051 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
15052
15053         * config/m68k/m68k.c (m68k_use_return_insn): Update comments
15054         before function.  Extend register save check to include all
15055         registers, not just integer ones.
15056
15057 2007-01-18  Kazu Hirata  <kazu@codesourcery.com>
15058
15059         * config/m68k/m68k-protos.h (use_return_insn): Rename to...
15060         (m68k_use_return_insn): ...this.
15061         * config/m68k/m68k.h (USE_RETURN_INSN): Delete.
15062         * config/m68k/m68k.c (use_return_insn): Rename to...
15063         (m68k_use_return_insn): ...this.
15064         * config/m68k/m68k.md (return): Use m68k_use_return_insn instead
15065         of USE_RETURN_INSN.
15066
15067 2007-01-18  Nathan Sidwell  <nathan@codesourcery.com>
15068
15069         * config/m68k/fpgnulib.c (__truncdfsf2): Implement round to
15070         nearest even, fix denormal rounding overflow.
15071
15072 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
15073
15074         * config/m68k/m68k.md (movsf_cf_hard): Use fsmove instead of
15075         f%$smove and f%$move.
15076         (movdf_cf_hard): Use fdmove for cases 0 and 3 and fmove for case 1.
15077         (extendsfdf2_cf): Use fdmove instead of f%&move.
15078         (truncdfsf2_cf): Use fsmove instead of f%$smove.
15079         (add<mode>3_cf, sub<mode>3_cf): Use <FP:prec> instead of <FP:round>.
15080
15081 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
15082
15083         * config/m68k/m68k.md (movdf_cf_hard): Use output_move_double for
15084         GPR<-GPR moves.
15085
15086 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
15087
15088         * real.h (real_format): Add a canonical_nan_lsbs_set field.
15089         (coldfire_single_format): Declare.
15090         (coldfire_double_format): Likewise.
15091         * real.c (encode_ieee_single): Use canonical_nan_lsbs_set instead
15092         of qnan_msb_set to determine the lower bits of a canonical
15093         NaN significand.
15094         (encode_ieee_double): Likewise.
15095         (encode_ieee_quad): Likewise.
15096         (ieee_single_format): Initialize canonical_nan_lsbs_set.
15097         (mips_single_format): Likewise.
15098         (ieee_double_format): Likewise.
15099         (mips_double_format): Likewise.
15100         (ieee_extended_motorola_format): Likewise.
15101         (ieee_extended_intel_96_format): Likewise.
15102         (ieee_extended_intel_128_format): Likewise.
15103         (ieee_extended_intel_96_round_53_format): Likewise.
15104         (ibm_extended_format): Likewise.
15105         (mips_extended_format): Likewise.
15106         (ieee_quad_format): Likewise.
15107         (mips_quad_format): Likewise.
15108         (vax_f_format): Likewise.
15109         (vax_d_format): Likewise.
15110         (vax_g_format): Likewise.
15111         (i370_single_format): Likewise.
15112         (i370_double_format): Likewise.
15113         (decimal_single_format): Likewise.
15114         (decimal_double_format): Likewise.
15115         (decimal_quad_format): Likewise.
15116         (c4x_single_format): Likewise.
15117         (c4x_extended_format): Likewise.
15118         (real_internal_format): Likewise.
15119         (coldfire_single_format): New real_format.
15120         (coldfire_double_format): Likewise.
15121         * config/pdp11/pdp11.c (pdp11_f_format): Initialize
15122         canonical_nan_lsbs_set.
15123         (pdp11_d_format): Likewise.
15124         * config/m68k/m68k.c (override_options): Override REAL_FORMAT_MODE
15125         if TARGET_COLDFIRE_CPU.
15126
15127 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
15128
15129         * config/m68k/m68k-protos.h (m68k_output_pic_call): Delete.
15130         (output_call, m68k_legitimize_call_address): Declare.
15131         * config/m68k/m68k.h (EXTRA_CONSTRAINT): Remove unnecessary
15132         parenthesees.  Add support for a 'W' constraint.
15133         (LEGITIMATE_PIC_OPERAND_P): Remove SYMBOL_REF_FLAG handling.
15134         (PRINT_OPERAND_PUNCT_VALID_P): Remove comment about 'o'.
15135         (m68k_symbolic_call, m68k_symbolic_jump): Declare.
15136         * config/m68k/m68k.c (m68k_symbolic_call, m68k_symbolic_jump): New
15137         variables.
15138         (override_options): Initialize them.  Do not set flag_no_function_cse
15139         for TARGET_ID_SHARED_LIBRARY.
15140         (m68k_output_pic_call): Delete.
15141         (m68k_legitimize_call_address): New function.
15142         (print_operand): Remove the %o prefix.  Handle the %p prefix.
15143         (output_call): New function.
15144         (m68k_output_mi_thunk): Use m68k_symbolic_jump.  Always load the
15145         target address from the GOT if symbolic jumps are not allowed.
15146         * config/m68k/m68k.md (call, general_operand): Do not set
15147         SYMBOL_REF_FLAG.  Use m68k_legitimize_call_address instead.
15148         Merge separate flag_pic and !flag_pic define_insns into...
15149         (*call, *call_value): ...these new patterns.  Match the address
15150         rather than the containing MEM and require it to be a call_operand.
15151         Use output_call to generate the asm template.
15152         * config/m68k/predicates.md (const_call_operand): New predicate.
15153         (call_operand): Likewise.
15154
15155 2007-01-18  Nathan Sidwell  <nathan@codesourcery.com>
15156
15157         * config/m68k/m68k.h (REGISTER_MOVE_COST): Simplify definition.
15158         (STACK_GROWS_DOWNWARD): Define to 1.
15159         (FUNCTION_VALUE, LIBCALL_VALUE, FUNCTION_VALUE_REGNO_P): Equivocate
15160         comments, emphasizing that these values are only defaults.
15161         * config/m68k/linux.h (LINK_SPEC): Fix formatting in #undef.
15162         * config/m68k/m68k.c (const_method): Remove trailing whitespace.
15163
15164 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
15165
15166         * config/m68k/m68k.md (cmpsi): Remove outdated flag_pic handling.
15167
15168 2007-01-18  Kazu Hirata  <kazu@codesourcery.com>
15169             Richard Sandiford  <richard@codesourcery.com>
15170
15171         * config/m68k/m68k.h (DATA_REGNO_P, ADDRESS_REGNO_P, INT_REGNO_P)
15172         (FP_REGNO_P): New macros.
15173         (REGNO_OK_FOR_INDEX_P, REGNO_OK_FOR_BASE_P, REGNO_OK_FOR_DATA_P)
15174         (REGNO_OK_FOR_FP_P, REG_OK_FOR_INDEX_P, REG_OK_FOR_BASE_P): Use them.
15175         (EH_RETURN_STACKADJ_RTX): Use A0_REG.
15176         * config/m68k/m68k.c (m68k_regno_mode_ok): Use the new REGNO macros.
15177
15178 2007-01-18  Nathan Sidwell  <nathan@codesourcery.com>
15179
15180         * config.gcc (m68k-*-aout*, m68k-*-coff*, m68020-*-elf*, m68k-*-elf*)
15181         (m68k-*-uclinuxoldabi, m68k-*-uclinux*, m68k-*-rtems*): Add t-floatlib
15182         to $tmake_file.
15183         * config/m68k/t-floatlib: New file, extracting common code from...
15184         * config/m68k/t-m68kbare, config/m68k/t-m68kelf,
15185         * config/m68k/t-uclinux: Here.
15186         * config/m68k/fpgnulib.c: Do not compile extendeed precision
15187         routines on ColdFire targets.
15188
15189 2007-01-18  Nathan Sidwell  <nathan@codesourcery.com>
15190
15191         * config.gcc (m68k-*-aout*, m68k-*-coff*, m68020-*-elf*, m68k-*-elf*)
15192         (m68010-*-netbsdelf*, m68k*-*-netbsdelf*, m68k*-*-openbsd*)
15193         (m68k-*-uclinuxoldabi, m68k-*-uclinux*, m68k-*-linux*)
15194         (m68k-*-rtems*): Use tm_file rather than m68k/m68k.h and
15195         explicitly set MOTOROLA to 1.
15196         * config/m68k/m68k.h (MOTOROLA): Simplify definition accordingly.
15197
15198 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
15199             Nathan Sidwell  <nathan@codesourcery.com>
15200
15201         * config/m68k/m68k.h (PCC_STATIC_STRUCT_RETURN): Delete.
15202         (ASM_OUTPUT_REG_PUSH, ASM_OUTPUT_REG_POP): Add MOTOROLA cases.
15203         * config/m68k/coff.h (REGISTER_PREFIX_MD): Delete.
15204         * config/m68k/m68020-elf.h (LIB_SPEC): Delete.
15205         * config/m68k/m68k-none.h (CC1_SPEC, CPP_SUBTARGET_SPEC): Delete.
15206         * config/m68k/m68kelf.h (IMMEDIATE_PREFIX, REGISTER_PREFIX_MD)
15207         (ASM_OUTPUT_REG_PUSH, ASM_OUTPUT_REG_POP): Delete.
15208         (NO_DOLLAR_IN_LABEL, PCC_STATIC_STRUCT_RETURN): Don't undefine.
15209         (BSS_ASM_OP, ASM_OUTPUT_SKIP, ASM_OUTPUT_ASCII): Delete.
15210         * config/m68k/m68kemb.h (PCC_STATIC_STRUCT_RETURN): Don't undefine.
15211         * config/m68k/linux.h (SIZE_TYPE, PTRDIFF_TYPE, WCHAR_TYPE)
15212         (WCHAR_TYPE_SIZE, TARGET_OBJFMT_CPP_BUILTINS): Delete.
15213         (TARGET_OS_CPP_BUILTINS): Don't define mc68000 and mc68020 here.
15214         (DBX_REGISTER_NUMBER): Delete.
15215         * config/m68k/netbsd-elf.h (IMMEDIATE_PREFIX): Delete.
15216         (PCC_STATIC_STRUCT_RETURN): Don't undefine.
15217         * config/m68k/openbsd.h (PCC_STATIC_STRUCT_RETURN): Define.
15218
15219 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
15220
15221         * config.gcc (m68k-*-uclinux*): Add flat.h to $tm_file.
15222         * config/flat.h: New file.
15223         * crtstuff.c (USE_PT_GNU_EH_FRAME): Don't define if
15224         OBJECT_FORMAT_FLAT.
15225         * config/m68k/m68k.h (ASM_PREFERRED_EH_DATA_FORMAT): Do not use
15226         indirect references for -msep-data or -mid-shared-library.
15227         Do not use PC-relative code addresses either.
15228         * config/m68k/m68k.c (override_options): Restrict -fPIC error
15229         to -mpcrel.
15230         * config/m68k/uclinux.h (STARTFILE_SPEC): Define.  Use Scrt1.o
15231         for shared libraries and crt1.o for executables.  Use crti.o and
15232         crtbegin.o.
15233         (ENDFILE_SPEC): Use crtend.o and crtn.o.
15234         (LIB_SPEC): Suppress -Rlibc.gdb if -static-libc is given.
15235         Do not add -elf2flt or -shared-lib-id options here.
15236         (LINK_SPEC): Define.  Pass -elf2flt if no -elf2flt option is given.
15237         Pass -shared-lib-id if -mid-shared-library, taking the library
15238         identifier from -mshared-library-id if given, otherwise
15239         defaulting to 0.
15240         (EH_FRAME_IN_DATA_SECTION): Do not undefine.
15241         (INIT_SECTION_ASM_OP, FINI_SECTION_ASM_OP): Likewise.
15242         (TARGET_OS_CPP_BUILTINS): Define __GXX_MERGED_TYPEINFO_NAMES=0
15243         and __GXX_TYPEINFO_EQUALITY_INLINE=0 if -mid-shared-library.
15244         (DRIVER_SELF_SPECS): Map unadorned PIC options to -msep-data.
15245         * config/m68k/t-uclinux (EXTRA_MULTILIB_PARTS): Add crtbegin.o
15246         and crtend.o.
15247         * config/m68k/lb1sf68.asm (PICCALL): Use an lea and pc-relative
15248         jump sequence for ISA A and ISA A+.
15249         (PICJUMP): Likewise.
15250
15251 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
15252
15253         * config.gcc (m68k-*-uclinux*): Base the port on the common
15254         and m68k GNU/Linux files rather than on the generic ELF ones.
15255         * config/m68k/uclinux.h (TARGET_VERSION): Override.
15256         (TARGET_OS_CPP_BUILTINS): Use LINUX_TARGET_OS_CPP_BUILTINS.
15257
15258 2007-01-18  Julian Brown  <julian@codesourcery.com>
15259             Richard Sandiford  <richard@codesourcery.com>
15260
15261         * config/m68k/m68k.h (LONG_DOUBLE_TYPE_SIZE): Make 64-bit on ColdFire.
15262         (LIBGCC2_LONG_DOUBLE_TYPE_SIZE): Likewise.
15263         * config/m68k/netbsd-elf.h (LIBGCC2_LONG_DOUBLE_TYPE_SIZE): Undefine
15264         before redefining.
15265         * config/m68k/uclinux-oldabi.h (LONG_DOUBLE_TYPE_SIZE): Redefine to
15266         80 unconditionally.
15267         (LIBGCC2_LONG_DOUBLE_TYPE_SIZE): Likewise.
15268
15269 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
15270
15271         * doc/install.texi: Document m68k-uclinuxoldabi.
15272         * config.gcc (m68k-*-uclinuxoldabi): New configuration.
15273         * config/m68k/uclinux-oldabi.h: New file, copied from
15274         config/m68k/uclinux.h.
15275
15276 2007-01-18  Kaz Kojima  <kkojima@rr.iij4u.or.jp>
15277
15278         * config/m32r/m32r-protos.h (m32r_expand_epilogue): Declare it.
15279         * config/m32r/m32r.c (m32r_setup_incoming_varargs): Use gen_frame_mem.
15280         (m32r_compute_frame_size): Use unsigned for regno.
15281         (m32r_reload_lr): Use gen_frame_mem.
15282         (pop): New.
15283         (m32r_output_function_epilogue): Don't output the function epilogue
15284         textually here.
15285         (m32r_expand_epilogue): New.
15286         (direct_return): Return false if the function has the interrupt
15287         attribute.
15288         (m32r_hard_regno_rename_ok): Remove code for the textual epilogue.
15289         * config/m32r/m32r.md (epilogue): New expander.
15290         (return_lr, return_rte): New insns.
15291         (return): Make it expander.
15292         (return_normal): New expander.
15293
15294 2007-01-18  Josh Conner  <jconner@apple.com>
15295
15296         PR target/30485
15297         * config/rs6000/rs6000.c (rs6000_emit_vector_compare): Add
15298         support for UNLE, UNLT, UNGE, and UNGT.
15299
15300 2007-01-18  Jan Hubicka  <jh@suse.cz>
15301
15302         * tree-vrp.c (finalize_jump_threads): Do not call cleanup_cfg by hand.
15303         * tree-tailcall (add_virtual_phis): Likewise.
15304         (optimize_tail_call): Return TODOs.
15305         (execute_tail_calls): Return TODOs.
15306         * tree-ssa-ccp (execute_fold_all_builtins): Do cleanup_cfg via TODO.
15307         * tree-cfgcleanup.c (cleanup_tree_cfg_loop): Return if something
15308         changed.
15309         * tree-ssa-forwprop.c (tree_ssa_forward_propagate_single_use_value):
15310         Cleanup cfg using TODO.
15311         * tree-flow.h (cleanup_tree_cfg_loop): Update prototype.
15312         * passes.c (execute_function_todo): When cleanup did something, remove
15313         unused locals.
15314         * tree-cfg.c (pass_build_cfg): Add cleanup_cfg TODO.
15315         (make_edges): Don't cleanup_cfg.
15316
15317 2007-01-18  Uros Bizjak  <ubizjak@gmail.com>
15318
15319         * reg-stack.c (subst_stack_regs_pat) [UNSPEC_SINCOS_COS,
15320         UNSPEC_XTRACT_FRACT]: Use generic code for instructions that
15321         operate on the top of stack.
15322         [UNSPEC_SINCOS_SIN, UNSPEC_XTRACT_EXP, UNSPEC_TAN]: Rewrite
15323         register handling of instructions that output to the second
15324         stack slot.
15325         [UNSPEC_TAN_ONE, UNSPEC_TAN_TAN]: Remove.
15326         (move_for_stack_reg): Special-case check for dead destination
15327         stack slot for constant load of 1.0 inside UNSPEC_TAN.
15328
15329         * config/i386/i386.md (UNSPEC_TAN): New constant.
15330         (UNSPEC_TAN_ONE, UNSPEC_TAN_TAN): Remove.
15331         (fptanxf4_i387, fptan_extend<mode>xf4_i387): New patterns
15332         to correctly model move of constant 1.0 to top stack slot.
15333         (*tandf3_1, *tansf3_1, *tanxf3_1): Remove insn patterns.
15334         (unnamed peephole2 pattern): Remove corresponding peephole2
15335         pattern that optimizes tan insn and loading of constant 1.0.
15336         (tanxf2): Use fptanxf4_i387.
15337         (tan<mode>2): Rename from tansf2 and tandf2 and macroize insn
15338         patterns using X87MODEF12 mode macro.  Use fptan_extend<mode>xf4_i387
15339         and truncate result to requested mode.  Use SSE_FLOAT_MODE_P to
15340         disable patterns for SSE math.
15341         (sincos<mode>3): Use truncxf<mode>2_i387_noop for truncation.
15342         (fyl2x_extend<mode>xf3_i387): Use X87MODEF12 for operand 1.
15343
15344 2007-01-18  Dirk Mueller  <dmueller@suse.de>
15345             Richard Guenther <rguenther@suse.de>
15346
15347         PR diagnostic/8268
15348         * doc/invoke.texi (Warray-bounds): Document -Warray-bounds.
15349         * common.opt (Warray-bounds): Add new warning option.
15350         * c-opts.c (c_common_handle_option): Define -Warray-bounds
15351         if -Wall is given.
15352         * Makefile.in: make tree-vrp.o depend on toplev.h
15353         * tree-vrp.c (vrp_finalize): Call check_array_refs if -Warray-bounds
15354         is enabled.
15355         (check_array_refs, check_array_bounds, check_array_ref): New.
15356
15357 2007-01-18  Jan Hubicka  <jh@suse.cz>
15358
15359         * tree-ssa-ccp.c (ccp_finalize): Return if something changed.
15360         (execute_ssa_ccp): Return flags conditionally.
15361         * tree-ssa-propagate.c (substitue_and_fold): Return if something was
15362         changed.
15363         * tree-ssa-propagate.h (substitute_and_fold): Update prototype.
15364
15365 2007-01-18  Steven Bosscher  <steven@gcc.gnu.org>
15366
15367         * cfgcleanup.c (cleanup_cfg): Detect cfglayout mode and set
15368         the CLEANUP_CFGLAYOUT flag when in cfglayout mode.
15369
15370         * Makefile.c (GTFILES): Add cfglayout.h.
15371         * gengtype.c (open_base_files): Likewise.
15372         * cfglayout.c (cfg_layout_function_footer,
15373         cfg_layout_function_header) Reindent to make gengtype happy.
15374         * cfglayout.h (cfg_layout_function_footer,
15375         cfg_layout_function_header): Add GTY(()) marker.
15376
15377         * ifcvt.c (noce_try_sign_mask): Make sure INSN_B is non-null.
15378
15379 2007-01-18  Ben Elliston  <bje@au.ibm.com>
15380
15381         * genautomata.c (write_automata): Include xstrerror output in the
15382         error message if writing the DFA description file fails.
15383
15384 2007-01-17  H.J. Lu  <hongjiu.lu@intel.com>
15385
15386         * config/mips/mips-protos.h (mips_output_external): Make it
15387         return void.
15388         * config/mips/iris.h (TARGET_ASM_EXTERNAL_LIBCALL): Removed.
15389         * config/mips/mips.c (irix_output_external_libcall): Likewise.
15390         (extern_list): Likewise.
15391         (extern_head): Likewise.
15392         (TARGET_ASM_FILE_END): Likewise.
15393         (mips_file_end): Likewise.
15394         (mips_output_external): Rewritten.
15395
15396 2007-01-18  Ben Elliston  <bje@au.ibm.com>
15397
15398         * genpreds.c (write_insn_preds_c): Only write out the function
15399         body for regclass_for_constraint if we have register constraints.
15400
15401 2007-01-17  Tom Tromey  <tromey@redhat.com>
15402
15403         * doc/sourcebuild.texi (libgcj Tests): Use sourceware.org.
15404         * doc/install.texi (Testing): Use sourceware.org.
15405         (Binaries): Likewise.
15406         (Specific): Likewise.
15407         * doc/contrib.texi (Contributors): Use sourceware.org.
15408
15409 2007-01-17  Anatoly Sokolov <aesok@post.ru>
15410
15411         * config/avr/avr.h (AVR_HAVE_LPMX): New macro.
15412         (AVR_ENHANCED): Rename to ...
15413         (AVR_HAVE_MUL): ... new.
15414         (avr_enhanced_p): Rename to ...
15415         (avr_have_mul_p): ... new.
15416         (TARGET_CPU_CPP_BUILTINS): Use 'avr_have_mul_p' instead of
15417         'avr_enhanced_p' for "__AVR_ENHANCED__". Define "__AVR_HAVE_MUL__".
15418         * config/avr/avr.c (avr_enhanced_p): Rename to ...
15419         (avr_have_mul_p): ... new.
15420         (base_arch_s): Rename 'enhanced' to 'have_mul'.
15421         (avr_override_options): Use 'avr_have_mul_p' and 'have_mul' instead of
15422         'avr_enhanced_p' and 'enhanced'.
15423         (ashlhi3_out, ashrhi3_out, lshrhi3_out, avr_rtx_costs): Use
15424         AVR_HAVE_MUL instead of AVR_ENHANCED.
15425         * avr.md (*tablejump_enh): Use AVR_HAVE_LPMX instead of AVR_ENHANCED.
15426         (mulqi3, *mulqi3_enh, *mulqi3_call, mulqihi3, umulqihi3, mulhi3,
15427         *mulhi3_enh, *mulhi3_call, mulsi3, *mulsi3_call): Use AVR_HAVE_MUL
15428         instead of AVR_ENHANCED.
15429         (*tablejump_enh): Use AVR_HAVE_LPMX instead of AVR_ENHANCED.
15430         * libgcc.S: Use __AVR_HAVE_MUL__ instead of __AVR_ENHANCED__.
15431         (__tablejump__): Use __AVR_HAVE_LPMX__ instead of __AVR_ENHANCED__.
15432
15433 2007-01-17  Ian Lance Taylor  <iant@google.com>
15434
15435         * vec.h (VEC_reserve_exact): Define.
15436         (vec_gc_p_reserve_exact): Declare.
15437         (vec_gc_o_reserve_exact): Declare.
15438         (vec_heap_p_reserve_exact): Declare.
15439         (vec_heap_o_reserve_exact): Declare.
15440         (VEC_OP (T,A,reserve_exact)): New static inline function, three
15441         versions.
15442         (VEC_OP (T,A,reserve)) [all versions]: Remove handling of
15443         negative parameter.
15444         (VEC_OP (T,A,alloc)) [all versions]: Call ...reserve_exact.
15445         (VEC_OP (T,A,copy)) [all versions]: Likewise.
15446         (VEC_OP (T,a,safe_grow)) [all versions]: Likewise.
15447         * vec.c (calculate_allocation): Add exact parameter.  Change all
15448         callers.
15449         (vec_gc_o_reserve_1): New static function, from vec_gc_o_reserve.
15450         (vec_gc_p_reserve, vec_gc_o_reserve): Call vec_gc_o_reserve_1.
15451         (vec_gc_p_reserve_exact, vec_gc_o_reserve_exact): New functions.
15452         (vec_heap_o_reserve_1): New static function, from vec_heap_o_reserve.
15453         (vec_heap_p_reserve, vec_heap_o_reserve): Call vec_heap_o_reserve_1.
15454         (vec_heap_p_reserve_exact): New function.
15455         (vec_heap_o_reserve_exact): New function.
15456
15457 2007-01-17  Jan Hubicka  <jh@suse.cz>
15458
15459         * ipa-type-escape.c (look_for_casts): Revamp using handled_component_p.
15460
15461 2007-01-17  Eric Christopher  <echristo@apple.com>
15462
15463         * config.gcc: Support core2 processor.
15464
15465 2007-01-16  Jan Hubicka  <jh@suse.cz>
15466
15467         * tree-ssanames.c (release_dead_ssa_names): Instead of ggc_freeing
15468         the names, just unlink the chain so we don't crash on dangling pointers
15469         to dead SSA names.
15470
15471 2007-01-16  Jan Hubicka  <jh@suse.cz>
15472
15473         * cgraph.h (cgraph_decide_inlining_incrementally): Kill.
15474         * tree-pass.h: Reorder to make IPA passes appear toegher.
15475         (pass_early_inline, pass_inline_parameters, pass_apply_inline): Declare.
15476         * cgraphunit.c (cgraph_finalize_function): Do not compute inling
15477         parameters, do not call early inliner.
15478         * ipa-inline.c: Update comments.  Include tree-flow.h
15479         (cgraph_decide_inlining): Do not compute inlining parameters.
15480         (cgraph_decide_inlining_incrementally): Return TODOs; assume to
15481         be called with function context set up.
15482         (pass_ipa_inline): Remove unreachable functions before pass.
15483         (cgraph_early_inlining): Simplify assuming to be called from the
15484         PM as local pass.
15485         (pass_early_inline): New pass.
15486         (cgraph_gate_ipa_early_inlining): New gate.
15487         (pass_ipa_early_inline): Turn into simple wrapper.
15488         (compute_inline_parameters): New function.
15489         (gate_inline_passes): New gate.
15490         (pass_inline_parameters): New pass.
15491         (apply_inline): Move here from tree-optimize.c
15492         (pass_apply_inline): New pass.
15493         * ipa.c (cgraph_remove_unreachable_nodes): Verify cgraph after
15494         transforming.
15495         * tree-inline.c (optimize_inline_calls): Return TODOs rather than
15496         doing them by hand.
15497         (tree_function_versioning): Do not allocate dummy struct function.
15498         * tree-inline.h (optimize_inline_calls): Update prototype.
15499         * tree-optimize.c (execute_fixup_cfg): Export.
15500         (pass_fixup_cfg): Remove
15501         (tree_rest_of_compilation): Do not apply inlines.
15502         * tree-flow.h (execute_fixup_cfg): Declare.
15503         * Makefile.in (gt-passes.c): New.
15504         * passes.c: Include gt-passes.h
15505         (init_optimization_passes): New passes.
15506         (nnodes, order): New static vars.
15507         (do_per_function_toporder): New function.
15508         (execute_one_pass): Dump current pass here.
15509         (execute_ipa_pass_list): Don't dump current pass here.
15510
15511 2007-01-16  Janis Johnson  <janis187@us.ibm.com>
15512
15513         * config/dfp-bit.c (dfp_compare_op): Return separate value for NaN.
15514         (DFP_NE, DFP_LE, DFP_GE): Return false for NaN.
15515
15516 2007-01-16  David Edelsohn  <edelsohn@gnu.org>
15517
15518         * config/rs6000/darwin-ldouble.c: Build file for SOFT_FLOAT.
15519         (strong_alias): Define.
15520         (__gcc_qmul): Provide non-FMA for soft-float.
15521         (__gcc_qdiv): Same.
15522         (__gcc_qneg): New.
15523         (__gcc_qeq): New.
15524         (__gcc_qle): New.
15525         (__gcc_qge): New.
15526         (__gcc_qunord): New.
15527         (__gcc_stoq): New.
15528         (__gcc_dtoq): New.
15529         (__gcc_qtos): New.
15530         (__gcc_qtod): New.
15531         (__gcc_qtoi): New.
15532         (__gcc_qtou): New.
15533         (__gcc_itoq): New.
15534         (__gcc_utoq): New.
15535         (fmsub): New.
15536         * config/rs6000/rs6000.c (rs6000_init_libfuncs): Initialize
15537         soft-float functions.
15538         * config/rs6000/libgcc-ppc-glibc.ver: Version soft-float symbols.
15539         * config/rs6000/sysv4.h (SUBTARGET_OVERRIDE_OPTIONS): Do not warn
15540         about long double soft float.
15541
15542 2007-01-16  Dorit Nuzman  <dorit@il.ibm.com>
15543             Tehila Meyzels  <tehila@il.ibm.com>
15544
15545         * tree-vectorizer.h (is_pattern_stmt_p): New.
15546         * tree-vect-analyze.c (vect_determine_vectorization_factor): Fix
15547         formatting (tabs instead of spaces). Cleanup and clarify setting
15548         of STMT_VINFO_VECTYPE. Call is_pattern_stmt_p.
15549         * tree-vect-transform.c (vect_get_vec_def_for_operand): Fix typo.
15550         (vectorizable_type_demotion): Check that types are integral.
15551         (vectorizable_type_promotion): Likewise.
15552         (vectorizable_store): Fix typo.  Eliminate new-line at end of
15553         comments.
15554
15555 2007-01-16  Jan Hubicka  <jh@suse.cz>
15556
15557         * tree-ssanames.c (release_dead_ssa_names): Remove invalidated
15558         cgraph edges too.
15559
15560 2007-01-15  Eric Christopher  <echristo@apple.com>
15561
15562         * ifcvt.c: Include vec.h, vecprim.h.
15563         (check_cond_move_block): New argument regs.
15564         Reorganize. Add registers used to regs.
15565         (cond_move_process_if_block): Use regs set above as
15566         loop bounds.
15567
15568 2007-01-15  Eric Christopher  <echristo@apple.com>
15569
15570         * config/darwin.h: Update copyright.
15571         (TARGET_OPTION_TRANSLATE_TABLE): Add umbrella.
15572         (LINK_COMMAND_SPEC): Add -u.
15573         (LINK_SPEC): Fix umbrella for above.
15574
15575 2007-01-15  Joseph S. Myers  <joseph@codesourcery.com>
15576
15577         * config/soft-fp/op-common.h, config/soft-fp/op-4.h: Update from
15578         glibc CVS.
15579
15580 2007-01-15  Tom Tromey  <tromey@redhat.com>
15581
15582         * doc/sourcebuild.texi (libgcj Tests): Don't mention jacks.
15583         * doc/install.texi (Testing): Don't mention jacks.
15584         (Configuration): Document --enable-java-maintainer-mode.  Move
15585         --with-java-home to libgcj-specific section.  Document
15586         --with-ecj-jar.
15587         (Prerequisites): Mention --enable-java-maintainer-mode, ecj1.
15588
15589 2007-01-15  Jan Hubicka  <jh@suse.cz>
15590
15591         * tree-ssa-dce.c (DCE_TODOs): New.
15592         (propagate_necessity): Return if something changed.
15593         (eliminate_unnecessary_stmts): Likewise.
15594         (perform_tree_ssa_dce): Return TODO flags when needed.
15595         (pass_dce, pass_dce_loop, pass_cd_dce): Remove TODO flags.
15596
15597 2007-01-15  Uros Bizjak  <ubizjak@gmail.com>
15598
15599         * config/i386/i386.md (fyl2xxf3_i387): Rename from fyl2x_xf3.
15600         (fyl2x_extend<mode>xf3_i387): New insn pattern.
15601         (log<mode>2): Rename from logsf2 and logdf2 and macroize insn
15602         patterns using X87MODEF12 mode macro.  Extend operand 1
15603         to XFmode. Use SSE_FLOAT_MODE_P to disable patterns for SSE math.
15604         (log10<mode>2): Ditto.
15605         (log2<mode>2): Ditto.
15606         (log1p<mode>2): Ditto.
15607         (logb<mode>2): Ditto.
15608         (fyl2xp1xf3_i387): Rename from fyl2xp1_xf3.
15609         (fyl2xp1_extend<mode>xf3_i387): New insn pattern.
15610         (*fxtractxf3_i387): Rename from *fxtractxf3.
15611         (fxtract_extend<mode>xf3_i387): New insn pattern.
15612         (ilogbsi2): Use match_dup 3, not match_operand:XF 3.
15613         * config/i386/i386.c (ix86_emit_i387_log1p): Use gen_fyl2xp1xf3_i387()
15614         and gen_fyl2xxf3_i387().
15615
15616 2007-01-14  Zdenek Dvorak <dvorakz@suse.cz>
15617
15618         * loop-unswitch.c (unswitch_loop): Do not call fix_loop_placement.
15619         * cfgloopmanip.c (fix_loop_placement): Made static.  Use
15620         get_loop_exit_edges.  Changed return type to bool.
15621         * cfgloop.h (fix_loop_placement): Declaration removed.
15622
15623 2007-01-14  Dorit Nuzman  <dorit@il.ibm.com>
15624
15625         * param.h (MIN_VECT_LOOP_BOUND): New.
15626         * params.def (MIN_VECT_LOOP_BOUND): New.
15627         * tree-vectorizer.c (slpeel_tree_peel_loop_to_edge): Takes another
15628         argument - minimum threshold for number of iterations.
15629         * tree-vectorizer.h (slpeel_tree_peel_loop_to_edge): Add another
15630         argument to declaration.
15631         * tree-vect-analyze.c (vect_analyze_operations): Check value of
15632         MIN_VECT_LOOP_BOUND.
15633         * tree-vect-transform.c (vect_do_peeling_for_loop_bound): Call
15634         slpeel_tree_peel_loop_to_edge with additional argument.
15635         (vect_do_peeling_for_alignment): Likewise.
15636         * doc/invoke.texi (min-vect-loop-bound): Document new param option.
15637
15638 2007-01-14  Uros Bizjak  <ubizjak@gmail.com>
15639
15640         PR target/30413
15641         * config/i386/i386.c (print_operand) ['z']: Output 'b' for
15642         operands of size 1.
15643
15644 2007-01-14  Jan Hubicka  <jh@suse.cz>
15645
15646         * tree-dfa.c (remove_referenced_var): New function.
15647         * tree-ssa-live.c (remove_unused_locals): Walk referenced vars and
15648         prune referenced vars list too.
15649         * tree-flow.h (remove_referenced_var): Declare.
15650
15651 2007-01-14  Jan Hubicka  <jh@suse.cz>
15652
15653         * tree-eh.c (add_stmt_to_eh_region_fn): Do not add call_exprs
15654         separately.
15655         (remove_stmt_from_eh_region_fn): Do not remove call_exprs.
15656         (verify_eh_throw_stmt_node, verify_eh_throw_table_statements): Kill.
15657         * except.h (verify_eh_throw_table_statements): Kill prototype.
15658         * cfgexpand.c (expand_gimple_basic_block): Propagate Eh regions
15659         into call exrepssions.
15660         * tree-optimize.c (execute_free_cfg_annotatiosn): Do not call
15661         eh trhow verifier.
15662         * tree-cfg.c: Include pointer-set.h.
15663         (verify_node_sharing): Work on pointer set.
15664         (verify_eh_throw_stmt_node): New.
15665         (verify_stmts): Use pointers sets, verify throw_stmt.
15666
15667 2007-01-13  Zdenek Dvorak <dvorakz@suse.cz>
15668
15669         * ipa-reference.c (analyze_function): Consider also addresses taken
15670         in phi nodes.
15671
15672 2007-01-12  Roger Sayle  <roger@eyesopen.com>
15673
15674         * c-typeck.c (null_pointer_constant_p): Replace use of
15675         TREE_CONSTANT_OVERFLOW with TREE_OVERFLOW.
15676         (build_c_cast): Likewise.
15677
15678 2007-01-12  Roger Sayle  <roger@eyesopen.com>
15679
15680         * tree.h (force_fit_type_double): Remove unused final argument.
15681         * c-common.c (constant_expression_warning): Replace use of
15682         TREE_CONSTANT_OVERFLOW with TREE_OVERFLOW.
15683         (convert_and_check): Likewise.
15684         (shorten_compare): Update call to force_fit_type_double.
15685         (c_common_truthvalue_conversion) <INTEGER_CST>: Use integer_zerop.
15686         * convert.c (convert_to_pointer): Update call to
15687         force_fit_type_double.
15688         * fold-const.c (force_fit_type_double): Remove overflowed_const
15689         argument.
15690         (int_const_binop, fold_convert_const_int_from_int,
15691         fold_convert_const_int_from_real, fold_div_compare,
15692         fold_sign_changed_comparison, fold_unary, fold_negate_const,
15693         fold_abs_const, fold_not_const): Remove the final argument from
15694         calls to force_fit_type_double.
15695
15696 2007-01-12  Andrew Pinski  <andrew_pinski@playstation.sony.com>
15697
15698         * configure.ac: Set insn to "nop" for spu-*-* also.
15699         * configure: Regenerate.
15700
15701 2007-01-12  Olga Golovanevsky  <olga@il.ibm.com>
15702
15703         * builtins.def : Add BUILT_IN_FREE.
15704
15705 2007-01-12  Jan Hubicka  <jh@suse.cz>
15706
15707         PR tree-optimization/30443
15708         * tree-inline.c (tree_function_versioning): Do not optimize when
15709         cloning for inlining.
15710
15711 2007-01-12  Zdenek Dvorak <dvorakz@suse.cz>
15712
15713         * doc/loop.texi: Document recording of loop exits.
15714         * cfgloopmanip.c (loopify, duplicate_loop): Use alloc_loop.
15715         (update_single_exits_after_duplication,
15716         update_single_exit_for_duplicated_loop,
15717         update_single_exit_for_duplicated_loops): Removed.
15718         (duplicate_loop_to_header_edge): Do not call
15719         update_single_exits_after_duplication and
15720         update_single_exit_for_duplicated_loops.
15721         (loop_version): Do not update single_exit information.
15722         (fix_loop_structure): Use record_loop_exits instead of
15723         mark_single_exit_loops.
15724         * tree-ssa-loop-manip.c (tree_transform_and_unroll_loop): Update
15725         the lists of loop exits.
15726         * cfghooks.c (redirect_edge_and_branch, redirect_edge_and_branch_force,
15727         split_edge, merge_blocks): Update the lists of loop exits.
15728         * modulo-sched.c (sms_schedule): Pass LOOPS_HAVE_RECORDED_EXITS to
15729         loop_optimizer_init.
15730         * loop-init.c (loop_optimizer_init): Call record_loop_exits instead
15731         of mark_single_exit_loops.
15732         (loop_optimizer_finalize): Call release_recorded_exits.
15733         * tree-ssa-loop.c (tree_loop_optimizer_init): Pass
15734         LOOPS_HAVE_RECORDED_EXITS to loop_optimizer_init.
15735         * tree-vectorizer.c (slpeel_tree_duplicate_loop_to_edge_cfg): Do not
15736         update single exit information.
15737         * lambda-code.c (perfect_nestify): Ditto.
15738         * cfgloop.c (flow_loop_free): Destroy the list of exits of the loop.
15739         (mark_single_exit_loops): Removed.
15740         (alloc_loop, loop_exit_hash, loop_exit_eq, loop_exit_free,
15741         get_exit_descriptions, rescan_loop_exit, record_loop_exits,
15742         dump_recorded_exit, dump_recorded_exits, release_recorded_exits): New
15743         functions.
15744         (get_loop_exit_edges, single_exit): Use recorded exit lists.
15745         (add_bb_to_loop, remove_bb_from_loops): Update the lists of loop exits.
15746         (verify_loop_structure): Verify consistency of the exit lists.
15747         (flow_loops_find): Use alloc_loop.  Initialize exits hash.
15748         (set_single_exit): Removed.
15749         * cfgloop.h (struct loop_exit): New function.
15750         (struct loop): single_exit_ field replaced by exits field.
15751         (LOOPS_HAVE_MARKED_SINGLE_EXITS): Replaced by LOOPS_HAVE_RECORDED_EXITS.
15752         (struct loops): Added exits hash.
15753         (mark_single_exit_loops, set_single_exit): Declaration removed.
15754         (release_recorded_exits, record_loop_exits, rescan_loop_exit): Declare.
15755
15756 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
15757
15758         * doc/invoke.texi: Avoid use of @headitem.
15759
15760 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
15761
15762         * cse.c (cse_insn): Move HAVE_CC0 code after declarations.
15763
15764 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
15765
15766         * doc/install.texi: Fix m68k-*-* anchor and add m68k-*-* to the
15767         list of targets.
15768
15769 2007-01-12  Nathan Sidwell  <nathan@codesourcery.com>
15770             Richard Sandiford  <richard@codesourcery.com>
15771
15772         * doc/invoke.texi: Document -mno-bitfield, -mno-rtd and -mno-short.
15773         * config/m68k/m68k.opt: Resort options.
15774         (mbitfield, mrtd, mshort): Remove RejectNegative properties.
15775
15776 2007-01-12  Nathan Sidwell  <nathan@codesourcery.com>
15777             Richard Sandiford  <richard@codesourcery.com>
15778
15779         * doc/invoke.texi: Document the macros that are defined by
15780         m68k's -mtune and -mhard-float options.
15781         * config/m68k/m68k-protos.h (m68k_cpp_cpu_ident) Declare.
15782         (m68k_cpp_cpu_family): Likewise.
15783         * config/m68k/m68k.h (TARGET_CPU_CPP_BUILTINS): Add a full set
15784         of __ucfv*__ macros.  Define __mcffpu__ if generating code for
15785         ColdFire FPUs.  Define __mcf_cpu_* and __mcf_family_* macros.
15786         * config/m68k/m68k.c (m68k_cpp_cpu_ident): New function.
15787         (m68k_cpp_cpu_family): Likewise.
15788
15789 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
15790
15791         * config/m68k/m68k.h (TARGET_CPU_CPP_BUILTINS): Treat all mc68*
15792         macros besides mc68000 as tuning macros.  Use a switch statement
15793         to set them and mcpu32.
15794
15795 2007-01-12  Julian Brown  <julian@codesourcery.com>
15796
15797         * config/m68k/m68k.h: Use TARGET_68040 instead of TARGET_68040_ONLY.
15798         (TARGET_68040_ONLY): Rename to...
15799         (TARGET_68040): ...this.
15800         * config/m68k/m68k.c: Use TARGET_68040 instead of TARGET_68040_ONLY.
15801         * config/m68k/m68k.md: Likewise.
15802
15803 2007-01-12  Julian Brown  <julian@codesourcery.com>
15804             Nathan Sidwell  <nathan@codesourcery.com>
15805             Richard Sandiford  <richard@codesourcery.com>
15806
15807         * config.gcc (m680[012]0-*-*, m68k*-*-*): Set m68k_cpu_ident to
15808         the -mcpu= argument associated with the --with-cpu setting.
15809         Define M68K_DEFAULT_TUNE to the default -mtune= option,
15810         if different from the one implied by the -mcpu setting.
15811         Accept --with-cpu=FOO if FOO is listed in m68k-devices.def,
15812         using mcpu=FOO as the default CPU option.  Set target_cpu_default2.
15813         * doc/invoke.texi: Mention ColdFire in the introduction to the
15814         m68k options.  Document the new -march, -mcpu, -mtune, -mdiv,
15815         -mno-div and -mhard-float options.  Make -m68881 a synonym for
15816         -mhard-float.  Document the previously-undocumented -m5206e,
15817         -m528x, -m5307 and -m5407 options.  Tweak the existing option
15818         documentation for consistency.
15819         * doc/install.texi: Mention new --with-cpu arguments.
15820         * config/m68k/m68k.h (OPTION_DEFAULT_SPECS): Only use the
15821         default CPU if neither -mcpu nor -march are specified.
15822         (ASM_CPU_SPEC): Pass down -mcpu and -march options.
15823         (TARGET_CPU_CPP_BUILTINS): Set __mcfisa*__ macros from
15824         TARGET_ISA*.  Set the legacy __mcf*__ cpu macros in the same way,
15825         using m68k_tune to decide between families that implement the
15826         same ISA.  Use m68k_tune to set __mcfv4e__.
15827         (FL_BITFIELD, FL_68881, FL_COLDFIRE, FL_CF_HWDIV, FL_CF_MAC)
15828         (FL_CF_EMAC, FL_CF_EMAC_B, FL_CF_USP, FL_CF_FPU, FL_ISA_68000)
15829         (FL_ISA_68010, FL_ISA_68020, FL_ISA_68040, FL_ISA_A, FL_ISA_B)
15830         (FL_ISA_C, FL_ISA_MMU): New macros.
15831         (MASK_COLDFIRE): Delete.
15832         (TARGET_68010, TARGET_68020, TARGET_68040_ONLY, TARGET_COLDFIRE)
15833         (TARGET_ISAB): Redefine in terms of m68k_cpu_flags.
15834         (TARGET_68881, TARGET_COLDFIRE_FPU): Redefine in terms of m68k_fpu.
15835         (TARGET_HARD_FLOAT): Do not define here.
15836         (TARGET_ISAAPLUS, TARGET_ISAC): New macros.
15837         (TUNE_68000): New macro.
15838         (TUNE_68000_10): Redefine in terms of TUNE_68000 and TUNE_68010.
15839         (TUNE_68010, TUNE_68030, TUNE_68040, TUNE_68060, TUNE_CPU32)
15840         (TUNE_CFV2): Redefine in terms of m68k_tune.
15841         (uarch_type, target_device, fpu_type): New enums.
15842         (m68k_cpu, m68k_tune, m68k_fpu, m68k_cpu_flags): Declare.
15843         * config/m68k/m68k.c (TARGET_DEFAULT): Remove MASK_68881.
15844         (FL_FOR_isa_00, FL_FOR_isa_10, FL_FOR_isa_20, FL_FOR_isa_40)
15845         (FL_FOR_isa_cpu32, FL_FOR_isa_a, FL_FOR_isa_aplus, FL_FOR_isa_b)
15846         (FL_FOR_isa_c): New macros.
15847         (m68k_isa): New enum.
15848         (m68k_target_selection): New structure.
15849         (all_devices, all_isas, all_microarchs): New tables.
15850         (m68k_cpu_entry, m68k_arch_entry, m68k_tune_entry, m68k_cpu)
15851         (m68k_tune, m68k_fpu, m68k_cpu_flags): New variables.
15852         (MASK_ALL_CPU_BITS): Delete.
15853         (m68k_find_selection): New function.
15854         (m68k_handle_option): Handle -mcpu=, -march= and -mtune=.
15855         Map the legacy target options to a combination of the new ones.
15856         (override_options): Set m68k_cpu, m68k_tune, m68k_fpu and
15857         m68k_cpu_flags.  Handle M68K_DEFAULT_TUNE.  Use m68k_cpu_flags
15858         to derive default MASK_BITFIELD, MASK_CF_HWDIV and MASK_HARD_FLOAT
15859         settings.
15860         * config/m68k/m68k.opt (m5200, m5206e, m528x, m5307, m5407, mcfv4e)
15861         (m68010, m68020, m68020-40, m68020-60, m68030, m68040): Remove Mask
15862         properties.
15863         (m68881, msoft-float): Change mask from 68881 to HARD_FLOAT.
15864         (march=, mcpu=, mdiv, mhard-float, mtune=): New options.
15865         * config/m68k/m68k-devices.def: New file.
15866
15867 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
15868             Nathan Sidwell  <nathan@codesourcery.com>
15869
15870         * config/m68k/m68k.h (ASM_CPU_SPEC, ASM_SPEC, EXTRA_SPECS)
15871         (SUBTARGET_EXTRA_SPECS): New macros.
15872         * config/m68k/linux.h (ASM_SPEC): Remove CPU flags;
15873         use %(asm_cpu_spec) instead.
15874         * config/m68k/m68k-none.h (ASM_SPEC): Likewise.
15875         * config/m68k/openbsd.h (ASM_SPEC): Likewise.
15876         * config/m68k/netbsd-elf.h (ASM_SPEC): Likewise.
15877         (EXTRA_SPECS): Rename to...
15878         (SUBTARGET_EXTRA_SPECS): ...this.
15879
15880 2007-01-12  Nathan Sidwell  <nathan@codesourcery.com>
15881             Richard Sandiford  <richard@codesourcery.com>
15882             Julian Brown  <julian@codesourcery.com>
15883
15884         * config.gcc (m68k-*-aout*, m68k-*-coff*, m68020-*-elf*, m68k-*-elf*)
15885         (m68k-*-uclinux*, m68k-*-linux*, m68k-*-rtems*): Set default_m68k_cpu
15886         to the configuration's default CPU.
15887         (m68010-*-netbsdelf*, m68k*-*-netbsdelf*, m68k*-*-openbsd*): Likewise.
15888         Remove default masks.
15889         (m680[012]0-*-*): Set the default with_cpu to the first part of
15890         the target name.
15891         (m68k*-*-*): Set the default with_cpu to m$default_m68k_cpu.
15892         (m68k*-*-linux): Extend the --with-cpu handling to...
15893         (m680[012]0-*-*, m68k*-*-*): ...these configurations.  Allow m68000
15894         and m68010.  Don't set target_cpu_default2.
15895         * doc/install.texi: Document --with-cpu for m68k.
15896         * config/m68k/m68k.h (OPTION_DEFAULT_SPECS): Define.
15897         * config/m68k/m68k-none.h (TARGET_CPU_DEFAULT, M68K_CPU_m68k)
15898         (M68K_CPU_m68000, M68K_CPU_m68010, M68K_CPU_m68020, M68K_CPU_m68030)
15899         (M68K_CPU_m68040, M68K_CPU_m68302, M68K_CPU_m68332, TARGET_DEFAULT)
15900         (ASM_CPU_DEFAULT_SPEC, CC1_CPU_DEFAULT_SPEC): Delete.
15901         (ASM_SPEC): Remove use of %(asm_cpu_default).
15902         (EXTRA_SPECS, SUBTARGET_EXTRA_SPECS, MULTILIB_DEFAULTS): Delete.
15903         * config/m68k/linux.h (TARGET_DEFAULT): Delete.
15904         (CPP_SPEC): Merge definitions.  Do not handle __HAVE_68881__ here.
15905         * config/m68k/netbsd-elf.h (TARGET_OS_CPP_BUILTINS): Define
15906         __HAVE_FPU__ if TARGET_HARD_FLOAT.
15907         (TARGET_DEFAULT): Delete.
15908         (EXTRA_SPECS): Delete cpp_cpu_default_spec, cpp_cpu_spec,
15909         cpp_fpu_spec, asm_default_spec and netbsd_cpp_spec.
15910         (CPP_CPU_SPEC): Delete.
15911         (TARGET_VERSION): Merge definitions, using TARGET_68010 to pick
15912         the appropriate string.
15913         (CPP_CPU_DEFAULT_SPEC, ASM_DEFAULT_SPEC, CPP_FPU_SPEC): Delete.
15914         (CPP_SPEC): Define to NETBSD_CPP_SPEC.
15915         (ASM_SPEC): Don't use %(asm_default_spec).
15916         * config/m68k/m68k.c (TARGET_DEFAULT_TARGET_FLAGS): Remove
15917         TARGET_DEFAULT and add MASK_68881.
15918         * config/m68k/m68k.md: Remove mention of TARGET_DEFAULT from comments.
15919
15920 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
15921
15922         * config.gcc (m68010-*-netbsdelf*): Add MASK_68010.
15923         (m68k*-*-netbsdelf*, m68k*-*-openbsd*, m68k*-linux*): Add
15924         MASK_68010 alongside MASK_68020.
15925         * doc/invoke.texi: Document -m68010.
15926         * config/m68k/m68k.opt (m68010): New.
15927         * config/m68k/m68k.h (TARGET_CPU_CPP_BUILTINS): Define mc68010
15928         if TUNE_68010.
15929         (TUNE_68010): New macro.
15930         * config/m68k/m68k-none.h (M68K_CPU_m68k, M68K_CPU_m68010)
15931         (M68K_CPU_m68020, M68K_CPU_m68030, M68K_CPU_m68040)
15932         (M68K_CPU_m68332): Add MASK_68010.
15933         * config/m68k/linux.h (TARGET_DEFAULT): Add MASK_68010 to
15934         fallback definition.
15935         * config/m68k/netbsd-elf.h (CPP_CPU_SPEC): Remove now-redundant
15936         defines.
15937         * config/m68k/m68k.c (MASK_ALL_CPU_BITS): Add MASK_68010.
15938         (m68k_handle_option): Handle OPT_m68010.  Add MASK_68010
15939         to all entries that use MASK_68020.
15940         (output_move_simode_const, output_move_himode, output_move_qimode)
15941         (output_move_stricthi, output_move_strictqi): Use TARGET_68010
15942         instead of TARGET_68020 to select clr behavior.  Remove comment
15943         about there being no TARGET_68010.
15944         * config/m68k/m68k.md: Likewise throughout.
15945
15946 2007-01-12  Julian Brown  <julian@codesourcery.com>
15947
15948         * config/m68k/m68k.h (TARGET_ISAB): New macro.
15949         * config/m68k/m68k.c: Use TARGET_ISAB rather than TARGET_CFV4.
15950         * config/m68k/m68k.md: Likewise.
15951
15952 2007-01-12  Julian Brown  <julian@codesourcery.com>
15953
15954         * config/m68k/m68k.h (LEGITIMATE_INDEX_P, LEGITIMIZE_ADDRESS): Use
15955         TARGET_COLDFIRE_FPU instead of TARGET_CFV4E.
15956
15957 2007-01-12  Julian Brown  <julian@codesourcery.com>
15958
15959         * config/m68k/m68k.h (TUNE_68040_60): New macro.
15960         * config/m68k/m68k.c (standard_68881_constant_p): Use it.
15961         * config/m68k/m68k.md: Likewise.
15962
15963 2007-01-12  Julian Brown  <julian@codesourcery.com>
15964             Richard Sandiford  <richard@codesourcery.com>
15965
15966         * config/m68k/m68k.h (TARGET_CPU_CPP_BUILTINS): Use TUNE_68030
15967         instead of TARGET_68030, TUNE_68040 instead of TARGET_68040,
15968         TUNE_68060 instead of TARGET_68060 and TUNE_CPU32 instead of
15969         TARGET_CPU32.
15970         (TARGET_CPU32): Rename to...
15971         (TUNE_CPU32): ...this.
15972         (TUNE_68000_10, TUNE_68030, TUNE_68040, TUNE_68060)
15973         (TUNE_CFV2): New macros.
15974         * config/m68k/netbsd-elf.h (LONG_DOUBLE_TYPE_SIZE): Simplify;
15975         remove conditions that are implied by TARGET_68020.
15976         * config/m68k/m68k.c (m68k_output_function_prologue): Use TUNE_68040
15977         instead of TARGET_68040 and TUNE_CPU32 instead of TARGET_CPU32.
15978         (m68k_output_function_epilogue): Likewise.
15979         (m68k_rtx_costs): Likewise.  Use TUNE_68060 instead of TARGET_68060
15980         and TUNE_CFV2 instead of TARGET_5200.  Use TUNE_68000_10 instead of
15981         "!TARGET_68020 && !TARGET_COLDFIRE" to choose between 68000 and
15982         non-68000 timings.  Refactor multiplication and division costs.
15983         (output_addsi3): Use TUNE_68040 instead of TARGET_68040 and
15984         TUNE_CPU32 instead of TARGET_CPU32.
15985         (standard_68881_constant_p): Use TUNE_68040 instead of TARGET_68040
15986         and TUNE_68060 instead of TARGET_68060.
15987         * config/m68k/m68k.md: Use TUNE_68040 instead of TARGET_68040,
15988         TUNE_68060 instead of TARGET_68060, and TUNE_CPU32 instead of
15989         TARGET_CPU32.
15990         (movsi_const0): Use TUNE_68000_10 rather than "!TARGET_68020
15991         && !TARGET_COLDFIRE" to choose between moveq and clr.
15992         Likewise in the unnamed movsf pattern.
15993         (ashlsi_17_24, lshrsi_17_24): Guard with TUNE_68000_10 rather than
15994         "!TARGET_68020 && !TARGET_COLDFIRE".  Likewise the unnamed
15995         ashiftrt pattern.
15996
15997 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
15998
15999         * config/m68k/m68k.h (TARGET_CPU_CPP_BUILTINS): Increase amount
16000         of tabbing before backslashes.
16001
16002 2007-01-11  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
16003
16004         * pa-linux.h (ASM_OUTPUT_INTERNAL_LABEL): Undefine.
16005         * pa.h (ASM_OUTPUT_LABEL): Output colon when using GAS.
16006         (ASM_OUTPUT_INTERNAL_LABEL): Define.
16007
16008 2007-01-11  Zdenek Dvorak <dvorakz@suse.cz>
16009
16010         * tree-ssa-loop-ivopts.c (extract_cond_operands): Split from
16011         find_interesting_uses_cond.
16012         (find_interesting_uses_cond): Use extract_cond_operands.
16013         (rewrite_use_compare): Use extract_cond_operands and
16014         force_gimple_operand_bsi.  Do not call update_stmt.
16015         (determine_use_iv_cost_condition): Use extract_cond_operands.
16016         Return cheaper of using original bound and changing the exit bound.
16017
16018 2007-01-11  Zdenek Dvorak <dvorakz@suse.cz>
16019
16020         PR tree-optimization/29516
16021         * tree-ssa-address.c (tree_mem_ref_addr, add_to_parts,
16022         most_expensive_mult_to_index, addr_to_parts,
16023         create_mem_ref, maybe_fold_tmr): Make the type of
16024         fields of TARGET_MEM_REF sizetype.
16025         (move_fixed_address_to_symbol, move_pointer_to_base):
16026         New functions.
16027         * tree.def (TARGET_MEM_REF): Add comment on types of
16028         the operands.
16029
16030 2007-01-11  Joseph Myers  <joseph@codesourcery.com>
16031
16032         * c-common.c (vector_types_convertible_p): Treat opaque types as
16033         always convertible if they have the same size, but not otherwise.
16034
16035 2007-01-11  Steven Bosscher  <steven@gcc.gnu.org>
16036
16037         * ifcvt.c (struct noce_if_info): Add comments to the fields.
16038         Remove the b_unconditional field.
16039         (noce_try_sign_mask): Do not look at b_unconditional.
16040         (noce_process_if_block): Do not use merge_if_blocks.  Update
16041         the CFG here.  Do not set b_unconditional.
16042         (cond_move_process_if_block): Likewise.
16043         (find_cond_trap): Likewise.
16044         (check_cond_move_block): Require simple jump insns at the end
16045         of the basic block.
16046
16047 2007-01-11  Jan Hubicka  <jh@suse.cz>
16048
16049         PR tree-optimization/1046
16050         * tree-tailcall.c (suitable_for_tail_call_opt_p): Use TREE_ADDRESSABLE
16051         when alias info is not ready.
16052         (pass_tail_recursion): Do not require aliasing.
16053         * tree-ssa-copyrename.c (pass_rename_ssa_cop): Likewise.
16054         * tree-ssa-ccp.c (pass_ccp, pass_fold_builtins): Likewise.
16055         * tree-ssa-copy.c (pass_copy_prop): Likewise.
16056         * tree-ssa-forwprop.c (pass_forwprop): Likewise.
16057         * tree-ssa-dce.c (pass_dce, pass_dce_loop, pass_cd_dce): Likewise.
16058         * passes.c (init_optimization_passes): Execute rename_ssa_copies,
16059         ccp, forwprop, copy_prop, merge_phi, copy_prop, dce and tail recursion
16060         before inlining.
16061         * tree-ssa-operands.c (add_virtual_operand, get_indirect_ref_operand):
16062         When aliasing is not build, mark statement as volatile.
16063
16064 2007-01-11  Tom Tromey  <tromey@redhat.com>
16065
16066         PR preprocessor/15185, PR preprocessor/20989:
16067         * doc/cppopts.texi <-MT>: Update description of algorithm for
16068         computing default target.
16069         <-M, -MD>: Reword "basename" text.
16070
16071 2007-01-11  Roger Sayle  <roger@eyesopen.com>
16072
16073         * builtins.c (expand_builtin_pow, expand_builtin_powi,
16074         fold_builtin_cabs, fold_builtin_sqrt, fold_builtin_trunc,
16075         fold_builtin_floor, fold_builtin_ceil, fold_builtin_round,
16076         fold_builtin_int_int_roundingfn, fold_builtin_bitop,
16077         fold_builtin_bswap, real_constp, fold_builtin_pow,
16078         fold_builtin_powi, fold_builtin_signbit, fold_builtin_copysign,
16079         do_mpfr_arg1, do_mpfr_arg2, do_mpfr_arg3, do_mpfr_sincos): Replace
16080         uses of the macro TREE_CONSTANT_OVERFLOW with TREE_OVERFLOW.
16081         * convert.c (convert_to_pointer): Likewise.
16082         * expr.c (highest_pow2_factor, expand_expr_real_1): Likewise.
16083         * fold-const.c (force_fit_type, fold_negate_expr, int_const_binop,
16084         const_binop, fold_convert_const_int_from_int,
16085         fold_convert_const_int_from_real,
16086         fold_convert_const_real_from_real, sign_bit_p,
16087         optimize_minmax_comparison, extract_muldiv_1, fold_div_compare,
16088         fold_sign_changed_comparison, fold_unary, fold_comparison,
16089         fold_binary, multiple_of_p, tree_Expr_non_zero_p,
16090         fold_negate_const, fold_abs_const, fold_not_const): Likewise.
16091         * print-tree.c (print_node_brief, print_node): Likewise.
16092         * stor-layout.c (place_field, layout_type): Likewise.
16093         * tree-chrec.c (keep_cast): Likewise.
16094         * tree.c (build_vector, build_real, build_real_from_int_cst,
16095         build_complex): Likewise.
16096
16097 2007-01-11  Roger Sayle  <roger@eyesopen.com>
16098
16099         * tree.h (TREE_CONSTANT_OVERFLOW): Obsolete.  For the time being,
16100         treat TREE_CONSTANT_OVERFLOW as a synonym of TREE_OVERFLOW.
16101
16102 2007-01-11  Paolo Bonzini  <bonzini@gnu.org>
16103
16104         * configure.ac (strict1_warn): Rename to strict_warn.
16105         (WERROR, --enable-werror, symlink hacks, stage1_cflags,
16106         cc_set_by_configure, quoted_cc_set_by_configure,
16107         stage_prefix_set_by_configure, quoted_stage_prefix_set_by_configure,
16108         all_boot_languages, all_stagestuff): Remove.
16109         (target_list): Remove bootstrap targets.
16110         * Makefile.in (quickstrap): Unconditionally make a synonym of all.
16111         (BOOT_LANGUAGES, STAGE1_CFLAGS, STAGE1_CHECKING,
16112         REMAKEFLAGS, FLAGS_TO_PASS, PREPEND_DOTDOT_TO_RELATIVE_PATHS,
16113         SUBDIR_FLAGS_TO_PASS, WERROR_FLAGS, STRICT2_WARN, LANG_STAGESTUFF,
16114         VOL_FILES, POSTSTAGE1_FLAGS_TO_PASS, STAGE2_FLAGS_TO_PASS,
16115         STAGEPROFILE_FLAGS_TO_PASS, STAGEFEEDBACK_FLAGS_TO_PASS, stage1_build,
16116         stage1_copy, stage2_build, stage2_copy, stageprofile_build,
16117         stageprofile_copy, stage3_build, stage3_copy, stagefeedback_build,
16118         stagefeedback_copy, stage4_build, clean_s1, clean_sw, bootstrap,
16119         bootstrap-lean, bootstrap2, bootstrap2-lean, bootstrap3,
16120         bootstrap3-lean, bootstrap4, bootstrap4-lean, unstage1, unstage2,
16121         unstage3, unstage4, unstageprofile, unstagefeedback, restage, restage2,
16122         restage3, restage4, restageprofile, restagefeedback, bubbleestrap,
16123         cleanstrap, unstrap, restrap, *compare, *compare3, *compare4,
16124         *compare-lean, *compare3-lean, *compare4-lean, stage1-start, stage1,
16125         stage2-start, stage2, stage3-start, stage3, stage4-start, stage4,
16126         stageprofile-start, stageprofile, stagefeedback-start, stagefeedback,
16127         risky-stage1, risky-stage2, risky-stage3, risky-stage4): Remove.
16128         (ORDINARY_FLAGS_TO_PASS): Rename to FLAGS_TO_PASS.
16129         (STAGECOPYSTUFF, STAGEMOVESTUFF): Consolidate into MOSTLYCLEANFILES.
16130         (mostlyclean): Adjust.
16131         (clean, distclean): Don't mention bootstrap stuff.
16132         * configure: Regenerate.
16133         * ada/config-lang.in, cp/config-lang.in, forttran/config-lang.in,
16134         java/config-lang.in, objc/config-lang.in, objcp/config-lang.in,
16135         treelang/config-lang.in (stagestuff): Remove.
16136         * doc/sourcebuild.texi (stage1, stage2, stage3, stage4,
16137         stageprofile, stagefeedback, stagestuff): Remove mention.
16138
16139 2007-01-11  Nick Clifton  <nickc@redhat.com>
16140
16141         * config/mcore/predicates.md (mcore_general_movesrc_operand):
16142         Accept CONSTs.
16143         (mcore_general_movdst_operand): Do not accept CONST_INTs.
16144         (mcore_arith_K_S_operand): Run the test for the S constraint not
16145         the test for the M constraint.
16146         (mcore_addsub_operand): Do not accept integer values that are
16147         larger than 32 bits.
16148         * config/mcore/mcore.md: Remove unused constraints from split.
16149         (andsi3): Use HOST_WIDE_INT instead of int to hold an INTVAL.
16150         (addsi3): Likewise.
16151         (allocate_stack): Likewise.
16152         * config/mcore/mcore.c (mcore_print_operand): Restrict output of P
16153         operands to 32 bits.
16154         (mcore_const_costs): Use HOST_WIDE_INT instead of int to hold an
16155         INTVAL.
16156         (mcore_and_cost, mcore_modify_comparison, const_ok_for_mcore,
16157         mcore_const_ok_for_inline, mcore_const_trick_uses_not,
16158         try_constant_tricks, mcore_num_ones, mcore_num_zeros,
16159         mcore_output_bclri, mcore_output_andn, output_inline_const,
16160         mcore_output_move, mcore_output_movedouble): Likewise.
16161         (mcore_output_cmov): Use CONST_OK_FOR_M and CONST_OK_FOR_N.
16162         (output_inline_const): Likewise.
16163         (output_inline_const): Fix format strings used in sprintf
16164         statements.
16165         * config/mcore/mcore-protos.h: Update prototypes for changed
16166         functions in mcore.c.
16167         * config/mcore/mcore.h (CONST_OK_FOR_I): Cast values to
16168         HOST_WIDE_INT and not int.
16169         (CONST_OK_FOR_J, CONST_OK_FOR_K, CONST_OK_FOR_L, CONST_OK_FOR_M,
16170         CONST_OK_FOR_N): Likewise.
16171         (LEGITIMATE_CONSTANT_P): Also check CONSTANT_P.
16172         (GO_IF_LEGITIMATE_INDEX): Use HOST_WIDE_INT instead of int to hold
16173         an INTVAL.
16174
16175 2007-01-10  Jan Hubicka  <jh@suse.cz>
16176
16177         * tree-vrp.c (remove_range_assertions): Release defs.
16178         * tree-ssa-loop-ivopts.c (rmeove_statement): Likewise.
16179         * tree-ssa-dom.c (remove_stmt_or_phi): Likewise.
16180
16181 2007-01-10  Paul Brook  <paul@codesourcery.com>
16182
16183         * config/arm/arm.c (arm_rtx_costs_1): Handle mutiply-subtract.
16184         * config/arm/arm.md (mulsi3subsi): New insn.
16185
16186 2007-01-10  Zdenek Dvorak <dvorakz@suse.cz>
16187
16188         * tree-ssa-loop-manip.c (tree_unroll_loop): Make it a wrapper over ...
16189         (tree_transform_and_unroll_loop): New.
16190         * tree-flow.h (transform_callback, tree_transform_and_unroll_loop):
16191         Declare.
16192
16193 2007-01-10  Robert Kennedy <jimbob@google.com>
16194
16195         * fold-const.c (fold_comparison): Fold comparisons like (x *
16196         1000 < 0) to (x < 0).
16197
16198 2007-01-10  Ian Lance Taylor  <iant@google.com>
16199
16200         * tree-pretty-print.c (dump_generic_node): Print parentheses when
16201         operands have the same priority.
16202
16203 2007-01-10  Tom Tromey  <tromey@redhat.com>
16204
16205         * fold-const.c (fold_truthop): Don't check can_use_bit_fields_p.
16206         (fold_binary): Likewise.
16207         * langhooks.c (lhd_can_use_bit_fields_p): Removed.
16208         * langhooks-def.h (lhd_can_use_bit_fields_p): Removed.
16209         (LANG_HOOKS_CAN_USE_BIT_FIELDS_P): Removed.
16210         (LANG_HOOKS_INITIALIZER): Remove LANG_HOOKS_CAN_USE_BIT_FIELDS_P.
16211         * langhooks.h (struct lang_hooks): Removed field
16212         'can_use_bit_fields_p'.
16213
16214 2007-01-10  Ralf Corsépius <ralf.corsepius@rtems.org>
16215
16216         * config/bfin/t-bfin, config/bfin/t-bfin-elf: Remove GCC_CFLAGS.
16217
16218 2007-01-10  Razya Ladelsky  <razya@il.ibm.com>
16219
16220         * function.c (get_last_funcdef_no): New function.
16221         * function.h (get_last_funcdef_no): Declare.
16222         * tree-inline.c (initialize_cfun): Add initialization.
16223         (tree_function_versioning): Cleanup.
16224
16225 2007-01-10  Jan Hubicka  <jh@suse.cz>
16226
16227         * tree-inline.c (setup_one_parameter): Do not propagate into abnormal
16228         PHIs.
16229
16230 2007-01-10  Sa Liu  <saliu@de.ibm.com>
16231             Ben Elliston  <bje@au.ibm.com>
16232
16233         * spu.h (STACK_SAVE_AREA): Use VOIDmode for SAVE_FUNCTION, SImode
16234         for SAVE_NONLOCAL and Pmode for any other save level.
16235         * spu-protos.h (spu_restore_stack_block): Declare.
16236         * spu.md (save_stack_block): Remove.
16237         (restore_stack_block): Call spu_restore_stack_block.
16238         * spu.c (spu_restore_stack_block): New function.
16239         (spu_expand_epilogue): Remove old comment.
16240
16241 2007-01-09  Zdenek Dvorak <dvorakz@suse.cz>
16242
16243         PR tree-optimization/30322
16244         * tree-ssa-loop-ivopts.c (fold_affine_expr, iv_value): Removed.
16245         (cand_value_at): Return the value as aff_tree.
16246         (may_eliminate_iv): Convert the bound from aff_tree to tree.
16247         * tree-affine.c (aff_combination_add_cst, aff_combination_add_product,
16248         aff_combination_mult): New functions.
16249         (aff_combination_add): Use aff_combination_add_cst.
16250         (aff_combination_convert): Allow conversions to a wider type.
16251         (tree_to_aff_combination): Handle BIT_NOT_EXPR.
16252         * tree-affine.h (aff_combination_mult): Declare.
16253
16254 2007-01-09  Carlos O'Donell  <carlos@codesourcery.com>
16255
16256         * doc/tm.texi: Update documentation to reflect reality of exec
16257         and start file search behaviours. Update copyright year.
16258         * doc/invoke.texi: Explain how GCC_EXEC_PREFIX is used to find
16259         header file directories.
16260
16261 2007-01-09  Uros Bizjak  <ubizjak@gmail.com>
16262
16263         * config/i386/i386.md (*sinxf2): Rename to *sinxf2_i387.
16264         (*cosxf2): Rename to cosxf2_i387.
16265         (*sindf2, *sinsf2): Extend operand 1 to XFmode.  Macroize patterns
16266         using X87MODEF12 mode macro. Rename patterns to
16267         *sin_extend<mode>xf2_i387.  Use SSE_FLOAT_MODE_P to disable patterns
16268         for SSE math.
16269         (*cosdf2, *cossf2): Ditto.
16270         (sincosdf3, sincossf3): Ditto.  Rewrite corresponding splitters
16271         to match extended input operands.
16272         (sincos<mode>3): New expander.
16273         (*sinextendsfdf2, *cosextendsfdf2, *sincosextendsfdf3): Remove
16274         insn patterns and corresponding splitters.
16275
16276 2007-01-09  Kaz Kojima  <kkojima@gcc.gnu.org>
16277
16278         * config/sh/t-linux (TARGET_LIBGCC2_CFLAGS): Delete.
16279         (SHLIB_MAPFILES, SHLIB_LINK, SHLIB_INSTALL): Likewise.
16280
16281 2007-01-09  Nicolas Pitre  <nico@cam.org>
16282
16283         PR target/30173
16284         * arm/ieee754-df.S (Lad_s): Also test the low word of X for zero.
16285
16286 2007-01-08  Geoffrey Keating  <geoffk@apple.com>
16287
16288         * target.h (struct gcc_target): New field library_rtti_comdat.
16289         * target-def.h (TARGET_CXX_LIBRARY_RTTI_COMDAT): New.
16290         (TARGET_CXX): Add TARGET_CXX_LIBRARY_RTTI_COMDAT.
16291         * doc/tm.texi (C++ ABI): Document TARGET_CXX_LIBRARY_RTTI_COMDAT.
16292         * config/darwin.h (TARGET_CXX_LIBRARY_RTTI_COMDAT): Define.
16293
16294 2007-01-08  Geoffrey Keating  <geoffk@apple.com>
16295
16296         * doc/invoke.texi (Optimize Options): Correct description of -O0.
16297
16298 2007-01-08  Richard Guenther  <rguenther@suse.de>
16299
16300         * tree.h (force_fit_type_double): Export.
16301         (force_fit_type): Remove.
16302         * fold-const.c (force_fit_type_double): New function.
16303         (force_fit_type): Remove.
16304         (int_const_binop): Use it.
16305         (fold_convert_const_int_from_int): Likewise.
16306         (fold_convert_const_int_from_real): Likewise.
16307         (fold_div_compare): Likewise.
16308         (fold_sign_changed_comparison): Likewise.
16309         (fold_unary): Likewise.
16310         (fold_negate_const): Likewise.
16311         (fold_abs_const): Likewise.
16312         (fold_not_const): Likewise.
16313         * c-common.c (shorten_compare): Use force_fit_type_double.
16314         * convert.c (convert_to_pointer): Likewise.
16315
16316 2007-01-08  Richard Guenther  <rguenther@suse.de>
16317
16318         * tree.h (build_int_cst_wide_type): Export.
16319         * tree.c (build_int_cst_wide_type): New function.
16320         (build_int_cst_wide): Fix comment.
16321         * builtins.c (fold_builtin_object_size): Use build_int_cst
16322         to build -1 or 0 of the correct type.  Use fit_double_type
16323         to check for overflow.
16324         * fold-const.c (optimize_bit_field_compare): Use build_int_cst_type
16325         to build the mask.
16326         (decode_field_reference): Likewise.
16327         (all_ones_mask_p): Likewise.
16328         (native_interpret_int): Use build_int_cst_wide_type.
16329         (fold_binary): Use build_int_cst_type to build an all-ones
16330         value.
16331         * stor-layout.c (set_sizetype): Use build_int_cst_wide_type.
16332
16333 2007-01-08  Daniel Jacobowitz  <dan@codesourcery.com>
16334
16335         * config/pa/t-pa64 (libgcc_stub.a): Use $(T).
16336
16337 2007-01-09  Ben Elliston  <bje@au.ibm.com>
16338
16339         * genautomata.c (STATS_OPTION): New option.
16340         (stats_flag): New flag.
16341         (gen_automata_option): Handle it.
16342         (initiate_automaton_gen): Ditto.
16343         (write_automata): Output statistics only if stats_flag is
16344         set. Likewise, output time statistics only if time_flag is set.
16345         * doc/md.texi (Processor pipeline description): Document new flag.
16346
16347 2007-01-08  Richard Guenther  <rguenther@suse.de>
16348
16349         * builtins.c (fold_builtin_int_roundingfn): Use fit_double_type.
16350         * tree.c (build_int_cst_type): Likewise.
16351         (size_in_bytes): Don't call force_fit_type on the result.
16352         (int_fits_type_p): Use fit_double_type.
16353         * fold-const.c (fit_double_type): New function.
16354         (force_fit_type): Use it.
16355         * tree.h (fit_double_type): Export.
16356
16357 2007-01-08  Jan Hubicka  <jh@suse.cz>
16358
16359         * tree-vectorizer.c (gate_increase_alignment): Fix return type.
16360         * ipa.c (function_and_variable_visibility): Fix return type.
16361
16362 2007-01-08  Richard Guenther  <rguenther@suse.de>
16363
16364         * tree-ssa-ccp.c (maybe_fold_offset_to_array_ref): Use type
16365         of offset to build the index.
16366         * tree-pretty-print.c (dump_generic_node): Don't build negated
16367         const just for printing.
16368         * c-pretty-print.c (pp_c_integer_constant): Likewise.
16369         * builtins.c (fold_builtin_int_roundingfn): Check if result
16370         fits the type by using force_fit_type and comparing the result.
16371         * predict.c (predict_loops): Use compare_tree_int for comparison.
16372         * tree.c (build_int_cst): Fall back to integer_type_node for
16373         NULL_TREE type.
16374         (build_int_cst_wide): Assert type is non-null.
16375
16376 2007-01-08  Roberto Costa  <roberto.costa@st.com>
16377
16378         * tree-vrp.c (extract_range_from_cond_expr): New.
16379         (extract_range_from_expr): Handle COND_EXPR nodes used as expressions.
16380         * tree-ssa-ccp.c (get_maxval_strlen): Handle COND_EXPR nodes used
16381         as expressions.
16382         (fold_stmt): Bug fix, avoid infinite recursion when folding COND_EXPRs.
16383         * tree-ssa-forwprop.c (simplify_cond, forward_propagate_into_cond,
16384         tree_ssa_forward_propagate_single_use_vars): Handle COND_EXPR nodes
16385         used as expressions.
16386         * tree-object-size.c (cond_expr_object_size): New.
16387         (collect_object_sizes_for): Handle COND_EXPR nodes used as expressions.
16388
16389 2007-01-08  Jan Hubicka  <jh@suse.cz>
16390
16391         * tree-ssa-forwprop.c (forward_propagate_into_cond,
16392         tree_ssa_forward_propagate_single_use_va): Release defs of propagated
16393         statement.
16394
16395 2007-01-08  Richard Guenther  <rguenther@suse.de>
16396
16397         PR tree-optimization/23603
16398         * tree-vrp.c (set_value_range_to_truthvalue): New function.
16399         (extract_range_from_binary): Fall back to truthvalue instead of
16400         varying for TRUTH_*_EXPR.
16401         (extract_range_from_comparison): Fall back to truthvalue instead of
16402         varying.
16403         (vrp_visit_phi_node): Don't adjust new range bounds to +INF/-INF
16404         if all visited PHI values were constant.
16405
16406 2007-01-08  Jan Hubicka  <jh@suse.cz>
16407
16408         * cgraphunit.c (cgraph_process_new_functions): Reset reachable flag.
16409         (cgraph_analyze_function): break out from ...
16410         (cgraph_finalize_compilation_unit): ... here.
16411         (cgraph_expand_function): Remove forgoten commented out line.
16412         (cgraph_optimize): Analyze functions.
16413
16414 2007-01-08  Jan Hubicka  <jh@suse.cz>
16415
16416         * tree-pas.h (TODO_remove_function): New flag.
16417         (TODO_update*): Renumber.
16418         (pass_ipa_increase_alignment,
16419         pass_ipa_function_and_variable_visibility): New passes.
16420         * cgraphunit.c (cgraph_increase_alignment): Move to tree-vectorizer.c
16421         (cgraph_function_and_variable_visibility): Move to ipa.c
16422         (cgraph_optimize): Don't call cgraph_function_and_variable_visibility,
16423         cgraph_increase_alignment.
16424         * ipa-inline.c (cgraph_decide_inlining): Don't push timevar.
16425         (cgraph_decide_inlining_incrementally): Push TV_INTEGRATION before
16426         calling tree-inline.
16427         (cgraph_early_inlining): Do not call cgraph_remove_unreachable_nodes.
16428         (pass_ipa_inline, pass_early_ipa_inlining): Set TODO_remove_functions
16429         * tree-vectorizer.c (increase_alignment): Move here from cgraphunit.c
16430         (gate_increase_alignment): New function.
16431         (pass_ipa_increase_alignment): New pass.
16432         * ipa.c: Inline tree-pass.h and timevar.h
16433         (function_and_variable_visibility): Move here from cgraphunit.c
16434         * tree-optimize.c (pass_early_local_passes): Add TODO_remove_functions.
16435         * passes.c (init_optimization_passes): Add the two new passes.
16436         (execute_todo): Handle cgraph_remove_functions.
16437
16438 2007-01-08  Nick Clifton  <nickc@redhat.com>
16439
16440         * config/frv/predicates.md (reg_or_0_operand): Accept
16441         CONST_DOUBLEs.
16442
16443 2007-01-08  Ralf Corsépius <ralf.corsepius@rtems.org>
16444
16445         * config/bfin/rtems.h, config/bfin/t-rtems: New.
16446         * config.gcc: Add bfin*-rtems*.
16447
16448 2007-01-08  Mark Shinwell  <shinwell@codesourcery.com>
16449
16450         * c.opt: Add -flax-vector-conversions.
16451         * c-typeck.c (convert_for_assignment): Pass flag to
16452         vector_types_convertible_p to allow emission of note.
16453         (digest_init): Likewise.
16454         * c-opts.c: Handle -flax-vector-conversions.
16455         * c-common.c (flag_lax_vector_conversions): New.
16456         (vector_types_convertible_p): Unless -flax-vector conversions
16457         has been passed, disallow conversions between vectors with
16458         differing numbers of subparts and/or element types.  If such
16459         a conversion is disallowed, possibly emit a note on the first
16460         occasion only to inform the user of -flax-vector-conversions.
16461         The new last argument specifies this.
16462         * c-common.h (flag_lax_vector_conversions): New.
16463         (vector_types_convertible_p): Add extra argument.
16464         * config/i386/i386.c (ix86_init_mmx_sse_builtins): Use
16465         char_type_node for V*QI type vectors.
16466         * config/rs6000/rs6000-c.c (altivec_overloaded_builtins):
16467         Update to satisfy new typechecking rules.
16468         * config/rs6000/altivec.h (vec_cmple): Use vec_cmpge, for both
16469         C and C++ variants.
16470         * doc/invoke.texi (C Dialect Options): Document
16471         -flax-vector-conversions.
16472
16473 2007-01-08  Mark Shinwell  <shinwell@codesourcery.com>
16474
16475         PR tree-optimization/29877
16476         * tree-ssa-ter.c (is_replaceable_p): Deem assignments with
16477         a register variable on the RHS to not be replaceable.
16478
16479 2007-01-08  Chen Liqin  <liqin@sunnorth.com.cn>
16480         * config/score/t-score-elf (MULTILIB_OPTIONS): Change.
16481         * config/score/predicates.md (const_uimm5, sr0_operand, const_simm12,
16482         const_simm15, const_pow2, const_npow2): Added.
16483         * config/score/misc.md (insv, extv, extzv, movmemsi,
16484         move_lbu_a/b, mov_lhu_a/b etc): Added and fix some bug.
16485         * config/score/score.c (score_address_cost, score_select_cc_mode):
16486         Added.
16487         Change CONST_OK_FOR_LETTER_P/EXTRA_CONSTRAINT define.
16488         Update score_rtx_costs for MACRO TARGET_RTX_COSTS.
16489         Update score_print_operand.
16490         * config/score/score.h (DATA_ALIGNMENT, SELECT_CC_MODE): Added.
16491         Adjust register allocate order and update some macro define.
16492         * config/score/score-mdaux.c (mdx_unaligned_load, mdx_unsigned_store,
16493         mdx_block_move_straight, mdx_block_move_loop_head,
16494         mdx_block_move_loop_body, mdx_block_move_loop_foot, mdx_block_move_loop,
16495         mdx_block_move): Added.
16496         (mdx_movsicc, mdp_select_add_imm, mdp_select, mds_zero_extract_andi,
16497         mdp_limm): Updated and fix some bug and typo.
16498         * config/score/score.md (movqi/hi/si, add/sub/zero/ext): Updated.
16499         (movsf, movdf, doloop_end): Added.
16500
16501 2007-01-08  Kazu Hirata  <kazu@codesourcery.com>
16502
16503         * config/arm/arm.c, config/arm/arm.h, config/arm/arm.md,
16504         config/arm/thumb2.md: Fix comment typos.
16505         * doc/extend.texi: Fix a typo.
16506
16507 2007-01-07  Eric Christopher  <echristo@apple.com>
16508
16509         * configure.ac: Check for __stack_chk_fail for darwin.
16510         * configure: Regenerate.
16511
16512 2007-01-07  Richard Guenther  <rguenther@suse.de>
16513
16514         * tree-vrp.c (extract_range_from_assert): CSE calls to
16515         compare_values where possible.
16516         (extract_range_from_unary_expr): Likewise.
16517
16518 2007-01-07  Anatoly Sokolov <aesok@post.ru>
16519
16520         * config/avr/avr-protos.h (call_insn_operand): Delete prototype.
16521         * config/avr/avr.c (call_insn_operand): Delete function.
16522         * config/avr/avr.md (*pushqi, *pushhi, *pushsi, *pushsf): Use REG_SP
16523         instead of register number. Use predicates.
16524         * config/avr/predicates.md (const0_operand, reg_or_0_operand,
16525         call_insn_operand): Add.
16526
16527 2007-01-06  Jan Hubicka  <jh@suse.cz>
16528
16529         * tree-pass.h (pass_build_cgraph_edges): Declare.
16530         * cgraphunit.c (record_refernece): Move to cgraphbuild.c
16531         (visited_nodes): Remove.
16532         (cgraph_create_edges): Move to cgraphbuild.c; rename to
16533         build_cgrpah_edges; make visited_nodes local.
16534         (cgraph_process_new_functions): DO not call initialize_inline_failed.
16535         (record_references_in_initializer): Move to cgraphbuild.c
16536         (initialize_inline_failed, rebuild_cgraph_edges,
16537         pass_rebuild_cgraph_edges): Move to cgraphbuild.c.
16538         (verify_cgraph_node): Make visited_nodes local.
16539         (cgraph_analyze_function): Do not call cgraph_create_edges and
16540         initialize_inline_failed.
16541         (cgraph_expand_function): Do not call cgraph_lower_function;
16542         assert that function is already lowered.
16543         * Makefile.in (cgraphbuild.o): New.
16544         * passes.c (init_optimization_passes): Add pass_build_cgraph_edges
16545         at the end of lowering passes.
16546
16547 2007-01-06  Steven Bosscher  <steven@gcc.gnu.org>
16548
16549         * ifcvt.c (cond_move_convert_if_block): New function, code
16550         factored out from...
16551         (cond_move_process_if_block): ...here.  Call the new function
16552         on the THEN and ELSE blocks.
16553         (merge_if_block): Do not copy global_live_at_end, merge_blocks
16554         already takes care of this.
16555
16556 2007-01-05  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
16557
16558         PR c/19978
16559         * tree.h (TREE_OVERFLOW_P): New.
16560         * c-typeck.c (parser_build_unary_op): Warn only if result
16561         overflowed and operands did not.
16562         (parser_build_binary_op): Likewise.
16563         (convert_for_assignment): Remove redundant overflow_warning.
16564         * c-common.c (overflow_warning): Don't check or set TREE_OVERFLOW.
16565
16566 2007-01-05  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
16567
16568         * c-typeck.c (store_init_value): Split over two lines to follow
16569         the GNU coding style.
16570
16571 2007-01-05  Benjamin Kosnik  <bkoz@redhat.com>
16572
16573         * c-cppbuiltin.c (c_cpp_builtins): __GXX_EXPERIMENTAL_CPP0X__ to
16574         __GXX_EXPERIMENTAL_CXX0X__.
16575         * doc/cpp.texi: Same.
16576
16577 2007-01-05  Richard Guenther  <rguenther@suse.de>
16578
16579         PR middle-end/27826
16580         * tree.c (get_narrower): Do not construct COMPONENT_REFs
16581         with mismatched types.  Instead explicitly build a
16582         conversion NOP_EXPR.
16583
16584 2007-01-05  Ian Lance Taylor  <iant@google.com>
16585
16586         * c-common.c (decl_with_nonnull_addr_p): New function.
16587         (c_common_truthvalue_conversion): Call it.
16588         * c-typeck.c (build_binary_op): Likewise.
16589         * c-common.h (decl_with_nonnull_addr_p): Declare.
16590
16591 2007-01-05  Jakub Jelinek  <jakub@redhat.com>
16592
16593         PR c/30360
16594         * libgcc2.c (__divdc3): Compare c and d against 0.0 instead of
16595         denom against 0.0.
16596
16597 2007-01-05  Joel Brobecker  <brobecker@adacore.com>
16598
16599         * doc/install.texi (Final install): Document the fact that
16600         the GNAT runtime should not be stripped.
16601
16602 2007-01-04  Jan Hubicka  <jh@suse.cz>
16603
16604         * tree-inline.c (fold_marked_statements): Update operand caches
16605         and EH after folding
16606
16607 2007-01-04  Ian Lance Taylor  <iant@google.com>
16608
16609         * c-common.c (check_function_nonnull): Whitespace fix.
16610
16611 2007-01-04  Jan Hubicka  <jh@suse.cz>
16612
16613         * tree-optimize.c (execute_fixup_cfg): Correct previously mistakely
16614         comitted older version of patch.
16615         (pass_fixup_cfg): Add TODOs to verify flow and statements, dump
16616         function, celanup cfg and collect garbage.
16617
16618 2007-01-04  Mike Stump  <mrs@apple.com>
16619
16620         * Makefile.in (mostlyclean): Don't remove libgcc anymore.
16621         (clean): Likewise.
16622
16623 2007-01-04  Eric Christopher  <echristo@apple.com>
16624
16625         * libgcc2.c (__bswapsi2): Use SItype.
16626         (__bswapdi2): Use DItype.
16627         * libgcc2.h: Update for above.
16628
16629 2007-01-04  Paul Brook  <paul@codesourcery.com>
16630
16631         * config/arm/arm.md (arm_mulsi3, thumb_mulsi3, mulsi3_compare0,
16632         mulsi_compare0_scratch, mulsi3addsi, mulsi3addsi_compare0,
16633         mulsi3addsi_compare0_scratch, mulsidi3adddi, mulsidi3,
16634         umulsidi3, umulsidi3adddi, smulsi3_highpart,
16635         umulsi3_highpart): Make conditional on !arm_arch6.
16636         (arm_mulsi3_v6, thumb_mulsi3_v6, mulsi3_compare0_v6,
16637         mulsi_compare0_scratch_v6, mulsi3addsi_v6, mulsi3addsi_compare0_v6,
16638         mulsi3addsi_compare0_scratch_v6, mulsidi3adddi_v6, mulsidi3_v6,
16639         umulsidi3_v6, umulsidi3adddi_v6, smulsi3_highpart_v6,
16640         umulsi3_highpart_v6): New insns.
16641
16642 2007-01-04  Roger Sayle  <roger@eyesopen.com>
16643
16644         * fold-const.c (fold_convert): When casting an expression to void,
16645         fold_ignored_result may discover a GIMPLE_MODIFY_STMT which doesn't
16646         have a type.  Instead of attempting to build a NOP_EXPR, return
16647         these "special" trees directly.
16648
16649 2007-01-04  Joseph Myers  <joseph@codesourcery.com>
16650
16651         * config/rs6000/rs6000.c (rs6000_rtx_costs): Make adjustment for
16652         MULT inside MINUS as either argument.  Use rs6000_cost->dmul -
16653         rs6000_cost->fp not 0 as adjustment for outer NEG.
16654
16655 2007-01-04  Jan Hubicka  <jh@suse.cz>
16656
16657         * cgraph.c (cgraph_release_function_body): New function.
16658         (cgraph_remove_node): Use it.
16659         * cgraph.h (cgraph_release_function_body): Declare.
16660         * cgraphunit.c (cgraph_expand_function): Use it.
16661         * ipa.c (cgraph_remove_unreahchable_nodes): Use it.
16662         * tree-ssa.c (delete_tree_ssa): Allow to be called before aliasing
16663         is initialized and while compilation of other function is running.
16664         * tree-optimize.c (execute_free_cfg_annotations): Move code to clear
16665         statement CFG annotations from here to ...
16666         * tree-cfg.c (delete_tree_cfg_annotations): ... here.
16667
16668 2007-01-04  Zdenek Dvorak <dvorakz@suse.cz>
16669
16670         * cfgloop.h (enum li_flags): Make the constants powers of two.
16671
16672 2007-01-04  Jan Hubicka  <jh@suse.cz>
16673
16674         * tree-inline.c (copy_bb): Insert new statements to statements_to_fold
16675         set.
16676         (fold_marked_statements): New function.
16677         (optimize_inline_calls, tree_function_versioning): Fold new statements.
16678         * tree-inline.h (copy_body_data): Add statements_to_fold.
16679
16680 2007-01-03  Daniel Jacobowitz  <dan@codesourcery.com>
16681
16682         * config.gcc: Mention libgcc/config.host.
16683         * Makefile.in: Update comments mentioning libgcc.
16684         (LIBGCC, INSTALL_LIBGCC, GCC_PARTS, mklibgcc): Delete.
16685         (all.cross, start.encap, rest.encap, rest.cross): Update
16686         dependencies for libgcc move.
16687         (libgcc.mk, LIBGCC_DEPS, libgcov.a, libgcc.a, stmp-multilib)
16688         (clean-target, clean-target-libgcc): Delete.
16689         (srcdirify, GCC_EXTRA_PARTS): New macros.
16690         (libgcc-support, libgcc.mvars): New rules.
16691         (distclean): Remove mention of mklibgcc.
16692         (install): Don't reference INSTALL_LIBGCC.
16693         (install-common): Don't reference EXTRA_PARTS.
16694         (install-libgcc, install-multilib): Delete rules.
16695         * mklibgcc.in: Delete file.
16696         * doc/configfiles.texi: Don't mention mklibgcc.
16697
16698         * config/i386/t-darwin (SHLIB_VERPFX): Delete (moved to libgcc).
16699         * config/i386/t-darwin64 (SHLIB_VERPFX): Likewise.
16700         * config/rs6000/t-darwin (SHLIB_VERPFX): Likewise.
16701         * config/rs6000/t-ppccomm (TARGET_LIBGCC2_CFLAGS, SHLIB_MAPFILES)
16702         (mklibgcc, ldblspecs): Likewise.
16703
16704         * config/i386/t-nwld (libgcc.def, libc.def, libpcre.def)
16705         (posixpre.def): Use $(T).
16706         (SHLIB_EXT, SHLIB_NAME, SHLIB_SLIBDIR_QUAL, SHLIB_DEF, SHLIB_MAP)
16707         (SHLIB_SRC, SHLIB_INSTALL): Delete.
16708         (SHLIB_LINK): Make dummy.
16709         * config/t-slibgcc-darwin: Delete contents except for dummy SHLIB_LINK.
16710
16711         * config/frv/t-linux (EXTRA_MULTILIB_PARTS): Clear.
16712
16713         * config/alpha/t-crtfm: Use $(T) in rules for EXTRA_PARTS.
16714         * config/alpha/t-vms, config/alpha/t-vms64, config/fr30/t-fr30,
16715         config/i386/t-rtems-i386, config/ia64/t-ia64, config/rs6000/t-beos,
16716         config/rs6000/t-newas, config/sparc/t-elf: Likewise.
16717
16718         * configure.ac (all_outputs): Remove mklibgcc.
16719         * configure: Regenerated.
16720
16721 2007-01-03  Josh Conner  <jconner@apple.com>
16722
16723         PR middle-end/29683
16724         * calls.c (compute_argument_addresses): Set stack and stack_slot
16725         for partial args, too.
16726         (store_one_arg): Use locate.size.constant for the size when
16727         generating a save_area.
16728
16729 2007-01-03  Robert Kennedy <jimbob@google.com>
16730
16731         * tree-cfg.c (tree_merge_blocks): Release SSA_NAME phi results
16732         whose definitions are deleted due to basic block merging.
16733
16734 2007-01-03  Paul Brook  <paul@codesourcery.com>
16735
16736         PR target/16634
16737         * config/arm/arm.c (output_return_instruction): Pop PC in interrupt
16738         functions.
16739         (use_return_insn): Return 0 for Thumb interrupt functions.
16740         (print_multi_reg): Add rfe argument for IRQ returns.
16741         (arm_output_epilogue): Pop interrupt return address directly into PC.
16742         (arm_expand_prologue): Only adjust IRQ return address in Arm mode.
16743
16744 2007-01-03  Paul Brook  <paul@codesourcery.com>
16745
16746         Merge from sourcerygxx-4_1.
16747         * config/arm/thumb2.md: New file.
16748         * config/arm/elf.h (JUMP_TABLES_IN_TEXT_SECTION): Return True for
16749         Thumb-2.
16750         * config/arm/coff.h (JUMP_TABLES_IN_TEXT_SECTION): Ditto.
16751         * config/arm/aout.h (ASM_OUTPUT_ADDR_VEC_ELT): Add !Thumb-2 assertion.
16752         (ASM_OUTPUT_ADDR_DIFF_ELT): Output Thumb-2 jump tables.
16753         * config/arm/aof.h (ASM_OUTPUT_ADDR_DIFF_ELT): Output Thumb-2 jump
16754         tables.
16755         (ASM_OUTPUT_ADDR_VEC_ELT): Add !Thumb-2 assertion.
16756         * config/arm/ieee754-df.S: Use macros for Thumb-2/Unified asm
16757         comptibility.
16758         * config/arm/ieee754-sf.S: Ditto.
16759         * config/arm/arm.c (thumb_base_register_rtx_p): Rename...
16760         (thumb1_base_register_rtx_p): ... to this.
16761         (thumb_index_register_rtx_p): Rename...
16762         (thumb1_index_register_rtx_p): ... to this.
16763         (thumb_output_function_prologue): Rename...
16764         (thumb1_output_function_prologue): ... to this.
16765         (thumb_legitimate_address_p): Rename...
16766         (thumb1_legitimate_address_p): ... to this.
16767         (thumb_rtx_costs): Rename...
16768         (thumb1_rtx_costs): ... to this.
16769         (thumb_compute_save_reg_mask): Rename...
16770         (thumb1_compute_save_reg_mask): ... to this.
16771         (thumb_final_prescan_insn): Rename...
16772         (thumb1_final_prescan_insn): ... to this.
16773         (thumb_expand_epilogue): Rename...
16774         (thumb1_expand_epilogue): ... to this.
16775         (arm_unwind_emit_stm): Rename...
16776         (arm_unwind_emit_sequence): ... to this.
16777         (thumb2_legitimate_index_p, thumb2_legitimate_address_p,
16778         thumb1_compute_save_reg_mask, arm_dwarf_handle_frame_unspec,
16779         thumb2_index_mul_operand, output_move_vfp, arm_shift_nmem,
16780         arm_save_coproc_regs, thumb_set_frame_pointer, arm_print_condition,
16781         thumb2_final_prescan_insn, thumb2_asm_output_opcode, arm_output_shift,
16782         thumb2_output_casesi): New functions.
16783         (TARGET_DWARF_HANDLE_FRAME_UNSPEC): Define.
16784         (FL_THUMB2, FL_NOTM, FL_DIV, FL_FOR_ARCH6T2, FL_FOR_ARCH7,
16785         FL_FOR_ARCH7A, FL_FOR_ARCH7R, FL_FOR_ARCH7M, ARM_LSL_NAME,
16786         THUMB2_WORK_REGS): Define.
16787         (arm_arch_notm, arm_arch_thumb2, arm_arch_hwdiv, arm_condexec_count,
16788         arm_condexec_mask, arm_condexec_masklen)): New variables.
16789         (all_architectures): Add armv6t2, armv7, armv7a, armv7r and armv7m.
16790         (arm_override_options): Check new CPU capabilities.
16791         Set new architecture flag variables.
16792         (arm_isr_value): Handle v7m interrupt functions.
16793         (user_return_insn): Return 0 for v7m interrupt functions.  Handle
16794         Thumb-2.
16795         (const_ok_for_arm): Handle Thumb-2 constants.
16796         (arm_gen_constant): Ditto.  Use movw when available.
16797         (arm_function_ok_for_sibcall): Return false for v7m interrupt
16798         functions.
16799         (legitimize_pic_address, arm_call_tls_get_addr): Handle Thumb-2.
16800         (thumb_find_work_register, arm_load_pic_register,
16801         legitimize_tls_address, arm_address_cost, load_multiple_sequence,
16802         emit_ldm_seq, emit_stm_seq, arm_select_cc_mode, get_jump_table_size,
16803         print_multi_reg, output_mov_long_double_fpa_from_arm,
16804         output_mov_long_double_arm_from_fpa, output_mov_double_fpa_from_arm,
16805         output_mov_double_fpa_from_arm, output_move_double,
16806         arm_compute_save_reg_mask, arm_compute_save_reg0_reg12_mask,
16807         output_return_instruction, arm_output_function_prologue,
16808         arm_output_epilogue, arm_get_frame_offsets, arm_regno_class,
16809         arm_output_mi_thunk, thumb_set_return_address): Ditto.
16810         (arm_expand_prologue): Handle Thumb-2.  Use arm_save_coproc_regs.
16811         (arm_coproc_mem_operand): Allow POST_INC/PRE_DEC.
16812         (arithmetic_instr, shift_op): Use arm_shift_nmem.
16813         (arm_print_operand): Use arm_print_condition.  Handle '(', ')', '.',
16814         '!' and 'L'.
16815         (arm_final_prescan_insn): Use extract_constrain_insn_cached.
16816         (thumb_expand_prologue): Use thumb_set_frame_pointer.
16817         (arm_file_start): Output directive for unified syntax.
16818         (arm_unwind_emit_set): Handle stack alignment instruction.
16819         * config/arm/lib1funcs.asm: Remove default for __ARM_ARCH__.
16820         Add v6t2, v7, v7a, v7r and v7m.
16821         (RETLDM): Add Thumb-2 code.
16822         (do_it, shift1, do_push, do_pop, COND, THUMB_SYNTAX): New macros.
16823         * config/arm/arm.h (TARGET_CPU_CPP_BUILTINS): Define __thumb2__.
16824         (TARGET_THUMB1, TARGET_32BIT, TARGET_THUMB2, TARGET_DSP_MULTIPLY,
16825         TARGET_INT_SIMD, TARGET_UNIFIED_ASM, ARM_FT_STACKALIGN, IS_STACKALIGN,
16826         THUMB2_TRAMPOLINE_TEMPLATE, TRAMPOLINE_ADJUST_ADDRESS,
16827         ASM_OUTPUT_OPCODE, THUMB2_GO_IF_LEGITIMATE_ADDRESS,
16828         THUMB2_LEGITIMIZE_ADDRESS, CASE_VECTOR_PC_RELATIVE,
16829         CASE_VECTOR_SHORTEN_MODE, ADDR_VEC_ALIGN, ASM_OUTPUT_CASE_END,
16830         ADJUST_INSN_LENGTH): Define.
16831         (TARGET_REALLY_IWMMXT, TARGET_IWMMXT_ABI, CONDITIONAL_REGISTER_USAGE,
16832         STATIC_CHAIN_REGNUM, HARD_REGNO_NREGS, INDEX_REG_CLASS,
16833         BASE_REG_CLASS, MODE_BASE_REG_CLASS, SMALL_REGISTER_CLASSES,
16834         PREFERRED_RELOAD_CLASS, SECONDARY_OUTPUT_RELOAD_CLASS,
16835         SECONDARY_INPUT_RELOAD_CLASS, LIBCALL_VALUE, FUNCTION_VALUE_REGNO_P,
16836         TRAMPOLINE_SIZE, INITIALIZE_TRAMPOLINE, HAVE_PRE_INCREMENT,
16837         HAVE_POST_DECREMENT, HAVE_PRE_DECREMENT, HAVE_PRE_MODIFY_DISP,
16838         HAVE_POST_MODIFY_DISP, HAVE_PRE_MODIFY_REG, HAVE_POST_MODIFY_REG,
16839         REGNO_MODE_OK_FOR_BASE_P, LEGITIMATE_CONSTANT_P,
16840         REG_MODE_OK_FOR_BASE_P, REG_OK_FOR_INDEX_P, GO_IF_LEGITIMATE_ADDRESS,
16841         LEGITIMIZE_ADDRESS, THUMB2_LEGITIMIZE_ADDRESS,
16842         GO_IF_MODE_DEPENDENT_ADDRESS, MEMORY_MOVE_COST, BRANCH_COST,
16843         ASM_APP_OFF, ASM_OUTPUT_CASE_LABEL, ARM_DECLARE_FUNCTION_NAME,
16844         FINAL_PRESCAN_INSN, PRINT_OPERAND_PUNCT_VALID_P,
16845         PRINT_OPERAND_ADDRESS): Adjust for Thumb-2.
16846         (arm_arch_notm, arm_arch_thumb2, arm_arch_hwdiv): New declarations.
16847         * config/arm/arm-cores.def: Add arm1156t2-s, cortex-a8, cortex-r4 and
16848         cortex-m3.
16849         * config/arm/arm-tune.md: Regenerate.
16850         * config/arm/arm-protos.h: Update prototypes.
16851         * config/arm/vfp.md: Enable patterns for Thumb-2.
16852         (arm_movsi_vfp): Add movw alternative.  Use output_move_vfp.
16853         (arm_movdi_vfp, movsf_vfp, movdf_vfp): Use output_move_vfp.
16854         (thumb2_movsi_vfp, thumb2_movdi_vfp, thumb2_movsf_vfp,
16855         thumb2_movdf_vfp, thumb2_movsfcc_vfp, thumb2_movdfcc_vfp): New.
16856         * config/arm/libunwind.S: Add Thumb-2 code.
16857         * config/arm/constraints.md: Update include Thumb-2.
16858         * config/arm/ieee754-sf.S: Add Thumb-2/Unified asm support.
16859         * config/arm/ieee754-df.S: Ditto.
16860         * config/arm/bpabi.S: Ditto.
16861         * config/arm/t-arm (MD_INCLUDES): Add thumb2.md.
16862         * config/arm/predicates.md (low_register_operand,
16863         low_reg_or_int_operand, thumb_16bit_operator): New.
16864         (thumb_cmp_operand, thumb_cmpneg_operand): Rename...
16865         (thumb1_cmp_operand, thumb1_cmpneg_operand): ... to this.
16866         * config/arm/t-arm-elf: Add armv7 multilib.
16867         * config/arm/arm.md: Update patterns for Thumb-2 and Unified asm.
16868         Include thumb2.md.
16869         (UNSPEC_STACK_ALIGN, ce_count): New.
16870         (arm_incscc, arm_decscc, arm_umaxsi3, arm_uminsi3,
16871         arm_zero_extendsidi2, arm_zero_extendqidi2): New
16872         insns/expanders.
16873         * config/arm/fpa.md: Update patterns for Thumb-2 and Unified asm.
16874         (thumb2_movsf_fpa, thumb2_movdf_fpa, thumb2_movxf_fpa,
16875         thumb2_movsfcc_fpa, thumb2_movdfcc_fpa): New insns.
16876         * config/arm/cirrus.md: Update patterns for Thumb-2 and Unified asm.
16877         (cirrus_thumb2_movdi, cirrus_thumb2_movsi_insn,
16878         thumb2_cirrus_movsf_hard_insn, thumb2_cirrus_movdf_hard_insn): New
16879         insns.
16880         * doc/extend.texi: Document ARMv7-M interrupt functions.
16881         * doc/invoke.texi: Document Thumb-2 new cores+architectures.
16882
16883 2007-01-03  Jakub Jelinek  <jakub@redhat.com>
16884
16885         * unwind-dw2.c (SIGNAL_FRAME_BIT, EXTENDED_CONTEXT_BIT): Define.
16886         (struct _Unwind_Context): Rename args_size to flags, remove
16887         signal_frame field, add a new args_size field and version field.
16888         (_Unwind_IsSignalFrame, _Unwind_SetSignalFrame,
16889         _Unwind_IsExtendedContext): New inline functions.
16890         (_Unwind_GetGR, _Unwind_SetGR, _Unwind_GetGRPtr, _Unwind_SetGRPtr):
16891         Assume by_value array is only present if _Unwind_IsExtendedContext.
16892         (_Unwind_GetIPInfo, execute_cfa_program, uw_frame_state_for): Use
16893         _Unwind_IsSignalFrame.
16894         (__frame_state_for): Initialize context.flags to EXTENDED_CONTEXT_BIT.
16895         (uw_update_context_1): Use _Unwind_SetSignalFrame.
16896         (uw_init_context_1): Initialize context->flags to
16897         EXTENDED_CONTEXT_BIT.
16898         * config/rs6000/linux-unwind.h (frob_update_context): Use
16899         _Unwind_SetSignalFrame.
16900
16901 2007-01-03  Andrew Pinski  <andrew_pinski@playstation.sony.com>
16902
16903         PR middle-end/30353
16904         * gimplify.c (gimplify_modify_expr_complex_part): Move below
16905         tree_to_gimple_tuple.  Call tree_to_gimple_tuple when we need
16906         the value.
16907
16908 2007-01-03  Kazu Hirata  <kazu@codesourcery.com>
16909
16910         * config/i386/i386.h (NON_STACK_REG_P, REGNO_OK_FOR_SIREG_P,
16911         REGNO_OK_FOR_DIREG_P, REWRITE_ADDRESS, ASM_OPERAND_LETTER,
16912         RET, AT_SP): Remove.
16913         * config/i386/i386.md (*sse_prologue_save_insn): Use return
16914         instead of RET.
16915
16916         * alias.c (init_alias_analysis): Use VEC_safe_grow_cleared.
16917         * cfgbuild.c (find_basic_blocks): Likewise.
16918         * cfgrtl.c (rtl_create_basic_block): Likewise.
16919         * function.c (temp_slots_at_level): Likewise.
16920         * reg-stack.c (stack_regs_mentioned): Likewise.
16921         * regclass.c (allocate_reg_info): Likewise.
16922         * tree-cfg.c (init_empty_tree_cfg, build_tree_cfg, create_bb,
16923         set_bb_for_stmt, move_block_to_fn): Likewise.
16924         * tree-complex.c (tree_lower_complex): Likewise.
16925         * vec.h (VEC_safe_grow_cleared): New.
16926
16927         * cgraphunit.c, tree-ssa-alias.c: Fix comment typos.
16928
16929 2007-01-03  Zdenek Dvorak <dvorakz@suse.cz>
16930
16931         * loop-unswitch.c (unswitch_loop): Pass probabilities to loopify.
16932         * tree-ssa-loop-unswitch.c (tree_unswitch_loop): Pass probabilities
16933         to loop_version.
16934         * cfgloopmanip.c (scale_loop_frequencies): Export.
16935         (loopify): Scale the frequencies by prescribed coefficients.
16936         (set_zero_probability): New function.
16937         (duplicate_loop_to_header_edge): Improve updating of frequencies.
16938         (lv_adjust_loop_entry_edge, loop_version): Set probabilities
16939         and frequencies according to arguments.
16940         * tree-ssa-loop-manip.c (tree_unroll_loop): Set probabilities
16941         correctly.
16942         * cfg.c (scale_bbs_frequencies_int): Allow scaling the frequencies up.
16943         * modulo-sched.c (sms_schedule): Set probabilities for entering
16944         versioned loop correctly.
16945         * tree-vect-transform.c (vect_transform_loop): Ditto.
16946         * cfgloop.h (loopify, loop_version): Declaration changed.
16947         (scale_loop_frequencies): Declared.
16948
16949 2007-01-02  Jan Hubicka  <jh@suse.cz>
16950
16951         * cgraph.c: Include tree-flow.h
16952         (cgraph_add_new-function): Handle IPA_SSA mode; execute
16953         early_local_passes.
16954         * cgraph.h (enum cgraph_state): Add CGRAPH_STATE_IPA_SSA.
16955         * tree-pass.h (pass_all_early_optimizations): Declare.
16956         * cgraphunit.c (cgraph_process_new_functions): Add IPA_SSA; execute
16957         early_local_passes.
16958         (cgraph_analyze_function): Do early_local_passes.
16959         * tree-mudflap.c (mf_decl_cache_locals, mf_build_check_statement_for):
16960         Do not add referenced vars.
16961         * tree-optimize.c (gate_all_optimizations): Do not execute when not in
16962         SSA form.
16963         (gate_all_early_local_passes): New gate.
16964         (pass_early_local_passes): Use new gate.
16965         (execute_early_local_optimizations): New functions.
16966         (gate_all_early_optimizations): New gate.
16967         (pass_all_early_optimizations): New pass.
16968         (execute_free_datastructures): Free SSA only when initialized.
16969         (gate_init_datastructures): Init only when optimizing.
16970         (tree_lowering_passes): Do early local passes when called late.
16971         * tree-profile.c (do_tree_profiling): Don't profile functions added
16972         late.
16973         (do_early_tree_profiling, pass_early_tree_profile): Kill.
16974         * tree-cfg.c (update_modified_stmts): Do not update when operands are
16975         not active.
16976         * passes.c (init_optimizations_passes): Reorder so we go into SSA
16977         during early_local_passes.
16978         * Makefile.in (cgraph.o): Add dependency on tree-flow.h.
16979
16980
16981 2007-01-02  Carlos O'Donell  <carlos@codesourcery.com>
16982
16983         * Makefile.in: Update copyright year.
16984
16985 2007-01-02  Carlos O'Donell  <carlos@codesourcery.com>
16986
16987         * Makefile.in: Export GCC_EXEC_PREFIX before calling $(RUNTEST)
16988         in $(lang_checks) and check-consistency targets.
16989
16990 2007-01-02  Jan Hubicka  <jh@suse.cz>
16991
16992         * tree-mudflap.c (mf_decl_cache_locals, mf_build_check_statement_for):
16993         Do not add referenced vars.
16994         * tree-cfg.c (update_modified_stmts): Do not update when SSA operands
16995         are not active.
16996         * passes.c (init_optimization_passes): Put mudflap_2 after
16997         free_datastructures.
16998
16999 2007-01-02  Jan Hubicka  <jh@suse.cz>
17000
17001         * tree-optimize (execute_fixup_cfg): Set after_inlining flag.
17002         Set NOTHROW flag on call statements proved to be nothrow.
17003         Update statement of local calls so new pure/const functions are
17004         updated. Update_ssa when in ssa form. Mark PHI nodes of nonlocal
17005         goto receivers.
17006         (tree_rest_of_compilation): Register hooks and initialize bitmap
17007         early. Do not set after_inlining flag.
17008
17009 2007-01-02  Steve Ellcey  <sje@cup.hp.com>
17010
17011         * sbitmap.c (HOST_BITS_PER_LONG_LONG):  Change to
17012         HOST_BITS_PER_LONGLONG
17013
17014 2007-01-02  Manuel Lopez-Ibanez <manu@gcc.gnu.org>
17015
17016         PR c/19977
17017         * c-typeck.c (store_init_value): Don't emit pedantic overflow
17018         warning for non-static initializers.
17019
17020 2007-01-02  Steven Bosscher  <steven@gcc.gnu.org>
17021
17022         * config/alpha/alpha.md, arm/arm.c, darwin.c, frv/frv.md,
17023         m32r/m32r.c, m32r/m32r.c, mn10300/mn10300.md, pa/pa.c,
17024         rs6000/rs6000.c, s390/s390.md, sh/sh.md, sparc/sparc.c:
17025         Always use set_unique_reg_note to add REG_EQUAL notes.
17026
17027 2007-01-02  Kazu Hirata  <kazu@codesourcery.com>
17028
17029         Revert:
17030         2007-01-02  Kazu Hirata  <kazu@codesourcery.com>
17031
17032         * alias.c (init_alias_analysis): Use VEC_safe_grow_cleared.
17033         * cfgbuild.c (find_basic_blocks): Likewise.
17034         * cfgrtl.c (rtl_create_basic_block): Likewise.
17035         * function.c (temp_slots_at_level): Likewise.
17036         * reg-stack.c (stack_regs_mentioned): Likewise.
17037         * regclass.c (allocate_reg_info): Likewise.
17038         * tree-cfg.c (init_empty_tree_cfg, build_tree_cfg, create_bb,
17039         set_bb_for_stmt, move_block_to_fn): Likewise.
17040         * tree-complex.c (tree_lower_complex): Likewise.
17041         * vec.h (VEC_safe_grow_cleared): New.
17042
17043 2007-01-02  Ian Lance Taylor  <iant@google.com>
17044
17045         * c-common.c (c_common_truthvalue_conversion): When warning about
17046         using an assignment as a truth value, set TREE_NO_WARNING.
17047
17048 2007-01-02  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
17049
17050         PR middle-end/7651
17051         * c.opt (Wold-style-declaration): New.
17052         * doc/invoke.texi (C-only Warning Options): New.
17053         (Wold-style-declaration): Document it.
17054         (Wextra): Enabled by -Wextra.
17055         * c-opts.c (c_common_post_options): Enabled by -Wextra.
17056         * c-decl.c (declspecs_add_scspec): Replace -Wextra with
17057         -Wold-style-declaration.
17058
17059 2007-01-02  Kazu Hirata  <kazu@codesourcery.com>
17060
17061         * alias.c (init_alias_analysis): Use VEC_safe_grow_cleared.
17062         * cfgbuild.c (find_basic_blocks): Likewise.
17063         * cfgrtl.c (rtl_create_basic_block): Likewise.
17064         * function.c (temp_slots_at_level): Likewise.
17065         * reg-stack.c (stack_regs_mentioned): Likewise.
17066         * regclass.c (allocate_reg_info): Likewise.
17067         * tree-cfg.c (init_empty_tree_cfg, build_tree_cfg, create_bb,
17068         set_bb_for_stmt, move_block_to_fn): Likewise.
17069         * tree-complex.c (tree_lower_complex): Likewise.
17070         * vec.h (VEC_safe_grow_cleared): New.
17071
17072 2007-01-02  Douglas Gregor  <doug.gregor@gmail.com>
17073
17074         * c-common.c (c_common_nodes_and_builtins): Since variants of
17075         void_type_node get built before it is given a name, we need to
17076         give those variants the name, too.
17077         (complete_array_type): We need to work with the canonical main
17078         type of the array, from which we will build the qualified version.
17079         * params.def (PARAM_VERIFY_CANONICAL_TYPES): New.
17080         * print-tree.c (print_node): Display canonical type information
17081         for each type.
17082         * stor-layout.c (layout_type): When we don't know the
17083         alignment of a type for which we're building an array, we end up
17084         guessing wrong, so make the type require structural equality.
17085         * tree.c (make_node_stat): When we build a new type, it is its
17086         own canonical type.
17087         (build_type_attribute_qual_variant): When building an attribute
17088         variant, its canonical type is the non-attribute variant. However,
17089         if the attributes are target-dependent and they differ, we need to
17090         use structural equality checks for this type.
17091         (build_qualified_type): A qualified type is not equivalent to its
17092         unqualified variant; set the canonical type appropriately.
17093         (build_distinct_type_copy): When building a distinct type from
17094         another type, the new type is its own canonical type.
17095         (build_variant_type_copy): When building a new type variant, we
17096         assume that it is equivalent to the original type.
17097         (build_pointer_type_for_mode): When building a pointer type, also
17098         build a canonical type pointer.
17099         (build_reference_type_for_mode): When building a reference type,
17100         also build a canonical type reference.
17101         (build_index_type): When we can't hash an index type (e.g.,
17102         because its maximum value is negative), the index type requires
17103         structural equality tests.
17104         (build_array_type): Build the canonical form of an array type.
17105         (build_function_type): Function types require structural equality,
17106         because they contain default arguments, attributes, etc.
17107         (build_method_type_directly): Ditto for method types.
17108         (build_offset_type): Build the canonical offset type.
17109         (build_complex_type): Build the canonical vector type.
17110         (make_vector_type): Build the canonical vector type.
17111         * tree.h (TYPE_CANONICAL): New.
17112         (TYPE_STRUCTURAL_EQUALITY_P): New.
17113         (SET_TYPE_STRUCTURAL_EQUALITY): New.
17114         (struct tree_type): Added "canonical" field.
17115         * params.h (VERIFY_CANONICAL_TYPES): New.
17116         * doc/c-tree.texi (TYPE_CANONICAL): Document.
17117         (TYPE_STRUCTURAL_EQUALITY_P): Document.
17118         (SET_TYPE_STRUCTURAL_EQUALITY): Document.
17119         * doc/invoke.texi (verify-canonical-types): Document --param
17120         parameter for verifying canonical types.
17121
17122 2007-01-02  Joseph Myers  <joseph@codesourcery.com>
17123
17124         * config.gcc (powerpc-*-eabispe*, powerpc-*-eabisimaltivec*,
17125         powerpc-*-eabisim*, powerpc-*-eabialtivec*, powerpc-*-eabi*,
17126         powerpc-*-rtems*, powerpc-wrs-vxworks, powerpc-wrs-vxworksae,
17127         powerpcle-*-eabisim*, powerpcle-*-eabi*): Add rs6000/e500.h to
17128         tm_file.
17129         * config/rs6000/e500.h: New.
17130         * config/rs6000/eabi.h (TARGET_SPE_ABI, TARGET_SPE, TARGET_E500,
17131         TARGET_ISEL, TARGET_FPRS, TARGET_E500_SINGLE, TARGET_E500_DOUBLE):
17132         Remove.
17133         * config/rs6000/linuxspe.h (TARGET_SPE_ABI, TARGET_SPE,
17134         TARGET_E500, TARGET_ISEL, TARGET_FPRS, TARGET_E500_SINGLE,
17135         TARGET_E500_DOUBLE): Remove.
17136         * config/rs6000/vxworks.h (TARGET_SPE_ABI, TARGET_SPE,
17137         TARGET_E500, TARGET_ISEL, TARGET_FPRS): Remove.
17138         * config/rs6000/rs6000.h (CHECK_E500_OPTIONS): Define.
17139         * config/rs6000/rs6000.c (rs6000_override_options): Use
17140         CHECK_E500_OPTIONS.
17141
17142 2007-01-02  Joseph Myers  <joseph@codesourcery.com>
17143
17144         * config/rs6000/rs6000.c (print_operand): Check (TARGET_SPE ||
17145         TARGET_E500_DOUBLE), not TARGET_E500, for %y.
17146         (rs6000_generate_compare, rs6000_emit_sCOND, output_cbranch,
17147         rs6000_emit_cmove): Don't check TARGET_E500.
17148         * config/rs6000/rs6000.md (bunordered, bordered, sunordered,
17149         sordered): Don't check TARGET_E500.
17150
17151 2007-01-01  Eric Christopher  <echristo@apple.com>
17152
17153         * config/mips/mips.c (mips_regno_mode_ok_for_base_p): Use
17154         HARD_REGISTER_NUM_P.
17155
17156 2007-01-01  Roger Sayle  <roger@eyesopen.com>
17157
17158         * fold-const.c (fold_binary) <EQ_EXPR>: Fold "(X^C1) eq/ne C2" into
17159         "X eq/ne (C1^C2)".  Fold "(X^Z) eq/ne (Y^Z)" as "X eq/ne Y" when Z
17160         has no side-effects.  Fold "(X^C1) eq/ne (Y^C2)" as "(X^(C1^C2))
17161         eq/ne Y".
17162
17163 2007-01-01  Mike Stump  <mrs@apple.com>
17164
17165         * configure.ac: Remove support for building with Apple's gcc-3.1.
17166
17167 2007-01-02  Joseph Myers  <joseph@codesourcery.com>
17168
17169         PR middle-end/30311
17170         * caller-save.c (add_stored_regs): Only handle SUBREGs if inner
17171         REG is a hard register.  Do not modify REG before calling
17172         subreg_nregs.
17173         * rtlanal.c (subreg_get_info): Don't assert size of XMODE is a
17174         multiple of the size of YMODE for certain lowpart cases.
17175
17176 2007-01-01  Andrew Pinski  <pinskia@gmail.com>
17177
17178         PR middle-end/30253
17179         * gimplify (voidify_wrapper_expr): Update for
17180         GIMPLE_MODIFY_STMT.
17181
17182 2007-01-01  Andreas Schwab  <schwab@suse.de>
17183
17184         PR target/29166
17185         * config/ia64/ia64.c (ia64_compute_frame_size): Account space for
17186         save of BR0 in extra_spill_size instead of spill_size.
17187         (ia64_expand_prologue): Save BR0 outside of the gr/br/fr spill
17188         area.
17189         (ia64_expand_epilogue): Restore BR0 from its new location.
17190
17191 2007-01-01  Andrew Pinski  <pinskia@gmail.com>
17192
17193         * gimplify.c (gimplify_init_constructor <case VECTOR_TYPE>):
17194         Use a temporary variable if the left hand side is not a gimple
17195         register.
17196
17197 2007-01-01  Andrew Pinski  <pinskia@gmail.com>
17198
17199         * gimplify.c (gimplify_return_expr): Make the temporary variable
17200         for the return expression, a gimple register variable.
17201
17202 2007-01-01  Jan Hubicka  <jh@suse.cz>
17203
17204         * emit-rtl.c (emit_copy_of_insn_after): Do not call copy_insn_1 for
17205         INSN_LIST.
17206
17207 2007-01-01  Mike Stump  <mrs@apple.com>
17208
17209         * configure.ac (HAVE_GAS_LITERAL16): Add autoconf check for
17210         .literal16.
17211         * config/darwin.c (machopic_select_rtx_section): Use
17212         HAVE_GAS_LITERAL16.
17213         (darwin_mergeable_constant_section): Likewise.
17214         * configure: Regenerate.
17215         * config.in: Regenerate.
17216
17217 2007-01-01  Jan Hubicka  <jh@suse.cz>
17218             Andrew Pinski  <pinskia@gmail.com>
17219
17220         * cgraphunit.c (cgraph_optimize): Call cgraph_add_new_functions
17221         before starting IPA passes.