OSDN Git Service

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