OSDN Git Service

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