OSDN Git Service

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