OSDN Git Service

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