OSDN Git Service

Fix a typo.
[pf3gnuchains/gcc-fork.git] / gcc / ChangeLog
1 2008-05-19  Eric Botcazou  <ebotcazou@adacore.com>
2
3         * tree.c (substitute_in_expr) <tcc_vl_exp>: Fix thinko.
4
5 2008-05-19  H.J. Lu  <hongjiu.lu@intel.com>
6
7         * config/i386/i386.c (ix86_expand_vector_init_concat): Change
8         sizes of operand array from 8/4 to 4/2.
9         (ix86_expand_vector_init_general): Change size of operand array
10         from 32 to 16.  Remove op0, op1 and half_mode.
11
12 2008-05-19  H.J. Lu  <hongjiu.lu@intel.com>
13
14         * config/i386/i386.c (ix86_expand_vector_init_concat): New.
15         (ix86_expand_vector_init_interleave): Likewise.
16         (ix86_expand_vector_init_general): Use them.  Assert word_mode
17         == SImode when n_words == 4.
18
19 2008-05-19  Uros Bizjak  <ubizjak@gmail.com>
20
21         * config/i386/i386.c (ix86_secondary_reload): New static function.
22         (TARGET_SECONDARY_RELOAD): New define.
23         * config/i386/i386.h (SECONDARY_OUTPUT_RELOAD_CLASS): Remove.
24         * config/i386/i386.md (reload_outqi): Remove.
25
26 2008-05-18  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
27
28         PR middle-end/35509
29         * builtins.c (mathfn_built_in_1): Renamed from mathfn_built_in.
30         Add `implicit' parameter.  Handle BUILT_IN_SIGNBIT.
31         (mathfn_built_in): Rewrite in terms of mathfn_built_in_1.
32         (fold_builtin_classify): Handle BUILT_IN_ISINF_SIGN.
33         (fold_builtin_1): Likewise.
34         * builtins.def (BUILT_IN_ISINF_SIGN): New.
35         c-common.c (check_builtin_function_arguments): Handle
36         BUILT_IN_ISINF_SIGN.
37         * doc/extend.texi: Document __builtin_isinf_sign.
38         * fold-const.c (operand_equal_p): Handle COND_EXPR.
39
40 2008-05-18  Eric Botcazou  <ebotcazou@adacore.com>
41
42         * tree-ssa-dom.c (tree_ssa_dominator_optimize): If some blocks need
43         EH cleanup at the end of the pass, search for those that have been
44         turned into forwarder blocks and do the cleanup on their successor.
45
46 2008-05-18  Richard Guenther  <rguenther@suse.de>
47
48         * tree-cfg.c (verify_gimple_expr): Allow conversions from
49         pointers to sizetype and vice versa.
50
51 2008-05-18 Xinliang David Li   <davidxl@google.com>
52
53         * gcc/tree-ssa-dce.c: Coding style fix.
54         (check_pow): Documentation comment. 
55         (check_log): Documenation comment. Coding style fix.
56         (is_unnecessary_except_errno_call): Ditto.
57         (gen_conditions_for_pow): Ditto.
58         (gen_conditions_for_log): Ditto.
59         (gen_shrink_wrap_conditions): Ditto.
60         (shrink_wrap_one_built_in_calls): Ditto.
61         * gcc/doc/invoke.texi: Better documentation string.
62         * ChangeLog: Fix wrong change log entries from 
63         May 17 checkin on function call DCE.
64
65 2008-05-17  Kaz Kojima  <kkojima@gcc.gnu.org>
66
67         * config/sh/sh.c (sh_output_mi_thunk): Update the use of init_flow.
68
69 2008-05-17  Kenneth Zadeck <zadeck@naturalbridge.com>
70
71         * doc/rtl.texi (RTL_CONST_CALL_P, RTL_PURE_CALL_P): Fixed typos.
72         * df-problems.c (simulation routines): Fixed block comment to
73         properly say how to add forwards scanning functions.
74         
75 2008-05-17  Eric Botcazou  <ebotcazou@adacore.com>
76
77         * tree-inline.c (setup_one_parameter): Remove dead code.
78
79 2008-05-17  Eric Botcazou  <ebotcazou@adacore.com>
80
81         * fold-const.c (fold_unary) <CASE_CONVERT>: Fold the cast into
82         a BIT_AND_EXPR only for an INTEGER_TYPE.
83
84 2008-05-17 Xinliang David Li   <davidxl@google.com>
85
86         * gcc/tree-ssa-dce.c (cond_dead_built_in_calls): New static variable.
87         (check_pow, check_log, is_unnecessary_except_errno_call): New 
88         functions to check for eliminating math functions that are pure 
89         except for setting errno.
90         (gen_conditions_for_pow, gen_conditionas_for_log): New functions to
91         general condition expressions for shrink-wrapping pow/log calls.
92         (gen_shrink_wrap_conditions): Ditto.
93         (shrink_wrap_one_built_in_call): Ditto.
94         (shrink_wrap_conditional_dead_built_in_calls): Ditto.
95         (mark_operand_necessary): If debugging, output if OP is necessary.
96         (eliminate_unnecessary_stmts): Eliminate pow, log calls that are
97         unnecessary.
98         * gcc/opts.c (decode_options): set flag_tree_builtin_dce to 1 when
99         opt level >= 2.
100         * gcc/common.opt: New user flag -ftree-builtin-dce.
101         * gcc/doc/invoke.texi (-ftree-builtin-dce): New option.
102
103 2008-05-16  David S. Miller  <davem@davemloft.net>
104
105         * config/sparc/linux.h (NO_PROFILE_COUNTERS): Undef before overriding.
106         * config/sparc/linux64.h (NO_PROFILE_COUNTERS): Likewise.
107
108 2008-05-16  Uros Bizjak  <ubizjak@gmail.com>
109
110         PR target/36246
111         * config/i386/i386.h (SECONDARY_MEMORY_NEEDED_MODE): New define.
112
113 2008-05-16  Kenneth Zadeck <zadeck@naturalbridge.com>
114
115         * ifcvt.c (dead_or_predicable): Rename
116         df_simulate_one_insn_backwards to df_simulate_one_insn.
117         * recog.c (peephole2_optimize): Ditto.
118         * rtl-factoring.c (collect_pattern_seqs, clear_regs_live_in_seq):
119         Ditto.
120         * df.h: Rename df_simulate_one_insn_backwards to
121         df_simulate_one_insn.  and delete df_simulate_one_insn_forwards.
122         * df-problems.c (df_simulate_artificial_refs_at_top) Reversed
123         scanning of defs and uses.
124         (df_simulate_one_insn_backwards): Renamed to df_simulate_one_insn.
125         (df_simulate_one_insn_forwards): Removed.
126
127 2008-05-16  Doug Kwan  <dougkwan@google.com>
128
129         * real.c (real_to_decimal, real_to_hexadecimal): Distinguish
130         QNaN & SNaN.
131         (real_from_string): Handle NaNs and Inf as approriate.
132
133 2008-05-16  Nathan Froyd  <froydnj@codesourcery.com>
134
135         * doc/gty.texi (Source Files Containing Type Information): Note
136         that headers should appear first in the gtfiles list.
137
138 2008-05-16  Kenneth Zadeck <zadeck@naturalbridge.com>
139
140         * tree.def (COND_EXEC): Properly documented this code.
141
142 2008-05-16  Diego Novillo  <dnovillo@google.com>
143
144         * dwarf2asm.c (dw2_assemble_integer): Clarify comment.
145         * tree-nested.c (get_trampoline_type): Set DECL_CONTEXT for
146         the new field.
147
148 2008-05-16  Kenneth Zadeck <zadeck@naturalbridge.com>
149
150         * tree-ssa-dse (max_stmt_uid): Removed.
151         (get_stmt_uid, dse_possible_dead_store_p, dse_optimize_stmt, 
152         tree_ssa_dse): Encapsulate all uses of stmt_ann->uid.
153         * tree-ssa-sccvn.c (compare_ops, init_scc_vn): Ditto.
154         * function.h (cfun.last_stmt_uid): New field.
155         * tree-flow-inline.h (set_gimple_stmt_uid, gimple_stmt_uid,
156         gimple_stmt_max_uid, set_gimple_stmt_max_uid, inc_gimple_stmt_max_uid):
157         New functions.
158         * tree-dfa.c (renumber_gimple_stmt_uids): New function.
159         (create_stmt_ann): Initialize the ann->uid field.
160         * tree-ssa-pre.c (compute_avail): Encapsulate the stmt_ann->uid
161         with new calls.
162         * tree-flow.h (renumber_gimple_stmt_uids): New function.
163
164 2008-05-16  Nathan Froyd  <froydnj@codesourcery.com>
165
166         * tree-flow.h (init_empty_tree_cfg_for_function): Declare.
167         * tree-cfg.c (init_empty_tree_cfg_for_function): Define.
168         (init_empty_tree_cfg): Call it.
169
170 2008-05-16  Kenneth Zadeck <zadeck@naturalbridge.com>
171
172         * cfg.c (init_flow): Add argument THE_FUN.  Use it instead of cfun.
173         Update all users.
174
175 2008-05-16  Kenneth Zadeck <zadeck@naturalbridge.com>
176
177         * doc/invoke.text (-fdump-tree-*-verbose): New option.
178         * tree-dump.c (dump_options): New verbose option.
179         * tree-pretty-print.c (dump_phi_nodes, dump_generic_bb_buff):
180         Add verbose dump.
181         * tree-pass.h (TDF_VERBOSE): New dump flag.
182         * print-tree.c (print_node): Added code to be able to print PHI_NODES.
183         (tree-flow.h): Added include.
184         * Makefile.in (print-tree.o):  Added TREE_FLOW_H.
185
186 2008-05-16  Bernd Schmidt  <bernd.schmidt@analog.com>
187
188         * config/bfin/bfin.c (bfin_discover_loops): Delete empty loops.
189
190         From Jie Zhang  <jie.zhang@analog.com>
191         * config/bfin/t-bfin-elf (MULTILIB_OPTIONS, MULTILIB_DIRNAMES,
192         MULTILIB_MATCHES, MULTILIB_EXCEPTIONS): Remove mcpu=bf532-0.3,
193         mcpu=bf561-none and mcpu=bf561-0.2.
194         * config/bfin/t-bfin-uclinux (MULTILIB_OPTIONS, MULTILIB_DIRNAMES,
195         MULTILIB_MATCHES, MULTILIB_EXCEPTIONS): Likewise.
196         * config/bfin/t-bfin-linux (MULTILIB_OPTIONS, MULTILIB_DIRNAMES,
197         MULTILIB_MATCHES, MULTILIB_EXCEPTIONS): Likewise.
198         * config/bfin/bfin-protos.h (enum bfin_cpu_type): Add BFIN_CPU_UNKNOWN.
199         * config/bfin/elf.h (STARTFILE_SPEC): Use specific CRT for BF561.
200         (LIB_SPEC): Use proper linker script for bf561.  Error if no mcpu
201         option.
202         * config/bfin/bfin.c (bfin_cpu_type): Set to BFIN_CPU_UNKNOWN.
203         (cputype_selected): Remove.
204         (bfin_handle_option): Don't use cputype_selected.
205         (override_options): When no mcpu option, enable all workarounds.
206         Don't use bfin_workarounds.
207         * config/bfin/bfin.h (DRIVER_SELF_SPECS): Don't set default
208         processor type.
209         (DEFAULT_CPU_TYPE): Don't define.
210
211 2008-05-16  Richard Guenther  <rguenther@suse.de>
212
213         * tree-ssa-propagate.c (substitute_and_fold): Fix stmt walking
214         on deletion of the last stmt.
215
216 2008-05-15  H.J. Lu  <hongjiu.lu@intel.com>
217
218         * config/i386/i386.c (ix86_expand_vector_init_general): Optimize
219         V8HImode for SSE2 and V16QImode for SSE4.1.
220
221 2008-05-15  Kenneth Zadeck <zadeck@naturalbridge.com>
222
223         * cgraph.h (compute_inline_parameters): Made public.
224         * tree-pass.h (ipa_opt_pass): Removed function_generate_summary,
225         variable_generate_summary, function_write_summary,
226         variable_write_summary, variable_read_summary.  Added generate_summary,
227         write_summary, read_summary.
228         * cgraphunit.c (cgraph_process_new_functions): Changed call from
229         pass_ipa_inline.function_generate_summary, to
230         compute_inline_parameters. 
231         * ipa-inline.c (compute_inline_parameters): Made public and added
232         node parameter.
233         (compute_inline_parameters_for_current): New function.
234         (pass_inline_param): Now calls compute_inline_parameters_for_current.
235         (inline_generate_summary): Removed parameter and made to loop over
236         all cgraph nodes.
237         (pass_ipa_inline): Updated for new IPA_PASS structure.
238         * passes.c (execute_ipa_summary_passes): Now is called once per
239         pass rather than once per node*pass.
240         
241 2008-05-15  Anatoly Sokolov <aesok@post.ru>
242
243         * config/avr/avr.c (avr_base_arch_macro, avr_have_movw_lpmx_p, 
244         avr_have_mul_p, avr_asm_only_p): Remove variables.
245         (avr_override_options): Remove initialization of removed variables.
246         (avr_file_start):  Convert removed variables to fields of 
247         'struct base_arch_s *avr_current_arch'. 
248         * config/avr/avr.h (TARGET_CPU_CPP_BUILTINS): (Ditto.).
249         (AVR_HAVE_MUL): (Ditto.).
250         (AVR_HAVE_MOVW): (Ditto.).
251         (AVR_HAVE_LPMX): (Ditto.). 
252         (avr_base_arch_macro, avr_have_movw_lpmx_p, avr_have_mul_p, 
253         avr_asm_only_p): Remove declaration.
254
255 2008-05-15  Diego Novillo  <dnovillo@google.com>
256
257         * config/arm/arm.c (arm_return_in_memory): Fix return type.
258         * config/arm/arm-protos.h (arm_return_in_memory): Likewise.
259
260 2008-05-15  Adam Nemet  <anemet@caviumnetworks.com>
261
262         PR middle-end/36194
263         * combine.c (check_conversion): Rename back to check_promoted_subreg.
264         Don't call record_truncated_value from here.
265         (record_truncated_value): Turn it into a for_each_rtx callback.
266         (record_truncated_values): New function.
267         (combine_instructions): Call note_uses with record_truncated_values.
268         Change name of check_conversion to check_promoted_subreg. 
269
270 2008-05-15  Janis Johnson  <janis187@us.ibm.com>
271
272         * doc/sourcebuild.texi: Document support for torture tests.
273
274 2008-05-15  Uros Bizjak  <ubizjak@gmail.com>
275
276         * config/i386/sse.md (*vec_concatv2sf_sse4_1): Add "m" constraint
277         to alternative 4 of operand 2.
278
279 2008-05-15  Richard Guenther  <rguenther@suse.de>
280
281         * tree-pass.h (current_pass): Declare.
282         (get_pass_for_id): Likewise.
283         * passes.c (passes_by_id, passes_by_id_size): New globals.
284         (set_pass_for_id): New function.
285         (get_pass_for_id): Likewise.
286         (register_one_dump_file): Use set_pass_for_id to populate passes_by_id.
287         (execute_function_todo): Flush per function statistics.
288         * toplev.c (compile_file): Init statistics.
289         (general_init): Do early statistics initialization.
290         (finalize): Finish statistics.
291         * statistics.h (statistics_early_init): Declare.
292         (statistics_init): Likewise.
293         (statistics_fini): Likewise.
294         (statistics_fini_pass): Likewise.
295         (statistics_counter_event): Likewise.
296         (statistics_histogram_event): Likewise.
297         * statistics.c: New file.
298         * Makefile.in (OBJS-common): Add statistics.o.
299         (statistics.o): Add dependencies.
300         * doc/invoke.texi (-fdump-statistics): Document.
301
302         * tree-ssa-pre.c (compute_antic): Use statistics_histogram_event.
303         (insert): Likewise.
304         (execute_pre): Use statistics_counter_event.
305         * tree-ssa-propagate.c (struct prop_stats_d): Add num_dce field.
306         (substitute_and_fold): Increment it.  Use statistics_counter_event.
307
308 2008-05-15  Diego Novillo  <dnovillo@google.com>
309
310         http://gcc.gnu.org/ml/gcc-patches/2008-05/msg00893.html
311
312         * treestruct.def (TS_STRUCT_FIELD_TAG): Remove.
313         * tree-ssa-alias.c (new_type_alias): Remove references to
314         sub-variables from comment.
315         * tree-ssa-operands.c (swap_tree_operands): Likewise.
316
317 2008-05-15  H.J. Lu  <hongjiu.lu@intel.com>
318
319         * config/i386/sse.md (*vec_concatv2sf_sse4_1): Set prefix_extra
320         attribute to 1 only for insertps alternative.
321
322 2008-05-15  Bernd Schmidt  <bernd.schmidt@analog.com>
323
324         * config/bfin/bfin.md (loadbytes): New pattern.
325         * config/bfin/bfin.c (enum bfin_builtins): Add BFIN_BUILTIN_LOADBYTES.
326         (bfin_init_builtins): Initialize it.
327         (bdesc_1arg): Add it.
328
329 2008-05-15  Sa Liu  <saliu@de.ibm.com>
330
331         * testsuite/gfortran.dg/c_kind_int128_test1.f03: New.
332         * testsuite/gfortran.dg/c_kind_int128_test2.f03: New.
333         * testsuite/lib/target-supports.exp: Add
334         check_effective_target_fortran_integer_16.
335
336 2008-05-15  Bernd Schmidt  <bernd.schmidt@analog.com>
337
338         * config/bfin/bfin.h (TARGET_RETURN_IN_MEMORY): Don't define here.
339         * config/bfin/bfin-protos.h (bfin_return_in_memory): Don't declare.
340         * config/bfin/bfin.c (bfin_return_in_memory): Now static.  Return bool.
341         (TARGET_RETURN_IN_MEMORY): Define.
342
343 2008-05-15  Richard Guenther  <rguenther@suse.de>
344
345         PR middle-end/36244
346         * tree-ssa-alias.c (new_type_alias): Do not set TREE_READONLY.
347         * tree-flow-inline.h (unmodifiable_var_p): Memory tags never
348         represent unmodifiable vars.
349
350 2008-05-15  Richard Guenther  <rguenther@suse.de>
351
352         * tree-dfa.c (refs_may_alias_p): Allow all kinds of
353         INDIRECT_REF and TARGET_MEM_REF.
354         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Handle
355         TARGET_MEM_REF.
356
357 2008-05-15  Uros Bizjak  <ubizjak@gmail.com>
358             H.J. Lu  <hongjiu.lu@intel.com>
359
360         * config/i386/sse.md (*vec_concatv2sf_sse4_1): New insn pattern.
361         (*vec_concatv2si_sse4_1): Use vector_move_operand predicate
362         for operand 2.  Remove pinsr{q,d} with 0x0 immediate operand from
363         insn alternatives.  Add missing alternatives.
364         (*vec_concatv2di_rex64_sse4_1): Likewise.
365         (*vec_concatv2si_sse2): Use "x" register constraint instead of "Y2".
366         (*vec_concatv2di_rex64_sse): Rename from *vec_concatv2di_rex64.
367         Require TARGET_SSE.
368
369 2008-05-15  Richard Guenther  <rguenther@suse.de>
370
371         PR tree-optimization/36009
372         PR tree-optimization/36204
373         * tree-ssa-loop-im.c (tree-ssa-propagate.h): Include.
374         (determine_invariantness_stmt): Record the loop a store is
375         always executed in.
376         * Makefile.in (tree-ssa-loop-im.o): Add tree-ssa-propagate.h
377         dependency.
378
379 2008-05-15  Richard Guenther  <rguenther@suse.de>
380
381         PR tree-optimization/34330
382         * tree-ssa-alias.c (get_smt_for): Only assert that accesses
383         through the pointer will alias the SMT.
384
385 2008-05-14  Andreas Tobler  <a.tobler@schweiz.org>
386
387         * config/sparc/sparc.h (NO_PROFILE_COUNTERS): Define as 0.
388
389 2008-05-14  H.J. Lu  <hongjiu.lu@intel.com>
390
391         * config/i386/sse.md (*sse4_1_pinsrq): Make it 64bit only.
392
393 2008-05-14  Michael Meissner  <michael.meissner@amd.com>
394             Dwarakanath Rajagopal  <dwarak.rajagopal@amd.com>
395
396         * optabs.h (optab_index): Add OTI_vashl, OTI_vlshr, OTI_vashr,
397         OTI_vrotl, OTI_vrotr to support vector/vector shifts.
398         (vashl_optab): New optab for vector/vector shifts.
399         (vashr_optab): Ditto.
400         (vlshr_optab): Ditto.
401         (vrotl_optab): Ditto.
402         (vrotr_optab): Ditto.
403         (optab_subtype): New enum for optab_for_tree_code call.
404         (optab_for_tree_code): Add enum optab_subtype argument.
405
406         * optabs.c (optab_for_tree_code): Take an additional argument to
407         distinguish between a vector shift by a scalar and vector shift by
408         a vector.  Make lshr/ashr/ashl/rotl/rotr optabs just vector
409         shifted by a scalar.  Use vlshr/vashr/vashl/vrotl/vrotr for the
410         vector shift by a vector.
411         (expand_widen_pattern_expr): Pass additional argument to
412         optab_for_tree_code.
413
414         * genopinit.c (optabs): Add vashr_optab, vashl_optab, vlshr_optab,
415         vrotl_optab, vrotr_optab.
416
417         * expr.c (expand_expr_real_1): Update calls to
418         optab_for_tree_code to distinguish between vector shifted by a
419         scalar and vector shifted by a vector.
420         * tree-vectorizer.c (supportable_widening_operation): Ditto.
421         (supportable_narrowing_operation): Ditto.
422         * tree-vect-analyze.c (vect_build_slp_tree): Ditto.
423         * tree-vect-patterns.c (vect_pattern_recog_1): Ditto.
424         * tree-vect-transform.c (vect_model_reduction_cost): Ditto.
425         (vect_create_epilog_for_reduction): Ditto.
426         (vectorizable_reduction): Ditto.
427         (vectorizable_operation): Ditto.
428         (vect_strided_store_supported): Ditto.
429         (vect_strided_load_supported): Ditto.
430         * tree-vect-generic.c (expand_vector_operations_1): Ditto.
431         * expmed.c (expand_shift): Ditto.
432
433         * doc/md.texi (ashl@var{m}3): Document that operand 2 is always a
434         scalar type.
435         (ashr@var{m}3): Ditto.
436         (vashl@var{m}3): Document new vector/vector shift standard name.
437         (vashr@var{m}3): Ditto.
438         (vlshr@var{m}3): Ditto.
439         (vrotl@var{m}3): Ditto.
440         (vrotr@var{m}3): Ditto.
441
442         * config/i386/i386.md (PPERM_SRC): Move PPERM masks here from i386.c.
443         (PPERM_INVERT): Ditto.
444         (PPERM_REVERSE): Ditto.
445         (PPERM_REV_INV): Ditto.
446         (PPERM_ZERO): Ditto.
447         (PPERM_ONES): Ditto.
448         (PPERM_SIGN): Ditto.
449         (PPERM_INV_SIGN): Ditto.
450         (PPERM_SRC1): Ditto.
451         (PPERM_SRC2): Ditto.
452
453         * config/i386/sse.md (mulv2di3): Add SSE5 support.
454         (sse5_pmacsdql_mem): New SSE5 define_and_split that temporarily
455         allows a memory operand to be the value being added, and split it
456         to improve vectorization.
457         (sse5_pmacsdqh_mem): Ditto.
458         (sse5_mulv2div2di3_low): SSE5 32-bit multiply and extend function.
459         (sse5_mulv2div2di3_high): Ditto.
460         (vec_pack_trunc_v8hi): Add SSE5 pperm support.
461         (vec_pack_trunc_v4si): Ditto.
462         (vec_pack_trunc_v2di): Ditto.
463         (sse5_pcmov_<mode>): Remove code that tried to use use
464         andps/andnps instead of pcmov.
465         (vec_widen_smult_hi_v4si): If we have SSE5, use the pmacsdql and
466         pmacsdqh instructions.
467         (vec_widen_smult_lo_v4si): Ditto.
468
469         * config/i386/i386.c (PPERM_SRC): Move PPERM masks to i386.md.
470         (PPERM_INVERT): Ditto.
471         (PPERM_REVERSE): Ditto.
472         (PPERM_REV_INV): Ditto.
473         (PPERM_ZERO): Ditto.
474         (PPERM_ONES): Ditto.
475         (PPERM_SIGN): Ditto.
476         (PPERM_INV_SIGN): Ditto.
477         (PPERM_SRC1): Ditto.
478         (PPERM_SRC2): Ditto.
479         (ix86_expand_sse_movcc): Move the SSE5 test after the if
480         true/false tests.
481         (ix86_expand_int_vcond): If SSE5 generate all possible integer
482         comparisons.
483         (ix86_sse5_valid_op_p): Allow num_memory to be negative, which
484         says ignore whether the last reference is a memory operand.
485
486 2008-05-14  Michael Meissner  <michael.meissner@amd.com>
487             Paolo Bonzini <bonzini at gnu dot org>
488
489         * config/rs6000/rs6000.c (bdesc_2arg): Change the names of vector
490         shift patterns.
491
492         * config/rs6000/altivec.md (vashl<mode>3): Rename from ashl<mode>3.
493         (vlshr<mode>3): Rename from vlshr<mode>3.
494         (vashr<mode>3): Rename from vashr<mode>3.
495         (mulv4sf3): Change the names of vector shift patterns.
496         (mulv4si3): Ditto.
497         (negv4sf2): Ditt.
498
499         * config/spu/spu.c (spu_initialize_trampoline): Rename vector
500         shift insns.
501
502         * config/spu/spu-builtins.def (SI_SHLH): Rename vector shift insns.
503         (SI_SHLHI): Ditto.
504         (SI_SHL): Ditto.
505         (SI_SHLI): Ditto.
506         (SI_ROTH): Ditto.
507         (SI_ROTHI): Ditto.
508         (SI_ROT): Ditto.
509         (SI_ROTI): Ditto.
510         (SPU_RL_0): Ditto.
511         (SPU_RL_1): Ditto.
512         (SPU_RL_2): Ditto.
513         (SPU_RL_3): Ditto.
514         (SPU_RL_4): Ditto.
515         (SPU_RL_5): Ditto.
516         (SPU_RL_6): Ditto.
517         (SPU_RL_7): Ditto.
518         (SPU_SL_0): Ditto.
519         (SPU_SL_1): Ditto.
520         (SPU_SL_2): Ditto.
521         (SPU_SL_3): Ditto.
522         (SPU_SL_4): Ditto.
523         (SPU_SL_5): Ditto.
524         (SPU_SL_6): Ditto.
525         (SPU_SL_7): Ditto.
526
527         * config/spu/spu.md (v): New iterator macro to add v for vector types.
528         (floatunssidf2_internal): Change vector/vector shift names.
529         (floatunsdidf2_internal): Ditto.
530         (mulv8hi3): Ditto.
531         (ashrdi3): Ditto.
532         (ashrti3): Ditto.
533         (cgt_df): Ditto.
534         (cgt_v2df): Ditto.
535         (dftsv): Ditto.
536         (vashl<mode>3): Rename from ashl<mode>3.
537         (vashr<mode>3): Rename from ashr<mode>3.
538         (vlshr<mode>3): Rename from lshr<mode>3.
539         (vrotl<mode>3): Rename from rotl<mode>3.
540
541 2008-05-14  Michael Meissner  <michael.meissner@amd.com>
542
543         PR target/36224
544         * config/i386/sse.md (vec_widen_smult_hi_v4si): Delete, using unsigned
545         multiply gives the wrong value when doing widening multiplies.
546         (vec_widen_smult_lo_v4si): Ditto.
547
548 2008-05-14  Kenneth Zadeck <zadeck@naturalbridge.com>
549
550         * optabs.c (prepare_cmp_insn): Changed LCT_PURE_MAKE_BLOCK to
551         LCT_PURE and LCT_CONST_MAKE_BLOCK to LCT_CONST in calls to
552         emit_library_call_value. 
553         * builtins.c (expand_builtin_powi, expand_builtin_memcmp): Ditto.
554         * tree.h (ECF_LIBCALL_BLOCK): Removed.
555         * calls.c (initialize_argument_information, precompute_arguments, 
556         expand_call, emit_library_call_value_1): Remove ECF_LIBCALL_BLOCK.
557         (precompute_arguments): Removed flags parameter.
558         * rtl.h (LCT_CONST_MAKE_BLOCK, LCT_PURE_MAKE_BLOCK): Removed.
559         
560 2008-05-14  Richard Guenther  <rguenther@suse.de>
561
562         * tree-ssa-dse.c (dse_possible_dead_store_p): Remove dead code.
563         Make sure to register the store if the use is a PHI_NODE.
564
565 2008-05-14  Olivier Hainque  <hainque@adacore.com>
566
567         * expr.c (expand_expr_real_1) <normal_inner_ref>: Force op0 to
568         memory if the component is to be referenced in BLKmode according
569         to get_inner_reference.
570
571 2008-05-14  Adam Nemet  <anemet@caviumnetworks.com>
572
573         * calls.c (emit_library_call_value_1): Restore code clearing
574         ECF_LIBCALL_BLOCK to ensure that we only call end_sequence once.
575
576 2008-05-14  Olivier Hainque  <hainque@adacore.com>
577             Nicolas Roche  <roche@adacore.com>
578
579         * configure.ac: Add support for a "gcc_subdir" variable in
580         config-lang.in, to denote a subdirectory where the language/GCC
581         integration files are to be found.
582         * configure: Regenerate.
583
584 2008-05-14  Ira Rosen  <irar@il.ibm.com>
585
586         PR tree-optimization/36098
587         * tree-vect-analyze.c (vect_analyze_group_access): Set the gap
588         value for the first load in the group in case of a gap.
589         (vect_build_slp_tree): Check that there are no gaps in loads.
590
591 2008-05-14  Kenneth Zadeck <zadeck@naturalbridge.com>
592
593         * doc/rtl.texi: Removed reference to REG_NO_CONFLICT notes.
594         * optabs.c (expand_binop, expand_absneg_bit, expand_unop,
595         expand_copysign_bit, ): Change call to emit_no_conflict_block to
596         emit_insn and remove unneeded code to construct extra args.
597         (emit_no_conflict_block): Removed.
598         * optabls.h: (emit_no_conflict_block): Removed.
599         * cse.c (cse_extended_basic_block): Remove search for
600         REG_NO_CONFLICT note.
601         * global.c: Removed incorrect comment added in revision 117.
602         * expr.c (convert_move): Change call to emit_no_conflict_block to
603         emit_insn.
604         * recog.c: Change comments so that they do not mention
605         REG_NO_CONFLICT.
606         * local_alloc.c (combine_regs): Removed last parameter.
607         (no_conflict_p): Removed.
608         (block_alloc): Removed note, no_conflict_combined_regno and set
609         local vars. Removed all code to process REG_NO_CONFLICT blocks.
610         (combine_regs): Removed already_dead and code to look for
611         REG_NO_CONFLICT notes.
612         * lower_subreg (remove_retval_note): Removed code to look for
613         REG_NO_CONFLICT block.
614         (resolve_reg_notes): Removed REG_NO_CONFLICT case.
615         (resolve_clobber): Remove code to process libcalls that have
616         REG_NO_CONFLICT notes.
617         * loop_invariant.c (find_invariant_insn): Removed REG_NO_CONFLICT
618         case.
619         * combine.c (can_combine_p, distribute_notes):  Removed
620         REG_NO_CONFLICT case.
621         * config/cris/cris.md (movdi pattern): Changed emit_no_conflict_block
622         to emit_insns.
623         * config/mn10300/mn10300.md (absdf2, negdf2 patterns): Ditto.
624         * config/m68k/m68k.md (negdf2, negxf2, absdf2, absxf2 patterns):
625         Ditto.
626         * reg-notes.def (NO_CONFLICT): Removed.
627
628 2008-05-14  David S. Miller  <davem@davemloft.net>
629
630         * config/sparc/sparc.c (sparc_profile_hook): If
631         NO_PROFILE_COUNTERS, don't generate and pass a label into mcount.
632         * config/sparc/linux.h (NO_PROFILE_COUNTERS): Define as 1.
633         * config/sparc/linux64.h (NO_PROFILE_COUNTERS): Likewise.
634
635 2008-05-14  Andreas Krebbel  <krebbel1@de.ibm.com>
636
637         * cse.c (cse_cc_succs): Invoke delete_insn_and_edges.
638
639 2008-05-13  Uros Bizjak  <ubizjak@gmail.com>
640
641         PR target/36222
642         * config/i386/i386.c (ix86_expand_vector_init_general): Rearrange op0
643         and op1 expansion before vector concat to have less live pseudos.
644
645 2008-05-13  H.J. Lu  <hongjiu.lu@intel.com>
646
647         * config/i386/i386.c (ix86_expand_vector_init_one_nonzero): Use
648         ix86_expand_vector_set if supported.
649
650 2008-05-13  Diego Novillo  <dnovillo@google.com>
651             Kenneth Zadeck  <zadeck@naturalbridge.com>
652
653         http://gcc.gnu.org/ml/gcc-patches/2008-05/msg00748.html
654
655         * tree.h (init_phinodes, fini_phinodes, release_phi_node,
656         phinodes_print_statistics, init_ssanames, fini_ssanames,
657         make_ssa_name, duplicate_ssa_name, duplicate_ssa_name_ptr_info,
658         release_ssa_name, release_defs, replace_ssa_name_symbol,
659         ssanames_print_statistics): Move ...
660         * tree-flow.h: ... here.
661         * tree-ssanames.c (init_ssanames): Add arguments FN and SIZE.
662         Use FN instead of cfun.
663         (make_ssa_name_fn): Rename from make_ssa_name.
664         (pass_release_ssa_names): Add TODO_dump_func to finish flags.
665         * tree-flow-inline.h (make_ssa_name): Move from
666         tree-ssanames.c.  Convert to static inline.  Call make_ssa_name_fn.
667         * omp-low.c (expand_omp_parallel):
668         * tree-flow-inline.h (redirect_edge_var_map_result):
669         * tree-ssa.c (init_tree_ssa): Add argument FN.
670         Use it instead of cfun.  Update all users.
671
672 2008-05-13  Tom Tromey  <tromey@redhat.com>
673
674         PR preprocessor/22168:
675         * doc/cpp.texi (Top): Update menu.
676         (Alternatives to Wrapper #ifndef): New node.
677         (Other Directives): Document deprecation.
678         (Obsolete Features): Remove menu.
679         (Assertions): Merge node into Obsolete Features.
680         (Obsolete once-only headers): Move earlier; rename to Alternatives
681         to Wrapper #ifndef.
682         * doc/cppopts.texi: Update.
683         * c.opt (Wdeprecated): Enable for C and ObjC.
684         * doc/invoke.texi (Option Summary): Move -Wno-deprecated.
685         (C++ Dialect Options): Move -Wno-deprecated from here to...
686         (Warning Options): ... here.
687
688 2008-05-13  Richard Guenther  <rguenther@suse.de>
689
690         PR middle-end/36227
691         * fold-const.c (fold_sign_changed_comparison): Do not allow
692         changes in pointer-ness.
693
694 2008-05-12  Kaz Kojima  <kkojima@gcc.gnu.org>
695
696         PR target/24713
697         * config/sh/sh.c (sh_expand_prologue): Don't clear
698         RTX_FRAME_RELATED_P for push insns.
699
700 2008-05-12  Andy Hutchinson  <hutchinsonandy@aim.com>
701
702         * config/avr/avr.h (MAX_OFILE_ALIGNMENT): Define.
703
704 2008-05-12  Anatoly Sokolov <aesok@post.ru>
705
706         * config/avr/avr.h (machine_function): Add 'is_leaf' field.
707         * config/avr/avr.c (avr_regs_to_save): Compute 'machine->is_leaf'.
708         Use 'machine->is_leaf' instead of 'leaf_func_p'.
709
710 2008-05-12  H.J. Lu  <hongjiu.lu@intel.com>
711
712         * config/i386/sse.md (*sse_concatv4sf): Renamed to ...
713         (*vec_concatv4sf_sse): This.
714         (*sse2_concatv2si): Renamed to ...
715         (*vec_concatv2si_sse2): This.
716         (*sse1_concatv2si): Renamed to ...
717         (*vec_concatv2si_sse): This.
718         (*vec_concatv2di_rex): Renamed to ...
719         (*vec_concatv2di_rex64): This.
720         (*vec_concatv2si_sse4_1): New.
721         (*vec_concatv2di_rex64_sse4_1): Likewise.
722
723 2008-05-12  Uros Bizjak  <ubizjak@gmail.com>
724
725         PR rtl-optimization/36111
726         * recog.c (validate_replace_rtx_1): Unshare new RTL expression
727         that was created for swappable operands.
728
729 2008-05-12  Samuel Tardieu  <sam@rfc1149.net>
730
731         PR ada/36001
732         * Makefile.in: Substitute GNATMAKE and GNATBIND.
733         * configure.ac: Add call to ACX_PROG_GNAT.
734
735 2008-05-11  Volker Reichelt  <v.reichelt@netcologne.de>
736
737         * optc-gen.awk: Fix comment typo.
738
739 2008-05-11  Aaron W. LaFramboise  <aaronavay62@aaronwl.com>
740
741         * pretty-print.c (pp_integer_with_precision): Use
742         HOST_LONG_LONG_FORMAT.
743
744 2008-05-10  Kenneth Zadeck  <zadeck@naturalbridge.com>
745
746         * gcse.c (store_killed_in_insn): Negated call to RTL_CONST_CALL_P.
747                 
748 2008-05-10  H.J. Lu  <hongjiu.lu@intel.com>
749
750         * config/i386/i386.c (bdesc_ptest): Removed.
751         (ix86_builtin_type): Add INT_FTYPE_V2DI_V2DI_PTEST.
752         (bdesc_args): Add __builtin_ia32_ptestz128,
753         __builtin_ia32_ptestc128 and __builtin_ia32_ptestnzc128.
754         (ix86_init_mmx_sse_builtins): Updated.
755         (ix86_expand_args_builtin): Handle INT_FTYPE_V2DI_V2DI_PTEST.
756         (ix86_expand_builtin): Updated.
757
758 2008-05-10  Richard Sandiford  <rdsandiford@googlemail.com>
759
760         * tree-cfg.c (valid_fixed_convert_types_p): New function.
761         (verify_gimple_expr): Handle FIXED_CONVERT_EXPR.
762
763 2008-05-10  Uros Bizjak  <ubizjak@gmail.com>
764
765         * value-prof.c (interesting_stringop_to_profile): Do not
766         return early for BUILT_IN_MEMPCPY.
767
768 2008-05-09  H.J. Lu  <hongjiu.lu@intel.com>
769
770         * calls.c (expand_call): Don't use callgraph to increase
771         preferred_stack_boundary.
772
773         * cgraph.h (cgraph_rtl_info): Use unsigned on
774         preferred_incoming_stack_boundary.
775
776         * final.c (rest_of_clean_state): Use unsigned on
777         preferred_stack_boundary.
778
779 2008-05-09  Tom Tromey  <tromey@redhat.com>
780
781         PR preprocessor/22231:
782         * c-opts.c (sanitize_cpp_opts): Disallow -MG if compilation is
783         proceeding.
784
785 2008-05-09  Uros Bizjak  <ubizjak@gmail.com>
786
787         PR tree-optimization/36129
788         * tree-ssa-ccp.c: Include value-prof.h.
789         (execute_fold_all_builtins): Call gimple_remove_stmt_histograms if
790         built-in function was folded to a constant.
791         * Makefile.in (tree-ssa-ccp.c): Depend on value-prof.h
792
793 2008-05-09  Jan Sjodin  <jan.sjodin@amd.com>
794             Sebastian Pop  <sebastian.pop@amd.com>
795
796         * tree-scalar-evolution.c: Document instantiate_scev.
797         (instantiate_parameters_1): Renamed instantiate_scev_1.
798         Don't use the same loop for instantiation_loop and evolution_loop.
799         (instantiate_scev): New.
800         (instantiate_parameters): Moved...
801         (resolve_mixers): Update call to instantiate_scev_1 to pass the
802         same loop twice.  Maintains the semantics for this function.
803         * tree-scalar-evolution.h (instantiate_scev): Declare.
804         (instantiate_parameters): ...here.  Now static inline.
805         * tree-data-ref.c (dr_analyze_indices): Call instantiate_scev
806         instead of resolve_mixers.
807
808 2008-05-09  Maxim Kuvyrkov  <maxim@codesourcery.com>
809
810         * rtl-factoring.c (collect_pattern_seqs): Fix typo.
811
812 2008-05-09  Tomas Bily  <tbily@suse.cz>
813
814         * config/pa/pa.c (reloc_needed): Use CASE_CONVERT.
815         * tree-cfg.c (verify_expr, verify_gimple_expr): Likewise.
816         * tree-ssa-structalias.c (get_constraint_for): Likewise.
817         * c-common.c (c_common_truthvalue_conversion): Likewise.
818         * tree-object-size.c (compute_object_offset): Likewise.
819         * tree-inline.c (estimate_num_insns_1): Likewise.
820         * varasm.c (const_hash_1, compare_constant, copy_constant)
821         (compute_reloc_for_constant, output_addressed_constants)
822         (initializer_constant_valid_p): Likewise.
823         * c-omp.c (check_omp_for_incr_expr): Likewise.
824         * gimplify.c (gimplify_expr): Likewise.
825         * c-typeck.c (c_finish_return): Likewise.
826         * tree-vectorizer.c (supportable_widening_operation)
827         (supportable_narrowing_operation): Likewise.
828         * c-pretty-print.c (pp_c_cast_expression, pp_c_expression): Likewise.
829         * matrix-reorg.c (can_calculate_expr_before_stmt): Likewise.
830         * expr.c (highest_pow2_factor, expand_expr_real_1): Likewise.
831         * dwarf2out.c (loc_descriptor_from_tree_1, add_bound_info)
832         (descr_info_loc): Likewise.
833         * tree-ssa-loop-ivopts.c (may_be_nonaddressable_p): Likewise.
834         * fold-const.c (operand_equal_p, make_range, extract_muldiv_1)
835         (fold_unary): Likewise.
836         * builtins.c (get_pointer_alignment): Likewise.
837         * tree-scalar-evolution.c (interpret_rhs_modify_stmt)
838         (instantiate_parameters_1): Likewise.
839         * tree.c (expr_align, stabilize_reference): Likewise.
840         * tree-pretty-print.c (dump_generic_node, op_prio): Likewise.
841         * tree-ssa-loop-niter.c (derive_constant_upper_bound): Likewise.
842         * convert.c (strip_float_extensions): Use CONVERT_EXPR_P.
843         * tree-ssa-threadedge.c (simplify_control_stmt_condition): Likewise.
844         * config/alpha/alpha.c (va_list_skip_additions): Likewise.
845         * c-common.c (c_alignof_expr, check_function_arguments_recurse):
846         Likewise.
847         * tree-ssa.c (tree_ssa_useless_type_conversion): Likewise.
848         * varasm.c (initializer_constant_valid_p, output_constant): Likewise.
849         * tree-ssa-forwprop.c (get_prop_source_stmt, can_propagate_from)
850         (forward_propagate_addr_expr_1, forward_propagate_addr_expr)
851         (forward_propagate_comparison)
852         (tree_ssa_forward_propagate_single_use_vars): Likewise.
853         * cfgexpand.c (discover_nonconstant_array_refs_r): Likewise.
854         * emit-rtl.c (component_ref_for_mem_expr)
855         (set_mem_attributes_minus_bitpos): Likewise.
856         * tree-ssa-phiopt.c (conditional_replacement): Likewise.
857         * gimplify.c (gimplify_conversion, goa_lhs_expr_p, gimplify_expr):
858         Likewise.
859         * c-typeck.c (default_function_array_conversion, build_indirect_ref)
860         (build_function_call, pointer_diff, build_compound_expr)
861         (c_finish_return): Likewise.
862         * tree-vect-analyze.c (vect_determine_vectorization_factor): Likewise.
863         * matrix-reorg.c (get_inner_of_cast_expr, may_flatten_matrices_1):
864         Likewise.
865         * tree-ssa-ifcombine.c (recognize_single_bit_test): Likewise.
866         * expr.c (is_aligning_offset): Likewise.
867         * tree-ssa-alias.c (is_escape_site): Likewise.
868         * tree-stdarg.c (va_list_counter_bump, check_va_list_escapes)
869         (check_all_va_list_escapes): Likewise.
870         * tree-ssa-loop-ivopts.c (determine_base_object)
871         (determine_common_wider_type): Likewise.
872         * dojump.c (do_jump): Likewise.
873         * tree-ssa-sccvn.c (simplify_unary_expression): Likewise.
874         * tree-gimple.c (is_gimple_cast): Likewise.
875         * fold-const.c (decode_field_reference, )
876         (fold_sign_changed_comparison, fold_unary, fold_comparison)
877         (fold_binary): Likewise.
878         * tree-ssa-alias-warnings.c (find_alias_site_helper)
879         (already_warned_in_frontend_p): Likewise.
880         * builtins.c (get_memory_rtx, fold_builtin_next_arg): Likewise.
881         * tree.c (really_constant_p, get_unwidened): Likewise.
882         * tree-ssa-loop-niter.c (expand_simple_operations): Likewise.
883         * tree-ssa-loop-im.c (rewrite_bittest): Likewise.
884         * tree-vrp.c (register_edge_assert_for_2, register_edge_assert_for_1):
885         Likewise.
886         * tree.h (STRIP_NOPS, STRIP_SIGN_NOPS, STRIP_TYPE_NOPS): Use
887         CONVERT_EXPR_P.
888         (CONVERT_EXPR_P): Define.
889         (CASE_CONVERT): Define.
890         
891 2008-05-08  Kenneth Zadeck  <zadeck@naturalbridge.com>
892
893         PR middle-end/36117
894         * dce.c (deletable_insn_p): Do not delete calls if df_in_progress.
895         (delete_unmarked_insns): When deleting a call, call
896         delete_unreachable_blocks.
897         * rtl.texi (RTL_CONST_CALL_P, RTL_PURE_CALL_P,
898         RTL_CONST_OR_PURE_CALL_P, RTL_LOOPING_CONST_OR_PURE_CALL_P): Fixed doc.
899
900 2008-05-08  Richard Guenther  <rguenther@suse.de>
901
902         * doc/invoke.texi (-fdump-tree-salias): Remove documentation.
903         (-ftree-salias): Likewise.
904         (salias-max-implicit-fields): Remove param documentation.
905         (salias-max-array-elements): Likewise.
906         * tree-pass.h (pass_create_structure_vars): Remove.
907         * params.h (SALIAS_MAX_IMPLICIT_FIELDS): Remove.
908         (SALIAS_MAX_ARRAY_ELEMENTS): Likewise.
909         * tree-ssa-alias.c (create_structure_vars): Remove.
910         (gate_structure_vars): Likewise.
911         (pass_create_structure_vars): Likewise.
912         (gate_build_alias): Likewise.
913         (pass_build_alias): Adjust to run always and dump the function.
914         * common.opt (ftree-salias): Hide.
915         * passes.c (init_optimization_passes): Remove
916         pass_create_structure_vars, adjust comment.
917         * params.def (PARAM_SALIAS_MAX_IMPLICIT_FIELDS): Remove.
918         (PARAM_SALIAS_MAX_ARRAY_ELEMENTS): Likewise.
919         * opts.c (decode_options): Do not set flag_tree_salias.
920         (common_handle_option): Add OPT_ftree_salias to the backward
921         compatibility section.
922
923 2008-05-08  Richard Guenther  <rguenther@suse.de>
924
925         * tree-flow-inline.h (var_can_have_subvars): Move ...
926         * tree-ssa-structalias.c (var_can_have_subvars): ... here.
927         * tree-flow.h (var_can_have_subvars): Remove.
928         (push_fields_onto_fieldstack): Remove.
929         (sort_fieldstack): Likewise.
930         (struct fieldoff): Move ...
931         * tree-ssa-structalias.c (struct fieldoff): ... here.  Remove
932         alias_set and base_for_components fields.
933         (sort_fieldstack): Make static.
934         (push_fields_onto_fieldstack): Likewise.  Remove code that
935         handles anything but RECORD_TYPEs.  Remove alias_set and
936         base_for_components handling.
937         (create_variable_info_for): Adjust.
938
939 2008-05-08  Seongbae Park  <seongbae.park@gmail.com>
940
941         * common.opt (Wframe-larger-than=): Shorten the help message
942         to one line.
943         * doc/invoke.texi (Wframe-larger-than=): Add more description.
944
945 2008-05-08  Rafael Espindola  <espindola@google.com>
946
947         * tree-complex.c (expand_complex_div_wide): Don't create CONDs that
948         trap.
949         * tree-gimple.c (is_gimple_condexpr): Check that the expression doesn't
950         trap and that both operands are gimple values.
951         (canonicalize_cond_expr_cond): Use is_gimple_condexpr.
952         * gcc/tree-eh.c (tree_could_trap_p): Correctly detect if a comparison
953         is a fp operation.
954
955 2008-05-08  Richard Sandiford  <rsandifo@nildram.co.uk>
956
957         * read-rtl.c (join_c_conditions): Return the first string if the
958         two strings are equal.
959
960 2008-05-08  Richard Sandiford  <rsandifo@nildram.co.uk>
961
962         * gensupport.h (pred_data): Add a "num_codes" field.
963         (add_predicate_code): Declare.
964         * gensupport.c (add_predicate_code): New function.
965         (std_pred_table): Add an "allows_const_p" field.
966         (std_preds): Set this field for predicates that allow RTX_CONST_OBJs.
967         Remove the (incomplete) list of such codes from the codes field.
968         (init_predicate_table): Use add_predicate_code.  Add all
969         RTX_CONST_OBJs if allows_const_p is true.
970         * genrecog.c (process_define_predicate): Use add_predicate_code.
971
972 2008-05-08  David Daney  <ddaney@avtrex.com>
973             Richard Sandiford  <rsandifo@nildram.co.uk>
974         
975         * config/mips/mips.md (mips_expand_compare_and_swap_12): Handle
976         special case of constant zero operands.
977         * config/mips/mips.c (mips_expand_compare_and_swap_12): Zero extend
978         old and new values.  Special case constant zero values.
979         * config/mips/mips.h (MIPS_COMPARE_AND_SWAP): Skip 'sync' if compare
980         fails.
981         (MIPS_COMPARE_AND_SWAP_12): Handle constant zero operands.
982         (MIPS_COMPARE_AND_SWAP_12_0): New macro.
983
984 2008-05-08  Paolo Bonzini  <bonzini@gnu.org>
985
986         PR target/36090
987         * simplify-rtx.c (simplify_plus_minus): Create CONST of
988         similar RTX_CONST_OBJ before CONST_INT.
989
990 2008-05-08  Steve Ellcey  <sje@cup.hp.com>
991
992         * stmt.c (expand_stack_restore): Change sa mode if needed.
993
994 2008-05-08  Richard Guenther  <rguenther@suse.de>
995
996         * config/i386/i386-protos.h (ix86_return_in_memory): Adjust
997         return type to bool.
998         (ix86_sol10_return_in_memory): Likewise.
999         (ix86_i386elf_return_in_memory): Likewise.
1000         (ix86_i386interix_return_in_memory): Likewise.
1001         * config/i386/i386.c (ix86_return_in_memory): Likewise.
1002         (ix86_sol10_return_in_memory): Likewise.
1003         (ix86_i386elf_return_in_memory): Likewise.
1004         (ix86_i386interix_return_in_memory): Likewise.
1005
1006 2008-05-08  Kai Tietz  <kai.tietz@onevision.com>
1007
1008         PR bootstrap/36180
1009         * calls.c (compute_argument_block_size ): Add ATTRIBUTE_UNUSED to
1010         fndecl argument.
1011         (emit_library_call_value_1): Add ATTRIBUTE_UNUSED to variable fndecl.
1012         * target-def.h: Check that TARGET_RETURN_IN_MEMORY isn't
1013         declared in front.
1014
1015 2008-05-08  Richard Guenther  <rguenther@suse.de>
1016
1017         * tree-data-ref.c (dr_analyze_alias): Do not set DR_SUBVARS.
1018         * tree-data-ref.h (struct dr_alias): Remove subvars field.
1019         (DR_SUBVARS): Remove.
1020         * tree-dfa.c (dump_subvars_for): Remove.
1021         (debug_subvars_for): Likewise.
1022         (dump_variable): Do not dump subvars.
1023         (remove_referenced_var): Do not remove subvars.
1024         * tree-flow-inline.h (clear_call_clobbered): SFTs no longer exist.
1025         (lookup_subvars_for_var): Remove.
1026         (get_subvars_for_var): Likewise.
1027         (get_subvars_at): Likewise.
1028         (get_first_overlapping_subvar): Likewise.
1029         (overlap_subvar): Likewise.
1030         * tree-flow.h (subvar_t): Remove.
1031         (struct var_ann_d): Remove subvars field.
1032         * tree-ssa-alias.c (mark_aliases_call_clobbered): Remove queued
1033         argument.  Remove special handling of SFTs.
1034         (compute_tag_properties): Likewise.
1035         (set_initial_properties): Likewise.
1036         (compute_call_clobbered): Likewise.
1037         (count_mem_refs): Likewise.
1038         (compute_memory_partitions): Likewise.
1039         (compute_flow_insensitive_aliasing): Likewise.
1040         (setup_pointers_and_addressables): Likewise.
1041         (new_type_alias): Likewise.
1042         (struct used_part): Remove.
1043         (used_portions): Likewise.
1044         (struct used_part_map): Likewise.
1045         (used_part_map_eq): Likewise.
1046         (used_part_map_hash): Likewise.
1047         (free_used_part_map): Likewise.
1048         (up_lookup): Likewise.
1049         (up_insert): Likewise.
1050         (get_or_create_used_part_for): Likewise.
1051         (create_sft): Likewise.
1052         (create_overlap_variables_for): Likewise.
1053         (find_used_portions): Likewise.
1054         (create_structure_vars): Likewise.
1055         * tree.def (STRUCT_FIELD_TAG): Remove.
1056         * tree.h (MTAG_P): Adjust.
1057         (struct tree_memory_tag): Remove base_for_components and
1058         unpartitionable flags.
1059         (struct tree_struct_field_tag): Remove.
1060         (SFT_PARENT_VAR): Likewise.
1061         (SFT_OFFSET): Likewise.
1062         (SFT_SIZE): Likewise.
1063         (SFT_NONADDRESSABLE_P): Likewise.
1064         (SFT_ALIAS_SET): Likewise.
1065         (SFT_UNPARTITIONABLE_P): Likewise.
1066         (SFT_BASE_FOR_COMPONENTS_P): Likewise.
1067         (union tree_node): Remove sft field.
1068         * alias.c (get_alias_set): Remove special handling of SFTs.
1069         * print-tree.c (print_node): Remove handling of SFTs.
1070         * tree-dump.c (dequeue_and_dump): Likewise.
1071         * tree-into-ssa.c (mark_sym_for_renaming): Likewise.
1072         * tree-nrv.c (dest_safe_for_nrv_p): Remove special handling of SFTs.
1073         * tree-predcom.c (set_alias_info): Do not set subvars.
1074         * tree-pretty-print.c (dump_generic_node): Do not handle SFTs.
1075         * tree-ssa-loop-ivopts.c (get_ref_tag): Likewise.
1076         * tree-ssa-operands.c (access_can_touch_variable): Likewise.
1077         (add_vars_for_offset): Remove.
1078         (add_virtual_operand): Remove special handling of SFTs.
1079         (add_call_clobber_ops): Likewise.
1080         (add_call_read_ops): Likewise.
1081         (get_asm_expr_operands): Likewise.
1082         (get_modify_stmt_operands): Likewise.
1083         (get_expr_operands): Likewise.
1084         (add_to_addressable_set): Likewise.
1085         * tree-ssa.c (verify_ssa_name): Do not handle SFTs.
1086         * tree-tailcall.c (suitable_for_tail_opt_p): Likewise.
1087         * tree-vect-transform.c (vect_create_data_ref_ptr): Do not set subvars.
1088         * tree.c (init_ttree): Remove STRUCT_FIELD_TAG initialization.
1089         (tree_code_size): Remove STRUCT_FIELD_TAG handling.
1090         (tree_node_structure): Likewise.
1091         * tree-ssa-structalias.c (set_uids_in_ptset): Remove special
1092         handling of SFTs.
1093         (find_what_p_points_to): Likewise.
1094
1095 2008-05-08  Sa Liu  <saliu@de.ibm.com>
1096
1097         * config/spu/spu.md: Fixed subti3 pattern.
1098
1099 2008-05-08  Richard Guenther  <rguenther@suse.de>
1100
1101         PR middle-end/36154
1102         * tree-ssa-structalias.c (push_fields_onto_fieldstack): Make
1103         sure to create a representative for trailing arrays for PTA.
1104
1105 2008-05-08  Richard Guenther  <rguenther@suse.de>
1106
1107         PR middle-end/36172
1108         * fold-const.c (operand_equal_p): Two objects which types
1109         differ in pointerness are not equal.
1110
1111 2008-05-08  Kai Tietz  <kai.tietz@onevision.com>
1112
1113         * calls.c (compute_argument_block_size): Add argument tree fndecl.
1114         (OUTGOING_REG_PARM_STACK_SPACE): Add function type argument.
1115         (emit_library_call_value_1): Add new variable fndecl initialized by
1116         NULL_TREE. It should be the decl type of orgfun, but this information
1117         seems not to be available here, so it uses the default calling abi.
1118         * config/arm/arm.c (arm_return_in_memory): Add fntype argumen.
1119         * config/arm/arm.h (RETURN_IN_MEMORY): Replace RETURN_IN_MEMORY
1120         by TARGET_RETURN_IN_MEMORY.
1121         * config/i386/i386-interix.h: Likewise.
1122         * config/i386/i386.h: Likewise.
1123         * config/i386/i386elf.h: Likewise.
1124         * config/i386/ptx4-i.h: Likewise.
1125         * config/i386/sol2-10.h: Likewise.
1126         * config/i386/sysv4.h: Likewise.
1127         * config/i386/vx-common.h: Likewise.
1128         * config/cris/cris.h: Removed #if 0 clause.
1129         * config/arm/arm-protos.h (arm_return_in_memory): Add fntype argument.
1130         * config/i386/i386-protos.h (ix86_return_in_memory): Add fntype
1131         argument.
1132         (ix86_sol10_return_in_memory): Likewise.
1133         (ix86_i386elf_return_in_memory): New.
1134         (ix86_i386interix_return_in_memory): New.
1135         * config/mt/mt-protos.h (mt_return_in_memory): New.
1136         * config/mt/mt.c: Likewise.
1137         * config/mt/mt.h (OUTGOING_REG_PARM_STACK_SPACE): Add FNTYPE argument.
1138         (RETURN_IN_MEMORY):  Replace by TARGET_RETURN_IN_MEMORY.
1139         * config/bfin/bfin.h: Likewise.
1140         * config/bfin/bfin-protos.h (bfin_return_in_memory): Add fntype
1141         argument.
1142         * config/bfin/bfin.c: Likewise.
1143         * config/pa/pa.h (OUTGOING_REG_PARM_STACK_SPACE): Add FNTYPE argument.
1144         * config/alpha/unicosmk.h: Likewise.
1145         * config/i386/cygming.h: Likewise.
1146         * config/iq2000/iq2000.h: Likewise.
1147         * config/mips/mips.h: Likewise.
1148         * config/mn10300/mn10300.h: Likewise.
1149         * config/rs6000/rs6000.h: Likewise.
1150         * config/score/score.h: Likewise.
1151         * config/spu/spu.h: Likewise.
1152         * config/v850/v850.h: Likewise.
1153         * defaults.h: Likewise.
1154         * doc/tm.texi (OUTGOING_REG_PARM_STACK_SPACE): Adjust documentation.
1155         * expr.c (emit_block_move): Adjust use of
1156         OUTGOING_REG_PARM_STACK_SPACE.
1157         * function.c (STACK_DYNAMIC_OFFSET): Adjust use of
1158         OUTGOING_REG_PARM_STACK_SPACE.
1159         * targhooks.c (default_return_in_memory): Remove RETURN_IN_MEMORY.
1160
1161 2008-05-08  Jakub Jelinek  <jakub@redhat.com>
1162
1163         * tree-parloops.c (create_parallel_loop): Set OMP_RETURN_NOWAIT
1164         on OMP_RETURN for OMP_FOR.
1165
1166         PR debug/35896
1167         * dwarf2out.c (dw_expand_expr, common_check): Removed.
1168         (fortran_common): New function.
1169         (gen_variable_die): Call fortran_common instead of common_check,
1170         adjust for it returning tree instead of rtx.  Formatting.
1171
1172 2008-05-07  Kenneth Zadeck  <zadeck@naturalbridge.com>
1173
1174         PR rtl/7335
1175         PR rtl/33826
1176         * see.c (see_copy_insn): Copy new pure const attributes for new call.
1177         * c-decl.c (merge_decls): Ditto.
1178         * postreload.c (record_opr_changes): Change CONST_OR_PURE_CALL_P
1179         to RTL_CONST_OR_PURE_CALL_P.
1180         * tree.c (define_local_buitin): Rename DECL_IS_PURE to DECL_PURE_P.
1181         Initialized DECL_LOOPING_CONST_PURE.
1182         (process_call_operands): Set tree_side_effects properly.
1183         * tree.h (TREE_READONLY_DECL_P): Removed.
1184         (DECL_IS_PURE): Renamed to DECL_PURE_P.
1185         (DECL_LOOPING_OR_CONST_P): New macro.
1186         (struct tree_function_decl): Added looping_const_or_pure_p.
1187         (ECF_*) Renumbered.
1188         (ECF_LOOPING_OR_CONST_P): New macro.
1189         * rtlanal.c (pure_const_p): Removed.
1190         * builtins.c (expand_builtin): Rename DECL_IS_PURE to DECL_PURE_P.
1191         * reorg.c (delete_prior_computation) Changed CONST_OR_PURE_CALL_P
1192         to RTL_CONST_CALL_P.
1193         * ipa-pure-const.c (pure_const_state_e): Added looping field.
1194         (check_decl, check_tree, check_call, scan_function): Initialize
1195         looping.
1196         (analyze_function): Rename DECL_IS_PURE to DECL_PURE_P.
1197         (static_execute): Set looping true for recursive functions.
1198         Undo setting state to IPA_NEITHER for recursive functions.
1199         * cse.c (cse_insn): 
1200         * ifcvt.c (noce_can_store_speculate_p): Changed
1201         CONST_OR_PURE_CALL_P and pure_call_p to RTL_CONST_CALL_P or 
1202         RTL_CONST_OR_PURE_CALL_P.
1203         * dse.c (scan_insn): Ditto.
1204         * local-alloc.c (validate_equiv_mem, memref_used_between_p): Ditto.
1205         * gcse.c (oprs_not_seen_p) Changed CONST_OR_PURE_CALL_P to
1206         RTL_CONST_OR_PURE_CALL_P.
1207         (store_killed_in_insn): Changed CONST_OR_PURE_CALL_P and
1208         pure_call_p to RTL_CONST_CALL_P.
1209         * gimplify.c (gimplify_call_expr): Clear side effects for
1210         non-looping pure and constant calls.
1211         * calls.c (emit_call_1): Set rtl flags from ecf flags.
1212         (flags_from_decl_or_type): Set ecf flags from decl flags.
1213         (initialize_argument_information): Turn off
1214         ECF_LOOPING_CONST_OR_PURE when turning off ECF_CONST.
1215         Change const to pure if callee_copies is true rather than just
1216         turning off const.
1217         (expand_call): Turn off ECF_LOOPING_PURE_CONST_CALL and remove old
1218         way of marking pure calls.
1219         (emit_library_call_value_1): Turn off ECF_LOOPING_PURE_CONST_CALL.
1220         Remove hack that was supposed to fix pr7335 and remove old
1221         way of marking pure calls.
1222         * emit-rtl.c (emit_copy_of_insn_after): Copy RTL_CONST_CALL_P,
1223         RTL_PURE_CALL_P, RTL_LOOPING_CONST_OR_PURE_CALL_P.
1224         * cselib.c (cselib_process_insn): Changed CONST_OR_PURE_CALL_P to
1225         RTL_CONST_OR_PURE_CALL_P.
1226         * tree-ssa-pre.c (can_value_number_call): Fixed spacing.
1227         * loop-invariant.c (find_exits, find_invariant_bb): Changed
1228         CONST_OR_PURE_CALL_P to RTL_CONST_OR_PURE_CALL_P.
1229         * sched-deps.c (schedule_analyze): Ditto.
1230         * rtl.h (struct rtx_def): Use call field, unchanging field, and
1231         return_val field of calls to represent pure and const function info.
1232         (CONST_OR_PURE_CALL_P): Deleted macro.
1233         (RTL_CONST_CALL_P, RTL_PURE_CALL_P,
1234         RTL_LOOPING_CONST_OR_PURE_CALL_P, RTL_CONST_OR_PURE_P): New macros.
1235         * tree-inline.c (copy_body_r): Changed TREE_READONLY_DECL_P to
1236         TREE_READONLY.
1237         * tree-optimize.c (execute_fixup_cfg): Added test for
1238         ECF_LOOPING_CONST_OR_PURE.
1239         * c-common.c (handle_pure_attribute): Changed DECL_IS_PURE to
1240         DECL_PURE_P.
1241         * tree-cfg.c (update_call_expr_flags): Do not clear tree side
1242         effects for looping pure or const calls.
1243         (verify_gimple_expr): Added verification code. 
1244         * config/alpha/alpha.c (alpha_legitimize_address,
1245         alpha_emit_xfloating_libcall): Changed CONST_OR_PURE_CALL_P to
1246         RTL_CONST_CALL_P.
1247         * config/s390/s390.c (s390_emit_tls_call_insn): Ditto.
1248         * config/rs6000/rs6000.c (rs6000_legitimize_tls_address): Ditto.
1249         * config/mips/mips.c (mips_call_tls_get_addr): Ditto.
1250         * cfgrtl.c (need_fake_edge_p): Changed CONST_OR_PURE_CALL_P to
1251         RTL_CONST_OR_PURE_CALL_P.
1252         * dce.c (deletable_insn_p): Allow non looping, non sibling, pure
1253         and const calls to be deleted.
1254
1255 2008-05-07  Uros Bizjak  <ubizjak@gmail.com>
1256
1257         PR target/35714
1258         * config/i386/mmx.md (mmx_subv2sf3): New expander.
1259         (*mmx_subv2sf3): Rename from mmx_subv2sf3 insn pattern.
1260         (*mmx_eqv2sf3): Rename from mmx_eqv2sf3 insn pattern.
1261         (mmx_eqv2sf3): New expander.  Use ix86_fixup_binary_operands_no_copy
1262         to handle nonimmediate operands.
1263         (*mmx_paddwd): Rename from mmx_paddwd insn pattern.
1264         (mmx_paddwd): New expander.  Use ix86_fixup_binary_operands_no_copy
1265         to handle nonimmediate operands.
1266         (*mmx_pmulhrwv4hi3): Rename from mmx_pmulhrwv4hi3 insn pattern.
1267         (mmx_pmulhrwv4hi3): New expander.  Use
1268         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
1269         (*sse2_umulv1siv1di3): Rename from sse2_umulv1siv1di3 insn pattern.
1270         (sse2_umulv1siv1di3): New expander.  Use
1271         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
1272         (*mmx_eq<mode>3): Rename from mmx_eq<mode>3 insn pattern.
1273         (mmx_eq<mode>3): New expander.  Use
1274         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
1275         (*mmx_uavgv8qi3): Rename from mmx_uavgv8qi3 insn pattern.
1276         (mmx_uavgv8qi3): New expander.  Use
1277         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
1278         (*mmx_uavgv4hi3): Rename from mmx_uavgv4hi3 insn pattern.
1279         (mmx_uavgv4hi3): New expander.  Use
1280         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
1281
1282         * config/i386/sse.md
1283         (sse_movhlps_exp): New expander.  Use ix86_fixup_binary_operands
1284         to handle nonimmediate operands.
1285         (sse_movlhps_exp): New expander.  Use ix86_fixup_binary_operands
1286         to handle nonimmediate operands.
1287         (sse_loadhps_exp): New expander.  Use ix86_fixup_binary_operands
1288         to handle nonimmediate operands.
1289         (sse_loadlps_exp): New expander.  Use ix86_fixup_binary_operands
1290         to handle nonimmediate operands.
1291         (sse2_unpckhpd_exp): New expander.  Use
1292         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
1293         (sse2_unpcklpd_exp): New expander.  Use
1294         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
1295         (sse_loadhpd_exp): New expander.  Use ix86_fixup_binary_operands
1296         to handle nonimmediate operands.
1297         (sse_loadlpd): New expander.  Use ix86_fixup_binary_operands
1298         to handle nonimmediate operands.
1299         (*sse2_<plusminus_insn><mode>3): Rename from
1300         sse2_<plusminus_insn><mode>3 insn pattern.
1301         (sse2_<plusminus_insn><mode>3): New expander.  Use
1302         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
1303         (*sse2_umulv2siv2di3): Rename from sse2_umulv2siv2di3 insn pattern.
1304         (sse2_umulv2siv2di3): New expander.  Use
1305         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
1306         (*sse4_1_mulv2siv2di3): Rename from sse4_1_mulv2siv2di3 insn pattern.
1307         (sse4_1_mulv2siv2di3): New expander.  Use
1308         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
1309         (*sse2_pmaddwd): Rename from sse2_pmaddwd insn pattern.
1310         (sse2_pmaddwd): New expander.  Use
1311         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
1312         (*sse2_eq<mode>3): Rename from sse2_eq<mode>3 insn pattern.
1313         (sse2_eq<mode>3): New expander.  Use
1314         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
1315         (*sse4_1_eqv2di3): Rename from sse4_1_eqv2di3 insn pattern.
1316         (sse4_1_eqv2di3): New expander.  Use
1317         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
1318         (*sse2_uavgv16qi3): Rename from sse2_uavgv16qi3 insn pattern.
1319         (sse2_uavgv16qi3): New expander.  Use
1320         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
1321         (*sse2_uavgv16qi3): Rename from sse2_uavgv16qi3 insn pattern.
1322         (sse2_uavgv16qi3): New expander.  Use
1323         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
1324         (*sse2_uavgv8hi3): Rename from sse2_uavgv8hi3 insn pattern.
1325         (sse2_uavgv8hi3): New expander.  Use
1326         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
1327         (*ssse3_pmulhrswv8hi3): Rename from ssse3_pmulhrswv8hi3 insn pattern.
1328         (ssse3_pmulhrswv8hi3): New expander.  Use
1329         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
1330         (*ssse3_pmulhrswv4hi3): Rename from ssse3_pmulhrswv4hi3 insn pattern.
1331         (ssse3_pmulhrswv4hi3): New expander.  Use
1332         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
1333
1334         (<sse>_vm<plusminus_insn><mode>3): Do not use ix86_binary_operator_ok.
1335         (<sse>_vmmul<mode>3): Ditto.
1336         (divv4sf3): Do not use ix86_fixup_binary_operands_no_copy.
1337         (divv2df3): Ditto.
1338         (ssse3_pmaddubsw128): Use register_operand for operand 1.
1339         (ssse3_pmaddubsw): Ditto.
1340
1341         * config/i386/i386.c (struct_builtin_description)
1342         [IX86_BUILTIN_LOADHPS]: Use CODE_FOR_sse_loadhps_exp.
1343         [IX86_BUILTIN_STOREHPS]: Use CODE_FOR_sse_loadlps_exp.
1344         [IX86_BUILTIN_LOADHPD]: Use CODE_FOR_sse2_loadhpd_exp.
1345         [IX86_BUILTIN_LOADLPD]: Use CODE_FOR_sse2_loadlpd_exp.
1346         [IX86_BUILTIN_MOVHLPS]: Use CODE_FOR_sse_movhlps_exp.
1347         [IX86_BUILTIN_MOVLHPS]: Use CODE_FOR_sse_movlhps_exp.
1348         [IX86_BUILTIN_UNPCKHPD]: Use FOR_sse2_unpckhpd_exp.
1349         [IX86_BUILTIN_UNPCKLPD]: Use FOR_sse2_unpcklpd_exp.
1350         (ix86_fixup_binary_operands): Assert that src1
1351         and src2 must have the same mode when swapped.
1352         (ix86_expand_binop_builtin): Do not use ix86_fixup_binary_operands
1353         and ix86_binary_operator_ok.  Do not force operands in registers
1354         when optimizing.
1355
1356 2008-05-07  Jan Hubicka  <jh@suse.cz>
1357
1358         * cgraph.c (dump_cgraph_node): Update.
1359         * cgraph.h (cgraph_local_info): Break out inline summary.
1360         * cgraphunit.c (cgraph_process_new_functions): Use inliner analysis
1361         hook.
1362         * ipa-inline (inline_summary): New accestor function.
1363         (cgraph_clone_inlined_nodes, cgraph_check_inline_limits,
1364         cgraph_decide_inlining, compute_inline_parameters): Update.
1365         * ipa.c (cgraph_remove_unreachable_nodes): Remove statistics.
1366
1367 2008-05-07  Maxim Kuvyrkov  <maxim@codesourcery.com>
1368
1369         Cleanup ColdFire scheduling support and add V4 pipeline model.
1370
1371         * config/m68k/m68k.md (UNSPEC_TIE): New constant.
1372         (define_attr cpu): Add cfv4 value.
1373         (define_attr type, define_attr type1): Merge into a single 'type'
1374         attribute.  Update all uses.
1375         (define_attr opx_type, define_attr opy_type, define_attr opx_access):
1376         Rearrange and update.  Rename value 'reg' to 'Rn', add value 'FPn'.
1377         Update all uses.
1378         (define_attr opx_mem, define_attr opy_mem): Remove.
1379         (define_attr op_mem): Clean up, update comment.
1380         (define_attr size): Use specific values instead of general int.
1381         (define_attr guess, define_attr split): Remove.  Update all uses.
1382         (movdf_internal, tstsi_internal, tsthi_internal, tstqi_internal,
1383         tst<mode>_68881, pushexthisi_const, movsi_const0_68000_10,
1384         movsi_const0_68040_60, movsi_const0, movsi_cf, movstrictqi_cf,
1385         zero_extendhisi2_cf, zero_extendqisi2_cfv4, cfv4_extendhisi2,
1386         68k_extendhisi2, extendqihi2, cfv4_extendqisi2, 68k_extendqisi2,
1387         floatsi<mode>2_68881, ftrunc<mode>2_68881, ftrunc<mode>2_cf,
1388         fix<mode>qi2_68881, fix<mode>hi2_68881, fix<mode>si2_68881,
1389         adddi_dishl32, addsi3_5200, add<mode>3_floatsi_68881,
1390         add<mode>3_floathi_68881, add<mode>3_floatqi_68881,
1391         add<mode>3_68881, add<mode>3_cf, subdi_dishl32, subsi3,
1392         sub<mode>3_floatsi_68881, sub<mode>3_floathi_68881,
1393         sub<mode>3_floatqi_68881, sub<mode>3_68881, sub<mode>3_cf,
1394         mulhi3, mulhisi3, mulhisisi3_s, mulsi3_68020, mulsi3_cf,
1395         umulhisi3, mulhisisi3_z, mul<mode>3_floatsi_68881,
1396         mul<mode>3_floathi_68881, mul<mode>3_floatqi_68881, fmul<mode>3_cf,
1397         div<mode>3_cf, sqrt<mode>2_cf, abs<mode>2_cf, clzsi2,
1398         one_cmplsi2_5200, subreghi1ashrdi_const32, ashrsi3, lshrsi3,
1399         bsetmemqi, bsetmemqi_ext, bclrmemqi, bclrmemqi_ext,
1400         beq, bne, bgt, blt, bordered, bunordered, buneq, bunge, bungt, bunle,
1401         bunlt, bltgt, tablejump_internal, call, non_symbolic_call_value,
1402         symbolic_call_value_jsr, symbolic_call_value_bsr, link):
1403         Update or set attributes.
1404         (stack_tie): New fake instruction.
1405
1406         * config/m68k/m68k.h (TUNE_CFV4): New macro.
1407         (m68k_sched_attr_size): Update declaration.
1408         (m68k_sched_attr_type2): Remove.
1409         (m68k_sched_address_bypass_p, m68k_sched_indexed_address_bypass_p):
1410         Declare new bypass predicates.
1411
1412         * config/m68k/m68k.c (m68k_sched_issue_rate,
1413         m68k_sched_first_cycle_multipass_dfa_lookahead): Declare hook
1414         implementations.
1415         (TARGET_SCHED_ISSUE_RATE,
1416         TARGET_SCHED_FIRST_CYCLE_MULTIPASS_DFA_LOOKAHEAD): Override hooks.
1417         (override_options): Handle scheduling for ColdFire V4 core.
1418         (m68k_expand_prologue): Emit stack_tie.
1419         (enum attr_op_type): Split value 'OP_TYPE_REG' to 'OP_TYPE_RN' and
1420         'OP_TYPE_FPN'.  Update all uses.
1421         (sched_guess_p): Remove.
1422         (sched_address_type): Handle symbolic addresses.
1423         (sched_get_operand): New static function.
1424         (sched_operand_type): Merge into sched_attr_op_type.
1425         (sched_attr_op_type): Handle FP registers, handle quick constants,
1426         update.
1427         (m68k_sched_attr_opx_type, m68k_sched_attr_opy_type): Update.
1428         (m68k_sched_attr_size): Update.  Move logic to ...
1429         (sched_get_attr_size_int): New static function.
1430         (sched_get_opxy_mem_type): New static function.
1431         (m68k_sched_attr_op_mem): Update.
1432         (m68k_sched_attr_type2): Remove.
1433         (sched_cfv4_bypass_data): New static variable.
1434         (m68k_sched_adjust_cost): Handle ColdFire V4 bypass.
1435         (m68k_sched_issue_rate): Implement scheduler hook.
1436         (struct _sched_ib: enabled_p): New field.
1437         (m68k_sched_variable_issue): Update.  Handle V4.
1438         (SCHED_DUMP_TODO, SCHED_DUMP_DONE, SCHED_DUMP_NOTHING,
1439         sched_dump_class_func_t, sched_dump_split_class,
1440         sched_dump_dfa_guess_unit_code, sched_dump_dfa_state,
1441         sched_dump_dfa_class, m68k_sched_dump): Remove.
1442         (m68k_sched_first_cycle_multipass_dfa_lookahead): Implement scheduler
1443         hook.
1444         (m68k_sched_init_global): Remove statisctics dumping, introduce
1445         sanity check that all instructions have pipeline reservations.  Handle
1446         ColdFire V4 core.
1447         (m68k_sched_dfa_pre_advance_cycle, m68k_sched_dfa_post_advance_cycle):
1448         Handle ColdFire V4 core.
1449         (sched_mem_operand_p, sched_get_reg_operand, sched_get_mem_operand):
1450         New static functions.
1451         (m68k_sched_address_bypass_p): New bypass predicate.
1452         (sched_get_indexed_address_scale): New static function.
1453         (m68k_sched_indexed_address_bypass_p): New bypass predicate.
1454
1455         * cf.md: Update comments.
1456         (define_attr type2): Remove.  Use 'type' attribute instead.
1457         Update all uses.
1458         (cf_ib): Rename to cfv123_ib.  Update all uses.
1459         (cf_oep): Rename to cfv123_oep.  Update all uses.
1460         (cf_chr): Rename to cfv123_chr.  Update all uses.
1461         (cf_mem): Rename to cfv123_mem.  Update all uses.
1462         (cf_mac): Move to more appropriate place.
1463         (cfv123_guess): New automaton and cpu_unit.
1464         (cfv123_*, cfv12_*, cfv1_*, cfv2_*, cfv3_*): Use type attribute.
1465         Update uses of 'size' attribute.  Handle before reload scheduling.
1466         (cfv123_guess): New dummy reservation for unhandled instructions.
1467         (cfv4_*): Pipeline description of ColdFire V4 core.
1468         (ignore): New reservation to handle 'ignore' type.
1469
1470 2008-05-07  Ian Lance Taylor  <iant@google.com>
1471
1472         PR middle-end/36013
1473         * gimplify.c (find_single_pointer_decl_1): Don't look through
1474         indirections.
1475         (find_single_pointer_decl): Adjust comments.
1476
1477 2008-05-07  Jakub Jelinek  <jakub@redhat.com>
1478
1479         PR middle-end/36137
1480         * fold-const.c (fold_binary): Use STRIP_SIGN_NOPS instead of
1481         STRIP_NOPS on arguments even for MIN_EXPR and MAX_EXPR.
1482
1483         PR middle-end/36106
1484         * omp-low.c (expand_omp_atomic_pipeline): Load value using the
1485         integral type rather than floating point, then VIEW_CONVERT_EXPR
1486         to the floating point type.
1487
1488 2008-05-07  Uros Bizjak  <ubizjak@gmail.com>
1489
1490         * config/i386/i386.c (ix86_expand_copysign): Force non-zero constant
1491         TFmode op0 to register.
1492
1493 2008-05-07  Alan Modra  <amodra@bigpond.net.au>
1494
1495         * c-decl.c (grokdeclarator): Comment typo.
1496
1497 2008-05-06  Aldy Hernandez  <aldyh@redhat.com>
1498
1499         * tree-flow.h: Remove prototype for computed_goto_p.
1500         * tree-cfg.c (computed_goto_p): Make static.
1501
1502 2008-05-06  H.J. Lu  <hongjiu.lu@intel.com>
1503
1504         PR target/35657
1505         * config/i386/i386.c (contains_128bit_aligned_vector_p): Renamed to ...
1506         (contains_aligned_value_p): This.  Handle _Decimal128.
1507         (ix86_function_arg_boundary): Only align _Decimal128 to its
1508         natural boundary and handle it properly.
1509
1510 2008-05-06  Martin Jambor  <mjambor@suse.cz>
1511
1512         * ipa-cp.c (ipcp_method_orig_node): Renamed to ipcp_get_orig_node.
1513         (ipcp_method_is_cloned): Renamed to ipcp_node_is_clone
1514         (ipcp_method_set_orig_node): Removed.
1515         (ipcp_cval_get_cvalue_type): Removed.
1516         (ipcp_method_get_scale): Renamed to ipcp_get_node_scale.
1517         (ipcp_method_set_scale): Renamed to ipcp_set_node_scale.
1518         (ipcp_cval_set_cvalue_type): Removed.
1519         (ipcp_cval_get_cvalue): Removed.
1520         (ipcp_cval_set_cvalue): Removed.
1521         (ipcp_type_is_const): Renamed to ipcp_lat_is_const.
1522         (ipcp_cval_equal_cvalues): Renamed to ipcp_lats_are_equal
1523         (ipcp_lats_are_equal): Changed parameters to two ipcp_lattice's
1524         (ipcp_cval_meet): Renamed to ipa_lattice_meet
1525         (ipcp_cval_changed): Changed to use ipcp_lat_is_const
1526         (ipcp_method_cval): Renamed to ipcp_get_ith_lattice
1527         (ipcp_get_ith_lattice): Changed parameters.
1528         (ipcp_cval_compute): Renamed to ipcp_lattice_from_jfunc
1529         (ipcp_lattice_from_jfunc): Changed parameters.
1530         (ipcp_redirect): Local lattice pointer instead of lattice type variable.
1531         (ipcp_method_cval_print): Added temporary variable info.
1532         (ipcp_redirect): Removed already unused local variable caller.
1533         (ipcp_redirect): New temporary variable orig_callee_info
1534         (ipcp_redirect): Removed newly unused local variable callee.
1535         (ipcp_redirect): Removed (a bit confusing) local variable type.
1536         (ipcp_insert_stage): Added local variable info.
1537         (ipcp_cval_changed): Renamed to ipcp_lattice_changed, parameters 
1538         renamed too
1539         (ipcp_formal_create): Removed.
1540         (ipcp_method_cval_set): Removed.
1541         (ipcp_propagate_stage): Renamed lattice variables.
1542         (ipcp_method_cval_set_cvalue_type): Removed.
1543         (ipcp_method_cval_print): Renamed to ipcp_print_all_lattices
1544         (ipcp_print_all_lattices): Changed printed strings to refer to 
1545         lattices rather than cvals.
1546         (ipcp_method_cval_init): Renamed to ipcp_initialize_node_lattices
1547         (ipcp_propagate_const): Changed formal parameters.
1548         (build_const_val): Changed formal parameters.
1549         (ipcp_insert_stage): Removed useless variable cvalue
1550         (build_const_val): Changed formal parameters.
1551         (ipcp_method_compute_scale): Renamed to ipcp_compute_node_scale
1552         (ipcp_after_propagate): Renamed to ipcp_change_tops_to_bottom
1553         (ipcp_callsite_param_print): Renamed to ipcp_print_all_jump_functions
1554         (ipcp_profile_mt_count_print): Renamed to ipcp_print_func_profile_counts
1555         (ipcp_print_func_profile_counts): Changed string from "method" to 
1556         "function"
1557         (ipcp_profile_cs_count_print): Renamed to ipcp_print_call_profile_counts
1558         (ipcp_profile_edge_print): Renamed to ipcp_print_edge_profiles
1559         (ipcp_profile_bb_print): Renamed to ipcp_print_bb_profiles
1560         (ipcp_structures_print): Renamed to ipcp_print_all_structures
1561         (ipcp_profile_print): Renamed to ipcp_print_profile_data
1562         (ipcp_lat_is_const): Changed parameters and made inline.
1563         (ipcp_replace_map_create): Renamed to ipcp_create_replace_map
1564         (ipcp_redirect): Renamed to ipcp_need_redirect_p
1565         (ipcp_need_redirect_p): Calls ipcp_lat_is_const instead of using 
1566         the predicate condition directly
1567         (ipcp_propagate_stage): Added local variable args. Removed local
1568         variable callee.  (Both are mere code simplifications.)
1569         (ipcp_method_dont_insert_const): Renamed to
1570         ipcp_node_not_modifiable_p.
1571         (ipcp_node_not_modifiable_p): Made inline.
1572         (ipcp_cloned_create): Renamed to ipcp_init_cloned_node
1573         (ipcp_propagate_const): Renamed to ipcp_propagate_one_const
1574         (ipcp_print_all_lattices): Removed variable cvalue
1575         (ipcp_method_scale_print): Renamed to ipcp_function_scale_print
1576         Updated comments.
1577
1578 2008-05-06  Olivier Hainque  <hainque@adacore.com>
1579
1580         * tree-sra.c (try_instantiate_multiple_fields): Early return
1581         if field has POINTER_TYPE.
1582
1583 2008-05-06  Kai Tietz  <kai.tietz@onevision.com>
1584
1585         * config/i386/i386.c (output_set_got): Fix for x86_64 output_emit_asm
1586         by using 'q' specifier for instruction.
1587         (ix86_file_end): Replaced case TARGET_64BIT_MS_ABI by TARGET_64BIT.
1588
1589 2008-05-06  Anatoly Sokolov <aesok@post.ru>
1590
1591         * config/avr/avr.md (*sbrx_branch, *sbix_branch, *sbix_branch_tmp):
1592         Change mode of zero_extract from QImode to HImode.
1593         (sign bit tests peepholes): (Ditto.).
1594
1595 2008-05-06  Uros Bizjak  <ubizjak@gmail.com>
1596
1597         * config/i386/mmx.md: Remove double backslashes from asm templates.
1598         (*mmx_addv2sf3): Rename from mmx_addv2sf3 insn pattern.
1599         (mmx_addv2sf3): New expander.  Use ix86_fixup_binary_operands_no_copy
1600         to handle nonimmediate operands.
1601         (*mmx_mulv2sf3): Rename from mmx_mulv2sf3 insn pattern.
1602         (mmx_mulv2sf3): New expander.  Use ix86_fixup_binary_operands_no_copy
1603         to handle nonimmediate operands.
1604         (*mmx_<code>v2sf3_finite): New insn pattern.
1605         (*mmx_<code>v2sf3): Rename from mmx_<code>v2sf3 insn pattern.
1606         (mmx_<code>v2sf3): New expander.  Use
1607         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
1608         (mmx_<plusminus_insn><mode>3): New expander.  Use
1609         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
1610         (*mmx_<plusminus_insn><mode>3): New insn pattern.
1611         (mmx_add<mode>3): Removed.
1612         (mmx_ssadd<mode>3): Ditto.
1613         (mmx_usadd<mode>3): Ditto.
1614         (mmx_sub<mode>3): Ditto.
1615         (mmx_sssub<mode>3): Ditto.
1616         (mmx_ussub<mode>3): Ditto.
1617         (*mmx_mulv4hi3): Rename from mmx_mulv4hi3 insn pattern.
1618         (mmx_mulv4hi3): New expander.  Use ix86_fixup_binary_operands_no_copy
1619         to handle nonimmediate operands.
1620         (*mmx_smulv4hi3_highpart): Rename from mmx_smulv4hi3_highpart
1621         insn pattern.
1622         (mmx_smulv4hi3_highpart): New expander.  Use
1623         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
1624         (*mmx_umulv4hi3_highpart): Rename from mmx_umulv4hi3_highpart
1625         insn pattern.
1626         (mmx_umulv4hi3_highpart): New expander.  Use
1627         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
1628         (*mmx_<code>v4hi3): Rename from mmx_<code>v4hi3 insn pattern.
1629         (mmx_<code>v4hi3): New expander.  Use
1630         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
1631         (*mmx_<code>v8qi3): Rename from mmx_<code>v8qi3 insn pattern.
1632         (mmx_<code>v8qi3): New expander.  Use
1633         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
1634         (*mmx_<code><mode>3): Rename from mmx_<code><mode>3 insn pattern.
1635         (mmx_<code><mode>3): New expander.  Use
1636         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
1637
1638 2008-05-05  Jan Hubicka  <jh@suse.cz>
1639
1640         PR tree-optimization/36118
1641         * passes.c (pass_init_dump_file): Fix dump header.
1642
1643 2008-05-05  Andrew Pinski  <andrew_pinski@playstation.sony.com>
1644
1645         PR middle-end/36141
1646         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Don't create
1647         VCE for function decls.
1648
1649 2008-05-05  H.J. Lu  <hongjiu.lu@intel.com>
1650
1651         * config/i386/sse.md (sse2_<plusminus_insn><mode>3): Fix a typo.
1652
1653 2008-05-05  H.J. Lu  <hongjiu.lu@intel.com>
1654
1655         * config/i386/i386.md (sat_plusminus): New.
1656         (plusminus_insn): Likewise.
1657         (plusminus_mnemonic): Likewise.
1658         (addsub): Removed.
1659         (comm): Add ss_plus, us_plus, ss_minus and us_minus.
1660         (*<addsub><mode>3_cc_overflow): Renamed to ...
1661         (*<plusminus_insn><mode>3_cc_overflow): This.
1662         (*<addsub>si3_zext_cc_overflow): Renamed to ...
1663         (*<plusminus_insn>si3_zext_cc_overflow): This.
1664
1665         * config/i386/sse.md (<addsub><mode>3): Renamed to ...
1666         (<plusminus_insn><mode>3): This.
1667         (*<addsub><mode>3): Renamed to ...
1668         (*<plusminus_insn><mode>3): This.
1669         (<sse>_vm<addsub><mode>3): Renamed to ...
1670         (<sse>_vm<plusminus_insn><mode>3): This.
1671         (sse3_h<addsub>v4sf3): Renamed to ...
1672         (sse3_h<plusminus_insn>v4sf3): This.
1673         (sse3_h<addsub>v2df3): Renamed to ...
1674         (sse3_h<plusminus_insn>v2df3): This.
1675         (<plusminus_insn><mode>3): New.
1676         (*<plusminus_insn><mode>3): Likewise.
1677         (sse2_<plusminus_insn><mode>3): Likewise.
1678         (add<mode>): Removed.
1679         (*add<mode>3): Likewise.
1680         (sse2_ssadd<mode>3): Likewise.
1681         (sse2_usadd<mode>3): Likewise.
1682         (sub<mode>3): Likewise.
1683         (*sub<mode>3): Likewise.
1684         (sse2_sssub<mode>3): Likewise.
1685         (sse2_ussub<mode>3): Likewise.
1686
1687 2008-05-05  Benjamin Kosnik  <bkoz@redhat.com>
1688
1689         * gthr-single.h: Add in required interface elements as per gthr.h.
1690         Add stub types for __gthread_key_t, __gthread_once_t. Add defines
1691         for __GTHREAD_ONCE_INIT, __GTHREAD_RECURSIVE_MUTEX_INIT.
1692         Generalize UNUSED macro. 
1693         (__gthread_once): Add.
1694         (__gthread_key_create): Add.
1695         (__gthread_key_delete): Add.
1696         (__gthread_getspecific): Add.
1697         (__gthread_setspecific): Add.
1698         
1699 2008-05-05  Andrew Pinski  <Andrew.Pinski@playstation.sony.com>
1700
1701         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): If we have
1702         the same size types for the indirect reference on the rhs, then
1703         create a VCE.
1704
1705 2008-05-05  Uros Bizjak  <ubizjak@gmail.com>
1706
1707         * config/i386/i386.md
1708         (*float<SSEMODEI24:mode><MODEF:mode>2_sse_interunit): Use only
1709         one insn template instead of template series.
1710         (*xordi_1_rex64): Ditto.
1711         (*xordi_2_rex64): Ditto.
1712
1713 2008-05-05  Ira Rosen  <irar@il.ibm.com>
1714
1715         PR tree-optimization/36119
1716         * tree-vect-transform.c (vectorizable_assignment): Set NCOPIES to 1
1717         in case of SLP.
1718
1719 2008-06-04  Jan Hubicka  <jh@suse.cz>
1720
1721         tree-optimization/36100
1722         * tree-pass.h (pass_O0_always_inline): Declare.
1723         * ipa-inline.c (inline_transform): Remove dead code.
1724         (cgraph_gate_O0_always_inline, cgraph_O0_always_inline,
1725         pass_O0_always_inline): New.
1726         * passes.c (init_optimization_passes): Add pass_O0_always_inline.
1727
1728 2008-05-04  Kai Tietz  <kai.tietz@onevision.com>
1729
1730         * config/i386/i386.c (x86_output_mi_thunk): Use movq alternative
1731         mnemonic in this_param move for TARGET_64BIT.
1732
1733 2008-05-04  Uros Bizjak  <ubizjak@gmail.com>
1734
1735         * config/i386/i386.md (*strmovsi_1): Simplify asm alternatives.
1736         (*strmovsi_rex_1): Ditto.
1737         (*strsetsi_1): Ditto.
1738         (*strsetsi_rex_1): Ditto.
1739
1740         (add<mode>cc): Macroize expander from addqicc, addhicc, addsicc and
1741         adddicc expanders using SWI mode iterator.
1742
1743 2008-05-04  H.J. Lu  <hongjiu.lu@intel.com>
1744
1745         PR target/36121
1746         * config/i386/i386.c (ix86_expand_special_args_builtin): Remove three
1747         argument handling.
1748
1749 2008-05-04  David S. Miller  <davem@davemloft.net>
1750
1751         * config.gcc (sparc*-*-*): Always set need_64bit_hwint to yes.
1752         (sparc*-*-linux*): Use linux.h in tm_file.
1753         (sparc-*-linux*): If 'enabled_targets' is 'all', build a bi-arch
1754         compiler defaulting to 32-bit.
1755         (sparc*-*-*): Remove explicit target settings of need_64bit_hwint,
1756         no longer needed.
1757         * config/sparc/linux.h: Remove definitions now obtained
1758         properly from linux.h
1759         * config/sparc/linux64.h: Likewise.
1760         (ASM_CPU_DEFAULT_SPEC): Change this to ASM_CPU64_DEFAULT_SPEC, we
1761         don't want this setting for 32-bit builds in a biarch compiler.
1762         * doc/install.texi: Add sparc-linux to list of targets
1763         supporting --enable-targets=all.
1764
1765 2008-05-03  Andrew Pinski  <pinskia@gmail.com>
1766
1767         * Makefile.in (tree-ssa-phiprop.o): Fix dependencies.
1768
1769 2008-05-03  H.J. Lu  <hongjiu.lu@intel.com>
1770
1771         * config/i386/i386.c (ix86_builtin_type): Move V4SI_FTYPE_V4SF
1772         after V4SI_FTYPE_V8HI.
1773         (ix86_init_mmx_sse_builtins): Move case V4HI_FTYPE_V4HI after
1774         case V4SI_FTYPE_V2DF.
1775
1776 2008-05-03  Kenneth Zadeck  <zadeck@naturalbridge.com>
1777
1778         * doc/invoke.texi (max-flow-memory-locations): Removed.
1779         * params.def (PARAM_MAX_FLOW_MEMORY_LOCATIONS): Removed.
1780         
1781 2008-05-03  Richard Guenther  <rguenther@suse.de>
1782
1783         PR middle-end/34973
1784         * opts.c (set_Wstrict_aliasing): Handle the turn-off case.
1785
1786 2008-05-02  David S. Miller  <davem@davemloft.net>
1787
1788         * config.gcc (need_64bit_hwint): Document libcpp dependency.
1789
1790 2008-05-02  Simon Baldwin <simonb@google.com>
1791
1792         PR bootstrap/36108
1793         * c-common.h (warn_array_subscript_range): Removed.
1794         * c-common.c (warn_array_subscript_range): Ditto.
1795         * tree-vrp.c (check_array_ref): Revert to ignoring arrays with size 2.
1796         * c-typeck.c (build_array_ref): Remove warn_array_subscript_range.
1797
1798 2008-05-02  H.J. Lu  <hongjiu.lu@intel.com>
1799
1800         * config/i386/i386.c (ix86_special_builtin_type): New.
1801         (bdesc_special_args): Likewise.
1802         (ix86_expand_special_args_builtin): Likewise.
1803         (ix86_init_mmx_sse_builtins): Updated.
1804         (ix86_expand_builtin): Updated.
1805         (ix86_expand_store_builtin): Removed.
1806         (ix86_expand_unop_builtin): Likewise.
1807
1808         * config/i386/mm3dnow.h (__v2sf): Moved to ...
1809         * config/i386/mmintrin.h (__v2sf): Here.
1810
1811         * config/i386/xmmintrin.h (_mm_loadh_pi): Replace __v2si with
1812         const __v2sf.
1813         (_mm_loadl_pi): Likewise.
1814         (_mm_storeh_pi): Replace __v2si with __v2sf.
1815         (_mm_storel_pi): Likewise.
1816
1817         * doc/extend.texi: Correct __builtin_ia32_loadhps,
1818         __builtin_ia32_loadlps, __builtin_ia32_storehps,
1819         __builtin_ia32_storelps, __builtin_ia32_loadhpd and
1820         __builtin_ia32_loadlpd.
1821
1822 2008-05-02  H.J. Lu  <hongjiu.lu@intel.com>
1823
1824         * config/i386/i386.c (ix86_builtin_type): Add FLOAT_FTYPE_FLOAT,
1825         V4SF_FTYPE_V4SF_VEC_MERGE and V2DF_FTYPE_V2DF_VEC_MERGE.
1826         (bdesc_args): Updated.  Add scalar SSE builtins with vec_merge.
1827         (ix86_init_mmx_sse_builtins): Updated.
1828         (ix86_expand_args_builtin): Likewise.
1829         (ix86_expand_builtin): Likewise.
1830         (ix86_expand_unop1_builtin): Renamed to ...
1831         (ix86_expand_unop_vec_merge_builtin): This.
1832
1833 2008-05-01  Jan Hubicka  <jh@suse.cz>
1834
1835         PR bootstrap/36100
1836         * ipa-inline.c (inline_generate_summary): Make static.
1837         (inline_transform): Do not call inlining at -O0; make static.
1838         * passes.c (execute_todo): Add sanity check.
1839         (execute_one_ipa_transform_pass): Execute proper flags.
1840
1841 2008-05-01  Eric Botcazou  <ebotcazou@adacore.com>
1842
1843         * tree.h (TYPE_NONALIASED_COMPONENT): Expand comment.
1844         (DECL_NONADDRESSABLE_P): Likewise.
1845         * alias.c (record_component_aliases): Fix comment.
1846
1847 2008-05-01  Simon Baldwin <simonb@google.com>
1848
1849         * c-common.h (warn_array_subscript_range): New function.
1850         * c-common.c (warn_array_subscript_range): Ditto.
1851         * tree-vrp.c (check_array_ref): Corrected code to agree with
1852         comment, ignoring only arrays of size 0 or size 1.
1853         * c-typeck.c (build_array_ref): Call warn_array_subscript_range.
1854
1855 2008-05-01  H.J. Lu  <hongjiu.lu@intel.com>
1856
1857         * config/i386/i386.c (ix86_builtin_type): Replace
1858         DI_FTYPE_DI_DI_INT with V1DI2DI_FTYPE_V1DI_V1DI_INT.
1859         (bdesc_args): Updated.
1860         (ix86_init_mmx_sse_builtins): Likewise.
1861         (ix86_expand_args_builtin): Likewise.
1862
1863         * config/i386/tmmintrin.h (_mm_alignr_pi8): Replace long long
1864         with __v1di.
1865
1866         * doc/extend.texi: Correct __builtin_ia32_palignr.
1867
1868 2008-05-01  H.J. Lu  <hongjiu.lu@intel.com>
1869
1870         PR target/36095
1871         * config/i386/i386.c (bdesc_crc32): Removed.
1872         (ix86_expand_crc32): Likewise.
1873         (ix86_builtin_type): Replace V2DI2TI_FTYPE_V2DI2TI_INT with
1874         V2DI2TI_FTYPE_V2DI_INT, V2DI2TI_FTYPE_V2DI2TI_V2DI2TI_INT with
1875         V2DI2TI_FTYPE_V2DI_V2DI_INT.  Add UINT64_FTYPE_UINT64_UINT64,
1876         UINT_FTYPE_UINT_UINT, UINT_FTYPE_UINT_USHORT and
1877         UINT_FTYPE_UINT_UCHAR.
1878         (bdesc_args): Updated. Add crc32 builtins.
1879         (ix86_init_mmx_sse_builtins): Updated.
1880         (ix86_expand_args_builtin): Updated to support subreg.
1881
1882         * doc/extend.texi: Correct __builtin_ia32_crc32di.
1883
1884 2008-05-01  Jan Hubicka  <jh@suse.cz>
1885
1886         * tree-pass.h (opt_pass): Add IPA_PASS.
1887         (varpool_node, cgraph_node): Forward declare.
1888         (ipa_opt_pass): Define.
1889         (pass_ipa_inline): Turn into ipa_opt_pass.
1890         (pass_apply_inline): Remove.
1891         * ipa-inline.c (pass_ipa_inline): Turn into ipa_opt_pass.
1892         (apply_inline): Turn into ....
1893         (inline_transform): ... this one.
1894         (inline_generate_summary): New function.
1895         (pass_apply_inline): Remove.
1896         * function.h (ipa_opt_pass): Forward declare structure; typedef;
1897         vector.
1898         (struct function): Add ipa_transforms_to_apply.
1899         * passes.c (register_one_dump_file): Work on IPA_PASS.
1900         (init_optimization_passes): Remove pass_inline_parameters and
1901         pass_apply_inline.
1902         (pass_init_dump_file, pass_fini_dump_file): Break out from ....
1903         (execute_one_pass) ... here; apply transforms when possible.
1904         (add_ipa_transform_pass, execute_ipa_summary_asses,
1905         execute_one_ipa_transform_pass): New.
1906         (execute_ipa_pass_list): Update for IPA_PASS type.
1907
1908 2008-05-01  H.J. Lu  <hongjiu.lu@intel.com>
1909
1910         * config/i386/i386.c (ix86_builtin_type): Add
1911         V2DI_FTYPE_V2DI_V16QI, V2DI_FTYPE_V2DI_UINT_UINT and
1912         V2DI_FTYPE_V2DI_V2DI_UINT_UINT.
1913         (bdesc_args): Add SSE4a builtins.
1914         (ix86_init_mmx_sse_builtins): Updated.
1915         (ix86_expand_args_builtin): Likewise.
1916         (ix86_expand_builtin): Likewise.
1917
1918 2008-05-01  H.J. Lu  <hongjiu.lu@intel.com>
1919
1920         * config/i386/i386.c (ix86_builtin_type): Add
1921         V8HI_FTYPE_V8HI_V8HI_COUNT, V8HI_FTYPE_V8HI_SI_COUNT,
1922         V4SI_FTYPE_V4SI_V4SI_COUNT, V4SI_FTYPE_V4SI_SI_COUNT,
1923         V4HI_FTYPE_V4HI_V4HI_COUNT, V4HI_FTYPE_V4HI_SI_COUNT,
1924         V2DI_FTYPE_V2DI_V2DI_COUNT, V2DI_FTYPE_V2DI_SI_COUNT,
1925         V2SI_FTYPE_V2SI_V2SI_COUNT, V2SI_FTYPE_V2SI_SI_COUNT,
1926         V1DI_FTYPE_V1DI_V1DI_COUNT, V1DI_FTYPE_V1DI_SI_COUNT,
1927         V8HI_FTYPE_V8HI_INT, V4SI_FTYPE_V4SI_INT, V4HI_FTYPE_V4HI_INT,
1928         V2DI2TI_FTYPE_V2DI2TI_INT, V2DI2TI_FTYPE_V2DI2TI_V2DI2TI_INT
1929         and DI_FTYPE_DI_DI_INT.
1930         (bdesc_args): Add MMX/SSE shift, shuffle and palignr builtins.
1931         (ix86_init_mmx_sse_builtins): Updated.
1932         (ix86_expand_args_builtin): Likewise.
1933         (ix86_expand_builtin): Likewise.
1934         (ix86_expand_binop_imm_builtin): Removed.
1935
1936         * doc/extend.texi: Correct __builtin_ia32_palignr128.
1937
1938 2008-04-30  Richard Guenther  <rguenther@suse.de>
1939
1940         PR tree-optimization/32921
1941         * tree-ssa-loop-im.c (mem_refs_may_alias_p): Disambiguate with TBAA.
1942
1943 2008-04-30  Richard Sandiford  <rsandifo@nildram.co.uk>
1944
1945         * config/arm/arm.c (arm_unwind_emit): Use
1946         crtl->all_throwers_are_sibcalls instead of
1947         cfun->all_throwers_are_sibcalls.
1948         (arm_output_fn_unwind): Likewise.
1949         * config/frv/frv.c (frv_stack_info): Use crtl->uses_pic_offset_table
1950         instead of cfun->uses_pic_offset_table.
1951         (frv_expand_prologue): Likewise.
1952         (frv_frame_pointer_required): Likewise.
1953         (frv_expand_fdpic_call): Likewise.
1954         (frv_emit_movsi): Likewise.
1955         * config/iq2000/iq2000.c (iq2000_expand_prologue): Use
1956         cfun->returns_pcc_struct instead of
1957         current_function_returns_pcc_struct.
1958         * config/m32c/m32c.c (need_to_save): Use crtl->calls_eh_return
1959         instead of cfun->calls_eh_return.
1960         (m32c_pushm_popm): Likewise.
1961         * config/xtensa/xtensa.h (cfun->calls_alloca): Remove bogus
1962         "extern" declaration.
1963
1964 2008-04-30  Richard Guenther  <rguenther@suse.de>
1965
1966         PR tree-optimization/21636
1967         * tree-ssa-ccp.c (ccp_fold): Handle &p->x with p being a
1968         constant address.
1969         (evaluate_stmt): Print the likely value.
1970         (ccp_visit_stmt): Avoid excessive vertical spacing.
1971
1972 2008-04-30  Rafael Espindola  <espindola@google.com>
1973
1974         * builtins.c (fold_call_expr): Return realret.
1975         * tree-ssa-threadedge.c
1976         (record_temporary_equivalences_from_stmts_at_dest): Ignore calls to
1977         __builtin_object_size.
1978
1979 2008-04-30  Seongbae Park  <seongbae.park@gmail.com>
1980
1981         * gcc.c (wrapper_string): New variable.
1982         (insert_wrapper): New function.
1983         (execute): New option -wrapper.
1984         * doc/invoke.texi (Overall Options): New driver option -wrapper.
1985
1986 2008-04-30  Nathan Froyd  <froydnj@codesourcery.com>
1987
1988         * config/rs6000/crtresgpr.asm, config/rs6000/crtresxgpr.asm,
1989         config/rs6000/crtsavgpr.asm, config/rs6000/crtresfpr.asm,
1990         config/rs6000/crtresxfpr.asm, config/rs6000/crtsavfpr.asm: Break out
1991         from...
1992         * config/rs6000/crtsavres.asm: ...here.  Remove unneeded file.
1993         * config/rs6000/e500crtres32gpr.asm, config/rs6000/e500crtres64gpr.asm,
1994         config/rs6000/e500crtres64gprctr.asm,
1995         config/rs6000/e500crtrest32gpr.asm, config/rs6000/e500crtrest64gpr.asm,
1996         config/rs6000/e500crtresx32gpr.asm, config/rs6000/e500crtresx64gpr.asm,
1997         config/rs6000/e500crtsav32gpr.asm, config/rs6000/e500crtsav64gpr.asm,
1998         config/rs6000/e500crtsav64gprctr.asm,
1999         config/rs6000/e500crtsavg32gpr.asm, config/rs6000/e500crtsavg64gpr.asm,
2000         config/rs6000/e500crtsavg64gprctr.asm: New files.
2001         * config/rs6000/t-ppccomm: Add build rules for new files.
2002         (LIB2FUNCS_STATIC_EXTRA): Add new files.
2003         * config/rs6000/t-netbsd: Add build rules for new files.
2004         (LIB2FUNCS_STATIC_EXTRA): New variable.
2005         * config/rs6000/sysv4.h (ENDFILE_SPEC): Don't include crtsavres.o
2006         (CRTSAVRES_DEFAULT_SPEC): Likewise.
2007         * config/rs6000/netbsd.h (ENDFILE_SPEC): Likewise.
2008
2009 2008-04-30  H.J. Lu  <hongjiu.lu@intel.com>
2010
2011         * config/i386/i386.c (ix86_builtin_type): Add
2012         FLOAT128_FTYPE_FLOAT128_FLOAT128, V16QI_FTYPE_V16QI_V16QI,
2013         V16QI_FTYPE_V8HI_V8HI, V8QI_FTYPE_V8QI_V8QI,
2014         V8QI_FTYPE_V4HI_V4HI, V8HI_FTYPE_V8HI_V8HI,
2015         V8HI_FTYPE_V16QI_V16QI, V8HI_FTYPE_V4SI_V4SI,
2016         V4SI_FTYPE_V4SI_V4SI, V4SI_FTYPE_V8HI_V8HI,
2017         V4SI_FTYPE_V4SF_V4SF, V4SI_FTYPE_V2DF_V2DF,
2018         V4HI_FTYPE_V4HI_V4HI, V4HI_FTYPE_V8QI_V8QI,
2019         V4HI_FTYPE_V2SI_V2SI, V4SF_FTYPE_V4SF_V4SF,
2020         V4SF_FTYPE_V4SF_V4SF_SWAP, V4SF_FTYPE_V4SF_V2SI,
2021         V4SF_FTYPE_V4SF_V2DF, V4SF_FTYPE_V4SF_DI,
2022         V4SF_FTYPE_V4SF_SI, V2DI_FTYPE_V2DI_V2DI,
2023         V2DI_FTYPE_V16QI_V16QI, V2DI_FTYPE_V4SI_V4SI,
2024         V2DI_FTYPE_V2DF_V2DF, V2SI_FTYPE_V2SI_V2SI,
2025         V2SI_FTYPE_V4HI_V4HI, V2SI_FTYPE_V2SF_V2SF,
2026         V2DF_FTYPE_V2DF_V2DF, V2DF_FTYPE_V2DF_V2DF_SWAP,
2027         V2DF_FTYPE_V2DF_V4SF, V2DF_FTYPE_V2DF_DI,
2028         V2DF_FTYPE_V2DF_SI, V2SF_FTYPE_V2SF_V2SF,
2029         V1DI_FTYPE_V1DI_V1DI, V1DI_FTYPE_V8QI_V8QI and
2030         V1DI_FTYPE_V2SI_V2SI.
2031         (bdesc_2arg): Moved to ...
2032         (bdesc_args): Here.
2033         (ix86_init_mmx_sse_builtins): Updated.
2034         (ix86_expand_args_builtin): Updated.  Take a pointer
2035         to const struct builtin_description.  Handle comparison
2036         builtin functions.
2037         (ix86_expand_sse_compare): Take a new argument for swapping operands.
2038         (ix86_expand_builtin): Updated.
2039
2040         * config/i386/sse.md (ssse3_pmaddubswv8hi3): Renamed to ...
2041         (ssse3_pmaddubsw128): This.
2042         (ssse3_pmaddubswv4hi3): Renamed to ...
2043         (ssse3_pmaddubsw): This.
2044
2045         * doc/extend.texi (__builtin_ia32_packsswb128): Correct prototype.
2046         (__builtin_ia32_packssdw128): Likewise.
2047         (__builtin_ia32_packuswb128): Likewise.
2048         (__builtin_ia32_pmaddubsw): Likewise.
2049         (__builtin_ia32_pmaddubsw128): Likewise.
2050
2051 2008-04-30  Richard Guenther  <rguenther@suse.de>
2052
2053         PR tree-optimization/14847
2054         * tree-ssa-ifcombine.c (get_name_for_bit_test): New helper function.
2055         (recognize_bits_test): Use it.
2056         (recognize_single_bit_test): Likewise.
2057
2058 2008-04-30  Martin Jambor  <mjambor@suse.cz>
2059
2060         * ipa-cp.c (ipcp_init_stage): Calls ipa_set_called_with_variable_arg
2061         instead of setting number of formal parameters to zero.
2062         (ipcp_init_stage): Do not set the number of actual parameters to zero 
2063         either.
2064         (ipcp_propagate_stage): Explicitly skipping all calls to nodes
2065         which are called with variable number of arguments.
2066         (ipcp_insert_stage): Explicitely skipping all nodes which are
2067         called with variable number of arguments.
2068         (ipcp_callsite_param_print): Skipps callsites to nodes with varaible 
2069         number of parameters.
2070
2071         * ipa-prop.h (struct ipa_node_params): Added flag
2072         called_with_var_arguments
2073         (ipa_set_param_count): Added.  Changed sole setter to use it.
2074         (ipa_get_param_count): Added.  All readers of param_count
2075         converted to use it instead.
2076         (ipa_set_called_with_variable_arg): Added.
2077         (ipa_is_called_with_var_arguments): Added.
2078         (ipa_get_ith_param): Added.  All readers of param_decls converted
2079         to use it instead.
2080         (ipa_set_cs_argument_count): Added, sole writer to argument_count 
2081         changed to use it. 
2082         (ipa_get_cs_argument_count): Added, all readers of argument_count
2083         changed to cal it.
2084         (ipa_get_ith_jump_func): Added. Accessors of jump values changed 
2085         to use it.
2086         
2087         * ipa-prop.h (struct ipcp_formal): Renamed to ipcp_lattice
2088         (struct ipcp_lattice): Renamed cval_type to type
2089         (struct ipa_node_params): ipcp_cval renamed to ipcp_lattices
2090
2091         * ipa-cp.c (ipcp_cval_get_cvalue): Changed return value to tree
2092         (ipcp_cval_set_cvalue): Changed type of parameter value to tree
2093         (ipcp_insert_stage): Changed the type of variable cvalue to tree
2094         (ipcp_replace_map_create): Changed the type of parameter cvalue to tree
2095         (build_const_val): Changed the type of parameter cvalue to tree
2096         (ipcp_propagate_const): Changed the type of parameter cvalue to tree
2097         (ipcp_method_cval_set_cvalue_type): Renamed parameter cval_type1 to type
2098         
2099         * ipa-prop.h (struct ipcp_formal): Replaced cvalue with tree called 
2100         constant 
2101
2102         * ipa-prop.c (ipa_methodlist_init): Renamed to ipa_init_func_list
2103         (ipa_methodlist_not_empty): Removed, the sole user now checks directly
2104         (ipa_add_method): Renamed to ipa_push_func_to_list
2105         (ipa_remove_method): Renamed to ipa_pop_func_from_list
2106         (ipa_callsite_param_count): Removed.
2107         (ipa_callsite_param_count_set): Removed.
2108         (ipa_callsite_param): Removed.
2109         (ipa_callsite_callee): Removed.
2110         (ipa_callsite_compute_param): Renamed to ipa_compute_jump_functions
2111         (ipa_callsite_compute_count): Renamed to ipa_count_arguments
2112         (ipa_method_formal_count): Removed.
2113         (ipa_method_formal_count_set): Removed.
2114         (ipa_method_get_tree): Removed.
2115         (ipa_method_tree_map_create): Removed.
2116         (ipa_method_compute_tree_map): Renamed to ipa_create_param_decls_array
2117         (ipa_create_param_decls_array): Creates the array itself
2118         (ipa_create_param_decls_array): Temporary variable info instead of 
2119         a few dereferences.
2120         (ipa_method_formal_compute_count): Renamed to ipa_count_formal_params
2121         (ipa_method_compute_modify): Renamed to ipa_detect_param_modifications
2122         (get_type): Removed.
2123         (ipa_jf_get_info_type): Removed.
2124         (ipa_node_create): Renamed to ipa_create_node_params
2125         (ipa_free): Renamed to ipa_free_all_node_params
2126         (ipa_nodes_create): Renamed to ipa_create_all_node_params
2127         (ipa_edges_create): Renamed to ipa_create_all_edge_args
2128         (ipa_edges_free): Renamed to ipa_free_all_edge_args
2129         (ipa_nodes_free): Integrated into ipa_free_all_node_params and removed
2130         (ipa_free_all_node_params): Deallocation to jump_functions moved to 
2131         ipa_free_all_edge_args
2132         (ipa_method_tree_print): Renamed to ipa_print_all_tree_maps
2133         (ipa_method_modify_print): Renamed to ipa_print_all_params_modified
2134         (ipa_create_methodlist_node): Removed.
2135         (ipa_methodlist_method): Removed.
2136         (ipa_methodlist_method_set): Removed.
2137         (ipa_methodlist_next_method): Removed.
2138         (ipa_methodlist_next_method_set): Removed.
2139         (ipa_method_is_modified): Removed.
2140         (ipa_method_modify_create): Removed.
2141         (ipa_method_modify_init): Temporary variable info instead of a few 
2142         dereferences.
2143         (ipa_detect_param_modifications): Temporary variable info instead of 
2144         a few dereferences.
2145         (ipa_compute_jump_functions): Temporary variable info instead of 
2146         a few dereferences.
2147         (ipa_method_modify_set): Removed.
2148         (ipa_method_tree_map): Renamed to ipa_get_param_decl_index
2149         (ipa_get_param_decl_index): Now accepts struct ipa_node_params rather 
2150         than craph_node as the first parameter.
2151         (ipa_method_modify_stmt): Renamed to ipa_check_stmt_modifications
2152         (ipa_method_modify_init): Removed.
2153         (ipa_compute_jump_functions): Added a temp variable instead of 
2154         repeatadly dereferencing the cgraph_edge.aux pointer
2155         (ipa_callsite_param_set_type): Removed.
2156         (ipa_compute_jump_functions): i renamed to index and moved to 
2157         an inner block
2158         (ipa_callsite_param_set_info_type_formal): Removed.
2159         (ipa_callsite_param_set_info_type): Removed.
2160         (ipa_callsite_param_map_create): Removed.
2161         (ipa_callsite_tree): Removed.
2162         (ipa_callsite_caller): Removed.
2163         (ipa_pop_func_from_list): return_method removed to return_func
2164
2165         * ipa-prop.h (enum cvalue_type): Renamed to ipa_lattice_type,
2166         prefixed all values with IPA_. Changed all users.
2167         (enum jump_func_type): Rnamed UNKNOWN_IPATYPE to IPA_UNKNOWN, 
2168         CONST_IPATYPE to IPA_CONST, CONST_IPATYPE_REF to IPA_CONST_REF 
2169         and FORMAL_IPATYPE IPA_PASS_THROUGH. 
2170         (union parameter_info): Renamed to jump_func_value.
2171         (union jump_func_value): Renamed value to constant
2172         (struct ipa_jump_func): Renamed info_type to value
2173         (struct ipa_node): Renamed to ipa_node_params
2174         (struct ipa_node_params): Renamed ipa_arg_num to param_count
2175         (struct ipa_node_params): Renamed ipa_param_tree to param_decls
2176         (struct ipa_node_params): Renamed ipa_mod to modified_flags
2177         (struct ipa_edge): Renamed to ipa_edge_args
2178         (struct ipa_edge_args): Renamed ipa_param_num to argument_count
2179         (struct ipa_edge_args): Renamed ipa_param_map to jump_functions
2180         (struct ipa_methodlist): Renamed to ipa_func_list
2181         (struct ipa_func_list): method_p renamed to node, next_method
2182         renamed to next
2183         (ipa_methodlist_p): Removed, switched all users to struct pointer
2184         (IS_VALID_TREE_MAP_INDEX): Renamed to IS_VALID_JUMP_FUNC_INDEX
2185
2186 2008-04-30  Alan Modra  <amodra@bigpond.net.au>
2187
2188         * config/rs6000/rs6000.c (ALWAYS_RESTORE_ALTIVEC_BEFORE_POP): Define.
2189         (rs6000_emit_epilogue): Use backchain to restore only when we
2190         have a large frame.  Make use of frame pointer to restore if we
2191         have one.  Handle ALWAYS_RESTORE_ALTIVEC_BEFORE_POP.
2192
2193 2008-04-29  Paolo Bonzini  <bonzini@gnu.org>
2194
2195         * config/avr/avr.md (*sbrx_branch, *sbix_branch, *sbix_branch_tmp):
2196         Add mode to zero_extract.
2197         (sign bit tests peepholes): (Ditto.).
2198
2199 2008-04-29  H.J. Lu  <hongjiu.lu@intel.com>
2200
2201         * config/i386/i386.c (ix86_builtins): Replace Prescott New
2202         Instructions in comments with SSE3.
2203         (ix86_builtin_type): This.  Add FLOAT128_FTYPE_FLOAT128,
2204         INT64_FTYPE_V4SF, INT64_FTYPE_V2DF, INT_FTYPE_V16QI,
2205         INT_FTYPE_V8QI, INT_FTYPE_V4SF, INT_FTYPE_V2DF,
2206         V16QI_FTYPE_V16QI, V8HI_FTYPE_V8HI, V8HI_FTYPE_V16QI,
2207         V8QI_FTYPE_V8QI, V4SI_FTYPE_V4SI, V4SI_FTYPE_V16QI,
2208         V4SI_FTYPE_V4SF, V4SI_FTYPE_V8HI, V4SI_FTYPE_V2DF,
2209         V4HI_FTYPE_V4HI, V4SF_FTYPE_V4SF, V4SF_FTYPE_V4SI,
2210         V4SF_FTYPE_V2DF, V2DI_FTYPE_V2DI, V2DI_FTYPE_V16QI,
2211         V2DI_FTYPE_V8HI, V2DI_FTYPE_V4SI, V2DF_FTYPE_V2DF,
2212         V2DF_FTYPE_V4SI, V2DF_FTYPE_V4SF, V2DF_FTYPE_V2SI,
2213         V2SI_FTYPE_V2SI, V2SI_FTYPE_V4SF, V2SI_FTYPE_V2SF,
2214         V2SI_FTYPE_V2DF, V2SF_FTYPE_V2SF and V2SF_FTYPE_V2SI.
2215         (bdesc_sse_args): Renamed to ...
2216         (bdesc_args): This.  Add IX86_BUILTIN_PF2ID, IX86_BUILTIN_PFRCP,
2217         IX86_BUILTIN_PFRSQRT, IX86_BUILTIN_PI2FD, IX86_BUILTIN_PF2IW,
2218         IX86_BUILTIN_PSWAPDSI, IX86_BUILTIN_PSWAPDSF and
2219         IX86_BUILTIN_FABSQ.
2220         (bdesc_1arg): Moved to ...
2221         (bdesc_args): Here.
2222         (ix86_init_mmx_sse_builtins): Updated.  Replace Prescott New
2223         Instructions in comments with SSE3.
2224         (ix86_expand_sse_operands_builtin): Renamed to ...
2225         (ix86_expand_args_builtin): This.  Updated.
2226         (ix86_expand_unop1_builtin): Update comments.
2227         (ix86_expand_builtin): Updated.
2228
2229 2008-04-29  Richard Guenther  <rguenther@suse.de>
2230
2231         PR tree-optimization/36078
2232         * tree-ssa-loop-ivcanon.c (tree_unroll_loops_completely):
2233         Update virtual SSA form after cleaning up the CFG.
2234
2235 2008-04-29  Richard Guenther  <rguenther@suse.de>
2236
2237         PR middle-end/15255
2238         * fold-const.c (fold_binary): Fold (A + A) * C to A * 2*C.
2239
2240 2008-04-29  Richard Guenther  <rguenther@suse.de>
2241
2242         * tree-ssa-alias.c (finalize_ref_all_pointers): Remove.
2243         (compute_may_aliases): Do not call finalize_ref_all_pointers.
2244         (compute_flow_insensitive_aliasing): Do not treat
2245         PTR_IS_REF_ALL pointers special.
2246         (get_smt_for): Likewise.
2247         (may_alias_p): Re-structure.
2248         (is_escape_site): A ref-all pointer conversion is not an escape site.
2249         * tree-ssa-structalias.c (find_what_p_points_to): Do not treat
2250         PTR_IS_REF_ALL pointers special.
2251         * tree-ssa-structalias.h (struct alias_info): Remove
2252         ref_all_symbol_mem_tag field.
2253         (PTR_IS_REF_ALL): Remove.
2254
2255 2008-04-29  Richard Guenther  <rguenther@suse.de>
2256
2257         PR middle-end/36077
2258         * fold-const.c (extract_muldiv_1): In combining division constants
2259         make sure to never overflow.
2260
2261 2008-04-29  Nick Clifton  <nickc@redhat.com>
2262
2263         * doc/tm.texi (RETURN_ADDR_RTX): Fix typo.
2264
2265 2008-04-28  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
2266
2267         PR bootstrap/35169
2268         * optc-gen.awk: Work around HP-UX/IA awk bug.
2269
2270 2008-04-28  Danny Smith  <dannysmith@users.sourceforge.net>
2271
2272         * config/i386/cygming-crtend.c (register_frame_ctor): Revert my
2273         2008-04-25 commit.
2274
2275 2008-04-28  Uros Bizjak  <ubizjak@gmail.com>
2276
2277         PR target/36073
2278         * config/i386/i386.md
2279         (*float<SSEMODEI24:mode><MODEF:mode>2_mixed_interunit):
2280         Change operand 1 predicate to nonimmediate_operand.
2281
2282 2008-04-28  Jakub Jelinek  <jakub@redhat.com>
2283
2284         PR debug/36060
2285         * dwarf2out.c (struct die_struct): Mark as chain_circular through
2286         die_sub field.
2287         * gengtype.c (walk_type, write_func_for_structure): Handle
2288         chain_circular.
2289         * doc/gty.texi: Document chain_circular.
2290
2291 2008-04-28  Richard Guenther  <rguenther@suse.de>
2292
2293         PR tree-optimization/36066
2294         * tree-vrp.c (execute_vrp): Cleanup the CFG only after finalizing
2295         SCEV and loop.
2296
2297 2008-04-28  Uros Bizjak  <ubizjak@gmail.com>
2298
2299         PR target/36064
2300         * config/i386/i386.md
2301         (floatdi<X87MODEF:mode>2_i387_with_xmm splitters):
2302         Use match_scratch instead of match_operand for operands 3 and 4.
2303
2304 2008-04-27  Richard Guenther  <rguenther@suse.de>
2305
2306         PR tree-optimization/18754
2307         PR tree-optimization/34223
2308         * tree-pass.h (pass_complete_unrolli): Declare.
2309         * tree-ssa-loop-ivcanon.c (try_unroll_loop_completely): Print
2310         loop size before and after unconditionally of UL_NO_GROWTH in effect.
2311         Rewrite loop into loop closed SSA form if it is not already.
2312         (tree_unroll_loops_completely): Re-structure to iterate over
2313         innermost loops with intermediate CFG cleanups.
2314         Unroll outermost loops only if requested or the code does not grow
2315         doing so.
2316         * tree-ssa-loop.c (gate_tree_vectorize): Don't shortcut if no
2317         loops are available.
2318         (tree_vectorize): Instead do so here.
2319         (tree_complete_unroll): Also unroll outermost loops.
2320         (tree_complete_unroll_inner): New function.
2321         (gate_tree_complete_unroll_inner): Likewise.
2322         (pass_complete_unrolli): New pass.
2323         * tree-ssa-loop-manip.c (find_uses_to_rename_use): Only record
2324         uses outside of the loop.
2325         (tree_duplicate_loop_to_header_edge): Only verify loop-closed SSA
2326         form if it is available.  
2327         * tree-flow.h (tree_unroll_loops_completely): Add extra parameter.
2328         * passes.c (init_optimization_passes): Schedule complete inner
2329         loop unrolling pass before the first CCP pass after final inlining.
2330
2331 2008-04-27  Nathan Sidwell  <nathan@codesourcery.com>
2332
2333         * targhooks.h (default_emutls_var_fields,
2334         default_emutls_var_init): Declare.
2335         * tree.h (DECL_THREAD_LOCAL): Compare against TLS_MODEL_REAL.
2336         * target.h (struct gcc_target): Add struct emutls member.
2337         * target-def.h (TARGET_EMUTLS_GET_ADDRESS,
2338         TARGET_EMUTLS_REGISTER_COMMON, TARGET_EMUTLS_VAR_SECTION,
2339         TARGET_EMUTLS_TMPL_SECTION, TARGET_EMUTLS_VAR_PREFIX,
2340         TARGET_EMUTLS_TMPL_PREFIX, TARGET_EMUTLS_VAR_FIELDS,
2341         TARGET_EMUTLS_VAR_INIT, TARGET_EMUTLS_DEBUG_FORM_TLS_ADDRESS,
2342         TARGET_EMUTLS_VAR_ALIGN_FIXED, TARGET_EMUTLS): New.
2343         (TARGET_INITIALIZER): Add TARGET_EMUTLS.
2344         * builtins.def (BUILT_IN_EMUTLS_GET_ADDRESS,
2345         BUILT_IN_EMUTLS_REGISTER_COMMON): Get name from targetm structure.
2346         * dwarf2out.c (loc_descriptor_from_tree_1): Check if emutls can
2347         emit debug information.
2348         * coretypes.h (tls_model): Add TLS_MODEL_EMULATED, TLS_MODEL_REAL.
2349         * varasm.c: Include targhooks.h.
2350         (emutls_object_section, emutls_tmpl_section): New.
2351         (EMUTLS_VAR_PREFIX, EMUTLS_TMPL_PREFIX): Remove.
2352         (EMUTLS_SEPARATOR): New.
2353         (prefix_name): New.
2354         (get_emutls_object_name): New.
2355         (default_emutls_var_fields): New, broken out of ...
2356         (get_emutls_object_type): ... here.  Adjust to use target hooks.
2357         (get_emutls_init_templ_addr): Adjust to use target hooks.
2358         (emutls_decl): Adjust to use target hooks.
2359         (emutls_finish): Likewise.
2360         (default_emutls_var_init): New, broken out of ...
2361         (assemble_variable): ... here.  Adjust to use target hooks.
2362         * output.h (enum section_category): Add SECCAT_EMUTLS_VAR,
2363         SECCAT_EMUTLS_TMPL.
2364         * c-common.c (handle_section_attribute): Prevent overriding
2365         sections for emulated tls with special sections.
2366         * config/i386/i386.c (x86_64_elf_select_section): Add
2367         SECCAT_EMUTLS_VAR and SECCAT_EMUTLS_TMPL.
2368         (x86_64_elf_unique_section): Likewise.
2369         * config/vxworks.c: Include tree.h.
2370         (vxworks_emutls_var_fields, vxworks_emutls_var_init): New.
2371         (vxworks_override_options): Set TLS scheme.
2372         * doc/tm.texi (Emulated TLS): New node.
2373
2374 2008-04-26  Simon Baldwin <simonb@google.com>
2375
2376         PR c/35652
2377         * builtins.c (c_strlen): Suppressed multiple warnings that can occur
2378         with propagated string constants.
2379
2380 2008-04-26  Uros Bizjak  <ubizjak@gmail.com>
2381
2382         * config/i386/i386.md (fix_trunc<mode>_i387_fisttp_with_temp): Use 'X'
2383         constraint for operand 2 when operand 0 is memory operand.
2384         (fix_truncdi_i387_with_temp): : Use 'X' constraint for operand 4 when
2385         operand 0 is memory operand.
2386         (fix_trunc<mode>_i387_with_temp): Ditto.
2387         (*floatsi<mode>2_vector_mixed_with_temp): Use 'X' constraint for
2388         operand 2 when operand 1 is memory operand.
2389         (*float<SSEMODEI24:mode><MODEF:mode>2_mixed_with_temp): Ditto.
2390         (*floatsi<mode>2_vector_sse_with_temp): Ditto.
2391         (*float<SSEMODEI24:mode><MODEF:mode>2_sse_with_temp): Ditto.
2392         (*float<SSEMODEI24:mode><X87MODEF:mode>2_i387_with_temp): Ditto.
2393         (floatdi<X87MODEF:mode>2_i387_with_xmm): Use 'X' constraint for
2394         operands 2,3 and 4 when operand 1 is memory operand.
2395         (fistdi2_with_temp): Use 'X' constraint for operand 2 when operand 0
2396         is memory operand.
2397         (fistdi2_floor_with_temp): Ditto.
2398         (fist<mode>2_floor_with_temp): Ditto.
2399         (fistdi2_ceil_with_temp): Ditto.
2400         (fist<mode>2_ceil_with_temp): Ditto.
2401         (*truncdfsf_fast_mixed): Merge alternatives 0 and 1.
2402
2403 2008-04-26  David Daney  <ddaney@avtrex.com>
2404
2405         * config/mips/mips.md (UNSPEC_COMPARE_AND_SWAP_12): New
2406         unspec_volitile.
2407         (UNSPEC_SYNC_OLD_OP, UNSPEC_SYNC_NEW_OP, UNSPEC_SYNC_EXCHANGE,
2408         UNSPEC_MEMORY_BARRIER, UNSPEC_SET_GOT_VERSION,
2409         UNSPEC_UPDATE_GOT_VERSION): Renumber.
2410         (sync_compare_and_swap<mode>): New expand for QI and HI modes.
2411         (compare_and_swap_12): New insn.
2412         * config/mips/mips-protos.h (mips_expand_compare_and_swap_12): Declare.
2413         * config/mips/mips.c (mips_force_binary): New function.
2414         (mips_emit_int_order_test, mips_expand_synci_loop): Use it.
2415         (mips_expand_compare_and_swap_12): New function.
2416         * config/mips/mips.h (MIPS_COMPARE_AND_SWAP_12): New macro.
2417
2418 2008-04-25  Jan Hubicka  <jh@suse.cz>
2419
2420         PR testsuite/35843
2421         * cfgexpand.c (pass_expand): Turn into RTL pass.
2422         * passes.c (execute_one_pass): Do pass typechecking after execution.
2423         * tree-pass.h (pass_expand): Turn into RTL pass.
2424
2425         * function.h (struct rtl_data): Move here fields
2426         accesses_prior_frames, calls_eh_return, saves_all_registers,
2427         has_nonlocal_goto, has_asm_statement, is_thunk,
2428         all_throwers_are_sibcalls, limit_stack, profile, uses_const_pool,
2429         uses_pic_offset_table, uses_eh_lsda, tail_call_emit,
2430         arg_pointer_save_area_init from struct function; turn into bool.
2431         (struct function): Move
2432         calls_eh_return, saves_all_registers, has_nonlocal_goto,
2433         has_asm_statement, is_thunk, all_throwers_are_sibcalls, limit_stack,
2434         profile, uses_const_pool, uses_pic_offset_table, uses_eh_lsda,
2435         tail_call_emit, arg_pointer_save_area_init
2436         into struct rtl_data.  Remove recursive_call_emit and gimplified flags.
2437         (current_function_returns_struct, current_function_returns_pcc_struct,
2438         current_function_calls_setjmp, current_function_calls_alloca,
2439         current_function_accesses_prior_frames,
2440         current_function_calls_eh_return, current_function_is_thunk,
2441         current_function_stdarg, current_function_profile,
2442         current_function_limit_stack, current_function_uses_pic_offset_table,
2443         current_function_uses_const_pool, current_function_has_nonlocal_label,
2444         current_function_saves_all_registers,
2445         current_function_has_nonlocal_goto,
2446         current_function_has_asm_statement): Remove accesor macros.
2447         * ra-conflict.c (global_conflicts): Update.
2448         * tree-tailcall.c (suitable_for_tail_opt_p): Update.
2449         (suitable_for_tail_call_opt_p): Update.
2450         * builtins.c (expand_builtin_return_addr): Update.
2451         (expand_builtin_setjmp_setup): Update.
2452         (expand_builtin_nonlocal_goto): Update.
2453         * final.c (final_start_function): Update.
2454         (profile_function): Update.
2455         (leaf_function_p): Update.
2456         (only_leaf_regs_used): Update.
2457         * df-scan.c (df_get_exit_block_use_set): Update.
2458         * dojump.c (clear_pending_stack_adjust): Update.
2459         * tree-stdarg.c (gate_optimize_stdarg): Update.
2460         * gimple-low.c (lower_function_body): Update.
2461         * global.c (compute_regsets): Update.
2462         (global_alloc): Update.
2463         * dwarf2out.c (dwarf2out_begin_prologue): Update.
2464         * expr.c (expand_assignment): Update.
2465         * dse.c (dse_step0): Update.
2466         (dse_step1): Update.
2467         * c-decl.c (store_parm_decls): Update.
2468         * local-alloc.c (combine_regs): Update.
2469         (find_free_reg): Update.
2470         * function.c (assign_parms_augmented_arg_list): Update.
2471         (assign_parm_find_data_types): Update.
2472         (assign_parms): Update.
2473         (allocate_struct_function): Update.
2474         (expand_function_start): Update.
2475         (expand_function_end): Update.
2476         (get_arg_pointer_save_area): Update.
2477         (thread_prologue_and_epilogue_insns): Update.
2478         (rest_of_match_asm_constraints): Update.
2479         * stor-layout.c (variable_size): Update.
2480         * gcse.c (gcse_main): Update.
2481         (bypass_jumps): Update.
2482         * gimplify.c (gimplify_function_tree): Update.
2483         * calls.c (emit_call_1): Update.
2484         (expand_call): Update.
2485         * bt-load.c (compute_defs_uses_and_gen): Update.
2486         * except.c (sjlj_assign_call_site_values): Update.
2487         (sjlj_emit_function_enter): Update.
2488         (can_throw_external): Update.
2489         (set_nothrow_function_flags): Update.
2490         (expand_builtin_unwind_init): Update.
2491         (expand_eh_return): Update.
2492         (convert_to_eh_region_ranges): Update.
2493         (output_function_exception_table): Update.
2494         * emit-rtl.c (gen_tmp_stack_mem): Update.
2495         * cfgexpand.c (expand_used_vars): Update.
2496         (tree_expand_cfg): Update.
2497         * cfgcleanup.c (rest_of_handle_jump): Update.
2498         * explow.c (allocate_dynamic_stack_space): Update.
2499         * varasm.c (assemble_start_function): Update.
2500         (force_const_mem): Update.
2501         (mark_constant_pool): Update.
2502         * tree-optimize.c (tree_rest_of_compilation): Update.
2503         * stack-ptr-mod.c (notice_stack_pointer_modification): Update.
2504         * tree-cfg.c (notice_special_calls): Update.
2505         (is_ctrl_altering_stmt): Update.
2506         (tree_can_make_abnormal_goto): Update.
2507         (tree_purge_dead_abnormal_call_edges): Update.
2508         * config/alpha/predicates.md: Update.
2509         * config/alpha/alpha.c (alpha_sa_mask): Update.
2510         (alpha_sa_size): Update.
2511         (alpha_does_function_need_gp): Update.
2512         (alpha_expand_prologue): Update.
2513         (alpha_start_function): Update.
2514         (alpha_output_function_end_prologue): Update.
2515         (alpha_expand_epilogue): Update.
2516         * config/frv/frv.c (frv_stack_info): Update.
2517         (frv_expand_epilogue): Update.
2518         * config/s390/s390.c (s390_regs_ever_clobbered): Update.
2519         (s390_register_info): Update.
2520         (s390_frame_info): Update.
2521         (s390_init_frame_layout): Update.
2522         (s390_can_eliminate): Update.
2523         (save_gprs): Update.
2524         * config/spu/spu.c (spu_split_immediate): Update.
2525         (need_to_save_reg): Update.
2526         (spu_expand_prologue): Update.
2527         (spu_expand_epilogue): Update.
2528         * config/sparc/sparc.md: Update.
2529         * config/sparc/sparc.c (eligible_for_return_delay): Update.
2530         (sparc_tls_got): Update.
2531         (legitimize_pic_address): Update.
2532         (sparc_emit_call_insn): Update.
2533         (sparc_expand_prologue): Update.
2534         (output_return): Update.
2535         (print_operand): Update.
2536         (sparc_function_ok_for_sibcall): Update.
2537         * config/sparc/sparc.h (EXIT_IGNORE_STACK): Update.
2538         * config/m32r/m32r.md: Update.
2539         * config/m32r/m32r.c (MUST_SAVE_RETURN_ADDR): Update.
2540         (m32r_compute_frame_size): Update.
2541         (m32r_expand_prologue): Update.
2542         (m32r_expand_epilogue): Update.
2543         (m32r_legitimize_pic_address): Update.
2544         * config/m32r/m32r.h (FRAME_POINTER_REQUIRED): Update.
2545         * config/i386/linux.h (SUBTARGET_FRAME_POINTER_REQUIRED): Update.
2546         * config/i386/i386.c (ix86_frame_pointer_required): Update.
2547         (gen_push): Update.
2548         (ix86_save_reg): Update.
2549         (ix86_compute_frame_layout): Update.
2550         (ix86_expand_prologue): Update.
2551         (ix86_expand_epilogue): Update.
2552         * config/sh/sh.c (output_stack_adjust): Update.
2553         (calc_live_regs): Update.
2554         (sh5_schedule_saves): Update.
2555         (sh_expand_prologue): Update.
2556         (sh_expand_epilogue): Update.
2557         (sh_setup_incoming_varargs): Update.
2558         (sh_allocate_initial_value): Update.
2559         (sh_get_pr_initial_val): Update.
2560         * config/sh/sh.h (SHMEDIA_REGS_STACK_ADJUST): Update.
2561         * config/sh/sh.md (label:): Update.
2562         * config/avr/avr.c (out_movhi_mr_r): Update.
2563         * config/crx/crx.h (enum): Update.
2564         * config/xtensa/xtensa.h (along): Update.
2565         * config/stormy16/stormy16.c Update.
2566         (xstormy16_compute_stack_layout): Update.
2567         * config/fr30/fr30.c (MUST_SAVE_RETURN_POINTER): Update.
2568         (fr30_expand_prologue): Update.
2569         * config/cris/cris.c (cris_conditional_register_usage): Update.
2570         (cris_reg_saved_in_regsave_area): Update.
2571         (cris_initial_frame_pointer_offset): Update.
2572         (cris_simple_epilogue): Update.
2573         (cris_expand_prologue): Update.
2574         (cris_expand_epilogue): Update.
2575         (cris_expand_pic_call_address): Update.
2576         (cris_asm_output_symbol_ref): Update.
2577         (cris_asm_output_label_ref): Update.
2578         * config/cris/cris.md Update.
2579         * config/iq2000/iq2000.c (compute_frame_size): Update.
2580         (iq2000_expand_epilogue): Update.
2581         * config/mt/mt.h (save_direction): Update.
2582         * config/mn10300/mn10300.c (mn10300_function_value): Update.
2583         * config/ia64/ia64.c (ia64_compute_frame_size): Update.
2584         (ia64_secondary_reload_class): Update.
2585         * config/m68k/m68k.c (m68k_save_reg): Update.
2586         (m68k_expand_prologue): Update.
2587         (m68k_expand_epilogue): Update.
2588         (legitimize_pic_address): Update.
2589         * config/rs6000/rs6000.c (rs6000_got_register): Update.
2590         (first_reg_to_save): Update.
2591         (first_altivec_reg_to_save): Update.
2592         (compute_vrsave_mask): Update.
2593         (compute_save_world_info): Update.
2594         (rs6000_stack_info): Update.
2595         (spe_func_has_64bit_regs_p): Update.
2596         (rs6000_ra_ever_killed): Update.
2597         (rs6000_emit_eh_reg_restore): Update.
2598         (rs6000_emit_allocate_stack): Update.
2599         (rs6000_emit_prologue): Update.
2600         (rs6000_emit_epilogue): Update.
2601         (rs6000_output_function_epilogue): Update.
2602         (output_profile_hook): Update.
2603         (rs6000_elf_declare_function_name): Update.
2604         * config/rs6000/rs6000.h (rs6000_args): Update.
2605         * config/rs6000/rs6000.md: Update.
2606         * config/mcore/mcore.c (mcore_expand_prolog): Update.
2607         * config/arc/arc.c (arc_output_function_epilogue): Update.
2608         * config/arc/arc.h (FRAME_POINTER_REQUIRED): Update.
2609         * config/darwin.c (machopic_function_base_name): Update.
2610         * config/score/score3.c (score3_compute_frame_size): Update.
2611         (rpush): Update.
2612         (rpop): Update.
2613         (score3_epilogue): Update.
2614         * config/score/score7.c (score7_compute_frame_size): Update.
2615         (score7_prologue): Update.
2616         (score7_epilogue): Update.
2617         * config/score/score.h (FRAME_POINTER_REQUIRED): Update.
2618         * config/arm/linux-elf.h (SUBTARGET_FRAME_POINTER_REQUIRED): Update.
2619         * config/arm/arm.c (use_return_insn): Update.
2620         (require_pic_register): Update.
2621         (arm_load_pic_register): Update.
2622         (arm_compute_save_reg0_reg12_mask): Update.
2623         (arm_compute_save_reg_mask): Update.
2624         (thumb1_compute_save_reg_mask): Update.
2625         (output_return_instruction): Update.
2626         (arm_output_function_prologue): Update.
2627         (arm_output_epilogue): Update.
2628         (arm_get_frame_offsets): Update.
2629         (arm_expand_prologue): Update.
2630         (thumb_pushpop): Update.
2631         (thumb_exit): Update.
2632         (thumb1_expand_prologue): Update.
2633         (thumb1_expand_epilogue): Update.
2634         (arm_unwind_emit): Update.
2635         (arm_output_fn_unwind): Update.
2636         * config/arm/arm.h (FRAME_POINTER_REQUIRED): Update.
2637         * config/arm/arm.md: Update.
2638         * config/pa/pa.md: Update.
2639         * config/pa/pa.c (legitimize_pic_address): Update.
2640         (compute_frame_size): Update.
2641         (hppa_expand_prologue): Update.
2642         (hppa_expand_epilogue): Update.
2643         (borx_reg_operand): Update.
2644         * config/pa/pa.h (FRAME_POINTER_REQUIRED): Update.
2645         (HARD_REGNO_RENAME_OK): Update.
2646         * config/mips/mips.c (mips_global_pointer): Update.
2647         (mips_save_reg_p): Update.
2648         (mips_compute_frame_info): Update.
2649         (mips_frame_pointer_required): Update.
2650         (mips_expand_prologue): Update.
2651         (mips_expand_epilogue): Update.
2652         (mips_can_use_return_insn): Update.
2653         (mips_reorg_process_insns): Update.
2654         * config/v850/v850.c (compute_register_save_size): Update.
2655         * config/mmix/mmix.h (FRAME_POINTER_REQUIRED): Update.
2656         * config/mmix/mmix.c (along): Update.
2657         (mmix_expand_epilogue): Update.
2658         * config/bfin/bfin.c (legitimize_pic_address): Update.
2659         (must_save_p): Update.
2660         (stack_frame_needed_p): Update.
2661         (add_to_reg): Update.
2662         (bfin_expand_prologue): Update.
2663         * stmt.c (expand_asm_operands): Update.
2664         * reload1.c (reload): Update.
2665         (init_elim_table): Update.
2666
2667 2008-04-25  Bob Wilson  <bob.wilson@acm.org>
2668         
2669         * optabs.c (expand_float): Fix REG_EQUAL for UNSIGNED_FLOAT libcall.
2670         
2671 2008-04-25  H.J. Lu  <hongjiu.lu@intel.com>
2672
2673         * config/i386/sse.md (mov<mode>): Replace SSEMODEI with SSEMODE.
2674         (*mov<mode>_internal): Likewise.  Support V4SF and V2DF.
2675         (mov<mode>): Removed.
2676         (*movv4sf_internal): Likewise.
2677         (*movv2df_internal): Likewise.
2678
2679 2008-04-25  Pompapathi V Gadad <Pompapathi.V.Gadad@nsc.com>
2680
2681         * config.gcc (crx-*-elf): Remove deprecation.
2682
2683 2008-04-25  Danny Smith  <dannysmith@users.sourceforge.net>
2684
2685         * config/i386/cygming-crtend.c (register_frame_ctor): Register
2686         __gcc_deregister_frame with atexit.
2687         (deregister_frame_dtor): Remove.
2688
2689 2008-04-24  Nathan Froyd  <froydnj@codesourcery.com>
2690             Nathan Sidwell  <nathan@codesourcery.com>
2691
2692         * config/rs6000/rs6000.opt (mspe): Remove Var property.
2693         (misel): Likewise.
2694         * config/rs6000/rs6000.h (rs6000_spe): Declare.
2695         (rs6000_isel): Likewise.
2696         * config/rs6000/rs6000.c (rs6000_spe): New variable.
2697         (rs6000_isel): New variable.
2698         (rs6000_handle_option): Handle OPT_mspe and OPT_misel.
2699
2700 2008-04-24  Jakub Jelinek  <jakub@redhat.com>
2701
2702         PR c++/35758
2703         * c-common.c (handle_vector_size_attribute): Call
2704         lang_hooks.types.reconstruct_complex_type instead of
2705         reconstruct_complex_type.
2706         * config/rs6000/rs6000.c (rs6000_handle_altivec_attribute): Likewise.
2707         * config/spu/spu.c (spu_handle_vector_attribute): Likewise.
2708         * langhooks.h (struct lang_hooks_for_types): Add
2709         reconstruct_complex_type hook.
2710         * langhooks-def.h (LANG_HOOKS_RECONSTRUCT_COMPLEX_TYPE): Define.
2711         (LANG_HOOKS_FOR_TYPES_INITIALIZER): Add it.
2712
2713 2008-04-24  Richard Guenther  <rguenther@suse.de>
2714
2715         * c-common.h (check_builtin_function_arguments): Declare.
2716         * c-common.c (validate_nargs): New function.
2717         (check_builtin_function_arguments): Likewise.
2718         * c-typeck.c (build_function_call): Call
2719         check_builtin_function_arguments.
2720         * builtins.c (fold_builtin_classify): Remove error reporting code.
2721         (fold_builtin_unordered_cmp): Likewise.
2722         (fold_builtin_1): Likewise.
2723         (fold_builtin_n): Likewise.
2724
2725 2008-04-24  Jakub Jelinek  <jakub@redhat.com>
2726
2727         PR tree-optimization/36008
2728         * fold-const.c (try_move_mult_to_index): If s == NULL, divide
2729         the original op1, rather than delta by step.
2730
2731 2008-04-22  Antoniu Pop  <antoniu.pop@gmail.com>
2732             Sebastian Pop  <sebastian.pop@amd.com>
2733
2734         * tree-parloops.c (take_address_of, eliminate_local_variables_1,
2735         eliminate_local_variables_stmt, eliminate_local_variables,
2736         separate_decls_in_loop_name, separate_decls_in_loop_stmt,
2737         separate_decls_in_loop, gen_parallel_loop): Make them work on a region
2738         of code delimited by two edges in the CFG.
2739         (separate_decls_in_loop_name): Renamed separate_decls_in_region_name.
2740         (separate_decls_in_loop_stmt): Renamed separate_decls_in_region_stmt.
2741         (separate_decls_in_loop): Renamed separate_decls_in_region.  Isolate 
2742         the case of parallelisation of reductions.
2743         (expr_invariant_in_region_p): New.
2744
2745         * tree-flow.h (gather_blocks_in_sese_region): Declared.
2746         * tree-cfg.c (gather_blocks_in_sese_region): Extern.
2747
2748 2008-04-24  Ira Rosen  <irar@il.ibm.com>
2749             Richard Guenther  <rguenther@suse.de>
2750
2751         PR tree-optimization/36034
2752         * tree-vect-analyze.c (vect_analyze_group_access): SLP is
2753         incapable of dealing with loads with gaps.
2754
2755 2008-04-24  Rafael Espindola  <espindola@google.com>
2756
2757         * tree-flow.h (vrp_evaluate_conditional): Change signature.
2758         * tree-ssa-propagate.c (fold_predicate_in): Update call to
2759         vrp_evaluate_conditional.
2760         * tree-vrp.c (vrp_evaluate_conditional_warnv): Remove.
2761         (vrp_evaluate_conditional): Split the cond argument.
2762         (vrp_visit_cond_stmt): Use vrp_evaluate_conditional_warnv_with_ops.
2763         (simplify_stmt_for_jump_threading): Update call to
2764         vrp_evaluate_conditional.
2765
2766 2008-04-24  Ira Rosen  <irar@il.ibm.com>
2767
2768         PR tree-optimization/35982
2769         * tree-vect-analyze.c (vect_check_interleaving): Check that the
2770         interleaved data-refs are of the same type.
2771
2772 2008-04-24  Danny Smith  <dannysmith@users.net>
2773
2774         * c-format.c (check_format_info_main): Use strncmp rather than a
2775         magic prefix to handle multichar length specs.
2776         * config/i386/msformat-c.c (format_length_info ms_printf_length_specs):
2777         Don't prefix "I64" and "I32" with '\0'.
2778
2779 2008-04-24  Jakub Jelinek  <jakub@redhat.com>
2780
2781         PR target/36015
2782         * config/i386/i386.c (init_cumulative_args): Don't pass anything
2783         in registers for -m32 only if stdarg_p (fntype).
2784
2785 2008-04-24  Uros Bizjak  <ubizjak@gmail.com>
2786
2787         PR rtl-optimization/36006
2788         * expmed.c (store_fixed_bit_field): Copy op0 rtx before moving
2789         temp to op0 in order to avoid invalid rtx sharing.
2790
2791 2008-04-23  Paolo Bonzini  <bonzini@gnu.org>
2792
2793         * tree-cfg.c (verify_expr): Check with is_gimple_address.  Don't
2794         check TREE_INVARIANT.
2795         * tree-gimple.c (is_gimple_address): New.
2796         (is_gimple_invariant_address): Simplify using decl_address_invariant_p.
2797         * tree-gimple.h (is_gimple_address): New.
2798         * tree.h (decl_address_invariant_p): New.
2799         * tree.c (make_node_stat): Don't set TREE_INVARIANT.
2800         (build_string): Likewise.
2801         (decl_address_invariant_p): New, from is_gimple_invariant_address.
2802         (tree_invariant_p_1): Likewise.
2803         (save_expr): Use it.
2804         (tree_invariant_p): New.
2805         (skip_simple_arithmetic): Use it.
2806         (stabilize_reference_1): Use it.
2807         (recompute_tree_invariant_for_addr_expr): Don't update TREE_INVARIANT,
2808         simplify.
2809         (build1_stat): Drop code to compute TREE_INVARIANT.
2810         (build2_stat): Drop code to compute TREE_INVARIANT.
2811         (build3_stat): Drop code to compute TREE_INVARIANT.
2812         (build4_stat): Drop code to compute TREE_INVARIANT.
2813         (build5_stat): Drop code to compute TREE_INVARIANT.
2814         (build7_stat): Drop code to compute TREE_INVARIANT.
2815         (merge_dllimport_decl_attributes): Don't mention TREE_INVARIANT.
2816         * tree.h (struct tree_base): Remove invariant_flag.
2817         (TREE_INVARIANT): Remove.
2818         * builtins.c (build_string_literal): Don't set TREE_INVARIANT.
2819         (fold_builtin_expect): Check TREE_CONSTANT.
2820         * tree-ssa-ccp.c (fold_stmt_r): Adjust comment.
2821         * c-tree.h (c_expr_to_decl): Drop third parameter.
2822         * c-typeck.c (build_external_ref): Don't set TREE_INVARIANT.
2823         (build_c_cast): Don't set TREE_INVARIANT.
2824         (pop_init_level): Don't set TREE_INVARIANT.
2825         (c_objc_common_truthvalue_conversion): Don't set TREE_INVARIANT.
2826         * gimplify.c (gimplify_init_ctor_preeval): Add assertion, test
2827         TREE_CONSTANT.
2828         (gimplify_init_constructor): Don't set TREE_INVARIANT.
2829         (gimplify_addr_expr): Adjust comment.
2830         * tree-mudflap.c (mf_build_string):
2831         * print-tree.c (print_node): Don't print TREE_INVARIANT.
2832         * tree-nested.c (convert_nonlocal_reference): Adjust comment.
2833         * c-common.c (fix_string_type): Don't set TREE_INVARIANT.
2834         * langhooks-def.h (lhd_expr_to_decl): Drop third parameter.
2835         * langhooks.c (lhd_expr_to_decl): Drop third parameter.
2836         * langhooks.h (struct lang_hooks): Drop third parameter from
2837         expr_to_decl.
2838
2839 2008-04-23  Richard Guenther  <rguenther@suse.de>
2840
2841         PR tree-optimization/27799
2842         PR tree-optimization/32921
2843         PR tree-optimization/32624
2844         * tree-ssa-structalias.c (merge_smts_into): Only merge the
2845         SMTs aliases and the tag itself into the solution.
2846         * tree-ssa-alias.c (compute_flow_sensitive_aliasing): Do not
2847         merge the points-to solution back into the SMT aliases.
2848         (may_alias_p): Use alias_set_subset_of instead of
2849         aliases_conflict_p.  A pointer which points to
2850         memory with alias set zero may access any variable.
2851
2852 2008-04-23  Richard Guenther  <rguenther@suse.de>
2853
2854         * alias.c (alias_set_subset_of): Correctly handle asking
2855         if zero is a subset of an alias set with zero child.
2856         * tree-ssa-alias.c (have_common_aliases_p): Simplify logic.
2857         (compute_flow_insensitive_aliasing): Correctly walk all
2858         pointers.  Do not unnecessarily union sets.
2859
2860 2008-04-23  Richard Guenther  <rguenther@suse.de>
2861
2862         PR middle-end/36021
2863         * c-common.c (handle_alloc_size_attribute): Use type_num_arguments.
2864
2865 2008-04-22  Tomas Bily  <tbily@suse.cz>
2866
2867         * tree-cfg.c (verify_expr): Check for NON_LVALUE_EXPR as
2868         unreachable case.
2869         * tree-vrp.c (extract_range_from_unary_expr): Removed unused
2870         NON_LVALUE_EXPR.
2871         * tree-ssa-threadedge.c (simplify_control_stmt_condition): Likewise.
2872         * tree-ssa-structalias.c (get_constraint_for): Likewise.
2873         * tree-inline.c (estimate_num_insns_1): Likewise.
2874         * varasm.c (const_hash_1, compare_constant, copy_constant)
2875         (compute_reloc_for_constant, output_addressed_constants): Likewise.
2876         * emit-rtl.c (component_ref_for_mem_expr)
2877         (set_mem_attributes_minus_bitpos): Likewise.
2878         * expr.c (highest_pow2_factor, expand_expr_real_1, )
2879         (is_aligning_offset): Likewise.
2880         * dwarf2out.c (loc_descriptor_from_tree_1, add_bound_info): Likewise.
2881         * tree-ssa-loop-ivopts.c (may_be_nonaddressable_p): Likewise.
2882         * dojump.c (do_jump): Likewise.
2883         * builtins.c (get_pointer_alignment, get_memory_rtx)
2884         (integer_valued_real_p, fold_builtin_next_arg): Likewise.
2885         * tree-scalar-evolution.c (instantiate_parameters_1): Likewise.
2886
2887 2008-04-23  Jakub Jelinek  <jakub@redhat.com>
2888
2889         PR rtl-optimization/36017
2890         * builtins.c (expand_errno_check): Clear CALL_EXPR_TAILCALL before
2891         expanding the library call.
2892
2893 2008-04-22  Ian Lance Taylor  <iant@google.com>
2894
2895         * fold-const.c (pointer_may_wrap_p): Call int_size_in_bytes rather
2896         than size_in_bytes.
2897
2898 2008-04-22  Pat Haugen  <pthaugen@us.ibm.com>
2899
2900         * config/rs6000/rs6000.c (rs6000_register_move_cost): Increase cost
2901         of LR/CTR moves for Power6.
2902
2903 2008-04-22  Kenneth Zadeck  <zadeck@naturalbridge.com>
2904
2905         PR middle-end/36003
2906         * passes.c (init_optimization_passes): Remove
2907         pass_fast_rtl_byte_dce.
2908         
2909 2008-04-22  Uros Bizjak  <ubizjak@gmail.com>
2910
2911         PR target/29096
2912         * config/i386/xmmintrin.h (_mm_cvtpi16_ps): Rearrange calls to
2913         builtin functions to generate faster code.
2914         (_mm_cvtpu16_ps): Ditto.
2915         (_mm_cvtpi32x2_ps): Ditto.
2916
2917 2008-04-22  Nick Clifton  <nickc@redhat.com>
2918
2919         * common.opt (ftree-loop-distribution): Add Optimization
2920         attribute.
2921
2922         * config/frv/frv.c (frv_stack_info): Use crtl instead of cfun.
2923         (frv_expand_builtin_va_start): Likewise.
2924
2925         * config/arm/arm.c (thumb_find_work_register): Fix location of
2926         argument register count.
2927
2928 2008-04-22  Maxim Kuvyrkov  <maxim@codesourcery.com>
2929
2930         Support scheduling for ColdFire V1 and V3 microarchitecture.
2931         Improve scheduling of multiplication instructions.
2932
2933         * config/m68k/m68k.md (cpu): Add cfv1 and cfv3.  Rename cf_v2 to cfv1.
2934         (mac): New instruction attribute.
2935         * config/m68k/m68k.c (override_options): Handle cfv1, cfv3 and mac.
2936         (m68k_sched_mac): New variable.
2937         (m68k_sched_attr_type2, m68k_sched_md_init_global): Update.
2938         Handle cfv1 and cfv3.
2939         (max_insn_size): New static variable.
2940         (struct _sched_ib): New type.
2941         (sched_ib): New static variable.
2942         (sched_ib_size, sched_ib_filled, sched_ib_insn): Convert variables
2943         to fields of 'struct _sched_ib sched_ib'.  Update all uses.
2944         (m68k_sched_variable_issue): Add modeling of cfv3 instruction buffer.
2945         Update.
2946         (m68k_sched_md_init_global, m68k_sched_md_finish_global,
2947         m68k_sched_md_init, m68k_sched_md_finish): Handle cfv1 and cfv3.  Init
2948         new variables.  Update.
2949         (m68k_sched_dfa_pre_advance_cycle, m68k_sched_dfa_post_advance_cycle):
2950         Add modeling of cfv3 instruction buffer.  Update.
2951         * config/m68k/m68k-protos.h (m68k_sched_mac): Declare.
2952         * config/m68k/m68k.h (TUNE_CFV3): New macro.
2953         * config/m68k/cf.md: Change substrings 'cf_v2' to 'cfv12' or 'cfv123'.
2954         (cf_* reservations): Rename to cfv12 or cfv123 to indicate cores
2955         a particular reservation applies to.
2956         (type2): Reorganize attribute values.  Rename alu to alu_reg,
2957         alu_l to alu, move_l to omove.  Join move to alu.  Split mul
2958         to mul_l and mul_w.
2959         (cf_ib_*): Simplify description of instruction buffer.
2960         (cf_ib_w0, cf_ib_w4, cf_ib_w5, cf_ib_w6): Remove.
2961         (cf_mem): Split into cf_mem1 and cf_mem2.
2962         (cf_v2_move_??): Rename to cfv12_alu_??.
2963         (cf_v2_move_l_??): Rename to cfv12_omove_??.
2964         (cf_v2_mul_??): Remove reservations.
2965         (cfv12_mul_l_??, cfv12_mul_w_??, cfv12_mac_w_??, cfv12_mac_l_??,
2966         cfv12_emac_??, cfv12_emac_w_i0): New reservations.
2967         (cfv12_rts, cfv12_call, cfv12_bcc, cfv12_bra, cfv12_jmp): Move to
2968         appropriate place.
2969         (cfv3_alu_10, cfv3_omove_10, cfv3_alu_i0, cfv3_omove_i0, cfv3_alu_01,
2970         cfv3_alu_0i, cfv3_alu_11, cfv3_omove_11, cfv3_alu_i1, cfv3_omove_i1,
2971         cfv3_alu_1i, cfv3_omove_1i, cfv3_pea_11, cfv3_pea_i1, cfv3_mul_w_10,
2972         cfv3_mul_l_10, cfv3_mul_w_i0, cfv3_mac_w_10, cfv3_mac_l_10,
2973         cfv3_mac_w_i0, cfv3_emac_10, cfv3_emac_w_i0, cfv3_rts, cfv3_call,
2974         cfv3_bcc, cfv3_bra, cfv3_jmp): New reservations.
2975         (cfv3_*_1, cfv3_*_2, cfv3_*_3): New instruction reservations that are
2976         expansions of the above reservations for instructions of sizes
2977         1, 2 and 3 words.
2978
2979 2008-04-22  Maxim Kuvyrkov  <maxim@codesourcery.com>
2980
2981         * rtl-factoring.c (collect_patterns_seqs): Handle CC0 targets.
2982
2983 2008-04-21  Adam Nemet  <anemet@caviumnetworks.com>
2984
2985         * coverage.c: Include tree-pass.h.
2986         (coverage_counter_alloc): Print da_file_name to the dump file.
2987
2988 2008-04-21  Kenneth Zadeck  <zadeck@naturalbridge.com>
2989
2990         * sbitmap.c (sbitmap_range_empty_p): New function.
2991         * sbitmap.h (sbitmap_range_empty_p): New function.
2992         * bitmap.h: Now includes obstack.h.
2993
2994 2008-04-21  Richard Sandiford  <rsandifo@nildram.co.uk>
2995             Kenneth Zadeck  <zadeck@naturalbridge.com>
2996
2997         * dbgcnt.def (ra_byte_scan): Added.
2998         * dbgcnt.c (dbg_cnt): Added code to print message to dump_file
2999         when the last hit happens for a counter.  
3000         * timevar.def (TV_DF_BYTE_LR): New variable.
3001         * tree-pass.h (pass_fast_rtl_byte_dce): New pass.
3002         * passes.c (pass_fast_rtl_byte_dce): New pass.
3003         * fwprop.c (update_df): Added mode to call df_ref_create.
3004         Renamed DF_REF_WIDTH and DF_REF_OFFSET to DF_REF_EXTRACT_WIDTH and
3005         DF_REF_EXTRACT_OFFSET.
3006         * df.h (DF_BYTE_LR, DF_BYTE_LR_BB_INFO, DF_BYTE_LR_IN, 
3007         DF_BYTE_LR_OUT, df_byte_lr): New macro.
3008         (df_mm): New enum.
3009         (df_ref_extract): Added mode field.
3010         (DF_REF_WIDTH, DF_REF_OFFSET) Renamed to DF_REF_EXTRACT_WIDTH and
3011         DF_REF_EXTRACT_OFFSET.
3012         (DF_REF_EXTRACT_MODE): New macro.
3013         (df_byte_lr_bb_info): New structure.
3014         (df_print_byte_regset, df_compute_accessed_bytes, 
3015         df_byte_lr_add_problem, df_byte_lr_get_regno_start,
3016         df_byte_lr_get_regno_len, df_byte_lr_simulate_defs,
3017         df_byte_lr_simulate_uses,
3018         df_byte_lr_simulate_artificial_refs_at_top,
3019         df_byte_lr_simulate_artificial_refs_at_end,
3020         df_compute_accessed_bytes): New function.
3021         (df_ref_create): Add parameter.
3022         (df_byte_lr_get_bb_info): New inline function.
3023         * df-scan.c (df_ref_record, df_uses_record,
3024         df_ref_create_structure): Added mode parameter.
3025         (df_ref_create, df_notes_rescan, df_ref_record, df_def_record_1, 
3026         df_defs_record, df_uses_record, df_get_conditional_uses,
3027         df_get_call_refs, df_insn_refs_collect, df_bb_refs_collect, 
3028         df_entry_block_defs_collect, df_exit_block_uses_collect):
3029         Added mode parameter to calls to df_ref_record, df_uses_record,
3030         df_ref_create_structure.
3031         (df_ref_equal_p, df_ref_compare): Added test for modes.
3032         (df_ref_create_structure): Added code to set mode.  Renamed
3033         DF_REF_WIDTH and DF_REF_OFFSET to DF_REF_EXTRACT_WIDTH and
3034         DF_REF_EXTRACT_OFFSET.
3035         * df-core.c (df_print_byte_regset): New function.
3036         * df-byte-scan.c: New file.
3037         * df-problems.c (df_rd_transfer_function): Removed unnecessary
3038         calls to BITMAP_FREE.  
3039         (df_byte_lr_problem_data, df_problem problem_BYTE_LR): New structure.
3040         (df_byte_lr_get_regno_start, df_byte_lr_get_regno_len,
3041         df_byte_lr_set_bb_info, df_byte_lr_free_bb_info, 
3042         df_byte_lr_check_regs, df_byte_lr_expand_bitmap, 
3043         df_byte_lr_alloc, df_byte_lr_reset, df_byte_lr_bb_local_compute,
3044         df_byte_lr_local_compute, df_byte_lr_init,
3045         df_byte_lr_confluence_0, df_byte_lr_confluence_n, 
3046         df_byte_lr_transfer_function, df_byte_lr_free, 
3047         df_byte_lr_top_dump, df_byte_lr_bottom_dump,
3048         df_byte_lr_add_problem, df_byte_lr_simulate_defs, 
3049         df_byte_lr_simulate_uses,
3050         df_byte_lr_simulate_artificial_refs_at_top,
3051         df_byte_lr_simulate_artificial_refs_at_end): New function.
3052         * dce.c (byte_dce_process_block): New function.
3053         (dce_process_block): au is now passed in rather than computed
3054         locally.  Changed loops that look at artificial defs to not look
3055         for conditional or partial ones, because there never are any.  
3056         (fast_dce): Now is able to drive byte_dce_process_block or 
3057         dce_process_block depending on the kind of dce being done.
3058         (rest_of_handle_fast_dce): Add parameter to fast_dce.
3059         (rest_of_handle_fast_byte_dce): New function.
3060         (rtl_opt_pass pass_fast_rtl_byte_dce): New pass.
3061         * Makefile.in (df-byte-scan.o, debugcnt.o): Added dependencies.
3062
3063 2008-04-21  Daniel Franke  <franke.daniel@gmail.com>
3064
3065         PR fortran/35019
3066         * gcc.h: Added fortran options that take arguments to
3067         DEFAULT_SWITCH_TAKES_ARG and DEFAULT_WORD_SWITCH_TAKES_ARG
3068         macros.
3069
3070 2008-04-20  Eric Botcazou  <ebotcazou@adacore.com>
3071
3072         * tree-sra.c (sra_walk_expr) <VIEW_CONVERT_EXPR>: Disable
3073         scalarization if on the LHS and not a full access.
3074
3075 2008-04-20  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
3076
3077         * Makefile.in (s-gtyp-input): Remove tmp-gi.list before writing it.
3078
3079 2008-04-18  Rafael Espindola  <espindola@google.com>
3080
3081         * tree-vrp.c (find_case_label_index): Fix the binary search.
3082         (find_case_label_range): New.
3083         (vrp_visit_switch_stmt): Use find_case_label_range.
3084         (simplify_switch_using_ranges): Use find_case_label_range.
3085
3086 2008-04-18  Eric Botcazou  <ebotcazou@adacore.com>
3087
3088         * gimplify.c (gimplify_modify_expr_rhs) <COND_EXPR>: Gimplify the LHS
3089         using the is_gimple_lvalue predicate instead of is_gimple_min_lval.
3090
3091 2008-04-18  Tom Tromey  <tromey@redhat.com>
3092
3093         PR libcpp/15500:
3094         * doc/cpp.texi (Implementation-defined behavior): Mention
3095         -finput-charset.
3096
3097 2008-04-18  Ian Lance Taylor  <iant@google.com>
3098
3099         * fold-const.c (pointer_may_wrap_p): New static function.
3100         (fold_comparison): Add another test for pointer overflow.  Use
3101         pointer_may_wrap_p to disable some false positives.
3102
3103 2008-04-18  Kris Van Hees <kris.van.hees@oracle.com>
3104           
3105         * c-common.c (CHAR16_TYPE, CHAR32_TYPE): New macros.
3106         (fname_as_string): Match updated cpp_interpret_string prototype.
3107         (fix_string_type): Support char16_t* and char32_t*.
3108         (c_common_nodes_and_builtins): Add char16_t and char32_t (and
3109         derivative) nodes.  Register as builtin if C++0x.
3110         (c_parse_error): Support CPP_CHAR{16,32}.
3111         * c-common.h (RID_CHAR16, RID_CHAR32): New elements. 
3112         (enum c_tree_index) <CTI_CHAR16_TYPE, CTI_SIGNED_CHAR16_TYPE,
3113         CTI_UNSIGNED_CHAR16_TYPE, CTI_CHAR32_TYPE, CTI_SIGNED_CHAR32_TYPE,
3114         CTI_UNSIGNED_CHAR32_TYPE, CTI_CHAR16_ARRAY_TYPE,
3115         CTI_CHAR32_ARRAY_TYPE>: New elements.
3116         (char16_type_node, signed_char16_type_node, unsigned_char16_type_node,
3117         char32_type_node, signed_char32_type_node, char16_array_type_node,
3118         char32_array_type_node): New defines.
3119         * c-lex.c (cb_ident): Match updated cpp_interpret_string prototype.
3120         (c_lex_with_flags): Support CPP_CHAR{16,32} and CPP_STRING{16,32}.
3121         (lex_string): Support CPP_STRING{16,32}, match updated
3122         cpp_interpret_string and cpp_interpret_string_notranslate prototypes.
3123         (lex_charconst): Support CPP_CHAR{16,32}.
3124         * c-parser.c (c_parser_postfix_expression): Support CPP_CHAR{16,32}
3125         and CPP_STRING{16,32}.
3126
3127 2008-04-18  Paolo Bonzini  <bonzini@gnu.org>
3128
3129         PR bootstrap/35457
3130         * aclocal.m4: Regenerate.
3131         * configure: Regenerate.
3132
3133 2008-04-18  Jan Hubicka  <jh@suse.cz>
3134
3135         * except.c (dw2_size_of_call_site_table,
3136         sjlj_size_of_call_site_table): Use vector API for call_site_record.
3137
3138         * cgraphbuild.c (build_cgraph_edges): Update.
3139         * tree-pass.h: Update comment.
3140         * final.c (leaf_function_p): Update.
3141         (leaf_renumber_regs): Update.
3142         (rest_of_clean_state): Update.
3143         * omp-low.c (expand_omp_parallel): Update.
3144         * ipa-reference.c (analyze_function): Update.
3145         * reorg.c (find_end_label): Update.
3146         (optimize_skip): Update.
3147         (fill_simple_delay_slots): Update.
3148         (fill_simple_delay_slots): Update.
3149         (make_return_insns): Update.
3150         (dbr_schedule): Update.
3151         * gimple-low.c (record_vars_into): Update.
3152         * cfgbuild.c (make_edges): Update.
3153         * function.c (assign_stack_local): Update.
3154         (assign_parm_adjust_stack_rtl): Update.
3155         (locate_and_pad_parm): Update.
3156         (allocate_struct_function): Do not initialize stack_alignment_needed
3157         and preferred_stack_boundary here.
3158         (stack_protect_prologue): Update.
3159         (stack_protect_epilogue): Update.
3160         (expand_function_start): Initialize stack_alignment_needed,
3161         preferred_stack_boundary and max_jumptable_ents.
3162         (expand_function_end): Update.
3163         (free_after_compilation): Do not NULLify epilogue_delay_list.
3164         * function.h (struct rtl_data): Add stack_protect_guard,
3165         stack_alignment_needed,
3166         preferred_stack_boundary, epilogue_delay_list.
3167         (struct function): Remove value_histograms, stack_alignment_needed,
3168         preferred_stack_boundary, epilogue_delay_list, max_jumptable_ents,
3169         last_label_uid,
3170         unexpanded_var_list, stack_protect_guard.
3171         (current_function_epilogue_delay_list): Remove.
3172         * ipa-type-escape.c (analyze_function): Update.
3173         * gimplify.c (pop_gimplify_context): Update comment.
3174         * calls.c (expand_call): Update.
3175         (emit_library_call_value_1): Update.
3176         * except.c (set_nothrow_function_flags): Update.
3177         * cfgexpand.c (get_decl_align_unit): Update.
3178         (create_stack_guard): Update.
3179         (estimated_stack_frame_size): Update.
3180         (expand_used_vars): Update.
3181         (tree_expand_cfg): Free histogram earliers, init expansion variables.
3182         * explow.c (allocate_dynamic_stack_space): Update.
3183         * tree-ssa-live.c (remove_unused_locals): Update.
3184         * varasm.c (mark_constant_pool): Update.
3185         * tree-inline.c (remap_decls): Update.
3186         (initialize_cfun): Update.
3187         (declare_return_variable): Update.
3188         (inline_forbidden_p): Update.
3189         (expand_call_inline): Update.
3190         (declare_inline_vars): Update.
3191         (tree_function_versioning): Update.
3192         * tree-flow.h (value_histograms): New.
3193         (VALUE_HISTOGRAMS): New macro.
3194         * basic-block.h (control_flow_graph): Add max_jumptable_ents,
3195         last_label_uid.
3196         * tree-cfg.c (set_bb_for_stmt): Update.
3197         (replace_by_duplicate_decl): Update.
3198         (move_block_to_fn): Update.
3199         (new_label_mapper): Update.
3200         (dump_function_to_file): Update.
3201         * ipa-struct-reorg.c (build_data_structure): Update.
3202         * cfgrtl.c (print_rtl_with_bb): Update.
3203         * reload1.c (reload): Update.
3204         (reload): Update.
3205         * config/i386/i386.c (setup_incoming_varargs_64,
3206         ix86_compute_frame_layout): Update.
3207         * config/arc/arc.c (arc_output_function_epilogue): Update.
3208
3209 2008-04-18  Marius Strobl <marius@FreeBSD.org>
3210
3211         * gthr-posix.h (__gthread_active_p): Use the Solaris implementation
3212         for FreeBSD as well.
3213         * gthr-posix95.h: Likewise.
3214
3215 2008-04-17  Richard Sandiford  <rsandifo@nildram.co.uk>
3216
3217         PR rtl-optimization/35838
3218         * dse.c (find_shift_sequence): Use subreg_lowpart_offset to work
3219         out the byte offset of the first subreg.
3220
3221 2008-04-17  Uros Bizjak  <ubizjak@gmail.com>
3222
3223         * config/i386/i386.md (addti3 splitter): Pass arrays of 3 operands
3224         to split_ti instead of three separate calls with single member arrays.
3225         (subti3 splitter): Ditto.
3226         (adddi3 splitter): Ditto with split_di.
3227         (subdi3 splitter): Ditto.
3228         (negti2 splitter): Pass arrays of 2 operands to split_ti instead of
3229         two separate calls with single member arrays.  Swap match_dup
3230         operands 1 and 2 to better fit into the array.
3231         (negdi2 splitter): Ditto with split_di.
3232         (movdfcc splitter):  Pass arrays of 2 operands to split_di instead of
3233         two separate calls with single member arrays.  Swap match_dup operands
3234         6 and 7 to better fit into the array.
3235
3236 2008-04-17  H.J. Lu  <hongjiu.lu@intel.com>
3237
3238         * config/i386/i386.c (sse_builtin_type): New.
3239         (bdesc_sse_args): Likewise.
3240         (bdesc_sse_3arg): Removed.
3241         (bdesc_2arg): Remove IX86_BUILTIN_AESKEYGENASSIST128.
3242         (bdesc_1arg): Remove IX86_BUILTIN_ROUNDPD and
3243         IX86_BUILTIN_ROUNDPS.
3244         (ix86_init_mmx_sse_builtins): Handle bdesc_sse_args.  Remove
3245         bdesc_sse_3arg.  Remove IX86_BUILTIN_ROUNDPD and
3246         IX86_BUILTIN_ROUNDPS.
3247         (ix86_expand_sse_4_operands_builtin): Removed.
3248         (ix86_expand_sse_operands_builtin): New.
3249         (ix86_expand_unop_builtin): Remove CODE_FOR_sse4_1_roundpd
3250         and CODE_FOR_sse4_1_roundps.
3251         (ix86_expand_builtin): Remove IX86_BUILTIN_AESKEYGENASSIST128.
3252         Handle bdesc_sse_args.  Remove bdesc_sse_3arg.
3253
3254 2008-04-17  Alan Modra  <amodra@bigpond.net.au>
3255
3256         PR target/35907
3257         * config/rs6000/rs6000.c (rs6000_emit_epilogue): Restore vr and vrsave
3258         regs before frame pop when needed.  If use_backchain_to_restore_sp
3259         then load backchain into a temp reg to restore vr and vrsave.  Add
3260         code to restore vr after frame pop if possible.
3261
3262 2008-04-17  Richard Guenther  <rguenther@suse.de>
3263
3264         * tree-vn.c (expressions_equal_p): Do not check type
3265         equality or compatibility before calling operand_equal_p.
3266         * fold-const.c (operand_equal_p): Check equivalence of
3267         integer constants before bailing out due to signedness or
3268         precision differences.
3269         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Ignore
3270         spurious differences in type qualification.  Ignore types
3271         for COMPONENT_REFs at all.
3272
3273 2008-04-17  Christian Bruel  <christian.bruel@st.com>
3274
3275         * config/sh/sh.c (expand_cbranchdi4): Use original operands for
3276         msw_skip comparison.
3277         
3278 2008-04-16  Jakub Jelinek  <jakub@redhat.com>
3279
3280         PR c/35739
3281         * tree-nrv.c (tree_nrv): Don't optimize if result_type is GIMPLE
3282         reg type.
3283
3284         PR tree-optimization/35899
3285         * tree-inline.c (expand_call_inline): Use GIMPLE_STMT_OPERAND
3286         rather than TREE_OPERAND.
3287
3288 2008-04-16  Uros Bizjak  <ubizjak@gmail.com>
3289
3290         PR target/35944
3291         * config/i386/i386.md (fmodxf3): Copy operand 1 and operand 2 into
3292         temporary registers.  Change operand predicate to general_operand.
3293         (remainderxf3): Ditto.
3294
3295 2008-04-16  Richard Guenther  <rguenther@suse.de>
3296
3297         * Makefile.in (tree-affine.o): Add $(FLAGS_H) dependency.
3298         * tree-affine.c (aff_combination_expand): Look through some
3299         conversions.
3300
3301 2008-04-15  Doug Kwan  <dougkwan@google.com>
3302
3303         * dwarf2asm.c (dw2_assemble_integer): Cast to unsigned HOST_WIDE_INT
3304         for hex printing.
3305         * tree-pretty-print.c (dump_generic_node): Ditto.
3306         * final.c (output_addr_const): Ditto.
3307         * dwarf2out.c (output_cfi): Ditto.
3308         * c-pretty-print.c (pp_c_integer_constant): Ditto.
3309         * print-rtl.c (print_rtx): Ditto.
3310         * print-tree.c (print_node_brief, print_node): Ditto.
3311         * c-common.c (match_case_to_enum_1): Ditto.
3312         * sched-vis.c (print_value): Ditto.
3313         * config/i386/i386.c (print_operand): Cast to long unsigned int
3314         for hex printing.
3315
3316 2008-04-15  Danny Smith  <dannysmith@users.sourceforge.net>
3317         * libgcc2.c [L_trampoline]: Remove  unnecessary prototype for
3318         MS Windows VirtualProtect function.
3319
3320 2008-04-15  Jan Hubicka  <jh@suse.cz>
3321
3322         * gengtype.c (write_root): Param_is argument is OK.
3323         * expr.c (expand_expr_real_1): Update call of get_exception_*.
3324         * function.h: Include varray.h
3325         (rtl_eh): New stucture based on except.c one.
3326         (call_site_record): New forward declaration and vector type.
3327         * calls.c (emit_call_1): Do not call
3328         note_current_region_may_contain_throw.
3329         * except.c (eh_status): Remove cur_region, try_region since they are
3330         unused.
3331         Move filter, exc_ptr, ttype_data, ehspec_data, action_record_data and
3332         exception_handler_label_map, ehr_stackadj, ehr_handler, ehr_label,
3333         sjlj_fc, sjlj_exit_after to rth_eh in function.h. 
3334         Remove call_site_data_used, call_site_data_size.
3335         Turn call_site_record into vector in function.h.
3336         (note_current_region_may_contain_throw): Remove.
3337         (get_exception_pointer, get_exception_filter): Do not take struct
3338         function argument; update.
3339         (add_ehl_entry, find_exception_handler_labels, ehspec_filter_hash,
3340         add_ttypes_entry, add_ehspec_entry, assign_filter_values,
3341         build_post_landing_pads, dw2_build_landing_pads,
3342         sjlj_assign_call_site_values, sjlj_mark_call_sites,
3343         sjlj_emit_function_enter, sjlj_emit_function_enter, 
3344         sjlj_emit_function_exit, sjlj_emit_dispatch_table,
3345         sjlj_build_landing_pads, finish_eh_generation,
3346         remove_exception_handler_label, remove_eh_handler,
3347         maybe_remove_eh_handler, add_reachable_handler,
3348         reachable_handlers, expand_builtin_eh_return, expand_eh_return,
3349         add_action_record, collect_one_action_chain, add_call_site,
3350         convert_to_eh_region_ranges, sjlj_size_of_call_site_table,
3351         sjlj_output_call_site_table, output_function_exception_table,
3352         * except.h (note_current_region_may_contain_throw): Remove
3353         (get_exception_pointer, get_exception_filter): Do not take struct
3354         function argument.
3355         * Makefile.in (GTFILES): Put varargs before struct function.
3356
3357 2008-04-15  Eric Botcazou  <ebotcazou@adacore.com>
3358
3359         * tree-ssa-structalias.c (get_constraint_for_component_ref): Do not
3360         punt for STRING_CST.
3361         (get_constraint_for): Deal with STRING_CST here instead.
3362
3363 2008-04-15  Richard Guenther  <rguenther@suse.de>
3364
3365         * tree-ssa-propagate.c (substitute_and_fold): Substitute
3366         statements in a basic-block with a backward walk.  Do not
3367         substitute into dead statements but instead remove those.
3368
3369 2008-04-15  Richard Guenther  <rguenther@suse.de>
3370
3371         * params.def (PARAM_MAX_FIELDS_FOR_FIELD_SENSITIVE): Set default
3372         to zero, thus disable creation of SFTs.