OSDN Git Service

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