OSDN Git Service

8406d5f60620675604ecbb928c3e98dabed44506
[pf3gnuchains/gcc-fork.git] / gcc / ChangeLog
1 2007-06-23  Mark Mitchell  <mark@codesourcery.com>
2
3         * doc/extend.texi: Document that dllimport and dllexport imply
4         default visibility.
5         * tree.c (handle_dll_attribute): Set DECL_VISIBILITY on the
6         imported or exported declaration, including type declarations.
7         * c-common.c (handle_visibility_attribute): Check for conflicts
8         with dllimport/dllexport.
9         (c_determine_visibility): Handle dllimport/dllexport as an
10         explicit visibility atttribute.
11
12 2007-06-23  Richard Guenther  <rguenther@suse.de>
13
14         PR tree-optimization/16876
15         PR middle-end/29478
16         * tree.h (CALL_CANNOT_INLINE_P): New macro to access static_flag
17         for CALL_EXPRs.
18         * tree-inline.c (initialize_inlined_parameters): Do not call
19         lang_hooks.tree_inlining.convert_parm_for_inlining.
20         * cgraphbuild.c (initialize_inline_failed): Set inline failed
21         reason for mismatched types.
22         * gimplify.c (gimplify_call_expr): Verify the call expression
23         arguments match the called function type signature.  Otherwise
24         mark the call expression to be not considered for inlining
25         using CALL_CANNOT_INLINE_P flag.
26         * ipa-inline.c (cgraph_mark_inline): Honor CALL_CANNOT_INLINE_P on the
27         edges call expression.
28         (cgraph_decide_inlining_of_small_function): Likewise.
29         (cgraph_decide_inlining): Likewise.
30         * c-objc-common.h (LANG_HOOKS_TREE_INLINING_CONVERT_PARM_FOR_INLINING):
31         Remove define.
32         * c-tree.h (c_convert_parm_for_inlining): Remove declaration.
33         * c-typeck.c (c_convert_parm_for_inlining): Remove.
34         * langhooks-def.h (lhd_tree_inlining_convert_parm_for_inlining):
35         Remove declaration.
36         (LANG_HOOKS_TREE_INLINING_CONVERT_PARM_FOR_INLINING): Remove define.
37         * langhooks.c (lhd_tree_inlining_convert_parm_for_inlining):
38         Remove.
39         * langhooks.h (struct lang_hooks_for_tree_inlining): Remove
40         convert_parm_for_inlining member.
41
42 2007-06-23  Richard Earnshaw  <rearnsha@arm.com>
43
44         PR target/31152
45         * arm.md (negscc): Match the correct operand for optimized LT0 test.
46         Remove optimization for GT.
47
48 2007-06-23  Kenneth Zadeck <zadeck@naturalbridge.com>
49
50         PR middle-end/32437
51         *dce.c (deletable_insn_p): Add extra parameter and recurse if insn
52         is a PARALLEL.
53         (prescan_insns_for_dce): Add extra parameter.
54         
55 2007-06-23  Jan Hubicka  <jh@suse.cz>
56
57         PR middle-end/31541
58         * gimplify.c (mark_addressable): New function.
59         (gimplify_modify_expr_rhs, gimplify_addr_expr, gimplify_expr): Use it.
60
61 2007-06-19  Uros Bizjak  <ubizjak@gmail.com>
62
63         PR middle-end/32374
64         * expr.c (store_constructor): Do not clobber non-zeroed memory. 
65
66 2007-06-22  Uros Bizjak  <ubizjak@gmail.com>
67
68         PR target/32413
69         * config/i386/i386.c (ix86_register_move_cost): Rise the cost of
70         moves between MMX/SSE registers to at least 8 units to prevent
71         ICE caused by non-tieable SI/HI/QImodes in SSE registers. 
72
73 2007-06-22  Uros Bizjak  <ubizjak@gmail.com>
74
75         * config/i386/i386.c (override_options): Correct x86_sahf
76         setting condition.
77
78 2007-06-21  David Daney  <ddaney@avtrex.com>
79
80         PR target/32406
81         * config/mips/mips.md (define_constants): Rename UNSPEC_EH_RECEIVER
82         to UNSPEC_NONLOCAL_GOTO_RECEIVER globally.
83         (exception_receiver): Renamed to ...
84         (nonlocal_goto_receiver): ... this.
85
86 2007-06-22  Roman Zippel <zippel@linux-m68k.org>
87
88         * df-scan.c (df_read_modify_subreg_p): Use REGMODE_NATURAL_SIZE.
89         (df_def_record_1): Set (DF_REF_READ_WRITE | DF_REF_PARTIAL) for
90         partial register accesses.
91
92 2007-06-21  Adam Nemet  <anemet@caviumnetworks.com>
93
94         * fold-const.c (debug_fold_checksum): Move it under
95         ENABLE_FOLD_CHECKING.
96
97 2007-06-21  Sebastian Pop  <sebpop@gmail.com>
98
99         PR middle-end/20623
100         * tree.h (debug_fold_checksum): Declared.
101         * fold-const.c (build_fold_addr_expr_with_type_1): New.
102         (build_fold_addr_expr_with_type, build_fold_addr_expr): Use 
103         build_fold_addr_expr_with_type_1.
104         (fold_addr_expr, debug_fold_checksum): New.
105         (fold_checksum_tree): Don't fold TREE_CHAIN of an SSA_NAME.
106         (fold_unary, fold_comparison, split_address_to_core_and_offset):
107         Use fold_addr_expr.
108         
109 2007-06-21  Sebastian Pop  <sebpop@gmail.com>
110
111         PR tree-optimization/19590
112         * tree-vrp.c (adjust_range_with_scev): Set the range when the result
113         of scev is a constant.
114         * gcc/testsuite/gcc.dg/tree-ssa/pr19590.c: New.
115
116 2007-06-21  Kenneth Zadeck <zadeck@naturalbridge.com>
117
118         * df-problems.c (df_note_bb_compute): Made computation of live
119         info consistent with df_lr.
120
121 2007-06-21  Richard Guenther  <rguenther@suse.de>
122
123         PR tree-optimization/32453
124         * tree-vrp.c (extract_range_from_assert): Build POINTER_PLUS_EXPR
125         for pointer anti-range.
126
127 2007-06-21  H.J. Lu  <hongjiu.lu@intel.com>
128
129         * config/i386/i386.c (processor_target_table): Increase maximum
130         skip from 7 byte to 10 byte for Pentium Pro, Core 2 Duo and
131         default 64bit.
132
133         * config/i386/linux.h (ASM_OUTPUT_MAX_SKIP_ALIGN): Ensure 8
134         byte alignment if > 8 byte alignment is preferred.
135         * config/i386/x86-64.h (ASM_OUTPUT_MAX_SKIP_ALIGN): Likewise.
136
137 2007-06-21  Jakub Jelinek  <jakub@redhat.com>
138
139         PR tree-optimization/31866
140         * tree-ssa-coalesce.c (create_outofssa_var_map): Do nothing
141         if ASM_EXPR's input is not a SSA_NAME.
142
143         PR middle-end/32362
144         * omp-low.c (lookup_decl_in_outer_ctx): Don't ICE if t is NULL,
145         but decl is a global var, instead return decl.
146         * gimplify.c (gimplify_adjust_omp_clauses_1): Add shared clauses
147         even for is_global_var decls, if they are private in some outer
148         context.
149
150 2007-06-21  Richard Guenther  <rguenther@suse.de>
151
152         PR tree-optimization/32451
153         * tree-ssa-threadupdate.c (thread_single_edge): Fixup edge flags.
154
155 2007-06-21  Christian Bruel  <christian.bruel@st.com>
156
157         * config/sh/sh-protos.h (sh_loads_bankedreg_p): Declare.
158         * config/sh/sh.c (sh_loads_bankedreg_p): New function.
159         (push_regs): Changed saving order or banked registers.
160         (sh_expand_epilogue): Likewise.
161         * config/sh/sh.h (BANKED_REGISTER_P): New macro.
162         (FIRST_BANKED_REG): Likewise.
163         (LAST_BANKED_REG): Likewise.
164         * config/sh/sh.md (banked) New attribute.
165         (in_delay_slot): Check banked attribute.
166         
167 2007-06-20  Sebastian Pop  <sebpop@gmail.com>
168
169         PR tree-optimization/32075
170         * tree-data-ref.c (subscript_dependence_tester_1, 
171         analyze_miv_subscript, analyze_overlapping_iterations,
172         add_distance_for_zero_overlaps, build_classic_dist_vector,
173         subscript_dependence_tester_1, analyze_overlapping_iterations,
174         subscript_dependence_tester, access_functions_are_affine_or_constant_p,
175         compute_affine_dependence, compute_all_dependences): Pass loop_nest 
176         to evolution_function_is_affine_multivariate_p.
177
178 2007-06-20  Eric Botcazou  <ebotcazou@libertysurf.fr>
179
180         * df-scan.c (df_get_call_refs): Be prepared for MEMs inside CLOBBERs.
181
182 2007-06-20  Rask Ingemann Lambertsen  <rask@sygehus.dk>
183
184         PR target/32335
185         * config/m32c/m32c.c (m32c_emit_epilogue): Use new HImode epilogue
186         for TARGET_A16.
187         * config/m32c/prologue.md (epilogue_exitd_16): New.
188         (epilogue_reit_16): New.
189         (epilogue_exitd): Rename to epilogue_exitd_24.
190         (epilogue_reit): Rename to epilogue_reit_24.
191
192 2007-06-20  Seongbae Park  <seongbae.park@gmail.com>
193             Maxim Kuvyrkov  <mkuvyrkov@ispras.ru>
194
195         * dbgcnt.def (global_alloc_at_func, global_alloc_at_reg):
196         New counters.
197         * haifa-sched.c (queue_to_ready): Don't requeue next insn
198         if dbg_cnt (sched_insn) reaches the limit.
199         (choose_ready): New parameter INSN_PTR and new return value.
200         (schedule_block): Handle dbg_cnt (sched_insn). Handle
201         the new return value from choose_ready.
202         * global.c (global_aloc): New dbgcnt global_alloc_at_reg.
203         (rest_of_handle_global_alloc): New global_alloc_at_func.
204
205 2007-06-20  Adam Nemet  <anemet@caviumnetworks.com>
206
207         PR tree-optimization/25737
208         * tree.h (struct tree_struct_field_tag): Add new field alias_set.
209         (SFT_NONADDRESSABLE_P, SFT_ALIAS_SET): New macros.
210         * tree-flow.h (struct fieldoff): Add new field alias_set.
211         * tree-ssa-structalias.c (push_fields_onto_fieldstack): Add new
212         argument addressable_type.  Set alias_set of fieldoff.
213         * tree-ssa-alias.c (create_sft): Add new argument alias_set.
214         (create_overlap_variables_for): Pass alias_set from fieldoff to
215         create_sft.
216         * alias.c (get_alias_set): Use alias_set from SFT if set.
217
218 2007-06-20  Hui-May Chang  <hm.chang@apple.com>
219
220         * config/i386/darwin.h (ASM_OUTPUT_COMMON): Print the size
221         of a variable as an unsigned HOST_WIDE_INT integer.
222
223 2007-06-20  Zdenek Dvorak  <dvorakz@suse.cz>
224
225         PR rtl-optimization/32405
226         * loop-iv.c (iv_get_reaching_def): Fail for partial defs.
227
228 2007-06-20  Jakub Jelinek  <jakub@redhat.com>
229
230         * Makefile.in (omega.o): Depend on $(DIAGNOSTIC_H).
231
232         PR middle-end/31959
233         * builtins.c: Include diagnostic.h.
234         (expand_builtin_expect): Make gcc_assert more permissive.
235         * Makefile.in (builtins.o): Depend on $(DIAGNOSTIC_H).
236
237         PR inline-asm/32109
238         * gimplify.c (gimplify_asm_expr): Issue error if type is addressable
239         and !allows_mem.
240
241         PR middle-end/32285
242         * calls.c (precompute_arguments): Also precompute CALL_EXPR arguments
243         if ACCUMULATE_OUTGOING_ARGS.
244
245 2007-06-19  Rask Ingemann Lambertsen  <rask@sygehus.dk>
246
247         * config/m68hc11/m68hc11.c: Include dataflow header file.
248         (m68hc11_reorg): Port to dataflow.
249
250 2007-06-19  Kenneth Zadeck <zadeck@naturalbridge.com>
251
252         * df.h (DF_FIRST_OPTIONAL_PROBLEM): Removed.
253         (struct df_problem.free_blocks_on_set_blocks): New field.
254         (struct dataflow.optional_p): New field.
255         (df_bb_regno_last_use_find, df_insn_regno_def_p): Removed.
256         (df_live_set_all_dirty): New function.
257         * df-scan.c (df_scan_alloc): Initialize optional_p.
258         (problem_SCAN): Initialize free_blocks_on_set_blocks.
259         * df-core.c (df_set_blocks): Removed use of
260         DF_FIRST_OPTIONAL_PROBLEM.  Now uses
261         df_problem.free_blocks_on_set_blocks to determine which blocks are
262         recycled.
263         (df_remove_problem): Removed use of DF_FIRST_OPTIONAL_PROBLEM.
264         (df_finish_pass): Removed use of DF_FIRST_OPTIONAL_PROBLEM.  Now
265         uses dataflow.optional_p to determine if problem should be
266         deleted.
267         (rest_of_handle_df_initialize): Only start live problem if 
268         -02 or above.
269         (df_bb_regno_last_use_find, df_insn_regno_def_p): Removed.
270         * df-problems.c (df_ru_alloc, df_rd_alloc, df_lr_alloc,
271         df_live_alloc, df_urec_alloc, df_note_alloc): set optional_p.
272         (problem_RU, problem_RD, problem_LR, problem_UREC, problem_CHAIN,
273         problem_NOTE):  Initialize free_blocks_on_set_blocks.
274         (df_lr_bb_local_compute): Recompute luids if df_live problem is
275         not active.
276         (df_live_set_all_dirty, df_note_alloc): New function.
277         * regrename.c (merge_overlapping_regs): Change DF_LIVE_* to
278         df_get_live_*.
279         * sched_ebb.c (compute_jump_reg_dependencies): Ditto.
280         * postreload.c (reload_combine): Ditto.
281         * cse.c (cse_extended_basic_block): Ditto.
282         * regmove.c (mark_flags_life_zones): Ditto.
283         * rtlfactoring.c (split_blocks_after_seqs, split_pattern_seq,
284         erase_matching_seqs): Ditto.
285         * bt-load.c (compute_defs_uses_and_gen): Ditto.
286         * integrate (allocate_initial_values): Ditto.
287         * combine.c (reg_dead_at_p): Ditto.
288         * resource.c (mark_target_live_regs): Ditto.
289         * sched-rgn.c (check_live_1, update_live_1): Ditto.
290         * config/sh/sh.c (find_r0_life_regions): Ditto.
291         * global.c (rest_of_handle_global_alloc): Only add back df_live
292         for -O > 1.
293         * local-alloc.c (rest_of_handle_local_alloc): Only remove
294         df_live for -O > 1.
295         * ifcvt.c (dead_or_predicable): Change DF_LIVE_* to
296         df_get_live_*.
297         (if_convert): Make sure df_live is there at -O == 1.
298         (pass_if_after_combine): Cleanup flags.
299         * init-regs.c (initialize_uninitialized_regs): Make sure df_live
300         is there at -O == 1.
301         
302 2007-06-19  Seongbae Park  <seongbae.park@gmail.com>
303
304         * config/arm/arm.c (arm_get_frame_offsets): Set
305         offsets->locals_base to avoid negative stack size.
306         (thumb1_expand_prologue): Assert on negative stack size.
307
308 2007-04-19  Sebastian Pop  <sebpop@gmail.com>
309
310         PR tree-optimization/32367
311         * tree-chrec.h (build_polynomial_chrec): Verify that the left hand side 
312         of the chrec has no evolution in that loop.
313         * testsuite/gcc.dg/tree-ssa/pr32367.c: New.
314
315 2007-06-19  Bob Wilson  <bob.wilson@acm.org>
316
317         * config/xtensa/xtensa.c: Include "df.h".
318         (xtensa_builtin_saveregs): Use adjust_address instead of change_address.
319         (xtensa_va_start): Invoke make_tree with sizetype for
320         expand_builtin_saveregs and then convert the result to a pointer.
321         Use POINTER_PLUS_EXPR.  Use size_int instead of build_int_cst.
322         (xtensa_gimplify_va_arg_expr): Use size_int instead of build_int_cst.
323         Subtract argument size from index value as integers and then use
324         POINTER_PLUS_EXPR to add the result to the array address.
325         
326 2007-06-19  Rask Ingemann Lambertsen  <rask@sygehus.dk>
327
328         PR target/32335
329         * config/m32c/m32c.c: Include dataflow header file.
330         (m32c_emit_prologue): Adjust for prologue insn change.
331         * config/m32c/prologue.md (prologue_enter_16): Only modify SP_REGNO
332         once inside a PARALLEL. Assume frame size passed in operand 0
333         includes space to save the fb register.
334         (prologue_enter_24): Likewise.
335         (epilogue_exitd): Only modify SP_REGNO once inside a PARALLEL.
336
337 2007-06-19  David Daney  <ddaney@avtrex.com
338
339         PR target/32313
340         * config/mips/mips.md (cprestore): Mark $gp as used.
341
342 2007-06-19  Rask Ingemann Lambertsen  <rask@sygehus.dk>
343
344         PR target/32369
345         * config/frv/frv.c (frv_ifcvt_modify_tests): Dataflow merge fix.
346         (frv_ifcvt_modify_insn): Likewise.
347
348 2007-06-19  Richard Guenther  <rguenther@suse.de>
349
350         * tree-ssa-structalias.c (handle_ptr_arith): Make sure to
351         only handle positive offsets that fit in a HOST_WIDE_INT.
352
353 2007-06-19  Uros Bizjak  <ubizjak@gmail.com>
354
355         * config/i386/i386.c (ix86_emit_swsqrtsf): Filter out infinity
356         result of rsqrt insn for zero input argument to avoid NaN.
357
358 2007-06-19  Richard Guenther  <rguenther@suse.de>
359
360         PR middle-end/31950
361         * tree-ssa-alias-warnings.c (ffan_walker): Punt on MTAGs.
362
363 2007-06-19  Jakub Jelinek  <jakub@redhat.com>
364
365         PR tree-optimization/32353
366         * tree-ssa-structalias.c (set_uids_in_ptset): Also handle RESULT_DECL.
367
368 2007-06-19  Nick Clifton  <nickc@redhat.com>
369
370         * config/m32r/linux.h (LIB_SPEC): Always imply -lpthread for
371         -pthread.
372
373 2007-06-18  Uros Bizjak  <ubizjak@gmail.com>
374
375         PR target/32389
376         * config/i386/i386.h (enum ix86_stack_slot): Add SLOT_VIRTUAL.
377         * config/i386/i386.c (assign_386_stack_local): Assert that
378         SLOT_VIRTUAL is valid only before virtual regs are instantiated.
379         (ix86_expand_builtin) [IX86_BUILTIN_LDMXCSR, IX86_BUILTIN_STMXCSR]:
380         Use SLOT_VIRTUAL stack slot instead of SLOT_TEMP.
381         * config/i386/i386.md (truncdfsf2, truncxf<mode>2): Ditto.
382
383 2007-06-18  Steve Ellcey  <sje@cup.hp.com>
384
385         * config/ia64/ia64.h (LIBGCC2_TF_CEXT): New.
386
387 2007-06-18  Seongbae Park  <seongbae.park@gmail.com>
388
389         PR rtl-optimization/32321
390         * gcse.c (replace_store_insn): Update the note before
391         calling emit_insn_after.
392
393 2007-06-18  David Daney  <ddaney@avtrex.com
394
395         Revert:
396
397         2007-06-18  David Daney  <ddaney@avtrex.com
398
399         PR target/32313
400         * config/mips/mips.c (mips_expand_call): Mark $gp as used by
401         local function call.
402
403 2007-06-18  David Daney  <ddaney@avtrex.com
404
405         PR target/32313
406         * config/mips/mips.c (mips_expand_call): Mark $gp as used by
407         local function call.
408
409 2007-06-18  Kenneth Zadeck <zadeck@naturalbridge.com>
410
411         PR middle-end/32355
412         * gcse (rest_of_handle_gcse): Add call to df_finish_pass after
413         cse_main.
414         * df-problems.c (df_note_bb_compute): Fix dumping info.
415         
416 2007-06-18  Kazu Hirata  <kazu@codesourcery.com>
417
418         * config/m68k/m68k.c (m68k_expand_epilogue): Emit a return
419         insn with emit_jump_insn.
420
421 2007-06-18  Uros Bizjak  <ubizjak@gmail.com>
422
423         PR tree-optimization/32383
424         * targhooks.c (default_builtin_reciprocal): Add new bool argument.
425         * targhooks.h (default_builtin_reciprocal): Update prototype.
426         * target.h (struct gcc_target): Update builtin_reciprocal.
427         * doc/tm.texi (TARGET_BUILTIN_RECIPROCAL): Update description.
428         * tree-ssa-math-opts (execute_cse_reciprocals): Skip statements
429         where arg1 is not SSA_NAME.  Pass true to targetm.builtin_reciprocal
430         when fndecl is in BUILT_IN_MD class.
431         (execute_convert_to_rsqrt): Ditto.
432
433         * config/i386/i386.c (ix86_builtin_reciprocal): Update for new bool
434         argument.  Convert IX86_BUILTIN_SQRTPS code only when md_fn is true.
435         Convert BUILT_IN_SQRTF code only  when md_fn is false.
436
437 2007-06-18  Kaz Kojima  <kkojima@gcc.gnu.org>
438
439         * bt-load.c (move_btr_def): Fix the order of arguments
440         to validate_replace_rtx.
441
442 2007-06-18  Nathan Sidwell  <nathan@codesourcery.com>
443
444         * config/m68k/m68k-devices.def: Add 54450..54455.
445
446 2007-06-17  Uros Bizjak  <ubizjak@gmail.com>
447
448         PR rtl-optimization/32366
449         * simplify-rtx.c (simplify_unary_operation_1) [FLOAT_TRUNCATE,
450         FLOAT_EXTEND]: Prevent non-scalar modes from entering
451         significand_size.
452
453 2007-06-17  Kenneth Zadeck <zadeck@naturalbridge.com>
454
455         PR middle-end/32349
456         * modulo-sched (generate_reg_moves): Added rescan parameter and if
457         this is true, rescan insn being modified.
458         (sms_schedule): Added rescan parameter.
459         (rest_of_handle_sms): Moved freeing of dominance info to before
460         getting out of cfg_layout.
461         
462 2007-06-17  Nathan Sidwell  <nathan@codesourcery.com>
463
464         * config/m68k/m68k.h (ISA_HAS_FF1, ISA_HAS_MVS_MVZ): New.
465         * config/m68k/m68k.md: Use ISA_HAS_FF1 and ISA_HAS_MVS_MVZ as
466         appropriate.
467
468         * config/m68k/m68k.c (all_isas): Remove FL_CF_FPU and
469         FL_CF_EMAC from the entry for isac.
470
471         * config/m68k/predicates.md (const_call_operand): Adjust comment.
472         (const_sibcall_operand): New.
473         (sibcall_operand): Use it.
474         * config/m68k/m68k.c (FL_FOR_isa_c): Not ISA_B compatible.
475         (m68k_isas): ISAC does not imply FPU or EMAC.
476         (override_options): Add ISA_C logic for symbolic jump & call.
477
478 2007-06-17  Eric Botcazou  <ebotcazou@libertysurf.fr>
479
480         * config/sparc/sparc.c (sparc_vis_init_builtins): Retrieve the
481         return mode from the builtin itself.
482         (sparc_fold_builtin): Fix cast of zero constant.
483
484 2007-06-16  Uros Bizjak  <ubizjak@gmail.com>
485
486         * targhooks.c (default_builtin_reciprocal): New default target hook.
487         * targhooks.h (default_builtin_reciprocal): Add prototype.
488         * hooks.c (hook_tree_tree_bool_null): Remove hook.
489         * hooks.h (hook_tree_tree_bool_null): Remove prototype.
490         * target-def.h (TARGET_BUILTIN_RECIPROCAL): Define as
491         default_builtin_reciprocal.
492
493 2007-06-16  Uros Bizjak  <ubizjak@gmail.com>
494
495         PR middle-end/31723
496         * hooks.c (hook_tree_tree_bool_null): New hook.
497         * hooks.h (hook_tree_tree_bool_null): Add prototype.
498         * tree-pass.h (pass_convert_to_rsqrt): Declare.
499         * passes.c (init_optimization_passes): Add pass_convert_to_rsqrt.
500         * tree-ssa-math-opts.c (execute_cse_reciprocals): Scan for a/func(b)
501         and convert it to reciprocal a*rfunc(b).
502         (execute_convert_to_rsqrt): New function.
503         (gate_convert_to_rsqrt): New function.
504         (pass_convert_to_rsqrt): New pass definition.
505         * target.h (struct gcc_target): Add builtin_reciprocal.
506         * target-def.h (TARGET_BUILTIN_RECIPROCAL): New define.
507         (TARGET_INITIALIZER): Initialize builtin_reciprocal with
508         TARGET_BUILTIN_RECIPROCAL.
509         * doc/tm.texi (TARGET_BUILTIN_RECIPROCAL): Document.
510
511         * config/i386/i386.h (TARGET_RECIP): New define.
512         * config/i386/i386.md (divsf3): Expand by calling ix86_emit_swdivsf
513         for TARGET_SSE_MATH and TARGET_RECIP when flag_finite_math_only and
514         flag_unsafe_math_optimizations are set, flag_trapping_math is unset
515         and not optimizing for size.
516         (*rcpsf2_sse): New insn pattern.
517         (*rsqrtsf2_sse): Ditto.
518         (rsqrtsf2): New expander.  Expand by calling ix86_emit_swsqrtsf
519         for TARGET_SSE_MATH and TARGET_RECIP when flag_finite_math_only and
520         flag_unsafe_math_optimizations are set, flag_trapping_math is unset
521         and not optimizing for size.
522         (sqrt<mode>2): Expand SFmode operands by calling ix86_emit_swsqrtsf
523         for TARGET_SSE_MATH and TARGET_RECIP when flag_finite_math_only and
524         flag_unsafe_math_optimizations are set, flag_trapping_math is unset
525         and not optimizing for size.
526         * config/i386/sse.md (divv4sf): Expand by calling ix86_emit_swdivsf
527         for TARGET_SSE_MATH and TARGET_RECIP when flag_finite_math_only and
528         flag_unsafe_math_optimizations are set, flag_trapping_math is unset
529         and not optimizing for size.
530         (*sse_rsqrtv4sf2): Do not export.
531         (sqrtv4sf2): Ditto.
532         (sse_rsqrtv4sf2): New expander.  Expand by calling ix86_emit_swsqrtsf
533         for TARGET_SSE_MATH and TARGET_RECIP when flag_finite_math_only and
534         flag_unsafe_math_optimizations are set, flag_trapping_math is unset
535         and not optimizing for size.
536         (sqrtv4sf2): Ditto.
537         * config/i386/i386.opt (mrecip): New option.
538         * config/i386/i386-protos.h (ix86_emit_swdivsf): Declare.
539         (ix86_emit_swsqrtsf): Ditto.
540         * config/i386/i386.c (IX86_BUILTIN_RSQRTF): New constant.
541         (ix86_init_mmx_sse_builtins): __builtin_ia32_rsqrtf: New
542         builtin definition.
543         (ix86_expand_builtin): Expand IX86_BUILTIN_RSQRTF using
544         ix86_expand_unop1_builtin.
545         (ix86_emit_swdivsf): New function.
546         (ix86_emit_swsqrtsf): Ditto.
547         (ix86_builtin_reciprocal): New function.
548         (TARGET_BUILTIN_RECIPROCAL): Use it.
549         (ix86_vectorize_builtin_conversion): Rename from
550         ix86_builtin_conversion.
551         (TARGET_VECTORIZE_BUILTIN_CONVERSION): Use renamed function.
552         * doc/invoke.texi (Machine Dependent Options): Add -mrecip to
553         "i386 and x86_64 Options" section.
554         (Intel 386 and AMD x86_64 Options): Document -mrecip.
555
556 2007-06-15  Andrew Pinski <andrew_pinski@playstation.sony.com>
557             Zdenek Dvorak <dvorakz@suse.cz>
558             Richard Guenther  <rguenther@suse.de>
559             Kaz Kojima  <kkojima@gcc.gnu.org>
560
561         * tree-vrp.c (compare_values_warnv): Convert val2 to
562         the type of val1.
563         (extract_range_from_assert): Create
564         POINTER_PLUS_EXPR for pointer types.
565         (extract_range_from_binary_expr): Handle
566         only POINTER_PLUS_EXPR, MIN_EXPR, and MAX_EXPR
567         for pointer types.
568         * doc/c-tree.texi (POINTER_PLUS_EXPR): Document.
569         * tree-ssa-loop-niter.c (split_to_var_and_offset): Handle
570         POINTER_PLUS_EXPR as PLUS_EXPR.
571         (number_of_iterations_lt_to_ne):
572         For pointer types, use sizetype when
573         creating MINUS_EXPR/PLUS_EXPRs.
574         (assert_loop_rolls_lt): For pointer types, use sizetype when
575         creating MINUS_EXPR/PLUS_EXPRs.
576         (number_of_iterations_le): Likewise.
577         (expand_simple_operations): POINTER_PLUS_EXPR are simple also.
578         (derive_constant_upper_bound): Handle POINTER_PLUS_EXPR just
579         like PLUS_EXPR and MINUS_EXPR.
580         * tree-pretty-print.c (dump_generic_node): Handle
581         POINTER_PLUS_EXPR.
582         (op_prio): Likewise.
583         (op_symbol_1): Likewise.
584         * optabs.c (optab_for_tree_code): Likewise.
585         * tree-ssa-loop-manip.c (create_iv): Handle pointer base
586         specially.
587         * tree-tailcall.c (process_assignment): Mention
588         POINTER_PLUS_EXPR in a TODO comment.
589         * tree.c (build2_stat): Assert when trying to use PLUS_EXPR or 
590         MINUS_EXPR with a pointer. Also assert for POINTER_PLUS_EXPR
591         not used with a pointer and an integer type.
592         * tree-scalar-evolution.c (add_to_evolution_1): Convert the
593         increment using chrec_convert_rhs instead of chrec_convert.
594         (follow_ssa_edge_in_rhs): Handle POINTER_PLUS_EXPR like
595         PLUS_EXPR except for the right hand side's type will be
596         sizetype.
597         (interpret_rhs_modify_stmt): Handle POINTER_PLUS_EXPR.
598         (fold_used_pointer_cast): Kill.
599         (pointer_offset_p): Kill.
600         (fold_used_pointer): Kill.
601         (pointer_used_p): Kill.
602         (analyze_scalar_evolution_1 <case GIMPLE_MODIFY_STMT>): Don't
603         call fold_used_pointer.
604         (instantiate_parameters_1): Convert the increment
605         using chrec_convert_rhs instead of chrec_convert.
606         Handle POINTER_PLUS_EXPR as PLUS_EXPR.
607         * builtins.c (get_pointer_alignment): Handle POINTER_PLUS_EXPR
608         instead of PLUS_EXPR.
609         (expand_builtin_strcat): Create a POINTER_PLUS_EXPR instead of
610         PLUS_EXPR for pointers.
611         (std_gimplify_va_arg_expr): Likewise.
612         (fold_builtin_memory_op): Likewise.
613         (fold_builtin_strstr): Likewise.
614         (fold_builtin_strchr): Likewise.
615         (fold_builtin_strrchr): Likewise.
616         (fold_builtin_strpbrk): Likewise.
617         (expand_builtin_memory_chk): Likewise.
618         (fold_builtin_memory_chk): Likewise.
619         (std_expand_builtin_va_start): Use
620         sizetype for the call to make_tree and then convert
621         to the pointer type.
622         (fold_builtin_memchr): Use POINTER_PLUS_EXPR
623         instead of PLUS_EXPR for adding to a pointer.
624         (std_gimplify_va_arg_expr): Use fold_build2 for
625         the creating of POINTER_PLUS_EXPR.  For the BIT_AND_EXPR, cast
626         the operands to sizetype first and then cast the BIT_AND_EXPR
627         back to the pointer type.
628         * fold-const.c (build_range_check): Handle pointer types
629         specially.
630         (extract_array_ref): Look for POINTER_PLUS_EXPR instead
631         of PLUS_EXPR's. Make sure the offset is converted to
632         sizetype.
633         (try_move_mult_to_index): Strip the NOPs from the offset.
634         Remove code argument and replace all uses with PLUS_EXPR.
635         (fold_to_nonsharp_ineq_using_bound): Handle pointer types
636         specially. Don't use a pointer type for MINUS_EXPR.
637         (fold_unary): Handle for (T1)(X op Y),
638         only p+ as that is the only as that can be handled for
639         binary operators now.
640         (fold_binary <case POINTER_PLUS_EXPR>): Add folding of
641         POINTER_PLUS_EXPR.
642         <case PLUS_EXPR>: Add folding of PTR+INT into
643         PTR p+ INT.
644         Don't call try_move_mult_to_index.
645         <case MINUS_EXPR>: Fold (PTR0 p+ A) - (PTR1 p+ B)
646         into (PTR0 - PTR1) + (A - B). Fold (PTR0 p+ A) - PTR1 into
647         (PTR0 - PTR1) + A iff (PTR0 - PTR1) simplifies.
648         Don't call try_move_mult_to_index.
649         (tree_expr_nonnegative_warnv_p): Handle POINTER_PLUS_EXPR.
650         (tree_expr_nonzero_p): Likewise.
651         (fold_indirect_ref_1): Look at POINTER_PLUS_EXPR instead
652         of PLUS_EXPR for the complex expression folding.
653         * tree-chrec.c (chrec_fold_plus_poly_poly): If the
654         first chrec is a pointer type, then the second should
655         be sizetype and not the first's type.
656         For POINTER_PLUS_EXPR, use a different right hand side type.
657         Handle POINTER_PLUS_EXPR like PLUS_EXPR.
658         (chrec_fold_plus_1): For POINTER_PLUS_EXPR, use a
659         different right hand side type.
660         Handle POINTER_PLUS_EXPR like PLUS_EXPR.
661         (chrec_fold_plus): For pointer types, use POINTER_PLUS_EXPR
662         instead of PLUS_EXPR.
663         When either operand is zero, convert the other operand.
664         (chrec_apply): Use chrec_convert_rhs
665         on the argument x instead of chrec_convert.
666         (reset_evolution_in_loop): For pointer types, the new_evol
667         should be sizetype.
668         (convert_affine_scev): For POINTER_PLUS_EXPR, use a
669         different right hand side type.
670         Handle POINTER_PLUS_EXPR like PLUS_EXPR.
671         (chrec_convert_rhs): New function.
672         (chrec_convert_aggressive): For POINTER_PLUS_EXPR, use a
673         different right hand side type.
674         Handle POINTER_PLUS_EXPR like PLUS_EXPR.
675         * tree-chrec.h (chrec_convert_rhs): New prototype.
676         (build_polynomial_chrec): For pointer types, the right hand
677         * tree-ssa-ccp.c (maybe_fold_stmt_indirect): Look for
678         POINTER_PLUS_EXPR instead of PLUS_EXPR's.
679         Remove subtraction case as it is always addition now.
680         Make sure the offset is converted to sizetype.
681         (fold_stmt_r): Don't handle PLUS_EXPR/MINUS_EXPR specially.
682         Handle POINTER_PLUS_EXPR like PLUS_EXPR was handled before.
683         * tree-ssa-loop-ivopts.c (determine_base_object): Abort for 
684         PLUS_EXPR in pointer type.
685         Handle POINTER_PLUS_EXPR.
686         (tree_to_aff_combination): Likewise.
687         (force_expr_to_var_cost): Likewise.
688         (force_expr_to_var_cost): Likewise. Create a POINTER_PLUS_EXPR
689         instead of PLUS_EXPR for pointers.
690         * c-format.c (check_format_arg): Handle POINTER_PLUS_EXPR
691         instead of PLUS_EXPR of pointer types.
692         * tree-stdarg.c (va_list_counter_bump): Handle POINTER_PLUS_EXPR
693         as PLUS_EXPR.
694         (check_va_list_escapes): Likewise.
695         (check_all_va_list_escapes): Likewise.
696         * dwarf2out.c (loc_descriptor_from_tree_1):
697         Handle POINT_PLUS_EXPR as a PLUS_EXPR.
698         * expr.c (expand_expr_real_1): Handle POINTER_PLUS_EXPR.
699         (string_constant): Likewise.
700         * tree-ssa-address.c (tree_mem_ref_addr): When adding
701         the offset to the base, use POINTER_PLUS_EXPR.
702         (add_to_parts): Convert the index to sizetype.
703         (create_mem_ref): Create A POINTER_PLUS_EXPR for the one case.
704         * matrix-reorg.c (collect_data_for_malloc_call): Stmt
705         will now only be either INDIRECT_REF and POINTER_PLUS_EXPR.
706         Offset only holds something for PLUS_EXPR.
707         (ssa_accessed_in_tree): Handle POINTER_PLUS_EXPR just as
708         a PLUS_EXPR.
709         (analyze_transpose): POINTER_PLUS_EXPR will only show up now
710         and not PLUS_EXPR.
711         (analyze_accesses_for_modify_stmt): Likewise.
712         Remove comment about the type being integral type as it is
713         wrong now.
714         (can_calculate_expr_before_stmt): Handle POINTER_PLUS_EXPR as
715         PLUS_EXPR.
716         (transform_access_sites): POINTER_PLUS_EXPR will only show up now
717         and not PLUS_EXPR.
718         Correct the type which the artimentic is done in (is now
719         sizetype).
720         Reindent one loop.
721         * tree-data-ref.c (split_constant_offset): Handle
722         POINTER_PLUS_EXPR
723         * tree-affine.c (tree_to_aff_combination): Likewise.
724         * c-typeck.c (build_unary_op): For pointers create the increment
725         as a sizetype. Create a POINTER_PLUS_EXPR instead of PLUS_EXPR
726         for pointers.
727         * gimplify.c (gimplify_self_mod_expr): Create a
728         POINTER_PLUS_EXPR instead of PLUS_EXPR for pointers.
729         (gimplify_omp_atomic_fetch_op): Handle POINTER_PLUS_EXPR.
730         * tree.def (POINTER_PLUS_EXPR): New tree code.
731         * tree-predcom.c (ref_at_iteration): If we have a pointer
732         type do the multiplication in sizetype.
733         * tree-mudflap.c (mf_xform_derefs_1): Create a
734         POINTER_PLUS_EXPR instead of PLUS_EXPR for pointers.
735         * tree-ssa-forwprop.c 
736         (forward_propagate_addr_into_variable_array_index):
737         Don't expect there to be a cast for the index as that
738         does not exist anymore.
739         (forward_propagate_addr_expr_1): Check for POINTER_PLUS_EXPR
740         instead of PLUS_EXPR.
741         Don't check for the first operand of the POINTER_PLUS_EXPR
742         was the index as it cannot be.
743         Call forward_propagate_addr_into_variable_array_index with
744         the SSA_NAME instead of the statement.
745         * varasm.c (const_hash_1): Handle POINTER_PLUS_EXPR.
746         (compare_constant): Likewise.
747         (copy_constant): Likewise.
748         (compute_reloc_for_constant): Likewise.
749         (output_addressed_constants): Likewise.
750         (initializer_constant_valid_p): Likewise.
751         * tree-ssa.c (tree_ssa_useless_type_conversion_1):
752         Convert the MIN/MAX of the inner type to the outer
753         type before comparing them.
754         * tree-ssa-loop-prefetch.c (idx_analyze_ref):  Handle
755         POINTER_PLUS_EXPR instead of PLUS_EXPR.
756         (issue_prefetch_ref): Create a POINTER_PLUS_EXPR instead
757         of PLUS_EXPR for pointers.
758         * tree-inline.c (estimate_num_insns_1): Handle
759         POINTER_PLUS_EXPR.
760         * tree-vect-transform.c (vect_create_addr_base_for_vector_ref): 
761         Create a POINTER_PLUS_EXPR instead of PLUS_EXPR for pointers.
762         (bump_vector_ptr): Create a POINTER_PLUS_EXPR
763         instead of PLUS_EXPR for the pointer increment statement.
764         (vect_update_ivs_after_vectorizer): For pointer types, create
765         POINTER_PLUS_EXPR instead of PLUS_EXPR and also create
766         MULT_EXPR in sizetype.
767         (vect_gen_niters_for_prolog_loop): Add a cast when creating
768         byte_misalign.
769         * tree-object-size.c (plus_expr_object_size): Handle
770         POINTER_PLUS_EXPR instead of PLUS_EXPR.  Removing all the extra
771         code which is trying to figure out which side is a pointer and 
772         is the index.
773         (check_for_plus_in_loops_1): Likewise.
774         (check_for_plus_in_loops): Likewise.
775         * c-common.c (pointer_int_sum): Create a
776         POINTER_PLUS_EXPR instead of PLUS_EXPR for pointers.
777         * tree-ssa-structalias.c (handle_ptr_arith): Handle
778         only POINTER_PLUS_EXPR.  Removing all the extra
779         code which is trying to figure out which side is a pointer and 
780         is the index.
781         * tree-cfg.c (verify_expr): Add extra checking for pointers and
782         PLUS_EXPR and MINUS_EXPR.
783         Also add checking to make sure the operands of POINTER_PLUS_EXPR
784         are correct.
785         * config/frv/frv.c (frv_expand_builtin_va_start): Use sizetype
786         with make_tree, instead of a pointer type.
787         * config/s390/s390.c (s390_va_start): Use POINTER_PLUS_EXPR
788         for pointers instead of PLUS_EXPR.
789         (s390_gimplify_va_arg): Likewise.
790         * config/spu/spu.c (spu_va_start): Create POINTER_PLUS_EXPR
791         instead of PLUS_EXPR when doing addition on pointer
792         types.  Use sizetype for the second operand.
793         (spu_gimplify_va_arg_expr): Likewise.
794         * config/sparc/sparc.c (sparc_gimplify_va_arg): Use 
795         POINTER_PLUS_EXPR instead of PLUS_EXPR when the operand was
796         a pointer.  Don't create a BIT_AND_EXPR for pointer types.
797         * config/i386/i386.c (ix86_va_start): Use POINTER_PLUS_EXPR
798         for the pointer addition and also use size_int/sizetype
799         for the offset.
800         (ix86_gimplify_va_arg): Likewise.
801         Perform BIT_AND_EXPR on sizetype arguments.
802         * config/sh/sh.c (sh_va_start): Call make_tree with sizetype
803         and convert its result to a pointer type.  Use POINTER_PLUS_EXPR
804         for the pointer additions and also use size_int for the offsets.
805         (sh_gimplify_va_arg_expr): Use POINTER_PLUS_EXPR for the pointer
806         additions and also use size_int for the offsets.  Perform
807         BIT_AND_EXPR on sizetype arguments.
808         * config/ia64/ia64.c (ia64_gimplify_va_arg): Use
809         POINTER_PLUS_EXPR for pointers and create the
810         BIT_AND_EXPR in sizetype.
811         * config/rs6000/rs6000.c (rs6000_va_start): Use POINTER_PLUS_EXPR
812         instead of PLUS_EXPR for pointer addition.
813         (rs6000_va_start): Likewise.
814         Also use sizetype for the offset.
815         * config/pa/pa.c (reloc_needed): Handle POINTER_PLUS_EXPR
816         as PLUS_EXPR/MINUS_EXPR.
817         (hppa_gimplify_va_arg_expr): Don't create MINUS_EXPR or
818         PLUS_EXPR for pointers, instead use POINTER_PLUS_EXPR.
819         Don't use BIT_AND_EXPR on a pointer type, convert the
820         expression to sizetype first.
821         * config/mips/mips.c (mips_va_start): Use POINTER_PLUS_EXPR
822         for pointers.
823         (mips_gimplify_va_arg_expr): Likewise.
824         Don't create BIT_AND_EXPR in a pointer type.
825
826 2007-06-15  Eric Christopher  <echristo@apple.com>
827
828         * config.gcc (i?86-*-darwin*): Add t-crtfm and t-crtpc.
829         (x86_64-*-darwin*): Ditto.
830         * config/i386/darwin.h (CRTEND_SPEC): New. Add support
831         for above.
832
833 2007-06-15  Matthew Wilcox <matthew@wil.cx>
834
835         * doc/extend.texi: Document behavior of __attribute__((aligned))
836         on typedefs.
837
838 2007-06-15  Mark Mitchell  <mark@codesourcery.com>
839
840         * rtlanal.c (note_stores): Improve documentation.
841
842 2007-06-15  Bernd Schmidt  <bernd.schmidt@analog.com>
843
844         * config/bfin/elf.h (ASM_GENERATE_INTERNAL_LABEL,
845         LOCAL_LABEL_PREFIX): Delete.
846         * config/bfin/bfin.c (TARGET_ASM_INTERNAL_LABEL): Delete.
847         (bfin_internal_label): Delete.
848
849 2007-06-15  Uros Bizjak  <ubizjak@gmail.com>
850
851         * libgcc2.c (CEXT): When compiling L_multc3 and L_divtc3,
852         define to "l" if LIBGCC_LONG_DOUBLE_SIZE == 128,
853         otherwise define to LIBGCC2_TF_CEXT.
854         * config/i386/linux64.h (LIBGCC2_HAS_TF_MODE): New define.
855         (LIBGCC_TF_CEXT): Ditto.
856         (TF_SIZE): Ditto.
857
858 2007-06-14  Seongbae Park  <seongbae.park@gmail.com>
859
860         PR rtl-optimization/32339
861         * df-scan.c (df_uses_record): Don't modify flags but just add to
862         it for df_ref_record.
863
864 2007-06-14  Andrew Pinski  <andrew_pinski@playstation.sony.com>
865
866         * tree-mudflap.c: Fix whitespace issues.
867
868 2007-06-15  Kazu Hirata  <kazu@codesourcery.com>
869
870         * config/m68k/m68k.c (ASM_DOT, ASM_DOTW, ASM_DOTL): Remove.
871
872 2007-06-14  Eric Christopher  <echristo@apple.com>
873
874         * config/i386/sse.md (movdi_to_sse): Rewrite body.
875         (movv4sf): Use gcc_unreachable instead of abort.
876
877 2007-06-14  Uros Bizjak  <ubizjak@gmail.com>
878
879         PR target/32268
880         * config/i386/sfp-machine.h (CMPtype): New define.
881         (mach stubs): Use CMPtype instead of int as a return type.
882
883 2007-06-14  Uros Bizjak  <ubizjak@gmail.com>
884
885         * config/soft-fp/eqdf2.c, config/soft-fp/eqsf2.c,
886         config/soft-fp/eqtf2.c, config/soft-fp/gedf2.c,
887         config/soft-fp/gesf2.c, config/soft-fp/getf2.c,
888         config/soft-fp/ledf2.c, config/soft-fp/lesf2.c,
889         config/soft-fp/letf2.c, config/soft-fp/unorddf2.c,
890         config/soft-fp/unordsf2.c, config/soft-fp/unordtf2.c,
891         config/soft-fp/soft-fp.h: Update from glibc CVS.
892
893 2007-06-14  Bernd Schmidt  <bernd.schmidt@analog.com>
894
895         * config/bfin/uclinux.h (MFWRAP_SPEC): New.
896
897 2007-06-14  Rask Ingemann Lambertsen  <rask@sygehus.dk>
898
899         PR target/32341
900         * config/v850/v850.c: Include dataflow header file.
901         (substitute_ep_register): Fix typo.
902
903 2007-06-14  Paolo Bonzini  <bonzini@gnu.org>
904
905         * configure.ac: Fix earlier checkin.
906         * configure: Regenerated.
907
908 2007-06-14  Paolo Bonzini  <bonzini@gnu.org>
909
910         * acinclude.m4 (gcc_AC_CHECK_PROG_VER): Remove.
911         * aclocal.m4: Regenerate.
912         * configure.ac: Use ACX_PROG_CC_WARNING_OPTS,
913         ACX_PROG_CC_WARNINGS_ARE_ERRORS,
914         ACX_PROG_CC_WARNING_ALMOST_PEDANTIC, ACX_CHECK_PROG_VER.
915         * configure: Regenerate.
916         * Makefile.in (LOOSE_WARN): Subst loose_warn.
917
918         * Makefile.in (quickstrap): Build libgcc too.
919
920 2007-06-14  Paolo Bonzini  <bonzini@gnu.org>
921
922         * configure.ac: Add --enable-checking=df.  Explicitly mention that
923         the variables are initialized as for "release".
924         * df-core.c: Use it.
925         * configure: Regenerate.
926         * config.in: Regenerate.
927
928 2007-06-14  Bob Wilson  <bob.wilson@acm.org>
929
930         * config/xtensa/xtensa.c (xtensa_expand_nonlocal_goto): Use
931         validate_replace_rtx instead of replace_rtx.
932         (xtensa_expand_prologue): Call df_insn_rescan after replace_rtx.
933
934 2007-06-14  Danny Smith  <dannysmith@users.sourceforge.net>
935
936         * config/i386/cygming.h (DWARF_FRAME_REGNUM): Define.
937         (DWARF2_UNWIND_INFO): Override default if configured with
938         SJLJ EH disabled.
939         * config/i386/cygwin.h (STARTFILE_SPEC): Add crtbegin.o.
940         (ENDFILE_SPEC): Add crtend.o.
941         * config/i386/mingw32.h (STARTFILE_SEC): Add crtbegin.o.
942         (ENDFILE_SPEC): Add crtend.o.
943         (TARGET_USE_JCR_SECTION): Define.
944         (MD_UNWIND_SUPPORT): Define for 32-bit target.
945
946         * config/i386/cygming-crtbegin.c: New file.
947         * config/i386/cygming-crtend.c: New file.
948
949 2007-06-14  Pascal Obry Pascal Obry  <obry@adacore.com>
950
951         * config/i386/w32-unwind.h: New file.
952
953 2007-06-13  Eric Christopher  <echristo@apple.com>
954
955         * config/i386/darwin.h (PREFERRED_STACK_BOUNDARY): Don't let
956         the user set a value below STACK_BOUNDARY.
957
958 2007-06-13  Thiemo Seufer  <ths@networkno.de>
959
960         * config/mips/linux.h, config/mips/linux64.h (LIB_SPEC): Always
961         imply -lpthread for -pthread.
962
963 2007-06-13  Kazu Hirata  <kazu@codesourcery.com>
964
965         * basic-block.h: Remove the prototype for
966         free_basic_block_vars.
967         * cfglayout.h: Remove the prototype for
968         insn_locators_initialize.
969         * tree.h: Remove the prototype for emit_line_note.
970
971         * tree-ssa-pre.c (mergephitemp): Remove.
972         (init_pre): Don't use mergephitemp.
973
974 2007-06-13  Eric Christopher  <echristo@apple.com>
975
976         * config/i386/i386.c (override_options): If we've specified
977         an arch then don't use TARGET_SUBTARGET_ISA_DEFAULTs.
978
979 2007-06-13  Bob Wilson  <bob.wilson@acm.org>
980
981         * df-scan.c (df_get_entry_block_def_set): Check if STATIC_CHAIN_REGNUM
982         is defined.
983
984 2007-06-13  Bernd Schmidt  <bernd.schmidt@analog.com>
985
986         * config/bfin/bfin.h (EH_RETURN_HANDLER_RTX): Use gen_frame_mem.
987         * config/bfin/bfin.md (UNSPEC_VOLATILE_STORE_EH_HANDLER): New constant.
988         (eh_store_handler): New pattern.
989         (eh_return): Emit it instead of a plain move.
990
991 2007-06-13  Uros Bizjak  <ubizjak@gmail.com>
992
993         * config/i386/i386.c (ix86_init_mmx_sse_builtins)
994         [__builtin_infq, __builtin_fabsq]: Define usign def_builtin.
995         [__builtin_ia32_rsqrtps, __builtin_ia32_rsqrtss]: Define using
996         def_builtin_const.
997
998 2007-06-13  Bernd Schmidt  <bernd.schmidt@analog.com>
999
1000         * config/bfin/bfin.c (gen_one_bundle): Delete unused local variables.
1001         (find_next_insn_start, find_load): New functions.
1002         (bfin_reorg): Use them to deal with the fact that parallel insns are
1003         no longer represented as a SEQUENCE.
1004
1005 2007-06-13  Eric Botcazou  <ebotcazou@libertysurf.fr>
1006
1007         * config/sparc/sparc.c (sparc_override_options): Initialize
1008         fpu mask correctly.
1009
1010 2007-06-13  Dave Korn  <dave.korn@artimi.com>
1011
1012         * config/i386/i386.c (ix86_eax_live_at_start_p): Use
1013         df_get_live_out.
1014
1015 2007-06-13  Kazu Hirata  <kazu@codesourcery.com>
1016
1017         * auto-inc-dec.c, c-incpath.c, config/c4x/libgcc.S,
1018         config/sh/divcost-analysis, dbgcnt.def, df-core.c,
1019         df-problems.c, df-scan.c, df.h, dominance.c, dse.c, regstat.c,
1020         tree-data-ref.c, tree-ssa-loop-im.c, tree-ssa-loop-prefetch.c,
1021         tree-vect-transform.c: Fix comment typos.  Follow spelling
1022         conventions.
1023
1024 2007-06-12  Seongbae Park  <seongbae.park@gmail.com>
1025
1026        * df-scan.c (df_get_exit-block_use_set): Always add the stack pointer
1027        to the exit block use set.
1028        (df_insn_delete, df_insn_rescan): Fixed spelling of "deferring". 
1029        * gcse.c (cpro_jump): Don't emit barrier in cfglayout mode.
1030        * config/sparc/sparc.c (sparc_check_64): Check df != NULL.
1031
1032 2007-06-12  Seongbae Park  <seongbae.park@gmail.com>
1033
1034         * opts.c (common_handle_option): Handle new option -fdbg-cnt-list.
1035         * dbgcnt.c (dbg_cnt_set_limit_by_name): Return value
1036         to indicate an error.
1037         (dbg_cnt_process_single_pair, dbg_cnt_list_all_counters): New functions
1038         (dbg_cnt_process_opt): Print an error on a bad argument.
1039         * dbgcnt.h (dbg_cnt_list_all_counters): New function declaration.
1040         * common.opt (-fdbg-cnt-list): New.
1041         * doc/invoke.texi (-fdbg-cnt-list,-fdbg-cnt=): New.
1042
1043 2007-06-12  Eric Botcazou  <ebotcazou@adacore.com>
1044
1045         * tree-ssa-alias.c (finalize_ref_all_pointers): Clear pt_anything
1046         flag on ref-all pointers.
1047
1048 2007-06-12  Andrew Pinski  <andrew_pinski@playstation.sony.com>
1049
1050         PR middle-end/31579
1051         * expr.c (expand_expr_addr_expr_1): Call expand_expr
1052         for the offset with the modifier as EXPAND_INITIALIZER
1053         if the modifier is EXPAND_INITIALIZER.
1054         (expand_expr_real_1 <case INTEGER_CST>): Don't force to
1055         a register if we had an overflow.
1056
1057 2007-06-12  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
1058
1059         * real.c (real_isfinite): New.
1060         (real_sqrt): Use it.
1061         * real.h (real_isfinite): New.
1062         * builtins.c: Use it.
1063
1064 2007-06-12  Ian Lance Taylor  <iant@google.com>
1065             Daniel Berlin  <dberlin@dberlin.org>
1066
1067         PR libstdc++/29286
1068         * tree.def: Add CHANGE_DYNAMIC_TYPE_EXPR.
1069         * tree.h (CHANGE_DYNAMIC_TYPE_NEW_TYPE): Define.
1070         (CHANGE_DYNAMIC_TYPE_LOCATION): Define.
1071         (DECL_NO_TBAA_P): Define.
1072         (struct tree_decl_common): Add no_tbaa_flag field.
1073         * tree-ssa-structalias.c (struct variable_info): Add
1074         no_tbaa_pruning field.
1075         (new_var_info): Initialize no_tbaa_pruning field.
1076         (unify_nodes): Copy no_tbaa_pruning field.
1077         (find_func_aliases): Handle CHANGE_DYNAMIC_TYPE_EXPR.
1078         (dump_solution_for_var): Print no_tbaa_pruning flag.
1079         (set_uids_in_ptset): Add no_tbaa_pruning parameter.  Change all
1080         callers.
1081         (compute_tbaa_pruning): New static function.
1082         (compute_points_to_sets): Remove CHANGE_DYNAMIC_TYPE_EXPR nodes.
1083         Call compute_tbaa_pruning.
1084         * tree-ssa-alias.c (may_alias_p): Test no_tbaa_flag for pointers.
1085         * gimplify.c (gimplify_expr): Handle CHANGE_DYNAMIC_TYPE_EXPR.
1086         * gimple-low.c (lower_stmt): Likewise.
1087         * tree-gimple.c (is_gimple_stmt): Likewise.
1088         * tree-ssa-operands.c (get_expr_operands): Likewise.
1089         * tree-ssa-dce.c (mark_stmt_if_obviously_necessary): Likewise.
1090         * tree-inline.c (estimate_num_insns_1): Likewise.
1091         (copy_result_decl_to_var): Likewise.
1092         * expr.c (expand_expr_real_1): Likewise.
1093         * tree-pretty-print.c (dump_generic_node): Likewise.
1094         * tree-inline.c (copy_decl_to_var): Copy DECL_NO_TBAA_P flag.
1095         * omp-low.c (omp_copy_decl_2): Likewise.
1096         * print-tree.c (print_node): Print DECL_NO_TBAA_P flag.
1097         * doc/c-tree.texi (Expression trees): Document
1098         CHANGE_DYNAMIC_TYPE_EXPR.
1099
1100 2007-06-12  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
1101
1102         * fold-const.c (fold_binary): Guard (X-X) -> 0 transformation
1103         with !HONOR_NANS and !HONOR_INFINITIES.
1104         * simplify-rtx.c (simplify_binary_operation_1): Likewise.
1105
1106 2007-06-12  Tristan Gingold  <gingold@adacore.com>
1107
1108         * gcov.c: Comments updated.
1109         (source_info): Add file_time field.
1110         (source_index): New variable.
1111         (mutiple_files): New variable.
1112         (generate_results): New function extracted from process_file.
1113         (process_file): Save and restore chain of functions, generate
1114         results and free structures only if not merging results.
1115         (release_structures): File names are now freed in create_file_names
1116         (create_file_names): Free previous file names.
1117         (find_source): File date is now read here and modifications in
1118         source files is checked here.
1119         (read_graph_file): Only reverse order of functions for the current
1120         object file.
1121         (make_gcov_file_name): Do not generate long names if input_name is
1122         NULL.
1123         (output_lines): If merging results do not display graph, data and
1124         runs informations.
1125         Checking source file modification is done in find_source.
1126
1127         * doc/gcov.texi: Append an s to sourcefile.
1128
1129 2007-06-12  Bernd Schmidt  <bernd.schmidt@analog.com>
1130
1131         * config/bfin/bfin.md (UNSPEC_NOP): New constant.
1132         (forced_nop): New pattern.
1133         * config/bfin/bfin.c: Include "df.h".
1134         (add_to_reg): Use df_regs_ever_live_p instead of regs_ever_live.
1135         (bfin_discover_loop): Use df_get_live_in instead of
1136         global_live_at_start.
1137         (bfin_reorder_loops): Pass 0 to cfg_layout_initialize.  Call
1138         df_analyze when done.
1139         (gen_one_bundle): Don't generate SEQUENCE insns, just put modes on
1140         the insns.  Use QImode for the final insn in a bundle.  Call
1141         df_insn_rescan on generated NOPs; use gen_forced_nop instead of
1142         gen_nop.
1143         (reorder_var_tracking_notes): New function.
1144         (bfin_reorg): Pass no argument to split_all_insns.  Don't call
1145         update_life_info.  Call df_analyze after scheduling and bundle
1146         generation.  Call reorder_var_tracking_notes if generating these notes.
1147         Call df_finish_pass at the end.
1148
1149 2007-06-12  Dirk Mueller  <dmueller@suse.de>
1150
1151         * optabs.c (debug_optab_libfuncs): fix gcc_assert to
1152         a comparison, not an assignment.
1153
1154 2007-06-12  Olivier Hainque  <hainque@adacore.com>
1155
1156         * tree-nested.c (convert_local_reference): Handle VIEW_CONVERT_EXPR.
1157         Request walking the subtrees only, leaving the current is_lhs/val_only
1158         untouched.
1159         (convert_non_local_reference): Likewise.
1160
1161 2007-06-12  Nathan Sidwell  <nathan@codesourcery.com>
1162
1163         * config/m68k/m68k-devices.def (52221, 52223, 5253): New.
1164
1165 2007-06-12  Richard Guenther  <rguenther@suse.de>
1166
1167         PR tree-optimization/15353
1168         PR tree-optimization/31657
1169         * passes.c (init_optimization_passes): Add pass_tree_ifcombine.
1170         * timevar.def: Add TV_TREE_IFCOMBINE.
1171         * tree-pass.h (pass_tree_ifcombine): Declare.
1172         * tree-ssa-ifcombine.c: New file.
1173         * tree-ssa-phiopt.c (blocks_in_phiopt_order): Export.
1174         * tree-flow.h (blocks_in_phiopt_order): Declare.
1175         * Makefile.in (OBJS-common): Add tree-ssa-ifcombine.o.
1176         (tree-ssa-ifcombine.o): New dependencies.
1177
1178 2007-06-12  Uros Bizjak  <ubizjak@gmail.com>
1179
1180         PR rtl-optimization/32293
1181         * combine.c (simplify_if_then_else): Truncate return from
1182         nonzero_bits() to correct mode.
1183
1184 2007-06-12  Uros Bizjak  <ubizjak@gmail.com>
1185
1186         * fold-const (fold_binary) [RDIV_EXPR]: Also optimize a/cbrt(b/c)
1187         into a*cbrt(c/b) if flag_unsafe_math_optimizations is set.
1188
1189 2007-06-11  Diego Novillo  <dnovillo@google.com>
1190
1191         * Makefile.in (reload1.o-warn): Remove.
1192
1193 2007-06-11  Seongbae Park <seongbae.park@gmail.com>
1194
1195         * combine.c (subst): Use reg_overlap_mentioned_p
1196         instead of comparing register numbers directly.
1197
1198 2007-06-11  Kenneth Zadeck <zadeck@naturalbridge.com>
1199
1200         * reload1.c (mark_home_live_1): Use the mode parameter.
1201
1202 2007-06-11  Kenneth Zadeck <zadeck@naturalbridge.com>
1203
1204         * df-scan.c (df_insn_delete, df_insn_rescan, df_insn_rescan_all,
1205         df_process_deferred_rescans, df_notes_rescan): Fixed spelling of
1206         word "deferred".
1207         * df-core.c: Ditto.
1208
1209 2007-06-11  Daniel Berlin  <dberlin@dberlin.org>
1210
1211         * Merge dataflow-branch into mainline (see ChangeLog.dataflow)
1212
1213 2007-06-11  Uros Bizjak  <ubizjak@gmail.com>
1214
1215         * config/i386/i386.md ("*movtf_internal): Penalize moves to and
1216         from integer registers.
1217         (FP mode splitters): Handle TFmode.
1218
1219 2007-06-11  Eric Botcazou  <ebotcazou@adacore.com>
1220
1221         * tree-ssa-structalias.c (find_what_p_points_to): Return false
1222         for ref-all pointers that point-to anything.
1223
1224 2007-06-11  Joseph Myers  <joseph@codesourcery.com>
1225
1226         * config/arm/arm.c (arm_output_dwarf_dtprel,
1227         TARGET_ASM_OUTPUT_DWARF_DTPREL): New.
1228
1229 2007-06-11  Bernd Schmidt  <bernd.schmidt@analog.com>
1230
1231         * config/bfin/bfin.md (movdi_insn, movsi_insn, movv2hi_insn,
1232         movhi_insn, movqi_insn, movsf_insn, movdf_insn): Don't allow constant
1233         to memory moves.
1234
1235 2007-06-11  Rafael Avila de Espindola  <espindola@google.com>
1236
1237         * gcc/tree.c (signed_or_unsigned_type_for): New.
1238         (unsigned_type_for): Use signed_or_unsigned_type_for.
1239         (signed_type_for): Use signed_or_unsigned_type_for.
1240         * gcc/tree.h (signed_or_unsigned_type_for): New.
1241         (get_signed_or_unsigned_type): Remove.
1242         * gcc/fold-const.c (fold_negate_expr): Use signed_type_for instead of
1243         lang_hooks.types.signed_type
1244         (size_diffop): Likewise.
1245         (all_ones_mask_p): Likewise.
1246         (build_range_check): Likewise.
1247         (fold_cond_expr_with_comparison): Likewise.
1248         (fold_cond_expr_with_comparison): Likewise.
1249         (unextend): Likewise.
1250         (extract_muldiv_1): Likewise.
1251         (fold_single_bit_test_into_sign_test): Likewise.
1252         (fold_binary): Likewise.
1253         (fold_ternary): Likewise.
1254         (operand_equal_for_comparison_p): Use signed_or_unsigned_type_for
1255         instead of get_signed_or_unsigned_type.
1256         * gcc/c-objc-common.h (LANG_HOOKS_SIGNED_TYPE): Remove.
1257         (LANG_HOOKS_SIGNED_OR_UNSIGNED_TYPE): Remove.
1258         * gcc/expr.c (signed_or_unsigned_type_for): Use
1259         signed_or_unsigned_type_for instead of get_signed_or_unsigned_type.
1260         * gcc/langhooks.c (get_signed_or_unsigned_type): Remove.
1261         (lhd_signed_or_unsigned_type): Remove.
1262         * gcc/langhooks.h (lang_hooks_for_types): Remove signed_type and
1263         signed_or_unsigned_type.
1264         (lhd_signed_or_unsigned_type): Remove.
1265         * gcc/expmed.c (make_tree): Use signed_type_for instead of
1266         lang_hooks.types.signed_type.
1267         * gcc/c-common.c (same_scalar_type_ignoring_signedness): Use
1268         c_common_signed_type instead of lang_hooks.types.signed_type.
1269         (c_common_unsigned_type): New.
1270         (c_common_signed_type): Just call c_common_signed_or_unsigned_type.
1271         (shorten_compare): Use c_common_unsigned_type instead of
1272         c_common_signed_or_unsigned_type.
1273         (c_common_nodes_and_builtins): Use c_common_unsigned_type instead of
1274         unsigned_type_for.
1275         * gcc/convert.c (convert_to_integer): Use signed_type_for instead of
1276         lang_hooks.types.signed_type.
1277         * gcc/langhooks-def.h (LANG_HOOKS_SIGNED_OR_UNSIGNED_TYPE): Remove.
1278         (LANG_HOOK_FOR_TYPES_INITIALIZER): Remove LANG_HOOKS_SIGNED_TYPE and
1279         LANG_HOOKS_SIGNED_OR_UNSIGNED_TYPE.
1280         * gcc/c-format.c (check_format_types): Use c_common_unsigned_type
1281         instead of unsigned_type_for.
1282         * gcc/c-decl.c (groakdeclarator): Likewise.
1283         * gcc/c-typeck.c (convert_for_assignment): Likewise.
1284         * gcc/c-common.h (c_common_unsigned_type): New.
1285
1286 2007-06-11  Uros Bizjak  <ubizjak@gmail.com>
1287
1288         PR target/32280
1289         * config/i386/sse.md ("sse2_ashlti", "sse2_lshrti3"): Move ...
1290         * config/i386/i386.md ("sse2_ashlti", "sse2_lshrti3"): ... to here.
1291
1292 2007-06-11  Uros Bizjak  <ubizjak@gmail.com>
1293
1294         PR middle-end/32279
1295         * fold-const (fold_binary) [RDIV_EXPR]: Optimize a/sqrt(b/c)
1296         into a*sqrt(c/b) if flag_unsafe_math_optimizations is set.
1297
1298 2007-06-10  Jan Sjodin  <jan.sjodin@amd.com>
1299             Sebastian Pop  <sebpop@gmail.com>
1300
1301         * lambda-code.c (remove_iv): New.
1302         (lambda_loopnest_to_gcc_loopnest): Use remove_iv.
1303
1304 2007-06-10  Zdenek Dvorak  <dvorakz@suse.cz>
1305
1306         * tree-data-ref.c (dr_analyze_alias): Handle case smt is NULL.
1307         * tree-predcom.c (mark_virtual_ops_for_renaming): Exported.
1308         * tree-ssa-loop-prefetch.c: Include optabs.h.
1309         (FENCE_FOLLOWING_MOVNT): New macro.
1310         (struct mem_ref): Add independent_p and storent_p fields.
1311         (record_ref): Initalize the new fields.
1312         (gather_memory_references_ref): Return true if the reference
1313         could be analysed.
1314         (gather_memory_references): Check whether all memory accesses
1315         in loop were recorded.
1316         (should_issue_prefetch_p): Return false for nontemporal stores.
1317         (nontemporal_store_p, mark_nontemporal_store, emit_mfence_after_loop,
1318         may_use_storent_in_loop_p, mark_nontemporal_stores): New functions.
1319         (determine_loop_nest_reuse): Detect independent memory references.
1320         (loop_prefetch_arrays): Call mark_nontemporal_stores.
1321         * tree-flow.h (mark_virtual_ops_for_renaming): Declare.
1322         * Makefile.in (tree-ssa-loop-prefetch.o): Add OPTABS_H dependency.
1323         * config/i386/i386.h (x86_mfence): Declare.
1324         (FENCE_FOLLOWING_MOVNT): Return x86_mfence.
1325         * config/i386/i386.c (x86_mfence): New variable.
1326         (ix86_init_mmx_sse_builtins): Initialize x86_mfence.
1327
1328         * tree-pretty-print.c (dump_generic_node): Mark nontemporal stores.
1329         * optabs.c (init_optabs): Initialize storent_optab.
1330         * optabs.h (enum optab_index): Add OTI_storent.
1331         (storent_optab): Declare.
1332         * genopinit.c (optabs): Add initialization for storent_optab.
1333         * tree.h (MOVE_NONTEMPORAL): New macro.
1334         * expr.c (expand_assignment, store_expr, store_constructor_field,
1335         store_constructor, store_field, expand_expr_real_1): Propagate
1336         nontemporality of the expanded store.
1337         (emit_storent_insn): New function.
1338         * expr.h (expand_assignment, store_expr): Declaration changed.
1339         * function.c (assign_parm_setup_reg): Pass false as nontemporality
1340         to expand_assignment.
1341         * stmt.c (expand_asm_expr): Ditto.
1342         * calls.c (initialize_argument_information): Pass false as
1343         nontemporality to store_expr.
1344         * config/i386/sse.md (storentv4sf, storentv2df, storentv2di,
1345         storentsi): New.
1346
1347 2007-06-09  Daniel Berlin  <dberlin@dberlin.org>
1348
1349         * tree-ssa-structalias.c (set_uids_in_ptset): Add is_deref'd
1350         parameter, use it.
1351         (find_what_p_points_to): Pass new parameter to set_uids_in_ptset.
1352
1353 2007-06-09  Daniel Berlin  <dberlin@dberlin.org>
1354
1355         * tree-data-ref.c (dr_may_alias_p): Check that decl_a != decl_b,
1356         and allow DECL_P here.
1357
1358 2007-06-09  Zdenek Dvorak  <dvorakz@suse.cz>
1359
1360         * tree-scalar-evolution.c (follow_ssa_edge_in_rhs,
1361         follow_ssa_edge_in_condition_phi, follow_ssa_edge): Keep more precise
1362         track of the size of the expression.
1363         * cfghooks.c (merge_blocks): Remove block from loops structure only
1364         after call of the merge_blocks hook.
1365
1366 2007-06-09  Tom Tromey  <tromey@redhat.com>
1367
1368         * c-decl.c (grokdeclarator): Added 'deprecated_state' argument.
1369         (deprecated_state): Removed.
1370         (start_decl): Update.
1371         (enum deprecated_states): Moved earlier.
1372         (groktypename): Update.
1373         (push_parm_decl): Likewise.
1374         (grokfield): Likewise.
1375         (start_function): Likewise.
1376
1377 2007-06-09  Ian Lance Taylor  <iant@google.com>
1378
1379         PR tree-optimization/32169
1380         * tree-vrp.c (extract_range_from_unary_expr): For NOP_EXPR and
1381         CONVERT_EXPR, check whether min and max both converted to an
1382         overflow infinity representation.
1383
1384 2007-06-08  Eric Botcazou  <ebotcazou@adacore.com>
1385
1386         * reload1.c (fixup_abnormal_edges): Clear bb field for insns
1387         not inserted on the edge.
1388
1389 2007-06-08  Bob Wilson  <bob.wilson@acm.org>
1390
1391         * config/xtensa/lib1funcs.asm (__udivsi3): Use hardware divide
1392         instructions if they are supported.
1393         (__divsi3, __umodsi3, __modsi3): Likewise.
1394         (__ashldi3, __ashrdi3, __lshrdi3): New.
1395         * config/xtensa/t-xtensa (LIB1ASMFUNCS): Add DImode shift functions.
1396
1397 2007-06-08  Harsha Jagasia <harsha.jagasia@amd.com>
1398             Tony Linthicum <tony.linthicum@amd.com>
1399
1400         * doc/extend.texi: Add fvect-cost-model flag.
1401         * common.opt (fvect-cost-model): New flag.
1402         * tree-vectorizer.c (new_stmt_vec_info): Initialize inside and outside
1403         cost fields in stmt_vec_info struct for STMT.
1404         * tree-vectorizer.h (stmt_vec_info): Define inside and outside cost
1405         fields in stmt_vec_info struct and access functions for the same.
1406         (TARG_COND_BRANCH_COST): Define cost of conditional branch.
1407         (TARG_VEC_STMT_COST): Define cost of any vector operation, excluding
1408         load, store and vector to scalar operation.
1409         (TARG_VEC_TO_SCALAR_COST): Define cost of vector to scalar operation.
1410         (TARG_VEC_LOAD_COST): Define cost of aligned vector load.
1411         (TARG_VEC_UNALIGNED_LOAD_COST): Define cost of misasligned vector load.
1412         (TARG_VEC_STORE_COST): Define cost of vector store.
1413         (vect_estimate_min_profitable_iters): Define new function.
1414         * tree-vect-analyze.c (vect_analyze_operations): Add a compile-time
1415         check to evaluate if loop iterations are less than minimum profitable
1416         iterations determined by cost model or minimum vect loop bound defined
1417         by user, whichever is more conservative.
1418         * tree-vect-transform.c (vect_do_peeling_for_loop_bound): Add a
1419         run-time check to evaluate if loop iterations are less than minimum
1420         profitable iterations determined by cost model or minimum vect loop
1421         bound defined by user, whichever is more conservative.
1422         (vect_estimate_min_profitable_iterations): New function to estimate
1423         mimimimum iterartions required for vector version of loop to be
1424         profitable over scalar version.
1425         (vect_model_reduction_cost): New function.
1426         (vect_model_induction_cost): New function.
1427         (vect_model_simple_cost): New function.
1428         (vect_cost_strided_group_size): New function.
1429         (vect_model_store_cost): New function.
1430         (vect_model_load_cost): New function.
1431         (vectorizable_reduction): Call vect_model_reduction_cost during
1432         analysis phase.
1433         (vectorizable_induction): Call vect_model_induction_cost during
1434         analysis phase.
1435         (vectorizable_load): Call vect_model_load_cost during analysis phase.
1436         (vectorizable_store): Call vect_model_store_cost during analysis phase.
1437         (vectorizable_call, vectorizable_assignment, vectorizable_operation,
1438         vectorizable_promotion, vectorizable_demotion): Call
1439         vect_model_simple_cost during analysis phase.
1440
1441 2007-06-08  Simon Baldwin  <simonb@google.com>
1442
1443         * reg-stack.c (get_true_reg): Readability change.  Moved default case
1444         label into direct switch statement scope.
1445
1446 2007-06-08  Simon Baldwin  <simonb@google.com>
1447
1448         * tree-flow-inline.h (var_ann): Replaced erroneous '=' assignment
1449         in gcc_assert() with '==' comparison.
1450
1451 2007-06-08  Uros Bizjak  <ubizjak@gmail.com>
1452
1453         * config/i386/i386.c (override_options): Merge TARGET_SSE4_2 and
1454         TARGET_ABM handling of x86_popcnt variable.
1455
1456 2007-06-08  Uros Bizjak  <ubizjak@gmail.com>
1457
1458         * doc/extend.texi (X86 Built-in Functions): Document __builtin_fabsq,
1459         __builtin_copysignq and __builtin_infq built-in functions.
1460
1461 2007-06-08  Uros Bizjak  <ubizjak@gmail.com>
1462
1463         * doc/extend.texi (X86 Built-in Functions): Add missing `@item's in
1464         SSE4.2 section.  Correct built-in function names in SSE4A section.
1465
1466 2007-06-08  Uros Bizjak  <ubizjak@gmail.com>
1467
1468         PR tree-optimization/32243
1469         * tree-vect-transform.c (vectorizable_type_promotion): Move check
1470         for ncopies after ratio check between nunits_out and nunits_in.
1471         (vectorizable_type_demotion): Remove single-use variable "scalar_type".
1472
1473 2007-06-08  Dorit Nuzman  <dorit@il.ibm.com>
1474
1475         PR tree-optimization/32224
1476         * tree-vect-analyze.c (vect_determine_vectorization_factor): Fail
1477         vectorization upon a non GIMPLE_MODIFY_STMT.
1478
1479 2007-06-08  Christian Bruel  <christian.bruel@st.com>
1480
1481         PR target/29953
1482         * config/sh/sh.md (doloop_end): New pattern and splitter.
1483         * loop-iv.c (simple_rhs_p): Check for hardware registers.
1484
1485 2007-06-08  Zdenek Dvorak  <dvorakz@suse.cz>
1486
1487         PR middle-end/32209
1488         * dominance.c (debug_dominance_tree, debug_dominance_tree_1): New
1489         functions.
1490         (verify_dominators): Do not change dominance tree.
1491
1492 2007-06-08  Kaz Kojima  <kkojima@gcc.gnu.org>
1493
1494         * config/sh/constraints.md: New file.
1495         * config/sh/sh.c: Include tm-constrs.h.
1496         (reg_class_from_letter): Remove.
1497         (prepare_cbranch_operands): Use satisfies_constraint_*
1498         function instead of macro.
1499         (andcosts, broken_move, sh_secondary_reload): Likewise.
1500         * config/sh/predicates.md (trapping_target_operand): Likewise.
1501         (and_operand, arith_operand, arith_reg_or_0_operand,
1502         cmp_operand, logical_operand, target_operand,
1503         ua_address_operand, ua_offset, xor_operand): Likewise.
1504         * config/sh/sh.md: Include constraints.md.
1505         (*movsicc_t_false): Use satisfies_constraint_* function
1506         instead of macro.
1507         (*movsicc_t_true, ashlsi3_std, ashlhi3_k, lshrsi3_m,
1508         lshrsi3_k, movsi_const_16bit+2, *movhi_media+1,
1509         movdi_const_16bit+1, beq, bne, *ptb): Likewise.
1510         * config/sh/sh.h (reg_class_from_letter): Remove prototype.
1511         (OVERRIDE_OPTIONS): Don't modify reg_class_from_letter.
1512         (REG_CLASS_FROM_CONSTRAINT): Remove.
1513         (CONSTRAINT_LEN, CONST_OK_FOR_I20, CONST_OK_FOR_I,
1514         CONST_OK_FOR_J, CONST_OK_FOR_K16, CONST_OK_FOR_K,
1515         CONST_OK_FOR_P27, CONST_OK_FOR_P, CONST_OK_FOR_M,
1516         CONST_OK_FOR_N, CONST_OK_FOR_CONSTRAINT_P,
1517         CONST_DOUBLE_OK_FOR_LETTER_P): Likewise.
1518         (SECONDARY_INOUT_RELOAD_CLASS): Use satisfies_constraint_*
1519         function instead of macro.
1520         (SECONDARY_INPUT_RELOAD_CLASS): Likewise.
1521         (EXTRA_CONSTRAINT_Q, EXTRA_CONSTRAINT_A,
1522         EXTRA_CONSTRAINT_Bsc, EXTRA_CONSTRAINT_B,
1523         EXTRA_CONSTRAINT_Css, EXTRA_CONSTRAINT_Csu): Remove.
1524         (IS_PC_RELATIVE_LOAD_ADDR_P): New macro.
1525         (IS_LITERAL_OR_SYMBOLIC_S16_P): Likewise.
1526         (IS_LITERAL_OR_SYMBOLIC_U16_P): Likewise.
1527         (IS_NON_EXPLICIT_CONSTANT_P): Likewise.
1528         (EXTRA_CONSTRAINT_Csy, EXTRA_CONSTRAINT_Z, EXTRA_CONSTRAINT_W,
1529         EXTRA_CONSTRAINT_Cpg, EXTRA_CONSTRAINT_C,
1530         EXTRA_MEMORY_CONSTRAINT, EXTRA_CONSTRAINT_Sr0,
1531         EXTRA_CONSTRAINT_Sua, EXTRA_CONSTRAINT_S,
1532         EXTRA_CONSTRAINT_STR): Likewise.
1533         (GO_IF_LEGITIMATE_INDEX): Fix indentation.
1534
1535 2007-06-07  Geoffrey Keating  <geoffk@apple.com>
1536
1537         * config/i386/darwin.h (STACK_BOUNDARY): Define.
1538
1539 2007-06-07  Simon Martin  <simartin@users.sourceforge.net>
1540
1541         PR c++/30759
1542         * c-common.h (flag_cpp0x): Replaced by...
1543         (cxx_dialect): ... this new variable specifying the C++ dialect that
1544         is used.
1545         * c-common.c (flag_cpp0x): Removed.
1546         (cxx_dialect): Defined.
1547         * c-cppbuiltin.c (c_cpp_builtins): flag_cpp0x rewritten in terms of
1548         cxx_dialect.
1549         * c-opts.c (c_common_post_options): Likewise.
1550         (set_std_cxx98): Set cxx_dialect to cxx98.
1551         (set_std_cxx0x): Set cxx_dialect to cxx0x.
1552
1553 2007-06-07  Geoffrey Keating  <geoffk@apple.com>
1554             Hui-May Chang <hm.chang@apple.com>
1555
1556         * doc/invoke.texi (Darwin Options): Update documentation for
1557         -mmacosx-version-min.
1558         * config.gcc (*-*-darwin*): Set extra_gcc_objs.
1559         * config/darwin-driver.c: New file.
1560         * config/darwin.h (GCC_DRIVER_HOST_INITIALIZATION): New.
1561         * config/t-darwin (darwin-driver.o): New rule.
1562
1563         * config/darwin-c.c (version_as_macro): Ignore low digit.
1564
1565 2007-06-07  Uros Bizjak  <ubizjak@gmail.com>
1566
1567         * config/i386/i386.md (standard sse constant splitter): Handle TFmode.
1568         (negtf2, abstf2, *absnegtf2_sse): New insn patterns.
1569         (CSGNMODE): New mode macro.
1570         (CSGNVMODE): New mode attribute.
1571         (copysign<mode>3): Rename from copysingsf3 and copysigndf3.  Macroize
1572         expander using CSGNMODE mode macro.  Handle TFmode.
1573         (copysign<mode>3_const): Rename from copysignsf3_const and
1574         copysigndf3_const.  Macroize pattern using CSGNMODE mode macro.
1575         Handle TFmode.
1576         (copysign<mode>3_var): Rename from copysignsf3_var and
1577         copysigndf3_var.  Macroize pattern using CSGNMODE mode macro.
1578         Handle TFmode.
1579         (copysign<mode>3_var splitter): Macroize pattern using CSGNMODE
1580         mode macro.  Handle TFmode.
1581         * config/i386/sse.md (andtf3, *andtf3, *nandtf3): New insn patterns.
1582         (iortf3, *iortf3): Ditto.
1583         (xortf3, *xortf3): Ditto.
1584         * config/i386/i386.c (ix86_build_signbit_mask): Create scalar
1585         TFmode and TImode masks.
1586         (ix86_expand_copysign): Expand TFmode copysign insn.
1587         (IX86_BUILTIN_INFQ): New.
1588         (IX86_BUILTIN_FABSQ): Ditto.
1589         (IX86_BUILTIN_COPYSIGNQ): Ditto.
1590         (ix86_init_mmx_sse_builtins) [__builtin_infq]: New builtin definition.
1591         [__builtin_fabsq]: Ditto.
1592         [__builtin_copysignq]: Ditto.
1593         (ix86_expand_builtin) [IX86_BUILTIN_INFQ]: Expand builtin.
1594         [IX86_BUILTIN_FABSQ]: Expand builtin using ix86_expand_unop_builtin().
1595         [IX86_BUILTIN_COPYSIGNQ]: Expand builtin using
1596         ix86_expand_binop_builtin().
1597
1598 2007-06-07  Bob Wilson  <bob.wilson@acm.org>
1599
1600         * config/xtensa/lib1funcs.asm: Clean up whitespace.
1601
1602 2007-06-07  Steve Ellcey  <sje@cup.hp.com>
1603
1604         PR target/31850
1605         * rtl.h (push_to_sequence2): New.
1606         * emit-rtl.c (push_to_sequence2): New.
1607         * function.c (assign_parm_data_all): Add new fields.
1608         (assign_parm_setup_block): Call push_to_sequence2 instead of
1609         push_to_sequence.
1610         (assign_parm_setup_reg): Ditto.
1611         (assign_parm_setup_stack): Ditto.
1612         (assign_parms_unsplit_complex): Ditto.
1613         (assign_parms): Change field name.
1614
1615 2007-06-07  Zdenek Dvorak  <dvorakz@suse.cz>
1616
1617         PR tree-optimization/32220
1618         * tree-predcom.c (eliminate_temp_copies): Handle the case that loop
1619         phi node is reached before defining statement.
1620
1621 2007-06-06  Andrew Pinski  <andrew_pinski@playstation.sony.com>
1622
1623         PR tree-opt/32231
1624         * tree-vect-transform.c (vectorizable_call): Call update_stmt
1625         after changing the right hand side of the assignment.
1626
1627 2007-06-06  Eric Christopher  <echristo@apple.com>
1628
1629         * config.gcc (i?86-*-darwin*): Remove arch parameter.
1630         (x86_64-*-darwin*): Ditto.
1631         * config/i386/darwin.h (TARGET_SUBTARGET32_ISA_DEFAULT): Define.
1632         (TARGET_SUBTARGET64_ISA_DEFAULT): Ditto.
1633
1634 2007-06-06  Thomas Neumann  <tneumann@users.sourceforge.net>
1635
1636         * tree-ssa-alias-warnings.c (maybe_add_match): Cast according to the
1637         coding conventions.
1638         (add_key): Likewise.
1639         * tree-ssa.c (init_tree_ssa): Use type safe memory macros.
1640         * tree-ssa-ccp.c (ccp_fold_builtin): Avoid using C++ keywords as
1641         variable names.
1642         * tree-ssa-coalesce.c (find_coalesce_pair): Use type safe memory macros.
1643         (add_cost_one_coalesce): Likewise.
1644         * tree-ssa-copy.c (merge_alias_info): Avoid using C++ keywords as
1645         variable names. Rename orig to orig_name for consistency.
1646         * tree-ssa-dom.c (dom_thread_across_edge): Cast according to the coding
1647         conventions.
1648         (cprop_into_successor_phis): Avoid using C++ keywords as variable names.
1649         (record_equivalences_from_stmt): Likewise.
1650         * tree-ssa-dse.c (dse_initialize_block_local_data): Cast according to
1651         the coding conventions.
1652         (memory_ssa_name_same): Likewise.
1653         (dse_optimize_stmt): Likewise.
1654         (dse_record_phis): Likewise.
1655         (dse_finalize_block): Likewise.
1656         * tree-ssa-loop-im.c (outermost_invariant_loop_expr): Avoid using C++
1657         keywords as variable names.
1658         (may_move_till): Cast according to the coding conventions.
1659         (force_move_till_expr): Avoid using C++ keywords as variable names.
1660         (force_move_till): Cast according to the coding conventions.
1661         (memref_hash): Likewise.
1662         (memref_eq): Likewise.
1663         (gather_mem_refs_stmt): Likewise.
1664         * tree-ssa-loop-ivopts.c (contains_abnormal_ssa_name_p): Avoid using C++
1665         keywords as variable names.
1666         (idx_find_step): Cast according to the coding conventions.
1667         (idx_record_use): Likewise.
1668         (find_depends): Likewise.
1669         (prepare_decl_rtl): Likewise.
1670         (mbc_entry_hash): Likewise.
1671         (mbc_entry_eq): Likewise.
1672         * tree-ssa-loop-niter.c (SWAP): Use the correct the type for tmp.
1673         (simplify_replace_tree): Avoid using C++ keywords as variable names.
1674         (idx_infer_loop_bounds): Cast according to the coding conventions.
1675         * tree-ssa-loop-prefetch.c (idx_analyze_ref): Likewise.
1676         * tree-ssa-math-opts.c (occ_new ): Likwise.
1677         * tree-ssanames.c (duplicate_ssa_name_ptr_info): Use type safe memory
1678         macros.
1679         * tree-ssa-operands.c (add_def_op): Avoid using C++ keywords as variable
1680         names.
1681         (add_use_op): Likewise.
1682         (add_vop): Likewise.
1683         (add_vuse_op): Likewise.
1684         (add_vdef_op): Likewise.
1685         (get_expr_operands): Likewise.
1686         (push_stmt_changes): Use type safe memory macros.
1687         * tree-ssa-phiopt.c (replace_phi_edge_with_variable): Avoid using C++
1688         keywords as variable names.
1689         (conditional_replacement): Likewise.
1690         (minmax_replacement): Likewise.
1691         (abs_replacement): Likewise.
1692         * tree-ssa-pre.c (create_expression_by_pieces): Cast according to the
1693         coding conventions.
1694         (insert_fake_stores): Avoid using C++ keywords as variable names.
1695         * tree-ssa-reassoc.c (add_to_ops_vec): Cast according to the coding
1696         conventions.
1697         * tree-ssa-structalias.c (heapvar_lookup): Likewise.
1698         (heapvar_insert): Use type safe memory macros.
1699         (new_var_info): Cast according to the coding conventions.
1700         (new_constraint): Likewise.
1701         (remove_preds_and_fake_succs): Use type safe memory macros.
1702         * tree-ssa-threadupdate.c (thread_block): Cast according to the coding
1703         conventions.
1704         (thread_single_edge): Likewise.
1705         (thread_through_loop_header): Likewise.
1706
1707 2007-06-06  Eric Christopher  <echristo@apple.com>
1708
1709         * config/i386/i386.c (override_options): Move handling
1710         of TARGET_SUBTARGET* earlier.
1711
1712 2007-06-06  Paolo Bonzini  <bonzini@gnu.org>
1713
1714         * genmodes.c (tagged_printf, emit_insn_modes_h): Don't
1715         use %n on printf.
1716
1717 2007-06-06  Zdenek Dvorak  <dvorakz@suse.cz>
1718
1719         * haifa-sched.c (restore_bb_notes): Clear bb field of the notes
1720         emited outside of basic block.
1721         * cfgbuild.c (find_bb_boundaries): Clear bb field for insns between
1722         the created blocks.
1723         * rtl.h (delete_insn_chain): Declaration changed.
1724         * cfgrtl.c (delete_insn_chain): Add option to clear bb field for
1725         non-removed insns.
1726         (rtl_delete_block, rtl_merge_blocks): Pass true to delete_insn_chain.
1727         (delete_insn_chain_and_edges, try_redirect_by_replacing_jump,
1728         rtl_tidy_fallthru_edge, cfg_layout_merge_blocks): Pass false
1729         to delete_insn_chain.
1730         (rtl_verify_flow_info_1): Verify that the insns in header and footer
1731         do not have bb field set.
1732         (rtl_verify_flow_info): Verify that insns between basic blocks do not
1733         have bb field set.
1734         * recog.c (peephole2_optimize): Add argument to delete_insn_chain call.
1735         * cfgcleanup.c (try_optimize_cfg): Ditto.
1736
1737 2007-06-06  Thomas Neumann  <tneumann@users.sourceforge.net>
1738
1739         * lambda-code.c (struct lambda_lattice_s): Add a name to the struct.
1740         (lambda_body_vector_new): Use type safe memory macros.
1741         (lambda_linear_expression_new): Likewise.
1742         (lambda_loopnest_new): Likewise.
1743         (lambda_lattice_new): Likewise.
1744         (replace_uses_equiv_to_x_with_y): Cast according to the coding
1745         conventions. Use type safe memory macros.
1746         * lambda.h (struct lambda_trans_matrix_s): Add a name to the struct.
1747         (lambda_body_vector_s): Likewise.
1748         * lambda-mat.c (lambda_matrix_new): Use type safe memory macros.
1749         * lambda-trans.c (lambda_trans_matrix_new): Likewise.
1750
1751 2007-06-06  Richard Guenther  <rguenther@suse.de>
1752
1753         * tree-ssa-forwprop.c (forward_propagate_into_cond): Return 2
1754         if we need to schedule cfg_cleanup.
1755         (tree_ssa_forward_propagate_single_use_vars): Do so.
1756
1757 2007-06-06  Ian Lance Taylor  <iant@google.com>
1758
1759         * fold-const.c (merge_ranges): If range_successor or
1760         range_predecessor fail, just return 0.
1761
1762 2007-06-06  Uros Bizjak  <ubizjak@gmail.com>
1763
1764         PR tree-optimization/32216
1765         * tree-vectorizer.c (supportable_widening_operation): Determine
1766         signedness of FIX_TRUNC_EXPR from output operand.
1767         (supportable_narrowing_operation): Ditto.
1768         * tree-vect-generic.c (expand_vector_operations_1): Determine
1769         signedness of VEC_UNPACK_FLOAT_HI_EXPR and VEC_UNPACK_FLOAT_LO_EXPR
1770         from input operand.
1771
1772 2007-06-06  Thomas Neumann  <tneumann@users.sourceforge.net>
1773
1774         * config/i386/i386.c (enum pta_flags): Move out of struct scope...
1775         (struct pta): ...from here. Change flags to unsigned to avoid
1776         excessive casting (as it is used as a bit mask).
1777         (override_options): Add casts according to the coding convenventions.
1778         (x86_64_elf_unique_section): Likewise.
1779         (examine_argument): Avoid using C++ keywords as variable names.
1780         (construct_container): Likewise.
1781         (legitimize_pic_address): Likewise.
1782         (get_dllimport_decl): Cast according to the coding conventions. Use
1783         type safe memory macros.
1784         (legitimize_address): Cast according to the coding conventions.
1785         (emit_i387_cw_initialization): Corrected the type of slot to enum
1786         ix86_stack_slot.
1787         (ix86_init_machine_status): Use type safe memory macros.
1788         (bdesc_pcmpestr): Use UNKNOWN instead of integer 0.
1789         (bdesc_pcmpistr): Likewise.
1790         (bdesc_crc32): Likewise.
1791         (bdesc_sse_3arg): Likewise.
1792         (bdesc_2arg): Likewise.
1793         (bdesc_1arg): Likewise.
1794         (ix86_expand_sse_pcmpestr): Cast according to the coding conventions.
1795         (ix86_expand_sse_pcmpistr): Likewise.
1796         (ix86_expand_vec_set_builtin): Use EXPAND_NORMAL instead of integer 0.
1797         (ix86_builtin_vectorized_function): Change the type of fn to unsigned
1798         int to match the langhook definition.
1799         (ix86_builtin_conversion): Change the type of code to unsigned init to
1800         match the langhook definition.
1801         (ix86_preferred_reload_class): Avoid using C++ keywords as variable
1802         names.
1803         (ix86_preferred_output_reload_class): Likewise.
1804         (ix86_cannot_change_mode_class): Likewise.
1805         (ix86_memory_move_cost): Likewise.
1806         (ix86_rtx_costs): Cast the outer_code parameter to enum rtx_code to
1807         avoid excessive casting later on.
1808         (x86_output_mi_thunk): Avoid using C++ keywords as variable names.
1809
1810 2007-06-06  Uros Bizjak  <ubizjak@gmail.com>
1811
1812         * config/i386/sse.md (sse4_2_pcmpestr_cconly): Prefer pcmpestrm
1813         as flags setting insn.
1814         (sse4_2_pcmpistr_cconly): Prefer pcmpistrm as flags setting insn.
1815
1816 2007-06-06  Uros Bizjak  <ubizjak@gmail.com>
1817
1818         * config/i386/i386.md (UNSPEC_ROUNDP, UNSPEC_ROUNDS): Remove.
1819         (UNSPEC_ROUND): New.
1820         ("sse4_1_round<mode>2"): New insn pattern.
1821         ("rint<mode>2"): Expand using "sse4_1_round<mode>2" pattern for
1822         SSE4.1 targets.
1823         ("floor<mode>2"): Rename from floordf2 and floorsf2.  Macroize
1824         expander using SSEMODEF mode macro.  Expand using
1825         "sse4_1_round<mode>2" pattern for SSE4.1 targets.
1826         ("ceil<mode>2"): Rename from ceildf2 and ceilsf2.  Macroize
1827         expander using SSEMODEF mode macro.  Expand using
1828         "sse4_1_round<mode>2" pattern for SSE4.1 targets.
1829         ("btrunc<mode>2"): Rename from btruncdf2 and btruncsf2.  Macroize
1830         expander using SSEMODEF mode macro.  Expand using
1831         "sse4_1_round<mode>2" pattern for SSE4.1 targets.
1832         * config/i386/sse.md ("sse4_1_roundpd", "sse4_1_roundps"): Use
1833         UNSPEC_ROUND instead of UNSPEC_ROUNDP.
1834         ("sse4_1_roundsd", "sse4_1_roundss"): Use UNSPEC_ROUND instead of
1835         UNSPEC_ROUNDS.
1836
1837 2007-06-06  Jan Sjodin  <jan.sjodin@amd.com>
1838             Sebastian Pop  <sebpop@gmail.com>
1839
1840         * lambda.h (build_linear_expr): New.
1841         * lambda-code.c (lbv_to_gcc_expression, lle_to_gcc_expression):
1842         Use build_linear_expr, call fold and force_gimple_operand.
1843         (lambda_loopnest_to_gcc_loopnest): Check that there is
1844         something to insert.
1845         * testsuite/gcc.dg/tree-ssa/ltrans-6.c: New.
1846
1847 2007-06-05  Joerg Wunsch  <j.gnu@uriah.heep.sax.de>
1848
1849         PR preprocessor/23479
1850         * doc/extend.texi: Document the 0b-prefixed binary integer
1851         constant extension.
1852
1853 2007-06-05  Uros Bizjak  <ubizjak@gmail.com>
1854
1855         PR tree-optimization/32215
1856         * tree-vectorizer.c (supportable_widening_operation): Return false
1857         for unsupported FIX_TRUNC_EXPR tree code.
1858         (supportable_narrowing_operation): Ditto for FLOAT_EXPR tree code.
1859
1860 2007-06-06  Nathan Froyd  <froydnj@codesourcery.com>
1861
1862         * config/rs6000/rs6000.h (FIXED_SCRATCH): Use r0 as a scratch
1863         register on SPE targets.  Change documentation to reflect
1864         reality.
1865         * config/rs6000/rs6000.c (rs6000_conditional_register_usage):
1866         Change FIXED_SCRATCH to 14 and document why we're keeping r14
1867         out of the register allocation pool.
1868         (rs6000_reg_live_or_pic_offset_p): New function.
1869         (rs6000_emit_prologue): Move the actual saving of LR up to free
1870         r0 for holding r11.  Split saving of SPE 64-bit registers into
1871         its own case.  Ensure that offsets will always be in-range for
1872         'evstdd' by using r11 as a scratch register to point at the start
1873         of the SPE save area.  Save r11 if necessary, as it is the static
1874         chain register.
1875         (rs6000_emit_epilogue): Split restoring of SPE 64-bit registers
1876         into its own case.  Ensure that offsets will always be in-range
1877         for 'evldd' by using r11 as a scratch register to point at the
1878         start of the SPE save area.  Also adjust r11 when restoring
1879         the stack pointer to compensate for pre-loading r11.
1880
1881 2007-06-05  Thomas Neumann  <tneumann@users.sourceforge.net>
1882
1883         * cfg.c (init_flow): Use type safe memory macros.
1884         (alloc_block): Likewise.
1885         (unchecked_make_edge): Likewise.
1886         (dump_flow_info): Avoid using C++ keywords as variable names.
1887         (copy_original_table_clear): Cast according to the coding conventions.
1888         (copy_original_table_set): Likewise.
1889         * cfgexpand (label_rtx_for_bb): Likewise.
1890         (expand_gimple_basic_block): Likewise.
1891         * cfghooks.c (dump_bb): Likewise.
1892         (lv_adjust_loop_header_phi): Avoid using C++ keywords as
1893         variable names.
1894         (lv_add_condition_to_bb): Likewise.
1895         * cfglayout (relink_block_chain): Cast according to the coding
1896         conventions.
1897         (fixup_reorder_chain): Likewise.
1898         (fixup_fallthru_exit_predecessor): Likewise.
1899         * cfgloop.c (glb_enum_p): Likewise.
1900         (get_exit_description): Likewise.
1901         (dump_recorded_exit): Likewise.
1902         * cfgloop.h (enum loop_estimation): Move out of struct scope...
1903         (struct loop): ... from here.
1904         * cfgloopmanip.c (rpe_enum_p): Cast according to the coding
1905         conventions.
1906         * cfgrtl.c (rtl_create_basic_block): Likewise.
1907         (rtl_split_block): Likewise.
1908         (rtl_dump_bb): Likewise.
1909         (cfg_layout_split_block): Likewise.
1910         (init_rtl_bb_info): Use typesafe memory macros.
1911
1912         * graphds.h (struct graph_edge): Renamed edge to graph_edge.
1913         * graphds.h: Updated all usages of edge to graph_edge.
1914         * graphds.c: Likewise.
1915         * cfgloopanal.c: Likewise.
1916
1917 2007-06-05  Ian Lance Taylor  <iant@google.com>
1918
1919         * tree-vrp.c (compare_values_warnv): Check TREE_NO_WARNING on a
1920         PLUS_EXPR or MINUS_EXPR node before setting *strict_overflow_p.
1921         (extract_range_from_assert): Set TREE_NO_WARNING when creating an
1922         expression.
1923         (test_for_singularity): Likewise.
1924
1925 2007-06-05  H.J. Lu  <hongjiu.lu@intel.com>
1926
1927         * config/i386/constraints.md ("Y2"): Replaced by ...
1928         ("Yt"): This.
1929         * config/i386/i386.md: Likewise.
1930         * config/i386/mmx.md: Likewise.
1931         * config/i386/sse.md: Likewise.
1932
1933 2007-06-05  H.J. Lu  <hongjiu.lu@intel.com>
1934
1935         * config/i386/constraints.md ("z"): Replaced by ...
1936         ("Y0"): This.
1937         * config/i386/sse.md (sse4_1_blendvpd): Likewise.
1938         (sse4_1_blendvps): Likewise.
1939         (sse4_1_pblendvb): Likewise.
1940         (sse4_2_pcmpestr): Likewise.
1941         (sse4_2_pcmpestrm): Likewise.
1942         (sse4_2_pcmpestr_cconly): Likewise.
1943         (sse4_2_pcmpistr): Likewise.
1944         (sse4_2_pcmpistrm): Likewise.
1945         (sse4_2_pcmpistr_cconly): Likewise.
1946
1947 2007-06-05  Razya Ladelsky  <razya@il.ibm.com>
1948
1949         * matrix-reorg.c (transform_access_sites): Fix computation.
1950         (transform_allocation_sites): Same.
1951
1952 2007-06-05  Uros Bizjak  <ubizjak@gmail.com>
1953
1954         * config/i386/i386.c (override_options): Use
1955         TARGET_SUBTARGET32_ISA_DEFAULT to select default ix86_isa_flags.
1956
1957 2007-06-05  Uros Bizjak  <ubizjak@gmail.com>
1958
1959         * config/i386/predicates.md (reg_not_xmm0_operand): New predicate.
1960         (nonimm_not_xmm0_operand): Ditto.
1961         * config/i386/sse.md ("sse4_1_blendvpd"): Use "reg_not_xmm0_operand"
1962         as operand[0] and operand[1] predicate.  Use "nonimm_not_xmm0_operand"
1963         as operand[2] predicate.  Require "z" class XMM register for
1964         operand[3].  Adjust asm template.
1965         ("sse4_1_blendvpd"): Ditto.
1966         ("sse4_1_pblendvb"): Ditto.
1967         * config/i386/i386.c (ix86_expand_sse_4_operands_builtin): Do not
1968         force op2 into xmm0 register for variable blend instructions.
1969
1970 2007-06-04  Tom Tromey  <tromey@redhat.com>
1971
1972         * c-tree.h (start_enum): Update.
1973         (build_enumerator): Likewise.
1974         * c-decl.c (enum_next_value): Removed.
1975         (enum_overflow): Likewise.
1976         (start_enum): Add c_enum_contents argument.  Don't use globals.
1977         (build_enumerator): Likewise.
1978         * c-tree.h (struct c_enum_contents): New struct.
1979
1980 2007-06-04  Tom Tromey  <tromey@redhat.com>
1981
1982         * c-common.c (c_common_get_alias_set): Fix indentation.
1983
1984 2007-06-04  Ian Lance Taylor  <iant@google.com>
1985
1986         * tree-vrp.c (adjust_range_with_scev): When loop is not expected
1987         to overflow, reduce overflow infinity to regular infinity.
1988         (vrp_var_may_overflow): New static function.
1989         (vrp_visit_phi_node): Check vrp_var_may_overflow.
1990
1991 2007-06-04  Kazu Hirata  <kazu@codesourcery.com>
1992
1993         * stor-layout.c (layout_type): Remove duplicate code.
1994
1995 2007-06-04  Uros Bizjak  <ubizjak@gmail.com>
1996
1997         PR c/32191
1998         * gcc/c-common.c (c_define_builtins): Call targetm.init_builtins ()
1999         before build_common_builtin_nodes ().
2000
2001 2007-06-04  Steve Ellcey  <sje@cup.hp.com>
2002
2003         PR target/31733
2004         * cfgrtl.c (rtl_verify_flow_info): Skip notes when looking for barrier.
2005
2006 2007-06-04  Jan Hubicka  <jh@suse.cz>
2007
2008         * tree-predcom.c (replace_ref_with, initialize_root_vars_lm,
2009         reassociate_to_the_same_stmt): Call build_gimple_modify_stmt
2010         instead of _stat version.
2011
2012 2007-06-03  Zdenek Dvorak  <dvorakz@suse.cz>
2013
2014         PR tree-optimization/32194
2015         * tree-predcom.c (determine_offset): Check that both references have
2016         the same type.
2017
2018 2007-06-03  Zdenek Dvorak  <dvorakz@suse.cz>
2019
2020         * cfgloopmanip.c (remove_path, loopify, duplicate_loop_to_header_edge):
2021         Change dom_bbs to vector.  Add argument to iterate_fix_dominators call.
2022         * loop-unroll.c (unroll_loop_runtime_iterations): Ditto.
2023         * tree-cfg.c (tree_duplicate_sese_region): Change doms to vector.
2024         Add argument to iterate_fix_dominators call.
2025         (remove_edge_and_dominated_blocks): Pass vector to bbs_to_fix_dom.
2026         * gcse.c (hoist_code): Change domby to vector.
2027         * cfghooks.c (make_forwarder_block): Change doms_to_fix to vector.
2028         Add argument to iterate_fix_dominators call.
2029         * loop-doloop.c (doloop_modify): Changed recount_dominator to
2030         recompute_dominator.
2031         * lambda-code.c (perfect_nestify): Ditto.
2032         * cfgloopanal.c: Include graphds.h.
2033         (struct edge, struct vertex, struct graph, dump_graph, new_graph,
2034         add_edge, dfs, for_each_edge, free_graph): Moved to graphds.c.
2035         (mark_irreducible_loops): Use graphds_scc.  Remove argument from
2036         add_edge call.
2037         * graphds.c: New file.
2038         * graphds.h: New file.
2039         * dominance.c: Include vecprim.h, pointer-set.h and graphds.h.
2040         (get_dominated_by, get_dominated_by_region): Change return type to
2041         vector.
2042         (verify_dominators): Recompute all dominators and compare the results.
2043         (recount_dominator): Renamed to ...
2044         (recompute_dominator): ... this.  Do not check that the block is
2045         dominated by entry.
2046         (iterate_fix_dominators): Reimplemented.
2047         (prune_bbs_to_update_dominators, root_of_dom_tree,
2048         determine_dominators_for_sons): New functions.
2049         * et-forest.c (et_root): New function.
2050         * et-forest.h (et_root): Declare.
2051         * Makefile.in (graphds.o): Add.
2052         (cfgloopanal.o): Add graphds.h dependency.
2053         (dominance.o): Add graphds.h, vecprim.h and pointer-set.h dependency.
2054         * basic-block.h (get_dominated_by, get_dominated_by_region,
2055         iterate_fix_dominators): Declaration changed.
2056         (recount_dominator): Renamed to ...
2057         (recompute_dominator): ... this.
2058         * tree-ssa-threadupdate.c (thread_block): Free dominance info.
2059         (thread_through_all_blocks): Do not free dominance info.
2060
2061 2007-06-03  Andreas Schwab  <schwab@suse.de>
2062
2063         * config/m68k/m68k.c (override_options): Don't override
2064         REAL_MODE_FORMAT.
2065         * config/m68k/m68k-modes.def (SF, DF): Define to use
2066         motorola_single_format and motorola_double_format, resp.
2067         * real.c (motorola_single_format): Renamed from
2068         coldfire_single_format.
2069         (motorola_double_format): Renamed from coldfire_double_format.
2070         (encode_ieee_extended): Generate a proper canonical NaN image
2071         respecting canonical_nan_lsbs_set.
2072         (ieee_extended_motorola_format): Set canonical_nan_lsbs_set to
2073         true.
2074         * real.h: Adjust declarations.
2075
2076 2007-06-03  Kaz Kojima  <kkojima@gcc.gnu.org>
2077
2078         PR target/32163
2079         * config/sh/sh.md (symGOT_load): Don't schedule insns when
2080         the symbol is generated with the stack protector.
2081
2082 2007-06-03  Kazu Hirata  <kazu@codesourcery.com>
2083
2084         * config/m68k/m68k.c (m68k_attribute_table): Add "interrupt".
2085         (m68k_get_function_kind): Return m68k_fk_interrupt_handler on
2086         "interrupt".
2087         * doc/extend.texi (interrupt): Mention m68k.
2088
2089 2007-06-02  Uros Bizjak  <ubizjak@gmail.com>
2090
2091         * config/i386/i386.c (ix86_expand_sse_4_operands_builtin): Call
2092         safe_vector_operand() if input operand is VECTOR_MODE_P operand.
2093         (ix86_expand_sse_pcmpestr): Do not check operands for
2094         "register_operand", when insn operand predicate is "register_operand".
2095         (ix86_expand_sse_pcmpistr): Ditto.
2096
2097 2007-06-02  H.J. Lu  <hongjiu.lu@intel.com>
2098             Uros Bizjak  <ubizjak@gmail.com>
2099
2100         * config/i386/i386.h (enum reg_class) [SSE_FIRST_REG]: New.
2101         (SSE_CLASS_P): Use reg_class_subset_p between SSE_REGS.
2102         (REG_CLASS_NAMES): Add "FIRST_SSE_REG" string.
2103         (REG_CLASS_CONTENTS): Add members of FIRST_SSE_REG class.
2104         * config/i386/constraints.md ("z"): New register constraint
2105         for members of SSE_FIRST_REG class.
2106         * config/i386/i386-modes.def (CCA, CCC, CCO, CCS): New compare modes.
2107         * config/i386/i386.c (regclass_map): Change class of %xmm0 to
2108         SSE_FIRST_REG class.
2109         (put_condition_code) [EQ, NE]: Output suffixes for new compare modes.
2110         (ix86_cc_modes_compatible): Handle CCA, CCC, CCO and CCS modes.
2111         (IX86_BUILTIN_PCMPESTRI128): New for SSE4.2.
2112         (IX86_BUILTIN_PCMPESTRM128): Likewise.
2113         (IX86_BUILTIN_PCMPESTRA128): Likewise.
2114         (IX86_BUILTIN_PCMPESTRC128): Likewise.
2115         (IX86_BUILTIN_PCMPESTRO128): Likewise.
2116         (IX86_BUILTIN_PCMPESTRS128): Likewise.
2117         (IX86_BUILTIN_PCMPESTRZ128): Likewise.
2118         (IX86_BUILTIN_PCMPISTRI128): Likewise.
2119         (IX86_BUILTIN_PCMPISTRM128): Likewise.
2120         (IX86_BUILTIN_PCMPISTRA128): Likewise.
2121         (IX86_BUILTIN_PCMPISTRC128): Likewise.
2122         (IX86_BUILTIN_PCMPISTRO128): Likewise.
2123         (IX86_BUILTIN_PCMPISTRS128): Likewise.
2124         (IX86_BUILTIN_PCMPISTRZ128): Likewise.
2125         (struct builtin_description): Change "flag" field to unsigned.
2126         (bdesc_pcmpestr): New builtin description table.
2127         (bdesc_pcmpistr): Likewise.
2128         (ix86_init_mmx_sse_builtins): Define int_ftype_v16qi_int_v16qi_int_int,
2129         v16qi_ftype_v16qi_int_v16qi_int_int and int_ftype_v16qi_v16qi_int.
2130         Initialize pcmp[ei]str[im] insns for SSE4.2.
2131         (ix86_expand_sse_pcmpestr): New subroutine of ix86_expand_builtin.
2132         (ix86_expand_sse_pcmpistr): Likewise.
2133         (ix86_expand_builtin): Expand pcmp[ei]str[im] builtins for SSE4.2.
2134         * config/i386/i386.md (UNSPEC_PCMPESTR): New for SSE4.2.
2135         (UNSPEC_PCMPISTR): Likewise.
2136         * config/i386/sse.md (sse4_2_pcmpestr): New insn patern and splitter.
2137         (sse4_2_pcmpestri):New isns pattern.
2138         (sse4_2_pcmpestrm): Likewise.
2139         (sse4_2_pcmpestr_cconly): Likewise.
2140         (sse4_2_pcmpistr): New insn patern and splitter.
2141         (sse4_2_pcmpistri):New isns pattern.
2142         (sse4_2_pcmpistrm): Likewise.
2143         (sse4_2_pcmpistr_cconly): Likewise.
2144         * config/i386/smmintrin.h: Enable pcmp[ei]str[im] intrinsics
2145         in SSE4.2.
2146
2147 2007-06-01  David Daney  <ddaney@avtrex.com>
2148
2149         * config/mips/mips.c (mips_output_mi_thunk): Only load gp if not
2150         LOADGP_ABSOLUTE and not binds_local_p.
2151
2152 2007-06-01  Geoffrey Keating  <geoffk@apple.com>
2153
2154         * config/darwin.h (LINK_SPEC): Pass -fpie through to the linker.
2155
2156 2007-06-01  Ian Lance Taylor  <iant@google.com>
2157
2158         * tree-vrp.c (compare_name_with_value): Always set
2159         used_strict_overflow if we get a result from the variable itself.
2160
2161 2007-06-01  Ian Lance Taylor  <iant@google.com>
2162
2163         PR rtl-optimization/31455
2164         * lower-subreg.c (find_decomposable_subregs): Don't decompose
2165         subregs which have a cast between modes which are not tieable.
2166
2167 2007-06-01  Uros Bizjak  <ubizjak@gmail.com>
2168
2169         * expr.c (force_operand) [DIV, MOD, UDIV, UMOD, ASHIFTRT]: Remove
2170         breaks after return statements.
2171
2172 2007-06-01  Kaz Kojima  <kkojima@gcc.gnu.org>
2173
2174         * config/sh/sh.c (fpscr_set_from_mem): Call get_free_reg
2175         only after no_new_pseudos.
2176
2177 2007-05-31  Eric Christopher  <echristo@apple.com>
2178
2179         * expr.c (convert_move): Assert that we don't have a BLKmode
2180         operand.
2181         (store_expr): Handle BLKmode moves by calling emit_block_move.
2182
2183 2007-05-31  Daniel Berlin  <dberlin@dberlin.org>
2184
2185         * c-typeck.c (build_indirect_ref): Include type in error message.
2186         (build_binary_op): Pass types to binary_op_error.
2187         * c-common.c (binary_op_error): Take two type arguments, print out
2188         types with error.
2189         * c-common.h (binary_op_error): Update prototype.
2190
2191 2007-05-31  H.J. Lu  <hongjiu.lu@intel.com>
2192
2193         * config/i386/i386.c: Correct coments on -mno-sse4.
2194
2195 2007-05-31  H.J. Lu  <hongjiu.lu@intel.com>
2196
2197         * config.gcc (i[34567]86-*-*): Add nmmintrin.h to extra_headers.
2198         (x86_64-*-*): Likewise.
2199         * config/i386/i386.c (OPTION_MASK_ISA_MMX_UNSET): New.
2200         (OPTION_MASK_ISA_3DNOW_UNSET): Likewise.
2201         (OPTION_MASK_ISA_SSE_UNSET): Likewise.
2202         (OPTION_MASK_ISA_SSE2_UNSET): Likewise.
2203         (OPTION_MASK_ISA_SSE3_UNSET): Likewise.
2204         (OPTION_MASK_ISA_SSSE3_UNSET): Likewise.
2205         (OPTION_MASK_ISA_SSE4_1_UNSET): Likewise.
2206         (OPTION_MASK_ISA_SSE4_2_UNSET): Likewise.
2207         (OPTION_MASK_ISA_SSE4): Likewise.
2208         (OPTION_MASK_ISA_SSE4_UNSET): Likewise.
2209         (OPTION_MASK_ISA_SSE4A_UNSET): Likewise.
2210         (ix86_handle_option): Use OPTION_MASK_ISA_*_UNSET.  Handle SSE4.2.
2211         (override_options): Support SSE4.2.
2212         (ix86_build_const_vector): Support SImode and DImode.
2213         (ix86_build_signbit_mask): Likewise.
2214         (ix86_expand_int_vcond): Support V2DImode.
2215         (IX86_BUILTIN_CRC32QI): New for SSE4.2.
2216         (IX86_BUILTIN_CRC32HI): Likewise.
2217         (IX86_BUILTIN_CRC32SI): Likewise.
2218         (IX86_BUILTIN_CRC32DI): Likewise.
2219         (IX86_BUILTIN_PCMPGTQ): Likewise.
2220         (bdesc_crc32): Likewise.
2221         (bdesc_sse_3arg): Likewise.
2222         (ix86_expand_crc32): Likewise.
2223         (ix86_init_mmx_sse_builtins): Support SSE4.2.
2224         (ix86_expand_builtin): Likewise.
2225         * config/i386/i386.h (TARGET_CPU_CPP_BUILTINS): Define
2226         __SSE4_2__ for -msse4.2.
2227         * config/i386/i386.md (UNSPEC_CRC32): New for SSE4.2.
2228         (CRC32MODE): Likewise.
2229         (crc32modesuffix): Likewise.
2230         (crc32modeconstraint): Likewise.
2231         (sse4_2_crc32<mode>): Likewise.
2232         (sse4_2_crc32di): Likewise.
2233         * config/i386/i386.opt (msse4.2): New for SSE4.2.
2234         (msse4): Likewise.
2235         * config/i386/nmmintrin.h: New. The dummy SSE4.2 intrinsic header file.
2236         * config/i386/smmintrin.h: Add SSE4.2 intrinsics.
2237         * config/i386/sse.md (sse4_2_gtv2di3): New pattern for SSE4.2.
2238         (vcond<mode>): Use SSEMODEI instead of SSEMODE124.
2239         (vcondu<mode>): Likewise.
2240         * doc/extend.texi: Document SSE4.2 built-in functions.
2241         * doc/invoke.texi: Document -msse4.2/-msse4.
2242
2243 2007-05-31  Zdenek Dvorak  <dvorakz@suse.cz>
2244
2245         PR tree-optimization/32160
2246         * tree-predcom.c (predcom_tmp_var): New function.  Mark created
2247         variable as gimple reg.
2248         (initialize_root_vars, initialize_root_vars_lm): Use predcom_tmp_var.
2249
2250 2007-05-31  Kazu Hirata  <kazu@codesourcery.com>
2251
2252         * gcc.c (main): Don't consider linker options when issuing the
2253         warning about a linker input file not being used.
2254
2255 2007-05-30  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
2256
2257         * tree-vrp.c (compare_names): Initialize sop.
2258
2259 2007-05-30  Dirk Mueller  <dmueller@suse.de>
2260
2261         * cgraphunit.c (cgraph_analyze_function): Remove
2262         computation of inline parameters.
2263
2264 2007-05-30  Uros Bizjak  <ubizjak@gmail.com>
2265
2266         * config/i386/darwin.h (TARGET_SUBTARGET_DEFAULT): Undef before define.
2267
2268 2007-05-30  Richard Sandiford  <richard@codesourcery.com>
2269
2270         * config.gcc (arm-wrs-vxworks): Remove dbxelf.h from tm_file.
2271         Add vx-common.h.  Include vxworks.h between vx-common.h and
2272         arm/vxworks.h.
2273         * config/vx-common.h (DWARF2_UNWIND_INFO): Undefine before
2274         redefining.
2275         * config/vxworks.h (TARGET_ASM_CONSTRUCTOR): Likewise.
2276         (TARGET_ASM_DESTRUCTOR): Likewise.
2277         * config/arm/vxworks.h (TARGET_OS_CPP_BUILTINS): Check arm_arch_xscale
2278         instead of arm_is_xscale.  Use VXWORKS_OS_CPP_BUILTINS.
2279         (OVERRIDE_OPTIONS, SUBTARGET_CPP_SPEC): Define.
2280         (CC1_SPEC): Add -tstrongarm.  Line up backslashes.
2281         (VXWORKS_ENDIAN_SPEC): Define.
2282         (ASM_SPEC): Add VXWORKS_ENDIAN_SPEC.
2283         (LIB_SPEC, STARTFILE_SPEC, ENDFILE_SPEC): Redefine to their
2284         VXWORKS_* equivalents.
2285         (LINK_SPEC): Likewise, but add VXWORKS_ENDIAN_SPEC.
2286         (ASM_FILE_START): Delete.
2287         (TARGET_VERSION): Reformat.
2288         (FPUTYPE_DEFAULT, FUNCTION_PROFILER): Define.
2289         (DEFAULT_STRUCTURE_SIZE_BOUNDARY): Define.
2290         * config/arm/t-vxworks (LIB1ASMSRC, LIB1ASMFUNCS): Define.
2291         (FPBIT, DPBIT): Define.
2292         (fp-bit.c, dp-bit.c): New rules.
2293         (MULTILIB_OPTIONS): Add strongarm, -mrtp and -mrtp/-fPIC multilibs.
2294         (MULTILIB_MATCHES, MULTILIB_EXCEPTIONS): Define.
2295         * config/arm/arm-protos.h (arm_emit_call_insn): Declare.
2296         * config/arm/arm.h: Include vxworks-dummy.h.
2297         * config/arm/arm.c (arm_elf_asm_constructor, arm_elf_asm_destructor):
2298         Mark with ATTRIBUTE_UNUSED.
2299         (arm_override_options): Do not allow VxWorks RTP PIC to be used
2300         for Thumb.  Force r9 to be the PIC register for VxWorks RTPs and
2301         make it incompatible with -msingle-pic-base.
2302         (arm_function_ok_for_sibcall): Return false for calls that might
2303         go through a VxWorks PIC PLT entry.
2304         (require_pic_register): New function, split out from...
2305         (legitimize_pic_address): ...here.  Do not use GOTOFF accesses
2306         for VxWorks RTPs.
2307         (arm_load_pic_register): Handle the VxWorks RTP initialization
2308         sequence.  Use pic_reg as a shorthand for cfun->machine->pic_reg.
2309         (arm_emit_call_insn): New function.
2310         (arm_assemble_integer): Do not use GOTOFF accesses for VxWorks RTP.
2311         * config/arm/arm.md (UNSPEC_PIC_OFFSET): New unspec number.
2312         (pic_offset_arm): New pattern.
2313         (call, call_value): Use arm_emit_call_insn.
2314         (call_internal, call_value_internal): New expanders.
2315         * config/arm/lib1funcs.asm (__PLT__): Define to empty for
2316         VxWorks unless __PIC__.
2317
2318 2007-05-30  Eric Christopher  <echristo@gmail.com>
2319
2320         * genrecog.c: Include regs.h in generated file.
2321         * genemit.c: Ditto. Fix up formatting.
2322         * config/mn10300/constraints.md: New.
2323         * config/mn10300/mn10300.md: Include.
2324         * config/mn10300/mn10300.c(mn10300_secondary_reload_class):
2325         Fix up for removed macro.
2326         * config/mn10300/predicates.md (call_address_operand):  Ditto.
2327         * config/mn10300/mn10300.h (REG_CLASS_FROM_LETTER): Delete.
2328         (CONST_OK_FOR_I): Ditto.
2329         (CONST_OK_FOR_J): Ditto.
2330         (CONST_OK_FOR_K): Ditto.
2331         (CONST_OK_FOR_L): Ditto.
2332         (CONST_OK_FOR_M): Ditto.
2333         (CONST_OK_FOR_N): Ditto.
2334         (CONST_DOUBLE_OK_FOR_LETTER_P): Ditto.
2335         (OK_FOR_Q): Ditto.
2336         (OK_FOR_R): Ditto.
2337         (OK_FOR_T): Ditto.
2338         (EXTRA_CONSTRAINT): Ditto.
2339
2340 2007-05-30 Uros Bizjak <ubizjak@gmail.com>
2341
2342         * config/i386/i386.h (MASK_64BIT, MASK_MMX, MASK_3DNOW*, MASK_SSE*):
2343         Remove defines.
2344         * config/i386/biarch.h (TARGET_64BIT_DEFAULT): Define to
2345         OPTION_MASK_ISA_64BIT.
2346         * config/i386/i386.c: Rename MASK_* macros to OPTION_MASK_ISA_*.
2347
2348 2007-05-30  Richard Guenther  <rguenther@suse.de>
2349
2350         PR middle-end/32152
2351         * gimplify.c (gimplify_omp_atomic_pipeline): Use correct
2352         types for comparison.
2353         * fold-const.c (fold_comparison): Call maybe_canonicalize_comparison
2354         with original typed arguments.
2355         * config/i386/i386.c (ix86_gimplify_va_arg): Fix type mismatches.
2356
2357 2007-05-30  Jakub Jelinek  <jakub@redhat.com>
2358
2359         PR tree-optimization/31769
2360         * except.c (duplicate_eh_regions): Clear prev_try if
2361         ERT_MUST_NOT_THROW region is inside of ERT_TRY region.
2362
2363 2007-05-30  Zdenek Dvorak  <dvorakz@suse.cz>
2364
2365         * tree-scalar-evolution.c (scev_const_prop): Do not create labels.
2366         * tree-ssa-sink.c (statement_sink_location): Return basic block and
2367         bsi of the location where statements should be inserted.
2368         (sink_code_in_bb): Take bsi from statement_sink_location.
2369         * lambda-code.c (lambda_loopnest_to_gcc_loopnest): Use bsi_after_labels
2370         instead of bsi_start.
2371         * tree-profile.c (tree_gen_ic_func_profiler): Pass BSI_NEW_STMT to
2372         bsi_insert_after.
2373         * tree-cfg.c (bsi_move_after): Pass BSI_NEW_STMT to bsi_insert_after.
2374         (bsi_move_before): Document inconsistency with bsi_move_after.
2375         (tree_redirect_edge_and_branch): Do not create labels if not necessary.
2376
2377 2007-05-30 Uros Bizjak <ubizjak@gmail.com>
2378
2379         * config/i386/i386.h (TARGET_ABM): New define.
2380         (TARGET_POPCNT): Ditto.
2381         (TARGET_64BIT, TARGET_MMX, TARGET_3DNOW, TARGET_3DNOW_A, TARGET_SSE*):
2382         New temporary defines to redefine from OPTION_ISA_* defines.
2383         (MASK_64BIT, MASK_MMX, MASK_3DNOW, MASK_3DNOW_A, MASK_SSE*):
2384         New temporary defines to redefine from OPTION_MASK_ISA_* defines.
2385         (ix86_isa_flags): New extern int declaration.
2386         (TARGET_SUBTARGET_DEFAULT): New define.
2387         (TARGET_SUBTARGET_ISA_DEFAULT): Ditto.
2388         (TARGET_SUBTARGET32_DEFAULT): Ditto.
2389         (TARGET_SUBTARGET32_ISA_DEFAULT): Ditto.
2390         (TARGET_SUBTARGET64_ISA_DEFAULT): Ditto.
2391         * config/i386/unix.h: Undef TARGET_SUBTARGET_DEFAULT before define.
2392         * config/i386/darwin.h: Change TARGET_64BIT define to
2393         OPTION_ISA_64BIT.
2394
2395         * config/i386/i386.opt (m3dnowa): Define as undocumented option
2396         using existing "ix86_isa_flags" varible.
2397         (m32, m64): Use existing "ix86_isa_flags" variable.
2398         (mmmx, m3dnow): Ditto.
2399         (msse, msse2, msse3, mssse3, msse4.1, msse4a): Ditto.
2400         (mabm): Define as non-negative option using "x86_abm" variable.
2401         (mpopcnt): Define as non-negative option using "x86_popcnt" variable.
2402
2403         * config/i386/i386.c (ix86_arch_features) [X86_ARCH_CMOVE]:
2404         Rewrite feature test bitmap.
2405         (ix86_isa_flags): New initialized global int varible.
2406         (ix86_isa_flags_explicit): New static int variable.
2407         (ix86_handle_option): Set "ix86_isa_flags_explicit" when mmmx, m3dnow,
2408         msse, msse2, msse3, msse4.1 and msse4a option is processed.  Change
2409         i86_isa_flags and ix86_isa_flags_explicit, not target_flags and
2410         target_flags_explicit.
2411         (override_options): Remove "target_enable" and "target_disable" fields
2412         from "struct ptt". Update processor_target_table accordingly. Remove
2413         PTA_PREFETCH_SSE from processor_alias_table entry if PTE_SSE is
2414         defined and rearrange PTA_* bits.  Use "ix86_isa_flags" instead of
2415         "target_flags" and "ix86_isa_flags_explicit" instead of
2416         "target_flags_explicit" when masked with MASK_64BIT, MASK_MMX,
2417         MASK_3DNOW, MASK_3DNOW_A or MASK_SSE*.  Set "x86_abm" to true when
2418         PTA_ABM is set in processor_alias_table flags entry.  Set "x86_popcnt"
2419         to true when either of PTA_POPCNT or PTA_ABM is set in
2420         processor_alias_table flags entry.  Set "x86_prefetch_sse" to true
2421         when either of PTA_PREFETCH_SSE or PTA_SSE is set in
2422         processor_alias_table flags entry.  Remove handling of
2423         "target_enable" and "target_disable" fields of processor_target_table.
2424         Mask "target_flags" with TARGET_SUBTARGET32_DEFAULT for 32-bit
2425         targets or with TARGET_SUBTARGET64_DEFAULT for 64-bit targets.
2426         Mask "ix86_isa_flags" with TARGET_SUBTARGET32_ISA_DEFAULT for 32-bit
2427         targets or with TARGET_SUBTARGET64_ISA_DEFAULT for 64-bit targets.
2428         (def_builtin): Mask "mask" variable with "ix86_isa_flags", not
2429         "target_flags".
2430         (TARGET_DEFAULT_TARGET_FLAGS): Do not include TARGET_64BIT_DEFAULT.
2431
2432 2007-05-29  David Daney  <ddaney@avtrex.com>
2433
2434         PR gcc/31975
2435         * config/mips/mips.c (mips_output_mi_thunk): Emit
2436         NOTE_INSN_PROLOGUE_END at beginning of the thunk.
2437
2438 2007-05-29  Hui-May Chang  <hm.chang@apple.com>
2439         * config/i386/i386.c (ix86_function_regparm): Added checking of
2440         ix86_force_align_arg_pointer to determine the number of
2441         register parameters.
2442
2443 2007-05-29  Zdenek Dvorak  <dvorakz@suse.cz>
2444
2445         * tree-vectorizer.h (DR_MISALIGNMENT): Cast aux to integer.
2446         (SET_DR_MISALIGNMENT): New.
2447         * tree-vect-analyze.c (vect_compute_data_ref_alignment,
2448         vect_update_misalignment_for_peel, vect_enhance_data_refs_alignment):
2449         Use SET_DR_MISALIGNMENT.
2450         * tree-predcom.c (split_data_refs_to_components): Cast dr->aux from
2451         pointer.
2452         * tree-data-ref.c (create_data_ref, compute_all_dependences,
2453         find_loop_nest): Export.
2454         * tree-data-ref.h (struct data_reference): Change aux field to pointer.
2455         (create_data_ref, compute_all_dependences, find_loop_nest): Declare.
2456         * tree-ssa-loop-prefetch.c: Include tree-data-ref.h.
2457         (L1_CACHE_SIZE_BYTES, L2_CACHE_SIZE_BYTES, NONTEMPORAL_FRACTION):
2458         New macros.
2459         (struct mem_ref): Add field reuse_distance.
2460         (find_or_create_group, record_ref): Use XNEW instead of xcalloc.
2461         Initialize reuse_distance field.
2462         (issue_prefetch_ref): Select temporality of prefetch according to
2463         reuse_distance.
2464         (volume_of_references, volume_of_dist_vector, add_subscript_strides,
2465         self_reuse_distance, determine_loop_nest_reuse): New functions.
2466         (loop_prefetch_arrays): Call determine_loop_nest_reuse.
2467         (tree_ssa_prefetch_arrays): Dump L2 cache size.
2468         * Makefile.in (tree-ssa-loop-prefetch.o): Add TREE_DATA_REF_H
2469         dependency.
2470
2471 2007-05-29  Daniel Berlin  <dberlin@dberlin.org>
2472
2473         * tree-ssa-alias.c: Add aliasing overview.
2474
2475 2007-05-29  Zuxy Meng  <zuxy.meng@gmail.com>
2476             Danny Smith  <dannysmith@users.sourceforge.net>
2477
2478         PR target/29498
2479         * config/i386/t-crtfm: Compile crtfastmath.o with
2480         -minline-all-stringops.
2481         * config/i386/cygwin.h (ENDFILE_SPECS): Add crtfastmath.o.
2482         * config/i386/mingw32.h (ENDFILE_SPECS): Add crtfastmath.o.
2483
2484 2007-05-28  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
2485
2486         * doc/md.texi: Document constraints on HP PA-RISC.
2487
2488         * pa/constraints.md: New file.
2489         * pa.md: Include constraints.md.
2490         * pa.c (cint_ok_for_move): Avoid using CONST_OK_FOR_LETTER_P.
2491         (integer_store_memory_operand, ldil_cint_p): New functions.
2492         * pa-protos.h (integer_store_memory_operand, ldil_cint_p): Declare.
2493         * pa.h (CONST_OK_FOR_LETTER_P, CONST_DOUBLE_OK_FOR_LETTER_P,
2494         IS_RELOADING_PSEUDO_P, EXTRA_CONSTRAINT): Remove.
2495         * pa32-regs.h (REG_CLASS_FROM_LETTER): Remove.
2496         * pa64-regs.h (REG_CLASS_FROM_LETTER): Remove.
2497
2498 2007-05-28  Andrew Pinski  <Andrew_pinski@playstation.sony.com>
2499
2500         PR c/31339
2501         * c-typeck.c (build_unary_op <case PREINCREMENT_EXPR,
2502         case POSTINCREMENT_EXPR, case PREDECREMENT_EXPR,
2503         case POSTDECREMENT_EXPR>): Return the error_mark_node
2504         if either the real or imaginary parts would an
2505         error_mark_node.
2506
2507 2007-05-28  Daniel Berlin  <dberlin@dberlin.org>
2508
2509         * tree-ssa-dce.c (eliminate_unnecessary_stmts): Release LHS SSA
2510         name when we remove it from a call.
2511
2512 2007-05-28  Kazu Hirata  <kazu@codesourcery.com>
2513
2514         * targhooks.c (default_narrow_bitfield): Remove.
2515         * targhooks.h: Remove the prototype for
2516         default_narrow_bitfield.
2517
2518         * langhooks-def.h: Remove the prototype for
2519         hook_get_alias_set_0.
2520         * langhooks.c (hook_get_alias_set_0): Remove.
2521
2522         * global.c (EXECUTE_IF_CONFLICT): Remove.
2523
2524 2007-05-28  Andrew Pinski  <andrew_pinski@playstation.sony.com>
2525
2526         PR tree-opt/32100
2527         * fold-const.c (tree_expr_nonnegative_warnv_p): Don't
2528         return true when truth_value_p is true and the type
2529         is of signed:1.
2530
2531 2007-05-28  Gerald Pfeifer  <gerald@pfeifer.com>
2532
2533         * doc/install.texi (Prerequisites): We no longer require Autoconf
2534         2.13 for the top-level.
2535
2536 2007-05-28  Uros Bizjak  <ubizjak@gmail.com>
2537
2538         * target/i386/i386.c (ix86_expand_vector_move): Expand unaligned
2539         memory access via x86_expand_vector_move_misalign() only for
2540         TImode values on 32-bit targets.
2541
2542 2007-05-28  Razya Ladelsky  <razya@il.ibm.com>
2543
2544         * matrix-reorg.c: New file. Implement matrix flattening and
2545         transposing optimization.
2546         * tree-pass.h: Add matrix reorg pass.
2547         * common.opt: Add fipa-mreorg flag.
2548         * Makefile.in: Add matrix-reorg.c.
2549         * passes.c: Add matrix reorg pass.
2550         * varpool.c (add_new_static_var): New function.
2551         * cgraph.h (add_new_static_var): Declare.
2552
2553 2007-05-27  Eric Christopher  <echristo@apple.com>
2554
2555         * config/rs6000/rs6000.c (rs6000_emit_prologue): Update
2556         sp_offset depending on stack size. Save r12 depending
2557         on registers we're saving later.
2558         (rs6000_emit_epilogue): Update sp_offset depending only
2559         on stack size.
2560
2561 2007-05-27  Zdenek Dvorak  <dvorakz@suse.cz>
2562
2563         * tree-vrp.c (execute_vrp): Do not check whether current_loops == NULL.
2564         * tree-chrec.c (evolution_function_is_invariant_rec_p): Ditto.
2565         * ifcvt.c (if_convert): Ditto.
2566         * tree-ssa-threadupdate.c (thread_block): Ditto.
2567         (thread_through_all_blocks): Ditto.  Assert that loops were analysed.
2568         * tree-ssa-loop-manip.c (rewrite_into_loop_closed_ssa,
2569         verify_loop_closed_ssa): Check number_of_loops instead of
2570         current_loops.
2571         * predict.c (tree_estimate_probability): Ditto.
2572         * tree-if-conv.c (main_tree_if_conversion): Ditto.
2573         * tree-ssa-loop-ch.c (copy_loop_headers): Ditto.
2574         * modulo-sched.c (sms_schedule): Ditto.
2575         * tree-scalar-evolution.c (scev_const_prop): Ditto.
2576         (scev_finalize): Do not do anything if scev analysis was not
2577         initialized.
2578         * cfgloopanal.c (mark_irreducible_loops): Do not check whether
2579         current_loops == NULL.
2580         (mark_loop_exit_edges): Check number_of_loops instead of current_loops.
2581         * loop-init.c (loop_optimizer_init): Do not free current_loops when
2582         there are no loops.
2583         (loop_optimizer_finalize): Assert that loops were analyzed.
2584         (rtl_move_loop_invariants, rtl_unswitch, rtl_unroll_and_peel_loops,
2585         rtl_doloop): Check number_of_loops instead of current_loops.
2586         * tree-ssa-loop.c (tree_loop_optimizer_init): Do not check whether
2587         current_loops == NULL.
2588         (tree_ssa_loop_init, tree_ssa_loop_im, tree_ssa_loop_unswitch,
2589         gate_tree_vectorize tree_linear_transform, check_data_deps,
2590         tree_ssa_loop_ivcanon, tree_ssa_empty_loop, tree_ssa_loop_bounds,
2591         tree_complete_unroll, tree_ssa_loop_prefetch, tree_ssa_loop_ivopts):
2592         Check number_of_loops instead of current_loops.
2593         (tree_ssa_loop_done): Do not check whether current_loops == NULL.
2594         * tree-ssa-pre.c (fini_pre): Do not take do_fre argument.  Always
2595         free loops if available.
2596         (execute_pre): Do not pass do_fre to fini_pre.
2597
2598 2007-05-27  Tobias Burnus  <burnus@net-b.de>
2599
2600         PR middle-end/32083
2601         * real.c (mpfr_from_real): Fix sign of -Inf.
2602
2603 2007-05-27  H.J. Lu  <hongjiu.lu@intel.com>
2604
2605         * tree-vect-transform.c (vectorizable_conversion): Initialize
2606         tree_code variables to ERROR_MARK.
2607         (vectorizable_type_demotion): Likewise.
2608         (vectorizable_type_promotion): Likewise.
2609
2610 2007-05-26  Uros Bizjak  <ubizjak@gmail.com>
2611
2612         PR target/32065
2613         * config/i386/i386.md (movti): Handle push operands via
2614         ix86_expand_push().
2615
2616 2007-05-26  Kazu Hirata  <kazu@codesourcery.com>
2617
2618         * basic-block.h: Remove the prototype for merge_seq_blocks.
2619         * cfgcleanup.c (merge_seq_blocks): Remove.
2620
2621         * tree-flow.h: Remove the prototype for is_aliased_with.
2622         * tree-ssa-alias.c (is_aliased_with): Remove.
2623
2624 2007-05-26  H.J. Lu  <hongjiu.lu@intel.com>
2625
2626         * config/i386/i386-protos.h (ix86_expand_sse4_unpack): New.
2627
2628         * config/i386/i386.c (ix86_expand_sse4_unpack): New.
2629
2630         * config/i386/sse.md (vec_unpacku_hi_v16qi): Call
2631         ix86_expand_sse4_unpack if SSE4.1 is enabled.
2632         (vec_unpacks_hi_v16qi): Likewise.
2633         (vec_unpacku_lo_v16qi): Likewise.
2634         (vec_unpacks_lo_v16qi): Likewise.
2635         (vec_unpacku_hi_v8hi): Likewise.
2636         (vec_unpacks_hi_v8hi): Likewise.
2637         (vec_unpacku_lo_v8hi): Likewise.
2638         (vec_unpacks_lo_v8hi): Likewise.
2639         (vec_unpacku_hi_v4si): Likewise.
2640         (vec_unpacks_hi_v4si): Likewise.
2641         (vec_unpacku_lo_v4si): Likewise.
2642         (vec_unpacks_lo_v4si): Likewise.
2643
2644 2007-05-26  Kazu Hirata  <kazu@codesourcery.com>
2645
2646         * c-typeck.c, config/arm/arm.c, config/darwin.c,
2647         config/sh/symbian.c, gcc.c, ipa-cp.c, ipa-inline.c, loop-iv.c,
2648         omega.c, tree-ssa-loop-niter.c, treestruct.def: Fix typos and
2649         follow spelling conventions in various
2650         warning/error/diagnostic messages.
2651
2652         * config/i386/i386.c, config/pa/pa.c, config/spu/spu.c,
2653         df-problems.c, df-scan.c, domwalk.c, ebitmap.c, ebitmap.h,
2654         fold-const.c, gcc.c, ipa-type-escape.c, omega.c, omega.h,
2655         tree-ssa-coalesce.c, tree-ssa-live.c, tree-ssa-structalias.c,
2656         tree-vrp.c: Fix comment typos.  Follow spelling conventions.
2657         * doc/tm.texi: Follow spelling conventions.
2658
2659 2007-05-25  Andrew Pinski  <andrew_pinski@playstation.sony.com>
2660
2661         PR tree-opt/32090
2662         * tree-ssa-forwprop.c
2663         (forward_propagate_addr_into_variable_array_index): Remove
2664         the lhs argument.  Use the type of def_rhs instead of lhs.
2665         (forward_propagate_addr_expr_1): Update use of
2666         forward_propagate_addr_into_variable_array_index.
2667
2668 2007-05-25  Sandra Loosemore  <sandra@codesourcery.com>
2669             Nigel Stephens  <nigel@mips.com>
2670
2671         * config/mips/mips.c (mips_attribute_table): Add "near" and "far"
2672         function attributes, "far" being an alias for "long_call".
2673         (TARGET_COMP_TYPE_ATTRIBUTES): Define as mips_comp_type_attributes.
2674         (mips_near_type_p, mips_far_type_p): New.
2675         (mips_comp_type_attributes): New function to check that attributes
2676         attached to a function type are compatible.
2677         (mips_output_mi_thunk): Test SYMBOL_REF_LONG_CALL_P() rather than
2678         TARGET_LONG_CALLS when deciding whether we can do a direct sibcall
2679         to the target function of the thunk.
2680         (mips_encode_section_info): Check for "near" and "far" function
2681         attributes, and always set the SYMBOL_FLAG_LONG_CALL bit explicitly.
2682
2683         * config/mips/predicates.md (const_call_insn_operand): Test only
2684         SYMBOL_REF_LONG_CALL_P() and not TARGET_LONG_CALLS.
2685
2686         * doc/extend.texi (Function Attributes): Document MIPS "near" and
2687         "far" attributes.
2688
2689         * testsuite/gcc.target/mips/near-far-1.c:  New test case.
2690         * testsuite/gcc.target/mips/near-far-2.c:  New test case.
2691         * testsuite/gcc.target/mips/near-far-3.c:  New test case.
2692         * testsuite/gcc.target/mips/near-far-4.c:  New test case.
2693
2694 2007-05-25  Eric Christopher  <echristo@apple.com>
2695
2696         * config.gcc: Add i386/t-fprules-softfp64 and soft-fp/t-softfp
2697         to x86-darwin configurations.
2698         * config/i386/t-darwin: Add softfp support.
2699         * config/i386/t-darwin64: Ditto.
2700         * config/i386/sfp-machine.h: If mach then don't use
2701         aliasing, emit a stub to call.
2702
2703 2007-05-25  Kazu Hirata  <kazu@codesourcery.com>
2704
2705         * cfglayout.c, cgraphunit.c, config/avr/avr.c, fold-const.c,
2706         haifa-sched.c, optabs.h, tree-affine.c, tree-data-ref.c,
2707         tree-predcom.c, tree-ssa-alias-warnings.c,
2708         tree-ssa-forwprop.c, tree-vect-analyze.c, tree-vrp.c: Fix
2709         comment typos.  Follow spelling conventions.
2710         * doc/cpp.texi, doc/invoke.texi: Fix typos.
2711
2712 2007-05-26  Uros Bizjak  <ubizjak@gmail.com>
2713
2714         PR target/32065
2715         * target/i386/i386.c (ix86_expand_vector_move): Force SUBREGs of
2716         constants into memory.  Expand unaligned memory references for
2717         SSE modes via x86_expand_vector_move_misalign() function.
2718
2719 2007-05-25  Uros Bizjak  <ubizjak@gmail.com>
2720
2721         * config/i386/sse.md (*vec_extractv2di_1_sse2): Do not calculate
2722         "memory" attribute for "sseishft" type insn without operands[2].
2723
2724 2007-05-25  Dirk Mueller  <dmueller@suse.de>
2725             Marcus Meissner <meissner@suse.de>
2726
2727         * doc/extend.texi (alloc_size): New attribute.
2728         * c-common.c (handle_alloc_size_attribute): New.
2729         * tree-object-size.c (alloc_object_size): Use alloc_size
2730         attribute, if available.
2731
2732 2007-05-25  H.J. Lu  <hongjiu.lu@intel.com>
2733
2734         * config/i386/i386.c (__builtin_ia32_vec_ext_v2df): Mark it
2735         with MASK_SSE2.
2736         (__builtin_ia32_vec_ext_v2di): Likewise.
2737         (__builtin_ia32_vec_ext_v4si): Likewise.
2738         (__builtin_ia32_vec_ext_v8hi): Likewise.
2739         (__builtin_ia32_vec_ext_v16qi): Likewise.
2740         (__builtin_ia32_vec_set_v8hi): Likewise.
2741
2742 2007-05-25  H.J. Lu  <hongjiu.lu@intel.com>
2743
2744         * config/i386/sse.md (*vec_extractv2di_1_sse2): Correct shift.
2745
2746 2007-05-25  Richard Sandiford  <richard@codesourcery.com>
2747
2748         * config/arm/arm-protos.h (arm_encode_call_attribute): Delete.
2749         (arm_is_longcall_p): Rename to...
2750         (arm_is_long_call_p): ...this.  Take a single tree argument and
2751         return a bool.
2752         * config/arm/arm.h (CALL_SHORT, CALL_LONG, CALL_NORMAL): Delete.
2753         (CUMULATIVE_ARGS): Remove call_cookie.
2754         (SHORT_CALL_FLAG_CHAR, LONG_CALL_FLAG_CHAR, ENCODED_SHORT_CALL_ATTR_P)
2755         (ENCODED_LONG_CALL_ATTR_P): Delete.
2756         (ARM_NAME_ENCODING_LENGTHS): Remove SHORT_CALL_FLAG_CHAR and
2757         LONG_CALL_FLAG_CHAR cases.
2758         (ARM_DECLARE_FUNCTION_SIZE): Delete.
2759         * config/arm/elf.h (ASM_DECLARE_FUNCTION_SIZE): Don't use
2760         ARM_DECLARE_FUNCTION_SIZE.
2761         * config/arm/arm.c (arm_init_cumulative_args): Don't set call_cookie.
2762         (arm_function_arg): Return const0_rtx for VOIDmode arguments.
2763         (arm_encode_call_attribute, current_file_function_operand): Delete.
2764         (arm_function_in_section_p): New function.
2765         (arm_is_longcall_p): Rename to...
2766         (arm_is_long_call_p): ...this.  Take the target function as a single
2767         argument and return a bool.  Do not rely on call cookies.  Check
2768         whether the target symbol is in the same section as the current
2769         function, not just the same compilation unit.
2770         (arm_function_ok_for_sibcall): Use arm_is_long_call_p.
2771         (arm_encode_section_info): Don't encode a call type.
2772         * config/arm/arm.md (call, call_value): Update calls to
2773         arm_is_long(_)call_p.  Simplify logic.
2774         (*call_symbol, *call_value_symbol, *call_insn, *call_value_insn):
2775         Update calls to arm_is_long(_)call_p.
2776
2777 2007-05-25  Richard Guenther  <rguenther@suse.de>
2778
2779         PR tree-optimization/31982
2780         * tree-ssa-forwprop.c
2781         (forward_propagate_addr_into_variable_array_index): Handle arrays
2782         with element size one.
2783
2784 2007-05-24  Andrew Pinski  <andrew_pinski@playstation.sony.com>
2785
2786         * config/spu/spu.md (smulsi3_highpart): Unshare the rtl chain.
2787         (umulsi3_highpart): Likewise.
2788
2789 2007-05-24  Ian Lance Taylor  <iant@google.com>
2790
2791         PR rtl-optimization/32069
2792         * regclass.c (regclass): Don't crash if the entry in regno_reg_rtx
2793         is NULL.
2794
2795 2007-05-24  Ollie Wild  <aaw@google.com>
2796
2797         * doc/cpp.texi (Common Predefined Macros): Add __COUNTER__
2798         description.
2799
2800 2007-05-24  Richard Sandiford  <rsandifo@nildram.co.uk>
2801
2802         * postreload-gcse.c (reg_changed_after_insn_p): New function.
2803         (oprs_unchanged_p): Use it to check all registers in a REG.
2804         (record_opr_changes): Look for clobbers in CALL_INSN_FUNCTION_USAGE.
2805         (reg_set_between_after_reload_p): Delete.
2806         (reg_used_between_after_reload_p): Likewise.
2807         (reg_set_or_used_since_bb_start): Likewise.
2808         (eliminate_partially_redundant_load): Use reg_changed_after_insn_p
2809         and reg_used_between_p instead of reg_set_or_used_since_bb_start.
2810         Use reg_set_between_p instead of reg_set_between_after_reload_p.
2811         * rtlanal.c (reg_set_p): Check whether REG overlaps
2812         regs_invalidated_by_call, rather than just checking the
2813         membership of REGNO (REG).
2814
2815 2007-05-24  Zdenek Dvorak  <dvorakz@suse.cz>
2816
2817         * doc/passes.texi: Document predictive commoning.
2818         * doc/invoke.texi (-fpredictive-commoning): Document.
2819         * opts.c (decode_options): Enable flag_predictive_commoning on -O3.
2820         * tree-ssa-loop-im.c (get_lsm_tmp_name): Export.  Allow
2821         adding indices to the generated name.
2822         (schedule_sm): Pass 0 to get_lsm_tmp_name.
2823         * tree-ssa-loop-niter.c (stmt_dominates_stmt_p): Export.
2824         * tree-pretty-print.c (op_symbol_1): Renamed to ...
2825         (op_symbol_code): ... and exported.
2826         (dump_omp_clause, op_symbol): Use op_symbol_code
2827         instead of op_symbol_1.
2828         * tree-pass.h (pass_predcom): Declare.
2829         * timevar.def (TV_PREDCOM): New timevar.
2830         * tree-ssa-loop.c (run_tree_predictive_commoning,
2831         gate_tree_predictive_commoning, pass_predcom): New.
2832         * tree-data-ref.c (find_data_references_in_loop): Find the
2833         references in dominance order.
2834         (canonicalize_base_object_address): Ensure that the result has
2835         pointer type.
2836         (dr_analyze_innermost): Export.
2837         (create_data_ref): Code to fail for references with invariant
2838         address moved ...
2839         (find_data_references_in_stmt): ... here.
2840         * tree-data-ref.h (dr_analyze_innermost): Declare.
2841         * tree-affine.c: Include tree-gimple.h and hashtab.h.
2842         (aff_combination_find_elt, name_expansion_hash,
2843         name_expansion_eq, tree_to_aff_combination_expand,
2844         double_int_constant_multiple_p, aff_combination_constant_multiple_p):
2845         New functions.
2846         * tree-affine.h (aff_combination_constant_multiple_p,
2847         tree_to_aff_combination_expand): Declare.
2848         * tree-predcom.c: New file.
2849         * common.opt (fpredictive-commoning): New option.
2850         * tree-flow.h (op_symbol_code, tree_predictive_commoning,
2851         stmt_dominates_stmt_p, get_lsm_tmp_name): Declare.
2852         * Makefile.in (tree-predcom.o): Add.
2853         (tree-affine.o): Add TREE_GIMPLE_H dependency.
2854         * passes.c (init_optimization_passes):  Add dceloop after
2855         copy propagation in loop optimizer.  Add predictive commoning
2856         to loop optimizer passes.
2857
2858 2007-05-24  H.J. Lu  <hongjiu.lu@intel.com>
2859
2860         * target-def.h (TARGET_MANGLE_DECL_ASSEMBLER_NAME): Correct
2861         default hook.
2862
2863 2007-05-24  Jan Hubicka  <jh@suse.cz>
2864
2865         * gengenrtl.c (gendecl, gendef): Output the gens annotated for
2866         statistics.
2867         (genheader): Include statistics.h.
2868
2869         * doc/invoke.texi (-fdump-unnumbered): Update docs when line number
2870         notes are gone.
2871         * print-rtl.c (flag_dump_unnumbered): Update comments.
2872         (print_rtl): Fix my previous change.
2873         * emit-rtl.c (emit_note_before, emit_note_after): Clear out note
2874         specific data.
2875
2876 2007-05-24  Zdenek Dvorak  <dvorakz@suse.cz>
2877
2878         PR middle-end/32018
2879         * tree-ssa-threadupdate.c (thread_through_loop_header): Use
2880         set_loop_copy.
2881         (thread_through_all_blocks): Call initialize_original_copy_tables
2882         and free_original_copy_tables.
2883         * cfgloopmanip.c (duplicate_loop, duplicate_loop_to_header_edge):
2884         Use set_loop_copy.
2885         * tree-cfg.c (tree_duplicate_sese_region): Ditto.
2886         * cfghooks.c (duplicate_block): Use get_loop_copy.
2887         * cfg.c: Include cfgloop.h.
2888         (loop_copy): New hash table.
2889         (initialize_original_copy_tables): Initialize loop_copy table.
2890         (free_original_copy_tables): Free loop_copy table.
2891         (copy_original_table_clear, copy_original_table_set,
2892         set_loop_copy, get_loop_copy): New functions.
2893         (set_bb_original, set_bb_copy): Use copy_original_table_set.
2894         * cfgloop.h (struct loop): Remove copy field.
2895         * Makefile.in (cfg.o): Add CFGLOOP_H dependency.
2896         * basic-block.h (set_loop_copy, get_loop_copy): Declare.
2897
2898 2007-05-24  H.J. Lu  <hongjiu.lu@intel.com>
2899
2900         * config/i386/i386.c (ix86_handle_option): Handle SSE4.1 for
2901         -msse/-msse2/-msse3.
2902
2903 2007-05-24  H.J. Lu  <hongjiu.lu@intel.com>
2904
2905         * config/i386/i386.c (ix86_init_mmx_sse_builtins): Mark
2906         __builtin_ia32_vec_set_v2di with MASK_64BIT.
2907
2908 2007-05-24  Danny Smith  <dannysmith@users.sourceforge.net>
2909
2910         PR target/27067
2911         * doc/tm.texi (TARGET_MANGLE_DECL_ASSEMBLER_NAME): Document.
2912         * targhooks.h (default_mangle_decl_assembler_name): Declare
2913         default hook.
2914         * targhooks.c (default_mangle_decl_assembler_name): Define
2915         default hook.
2916         * target-def.h (TARGET_MANGLE_DECL_ASSEMBLER_NAME) New. Set to
2917         default hook.
2918         * target.h (struct gcc_target): Add mangle_decl_assembler_name field.
2919         * langhooks.c (lhd_set_decl_assembler_name): Call
2920         targetm.mangle_decl_assembler_name for names with global scope.
2921
2922         * config/i386/cygming.h (TARGET_MANGLE_DECL_ASSEMBLER_NAME) Override
2923         default.
2924         (ASM_OUTPUT_DEF_FROM_DECLS): Simplify to use DECL_ASSEMBLER_NAME.
2925         * config/i386/i386-protos.h (i386_pe_mangle_decl_assembler_name):
2926         Declare.
2927         * config/i386/winnt.c (i386_pe_maybe_mangle_decl_assembler_name):
2928         New. Factored out of i386_pe_encode_section_info.
2929         (gen_stdcall_or_fastcall_suffix): Get name identifier as argument.
2930         Move check for prior decoration of stdcall
2931         symbols to i386_pe_encode_section_info.
2932         (i386_pe_encode_section_info): Adjust call to
2933         gen_stdcall_or_fastcall_suffix.  Use
2934         i386_pe_maybe_mangle_decl_assembler_name, if needed.
2935         (i386_pe_mangle_decl_assembler_name): New. Wrap
2936         i386_pe_maybe_mangle_decl_assembler_name.
2937
2938 2007-05-16  Rafael Avila de Espindola  <espindola@google.com>
2939
2940         * c-common.c (c_common_signed_or_unsigned_type): Delay the check for
2941         INTEGRAL_TYPE_P and TYPE_UNSIGNED.
2942         * langhooks.c (get_signed_or_unsigned_type): Don't check for
2943         INTEGRAL_TYPE_P or TYPE_UNSIGNED.
2944         (lhd_signed_or_unsigned_type): Check for INTEGRAL_TYPE_P and
2945         TYPE_UNSIGNED.
2946
2947 2007-05-23  Sandra Loosemore  <sandra@codesourcery.com>
2948             Nigel Stephens  <nigel@mips.com>
2949             Richard Sandiford  <richard@codesourcery.com>
2950
2951         Fix up MIPS16 hard float and add support for complex.
2952
2953         * config/mips/mips.h (TARGET_HARD_FLOAT_ABI): New.
2954         (TARGET_SOFT_FLOAT_ABI): New.
2955         (TARGET_CPU_CPP_BUILTINS): Define __mips_hard_float and
2956         __mips_soft_float to reflect the ABI in use, not whether the
2957         FPU is directly accessible (e.g., in MIPS16 mode).
2958         (UNITS_PER_HWFPVALUE): Use TARGET_SOFT_FLOAT_ABI.
2959         (UNITS_PER_FPVALUE): Likewise.
2960
2961         * config/mips/mips.c (mips_expand_call): Remove redundant
2962         TARGET_MIPS16 check.
2963         (mips_arg_regno): New.
2964         (function_arg_advance): When setting bits in cum->fp_code for
2965         MIPS16, don't subtract 1 from cum->arg_number, since it is now
2966         zero-based.
2967         (function_arg): Use mips_arg_regno.
2968         (mips_return_mode_in_fpr_p): New.
2969         (mips16_call_stub_mode_suffix): New.
2970         (mips16_cfun_returns_in_fpr_p): New.
2971         (mips_save_reg_p): Use mips16_cfun_returns_in_fpr_p.
2972         (mips_output_function_prologue): Test mips16_hard_float, not
2973         !TARGET_SOFT_FLOAT, to decide when a function stub is required.
2974         (mips_expand_epilogue): Call MIPS16 helper routines to copy
2975         return value into a floating-point register.
2976         (mips_can_use_return_insn): Use mips16_cfun_returns_in_fpr_p.
2977         (mips_function_value): Rewrite to use mips_return_mode_in_fpr_p.
2978         (mips16_fp_args): Handle MIPS32r2 ISA which supports
2979         TARGET_FLOAT64, and use mfhc1/mthc1 to copy the most significant
2980         word of double arguments from or to the high bits of 64-bit
2981         floating point registers.
2982         (build_mips16_function_stub): Fill in DECL_RESULT for stubdecl.
2983         (mips16_fpret_double): New helper function.
2984         (build_mips16_call_stub): Use mips16_return_mode_in_fpr_p.  Add
2985         support for complex modes.  Fill in DECL_RESULT for stubdecl.
2986         (mips_init_libfuncs): Remove redundant TARGET_MIPS16 check.
2987
2988         * config/mips/mips16.S
2989         (RET, ARG1, ARG2): New.
2990         (MERGE_GPRf, MERGE_GPRt): New.
2991         (DELAYt, DELAYf): New.
2992         (MOVE_SF_BYTE0, MOVE_SI_BYTE0): New.
2993         (MOVE_SF_BYTE4, MOVE_SF_BYTE8): New.
2994         (MOVE_DF_BYTE0, MOVE_DF_BYTE8): New.
2995         (MOVE_SF_RET, MOVE_SC_RET, MOVE_DF_RET, MOVE_DC_RET, MOVE_SI_RET): New.
2996         (SFOP): Renamed to...
2997         (OPSF3): This, and macro-ified.  Updated all uses.
2998         (SFOP2): Renamed to...
2999         (OPSF2): This, and macro-ified.  Updated all uses.
3000         (SFCMP): Renamed to...
3001         (CMPSF): This, and macro-ified.  Updated all uses.
3002         (SFREVCMP): Renamed to...
3003         (REVCMPSF): This, and macro-ified.  Updated all uses.
3004         (__mips16_floatsisf, __mips16_fix_truncsfsi): Macro-ified.
3005         (LDDBL1, LDDBL2, RETDBL): Deleted.
3006         (DFOP): Renamed to...
3007         (OPDF3): This, and macro-ified.  Updated all uses.
3008         (DFOP2): Renamed to...
3009         (OPDF2): This, and macro-ified.  Updated all uses.
3010         (__mips16_extendsfdf2, __mips16_truncdfsf2): Macro-ified.
3011         (DFCMP): Renamed to...
3012         (CMPDF): This, and macro-ified.  Updated all uses.
3013         (DFREVCMP): Renamed to...
3014         (REVCMPDF): This, and macro-ified.  Updated all uses.
3015         (__mips16_floatsidf, __mips16_fix_truncdfsi): Macro-ified.
3016         (RET_FUNCTION): New.
3017         (__mips16_ret_sf, __mips16_ret_df): Macro-ified.
3018         (__mips16_ret_sc, __mips16_ret_dc): New.
3019         (STUB_ARGS_0, STUB_ARGS_1, STUB_ARGS_5, STUB_ARGS_9, STUB_ARGS_2,
3020         STUB_ARGS_6, STUB_ARGS_10): New.
3021         (CALL_STUB_NO_RET): New.
3022         (__mips16_call_stub_1): Macro-ified.
3023         (__mips16_call_stub_5): Macro-ified.
3024         (__mips16_call_stub_2): Macro-ified.
3025         (__mips16_call_stub_6): Macro-ified.
3026         (__mips16_call_stub_9): Macro-ified.
3027         (__mips16_call_stub_10): Macro-ified.
3028         (CALL_STUB_RET): New.
3029         (__mips16_call_stub_sf_0): Macro-ified.
3030         (__mips16_call_stub_sf_1): Macro-ified.
3031         (__mips16_call_stub_sf_5): Macro-ified.
3032         (__mips16_call_stub_sf_2): Macro-ified.
3033         (__mips16_call_stub_sf_6): Macro-ified.
3034         (__mips16_call_stub_sf_9): Macro-ified.
3035         (__mips16_call_stub_sf_10): Macro-ified.
3036         (__mips16_call_stub_df_0): Macro-ified.
3037         (__mips16_call_stub_df_1): Macro-ified.
3038         (__mips16_call_stub_df_5): Macro-ified.
3039         (__mips16_call_stub_df_2): Macro-ified.
3040         (__mips16_call_stub_df_6): Macro-ified.
3041         (__mips16_call_stub_df_9): Macro-ified.
3042         (__mips16_call_stub_df_10): Macro-ified.
3043         (__mips16_call_stub_sc_0): New.
3044         (__mips16_call_stub_sc_1): New.
3045         (__mips16_call_stub_sc_5): New.
3046         (__mips16_call_stub_sc_2): New.
3047         (__mips16_call_stub_sc_6): New.
3048         (__mips16_call_stub_sc_9): New.
3049         (__mips16_call_stub_sc_10): New.
3050         (__mips16_call_stub_dc_0): New.
3051         (__mips16_call_stub_dc_1): New.
3052         (__mips16_call_stub_dc_5): New.
3053         (__mips16_call_stub_dc_2): New.
3054         (__mips16_call_stub_dc_6): New.
3055         (__mips16_call_stub_dc_9): New.
3056         (__mips16_call_stub_dc_10): New.
3057
3058         * config/mips/t-elf (LIB1ASMFUNCS): Add MIPS16 floating-point stubs.
3059         * config/mips/t-isa3264 (LIB1ASMFUNCS): Likewise.
3060         * config/mips/t-r2900 (LIB1ASMFUNCS): Likewise.
3061
3062 2007-05-23  Ian Lance Taylor  <iant@google.com>
3063
3064         * doc/invoke.texi (Invoking GCC): Document that the order of the
3065         -l option matters.
3066
3067 2007-05-23  Chen Liqin  <liqin@sunnorth.com.cn>
3068
3069         PR target/30987
3070         * config/score/misc.md (bitclr_c, bitset_c, bittgl_c): Remove.
3071         * config/score/predicate.md (const_pow2, const_npow2): Remove.
3072         * config/score/score.h (ASM_OUTPUT_EXTERNAL): Add ASM_OUTPUT_EXTERNAL
3073         undef.
3074
3075         PR target/30474
3076         * config/score/score.c (score_print_operand): Make sure that only
3077         lower bits are used.
3078
3079 2007-05-22  Ian Lance Taylor  <iant@google.com>
3080
3081         * tree-vrp.c (avoid_overflow_infinity): New static function,
3082         broken out of set_value_range_to_value.
3083         (set_value_range_to_value): Call avoid_overflow_infinity.
3084         (extract_range_from_assert): Likewise.
3085
3086 2007-05-22  Andrew Pinski  <andrew_pinski@playstation.sony.com>
3087
3088         PR middle-end/31095
3089          * builtins.c (expand_builtin_memmove_args): Strip nops that don't
3090         change the type before looking for a COMPOUND_EXPR.
3091
3092 2007-05-22  Ian Lance Taylor  <iant@google.com>
3093
3094         * lower-subreg.c (decompose_multiword_subregs): If we change an
3095         insn, call remove_retval_note on it.
3096
3097 2007-05-22  Richard Sandiford  <rsandifo@nildram.co.uk>
3098
3099         * regs.h (end_hard_regno): New function.
3100         (END_HARD_REGNO, END_REGNO): New macros.
3101         (add_to_hard_reg_set): New function.
3102         (remove_from_hard_reg_set): Likewise.
3103         (in_hard_reg_set_p): Likewise.
3104         (overlaps_hard_reg_set_p): Likewise.
3105         * bt-load.c (find_btr_reference): Use overlaps_hard_reg_set_p.
3106         (note_btr_set): Use END_HARD_REGNO.
3107         * caller-save.c (setup_save_areas): Use end_hard_regno.
3108         (mark_set_regs): Use END_HARD_REGNO.
3109         (add_stored_regs): Use end_hard_regno.
3110         (mark_referenced_regs): Use add_to_hard_reg_set.
3111         * combine.c (update_table_tick): Use END_REGNO.
3112         (record_value_for_reg): Likewise.
3113         (record_dead_and_set_regs): Likewise.
3114         (get_last_value_validate): Likewise.
3115         (use_crosses_set_p): Likewise.
3116         (reg_dead_at_p_1): Likewise.
3117         (reg_dead_at_p): Likewise.
3118         (mark_used_regs_combine): Use add_to_hard_reg_set.
3119         (move_deaths): Use END_HARD_REGNO.
3120         (reg_bitfield_target_p): Use end_hard_regno.
3121         (distribute_notes): Use END_HARD_REGNO.
3122         * cse.c (mention_regs): Use END_REGNO.
3123         (insert): Use add_to_hard_reg_set.
3124         (invalidate): Use END_HARD_REGNO.
3125         (invalidate_for_call): Likewise.
3126         (exp_equiv_p): Use END_REGNO.
3127         (cse_insn): Likewise.
3128         * cselib.c (cselib_invalidate_regno): Use end_hard_regno.
3129         * df-problems.c (df_urec_mark_reg_change): Use END_HARD_REGNO.
3130         * df-scan.c (df_ref_record): Use END_HARD_REGNO.
3131         * function.c (keep_stack_depressed): Use end_hard_regno.
3132         * global.c (global_alloc): Use end_hard_regno.
3133         (global_conflicts): Use add_to_hard_reg_set instead of
3134         mark_reg_live_nc.
3135         (find_reg): Likewise.
3136         (mark_reg_store): Likewise.
3137         (mark_reg_conflicts): Likewise.
3138         (mark_reg_death): Use remove_from_hard_reg_set.
3139         (mark_reg_live_nc): Delete.
3140         (set_preference): Use end_hard_regno.
3141         * local-alloc.c (mark_life): Use add_to_hard_reg_set and
3142         remove_from_hard_reg_set.
3143         (post_mark_life): Use add_to_hard_reg_set.
3144         * mode-switching.c (reg_dies): Use remove_from_hard_reg_set.
3145         (reg_becomes_live): Use add_to_hard_reg_set.
3146         * recog.c (reg_fits_class_p): Use in_hard_reg_set_p.
3147         (peep2_find_free_register): Use add_to_hard_reg_set.
3148         * reg-stack.c (convert_regs_exit): Use END_HARD_REGNO.
3149         * regclass.c (record_reg_classes): Use in_hard_reg_set_p.
3150         * regrename.c (note_sets): Use add_to_hard_reg_set.
3151         (clear_dead_regs): Use remove_from_hard_reg_set.
3152         (regrename_optimize): Use add_to_hard_reg_set.
3153         (find_oldest_value_reg): Use in_hard_reg_set_p.
3154         * reload.c (push_reload): Use in_hard_reg_set_p and end_hard_regno.
3155         (hard_reg_set_here_p): Use end_hard_regno.
3156         (decompose): Likewise.
3157         (reg_overlap_mentioned_for_reload_p): Use END_HARD_REGNO.
3158         (find_equiv_reg): Use in_hard_reg_set_p and end_hard_regno.
3159         * reload1.c (compute_use_by_pseudos): Use add_to_hard_reg_set.
3160         (mark_home_live): Use end_hard_regno.
3161         (spill_hard_reg): Likewise.
3162         (clear_reload_reg_in_use): Likewise.
3163         * reorg.c (delete_prior_computation): Use END_REGNO.
3164         * resource.c (update_live_status): Use END_HARD_REGNO.
3165         (mark_referenced_resources): Use add_to_hard_reg_set.
3166         (mark_set_resources): Likewise.
3167         (mark_target_live_regs): Likewise.  Use remove_from_hard_reg_set.
3168         * rtlanal.c (refers_to_regno_p): Use END_REGNO.
3169         (reg_overlap_mentioned_p): Likewise.
3170         (dead_or_set_p): Likewise.  Use an exclusive upper loop bound.
3171         (covers_regno_no_parallel_p): Use END_REGNO.
3172         (find_regno_note): Likewise.
3173         (find_reg_fusage): Use END_HARD_REGNO.
3174         * stmt.c (decl_overlaps_hard_reg_set_p): Use overlaps_hard_reg_set_p.
3175         * var-tracking.c (emit_note_insn_var_location): Use end_hard_regno.
3176
3177 2007-05-22  Richard Sandiford  <rsandifo@nildram.co.uk>
3178
3179         * mode-switching.c (reg_dies): Change type of second argument to
3180         "HARD_REG_SET *".
3181         (optimize_mode_switching): Update accordingly.
3182
3183 2007-05-22  Richard Sandiford  <richard@codesourcery.com>
3184
3185         * hard-reg-set.h (GO_IF_HARD_REG_SUBSET, GO_IF_HARD_REG_EQUAL): Delete
3186         in favor of...
3187         (hard_reg_subset_p, hard_reg_sets_equal_p, hard_reg_sets_intersect_p)
3188         (hard_reg_set_empty_p): ...these new functions.
3189         * bt-load.c (choose_btr): Use hard_reg_subset_p instead of
3190         GO_IF_HARD_REG_SUBSET.
3191         * cfgcleanup.c (old_insns_match_p): Use hard_reg_sets_equal_p
3192         instead of GO_IF_HARD_REG_EQUAL.
3193         * df-problems.c (df_urec_local_compute): Use hard_reg_set_empty_p
3194         instead of GO_IF_HARD_REG_EQUAL.
3195         * global.c (find_reg): Use hard_reg_set_empty_p instead of
3196         GO_IF_HARD_REG_SUBSET.
3197         (modify_reg_pav): Use hard_reg_set_empty_p instead of
3198         GO_IF_HARD_REG_EQUAL.
3199         * local-alloc.c (find_free_reg): Use hard_reg_subset_p instead
3200         of GO_IF_HARD_REG_SUBSET.
3201         * reg-stack.c (change_stack, convert_regs_1): Use hard_reg_sets_equal_p
3202         instead of GO_IF_HARD_REG_EQUAL.
3203         * regclass.c (init_reg_sets_1, reg_scan_mark_refs): Use
3204         hard_reg_subset_p instead of GO_IF_HARD_REG_SUBSET.
3205         (reg_classes_intersect_p): Use hard_reg_sets_intersect_p instead
3206         of GO_IF_HARD_REG_SUBSET,
3207         * reload1.c (finish_spills): Use hard_reg_subset_p instead of
3208         GO_IF_HARD_REG_SUBSET.
3209         * struct-equiv.c (death_notes_match_p): Use hard_reg_sets_equal_p
3210         instead of GO_IF_HARD_REG_EQUAL.
3211         * config/sh/sh.c (push_regs, calc_live_regs): Use
3212         hard_reg_sets_intersect_p instead of hard_regs_intersect_p.
3213         (hard_regs_intersect_p): Delete.
3214
3215 2007-05-22  Janis Johnson  <janis187@us.ibm.com>
3216
3217         * doc/sourcebuild.texi (Test Directives) Add dg-message.
3218
3219 2007-05-22  H.J. Lu  <hongjiu.lu@intel.com>
3220             Richard Henderson  <rth@redhat.com>
3221
3222         * config.gcc (i[34567]86-*-*): Add smmintrin.h to
3223         extra_headers.
3224         (x86_64-*-*): Likewise.
3225
3226         * i386/i386-modes.def (V2QI): New.
3227
3228         * config/i386/i386.c (ix86_handle_option): Handle SSE4.1 and
3229         SSE4A.
3230         (override_options): Support SSE4.1.
3231         (IX86_BUILTIN_BLENDPD): New for SSE4.1.
3232         (IX86_BUILTIN_BLENDPS): Likewise.
3233         (IX86_BUILTIN_BLENDVPD): Likewise.
3234         (IX86_BUILTIN_BLENDVPS): Likewise.
3235         (IX86_BUILTIN_PBLENDVB128): Likewise.
3236         (IX86_BUILTIN_PBLENDW128): Likewise.
3237         (IX86_BUILTIN_DPPD): Likewise.
3238         (IX86_BUILTIN_DPPS): Likewise.
3239         (IX86_BUILTIN_INSERTPS128): Likewise.
3240         (IX86_BUILTIN_MOVNTDQA): Likewise.
3241         (IX86_BUILTIN_MPSADBW128): Likewise.
3242         (IX86_BUILTIN_PACKUSDW128): Likewise.
3243         (IX86_BUILTIN_PCMPEQQ): Likewise.
3244         (IX86_BUILTIN_PHMINPOSUW128): Likewise.
3245         (IX86_BUILTIN_PMAXSB128): Likewise.
3246         (IX86_BUILTIN_PMAXSD128): Likewise.
3247         (IX86_BUILTIN_PMAXUD128): Likewise.
3248         (IX86_BUILTIN_PMAXUW128): Likewise.
3249         (IX86_BUILTIN_PMINSB128): Likewise.
3250         (IX86_BUILTIN_PMINSD128): Likewise.
3251         (IX86_BUILTIN_PMINUD128): Likewise.
3252         (IX86_BUILTIN_PMINUW128): Likewise.
3253         (IX86_BUILTIN_PMOVSXBW128): Likewise.
3254         (IX86_BUILTIN_PMOVSXBD128): Likewise.
3255         (IX86_BUILTIN_PMOVSXBQ128): Likewise.
3256         (IX86_BUILTIN_PMOVSXWD128): Likewise.
3257         (IX86_BUILTIN_PMOVSXWQ128): Likewise.
3258         (IX86_BUILTIN_PMOVSXDQ128): Likewise.
3259         (IX86_BUILTIN_PMOVZXBW128): Likewise.
3260         (IX86_BUILTIN_PMOVZXBD128): Likewise.
3261         (IX86_BUILTIN_PMOVZXBQ128): Likewise.
3262         (IX86_BUILTIN_PMOVZXWD128): Likewise.
3263         (IX86_BUILTIN_PMOVZXWQ128): Likewise.
3264         (IX86_BUILTIN_PMOVZXDQ128): Likewise.
3265         (IX86_BUILTIN_PMULDQ128): Likewise.
3266         (IX86_BUILTIN_PMULLD128): Likewise.
3267         (IX86_BUILTIN_ROUNDPD): Likewise.
3268         (IX86_BUILTIN_ROUNDPS): Likewise.
3269         (IX86_BUILTIN_ROUNDSD): Likewise.
3270         (IX86_BUILTIN_ROUNDSS): Likewise.
3271         (IX86_BUILTIN_PTESTZ): Likewise.
3272         (IX86_BUILTIN_PTESTC): Likewise.
3273         (IX86_BUILTIN_PTESTNZC): Likewise.
3274         (IX86_BUILTIN_VEC_EXT_V16QI): Likewise.
3275         (IX86_BUILTIN_VEC_SET_V2DI): Likewise.
3276         (IX86_BUILTIN_VEC_SET_V4SF): Likewise.
3277         (IX86_BUILTIN_VEC_SET_V4SI): Likewise.
3278         (IX86_BUILTIN_VEC_SET_V16QI): Likewise.
3279         (bdesc_ptest): New.
3280         (bdesc_sse_3arg): Likewise.
3281         (bdesc_2arg): Likewise.
3282         (bdesc_1arg): Likewise.
3283         (ix86_init_mmx_sse_builtins): Support SSE4.1.  Handle SSE builtins
3284         with 3 args.
3285         (ix86_expand_sse_4_operands_builtin): New.
3286         (ix86_expand_unop_builtin): Support 2 arg builtins with a constant
3287         smaller than 8 bits as the 2nd arg.
3288         (ix86_expand_sse_ptest): New.
3289         (ix86_expand_builtin): Support SSE4.1. Support 3 arg SSE builtins.
3290         (ix86_expand_vector_set): Support SSE4.1.
3291         (ix86_expand_vector_extract): Likewise.
3292
3293         * config/i386/i386.h (TARGET_CPU_CPP_BUILTINS): Define
3294         __SSE4_1__ for -msse4.1.
3295
3296         * config/i386/i386.md (UNSPEC_BLENDV): New for SSE4.1.
3297         (UNSPEC_INSERTPS): Likewise.
3298         (UNSPEC_DP): Likewise.
3299         (UNSPEC_MOVNTDQA): Likewise.
3300         (UNSPEC_MPSADBW): Likewise.
3301         (UNSPEC_PHMINPOSUW): Likewise.
3302         (UNSPEC_PTEST): Likewise.
3303         (UNSPEC_ROUNDP): Likewise.
3304         (UNSPEC_ROUNDS): Likewise.
3305
3306         * config/i386/i386.opt (msse4.1): New for SSE4.1.
3307
3308         * config/i386/predicates.md (const_pow2_1_to_2_operand): New.
3309         (const_pow2_1_to_32768_operand): Likewise.
3310
3311         * config/i386/smmintrin.h: New. The SSE4.1 intrinsic header
3312         file.
3313
3314         * config/i386/sse.md (*vec_setv4sf_sse4_1): New pattern for
3315         SSE4.1.
3316         (sse4_1_insertps): Likewise.
3317         (*sse4_1_extractps): Likewise.
3318         (sse4_1_ptest): Likewise.
3319         (sse4_1_mulv2siv2di3): Likewise.
3320         (*sse4_1_mulv4si3): Likewise.
3321         (*sse4_1_smax<mode>3): Likewise.
3322         (*sse4_1_umax<mode>3): Likewise.
3323         (*sse4_1_smin<mode>3): Likewise.
3324         (*sse4_1_umin<mode>3): Likewise.
3325         (sse4_1_eqv2di3): Likewise.
3326         (*sse4_1_pinsrb): Likewise.
3327         (*sse4_1_pinsrd): Likewise.
3328         (*sse4_1_pinsrq): Likewise.
3329         (*sse4_1_pextrb): Likewise.
3330         (*sse4_1_pextrb_memory): Likewise.
3331         (*sse4_1_pextrw_memory): Likewise.
3332         (*sse4_1_pextrq): Likewise.
3333         (sse4_1_blendpd): Likewise.
3334         (sse4_1_blendps): Likewise.
3335         (sse4_1_blendvpd): Likewise.
3336         (sse4_1_blendvps): Likewise.
3337         (sse4_1_dppd): Likewise.
3338         (sse4_1_dpps): Likewise.
3339         (sse4_1_movntdqa): Likewise.
3340         (sse4_1_mpsadbw): Likewise.
3341         (sse4_1_packusdw): Likewise.
3342         (sse4_1_pblendvb): Likewise.
3343         (sse4_1_pblendw): Likewise.
3344         (sse4_1_phminposuw): Likewise.
3345         (sse4_1_extendv8qiv8hi2): Likewise.
3346         (*sse4_1_extendv8qiv8hi2): Likewise.
3347         (sse4_1_extendv4qiv4si2): Likewise.
3348         (*sse4_1_extendv4qiv4si2): Likewise.
3349         (sse4_1_extendv2qiv2di2): Likewise.
3350         (*sse4_1_extendv2qiv2di2): Likewise.
3351         (sse4_1_extendv4hiv4si2): Likewise.
3352         (*sse4_1_extendv4hiv4si2): Likewise.
3353         (sse4_1_extendv2hiv2di2): Likewise.
3354         (*sse4_1_extendv2hiv2di2): Likewise.
3355         (sse4_1_extendv2siv2di2): Likewise.
3356         (*sse4_1_extendv2siv2di2): Likewise.
3357         (sse4_1_zero_extendv8qiv8hi2): Likewise.
3358         (*sse4_1_zero_extendv8qiv8hi2): Likewise.
3359         (sse4_1_zero_extendv4qiv4si2): Likewise.
3360         (*sse4_1_zero_extendv4qiv4si2): Likewise.
3361         (sse4_1_zero_extendv2qiv2di2): Likewise.
3362         (*sse4_1_zero_extendv2qiv2di2): Likewise.
3363         (sse4_1_zero_extendv4hiv4si2): Likewise.
3364         (*sse4_1_zero_extendv4hiv4si2): Likewise.
3365         (sse4_1_zero_extendv2hiv2di2): Likewise.
3366         (*sse4_1_zero_extendv2hiv2di2): Likewise.
3367         (sse4_1_zero_extendv2siv2di2): Likewise.
3368         (*sse4_1_zero_extendv2siv2di2): Likewise.
3369         (sse4_1_roundpd): Likewise.
3370         (sse4_1_roundps): Likewise.
3371         (sse4_1_roundsd): Likewise.
3372         (sse4_1_roundss): Likewise.
3373         (mulv4si3): Don't expand for SSE4.1.
3374         (smax<mode>3): Likewise.
3375         (umaxv4si3): Likewise.
3376         (uminv16qi3): Likewise.
3377         (umin<mode>3): Likewise.
3378         (umaxv8hi3): Rewrite.  Only enabled for SSE4.1.
3379
3380         * doc/extend.texi: Document SSE4.1 built-in functions.
3381
3382         * doc/invoke.texi: Document -msse4.1.
3383
3384 2007-05-22  Nathan Sidwell  <nathan@codesourcery.com>
3385
3386         * config/m68k/linux.h (ASM_SPEC): Add asm_pcrel_spec.
3387         * config/m68k/m68k-none.h (ASM_SPEC): Don't override here.
3388         * config/m68k/m68k.h (ASM_PCREL_SPEC): New.
3389         (ASM_SPEC): Add asm_pcrel_spec.
3390         (EXTRA_SPECS): Add asm_pcrel_spec.
3391
3392 2007-05-21  David Daney  <ddaney@avtrex.com>
3393
3394         * doc/install.texi (Building a cross compiler): Add requirements
3395         for Java cross compiler.
3396
3397 2007-05-21  Andrew Pinski  <andrew_pinski@playstation.sony.com>
3398
3399         PR middle-end/31995
3400         * tree-chrec.c (evolution_function_is_affine_multivariate_p):
3401         Add loopno argument.  Use evolution_function_is_invariant_rec_p
3402         instead of evolution_function_is_constant_p.
3403         Update calls to evolution_function_is_affine_multivariate_p.
3404         * tree-chrec.h (evolution_function_is_affine_multivariate_p):
3405         Add loopno argument.
3406         * tree-scalar-evolution.c (gather_chrec_stats): Call
3407         evolution_function_is_affine_multivariate_p with a loop
3408         number of 0.
3409         * tree-data-ref.c (analyze_miv_subscript): Likewise.
3410         (analyze_overlapping_iterations): Likewise.
3411         (access_functions_are_affine_or_constant_p): Likewise.
3412         (build_classic_dist_vector_1): If the access functions
3413         are equal, don't do anything.
3414
3415 2007-05-21  Paolo Bonzini  <bonzini@gnu.org>
3416             Paolo Carlini  <pcarlini@suse.de>
3417             Uros Bizjak  <ubizjak@gmail.com>
3418
3419         * c-cppbuiltin.c (c_cpp_builtins): Define
3420         __GCC_HAVE_SYNC_COMPARE_AND_SWAP_1, __GCC_HAVE_SYNC_COMPARE_AND_SWAP_2,
3421         __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4, __GCC_HAVE_SYNC_COMPARE_AND_SWAP_8,
3422         __GCC_HAVE_SYNC_COMPARE_AND_SWAP_16, if appropriate.
3423         * doc/cpp.texi ([Standard Predefined Macros]): Document.
3424
3425 2007-05-21  Mike Stump  <mrs@apple.com>
3426
3427         * config/darwin.h (LINK_COMMAND_SPEC): Add .cxx/.cp for dsymutil
3428         handling as well.
3429         * config/darwin9.h (LINK_COMMAND_SPEC): Likewise.
3430
3431 2007-05-21  Uros Bizjak  <ubizjak@gmail.com>
3432
3433         * config/i386/tmmintrin.h (_mm_alignr_epi8): Provide macro
3434         implementation if __OPTIMIZE__ is not defined.
3435         (_mm_alignr_pi8): Ditto.
3436         * config/i386/ammintrin.h (_mm_extracti_si64): Ditto.
3437         (_mm_inserti_si64): Ditto.
3438         * config/i386/emmintrin.h (_mm_shuffle_pd): Ditto.
3439         (_mm_slli_epi16): Ditto.
3440         (_mm_slli_epi32): Ditto.
3441         (_mm_slli_epi64): Ditto.
3442         (_mm_srai_epi16): Ditto.
3443         (_mm_srai_epi32): Ditto.
3444         (_mm_srli_si128): Ditto.
3445         (_mm_slli_si128): Ditto.
3446         (_mm_srli_epi16): Ditto.
3447         (_mm_srli_epi32): Ditto.
3448         (_mm_srli_epi64): Ditto.
3449         (_mm_extract_epi16): Ditto.
3450         (_mm_insert_epi16): Ditto.
3451         (_mm_shufflehi_epi16): Ditto.
3452         (_mm_shufflelo_epi16): Ditto.
3453         (_mm_shuffle_epi32): Ditto.
3454         * config/i386/xmmintrin.h (_mm_extract_pi16): Ditto.
3455         (_m_pextrw): Ditto.
3456         (_mm_insert_pi16): Ditto.
3457         (_m_pinsrw): Ditto.
3458         (_mm_shuffle_pi16): Ditto.
3459         (_m_pshufw): Ditto.
3460         (_mm_shufle_ps): Ditto.
3461         (_mm_prefetch): Ditto.
3462
3463 2007-05-21  Andreas Krebbel  <krebbel1@de.ibm.com>
3464
3465         * defaults.h (IBM_FLOAT_FORMAT): Macro definition removed.
3466         * doc/tm.texi (IBM_FLOAT_FORMAT): Documentation entry removed.
3467         * real.c (encode_i370_single, decode_i370_single,
3468         encode_i370_double, decode_i370_double): Functions removed.
3469         (i370_single_format, i370_double_format): Initializations removed.
3470         (real_maxval, round_for_format, exact_real_truncate, significand_size):
3471         Consider the log2_b field to always be one.
3472         (ieee_single_format, mips_single_format, coldfire_single_format,
3473         ieee_double_format, mips_double_format, coldfire_double_format,
3474         ieee_extended_motorola_format, ieee_extended_intel_96_format,
3475         ieee_extended_intel_128_format, ieee_extended_intel_96_round_53_format,
3476         ibm_extended_format, mips_extended_format, ieee_quad_format,
3477         mips_quad_format, vax_f_format, vax_d_format, vax_g_format,
3478         decimal_single_format, decimal_double_format, decimal_quad_format,
3479         c4x_single_format, c4x_extended_format, real_internal_format): Remove
3480         initialization of log2_b.
3481         * real.h (i370_single_format, i370_double_format): Declarations removed.
3482         * c-cppbuiltin.c (builtin_define_float_constants): Consider the log2_b
3483         field to always be one.
3484
3485 2007-05-21  Andreas Schwab  <schwab@suse.de>
3486
3487         * config/ia64/ia64.c (emit_predicate_relation_info): Fix use of
3488         NOTE_INSN_BASIC_BLOCK_P.
3489         (process_for_unwind_directive): Likewise.
3490
3491 2007-05-21  Nathan Sidwell  <nathan@codesourcery.com>
3492
3493         * builtins.c (expand_builtin_setjmp_setup): Update comment.
3494         * function.h (struct function): Move va_list_gpr_size,
3495         va_list_fpr_size, function_frequency to front of bitfields.  Add
3496         calls_unwind_init.
3497         (current_function_calls_unwind_init): New.
3498         * except.c (expand_builtin_unwind_init): Set
3499         current_function_calls_unwind_init not
3500         current_function_has_nonlocal_label.
3501         * reload1.c (has_nonexceptional_receiver): New.
3502         (reload): Use it and current_function_calls_unwind_init to
3503         determine whether call-saved regs must be saved.
3504
3505 2007-05-20  Jan Hubicka  <jh@suse.cz>
3506
3507         * gengtype.c (adjust_field_rtx_def): Use NOTE_KIND instead of
3508         NOTE_LINE_NUMBER; use NOTE_INSN_BASIC_BLOCK_P when possible.
3509         * ddg.c (create_ddg): LIkewise.
3510         * final.c (final): Remove hunk moving line numbernotes around since
3511         they are no longer present at this stage.
3512         (final_scan_insn): Use NOTE_KIND instead of
3513         NOTE_LINE_NUMBER; use NOTE_INSN_BASIC_BLOCK_P when possible.
3514         (output_asm_label): Likewise.
3515         * reorg.c (dbr_schedule): Likewise.
3516         * haifa-sched.c (unlink_other_notes): Likewise.
3517         * mode-switching.c (optimize_mode_switching): Likewise.
3518         * graph.c (start_bb): Likewise.
3519         * rtl.def (NOTE): Update description.
3520         * jump.c (squeeze_notes): Delete.
3521         (mark_jump_label): Use NOTE_KIND instead of NOTE_LINE_NUMBER; use
3522         NOTE_INSN_BASIC_BLOCK_P when possible.
3523         * ifcvt.c (dead_or_predicable): Remove call of squeeze_notes.
3524         * dwarf2out.c (gen_label_die): Use NOTE_KIND instead of
3525         NOTE_LINE_NUMBER; use NOTE_INSN_BASIC_BLOCK_P when possible.
3526         (dwarf2out_var_location): Likewise.
3527         * cfgbuild.c (make_edges): Likewise.
3528         (find_basic_blocks_1): Likewise.
3529         * function.c (reorder_blocks_1): Likewise.
3530         (epilogue_done): Likewise.
3531         (reposition_prologue_and_epilogue_notes): Likewise.
3532         * print-rtl.c (print_rtx): Likewise; drop code for printing line number
3533         notes.
3534         (print_rtl): Likewise.
3535         (print_rtl_single): Likewise.
3536         * gcse.c (insert_insn_start_bb): Likewise.
3537         * alias.c (init_alias_analysis): Likewise.
3538         * calls.c (fixup_tail_calls): Likewise.
3539         * except.c (sjlj_emit_function_enter): Likewise.
3540         * emit-rtl.c (add_insn_after): Likeiwse.
3541         (emit_label_before): Likewise.
3542         (emit_label_after): Likewise.
3543         (emit_note_before, emit_note_after, emit_note): Update
3544         parameter to be enum insn_note; do not deal with source
3545         files.
3546         * cfgcleanup.c (merge_blocks_move_predecessor_nojumps):
3547         Use NOTE_KIND instead of NOTE_LINE_NUMBER; use NOTE_INSN_BASIC_BLOCK_P
3548         when possible.
3549         (merge_blocks_move_successor_nojumps): Simplify now when
3550         we don't have BLOCK notes.
3551         (try_optimize_cfg): Likewise.
3552         * cfglayout.c (skip_insns_after_block): Likewise.
3553         (record_effective_endpoints): Likewise.
3554         (duplicate_insn_chain): Likewise.
3555         * varasm.c (output_constant_pool_1): Likewise.
3556         * sched-deps.c (sched_analyze): Likewise.
3557         * rtl.c (NOTE_INSN_MAX_isnt_negative_adjust_NOTE_INSN_BIAS):
3558         Exterminate.
3559         (note_insn_name): Simplify now when NOTE_INSN_BIAS is gone.
3560         * rtl.h (NOTE_SOURCE_LOCATION, NOTE_EXPANDED_LOCATION): Exterminate.
3561         (SET_INSN_DELETED): Simplify.
3562         (NOTE_LINE_NUMBER): Exterminate.
3563         (NOTE_LINE_KIND): New.
3564         (NOTE_INSN_BASIC_BLOCK_P): Update.
3565         (enum insn_note): Simplify.
3566         (GET_NOTE_INSN_NAME) Simplify.
3567         (emit_note_before, emit_note_after, emit_note): Update prototype.
3568         (squeeze_notes): Remove.
3569         * sched-int.h (NOTE_NOT_BB_P): Update.
3570         * resource.c (mark_target_live_regs): Update.
3571         * sched-rgn.c (debug_dependencies): Update.
3572         * sched-vis.c (print_insn): Update.
3573         * config/alpha/alpha.c (alpha_handle_trap_shadows): Update.
3574         * config/i386/i386.c (ix86_output_function_epilogue): Update.
3575         * config/sh/sh.c (sh_adjust_unroll_max): Function dead since gcc 4.0.0.
3576         (TARGET_ADJUST_UNROLL_MAX): Likewise.
3577         (split_branches): Update.
3578         (sh_optimize_target_register_callee_saved): Remove hunk dead since gcc
3579         4.0.0.
3580         (sh_adjust_unroll_max): Exterminate.
3581         * config/c4x/c4x.c (c4x_reorg): Use SET_INSN_DELETED.
3582         * config/m68hc11/m68hc11.c (m68hc11_check_z_replacement): Likewise.
3583         (m68hc11_reorg): Likewise.
3584         * config/ia64/ia64.c (emit_insn_group_barriers): Update.
3585         (emit_predicate_relation_info): Update.
3586         (process_for_unwind_directive): Update.
3587         * config/rs6000/rs6000.c (rs6000_output_function_epilogue): Update.
3588         (output_call): Update.
3589         * config/pa/pa.c (output_lbranch): Update.
3590         (output_millicode_call): Update.
3591         (output_call): Update.
3592         (pa_combine_instructions): Update.
3593         * config/mips/mips.c (mips16_gp_pseudo_reg): Update.
3594         * config/bfin/bfin.c (gen_one_bundle): Update.
3595         * cfgrtl.c (can_delete_note_p): Update.
3596         (delete_insn): Update.
3597         (rtl_merge_blocks): Update.
3598         (commit_one_edge_insertion): Update.
3599         (rtl_verify_flow_info): Update.
3600         * stmt.c (expand_case): Do not call squeeze_notes.
3601
3602 2007-05-20  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
3603
3604         PR middle-end/7651
3605         PR c++/11856
3606         PR c/12963
3607         PR c/23587
3608         PR other/29694
3609         * c.opt (Wtype-limits): New.
3610         * doc/invoke.texi (Wtype-limits): Document it.
3611         (Wextra): Enabled by -Wextra.
3612         * c-opts.c (c_common_post_options): Enabled by -Wextra.
3613         * c-common.c (shorten_compare): Warn with Wtype-limits.
3614
3615 2007-05-20  Uros Bizjak  <ubizjak@gmail.com>
3616
3617         * config/i386/tmmintrin.h (_mm_alignr_epi32): Implement as always
3618         inlined function, not as a macro.
3619         (_mm_alignr_pi8): Ditto.
3620         * config/i386/ammintrin.h (_mm_extracti_si64): Ditto.
3621         (_mm_inserti_si64): Ditto.
3622         * config/i386/emmintrin.h (_mm_shuffle_pd): Ditto.
3623         (_mm_extract_epi16): Ditto.
3624         (_mm_insert_epi16): Ditto.
3625         (_mm_shufflehi_epi16): Ditto.
3626         (_mm_shufflelo_epi16): Ditto.
3627         (_mm_shuffle_epi32): Ditto.
3628         * config/i386/xmmintrin.h (_mm_set_ss): Use 0.0f for float constant.
3629         * config/386/mm3dnow.h: Add __attribute__((__always_inline__)) to
3630         all functions.
3631         (_m_from_float): Add __extension__ to conversion.  Use 0.0f for
3632         float constant.
3633         (_m_to_float): Use C89 compatible assignment.
3634
3635 2007-04-20  Martin Michlmayr  <tbm@cyrius.com>
3636
3637         PR target/32007
3638         * config/arm/lib1funcs.asm: Define __ARM_ARCH__ on v2/v3 machines.
3639
3640 2007-05-20  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
3641
3642         PR middle-end/7651
3643         * doc/invoke.texi (Wreturn-type): Complete description.
3644         (Wextra): Delete item about return-type warning.
3645         * c-decl.c: Delete redundant Wextra warning.
3646
3647 2007-05-20  Uros Bizjak  <ubizjak@gmail.com>
3648
3649         PR target/31585
3650         * config/i386/pmmintrin.h: Do not include xmmintrin.h
3651         * config/i386/xmmintrin.h (_mm_extract_pi16): Implement as always
3652         inlined function, not as a macro.
3653         (_mm_prefetch): Ditto.
3654         (_m_pextrw): Ditto.
3655         (_mm_insert_pi16): Ditto.
3656         (_m_pinsrw): Ditto.
3657         (_mm_shuffle_pi16): Ditto.  Add const to __N argument.
3658         (_m_pshufw): Ditto. Add const to __N argument.
3659         (_mm_shufle_ps): Ditto.  Add const to __mask argument.
3660         * config/i386/emmintrin.h (_mm_slli_epi16): Add const to __B argument.
3661         (_mm_slli_epi32): Ditto.
3662         (_mm_srli_si128): Implement as always inlined function, not as a macro.
3663         Add __inline to function declaration.
3664         (_mm_slli_si128): Ditto.
3665
3666 2007-05-19  Uros Bizjak  <ubizjak@gmail.com>
3667
3668         * config/i386/sfp-machine.h (FP_EX_INVALID, FP_EX_DENORM,
3669         FP_EXP_DIVZERO, FP_EX_OVERFLOW, FP_EX_UNDERFLOW, FP_EX_INEXACT):
3670         New constants.
3671         (struct fenv): New structure.
3672         (FP_HANDLE_EXCEPTIONS): New define.
3673         (FP_RND_NEAREST, FP_RND_ZERO, FP_RND_PINF, FP_RND_MINF): New constants.
3674         (_FP_DECL_EXP): New define.
3675         (FP_INIT_ROUNDMODE): New define.
3676         (FP_ROUNDMODE): New define.
3677
3678 2007-05-19  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
3679
3680         * doc/invoke.texi (Warning Options): Add -Wconversion-sign.
3681         (Wconversion): Update description.
3682         (Wconversion-sign): New.
3683         * c.opt (Wconversion-sign): New.
3684         * c-opts.c (c_common_post_options): Uninitialized Wconversion-sign
3685         means disabled for C++. Otherwise, take the status of Wconversion.
3686         * c-common.c (conversion_warning): Warn with either Wconversion or
3687         Wconversion-sign.
3688         (warnings_for_convert_and_check): Conditions are already checked by
3689         conversion_warning.
3690         (convert_and_check): Don't check warnings if the conversion failed.
3691
3692 2007-05-19 Andy Hutchinson <HutchinsonAndy@netscape.net>
3693            Anatoly Sokolov <aesok@dol.ru>
3694
3695         * config/avr/avr-protos.h (expand_prologue, expand_epilogue,
3696         avr_epilogue_uses) : Add declaration.
3697         * config/avr/predicates.md (avr_sp_immediate_operand): New predicate.
3698         * config/avr/constraints.md (R): New constraint.
3699         config/avr/avr.md (SREG_ADDR, UNSPEC_SEI, UNSPEC_CLI,
3700         UNSPECV_PROLOGUE_SAVES, UNSPECV_EPILOGUE_RESTORES): New constants.
3701         (*pop1, *pop2, *pop3, *pop4, *pop5): Combine into ...
3702         (*addhi3_sp_R_pc2, *addhi3_sp_R_pc3): ... these patterns.
3703         (*movhi_sp, popqi, pophi, enable_interrupt, disable_interrupt,
3704         call_prologue_saves, epilogue_restores, return_from_epilogue,
3705         return_from_main_epilogue, return_from_interrupt_epilogue,
3706         return_from_naked_epilogue, prologue, epilogue): New patterns.
3707         (jump): Handle symbol reference.
3708         * config/avr/avr.c (out_adj_frame_ptr, out_set_stack_ptr,
3709         avr_output_function_prologue, avr_output_function_epilogue): Remove
3710         functions.
3711         (avr_init_machine_status, expand_prologue, expand_epilogue,
3712         avr_asm_function_end_prologue, avr_epilogue_uses,
3713         avr_asm_function_begin_epilogue): New functions.
3714         (prologue_size, epilogue_size, jump_tables_size): Remove global
3715         variables.
3716         (TARGET_ASM_FUNCTION_PROLOGUE, TARGET_ASM_FUNCTION_EPILOGUE): Remove.
3717         (TARGET_ASM_FUNCTION_END_PROLOGUE): Define.
3718         (TARGET_ASM_FUNCTION_BEGIN_EPILOGUE): Define.
3719         (avr_override_options): Initialise init_machine_status.
3720         (output_movhi): Handle all stack pointer loads.
3721         (out_movqi_r_mr, out_movqi_mr_r): Handle SREG_ADDR address.
3722         (avr_output_addr_vec_elt): Do not use variable jump_tables_size.
3723         * config/avr/avr.h (AVR_2_BYTE_PC, AVR_3_BYTE_PC): New.
3724         (EPILOGUE_USES) Redefine.
3725         (machine_function) Declare.
3726
3727 2007-05-19  Richard Sandiford  <richard@codesourcery.com>
3728
3729         * config/mips/mips.c (mips_offset_within_alignment_p): Tweak comment.
3730         Use a single return statement.
3731
3732 2007-05-19  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
3733
3734         PR middle-end/30250
3735         * builtins.c (do_mpfr_lgamma_r): New.
3736         (fold_builtin_2): Handle builtin gamma_r/lgamma_r.
3737         * tree.h (CASE_FLT_FN_REENT): New.
3738
3739 2007-05-18  Geoffrey Keating  <geoffk@apple.com>
3740
3741         * dwarf2out.c (print_die): Use '%ld' not '%lu' to print a 'long'.
3742         (output_die): Use 'unsigned long' with %x.
3743         * sched-vis.c (print_value): Use 'unsigned HOST_WIDE_INT' and
3744         HOST_WIDE_INT_PRINT_HEX to print HOST_WIDE_INT.
3745         * tree-dump.c (dump_pointer): Use 'unsigned long' for %lx.
3746
3747         * unwind-dw2.c (uw_identify_context): Use the CFA, not the IP.
3748
3749 2007-05-18  H.J. Lu  <hongjiu.lu@intel.com>
3750
3751         PR target/31989
3752         PR target/31681
3753         PR target/31666
3754         * config/i386/i386.c (init_cumulative_args): Set maybe_vaarg to
3755         true if function has no argument.
3756
3757 2007-05-18  DJ Delorie  <dj@redhat.com>
3758
3759         * config/mips/mips.c (mips_offset_within_alignment_p): New.
3760         (mips_symbolic_constant_p): Call it for TPREL and DTPREL symbols.
3761
3762 2007-05-18  Uros Bizjak  <ubizjak@gmail.com>
3763
3764         * longlong.h (__x86_64__): Add definitions for add_ssaaaa,
3765         sub_ddmmss, umul_ppmm, udiv_qrnnd, count_leading_zeros and
3766         count_trailing_zeros.
3767         (__i386__): Implement count_leading_zeros using __builtin_clz().
3768         Implement count_trailing_zeros usign __builtin_ctz().
3769
3770 2007-05-18  Richard Sandiford  <richard@codesourcery.com>
3771
3772         * config/i386/vxworks.h (ASM_PREFERRED_EH_DATA_FORMAT): Undefine.
3773
3774 2007-05-18  Uros Bizjak  <ubizjak@gmail.com>
3775
3776         PR middle-end/31344
3777         * expr.c (emit_move_change_mode): Change mode of push operands here.
3778
3779 2007-05-17  Ian Lance Taylor  <iant@google.com>
3780
3781         PR tree-optimization/31953
3782         * tree-vrp.c (set_value_range_to_value): Add equiv parameter.
3783         Change all callers.
3784         (set_value_range_to_null): Call set_value_range_to_value.
3785         (extract_range_from_comparison): Likewise.
3786
3787 2007-05-17  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
3788
3789         * toplev.c (print_version): Output GMP/MPFR version info.
3790
3791         * builtins.c (CASE_MATHFN_REENT): New macro.
3792         (mathfn_built_in): Use it.
3793         * builtins.def (BUILT_IN_GAMMA_R, BUILT_IN_GAMMAF_R,
3794         BUILT_IN_GAMMAL_R, BUILT_IN_LGAMMA_R, BUILT_IN_LGAMMAF_R,
3795         BUILT_IN_LGAMMAL_R): New.
3796         * doc/extend.texi: Document new builtins.
3797
3798         PR middle-end/31796
3799         * builtins.c (do_mpfr_remquo): New.
3800         (fold_builtin_2): Handle BUILT_IN_DREM/BUILT_IN_REMAINDER.
3801         (fold_builtin_3): Handle BUILT_IN_REMQUO.
3802
3803         PR middle-end/30251
3804         * builtins.c (fold_builtin_1): Handle y0, y1.
3805         (fold_builtin_2): Handle yn.
3806
3807         PR middle-end/30251
3808         * builtins.c (do_mpfr_bessel_n): New.
3809         (fold_builtin_1): Handle BUILT_IN_J0 and BUILT_IN_J1.
3810         (fold_builtin_2): Handle BUILT_IN_JN.
3811
3812 2007-05-17  Danny Smith  <dannysmith@users.sourceforge.net>
3813
3814         PR target/31965
3815         * config/i386/mingw32.h (_INTEGRAL_MAX_BITS): Define builtin as
3816         TYPE_PRECISION (intmax_type_node).
3817
3818 2007-05-17  Steve Ellcey  <sje@cup.hp.com>
3819
3820         PR target/31850
3821         * reload.c (subst_reloads): Remove checking.
3822
3823 2007-05-17  Eric Botcazou  <ebotcazou@libertysurf.fr>
3824
3825         PR rtl-optimization/31691
3826         * combine.c (simplify_set): Build a new src pattern instead of
3827         substituting its operands in the COMPARE case.
3828
3829 2007-05-17  Zdenek Dvorak  <dvorakz@suse.cz>
3830
3831         * tree-vrp.c (finalize_jump_threads): Do not care about dominance info.
3832         (execute_vrp): Preserve loops through jump threading.
3833         * tree-ssa-threadupdate.c (thread_single_edge,
3834         dbds_continue_enumeration_p, determine_bb_domination_status,
3835         thread_through_loop_header): New functions.
3836         (create_edge_and_update_destination_phis,
3837         create_edge_and_update_destination_phis): Set loops for the new blocks.
3838         (prune_undesirable_thread_requests): Removed.
3839         (redirect_edges): Do not pretend that redirect_edge_and_branch can
3840         create new blocks.
3841         (thread_block): Do not call prune_undesirable_thread_requests.
3842         Update loops.
3843         (mark_threaded_blocks): Select edges to thread here.
3844         (thread_through_all_blocks): Take may_peel_loop_headers argument.
3845         Thread edges through loop headers independently.
3846         * cfgloopmanip.c (create_preheader, mfb_keep_just): Export.
3847         * tree-pass.h (TODO_mark_first_instance): New.
3848         (first_pass_instance): Declare.
3849         * cfghooks.c (duplicate_block): Put the block to the original loop
3850         if copy is not specified.
3851         * tree-ssa-dom.c (tree_ssa_dominator_optimize): Preserve loops through
3852         jump threading.  Pass may_peel_loop_headers to
3853         thread_through_all_blocks according to first_pass_instance.
3854         * cfgloop.h (create_preheader): Declare.
3855         * tree-flow.h (thread_through_all_blocks): Declaration changed.
3856         * basic-block.h (mfb_keep_just, mfb_kj_edge): Declare.
3857         * passes.c (first_pass_instance): New variable.
3858         (next_pass_1): Set TODO_mark_first_instance.
3859         (execute_todo): Set first_pass_instance.
3860
3861 2007-05-17  Uros Bizjak  <ubizjak@gmail.com>
3862
3863         PR tree-optimization/24659
3864         * optabs.h (enum optab_index): Add OTI_vec_unpacks_float_hi,
3865         OTI_vec_unpacks_float_lo, OTI_vec_unpacku_float_hi,
3866         OTI_vec_unpacku_float_lo, OTI_vec_pack_sfix_trunc and
3867         OTI_vec_pack_ufix_trunc.
3868         (vec_unpacks_float_hi_optab): Define new macro.
3869         (vec_unpacks_float_lo_optab): Ditto.
3870         (vec_unpacku_float_hi_optab): Ditto.
3871         (vec_unpacku_float_lo_optab): Ditto.
3872         (vec_pack_sfix_trunc_optab): Ditto.
3873         (vec_pack_ufix_trunc_optab): Ditto.
3874         * genopinit.c (optabs): Implement vec_unpack[s|u]_[hi|lo]_optab
3875         and vec_pack_[s|u]fix_trunc_optab using
3876         vec_unpack[s|u]_[hi\lo]_* and vec_pack_[u|s]fix_trunc_* patterns
3877         * tree-vectorizer.c (supportable_widening_operation): Handle
3878         FLOAT_EXPR and CONVERT_EXPR.  Update comment.
3879         (supportable_narrowing_operation): New function.
3880         * tree-vectorizer.h (supportable_narrowing_operation): Prototype.
3881         * tree-vect-transform.c (vectorizable_conversion): Handle
3882         (nunits_in == nunits_out / 2) and (nunits_out == nunits_in / 2) cases.
3883         (vect_gen_widened_results_half): Move before vectorizable_conversion.
3884         (vectorizable_type_demotion): Call supportable_narrowing_operation()
3885         to check for target support.
3886         * optabs.c (optab_for_tree_code) Return vec_unpack[s|u]_float_hi_optab
3887         for VEC_UNPACK_FLOAT_HI_EXPR, vec_unpack[s|u]_float_lo_optab
3888         for VEC_UNPACK_FLOAT_LO_EXPR and vec_pack_[u|s]fix_trunc_optab
3889         for VEC_PACK_FIX_TRUNC_EXPR.
3890         (expand_binop): Special case mode of the result for
3891         vec_pack_[u|s]fix_trunc_optab.
3892         (init_optabs): Initialize vec_unpack[s|u]_[hi|lo]_optab and
3893         vec_pack_[u|s]fix_trunc_optab.
3894
3895         * tree.def (VEC_UNPACK_FLOAT_HI_EXPR, VEC_UNPACK_FLOAT_LO_EXPR,
3896         VEC_PACK_FIX_TRUNC_EXPR): New tree codes.
3897         * tree-pretty-print.c (dump_generic_node): Handle
3898         VEC_UNPACK_FLOAT_HI_EXPR, VEC_UNPACK_FLOAT_LO_EXPR and
3899         VEC_PACK_FIX_TRUNC_EXPR.
3900         (op_prio): Ditto.
3901         * expr.c (expand_expr_real_1): Ditto.
3902         * tree-inline.c (estimate_num_insns_1): Ditto.
3903         * tree-vect-generic.c (expand_vector_operations_1): Ditto.
3904
3905         * config/i386/sse.md (vec_unpacks_float_hi_v8hi): New expander.
3906         (vec_unpacks_float_lo_v8hi): Ditto.
3907         (vec_unpacku_float_hi_v8hi): Ditto.
3908         (vec_unpacku_float_lo_v8hi): Ditto.
3909         (vec_unpacks_float_hi_v4si): Ditto.
3910         (vec_unpacks_float_lo_v4si): Ditto.
3911         (vec_pack_sfix_trunc_v2df): Ditto.
3912
3913         * doc/c-tree.texi (Expression trees) [VEC_UNPACK_FLOAT_HI_EXPR]:
3914         Document.
3915         [VEC_UNPACK_FLOAT_LO_EXPR]: Ditto.
3916         [VEC_PACK_FIX_TRUNC_EXPR]: Ditto.
3917         * doc/md.texi (Standard Names) [vec_pack_sfix_trunc]: Document.
3918         [vec_pack_ufix_trunc]: Ditto.
3919         [vec_unpacks_float_hi]: Ditto.
3920         [vec_unpacks_float_lo]: Ditto.
3921         [vec_unpacku_float_hi]: Ditto.
3922         [vec_unpacku_float_lo]: Ditto.
3923
3924 2007-05-16  Uros Bizjak  <ubizjak@gmail.com>
3925
3926         * soft-fp/README: Update for new files.
3927         * soft-fp/floattisf.c: New file.
3928         * soft-fp/floattidf.c: New file.
3929         * soft-fp/floattitf.c: New file.
3930         * soft-fp/floatuntisf.c: New file.
3931         * soft-fp/floatuntidf.c: New file.
3932         * soft-fp/floatuntitf.c: New file.
3933         * soft-fp/fixsfti.c: New file.
3934         * soft-fp/fixdfti.c: New file.
3935         * soft-fp/fixtfti.c: New file.
3936         * soft-fp/fixunssfti.c: New file.
3937         * soft-fp/fixunsdfti.c: New file.
3938         * soft-fp/fixunstfti.c: New file.
3939         * soft-fp/extendxftf.c: New file.
3940         * soft-fp/trunctfxf.c: New file.
3941
3942         * libgcc-std.ver (__extendxftf2): Added to GCC_4.3.0 section.
3943         (__trunctfxf2): Ditto.
3944
3945         * config/i386/libgcc-x86_64-glibc.ver (__addtf3, __divtf3, __eqtf2,
3946         __extenddftf2, __extendsftf2, __fixtfdi, __fixtfsi, __fixtfti,
3947         __fixunstfdi, __fixunstfsi, __fixunstfti, __floatditf, __floatsitf,
3948         __floattitf, __floatunditf, __floatunsitf, __floatuntitf, __getf2,
3949         __letf2, __multf3, __negtf2, __subtf3, __trunctfdf2, __trunctfsf2,
3950         __unordtf2): Exclude and add to GCC_4.3.0 section for x86_64 targets.
3951
3952         * config/i386/t-fprules-softfp64: New file.
3953         * config/i386/sfp-machine.h: New file.
3954         * config.gcc (x86_64-*-linux*, x86_64-*-kfreebsd*-gnu,
3955         x86_64-*-knetbsd*-gnu): Add i386/t-fprules-softfp64
3956         and soft-fp/t-softfp to tmake_file.
3957         (i[34567]86-*-linux*, i[34567]86-*-kfreebsd*-gnu,