OSDN Git Service

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