OSDN Git Service

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