OSDN Git Service

PR rtl-optimization/37769
[pf3gnuchains/gcc-fork.git] / gcc / ChangeLog
1 2008-10-24  Kaz Kojima  <kkojima@gcc.gnu.org>
2
3         PR rtl-optimization/37769
4         * regmove.c (optimize_reg_copy_2): Update REG_INC note if needed.
5
6 2008-10-24  Kaz Kojima  <kkojima@gcc.gnu.org>
7
8         * config/sh/t-sh: Use $(MULTILIB_CFLAGS) when compiling to
9         unwind-dw2-Os-4-200.o.
10
11 2008-10-24  Joseph Myers  <joseph@codesourcery.com>
12
13         * c-typeck.c (enum impl_conv): Remove ic_argpass_nonproto.
14         (convert_for_assignment): Remove ic_argpass_nonproto cases.
15
16 2008-10-24  Jakub Jelinek  <jakub@redhat.com>
17
18         PR tree-optimization/36038
19         * tree-ssa-loop-ivopts.c (add_old_iv_candidates): For pointer bases
20         add sizetype IV with initial value zero instead of pointer type.
21
22 2008-10-24  Manuel López-Ibáñez  <manu@gcc.gnu.org>
23
24         PR c/7543
25         * value-prof.c (gimple_stringop_fixed_value): Use parentheses
26         around bit operation.
27         * profile.c (is_edge_inconsistent): Likewise.
28         * fold-const.c (truth_value_p): Move from here...
29         * tree.h (truth_value_p): ... to here.
30         * c-tree.h (c_expr): Update description of original_code.
31         * c-typeck.c (parser_build_unary_op): Set original_code.
32         (parser_build_binary_op): Update call to warn_about_parentheses.
33         * c-common.c (warn_about_parentheses): Take two additional
34         arguments of the operands. Use a switch. Quote operators
35         appropriately. Define macro APPEARS_TO_BE_BOOLEAN_EXPR_P.
36         Add warning about !x | y and !x & y.
37         * c-common.h (warn_about_parentheses): Update declaration.
38
39 2008-10-24  Jakub Jelinek  <jakub@redhat.com>
40
41         * Makefile.in (lang_checks_parallelized, check_gcc_parallelize,
42         check_p_tool, check_p_vars, check_p_subno, check_p_comma,
43         check_p_subwork, check_p_numbers, check_p_subdir, check_p_subdirs):
44         New variables.
45         (check-subtargets, check-%-subtargets, check-parallel-%): New
46         targets.
47         (check-%): For test targets listed in lang_checks_parallelized
48         if -j is used and RUNTESTFLAGS doesn't specify tests to execute,
49         run the testing in multiple make goals, possibly parallel, and
50         afterwards run dg-extract-results.sh to merge the sum and log files.
51
52 2008-10-24  Richard Sandiford  <rdsandiford@googlemail.com>
53
54         * config/mips/mips.c (mips_canonicalize_move_class): New function.
55         (mips_move_to_gpr_cost): Likewise.
56         (mips_move_from_gpr_cost): Likewise.
57         (mips_register_move_cost): Make more fine-grained.
58
59 2008-10-23  Tobias Grosser  <grosser@fim.uni-passau.de>
60
61         * graphite.c (graphite_apply_transformations): Check for
62         -fgraphite-identity.
63         * toplev.c (process_options): Add graphite_identity.
64         * tree-ssa-loop.c (gate_graphite_transforms): Add graphite_identity.
65
66 2008-10-23  Bernd Schmidt  <bernd.schmidt@analog.com>
67
68         * config/bfin/bfin.c (bdesc_2arg): Add mulhisill, mulhisilh,
69         mulhisihl and mulhisihh builtins.
70
71         From Jie Zhang  <jie.zhang@analog.com>
72         * config/bfin/bfin.md (composev2hi): Put operands into vector
73         with correct order.
74         
75 2008-10-22  Chao-ying Fu  <fu@mips.com>
76
77         * config/mips/mips.opt (msmartmips): Accept -mno-smartmips.
78
79 2008-10-22  Bernd Schmidt  <bernd.schmidt@analog.com>
80
81         From Mike Frysinger  <michael.frysinger@analog.com>
82         * config/bfin/bfin-protos.h (bfin_cpu_type): Add BFIN_CPU_BF512,
83         BFIN_CPU_BF514, BFIN_CPU_BF516, and BFIN_CPU_BF518.
84         * config/bfin/bfin.c (bfin_cpus[]): Add 0.0 for bf512, bf514, bf516,
85         and bf518.  Add 0.2 for bf522, bf523, bf524, bf526, and bf527.
86         Add 0.6 for bf533, bf532, and bf531.  Add 0.5 for bf538 and bf539.
87         Add 0.2 for bf542, bf544, bf547, bf548, and bf549.
88         * config/bfin/bfin.h (TARGET_CPU_CPP_BUILTINS): Define __ADSPBF512__
89         for BFIN_CPU_BF512, __ADSPBF514__ for BFIN_CPU_BF514, __ADSPBF516__
90         for BFIN_CPU_BF516, and __ADSPBF518__ for BFIN_CPU_BF518.  Define
91         __ADSPBF51x__ for all of them.
92         * config/bfin/elf.h (LIB_SPEC): Select proper linker scripts for
93         -mcpu bf512, bf514, bf516, and bf518.
94         * config/bfin/t-bfin-elf (MULTILIB_MATCHES): Select bf532-none for
95         bf512-none, bf514-none, bf516-none, and bf518-none.
96         * config/bfin/t-bfin-linux (MULTILIB_MATCHES): Likewise.
97         * config/bfin/t-bfin-uclinux (MULTILIB_MATCHES): Likewise.
98         * doc/invoke.texi (Blackfin Options): Document that
99         -mcpu now accepts bf512, bf514, bf516, and bf518.
100
101 2008-10-22  Jakub Jelinek  <jakub@redhat.com>
102
103         PR middle-end/37882
104         * fold-const.c (build_range_type): For 1 .. signed_max
105         range call build_nonstandard_inter_type if signed_type_for
106         returned a type with bigger precision.
107
108 2008-10-22  Richard Guenther  <rguenther@suse.de>
109
110         * tree.def (COMPLEX_TYPE): Constrain element type.
111         * tree.c (build_complex_type): Assert that.
112         * tree-ssa-structalias.c (could_have_pointers): Complex types
113         cannot have pointers.
114
115 2008-10-22  Manuel López-Ibáñez  <manu@gcc.gnu.org>
116
117         PR c/30949
118         * c-typeck.c (convert_for_assignment): Do not give declaration's
119         location for builtins. Spell out which type was expected and which
120         was given.
121
122 2008-10-22  Nick Clifton  <nickc@redhat.com>
123
124         * config/frv/frv.h (HARD_REGNO_RENAME_OK): Define.  Do not allow
125         the fdpic register to be a target when running in fdpic mode.
126
127 2008-10-22 Rafael Espindola  <espindola@google.com>
128
129         * ipa-struct-reorg.c (create_new_alloc_sites): Properly insert the
130         newly created statements.
131
132 2008-10-22  Kaz Kojima  <kkojima@gcc.gnu.org>
133
134         PR target/37633
135         * config/sh/sh.c (sh_hard_regno_mode_ok): New function.
136         * config/sh/sh.h (HARD_REGNO_MODE_OK): Use it.
137         * config/sh/sh-protos.h (sh_hard_regno_mode_ok): Declare.
138
139 2008-10-22  Jakub Jelinek  <jakub@redhat.com>
140
141         PR target/37880
142         * doc/invoke.texi: Fix spelling of -mlarge-data-threshold option.
143         Adjust -mcmodel=medium description for 2005-07-31 changes.
144
145 2008-10-22  Jan Hubicka  <jh@suse.cz>
146             Jakub Jelinek  <jakub@redhat.com>
147
148         PR middle-end/35853
149         * doc/invoke.texi: Remove references to obsoleted -d dumps.
150
151 2008-10-21  Richard Henderson  <rth@redhat.com>
152
153         PR 37815
154         * emit-rtl.c (get_spill_slot_decl): Export.
155         * emit-rtl.h (get_spill_slot_decl): Declare.
156         * var-tracking.c (vt_add_function_parameters): Relax assertion
157         on the contents of MEM_EXPR in a PARM_DECL to include a spill slot.
158
159 2008-10-21  Bob Wilson  <bob.wilson@acm.org>
160
161         * var-tracking.c (insn_stack_adjust_offset_pre_post): If insn has a
162         REG_FRAME_RELATED_EXPR note, examine the pattern from the note instead
163         of from insn.
164
165 2008-10-21  Adam Nemet  <anemet@caviumnetworks.com>
166
167         PR middle-end/37669
168         * tree-ssa-ccp.c (ccp_fold_builtin): Only allow one argument to be
169         processed by get_maxval_strlen.
170
171 2008-10-21  David Edelsohn  <edelsohn@gnu.org>
172
173         PR target/35485
174         * tree.c (get_file_function_name): Copy first_global_object_name.
175         Centralize call to clean_symbol_name.
176
177 2008-10-21  Sandra Loosemore  <sandra@codesourcery.com>
178
179         * config.gcc (powerpc-*): Make t-ppcgas imply usegas.h.
180         * config/svr4.h (SVR4_ASM_SPEC): New.
181         (ASM_SPEC): Inherit from SVR4_ASM_SPEC.
182         * config/rs6000/sysv4.h (ASM_SPEC): Inherit from SVR4_ASM_SPEC.
183
184         * doc/invoke.texi (Option Summary): Add -T to linker options.
185         (Link Options): Document -T.
186         
187 2008-10-21  Jakub Jelinek  <jakub@redhat.com>
188
189         * tree-inline.c (tree_inlinable_function_p): Remove tuples
190         debugging hack.
191
192         * gimplify.c (gimplify_expr): Drop TREE_OVERFLOW from
193         INTEGER_CSTs.
194
195         PR debug/37020
196         * c-decl.c (merge_decls): Don't call outlining_inline_function hook.
197
198 2008-10-20  Daniel Berlin  <dberlin@dberlin.org>
199
200         * tree-ssa-pre.c (insert_into_preds_of_block): Don't rewrite constant
201         part of expression.
202
203 2008-10-20  Tobias Schlüter  <tobi@gcc.gnu.org>
204
205         * doc/install.texi: Fix typos in previous patch.
206
207 2008-10-19  Tobias Schlüter  <tobi@gcc.gnu.org>
208
209         * doc/install.texi: Document in-tree building of gcc and mpfr.
210
211 2008-10-19  Richard Guenther  <rguenther@suse.de>
212
213         * tree-ssa-alias.c (may_alias_p): Remove bogus shortcut.
214
215 2008-10-19  Manuel López-Ibáñez  <manu@gcc.gnu.org>
216
217         PR c/30260
218         * c-decl.c (finish_enum): Convert non-integer enumerators to enum
219         type.
220         (build_enumerator): Convert enumerators that fit in integer to
221         integer type.
222
223 2008-10-18  Uros Bizjak  <ubizjak@gmail.com>
224
225         * config/i386/i386.md (unnamed peephole2): Do not force memory
226         operands of arith or logical instructions into registers for
227         non-TARGET_READ_MODIFY targets.
228
229         (ffs_cmove): Change operand 0 predicate to register_operand.
230         Change operand 1 predicate to nonimmediate_operand.
231         (ffsdi2): Ditto.
232         (*ffs_no_cmove): Change operand 0 predicate to register_operand.
233
234 2008-10-18  Richard Guenther  <rguenther@suse.de>
235
236         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Guard
237         VIEW_CONVERT_EXPR case against invalid gimple.
238
239 2008-10-17  Andreas Krebbel  <krebbel1@de.ibm.com>
240
241         * c-parser.c (c_parser_binary_expression): Silence the
242         uninitialized variable warning emitted for binary_loc.
243
244 2008-10-16  Daniel Berlin  <dberlin@dberlin.org>
245
246         * tree-ssa-pre.c (phi_translate_set): Add constants to phi
247         translation cache.
248
249 2008-10-16  Joseph Myers  <joseph@codesourcery.com>
250
251         PR c/33192
252         * c-typeck.c (build_unary_op): Use omit_one_operand for
253         IMAGPART_EXPR of real argument.
254
255 2008-10-16  Jakub Jelinek  <jakub@redhat.com>
256
257         PR tree-optimization/37664
258         * fold-const.c (fold_binary): When optimizing comparison with
259         highest or lowest type's value, don't consider TREE_OVERFLOW.
260
261 2008-10-16  David Edelsohn  <edelsohn@gnu.org>
262
263         PR target/35483
264         * Makefile.in (coverage.o): Depend on $(TM_P_H).
265         * coverage.c: Include tm_p.h.
266         * config/rs6000/x-aix (jc1): Override LDFLAGS.
267         * config/rs6000/xcoff.h (ASM_GENERATE_INTERNAL_LABEL): Strip
268         dollar signs from PREFIX.
269         * config/rs6000/rs6000.c (output_toc): Use RS6000_OUTPUT_BASENAME
270         instead of manual strip_name_encoding.
271
272 2008-10-16  Richard Guenther  <rguenther@suse.de>
273
274         PR middle-end/37418
275         * tree-ssa.c (useless_type_conversion_p_1): Do not treat
276         volatile qualified functions or methods as relevant.
277
278 2008-10-16  Jakub Jelinek  <jakub@redhat.com>
279
280         PR tree-optimization/37525
281         * tree.c (int_fits_type_p): Rewrite using double_int.  Zero extend
282         sizetype unsigned constants, both in the case of C and bounds.
283
284 2008-10-15  Jan Hubicka  <jh@suse.cz>
285
286         * ira-emit.c (change_regs): Return false when replacing reg by
287         itself.
288
289 2008-10-14  Vladimir Makarov  <vmakarov@redhat.com>
290
291         PR target/37633
292         * ira-costs.c (ira_tune_allocno_costs_and_cover_classes): Check
293         HARD_REGNO_CALL_PART_CLOBBERED.
294
295 2008-10-15  Vladimir Makarov  <vmakarov@redhat.com>
296
297         PR middle-end/37535
298         * ira-lives.c (mark_early_clobbers): Remove.
299         (make_pseudo_conflict, check_and_make_def_use_conflicts,
300         check_and_make_def_conflicts,
301         make_early_clobber_and_input_conflicts,
302         mark_hard_reg_early_clobbers): New functions.
303         (process_bb_node_lives): Call
304         make_early_clobber_and_input_conflicts and
305         mark_hard_reg_early_clobbers.  Make hard register inputs live again.
306
307         * doc/rtl.texi (clobber): Change descriotion of RA behaviour for
308         early clobbers of pseudo-registers.
309         
310 2008-10-15  Vladimir Makarov  <vmakarov@redhat.com>
311
312         PR middle-end/37674
313         * ira-build.c (ira_flattening): Recalculate
314         ALLOCNO_TOTAL_NO_STACK_REG_P and ALLOCNO_TOTAL_CONFLICT_HARD_REGS
315         from the scratch instead of the propagation.
316         
317 2008-10-15  Richard Sandiford  <rdsandiford@googlemail.com>
318
319         * doc/rtl.texi (const_double): Remove the "addr" operand.
320         Describe CONST_DOUBLE_* macros under const_double rather
321         than const_vector.
322         (const_fixed): Fix the operand description.
323         (const): Add an @findex directive.
324         (CONST0_RTX, CONST1_RTX, CONST2_RTX): Move description
325         after the constant rtl table.
326         (fix): Combine floating-point and fixed-point descriptions.
327         Fix hyphenation.
328         * sched-deps.c (sched_analyze_2): Remove reference to
329         CONST_DOUBLE_CHAIN.
330
331 2008-10-15  Richard Sandiford  <rdsandiford@googlemail.com>
332
333         * config/mn10300/mn10300.h (OUTPUT_ADDR_CONST_EXTRA): Handle
334         UNSPEC_GOTSYM_OFFs.
335         * config/mn10300/mn10300.c (legitimate_pic_operand_p): Return true
336         for UNSPEC_GOTSYM_OFFs.
337         * config/mn10300/mn10300.md (UNSPEC_GOTSYM_OFF): New unspec.
338         (add_GOT_to_pic_reg): Use it.
339         * config/mn10300/constraints.md (S): Allow UNSPEC_GOTSYM_OFF.
340
341 2008-10-15  Jan Sjodin  <jan.sjodin@amd.com>
342             Harsha Jagasia  <harsha.jagasia@amd.com>
343
344         PR tree-optimization/37485
345         * graphite.c (gmp_cst_to_tree): Moved.
346         (iv_stack_entry_is_constant): New.
347         (iv_stack_entry_is_iv): New.
348         (loop_iv_stack_push): Renamed to loop_iv_stack_push_iv.
349         (loop_iv_stack_insert_constant): New.
350         (loop_iv_stack_pop): Use new datatpype.
351         (loop_iv_stack_get_iv): Same.
352         (loop_iv_stack_get_iv_from_name): Same.
353         (loop_iv_stack_debug): Renamed to debug_loop_iv_stack.
354         (loop_iv_stack_patch_for_consts): New.
355         (loop_iv_stack_remove_constants): New.
356         (graphite_create_new_loop): Use loop_iv_stack_push_iv.
357         (translate_clast): Call loop_iv_stack_patch_for_consts and
358         loop_iv_stack_remove_constants.
359         (gloog): Use new datatype.  Redirect construction edge to end
360         block to avoid accidental deletion.
361         * graphite.h (enum iv_stack_entry_kind): New.  Tag for data in
362         iv stack entry.
363         (union iv_stack_entry_data): New.  Data in iv stack entry.
364         (struct iv_stack_entry): New.  Datatype for iv stack entries.
365
366 2008-10-15  Sebastian Pop  <sebastian.pop@amd.com>
367
368         * tree-data-ref.c (stmt_simple_memref_p): Fix memleak.
369         * graphite.c (free_scop): Same.
370         (build_scops): Same.
371         (free_scattering): New.
372         (build_cloog_prog): Call free_scattering.
373         (patch_phis_for_virtual_defs): Fix memleak.
374         (graphite_trans_bb_strip_mine): Same.
375         (limit_scops): Same.
376
377 2008-10-15  Sebastian Pop  <sebastian.pop@amd.com>
378             Harsha Jagasia  <harsha.jagasia@amd.com>
379
380         PR tree-optimization/37828
381         * graphite.c (graphite_trans_loop_block): Do not loop block
382         single nested loops.
383
384 2008-10-15  Sebastian Pop  <sebastian.pop@amd.com>
385
386         PR tree-optimization/37686
387         * tree-loop-linear.c (linear_transform_loops): Build a
388         loop nest vector.  Pass it to lambda_compute_access_matrices.
389         * tree-data-ref.h (struct access_matrix): Store the loop nest
390         relative to which it encodes the information.
391         (AM_LOOP_NEST_NUM): Renamed AM_LOOP_NEST.
392         (am_vector_index_for_loop): Reimplemented: iterate over the
393         loop nest for finding the loop index in the access matrix.
394         (lambda_compute_access_matrices): Update declaration.
395         * lambda-code.c (build_access_matrix): Pass the loop nest and
396         record it.
397         (lambda_compute_access_matrices): Same.
398
399 2008-10-15  Andreas Krebbel  <krebbel1@de.ibm.com>
400
401         * config/s390/s390.h: (TARGET_DFP): This requires TARGET_HARD_FLOAT.
402         * config/s390/s390.md: Replace "TARGET_HARD_FLOAT &&
403         TARGET_(HARD_)DFP" with only TARGET_(HARD_)DFP since this
404         already implies hard float.  Also fix several insn condition
405         with TARGET_DFP which shall require TARGET_HARD_DFP instead.
406
407 2008-10-15  David Edelsohn  <edelsohn@gnu.org>
408
409         PR target/35483
410         Based on patches by Laurent Vivier.
411         * xcoffout.h (DBX_FINISH_STABS): Translate dollar sign to underscore.
412         * config/rs6000/rs6000-protos.h (rs6000_xcoff_strip_dollar): Declare.
413         * config/rs6000/xcoff.h (ASM_DECLARE_FUNCTION_NAME): Translate
414         dollar sign to underscore.
415         (ASM_OUTPUT_EXTERNAL): Same.
416         (ASM_OUTPUT_LABELREF): New.
417         * config/rs6000/rs6000.c (rs6000_xcoff_strip_dollar): New.
418
419         * config/rs6000/aix51.h (TARGET_USE_JCR_SECTION): Define.
420         * config/rs6000/aix52.h (TARGET_USE_JCR_SECTION): Define.
421         * config/rs6000/aix53.h (TARGET_USE_JCR_SECTION): Define.
422         * config/rs6000/aix61.h (TARGET_USE_JCR_SECTION): Define.
423
424 2008-10-15  Jakub Jelinek  <jakub@redhat.com>
425
426         PR tree-optimization/36881
427         * tree-switch-conversion.c (check_final_bb): For flag_pic, check
428         that each value doesn't need runtime relocations, for !flag_pic
429         check that each value is just a valid initializer constant.
430
431 2008-10-14  Richard Sandiford  <rdsandiford@googlemail.com>
432
433         * config/mips/mips.h (reg_class): Remove HI_AND_GR_REGS,
434         LO_AND_GR_REGS, HI_AND_FP_REGS, COP0_AND_GR_REGS, COP2_AND_GR_REGS,
435         COP3_AND_GR_REGS, ALL_COP_REGS and ALL_COP_AND_GR_REGS.
436         Add GR_AND_MD0_REGS, GR_AND_MD1_REGS, GR_AND_MD_REGS and
437         GR_AND_ACC_REGS.
438         (REG_CLASS_NAMES): Update accordingly.
439         (REG_CLASS_CONTENTS): Likewise.  Use the class name in the comments,
440         rather than an unpredictable descriptive string.
441         * config/mips/mips.c (mips_register_move_cost): Remove comment.
442         (mips_register_move_cost): Check for specific COP*_REGS classes,
443         instead of ALL_COP_AND_GR_REGS.
444         (mips_ira_cover_classes): New function.
445         (mips_secondary_reload_class): Remove MTLO and MTHI workarounds.
446         (TARGET_IRA_COVER_CLASSES): Define.
447
448 2008-10-14  Douglas Gregor  <doug.gregor@gmail.com>
449
450         PR c++/37553
451         * tree.c (build_type_attribute_qual_variant): Hash on the
452         unqualified type, and don't overwrite an existing
453         (type_hash_eq): Make the TYPE_NAME of the types significant, to
454         allow distinguishing between wchar_t and its underlying type. This
455         also means that we'll retain a little more typedef information.
456
457 2008-10-14  Andrey Belevantsev  <abel@ispras.ru>
458             Dmitry Melnik  <dm@ispras.ru>
459             Dmitry Zhurikhin  <zhur@ispras.ru>
460             Alexander Monakov  <amonakov@ispras.ru>
461             Maxim Kuvyrkov  <maxim@codesourcery.com>
462
463         * target.h (struct gcc_target): Update prototypes of needs_block_p
464         and gen_spec_check.
465         * haifa-sched.c (create_check_block_twin): Update calls to the above.
466         * sel-sched.c (create_speculation_check): Likewise.
467         * doc/tm.texi: Provide documentation for new target hooks.
468                 
469         * config/ia64/ia64.c: Include sel-sched.h.  Rewrite speculation hooks.
470         (ia64_gen_spec_insn): Removed.
471         (get_spec_check_gen_function, insn_can_be_in_speculative_p,
472         ia64_gen_spec_check): New static functions.
473         (ia64_alloc_sched_context, ia64_init_sched_context,
474         ia64_set_sched_context, ia64_clear_sched_context,
475         ia64_free_sched_context, ia64_get_insn_spec_ds,
476         ia64_get_insn_checked_ds, ia64_skip_rtx_p): Declare functions.
477         (ia64_needs_block_p): Change prototype.
478         (ia64_gen_check): Rename to ia64_gen_spec_check.
479         (ia64_adjust_cost): Rename to ia64_adjust_cost_2.  Add new parameter
480         into declaration, add special memory dependencies handling.
481         (TARGET_SCHED_ALLOC_SCHED_CONTEXT, TARGET_SCHED_INIT_SCHED_CONTEXT,
482         TARGET_SCHED_SET_SCHED_CONTEXT, TARGET_SCHED_CLEAR_SCHED_CONTEXT,
483         TARGET_SCHED_FREE_SCHED_CONTEXT, TARGET_SCHED_GET_INSN_SPEC_DS,
484         TARGET_SCHED_GET_INSN_CHECKED_DS, TARGET_SCHED_SKIP_RTX_P):
485         Define new target hooks.
486         (TARGET_SCHED_GEN_CHECK): Rename to TARGET_SCHED_GEN_SPEC_CHECK.
487         (ia64_optimization_options): Turn on selective scheduling with -O3,
488         disable -fauto-inc-dec. Set mflag_sched_control_spec to true by default
489         with selective scheduling.
490         (ia64_override_options): Initialize align_loops and align_functions
491         to 32 and 64, respectively.  Set global selective scheduling flags
492         according to target-dependent flags.
493         (rtx_needs_barrier): Support UNSPEC_LDS_A.
494         (group_barrier_needed): Use new mstop-bit-before-check flag.
495         Add heuristic.
496         (dfa_state_size): Make global.
497         (spec_check_no, max_uid): Remove.
498         (mem_ops_in_group, current_cycle): New variables.
499         (ia64_sched_init): Disable checks for !SCHED_GROUP_P after reload.
500         Initialize new variables.
501         (is_load_p, record_memory_reference): New functions.
502         (ia64_dfa_sched_reorder): Lower priority of loads when limit is
503         reached.
504         (ia64_variable_issue): Change use of current_sched_info to
505         sched_deps_info.  Update comment.  Note if a load or a store is issued.
506         (ia64_first_cycle_multipass_dfa_lookahead_guard_spec): Require a cycle
507         advance if maximal number of loads or stores was issued on current
508         cycle.
509         (scheduled_good_insn): New static helper function.
510         (ia64_dfa_new_cycle): Assert that last_scheduled_insn is set when
511         a group barrier is needed.  Fix vertical spacing.  Guard the code
512         doing state transition with last_scheduled_insn check.
513         Mark that a stop bit should be before current insn if there was a 
514         cycle advance.  Update current_cycle and mem_ops_in_group.
515         (ia64_h_i_d_extended): Change use of current_sched_info to
516         sched_deps_info. Reallocate stops_p by larger chunks.
517         (struct _ia64_sched_context): New structure.
518         (ia64_sched_context_t): New typedef.
519         (ia64_alloc_sched_context, ia64_init_sched_context,
520         ia64_set_sched_context, ia64_clear_sched_context,
521         ia64_free_sched_context): New static functions.
522         (gen_func_t): New typedef.
523         (get_spec_load_gen_function): New function.
524         (SPEC_GEN_EXTEND_OFFSET): Declare.      
525         (ia64_set_sched_flags): Check common_sched_info instead of *flags.
526         (get_mode_no_for_insn): Change the condition that prevents use of
527         special hardware registers so it can now handle pseudos.
528         (get_spec_unspec_code): New function.
529         (ia64_skip_rtx_p, get_insn_spec_code, ia64_get_insn_spec_ds,
530         ia64_get_insn_checked_ds, ia64_gen_spec_load): New static functions.
531         (ia64_speculate_insn, ia64_needs_block_p): Support branchy checks
532         during selective scheduling.
533         (ia64_speculate_insn): Use ds_get_speculation_types when
534         determining whether we need to change the pattern.
535         (SPEC_GEN_LD_MAP, SPEC_GEN_CHECK_OFFSET): Declare.
536         (ia64_spec_check_src_p): Support new speculation/check codes.
537         (struct bundle_state): New field.
538         (issue_nops_and_insn): Initialize it.
539         (insert_bundle_state): Minimize mid-bundle stop bits.
540         (important_for_bundling_p): New function.
541         (get_next_important_insn): Use important_for_bundling_p.
542         (bundling): When shifting TImode from unimportant insns, ignore
543         also group barriers.  Assert that best state is found before
544         the backward bundling pass.  Print number of mid-bundle stop bits.
545         Minimize mid-bundle stop bits.  Check correct calculation of
546         mid-bundle stop bits.
547         (ia64_sched_finish, final_emit_insn_group_barriers): Fix formatting.
548         (final_emit_insn_group_barriers): Emit stop bits before insns starting
549         a new cycle.
550         (sel2_run): New variable.
551         (ia64_reorg): When flag_selective_scheduling2 is set, run the selective
552         scheduling pass instead of schedule_ebbs.
553         
554         * config/ia64/ia64.md (speculable1, speculable2): New attributes.
555         (UNSPEC_LDS_A): New UNSPEC.
556         (movqi_internal, movhi_internal, movsi_internal, movdi_internal,
557         movti_internal, movsf_internal, movdf_internal,
558         movxf_internal): Make visible.  Add speculable* attributes.
559         (output_c_nc): New mode attribute.
560         (mov<mode>_speculative_a, zero_extend<mode>di2_speculative_a,
561         mov<mode>_nc, zero_extend<mode>di2_nc,
562         advanced_load_check_nc_<mode>): New insns.
563         (zero_extend*): Add speculable* attributes.
564
565         * config/ia64/ia64.opt (msched_fp_mem_deps_zero_cost): New option.
566         (msched-stop-bits-after-every-cycle): Likewise.
567         (msched-max-memory-insns, msched-max-memory-insns-hard-limit):
568         Likewise.
569         (msched-spec-verbose): Remove.
570         (msched-prefer-non-data-spec-insns,
571         msched-prefer-non-control-spec-insns,
572         msched-count-spec-in-critical-path,
573         msel-sched-dont-check-control-spec): Use Target  Report Var
574         instead of Common Report Var.
575
576         * config/ia64/itanium2.md: Remove incorrect bypass.
577         
578         * config/ia64/t-ia64 (ia64.o): Add dependency on sel-sched.h.
579
580 2008-10-14  Jakub Jelinek  <jakub@redhat.com>
581
582         PR middle-end/37805
583         * opts.c (common_handle_option): Don't ICE on -fhelp=joined
584         and -fhelp=separate.
585
586 2008-10-14  Ben Elliston  <bje@au.ibm.com>
587
588         * config/rs6000/rs6000.md (cell_micro): Fix formatting.
589
590 2008-10-13  Joseph Myers  <joseph@codesourcery.com>
591
592         * combine.c (simplify_set): Avoid calling LOAD_EXTEND_OP on
593         non-integer modes.
594
595 2008-10-13  Matthias Klose  <doko@ubuntu.com>
596
597         * config/pa/linux-atomic.c: Work around missing header file
598         for hppa64-linux-gnu targets.
599
600 2008-10-13  Andrew Pinski  <andrew_pinski@playstation.sony.com>
601             Kaushal Kantawala <Kaushal_Kantawala@playstation.sony.com>
602             Trevor Smigiel  <Trevor_Smigiel@playstation.sony.com>
603             Grace Cao  <grace_cao@playstation.sony.com>
604
605         * doc/invoke.texi (-mgen-cell-microcode): Document.
606         (-mwarn-cell-microcode): Document.
607         * cfglayout.c (locator_location): Export.
608         * rtl.h (locator_location): Define prototype.
609         * config/rs6000/predicates.md (cc_reg_not_micro_cr0_operand):
610         New predicate.
611         * rs6000/rs6000-protos.h (rs6000_final_prescan_insn): Define prototype.
612         * config/rs6000/rs6000.opt (mgen-cell-microcode): New option.
613         (mwarn-cell-microcode): New option.
614         * rs6000/rs6000.c (rs6000_cell_dont_microcode): Delete unused variable.
615         (rs6000_override_options): Set rs6000_gen_cell_microcode if tuning for
616         cell and not already set.
617         Turn off string instructions if not generating cell microcode.
618         (rs6000_final_prescan_insn): New function that warns about microcoded
619         instructions.
620         * config/rs6000/rs6000.h (FINAL_PRESCAN_INSN): Define.
621         * config/rs6000/rs6000.md
622         Replace cc_reg_not_cr0_operand with cc_reg_not_micro_cr0_operand if
623         the instruction would have been microcoded on the Cell.  Set cell_micro
624         to always on unnamed patterns for the string instructions.
625         (cell_micro): Update definition, remove load/store conditional
626         microcoded.
627         (sign_extend:DI): Define new pattern for non microcoded version.
628         (sign_extend:SI): Likewise.
629         (compare (div:P)): Set cell_micro to not.
630         (andsi3): Define as an expand.
631         (andsi3_mc): New pattern.
632         (andsi3_nomc): New pattern.
633         (andsi3_internal0_nomc): New pattern.
634         (andsi3_internal2): Rename to ...
635         (andsi3_internal2_mc): this and enable iff generating microcode.
636         (andsi3_internal3): Rename to ...
637         (andsi3_internal3_mc): this and enable iff generating microcode.
638         (andsi3_internal4): Enable iif generating microcode.
639         (andsi3_internal5): Rename to ..
640         (andsi3_internal5_mc): this and enable iff generating microcode.
641         (andsi3_internal5_nomc): New pattern.
642         (extzvdi_internal1): Enable iff generating microcode.
643         (extzvdi_internal2): Likewise.
644         (rotlsi3_internal7): Set cell_micro to always if non immediate form.
645         (anddi3): Change to expand.
646         (anddi3_mc): Rename from anddi3.
647         (anddi3_no_mc): New pattern.
648         (anddi3_internal2): Rename to ..
649         (anddi3_internal2_mc): this and enable iff generating microcode.
650         (anddi3_internal2_nomc): New pattern.
651         (anddi3_internal3): Rename to ..
652         (anddi3_internal3_mc): this and enable iff generating microcode.
653         (anddi3_internal3_nomc): New pattern.
654         (movti_string): Set cell_micro to always if TARGET_STRING.
655         (stmsi8): Set cell_micro to always.
656         (stmsi7): Likewise.
657         (stmsi6): Likewise.
658         (stmsi5): Likewise.
659         (stmsi4): Likewise.
660         (stmsi3): Likewise.
661         (stmsi8_power): Likewise.
662         (stmsi7_power): Likewise.
663         (stmsi6_power): Likewise.
664         (stmsi5_power): Likewise.
665         (stmsi4_power): Likewise.
666         (stmsi3_power): Likewise.
667         (movsi_update2): Enable iff generating microcode.
668         (movhi_update3): Likewise.
669         (lmw): Set cell_micro to always.
670
671 2008-10-13  Richard Sandiford  <rdsandiford@googlemail.com>
672
673         * config/s390/s390.md (UNSPEC_POOL_OFFSET): New constant.
674         * config/s390/s390.c (machine_function): Remove
675         decomposed_literal_pool_addresses_ok_p.
676         (s390_decompose_address): Check for UNSPEC_POOL_OFFSET instead of
677         the difference of two labels.
678         (s390_output_addr_const_extra): Handle UNSPEC_POOL_OFFSET.
679         (s390_pool_offset): New function.
680         (s390_find_constant, s390_find_execute, s390_dump_pool): Use it.
681         (s390_reorg): Don't set decomposed_literal_pool_addresses_ok_p.
682
683 2008-10-13  Nathan Froyd  <froydnj@codesourcery.com>
684
685         * doc/install.texi (powerpc-*-*): Require binutils 2.15.
686         (powerpc*-*-linux-gnu*): Describe.
687         * config/rs6000/ppc-asm.h (HIDDEN_FUNC): New macro.
688         * config/rs6000/crtresfpr.asm, config/rs6000/crtresgpr.asm,
689         config/rs6000/crtresxfpr.asm, config/rs6000/crtresxgpr.asm,
690         config/rs6000/crtsavfpr.asm, config/rs6000/crtsavgpr.asm,
691         config/rs6000/e500crtres32gpr.asm,
692         config/rs6000/e500crtres64gpr.asm,
693         config/rs6000/e500crtres64gprctr.asm,
694         config/rs6000/e500crtrest32gpr.asm,
695         config/rs6000/e500crtrest64gpr.asm,
696         config/rs6000/e500crtresx32gpr.asm,
697         config/rs6000/e500crtresx64gpr.asm,
698         config/rs6000/e500crtsav32gpr.asm,
699         config/rs6000/e500crtsav64gpr.asm,
700         config/rs6000/e500crtsav64gprctr.asm,
701         config/rs6000/e500crtsavg32gpr.asm,
702         config/rs6000/e500crtsavg64gpr.asm,
703         config/rs6000/e500crtsavg64gprctr.asm: Use it.
704         * config/rs6000/crtsavres.asm: Really remove.
705
706 2008-10-13  Kai Tietz  <kai.tietz@onevision.com>
707
708         Fix PR/25502
709         * c-format.c (convert_format_name_to_system_name): Use
710         TARGET_OVERRIDES_FORMAT_INIT.
711         * config.gcc (extra_options): Add for mingw targets mingw.opt.
712         * config/i386/mingw.opt: New.
713         * config/i386/mingw32.h (TARGET_OVERRIDES_FORMAT_INIT): New.
714         * config/i386/msformat-c.c (TARGET_OVERRIDES_FORMAT_INIT): New.
715         (ms_printf_length_specs): Removed const specifier.
716         * doc/tm.texi (TARGET_OVERRIDES_FORMAT_INIT): New.
717         * doc/invoke.texi (Wno-pedantic-ms-format): New.
718
719 2008-10-13  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
720
721         * builtins.c: Remove MPFR_VERSION_NUM(2,3,0) conditionals.
722         * doc/install.texi: Bump recommended MPFR to 2.3.2.
723
724 2008-10-12  Kenneth Zadeck <zadeck@naturalbridge.com>
725
726         PR middle-end/37808
727         * df-scan.c (df_ref_change_reg_with_loc_1): Added test to make
728         sure that ref has valid bb.
729         
730 2008-10-12  Richard Henderson  <rth@redhat.com>
731
732         PR middle-end/37447
733         * Makefile.in (reload1.o): Depend on EMIT_RTL_H.
734         * alias.c (value_addr_p, stack_addr_p): Remove.
735         (nonoverlapping_memrefs_p): Remove IRA special case.
736         * emit-rtl.c (get_spill_slot_decl, set_mem_attrs_for_spill): New.
737         * emit-rtl.h (set_mem_attrs_for_spill): Declare.
738         * reload1.c (alter_reg): Use it.
739
740 2008-10-12  Uros Bizjak  <ubizjak@gmail.com>
741
742         * config/i386/driver-i386.c (detect_caches_cpuid2): Use array
743         of registers instead of eax, ebx, ecx and edx.  Use for loop
744         and check register for non-zero value before the call
745         to decode_caches_intel.
746
747 2008-10-11  Kenneth Zadeck <zadeck@naturalbridge.com>
748
749         PR rtl-optimization/37448
750         * df.h: (df_ref_class): New enum.
751         (DF_REF_TYPE_NAMES, df_ref_extract): Removed.
752         (struct df_ref): Replaced with union df_ref_d.
753         (df_base_ref, df_artificial_ref, df_regular_ref, df_extract_ref):
754         New members of df_ref_d union.
755         (DF_REF_REAL_REG, DF_REF_REGNO, DF_REF_REAL_LOC, DF_REF_REG,
756         DF_REF_LOC, DF_REF_BB, DF_REF_INSN_INFO, DF_REF_INSN,
757         DF_REF_CLASS, DF_REF_TYPE, DF_REF_CHAIN, DF_REF_ID, DF_REF_FLAGS,
758         DF_REF_ORDER, DF_REF_IS_ARTIFICIAL, DF_REF_NEXT_REG,
759         DF_REF_PREV_REG, DF_REF_EXTRACT_WIDTH, DF_REF_EXTRACT_OFFSET,
760         DF_REF_EXTRACT_MODE): Replaced definition to access union df_ref_d.
761         (DF_MWS_REG_DEF_P, DF_MWS_REG_USE_P, DF_MWS_TYPE): New macros.
762         (df_scan_bb_info, df_bb_regno_first_def_find,
763         df_bb_regno_last_def_find, df_find_def, df_find_use,
764         df_refs_chain_dump, df_regs_chain_dump, df_ref_debug,
765         debug_df_ref, df_chain_create, df_chain_unlink, df_chain_copy,
766         df_ref_create, df_ref_remove, df_compute_accessed_bytes,
767         df_get_artificial_defs, df_get_artificial_uses, union_defs)
768         Replaced struct df_ref * with df_ref.
769         * df-scan.c (df_collection_rec, df_null_ref_rec,
770         df_ref_chain_delete_du_chain, df_ref_chain_delete, df_install_ref,
771         df_grow_ref_info, df_ref_create, df_reg_chain_unlink,
772         df_ref_compress_rec, df_ref_remove, df_ref_chain_delete_du_chain,
773         df_ref_chain_delete, df_free_collection_rec, df_insn_rescan,
774         df_reorganize_refs_by_reg_by_reg,
775         df_reorganize_refs_by_reg_by_insn, df_reorganize_refs_by_reg,
776         df_ref_change_reg_with_loc_1, df_notes_rescan, df_swap_refs,
777         df_sort_and_compress_refs, df_install_ref, df_install_refs,
778         df_ref_record, df_get_conditional_uses, df_get_call_refs,
779         df_bb_refs_record, df_exit_block_uses_collect,
780         df_record_exit_block_uses, df_reg_chain_mark,
781         df_reg_chain_verify_unmarked, df_refs_verify): Replaced struct
782         df_ref * with df_ref.
783         (df_ref_record, df_uses_record, df_ref_create_structure): Added
784         df_ref_class parameter.
785         (df_scan_problem_data): Added new pools for different types of refs.
786         (df_scan_free_internal, df_scan_alloc, df_free_ref,
787         df_ref_create_structure): Processed new ref pools.
788         (df_scan_start_dump): Added counts of refs and insns.
789         (df_ref_create, df_notes_rescan, df_def_record_1, df_uses_record,
790         df_get_call_refs, df_insn_refs_collect, df_bb_refs_collect,
791         df_entry_block_defs_collect, df_exit_block_uses_collect): Added
792         code to pass df_ref_class down to ref creation functions.
793         (df_reg_chain_unlink, df_ref_remove, df_ref_change_reg_with_loc_1,
794         df_reg_chain_mark): Use macros to hide references to df_refs.
795         (df_ref_chain_change_bb): Removed.
796         (df_insn_change_bb): Remove calls to df_ref_insn_change_bb.
797         (df_ref_equal_p, df_ref_compare, df_ref_create_structure):
798         Enhanced to understand df_ref union structure.
799         * fwprop.c (local_ref_killed_between_p, use_killed_between,
800         all_uses_available_at, update_df, try_fwprop_subst,
801         forward_propagate_subreg, forward_propagate_and_simplify,
802         forward_propagate_into, fwprop, fwprop_addr): Replaced struct
803         df_ref * with df_ref.
804         (use_killed_between, all_uses_available_at): Use macros to hide
805         references to df_refs.
806         * regstat.c (regstat_bb_compute_ri,
807         regstat_bb_compute_calls_crossed): Replaced struct df_ref * with
808         df_ref.
809         * see.c (see_handle_relevant_defs, see_handle_relevant_uses,
810         see_handle_relevant_refs, see_analyze_one_def,
811         see_update_relevancy, see_propagate_extensions_to_uses): Replaced
812         struct df_ref * with df_ref.
813         * ra-conflict.c (record_one_conflict, clear_reg_in_live,
814         global_conflicts): Replaced struct df_ref * with df_ref.
815         * ddg.c (create_ddg_dep_from_intra_loop_link,
816         add_cross_iteration_register_deps, build_inter_loop_deps):
817         Replaced struct df_ref * with df_ref.
818         (create_ddg_dep_from_intra_loop_link,
819         add_cross_iteration_register_deps): Use macros to hide references
820         to df_refs.
821         * auto-inc-dec.c (find_inc, merge_in_block): Replaced struct
822         df_ref * with df_ref.
823         * df-core.c (df_bb_regno_first_def_find,
824         df_bb_regno_last_def_find, df_find_def, df_find_use,
825         df_refs_chain_dump, df_regs_chain_dump, df_ref_debug,
826         debug_df_ref): Replaced struct df_ref * with df_ref.
827         (df_mws_dump, df_ref_debug): Use macros to hide references to df_refs.
828         * cse.c (cse_extended_basic_block): Replaced struct df_ref * with
829         df_ref.
830         * web.c (union_defs, entry_register, replace_ref, web_main):
831         Replaced struct df_ref * with df_ref.
832         (union_defs, replace_ref): Use macros to hide references to df_refs.
833         * global.c (compute_regs_asm_clobbered, build_insn_chain):
834         Replaced struct df_ref * with df_ref.
835         * ifcvt.c (dead_or_predicable): Replaced struct df_ref * with df_ref.
836         * sel-sched-ir.c (maybe_downgrade_id_to_use, setup_id_reg_sets, ):
837         Replaced struct df_ref * with df_ref.
838         * ira-lives.c (mark_ref_live, def_conflicts_with_inputs_p,
839         mark_ref_dead, process_bb_node_lives): Replaced struct df_ref *
840         with df_ref.
841         * local-alloc.c (block_alloc): Replaced struct df_ref * with df_ref.
842         * df-byte-scan.c (df_compute_accessed_bytes_extract,
843         df_compute_accessed_bytes_strict_low_part,
844         df_compute_accessed_bytes_subreg, df_compute_accessed_bytes):
845         Replaced struct df_ref * with df_ref.
846         (df_compute_accessed_bytes): Use macros to hide references to df_refs.
847         * init-regs.c (initialize_uninitialized_regs): Replaced struct
848         df_ref * with df_ref.
849         * loop-invariant.c (invariant_for_use, hash_invariant_expr_1,
850         check_dependency, check_dependencies, record_uses): Replaced
851         struct df_ref * with df_ref.
852         (invariant_for_use, check_dependency): Use macros to hide
853         references to df_refs.
854         * loop-iv.c (iv_analysis_loop_init, iv_get_reaching_def,
855         get_biv_step_1, get_biv_step, record_iv, iv_analyze_def,
856         iv_analyze, biv_p): Replaced struct df_ref * with df_ref.
857         (iv_analysis_loop_init, iv_get_reaching_def): Use macros to hide
858         references to df_refs.
859         * ira.c (compute_regs_asm_clobbered): Replaced struct df_ref *
860         with df_ref.
861         * combine.c (create_log_links): Replaced struct df_ref * with df_ref.
862         * df-problems.c (df_rd_bb_local_compute_process_def,
863         df_lr_bb_local_compute, df_live_bb_local_compute, df_chain_create,
864         df_chain_unlink_1, df_chain_unlink, df_chain_copy,
865         df_chain_remove_problem, df_chain_create_bb_process_use,
866         df_chain_create_bb, df_chain_top_dump, df_chain_bottom_dump,
867         df_byte_lr_check_regs, df_byte_lr_bb_local_compute,
868         df_byte_lr_simulate_defs, df_byte_lr_simulate_uses,
869         df_byte_lr_simulate_artificial_refs_at_top,
870         df_byte_lr_simulate_artificial_refs_at_end, df_create_unused_note,
871         df_note_bb_compute, df_note_add_problem, df_simulate_defs,
872         df_simulate_uses, df_simulate_artificial_refs_at_end,
873         df_simulate_artificial_refs_at_top): Replaced struct df_ref * with
874         df_ref.
875         (df_chain_dump): Use macros to hide references to df_refs.
876         * config/mips/mips.c (r10k_simplify_address): Replaced struct
877         df_ref * with df_ref.
878         * dce.c (mark_nonreg_stores, delete_corresponding_reg_eq_notes,
879         mark_artificial_uses, mark_reg_dependencies,
880         byte_dce_process_block): Replaced struct df_ref * with df_ref.
881
882 2008-10-11  Eric Botcazou  <ebotcazou@adacore.com>
883
884         * tree.h (contains_packed_reference): Mention ARRAY_RANGE_REF in
885         head comment.
886         (array_ref_element_size): Likewise.
887         (array_ref_low_bound): Likewise.
888         (array_ref_up_bound): Likewise.
889         * expr.c (contains_packed_reference): Likewise.
890         (array_ref_element_size): Likewise.
891         (array_ref_low_bound): Likewise.
892         (array_ref_up_bound): Likewise.
893         * tree-ssa-loop-ivopts.c (idx_contains_abnormal_ssa_name_p): Deal
894         with ARRAY_RANGE_REF.
895         (idx_find_step): Likewise.
896         (idx_record_use): Likewise.
897         (strip_offset_1): Likewise.
898         (idx_remove_ssa_names): Likewise.
899
900 2008-10-11  Uros Bizjak  <ubizjak@gmail.com>
901             Andi Kleen  <ak@linux.intel.com>
902
903         * config/i386/cpuid.h (__cpuid_count): New defines.
904         * config/i386/driver-i386.c (struct cache_desc): New structure.
905         (describe_cache): Use struct cache_desc to pass cache descriptions.
906         (detect_l2_cache): Ditto. Rename from decode_l2_cache.
907         (detect_caches_amd): Use struct cache_desc to describe caches.
908         (decode_caches_intel): Use struct cache_desc to pass cache
909         descriptions.  Update descriptions to match latest (rev -032,
910         December 2007) CPUID documentation.  Do not check valid bit here.
911         Check for Xeon MP value 0x49 problems.
912         (detect_caches_cpuid2): New function, split from detect_caches_intel.
913         Check valid bit before calling decode_caches_intel.  Detect number
914         of times to repeat CPUID instruction.
915         (detect_caches_cpuid4): New function.
916         (detect_caches_intel): Depending on max_level, call
917         detect_caches_cpuid2 or detect_caches_cpuid4.  Call detect_l2_cache
918         only when other methods fail to provide valid L2 cache description.
919
920 2008-10-11  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
921
922         PR middle-end/37608
923         * pa.md (call, call_value): Generate an rtx for register r4 and pass
924         it to PIC call patterns.
925         (call_symref_pic): Revise pattern to expose PIC register save.  Remove
926         code generation and attributes from pattern.  Change peephole2 to split
927         for noreturn case.  Revise split pattern for non noreturn case.
928         (call_symref_64bit, call_reg_pic, call_reg_64bit, call_val_symref_pic,
929         call_val_symref_64bit, call_val_reg_pic, call_val_reg_64bit): Likewise.
930         * pa.c (attr_length_call): Simplify extraction of call rtx.  Add some
931         asserts.
932
933 2008-10-11  David Edelsohn  <edelsohn@gnu.org>
934
935         * config/rs6000/rs6000.md (aux_truncdfsf2): Remove TARGET_SINGLE_FLOAT.
936         (addsf3, subsf3, mulsf3 ! TARGET_POWERPC): Remove TARGET_SINGLE_FLOAT
937         and fp_type.
938         (divdf3): Reformat long line.
939
940 2008-10-11  Michael J. Eager  <eager@eagercon.com>
941
942         * config/rs6000/rs6000.c (rs6000_parse_fpu_option): Interpret
943         -mfpu options.
944         (rs6000_handle_option): Process -mfpu options.
945         * config/rs6000/rs6000.h: (TARGET_XILINX_FPU): New.
946         (enum fpu_type_t): New.
947         * config/rs6000/rs6000.md (attr fp_type): New.  Include xfpu.md.
948         (addsf3, subsf3, mulsf3, adddf3, subdf3, muldf3, trunctfdf2): Set
949         fp_type.
950         (floatsisf2): Remove TARGET_SINGLE_FPU condition.
951         (floatdidf2): Add TARGET_SINGLE_FPU condition.
952         * config/rs6000/rs6000.opt (-mfpu): New.
953         (-mxilinx-fpu): New.
954         * config/rs6000/sysv4.h: (DRIVER_SELF_SPECS): New.
955         * config/rs6000/xfpu.h: New. Define TARGET_XILINX_FPU.
956         * config/rs6000/xfpu.md: New. Define Xilinx pipeline.
957         * gcc/config.gcc: powerpc-xilinx-eabi target: New.
958         * gcc/doc/invoke.texi (RS/6000 and PowerPC Options): Add -mfpu option.
959
960 2008-10-11  Jakub Jelinek  <jakub@redhat.com>
961
962         PR target/35760
963         * config/rs6000/rs6000.c (rs6000_legitimize_address): Only create
964         LO_SUM on Darwin if mode has just one unit.
965
966 2008-10-10  H.J. Lu  <hongjiu.lu@intel.com>
967
968         PR debug/37002
969         * dwarf2out.c (mem_loc_descriptor): Use DRAP for vDRAP which
970         has been optimized out.
971
972 2008-10-10  Richard Sandiford  <rdsandiford@googlemail.com>
973
974         * config/sh/sh.h (PREFERRED_RELOAD_CLASS): Test PIC_ADDR_P
975         instead of PIC_DIRECT_ADDR_P.
976         (SECONDARY_INPUT_RELOAD_CLASS): Likewise.
977         (IS_LITERAL_OR_SYMBOLIC_S16_P, IS_LITERAL_OR_SYMBOLIC_U16_P): Delete.
978         (IS_NON_EXPLICIT_CONSTANT_P): Don't test PIC_OFFSET_P.
979         (PIC_OFFSET_P): Rename to...
980         (PCREL_SYMOFF_P): ...this.
981         (PIC_DIRECT_ADDR_P): Delete.
982         (MOVI_SHORI_BASE_OPERAND_P): Check PCREL_SYMOFF_P instead of
983         PIC_OFFSET_P.
984         (OUTPUT_ADDR_CONST_EXTRA): Don't require unspecs to have a
985         single argument.  Handle UNSPEC_EXTRACT_S16, UNSPEC_EXTRACT_U16,
986         UNSPEC_SYMOFF and UNSPEC_PCREL_SYMOFF.
987         * config/sh/sh.c (print_operand): Remove CONST handling.
988         (unspec_caller_rtx_p): Rewrite to use split_const and check
989         the operands of UNSPEC bases.
990         (fixup_mova): Replace (unspec [(minus A B)] UNSPEC_PIC)
991         with (unspec [A B] UNSPEC_SYMOFF).
992         (nonpic_symbol_mentioned_p): Check for UNSPEC_SYMOFF and
993         UNSPEC_PCREL_SYMOFF.
994         (sh_secondary_reload): Test PIC_ADDR_P instead of PIC_DIRECT_ADDR_P.
995         * config/sh/sh.md (UNSPEC_EXTRACT_S16): New unspec.
996         (UNSPEC_EXTRACT_U16): Likewise.
997         (UNSPEC_SYMOFF): Likewise.
998         (UNSPEC_PCREL_SYMOFF): Likewise.
999         (movsi_const): Use UNSPEC_EXTRACT_*16s to extract 16-bit portions
1000         of constants.
1001         (movsi_const_16bit): Likewise.
1002         (movdi_const, movdi_const_32bit, movdi_const_16bit): Likewise.
1003         (GOTaddr2picreg): Replace (unspec [(minus A (minus B pc))] UNSPEC_PIC)
1004         with (unspec [A B] UNSPEC_PCREL_SYMOFF).
1005         (sym_label2reg): Replace (minus (const (unspec [A] UNSPEC_PIC)) B)
1006         with (unspec [A B] UNSPEC_SYMOFF).
1007         (symPLT_label2reg): Replace (minus A (minus B pc)) with
1008          (unspec [A B] PCREL_UNSPEC_SYMOFF).
1009         * config/sh/constraints.md (Css): Check for an UNSPEC_EXTRACT_S16.
1010         (Csu): Likewise UNSPEC_EXTRACT_U16.
1011         (Csy): Test PIC_ADDR_P instead of PIC_DIRECT_ADDR_P.
1012         (Cpg): Update after changes to IS_NON_EXPLICIT_CONSTANT_P.
1013
1014 2008-10-10  Stepan Kasal  <skasal@redhat.com>
1015
1016         * gcc/doc/invoke.texi (Optimize Options): Fix typo in examples
1017         for loop strip mining and loop blocking.
1018
1019 2008-10-10  Alexandre Oliva  <aoliva@redhat.com>
1020
1021         * fortran/trans-types.c (gfc_get_nodesc_array_type): Don't
1022         vary types depending on debug info.
1023
1024 2008-10-10  Alexandre Oliva  <aoliva@redhat.com>
1025
1026         * c-gimplify.c (c_genericize): Don't refer to DECL_ASSEMBLER_NAME
1027         before ensuring it's already computed.
1028
1029 2008-10-09  Jakub Jelinek  <jakub@redhat.com>
1030
1031         * rtl.h (locator_eq): New decl.
1032         * cfglayout.c (locator_scope): New function.
1033         (insn_scope): Use it.
1034         (locator_eq): New function.
1035         (fixup_reorder_chain): Search for last insn in src bb
1036         that has locator set or first insn in dest bb.  Use
1037         locator_eq instead of == to compare locators.
1038         * cfgrtl.c (cfg_layout_merge_blocks): Likewise.
1039         * cfgcleanup.c (try_forward_edges): Use locator_eq instead of
1040         == to compare locators.
1041
1042         * tree-ssa-live.c (remove_unused_locals): Mark all edge's goto_block
1043         as used.
1044         * gimple-low.c (lower_function_body, lower_gimple_return,
1045         lower_builtin_setjmp): Set gimple_block on the newly created stmts.
1046         * tree-cfg.c (make_cond_expr_edges, make_goto_expr_edges): Only set
1047         goto_block on edges if goto_locus is known.
1048
1049         PR middle-end/37774
1050         * tree.h (get_object_alignment): Declare.
1051         * emit-rtl.c (set_mem_attributes_minus_bitpos): Call
1052         get_object_alignment if needed.
1053         * builtins.c (get_pointer_alignment): Move ADDR_EXPR operand handling
1054         to ...
1055         (get_object_alignment): ... here.  New function.  Try harder to
1056         determine alignment from get_inner_reference returned offset.
1057
1058 2008-10-08  Jakub Jelinek  <jakub@redhat.com>
1059
1060         * graphite.c (gloog): Don't call find_unreachable_blocks
1061         before delte_unreachable_blocks.
1062
1063         * cfgexpand.c (expand_gimple_cond): Convert also goto_block and
1064         goto_locus of true_edge into RTL locator.
1065
1066 2008-10-08  Uros Bizjak  <ubizjak@gmail.com>
1067
1068         * config/i386/i386.md (*jcc_btdi_rex64): Clobber FLAGS_REG.
1069         (*jcc_btdi_mask_rex64): Ditto.
1070         (*jcc_btsi): Ditto.
1071         (*jcc_btsi_mask): Ditto.
1072         (*jcc_btsi_1): Ditto.
1073         (*jcc_btsi_mask_1): Ditto.
1074
1075 2008-10-08  Paul Brook  <paul@codesourcery.com>
1076
1077         * config/arm/bpabi.h (ARM_FUNCTION_PROFILER): Define new EABI
1078         compatible profiler (__gnu_mcount_nc).
1079         (SUBTARGET_FRAME_POINTER_REQUIRED): Define.
1080
1081 2008-10-08  H.J. Lu  <hongjiu.lu@intel.com>
1082
1083         * config/i386/i386.c (initial_ix86_tune_features): Add
1084         X86_TUNE_USE_VECTOR_FP_CONVERTS.
1085         * config/i386/i386.h (ix86_tune_indices): Likewise.
1086         (TARGET_USE_VECTOR_FP_CONVERTS): New.
1087
1088         * config/i386/i386.md: Check TARGET_USE_VECTOR_FP_CONVERTS
1089         instead of (TARGET_USE_VECTOR_CONVERTS || TARGET_GENERIC)
1090         for FP to FP splitters.
1091
1092 2008-10-08  H.J. Lu  <hongjiu.lu@intel.com>
1093
1094         * config/i386/i386.md: Add missing gen_sse2_cvtdq2p to convert
1095         splitter.
1096
1097 2008-10-08  Jakub Jelinek  <jakub@redhat.com>
1098
1099         PR target/36635
1100         PR target/37290
1101         PR rtl-optimization/37341
1102         * cse.c (cse_cc_succs): Add ORIG_BB argument, don't follow edges
1103         to ORIG_BB, pass through ORIG_BB recursively.
1104         (cse_condition_code_reg): Adjust caller.
1105
1106 2008-10-08  Kai Tietz  <kai.tietz@onevision.com>
1107
1108         * sdbout.c (sdbout_one_type): Treat the value type
1109         CONST_DECL for enumerals.
1110
1111 2008-10-07  H.J. Lu  <hongjiu.lu@intel.com>
1112
1113         * config/i386/i386.md: Remove trailing white spaces.
1114
1115 2008-10-07  Kenneth Zadeck <zadeck@naturalbridge.com>
1116
1117         PR rtl-optimization/37448
1118         * alloc-pool.c (struct alloc_pool_descriptor) [elt_size]: New field.
1119         (stuct alloc_pool_descriptor) [created, allocated, current, peak]:
1120         Make unsigned long.
1121         (struct output_info) [count]: Renamed total_created and made
1122         unsigned long.
1123         (struct output_info) [size]: Renamed total_allocated and made
1124         unsigned long.
1125         (create_alloc_pool, empty_alloc_pool, pool_alloc, pool_free):
1126         Properly keep track of desc->size.
1127         (print_statistics, dump_alloc_pool_statistics): Enhance the
1128         printing of statistics to print the number of elements and to use
1129         unsigned longs.
1130         
1131 2008-10-07  Jakub Jelinek  <jakub@redhat.com>
1132
1133         PR middle-end/37576
1134         * opts.h (CL_SAVE): Move up to flags range.
1135         (CL_PARAMS, CL_WARNING, CL_OPTIMIZATION, CL_TARGET,
1136         CL_COMMON): Renumber.
1137         (CL_MIN_OPTION_CLASS): Set to CL_PARAMS.
1138         * opts.c (common_handle_option): Revert last change.
1139
1140 2008-10-07  H.J. Lu  <hongjiu.lu@intel.com>
1141
1142         * config/i386/i386-protos.h (ix86_schedule): New.
1143
1144         * config/i386/i386.c (ix86_schedule): New.
1145         (override_options): Add schedule to processor_alias_table.  Set
1146         ix86_schedule from the schedule field in processor_alias_table.
1147         (ix86_function_specific_save): Save ix86_schedule.
1148         (ix86_function_specific_restore): Restore ix86_schedule.
1149
1150         * config/i386/i386.md (cpu): Map to ix86_schedule instead of
1151         ix86_tune.  Add none and remove i386, i486, pentium4, nocona
1152         and generic32.
1153
1154         * config/i386/i386.opt: Add schedule.
1155
1156         * config/i386/ppro.md: Remove generic32.
1157
1158 2008-10-07  Simon Martin  <simartin@users.sourceforge.net>
1159
1160         PR c/35437
1161         * expr.c (count_type_elements): Handle ERROR_MARK.
1162
1163 2008-10-07  Jakub Jelinek  <jakub@redhat.com>
1164
1165         PR debug/29609
1166         PR debug/36690
1167         PR debug/37616
1168         * basic-block.h (struct edge_def): Add goto_block field.
1169         * cfglayout.c (fixup_reorder_chain): Ensure that there is at least
1170         one insn with locus corresponding to edge's goto_locus if !optimize.
1171         * profile.c (branch_prob): Copy edge's goto_block.
1172         * cfgrtl.c (force_nonfallthru_and_redirect): Use goto_locus for
1173         emitted jumps.
1174         (cfg_layout_merge_blocks): Emit a nop with edge's goto_locus
1175         locator in between the merged basic blocks if !optimize and needed.
1176         * cfgexpand.c (expand_gimple_cond): Convert goto_block and
1177         goto_locus into RTL locator.  For unconditional jump use that
1178         locator for the jump insn.
1179         (expand_gimple_cond): Convert goto_block and goto_locus into
1180         RTL locator for all remaining edges.  For unconditional jump
1181         use that locator for the jump insn.
1182         * cfgcleanup.c (try_forward_edges): Avoid the optimization if
1183         there is more than one edge or insn locator along the forwarding
1184         edges and !optimize.  If there is just one, set e->goto_locus.
1185         * tree-cfg.c (make_cond_expr_edges, make_goto_expr_edges): Set also
1186         edge's goto_block.
1187         (move_block_to_fn): Adjust edge's goto_block.
1188
1189 2008-10-07  H.J. Lu  <hongjiu.lu@intel.com>
1190
1191         PR middle-end/37731
1192         * expmed.c (expand_mult): Properly check DImode constant in
1193         CONST_DOUBLE.
1194
1195 2008-10-07  Jakub Jelinek  <jakub@redhat.com>
1196
1197         PR debug/37738
1198         * dwarf2out.c (common_block_die_table): New variable.
1199         (common_block_die_table_hash, common_block_die_table_eq): New
1200         functions.
1201         (gen_variable_die): Look up a DW_TAG_common_block die for a particular
1202         COMMON block in the current scope rather than globally.  Optimize
1203         DW_OP_addr SYMBOL_REF DW_OP_plus_uconst off into
1204         DW_OP_addr SYMBOL_REF+off.
1205
1206 2008-10-07  Eric Botcazou  <ebotcazou@adacore.com>
1207
1208         * tree-ssa-loop-ivopts.c (may_be_nonaddressable_p) <VIEW_CONVERT_EXPR>:
1209         Return true for non-addressable GIMPLE operands.
1210
1211 2008-10-07  H.J. Lu  <hongjiu.lu@intel.com>
1212
1213         PR target/24765
1214         * config/i386/i386.c (initial_ix86_tune_features): Remove
1215         X86_TUNE_USE_BIT_TEST.
1216         * config/i386/i386.h (ix86_tune_indices): Likewise.
1217         (TARGET_USE_BIT_TEST): Removed.
1218
1219 2008-10-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
1220
1221         * config.gcc (arm*-*-*): Add aapcs-linux to supported ABIs.
1222
1223 2008-10-06  Adam Nemet  <anemet@caviumnetworks.com>
1224
1225         * config/mips/mips.md (mulsi3_mul3, muldi3_mul3): Merge these ...
1226         (mul<mode>3_mul3): ... into this new template.
1227
1228 2008-10-06  Aldy Hernandez  <aldyh@redhat.com>
1229
1230         * gimplify.c (gimplify_arg): Add location argument.  Use it.
1231         (gimplify_call_expr): Pass location to gimplify_arg.
1232         (gimplify_modify_expr_to_memcpy): Same.
1233         (gimplify_modify_expr_to_memset): Same.
1234
1235 2008-10-06  Andrew Pinski  <andrew_pinski@playstation.sony.com>
1236
1237         * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin):
1238         Update calls to build_unary_op and build_indirect_ref for location
1239         changes.
1240
1241 2008-10-06  Aldy Hernandez  <aldyh@redhat.com>
1242
1243         build_modify_expr.
1244         * c-decl.c (finish_decl): Pass input_location to build_unary_op.
1245         * c-typeck.c (array_to_pointer_conversion): Pass location to
1246         build_unary_op.
1247         (function_to_pointer_conversion): Use error_at and warning_at.
1248         (build_indirect_ref): Same.
1249         (build_array_ref): Pass location to build_binary_op.
1250         (parser_build_unary_op): Do not set location after calling
1251         build_unary_op.
1252         (build_unary_op): Add location argument.  Use it throughout.  Set
1253         EXPR_LOCATION before returning new tree.
1254         (build_modify_expr): Same.
1255         (build_binary_op): Use location throughout.  Set EXPR_LOCATION before
1256         returning node.
1257         * c-omp.c (c_finish_omp_atomic): Pass location to build_unary_op,
1258         build_indirect_ref, build_modify_expr.
1259         (c_finish_omp_for): Same.  Use error_at instead of error.
1260         * c-common.c (c_common_truthvalue_conversion): Pass location to
1261         build_unary_op.
1262         (warn_for_div_by_zero): Add location argument.
1263         * c-common.h: Add argument to build_modify_expr, build_indirect_ref,
1264         build_unary_op, warn_for_div_by_zero.
1265         * c-parser.c (c_parser_typeof_specifier): Use
1266         protected_set_expr_location.
1267         (c_parser_statement_after_labels): Same.
1268         (c_parser_condition): Same.
1269         (c_parser_expr_no_commas): Pass correct location to build_modify_expr.
1270         (c_parser_conditional_expression): Use protected_set_expr_location.
1271         (c_parser_unary_expression): Pass location to build_indirect_ref.
1272         (c_parser_postfix_expression_after_primary): Pass location to
1273         build_indirect_ref, build_unary_op.
1274         (c_parser_omp_for_loop): Set the increment expression's EXPR_LOCATION.
1275
1276 2008-10-06  Joshua Kinard  <kumba@gentoo.org>
1277
1278         * doc/invoke.texi: List r1x000 family under the -march MIPS option.
1279         * config/mips/mips.h (PROCESSOR_R10000): New processor_type.
1280         * config/mips/mips.c (mips_cpu_info_table): Add r10000, r12000,
1281         r14000 and r16000.
1282         (mips_rtx_cost_data): Add a PROCESSOR_R10000 entry.
1283         (mips_issue_rate): Handle PROCESSOR_R10000.
1284         * config/mips/mips.md (cpu): Add r10000.
1285         Include r10000.md.
1286         * config/mips/10000.md: New file.
1287
1288 2008-10-06  Richard Sandiford  <rdsandiford@googlemail.com>
1289
1290         * config/rs6000/rs6000-protos.h (rs6000_find_base_term): Declare.
1291         * config/rs6000/rs6000.h (FIND_BASE_TERM): New macro.
1292         * config/rs6000/rs6000.c (rs6000_find_base_term): New function.
1293
1294 2008-10-06  Richard Sandiford  <rdsandiford@googlemail.com>
1295
1296         * config/darwin-protos.h (machopic_function_base_name): Delete.
1297         (machopic_function_base_sym): Likewise.
1298         (machopic_gen_offset): Declare.
1299         * config/darwin.h (MACHOPIC_FUNCTION_BASE_NAME): New macro.
1300         (ASM_OUTPUT_LABELREF): Use it instead of a hard-coded string constant.
1301         * config/darwin.c (machopic_function_base_name): Delete.
1302         (machopic_function_base_sym): Likewise.
1303         (gen_pic_offset): Rename to...
1304         (machopic_gen_offset): ...this and remove the pic_base argument.
1305         Instead use MACHO_DYNAMIC_NO_PIC_P to decide whether a PIC offset
1306         is needed.  Create an UNSPEC_MACHOPIC_OFFSET if so, and set
1307         crtl->uses_pic_offset_table.
1308         (machopic_indirect_data_reference): Use new machopic_gen_offset
1309         interface.
1310         (machopic_legitimize_pic_address): Likewise.
1311         (machopic_operand_p): Check for UNSPEC_MACHOPIC_OFFSET.
1312
1313         * config/i386/darwin.h (GOT_SYMBOL_NAME): Use
1314         MACHOPIC_FUNCTION_BASE_NAME instead of machopic_function_base_name.
1315         * config/i386/i386.c (output_set_got): Likewise.
1316         (darwin_local_data_pic): Check for an UNSPEC_MACHOPIC_OFFSET
1317         instead of a MINUS.
1318         (legitimate_pic_operand_p): Handle UNSPEC_MACHOPIC_OFFSET.
1319         (legitimate_address_p): Likewise.
1320         (output_pic_addr_const): Likewise.
1321         (output_addr_const_extra): Likewise.
1322         (ix86_delegitimize_address): Expect darwin_local_data_pic to
1323         match an UNSPEC rather than a MINUS.
1324         * config/i386/i386.md (UNSPEC_MACHOPIC_OFFSET): Define.
1325         (builtin_setjmp_receiver): Use machopic_gen_offset.
1326         * config/i386/predicates.md (pic_symbolic_operand): Handle
1327         UNSPEC_MACHOPIC_OFFSET.
1328
1329         * config/rs6000/rs6000.c (rs6000_legitimize_reload_address):
1330         Use machopic_gen_offset and machopic_operand_p.
1331         (rs6000_output_addr_const_extra): Handle UNSPEC_MACHOPIC_OFFSET.
1332         (rs6000_emit_prologue): Use MACHOPIC_FUNCTION_BASE_NAME.
1333         * config/rs6000/rs6000.md (UNSPEC_MACHOPIC_OFFSET): Define.
1334         (builtin_setjmp_receiver): Use MACHOPIC_FUNCTION_BASE_NAME.
1335         Set crtl->uses_pic_offset_table.
1336
1337 2008-10-06  Richard Sandiford  <rdsandiford@googlemail.com>
1338
1339         * config/rs6000/rs6000-protos.h (rs6000_output_addr_const_extra):
1340         Declare.
1341         * config/rs6000/rs6000.h (OUTPUT_ADDR_CONST_EXTRA): New macro.
1342         * config/rs6000/rs6000.md (UNSPEC_TOCREL): New constant.
1343         * config/rs6000/rs6000.c (constant_pool_expr_1): Delete.
1344         (constant_pool_expr_p): Use split_const and check the base.
1345         (toc_relative_expr_p): Likewise, checking for an UNSPEC_TOCREL
1346         instead of a MINUS.
1347         (legitimate_constant_pool_address_p): Check toc_relative_p
1348         instead of constant_pool_expr_p.
1349         (print_operand_address): Always use output_addr_const for
1350         constant pool addresses.
1351         (rs6000_output_addr_const_extra): New function.
1352         (create_TOC_reference): Create an UNSPEC_TOCREL instead of a MINUS.
1353
1354 2008-10-06  Vladimir Makarov  <vmakarov@redhat.com>
1355
1356         PR middle-end/37535
1357
1358         * ira-lives.c (mark_reg_live, mark_reg_dead): New functions.
1359         (mark_ref_live, mark_ref_dead): Use them.
1360         (def_conflicts_with_inputs_p): Remove.
1361         (mark_early_clobbers): New function.
1362         (process_bb_node_lives): Call preprocess_constraints and
1363         mark_early_clobbers.
1364
1365         * doc/rtx.texi (clobber): Change how RA deals with clobbers.
1366
1367 2008-10-06  Danny Smith  <dannysmith@users.sourceforge.net>
1368
1369         * config/i386/mingw32.h (REAL_LIBGCC_SPEC): Add thread cleanup
1370         lib with -mthread switch.
1371
1372 2008-10-05  Dodji Seketeli  <dodji@redhat.com>
1373
1374         PR c++/37410
1375         * dwarf2out.c (dwarf2out_imported_module_or_decl): Split this
1376         function in two, making it call a new and reusable
1377         dwarf2out_imported_module_or_decl() that takes the containing
1378         BLOCK of the declaration in argument.
1379         (dwarf2out_imported_module_or_decl_real): New function.
1380         (decls_for_scope, gen_decl_die, dwarf2out_decl): Take
1381         IMPORTED_DECL in account.
1382         * tree.def: Added IMPORTED_DECL node type.
1383         * tree.h: Added accessors for IMPORTED_DECL nodes.
1384         * tree.c (init_ttree): Initialise IMPORTED_DECL node type.
1385
1386 2008-10-05  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
1387
1388         * doc/gimple.texi: Fix some typos, wrap some long lines,
1389         fix some broken wraps with continuations.
1390         * tree-ssa-reassoc.c: Fix comment typos.
1391
1392 2000-10-04  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
1393
1394         PR target/37603
1395         * pa.c (legitimize_pic_address): Force function labels to memory in
1396         word mode.
1397
1398 2008-10-04  Anton Blanchard  <anton@samba.org>
1399
1400         * config/rs6000/rs6000.c (rs6000_emit_sync): Use gen_lwsync().
1401         (rs6000_split_atomic_op): Same.
1402         (rs6000_split_compare_and_swap): Same.
1403         (rs6000_split_compare_and_swapqhi): Same.
1404
1405 2008-10-04  Richard Guenther  <rguenther@suse.de>
1406
1407         * tree-ssa-sccvn.c (vn_reference_op_eq): Use types_compatible_p
1408         instead of pointer equality.
1409         (vn_nary_op_eq): Likewise.
1410
1411 2008-10-03  Andrew Pinski  <andrew_pinski@playstation.sony.com>
1412
1413         * config/rs6000/rs6000.md (fseldfsf4): Add TARGET_SINGLE_FLOAT 
1414         condition.
1415         (fselsfdf4): Make condition on "TARGET_HARD_FLOAT && TARGET_FPRS &&
1416         TARGET_DOUBLE_FLOAT && TARGET_SINGLE_FLOAT".
1417
1418 2008-10-03  Danny Smith  <dannysmith@users.sourceforge.net>
1419
1420         * config/i386/winnt.c (i386_pe_strip_name_encoding_full):
1421         Revert previous change.
1422
1423 2008-10-03  Tom Tromey  <tromey@redhat.com>
1424
1425         * stringpool.c (ggc_alloc_string): Terminate string.
1426
1427 2008-10-03  Jakub Jelinek  <jakub@redhat.com>
1428
1429         * gimplify.c (gimplify_function_tree): For -finstrument-functions
1430         use gimple_bind_{,set_}block instead of gimple_{,set_}block.
1431         * gimple.h (gimple_bind_set_block): Allow second argument to be NULL.
1432
1433         PR debug/37726
1434         * gimplify.c (declare_vars): Use gimple_bind_block instead of
1435         gimple_block.
1436
1437 2008-10-03  Pascal Obry  <obry@adacore.com>
1438
1439         * gcov.c (create_file_names): Properly handle UNIX and DOS
1440         directory separators.
1441         (make_gcov_file_name): Likewise + convert the ':' DOS drive
1442         separator to '~' to ensure clean filenames on Windows.
1443
1444 2008-10-02  Danny Smith  <dannysmith@users.sourceforge.net>
1445
1446         * config/i386/winnt.c (i386_pe_strip_name_encoding_full):
1447         Add a null terminator to the stripped name.
1448
1449 2008-10-02  David Edelsohn  <edelsohn@gnu.org>
1450
1451         * config/rs6000/rs6000.c (USE_FP_FOR_ARG_P): Revert
1452         TARGET_DOUBLE_FLOAT, TARGET_SINGLE_FLOAT.
1453         (function_arg_advance): Condition on TARGET_DOUBLE_FLOAT,
1454         TARGET_SINGLE_FLOAT.  Revert SCALAR_FLOAT_MODE_P condition.
1455         (function_arg): Condition on TARGET_DOUBLE_FLOAT, TARGET_SINGLE_FLOAT.
1456         (rs6000_function_value): Revert TARGET_DOUBLE_FLOAT,
1457         TARGET_SINGLE_FLOAT.
1458
1459 2008-10-02  Daniel Jacobowitz  <dan@codesourcery.com>
1460
1461         * builtins.c (fold_builtin_pow): Check for 0 ** NEGATIVE.
1462
1463 2008-10-02  Richard Guenther  <rguenther@suse.de>
1464
1465         PR middle-end/37713
1466         * tree-ssa.c (useless_type_conversion_p_1): For COMPLEX_TYPE
1467         and VECTOR_TYPE recurse with useless_type_conversion_p which
1468         properly handles void pointer conversion.
1469
1470 2008-10-02  Danny Smith  <dannysmith@users.sourceforge.net>  
1471
1472         PR target/37528
1473         * config/i386/mingw32.h (LIBGCC_SPEC) : Replace with ..
1474         (REAL_LIBGCC_SPEC): New.  Always include -lgcc.
1475
1476 2008-10-01  Andrew Pinski  <andrew_pinski@playstation.sony.com>
1477
1478         * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin):
1479         Handle ALTIVEC_BUILTIN_VEC_SPLATS, ALTIVEC_BUILTIN_VEC_PROMOTE,
1480         ALTIVEC_BUILTIN_VEC_EXTRACT, and ALTIVEC_BUILTIN_VEC_INSERT specially,
1481         they translate to non builtins.
1482         * config/rs6000/rs6000.c (altivec_init_builtins): Add new variable
1483         opaque_ftype_opaque.  Define builtins __builtin_vec_splats,
1484         __builtin_vec_promote, __builtin_vec_extract, and
1485         __builtin_vec_insert.
1486         * config/rs6000/rs6000.h (enum rs6000_builtins): Add
1487         ALTIVEC_BUILTIN_VEC_EXTRACT, ALTIVEC_BUILTIN_VEC_PROMOTE,
1488         ALTIVEC_BUILTIN_VEC_INSERT, and ALTIVEC_BUILTIN_VEC_SPLATS.
1489         * config/rs6000/altivec.h (vec_extract): Define
1490         (vec_insert): Define.
1491         (vec_splats): Define.
1492         (vec_promote): Define.
1493
1494 2008-10-01  Andrew Pinski  <andrew_pinski@playstation.sony.com>
1495             Yukishige Shibata  <shibata@rd.scei.sony.co.jp>
1496             Trevor Smigiel  <Trevor_Smigiel@playstation.sony.com>
1497
1498         * config/rs6000/rs6000-c.c (altivec_overloaded_builtins): Add Cell
1499         Altivec intrinsics.
1500         * config/rs6000/rs6000.c (altivec_expand_lv_builtin): Delete
1501         prototype.  Add new parameter, blk.
1502         Use BLKmode for the MEM if blk is true.
1503         (altivec_expand_builtin): Handle ALTIVEC_BUILTIN_STVLX,
1504         ALTIVEC_BUILTIN_STVLXL, ALTIVEC_BUILTIN_STVRX, and
1505         ALTIVEC_BUILTIN_STVRXL.
1506         Update usage of altivec_expand_lv_builtin.
1507         Handle ALTIVEC_BUILTIN_LVLX, ALTIVEC_BUILTIN_LVLXL,
1508         ALTIVEC_BUILTIN_LVRX, and ALTIVEC_BUILTIN_LVRXL.
1509         (altivec_init_builtins): If compiling for the Cell, also define the
1510         cell VMX builtins.
1511         * config/rs6000/rs6000.h (rs6000_builtins): Define
1512         ALTIVEC_BUILTIN_LVLX, ALTIVEC_BUILTIN_LVLXL, ALTIVEC_BUILTIN_LVRX,
1513         ALTIVEC_BUILTIN_LVRXL, ALTIVEC_BUILTIN_STVLX, ALTIVEC_BUILTIN_STVLXL,
1514         ALTIVEC_BUILTIN_STVRX, ALTIVEC_BUILTIN_STVRXL,
1515         ALTIVEC_BUILTIN_VEC_LVLX, ALTIVEC_BUILTIN_VEC_LVLXL,
1516         ALTIVEC_BUILTIN_VEC_LVRX, ALTIVEC_BUILTIN_VEC_LVRXL,
1517         ALTIVEC_BUILTIN_VEC_STVLX, ALTIVEC_BUILTIN_VEC_STVLXL,
1518         ALTIVEC_BUILTIN_VEC_STVRX, and ALTIVEC_BUILTIN_VEC_STVRXL.
1519         * config/rs6000/altivec.md (define_constants): Define UNSPEC_LVLX,
1520         UNSPEC_LVLXL, UNSPEC_LVRX, UNSPEC_LVRXL, UNSPEC_STVLX, UNSPEC_STVLXL,
1521         UNSPEC_STVRX, and UNSPEC_STVRXL.
1522         (altivec_lvlx): New pattern.
1523         (altivec_lvlxl): New pattern.
1524         (altivec_lvrx): New pattern.
1525         (altivec_lvrxl): New pattern.
1526         (altivec_stvlx): New pattern.
1527         (altivec_stvlxl): New pattern.
1528         (altivec_stvrx): New pattern.
1529         (altivec_stvrxl): New pattern.
1530         * config/rs6000/altivec.h (vec_lvlx): Define if PPU is defined.
1531         (vec_lvlxl): Likewise.
1532         (vec_lvrx): Define if PPU is defined.
1533         (vec_lvrxl): Likewise.
1534         (vec_stvlx): Define if PPU is defined.
1535         (vec_stvlxl): Likewise.
1536         (vec_stvrx): Define if PPU is defined.
1537         (vec_stvrxl): Likewise.
1538
1539 2008-10-01  Geert Bosch  <bosch@adacore.com>
1540
1541         * tree.c (contains_placeholder_p): Return 0 for a SAVE_EXPR.
1542
1543 2008-10-01  Richard Guenther  <rguenther@suse.de>
1544
1545         PR tree-optimization/37617
1546         * tree-ssa-pre.c (create_expression_by_pieces): During FRE
1547         do not add to the NEW_SETS.
1548
1549 2008-10-01  Richard Guenther  <rguenther@suse.de>
1550
1551         PR middle-end/37285
1552         * tree-vrp.c (execute_vrp): If we optimized away the default
1553         case make sure to promote the label that got in place of it
1554         to a default case label.
1555
1556 2008-10-01  Richard Henderson  <rth@redhat.com>
1557
1558         PR tree-opt/35737
1559         * tree-complex.c (set_component_ssa_name): Don't optimize
1560         is_gimple_min_invariant values with ssa_names in abnormal phis.
1561
1562 2008-09-30  Paolo Bonzini  <bonzini@gnu.org>
1563
1564         PR tree-optimization/37662
1565         * tree-ssa-ccp.c (fold_gimple_assign): Invert the operands of a
1566         commutative binary operation if they are in the wrong order and
1567         fold_build2 produces non-GIMPLE.
1568
1569 2008-09-30  Jakub Jelinek  <jakub@redhat.com>
1570
1571         PR tree-optimization/37662
1572         PR tree-optimization/37663
1573         * tree-vrp.c (simplify_truth_ops_using_ranges): Don't call
1574         get_value_range with non-SSA_NAME.  Don't assert operands have been
1575         folded, instead just bail out.
1576
1577 2008-09-30  Andrew Pinski  <andrew_pinski@playstation.sony.com>
1578
1579         * config/rs6000/rs6000.md (fnmadds combiner): Revert typo.
1580
1581 2008-09-30  Richard Guenther  <rguenther@suse.de>
1582
1583         PR middle-end/37491
1584         * tree-vect-transform.c (vect_create_data_ref_ptr): Properly
1585         build restrict-qualified pointers.
1586         (vectorizable_store): Move alias check later.
1587         (vectorizable_load): Likewise.
1588
1589 2008-09-30  Paolo Bonzini  <bonzini@gnu.org>
1590
1591         * c-common.c (empty_if_body_warning): Remove.
1592         * c-common.h (empty_if_body_warning): Remove.
1593         * c-parser.c (c_parser_if_body, c_parser_else_body): Implement
1594         here the -Wempty-body warning for `if' and `else' statements.
1595         * c-typeck.c (c_finish_if_stmt): Do not call empty_body_warning.
1596
1597 2008-09-29  H.J. Lu  <hongjiu.lu@intel.com>
1598
1599         * config/i386/i386.opt: Add msse2avx.
1600
1601         * config/i386/linux.h (ASM_SPEC): New.  Support -msse2avx.
1602         * config/i386/linux64.h (ASM_SPEC): Likewise.
1603
1604         * doc/invoke.texi: Document -msse2avx.
1605
1606 2008-09-29  Eric Botcazou  <ebotcazou@adacore.com>
1607
1608         * dwarf2out.c (constant_size): Use HOST_WIDE_INT in parameter type.
1609
1610 2008-09-29  Joseph Myers  <joseph@codesourcery.com>
1611
1612         * ifcvt.c (noce_emit_store_flag): If using condition from original
1613         jump, reverse it if if_info->cond was reversed.
1614
1615 2008-09-29  Eric Botcazou  <ebotcazou@adacore.com>
1616
1617         * expr.c (expand_expr_real_1) <normal_inner_ref>: Force op0 to
1618         non-constant memory if it cannot be forced to constant memory.
1619         Overhaul surrounding code and factor out common condition.
1620
1621 2008-09-29  Jeff Law <law@redhat.com>
1622
1623         * reload1.c (alter_reg): Add missing curly braces.
1624
1625 2008-09-29  Michael J. Eager  <eager@eagercon.com>
1626
1627         * config/rs6000/predicates.md (easy_fp_constant): Single FP consts
1628         are easy.
1629         * config/rs6000/rs6000.c (rs6000_override_options): Move
1630         rs6000_init_hard_regno_mode_ok after all options changed.
1631         Set rs6000_single_float, rs6000_double_float if TARGET_HARD_FLOAT.
1632         (rs6000_handle_option): Process -msingle-float, -mdouble-float,
1633         -msimple-fpu flags.  Add warning messages if single FP not configured.
1634         (rs6000_file_start): Output gnu_attribute for single-float.
1635         (legitimate_lo_sum_address_p): Condition on TARGET_DOUBLE_FLOAT.
1636         (rs6000_legitimize_address): Likewise.
1637         (rs6000_legitimize_reload_address): Likewise.
1638         (rs6000_emit_move): Condition on TARGET_DOUBLE_FLOAT,
1639         TARGET_SINGLE_FLOAT.
1640         (function_arg_advance): Likewise (partial conversion).
1641         (setup_incoming_varargs): Condition on TARGET_DOUBLE_FLOAT.
1642         (rs6000_gimplify_va_arg): Condition on TARGET_DOUBLE_FLOAT,
1643         TARGET_SINGLE_FLOAT.
1644         (rs6000_split_multireg_move): Condition on TARGET_DOUBLE_FLOAT.
1645         (rs6000_emit_prologue): Likewise.
1646         (rs6000_function_value): Condition on TARGET_DOUBLE_FLOAT,
1647         TARGET_SINGLE_FLOAT.
1648         (rs6000_libcall_value): Likewise.
1649         * config/rs6000/rs6000.h (TARGET_SINGLE_FLOAT): New default to 1.
1650         (TARGET_DOUBLE_FLOAT): New default to 1
1651         (TARGET_SIMPLE_FPU): New default to 0
1652         (TARGET_SINGLE_FPU): New default to 0
1653         (TARGET_SINGLE_FLOAT_MODE): New.
1654         (TARGET_DOUBLE_FLOAT_MODE): New.
1655         * config/rs6000/singlefp.h: New; redefine TARGET_SINGLE_FLOAT,
1656         TARGET_DOUBLE_FLOAT, TARGET_SIMPLE_FPU, TARGET_SINGLE_FPU,
1657         UNITS_PER_FP_WORD
1658         * config/rs6000/rs6000.md (define_mode_iterator): Condition on
1659         TARGET_DOUBLE_FLOAT, TARGET_SINGLE_FLOAT.
1660         (extendsfdf2, extendsfdf2_fpr, truncdfsf2, truncdfsf2_fpr,
1661         copysigndf3,fseldfsf4, negdf2, negdf2_fpr, absdf2, absdf2_fpr,
1662         nabsdf2_fpr, adddf3, adddf3_fpr, subdf3, subdf3_fpr, muldf3,
1663         muldf3_fpr, divdf3, divdf3_fpr, sqrtdf2, smaxdf3, smindf3,
1664         movdfcc, *fseldfdf4, floatsidf2, *floatsidf2_internal,
1665         floatunssidf2, *floatunssidf2_internal, fix_truncdfsi2,
1666         *fix_truncdfsi2_internal, fix_truncdfsi2_internal_gfxopt,
1667         fix_truncdfsi2_mfpgpr, fctiwz, btruncdf2, ceildf2, floordf2,
1668         rounddf2, floatdidf2, floatsidf_ppc64_mfpgpr, floatsidf_ppc64,
1669         floatunssidf_ppc64, fix_truncdfdi2, movdf_hardfloat32,
1670         movdf_hardfloat64_mfpgpr, movdf_hardfloat64, extenddftf2_fprs,
1671         extenddftf2_internal, trunctfdf2_internal2, fix_trunc_helper,
1672         abstf2_internal, movdf_update1, movdf_update2, cmpdf_internal1,
1673         cmptf_internal1, *cmptf_internal2): Condition on
1674         TARGET_DOUBLE_FLOAT.
1675         (aux_truncdfsf2, negsf2, *negsf2, abssf2, *abssf2, addsf3, subsf3,
1676         mulsf3, divsf3, sqrtsf2, copysignsf3, smaxsf3, sminsf3, movsfcc,
1677         *fselsfsf4, fixuns_truncsfsi2, fix_truncsfsi2, floatunssisf2,
1678         btruncsf2, ceilsf2, floorsf2, roundsf2, floatdisf2_internal1,
1679         floatdisf2_internal2, *movsf_hardfloat, trunctfsf2_fprs,
1680         *movsf_update1, *movsf_update2, *cmpsf_internal1): Condition on
1681         TARGET_SINGLE_FLOAT.
1682         (divsf3, sqrtsf2, divdf3, divdf3_fpr): Condition on TARGET_SIMPLE_FPU.
1683         * config/rs6000/rs6000.opt (-msingle-float): New.
1684         (-mdouble-float): New.
1685         (-msimple-fpu): New.
1686         * doc/invoke.texi (RS/6000 and PowerPC Options): Add
1687         -msingle-float, -mdouble-float, -msimple-fpu options.
1688         * config/rs6000/rs6000-c.c (rs6000_cpu_cpp_builtins): Set
1689         _SOFT_DOUBLE for -msingle-float.
1690         * config.gcc: New config for target=powerpc-xilinx-eabi.
1691
1692 2008-09-29  Tobias Grosser  <grosser@fim.uni-passau.de>
1693
1694         * graphite.c (dot_all_scops_1): Remove unused checks. SCoPs always
1695         have exit and entry.
1696         (new_scop): Take entry and exit edge to define new SCoP.
1697         (sd_region_p): New structure used during SCoP detection.
1698         (move_scops): Delete.
1699         (move_sd_regions): New.
1700         (scopdet_info): Change the definition from edges back to basic_blocks.
1701         (scopdet_edge_info):  Work on basic_blocks and rename to
1702         scopdet_basic_block_info.
1703         (split_difficult_bb): At the moment removed. We should later
1704         add it at another place.
1705         (build_scops_1): Work on basic_blocks.
1706         (bb_in_sd_region): New.
1707         (find_single_entry_edge): New.
1708         (find_single_exit_edge): New.
1709         (create_single_entry_edge): New.
1710         (sd_region_without_exit): New.
1711         (create_single_exit_edge): New.
1712         (unmark_exit_edges): New.
1713         (mark_exit_edges): New.
1714         (create_sese_edges): New.
1715         (build_graphite_scops): New.
1716         (build_scops): Make SCoPs SESE.
1717         (limit_scops): Use the new functions.
1718
1719 2008-09-29  Hans-Peter Nilsson  <hp@axis.com>
1720
1721         * config/cris/cris.h (IRA_COVER_CLASSES): Define.
1722
1723 2008-09-28  Andrew Pinski  <andrew_pinski@playstation.sony.com>
1724
1725         PR target/37640
1726         * config/rs6000/rs6000.c (rs6000_expand_compare_and_swapqhi): Force
1727         address to a register before taking the lower part.
1728
1729 2008-09-28  Kaz Kojima  <kkojima@gcc.gnu.org>
1730
1731         * config/sh/sh.h (OVERRIDE_OPTIONS): Unset flag_dwarf2_cfi_asm
1732         for SHmedia.
1733
1734 2008-09-28  Andrew Pinski  <andrew_pinski@playstation.sony.com>
1735             Kaushal Kantawala  <kaushal_kantawala@playstation.sony.com>
1736
1737         PR tree-opt/36891
1738         * tree-ssa-loop-im.c (rewrite_reciprocal): Set DECL_GIMPLE_REG_P on
1739         the newly created variable.
1740         Create a VECTOR_CST of all 1s for vector types.
1741
1742 2008-09-28  Eric Botcazou  <ebotcazou@adacore.com>
1743
1744         PR middle-end/36575
1745         * fold-const.c (div_and_round_double) <ROUND_DIV_EXPR>: Fix typo.
1746
1747 2008-09-28  Eric Botcazou  <ebotcazou@adacore.com>
1748
1749         * expmed.c (store_fixed_bit_field): Always use convert_to_mode in
1750         order to convert between modes.
1751         (extract_bit_field_1): Test TRULY_NOOP_TRUNCATION on the right mode.
1752
1753 2008-09-27  Kaz Kojima  <kkojima@gcc.gnu.org>
1754
1755         * config/sh/sh.c (sh_gimplify_va_arg_expr): Use VIEW_CONVERT_EXPR
1756         if needed.
1757
1758 2008-09-26  Vladimir Makarov  <vmakarov@redhat.com>
1759
1760         Revert:
1761         2008-09-25  Vladimir Makarov  <vmakarov@redhat.com>
1762         * ira-lives.c:...
1763         * doc/rtl.texi:...
1764
1765 2008-09-26  Adam Nemet  <anemet@caviumnetworks.com>
1766
1767         * config/mips/mips.h (ISA_HAS_DMUL3, ISA_HAS_BADDU, ISA_HAS_BBIT,
1768         ISA_HAS_CINS, ISA_HAS_EXTS, ISA_HAS_SEQ_SNE, ISA_HAS_POP): Change
1769         them to yield false with MIPS16.
1770
1771 2008-09-26  Jakub Jelinek  <jakub@redhat.com>
1772
1773         PR middle-end/37275
1774         * dwarf2out.c (tls_mem_loc_descriptor): New function.
1775         (mem_loc_descriptor): Use it for MEM.  For PLUS fail if second
1776         mem_loc_descriptor failed.  Accept UNSPEC.
1777         (loc_descriptor): Use tls_mem_loc_descriptor for MEM.  For PARALLEL
1778         fail if one of the loc_descriptor calls for pieces failed.
1779         (loc_descriptor_from_tree_1): Handle even DECL_EXTERNAL __thread vars,
1780         as long as they bind locally.  For COMPONENT_REF, ARRAY_REF etc. fail
1781         if loc_descriptor_from_tree_1 on offset failed.
1782
1783         PR middle-end/37576
1784         * opts.c (common_handle_option): Don't call print_specific_help with
1785         CL_SAVE as first argument.
1786
1787 2008-09-26  Peter O'Gorman  <pogma@thewrittenword.com>
1788             Steve Ellcey  <sje@cup.hp.com>
1789
1790         * configure: Regenerate for new libtool.
1791         * aclocal.m4: Ditto.
1792
1793 2008-09-26  Pat Haugen  <pthaugen@us.ibm.com>
1794
1795         * config/rs6000/rs6000.c (rs6000_emit_allocate_stack): Use correct
1796         alias set on MEM when saving stack pointer.
1797         * config/rs6000/rs6000.md (allocate_stack): Likewise
1798
1799 2008-09-26  Dorit Nuzman  <dorit@il.ibm.com>
1800
1801         PR tree-optimization/37574
1802         * tree-vectorizer.c (vect_is_simple_use): Fix indentation.
1803         * tree-vect-transform.c (vect_get_constant_vectors): Use vectype
1804         instead of vector_type for constants. Take computation out of loop.
1805         (vect_get_vec_def_for_operand): Use only vectype for constant case,
1806         and use only vector_type for invariant case.
1807         (get_initial_def_for_reduction): Use vectype instead of vector_type.
1808
1809 2008-09-25  Jakub Jelinek  <jakub@redhat.com>
1810
1811         PR c/37645
1812         * c-common.c (handle_weakref_attribute): Ignore the attribute unless
1813         the decl is a VAR_DECL or FUNCTION_DECL.
1814
1815 2008-09-25  Vladimir Makarov  <vmakarov@redhat.com>
1816
1817         PR middle-end/37535
1818         * ira-lives.c (mark_reg_live, mark_reg_dead): New functions.
1819         (mark_ref_live, mark_ref_dead): Use them.
1820         (def_conflicts_with_inputs_p): Remove.
1821         (mark_early_clobbers): New function.
1822         (process_bb_node_lives): Call preprocess_constraints and
1823         mark_early_clobbers.
1824
1825         * doc/rtl.texi (clobber): Change how RA deals with clobbers.
1826
1827 2008-09-25  Vladimir Makarov  <vmakarov@redhat.com>
1828
1829         PR middle-end/37448
1830         * ira-int.h (IRA_ALLOCNO_TEMP): Rename to ALLOCNO_TEMP.
1831         (ira_compress_allocno_live_ranges): New prototype.
1832
1833         * ira-color.c: Rename IRA_ALLOCNO_TEMP to ALLOCNO_TEMP.
1834         (coalesced_allocnos_living_at_program_points): New.
1835         (coalesced_allocnos_live_at_points_p,
1836         set_coalesced_allocnos_live_points): New functions.
1837         (coalesce_spill_slots): Rewrite.
1838         
1839         * ira-lives.c (remove_some_program_points_and_update_live_ranges,
1840         ira_compress_allocno_live_ranges): New functions.
1841
1842         * ira-build.c (ira_flattening): Call
1843         ira_compress_allocno_live_ranges.
1844         (ira_build): Ditto.
1845
1846 2008-09-25  H.J. Lu  <hongjiu.lu@intel.com>
1847
1848         * config/i386/i386.md: Check cmp/branch fuse for cmp peephole
1849         optimization.
1850
1851 2008-09-25  Richard Sandiford  <rdsandiford@googlemail.com>
1852
1853         * combine.c (make_compound_operation): Handle the 'E' format.
1854         (count_rtxs): Likewise.
1855         (update_table_tick): Likewise.
1856         (get_last_value_validate): Likewise.
1857
1858 2008-09-25  Eric Botcazou  <ebotcazou@adacore.com>
1859
1860         * dbxout.c (dbxout_parms): Fetch the inner REG inside a PARALLEL.
1861
1862 2008-09-25 Sergei Dyshel <sergeid@il.ibm.com>
1863
1864         * matrix-reorg.c (transform_allocation_sites): Initializers 
1865         added to avoid the warning.
1866
1867 2008-09-25  Martin Jambor  <mjambor@suse.cz>
1868
1869         * cgraph.c (free_nodes): New variable.
1870         (NEXT_FREE_NODE): New macro.
1871         (cgraph_create_node): Reuse nodes from the free list.  Do not
1872         update uid if doing so.
1873         (cgraph_remove_node): Add the node to the free list.
1874
1875 2008-09-25  Gerald Pfeifer  <gerald@pfeifer.com>
1876
1877         * config/freebsd.h (HANDLE_PRAGMA_PACK_PUSH_POP): Define.
1878
1879 2008-09-24  Richard Henderson  <rth@redhat.com>
1880
1881         * dwarf2.h (DW_OP_GNU_encoded_addr): New.
1882         * unwind-dw2.c (execute_stack_op): Handle it.
1883
1884 2008-09-24  David Edelsohn  <edelsohn@gnu.org>
1885
1886         Revert:
1887         2008-09-24  Michael J. Eager  <eager@eagercon.com>
1888
1889 2008-09-24  Aldy Hernandez  <aldyh@redhat.com>
1890
1891         * c-common.c (fname_decl): New location argument.
1892         * c-common.h (fname_decl): Same.
1893         * c-parser.c (c_lex_one_token): Use {warning,error}_at instead of
1894         {warning,error}.
1895         (c_parser_typeof_specifier): Same.
1896         (c_parser_parms_list_declarator): Same.
1897         (c_parser_asm_string_literal): Same.
1898         (c_parser_compound_statement_nostart): Same.
1899         (c_parser_label): Same.
1900         (c_parser_do_statement): Same.
1901         (c_parser_asm_statement): Same.
1902         (c_parser_unary_expression): Same.
1903         (c_parser_sizeof_expression): Same.
1904         (c_parser_postfix_expression): Same.
1905         (c_parser_pragma): Same.
1906         (c_parser_omp_clause_collapse): Same.
1907         (c_parser_omp_clause_num_threads): Same.
1908         (c_parser_omp_clause_schedule): Same.
1909         (c_parser_omp_all_clauses): Same.
1910         (c_parser_omp_sections_scope): Same.
1911         (c_parser_omp_for_loop): Same.  Pass condition's location to
1912         c_objc_common_truthvalue_conversion.
1913         (c_parser_enum_specifier): Remove comment.
1914
1915 2008-09-24  Michael J. Eager  <eager@eagercon.com>
1916
1917         * config/rs6000/predicates.md (easy_fp_constant): Single FP consts
1918         are easy.
1919         * config/rs6000/rs6000.c (rs6000_override_options): Move
1920         rs6000_init_hard_regno_mode_ok after all options changed.
1921         Set rs6000_single_float, rs6000_double_float if TARGET_HARD_FLOAT.
1922         (rs6000_handle_option): Process -msingle-float, -mdouble-float,
1923         -msimple-fpu flags.  Add warning messages if single FP not configured.
1924         (rs6000_file_start): Output gnu_attribute for single-float.
1925         (legitimate_lo_sum_address_p): Condition on TARGET_DOUBLE_FLOAT.
1926         (rs6000_legitimize_address): Likewise.
1927         (rs6000_legitimize_reload_address): Likewise.
1928         (rs6000_emit_move): Condition on TARGET_DOUBLE_FLOAT,
1929         TARGET_SINGLE_FLOAT.
1930         (function_arg_advance): Likewise.
1931         (function_arg): Likewise.
1932         (setup_incoming_varargs): Condition on TARGET_DOUBLE_FLOAT.
1933         (rs6000_gimplify_va_arg): Condition on TARGET_DOUBLE_FLOAT,
1934         TARGET_SINGLE_FLOAT.
1935         (rs6000_split_multireg_move): Condition on TARGET_DOUBLE_FLOAT.
1936         (rs6000_emit_prologue): Likewise.
1937         (rs6000_function_value): Condition on TARGET_DOUBLE_FLOAT,
1938         TARGET_SINGLE_FLOAT.
1939         (rs6000_libcall_value): Likewise.
1940         * config/rs6000/rs6000.h (TARGET_SINGLE_FLOAT): New default to 1.
1941         (TARGET_DOUBLE_FLOAT): New default to 1
1942         (TARGET_SIMPLE_FPU): New default to 0
1943         (TARGET_SINGLE_FPU): New default to 0
1944         (TARGET_SINGLE_FLOAT_MODE): New.
1945         (TARGET_DOUBLE_FLOAT_MODE): New.
1946         * config/rs6000/singlefp.h: New; redefine TARGET_SINGLE_FLOAT,
1947         TARGET_DOUBLE_FLOAT, TARGET_SIMPLE_FPU, TARGET_SINGLE_FPU,
1948         UNITS_PER_FP_WORD
1949         * config/rs6000/rs6000.md (define_mode_iterator): Condition on
1950         TARGET_DOUBLE_FLOAT, TARGET_SINGLE_FLOAT.
1951         (extendsfdf2, extendsfdf2_fpr, truncdfsf2, truncdfsf2_fpr,
1952         copysigndf3,fseldfsf4, negdf2, negdf2_fpr, absdf2, absdf2_fpr,
1953         nabsdf2_fpr, adddf3, adddf3_fpr, subdf3, subdf3_fpr, muldf3,
1954         muldf3_fpr, divdf3, divdf3_fpr, sqrtdf2, smaxdf3, smindf3,
1955         movdfcc, *fseldfdf4, floatsidf2, *floatsidf2_internal,
1956         floatunssidf2, *floatunssidf2_internal, fix_truncdfsi2,
1957         *fix_truncdfsi2_internal, fix_truncdfsi2_internal_gfxopt,
1958         fix_truncdfsi2_mfpgpr, fctiwz, btruncdf2, ceildf2, floordf2,
1959         rounddf2, floatdidf2, floatsidf_ppc64_mfpgpr, floatsidf_ppc64,
1960         floatunssidf_ppc64, fix_truncdfdi2, movdf_hardfloat32,
1961         movdf_hardfloat64_mfpgpr, movdf_hardfloat64, extenddftf2_fprs,
1962         extenddftf2_internal, trunctfdf2_internal2, fix_trunc_helper,
1963         abstf2_internal, movdf_update1, movdf_update2, cmpdf_internal1,
1964         cmptf_internal1, *cmptf_internal2): Condition on
1965         TARGET_DOUBLE_FLOAT.
1966         (aux_truncdfsf2, negsf2, *negsf2, abssf2, *abssf2, addsf3, subsf3,
1967         mulsf3, divsf3, sqrtsf2, copysignsf3, smaxsf3, sminsf3, movsfcc,
1968         *fselsfsf4, fixuns_truncsfsi2, fix_truncsfsi2, floatunssisf2,
1969         btruncsf2, ceilsf2, floorsf2, roundsf2, floatdisf2_internal1,
1970         floatdisf2_internal2, *movsf_hardfloat, trunctfsf2_fprs,
1971         *movsf_update1, *movsf_update2, *cmpsf_internal1): Condition on
1972         TARGET_SINGLE_FLOAT.
1973         (divsf3, sqrtsf2, divdf3, divdf3_fpr): Condition on TARGET_SIMPLE_FPU.
1974         * config/rs6000/rs6000.opt (-msingle-float): New.
1975         (-mdouble-float): New.
1976         (-msimple-fpu): New.
1977         * doc/invoke.texi (RS/6000 and PowerPC Options): Add
1978         -msingle-float, -mdouble-float, -msimple-fpu options.
1979         * config/rs6000/rs6000-c.c (rs6000_cpu_cpp_builtins): Set
1980         _SOFT_DOUBLE for -msingle-float.
1981         * config.gcc: New config for target=powerpc-xilinx-eabi.
1982
1983 2008-09-23  Eric Botcazou  <ebotcazou@adacore.com>
1984
1985         * config/sparc/constraints.md: New file.
1986         * config/sparc/sparc.md: Include it.
1987         * config/sparc/sparc-protos.h (memory_ok_for_ldd): Declare.
1988         (sparc_extra_constraint_check): Delete.
1989         * config/sparc/sparc.c (register_ok_for_ldd): Minor tweaks.
1990         (memory_ok_for_ldd): New predicate.
1991         (sparc_extra_constraint_check): Delete.
1992         * config/sparc/sparc.h (REG_CLASS_FROM_LETTER): Likewise.
1993         (CONST_OK_FOR_LETTER_P): Likewise.
1994         (CONST_DOUBLE_OK_FOR_LETTER_P): Likewise.
1995         (EXTRA_CONSTRAINT): Likewise.
1996
1997 2008-08-23  Steve Ellcey  <sje@cup.hp.com>
1998
1999         * regrename.c (do_replace): Copy REG_POINTER value to new reg.
2000
2001 2008-09-23  Richard Sandiford  <rdsandiford@googlemail.com>
2002
2003         * alias.c (find_base_value): Use FIND_BASE_TERM.
2004         * doc/tm.texi (FIND_BASE_TERM): Update documentation.
2005
2006 2008-09-23  Richard Sandiford  <rdsandiford@googlemail.com>
2007
2008         * config/i386/i386.c: Include cselib.h.
2009         (ix86_pic_register_p): New function.
2010         (ix86_delegitimize_address): Use it to check for the PIC register.
2011
2012 2008-09-23  Richard Sandiford  <rdsandiford@googlemail.com>
2013
2014         * doc/tm.texi (FIND_BASE_TERM): Expand documentation.
2015         * config/i386/i386.c (ix86_find_base_term): Don't check for
2016         SYMBOL_REF and LABEL_REF.
2017
2018 2008-09-23  Richard Sandiford  <rdsandiford@googlemail.com>
2019
2020         * config/i386/i386.c (ix86_delegitimize_address): Wrap the
2021         constant PLUS in a CONST.
2022
2023 2008-09-23  Kai Tietz  <kai.tietz@onevision.com>
2024
2025         * config/i386/i386.c (ix86_function_ok_for_sibcall): Correct
2026         check for sibcall support for w64.
2027
2028 2008-09-23  Eric Botcazou  <ebotcazou@adacore.com>
2029
2030         * c-ppoutput.c (cb_used_define): Do nothing for a builtin node.
2031
2032 2008-09-23  Aldy Hernandez  <aldyh@redhat.com>
2033
2034         * c-tree.h: Add argument to c_objc_common_truthvalue_conversion,
2035         parser_build_binary_op.
2036         * c-decl.c (build_enumerator): Pass location to build_binary_op.
2037         * c-typeck.c (build_array_ref): Same.
2038         (parser_build_unary_op): New location argument.
2039         (pointer_diff): Pass location to build_binary_op,
2040         c_objc_common_truthvalue_conversion.
2041         (build_modify_expr): Same.
2042         (build_unary_op): New location argument.
2043         (build_binary_op): New location argument.
2044         (c_objc_common_truthvalue_conversion): Pass location to
2045         c_*common_truthvalue_conversion.
2046         * c-convert.c (convert): Same.
2047         * c-common.c (binary_op_error): New location argument.
2048         (pointer_int_sum): Pass location to build_binary_op.
2049         (c_common_truthvalue_conversion): New location argument.
2050         (warn_for_sign_compare): Same.
2051         * c-common.h: Add location argument to c_common_truthvalue_conversion,
2052         binary_op_error, build_binary_op, warn_for_sign_compare.
2053         * c-parser.c (c_parser_condition): Pass location to
2054         c_*common_truthvalue_conversion.
2055         (c_parser_conditional_expression): Save condition's location and pass
2056         it on down.
2057         (c_parser_binary_expression): Same, but for the binary operator's
2058         location.
2059         (c_parser_omp_for_loop): Pass location to
2060         c_objc_common_truthvalue_conversion.
2061
2062 2008-09-23  Martin Jambor  <mjambor@suse.cz>
2063
2064         * cgraph.c (cgraph_free_edge): Use sizeof(*e).
2065         (cgraph_node_remove_callees): New temporary f.  Hold the next item
2066         in f when looping.
2067         (cgraph_node_remove_callers): Likewise.
2068
2069         * ipa-prop.c (ipa_edge_removal_hook): Use ATTRIBUTE_UNUSED.
2070         (ipa_node_removal_hook): Likewise.
2071
2072         * doc/gimple.texi (gimple_copy_call_skip_args): Changed to
2073         gimple_call_copy_skip_args and moved to the gimple_call section.
2074         * gimple.c (gimple_copy_call_skip_args): Renamed to
2075         gimple_call_copy_skip_args.  Changed al users.
2076
2077 2008-09-22  Vladimir Makarov  <vmakarov@redhat.com>
2078
2079         * ira-color.c (start_allocno_priorities): Rename to
2080         setup_allocno_priorities.  Use costs and
2081         ALLOCNO_EXCESS_PRESSURE_POINTS_NUM instead of frequencies and
2082         range lengths.  Get rid off doubles.
2083         (ira_fast_allocations): Call start_allocno_priorities.
2084         
2085 2008-09-22  David Daney  <ddaney@avtrex.com>
2086
2087         PR target/37593
2088         * config/mips/mips.h (FUNCTION_PROFILER): Call _mcount via a
2089         register if TARGET_LONG_CALLS.
2090
2091 2008-09-22  Richard Guenther  <rguenther@suse.de>
2092
2093         PR tree-optimization/37145
2094         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Re-enable
2095         value-numbering union accesses with their offset and size only.
2096         (visit_reference_op_load): Fix simplification of inserted conversions.
2097         * tree-ssa-pre.c (find_or_generate_expression): Do not
2098         recursively generate expressions if running FRE.
2099
2100 2008-09-22  Adam Nemet  <anemet@caviumnetworks.com>
2101
2102         * config/mips/mips.h (ISA_HAS_BADDU): New macro.
2103         * config/mips/mips.md (*baddu_si_eb, *baddu_si_el, *baddu_di<mode>):
2104         New patterns.
2105
2106 2008-09-22  Richard Guenther  <rguenther@suse.de>
2107
2108         PR tree-optimization/37145
2109         * tree-ssa-pre.c (fully_constant_expression): Simplify builtin calls.
2110         (phi_translate_1): Constant fold references.
2111
2112 2008-09-22  Ira Rosen  <irar@il.ibm.com>
2113
2114         PR tree-optimization/37482
2115         * tree-vectorizer.h (struct _slp_instance): Add new field.
2116         (SLP_INSTANCE_FIRST_LOAD_STMT): New.
2117         (get_earlier_stmt): New function.
2118         * tree-vect-analyze.c (vect_find_first_load_in_slp_instance): New
2119         function.
2120         (vect_analyze_slp_instance): Set SLP_INSTANCE_FIRST_LOAD_STMT.
2121         * tree-vect-transform.c (vect_finish_stmt_generation): Remove the
2122         asserts that GSI points to the scalar statement being vectorized.
2123         Set new statement location according to GSI.
2124         (vect_schedule_slp_instance): Use GSI of
2125         SLP_INSTANCE_FIRST_LOAD_STMT when vectorizing loads.
2126
2127 2008-09-21  Jan Hubicka  <jh@suse.cz>
2128
2129         * ipa-cp.c (ipcp_estimate_growth): Check recursive calls.
2130         (ipcp_insert_stage): Update dead_nodes bitmap.
2131
2132 2008-09-22  Danny Smith  <dannysmith@users.sourceforge.net>
2133
2134         PR target/37528 
2135         * config/i386/t-cygming (SHLIB_LC): Remove.
2136         (SHLIB_LINK): Don't add static objects to SHLIB_IMPLIB
2137         * config/i386/t-cygwin (SHLIB_LC): Specify all required libraries.
2138
2139 2008-09-22  Hans-Peter Nilsson  <hp@axis.com>
2140
2141         PR middle-end/37170
2142         PR middle-end/37280
2143         * final.c (mark_symbol_ref_as_used): New helper function.
2144         (output_operand): Instead of just looking inside MEMs for
2145         SYMBOL_REFs, use new helper function and for_each_rtx.
2146         * varasm.c (assemble_external): Move #ifndef ASM_OUTPUT_EXTERNAL
2147         to after weak-handling.  Don't mark decls with TREE_STATIC as weak.
2148         Make head comment more general.
2149         * config/darwin.c (machopic_output_indirection): Handle weak
2150         references here, like in assemble_external.
2151
2152 2008-09-21  Eric Botcazou  <ebotcazou@adacore.com>
2153
2154         * config/sparc/sparc-protos.h (gen_compare_operator): Declare.
2155         (sparc_emit_float_lib_cmp): Change return type.
2156         * config/sparc/sparc.c (gen_compare_reg): Add comment about TFmode.
2157         (gen_compare_operator): New function.
2158         (sparc_emit_float_lib_cmp): Return the new operator to be used in
2159         the comparison sequence.  Minor tweaks.
2160         * config/sparc/sparc.md (seq, sne, sgt, slt, sge, sle): Assert
2161         that the final operator and the result of sparc_emit_float_lib_cmp
2162         match for software TFmode; use emit_insn in lieu of emit_jump_insn.
2163         (beq, bne, bgt, blt, bge, ble, bunordered, bordered, bungt, bunlt,
2164         buneq, bunge, bunle, bltgt): Assert that the final operator and the
2165         result of sparc_emit_float_lib_cmp match for software TFmode.
2166         (movqicc, movhicc, movsicc, movdicc): Merge into...
2167         (mov<I:mode>cc): ...this.
2168         (movsfcc, movdfcc, movtfcc): Merge into...
2169         (mov<F:mode>cc): ...this.
2170         (movqi_cc_sp64, movhi_cc_sp64, movsi_cc_sp64, movdi_cc_sp64): Merge
2171         into...
2172         (mov<I:mode>_cc_v9): ...this.
2173         (movdi_cc_sp64_trunc): Delete.
2174         (movqi_cc_reg_sp64, movhi_cc_reg_sp64, movsi_cc_reg_sp64,
2175         movdi_cc_reg_sp64): Merge into...
2176         (mov<I:mode>_cc_reg_sp64): ...this.
2177         (movsf_cc_sp64): Rename into...
2178         (movsf_cc_v9): ...this.
2179         (movdf_cc_sp64): Rename into...
2180         (movdf_cc_v9): ...this.
2181         (movtf_cc_hq_sp64): Rename into...
2182         (movtf_cc_hq_v9): ...this.
2183         (movtf_cc_sp64): Rename into...
2184         (movtf_cc_v9): ...this.  Adjust for renaming of movdf_cc_sp64.
2185
2186 2008-09-21  Diego Novillo  <dnovillo@google.com>
2187
2188         * doc/gccint.texi: Include generic.texi and gimple.texi.
2189         Re-order index.
2190         * doc/tree-ssa.texi (GENERIC): Move to generic.texi.
2191         (GIMPLE): Move to gimple.texi.
2192         (Annotations): Remove references to to stmt_ann_t and
2193         ssa_name_ann_t.
2194         (SSA Operands): Rename from 'Statement Operands'.
2195         * doc/generic.texi: New.
2196         * doc/gimple.texi: New.
2197         * Makefile.in (TEXI_GCCINT_FILES): Add generic.texi and gimple.texi.
2198         * Makefile.in (TEXI_GCCINT_FILES):
2199         * gimple.c (gimple_copy_call_skip_args): Rename from
2200         giple_copy_call_skip_args.  Update all users.
2201         * doc/gimple.texi (gimple_copy_call_skip_args): Document.
2202
2203 2008-09-21  Ira Rosen  <irar@il.ibm.com>
2204
2205         PR tree-optimization/37539
2206         * tree-vect-transform.c (vect_transform_strided_load): Save vector
2207         statement in related statement field only for the first load of the
2208         group of loads with the same data reference.
2209
2210 2008-09-20  Adam Nemet  <anemet@caviumnetworks.com>
2211
2212         * config/mips/mips.h (TUNE_OCTEON): New macro.
2213         * config/mips/mips.c (mips_issue_rate): Return 2 for Octeon.
2214         (mips_multipass_dfa_lookahead): Return 2 for Octeon.
2215         * config/mips/octeon.md: New file.
2216         * config/mips/mips.md: Include octeon.md.  Restore
2217         semi-alphabetical order of include files.
2218
2219 2008-09-20  H.J. Lu  <hongjiu.lu@intel.com>
2220
2221         PR target/37571
2222         * config/i386/i386.md (*jcc_fused_1): Removed.
2223         (*jcc_fused_2): Likewise.
2224         (*jcc_fused_3): Likewise.
2225         (*jcc_fused_4): Likewise.
2226
2227 2008-09-20  Richard Sandiford  <rdsandiford@googlemail.com>
2228
2229         * doc/tm.texi (TARGET_IRA_COVER_CLASSES): Define.
2230         (IRA_COVER_CLASSES): Refer to TARGET_IRA_COVER_CLASSES.
2231         * target.h (gcc_target): Add ira_cover_classes.
2232         * ira.c: Remove IRA_COVER_CLASSES guards.
2233         (setup_cover_and_important_classes): Use targetm.ira_cover_classes
2234         instead of IRA_COVER_CLASSES.
2235         (setup_cover_and_important_classes): Remove IRA_COVER_CLASSES guard.
2236         (setup_class_translate): Likewise.
2237         (setup_reg_class_intersect_union): Likewise.
2238         (find_reg_class_closure): Replace IRA_COVER_CLASSES guard with a
2239         test of targetm.ira_cover_classes.
2240         * opts.c (decode_options): Use targetm.ira_cover_classes instead
2241         of IRA_COVER_CLASSES.
2242         * target-def.h (TARGET_IRA_COVER_CLASSES): Define.
2243         (TARGET_INITIALIZER): Include it.
2244         * targhooks.h (default_ira_cover_classes): Declare.
2245         * targhooks.c (default_ira_cover_classes): New function.
2246
2247 2008-09-19  Bob Wilson  <bob.wilson@acm.org>
2248         
2249         * config/xtensa/xtensa.md (reload<mode>_literal): Handle MEM operands.
2250         
2251 2008-09-19  Ian Lance Taylor  <iant@google.com>
2252
2253         * varasm.c (narrowing_initializer_constant_valid_p): Return
2254         NULL_TREE if ENDTYPE is not an integer.
2255
2256 2008-09-19  Andrew Pinski  <andrew_pinski@playstation.sony.com>
2257
2258         PR tree-opt/30930
2259         * tree-ssa.c (execute_update_addresses_taken): Also update
2260         DECL_GIMPLE_REG_P for vector and complex types.
2261
2262 2008-09-19  Andrew MacLeod  <amacleod@redhat.com>
2263             Jan Hubicka  <jh@suse.cz>
2264
2265         PR middle-end/37567
2266         * tree-ssa-ter.c (free_temp_expr_table): Make sure fields are actually
2267         empty before freeing them.
2268         (find_replaceable_exprs): Move asserts to free_temp_expr_table.
2269
2270 2008-09-18  Bob Wilson  <bob.wilson@acm.org>
2271
2272         * configure.ac: Add HAVE_AS_TLS check for Xtensa.
2273         * config/xtensa/predicates.md (tls_symbol_operand): New.
2274         * config/xtensa/xtensa.c (TARGET_HAVE_TLS): Define.
2275         (TARGET_CANNOT_FORCE_MEM): Define.
2276         (xtensa_tls_symbol_p): New.
2277         (xtensa_emit_move_sequence): Check for and legitimize TLS addresses.
2278         (xtensa_legitimate_address_p): Disallow constant pool TLS references.
2279         (xtensa_tls_module_base): New.
2280         (xtensa_call_tls_desc): New.
2281         (xtensa_legitimize_tls_address): New.
2282         (xtensa_legitimize_address): Handle TLS symbols.
2283         (xtensa_tls_referenced_p_1): New.
2284         (xtensa_tls_referenced_p): New.
2285         (xtensa_output_addr_const_extra): Handle UNSPEC_TPOFF and
2286         UNSPEC_DTPOFF.
2287         (XTENSA_BUILTIN_THREAD_POINTER): New.
2288         (XTENSA_BUILTIN_SET_THREAD_POINTER): New.
2289         (xtensa_init_builtins): Set NOTHROW and READONLY for umulsidi3
2290         builtin.  Add declarations for __builtin_thread_pointer and
2291         __builtin_set_thread_pointer.
2292         (xtensa_fold_builtin): Recognize new builtins.
2293         (xtensa_expand_builtin): Expand new builtins.
2294         * config/xtensa/xtensa.h (XCHAL_HAVE_THREADPTR): Define default value.
2295         (TARGET_THREADPTR): Define.
2296         (HAVE_AS_TLS): Define default value.
2297         (LEGITIMATE_CONSTANT_P): Disallow TLS references.
2298         * config/xtensa/xtensa.md (UNSPEC_TPOFF, UNSPEC_DTPOFF): New.
2299         (UNSPEC_TLS_FUNC, UNSPEC_TLS_ARG, UNSPEC_TLS_CALL, UNSPEC_TP): New.
2300         (UNSPECV_SET_TP): New.
2301         (sym_TPOFF, sym_DTPOFF): New.
2302         (load_tp, set_tp, tls_func, tls_arg, tls_call): New.
2303         * config/xtensa/xtensa-protos.h (xtensa_tls_referenced_p): Declare.
2304         * configure: Regenerated.
2305         
2306 2008-09-18  H.J. Lu  <hongjiu.lu@intel.com>
2307
2308         PR target/37394
2309         * config/ia64/ia64.c (ia64_optimization_options): Move
2310         checking and setting flag_schedule_insns_after_reload and
2311         ia64_flag_schedule_insns2 back to ...
2312         (ia64_override_options): Here.
2313
2314 2008-09-18  Andrew Pinski  <andrew_pinski@playstation.sony.com>
2315
2316         PR rtl-opt/37451
2317         * loop-doloop.c (doloop_modify): New argument zero_extend_p and
2318         zero extend count after the correction to it is done.
2319         (doloop_optimize): Update call to doloop_modify, don't zero extend
2320         count before call.
2321
2322 2008-09-18  Martin Jambor  <mjambor@suse.cz>
2323
2324         * ipa-cp.c (ipcp_estimate_growth): Return 0 instead of false.
2325
2326         * ipa-prop.c: Correct comments.
2327         * ipa-prop.h: Likewise.
2328
2329 2008-09-18  Jan Hubicka  <jh@suse.cz>
2330
2331         PR middle-end/37448
2332         * ipa-reference.c (ipa_reference_local_vars_info_d,
2333         ipa_reference_global_vars_info_d,
2334         ipa_reference_local_vars_info_t, ipa_reference_global_vars_info_t,
2335         ipa_reference_vars_info_t): Move here from ipa-reference.h
2336         (node_duplication_hook_holder, node_removal_hook_holder): New.
2337         (get_reference_vars_info_from_cgraph): Rename to ...
2338         (get_reference_vars_info): ... this one, use cgraph uids.
2339         (get_local_reference_vars_info, get_global_reference_vars_info):
2340         Use cgraph instead of decl.
2341         (ipa_reference_get_read_local, ipa_reference_get_written_local):
2342         Remove.
2343         (ipa_reference_get_read_global, ipa_reference_get_not_read_global
2344         ipa_reference_get_written_global,
2345         ipa_reference_get_not_written_global): Use cgraph argument.
2346         (check_call): Simplify avail check.
2347         (scan_stmt_for_static_refs): Update.
2348         (propagate_bits): Update.
2349         (merge_callee_local_info): Remove.
2350         (init_function_info): Use cgraph nodes.
2351         (clean_function_local_data): Break out from ...
2352         (clean_function): ... here.
2353         (copy_local_bitmap, copy_global_bitmap): New functions.
2354         (duplicate_node_data, remove_node_data): New functions.
2355         (generate_summary): Register hooks; use visibility instead of
2356         master clones.
2357         (propafate): Use cgraph nodes; copy bitmap to each node in cycle.
2358         * ipa-reference.h (ipa_reference_local_vars_info_d,
2359         ipa_reference_global_vars_info_d,
2360         ipa_reference_local_vars_info_t, ipa_reference_global_vars_info_t,
2361         ipa_reference_vars_info_t): Move to ipa-reference.c
2362         (ipa_reference_get_read_local, ipa_reference_get_written_local):
2363         Remove.
2364         (ipa_reference_get_read_global, ipa_reference_get_written_global,
2365         ipa_reference_get_not_read_global,
2366         ipa_reference_get_not_written_global): Update prototype.
2367         * ipa-pure-const.c (funct_state_vec): Turn into VECtor.
2368         (init_state): Remove.
2369         (node_duplication_hook_holder, node_removal_hook_holder): New.
2370         (get_function_state, set_function_state): Use VECtor.
2371         (analyze_function): Check body availability.
2372         (add_new_function): Likewise.
2373         (duplicate_node_data, remove_node_data): New.
2374         (generate_summary): Register hooks; do not care about clones.
2375         (propafate): Do not care about clones; recursive functions are
2376         not looping.
2377         * ipa-utils.c (searchc, ipa_utils_reduced_inorder): Do not skip clones.
2378         * ipa-prop.c (edge_removal_hook_holder, node_removal_hook_holder,
2379         * edge_duplication_hook_holder, node_duplication_hook_holder): Make
2380         static.
2381         * tree-flow.h (function_ann_d): Remove reference_vars_info.
2382         * tree-ssa-opreands.c (add_call_clobber_ops, add_call_read_ops):
2383         Update call of ipa-reference accesors.
2384
2385 2008-09-18  Simon Baldwin  <simonb@google.com>
2386
2387         * c-opts.c (c_common_handle_option): Add handling for
2388         -Wbuiltin-macro-redefined command line option.
2389         * c.opt: Added builtin-macro-redefined option.
2390         * doc/invoke.texi (Warning Options): Add -Wbuiltin-macro-redefined
2391         documentation.
2392
2393 2008-09-18  Richard Guenther  <rguenther@suse.de>
2394
2395         PR tree-optimization/37258
2396         * tree-ssa-sccvn.c (vn_phi_compute_hash): Include the precision
2397         and signedness for integral types.
2398         (vn_phi_eq): Require compatible types.
2399
2400 2008-09-18  Jakub Jelinek  <jakub@redhat.com>
2401
2402         PR debug/34037
2403         * gimplify.c (gimplify_type_sizes): When not optimizing, ensure
2404         TYPE_MIN_VALUE and TYPE_MAX_VALUE is not is not DECL_IGNORED_P
2405         VAR_DECL.
2406         * cfgexpand.c (expand_used_vars): Keep DECL_ARTIFICIAL
2407         !DECL_IGNORED_P vars in local_decls list for instantiate_decls,
2408         ggc_free other TREE_LIST nodes from that chain.
2409         * function.c (instantiate_decls): Instantiate also DECL_RTL
2410         of vars in cfun->local_decls, free that list afterwards.
2411
2412 2008-09-18  Eric Botcazou  <ebotcazou@adacore.com>
2413
2414         * config/sparc/sol2.h (WIDEST_HARDWARE_FP_SIZE): Move to...
2415         * config/sparc/sparc.h (WIDEST_HARDWARE_FP_SIZE): ...here.
2416
2417 2008-09-18  Andrew MacLeod  <amacleod@redhat.com>
2418
2419         * tree-outof-ssa.c (eliminate_useless_phis): Fix formatting.
2420         * tree-flow-.h (struct immediate_use_iterator_d): Fix comment.
2421
2422 2008-09-18  Andrew MacLeod  <amacleod@redhat.com>
2423
2424         PR tree-optimization/37102
2425         * tree-outof-ssa.c (remove_gimple_phi_args): Remove all the PHI args
2426         from a node. Check to see if another PHI is dead.
2427         (eliminate_useless_phis): Rename from eliminate_virtual_phis and 
2428         remove real PHIs which have no uses.
2429         (rewrite_out_of_ssa): Call eliminate_useless_phis.
2430
2431 2008-09-18  Richard Guenther  <rguenther@suse.de>
2432
2433         PR middle-end/37284
2434         * tree-cfg.c (remove_useless_stmts_1): Remove
2435         GIMPLE_CHANGE_DYNAMIC_TYPE if not optimizing.
2436
2437 2008-09-18  Nick Clifton  <nickc@redhat.com>
2438
2439         * config/frv/frv.h (IRA_COVER_CLASSES): Define.
2440         (SECONDARY_INPUT_RELOAD_CLASS): Omit unused argument in call
2441         to frv_secondary_reload_class.
2442         (SECONDARY_OUTPUT_RELOAD_CLASS): Likewise.
2443         * config/frv/frv.c (TARGET_SECONDARY_RELOAD): Define.
2444         (frv_secondary_reload_class): Omit unused parameter.
2445         (frv_secondary_reload): New function.  Handle the case when
2446         secondary_reload_class() is called before the reload_(in|out)
2447         _optabs have been initialised.
2448         * config/frv/frv-protos.h (frv_secondary_reload_class): Omit
2449         unused parameter.
2450         * config/frv/frv.md: Define an exclusion set between fr550_m0
2451         and fr550_f0.
2452
2453 2008-09-18  Richard Guenther  <rguenther@suse.de>
2454
2455         PR tree-optimization/37456
2456         * tree-ssa-reassoc.c (build_and_add_sum): If the stmt we
2457         want to insert after ends a BB insert on the single fallthru
2458         outgoing edge.
2459
2460 2008-09-18  Andreas Krebbel  <krebbel1@de.ibm.com>
2461
2462         * doc/invoke.texi: Document -mhard-dfp, -mno-hard-dfp.
2463         Mention -march=z9-109, z9-ec and z10.
2464
2465 2008-09-18  Uros Bizjak  <ubizjak@gmail.com>
2466
2467         PR rtl-optimization/37544
2468         * regrename.c (maybe_mode_change): Exit early when copy_mode
2469         is narrower than orig_mode and narrower than new_mode.
2470
2471 2008-09-18  Alexander Monakov  <amonakov@ispras.ru>
2472
2473         PR middle-end/37499
2474         * sched-int.h (struct _haifa_insn_data): Remove unused field ref_count.
2475
2476         * sched-rgn.c (ref_counts): Remove.
2477         (insn_referenced): New static variable.
2478         (INSN_REF_COUNT): Remove.
2479         (sched_run_compute_dependencies): Use insn_referenced instead of
2480         INSN_REF_COUNT.
2481         (add_branch_dependences): Likewise.  Delete dead assignment.
2482
2483 2008-09-17  Adam Nemet  <anemet@caviumnetworks.com>
2484
2485         * haifa-sched.c (dep_cost_1): Recognize the producer even if the
2486         consumer is an asm.  Add comment why this is important.
2487         (choose_ready): Add comment to the "INSN_CODE (insn) >= 0 ||
2488         recog_memoized (insn) < 0" assert.  Put ENABLE_CHECKING around it.
2489
2490 2008-09-17  Joseph Myers  <joseph@codesourcery.com>
2491
2492         * expr.c (emit_group_store): Do not shift before moving via a
2493         stack slot.
2494
2495 2008-09-17  Eric Botcazou  <ebotcazou@adacore.com>
2496
2497         * varasm.c (initializer_constant_valid_p): Forbid view-conversions
2498         from aggregate to non-aggregate type if the bit pattern is not fully
2499         preserved afterwards.
2500
2501 2008-09-17  Richard Guenther  <rguenther@suse.de>
2502
2503         * tree-cfg.c (verify_types_in_gimple_assign): Rename to ...
2504         (verify_gimple_assign): ... this.  Split into ...
2505         (verify_gimple_assign_unary): ... this,
2506         (verify_gimple_assign_binary): ... that,
2507         (verify_gimple_assign_single): ... and this.
2508         (verify_types_in_gimple_stmt): Call verify_gimple_assign.
2509         Fix GIMPLE_CHANGE_DYNAMIC_TYPE handling.
2510         (verify_types_in_gimple_min_lval): Handle TARGET_MEM_REF.
2511         (verify_types_in_gimple_reference): Be forgiving with
2512         VIEW_CONVERT_EXPRs.
2513         (verify_gimple_phi): Deal with virtual operands.
2514
2515         * tree.def (PREDICT_EXPR): Change to tcc_expression.
2516
2517 2008-09-17  Andrew Pinski  <andrew_pinski@playstation.sony.com>
2518
2519         * tree.c (get_callee_fndecl): Don't call the language hook.
2520         * langhooks.h (lang_hooks): Remove lang_get_callee_fndecl.
2521         * langhooks-def.h (LANG_HOOKS_GET_CALLEE_FNDECL): Kill.
2522         (LANG_HOOKS_INITIALIZER): Remove LANG_HOOKS_GET_CALLEE_FNDECL.
2523
2524 2008-09-17  Jakub Jelinek  <jakub@redhat.com>
2525
2526         * tree.c (protected_set_expr_location): Don't unnecessarily
2527         check for error_mark_node.
2528
2529 2008-09-17  Art Haas  <ahaas@impactweather.com>
2530
2531         * ipa-reference.c (analyze_function): Declare step only if
2532         ENABLE_CHECKING is defined.
2533
2534 2008-09-17  Jan Hubicka  <jh@suse.cz>
2535
2536         PR c++/18071
2537         * tree.h (DECL_INLINE): remove.
2538         (DECL_DECLARED_INLINE_P): Update docs.
2539         (DECL_NO_INLINE_WARNING_P): new.
2540         (tree_function_decl): Replace inline_flag by no_inline_warning_flag.
2541         * tree-inline.c (inlinable_function_p): Set DECL_NO_INLINE_WARNING_P.
2542
2543 2008-09-17  Jakub Jelinek  <jakub@redhat.com>
2544             Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
2545
2546         PR bootstrap/37441
2547         * dwarf2out.c (dwarf2out_do_cfi_asm) [MIPS_DEBUGGING_INFO]: Return
2548         false.
2549
2550 2008-09-17  Jan Hubicka  <jh@suse.cz>
2551
2552         * ipa-reference.c (ipa_obstack): Remove.
2553         (local_info_obstack, global_info_obstack): New.
2554         (add_static_var): We now handle variables only.
2555         (mark_address_taken, mark_load, mark_store): New functions based on ...
2556         (check_operand): ... remove.
2557         (get_asm_stmt_operands): Rename to ...
2558         (check_asm_memory_clobber): ... this. Look only for memory clobber.
2559         (scan_stmt_for_static_refs): Rewrite.
2560         (scan_op_for_static_refs): Rename to ...
2561         (scan_initializer_for_static_refs): do not look for VAR_DECL
2562         initializers; stop recursion on types and decls.
2563         (ipa_init): Use proper obstacks.
2564         (analyze_variable): Use scan_initializer_for_static_refs.
2565         (init_function_info): Use local obstack.
2566         (analyze_function): Simplify.
2567         (add_new_function): We don't need visited_nodes obstack.
2568         (generate_summary): Use proper obstacks; cleanup after propagation.
2569
2570 2008-09-17  Richard Guenther  <rguenther@suse.de>
2571
2572         PR middle-end/37385
2573         PR tree-optimization/37491
2574         * alias.c (get_alias_set): Use the canonical type.
2575         * tree-vect-transform.c (vectorizable_store): Use the type of
2576         the lhs for the vector type.  Adjust checking.
2577         (vectorizable_load): Adjust checking.
2578
2579 2008-09-16  Jakub Jelinek  <jakub@redhat.com>
2580             Adam Nemet  <anemet@caviumnetworks.com>
2581
2582         PR rtl-optimization/37483
2583         * ifcvt.c (noce_try_sign_mask): Use if_info->test_bb instead of
2584         if_info->insn_b's bb as argument to optimize_bb_for_speed_p.
2585         Rearrange code to better match the original comment.  Check
2586         t_unconditional first.  Improve comment.
2587
2588 2008-09-16  Jakub Jelinek  <jakub@redhat.com>
2589
2590         PR c/37529
2591         * gimplify.c (gimplify_expr) <case GOTO_EXPR>: If gimplification of
2592         GOTO_DESTINATION failed, don't create GIMPLE_GOTO.
2593
2594         PR c++/37530
2595         * gimplify.c (gimplify_expr) <case TRY_CATCH_EXPR>: Don't create
2596         GIMPLE_TRY if cleanup sequence is empty.
2597
2598 2008-09-16  Andrew Pinski  <andrew_pinski@playstation.sony.com>
2599
2600         PR middle-end/37263
2601         * tree-ssa-loop-ivopts.c (determine_use_iv_cost_condition): Prefer the
2602         eliminate IV if the cost are the same.
2603
2604 2008-09-16  Richard Guenther  <rguenther@suse.de>
2605
2606         PR middle-end/37380
2607         * tree-sra.c (sra_build_assignment): Do not call the gimplifier
2608         if not necessary.
2609
2610 2008-09-16  Richard Guenther  <rguenther@suse.de>
2611
2612         PR tree-optimization/37508
2613         * tree-vrp.c (simplify_truth_ops_using_ranges): Also allow -1.
2614
2615 2008-09-15  Kaz Kojima  <kkojima@gcc.gnu.org>
2616
2617         * config/sh/sh.md (movsf_ie): Fix length for TARGET_SH2A.
2618
2619 2008-09-15  Andrew Pinski  <andrew_pinski@playstation.sony.com>
2620
2621         * config/rs6000/rs6000.md (floatsidf2): Rewrite PowerPC64 case to
2622         use gen_floatdidf2 directly.
2623         (floatunssidf2): Likewise.
2624         (floatsidf_ppc64_mfpgpr): Remove.
2625         (floatsidf_ppc64): Remove.
2626         (floatunssidf_ppc64): Remove.
2627
2628 2008-09-15  Jakub Jelinek  <jakub@redhat.com>
2629
2630         * ira-color.c (finish_cost_update): Free update_cost_queue_elems
2631         rather than update_cost_queue.
2632
2633         * tree-ssa-alias.c (init_alias_info): Call bitmap_obstack_release
2634         in every call starting with the second one, instead of only when
2635         alias_bitmap_obstack.elements != NULL.
2636
2637         * tree-predcom.c (filter_suitable_components): Free all refs in
2638         act->refs vector before calling release_component.
2639         (add_ref_to_chain): Free ref if not adding it to chain->refs.
2640
2641         * tree-data-ref.c (free_subscripts): Free all subscript objects.
2642
2643         * tree-loop-linear.c (linear_transform_loops): Initialize
2644         lambda_obstack only after calling perfect_loop_nest_depth.
2645         Goto free_and_continue instead of just continue for later failures.
2646
2647         PR middle-end/37479
2648         * doc/invoke.texi: Document -fno-dwarf2-cfi-asm.
2649
2650         PR libmudflap/36397
2651         * tree-mudflap.c (mf_xform_derefs_1): Handle VIEW_CONVERT_EXPR.
2652
2653 2008-09-14  Andreas Schwab  <schwab@suse.de>
2654
2655         * tree-call-cdce.c (check_target_format): Accept Motorola formats.
2656
2657 2008-09-14  Jan Hubicka  <jh@suse.cz>
2658
2659         * invoke.texi (-fconserve-stack): Document.
2660         * opts.c (decode_options): Handle conserve_stack.
2661         * common.opt (fconvserve_stack): New.
2662
2663 2008-09-14  David Edelsohn  <edelsohn@gnu.org>
2664
2665         * config.host: Add x-aix to host_xmake_file.
2666         * config/rs6000/t-aix52: Do not override LDFLAGS.
2667         * config/rs6000/x-aix: New file.
2668
2669 2008-09-14  Andy Hutchinson  <hutchinsonandy@aim.com>
2670
2671         PR target/19636
2672         PR target/24894
2673         PR target/31644
2674         PR target/31786
2675         * config/avr/avr.c (legitimate_address_p): Fix problem where subreg
2676         is not recognized as a valid register usage. Allow REG_X to be used
2677         as a base pointer.
2678         * config/avr/avr.h (LEGITIMIZE_RELOAD_ADDRESS): Remove code that
2679         forces a reload when using a base register.
2680
2681 2008-09-14  Danny Smith  <dannysmith@users.sourceforge.net>
2682
2683         * config/i386/cygming-crtend.c (register_frame_ctor): If
2684         DEFAULT_USE_CXA_ATEXIT, register __gcc_deregister_frame
2685         directly with atexit.
2686         (deregister_frame_ctor): Rename to ...
2687         (deregister_frame_dtor): Use to call __gcc_deregister_frame
2688         if !DEFAULT_USE_CXA_ATEXIT.
2689
2690 2008-09-13  Jan Hubicka  <jh@suse.cz>
2691
2692         * cgraph.c: Include value-prof.h
2693         * Makefile.in (cgraph.o): Add value-prof.h dependency.
2694
2695 2008-09-13  Jan Hubicka  <jh@suse.cz>
2696
2697         PR middle-end/32581
2698         * tree-profile.c (add_abnormal_goto_call_edges): New function.
2699         (tree_gen_interval_profiler, tree_gen_pow2_profiler,
2700         tree_gen_one_value_profiler, tree_gen_average_profiler,
2701         tree_gen_ic_func_profiler, tree_gen_ior_profiler): Use it.
2702
2703 2008-09-13  Jan Hubicka  <jh@suse.cz>
2704
2705         * i386.c (ix86_expand_movmem, ix86_expand_movstr): Avoid processing
2706         too many bytes on misalligned blocks.
2707
2708 2008-09-13  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
2709
2710         * doc/cfg.texi: Fix some typos.
2711         * doc/extend.texi: Likewise.
2712         * doc/install.texi: Likewise.
2713         * doc/invoke.texi: Likewise.
2714         * doc/rtl.texi: Likewise.
2715         * doc/tree-ssa.texi: Likewise.
2716
2717 2008-09-13  Richard Guenther  <rguenther@suse.de>
2718
2719         PR middle-end/30141
2720         * tree-nested.c (finalize_nesting_tree_1): Generate valid
2721         gimple stores for memory rhs.
2722
2723 2008-09-13  H.J. Lu  <hongjiu.lu@intel.com>
2724
2725         PR rtl-optimization/37489
2726         * cse.c (fold_rtx): Don't return const_true_rtx for float
2727         compare if FLOAT_STORE_FLAG_VALUE is undefined.
2728
2729 2008-09-13  Jan Hubicka  <jh@suse.cz>
2730
2731         PR tree-optimization/37392
2732         * tree-inline.c (remap_gimple_stmt): Do not remap return value.
2733
2734 2008-09-13  Martin Jambor  <mjambor@suse.cz>
2735             Jan Hubicka  <jh@suse.cz>
2736
2737         * cgraph.c (free_edges): New variable.
2738         (NEXT_FREE_EDGE): New macro.
2739         (cgraph_free_edge): New function.
2740         (cgraph_remove_edge): Call cgraph_remove_edge_1.
2741         (cgraph_node_remove_callees): Likewise.
2742         (cgraph_node_remove_callers): Likewise.
2743         (cgraph_create_edge): Reuse edges from the free list.  Do not
2744         update uid if doing so.
2745         (cgraph_remove_*_hook): Add free call.
2746
2747 2008-09-13  Richard Sandiford  <rdsandiford@googlemail.com>
2748
2749         * ira-color.c (conflict_allocno_vec): Delete.
2750         (update_cost_queue_elem): New structure.
2751         (update_cost_queue): New variable.
2752         (update_cost_queue_tail): Likewise.
2753         (update_cost_queue_elems): Likewise.
2754         (allocno_update_cost_check): Delete.
2755         (initiate_cost_update): Allocate update_cost_queue_elems
2756         instead of allocno_update_cost_check.
2757         (finish_cost_update): Update the free()s accordingly.
2758         (start_update_cost): New function.
2759         (queue_update_cost): Likewise.
2760         (get_next_update_cost): Likewise.
2761         (update_copy_costs_1): Inline into...
2762         (update_copy_costs): ...here.  Use a queue instead of recursive calls.
2763         Use cover_class instead of ALLOCNO_COVER_CLASS (another_allocno),
2764         once we've established they are equal.  Don't allocate update
2765         costs if there is nothing to add to them.
2766         (update_conflict_hard_regno_costs): Remove ALLOCNO and
2767         DIVISOR arguments.  Use a queue instead of recursive calls;
2768         process all the allocnos in the initial queue, rather than
2769         a single allocno.
2770         (assign_hard_reg): Use queue_update_cost instead of
2771         conflict_allocno_vec.  Queue coalesced allocnos instead
2772         of calling update_conflict_hard_regno_costs for each one.
2773         Just call update_conflict_hard_regno_costs once for the
2774         entire queue.
2775         (ira_color): Remove conflict_allocno_vec handling.
2776
2777 2008-09-12  Sebastian Pop  <sebastian.pop@amd.com>
2778
2779         PR tree-optimization/37484
2780         * graphite.c (scop_record_loop): Use snprintf instead of sprintf.
2781         (save_var_name): Same.
2782         (initialize_cloog_names): Same.
2783         (initialize_cloog_names): Same.
2784
2785 2008-09-12  Sebastian Pop  <sebastian.pop@amd.com>
2786
2787         * tree-scalar-evolution.c (set_instantiated_value): Set
2788         instantiated_below.
2789
2790 2008-09-12  Vladimir Makarov  <vmakarov@redhat.com>
2791
2792         PR rtl-opt/37377
2793
2794         * ira-build.c (common_loop_tree_node_dominator): Remove.
2795         (copy_live_ranges_to_removed_store_destinations): New function.
2796         (regno_top_level_allocno_map): Move to top level from ...
2797         (ira_flattening): ... here.  Use
2798         copy_live_ranges_to_removed_store_destinations.
2799
2800         * ira-emit.c (generate_edge_moves): Fix a comment.
2801
2802 2008-09-12  Anatoly Sokolov  <aesok@post.ru>
2803
2804         PR target/37466
2805         * config/avr/avr.md (movsi_lreg_const peephole2): Add match_dup for
2806         scratch register after 'set' pattern.
2807
2808 2008-09-12  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
2809
2810         * emit-rtl.c (set_reg_attrs_from_value): Fix invalid alignment
2811         information passed to mark_reg_pointer.
2812         * explow.c (force_reg): Likewise.
2813
2814 2008-09-12  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
2815
2816         * config/spu/spu.c (spu_override_options): Default to -mno-safe-hints
2817         when building for the celledp architecture.
2818
2819 2008-09-12  Richard Guenther  <rguenther@suse.de>
2820
2821         * tree-vrp.c (simplify_truth_ops_using_ranges): Fix types.
2822
2823 2008-09-12  Eric Botcazou  <ebotcazou@adacore.com>
2824
2825         PR rtl-optimization/37424
2826         * ira-color.c (coalesced_pseudo_reg_slot_compare): Untie by comparing
2827         the regnos instead of the addresses.
2828
2829 2008-09-11  Janis Johnson  <janis187@us.ibm.com>
2830
2831         * ginclude/float.h (DEC_EVAL_METHOD): Correct the macro name.
2832
2833 2008-09-11  Richard Guenther  <rguenther@suse.de>
2834
2835         * tree-ssa-uncprop.c (associate_equivalences_with_edges): Avoid
2836         entering the weaker equivalence recording.
2837
2838         * tree-ssa-phiprop.c (propagate_with_phi): Fix tuplification.
2839
2840 2008-09-11  Jeff Law <law@redhat.com>
2841
2842         * reload1.c (alter_reg): Undo the BYTE_BIG_ENDIAN correction performed
2843         by assign_stack_local on the IRA path for stack slot sharing
2844         as well as the non-IRA path.
2845
2846 2008-09-11  Uros Bizjak  <ubizjak@gmail.com>
2847
2848         * config/i386/i386.h: Fix whitespace issues.
2849
2850 2008-09-11  Martin Jambor  <mjambor@suse.cz>
2851
2852         * ipa-prop.h (struct ipa_param_flags): Removed.
2853         (struct ipa_param_descriptor): New structure.
2854         (struct ipa_node_params): ipcp_lattices, param_decls and
2855         param_flags moved to ipa_param_description.
2856         (ipa_get_ith_param): Renamed to ipa_get_param, changed to access
2857         descriptors.  Renamed all users.
2858         (ipa_is_ith_param_modified): Renamed to ipa_is_param_modified,
2859         changed to access descriptors.  Renamed all users.
2860         (ipa_is_ith_param_called): Renamed to ipa_is_param_called, changed
2861         to access descriptors. Renamed all users.
2862         * ipa-cp.c (ipcp_init_cloned_node): Call
2863         ipa_initialize_node_params instead of ipa_count_formal_params and
2864         ipa_create_param_decls_array.
2865         (ipcp_analyze_node): Likewise.
2866         (ipcp_get_ith_lattice): Renamed to ipcp_get_lattice, changed to access
2867         descriptors.  Renamed all users.
2868         (ipcp_initialize_node_lattices): Remove allocation.
2869         * ipa-inline.c (inline_indirect_intraprocedural_analysis): Call
2870         ipa_initialize_node_params instead of ipa_count_formal_params and
2871         ipa_create_param_decls_array.
2872         * ipa-prop.c (ipa_create_param_decls_array): Renamed to
2873         ipa_populate_param_decls, made static, added parameter info,
2874         renamed mt to node, removed allocation, changed to use
2875         descriptors.
2876         (ipa_count_formal_params): Made static, added parameter info,
2877         renamed mt to node.
2878         (ipa_initialize_node_params): New function.
2879         (ipa_check_stmt_modifications): Changed to use descriptors.
2880         (ipa_detect_param_modifications): Removed allocation, changed to
2881         use descriptors.
2882         (ipa_note_param_call): Changed to use descriptors.
2883         (ipa_analyze_params_uses): Removed allocation.
2884         (ipa_free_node_params_substructures): Changed to use descriptors.
2885         (ipa_edge_duplication_hook): Use the unused attribute.
2886         (ipa_node_duplication_hook): Use the unused attribute, changed to
2887         use descriptors, changed to duplicate descriptors.
2888
2889         * ipa-inline.c (cgraph_mark_inline_edge): New parameter new_edges,
2890         changed all callers.  Call ipa_propagate_indirect_call_infos if doing
2891         indirect inlining.  Made static.
2892         (cgraph_decide_inlining): Freeing ipa-prop structures after inlining
2893         functions called only once.
2894         (cgraph_decide_recursive_inlining): Don't call
2895         ipa_propagate_indirect_call_infos, pass new_edges to
2896         cgraph_mark_inline_edge instead.
2897         (cgraph_decide_inlining_of_small_functions): Don't call
2898         ipa_propagate_indirect_call_infos, pass new_edges to
2899         cgraph_mark_inline_edge instead.
2900         (cgraph_decide_inlining): Don't call
2901         ipa_propagate_indirect_call_infos.
2902         * ipa-prop.c: Check that vectors are allocated.
2903
2904         * ipa-inline.c (cgraph_mark_inline_edge): Returns boolean, true
2905         iff a new cgraph edges have been created.
2906         (cgraph_decide_inlining): New variable redo_always_inline.
2907         Flattening and always_inlining loop until callgraph stabilizes.
2908         * ipa-prop.c (update_call_notes_after_inlining): Returns boolean,
2909         true iff new cgraph edges have been created.
2910         (propagate_info_to_inlined_callees): Likewise.
2911         (ipa_propagate_indirect_call_infos): Likewise.
2912
2913 2008-09-11  Richard Guenther  <rguenther@suse.de>
2914
2915         * tree-vectorizer.c (slpeel_add_loop_guard): Fix types.
2916         (set_prologue_iterations): Likewise.
2917         * tree-vect-transform.c (vect_create_addr_base_for_vector_ref):
2918         Likewise.
2919         (vect_update_init_of_dr): Likewise.
2920         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Fix
2921         type verification.
2922         * fold-const.c (fold_unary): Do not generate calculations
2923         in sub-types.
2924
2925 2008-09-11  Paolo Bonzini  <bonzini@gnu.org>
2926
2927         * dojump.c (do_jump) [BIT_AND_EXPR]: Move below.  Fall through to
2928         TRUTH_AND_EXPR for boolean (1-bit precision) expressions.
2929         (do_jump) [BIT_IOR_EXPR]: Compile as TRUTH_OR_EXPR.
2930
2931         * tree-flow.h (simplify_stmt_using_ranges): Accept a GSI, return
2932         a bool.
2933         * tree-ssa-propagate.c (substitute_and_fold): Pass a GSI to
2934         VRP's simplify_stmt_using_ranges.  Do simplify_stmt_using_ranges
2935         before finalizing the changes.
2936         * tree-vrp.c (extract_range_from_binary_expr): Add limited support
2937         for BIT_IOR_EXPR.
2938         (simplify_truth_ops_using_ranges): New.
2939         (simplify_div_or_mod_using_ranges, simplify_abs_using_ranges,
2940         simplify_cond_using_ranges, simplify_switch_using_ranges): Return
2941         whether a simplification was made.
2942         (simplify_stmt_using_ranges): Ditto, and accept a GSI.  For GS_ASSIGN,
2943         use a switch statement and also call simplify_truth_ops_using_ranges.
2944
2945 2008-09-11  Jan Hubicka  <jh@suse.cz>
2946
2947         * ggc-common.c (loc_array): Make static.
2948         * dce.c (rest_of_handle_ud_dce): Free worklist.
2949
2950 2008-09-11  Jan Hubicka  <jh@suse.cz>
2951
2952         * cgraph.c (cgraph_release_function_body): Plug memory leak on
2953         ipa_transforms_to_apply and CFG; ggc_free gimple df and struct
2954         function so we are sure we do not dangle it forever.
2955         * function.c (outer_function_chain, find_function_data): Remove.
2956         (function_context_stack): New.
2957         (push_function_context, pop_function_context): Update.
2958         * function.h (struct function): Remove pointer outer.
2959         (outer_function_chain, find_function_data): Remove.
2960         * stmt.c (force_label_rtx): Remove dead call of find_function_data.
2961
2962 2008-09-11  Jan Hubicka  <jh@suse.cz>
2963
2964         PR middle-end/37448
2965         * cgraph.c (cgraph_create_edge): Use !cgraph_edge for sanity check.
2966
2967 2008-09-11  Jan Hubicka  <jh@suse.cz>
2968
2969         * tree-ssa-pre.c (phi_translate_1): Fix memory leak
2970
2971 2008-09-11  Jan Hubicka  <jh@suse.cz>
2972
2973         * tree-ssa.c (redirect_edge_var_map_clear): Fix formatting.
2974         (free_var_map_entry): New function.
2975         (redirect_edge_var_map_destroy): Use it.
2976
2977 2008-09-11  Jan Hubicka  <jh@suse.cz>
2978
2979         PR middle-end/37448
2980         * tree-inline.c (add_lexical_block): Replace with ...
2981         (prepend_lexical_block): ... prepend at begginig.
2982         (remap_blocks): Use it and reverse later.
2983         (expand_call_inline): Use prepend_lexical_block.
2984
2985 2008-09-11  Jan Hubicka  <jh@suse.cz>
2986
2987         * gimplify.c (pop_gimplify_context): Free bind_expr_stack.
2988
2989 2008-09-11  Jan Hubicka  <jh@suse.cz>
2990
2991         * function.c (free_after_compilation): Call insn_locators_free.
2992         * cfglayout.c (insn_locators_free): New function.
2993         * rtl.h (insn_locators_free): Declare.
2994
2995 2008-09-11  Jan Hubicka  <jh@suse.cz>
2996
2997         * ifcvt.c (check_cond_move_block): Make regs argument pointer to
2998         vector pointer.
2999         (cond_move_process_if_block): Update call.
3000
3001 2008-09-11  Jan Hubicka  <jh@suse.cz>
3002
3003         * toplev.c (dump_memory_report): Call dump_vec_loc_statistics.
3004         * vec.c: Include hashtab.h
3005         (vec_descriptor, ptr_hash_entry): New structures.
3006         (vec_desc_hash, vec_ptr_map): New static variables.
3007         (hash_descriptor, eq_descriptor, hash_ptr, eq_ptr, vec_descriptor,
3008         register_overhead, free_overhead, vec_heap_free): New functions.
3009         (vec_gc_o_reserve_1): ggc_free when resizing to 0.
3010         (vec_heap_o_reserve_1): free when resizing to 0; add statistics.
3011         (cmp_statistic, add_statistics, dump_vec_loc_statistics):
3012         New functions.
3013
3014 2008-09-11  Ira Rosen  <irar@il.ibm.com>
3015
3016         PR tree-optimization/37474
3017         * tree-vect-analyze.c (vect_supported_load_permutation_p): Check the
3018         length of load permutation.
3019
3020 2008-09-11  Andreas Schwab  <schwab@suse.de>
3021
3022         * config/m68k/m68k.h (IRA_COVER_CLASSES): Define.
3023
3024 2008-09-11  Jakub Jelinek  <jakub@redhat.com>
3025
3026         PR target/37382
3027         * expmed.c (extract_low_bits): Avoid creating invalid subregs.
3028         * dse.c (find_shift_sequence): Use extract_low_bits instead of
3029         simplify_gen_subreg.
3030
3031 2008-09-11  Ira Rosen  <irar@il.ibm.com>
3032
3033         * tree-vect-transform.c (vectorizable_store): Use the rhs vector type
3034         for alias check.
3035
3036 2008-09-10  Jakub Jelinek  <jakub@redhat.com>
3037
3038         PR middle-end/37338
3039         * gimplify.c (gimplify_body): Call default_rtl_profile.
3040
3041         PR target/36904
3042         * config/rs6000/rs6000-c.c (rs6000_macro_to_expand): Return NULL
3043         instead of tok->val.node if not expanding to something else.  Handle
3044         intervening CPP_PADDING tokens.
3045         (altivec_categorize_keyword): Remove unneeded comparisons.
3046
3047 2008-09-10  Richard Guenther  <rguenther@suse.de>
3048
3049         * tree-ssa-pre.c (phi_translate_1): Fix memory leak.
3050
3051 2008-09-10  Richard Guenther  <rguenther@suse.de>
3052
3053         PR middle-end/37432
3054         * tree-inline.c (insert_init_stmt): Make sure to not
3055         insert invalid gimple stores.
3056
3057 2008-09-10  Sebastian Pop  <sebastian.pop@amd.com>
3058
3059         PR tree-optimization/37388
3060         * toplev.c (process_options): Fail and warn when graphite
3061         flags are used, but the compiler has not been configured
3062         with graphite libraries.
3063         * graphite.c (graphite_transform_loops): Remove printfs
3064         to dump_file for the case when graphite is not available.
3065
3066 2008-09-10  H.J. Lu  <hongjiu.lu@intel.com>
3067
3068         PR target/37434:
3069         * config/i386/i386.c (ix86_expand_vector_init_interleave): Force
3070         the even element into register.
3071         (ix86_expand_vector_init_general): Don't use
3072         ix86_expand_vector_init_interleave on V16QImode and V8HImode
3073         if we can't move from GPR to SSE register directly.
3074
3075 2008-09-10  Bernd Schmidt  <bernd.schmidt@analog.com>
3076
3077         * config/bfin/bfin.c (workaround_speculation): Correct algorithm to
3078         not lose track of the number of NOPs needed.  Number of NOPs needed
3079         for sync vs. loads workaround was switched; corrected.  Run second
3080         pass for all workarounds.  No NOPs needed after call insns.  Change
3081         second pass to use find_next_insn_start and find_load helpers in order
3082         to properly detect parallel insns.
3083         * config/bfin/bfin.md (cbranch_with_nops): Increase length.
3084
3085 2008-09-10  Jan Hubicka  <jh@suse.cz>
3086
3087         * value-prof.c (gimple_ic): Fix tuplification bug.
3088         * sched-deps.c (sched_insns_conditions_mutex_p): Silence unitialized
3089         var warning.
3090
3091 2008-09-10  Jakub Jelinek  <jakub@redhat.com>
3092
3093         PR tree-optimization/37353
3094         * tree-call-cdce.c (cond_dead_built_in_calls): Remove.
3095         (shrink_wrap_conditional_dead_built_in_calls): Add calls argument, use
3096         calls instead of cond_dead_built_in_calls.
3097         (tree_call_cdce): Add cond_dead_built_in_calls automatic variable,
3098         initalize the vector only before adding first entry.  Use VEC_safe_push
3099         instead of VEC_quick_push.  Pass cond_dead_built_in_calls to
3100         shrink_wrap_conditional_dead_built_in_calls call.
3101
3102 2008-09-10  Ira Rosen  <irar@il.ibm.com>
3103
3104         PR tree-optimization/37385
3105         * tree-vect-transform.c (vect_create_data_ref_ptr): Add a new
3106         argument, and use it as a vector type if not NULL.
3107         (vectorizable_store): Call vect_create_data_ref_ptr with the type of
3108         vectorized rhs.
3109         (vect_setup_realignment): Call vect_create_data_ref_ptr with
3110         additional argument.
3111         (vectorizable_load): Likewise.
3112
3113 2008-09-10  Jakub Jelinek  <jakub@redhat.com>
3114
3115         * config/i386/i386.md (SWI32): New mode iterator.
3116         (jcc_fused_1, jcc_fused_2, jcc_fused_3, jcc_fused_4): Use it instead
3117         of SWI.
3118
3119 2008-09-09  Vladimir Makarov  <vmakarov@redhat.com>
3120
3121         PR rtl-optimization/37435
3122         * caller-save.c (insert_restore, insert_save): Check the mode by
3123         reg_save_code.
3124
3125 2008-09-09  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
3126
3127         PR other/37265
3128         * dwarf2asm.c (dw2_force_const_mem): Use unstripped symbol name for
3129         splay tree lookup.
3130         (dw2_output_indirect_constant_1): Use unstripped name in symbol
3131         reference.
3132
3133 2008-09-09  Sandra Loosemore  <sandra@codesourcery.com>
3134
3135         * doc/invoke.texi (ARM Options): Correct errors in discussion
3136         of -mfloat-abi, -mhard-float, and -msoft-float.
3137
3138 2008-09-09  Jakub Jelinek  <jakub@redhat.com>
3139             Jan Hubicka  <jh@suse.cz>
3140
3141         PR middle-end/37356
3142         * tree-inline.c (copy_bb): Insert stmt into copy_basic_block before
3143         calling gimple_regimplify_operands on it.  Iterate over all newly
3144         added statements, not just the last one.
3145         (insert_init_stmt): Insert stmt into seq first, then call
3146         gimple_regimplify_operands on it.  Don't create new gimplification
3147         context, nor find referenced vars.
3148
3149 2008-09-09  Jakub Jelinek  <jakub@redhat.com>
3150
3151         PR other/37419
3152         * ipa-prop.h (ipa_propagate_indirect_call_infos): Change last argument
3153         to pointer to vector pointer.
3154         * ipa-prop.c (ipa_propagate_indirect_call_infos,
3155         propagate_info_to_inlined_callees): Likewise.
3156         (update_call_notes_after_inlining): Likewise.  Push new indirect edge
3157         to *new_edges instead of new_edges.  Reread IPA_EDGE_REF after
3158         ipa_check_create_edge_args.
3159         * ipa-inline.c (cgraph_decide_recursive_inlining): Change last
3160         argument to pointer to vector pointer.
3161         (cgraph_decide_inlining_of_small_function): Adjust
3162         cgraph_decide_recursive_inlining and ipa_propagate_indirect_call_infos
3163         calls.
3164
3165         PR target/37438
3166         * config/i386/i386.md (zero_extendqihi2_movzbl): Enable when
3167         optimizing for size, not speed.
3168
3169         PR rtl-optimization/37408
3170         * function.c (assign_parm_find_stack_rtl): Set correct MEM_SIZE
3171         if parm is promoted.
3172
3173 2008-09-09  Sebastian Pop  <sebastian.pop@amd.com>
3174
3175         PR tree-optimization/37375
3176         * tree-scalar-evolution.c (scev_info_str): Add field
3177         instantiated_below.
3178         (new_scev_info_str, eq_scev_info, find_var_scev_info,
3179         set_scalar_evolution, get_scalar_evolution, get_instantiated_value,
3180         set_instantiated_value): Pass instantiated_below.
3181         (analyze_scalar_evolution_1, analyze_scalar_evolution): Update calls
3182         to above functions.
3183         (instantiate_scev_1, instantiate_scev): Pass a basic block above which
3184         the definitions are not instantiated.
3185
3186         * tree-scalar-evolution.h (instantiate_scev): Update declaration.
3187         (block_before_loop): New.
3188         * tree-data-ref.c (dr_analyze_indices): Update uses of
3189         instantiate_scev.
3190         * graphite.c (block_before_scop): New.
3191         (loop_affine_expr, stmt_simple_for_scop_p, harmful_stmt_in_bb): Pass a
3192         basic block, not a loop for determining the parameters.
3193         (scopdet_edge_info, build_scops_1): Do not pass outermost loop in the
3194         scop.
3195         (idx_record_params, find_params_in_bb, find_scop_parameters,
3196         build_loop_iteration_domains, add_conditions_to_domain): Update calls
3197         to instantiate_scev.
3198
3199         * Makefile.in (cfgloopmanip.o): Add missing dependency on TREE_FLOW_H.
3200
3201 2008-09-09  Vladimir Makarov  <vmakarov@redhat.com>
3202
3203         PR rtl-opt/37333
3204
3205         * ira-build.c (ira_create_allocno): Setup frequency to 0.
3206
3207         * ira-color.c (update_conflict_hard_regno_costs): Remove assert.
3208         Check zero freq and increase if necessary.
3209
3210 2008-09-09  Vladimir Makarov  <vmakarov@redhat.com>
3211
3212         * ira-conflicts.c (process_regs_for_copy): Check that the hard
3213         regno is in the right range.  Add comments.
3214
3215 2008-09-09  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
3216
3217         * Makefile.in (mips-tfile.o-warn): Don't error out on mips-tfile.c
3218         warnings.
3219         * mips-tfile.c (copy_object): Cast alloca result to int *.
3220         * mips-tdump.c (print_symbol): Cast xmalloc return values to
3221         proper types.
3222         Rename class to sclass.
3223         (read_tfile): Cast read_seek return values to proper types.
3224         Cast xcalloc return value to proper type.
3225
3226 2008-09-09  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
3227
3228         * config/sol2.h (REGISTER_TARGET_PRAGMAS): Move ...
3229         * config/i386/sol2.h (REGISTER_SUBTARGET_PRAGMAS): ... here.
3230         * config/sparc/sol2.h (REGISTER_TARGET_PRAGMAS): ... and here.
3231
3232 2008-09-09  Jan Hubicka  <jh@suse.cz>
3233
3234         * profile.c (is_edge_inconsistent): Add debug output; ignore
3235         negative count on fake edges.
3236         (is_inconsistent): Add debug output.
3237
3238 2008-09-09  Andrey Belevantsev  <abel@ispras.ru>
3239
3240         * haifa-sched.c (advance_one_cycle): Do not print '\n' before printing
3241         dump message.
3242         (choose_ready): When first insn is chosen from the ready list, also
3243         dump it.
3244
3245 2008-09-09  Andrey Belevantsev  <abel@ispras.ru>
3246
3247         PR rtl-optimization/37360
3248         * haifa-sched.c (max_issue): Do not assert that we never issue more
3249         insns than issue_rate.  Add comment.
3250
3251 2008-09-09  Richard Guenther  <rguenther@suse.de>
3252
3253         * tree-cfg.c (verify_types_in_gimple_op): Remove.
3254         (verify_types_in_gimple_call): Rename to ...
3255         (verify_gimple_call): ... this.  Enhance.
3256         (verify_types_in_gimple_cond): Remove.
3257         (verify_gimple_comparison): New function ...
3258         (verify_types_in_gimple_assign): ... split out from here.
3259         (verify_types_in_gimple_return): Rename to ...
3260         (verify_gimple_return): ... this.  Enhance.
3261         (verify_types_in_gimple_switch): Rename to ...
3262         (verify_gimple_switch): ... this.  Enhance.
3263         (verify_gimple_goto): New function.
3264         (verify_types_in_gimple_phi): Rename to ...
3265         (verify_gimple_phi): ... this.  Enhance.
3266         (verify_types_in_gimple_stmt): Adjust calls to helper functions.
3267         Fold in single-statement cases from verify_types_in_gimple_seq_2.
3268         (verify_types_in_gimple_seq_2): Remove cases handled in
3269         verify_types_in_gimple_stmt.
3270
3271 2008-09-09  Bernd Schmidt  <bernd.schmidt@analog.com>
3272
3273         * config/bfin/bfin.c (n_regs_to_save): New static variable.
3274         (push_multiple_operation, pop_multiple_operation): Set it.
3275         (workaround_rts_anomaly): New function.
3276         (workaround_speculation): New function, broken out of bfin_reorg.
3277         (bfin_reorg): Call the new functions.
3278
3279 2008-09-09  Richard Guenther  <rguenther@suse.de>
3280
3281         PR middle-end/37354
3282         PR middle-end/30165
3283         * gimplify.c (gimplify_conversion): Change conversions of
3284         non-register type to VIEW_CONVERT_EXPRs.
3285         (gimplify_addr_expr): If we need to make the operand
3286         addressable make sure to use a properly initialized
3287         temporary for that so it gets a valid gimple store.
3288
3289 2008-09-09  Aldy Hernandez  <aldyh@redhat.com>
3290
3291         * function.h (struct function): Add function_start_locus.
3292         * cfgexpand.c (gimple_expand_cfg): Use it.
3293         * c-parser.c (c_parser_declaration_or_fndef): Set it.
3294
3295 2008-09-09  Richard Guenther  <rguenther@suse.de>
3296
3297         PR tree-optimization/37433
3298         * tree-ssa-ccp.c (ccp_fold): Properly guard folding of
3299         function calls.
3300
3301 2008-09-09  Richard Guenther  <rguenther@suse.de>
3302
3303         PR tree-optimization/37387
3304         * tree-ssa-ifcombine.c (ifcombine_iforif): Convert the name
3305         and bits to a common type.
3306
3307 2008-09-09  Nick Clifton  <nickc@redhat.com>
3308
3309         * config/v850/v850.md (return): Restore frame size restriction.
3310
3311 2008-09-09  Paolo Bonzini  <bonzini@gnu.org>
3312
3313         * c-common.c (c_expand_decl): Remove.
3314         * c-common.h (anon_aggr_type_p): Remove prototype.
3315         (DECL_ANON_UNION_ELEMS): Remove.
3316         * c-objc-common.h (LANG_HOOKS_EXPAND_DECL): Remove.
3317         * c-decl.c (anon_aggr_type_p): Remove.
3318         * langhooks-def.h (LANG_HOOKS_EXPAND_DECL): Remove.
3319         (LANG_HOOKS_INITIALIZER): Remove LANG_HOOKS_EXPAND_DECL.
3320         * langhooks.h (struct lang_hooks): Remove expand_decl.
3321         * langhooks.c (lhd_expand_decl): Remove.
3322         * stmt.c (expand_anon_union_decl): Remove.
3323         * tree.h (expand_anon_union_decl): Remove prototype.
3324
3325 2008-08-09  Andy Hutchinson  <hutchinsonandy@aim.com>
3326
3327         PR target/36609
3328         * config/avr/avr.c (avr_reorg): Create RTL for reversed compare with
3329         zero.
3330         * config/avr/avr.md  (QISI) : Define mode iterator.
3331         (negated_tst<mode>) : Redefine as split using mode macro.
3332         (reversed_tstqi): Define insn as reversed compare with zero.
3333         (reversed_tsthi): Ditto.
3334         (reversed_tstsi): Ditto.
3335
3336 2008-09-08  Jakub Jelinek  <jakub@redhat.com>
3337
3338         PR middle-end/37393
3339         * tree-inline.c (copy_bb): When replacing a gimple_call_va_arg_pack_p
3340         call stmt by new_call, clear gimple_bb on stmt after gsi_replace.
3341
3342         PR middle-end/37414
3343         * predict.c (optimize_function_for_size_p): Don't segfault if
3344         FUN is NULL.
3345         * fold-const.c (LOGICAL_OP_NON_SHORT_CIRCUIT, fold_truthop,
3346         tree_swap_operands_p): Don't test cfun != NULL before calling
3347         optimize_function_for_s*_p.
3348
3349 2008-09-08  Eric Botcazou  <ebotcazou@adacore.com>
3350
3351         * ira-color.c (ira_reuse_stack_slot): Set slot_num on success at the
3352         end of the search.
3353
3354 2008-09-08  M R Swami Reddy <MR.Swami.Reddy@nsc.com>
3355
3356         * crx/crx.h (IRA_COVER_CLASSES): Define.
3357
3358 2008-09-08  Jakub Jelinek  <jakub@redhat.com>
3359
3360         PR middle-end/37337
3361         * tree-ssa-dom.c (optimize_stmt): Call maybe_clean_or_replace_eh_stmt
3362         even when a stmt has been gimple_modified_p, but after fold_stmt is
3363         not any longer.  Remove unneeded may_have_exposed_new_symbols
3364         initializations.
3365
3366 2008-09-08  Richard Guenther  <rguenther@suse.de>
3367
3368         PR tree-optimization/37421
3369         * tree-ssa-sccvn.c (visit_copy): Make sure to fully
3370         valueize the RHS.
3371
3372 2008-09-08  Jakub Jelinek  <jakub@redhat.com>
3373
3374         PR middle-end/37415
3375         * opts.c (common_handle_option): Handle OPT_ftree_store_ccp.
3376
3377 2008-09-08  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
3378
3379         PR driver/37409
3380         * pa-hpux.h (LINK_SPEC): Strip -fwhole-program.
3381         * pa-hpux10.h (LINK_SPEC): Likewise.
3382         * pa-hpux11.h (LINK_SPEC): Likewise.
3383
3384 2008-09-07  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
3385
3386         * pa32-regs.h (IRA_COVER_CLASSES): Define.
3387         * pa64-regs.h (IRA_COVER_CLASSES): Define.
3388
3389 2008-09-07  Helge Deller  <deller@gmx.de>
3390
3391         * pa/linux-atomic.c: New file.
3392         * pa/t-linux (LIB2FUNCS_STATIC_EXTRA): Define.
3393         * pa/t-linux64 (LIB2FUNCS_STATIC_EXTRA): Define.
3394
3395 2008-09-07  Richard Guenther  <rguenther@suse.de>
3396             Ira Rosen  <irar@il.ibm.com>
3397
3398         PR tree-optimization/36630
3399         * tree-vect-transform.c (vect_update_ivs_after_vectorizer):
3400         Call STRIP_NOPS before calling evolution_part_in_loop_num.
3401
3402 2008-09-07  Dorit Nuzman  <dorit@il.ibm.com>
3403             Ira Rosen  <irar@il.ibm.com>
3404
3405         PR tree-optimization/35642
3406         * config/rs6000/altivec.md (mulv8hi3): Implement.
3407
3408 2008-09-06  Jeff Law <law@redhat.com>
3409
3410         * h8300/h8300.h (IRA_COVER_CLASSES): Define.
3411
3412 2008-09-06  Jan Hubicka  <jh@suse.cz>
3413
3414         PR tree-optimization/14703
3415         * tree-ssa-live.c (remove_unused_scope_block_p): Remove ignored
3416         declarations.
3417         * passes.c (init_optimization_passes): Recompute inline parameters.
3418
3419 2008-09-06  Richard Sandiford  <rdsandiford@googlemail.com>
3420
3421         * config/mips/mips.c (mips_function_ok_for_sibcall): Check for
3422         DECL being null.
3423
3424 2008-09-06  Richard Sandiford  <rdsandiford@goolemail.com>
3425             Peter Fuerst  <post@pfrst.de>
3426
3427         * doc/invoke.texi: Document -mr10k-cache-barrier=.
3428         * doc/extend.texi: Document __builtin_mips_cache.
3429         * config/mips/mips-ftypes.def: Add a (VOID, SI, CVPOINTER) entry.
3430         * config/mips/mips.opt (mr10k-cache-barrier=): New option.
3431         * config/mips/mips.h (TARGET_CPU_CPP_BUILTINS): Define
3432         __GCC_HAVE_BUILTIN_MIPS_CACHE.
3433         (TARGET_CACHE_BUILTIN, ISA_HAS_CACHE): New macros.
3434         * config/mips/mips.c (mips_r10k_cache_barrier_setting): New enum.
3435         (set_push_mips_isas): New variable.
3436         (mips_r10k_cache_barrier): New variable.
3437         (cache): New availability predicate.
3438         (mips_builtins): Add an entry for __builtin_mips_cache.
3439         (mips_build_cvpointer_type): New function.
3440         (MIPS_ATYPE_CVPOINTER): New macro.
3441         (mips_prepare_builtin_arg): Only use the insn's mode if the rtx's
3442         mode is VOIDmode.
3443         (r10k_simplified_address_p, r10k_simplify_address)
3444         (r10k_uncached_address_p, r10k_safe_address_p)
3445         (r10k_needs_protection_p_1, r10k_needs_protection_p_store)
3446         (r10k_needs_protection_p_call, r10k_needs_protection_p)
3447         (r10k_insert_cache_barriers): New functions.
3448         (mips_reorg_process_insns): Delete cache barriers after a
3449         branch-likely instruction.
3450         (mips_reorg): Call r10k_insert_cache_barriers.
3451         (mips_handle_option): Handle OPT_mr10k_cache_barrier_.
3452         * config/mips/mips.md (UNSPEC_MIPS_CACHE): New constant.
3453         (UNSPEC_R10K_CACHE_BARRIER): Likewise.
3454         (mips_cache, r10k_cache_barrier): New define_insns.
3455
3456 2008-09-06  Richard Sandiford  <rdsandiford@googlemail.com>
3457
3458         * ira-int.h (ira_zero_hard_reg_set, ira_one_hard_reg_set): Delete.
3459         * ira-color.c (setup_allocno_left_conflicts_num): Use
3460         hard_reg_set_equal_p instead of a comparison with
3461         ira_zero_hard_reg_set.
3462         * ira.c (setup_reg_subclasses): Likewise.
3463         (setup_cover_and_important_classes): Likewise.
3464         (setup_class_translate): Likewise.
3465         (setup_reg_class_intersect_union): Likewise.
3466         (ira_zero_hard_reg_set, ira_one_hard_reg_set): Delete.
3467         (ira_init_once): Don't initialize them.
3468
3469 2008-09-05  Vladimir Makarov  <vmakarov@redhat.com>
3470
3471         * doc/tm.texi (IRA_COVER_CLASSES): Fix a typo.
3472
3473 2008-09-05  Vladimir Makarov  <vmakarov@redhat.com>
3474
3475         * ira-color.c (ira_fast_allocation): Permit global allocno allocation.
3476
3477 2008-09-05  Trevor Smigiel <Trevor_Smigiel@playstation.sony.com>
3478
3479         Improved branch hints, safe hints, and scheduling.
3480
3481         * haifa-sched.c (sched_emit_insn) : Define.
3482         * sched-int.h (sched_emit_insn) : Add prototype.
3483         * doc/invoke.texi (-mdual-nops, -mhint-max-nops,
3484         -mhint-max-distance -msafe-hints) : Document.
3485         * config/spu/spu.c (spu_flag_var_tracking): New.
3486         (TARGET_SCHED_INIT_GLOBAL, TARGET_SCHED_INIT,
3487         TARGET_SCHED_REORDER, TARGET_SCHED_REORDER2,
3488         TARGET_ASM_FILE_START): Define.
3489         (TARGET_SCHED_ADJUST_PRIORITY): Remove.
3490         (STOP_HINT_P, HINTED_P, SCHED_ON_EVEN_P): Define.
3491         (spu_emit_branch_hint): Add blocks argument.
3492         (insert_branch_hints, insert_nops): Remove.
3493         (pad_bb, insert_hbrp_for_ilb_runout, insert_hbrp, in_spu_reorg,
3494         uses_ls_unit, spu_sched_init_global, spu_sched_init,
3495         spu_sched_reorder, asm_file_start): New functions.
3496         (clock_var, spu_sched_length, pipe0_clock,
3497         pipe1_clock, prev_clock_var, prev_priority,
3498         spu_ls_first, prev_ls_clock): New static variables.
3499         * config/spu/spu.h (TARGET_DEFAULT): Add MASK_SAFE_HINTS.
3500         * config/spu.md (iprefetch): Add operand, make it clobber MEM.
3501         (nopn_nv): Add a non-volatile version of nop.
3502         * config/spu/spu.opt (-mdual-nops, -mhint-max-nops,
3503         -mhint-max-distance, -msafe-hints): New options.
3504
3505 2008-09-05  Janis Johnson  <janis187@us.ibm.com>
3506             Samuel Tardieu  <sam@rfc1149.net>
3507
3508         * opts.c (decode_options): Combine nested if statements.
3509
3510         PR target/37283
3511         * opts.c (decode_options): Handle more relationships among
3512         unit-at-a-time, toplevel-reorder, and section-anchors.
3513
3514 2008-09-05  David Daney  <ddaney@avtrex.com>
3515
3516         * doc/install.texi (--enable-reduced-reflection): Document new option.
3517
3518 2008-09-05  Bob Wilson  <bob.wilson@acm.org>
3519
3520         * config/xtensa/predicates.md (nonimmed_operand, mem_operand): Use
3521         constantpool_mem_p.
3522         (constantpool_operand): New.
3523         (move_operand): Disallow sub-word modes for the constant pool.
3524         * config/xtensa/xtensa.c (TARGET_SECONDARY_RELOAD): Define.
3525         (xtensa_secondary_reload_class): Replace with....
3526         (xtensa_secondary_reload): this function.  Remove SIGN_EXTEND check.
3527         Set icode for sub-word reloads from the constant pool.
3528         * config/xtensa/xtensa.h (SECONDARY_INPUT_RELOAD_CLASS): Delete.
3529         (SECONDARY_OUTPUT_RELOAD_CLASS): Delete.
3530         * config/xtensa/xtensa.md (reload<mode>_literal): New.
3531         * config/xtensa/xtensa-protos.h: Update prototypes.
3532
3533 2008-09-05  Joseph Myers  <joseph@codesourcery.com>
3534
3535         * config/mips/mips.h (enum reg_class): Add FRAME_REGS.
3536         (REG_CLASS_NAMES): Update.
3537         (REG_CLASS_CONTENTS): Update.
3538         * config/mips/mips.c (mips_regno_to_class): Use FRAME_REGS instead
3539         of ALL_REGS for regs 77 and 78.
3540         * function.c (instantiate_virtual_regs_in_insn): Assert that
3541         return value of simplify_gen_subreg is not NULL.
3542
3543 2008-09-05  Paolo Bonzini  <bonzini@gnu.org>
3544
3545         * emit-rtl.c (gen_rtvec): Rewrite not using gen_rtvec_v.
3546         (gen_rtvec_v): Fix coding standards.
3547
3548 2008-09-04  Jan Hubicka  <jh@suse.cz>
3549
3550         * i386.c (decide_alg): Be more conservative about optimizing for size.
3551
3552 2008-09-04  Ian Lance Taylor  <iant@google.com>
3553
3554         * varasm.c (narrowing_initializer_constant_valid_p): New
3555         static function.
3556         (initializer_constant_valid_p): Call it.
3557
3558 2008-09-04  Jeff Law  <law@redhat.com>
3559
3560         * fold-const.c (native_encode_real): Fix computation of WORDS.
3561         (native_interpret_real): Likewise.
3562
3563 2008-09-04  Janis Johnson  <janis187@us.ibm.com>
3564
3565         * config/rs6000/t-rs6000: Remove target gt-rs6000.h.
3566
3567 2008-09-04  Vladimir Makarov  <vmakarov@redhat.com>
3568
3569         * ira-conflicts.c (process_regs_for_copy): Check insn to check
3570         that the cost is already taken into account in ira-costs.c
3571
3572         * ira-int.h (ira_debug_copy, ira_debug_copies): New.
3573
3574         * ira-build.c (print_copy, print_copies, ira_debug_copy,
3575         ira_debug_copies): New.
3576         (ira_bulid): Call print_copies.
3577
3578         * doc/tm.texi (IRA_COVER_CLASSES): Fix the description.
3579
3580 2008-09-04  Samuel Tardieu  <sam@rfc1149.net>
3581
3582         PR target/32783
3583         * config/rs6000/rs6000.c (optimization_options): Remove check of
3584         flag_toplevel_order.
3585
3586 2008-09-04  Adam Nemet  <anemet@caviumnetworks.com>
3587
3588         * config/mips/mips.h (ISA_HAS_SEQ_SNE): New macro.
3589         * config/mips/mips.c (mips_expand_scc): Also expand seq and sne if
3590         second operand is a reg_imm10_operand.
3591         * config/mips/mips.md (*seq_<GPR:mode><GPR2:mode>_seq,
3592         *sne_<GPR:mode><GPR2:mode>_sne): New patterns.
3593         (*seq_<GPR:mode><GPR2:mode>): Rename to
3594         *seq_zero_<GPR:mode><GPR2:mode>.  Don't match if
3595         ISA_HAS_SEQ_SNE.
3596         (*seq_<GPR:mode><GPR2:mode>_mips16): Rename to
3597         *seq_zero_<GPR:mode><GPR2:mode>_mip16.  Don't match if
3598         ISA_HAS_SEQ_SNE.
3599         (*sne_<GPR:mode><GPR2:mode>): Rename to
3600         *sne_zero_<GPR:mode><GPR2:mode>.  Don't match if
3601         ISA_HAS_SEQ_SNE.
3602
3603 2008-09-04  Adam Nemet  <anemet@caviumnetworks.com>
3604
3605         * config/mips/mips.h (ISA_HAS_EXTS): New macro.
3606         * config/mips/mips.md (*ashr_trunc<mode>): Name the pattern
3607         combining an arithmetic right shift by more than 31 and a
3608         trunction.  Don't match for out-of-range shift amounts.  Set
3609         attribute mode to <MODE>.
3610         (*lshr32_trunc<mode>): Name the pattern combining a logical right
3611         shift by 32 and and a truncation.  Set attribute mode to <MODE>.
3612         (*<optab>_trunc<mode>_exts): New pattern for truncated right
3613         shifts by less than 32.
3614         (extv): Change predicate on first operand to accept registers.
3615         Change predicate of the other operands from immediate_operand to
3616         const_int_operand.  Expand exts when source is a register.
3617         (extzv): Change predicate of the constant operands from
3618         immediate_operand to const_int_operand.
3619         (extzv<mode>): Change predicate of the constant operands from
3620         immediate_operand to const_int_operand and no constraint. Also
3621         remove mode.
3622         (*extzv_trunc<mode>_exts): New pattern.
3623
3624 2008-09-04  Adam Nemet  <anemet@caviumnetworks.com>
3625
3626         * config/mips/mips.h (ISA_HAS_CINS): New macro.
3627         * config/mips/mips-protos.h (mask_low_and_shift_p,
3628         mask_low_and_shift_len): Declare.
3629         * config/mips/mips.c (mask_low_and_shift_p,
3630         mask_low_and_shift_len): New functions.
3631         (mips_print_operand): Handle new operand prefix "m".
3632         * config/mips/mips.md (*cins<mode>): New pattern.
3633
3634 2008-09-04  Bernd Schmidt  <bernd.schmidt@analog.com>
3635
3636         * config/bfin/bfin.c (gen_one_bundle): Don't create new nops when
3637         optimizing for size.
3638
3639 2008-09-04  Richard Sandiford  <rdsandiford@googlemail.com>
3640
3641         * df-scan.c (df_get_entry_block_def_set): Add STACK_POINTER_REGNUM
3642         regardless of epilogue_completed.
3643
3644 2008-09-04  Vladimir Makarov  <vmakarov@redhat.com>
3645
3646         PR middle-end/37359
3647         * ira-lives.c (process_bb_node_lives): Check setjmp.
3648
3649 2008-09-04  Richard Sandiford  <rdsandiford@googlemail.com>
3650
3651         PR middle-end/37243
3652         * ira-build.c (form_loop_tree): Reverse BB walk.
3653         (create_bb_allocnos): Likewise.
3654         * ira-lives.c (make_regno_born_and_dead, regs_set): Delete.
3655         (mark_reg_store): Rename to...
3656         (mark_ref_live): ...this and take a df_ref argument instead of
3657         note_stores arguments.  Assert that we have a register.
3658         (mark_reg_clobber): Delete.
3659         (def_conflicts_with_inputs_p): New function.
3660         (mark_reg_conflicts): Delete.
3661         (mark_reg_death): Rename to...
3662         (mark_ref_dead): ...this and take a df_ref argument instead of
3663         a register.  Assert that we have a register.
3664         (process_bb_node_lives): Hoist frequency calculation out of
3665         instruction walk.  Convert from a forwards scan to a backwards scan.
3666         Use DF_REF_USES and DF_REF_DEFS instead of register notes and
3667         note_stores.  Remove EH_RETURN_DATA_REGNO and regs_set handling.
3668         (create_allocno_live_ranges): Don't create regs_set.
3669
3670 2008-09-04  Ian Lance Taylor  <iant@google.com>
3671
3672         * rtl.h (LABEL_REF_NONLOCAL_P): Don't check for REG_LABEL_OPERAND
3673         or REG_LABEL_TARGET.
3674         * calls.c (emit_library_call_value_1): Use MEM_P rather than
3675         comparing MODE with MEM.
3676         * gimple.c (gimple_build_predict): Cast END_PREDICTORS before
3677         comparing with GF_PREDICT_TAKEN.
3678         (gimple_get_lhs): Change code to enum gimple_code.
3679         (gimple_set_lhs): Likewise.
3680         * ifcvt.c (noce_process_if_block): Correct GET_MODE to GET_CODE.
3681         * omp-low.c (find_omp_clause): Change kind parameter to enum
3682         omp_clause_code.
3683         * tree-flow.h (find_omp_clause): Update declaration.
3684         * regrename.c (clear_dead_regs): Change kind parameter to enum
3685         reg_note.
3686         * reload1.c (eliminate_regs_1): Use REG_NOTE_KIND rather than
3687         GET_MODE.
3688         * see.c (see_get_extension_data): Change return type to enum
3689         entry_type.  Change UNKNOWN to NOT_RELEVANT, SIGN_EXTEND to
3690         SIGNED_EXTENDED_DEF, ZERO_EXTEND to ZERO_EXTENDED_DEF.
3691         (see_gen_normalized_extension): Change extension_code parameter to
3692         enum entry_type.
3693         (see_seek_pre_extension_expr): Change extension_code to enum
3694         entry_type.
3695         (see_merge_one_def_extension): Likewise.
3696         (see_handle_relevant_defs): Likewise.
3697         (see_handle_relevant_uses): Likewise.
3698         (see_analyze_one_def): Likewise.
3699         * tree-cfg.c (need_fake_edge_p): Compare gimple code with
3700         GIMPLE_ASM rather than ASM_EXPR.
3701         * tree-ssa-alias.c (is_escape_site): Compare gimple code with
3702         GIMPLE_RETURN rather than RETURN_EXPR.
3703         * tree-ssa-ccp.c (likely_value): Change code to enum gimple_code.
3704         (evaluate_stmt): Likewise.
3705         * tree-vect-analyze.c (vect_analyze_operations): Change relevance
3706         to enum vect_relevant.
3707         (vect_mark_stmts_to_be_vectorized): Change assertion to not
3708         compare gimple codes with tree codes.
3709
3710 2008-09-04  Paul Brook  <paul@codesourcery.com>
3711
3712         * config/arm/arm.c (arm_size_rtx_costs): Call cost function.
3713
3714 2008-09-04  Bernd Schmidt  <bernd.schmidt@analog.com>
3715
3716         * config/bfin/bfin.c (bfin_function_ok_for_sibcall): Restore a null
3717         pointer check lost in the recent no-unit-at-a-time patch.
3718
3719 2008-09-04  Jan Hubicka  <jh@suse.cz>
3720
3721         PR middle-end/37343
3722         * tree-switch-conversion.c (check_final_bb): Accept only IP
3723         invariants.
3724
3725 2008-09-04  Jan Hubicka  <jh@suse.cz>
3726
3727         * tree-vrp.c (vrp_evaluate_conditional_warnv_with_ops_using_ranges):
3728         Break out from ...
3729         (vrp_evaluate_conditional_warnv_with_ops): ... this one.  Add
3730         using_ranges argument.
3731         (vrp_evaluate_conditional): Avoid bogus warning for type range.
3732         (vrp_visit_cond_stmt): Update call of
3733         vrp_evaluate_conditional_warnv_with_ops
3734
3735 2008-09-04  Jan Hubicka  <jh@suse.cz>
3736
3737         PR tree-optimization/37345
3738         PR tree-optimization/37358
3739         PR tree-optimization/37357
3740         * tree.c (build_function_type_skip_args): Build distinct type copy;
3741         set TYPE_CONTEXT.
3742         (build_function_decl_skip_args): Set type of new decl not orig decl;
3743         clear DECL_VINDEX for methods turned into functions.
3744
3745 2008-09-04  Nick Clifton  <nickc@redhat.com>
3746
3747         * configure.ac (HAVE_GAS_LCOMM_WITH_ALIGNMENT): New assembler check.
3748         * configure: Regenerate.
3749         * config.in: Regenerate.
3750         * config/i386/bsd.h (ASM_OUTPUT_ALIGNED_LOCAL): Use .lcomm with an
3751         alignment field, if it is supported.
3752
3753 2008-09-04  Kai Tietz  <kai.tietz@onevision.com>
3754
3755         * config/i386/t-mingw32 (SHLIB_LC): Change order of import
3756         libraries.
3757
3758 2008-09-03  David Edelsohn  <edelsohn@gnu.org>
3759
3760         * config/rs6000/rs6000.c (processor_target_table): Do not
3761         enable VMX for POWER6.
3762
3763 2008-09-03  Anton Blanchard  <anton@samba.org>
3764
3765         * config/rs6000/rs6000.c (rs6000_split_lock_test_and_set): Do not
3766         emit memory barrier before operation.
3767
3768 2008-09-03  John David Anglin  <dave.anglin@nrc.cnrc.gc.ca>
3769
3770         PR testsuite/37325
3771         * config/pa/pa64-hpux.h (ASM_OUTPUT_EXTERNAL_REAL): Call
3772         default_elf_asm_output_external.
3773
3774 2008-09-03  Jeff Law  <law@redhat.com>
3775
3776         * h8300.c (expand_a_shift): Avoid invalid RTL sharing.
3777
3778 2008-09-03  Richard Henderson  <rth@redhat.com>
3779
3780         * config/alpha/alpha.c (alpha_split_lock_test_and_set): Move
3781         memory barrier to below the test-and-set.
3782         (alpha_split_lock_test_and_set_12): Likewise.
3783
3784 2008-09-03  Vladimir Makarov  <vmakarov@redhat.com>
3785
3786         PR rtl-opt/37243
3787
3788         * ira-int.h (ira_loop_tree_node): Rename mentioned_allocnos to
3789         all_allocnos.
3790
3791         * ira-color.c (print_loop_title): Use all_allocnos.
3792         (color_pass): Ditto.  Don't add border_allocnos.  Check that
3793         subloop allocno in the correspdoning bitmap all_allocnos.
3794
3795         * ira-emit.c (change_loop): Use all_allocnos.
3796
3797         * ira-build.c (create_loop_tree_nodes, finish_loop_tree_node): Ditto.
3798         (ira_create_allocno): Set up all_allocnos bit for the created allocno.
3799         (create_cap_allocno): Remove setting mentioned_allocnos.
3800         (create_insn_allocnos): Ditto.
3801         (remove_unnecessary_allocnos): Use all_allocnos.
3802         (check_allocno_creation): Check that allocnos are in the
3803         corresponding bitmap all_allocnos.
3804
3805 2008-09-03  Vladimir Makarov  <vmakarov@redhat.com>
3806
3807         PR rtl-opt/37243
3808
3809         * ira-conflicts.c (REG_SUBREG_P, go_through_subreg): New.
3810         (process_regs_for_copy): Process subregs.  Refine check when cost
3811         is taken into account in ira-costs.c.
3812         (process_reg_shuffles): Use REG_SUBREG_P.
3813         (add_insn_allocno_copies): Ditto.  Ignore modes.
3814
3815         * ira-color.c (conflict_allocno_vec): New.
3816         (COST_HOP_DIVISOR): New macro.
3817         (update_copy_costs_1): Use it.
3818         (update_conflict_hard_regno_costs): New function.
3819         (assign_hard_reg): Use it.
3820         (ira_color): Allocate and free conflict_allocno_vec.
3821
3822 2008-09-03  Vladimir Makarov  <vmakarov@redhat.com>
3823
3824         PR rtl-opt/37296
3825
3826         * ira-int.h (ira_sort_insn_chain): Remove.
3827
3828         * ira.c (basic_block_order_nums, chain_insn_order,
3829         chain_freq_compare, chain_bb_compare, ira_sort_insn_chain): Remove.
3830         (ira): Don't call ira_sort_insn_chain.
3831
3832         * reload1.c (reload): Don't call ira_sort_insn_chain.
3833
3834 2008-09-03  Andrew Pinski  <andrew_pinski@playstation.sony.com>
3835
3836         PR middle-end/37293
3837         * cgraphunit.c (update_call_expr): Remove eh regions from statements
3838         which become non throw.
3839         (cgraph_function_versioning): Also clear DECL_WEAK.  Call
3840         update_call_expr after updating the flags on the decl.
3841
3842 2008-09-03  Jan Hubicka  <jh@suse.cz>
3843
3844         PR tree-optimization/37315
3845         * cgraph.c (cgraph_create_edge): Use gimple_has_body_p.
3846         * cgraphunit.c (verify_cgraph_node): drop gimple_body check.
3847         (cgraph_analyze_functions): Use node->analyzed
3848         (cgraph_mark_functions_to_output): Likewise.
3849         (cgraph_expand_function): All functions can be released after
3850         expanding.
3851         (cgraph_optimize): Use gimple_has_body_p.
3852         * ipa-inline.c (cgraph_clone_inlined_nodes): Use analyzed flag.
3853         (cgraph_decide_inlining_incrementally): Likewise.
3854         (inline_transform): Inline transform.
3855         * tree-inline.c (initialize_cfun): Do now shallow copy structure;
3856         copy fields needed.
3857         (inlinable_function_p): Drop gimple_body check.
3858         (expand_call_inline): Use gimple_has_body_p.
3859         * gimple.c (gimple_has_body_p): New.
3860         * gimple.h (gimple_has_body_p): Add prototype.
3861         * tree-cfg.c (execute_build_cfg): Remove gimple_body.
3862         (dump_function_to_file): Use gimple_has_body_p check.
3863
3864 2008-09-03  Jakub Jelinek  <jakub@redhat.com>
3865
3866         PR c++/37346
3867         * gimple.h (gimple_has_substatements): GIMPLE_OMP_CRITICAL has
3868         substatements.
3869         * tree-inline.c (remap_gimple_stmt): Handle GIMPLE_OMP_CRITICAL.
3870
3871 2008-09-03  Bernd Schmidt  <bernd.schmidt@analog.com>
3872
3873         From Michael Frysinger  <michael.frysinger@analog.com>
3874         * config/bfin/bfin.c (bfin_cpus[]): Add 0.1 for bf522, bf523, bf524,
3875         bf525, bf526, bf527, bf542, bf544, bf547, bf548, and bf549.  Add 0.2
3876         for bf538.
3877
3878 2008-09-03  Hari Sandanagobalane  <hariharan@picochip.com>
3879
3880         Add picoChip port.
3881         * doc/extend.texi: Document picoChip builtin functions.
3882         * doc/invoke.texi: Document picoChip options.
3883         * doc/contrib.texi: Add picoChip contribution.
3884         * doc/md.texi: Document picoChip constraints.
3885         * config.gcc: Add picochip-*-*.
3886         * config/picochip/: Add new port.
3887
3888 2008-09-03  Richard Guenther  <rguenther@suse.de>
3889
3890         PR tree-optimization/37328
3891         * tree-sra.c (sra_build_assignment): Gimplify properly.
3892         (generate_copy_inout): Take the correct stmt as definition,
3893         remove bogus assert.
3894
3895 2008-09-03  Bernd Schmidt  <bernd.schmidt@analog.com>
3896
3897         * config/bfin/bfin.c (bfin_expand_prologue): Honour no_stack_limit
3898         attributes.
3899
3900         From Michael Frysinger  <michael.frysinger@analog.com>
3901         * config/bfin/bfin.c (bfin_handle_option): Remove BF561 warning.
3902
3903 2008-09-03 Danny Smith  <dannysmith@usrs.sourceforge.net>
3904
3905         * gthr-win32.h (CONST_CAST2): Really make sure CONST_CAST2 is defined.
3906         (__gthread_setspecific): Revert 2008-08-31 change to
3907         __GTHREAD_HIDE_W32API case.  Apply it to !__GTHREAD_HIDE_W32API case.
3908
3909 2008-09-02  Aldy Hernandez  <aldyh@redhat.com>
3910
3911         * diagnostic.c (error_at): New.
3912         * toplev.h (error_at): New prototype.
3913         * c-typeck.c (build_array_ref): Call error_at instead of error.
3914         Pass location to pedwarn.
3915
3916 2008-09-02  Adam Nemet  <anemet@caviumnetworks.com>
3917
3918         * sel-sched.c (sel_hard_regno_rename_ok): Mark arguments unused.
3919
3920 2008-09-02  Jakub Jelinek  <jakub@redhat.com>
3921
3922         * dwarf2out.c (tree_add_const_value_attribute): Only handle
3923         VAR_DECL and CONST_DECL.
3924
3925 2008-09-02  H.J. Lu  <hongjiu.lu@intel.com>
3926             Jakub Jelinek  <jakub@redhat.com>
3927
3928         * config/i386/i386.c (X86_64_VARARGS_SIZE): Removed.
3929         (setup_incoming_varargs_64): Assume cum != NULL. Set/check
3930         ix86_varargs_gpr_size and ix86_varargs_fpr_size.  Use
3931         ix86_varargs_gpr_size instead of X86_64_REGPARM_MAX.
3932         Don't set ix86_save_varrargs_registers.
3933         (ix86_setup_incoming_varargs): Assume cum != NULL.
3934         (ix86_va_start): Check ix86_varargs_gpr_size and
3935         ix86_varargs_fpr_size instead of cfun->va_list_gpr_size and
3936         cfun->va_list_fpr_size, respectively.  Subtract 8*X86_64_REGPARM_MAX
3937         from frame pointer if ix86_varargs_gpr_size == 0.
3938         (ix86_compute_frame_layout): Updated.
3939         * config/i386/i386.h (ix86_save_varrargs_registers): Removed.
3940         (ix86_varargs_gpr_size): Define.
3941         (ix86_varargs_fpr_size): Likewise.
3942         (machine_function): Remove save_varrargs_registers.
3943         Add varargs_gpr_size and varargs_fpr_size.
3944
3945 2008-09-02  Jakub Jelinek  <jakub@redhat.com>
3946
3947         * config/alpha/alpha.c (va_list_skip_additions,
3948         alpha_stdarg_optimize_hook, alpha_gimplify_va_arg_1): Tuplify.
3949         (alpha_gimplify_va_arg): Call unshare_expr on second use of
3950         offset_field.
3951
3952         PR tree-optimization/36766
3953         * tree-cfg.c (gimple_purge_all_dead_eh_edges): Do nothing
3954         for already removed basic blocks.
3955
3956         PR target/36332
3957         * real.c (real_maxval): Clear a lower bit to make real_maxval
3958         match get_max_float for IBM long double format.
3959
3960 2008-09-02  Andreas Schwab  <schwab@suse.de>
3961
3962         * configure.ac: Use m4_quote to quote the expansion of m4_do.
3963         * configure: Regenerate.
3964
3965 2008-09-02  Richard Sandiford  <rdsandiford@googlemail.com>
3966
3967         * simplify-rtx.c (simplify_binary_operation_1): Check for CONST,
3968         SYMBOL_REF and LABEL_REF when applying plus_constant, instead of
3969         checking for a non-VOID CONSTANT_P.
3970
3971 2008-09-02  Jan Hubicka  <jh@suse.cz>
3972
3973         * predict.c (pass_strip_predict_hints): Avoid bugs dump file.
3974         * expmed.c (expand_divmod): Fix test of smod_pow2_cheap and
3975         sdiv_pow2_cheap
3976
3977 2008-09-02  H.J. Lu  <hongjiu.lu@intel.com>
3978
3979         * expr.c (emit_group_store): Don't assert stack temp mode size.
3980
3981 2008-09-02  Sebastian Pop  <sebastian.pop@amd.com>
3982             Tobias Grosser  <grosser@fim.uni-passau.de>
3983             Jan Sjodin  <jan.sjodin@amd.com>
3984             Harsha Jagasia  <harsha.jagasia@amd.com>
3985             Dwarakanath Rajagopal  <dwarak.rajagopal@amd.com>
3986             Konrad Trifunovic  <konrad.trifunovic@inria.fr>
3987             Adrien Eliche  <aeliche@isty.uvsq.fr>
3988
3989         Merge from graphite branch.
3990         * graphite.c: New.
3991         * graphite.h: New.
3992         * tree-loop-linear.c (perfect_loop_nest_depth): Export.
3993         * doc/invoke.texi (-floop-block, -floop-interchange,
3994         -floop-strip-mine): Document new flags.
3995         * tree-into-ssa.c (gimple_vec): Moved...
3996         * tree-loop-distribution.c (rdg_component): Moved...
3997         * cfgloopmanip.c: Include tree-flow.h.
3998         (update_dominators_in_loop): New.
3999         (create_empty_if_region_on_edge): New.
4000         (create_empty_loop_on_edge): New.
4001         (loopify): Use update_dominators_in_loop.
4002         * tree-pass.h (pass_graphite_transforms): Declared.
4003         * configure: Regenerate.
4004         * tree-phinodes.c (make_phi_node): Export.
4005         (add_phi_node_to_bb): New, split from create_phi_node.
4006         * tree-chrec.c (for_each_scev_op): New.
4007         * tree-chrec.h (for_each_scev_op): Declared.
4008         * tree-ssa-loop-ivopts.c (get_phi_with_result): New.
4009         (remove_statement): Call get_phi_with_result.
4010         * config.in (HAVE_cloog): Undef.
4011         * gdbinit.in (pgg): New.
4012         * timevar.def (TV_GRAPHITE_TRANSFORMS): New.
4013         * tree-ssa-loop.c (graphite_transforms): New.
4014         (gate_graphite_transforms): New.
4015         (pass_graphite_transforms): New.
4016         * configure.ac (PPLLIBS, PPLINC, CLOOGLIBS, CLOOGINC,
4017         HAVE_cloog): Defined.
4018         * tree-vectorizer.c (rename_variables_in_bb): Export.
4019         * tree-data-ref.c (dr_may_alias_p): Export.
4020         (stmt_simple_memref_p): New.
4021         (find_data_references_in_stmt): Export.
4022         (find_data_references_in_loop): Export.
4023         (create_rdg_edge_for_ddr): Initialize RDGE_RELATION.
4024         (create_rdg_edges_for_scalar): Initialize RDGE_RELATION.
4025         (create_rdg_vertices): Export.
4026         (build_empty_rdg): New.
4027         (build_rdg): Call build_empty_rdg.  Free dependence_relations.
4028         * tree-data-ref.h (rdg_component): ... here.
4029         (scop_p): New.
4030         (struct data_reference): Add a field scop.
4031         (DR_SCOP): New.
4032         (find_data_references_in_loop): Declared.
4033         (find_data_references_in_stmt): Declared.
4034         (create_rdg_vertices): Declared.
4035         (dr_may_alias_p): Declared.
4036         (stmt_simple_memref_p): Declared.
4037         (struct rdg_edge): Add a field ddr_p relation.
4038         (build_empty_rdg): Declared.
4039         * lambda.h (lambda_matrix): Declare a VEC of.
4040         (find_induction_var_from_exit_cond): Declared.
4041         (lambda_vector_compare): New.
4042         * common.opt (fgraphite, floop-strip-mine,
4043         floop-interchange, floop-block): New flags.
4044         * lambda-code.c (find_induction_var_from_exit_cond): Export.
4045         * cfgloop.c (is_loop_exit): New.
4046         * cfgloop.h (is_loop_exit): Declared.
4047         (create_empty_if_region_on_edge): Declared.
4048         (create_empty_loop_on_edge): Declared.
4049         * tree-flow.h (add_phi_node_to_bb): Declared.
4050         (make_phi_node): Declared.
4051         (rename_variables_in_bb): Declared.
4052         (perfect_loop_nest_depth): Declared.
4053         (graphite_transform_loops): Declared.
4054         * Makefile.in (cfgloopmanip.o): Depend on TREE_FLOW_H.
4055         (graphite.o-warn): Add -Wno-error.
4056         (PPLLIBS, PPLINC, CLOOGLIBS, CLOOGINC): Declared.
4057         (LIBS): Add GMPLIBS, CLOOGLIBS, PPLLIBS.
4058         (INCLUDES): Add PPLINC, CLOOGINC.
4059         (OBJS-common): Add graphite.o.
4060         (graphite.o): Add rule.
4061         * gimple.h (gimple_vec): ... here.
4062         * tree-cfg.c (print_loops): Start printing at ENTRY_BLOCK_PTR.
4063         * passes.c (init_optimization_passes): Schedule
4064         pass_graphite_transforms.
4065
4066 2008-09-02  Samuel Tardieu  <sam@rfc1149.net>
4067
4068         PR target/37283
4069         * opts.c (decode_options): Move processing of -fno-unit-at-a-time
4070         and -fno-toplevel-reorder after handle_options.
4071
4072 2008-09-02  Paul Brook  <paul@codesourcery.com>
4073
4074         * config/arm/arm.c (arm_tune_cortex_a9): Define.
4075         (arm_override_options): Set arm_tune_cortex_a9.
4076         (arm_rtx_costs_1): Make register shifts more expensive on Cortex-A9.
4077         (arm_issue_rate): Handle cortexa9.
4078         * config/arm/arm.h (arm_tune_cortex_a9): Declare.
4079         * config/arm/arm-cores.def: Add cortex-a9.
4080         * config/arm/arm-tune.md: Regenerate.
4081         * config/arm/arm.md: Include cortex-a9.md.
4082         (generic_sched, generic_vfp): Add cortexa9.
4083         * config/arm/cortex-a9.md: New file.
4084
4085 2008-09-02  Richard Guenther  <rguenther@suse.de>
4086
4087         PR tree-optimization/37327
4088         * tree-vrp.c (register_new_assert_for): Make sure to not have
4089         TREE_OVERFLOW set on the bound.
4090
4091 2008-09-02  Alexander Monakov  <amonakov@ispras.ru>
4092
4093         Fixed typo in date of the 2008-09-01 MOVE_RATIO commit.
4094
4095         * config/ia64/ia64.opt (msched-ar-data-spec): Default to 1.
4096         * config/ia64/ia64.c (ia64_set_sched_flags): Always initialize
4097         spec_info->mask.
4098
4099 2008-09-02  Victor Kaplansky  <victork@il.ibm.com>
4100
4101         * gcc/config/spu/spu.md (divdf3): Removed.
4102
4103 2008-09-02  Jakub Jelinek  <jakub@redhat.com>
4104
4105         PR tree-optimization/37095
4106         * cgraph.c (cgraph_node): When creating new cgraph node after
4107         assembler_name_hash has been populated, record it in the hash
4108         table.
4109
4110 2008-09-01  Paul Brook  <paul@codesourcery.com>
4111
4112         * doc/invoke.texi: Document -mword-relocations.
4113         * config/arm/uclinux-elf.h (TARGET_DEFAULT_WORD_RELOCATIONS): Define.
4114         * config/arm/symbian.h (TARGET_DEFAULT_WORD_RELOCATIONS): Define.
4115         * config/arm/vxworks.h (TARGET_DEFAULT_WORD_RELOCATIONS): Define.
4116         * config/arm/arm.c (arm_split_constant): Use arm_emit_movpair.
4117         (arm_rtx_costs_1, arm_size_rtx_costs): Handle HIGH and LO_SUM.
4118         (arm_emit_movpair): New function.
4119         (arm_print_operand <c>): Handle sybolic addresses.
4120         * config/arm/arm.h (TARGET_USE_MOVT): Define.
4121         (TARGET_DEFAULT_WORD_RELOCATIONS): Define.
4122         * config/arm/arm-protos.h (arm_emit_movpair): Add prototype.
4123         * config/arm/arm.opt: Add -mword-relocations.
4124         * config/arm/arm.md (movsi): Use arm_emit_movpair.
4125         (arm_movt, arm_movw): New.
4126
4127 2008-09-01  Paul Brook  <paul@codesourcery.com>
4128
4129         * config/arm/arm.c (arm_override_options): Set arm_abi earlier.
4130         Allow Interworking on ARMv4 EABI based targets.
4131         * config/arm/bpabi.h (TARGET_FIX_V4BX_SPEC): Define.
4132         (SUBTARGET_EXTRA_ASM_SPEC, LINK_SPEC): Add TARGET_FIX_V4BX_SPEC.
4133
4134 2008-09-01  Paul Brook  <paul@codesourcery.com>
4135
4136         * config/arm/thumb2.md (thumb2_negscc): Match the correct operand for
4137         optimized LT0 test.  Remove optimization for GT.
4138
4139 2008-09-01  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
4140
4141         * pa64-hpux.h (LIB_SPEC): Link against librt when building static
4142         openmp applications.
4143         * pa-hpux11.h (LIB_SPEC): Likewise.
4144
4145         * ira.c (setup_eliminable_regset): Only declare i if ELIMINABLE_REGS
4146         is defined.
4147
4148 2008-09-01  Jan Hubicka  <jh@suse.cz>
4149
4150         * predict.c (maybe_hot_count_p, maybe_hot_edge_p): When profile is
4151         present, use only counts; when guessed use only frequencies.
4152         (estimate_bb_frequencies): Use function_frequency.
4153         * profile.c (compute_branch_probabilities): Exit early when
4154         profile reading failed. Set profile_status.
4155         (branch_prob): Do not set profile_status.
4156
4157 2008-09-01  Aldy Hernandez  <aldyh@redhat.com>
4158
4159         * tree.c (protected_set_expr_location): New.
4160         * tree.h (protected_set_expr_location): New prototype.
4161         * c-tree.h (build_array_ref): Add argument.
4162         (parser_build_unary_op): Same.
4163         * c-typeck.c (build_indirect_ref): Handle new location argument.
4164         (build_array_ref): Same.
4165         (parser_build_unary_op): Same.
4166         * gimplify.c (gimplify_asm_expr): Set input_location before calling
4167         error.
4168         * c-omp.c (c_finish_omp_atomic): Pass location when calling
4169         build_indirect_ref.
4170         * c-common.c (finish_label_address_expr): Handle new location argument.
4171         * c-common.h (build_indirect_ref): Add argument.
4172         (finish_label_address_expr): Same.
4173         * c-parser.c (c_parser_unary_expression): Pass location to build
4174         functions.
4175         (c_parser_postfix_expression): Same.
4176
4177 2008-09-01  Paul Brook  <paul@codesourcery.com>
4178
4179         * config/arm/arm.md: Include cortex-r4f.md.
4180         (attr fpu): Update type list.
4181         (attr type): Add fcpys, ffariths, ffarithd, fadds, faddd, fconsts,
4182         fconstd, fcmps and fcmpd.
4183         (attr tune_cortexr4): Define.
4184         (attr generic_sched, attr generic_vfp): Use tune_cortexr4.
4185         * config/arm/vfp.md: Document fcpys, ffariths, ffarithd, fadds, faddd,
4186         fconsts, fconstd, fcmps and fcmpd.  Use them in insn patterns.
4187         * config/arm/arm.c (arm_issue_rate): Add cortexr4f.
4188         * config/arm/arm1020e.md (v10_ffarith, v10_farith): Use new insn types.
4189         * config/arm/cortex-a8-neon.md (cortex_a8_vfp_add_sub,
4190         cortex_a8_vfp_farith: Ditto.
4191         * config/arm/vfp11.md (vfp_ffarith, vfp_farith): Ditto.
4192         * config/arm/cortex-r4.md: Use tune_cortexr4.
4193         * config/arm/cortex-r4f.md: New file.
4194
4195 2008-09-01  Richard Guenther  <rguenther@suse.de>
4196
4197         PR tree-optimization/37305
4198         * tree-ssa-ccp.c (ccp_fold): Do not set TREE_OVERFLOW on
4199         the result of constant conversions.
4200         (fold_gimple_assign): Likewise.
4201
4202 2008-09-01  Andrey Belevantsev  <abel@ispras.ru>
4203
4204         * sel-sched-ir.c (cmp_v_in_regset_pool): Surround with
4205         #ifdef ENABLE_CHECKING.
4206
4207 2008-09-01  Andrey Belevantsev  <abel@ispras.ru>
4208
4209         * sel-sched-dump.c: Surround with #ifdef INSN_SCHEDULING.
4210         * sched-int.h (print_insn, print_pattern, print_value): Declare also
4211         when !INSN_SCHEDULING.
4212
4213 2008-09-01  Andreas Schwab  <schwab@suse.de>
4214
4215         * config/ia64/ia64.c (TARGET_ADDRESS_COST): Update.
4216
4217 2008-09-01  Paul Brook  <paul@codesourcery.com>
4218
4219         * config/arm/arm.c (arm_no_early_mul_dep): Handle multiply-subtract.
4220
4221 2008-09-01  Jan Hubicka  <jh@suse.cz>
4222
4223         * config/spu/spu.c (spu_expand_block_move) Update call of MOVE_RATIO.
4224
4225         * expr.c (MOVE_BY_PIECES_P, CLEAR_BY_PIECES_P, SET_BY_PIECES_P):
4226         Pass speed operand.
4227         * expr.h (MOVE_RATIO, CLEAR_RATIO, SET_RATIO): Update.
4228         * gimplify.c (gimplify_init_constructor): Add speed operand.
4229         * tree-sra.c (decide_block_copy): Likewise.
4230         * tree-inline.c (estimate_move_cost): Likewise.
4231         * config/alpha/alpha.h (MOVE_RATIO): Update.
4232         * config/frv/frv.c (MOVE_RATIO): Update.
4233         * config/spu/spu.h (MOVE_RATIO): Update.
4234         * config/sparc/sparc.h (MOVE_RATIO): Update.
4235         * config/i386/i386.h (MOVE_RATIO, CLEAR_RATIO): Update.
4236         * config/m68hc11/m68hc11.h (MOVE_RATIO): Update.
4237         * config/cris/cris.h (MOVE_RATIO): Update.
4238         * config/mn10300/mn10300.h (MOVE_RATIO): Update.
4239         * config/arm/arm.h (MOVE_RATIO): Update.
4240         * config/pa/pa.md: Update uses of MOVE_RATIO
4241         * config/pa/pa.h (MOVE_RATIO): Update.
4242         * config/mips/mips.h (MOVE_RATIO, MOVE_BY_PIECES,
4243         CLEAR_RATIO, SET_RATIO): Update.
4244         * config/h8300/h8300.h (MOVE_RATIO): Update.
4245         * config/v850/v850.h (MOVE_RATIO): Update.
4246         * config/bfin/bfin.h (MOVE_RATIO): Update.
4247
4248 2008-08-31  Andrey Belevantsev  <abel@ispras.ru>
4249             Dmitry Melnik  <dm@ispras.ru>
4250             Dmitry Zhurikhin  <zhur@ispras.ru>
4251             Alexander Monakov  <amonakov@ispras.ru>
4252             Maxim Kuvyrkov  <maxim@codesourcery.com>
4253
4254         * sel-sched.h, sel-sched-dump.h, sel-sched-ir.h, sel-sched.c,
4255         sel-sched-dump.c, sel-sched-ir.c: New files.
4256         * Makefile.in (OBJS-common): Add selective scheduling object files.
4257         (sel-sched.o, sel-sched-dump.o, sel-sched-ir.o): New entries.
4258         (SEL_SCHED_IR_H, SEL_SCHED_DUMP_H): New entries.
4259         (sched-vis.o): Add dependency on $(INSN_ATTR_H).
4260         * cfghooks.h (get_cfg_hooks, set_cfg_hooks): New prototypes.
4261         * cfghooks.c (get_cfg_hooks, set_cfg_hooks): New functions.
4262         (make_forwarder_block): Update loop latch if we have redirected
4263         the loop latch edge.
4264         * cfgloop.c (get_loop_body_in_custom_order): New function.
4265         * cfgloop.h (LOOPS_HAVE_FALLTHRU_PREHEADERS): New enum field.
4266         (CP_FALLTHRU_PREHEADERS): Likewise.
4267         (get_loop_body_in_custom_order): Declare.
4268         * cfgloopmanip.c (has_preds_from_loop): New.
4269         (create_preheader): Honor CP_FALLTHRU_PREHEADERS.
4270         Assert that the preheader edge will be fall thru when it is set.
4271         * common.opt (fsel-sched-bookkeeping, fsel-sched-pipelining,
4272         fsel-sched-pipelining-outer-loops, fsel-sched-renaming,
4273         fsel-sched-substitution, fselective-scheduling): New flags.
4274         * cse.c (hash_rtx_cb): New.
4275         (hash_rtx): Use it.
4276         * dbgcnt.def (sel_sched_cnt, sel_sched_region_cnt,
4277         sel_sched_insn_cnt): New counters.
4278         * final.c (compute_alignments): Export.  Free dominance
4279         info after loop_optimizer_finalize.
4280         * genattr.c (main): Output maximal_insn_latency prototype.
4281         * genautomata.c (output_default_latencies): New.
4282         Factor its code from ...
4283         (output_internal_insn_latency_func): ... here.
4284         (output_internal_maximal_insn_latency_func): New.
4285         (output_maximal_insn_latency_func): New.
4286         * hard-reg-set.h (UHOST_BITS_PER_WIDE_INT): Define unconditionally.
4287         (struct hard_reg_set_iterator): New.
4288         (hard_reg_set_iter_init, hard_reg_set_iter_set,
4289         hard_reg_set_iter_next): New functions.
4290         (EXECUTE_IF_SET_IN_HARD_REG_SET): New macro.
4291         * lists.c (remove_free_INSN_LIST_node,
4292         remove_free_EXPR_LIST_node): New functions.
4293         * loop-init.c (loop_optimizer_init): When
4294         LOOPS_HAVE_FALLTHRU_PREHEADERS, set CP_FALLTHRU_PREHEADERS when
4295         calling create_preheaders.
4296         (loop_optimizer_finalize): Do not verify flow info after reload.
4297         * recog.c (validate_replace_rtx_1): New parameter simplify.
4298         Default it to true.  Update all uses.  Factor out simplifying
4299         code to ...
4300         (simplify_while_replacing): ... this new function.
4301         (validate_replace_rtx_part,
4302         validate_replace_rtx_part_nosimplify): New.
4303         * recog.h (validate_replace_rtx_part,
4304         validate_replace_rtx_part_nosimplify): Declare.
4305         * rtl.c (rtx_equal_p_cb): New.
4306         (rtx_equal_p): Use it.
4307         * rtl.h (rtx_equal_p_cb, hash_rtx_cb): Declare.
4308         (remove_free_INSN_LIST_NODE, remove_free_EXPR_LIST_node,
4309         debug_bb_n_slim, debug_bb_slim,    print_rtl_slim): Likewise.
4310         * vecprim.h: Add a vector type for unsigned int.
4311         * haifa-sched.c: Include vecprim.h and cfgloop.h.
4312         (issue_rate, sched_verbose_param, note_list, dfa_state_size,
4313         ready_try, cycle_issued_insns, spec_info): Make global.
4314         (readyp): Initialize.
4315         (dfa_lookahead): New global variable.
4316         (old_max_uid, old_last_basic_block): Remove.
4317         (h_i_d): Make it a vector.
4318         (INSN_TICK, INTER_TICK, QUEUE_INDEX, INSN_COST): Make them work
4319         through HID macro.
4320         (after_recovery, adding_bb_to_current_region_p):
4321         New variables to handle correct insertion of the recovery code.
4322         (struct ready_list): Move declaration to sched-int.h.
4323         (rgn_n_insns): Removed.
4324         (rtx_vec_t): Move to sched-int.h.
4325         (find_insn_reg_weight): Remove.
4326         (find_insn_reg_weight1): Rename to find_insn_reg_weight.
4327         (haifa_init_h_i_d, haifa_finish_h_i_d):
4328         New functions to initialize / finalize haifa instruction data.
4329         (extend_h_i_d, init_h_i_d): Rewrite.
4330         (unlink_other_notes): Move logic to add_to_note_list.  Handle
4331         selective scheduler.
4332         (ready_lastpos, ready_element, ready_sort, reemit_notes,
4333         find_fallthru_edge): Make global, remove static prototypes.
4334         (max_issue): Make global.  Add privileged_n and state parameters.  Use
4335         them.
4336         (extend_global, extend_all): Removed.
4337         (init_before_recovery): Add new param.  Fix the handling of the case
4338         when we insert a recovery code before the EXIT which has a predecessor
4339         with a fallthrough edge to it.
4340         (create_recovery_block): Make global.  Rename to
4341         sched_create_recovery_block.  Update.
4342         (change_pattern): Rename to sched_change_pattern.  Make global.
4343         (speculate_insn): Rename to sched_speculate_insn.  Make global.
4344         Split haifa-specific functionality into ...
4345         (haifa_change_pattern): New static function.
4346         (sched_extend_bb): New static function.
4347         (sched_init_bbs): New function.
4348         (current_sched_info): Change type to struct haifa_sched_info.
4349         (insn_cost): Adjust for selective scheduling.
4350         (dep_cost_1): New function.  Move logic from ...
4351         (dep_cost): ... here.
4352         (dep_cost): Use dep_cost_1.
4353         (contributes_to_priority_p): Use sched_deps_info instead of
4354         current_sched_info.
4355         (priority): Adjust to work with selective scheduling.  Process the
4356         corner case when all dependencies don't contribute to priority.
4357         (rank_for_schedule): Use ds_weak instead of dep_weak.
4358         (advance_state): New function.  Move logic from ...
4359         (advance_one_cycle): ... here.
4360         (add_to_note_list, concat_note_lists): New functions.
4361         (rm_other_notes): Make static.  Adjust for selective scheduling.
4362         (remove_notes, restore_other_notes): New functions.
4363         (move_insn): Add two arguments.  Update assert.  Don't call
4364         reemit_notes.
4365         (choose_ready): Remove lookahead variable, use dfa_lookahead.
4366         Remove more_issue, max_points.  Move the code to initialize
4367         max_lookahead_tries to max_issue.
4368         (schedule_block): Remove rgn_n_insns1 parameter.  Don't allocate
4369         ready.  Adjust use of move_insn.  Call restore_other_notes.
4370         (luid): Remove.
4371         (sched_init, sched_finish): Move Haifa-specific initialization/
4372         finalization to ...
4373         (haifa_sched_init, haifa_sched_finish): ... respectively.
4374         New functions.
4375         (setup_sched_dump): New function.
4376         (haifa_init_only_bb): New static function.
4377         (haifa_speculate_insn): New static function.
4378         (try_ready): Use haifa_* instead of speculate_insn and change_pattern.
4379         (extend_ready, extend_all): Remove.
4380         (sched_extend_ready_list, sched_finish_ready_list): New functions.
4381         (create_check_block_twin, add_to_speculative_block): Use
4382         haifa_insns_init instead of extend_global.  Update to use new
4383         initialization functions.  Change parameter.  Factor out code from
4384         create_check_block_twin to ...
4385         (sched_create_recovery_edges) ... this new function.
4386         (add_block): Remove.
4387         (sched_scan_info): New.
4388         (extend_bb): Use sched_scan_info.
4389         (init_bb, extend_insn, init_insn, init_insns_in_bb, sched_scan): New
4390         static functions for walking through scheduling region.
4391         (sched_luids): New vector variable to replace uid_to_luid.
4392         (luids_extend_insn): New function.
4393         (sched_max_luid): New variable.
4394         (luids_init_insn): New function.
4395         (sched_init_luids, sched_finish_luids): New functions.
4396         (insn_luid): New debug function.
4397         (sched_extend_target): New function.
4398         (haifa_init_insn): New static function.
4399         (sched_init_only_bb): New hook.
4400         (sched_split_block): New hook.
4401         (sched_split_block_1): New function.
4402         (sched_create_empty_bb): New hook.
4403         (sched_create_empty_bb_1): New function.
4404         (common_sched_info, ready): New global variables.
4405         (current_sched_info_var): Remove.
4406         (move_block_after_check): Use common_sched_info.
4407         (haifa_luid_for_non_insn): New static function.
4408         (init_before_recovery): Use haifa_init_only_bb instead of add_block.
4409         (increase_insn_priority): New.
4410         * modulo-sched.c: (issue_rate): Remove static declaration.
4411         (sms_sched_info): Change type to haifa_sched_info.
4412         (sms_sched_deps_info, sms_common_sched_info): New variables.
4413         (setup_sched_infos): New.
4414         (sms_schedule): Initialize them.  Call haifa_sched_init/finish.
4415         Do not call regstat_free_calls_crossed.
4416         (sms_print_insn): Use const_rtx.
4417         * params.def (PARAM_MAX_PIPELINE_REGION_BLOCKS,
4418         PARAM_MAX_PIPELINE_REGION_INSNS, PARAM_SELSCHED_MAX_LOOKAHEAD,
4419         PARAM_SELSCHED_MAX_SCHED_TIMES, PARAM_SELSCHED_INSNS_TO_RENAME,
4420         PARAM_SCHED_MEM_TRUE_DEP_COST): New.
4421         * sched-deps.c (sched_deps_info): New.  Update all relevant uses of
4422         current_sched_info to use it.
4423         (enum reg_pending_barrier_mode): Move to sched-int.h.
4424         (h_d_i_d): New variable. Initialize to NULL.
4425         ({true, output, anti, spec, forward}_dependency_cache): Initialize
4426         to NULL.
4427         (estimate_dep_weak): Remove static declaration.
4428         (sched_has_condition_p): New function.  Adjust users of
4429         sched_get_condition to use it instead.
4430         (conditions_mutex_p): Add arguments indicating which conditions are
4431         reversed.  Use them.
4432         (sched_get_condition_with_rev): Rename from sched_get_condition.  Add
4433         argument to indicate whether returned condition is reversed.  Do not
4434         generate new rtx when condition should be reversed; indicate it by
4435         setting new argument instead.
4436         (add_dependence_list_and_free): Add deps parameter.
4437         Update all users.  Do not free dependence list when
4438         deps context is readonly.
4439         (add_insn_mem_dependence, flush_pending_lists): Adjust for readonly
4440         contexts.
4441         (remove_from_dependence_list, remove_from_both_dependence_lists): New.
4442         (remove_from_deps): New. Use the above functions.
4443         (cur_insn, can_start_lhs_rhs_p): New static variables.
4444         (add_or_update_back_dep_1): Initialize present_dep_type.
4445         (haifa_start_insn, haifa_finish_insn, haifa_note_reg_set,
4446         haifa_note_reg_clobber, haifa_note_reg_use, haifa_note_mem_dep,
4447         haifa_note_dep): New functions implementing dependence hooks for
4448         the Haifa scheduler.
4449         (note_reg_use, note_reg_set, note_reg_clobber, note_mem_dep,
4450         note_dep): New functions.
4451         (ds_to_dt, extend_deps_reg_info, maybe_extend_reg_info_p): New
4452         functions.
4453         (init_deps): Initialize last_reg_pending_barrier and deps->readonly.
4454         (free_deps): Initialize deps->reg_last.
4455         (sched_analyze_reg, sched_analyze_1, sched_analyze_2,
4456         sched_analyze_insn): Update to use dependency hooks infrastructure
4457         and readonly contexts.
4458         (deps_analyze_insn): New function.  Move part of logic from ...
4459         (sched_analyze): ... here.  Also move some logic to ...
4460         (deps_start_bb): ... here.  New function.
4461         (add_forw_dep, delete_forw_dep): Guard use of INSN_DEP_COUNT with
4462         sel_sched_p.
4463         (sched_deps_init): New function.  Move code from ...
4464         (init_dependency_caches): ... here.  Remove.
4465         (init_deps_data_vector): New.
4466         (sched_deps_finish): New function.  Move code from ...
4467         (free_dependency_caches): ... here.  Remove.
4468         (init_deps_global, finish_deps_global): Adjust for use with
4469         selective scheduling.
4470         (get_dep_weak): Move logic to ...
4471         (get_dep_weak_1): New function.
4472         (ds_merge): Move logic to ...
4473         (ds_merge_1): New static function.
4474         (ds_full_merge, ds_max_merge, ds_get_speculation_types): New functions.
4475         (ds_get_max_dep_weak): New function.
4476         * sched-ebb.c (sched_n_insns): Rename to sched_rgn_n_insns.
4477         (n_insns): Rename to rgn_n_insns.
4478         (debug_ebb_dependencies): New function.
4479         (init_ready_list): Use it.
4480         (begin_schedule_ready): Use sched_init_only_bb.
4481         (ebb_print_insn): Indicate when an insn starts a new cycle.
4482         (contributes_to_priority, compute_jump_reg_dependencies,
4483         add_remove_insn, fix_recovery_cfg): Add ebb_ prefix to function names.
4484         (add_block1): Remove to ebb_add_block.
4485         (ebb_sched_deps_info, ebb_common_sched_info): New variables.
4486         (schedule_ebb): Initialize them.  Use remove_notes instead of
4487         rm_other_notes.  Use haifa_local_init/finish.
4488         (schedule_ebbs): Use haifa_sched_init/finish.
4489         * sched-int.h: Include vecprim.h, remove rtl.h.
4490         (struct ready_list): Delete declaration.
4491         (sched_verbose_param, enum sched_pass_id_t,
4492         bb_vec_t, insn_vec_t, rtx_vec_t): New.
4493         (struct sched_scan_info_def): New structure.
4494         (sched_scan_info, sched_scan, sched_init_bbs,
4495         sched_init_luids, sched_finish_luids, sched_extend_target,
4496         haifa_init_h_i_d, haifa_finish_h_i_d): Declare.
4497         (struct common_sched_info_def): New.
4498         (common_sched_info, haifa_common_sched_info,
4499         sched_emulate_haifa_p): Declare.
4500         (sel_sched_p): New.
4501         (sched_luids): Declare.
4502         (INSN_LUID, LUID_BY_UID, SET_INSN_LUID): Declare.
4503         (sched_max_luid, insn_luid): Declare.
4504         (note_list, remove_notes, restore_other_notes, bb_note): Declare.
4505         (sched_insns_init, sched_insns_finish, xrecalloc, reemit_notes,
4506         print_insn, print_pattern, print_value, haifa_classify_insn,
4507         sel_find_rgns, sel_mark_hard_insn, dfa_state_size, advance_state,
4508         setup_sched_dump, sched_init, sched_finish,
4509         sel_insn_is_speculation_check): Export.
4510         (struct ready_list): Move from haifa-sched.c.
4511         (ready_try, ready, max_issue): Export.
4512         (ebb_compute_jump_reg_dependencies, find_fallthru_edge,
4513         sched_init_only_bb, sched_split_block, sched_split_block_1,
4514         sched_create_empty_bb, sched_create_empty_bb_1,
4515         sched_create_recovery_block, sched_create_recovery_edges): Export.
4516         (enum reg_pending_barrier_mode): Export.
4517         (struct deps): New fields `last_reg_pending_barrier' and `readonly'.
4518         (deps_t): New.
4519         (struct sched_info): Rename to haifa_sched_info.  Use const_rtx for
4520         print_insn field.  Move add_block and fix_recovery_cfg to
4521         common_sched_info_def.  Move compute_jump_reg_dependencies,
4522         use_cselib  ...
4523         (struct sched_deps_info_def): ... this new structure.
4524         (sched_deps_info): Declare.
4525         (struct spec_info_def): Remove weakness_cutoff, add
4526         data_weakness_cutoff and control_weakness_cutoff.
4527         (spec_info): Declare.
4528         (struct _haifa_deps_insn_data): Split from haifa_insn_data.  Add
4529         dep_count field.
4530         (struct haifa_insn_data): Rename to struct _haifa_insn_data.
4531         (haifa_insn_data_def, haifa_insn_data_t): New typedefs.
4532         (current_sched_info): Change type to struct haifa_sched_info.
4533         (haifa_deps_insn_data_def, haifa_deps_insn_data_t): New typedefs.
4534         (h_d_i_d): New variable.
4535         (HDID): New accessor macro.
4536         (h_i_d): Change type to VEC (haifa_insn_data_def, heap) *.
4537         (HID): New accessor macro.  Rewrite h_i_d accessor macros through HID
4538         and HDID.
4539         (IS_SPECULATION_CHECK_P): Update for selective scheduler.
4540         (enum SCHED_FLAGS): Update for selective scheduler.
4541         (enum SPEC_SCHED_FLAGS): New flag SEL_SCHED_SPEC_DONT_CHECK_CONTROL.
4542         (init_dependency_caches, free_dependency_caches): Delete declarations.
4543         (deps_analyze_insn, remove_from_deps, get_dep_weak_1,
4544         estimate_dep_weak, ds_full_merge, ds_max_merge, ds_weak,
4545         ds_get_speculation_types, ds_get_max_dep_weak, sched_deps_init,
4546         sched_deps_finish, haifa_note_reg_set, haifa_note_reg_use,
4547         haifa_note_reg_clobber, maybe_extend_reg_info_p, deps_start_bb,
4548         ds_to_dt): Export.
4549         (rm_other_notes): Delete declaration.
4550         (schedule_block): Remove one argument.
4551         (cycle_issued_insns, issue_rate, dfa_lookahead, ready_sort,
4552         ready_element, ready_lastpos, sched_extend_ready_list,
4553         sched_finish_ready_list, sched_change_pattern, sched_speculate_insn,
4554         concat_note_lists): Export.
4555         (struct region): Move from sched-rgn.h.
4556         (nr_regions, rgn_table, rgn_bb_table, block_to_bb, containing_rgn,
4557         RGN_NR_BLOCKS, RGN_BLOCKS, RGN_DONT_CALC_DEPS, RGN_HAS_REAL_EBB,
4558         BLOCK_TO_BB, CONTAINING_RGN): Export.
4559         (ebb_head, BB_TO_BLOCK, EBB_FIRST_BB, EBB_LAST_BB, INSN_BB): Likewise.
4560         (current_nr_blocks, current_blocks, target_bb): Likewise.
4561         (dep_cost_1, sched_is_disabled_for_current_region_p, sched_rgn_init,
4562         sched_rgn_finish, rgn_setup_region, sched_rgn_compute_dependencies,
4563         sched_rgn_local_init, extend_regions,
4564         rgn_make_new_region_out_of_new_block, compute_priorities,
4565         debug_rgn_dependencies, free_rgn_deps, contributes_to_priority,
4566         extend_rgns, deps_join rgn_setup_common_sched_info,
4567         rgn_setup_sched_infos, debug_regions, debug_region, dump_region_dot,
4568         dump_region_dot_file, haifa_sched_init, haifa_sched_finish): Export.
4569         (get_rgn_sched_max_insns_priority, sel_add_to_insn_priority,
4570         increase_insn_priority): Likewise.
4571         * sched-rgn.c: Include sel-sched.h.
4572         (ref_counts): New static variable.  Use it ...
4573         (INSN_REF_COUNT): ... here.  Rewrite and move closer to uses.
4574         (FED_BY_SPEC_LOAD, IS_LOAD_INSN): Rewrite to use HID accessor macro.
4575         (sched_is_disabled_for_current_region_p): Delete static declaration.
4576         (struct region): Move to sched-int.h.
4577         (nr_regions, rgn_table, rgn_bb_table, block_to_bb, containing_rgn,
4578         ebb_head): Define and initialize.
4579         (RGN_NR_BLOCKS, RGN_BLOCKS, RGN_DONT_CALC_DEPS, RGN_HAS_REAL_EBB,
4580         BLOCK_TO_BB, CONTAINING_RGN, debug_regions, extend_regions,
4581         BB_TO_BLOCK, EBB_FIRST_BB, EBB_LAST_BB): Move to
4582         sched-int.h.
4583         (find_single_block_region): Add new argument to indicate that EBB
4584         regions should be constructed.
4585         (debug_live): Delete declaration.
4586         (current_nr_blocks, current_blocks, target_bb):
4587         Remove static qualifiers.
4588         (compute_dom_prob_ps, check_live, update_live, set_spec_fed): Delete
4589         declaration.
4590         (init_regions): Delete declaration.
4591         (debug_region, bb_in_region_p, dump_region_dot_file, dump_region_dot,
4592         rgn_estimate_number_of_insns): New.
4593         (too_large): Use estimate_number_of_insns.
4594         (haifa_find_rgns): New. Move the code from ...
4595         (find_rgns): ... here.  Call either sel_find_rgns or haifa_find_rgns.
4596         (free_trg_info): New.
4597         (compute_trg_info): Allocate candidate tables here instead of ...
4598         (init_ready_list): ... here.
4599         (rgn_print_insn): Use const_rtx.
4600         (contributes_to_priority, extend_regions): Delete static declaration.
4601         (add_remove_insn, fix_recovery_cfg): Add rgn_ to function names.
4602         (add_block1): Rename to rgn_add_block.
4603         (debug_rgn_dependencies): Delete static qualifier.
4604         (new_ready): Use sched_deps_info.  Simplify.
4605         (rgn_common_sched_info, rgn_const_sched_deps_info,
4606         rgn_const_sel_sched_deps_info, rgn_sched_deps_info, rgn_sched_info):
4607         New.
4608         (region_sched_info): Rename to rgn_const_sched_info.
4609         (deps_join): New, extracted from ...
4610         (propagate_deps): ... here.
4611         (compute_block_dependences, debug_dependencies): Update for selective
4612         scheduling.
4613         (free_rgn_deps, compute_priorities): New functions.
4614         (sched_rgn_init, sched_rgn_finish, rgn_setup_region,
4615         sched_rgn_compute_dependencies): New functions.
4616         (schedule_region): Use them.
4617         (sched_rgn_local_init, sched_rgn_local_free, sched_rgn_local_finish,
4618         rgn_setup_common_sched_info, rgn_setup_sched_infos):
4619         New functions.
4620         (schedule_insns): Call new functions that were split out.
4621         (rgn_make_new_region_out_of_new_block): New.
4622         (get_rgn_sched_max_insns_priority): New.
4623         (rest_of_handle_sched, rest_of_handle_sched2): Call selective
4624         scheduling when appropriate.
4625         * sched-vis.c: Include insn-attr.h.
4626         (print_value, print_pattern): Make global.
4627         (print_rtl_slim, debug_bb_slim, debug_bb_n_slim): New functions.
4628         * target-def.h (TARGET_SCHED_ADJUST_COST_2,
4629         TARGET_SCHED_ALLOC_SCHED_CONTEXT, TARGET_SCHED_INIT_SCHED_CONTEXT,
4630         TARGET_SCHED_SET_SCHED_CONTEXT, TARGET_SCHED_CLEAR_SCHED_CONTEXT,
4631         TARGET_SCHED_FREE_SCHED_CONTEXT, TARGET_SCHED_GET_INSN_CHECKED_DS,
4632         TARGET_SCHED_GET_INSN_SPEC_DS, TARGET_SCHED_SKIP_RTX_P): New target
4633         hooks.  Initialize them to 0.
4634         (TARGET_SCHED_GEN_CHECK): Rename to TARGET_SCHED_GEN_SPEC_CHECK.
4635         * target.h (struct gcc_target): Add them.  Rename gen_check field to
4636         gen_spec_check.
4637         * flags.h (sel_sched_switch_set): Declare.
4638         * opts.c (sel_sched_switch_set): New variable.
4639         (decode_options): Unset flag_sel_sched_pipelining_outer_loops if
4640         pipelining is disabled from command line.
4641         (common_handle_option): Record whether selective scheduling is
4642         requested from command line.
4643         * doc/invoke.texi: Document new flags and parameters.
4644         * doc/tm.texi: Document new target hooks.
4645         * config/ia64/ia64.c (TARGET_SCHED_GEN_SPEC_CHECK): Define to
4646         ia64_gen_check.
4647         (dfa_state_size): Do not declare locally.
4648         * config/ia64/ia64.opt (msched-ar-data-spec): Default to 0.
4649         * config/rs6000/rs6000.c (rs6000_init_sched_context,
4650         rs6000_alloc_sched_context, rs6000_set_sched_context,
4651         rs6000_free_sched_context): New functions.
4652         (struct _rs6000_sched_context): New.
4653         (rs6000_sched_reorder2): Do not modify INSN_PRIORITY for selective
4654         scheduling.
4655         (rs6000_sched_finish): Do not run for selective scheduling.
4656
4657 2008-08-31  Jan Hubicka  <jh@suse.cz>
4658
4659         * frv.c (frv_rtx_costs): Update forward declaration.
4660         * spu.c (spu_rtx_costs): Likewise.
4661         * pdp11.c: Include df.h
4662         (pdp11_output_function_epilogue): Use df_set_regs_ever_live.
4663         * m68hc11.c (m68hc11_gen_highpart): Fix call of gen_rtx_SUBREG.
4664         (m68hc11_rtx_costs_1): Fix call of rtx_cost.
4665         * iq2000.c (iq2000_address_cost): Add speed argument.
4666         (iq2000_rtx_costs): Likewise.
4667         * mn10300.c (mn10300_address_cost_1): Remove speed argument;
4668         update call of mn10300_address_cost.
4669         * mcore.c: Include df.h
4670         (mcore_rtx_costs): Update prototype.
4671         * score3.c: Include df.h
4672         (score3_rtx_costs): Remove speed argument.
4673         * score7.c: Include df.h
4674         (score7_address_cost): Remove speed argument.
4675         * score-protos.h (score_address_cost): Update prototype.
4676         * score.c: Include df.h
4677         (score_rtx_costs): Update call of costs functions.
4678         * v850.c (v850_rtx_costs): Add bool argument.
4679
4680 2008-08-31  Hans-Peter Nilsson  <hp@axis.com>
4681
4682         * config/cris/cris.c (cris_rtx_costs): Correct call to rtx_costs.
4683
4684 2008-08-31  Aaron W. LaFramboise  <aaronavay62@aaronwl.com>
4685
4686         * gthr-win32.h (__gthread_setspecific): Use CONST_CAST2.
4687         * config/i386/gthr-win32.c (__gthread_setspecific): Same.
4688
4689 2008-08-31  Aaron W. LaFramboise  <aaronavay62@aaronwl.com>
4690
4691         * mkmap-flat.awk: Add option pe_dll.
4692         * config/i386/t-cygming (SHLIB_LINK): Support building libgcc_s.
4693         * config/i386/t-cygwin (SHLIB_LC): Add.
4694         * config/i386/t-mingw32 (SHLIB_LC): Add.
4695         * config/i386/mingw32.h (SHARED_LIBGCC_UNDEFS_SPEC): New.
4696         (SUBTARGET_EXTRA_SPECS): Use SHARED_LIBGCC_UNDEFS_SPEC.
4697         (LINK_SPEC): Support libgcc_s.
4698         (LIBGCC_SPEC): Support libgcc_s.
4699         (LIBGCC_SONAME): New.
4700
4701 2008-08-31  Jan Hubicka  <jh@suse.cz>
4702
4703         * predict.c (maybe_hot_bb_p, maybe_hot_edge_p): Previous commit
4704         mistakely had old version of patch.
4705
4706         * ipa-cp.c (ipcp_need_original_clone_p): Remove.
4707         (ipcp_estimate_growth): New.
4708         (ipcp_insert_stage): Use ipcp_estimate_growth.
4709         * profile.c (branch_prob): When reading failed, do not consider
4710         profile as read.
4711
4712 2008-08-31  Jan Hubicka  <jh@suse.cz>
4713
4714         * tree-ssa-loop-unswitch.c (tree_unswitch_single_loop): Check that
4715         loop is optimized for speed.
4716
4717 2008-08-31  Richard Guenther  <rguenther@suse.de>
4718
4719         PR middle-end/37289
4720         * fold-const.c (fold_binary): Retain conversions in folding
4721         ~A + 1 to -A.
4722
4723 2008-08-31  Jan Hubicka  <jh@suse.cz>
4724
4725         * postreload-gcse.c (eliminate_partially_redundant_loads):
4726         Use optimize_bb_for_size_p.
4727         * predict.c (maybe_hot_frequency_p): Make inline.
4728         (maybe_hot_count_p): Break out from ...
4729         (maybe_hot_bb_p): ... this one.
4730         (maybe_hot_edge_p): Simplify.
4731         * basic-block.h (probably_cold_bb_p): Remove.
4732
4733 2008-08-31  Jakub Jelinek  <jakub@redhat.com>
4734
4735         PR target/37168
4736         * config/rs6000/rs6000-protos.h (const_vector_elt_as_int): Add
4737         prototype.
4738         * config/rs6000/rs6000.c (const_vector_elt_as_int): No longer static.
4739         * config/rs6000/altivec.md (easy_vector_constant_add_self splitter):
4740         Also split V4SFmode.
4741         * config/rs6000/predicates.md (easy_vector_constant_add_self): Handle
4742         vector float modes.
4743
4744 2008-08-31  Jan Hubicka  <jh@suse.cz>
4745
4746         * predict.c (PROB_VERY_LIKELY): Make small enough so things
4747         become cold.
4748         * predict.def (PRED_NORETURN_CALL, PRED_COLD_CALL): Use it.
4749
4750 2008-08-31  Jakub Jelinek  <jakub@redhat.com>
4751
4752         PR debug/37287
4753         * dwarf2out.c (gen_namespace_die): For DECL_EXTERNAL modules don't
4754         add source coords.
4755
4756         * dwarf2out.c (native_encode_initializer): Subtract min_index for
4757         non-range array index.  Handle VIEW_CONVERT_EXPR and NON_LVALUE_EXPR.
4758
4759 2008-08-31  Jan Hubicka  <jh@suse.cz>
4760
4761         * sparc.h (BRANCH_COST): Fix macro definition.
4762         * avr.c (avr_operand_rtx_cost): Add speed argument.
4763         (avr_rtx_costs): Update calls of avr_operand_rtx_cost.
4764
4765 2008-08-31  Richard Guenther  <rguenther@suse.de>
4766
4767         * tree-cfg.c (verify_types_in_gimple_assign): Dump mismatched
4768         types instead of operands.  Re-instantiate verifying of
4769         binary expression operands.
4770
4771 2008-08-30  Jan Hubicka  <jh@suse.cz>
4772
4773         * fwprop.c (should_replace_address): Add speed attribute.
4774         (PR_OPTIMIZE_FOR_SPEED): New flag.
4775         (propagate_rtx_1): Use it.
4776         (propagate_rtx): Set it.
4777         (try_fwprop_subst): Update call of rtx_costs.
4778         (forward_propagate_and_simplify): LIkewise.
4779         * hooks.c (hook_int_rtx_bool_0): New
4780         (hook_bool_rtx_int_int_intp_false): Replace by ...
4781         (hook_bool_rtx_int_int_intp_bool_false): .. thisone.
4782         * hooks.h (hook_int_rtx_bool_0): New
4783         (hook_bool_rtx_int_int_intp_false): Replace by ...
4784         (hook_bool_rtx_int_int_intp_bool_false): .. thisone.
4785         * optabs.c (avoid_expensive_constant): UPdate call of rtx_cost.
4786         (prepare_cmp_insn): UPdate call of rtx_cost.
4787         * postreload.c (reload_cse_simplify_set): Update call of rtx_cost.
4788         (reload_cse_simplify_operands): Update call of rtx_cost.
4789         (reload_cse_move2add): call of rtx_cost.
4790         * target.h (struct gcc_target): Update rtx_costs and address_costs.
4791         * rtlanal.c (rtx_cost): Add speed argument.
4792         (address_cost): Add speed argument
4793         (default_address_cost): Likewise.
4794         (insn_rtx_cost): Likewise.
4795         * cfgloopanal.c (seq_cost): Add speed argument.
4796         (target_reg_cost, target_spill_cost): Turn to array.
4797         (init_set_costs): Update for speed.
4798         (estimate_reg_pressure_cost): Add speed argument.
4799         * auto-inc-dec.c (attempt_change): Update call of rtx_cost.
4800         * dojump.c (prefer_and_bit_test): UPdate call of rtx_cost.
4801         * tree-ssa-loop-ivopts.c (struct ivopts_data): New field speed.
4802         (seq_cost): Add speed argument.
4803         (computation_cost): Add speed arugment.
4804         (add_cost, multiply_by_const, get_address_cost): add speed argument.
4805         (force_expr_to_var_cost): Update for profile info.
4806         (force_var_cost): Likewise.
4807         (split_address_cost): Likewise.
4808         (ptr_difference_cost): Likewise.
4809         (difference_cost): Likewise.
4810         (get_computation_cost_at): Likewise.
4811         (determine_iv_cost): Likewise.
4812         (ivopts_global_cost_for_size): Likewise.
4813         (rewrite_use_address): Likewise.
4814         (tree_ssa_iv_optimize_loop): Initialize speed field.
4815         * cse.c (optimize_this_for_speed_p): New static var.
4816         (notreg_cost): Update call of rtx_cost.
4817         (cse_extended_basic_block): set optimize_this_for_speed_p.
4818         * ifcvt.c (cheap_bb_rtx_cost_p): Update call of rtx_cost.
4819         (noce_try_cmove_arith): Likewise.
4820         (noce_try_sign_mask): LIkewise.
4821         * expr.c (compress_float_constant): Update rtx_cost calls.
4822         * tree-ssa-address.c (most_expensive_mult_to_index): Add speed
4823         argument.
4824         (addr_to_parts): Likewise.
4825         (create_mem_ref): Likewise.
4826         * dse.c (find_shift_sequence): Add speed argument.
4827         (replace_read): Update call.
4828         * calls.c (precompute_register_parameters): Update call of rtx_cost.
4829         * expmed.c (sdiv_pow2_cheap, smod_pow2_cheap, zero_cost, add_cost,
4830         * neg_cost, shift_cost, shiftadd_cost,
4831         shiftsub_cost, mul_cost, sdiv_cost, udiv_cost ,mul_widen_cost,
4832         mul_highpart_cost): Increase dimension.
4833         (init_expmed): Initialize for both size and speed.
4834         (expand_shift): Use profile.
4835         (synth_mult): Use profile.
4836         (choose_mult_variant): Use profile.
4837         (expand_mult): Use profile.
4838         (expand_mult_highpart_optab): Use profile.
4839         (expand_mult_highpart): Use profile.
4840         (expand_smod_pow2): Use profile.
4841         (expand_divmod): Use profile.
4842         * simplify-rtx.c (simplify_binary_operation_1): Update call of
4843         rtx_cost.
4844         * loop-invariant.c (create_new_invariant): Use profile.
4845         (gain_for_invariant): Add speed parameter.
4846         (best_gain_for_invariant): Likewise.
4847         (find_invariants_to_move): Likewise.
4848         (move_single_loop_invariants): Set it.
4849         * target-def.h (TARGET_RTX_COSTS): Use hook.
4850         * rtl.h (rtx_cost, address_cost, insn_rtx_cost): Update prototpe.
4851         (optimize_insn_for_size_p, optimize_insn_for_speed_p): Declare.
4852         * output.h (default_address_cost): Update prototype.
4853         * combine.c (optimize_this_for_speed_p): New static var.
4854         (combine_validate_cost): Update call of rtx_cost.
4855         (combine_instructions): Set optimize_this_for_speed_p.
4856         (expand_compound_operation): Update call of rtx_cost.
4857         (make_extraction):Update call of rtx_cost.
4858         (force_to_mode):Update call of rtx_cost.
4859         (distribute_and_simplify_rtx):Update call of rtx_cost.
4860         * cfgloop.h (target_reg_cost, target_spill_cost): Turn to array.
4861         (estimate_reg_pressure_cost): Update prototype.
4862         * tree-flow.h (multiply_by_cost, create_mem_ref): Update prototype.
4863         * basic-block.h (optimize_insn_for_size_p, optimize_insn_for_speed_p):
4864         Remove.
4865         * config/alpha/alpha.c (alpha_rtx_costs): Update.
4866         (alpha_rtx_costs): Update.
4867         * config/frv/frv.c (frv_rtx_costs): Update.
4868         * config/s390/s390.c (s390_rtx_costs): Update.
4869         * config/m32c/m32c.c (m32c_memory_move_cost): Update.
4870         (m32c_rtx_costs): Update.
4871         * config/spu/spu.c (TARGET_ADDRESS_COST): Upate.
4872         (spu_rtx_costs): Update.
4873         * config/sparc/sparc.c (sparc_rtx_costs): Update.
4874         * config/m32r/m32r.c (m32r_rtx_costs): Update.
4875         * config/i386/i386.c (:ix86_address_cost): Update.
4876         (ix86_rtx_costs): Update.
4877         * config/sh/sh.c (sh_rtx_costs, sh_address_cost): Update.
4878         * config/pdp11/pdp11.c (pdp11_rtx_costs): Update.
4879         * config/avr/avr.c (avr_rtx_costs, avr_address_cost): Update.
4880         * config/crx/crx.c (crx_address_cost): Update.
4881         * config/xtensa/xtensa.c (xtensa_rtx_costs): Update.
4882         * config/stormy16/stormy16.c
4883         (xstormy16_address_cost, xstormy16_rtx_costs): Update.
4884         * config/m68hc11/m68hc11.c
4885         (m68hc11_address_cost, m68hc11_rtx_costs): Update.
4886         * config/cris/cris.c (cris_rtx_costs, cris_address_cost): Update.
4887         * config/iq2000/iq2000.c (iq2000_rtx_costs, iq2000_address_cost):
4888         Update.
4889         * config/mn10300/mn10300.c (mn10300_address_cost, mn10300_rtx_costs):
4890         Update
4891         * config/ia64/ia64.c (ia64_rtx_costs): Update.
4892         * config/m68k/m68k.c (m68k_rtx_costs): Update.
4893         * config/rs6000/rs6000.c (rs6000_rtx_costs): Update.
4894         * config/arc/arc.c (arc_rtx_costs, arc_address_cost): Update.
4895         * config/mcore/mcore.c (TARGET_ADDRESS_COST): Update.
4896         (mcore_rtx_costs): update.
4897         * config/score/score3.c (score3_rtx_costs): Update.
4898         * config/score/score7.c (score7_rtx_costs): Update.
4899         * config/score/score3.h (score3_rtx_costs):Update.
4900         * config/score/score7.h (score7_rtx_costs): Update.
4901         * config/score/score.c (score_rtx_costs): Update.
4902         * config/arm/arm.c (arm_address_cost): Update.
4903         (arm_rtx_costs_1): Update.
4904         (arm_rtx_costs_1): Update.
4905         (arm_size_rtx_costs): Update.
4906         (arm_size_rtx_costs): Update.
4907         (arm_size_rtx_costs): Update.
4908         (arm_xscale_rtx_costs): Update.
4909         (arm_thumb_address_cost): Update.
4910         * config/pa/pa.c (hppa_address_cost): Update.
4911         * config/mips/mips.c (mips_rtx_costs): Update.
4912         * config/vax/vax.c (vax_address_cost): Update.
4913         * config/h8300/h8300.c (h8300_shift_costs): Update.
4914         (h8300_rtx_costs): Update.
4915         * config/v850/v850.c (TARGET_ADDRESS_COST): Update.
4916         (v850_rtx_costs): Update.
4917         * config/mmix/mmix.c (mmix_rtx_costs, mmix_rtx_costs): Update.
4918         * config/bfin/bfin.c
4919         (bfin_address_cost): Update.
4920         (bfin_rtx_costs): Update.
4921         * stmt.c (lshift_cheap_p): Update.
4922
4923 2008-08-30  Andrew Pinski  <andrew_pinski@playstation.sony.com>
4924
4925         PR middle-end/36444
4926         * expmed.c (extract_bit_field_1): Check the mode size to make
4927         sure the vector modes have the same size.
4928
4929 2008-08-29  Michael Meissner  <gnu@the-meissners.org>
4930
4931         * dojump.c (top level): Include basic-block.h to declare
4932         optimize_insn_for_speed_p
4933
4934         * Makefile.in (dodump.h): Add $(BASIC_BLOCK_H) dependency.
4935
4936         * opts.h (CL_SAVE): New option class for marking options that are
4937         target specific options usable in the target attribute.
4938         (CL_MIN_OPTION_CLASS): CL_SAVE is now the minimum option.
4939
4940         * opt-functions.awk (switch_flags): Add CL_SAVE flag so backends
4941         can easily find the target specific options that are safe to use
4942         in the attribute or pragma.
4943
4944         * attribs.c (decl_attributes): Change #pragma GCC option to
4945         #pragma GCC target, and attribute((option(...))) to
4946         attribute((target(...))).
4947
4948         * doc/extend.texi (target attribute): Change from option
4949         attribute.  Delete push/pop/reset.
4950         (#pragma GCC target): Change from #pragma GCC option.  Delete
4951         push/pop/reset.
4952         (#pragma GCC push_options): Document new pragma.
4953         (#pragma GCC pop_options): Document new pragma.
4954         (#pragma GCC reset_options): Document new pragma.
4955
4956         * targhooks.c (default_target_option_valid_attribute_p): Add
4957         warning about port not supporting target attributes.
4958         (default_target_option_pragma_parse): New function, warn about
4959         #pragma GCC target not being supported.
4960
4961         * targhooks.h (default_target_option_pragma_parse): Add
4962         declaration.
4963
4964         * tree.h (TI_CURRENT_TARGET_PRAGMA): Rename from
4965         TI_CURRENT_OPTION_PRAGMA.
4966         (current_target_pragma): Rename from current_option_pragma.
4967
4968         * target.h: (struct target_option): Delete booleans for changing
4969         the optimization level on hot/cold functions.  Change signature of
4970         pragma_parse hook to take a second tree.
4971
4972         * c-tree.h (c_builtin_function_ext_scope): Add declaration.
4973
4974         * c-decl.c (c_builtin_function_ext_scope): New function, guarantee
4975         that the declaration is done at global scope.
4976
4977         * langhooks.c (add_builtin_function_common): Move most of the code
4978         from add_builtin_function here, calling the hook passed in.
4979         (add_builtin_function): Call add_builtin_function_common with
4980         standard builtin hook.
4981         (add_builtin_function_ext_scope): New function to add builtins to
4982         global scope.
4983
4984         * langhooks.h (struct lang_hooks): Add builtin_function_ext_scope
4985         hook.
4986         (add_builtin_function_ext_scope): Add declaration.
4987
4988         * c-pragma.c (handle_pragma_target): Rename from
4989         handle_pragma_option, #pragma GCC option is now #pragma GCC
4990         target.  Move warning about port not supporting target options to
4991         default pragma parse hook.  Remove push/pop/reset from this
4992         pragma.
4993         (handle_pragma_optimize): Remove push/pop/reset from this pragma.
4994         (option_stack): Delete static variable.
4995         (optimize_stack): Ditto.
4996         (optons_stack): New stack of saved target and optimization
4997         options.
4998         (handle_pragma_push_options): New function to handle pushing both
4999         target and optimization options.
5000         (handle_pragma_pop_options): New function to handle popping both
5001         target and optimization options.
5002         (handle_pragma_reset_options): New function to handle resetting
5003         both target and optimization options to their initial state.
5004         (init_pragma): Rename handle_pragma_option to
5005         handle_pragma_target.  Add support for push_options, pop_options,
5006         and reset_options pragmas.
5007
5008         * target-def.h (TARGET_OPTION_PRAGMA_PARSE): Change default to
5009         default_target_option_pragma_parse.
5010         (TARGET_OPTION_VALID_ATTRIBUTE_P): Change default to
5011         default_target_option_valid_attribute_p.
5012         (TARGET_OPTION_COLD_ATTRIBUTE_SETS_OPTIMIZATION): Delete.
5013         (TARGET_OPTION_HOT_ATTRIBUTE_SETS_OPTIMIZATION): Ditto.
5014         (TARGET_OPTION_HOOKS): Delete the fields for whether to change
5015         optimization level on hot/cold functions.
5016
5017         * tree-inline.c (tree_can_inline_p): Disable suppressing inlining
5018         if the caller and callee have different optimization levels.
5019
5020         * c-common.c (handle_target_attribute): Rename from
5021         handle_option_attribute, attribute((option(...))) is now
5022         attribute((target(...))).  Move warning if the port does not
5023         support target attributes to the default hook.
5024         (handle_hot_attribute): Delete code to change the optimization
5025         level of hot functions.
5026         (handle_cold_attribute): Ditto.
5027
5028         * config/i386/i386-c.c (ix86_pragma_target_parse): Take a second
5029         argument that is the binary tree options to use if there are no
5030         arguments.  Call ix86_valid_target_attribute_tree instead of
5031         ix86_valid_option_attribute_tree.
5032         (ix86_pragma_target_parse): Rename from ix86_pragma_option_parse.
5033         (ix86_register_pragmas): Use ix86_pragma_target_parse instead of
5034         ix86_pragma_option_parse.
5035
5036         * config/i386/i386-protos.h (ix86_valid_target_attribute_tree):
5037         Rename from ix86_valid_option_attribute_tree.
5038
5039         * config/i386/i386.c (ix86_add_new_builtins): New function to add
5040         new builtins when the ISA changes.
5041         (ix86_valid_target_attribute_tree): Rename from
5042         ix86_valid_option_attribute_tree.  Change callers.  If the
5043         function specified optimization options, use those as the starting
5044         point before setting up the target attributes.  If the
5045         optimization options were changed in the course of setting the
5046         target attributes, record the new optimization options.
5047         (ix86_valid_target_attribute_tree_inner_p): Rename from
5048         ix86_valid_option_attribute_tree_inner_p.  Change callers.  Call
5049         ix86_add_new_builtins if the ISA changed.
5050         (ix86_valid_target_attribute_p): Rename from
5051         ix86_valid_option_attribute_p.  Change callers.
5052         (enum ix86_builtins): Add IX86_BUILTIN_PCMOV to allow both
5053         __builtin_ia32_pcmov and __builtin_ia32_pcmov_v2di to be declared
5054         as delayed builtin functions.
5055         (struct builtin_isa): New structure to record builtin functions
5056         that should be delayed until the ISA for that function is used.
5057         (ix86_builtins_isa): Change from int to struct to track builtin
5058         functions we want to declare at some point.
5059         (def_builtin): If the front end can delay defining the builtin
5060         functions, don't create builtins for ISAs not part of the default
5061         options.
5062         (def_builtin_const): Ditto.
5063         (bdesc_multi_arg): Declare __builtin_ia32_pcmov and
5064         __builtin_ia32_pcmov_v2di to be different builtin functions.
5065         (ix86_expand_builtin): Changes due to ix86_builtins_isa now being
5066         a structure instead of an int.
5067         (TARGET_OPTION_VALID_ATTRIBUTE_P): Use
5068         ix86_valid_target_attribute_p, not ix86_valid_option_attribute_p.
5069         (TARGET_OPTION_COLD_ATTRIBUTE_SETS_OPTIMIZATION): Delete.
5070         (TARGET_OPTION_HOT_ATTRIBUTE_SETS_OPTIMIZATION): Ditto.
5071
5072         * config/ia64/ia64.h
5073         (TARGET_OPTION_COLD_ATTRIBUTE_SETS_OPTIMIZATION): Delete.
5074         (TARGET_OPTION_HOT_ATTRIBUTE_SETS_OPTIMIZATION): Ditto.
5075
5076         * langhooks-def.h (LANG_HOOKS_BUILTIN_FUNCTION_EXT_SCOPE): New
5077         hook, default to being the same as LANG_HOOKS_BUILTIN_FUNCTION.
5078         (LANG_HOOKS_INITIALIZER): Add
5079         LANG_HOOKS_BUILTIN_FUNCTION_EXT_SCOPE hook.
5080
5081 2008-08-30  Kaz Kojima  <kkojima@gcc.gnu.org>
5082
5083         PR target/37270
5084         * config/sh/sh.h (LEGITIMIZE_RELOAD_ADDRESS): Generate
5085         the reload address with the index register for SFmode
5086         access with a displacement.
5087
5088 2008-08-30  Jan Hubicka  <jh@suse.cz>
5089
5090         * optabs.c (expand_abs_nojump): Update BRANCH_COST call.
5091         * fold-cost.c (LOGICAL_OP_NON_SHORT_CIRCUIT, fold_truthop): Likewise.
5092         * dojump.c (do_jump): Likewise.
5093         * ifcvt.c (MAX_CONDITIONAL_EXECUTE): Likewise.
5094         (note-if_info): Add BRANCH_COST.
5095         (noce_try_store_flag_constants, noce_try_addcc,
5096         noce_try_store_flag_mask, noce_try_cmove_arith, noce_try_cmove_arith,
5097         noce_try_cmove_arith, noce_find_if_block, find_if_case_1,
5098         find_if_case_2): Use computed branch cost.
5099         * expr.h (BRANCH_COST): Update default.
5100         * predict.c (predictable_edge_p): New function.
5101         * expmed.c (expand_smod_pow2, expand_sdiv_pow2, emit_store_flag):
5102         Update BRANCH_COST call.
5103         * basic-block.h (predictable_edge_p): Declare.
5104         * config/alpha/alpha.h (BRANCH_COST): Update.
5105         * config/frv/frv.h (BRANCH_COST): Update.
5106         * config/s390/s390.h (BRANCH_COST): Update.
5107         * config/spu/spu.h (BRANCH_COST): Update.
5108         * config/sparc/sparc.h (BRANCH_COST): Update.
5109         * config/m32r/m32r.h (BRANCH_COST): Update.
5110         * config/i386/i386.h (BRANCH_COST): Update.
5111         * config/i386/i386.c (ix86_expand_int_movcc): Update use of
5112         BRANCH_COST.
5113         * config/sh/sh.h (BRANCH_COST): Update.
5114         * config/pdp11/pdp11.h (BRANCH_COST): Update.
5115         * config/avr/avr.h (BRANCH_COST): Update.
5116         * config/crx/crx.h (BRANCH_COST): Update.
5117         * config/xtensa/xtensa.h (BRANCH_COST): Update.
5118         * config/stormy16/stormy16.h (BRANCH_COST): Update.
5119         * config/m68hc11/m68hc11.h (BRANCH_COST): Update.
5120         * config/iq2000/iq2000.h (BRANCH_COST): Update.
5121         * config/ia64/ia64.h (BRANCH_COST): Update.
5122         * config/rs6000/rs6000.h (BRANCH_COST): Update.
5123         * config/arc/arc.h (BRANCH_COST): Update.
5124         * config/score/score.h (BRANCH_COST): Update.
5125         * config/arm/arm.h (BRANCH_COST): Update.
5126         * config/pa/pa.h (BRANCH_COST): Update.
5127         * config/mips/mips.h (BRANCH_COST): Update.
5128         * config/vax/vax.h (BRANCH_COST): Update.
5129         * config/h8300/h8300.h (BRANCH_COST): Update.
5130         * params.def (PARAM_PREDICTABLE_BRANCH_OUTCOME): New.
5131         * doc/invoke.texi (predictable-branch-cost-outcome): Document.
5132         * doc/tm.texi (BRANCH_COST): Update.
5133
5134 2008-08-30  Samuel Tardieu  <sam@rfc1149.net>
5135
5136         PR target/37283
5137         * config/arm/arm.c (arm_optimization_options): Set
5138         flag_section_anchors to 2 instead of 1 to distinguish it from
5139         -fsection-anchors given explicitely on the command line.
5140
5141 2008-08-30  Richard Sandiford  <rdsandiford@googlemail.com>
5142
5143         * recog.c (split_insn): Consider attaching a REG_EQUAL note to the
5144         final insn of a split.
5145
5146 2008-08-30  Jan Hubicka  <jh@suse.cz>
5147
5148         * postreload-gcse.c (gate_handle_gcse2): Disable for functions
5149         optimized for speed.
5150         * final.c (compute_alignments): Use optimize_bb_for_size_p.
5151         * tree-call-cdce.c (gate_call_cdce): Use optimize_function_for_speed_p.
5152         * opts.c (flag_predictive_commoning_set, flag_unswitch_loops_set,
5153         flag_gcse_after_reload_set): New static vars.
5154         (common_handle_option): Enable those flags for profile-use.
5155         (decode_options): Remove optimize_size flags that are handled
5156         on higher granuality.
5157         * tree-vectorizer.c (vectorize_loops): Use
5158         optimize_loop_nest_for_speed_p.
5159         * tree-ssa-pre.c (do_pre): Use optimize_function_for_speed_p.
5160         * tree-predcom.c (tree_predictive_commoning): Use
5161         optimize_loop_for_speed_p.
5162         * varasm.c (assemble_start_function): Use
5163         optimize_function_for_speed_p.
5164         * bb-reorder.c (rest_of_handle_reorder_blocks): Likewise.
5165         * predict.c (optimize_loop_for_speed_p): Fix walk.
5166
5167 2008-08-30  Jan Hubicka  <jh@suse.cz>
5168
5169         * ipa-inline.c (cgraph_estimate_growth): Discover self recursive
5170         functions.
5171         (cgraph_decide_inlining_of_small_function): Use edge->count to detect
5172         profile presence locally.
5173
5174 2008-08-29  Joseph Myers  <joseph@codesourcery.com>
5175
5176         PR bootstrap/37086
5177         * tree-vrp.c (find_switch_asserts): Make idx volatile for GCC
5178         versions before 4.0.
5179
5180 2008-08-29  Jan Hubicka  <jh@suse.cz>
5181
5182         * tree-inline.c (insert_init_stmt): Insert sequence even when
5183         not in SSA form.
5184
5185 2008-08-29  Jeff Law  <law@redhat.com>
5186
5187         * mn10300.c (mn10300_secondary_reload_class): We need secondary
5188         reloads for AM33-2 if IN is a pseudo with an equivalent memory
5189         location and class is an FP register.
5190
5191 2008-08-29  Jan Hubicka  <jh@suse.cz>
5192
5193         * see.c (see_merge_one_def_extension): Silence used uninitialized
5194         warning.
5195         * matrix-reorg.c (check_allocation_function): Likewise.
5196         * config/i386/driver-i386.c (detect_caches_amd): Likewise.
5197
5198 2008-08-29  Jakub Jelinek  <jakub@redhat.com>
5199
5200         PR c/37261
5201         * fold-const.c (fold_binary): In (X | C1) & C2 canonicalization
5202         compute new & and | in type rather than TREE_TYPE (arg0).
5203
5204         * dwarf2out.c (fortran_common): Update comment.
5205         (gen_variable_die): Swap com_die and var_die variables in Fortran
5206         COMMON block handling code.
5207
5208         * dwarf2out.c (descr_info_loc): Handle VAR_DECL.
5209
5210         * dwarf2out.c (gen_const_die): New function.
5211         (size_of_die, value_format, output_die): Output larger
5212         dw_val_class_vec using DW_FORM_block2 or DW_FORM_block4.
5213         (native_encode_initializer): New function.
5214         (tree_add_const_value_attribute): Call it.
5215         (gen_decl_die, dwarf2out_decl): Handle CONST_DECLs if is_fortran ().
5216
5217         * dwarf2out.c (gen_formal_parameter_die, gen_variable_die): For
5218         DECL_BY_REFERENCE decls don't pass TREE_READONLY and
5219         TREE_THIS_VOLATILE to add_type_attribute.
5220
5221         * dwarf2out.c (add_subscript_info): Stop on Fortran TYPE_STRING_FLAG
5222         types.
5223         (gen_array_type_die): Emit DW_TAG_string_type for Fortran character
5224         types.
5225
5226         * dwarf2out.c (loc_by_reference): New function.
5227         (add_location_or_const_value_attribute): Use it.
5228
5229         PR fortran/23057
5230         * dwarf2out.c (gen_variable_die): Represent Fortran COMMON vars
5231         as DW_TAG_variable children of DW_TAG_common_block rather than
5232         DW_TAG_member children.  Put DW_AT_external to individual
5233         DW_TAG_variable DIEs, not to DW_TAG_common_block.
5234
5235         * dwarf2out.c (add_bound_info): If lookup_decl_die failed, try
5236         loc_descriptor_from_tree_1.
5237
5238         PR fortran/29635
5239         PR fortran/23057
5240         * debug.h (struct gcc_debug_hooks): Add NAME and CHILD
5241         arguments to imported_module_or_decl.
5242         (debug_nothing_tree_tree): Removed.
5243         (debug_nothing_tree_tree_tree_bool): New prototype.
5244         * debug.c (do_nothing_debug_hooks): Adjust.
5245         (debug_nothing_tree_tree): Removed.
5246         (debug_nothing_tree_tree_tree_bool): New function.
5247         * dwarf2out.c (is_symbol_die): Handle DW_TAG_module.
5248         (gen_variable_die): Put all common vars for the
5249         same COMMON block under one DW_TAG_common_block.
5250         (declare_in_namespace): Return new context_die, for Fortran
5251         return the module DIE instead of adding extra declarations into
5252         the namespace.
5253         (gen_type_die_with_usage): Adjust declare_in_namespace caller.
5254         (gen_namespace_die): If is_fortran (), generate DW_TAG_module
5255         instead of DW_TAG_namespace.  If DECL_EXTERNAL is set, add
5256         DW_AT_declaration.
5257         (dwarf2out_global_decl): Don't skip Fortran global vars.
5258         (gen_decl_die): Likewise.  Adjust declare_in_namespace callers.
5259         (dwarf2out_imported_module_or_decl): Add NAME and CHILD arguments.
5260         If NAME is non-NULL, add DW_AT_name.  If CHILD is non-NULL, put
5261         DW_TAG_imported_declaration as child of previous
5262         DW_TAG_imported_module.
5263         * dbxout.c (dbx_debug_hooks, xcoff_debug_hooks): Adjust.
5264         * sdbout.c (sdb_debug_hooks): Likewise.
5265         * vmsdbgout.c (vmsdbg_debug_hooks): Likewise.
5266
5267 2008-08-29  Jan Hubicka  <jh@suse.cz>
5268
5269         * cgraph.c (cgraph_remove_node): Do not remove nested nodes.
5270
5271         * cgraph.h (cgraph_maybe_hot_edge_p): Declare.
5272         * ipa-cp.c (n_cloning_candidates): New static variable.
5273         (ipcp_print_profile_data, ipcp_function_scale_print): Forward declare.
5274         (ipcp_print_all_lattices): Improve debug output.
5275         (ipcp_cloning_candidate_p): New function.
5276         (ipcp_initialize_node_lattices): Use it.
5277         (ipcp_init_stage): Do only analyzis here; prettier debug output.
5278         (ipcp_propagate_stage): Prettier debug output.
5279         (ipcp_iterate_stage): Initialize latices here; prettier debug output.
5280         (ipcp_print_all_structures): Remove.
5281         (ipcp_need_redirect_p): Test !n_cloning_candidates.
5282         (ipcp_insert_stage): Prettier debug output; call
5283         cgraph_remove_unreachable_nodes before propagating.
5284         (pass_ipa_cp): Schedule function removal pass.
5285         * ipa-inline.c (inline_indirect_intraprocedural_analysis): Better
5286         debug output.
5287         (cgraph_maybe_hot_edge_p): Move to ...
5288         * predict.c (cgraph_maybe_hot_edge_p) ... here.
5289         * opts.c (flag_ipa_cp_set, flag_ipa_cp_clone_set): New.
5290         (common_handle_option): Set them; enable ipa-cp when profiling.
5291         * ipa-prop.c (ipa_print_node_jump_functions): Prettier output.
5292         (ipa_print_all_jump_functions): Likewise.
5293         (ipa_print_all_tree_maps, ipa_print_node_param_flags): Remove.
5294         (ipa_print_node_params, ipa_print_all_params): New.
5295         * ipa-prop.h (ipa_print_all_tree_maps, ipa_print_node_param_flags,
5296         ipa_print_all_param_flags): Remove.
5297         (ipa_print_node_params, ipa_print_all_params): New.
5298
5299 2008-08-29  Bob Wilson  <bob.wilson@acm.org>
5300
5301         * config/xtensa/xtensa.c (xtensa_secondary_reload_class): Revert
5302         change from 2008-04-03.
5303         * config/xtensa/xtensa.h (IRA_COVER_CLASSES): Define.
5304
5305 2008-08-29  Vladimir Makarov  <vmakarov@redhat.com>
5306
5307         PR rtl-opt/37251
5308         * ira-color.c (push_allocnos_to_stack): Truncate
5309         removed_splay_allocno_vec.
5310
5311 2008-08-29  Vladimir Makarov  <vmakarov@redhat.com>
5312
5313         PR rtl-opt/37243
5314         * ira-color (ira_fast_allocation): Don't assign hard registers to
5315         global allocnos.
5316
5317 2008-08-29  Jan Hubicka  <jh@suse.cz>
5318
5319         PR middle-end/37278
5320         * predict.c (optimize_loop_nest_for_speed_p): Do not ICE
5321         for cold internal loops.
5322
5323 2008-08-29  Richard Guenther  <rguenther@suse.de>
5324
5325         * tree-ssa-structalias.c (create_variable_info_for): Do not
5326         create fields for heap vars or vars with a noalias state.
5327         For NO_ALIAS_ANYTHING variables add a self-constraint, not one
5328         from ESCAPED.
5329
5330 2008-08-29  Richard Guenther  <rguenther@suse.de>
5331
5332         * common.opt (ftree-store-ccp): Mark as preserved for
5333         backward compatibility.
5334         * doc/invoke.texi (-ftree-store-ccp): Remove documentation.
5335         * tree-pass.h (pass_store_ccp): Remove.
5336         * tree-ssa-propagate.h (struct prop_value_d): Remove mem_ref field.
5337         (first_vdef): Remove declaration.
5338         (get_value_loaded_by): Likewise.
5339         * tree-ssa-ccp.c (do_store_ccp): Remove.
5340         (get_default_value): Simplify as do_store_ccp is always false
5341         now.  Do not initialize mem_ref.
5342         (set_value_varying): Likewise.
5343         (canonicalize_float_value): Likewise.
5344         (set_lattice_value): Likewise.
5345         (likely_value): Likewise.
5346         (surely_varying_stmt_p): Likewise.
5347         (ccp_initialize): Likewise.
5348         (ccp_lattice_meet): Likewise.
5349         (ccp_visit_phi_node): Likewise.
5350         (ccp_fold): Likewise.
5351         (evaluate_stmt): Likewise.
5352         (visit_assignment): Likewise.
5353         (ccp_visit_stmt): Likewise.
5354         (execute_ssa_ccp): Fold into ...
5355         (do_ssa_ccp): ... this.
5356         (do_ssa_store_ccp): Remove.
5357         (gate_store_ccp): Likewise.
5358         (pass_store_ccp): Likewise.
5359         * tree-ssa-copy.c (copy_prop_visit_phi_node): Do not
5360         initialize mem_ref.
5361         * tree-ssa-propagate.c (first_vdef): Remove.
5362         (get_value_loaded_by): Likewise.
5363         (replace_vuses_in): Likewise.
5364         (substitute_and_fold): Do not call replace_vuses_in.
5365         * opts.c (decode_options): Do not set flag_tree_store_ccp.
5366
5367 2008-08-29  Richard Guenther  <rguenther@suse.de>
5368
5369         PR middle-end/37236
5370         * tree-ssa-structalias.c (intra_create_variable_infos): Mark
5371         PARAM_NOALIAS tags with is_heapvar.
5372         * tree-ssa-operands.c (access_can_touch_variable): Offset
5373         based tests do not apply for heapvars.  Fix offset test.
5374
5375 2008-08-29  Jan Hubicka  <jh@suse.cz>
5376
5377         * doc/invoke.texi (-fipa-cp): Enabled by default at -O2/-Os/-O3
5378         (-fipa-cp-clone): Enabled by default at -O3.
5379         * opts.c (decode_options): Enable ipa-cp at -O2, ipa-cp-clone at -O3;
5380         make ipa-cp-clone to imply ipa-cp; disable cloning at -Os.
5381
5382 2008-08-29  Jan Hubicka  <jh@suse.cz>
5383
5384         * tree.c (build_function_type_skip_args,
5385         build_function_decl_skip_args): New functions.
5386         * tree.h (build_function_type_skip_args,
5387         build_function_decl_skip_args): Declare.
5388         * gimple.c (giple_copy_call_skip_args): New function.
5389         (giple_copy_call_skip_args): Declare.
5390
5391         * cgraph.h (cgraph_function_versioning): Add skip_args arugmnet
5392         * ipa-cp.c (ipcp_node_not_modifiable_p): Rename to ...
5393         (ipcp_node_modifiable_p): ... this one; use
5394         tree_versionable_function_p.
5395         (ipcp_create_replace_map): Improve debug output.
5396         (ipcp_need_redirect_p): Return false when not clonning.
5397         (ipcp_update_callgraph): Skip args.
5398         (ipcp_insert_stage): UPdate call of !ipcp_node_modifiable_p;
5399         skip args.
5400         * cgraphunit.c (cgraph_function_versioning): Add skip_args argument.
5401         (save_inline_function_body): Update call of tree_function_versioning.
5402         * ipa-prop.c (ipa_edge_removal_hook): Do not ICE on unanalyzed nodes.
5403         * tree-inline.c (copy_arguments_for_versioning): Add skip_args
5404         argument.
5405         (tree_function_versioning): Likewise.
5406         * tree-inline.h (tree_function_versioning): Update prototype.
5407
5408 2008-08-29  Jan Hubicka  <jh@suse.cz>
5409
5410         * loop-unswitch.c (unswitch_single_loop): Use
5411         optimize_loop_for_speed_p.
5412         * tree-ssa-threadupdate.c (mark_threaded_blocks):
5413         Use optimize_function_for_size_p.
5414         * tracer.c (ignore_bb_p): Use optimize_bb_for_size_p.
5415         * postreload-gcse.c (eliminate_partially_redundant_load):
5416         Use optimize_bb_for_size_p.
5417         * value-prof.c (gimple_divmod_fixed_value_transform,
5418         gimple_mod_pow2_value_transform, gimple_mod_subtract_transform,
5419         gimple_stringops_transform): Use optimize_bb_for_size_p.
5420         * ipa-cp.c (ipcp_insert_stage): Use optimize_function_for_size_p.
5421         * final.c (compute_alignments): Use optimize_function_for_size_p.
5422         * builtins.c (fold_builtin_cabs): Use optimize_function_for_speed_p.
5423         (fold_builtin_strcpy, fold_builtin_fputs): Use
5424         optimize_function_for_size_p.
5425         * fold-const.c (tree_swap_operands_p): Use
5426         optimize_function_for_size_p.
5427         * recog.c (relax_delay_slots): Likewise.
5428         * tree-ssa-math-opts.c (replace_reciprocal):
5429         Use optimize_bb_for_speed_p.
5430         (execute_cse_reciprocals): Use optimize_bb_for_size_p.
5431         * ipa-inline.c (cgraph_decide_recursive_inlining): Use
5432         optimize_function_for_size_p.
5433         (cgraph_decide_inlining_of_small_function): Use
5434         optimize_function_for_size_p.
5435         * global.c (find_reg): Use optimize_function_for_size_p.
5436         * opts.c (decode_options): Do not clear flag_tree_ch,
5437         flag_inline_functions, flag_unswitch_loops, flag_unroll_loops,
5438         flag_unroll_all_loops and flag_prefetch_loop_arrays. Those can
5439         work it out from profile.
5440         * tree-ssa-loop-ivcanon.c (tree_unroll_loops_completely): Use
5441         optimize_loop_for_speed_p.
5442         * predict.c (optimize_bb_for_size_p, optimize_bb_for_speed_p):
5443         Constify argument.
5444         (optimize_loop_nest_for_size_p, optimize_loop_nest_for_speed_p): New.
5445         * tree-parloops.c (parallelize_loops): Use optimize_loop_for_size_p.
5446         * tree-eh.c (decide_copy_try_finally): Use
5447         optimize_function_for_size_p.
5448         * local-alloc.c (block_alloc): Pass BB pointer.
5449         (find_free_reg): Add BB pointer, use optimize_bb_for_size_p.
5450         * gcse.c (gcse_main): Use optimize_function_for_size_p.
5451         * loop-unroll.c (decide_unrolling_and_peeling):
5452         Use optimize_loop_for_size_p.
5453         (decide_peel_completely): Likewise.
5454         * tree-vect-analyze.c (vect_mark_for_runtime_alias_test): Use
5455         optimize_loop_for_size_p.
5456         (vect_enhance_data_refs_alignment): Likewise.
5457         * tree-ssa-coalesce.c (coalesce_cost): Add optimize_for_size argument.
5458         (coalesce_cost_bb, coalesce_cost_edge, create_outofssa_var_map):
5459         Update call.
5460         * cfgcleanup.c (outgoing_edges_match): Use optimize_bb_for_speed_p.
5461         (try_crossjump_bb): Use optimize_bb_for_size_p.
5462         * tree-ssa-loop-prefetch.c (loop_prefetch_arrays): Use
5463         optimize_loop_for_speed_p.
5464         * bb-reorder.c (find_traces_1_round): Likewise.
5465         (copy_bb): Use optimize_bb_for_speed_p.
5466         (duplicate_computed_gotos): Likewise.
5467         * basic-block.h (optimize_loop_nest_for_size_p,
5468         optimize_loop_nest_for_speed_p): New.
5469         * stmt.c (expand_case): Use optimize_insn_for_size_p.
5470
5471 2008-08-29  Tristan Gingold  <gingold@adacore.com>
5472
5473         * gcov.c (main): Call expandargv.
5474
5475 2008-08-29  Jan Hubicka  <jh@suse.cz>
5476
5477         * tree-ssa-loop-ch.c (should_duplicate_loop_header_p): Check that loop
5478         is not cold.
5479         * predict.c (optimize_bb_for_size_p, optimize_bb_for_speed_p):
5480         Constify arguments.
5481         (optimize_loop_for_size_p, optimize_loop_for_speed_p): New functions.
5482         * basic-block.h (optimize_bb_for_size_p, optimize_bb_for_speed_p):
5483         Constify.
5484         (optimize_loop_for_size_p, optimize_loop_for_speed_p): Declare.
5485
5486 2008-08-29  Jan Hubicka  <jh@suse.cz>
5487
5488         * tree-pass.h (pass_strip_predict_hints): Declare.
5489         * predict.c (strip_builtin_expect): Rename to ...
5490         (strip_predict_hints): ... this one; strip also GIMPLE_PREDICT.
5491         (tree_bb_level_predictions): Do not remove GIMPLE_PREDICT.
5492         (tree_estimate_probability): Do not strip builtin_expect.
5493         (pass_strip_predict_hints): New pass.
5494         * tree-inline.c (expand_call_inline): When inlining cold function,
5495         predict it as unlikely.
5496         * passes.c (init_optimization_passes): Add pass_strip_predict_hints.
5497
5498 2008-08-29  Richard Guenther  <rguenther@suse.de>
5499
5500         PR tree-optimization/37207
5501         * tree-vrp.c (extract_range_from_binary_expr): Also try
5502         to constant fold if only one of the operands is a constant.
5503
5504 2008-08-29  Nick Clifton  <nickc@redhat.com>
5505
5506         * config/m32r/m32r.h (LEGITIMATE_CONSTANT_P): Treat LABEL_REFs in
5507         the same way as SYMBOL_REFs.
5508
5509 2008-08-28  Bob Wilson  <bob.wilson@acm.org>
5510
5511         * config/xtensa/xtensa.md (<u>mulsidi3): Use a temporary register.
5512
5513 2008-08-28  Adam Nemet  <anemet@caviumnetworks.com>
5514
5515         * config/mips/mips.h (ISA_HAS_BBIT): New macro.
5516         * config/mips/mips.md (branch_likely): Remove const.  Fix
5517         comment formatting.
5518         (define_delay for type "branch"): Change to only apply for branch
5519         with likely variant.
5520         (define_delay for type "branch" and "branch_likely" no).  New delay
5521         definition.
5522         (equality_op): New code iterator.
5523         (bbv, bbinv): New code attributes.
5524         (*branch_bit<bbv><mode>, *branch_bit<bbv><mode>_inverted): New
5525         patterns.
5526
5527 2008-08-28  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
5528             Andrew Pinski  <pinskia@gcc.gnu.org>
5529
5530         PR 18050
5531         * c-common.c (verify_tree): Fix handling of ADDR_EXPR.
5532
5533 2008-08-28  Paolo Carlini  <paolo.carlini@oracle.com>
5534
5535         * gtrh-posix.h: Fix uses of _POSIX_TIMEOUTS per the normal Posix
5536         rule that a symbolic constant must be defined and >= 0 for the
5537         corresponding facility to be present at compile-time.
5538         * gthr-posix.c: Likewise.
5539
5540 2008-08-28  Adam Nemet  <anemet@caviumnetworks.com>
5541
5542         * config/mips/mips.h (ISA_HAS_DMUL3): New macro.
5543         * config/mips/mips.md (D): New mode attribute.
5544         (mulsi3, muldi3): Merge it into ...
5545         (mul<mode>3): ... new template.  Use _mul3 ending for 3-op patterns.
5546         (muldi3_mul3): New pattern.
5547         (mulsi3_mult3): Rename to mulsi3_mul3.
5548
5549 2008-08-28  Jan Hubicka  <jh@suse.cz>
5550
5551         * expmed.c (store_bit_field_1): Be prepared for movstrict expander
5552         to fail.
5553         * predict.c (always_optimize_for_size_p): Rename to ...
5554         (optimize_function_for_size): ... this one; make extern.
5555         (optimize_function_for_speed_p): New.
5556         (optimize_bb_for_size_p, optimize_bb_for_size_p,
5557         optimize_edge_for_size_p,optimize_edge_for_size_p,
5558         optimize_insn_for_size_p, optimize_insn_for_size_p): Update.
5559         * basic-block.h (optimize_function_for_size_p,
5560         optimize_function_for_speed_p): Declare.
5561         * i386.md (optimize_size checks): Replace them by appropriate
5562         predicate.
5563         (standard_80387_constant_p, ix86_compute_frame_layout,
5564         ix86_expand_epilogue, ix86_decompose_address,
5565         print_operand, emit_i387_cw_initialization,
5566         inline_memory_move_cost, ix86_pad_returns,
5567         ix86_reorg): Replace optimize_size checks.
5568
5569 2008-08-28  Richard Sandiford  <rdsandiford@googlemail.com>
5570
5571         * rtl.h (simplify_subreg_regno): Declare.
5572         * rtlanal.c (simplify_subreg_regno): New function, split out from...
5573         * simplify-rtx.c (simplify_subreg): ...here.
5574         * reload.c (find_reloads): Use simplify_subreg_regno instead of
5575         subreg_offset_representable_p.
5576
5577 2008-08-28  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
5578
5579         PR c/30949
5580         * c-typeck.c (convert_for_assignment): Give a note describing what
5581         was passed and what was expected.
5582
5583 2008-08-28  Joey Ye  <joey.ye@intel.com>
5584
5585         * doc/extend.texi: Document AVX built-in functions.
5586         * doc/invoke.texi: Document -mavx.
5587
5588 2008-08-28  H.J. Lu  <hongjiu.lu@intel.com>
5589             Joey Ye  <joey.ye@intel.com>
5590             Xuepeng Guo  <xuepeng.guo@intel.com>
5591
5592         * config.gcc (extra_headers): Add gmmintrin.h for x86 and x86-64.
5593
5594         * config/i386/cpuid.h (bit_FMA): New.
5595         (bit_XSAVE): Likewise.
5596         (bit_OSXSAVE): Likewise.
5597         (bit_AVX): Likewise.
5598
5599         * config/i386/gas.h (ASM_OUTPUT_OPCODE): Undefine before
5600         define.  Use ASM_OUTPUT_AVX_PREFIX.
5601
5602         * config/i386/gmmintrin.h: New.
5603
5604         * config/i386/i386.c (x86_64_reg_class): Add X86_64_AVX_CLASS.
5605         (OPTION_MASK_ISA_AVX_SET): New.
5606         (OPTION_MASK_ISA_FMA_SET): Likewise.
5607         (OPTION_MASK_ISA_AVX_UNSET): Likewise.
5608         (OPTION_MASK_ISA_FMA_SET): Likewise.
5609         (OPTION_MASK_ISA_SSE4_2_UNSET): Updated.
5610         (ix86_handle_option): Handle OPT_mavx and OPT_mfma.
5611         (pta_flags): Add PTA_AVX and PTA_FMA.
5612         (override_options): Handle PTA_AVX and PTA_FMA.
5613         (init_cumulative_args): Handle warn_avx.
5614         (classify_argument): Return 0 for COImode and OImode.  Return
5615         1 and X86_64_AVX_CLASS for 256bit vector types.
5616         (examine_argument): Handle X86_64_AVX_CLASS.
5617         (construct_container): Likewise.
5618         (function_arg_advance_32): Pass OImode and 256bit vector types
5619         in AVX register.
5620         (function_arg_advance_64): Take a new argument to indicate if a
5621         parameter is named.  Handle 256bit vector types.  Return
5622         immediately for unnamed 256bit vector mode parameters.
5623         (function_arg_advance): Updated.
5624         (function_arg_32): Add comments for TImode.  Handle OImode
5625         and 256bit vector types.
5626         (function_arg_64): Take a new argument to indicate if a
5627         parameter is named.  Handle 256bit vector types.  Return NULL
5628         for unnamed 256bit vector mode parameters.
5629         (function_arg): Updated.
5630         (setup_incoming_varargs_64): Support
5631         AVX encoding for *sse_prologue_save_insn.
5632         (ix86_gimplify_va_arg): Handle 256bit vector mode parameters.
5633         (standard_sse_constant_p): Return -2 for all 1s if SSE2 isn't
5634         enabled.  For all 1s in 256bit vector modes, return 3 if AVX is
5635         enabled, otherwise return -3.
5636         (standard_sse_constant_opcode): Handle AVX and 256bit vector
5637         modes.
5638         (print_reg): Support AVX registers.  Handle 'x' and 't'.
5639         Handle 'd' to duplicate the operand.
5640         (print_operand): Likewise.  Also support AVX vector compare
5641         instructions.
5642         (output_387_binary_op): Support AVX.
5643         (output_fp_compare): Likewise.
5644         (ix86_expand_vector_move_misalign): Likewise.
5645         (ix86_attr_length_vex_default): New.
5646         (ix86_builtins): Add IX86_BUILTIN_ADDPD256,
5647         IX86_BUILTIN_ADDPS256, IX86_BUILTIN_ADDSUBPD256,
5648         IX86_BUILTIN_ADDSUBPS256, IX86_BUILTIN_ANDPD256,
5649         IX86_BUILTIN_ANDPS256, IX86_BUILTIN_ANDNPD256,
5650         IX86_BUILTIN_ANDNPS256, IX86_BUILTIN_BLENDPD256,
5651         IX86_BUILTIN_BLENDPS256, IX86_BUILTIN_BLENDVPD256,
5652         IX86_BUILTIN_BLENDVPS256, IX86_BUILTIN_DIVPD256,
5653         IX86_BUILTIN_DIVPS256, IX86_BUILTIN_DPPS256,
5654         IX86_BUILTIN_HADDPD256, IX86_BUILTIN_HADDPS256,
5655         IX86_BUILTIN_HSUBPD256, IX86_BUILTIN_HSUBPS256,
5656         IX86_BUILTIN_MAXPD256, IX86_BUILTIN_MAXPS256,
5657         IX86_BUILTIN_MINPD256, IX86_BUILTIN_MINPS256,
5658         IX86_BUILTIN_MULPD256, IX86_BUILTIN_MULPS256,
5659         IX86_BUILTIN_ORPD256, IX86_BUILTIN_ORPS256,
5660         IX86_BUILTIN_SHUFPD256, IX86_BUILTIN_SHUFPS256,
5661         IX86_BUILTIN_SUBPD256, IX86_BUILTIN_SUBPS256,
5662         IX86_BUILTIN_XORPD256, IX86_BUILTIN_XORPS256,
5663         IX86_BUILTIN_CMPSD, IX86_BUILTIN_CMPSS, IX86_BUILTIN_CMPPD,
5664         IX86_BUILTIN_CMPPS, IX86_BUILTIN_CMPPD256,
5665         IX86_BUILTIN_CMPPS256, IX86_BUILTIN_CVTDQ2PD256,
5666         IX86_BUILTIN_CVTDQ2PS256, IX86_BUILTIN_CVTPD2PS256,
5667         IX86_BUILTIN_CVTPS2DQ256, IX86_BUILTIN_CVTPS2PD256,
5668         IX86_BUILTIN_CVTTPD2DQ256, IX86_BUILTIN_CVTPD2DQ256,
5669         IX86_BUILTIN_CVTTPS2DQ256, IX86_BUILTIN_EXTRACTF128PD256,
5670         IX86_BUILTIN_EXTRACTF128PS256, IX86_BUILTIN_EXTRACTF128SI256,
5671         IX86_BUILTIN_VZEROALL, IX86_BUILTIN_VZEROUPPER,
5672         IX86_BUILTIN_VZEROUPPER_REX64, IX86_BUILTIN_VPERMILVARPD,
5673         IX86_BUILTIN_VPERMILVARPS, IX86_BUILTIN_VPERMILVARPD256,
5674         IX86_BUILTIN_VPERMILVARPS256, IX86_BUILTIN_VPERMILPD,
5675         IX86_BUILTIN_VPERMILPS, IX86_BUILTIN_VPERMILPD256,
5676         IX86_BUILTIN_VPERMILPS256, IX86_BUILTIN_VPERMIL2PD,
5677         IX86_BUILTIN_VPERMIL2PS, IX86_BUILTIN_VPERMIL2PD256,
5678         IX86_BUILTIN_VPERMIL2PS256, IX86_BUILTIN_VPERM2F128PD256,
5679         IX86_BUILTIN_VPERM2F128PS256, IX86_BUILTIN_VPERM2F128SI256,
5680         IX86_BUILTIN_VBROADCASTSS, IX86_BUILTIN_VBROADCASTSD256,
5681         IX86_BUILTIN_VBROADCASTSS256, IX86_BUILTIN_VBROADCASTPD256,
5682         IX86_BUILTIN_VBROADCASTPS256, IX86_BUILTIN_VINSERTF128PD256,
5683         IX86_BUILTIN_VINSERTF128PS256, IX86_BUILTIN_VINSERTF128SI256,
5684         IX86_BUILTIN_LOADUPD256, IX86_BUILTIN_LOADUPS256,
5685         IX86_BUILTIN_STOREUPD256, IX86_BUILTIN_STOREUPS256,
5686         IX86_BUILTIN_LDDQU256, IX86_BUILTIN_LOADDQU256,
5687         IX86_BUILTIN_STOREDQU256, IX86_BUILTIN_MASKLOADPD,
5688         IX86_BUILTIN_MASKLOADPS, IX86_BUILTIN_MASKSTOREPD,
5689         IX86_BUILTIN_MASKSTOREPS, IX86_BUILTIN_MASKLOADPD256,
5690         IX86_BUILTIN_MASKLOADPS256, IX86_BUILTIN_MASKSTOREPD256,
5691         IX86_BUILTIN_MASKSTOREPS256, IX86_BUILTIN_MOVSHDUP256,
5692         IX86_BUILTIN_MOVSLDUP256, IX86_BUILTIN_MOVDDUP256,
5693         IX86_BUILTIN_SQRTPD256, IX86_BUILTIN_SQRTPS256,
5694         IX86_BUILTIN_SQRTPS_NR256, IX86_BUILTIN_RSQRTPS256,
5695         IX86_BUILTIN_RSQRTPS_NR256, IX86_BUILTIN_RCPPS256,
5696         IX86_BUILTIN_ROUNDPD256, IX86_BUILTIN_ROUNDPS256,
5697         IX86_BUILTIN_UNPCKHPD256, IX86_BUILTIN_UNPCKLPD256,
5698         IX86_BUILTIN_UNPCKHPS256, IX86_BUILTIN_UNPCKLPS256,
5699         IX86_BUILTIN_SI256_SI, IX86_BUILTIN_PS256_PS,
5700         IX86_BUILTIN_PD256_PD, IX86_BUILTIN_SI_SI256,
5701         IX86_BUILTIN_PS_PS256, IX86_BUILTIN_PD_PD256,
5702         IX86_BUILTIN_VTESTZPD, IX86_BUILTIN_VTESTCPD,
5703         IX86_BUILTIN_VTESTNZCPD, IX86_BUILTIN_VTESTZPS,
5704         IX86_BUILTIN_VTESTCPS, IX86_BUILTIN_VTESTNZCPS,
5705         IX86_BUILTIN_VTESTZPD256, IX86_BUILTIN_VTESTCPD256,
5706         IX86_BUILTIN_VTESTNZCPD256, IX86_BUILTIN_VTESTZPS256,
5707         IX86_BUILTIN_VTESTCPS256, IX86_BUILTIN_VTESTNZCPS256,
5708         IX86_BUILTIN_PTESTZ256, IX86_BUILTIN_PTESTC256,
5709         IX86_BUILTIN_PTESTNZC256, IX86_BUILTIN_MOVMSKPD256
5710         and IX86_BUILTIN_MOVMSKPS256,
5711         (ix86_special_builtin_type): Add V32QI_FTYPE_PCCHAR,
5712         V8SF_FTYPE_PCV4SF, V8SF_FTYPE_PCFLOAT, V4DF_FTYPE_PCV2DF,
5713         V4DF_FTYPE_PCDOUBLE, V8SF_FTYPE_PCV8SF_V8SF,
5714         V4DF_FTYPE_PCV4DF_V4DF, V4SF_FTYPE_PCV4SF_V4SF,
5715         V2DF_FTYPE_PCV2DF_V2DF, VOID_FTYPE_PCHAR_V32QI,
5716         VOID_FTYPE_PFLOAT_V8SF, VOID_FTYPE_PDOUBLE_V4DF,
5717         VOID_FTYPE_PV8SF_V8SF_V8SF, VOID_FTYPE_PV4DF_V4DF_V4DF,
5718         VOID_FTYPE_PV4SF_V4SF_V4SF and VOID_FTYPE_PV2DF_V2DF_V2DF,
5719         (ix86_builtin_type): Add INT_FTYPE_V8SF_V8SF_PTEST,
5720         INT_FTYPE_V4DI_V4DI_PTEST, INT_FTYPE_V4DF_V4DF_PTEST,
5721         INT_FTYPE_V4SF_V4SF_PTEST, INT_FTYPE_V2DF_V2DF_PTEST,
5722         INT_FTYPE_V8SF, INT_FTYPE_V4DF, V8SI_FTYPE_V8SF, V8SI_FTYPE_V4SI,
5723         V8SF_FTYPE_V8SF, V8SF_FTYPE_V8SI, V8SF_FTYPE_V4SF,
5724         V4SI_FTYPE_V8SI, V4SI_FTYPE_V4DF, V4DF_FTYPE_V4DF,
5725         V4DF_FTYPE_V4SI, V4DF_FTYPE_V4SF, V4DF_FTYPE_V2DF,
5726         V4SF_FTYPE_V4DF, V4SF_FTYPE_V8SF, V2DF_FTYPE_V4DF,
5727         V8SF_FTYPE_V8SF_V8SF, V8SF_FTYPE_V8SF_V8SI,
5728         V4DF_FTYPE_V4DF_V4DF, V4DF_FTYPE_V4DF_V4DI,
5729         V4SF_FTYPE_V4SF_V4SI, V2DF_FTYPE_V2DF_V2DI,
5730         V8SF_FTYPE_V8SF_INT, V4SI_FTYPE_V8SI_INT, V4SF_FTYPE_V8SF_INT,
5731         V2DF_FTYPE_V4DF_INT, V4DF_FTYPE_V4DF_INT,
5732         V8SF_FTYPE_V8SF_V8SF_V8SF, V4DF_FTYPE_V4DF_V4DF_V4DF,
5733         V8SI_FTYPE_V8SI_V8SI_INT, V8SF_FTYPE_V8SF_V8SF_INT,
5734         V4DF_FTYPE_V4DF_V4DF_INT, V4DF_FTYPE_V4DF_V2DF_INT,
5735         V8SF_FTYPE_V8SF_V8SF_V8SI_INT, V4DF_FTYPE_V4DF_V4DF_V4DI_INT,
5736         V4SF_FTYPE_V4SF_V4SF_V4SI_INT and V2DF_FTYPE_V2DF_V2DF_V2DI_INT.
5737         (bdesc_special_args): Add IX86_BUILTIN_VZEROALL,
5738         IX86_BUILTIN_VZEROUPPER. IX86_BUILTIN_VZEROUPPER_REX64,
5739         IX86_BUILTIN_VBROADCASTSS, IX86_BUILTIN_VBROADCASTSD256,
5740         IX86_BUILTIN_VBROADCASTSS256, IX86_BUILTIN_VBROADCASTPD256,
5741         IX86_BUILTIN_VBROADCASTPS256, IX86_BUILTIN_LOADUPD256,
5742         IX86_BUILTIN_LOADUPS256, IX86_BUILTIN_STOREUPD256,
5743         IX86_BUILTIN_STOREUPS256, IX86_BUILTIN_LOADDQU256,
5744         IX86_BUILTIN_STOREDQU256, IX86_BUILTIN_LDDQU256,
5745         IX86_BUILTIN_MASKLOADPD, IX86_BUILTIN_MASKLOADPS,
5746         IX86_BUILTIN_MASKLOADPD256, IX86_BUILTIN_MASKLOADPS256,
5747         IX86_BUILTIN_MASKSTOREPD, IX86_BUILTIN_MASKSTOREPS,
5748         IX86_BUILTIN_MASKSTOREPD256 and IX86_BUILTIN_MASKSTOREPS256.
5749         (ix86_builtins): Add IX86_BUILTIN_ADDPD256,
5750         IX86_BUILTIN_ADDPS256, IX86_BUILTIN_ADDSUBPD256,
5751         IX86_BUILTIN_ADDSUBPS256, IX86_BUILTIN_ANDPD256,
5752         IX86_BUILTIN_ANDPS256, IX86_BUILTIN_ANDNPD256,
5753         IX86_BUILTIN_ANDNPS256, IX86_BUILTIN_DIVPD256,
5754         IX86_BUILTIN_DIVPS256, IX86_BUILTIN_HADDPD256,
5755         IX86_BUILTIN_HSUBPS256, IX86_BUILTIN_HSUBPD256,
5756         IX86_BUILTIN_HADDPS256, IX86_BUILTIN_MAXPD256,
5757         IX86_BUILTIN_MAXPS256, IX86_BUILTIN_MINPD256,
5758         IX86_BUILTIN_MINPS256, IX86_BUILTIN_MULPD256,
5759         IX86_BUILTIN_MULPS256, IX86_BUILTIN_ORPD256,
5760         IX86_BUILTIN_ORPS256, IX86_BUILTIN_SUBPD256,
5761         IX86_BUILTIN_SUBPS256, IX86_BUILTIN_XORPD256,
5762         IX86_BUILTIN_XORPS256, IX86_BUILTIN_VPERMILVARPD,
5763         IX86_BUILTIN_VPERMILVARPS, IX86_BUILTIN_VPERMILVARPD256,
5764         IX86_BUILTIN_VPERMILVARPS256, IX86_BUILTIN_BLENDPD256,
5765         IX86_BUILTIN_BLENDPS256, IX86_BUILTIN_BLENDVPD256,
5766         IX86_BUILTIN_BLENDVPS256, IX86_BUILTIN_DPPS256,
5767         IX86_BUILTIN_SHUFPD256, IX86_BUILTIN_SHUFPS256,
5768         IX86_BUILTIN_CMPSD, IX86_BUILTIN_CMPSS, IX86_BUILTIN_CMPPD,
5769         IX86_BUILTIN_CMPPS,
5770         IX86_BUILTIN_CMPPD256,IX86_BUILTIN_CMPPS256,
5771         IX86_BUILTIN_EXTRACTF128PD256, IX86_BUILTIN_EXTRACTF128PS256,
5772         IX86_BUILTIN_EXTRACTF128SI256, IX86_BUILTIN_CVTDQ2PD256,
5773         IX86_BUILTIN_CVTDQ2PS256, IX86_BUILTIN_CVTPD2PS256,
5774         IX86_BUILTIN_CVTPS2DQ256, IX86_BUILTIN_CVTPS2PD256,
5775         IX86_BUILTIN_CVTTPD2DQ256, IX86_BUILTIN_CVTPD2DQ256,
5776         IX86_BUILTIN_CVTTPS2DQ256, IX86_BUILTIN_VPERM2F128PD256,
5777         IX86_BUILTIN_VPERM2F128PS256, IX86_BUILTIN_VPERM2F128SI256,
5778         IX86_BUILTIN_VPERMILPD, IX86_BUILTIN_VPERMILPS,
5779         IX86_BUILTIN_VPERMILPD256, IX86_BUILTIN_VPERMILPS256,
5780         IX86_BUILTIN_VPERMIL2PD, IX86_BUILTIN_VPERMILPS,
5781         IX86_BUILTIN_VPERMILPD256, IX86_BUILTIN_VPERMILPS256,
5782         IX86_BUILTIN_VPERMIL2PD, IX86_BUILTIN_VPERMIL2PS,
5783         IX86_BUILTIN_VPERMIL2PD256, IX86_BUILTIN_VPERMIL2PS256,
5784         IX86_BUILTIN_VINSERTF128PD256, IX86_BUILTIN_VINSERTF128PS256,
5785         IX86_BUILTIN_VINSERTF128SI256, IX86_BUILTIN_MOVSHDUP256,
5786         IX86_BUILTIN_MOVSLDUP256, IX86_BUILTIN_MOVDDUP256,
5787         IX86_BUILTIN_SQRTPD256, IX86_BUILTIN_SQRTPS256,
5788         IX86_BUILTIN_SQRTPS_NR256, IX86_BUILTIN_RSQRTPS256,
5789         IX86_BUILTIN_RSQRTPS_NR256, IX86_BUILTIN_RCPPS256,
5790         IX86_BUILTIN_ROUNDPD256, IX86_BUILTIN_ROUNDPS256,
5791         IX86_BUILTIN_UNPCKHPD256, IX86_BUILTIN_UNPCKLPD256,
5792         IX86_BUILTIN_UNPCKHPS256, IX86_BUILTIN_UNPCKLPS256,
5793         IX86_BUILTIN_SI256_SI, IX86_BUILTIN_PS256_PS,
5794         IX86_BUILTIN_PD256_PD, IX86_BUILTIN_SI_SI256,
5795         IX86_BUILTIN_PS_PS256, IX86_BUILTIN_PD_PD256,
5796         IX86_BUILTIN_VTESTZPD, IX86_BUILTIN_VTESTCPD,
5797         IX86_BUILTIN_VTESTNZCPD, IX86_BUILTIN_VTESTZPS,
5798         IX86_BUILTIN_VTESTCPS, IX86_BUILTIN_VTESTNZCPS,
5799         IX86_BUILTIN_VTESTZPD256, IX86_BUILTIN_VTESTCPD256,
5800         IX86_BUILTIN_VTESTNZCPD256, IX86_BUILTIN_VTESTZPS256,
5801         IX86_BUILTIN_VTESTCPS256, IX86_BUILTIN_VTESTNZCPS256,
5802         IX86_BUILTIN_PTESTZ256, IX86_BUILTIN_PTESTC256,
5803         IX86_BUILTIN_PTESTNZC256, IX86_BUILTIN_MOVMSKPD256 and
5804         IX86_BUILTIN_MOVMSKPS256.
5805         (ix86_init_mmx_sse_builtins): Support AVX builtins.
5806         (ix86_expand_args_builtin): Likewise.
5807         (ix86_expand_special_args_builtin): Likewise.
5808         (ix86_hard_regno_mode_ok): Handle AVX modes.
5809         (ix86_expand_vector_init_duplicate): Likewise.
5810         (ix86_expand_vector_init_one_nonzero): Likewise.
5811         (ix86_expand_vector_init_one_var): Likewise.
5812         (ix86_expand_vector_init_concat): Likewise.
5813         (ix86_expand_vector_init_general): Likewise.
5814         (ix86_expand_vector_set): Likewise.
5815         (ix86_vector_mode_supported_p): Likewise.
5816         (x86_extended_reg_mentioned_p): Check INSN_P before using
5817         PATTERN.
5818
5819         * config/i386/i386-c.c (ix86_target_macros_internal): Handle
5820         OPTION_MASK_ISA_AVX and OPTION_MASK_ISA_FMA.
5821
5822         * config/i386/i386.h (TARGET_AVX): New.
5823         (TARGET_FMA): Likewise.
5824         (TARGET_CPU_CPP_BUILTINS): Handle TARGET_AVX and TARGET_FMA.
5825         (BIGGEST_ALIGNMENT): Set to 256 for TARGET_AVX.
5826         (VALID_AVX256_REG_MODE): New.
5827         (AVX256_VEC_FLOAT_MODE_P): Likewise.
5828         (AVX_FLOAT_MODE_P): Likewise.
5829         (AVX128_VEC_FLOAT_MODE_P): Likewise.
5830         (AVX256_VEC_FLOAT_MODE_P): Likewise.
5831         (AVX_VEC_FLOAT_MODE_P): Likewise.
5832         (ASM_OUTPUT_AVX_PREFIX): Likewise.
5833         (ASM_OUTPUT_OPCODE): Likewise.
5834         (UNITS_PER_SIMD_WORD): Add a FIXME for 32byte vectorizer
5835         support.
5836         (SSE_REG_MODE_P): Allow 256bit vector modes.
5837         (ix86_args): Add a warn_avx field.
5838
5839         * config/i386/i386.md (UNSPEC_PCMP): New.
5840         (UNSPEC_VPERMIL): Likewise.
5841         (UNSPEC_VPERMIL2): Likewise.
5842         (UNSPEC_VPERMIL2F128): Likewise.
5843         (UNSPEC_MASKLOAD): Likewise.
5844         (UNSPEC_MASKSTORE): Likewise.
5845         (UNSPEC_CAST): Likewise.
5846         (UNSPEC_VTESTP): Likewise.
5847         (UNSPECV_VZEROALL): Likewise.
5848         (UNSPECV_VZEROUPPER): Likewise.
5849         (XMM0_REG): Likewise.
5850         (XMM1_REG): Likewise.
5851         (XMM2_REG): Likewise.
5852         (XMM3_REG): Likewise.
5853         (XMM4_REG): Likewise.
5854         (XMM5_REG): Likewise.
5855         (XMM6_REG): Likewise.
5856         (XMM8_REG): Likewise.
5857         (XMM9_REG): Likewise.
5858         (XMM10_REG): Likewise.
5859         (XMM11_REG): Likewise.
5860         (XMM12_REG): Likewise.
5861         (XMM13_REG): Likewise.
5862         (XMM14_REG): Likewise.
5863         (XMM15_REG): Likewise.
5864         (prefix): Likewise.
5865         (prefix_vex_imm8): Likewise.
5866         (prefix_vex_w): Likewise.
5867         (length_vex): Likewise.
5868         (maxmin): Likewise.
5869         (movoi): Likewise.
5870         (*avx_ashlti3): Likewise.
5871         (*avx_lshrti3): Likewise.
5872         (*avx_setcc<mode>): Likewise.
5873         (*fop_<mode>_comm_mixed_avx): Likewise.
5874         (*fop_<mode>_comm_avx): Likewise.
5875         (*fop_<mode>_1_mixed_avx): Likewise.
5876         (*fop_<mode>_1_avx): Likewise.
5877         (*avx_<code><mode>3): Likewise.
5878         (*avx_ieee_smin<mode>3): Likewise.
5879         (*avx_ieee_smax<mode>3): Likewise.
5880         (mode): Add OI, V8SF and V4DF.
5881         (length): Support VEX prefix.
5882         (*cmpfp_i_mixed): Set prefix attribute.
5883         (*cmpfp_i_sse): Likewise.
5884         (*cmpfp_iu_mixed): Likewise.
5885         (*cmpfp_iu_sse): Likewise.
5886         (*movsi_1): Support AVX.
5887         (*movdi_2): Likewise.
5888         (*movdi_1_rex64): Likewise.
5889         (*movti_internal): Likewise.
5890         (*movti_rex64): Likewise.
5891         (*movsf_1): Likewise.
5892         (*movdf_nointeger): Likewise.
5893         (*movdf_integer_rex64): Likewise.
5894         (*movtf_internal): Likewise.
5895         (zero_extendsidi2_32): Likewise.
5896         (zero_extendsidi2_rex64): Likewise.
5897         (*extendsfdf2_mixed): Likewise.
5898         (*extendsfdf2_sse): Likewise.
5899         (*truncdfsf_fast_mixed): Likewise.
5900         (*truncdfsf_fast_sse): Likewise.
5901         (*truncdfsf_mixed): Likewise.
5902         (fix_trunc<mode>di_sse): Likewise.
5903         (fix_trunc<mode>si_sse): Likewise.
5904         (*float<SSEMODEI24:mode><MODEF:mode>2_mixed_interunit): Likewise.
5905         (*float<SSEMODEI24:mode><MODEF:mode>2_mixed_nointerunit): Likewise.
5906         (*float<SSEMODEI24:mode><MODEF:mode>2_sse_interunit): Likewise.
5907         (*float<SSEMODEI24:mode><MODEF:mode>2_sse_nointerunit): Likewise.
5908         (*rcpsf2_sse): Likewise.
5909         (*rsqrtsf2_sse): Likewise.
5910         (*sqrt<mode>2_sse): Likewise.
5911         (sse4_1_round<mode>2): Likewise.
5912         (*sse_prologue_save_insn): Disallow REX prefix for AVX.
5913         Support AVX.  Set length attribute properly for AVX.
5914
5915         * config/i386/i386-modes.def (VECTOR_MODES (INT, 32)): New.
5916         (VECTOR_MODES (FLOAT, 32)): Likewise.
5917         (VECTOR_MODE (INT, DI, 8)): Likewise.
5918         (VECTOR_MODE (INT, HI, 32)): Likewise.
5919         (VECTOR_MODE (INT, QI, 64)): Likewise.
5920         (VECTOR_MODE (FLOAT, DF, 8)): Likewise.
5921         (VECTOR_MODE (FLOAT, SF, 16)): Likewise.
5922         (VECTOR_MODE (INT, DI, 4)): Removed.
5923         (VECTOR_MODE (INT, SI, 8)): Likewise.
5924         (VECTOR_MODE (INT, HI, 16)): Likewise.
5925         (VECTOR_MODE (INT, QI, 32)): Likewise.
5926         (VECTOR_MODE (FLOAT, SF, 8)): Likewise.
5927         (INT_MODE (OI, 32)): Likewise.
5928
5929         * config/i386/i386.opt (mavx): New.
5930         (mfma): Likewise.
5931
5932         * config/i386/i386-protos.h (ix86_attr_length_vex_default): New.
5933
5934         * config/i386/mmx.md (*mov<mode>_internal_rex64): Support AVX.
5935         (*mov<mode>_internal_avx): New.
5936         (*movv2sf_internal_rex64_avx): Likewise.
5937         (*movv2sf_internal_avx): Likewise.
5938
5939         * config/i386/predicates.md (const_4_to_5_operand): New.
5940         (const_6_to_7_operand): Likewise.
5941         (const_8_to_11_operand): Likewise.
5942         (const_12_to_15_operand): Likewise.
5943         (avx_comparison_float_operator): Likewise.
5944
5945         * config/i386/sse.md (AVX256MODEI): New.
5946         (AVX256MODE): Likewise.
5947         (AVXMODEQI): Likewise.
5948         (AVXMODE): Likewise.
5949         (AVX256MODEF2P): Likewise.
5950         (AVX256MODE2P): Likewise.
5951         (AVX256MODE4P): Likewise.
5952         (AVX256MODE8P): Likewise.
5953         (AVXMODEF2P): Likewise.
5954         (AVXMODEF4P): Likewise.
5955         (AVXMODEDCVTDQ2PS): Likewise.
5956         (AVXMODEDCVTPS2DQ): Likewise.
5957         (avxvecmode): Likewise.
5958         (avxvecpsmode): Likewise.
5959         (avxhalfvecmode): Likewise.
5960         (avxscalarmode): Likewise.
5961         (avxcvtvecmode): Likewise.
5962         (avxpermvecmode): Likewise.
5963         (avxmodesuffixf2c): Likewise.
5964         (avxmodesuffixp): Likewise.
5965         (avxmodesuffixs): Likewise.
5966         (avxmodesuffix): Likewise.
5967         (vpermilbits): Likewise.
5968         (pinsrbits): Likewise.
5969         (mov<mode>): Likewise.
5970         (*mov<mode>_internal): Likewise.
5971         (push<mode>1): Likewise.
5972         (movmisalign<mode>): Likewise.
5973         (avx_movup<avxmodesuffixf2c><avxmodesuffix>): Likewise.
5974         (avx_movdqu<avxmodesuffix>): Likewise.
5975         (avx_lddqu<avxmodesuffix>): Likewise.
5976         (<plusminus_insn><mode>3): Likewise.
5977         (*avx_<plusminus_insn><mode>3): Likewise.
5978         (*avx_vm<plusminus_insn><mode>3): Likewise.
5979         (mul<mode>3): Likewise.
5980         (*avx_mul<mode>3): Likewise.
5981         (*avx_vmmul<mode>3): Likewise.
5982         (divv8sf3): Likewise.
5983         (divv4df3): Likewise.
5984         (avx_div<mode>3): Likewise.
5985         (*avx_div<mode>3): Likewise.
5986         (*avx_vmdiv<mode>3): Likewise.
5987         (avx_rcpv8sf2): Likewise.
5988         (*avx_vmrcpv4sf2): Likewise.
5989         (sqrtv8sf2): Likewise.
5990         (avx_sqrtv8sf2): Likewise.
5991         (*avx_vmsqrt<mode>2): Likewise.
5992         (rsqrtv8sf2): Likewise.
5993         (avx_rsqrtv8sf2): Likewise.
5994         (*avx_vmrsqrtv4sf2): Likewise.
5995         (<code><mode>3): Likewise.
5996         (*avx_<code><mode>3_finite): Likewise.
5997         (*avx_<code><mode>3): Likewise.
5998         (*avx_vm<code><mode>3): Likewise.
5999         (*avx_ieee_smin<mode>3): Likewise.
6000         (*avx_ieee_smax<mode>3): Likewise.
6001         (avx_addsubv8sf3): Likewise.
6002         (avx_addsubv4df3): Likewise.
6003         (*avx_addsubv4sf3): Likewise.
6004         (*avx_addsubv2df3): Likewise.
6005         (avx_h<plusminus_insn>v4df3): Likewise.
6006         (avx_h<plusminus_insn>v8sf3): Likewise.
6007         (*avx_h<plusminus_insn>v4sf3): Likewise.
6008         (*avx_h<plusminus_insn>v2df3): Likewise.
6009         (avx_cmpp<avxmodesuffixf2c><mode>3): Likewise.
6010         (avx_cmps<ssemodesuffixf2c><mode>3): Likewise.
6011         (*avx_maskcmp<mode>3): Likewise.
6012         (avx_nand<mode>3): Likewise.
6013         (*avx_<code><mode>3): Likewise.
6014         (*avx_nand<mode>3): Likewise.
6015         (*avx_<code><mode>3): Likewise.
6016         (*avx_cvtsi2ss): Likewise.
6017         (*avx_cvtsi2ssq): Likewise.
6018         (*avx_cvtsi2sd): Likewise.
6019         (*avx_cvtsi2sdq): Likewise.
6020         (*avx_cvtsd2ss): Likewise.
6021         (avx_cvtss2sd): Likewise.
6022         (avx_cvtdq2ps<avxmodesuffix>): Likewise.
6023         (avx_cvtps2dq<avxmodesuffix>): Likewise.
6024         (avx_cvttps2dq<avxmodesuffix>): Likewise.
6025         (*avx_cvtsi2sd): Likewise.
6026         (*avx_cvtsi2sdq): Likewise.
6027         (avx_cvtdq2pd256): Likewise.
6028         (avx_cvtpd2dq256): Likewise.
6029         (avx_cvttpd2dq256): Likewise.
6030         (*avx_cvtsd2ss): Likewise.
6031         (*avx_cvtss2sd): Likewise.
6032         (avx_cvtpd2ps256): Likewise.
6033         (avx_cvtps2pd256): Likewise.
6034         (*avx_movhlps): Likewise.
6035         (*avx_movlhps): Likewise.
6036         (avx_unpckhps256): Likewise.
6037         (*avx_unpckhps): Likewise.
6038         (avx_unpcklps256): Likewise.
6039         (*avx_unpcklps): Likewise.
6040         (avx_movshdup256): Likewise.
6041         (avx_movsldup256): Likewise.
6042         (avx_shufps256): Likewise.
6043         (avx_shufps256_1): Likewise.
6044         (*avx_shufps_<mode>): Likewise.
6045         (*avx_loadhps): Likewise.
6046         (*avx_storelps): Likewise.
6047         (*avx_loadlps): Likewise.
6048         (*avx_movss): Likewise.
6049         (*vec_dupv4sf_avx): Likewise.
6050         (*vec_concatv2sf_avx): Likewise.
6051         (*vec_concatv4sf_avx): Likewise.
6052         (*vec_setv4sf_0_avx): Likewise.
6053         (*vec_setv4sf_avx): Likewise.
6054         (*avx_insertps): Likewise.
6055         (avx_vextractf128<mode>): Likewise.
6056         (vec_extract_lo_<mode>): Likewise.
6057         (vec_extract_hi_<mode>): Likewise.
6058         (vec_extract_lo_<mode>): Likewise.
6059         (vec_extract_hi_<mode>): Likewise.
6060         (vec_extract_lo_v16hi): Likewise.
6061         (vec_extract_hi_v16hi): Likewise.
6062         (vec_extract_lo_v32qi): Likewise.
6063         (vec_extract_hi_v32qi): Likewise.
6064         (avx_unpckhpd256): Likewise.
6065         (*avx_unpckhpd): Likewise.
6066         (avx_movddup256): Likewise.
6067         (*avx_movddup): Likewise.
6068         (avx_unpcklpd256): Likewise.
6069         (*avx_unpcklpd): Likewise.
6070         (avx_shufpd256): Likewise.
6071         (avx_shufpd256_1): Likewise.
6072         (*avx_punpckhqdq): Likewise.
6073         (*avx_punpcklqdq): Likewise.
6074         (*avx_shufpd_<mode>): Likewise.
6075         (*avx_storehpd): Likewise.
6076         (*avx_loadhpd): Likewise.
6077         (*avx_loadlpd): Likewise.
6078         (*avx_movsd): Likewise.
6079         (*vec_concatv2df_avx): Likewise.
6080         (*avx_<plusminus_insn><mode>3): Likewise.
6081         (*avx_<plusminus_insn><mode>3): Likewise.
6082         (*avx_mulv8hi3): Likewise.
6083         (*avxv8hi3_highpart): Likewise.
6084         (*avx_umulv8hi3_highpart): Likewise.
6085         (*avx_umulv2siv2di3): Likewise.
6086         (*avx_mulv2siv2di3): Likewise.
6087         (*avx_pmaddwd): Likewise.
6088         (*avx_mulv4si3): Likewise.
6089         (*avx_ashr<mode>3): Likewise.
6090         (*avx_lshr<mode>3): Likewise.
6091         (*avx_ashl<mode>3): Likewise.
6092         (*avx_<code><mode>3): Likewise.
6093         (*avx_eq<mode>3): Likewise.
6094         (*avx_gt<mode>3): Likewise.
6095         (*avx_nand<mode>3): Likewise.
6096         (*avx_nand<mode>3): Likewise.
6097         (*avx_<code><mode>3): Likewise.
6098         (*avx_<code><mode>3): Likewise.
6099         (*avx_packsswb): Likewise.
6100         (*avx_packssdw): Likewise.
6101         (*avx_packuswb): Likewise.
6102         (*avx_punpckhbw): Likewise.
6103         (*avx_punpcklbw): Likewise.
6104         (*avx_punpckhwd): Likewise.
6105         (*avx_punpcklwd): Likewise.
6106         (*avx_punpckhdq): Likewise.
6107         (*avx_punpckldq): Likewise.
6108         (*avx_pinsr<avxmodesuffixs>): Likewise.
6109         (*avx_pinsrq): Likewise.
6110         (*avx_loadld): Likewise.
6111         (*vec_extractv2di_1_rex64_avx): Likewise.
6112         (*vec_extractv2di_1_avx): Likewise.
6113         (*vec_dupv2di_avx): Likewise.
6114         (*vec_concatv2si_avx): Likewise.
6115         (*vec_concatv4si_1_avx): Likewise.
6116         (*vec_concatv2di_avx): Likewise.
6117         (*vec_concatv2di_rex64_avx): Likewise.
6118         (*avx_uavgv16qi3): Likewise.
6119         (*avx_uavgv8hi3): Likewise.
6120         (*avx_psadbw): Likewise.
6121         (avx_movmskp<avxmodesuffixf2c>256): Likewise.
6122         (*avx_phaddwv8hi3): Likewise.
6123         (*avx_phadddv4si3): Likewise.
6124         (*avx_phaddswv8hi3): Likewise.
6125         (*avx_phsubwv8hi3): Likewise.
6126         (*avx_phsubdv4si3): Likewise.
6127         (*avx_phsubswv8hi3): Likewise.
6128         (*avx_pmaddubsw128): Likewise.
6129         (*avx_pmulhrswv8hi3): Likewise.
6130         (*avx_pshufbv16qi3): Likewise.
6131         (*avx_psign<mode>3): Likewise.
6132         (*avx_palignrti): Likewise.
6133         (avx_blendp<avxmodesuffixf2c><avxmodesuffix>): Likewise.
6134         (avx_blendvp<avxmodesuffixf2c><avxmodesuffix>): Likewise.
6135         (avx_dpp<avxmodesuffixf2c><avxmodesuffix>): Likewise.
6136         (*avx_mpsadbw): Likewise.
6137         (*avx_packusdw): Likewise.
6138         (*avx_pblendvb): Likewise.
6139         (*avx_pblendw): Likewise.
6140         (avx_vtestp<avxmodesuffixf2c><avxmodesuffix>): Likewise.
6141         (avx_ptest256): Likewise.
6142         (avx_roundp<avxmodesuffixf2c>256): Likewise.
6143         (*avx_rounds<ssemodesuffixf2c>): Likewise.
6144         (*avx_aesenc): Likewise.
6145         (*avx_aesenclast): Likewise.
6146         (*avx_aesdec): Likewise.
6147         (*avx_aesdeclast): Likewise.
6148         (avx_vzeroupper): Likewise.
6149         (avx_vzeroupper_rex64): Likewise.
6150         (avx_vpermil<mode>): Likewise.
6151         (avx_vpermilvar<mode>3): Likewise.
6152         (avx_vpermil2<mode>3): Likewise.
6153         (avx_vperm2f128<mode>3): Likewise.
6154         (avx_vbroadcasts<avxmodesuffixf2c><avxmodesuffix>): Likewise.
6155         (avx_vbroadcastss256): Likewise.
6156         (avx_vbroadcastf128_p<avxmodesuffixf2c>256): Likewise.
6157         (avx_vinsertf128<mode>): Likewise.
6158         (vec_set_lo_<mode>): Likewise.
6159         (vec_set_hi_<mode>): Likewise.
6160         (vec_set_lo_<mode>): Likewise.
6161         (vec_set_hi_<mode>): Likewise.
6162         (vec_set_lo_v16hi): Likewise.
6163         (vec_set_hi_v16hi): Likewise.
6164         (vec_set_lo_v32qi): Likewise.
6165         (vec_set_hi_v32qi): Likewise.
6166         (avx_maskloadp<avxmodesuffixf2c><avxmodesuffix>): Likewise.
6167         (avx_maskstorep<avxmodesuffixf2c><avxmodesuffix>): Likewise.
6168         (avx_<avxmodesuffixp><avxmodesuffix>_<avxmodesuffixp>): Likewise.
6169         (avx_<avxmodesuffixp>_<avxmodesuffixp><avxmodesuffix>): Likewise.
6170         (vec_init<mode>): Likewise.
6171         (*vec_concat<mode>_avx): Likewise.
6172         (blendbits): Support V8SF and V4DF.
6173         (sse2_movq128): Support AVX.
6174         (<sse>_movnt<mode>): Likewise.
6175         (sse2_movntv2di): Likewise.
6176         (sse_rcpv4sf2): Likewise.
6177         (sse_sqrtv4sf2): Likewise.
6178         (sse_rsqrtv4sf2): Likewise.
6179         (<sse>_comi): Likewise.
6180         (<sse>_ucomi): Likewise.
6181         (sse_cvtss2si): Likewise.
6182         (sse_cvtss2si_2): Likewise.
6183         (sse_cvtss2siq): Likewise.
6184         (sse_cvtss2siq_2): Likewise.
6185         (sse_cvttss2si): Likewise.
6186         (sse_cvttss2siq): Likewise.
6187         (sse2_cvtsd2si): Likewise.
6188         (sse2_cvtsd2si_2): Likewise.
6189         (sse2_cvtsd2siq): Likewise.
6190         (sse2_cvtsd2siq_2): Likewise.
6191         (sse2_cvttsd2si): Likewise.
6192         (sse2_cvttsd2siq): Likewise.
6193         (sse2_cvtdq2pd): Likewise.
6194         (*sse2_cvtpd2dq): Likewise.
6195         (*sse2_cvttpd2dq): Likewise.
6196         (*sse2_cvtpd2ps): Likewise.
6197         (sse2_cvtps2pd): Likewise.
6198         (sse3_movshdup): Likewise.
6199         (sse3_movsldup): Likewise.
6200         (sse_storehps): Likewise.
6201         (*sse4_1_extractps): Likewise.
6202         (sse2_storelpd): Likewise.
6203         (vec_dupv2df_sse3): Likewise.
6204         (*vec_concatv2df_sse3): Likewise.
6205         (*sse4_1_pextrb): Likewise.
6206         (*sse4_1_pextrb_memory): Likewise.
6207         (*sse2_pextrw): Likewise.
6208         (*sse4_1_pextrw_memory): Likewise.
6209         (*sse4_1_pextrd): Likewise.
6210         (*sse4_1_pextrq): Likewise.
6211         (sse2_pshufd_1): Likewise.
6212         (sse2_pshuflw_1): Likewise.
6213         (sse2_pshufhw_1): Likewise.
6214         (*sse2_storeq_rex64): Likewise.
6215         (*vec_dupv4si): Likewise.
6216         (<sse>_movmskp<ssemodesuffixf2c>): Likewise.
6217         (sse2_pmovmskb): Likewise.
6218         (*sse2_maskmovdqu): Likewise.
6219         (*sse2_maskmovdqu_rex64): Likewise.
6220         (sse_ldmxcsr): Likewise.
6221         (sse_stmxcsr): Likewise.
6222         (abs<mode>2): Likewise.
6223         (sse4_1_movntdqa): Likewise.
6224         (sse4_1_phminposuw): Likewise.
6225         (sse4_1_extendv8qiv8hi2): Likewise.
6226         (*sse4_1_extendv8qiv8hi2): Likewise.
6227         (sse4_1_extendv4qiv4si2): Likewise.
6228         (*sse4_1_extendv4qiv4si2): Likewise.
6229         (sse4_1_extendv2qiv2di2): Likewise.
6230         (*sse4_1_extendv2qiv2di2): Likewise.
6231         (sse4_1_extendv4hiv4si2): Likewise.
6232         (*sse4_1_extendv4hiv4si2): Likewise.
6233         (sse4_1_extendv2hiv2di2): Likewise.
6234         (*sse4_1_extendv2hiv2di2): Likewise.
6235         (sse4_1_extendv2siv2di2): Likewise.
6236         (*sse4_1_extendv2siv2di2): Likewise.
6237         (sse4_1_zero_extendv8qiv8hi2): Likewise.
6238         (*sse4_1_zero_extendv8qiv8hi2): Likewise.
6239         (sse4_1_zero_extendv4qiv4si2): Likewise.
6240         (*sse4_1_zero_extendv4qiv4si2): Likewise.
6241         (sse4_1_zero_extendv2qiv2di2): Likewise.
6242         (*sse4_1_zero_extendv2qiv2di2): Likewise.
6243         (sse4_1_zero_extendv4hiv4si2): Likewise.
6244         (*sse4_1_zero_extendv4hiv4si2): Likewise.
6245         (sse4_1_zero_extendv2hiv2di2): Likewise.
6246         (*sse4_1_zero_extendv2hiv2di2): Likewise.
6247         (sse4_1_zero_extendv2siv2di2): Likewise.
6248         (*sse4_1_zero_extendv2siv2di2): Likewise.
6249         (sse4_1_ptest): Likewise.
6250         (sse4_1_roundp<ssemodesuffixf2c>): Likewise.
6251         (sse4_2_pcmpestri): Likewise.
6252         (sse4_2_pcmpestrm): Likewise.
6253         (sse4_2_pcmpistri): Likewise.
6254         (sse4_2_pcmpistrm): Likewise.
6255         (aesimc): Likewise.
6256         (aeskeygenassist): Likewise.
6257
6258 2008-08-28  Uros Bizjak  <ubizjak@gmail.com>
6259
6260         * config/i386/predicates.md (vzeroall_operation): New.
6261
6262         * config/i386/sse.md (avx_vzeroall): New.
6263         (*avx_vzeroall): Likewise.
6264
6265 2008-08-28  Paul Brook  <paul@codesourcery.com>
6266             Mark Shinwell  <shinwell@codesourcery.com>
6267             Richard Earnshaw  <richard.earnshaw@arm.com>
6268
6269         * config/arm/arm.c (TARGET_MAX_ANCHOR_OFFSET): New.
6270         (TARGET_MIN_ANCHOR_OFFSET): New.
6271         (arm_override_options): Set correct anchor ranges for Thumb-1
6272         and Thumb-2 if required.
6273         (legitimize_pic_address): Handle case involving a TLS symbol
6274         reference with an addend.
6275         (arm_optimization_options): Enable section anchors at -O1 and
6276         above.
6277         * config/arm/arm.h (OPTIMIZATION_OPTIONS): New.
6278         * config/arm/arm-protos.h (arm_optimization_options): New.
6279
6280 2008-08-28  Nick Clifton  <nickc@redhat.com>
6281
6282         * config/stormy16/stormy16.h (IRA_COVER_CLASSES): Define.
6283         * config/stormy16/stormy16.md (zero_extendqihi2): Fix length
6284         attribute.
6285
6286         * config/v850/v850.h (IRA_COVER_CLASSES): Define.
6287         * config/v850/v850.md (return): Remove frame size restriction.
6288
6289         * config/mcore/mcore.h (IRA_COVER_CLASSES): Define.
6290
6291         * config/iq2000/iq2000.h (IRA_COVER_CLASSES): Define.
6292
6293         * config/fr30/fr30.h (IRA_COVER_CLASSES): Define.
6294
6295         * config/m32r/m32r.h (IRA_COVER_CLASSES): Define.
6296
6297 2008-08-28  Paul Brook  <paul@codesourcery.com>
6298
6299         * config/arm/vfp11.md: Update license notice.
6300         * config/arm/cortex-r4.md: Ditto.
6301
6302 2008-08-28  Richard Guenther  <rguenther@suse.de>
6303
6304         PR tree-optimization/37207
6305         * tree-ssa-ifcombine.c (recognize_single_bit_test): Fix
6306         tuplification bug.
6307
6308 2008-08-28  Dodji Seketeli  <dodji@redhat.com>
6309
6310         PR c++/36741
6311         * tree.c (int_fits_type_p): Don't forget unsigned integers
6312           of type sizetype which higher end word equals -1.
6313
6314 2008-08-28  Ira Rosen  <irar@il.ibm.com>
6315
6316         * target.h (struct vectorize): Add new target builtin.
6317         * tree-vectorizer.c (destroy_loop_vec_info): Call
6318         vect_free_slp_instance instead of vect_free_slp_node.
6319         * tree-vectorizer.h (enum slp_load_perm_type): New.
6320         (struct _slp_instance): Add new fields.
6321         (SLP_INSTANCE_LOAD_PERMUTATION): New.
6322         (SLP_INSTANCE_LOADS): New.
6323         (vect_free_slp_tree): Remove.
6324         (vect_free_slp_instance): Declare.
6325         (SLP_TREE_LOADS_PERM_TYPE, TARG_VEC_PERMUTE_COST): New.
6326         (vectorizable_load): Add argument.
6327         (vect_transform_slp_perm_load): New.
6328         * tree-vect-analyze.c (vect_analyze_operations): Add an argument to
6329         vectorizable_load.
6330         (vect_get_place_in_interleaving_chain): New function.
6331         (vect_free_slp_tree): Make static.
6332         (vect_free_slp_instance): New function.
6333         (vect_build_slp_tree): Add new arguments. Allow load permutations and
6334         collect the load location in the interleaving chain.
6335         (vect_supported_slp_permutation_p): New function.
6336         (vect_supported_load_permutation_p): Likewise.
6337         (vect_analyze_slp_instance): In case of loads permutation, call
6338         vect_supported_load_permutation_p to check that the permutation is
6339         supported.
6340         * target-def.h (TARGET_VECTORIZE_BUILTIN_VEC_PERM): New.
6341         * tree-vect-transform.c (vect_transform_stmt): Add new argument.
6342         (vect_create_mask_and_perm): New function.
6343         (vect_get_mask_element, vect_transform_slp_perm_load): Likewise.
6344         (vectorizable_load): Add an argument. Don't keep the created vectors
6345         statements in the node if permutation is required. Call
6346         vect_transform_slp_perm_load to generate the permutation.
6347         (vect_transform_stmt): Add new argument. Call vectorizable_load with
6348         additional argument.
6349         (vect_schedule_slp_instance): In case of loads permutation, allocate
6350         vectorized statements structure for all the related SLP nodes. Call
6351         vect_transform_stmt with addditional argument.
6352         (vect_transform_loop): Call vect_transform_stmt with correct arguments.
6353         * config/spu/spu.c (spu_builtin_vec_perm): New.
6354         (TARGET_VECTORIZE_BUILTIN_VEC_PERM): Redefine.
6355         * config/spu/spu.h (TARG_VEC_PERMUTE_COS): Define.
6356         * config/rs6000/rs6000.c (rs6000_builtin_vec_perm): New.
6357         (TARGET_VECTORIZE_BUILTIN_VEC_PERM): Redefine.
6358
6359 2008-08-28  Chris Fairles  <chris.fairles@gmail.com>
6360
6361         * gthr-posix.h (__gthread_create,  __gthread_join, __gthread_detach,
6362         __gthread_mutex_timed_lock, __gthread_recursive_mutex_timed_lock,
6363         __gthread_cond_signal, __gthread_cond_timedwait,
6364         __gthread_cond_timedwait_recursive): New functions.
6365         * gthr-posix.c (pthread_mutex_timedlock, pthread_cond_timedwait):
6366         Likewise.
6367         * gthr.h: Comment on defining __GTHREADS_CXX0X macro in conforming
6368         thread interfaces.
6369
6370 2008-08-28  Richard Guenther  <rguenther@suse.de>
6371
6372         PR middle-end/37005
6373         * fold-const.c (maybe_canonicalize_comparison_1): Require
6374         undefined overflow only for canonicalizing A +- CST cmp CST.
6375         Make sure to not generate new constants that are not inside
6376         their TYPE_MIN/MAX_VALUE range.
6377         (maybe_canonicalize_comparison): Remove undefined overflow
6378         checking from here.
6379         (fold_binary): Remove now duplicate folding.
6380
6381 2008-08-27  Paolo Carlini  <paolo.carlini@oracle.com>
6382
6383         * c-typeck.c (convert_for_assignment): Adjust WARN_FOR_ASSIGNMENT
6384         use not updated in the last change.
6385
6386 2008-08-27  Kaz Kojima  <kkojima@gcc.gnu.org>
6387
6388         * config/sh/sh.h (REG_CLASS_CONTENTS): Drop fr32 from FPUL_REGS.
6389         (IRA_COVER_CLASSES): Add FPUL_REGS.
6390
6391 2008-08-27  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
6392
6393         PR 37217
6394         * c-common.c (conversion_warning): Check for null operands.
6395
6396 2008-08-27  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
6397
6398         PR c/31673
6399         * c-decl.c (check_for_loop_decls): Improve error message. Give
6400         hint.
6401
6402 2008-08-27  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
6403
6404         PR c/37186
6405         * c-typeck.c (WARN_FOR_ASSIGNMENT): Add OPT parameter.
6406         (convert_for_assignment): Pass corrent OPT_W* parameter to
6407         WARN_FOR_ASSIGNMENT.
6408
6409 2008-08-27  Paolo Carlini  <paolo.carlini@oracle.com>
6410
6411         PR c++/35321
6412         * c-common.c (fold_offsetof_1): Handle TARGET_EXPR like CALL_EXPR.
6413
6414 2008-08-27  Paul Brook  <paul@codesourcery.com>
6415
6416         * config.gcc: Loosen checks for arm uclinux eabi targets.
6417
6418 2008-08-27  Paul Brook  <paul@codesourcery.com>
6419
6420         * config/arm/t-arm-coff (LIB1ASMFUNCS): Add missing undescrore on
6421         _clzsi2.
6422         * config/arm/t-linux (LIB1ASMFUNCS): Ditto.
6423
6424 2008-08-26  Douglas Gregor  <doug.gregor@gmail.com>
6425
6426         * c-common.c (do_switch_warnings): Look through the CONST_DECLs in
6427         the enumerators of an ENUMERAL_TYPE.
6428         * dbxout.c (dbxout_type): Ditto.
6429
6430 2008-08-26  Andrew Pinski  <andrew_pinski@playstation.sony.com>
6431
6432         PR rtl-opt/37219
6433         * fwprop.c (fwprop): Check that the loop_father is the outer loop.
6434         (fwprop_addr): Check that the loop_father is not the outer loop.
6435
6436 2008-08-26  Paul Brook  <paul@codesourcery.com>
6437
6438         * config/arm/vfp.md: Document fmul{s,d} and fmac{s,d} types.
6439         Remove documentation entry for fmul type.
6440         Use fmuls to annotate single-precision multiplication patterns,
6441         fmuld to annotate double-precision multiplication patterns,
6442         fmacs to annotate single-precision multiply-accumulate patterns
6443         and fmacd to annotate double-precision multiply-accumulate patterns.
6444         * config/arm/vfp11.md: Update reservations accordingly.
6445         * config/arm/arm.md: Note that certain values of the "type"
6446         attribute are documented in vfp.md.
6447         * config/arm/arm1020e.md: Remove out of date duplicate comment.
6448         (v10_cvt): Use new fmul types.
6449
6450 2008-08-26  Paul Brook  <paul@codesourcery.com>
6451
6452         * config/arm/vfp.md: Move pipeline description for VFP11 to...
6453         * config/arm/vfp11.md: ...here.  New.
6454         * config/arm/arm.md: Include vfp11.md.
6455
6456 2008-08-26  Hans-Peter Nilsson  <hp@axis.com>
6457
6458         * opts.c (decode_options) [!IRA_COVER_CLASSES]: Add missing
6459         parameter to inform call.
6460
6461 2008-08-26  Jeff Law  <law@redhat.com>
6462
6463         * mn10300.md (movqi, movhi): Split i->d*a case into two cases to
6464         avoid the possibility of getting DATA_OR_ADDRESS_REGS as the
6465         preferred class when copying a constant into a partial word register.
6466
6467 2008-08-26  Ben Elliston  <bje@au.ibm.com>
6468
6469         * rtlanal.c: Fix uses of "it's" with "its" where appropriate.
6470         * cp/typeck.c: Likewise.
6471         * cp/tree.c: Likewise.
6472         * gimple-low.c: Likewise.
6473         * jump.c: Likewise.
6474
6475 2008-08-26  Vladimir Makarov  <vmakarov@redhat.com>
6476
6477         * ira-build.c, ira-color.c, ira-costs.c, ira.h, ira-lives.c,
6478         ira.c, ira-conflicts.c, ira-emit.c, ira-int.h: New files.
6479
6480         * doc/passes.texi: Describe IRA.
6481
6482         * doc/tm.texi (IRA_COVER_CLASSES,
6483         IRA_HARD_REGNO_ADD_COST_MULTIPLIER): Describe the new macros.
6484
6485         * doc/invoke.texi (ira-max-loops-num): Describe the new parameter.
6486         (-fira, -fira-algorithm, -fira-coalesce, -fno-ira-move-spills,
6487         -fira-propagate-cost, -fno-ira-share-save-slots,
6488         -fno-ira-share-spill-slots, -fira-verbose): Describe new options.
6489
6490         * flags.h (ira_algorithm): New enumeration.
6491         (flag_ira_algorithm, flag_ira_verbose): New external variable
6492         declarations.
6493
6494         * postreload.c (gate_handle_postreload): Don't do post reload
6495         optimizations unless the reload is completed.
6496
6497         * reload.c (push_reload, find_dummy_reload): Use DF_LR_OUT for
6498         IRA.
6499
6500         * tree-pass.h (pass_ira): New external variable declaration.
6501
6502         * reload.h: Add 2008 to the Copyright.
6503
6504         * cfgloopanal.c: Include params.h.
6505         (estimate_reg_pressure_cost): Decrease cost for IRA optimization
6506         mode.
6507
6508         * params.h (IRA_MAX_LOOPS_NUM): New macro.
6509
6510         * toplev.c (ira.h): New include.
6511         (flag_ira_algorithm, flag_ira_verbose): New external variables.
6512         (backend_init_target): Call ira_init.
6513         (backend_init): Call ira_init_once.
6514         (finalize): Call finish_ira_once.
6515
6516         * toplev.h (flag_ira, flag_ira_coalesce, flag_ira_move_spills,
6517         flag_ira_share_save_slots, flag_ira_share_spill_slots): New
6518         external variables.
6519
6520         * regs.h (contains_reg_of_mode, move_cost, may_move_in_cost,
6521         may_move_out_cost): New external variable declarations.
6522         (move_table): New typedef.
6523
6524         * caller-save.c: Include headers output.h and ira.h.
6525         (no_caller_save_reg_set): New global variable.
6526         (save_slots_num, save_slots): New variables.
6527         (reg_save_code, reg_restore_code, add_stored_regs): Add
6528         prototypes.
6529         (init_caller_save): Set up no_caller_save_reg_set.
6530         (init_save_areas): Reset save_slots_num.
6531         (saved_hard_reg): New structure.
6532         (hard_reg_map, saved_regs_num, all_saved_regs): New variables.
6533         (initiate_saved_hard_regs, new_saved_hard_reg,
6534         finish_saved_hard_regs, saved_hard_reg_compare_func): New
6535         functions.
6536         (setup_save_areas): Add code for sharing stack slots.
6537         (all_blocks): New variable.
6538         (save_call_clobbered_regs): Process pseudo-register too.
6539         (mark_set_regs): Process pseudo-register too.
6540         (insert_one_insn): Put the insn after bb note in a empty basic
6541         block.  Add insn check.
6542
6543         * global.c (eliminable_regset): Make it external.
6544         (mark_elimination): Use DF_LR_IN for IRA.
6545         (pseudo_for_reload_consideration_p): New.
6546         (build_insn_chain): Make it external.  Don't ignore spilled
6547         pseudos for IRA.  Use pseudo_for_reload_consideration_p.
6548         (gate_handle_global_alloc): New function.
6549         (pass_global_alloc): Add the gate function.
6550
6551         * opts.c (decode_options): Set up flag_ira.  Print the warning for
6552         -fira.
6553         (common_handle_option): Process -fira-algorithm and -fira-verbose.
6554
6555         * timevar.def (TV_IRA, TV_RELOAD): New passes.
6556
6557         * regmove.c (regmove_optimize): Don't do replacement of output for
6558         IRA.
6559
6560         * hard-reg-set.h (no_caller_save_reg_set, reg_class_subclasses):
6561         New external variable declarations.
6562
6563         * local-alloc.c (update_equiv_regs): Make it external.  Return
6564         true if jump label rebuilding should be done.  Rescan new_insn for
6565         notes.
6566         (gate_handle_local_alloc): New function.
6567         (pass_local_alloc): Add the gate function.
6568
6569         * alias.c (value_addr_p, stack_addr_p): New functions.
6570         (nonoverlapping_memrefs_p): Use them for IRA.
6571
6572         * common.opt (fira, fira-algorithm, fira-coalesce,
6573         fira-move-spills, fira-share-save-slots, fira-share-spill-slots,
6574         fira-verbose): New options.
6575
6576         * regclass.c (reg_class_subclasses, contains_reg_of_mode,
6577         move_cost, may_move_in_cost, may_move_out_cost): Make the
6578         variables external.
6579         (move_table): Remove typedef.
6580         (init_move_cost): Make it external.
6581         (allocate_reg_info, resize_reg_info, setup_reg_classes): New
6582         functions.
6583
6584         * rtl.h (init_move_cost, allocate_reg_info, resize_reg_info,
6585         setup_reg_classes): New function prototypes.
6586         (eliminable_regset): New external variable declaration.
6587         (build_insn_chain, update_equiv_regs): New function prototypes.
6588
6589         * Makefile.in (IRA_INT_H): New definition.
6590         (OBJS-common): Add ira.o, ira-build.o, ira-costs.o,
6591         ira-conflicts.o, ira-color.o, ira-emit.o, and ira-lives.o.
6592         (reload1.o, toplev.o): Add dependence on ira.h.
6593         (cfgloopanal.o): Add PARAMS_H.
6594         (caller-save.o): Add dependence on output.h and ira.h.
6595         (ira.o, ira-build.o, ira-costs.o, ira-conflicts.o, ira-color.o,
6596         ira-emit.o, ira-lives.o): New entries.
6597
6598         * passes.c (pass_ira): New pass.
6599
6600         * params.def (PARAM_IRA_MAX_LOOPS_NUM): New parameter.
6601
6602         * reload1.c (ira.h): Include the header.
6603         (changed_allocation_pseudos): New bitmap.
6604         (init_reload): Initiate the bitmap.
6605         (compute_use_by_pseudos): Permits spilled registers in FROM.
6606         (temp_pseudo_reg_arr): New variable.
6607         (reload): Allocate and free temp_pseudo_reg_arr.  Sort pseudos for
6608         IRA.  Call alter_reg with the additional parameter.  Don't clear
6609         spilled_pseudos for IRA.  Restore original insn chain for IRA.
6610         Clear changed_allocation_pseudos at the end of reload.
6611         (calculate_needs_all_insns): Call IRA's mark_memory_move_deletion.
6612         (hard_regno_to_pseudo_regno): New variable.
6613         (count_pseudo): Check spilled pseudos.  Set up
6614         hard_regno_to_pseudo_regno.
6615         (count_spilled_pseudo): Check spilled pseudos. Update
6616         hard_regno_to_pseudo_regno.
6617         (find_reg): Use better_spill_reload_regno_p.  Check
6618         hard_regno_to_pseudo_regno.
6619         (alter_reg): Set up spilled_pseudos.  Add a new parameter.  Add
6620         code for IRA.
6621         (eliminate_regs_1): Use additional parameter for alter_reg.
6622         (finish_spills): Set up pseudo_previous_regs only for spilled
6623         pseudos.  Call reassign_pseudos once for all spilled pseudos, pass
6624         more arguments.  Don't clear live_throughout and dead_or_set for
6625         spilled pseudos.  Use additional parameter for alter_reg.  Call
6626         mark_allocation_change.  Set up changed_allocation_pseudos.
6627         Remove sanity check.
6628         (emit_input_reload_insns, delete_output_reload): Use additional
6629         parameter for alter_reg.  Call mark_allocation_change.
6630         (substitute, gen_reload_chain_without_interm_reg_p): New
6631         functions.
6632         (reloads_conflict): Use gen_reload_chain_without_interm_reg_p.
6633
6634         * testsuite/gcc.dg/20080410-1.c: New file.
6635
6636         * config/s390/s390.h (IRA_COVER_CLASSES,
6637         IRA_HARD_REGNO_ADD_COST_MULTIPLIER): Define.
6638
6639         * config/sparc/sparc.h (IRA_COVER_CLASSES): New macro.
6640
6641         * config/i386/i386.h (IRA_COVER_CLASSES): Ditto.
6642
6643         * config/ia64/ia64.h (IRA_COVER_CLASSES): Ditto.
6644
6645         * config/rs6000/rs6000.h (IRA_COVER_CLASSES): Ditto.
6646
6647         * config/arm/arm.h (IRA_COVER_CLASSES): Ditto.
6648
6649         * config/alpha/alpha.h (IRA_COVER_CLASSES): Ditto.
6650
6651         2008-08-24  Jeff Law  <law@redhat.com>
6652         * ira.c (setup_reg_class_intersect_union): Prefer smallest class
6653         when ignoring unavailable registers.
6654
6655         2008-08-24  Jeff Law  <law@redhat.com>
6656         * ira-color.c (coalesced_pseudo_reg_slot_compare): Check
6657         FRAME_GROWS_DOWNWARD and STACK_GROWS_DOWNWARD.
6658         * ira.c (setup_eliminable_regset): Check stack_realign_needed.
6659         * config/mn10300/mn10300.h (IRA_COVER_CLASSES): New macro.
6660
6661         2008-06-03 Steve Chamberlain <steve.chamberlain@gmail.com>
6662         * ira-build.c (allocno_range_compare_func): Stabilize sort.
6663
6664         2008-05-29 Andy Hutchinson <hutchinsonandy@aim.com>
6665         * config/avr/avr.h (IRA_COVER_CLASSES): New macro.
6666         * reload1.c (find_reg): Process registers in register allocation order.
6667
6668         2008-05-10 Richard Sandiford <rsandifo@nildram.co.uk>
6669         * toplev.c (backend_init_target): Move ira_init call from
6670         here...
6671         (lang_dependent_init_target): ...to here.
6672
6673         2008-05-10 Richard Sandiford <rsandifo@nildram.co.uk>
6674         * ira.c (setup_class_subset_and_memory_move_costs): Don't
6675         calculate memory move costs for NO_REGS.
6676
6677         2008-05-05 Kaz Kojima <kkojima@gcc.gnu.org>
6678         * ira-color.c (ira_fast_allocation): Use no_stack_reg_p only if
6679         STACK_REGS is defined.
6680
6681         2008-04-08 Andrew Pinski <andrew_pinski@playstation.sony.com>
6682         * config/spu/spu.h (IRA_COVER_CLASSES): New macro.
6683
6684         2008-04-04 Bernd Schmidt <bernd.schmidt@analog.com>
6685         * config/bfin/bfin.h (IRA_COVER_CLASSES): New macro.
6686
6687         2008-04-04 Kaz Kojima <kkojima@gcc.gnu.org>
6688         * config/sh/sh.h (IRA_COVER_CLASSES): Define.
6689         * config/sh/sh.md (movsicc_true+3): Check if emit returns a
6690         barrier.
6691
6692 2008-08-26  Victor Kaplansky  <victork@il.ibm.com>
6693             Dorit Nuzman  <dorit@il.ibm.com>
6694
6695         * gcc/config/spu/spu.md (vec_extract_evenv4si,
6696         vec_extract_evenv4sf, vec_extract_evenv8hi,
6697         vec_extract_evenv16qi, vec_extract_oddv4si,
6698         vec_extract_oddv4sf, vec_extract_oddv8hi, vec_extract_oddv16qi,
6699         vec_interleave_highv4sf, vec_interleave_lowv4sf,
6700         vec_interleave_highv4si, vec_interleave_lowv4si,
6701         vec_interleave_highv8hi, vec_interleave_lowv8hi,
6702         vec_interleave_highv16qi, vec_interleave_lowv16qi,
6703         vec_pack_trunc_v8hi, vec_pack_trunc_v4si): Implement.S
6704
6705 2008-08-25  Janis Johnson  <janis187@us.ibm.com>
6706
6707         PR target/36756
6708         * config/rs6000/rs6000.c (optimization_options): Don't default to
6709         section anchors without toplevel reorder.
6710
6711 2008-08-25  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
6712
6713         * config/spu/spu_mfcio.h (mfc_begin_critical_section): New function.
6714         (mfc_end_critical_section): Likewise.
6715
6716 2008-08-25  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
6717
6718         * config/rs6000/rs6000.c (rs6000_handle_altivec_attribute): Propagate
6719         all type qualifiers from element type to vector type.
6720
6721 2008-08-25  David Daney  <ddaney@avtrex.com>
6722
6723         * config/mips/mips.md (immediate_insn): Move up in file, fix
6724         comment typo, reformat.
6725         (fetchop_bit, atomic_hiqi_op memory_barrier,
6726         sync_compare_and_swap<mode>, compare_and_swap_12, sync_add<mode>,
6727         sync_<optab><mode>, sync_<optab>_12, sync_old_<optab><mode>,
6728         sync_old_<optab>_12, sync_new_<optab><mode>, sync_new_<optab>_12,
6729         sync_nand<mode>, sync_nand_12, sync_old_nand<mode>,
6730         sync_old_nand_12, sync_new_nand<mode>, sync_new_nand_12,
6731         sync_sub<mode>, sync_old_add<mode>, sync_old_sub<mode>,
6732         sync_new_add<mode>, sync_new_sub<mode>, sync_<optab><mode>,
6733         sync_old_<optab><mode>, sync_new_<optab><mode>, sync_nand<mode>,
6734         sync_old_nand<mode>, sync_new_nand<mode>,
6735         sync_lock_test_and_set<mode>, sync_lock_test_and_set<mode>,
6736         test_and_set_12): Moved to sync.md.
6737         (sync.md): Include.
6738         * config/mips/sync.md: New file.
6739
6740 2008-08-25  Richard Henderson  <rth@redhat.com>
6741
6742         * dwarf2out.c (def_cfa_1): Don't scale by DWARF_CIE_DATA_ALIGNMENT.
6743         (regsave): Likewise.
6744         (lookup_cfa_1): Don't rescale by DWARF_CIE_DATA_ALIGNMENT.
6745         (output_cfi_directive): Likewise.
6746         (div_data_align): New.
6747         (output_cfi): Use it.
6748
6749 2008-08-24  Adam Nemet  <anemet@caviumnetworks.com>
6750
6751         * config.gcc (mips64*-*-linux*): Handle mips64octeon*-*-linux*.
6752         * config/mips/mips.h (enum processor_type): Add PROCESSOR_OCTEON.
6753         (TARGET_OCTEON): New macro.
6754         (TARGET_CPU_CPP_BUILTINS): Define __OCTEON__ for Octeon.
6755         (MIPS_ISA_LEVEL_SPEC, MIPS_ARCH_FLOAT_SPEC): Handle -march=octeon.
6756         (ISA_HAS_POP): New macro.
6757         * config/mips/driver-native.c (host_detect_local_cpu): Handle
6758         Octeon.
6759         * config/mips/mips.c (mips_cpu_info_table, mips_rtx_cost_data):
6760         Handle Octeon.
6761         * config/mips/mips.md (cpu): Add octeon.
6762         (type): Add pop attribute value.
6763         (popcount<mode>2): New pattern.
6764         * doc/invoke.texi (-march=@var{arch}): Add octeon.
6765
6766 2008-08-24  Jan Hubicka  <jh@suse.cz>
6767
6768         * doc/invoke.texi (-fipa-cp-clone): New option.
6769         (-fipa-cp): Update docs.
6770         (--param ipcp-unit-growth):New.
6771         * ipa-cp.c: Include fibheap.h, params.h
6772         (ipcp_initialize_node_lattices): When not cloning, all externally
6773         visible functions are bottom.
6774         (ipcp_need_redirect_p): Accept clones.
6775         (ipcp_insert_stage): Use cost driven heuristics.
6776         (max_count, dead_nodes): New static vars.
6777         (ipcp_need_original_clone_p, ipcp_estimate_cloning_cost,
6778         ipcp_const_param_count): New functions.
6779         * common.opt (ipa-cp-clone): New command line option.
6780         * params.def (ipcp-unit-growth): New.
6781
6782 2008-08-24  Jan Hubicka  <jh@suse.cz>
6783
6784         * tree-inline.c (tree_function_versioning): Look harder
6785         for referenced vars.
6786
6787 2008-08-24  Razya Ladelsky  <razya@il.ibm.com>
6788
6789         PR tree-optimization/37185
6790         * matrix-reorg.c (transform_access_sites): Update changed stmt.
6791
6792 2008-08-23  Jan Hubicka  <jh@suse.cz>
6793
6794         * ipa-cp.c (ipcp_analyze_node): New function.
6795         (ipcp_update_cloned_node): Use it.
6796         (ipcp_init_stage): Likewise.
6797         * ipa-inline.c (function_insertion_hook_holder): New static var.
6798         (analyze_function): Break out from ....
6799         (inline_generate_summary): Here; register insertion hook.
6800         (cgraph_decide_inlining): Remove hook.
6801         (add_new_function): New function.
6802
6803 2008-08-23  Jan Hubicka  <jh@suse.cz>
6804
6805         * opts.c (decode_options): Revert accidental change enabling ipa-cp.
6806
6807 2008-08-23  Jan Hubicka  <jh@suse.cz>
6808
6809         * ipa-cp.c (constant_val_insert): Remove.
6810         (ipcp_propagate_one_const): Remove.
6811         (ipcp_create_replace_map): Always insert replacements to the map.
6812         (ipcp_insert_stage): Do not try to insert statements by hand.
6813         * tree-inline.c (insert_init_stmt): Break out from ...
6814         (setup_one_parameter): ... here; allow NULL BB pointer.
6815         (tree_function_versioning): Use setup_one_parameter to process
6816         replacement map.
6817
6818 2008-08-23  Jan Hubicka  <jh@suse.cz>
6819
6820         * tree.c (decl_address_ip_invariant_p): New function.
6821         * tree.h (decl_address_ip_invariant_p): Declare.
6822         * gimple.c (strip_invariant_refs): Break out from ...
6823         (is_gimple_invariant_address): ... here
6824         (is_gimple_ip_invariant_address): New function.
6825         (is_gimple_ip_invariant): New function.
6826         * gimple.h (is_gimple_ip_invariant_address, is_gimple_ip_invariant):
6827         Declare.
6828
6829         * ipa-cp.c (ipcp_lat_is_const): Remove handling of IPA_CONST_VALUE_REF.
6830         (ipcp_lat_is_insertable): All constants are insertable.
6831         (ipcp_lattice_from_jfunc, ipcp_print_all_lattices): Remove handling of
6832         IPA_CONST_VALUE_REF.
6833         (ipcp_initialize_node_lattices): Propagate all types of operands.
6834         (build_const_val): Do not handle IPA_CONST_VALUE_REF.
6835         (ipcp_create_replace_map): Reformat.
6836         (ipcp_need_redirect_p): Simplify.
6837         (ipcp_insert_stage): Check that argument is used before clonning.
6838         * ipa-prop.c (ipa_print_node_jump_functions): Do not handle
6839         IPA_CONST_REF.
6840         (compute_scalar_jump_functions): Simplify using is_gimple_ip_invariat.
6841         (determine_cst_member_ptr): Keep wrapping ADDR_EXPR of members.
6842         (update_call_notes_after_inlining): Expect ADDR_EXPR in operand.
6843         * ipa-prop.h (jump_func_type): Remove IPA_CONST_REF.
6844         (jump_func_type): Remove IPA_CONST_VALUE_REF.
6845         * tree-inline.c (tree_function_versioning): Add variables referenced
6846         by replacing trees.
6847
6848 2008-08-23  Jan Hubicka  <jh@suse.cz>
6849
6850         PR target/37094
6851         * i386.c (standard_80387_constant_p): Use optimize_size.
6852
6853 2008-08-23  Ira Rosen  <irar@il.ibm.com>
6854
6855         PR tree-optimization/37161
6856         * tree-vectorizer.h (vect_get_smallest_scalar_type): Declare.
6857         * tree-vect-analyze.c (vect_get_smallest_scalar_type): New function.
6858         (vect_determine_vectorization_factor): Move the scalar type
6859         retrieval to vect_get_smallest_scalar_type.
6860         (vect_build_slp_tree): Call vect_get_smallest_scalar_type to get
6861         scalar type. Remove redundant computation.
6862         * tree-vect-transform.c (vect_get_constant_vectors): Add argument.
6863         (vect_get_slp_defs): Take the type of RHS into account if
6864         necessary by calling vect_get_smallest_scalar_type. Call
6865         vect_get_constant_vectors with additional argument.
6866
6867 2008-08-23  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
6868
6869         PR 35648
6870         * doc/invoke.texi (Wwrite-strings): Clarify description.
6871
6872 2008-08-23  Ira Rosen  <irar@il.ibm.com>
6873
6874         PR tree-optimization/37174
6875         * tree-vect-analyze.c (vect_get_and_check_slp_defs): Check that the
6876         def stmt is a part of the loop before accessing its stmt_vec_info.
6877
6878 2008-08-22  Anatoly Sokolov  <aesok@post.ru>
6879
6880         PR target/11259
6881         * config/avr/avr.md (UNSPEC_SWAP): New constants.
6882         (*swap): New insn pattern.
6883         (*ashlqi3): Rename from ashlqi3 insn pattern.
6884         (ashlqi3): New expanders.
6885         (*lshrqi3): Rename from lshrqi3 insn pattern.
6886         (lshrqi3): New expanders.
6887         (ashlqi3_const4, ashlqi3_const5, ashlqi3_const6, lshrqi3_const4,
6888         lshrqi3_const5, lshrqi3_const6): New splitters.
6889         (andi, ashlqi3_l_const4, ashlqi3_l_const5, ashlqi3_l_const6,
6890         lshrqi3_l_const4, lshrqi3_l_const5, lshrqi3_l_const6): Define
6891         peephole2 patterns.
6892
6893 2008-08-22  Richard Guenther  <rguenther@suse.de>
6894
6895         PR tree-optimization/37078
6896         * tree-vrp.c (extract_range_from_unary_expr): Avoid generating
6897         [+INF, +INF] ranges.
6898
6899 2008-08-22  Richard Guenther  <rguenther@suse.de>
6900
6901         PR tree-optimization/37143
6902         * tree-vect-transform.c (vect_create_cond_for_align_checks): Build
6903         a conversion statement instead of a copy.
6904
6905 2008-08-22  Uros Bizjak  <ubizjak@gmail.com>
6906
6907         PR target/37184
6908         * config/i386/i386.c (ix86_match_ccmode): Handle CCAmode,
6909         CCCmode, CCOmode and CCSmode destination modes.
6910
6911         PR target/37191
6912         * config/i386/mmx.md (*vec_extractv2sf_0): Avoid combining registers
6913         from different units in a single alternative.
6914         (*vec_extractv2sf_1): Ditto.
6915         (*vec_extractv2si_0): Ditto.
6916         (*vec_extractv2si_1): Ditto.
6917         * config/i386/sse.md (sse2_storehpd): Ditto.
6918         (sse2_storelpd): Ditto.
6919         (sse2_loadhpd): Ditto.
6920         (sse2_loadlpd): Ditto.
6921
6922         PR target/37197
6923         * config/i386/i386.md (clzsi2_abm): Fix operand 1 constraints.
6924         (popcountsi2): Ditto.
6925         (clzdi2_abm): Ditto.
6926         (popcountdi2): Ditto.
6927         (clzhi2_abm): Ditto.
6928         (popcounthi2): Ditto.
6929
6930 2008-08-22  Richard Guenther  <rguenther@suse.de>
6931
6932         PR middle-end/36548
6933         PR middle-end/37125
6934         * fold-const.c (extract_muldiv_1): Optimize (X * C1) % C2 only
6935         if the multiplication does not overflow.
6936
6937 2008-08-21  Nathan Sidwell  <nathan@codesourcery.com>
6938
6939         * c-ppoutput.c (init_pp_output): Initialize src_line to 1.
6940
6941 2008-08-21  Richard Henderson  <rth@redhat.com>
6942
6943         * configure.ac (HAVE_GAS_CFI_PERSONALITY_DIRECTIVE): Remove
6944         spurrious comma from test.
6945         * configure: Rebuild.
6946
6947 2008-08-21  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
6948
6949         PR 30457
6950         * builtins.c (fold_builtin_next_arg): Add warning about undefined
6951         behaviour.
6952
6953 2008-08-21  Aldy Hernandez  <aldyh@redhat.com>
6954
6955         * c-tree.h (grokfield): New argument.
6956         * c-decl.c (grokfield): Handle new location argument.
6957         * c-parser.c (c_parser_struct_declaration): Pass location to grokfield.
6958
6959 2008-08-21  Richard Guenther  <rguenther@suse.de>
6960
6961         * tree-ssa-ccp.c (ccp_fold): Fold VIEW_CONVERT_EXPRs of constants.
6962
6963 2008-08-21  Jan Hubicka  <jh@suse.cz>
6964
6965         * cgraph.c (first_cgraph_function_insertion_hook): New variable.
6966         (cgraph_add_function_insertion_hook,
6967         cgraph_remove_function_insertion_hook,
6968         cgraph_call_function_insertion_hooks): New functions.
6969         * cgraph.h (cgraph_add_function_insertion_hook,
6970         cgraph_remove_function_insertion_hook,
6971         cgraph_call_function_insertion_hooks): Declare.
6972         * ipa-reference.c (function_insertion_hook_holder): New variable.
6973         (check_operand, look_for_address_of): When checking late, do not care
6974         about module bitmaps.
6975         (add_new_function): New function.
6976         (generate_summary): Register hooks; zero module bitmaps.
6977         (propagate): Unregister hooks.
6978         * ipa-pure-const.c (function_insertion_hook_holder): New variable.
6979         (add_new_function): New function.
6980         (generate_summary): Register hook.
6981         (propagate): Remove hook.
6982
6983         * ipa-cp.c (ipcp_need_redirect_p): Fix to not be constant 0.
6984
6985         * tree-pass.h (pass_ipa_cp): Make ipa_opt_pass.
6986         * ipa-cp.c (ipcp_update_cloned_node): New function.
6987         (build_const_val): Handle functions correctly; bring type logic
6988         into sync with tree-inline.c
6989         (ipcp_init_stage):  Take care of computing stuff needed by
6990         indirect inlining; update clones.
6991         (ipcp_generate_summary): Break out of ipcp_driver.
6992         (ipcp_driver): Do only execution and transformation.
6993         (pass_ipa_cp): Make IPA_PASS.
6994         * tree-ssa-ccp.c (fold_stmt_r): Check type before trying to fold
6995         offset to address.
6996         * ipa-inline.c (inline_indirect_intraprocedural_analysis): When doing
6997         ipcp, some info is already available.
6998         * ipa-prop.c (ipa_count_arguments): Grow edge lists as needed.
6999         * tree-inline.c (remap_ssa_name): Unshare expression.
7000
7001 2008-08-21  Richard Guenther  <rguenther@suse.de>
7002
7003         * tree-ssa-pre.c (insert_into_preds_of_block): Before inserting
7004         a PHI ask VN if it is already available.
7005         * tree-ssa-sccvn.h (vn_phi_lookup): Declare.
7006         * tree-ssa-sccvn.c (vn_phi_lookup): Export.
7007
7008 2008-08-21  Richard Guenther  <rguenther@suse.de>
7009
7010         PR middle-end/36817
7011         * tree-chrec.c (chrec_apply): Always call chrec_fold_plus which
7012         makes sure to produce a result of the correct type.
7013
7014 2008-08-21  Jan Hubicka  <jh@suse.cz>
7015         Backport from LTO branch:
7016
7017         2008-05-05  Kenneth Zadeck <zadeck@naturalbridge.com>
7018                     Jan Hubicka  <jh@suse.cz>
7019
7020         * ipa-pure-const.c
7021         (init_state, finish_state, set_function_state, generate_summary):
7022         New functions.
7023         (scan_stmt): Renamed from scan_function.  Changed to keep state in
7024         local static vars rather than cgraph aux field.
7025         (propagate): Renamed from static_execute. Changed to keep state in
7026         local static vars rather than cgraph aux field.
7027         (pass_ipa_pure_const): Changed from SIMPLE_IPA_PASS to IPA_PASS.
7028         * tree-pass.h (pass_ipa_pure_const): Turn into IPA_PASS.
7029
7030         2008-07-15  Kenneth Zadeck <zadeck@naturalbridge.com>
7031
7032         * tree-pass.h (pass_ipa_reference): Make into ipa_opt_pass.
7033         * ipa-reference.c (init_function_info, generate_summary,
7034         propagate): New functions.
7035         (analyze_function):  Call init_function_info.
7036         (static_execute): Stripped into generate_summary and propagate.
7037         (pass_ipa_reference): Made into ipa_opt_pass.
7038
7039 2008-08-21  Richard Guenther  <rguenther@suse.de>
7040
7041         PR tree-optimization/37181
7042         * tree-vrp.c (extract_range_from_binary_expr): Check for NULL
7043         folding result.
7044         (extract_range_from_unary_expr): Likewise.
7045
7046 2008-08-21  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
7047
7048         * diagnostic.c (pedwarn_at): Rename as pedwarn.
7049         (pedwarn): Delete.
7050         * toplev.h (pedwarn_at): Likewise.
7051         * builtins.c: Update all calls to pedwarn.
7052         * c-lex.c: Likewise.
7053         * toplev.c: Likewise.
7054         * c-tree.h: Likewise.
7055         * c-decl.c: Likewise.
7056         * c-errors.c: Likewise.
7057         * c-typeck.c: Likewise.
7058         * c-common.c: Likewise.
7059         * c-parser.c: Likewise.
7060
7061 2008-08-20  Joseph Myers  <joseph@codesourcery.com>
7062
7063         PR target/31070
7064         * config/sparc/sparc.c (function_arg_slotno): Handle structure
7065         with MODE_VECTOR_INT mode.
7066
7067 2008-08-21  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
7068
7069         PR middle-end/179
7070         * tree-ssa.c (warn_uninit): Do not warn for variables that can be
7071         initialized outside the current module.
7072         (warn_uninitialized_var): Ignore left-hand side when walking the
7073         trees. Ignore address expressions. Examine VUSE operands in gimple
7074         statements with a variable declaration on the right-hand side.
7075
7076 2008-08-20  Richard Sandiford  <rdsandiford@googlemail.com>
7077
7078         PR bootstrap/37155
7079         * rtlanal.c (subreg_offset_representable_p): Revert last change.
7080
7081 2008-08-20  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
7082
7083         PR 35701
7084         * c-common.c (conversion_warning): Do not warn if applying bit-and
7085         operator to unsigned constant that fits in the target type.
7086
7087 2008-08-20  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
7088
7089         PR c++/35602
7090         * c-common.c (conversion_warning): Do not warn for artificial
7091         expressions.
7092
7093 2008-08-20  Richard Guenther  <rguenther@suse.de>
7094
7095         * tree-vrp.c (op_with_constant_singleton_value_range): New function.
7096         (extract_range_from_binary_expr): Fall back to constant propagation.
7097         (extract_range_from_unary_expr): Likewise.
7098
7099 2008-08-20  Richard Guenther  <rguenther@suse.de>
7100
7101         * tree-ssa-ccp.c (maybe_fold_stmt_indirect): Do not mess
7102         with TREE_THIS_VOLATILE on shared nodes.
7103         (fold_stmt_r): Likewise.
7104
7105 2008-08-20  Jakub Jelinek  <jakub@redhat.com>
7106
7107         PR c/37171
7108         * c-parser.c (c_parser_attributes): For keywords use canonical
7109         spelling for attr_name.
7110
7111 2008-08-20  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
7112
7113         * value-prof.c (check_counter): Revert wrong call to error.
7114
7115 2008-08-20  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
7116
7117         * profile.c: Update calls to inform.
7118         * value-prof.c: Update calls to inform.
7119
7120 2008-08-20  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
7121
7122         * diagnostic.c (inform): Add an explicit location_t parameter.
7123         * toplev.h (inform): Update declaration.
7124         * builtins.c: Update all calls to inform.
7125         * c-common.c: Likewise.
7126         * c-decl.c: Likewise.
7127         * c-opts.c: Likewise.
7128         * c-pch.c: Likewise.
7129         * c-pragma.c: Likewise.
7130         * c-typeck.c: Likewise.
7131         * coverage.c: Likewise.
7132         * opts.c: Likewise.
7133         * toplev.c: Likewise.
7134         * tree-cfg.c: Likewise.
7135         * tree-ssa.c: Likewise.
7136
7137 2008-08-20  H.J. Lu  <hongjiu.lu@intel.com>
7138
7139         PR target/37169
7140         * config/i386/i386.c (ix86_expand_vector_init_one_nonzero): In
7141         V2DI mode, for SSE4.1, use movq instead of vector set if the
7142         second element is zero and inter-unit moves are OK.
7143
7144 2008-08-20  Richard Guenther  <rguenther@suse.de>
7145
7146         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): More
7147         properly handle conversion/copy chains after tuplification.
7148
7149 2008-08-20  Richard Guenther  <rguenther@suse.de>
7150
7151         * passes.c (init_optimization_passes): Move the second
7152         forwprop pass before alias computation.  Remove the second
7153         DCE pass.  Remove the first dominator and phi copy/const
7154         prop passes.
7155
7156 2008-08-20  Nick Clifton  <nickc@redhat.com>
7157
7158         * configure.ac (HAVE_GAS_CFI_DIRECTIVE): Always test for assembler
7159         support of this feature.  Do not assume that a sufficiently new
7160         assembler will support the feature regardless of the target type.
7161         (HAVE_GAS_CFI_PERSONALITY_DIRECTIVE): Likewise.
7162         * configure: Regenerate.
7163
7164 2008-08-20  Richard Guenther  <rguenther@suse.de>
7165
7166         * tree-vrp.c (found_in_subgraph): Remove.
7167         (live): New global static.
7168         (live_on_edge): New function.
7169         (blocks_visited): Remove.
7170         (register_edge_assert_for_2): Use live_on_edge.
7171         (find_conditional_asserts): Remove code dealing with
7172         found_in_subgraph.  Do not walk the CFG.
7173         (find_switch_asserts): Likewise.
7174         (find_assert_locations_1): Renamed from find_assert_locations.
7175         Move finding assert locations for conditional and switch
7176         statements first.  Update live bitmap.  Do not walk the CFG.
7177         (find_assert_locations): New function.
7178         (insert_range_assertions): Remove entry of CFG walk.
7179         Adjust call to find_assert_locations.
7180         * tree-ssa-pre.c (do_regular_insertion): Ignore critical edges
7181         that only can appear because of fake exit edges but assert we
7182         never try to insert on those.
7183         (fini_pre): Do not remove fake exit edges here...
7184         (execute_pre): ...but here, before committing edge inserts.
7185
7186 2008-08-19  Richard Guenther  <rguenther@suse.de>
7187
7188         * passes.c (init_optimization_passes): Exchange store-ccp
7189         with a ccp pass.
7190
7191 2008-08-19  Rafael Espíndola  <espindola@google.com>
7192
7193         * varasm.c (weak_decls): Move earlier in the file.
7194         (assemble_external): Add weak decls to the weak_decls list.
7195         (declare_weak): Don't add decls to the weak_decls list.
7196
7197 2008-08-19  H.J. Lu  <hongjiu.lu@intel.com>
7198
7199         PR target/37157
7200         * config/i386/sse.md (sse2_punpckhqdq, sse2_punpcklqdq): Moved
7201         before (sse2_shufpd_<mode>).
7202
7203 2008-08-19  Jakub Jelinek  <jakub@redhat.com>
7204
7205         PR debug/37156
7206         * pretty-print.c (pp_base_format): Deal with recursive BLOCK trees.
7207         * tree.c (block_nonartificial_location): Likewise.
7208
7209 2008-08-19  Richard Guenther  <rguenther@suse.de>
7210
7211         PR tree-optimization/35972
7212         PR tree-optimization/23094
7213         * tree-ssa-sccvn.h (vn_reference_lookup_pieces): Add maywalk
7214         parameter.
7215         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Properly
7216         handle MISALIGNED_INDIRECT_REF.
7217         (get_ref_from_reference_ops): New helper.
7218         (vn_reference_lookup_pieces): Walk the use-def chain using the
7219         alias-oracle if requested.
7220         * tree-ssa-pre.c (phi_translate_1): Do reference lookup with
7221         walking the use-def chain.
7222         (compute_avail): But not here.
7223         (create_component_ref_by_pieces_1): Properly handle
7224         MISALIGNED_INDIRECT_REF.
7225         (do_regular_insertion): Handle fully redundant
7226         expressions after PHI-translation also for SSA_NAME values, not
7227         only constants.  Correctly use edoubleprime for that.
7228
7229 2008-08-19  Ira Rosen  <irar@il.ibm.com>
7230
7231         * tree-vectorizer.c (supportable_widening_operation): Support
7232         multi-step conversion, return the number of steps in such conversion
7233         and the required intermediate types.
7234         (supportable_narrowing_operation): Likewise.
7235         * tree-vectorizer.h (vect_pow2): New function.
7236         (supportable_widening_operation): Change argument types.
7237         (supportable_narrowing_operation): Likewise.
7238         (vectorizable_type_promotion): Add an argument.
7239         (vectorizable_type_demotion): Likewise.
7240         * tree-vect-analyze.c (vect_analyze_operations): Call
7241         vectorizable_type_promotion and vectorizable_type_demotion with
7242         additional argument.
7243         (vect_get_and_check_slp_defs): Detect patterns.
7244         (vect_build_slp_tree): Add an argument, don't fail in case of multiple
7245         types.
7246         (vect_analyze_slp_instance): Don't fail in case of multiple types.
7247         Call vect_build_slp_tree with correct arguments. Calculate unrolling
7248         factor according to the smallest type in the loop.
7249         (vect_detect_hybrid_slp_stmts): Include statements from patterns.
7250         * tree-vect-patterns.c (vect_recog_widen_mult_pattern): Call
7251         supportable_widening_operation with correct arguments.
7252         * tree-vect-transform.c (vect_get_slp_defs): Allocate output vector
7253         operands lists according to the number of vector statements in left
7254         or right node, if exists.
7255         (vect_gen_widened_results_half): Remove unused argument.
7256         (vectorizable_conversion): Call supportable_widening_operation,
7257         supportable_narrowing_operation, and vect_gen_widened_results_half
7258         with correct arguments.
7259         (vectorizable_assignment): Change documentation, support multiple
7260         types in SLP.
7261         (vectorizable_operation): Likewise.
7262         (vect_get_loop_based_defs): New function.
7263         (vect_create_vectorized_demotion_stmts): Likewise.
7264         (vectorizable_type_demotion): Support loop-aware SLP and general
7265         multi-step conversion. Call vect_get_loop_based_defs and
7266         vect_create_vectorized_demotion_stmts for transformation.
7267         (vect_create_vectorized_promotion_stmts): New function.
7268         (vectorizable_type_promotion): Support loop-aware SLP and general
7269         multi-step conversion. Call vect_create_vectorized_promotion_stmts
7270         for transformation.
7271         (vectorizable_store): Change documentation, support multiple
7272         types in SLP.
7273         (vectorizable_load): Likewise.
7274         (vect_transform_stmt): Pass SLP_NODE to
7275         vectorizable_type_promotion and vectorizable_type_demotion.
7276         (vect_schedule_slp_instance): Move here the calculation of number
7277         of vectorized statements for each node from...
7278         (vect_schedule_slp): ... here.
7279         (vect_transform_loop): Call vect_schedule_slp without the last
7280         argument.
7281
7282 2008-08-19  Dorit Nuzman  <dorit@il.ibm.com>
7283
7284         PR bootstrap/37152
7285         * tree-vect-transform.c (vect_create_epilog_for_reduction): Change =
7286         to == in assert statement.
7287         (vectorizable_reduction): Fix typo.
7288
7289 2008-08-18  H.J. Lu  <hongjiu.lu@intel.com>
7290
7291         PR bootstrap/37153
7292         * value-prof.c (check_counter): Dereference pointer to overall
7293         count when printing it.
7294
7295 2008-08-18  H.J. Lu  <hongjiu.lu@intel.com>
7296
7297         * profile.h: Really add it.
7298
7299 2008-08-18  H.J. Lu  <hongjiu.lu@intel.com>
7300
7301         * mcf.c: Really add it.
7302
7303 2008-08-18  Paul Yuan  <yingbo.com@gmail.com>
7304             Vinodha Ramasamy  <vinodha@google.com>
7305
7306         * cgraph.c (cgraph_edge): Handle inconsistent counts when setting
7307         count_scale.
7308         * value-prof.c (check_counter): Fix the counter if
7309         flag_profile_correction is true.
7310         (tree_divmod_fixed_value_transform, tree_mod_pow2_value_transform,
7311         tree_mod_subtract_transform):
7312         Follow check_counter parameter change.
7313         * common.opt (fprofile-correction): New option.
7314         * mcf.c: New file.
7315         * profile.h: Likewise.
7316         * profile.c (edge_info, EDGE_INFO): Moved to new file profile.h.
7317         (sum_edge_counts, is_edge_inconsistent, correct_negative_edge_counts,
7318         is_inconsistent, set_bb_counts, read_profile_edge_counts): New
7319         functions.
7320         (compute_branch_probabilities): Refactored. Invokes mcf_smooth_cfg if
7321         flag_profile_correction is set.
7322
7323 2008-08-18  Richard Sandiford  <rdsandiford@googlemail.com>
7324
7325         * rtlanal.c (subreg_offset_representable_p): Check HARD_REGNO_MODE_OK.
7326
7327 2008-08-18  Tomas Bily  <tbily@suse.cz>
7328
7329         * tree.h (IS_CONVERT_EXPR_CODE_P): Renamed to CONVERT_EXPR_CODE_P.
7330         * tree-ssa-threadedge.c (simplify_control_stmt_condition): Use
7331         CONVERT_EXPR_P.
7332         * tree-data-ref.c (split_constant_offset_1): Likewise.
7333         * tree-inline.c (estimate_operator_cost): Use CASE_CONVERT.
7334         * tree-sra.c (sra_walk_expr): Likewise.
7335         * matrix-reorg.c (ssa_accessed_in_assign_rhs): Likewise.
7336         * tree-ssa-loop-niter.c (expand_simple_operations): Likewise.
7337         * gimple.h (gimple_assign_cast_p): Use CONVERT_EXPR_CODE_P.
7338         * tree-ssa-structalias.c (find_func_aliases, find_func_aliases):
7339         Likewise.
7340         * gimple.c (gimple_assign_unary_nop_p): Likewise.
7341         * tree-vect-transform.c (vectorizable_type_demotion)
7342         (vectorizable_type_promotion): Likewise.
7343         * tree-inline.c (expand_call_inline):
7344         * tree-ssa-forwprop.c (get_prop_source_stmt, can_propagate_from)
7345         (forward_propagate_addr_expr_1, forward_propagate_comparison)
7346         (tree_ssa_forward_propagate_single_use_vars): Likewise.
7347         * expr.c (expand_expr_real_1): Likewise.
7348         * tree-ssa-dom.c (hashable_expr_equal_p, iterative_hash_hashable_expr)
7349         (gimple_assign_unary_useless_conversion_p): Likewise.
7350         * tree-stdarg.c (execute_optimize_stdarg): Likewise.
7351         * tree-ssa-ccp.c (ccp_fold, fold_gimple_assign): Likewise.
7352         * fold-const.c (fold_unary): Likewise.
7353         * tree.h (CONVERT_EXPR_P): Likewise.
7354         * tree.c (simple_cst_equal, iterative_hash_expr): Likewise.
7355         * tree-ssa-loop-im.c (rewrite_bittest): Likewise.
7356         * tree-vrp.c:
7357         (register_edge_assert_for_2, extract_range_from_unary_expr)
7358         (register_edge_assert_for_1): Likewise.
7359
7360 2008-08-18  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
7361
7362         * real.h (dconst_e, dconst_third, dconst_sqrt2, dconst_e_ptr,
7363         dconst_third_ptr, dconst_sqrt2_ptr): Declare.
7364         (enum real_value_const): Delete.
7365         (get_real_const): Delete.
7366         * real.c (get_real_const): Delete.
7367         (dconst_e_ptr): Define.
7368         (dconst_third_ptr): Define.
7369         (dconst_sqrt2_ptr): Define.
7370         * builtins.c: Update all callers.
7371
7372 2008-08-18  Richard Guenther  <rguenther@suse.de>
7373
7374         * tree-ssa-reassoc.c (reassociate_bb): Properly reset the
7375         statement iterator after statement removal.
7376
7377 2008-08-18  Andreas Tobler  <a.tobler@schweiz.org>
7378
7379         * config/rs6000/driver-rs6000.c (detect_caches_freebsd): New function.
7380         (detect_processor_freebsd): Likewise.
7381         (host_detect_local_cpu): Call newly added functions for FreeBSD.
7382
7383 2008-08-18  Richard Guenther  <rguenther@suse.de>
7384
7385         * tree-cfg.c (verify_types_in_gimple_assign): Verify copies
7386         and loads have the correct types.
7387
7388 2008-08-18  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
7389
7390         PR cpp/7263
7391         * c-opts.c (cpp_opts): Remove static.
7392         * c-parser.c (cpp_opts): Declare it extern.
7393         (disable_extension_diagnostics): Handle cpp options.
7394         (enable_extension_diagnostics): Likewise.
7395
7396 2008-08-18  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
7397
7398         * diagnostics.c (permerror_at): Rename as permerror.
7399         (permerror): Delete.
7400         * toplev.h: Likewise.
7401
7402 2008-08-18  Richard Guenther  <rguenther@suse.de>
7403
7404         * passes.c (init_optimization_passes): Remove cleanup_cfg1,
7405         sdse1 and addressables2 passes.  Replace dce1 with cddce1.
7406         Move call_cdce before build_alias.  Move copyrename2,
7407         cunrolli and ccp2 beafore build_alias.  Re-add addressable2
7408         right after final inlining.
7409         * tree-cfg.c (build_gimple_cfg): Do not dump function here.
7410         (pass_build_cfg): But instead via TODO_dump_func.
7411
7412 2008-08-18  Richard Guenther  <rguenther@suse.de>
7413
7414         * tree-sra.c (generate_element_init_1): Deal with NULL constructor
7415         element index.
7416         (scalarize_init): If we failed to generate some initializers
7417         do not generate zeros for not instantiated members.  Instead
7418         rely on the copy out.
7419         * tree-ssa-operands.c (get_addr_dereference_operands): Warn
7420         about missing flow-sensitive alias info only if we have
7421         aliases computed.
7422
7423 2008-08-17  Nick Clifton  <nickc@redhat.com>
7424
7425         * doc/extend.texi (Function Attributes): Fix typo in description
7426         if hot function attribute.
7427
7428 2008-08-17  Daniel Jacobowitz  <dan@codesourcery.com>
7429             Richard Sandiford  <rdsandiford@googlemail.com>
7430
7431         * doc/install.texi (--with-mips-plt): Document.
7432         * doc/invoke.texi (-mplt, -mno-plt): Document.
7433         * config.gcc (mips*-*-*): Add mips-plt to supported_defaults
7434         and handle ${with_mips_plt}.
7435         * config/mips/mips.opt (mplt): New option.
7436         * config/mips/mips.h (TARGET_ABICALLS_PIC0): New macro.
7437         (TARGET_ABICALLS_PIC2): Likewise.
7438         (TARGET_GPWORD): Return false for TARGET_ABSOLUTE_ABICALLS.
7439         (OPTION_DEFAULT_SPECS): Add a mips-plt entry.
7440         (ASM_SPEC): Use !mabi=* instead of !mabi*.
7441         (MIPS_CALL): Use TARGET_ABICALLS_PIC2 instead of TARGET_ABICALLS
7442         to decide whether to output ".option picX" directives.
7443         * config/mips/linux.h (SUBTARGET_ASM_SPEC): Remove -mabi=64 handling.
7444         Pass -call_nonpic rather than -KPIC for -mplt.
7445         (BASE_DRIVER_SELF_SPECS): Remove -mplt if -mno-shared is not present
7446         on the command line.  Also remove it when -mabi=64 is used without
7447         -msym32.
7448         * config/mips/linux64.h (SUBTARGET_ASM_SPEC): Delete.
7449         * config/mips/mips.c (mips_use_pic_fn_addr_reg_p): Handle
7450         TARGET_ABICALLS_PIC0.
7451         (mips_classify_symbol): Use TARGET_ABICALLS_PIC2 instead of
7452         TARGET_ABICALLS.
7453         (mips16_build_function_stub): Only output ".option pic" directives
7454         and PIC stubs if TARGET_ABICALLS_PIC2.  Call through $25 instead of $1.
7455         (mips16_build_call_stub): Fix comment and remove redundant
7456         ".set at"/"set .noat" directives.
7457         (mips_function_rodata_section): Use the default behaviour for
7458         TARGET_ABSOLUTE_ABICALLS.
7459         (mips_file_start): Emit ".option pic0" for TARGET_ABICALLS_PIC0.
7460         (mips_global_pointer): Handle TARGET_ABICALLS_PIC0.
7461         (mips_restore_gp): Do nothing if the current function doesn't use
7462         a global pointer.
7463         (mips_expand_prologue): Only save $gp if the current function uses it.
7464         Use a normal move for TARGET_ABICALLS_PIC0.
7465         (mips_override_options): Only set flag_pic if TARGET_ABICALLS_PIC2.
7466
7467 2008-08-17  Richard Sandiford  <rdsandiford@googlemail.com>
7468
7469         * config/mips/mips.c (mips_save_reg_p): Don't short-circuit rest
7470         of function when handling GLOBAL_POINTER_REGNUM.
7471
7472 2008-08-16  Eric Botcazou  <ebotcazou@adacore.com>
7473
7474         PR ada/20548
7475         * common.opt (-fstack-check): Do not declare the variable here.
7476         (-fstack-check=): New option variant.
7477         * doc/invoke.texi (Code Gen Options): Document it.
7478         * expr.h (STACK_OLD_CHECK_PROTECT): New macro.
7479         (STACK_CHECK_PROTECT): Bump to 3 pages if DWARF-2 EH is used.
7480         (STACK_CHECK_STATIC_BUILTIN): New macro.
7481         * doc/tm.texi (Stack Checking): Document STACK_CHECK_STATIC_BUILTIN.
7482         * opts.c: Include expr.h.
7483         (common_handle_option) <OPT_fold_stack_check_>: New case.
7484         <OPT_fstack_check>: Likewise.
7485         * calls.c (initialize_argument_information): Use TYPE_SIZE_UNIT
7486         consistently in the test for variable-sized types.  Adjust for
7487         new behaviour of flag_stack_check.
7488         * explow.c: Include except.h.
7489         (allocate_dynamic_stack_space): Do not take into account
7490         STACK_CHECK_MAX_FRAME_SIZE for static builtin stack checking.
7491         * function.c (gimplify_parameters): Use DECL_SIZE_UNIT in the test
7492         for variable-sized parameters.  Treat all parameters whose size is
7493         greater than STACK_CHECK_MAX_VAR_SIZE as variable-sized if generic
7494         stack checking is enabled.
7495         * gimplify.c (gimplify_decl_expr): Treat non-static objects whose
7496         size is greater than STACK_CHECK_MAX_VAR_SIZE as variable-sized
7497         if generic stack checking is enabled.
7498         (expand_function_end): Adjust for new behaviour of flag_stack_check.
7499         * reload1.c (reload): Likewise.
7500         * stmt.c (expand_decl): Assert that all automatic variables have
7501         fixed size at this point and remove dead code.
7502         * flags.h (stack_check_type): New enumeration type.
7503         (flag_stack_check): Declare.
7504         * toplev.c (flag_stack_check): New global variable.
7505         * Makefile.in (opts.o): Add dependency on EXPR_H.
7506         (explow.o): Add dependency on except.h.
7507
7508 2008-08-16  Andy Hutchinson  <hutchinsonandy@aim.com>
7509
7510         * config/avr/avr.c (avr_override_options): Reduce value of
7511         PARAM_INLINE_CALL_COST.
7512
7513 2008-08-15  Eric Botcazou  <ebotcazou@adacore.com>
7514
7515         * expr.c (expand_expr_real_1) <VIEW_CONVERT_EXPR>: When converting
7516         to BLKmode, try to fetch an inner memory reference.  Use 'mode' in
7517         lieu of TYPE_MODE (type) throughout.
7518
7519 2008-08-15  Joseph Myers  <joseph@codesourcery.com>
7520
7521         * config/arm/arm.c (add_minipool_backward_ref): Check for
7522         8-byte-aligned entries in second case of forcing insertion after a
7523         particular entry.  Change third case to avoid inserting
7524         non-8-byte-aligned entries before 8-byte-aligned ones.
7525
7526 2008-08-15  Richard Guenther  <rguenther@suse.de>
7527
7528         * tree-ssa-ccp.c (maybe_fold_offset_to_reference): Do not
7529         strip components for unknown size accesses.
7530
7531 2008-08-15  Wolfgang Gellerich  <gellerich@de.ibm.com>
7532
7533         * config/s390/2097.md New file.
7534         * config/s390/s390.md ("z10prop" attribute): Define none,
7535         z10_super, z10_super_E1, z10_super_A1, z10_super_c,
7536         z10_super_c_E1, z10_fwd, z10_fwd_A1, z10_fwd_A3, z10_fwd_E1,
7537         z10_rec, z10_fr, z10_fr_A3, z10_fr_E1, z10_c, and z10_cobra as
7538         possible values and apply them to insns as appropriate.
7539         ("type" attribute): Removed itof and added ftrunctf,ftruncdf,
7540         ftruncsd, ftruncdd, itoftf, itofdf, itofsf, itofdd, itoftd,
7541         fdivdd, fdivtd, floaddd, floadsd, fmuldd, fmultd, fsimpdd,
7542         fsimpsd, fsimptd, fstoredd, fstoresd, ftoidfp as possible values.
7543         ("bfp" mode attribute): Removed.  Every occurence replaced
7544         with <mode>.
7545         * config/s390/s390.c (struct "z10_cost"): Updated entries.
7546         * config/s390/2084.md (insn_reservation "x_itof"): Updated
7547         type attribute.
7548
7549 2008-08-14  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
7550
7551         PR c/28152
7552         * c-parser.c (c_lex_one_token): Do not store the canonical spelling
7553         for keywords.
7554
7555 2008-08-14  Dorit Nuzman  <dorit@il.ibm.com>
7556
7557         * tree-vect-transform.c (vect_create_epilog_for_reduction): Takes an
7558         additional argument. Support reduction when duplication is needed due
7559         to data-types of different sizes in the loop.
7560         (get_initial_def_for_induction): Fix printout.
7561         (vect_get_vec_def_for_stmt_copy): Support case where the
7562         vec_stmt_for_operand is a phi node.
7563         (vectorizable_reduction): Support reduction when duplication is needed
7564         due to data-types of different sizes in the loop.
7565         (vectorizable_call): Remove restriction to not vectorize in case we
7566         have data-types of different sizes in the loop.
7567         (vectorizable_conversion): Likewise.
7568         (vectorizable_operation): Likewise.
7569         (vectorizable_type_demotion): Likewise.
7570         (vectorizable_type_promotion): Likewise.
7571         (vectorizable_induction): Add restriction to not vectorize in case
7572         we have data-types of different sizes in the loop.
7573
7574 2008-08-14  Christophe Saout  <christophe@saout.de>
7575             Uros Bizjak  <ubizjak@gmail.com>
7576
7577         PR target/37101
7578         * config/i386/sse.md (vec_concatv2di): Remove movlps alternative.
7579         (*vec_concatv2di_rex64_sse4_1): Ditto.
7580         (*vec_concatv2di_rex64_sse): Ditto.
7581
7582 2008-08-14  Jakub Jelinek  <jakub@redhat.com>
7583
7584         PR middle-end/37103
7585         * fold-const.c (fold_widened_comparison): Do not allow
7586         sign changes that change the result even if shorter type
7587         is wider than arg1_unw's type.
7588
7589 2008-08-13  Kazu Hirata  <kazu@codesourcery.com>
7590
7591         * gcc.dg/arm-g2.c, gcc.dg/arm-mmx-1.c, gcc.dg/arm-scd42-2.c:
7592         Skip if the multilib testing specifies -march that does not
7593         agree with the one specified in the testcase.
7594
7595 2008-08-13  Joseph Myers  <joseph@codesourcery.com>
7596
7597         * config/sparc/sparc.c (emit_soft_tfmode_cvt): Explicitly sign or
7598         zero extend SImode values being converted to TFmode before passing
7599         to libcalls.
7600
7601 2008-08-13  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
7602
7603         * config/rs6000/rs6000-c.c (rs6000_cpu_cpp_builtins): Predefine
7604         __PPU__ when targeting the Cell/B.E. PPU processor.
7605
7606 2008-08-13  Eric Botcazou  <ebotcazou@adacore.com>
7607
7608         * gimple.h (gimple_call_set_chain): Accept SSA variables.
7609         * tree-ssa-pre.c (create_component_ref_by_pieces_1) <CALL_EXPR>:
7610         Rematerialize the static chain, if any.
7611         * tree-ssa-sccvn.c (copy_reference_ops_from_call): Also copy the
7612         static chain.
7613
7614 2008-08-13  H.J. Lu  <hongjiu.lu@intel.com>
7615
7616         * dwarf2out.c (dwarf_stack_op_name): Remove prototype.
7617         (new_loc_descr): Likewise.
7618         (add_loc_descr): Likewise.
7619         (size_of_loc_descr): Likewise.
7620         (size_of_locs): Likewise.
7621         (output_loc_operands): Likewise.
7622         (output_loc_sequence): Likewise.
7623         (new_reg_loc_descr): New.
7624         (build_cfa_loc): Use it.
7625         (build_cfa_aligned_loc): Likewise.
7626         (one_reg_loc_descriptor): Likewise.
7627         (based_loc_descr): Likewise.
7628
7629 2008-08-13  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
7630
7631         PR 30551
7632         * doc/invoke.texi (Wmain): Update.
7633         * c-decl.c (start_decl): warn_main is only 0 or 1.
7634         (start_function): Likewise. Fix formatting.
7635         (finish_function): Delete redundant warning.
7636         * c.opt (Wmain): Add Var(warn_main) and Init(-1).
7637         * c-opts (c_common_handle_option): -Wall only has effect if
7638         warn_main is uninitialized. OPT_Wmain is automatically
7639         handled. -pedantic also enables Wmain.
7640         (c_common_post_options): Handle all logic for Wmain here.
7641         * c-common.c (warn_main): Delete.
7642         (check_main_parameter_types): Make pedwarns conditional on OPT_Wmain.
7643         * c-common.h (warn_main): Delete.
7644
7645 2008-08-13  H.J. Lu  <hongjiu.lu@intel.com>
7646
7647         PR middle-end/36701
7648         * expr.c (emit_group_store): Allocate stack temp with the
7649         largest alignment when copying from register to stack.
7650
7651 2008-08-13  Richard Guenther  <rguenther@suse.de>
7652
7653         * tree.h (maybe_fold_offset_to_address): Declare.
7654         * tree-ssa-ccp.c (surely_varying_stmt_p): Fix typo in last commit.
7655         (ccp_fold): Handle pointer conversions the same as fold_stmt.
7656         Likewise for POINTER_PLUS_EXPR.
7657         (maybe_fold_offset_to_reference): Enable disabled code.
7658         (maybe_fold_offset_to_address): New function.
7659         (fold_stmt_r): Use it.
7660         (fold_gimple_assign): Likewise.
7661         * gimplify.c (gimplify_conversion): Use maybe_fold_offset_to_address.
7662         (gimplify_expr): Likewise.
7663
7664 2008-08-13  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
7665
7666         * toplev.h (pedwarn_at): Fix declaration.
7667
7668 2008-08-13  Joseph Myers  <joseph@codesourcery.com>
7669
7670         * config/sparc/linux64.h (LINK_ARCH32_SPEC, LINK_ARCH64_SPEC,
7671         LINK_SPEC): Use %R in -Y P argument.
7672
7673 2008-08-13  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
7674
7675         PR c/15236
7676         * diagnostic.c (pedwarn_at): New.
7677         * toplev.h (pedwarn_at): Declare.
7678         * c-tree.h (build_enumerator): Update declaration.
7679         * c-decl.c (finish_enum): Update comment.
7680         (build_enumerator): Take a location parameter. Give a pedwarn but do
7681         not perform any conversion.
7682         * c-parser.c (c_parser_enum_specifier): Set correct location for
7683         enumerator.
7684
7685 2008-08-13  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
7686
7687         PR 35635
7688         * c-common.c (conversion_warning): Use a switch. Ignore boolean
7689         expressions except for conversions to signed:1 bitfields. Handle
7690         COND_EXPR with constant operands.
7691
7692 2008-08-13  Richard Guenther  <rguenther@suse.de>
7693
7694         PR tree-optimization/15255
7695         * tree-ssa-reassoc.c (linearize_expr_tree): Declare.
7696         (struct oecount_s): New struct and VEC types.
7697         (cvec): New global.
7698         (oecount_hash): New function.
7699         (oecount_eq): Likewise.
7700         (oecount_cmp): Likewise.
7701         (zero_one_operation): New function.
7702         (build_and_add_sum): Likewise.
7703         (undistribute_ops_list): Perform un-distribution of multiplication
7704         and division on the chain of summands.
7705         (should_break_up_subtract): Also break up subtracts for factors.
7706         (reassociate_bb): Delete dead visited statements.
7707         Call undistribute_ops_list.  Re-sort and optimize if it did something.
7708         * passes.c (init_optimization_passes): Move DSE before
7709         reassociation.
7710         * tree-ssa-loop-niter.c (stmt_dominates_stmt_p): Correctly handle
7711         PHI nodes.
7712
7713 2008-08-12  Janis Johnson  <janis187@us.ibm.com>
7714
7715         * doc/invoke.texi (-fipa-pta): Say the option is experimental.
7716
7717         * doc/invoke.texi: Revert unintended checkin.
7718
7719 2008-08-12  Nathan Froyd  <froydnj@codesourcery.com>
7720
7721         PR libgomp/26165
7722         * gcc.c (include_spec_function): Tweak call to find_a_file.
7723
7724 2008-08-12  Jakub Jelinek  <jakub@redhat.com>
7725
7726         PR middle-end/37014
7727         * expr.c (expand_expr_real_1): Handle TRUTH_ANDIF_EXPR
7728         and TRUTH_ORIF_EXPR.
7729         * dojump.c (do_jump): Likewise.
7730
7731         PR tree-optimization/37084
7732         * tree-inline.c (copy_bb): Call gimple_regimplify_operands
7733         if id->regimplify, don't assume stmt is a cast assignment.
7734
7735 2008-08-12  Anatoly Sokolov  <aesok@post.ru>
7736
7737         * final.c (final_scan_insn): Use app_enable/app_disable functions.
7738
7739 2008-08-12  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
7740
7741         PR bootstrap/37097
7742         * builtins.c (do_mpfr_bessel_n): Fix copy-and-paste bug introduced
7743         by last change.
7744
7745 2008-08-12  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
7746
7747         * defaults.h (TARGET_FLOAT_FORMAT): Remove.
7748         (UNKNOWN_FLOAT_FORMAT, IEEE_FLOAT_FORMAT, VAX_FLOAT_FORMAT): Remove.
7749
7750         * config/alpha/alpha.h (TARGET_FLOAT_FORMAT): Remove.
7751         * config/iq2000/iq2000.h (TARGET_FLOAT_FORMAT): Remove.
7752         * config/pdp11/pdp11.h (TARGET_FLOAT_FORMAT): Remove.
7753         * config/score/score.h (TARGET_FLOAT_FORMAT): Remove.
7754         * config/vax/vax.h (TARGET_FLOAT_FORMAT): Remove.
7755
7756         * doc/tm.texi (Storage Layout): Remove documentation for
7757         TARGET_FLOAT_FORMAT.
7758
7759         * simplify-rtx.c (simplify_binary_operation_1): Replace
7760         TARGET_FLOAT_FORMAT check by appropriate HONOR_... checks.
7761
7762 2008-08-12  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
7763
7764         * real.h (struct real_format): New member has_sign_dependent_rounding.
7765         * real.c (ieee_single_format, mips_single_format, motorola_single_format,
7766         spu_single_format, ieee_double_format, mips_double_format,
7767         motorola_double_format, ieee_extended_motorola_format,
7768         ieee_extended_intel_96_format, ieee_extended_intel_128_format,
7769         ieee_extended_intel_96_round_53_format, ibm_extended_format,
7770         mips_extended_format, ieee_quad_format, mips_quad_format,
7771         vax_f_format, vax_d_format, vax_g_format): Initialize it.
7772         * config/pdp11/pdp11.c (pdp11_f_format, pdp11_d_format): Likewise.
7773
7774         * defaults.h (MODE_HAS_NANS, MODE_HAS_INFINITIES,
7775         MODE_HAS_SIGNED_ZEROS, MODE_HAS_SIGN_DEPENDENT_ROUNDING): Remove.
7776         * config/spu/spu.h (MODE_HAS_NANS, MODE_HAS_INFINITIES,
7777         MODE_HAS_SIGN_DEPENDENT_ROUNDING): Remove.
7778         (ROUND_TOWARDS_ZERO): Likewise.
7779
7780         * real.h (REAL_MODE_FORMAT): Protect MODE against macro expansion.
7781         (FLOAT_MODE_FORMAT): New macro.
7782         (REAL_MODE_FORMAT_COMPOSITE_P): Remove, replace by ...
7783         (MODE_COMPOSITE_P): ... this new macro.
7784         (MODE_HAS_NANS, MODE_HAS_INFINITIES, MODE_HAS_SIGNED_ZEROS,
7785         MODE_HAS_SIGN_DEPENDENT_ROUNDING): New macros.
7786         * machmode.h (GET_MODE_INNER): Cast result to enum machine_mode.
7787
7788         * flags.h: Include "real.h".
7789
7790         * fold-const.c (const_binop): Use MODE_COMPOSITE_P instead of
7791         REAL_MODE_FORMAT_COMPOSITE_P.
7792         * simplify-rtx.c (simplify_const_binary_operation): Likewise.
7793
7794         * doc/tm.texi (Storage Layout): Remove documentation of
7795         MODE_HAS_NANS, MODE_HAS_INFINITIES, MODE_HAS_SIGNED_ZEROS,
7796         MODE_HAS_SIGN_DEPENDENT_ROUNDING.  Update documentation of
7797         ROUND_TOWARDS_ZERO and LARGEST_EXPONENT_IS_NORMAL to clarify
7798         they only apply to libgcc2.a.
7799
7800 2008-08-12  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
7801
7802         * config/spu/float_disf.c: New file.
7803         * config/spu/float_unsdisf.c: New file.
7804         * config/spu/t-elf (LIB2FUNCS_STATIC_EXTRA): Add them.
7805         (LIB2FUNCS_EXCLUDE): Define.
7806
7807 2008-08-12  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
7808             Trevor Smigiel  <trevor_smigiel@playstation.sony.com>
7809
7810         * real.h (struct real_format): New member round_towards_zero.
7811         * real.c (round_for_format): Respect fmt->round_towards_zero.
7812         (ieee_single_format, mips_single_format, motorola_single_format,
7813         spu_single_format, ieee_double_format, mips_double_format,
7814         motorola_double_format, ieee_extended_motorola_format,
7815         ieee_extended_intel_96_format, ieee_extended_intel_128_format,
7816         ieee_extended_intel_96_round_53_format, ibm_extended_format,
7817         mips_extended_format, ieee_quad_format, mips_quad_format,
7818         vax_f_format, vax_d_format, vax_g_format): Initialize it.
7819         * config/pdp11/pdp11.c (pdp11_f_format, pdp11_d_format): Likewise.
7820
7821         * builtins.s (do_mpfr_arg1): Consider round_towards_zero member of
7822         real_format to choose rounding mode when calling MPFR functions.
7823         (do_mpfr_arg2, do_mpfr_arg3, do_mpfr_sincos): Likewise.
7824         (do_mpfr_bessel_n, do_mpfr_remquo, do_mpfr_lgamma_r): Likewise.
7825
7826         * real.h (real_to_decimal_for_mode): Add prototype.
7827         * real.c (real_to_decimal_for_mode): Renames old real_to_decimal.
7828         Respect target rounding mode when generating decimal representation.
7829         (real_to_decimal): New stub for backwards compatibility.
7830         * c-cppbuiltin.c (builtin_define_with_hex_fp_value): Use
7831         real_to_decimal_for_mode instead of real_to_decimal.
7832
7833         * config/spu/spu.md ("floatdisf2", "floatunsdisf2"): New.
7834
7835 2008-08-12  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
7836             Trevor Smigiel  <trevor_smigiel@playstation.sony.com>
7837
7838         * real.c (spu_single_format): New variable.
7839         * real.h (spu_single_format): Declare.
7840
7841         * config/spu/spu.c (spu_override_options): Install SFmode format.
7842         (spu_split_immediate): Use integer mode to operate on pieces of
7843         floating-point values in all cases.
7844
7845         * config/spu/spu.md (UNSPEC_FLOAT_EXTEND, UNSPEC_FLOAT_TRUNCATE): New.
7846         ("extendsfdf2"): Use UNSPEC_FLOAT_EXTEND instead of FLOAT_EXTEND.
7847         ("truncdfsf2"): Use UNSPEC_FLOAT_TRUNCATE instead of FLOAT_TRUNCATE.
7848
7849 2008-08-12  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
7850
7851         * config/spu/spu.c (spu_safe_dma): Respect TARGET_SAFE_DMA.
7852
7853 2008-08-12  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
7854
7855         * config/spu/spu.h (DWARF_FRAME_RETURN_COLUMN): Define.
7856
7857 2008-08-12  Jakub Jelinek  <jakub@redhat.com>
7858
7859         PR c++/36688
7860         * gimplify.c (gimplify_modify_expr_rhs): Test TREE_READONLY
7861         on the VAR_DECL instead of TYPE_READONLY on its type.
7862
7863 2008-08-12  Ira Rosen  <irar@il.ibm.com>
7864
7865         * tree-vectorizer.c: Depend on langhooks.h.
7866         (supportable_widening_operation): Add two arguments. Support double
7867         type conversions.
7868         (supportable_narrowing_operation): Likewise.
7869         * tree-vectorizer.h (supportable_widening_operation): Add two
7870         arguments.
7871         (supportable_narrowing_operation): Likewise.
7872         * tree-vect-patterns.c (vect_recog_widen_mult_pattern) : Call
7873         supportable_widening_operation with correct arguments.
7874         * tree-vect-transform.c (vectorizable_conversion): Likewise.
7875         (vectorizable_type_demotion): Support double type conversions.
7876         (vectorizable_type_promotion): Likewise.
7877         * Makefile.in (tree-vectorizer.o): Depend on langhooks.h.
7878
7879 2008-08-11  Michael Matz  <matz@suse.de>
7880
7881         * i386/i386.c (override_options): Move initialisation from
7882         flag_schedule_insns_after_reload to here from ...
7883         (optimization_options): ... here.
7884
7885 2008-08-11  Jakub Jelinek  <jakub@redhat.com>
7886
7887         PR rtl-optimization/36998
7888         * dwarf2out.c (compute_barrier_args_size_1,
7889         compute_barrier_args_size): Temporarily remove assertions.
7890
7891 2008-08-10  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
7892
7893         PR middle-end/20644
7894         * tree-ssa.c (struct walk_data): Add new flag
7895         warn_possibly_uninitialized.
7896         (warn_uninitialized_var): Use it.
7897         (warn_uninitialized_vars): New.
7898         (execute_early_warn_uninitialized): Call it.
7899         (execute_late_warn_uninitialized): Likewise.
7900
7901 2008-08-09  Andrew Pinski  <andrew_pinski@playstation.sony.com>
7902
7903         PR middle-end/36238
7904         * reload1.c (gen_reload): Guard calls to get_secondary_mem
7905         for memory subregs.
7906
7907 2008-08-09  Jan Hubicka  <jh@suse.cz>
7908
7909         PR target/37055
7910         * optabs.c (maybe_emit_unop_insn): Remove produced code if
7911         expansion failed.
7912         (expand_fix): Be prepared for expansion to fail.
7913         (expand_sfix_optab): Remove instructions if expansion failed.
7914
7915 2008-08-09  Anatoly Sokolov  <aesok@post.ru>
7916
7917         * config/avr/avr.c (avr_mcu_types): Move the AT43USB320 device to
7918         avr31 architecture.
7919         * config/avr/avr.h (CRT_BINUTILS_SPECS): (Ditto.).
7920         * config/avr/t-avr (MULTILIB_MATCHES): (Ditto.).
7921
7922 2008-08-09  Richard Sandiford  <rdsandiford@googlemail.com>
7923
7924         * config.gcc (mips*-*-linux*, mips64*-*-linux*): Add
7925         mips/t-libgcc-mips16 to tmake_file.
7926         * config/mips/mips-protos.h (mips_call_type): New enum.
7927         (mips_pic_base_register, mips_got_load): Declare.
7928         (mips_restore_gp): Take an rtx argument.
7929         (mips_use_pic_fn_addr_reg_p): Declare.
7930         (mips_expand_call): Replace the sibcall_p argument with
7931         a mips_call_type argument.  Add a lazy_p parameter.
7932         (mips_split_call): Declare.
7933         * config/mips/mips.h (MIPS16_PIC_TEMP_REGNUM): New macro.
7934         (MIPS16_PIC_TEMP): Likewise.
7935         (reg_class): Delete M16_NA_REGS.
7936         (REG_CLASS_NAMES, REG_CLASS_CONTENTS): Update accordingly.
7937         (SYMBOL_FLAG_BIND_NOW, SYMBOL_REF_BIND_NOW_P): New macros.
7938         (mips_split_hi_p): Declare.
7939         * config/mips/mips.c (mips_split_hi_p): New array.
7940         (mips_regno_to_class): Change M16_NA_REGS entries to M16_REGS.
7941         (mips_got_symbol_type_p): New function.
7942         (mips_global_symbol_p): Check SYMBOL_REF_EXTERNAL_P.
7943         (mips16_stub_function_p): New function.
7944         (mips16_local_function_p): Likewise.
7945         (mips_use_pic_fn_addr_reg_p): Likewise.
7946         (mips_cannot_force_const_mem): Return false for HIGHs.
7947         Extend CONST_INT and symbolic handling to MIPS16, using
7948         mips_symbol_insns to check that the base symbol type is a
7949         legitimate constant.  Reject GOT-based constants if
7950         TARGET_MIPS16_PCREL_LOADS.
7951         (mips_const_insns): Check targetm.cannot_force_const_mem when
7952         decomposing a symbolic base and a large offset.
7953         (mips_emit_call_insn): Add ORIG_ADDR and ADDR parameters.
7954         When calling a function that needs $25 from MIPS16 code,
7955         move the target address into $25 separately and add a USE
7956         to the call insn.
7957         (mips16_gp_pseudo_reg): Insert the initializer immediately
7958         before the first real insn.
7959         (mips_pic_base_register, mips_got_load): New functions.
7960         (mips_split_symbol): Generalize the name of the LO_SUM_OUT
7961         parameter to LOW_OUT.  Say that it can be any valid SET_SRC
7962         when splitting a load-address operation.  Split SYMBOL_GOT_DISP
7963         constants and highs of SYMBOL_GOT_PAGE_OFST constants.
7964         (mips_call_tls_get_addr): Update the call to mips_expand_call,
7965         also passing NULL_RTX rather than const0_rtx as the aux argument.
7966         (mips_rewrite_small_data_p): Check mips_lo_relocs and mips_split_p
7967         instead of TARGET_EXPLICIT_RELOCS.
7968         (mips_ok_for_lazy_binding_p): Check SYMBOL_REF_BIND_NOW_P.
7969         (mips_load_call_address): Replace the sibcall_p argument with
7970         a mips_call_type argument.  Use mips_got_load.
7971         (mips16_local_alias): New structure.
7972         (mips16_local_aliases): New variable.
7973         (mips16_local_aliases_hash): New function.
7974         (mips16_local_aliases_eq): Likewise.
7975         (mips16_local_alias): Likewise.
7976         (mips16_stub_function): Likewise.
7977         (mips16_build_function_stub): Create a local alias for the target
7978         function.  Handle TARGET_ABICALLS.  For PIC abicalls, emit a
7979         .cpload directive and an R_MIPS_NONE relocation for the target
7980         function, then load the alias rather than the function itself.
7981         Wrap the non-PIC abicalls version in ".option pic0/.option pic2".
7982         (mips16_copy_fpr_return_value): Use mips16_stub_function and
7983         mips_expand_call.  Set SYMBOL_REF_BIND_NOW on the symbol.
7984         (mips16_build_call_stub): Replace the FN parameter with an
7985         FN_PTR parameter.  Force the address into a register if it
7986         isn't a call_insn_operand; don't rely on the caller to do this.
7987         If a call to a locally-defined and locally-binding MIPS16
7988         function must be made indirectly, redirect the call to the
7989         function's local alias.  Use mips16_stub_function_p,
7990         mips16_stub_function, mips_expand_call and use_reg.
7991         Set SYMBOL_FLAG_BIND_NOW on __mips_call_* symbols.
7992         Use explicit %hi and %lo accesses where possible.
7993         Use MIPS_CALL to generate the correct code form of a
7994         jal instruction.  Add clobbers of $18 instead of uses.
7995         Update the call to mips_emit_call_insn.
7996         (mips_expand_call): Replace the SIBCALL_P argument with a
7997         mips_call_type argument and handle the new MIPS_CALL_EPILOGUE value.
7998         Take a LAZY_P parameter.  Call mips16_build_call_stub first,
7999         allowing it to modify the call address.  Update the calls to
8000         mips_load_call_address and mips_emit_call_insn.
8001         (mips_split_call): New function.
8002         (mips_init_relocs): Clear mips_split_hi_p.  Only use %gp_rel if
8003         !TARGET_MIPS16.  Split SYMBOL_GOT_DISP, and the high parts of
8004         SYMBOL_GOT_PAGE_OFST, for MIPS16 code.
8005         (mips_global_pointer): Check mips16_cfun_returns_in_fpr_p.
8006         (mips_extra_live_on_entry): Include MIPS16_PIC_TEMP_REGNUM
8007         if TARGET_MIPS16.
8008         (mips_cprestore_slot): New function.
8009         (mips_restore_gp): Take a TEMP parameter.  Handle TARGET_MIPS16
8010         and use mips_cprestore_slot.
8011         (mips_output_function_prologue): Handle TARGET_MIPS16 for
8012         LOADGP_OLDABI.
8013         (mips_emit_loadgp): Move into MIPS16_PIC_TEMP for MIPS16,
8014         then use a copygp_mips16 instruction to set up $28.
8015         (mips_expand_prologue): Initialize the cprestore slot for MIPS16 too.
8016         (mips16_lay_out_constants): Call split_all_insns_noflow.
8017         (mips_reorg_process_insns): Explicitly set all_noreorder_p to
8018         false if TARGET_MIPS16.
8019         (mips_reorg): Don't call vr4130_align_insns if TARGET_MIPS16.
8020         (mips_output_mi_thunk): Use mips_got_symbol_type_p.  Use the
8021         mips_dangerous_for_la25_p approach for MIPS16 PIC calls too.
8022         (mips_set_mips16_mode): Always set MASK_EXPLICIT_RELOCS for
8023         MIPS16 code.  Allow MIPS16 o32 PIC.
8024         (mips_override_options): Allow MIPS16 o32 PIC.
8025         * config/mips/mips.md: Lower CONST_GP_P moves into register moves
8026         after reload if TARGET_USE_GOT.
8027         (UNSPEC_COPYGP): New constant.
8028         (length): Use a default length of 8 for MIPS16 GOT loads.
8029         (*got_disp<mode>): Check mips_split_p instead of TARGET_XGOT.
8030         (*got_page<mode>): Check mips_split_hi_p.
8031         (*got_disp<mode>, *got_page<mode>): Use mips_got_load.
8032         (unspec_got<mode>, unspec_call<mode>): New expanders.
8033         (load_got<mode>, load_call<mode>): Remove the length attributes.
8034         Use a got attribute instead of a type attribute.
8035         (copygp_mips16): New insn.
8036         (restore_gp): Add a scratch clobber and pass it to mips_restore_gp.
8037         (load_call<mode>): Use a "d" constraint instead of an "r" constraint.
8038         (sibcall, sibcall_value, call, call_value): Update the calls
8039         to mips_expand_call.
8040         (call_internal, call_value_internal): Use mips_split_call.
8041         (call_value_multiple_internal): Likewise.
8042         (call_split): Move after call_internal (the insn it is split from).
8043         (call_internal_direct, call_value_internal_direct): Turn into
8044         define_insn_and_splits.  Split if TARGET_SPLIT_CALLS.
8045         (call_direct_split, call_value_direct_split): New patterns.
8046         * config/mips/constraints.md (c): Handle TARGET_MIPS16 first
8047         and use M16_REGS instead of M16_NA_REGS.
8048         * config/mips/predicates.md (const_call_insn_operand): Replace
8049         the TARGET_ABSOLUTE_ABICALLS-based check with a more general
8050         mips_use_pic_fn_addr_reg_p check.
8051         (move_operand): Reject HIGHs if mips_split_hi_p.
8052         * config/mips/mips16.S: Assembly as empty if the ABI is not suitable.
8053         (__mips16_floatunsisf): Inline __mips16_floatsisf.
8054         (CALL_STUB_NO_RET, CALL_STUB_REG): Copy the target register to $25.
8055         * config/mips/libgcc-mips16.ver: New file.
8056         * config/mips/t-libgcc-mips16 (SHLIB_MAPFILES): Add
8057         $(srcdir)/config/mips/libgcc-mips16.ver.
8058
8059 2008-08-09  Richard Sandiford  <rdsandiford@googlemail.com>
8060
8061         * config/mips/mips.c (mips_unspec_address_offset): Move earlier
8062         in file.
8063         (mips_unspec_address, mips_unspec_offset_high): Likewise.
8064         (mips_ok_for_lazy_binding_p, mips_load_call_address): Likewise.
8065         (mips16_cfun_returns_in_fpr_p): Likewise.
8066
8067 2008-08-09  Richard Sandiford  <rdsandiford@googlemail.com>
8068
8069         * config/mips/mips.h (MASK_RETURN_ADDR): Expand commentary.
8070         * config/mips/linux-unwind.h (mips_fallback_frame_state): Add 2
8071         rather than 4 to PC.
8072
8073 2008-08-09  Richard Sandiford  <rdsandiford@googlemail.com>
8074
8075         * config/mips/mips.h (STATIC_CHAIN_REGNUM): Remap to $15.
8076         (FUNCTION_PROFILER): Save the static chain pointer into $2
8077         beforehand and restore it aftewards.
8078         (TRAMPOLINE_TEMPLATE): Adjust accordingly.  Load the target
8079         address directly into $25 and call the function through $25;
8080         do not clobber $3.  Pad the DImode version to cover the space
8081         left by the deleted $25 <- $3 move.
8082         (TRAMPOLINE_SIZE): Adjust the size of the SImode version after
8083         the removal of the $25 <- $3 move.
8084         (INITIALIZE_TRAMPOLINE): Update offsets accordingly.
8085         * config/mips/sdemtk.h (FUNCTION_PROFILER): As for mips.h.
8086
8087 2008-08-09  Richard Sandiford  <rdsandiford@googlemail.com>
8088             Daniel Jacobowitz  <dan@codesourcery.com>
8089
8090         * config/mips/mips.h (FUNCTION_NAME_ALREADY_DECLARED): Delete.
8091         * config/mips/linux.h (ASM_DECLARE_FUNCTION_NAME): Delete.
8092         (ASM_DECLARE_FUNCTION_SIZE, FUNCTION_NAME_ALREADY_DECLARED): Delete.
8093         * config/mips/mips.c (mips_start_function_definition): New function.
8094         (mips_end_function_definition): Likewise.
8095         (mips_output_function_prologue): Use mips_start_function_definition.
8096         (mips_output_function_epilogue): Use mips_end_function_definition.
8097         (build_mips16_function_stub): Use mips_start_function_definition
8098         and mips_end_function_definition.
8099         (build_mips16_call_stub): Likewise.
8100
8101 2008-08-09  Richard Guenther  <rguenther@suse.de>
8102
8103         * gimple.c (gimple_build_call_1): Deal with FUNCTION_DECL fn.
8104         * gimple.h (gimple_call_fn): Adjust comment.
8105         (gimple_call_set_fndecl): New function.
8106         (gimple_call_fndecl): Adjust for GIMPLE_CALL no
8107         longer having bare FUNCTION_DECL operand.
8108         (gimple_call_return_type): Likewise.
8109         * tree-cfg.c (verify_stmt): Verify function operand of a GIMPLE_CALL.
8110
8111         * value-prof.c (gimple_divmod_fixed_value): Do not emit labels.
8112         (gimple_mod_pow2): Likewise.
8113         (gimple_mod_subtract): Likewise.
8114         (gimple_ic): Likewise.
8115         (gimple_stringop_fixed_value): Likewise.
8116         (gimple_indirect_call_to_profile): Fix for GIMPLE_CALL no
8117         longer having bare FUNCTION_DECL operand.
8118         * ipa-cp.c (ipcp_update_callgraph): Use gimple_call_set_fndecl.
8119         * omp-low.c (optimize_omp_library_calls): Likewise.
8120         * cgraphunit.c (update_call_expr): Likewise.
8121         * tree-ssa-math-opts.c (execute_cse_reciprocals): Likewise.
8122         (execute_convert_to_rsqrt): Likewise.
8123         * cfgexpand.c (gimple_to_tree): Simplify.
8124         (release_stmt_tree): Fix for GIMPLE_CALL no longer having
8125         bare FUNCTION_DECL operand.
8126         * tree-nested.c (init_tmp_var_with_call): Use gimple_call_return_type.
8127         (convert_gimple_call): Use gimple_call_fndecl.
8128         * c-common.c (c_warn_unused_result): Likewise.
8129
8130 2008-08-09  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
8131
8132         PR c/17880
8133         * c-typeck.c (digest_init): Call verify_sequence_points from here.
8134         (c_finish_return): Likewise.
8135         (c_start_case): Likewise.
8136         * c-common.c (warn_for_collisions_1): Use explicit location in warning.
8137         * c-parser.c (c_parser_condition): New. Call
8138         verify_sequence_points.
8139         (c_parser_paren_condition): Call c_parser_condition.
8140         (c_parser_for_statement): Call c_parser_condition.
8141
8142 2008-08-09  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
8143
8144         PR 36901
8145         * diagnostic.def (DK_PEDWARN, DK_PERMERROR): New.
8146         * diagnostic.c (pedantic_warning_kind, permissive_error_kind):
8147         Moved from diagnostic.h
8148         (diagnostic_report_diagnostic): Return bool. Handle DK_PEDWARN and
8149         DK_PERMERROR.
8150         (emit_diagnostic): New.
8151         (warning0, pedwarn0): Delete.
8152         (warning, warning_at, pedwarn, permerror): Return bool.
8153         * diagnostic.h (pedantic_warning_kind, permissive_error_kind):
8154         Moved to diagnostic.c.
8155         (struct diagnostic_context): Use correct type for
8156         classify_diagnostic.
8157         (diagnostic_report_diagnostic): Update declaration.
8158         (emit_diagnostic): Declare.
8159         * errors.c (warning): Return bool.
8160         * errors.h (warning): Update declaration.
8161         * toplev.h (warning0, pedwarn0): Delete.
8162         (warning, warning_at, pedwarn, permerror): Return bool.
8163         * c-errors.c (pedwarn_c99, pedwarn_c90): Use DK_PEDWARN.
8164         * c-decl.c (locate_old_decl): Delete 'diag' argument. Always use
8165         inform. Update all calls.
8166         (diagnose_mismatched_decls): Check return value of warning/pedwarn
8167         before giving informative note.
8168         (implicit_decl_warning): Likewise.
8169         * c-typeck.c (build_function_call): Likewise.
8170         * tree-sssa.c (warn_uninit): Likewise.
8171         * builtins.c (gimplify_va_arg_expr): Likewise.
8172
8173 2008-08-09  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
8174
8175         PR 7651
8176         * doc/invoke.texi (-Wextra): Move warning from here...
8177         (-Wuninitialized): ... to here.
8178
8179 2008-08-08  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
8180
8181         PR 28875
8182         * flags.h (set_Wunused): Delete
8183         * toplev.c (process_options): Handle Wunused flags here.
8184         * opts.c (maybe_warn_unused_parameter): Delete.
8185         (common_handle_option): Replace set_Wunused by warn_unused.
8186         (set_Wextra): Do not handle Wunused-parameter here.
8187         (set_Wunused): Delete.
8188         * c-opts.c (c_common_handle_option): Replace set_Wunused by
8189         warn_unused.
8190         * common.opt (Wunused): Add Var and Init.
8191         (Wunused-function): Likewise.
8192         (Wunused-label): Likewise.
8193         (Wunused-parameter): Likewise.
8194         (Wunused-value): Likewise.
8195         (Wunused-variable): Likewise.
8196
8197 2008-08-08  Peter Bergner  <bergner@vnet.ibm.com>
8198
8199         * doc/invoke.texi: Add cpu_type power7.
8200         * config.in (HAVE_AS_VSX): New.
8201         * config.gcc: Add cpu_type power7.
8202         * configure.ac (HAVE_AS_VSX): Check for assembler support of the
8203         VSX instructions.
8204         * configure: Regenerate.
8205         * config/rs6000/rs6000.c (rs6000_override_options): Alias power7 to
8206         power5.
8207         * config/rs6000/rs6000.h (ASM_CPU_POWER7_SPEC): Define.
8208         (ASM_CPU_SPEC): Pass %(asm_cpu_power7) for -mcpu=power7.
8209         (EXTRA_SPECS): Add asm_cpu_power7 spec string.
8210
8211 2008-08-08  Dorit Nuzman  <dorit@il.ibm.com>
8212
8213         * tree-vect-transform.c (vectorizable_conversion): Pass the integral
8214         type to vectorize.builtin_conversion.
8215         (vectorizable_conversion): Likewise.
8216         * config/i386/i386.c (ix86_vectorize_builtin_conversion): Always takes
8217         integral type as input.
8218         * config/rs6000/rs6000.c (rs6000_builtin_conversion): Add case for
8219         FIX_TRUNC_EXPR.
8220         (rs6000_expand_builtin): Add case for ALTIVEC_BUILTIN_VCTUXS
8221         and ALTIVEC_BUILTIN_VCTSXS.
8222         (rs6000_builtin_mul_widen_even. rs6000_builtin_mul_widen_odd): Fix
8223         formatting.
8224
8225 2008-08-08  Richard Guenther  <rguenther@suse.de>
8226
8227         * tree-ssa-ccp.c (likely_value): Calls are not all varying.
8228         (surely_varying_stmt_p): Calls are varying only if they are
8229         non-builtin and not indirect or have no result.
8230         (ccp_fold): Re-instantiate code before the tuples merge.
8231
8232 2008-08-08  Richard Guenther  <rguenther@suse.de>
8233
8234         PR tree-optimization/37056
8235         * gimple.h (gimple_assign_rhs_class): New helper function.
8236         * tree-ssa-loop-niter.c (get_val_for): Fix tuplification, handle
8237         unary operations properly.
8238
8239 2008-08-07  Jan Hubicka  <jh@suse.cz>
8240
8241         * i386.h (ix86_size_cost): Declare.
8242         (ix86_cur_cost): New function macro.
8243         * i386.md (peepholes expanding size and splitters): Predicate by
8244         optimize_insn_for_speed_p.
8245         (peepholes reduce size and splitters): Predicate by
8246         optimize_insn_for_size_p.
8247         * i386.c (ix86_size_cost): Rename from ...
8248         (size_cost): This one.
8249         (override_options): Update.
8250         (decide_alg): Likewise.
8251         (ix86_expand_clear): Use RTL profile.
8252         (ix86_pad_returns): Use RTL profile.
8253
8254 2008-08-07  Jan Hubicka  <jh@suse.cz>
8255
8256         * recog.c (split_all_insns): Set RTL profile
8257         (peephole2_optimize): Likewise.
8258         * function.c (thread_prologue_and_epilogue_insns): Likewise.
8259         * combine.c (combine_instructions): Likewise.
8260
8261 2008-08-07  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
8262
8263         * c-common.c (c_common_reswords): Also warn about keyword "bool".
8264
8265 2008-08-07  Bob Wilson  <bob.wilson@acm.org>
8266
8267         * config/xtensa/xtensa.c (xtensa_copy_incoming_a7): Copy incoming
8268         value in a6 after the set_frame_ptr insn.
8269
8270 2008-08-07  Richard Henderson  <rth@redhat.com>
8271
8272         PR debug/37033
8273         * gcc.c (cpp_options): Pass along -g*.
8274
8275 2008-08-07  Joseph Myers  <joseph@codesourcery.com>
8276
8277         * config/arm/arm.c (output_move_neon): Update comment describing
8278         big-endian vector layout.
8279         (arm_assemble_integer): Do not handle big-endian NEON vectors
8280         specially.
8281         * config/arm/neon.md (vec_set<mode>_internal, vec_extract<mode>,
8282         neon_vget_lane<mode>_sext_internal,
8283         neon_vget_lane<mode>_zext_internal, neon_vget_lane<mode>): Adjust
8284         element indices for big-endian.
8285
8286 2008-08-07  Richard Henderson  <rth@redhat.com>
8287
8288         * configure.ac (HAVE_GAS_CFI_PERSONALITY_DIRECTIVE): New.
8289         * configure, config.in: Rebuild.
8290         * debug.h (dwarf2out_do_cfi_asm): Declare.
8291         * c-cppbuiltin.c (c_cpp_builtins): Use it.
8292         * dwarf2out.c (dwarf2out_do_cfi_asm): New.
8293         (dwarf2out_cfi_label, add_fde_cfi, output_call_frame_info,
8294         dwarf2out_begin_prologue, dwarf2out_end_epilogue): Use it.
8295
8296 2008-08-07  Joseph Myers  <joseph@codesourcery.com>
8297
8298         * config/arm/iwmmxt.md (movv8qi_internal, movv4hi_internal,
8299         movv2si_internal): Combine into mov<mode>_internal.
8300         (movv2si_internal_2): Remove.
8301
8302 2008-08-07  Jan Hubicka  <jh@suse.cz>
8303
8304         PR target/37048
8305         * i386.md (single stringop patterns): Enable unconditionally.
8306
8307 2008-08-07  H.J. Lu  <hongjiu.lu@intel.com>
8308
8309         PR target/36992
8310         * config/i386/emmintrin.h (_mm_move_epi64): Use __builtin_ia32_movq128.
8311
8312         * config/i386/i386.c (ix86_builtins): Add IX86_BUILTIN_MOVQ128.
8313         (bdesc_args): Add IX86_BUILTIN_MOVQ128.
8314
8315         * config/i386/sse.md (sse2_movq128): New.
8316
8317         * doc/extend.texi: Document __builtin_ia32_movq128.
8318
8319 2008-08-07  Richard Guenther  <rguenther@suse.de>
8320
8321         PR middle-end/37042
8322         * tree-ssa-alias-warnings.c (nonstandard_alias_p): Ref-all
8323         pointers can access anything.
8324
8325 2008-08-06  Jan Hubicka  <jh@suse.cz>
8326
8327         * optabs.c (emit_unop_insn): Break out to ...
8328         (maybe_emit_unop_insn): ... this one.
8329         (expand_sfix_optab): Use maybe variant.
8330         * optabs.h (maybe_emit_unop_insn): Declare.
8331
8332         * i386.md (mov0 patterns): Enable by default.
8333         (FP conversion expanders): Disable expansion of code expanding
8334         sequences when instruction should be optimized for size.
8335         (single strinop patterns): Enable when optimizing for size.
8336         (string expanders): Disable expanding of code expanding sequences
8337         when optimizning instruction for size.
8338         * i386.c (ix86_expand_vector_move_misalign): Do code size optimization
8339         per BB basis.
8340         (ix86_fp_comparison_sahf_cost): Likewise.
8341         (ix86_expand_branch): Likewise.
8342         (ix86_expand_ashl_const): Likewise.
8343         (ix86_split_ashl): Likewise.
8344         (ix86_expand_strlen): Likewise.
8345         (ix86_emit_fp_unordered_jump): Likewie.
8346
8347 2008-08-06  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
8348
8349         * c-common.c: Fix typo.
8350         (c_common_reswords): Activate more C++ keyword warnings.
8351
8352         * matrix-reorg.c (compute_offset): Avoid C++ keywords.
8353
8354 2008-08-06  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
8355
8356         PR 26785
8357         * diagnostic.c (permerror_at): New.
8358         * toplev.h (permerror_at): Declare.
8359
8360 2008-08-06  Victor Kaplansky  <victork@il.ibm.com>
8361             Ira Rosen  <irar@il.ibm.com>
8362
8363         * tree-vect-transform.c (vect_model_simple_cost): Return
8364         immediately if stmt is pure SLP.
8365         (vect_model_store_cost): Ditto.
8366         (vect_model_load_cost): Ditto.
8367         (vectorizable_store): Remove PURE_SLP check before call
8368         to vect_model_store_cost.
8369         (vect_model_store_cost): When checking whether stmt describe
8370         strided access, add a check that it is not slp_node.
8371
8372 2008-08-06  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
8373
8374         PR 8715
8375         * c-common.c (warn_for_sign_compare): New. Handle separately the
8376         case that 'constant' is zero.
8377         * c-typeck.c (build_binary_op): Move code to c-common.c
8378
8379 2008-08-06  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
8380
8381         * config/alpha/alpha.c (alpha_preferred_reload_class,
8382         alpha_secondary_reload, alpha_emit_set_const_1, function_value,
8383         alpha_output_mi_thunk_osf): Avoid C++ keywords.
8384         * config/arm/arm.c (output_move_vfp, output_move_neon): Likewise.
8385         * config/arm/arm.md: Likewise.
8386         * config/avr/avr-protos.h (preferred_reload_class,
8387         test_hard_reg_class, avr_simplify_comparison_p,
8388         out_shift_with_cnt, class_max_nregs): Likewise.
8389         * config/avr/avr.c (class_max_nregs, avr_simplify_comparison_p,
8390         output_movqi, output_movhi, output_movsisf, out_shift_with_cnt,
8391         preferred_reload_class, test_hard_reg_class): Likewise.
8392         * config/bfin/bfin.c (legitimize_pic_address, hard_regno_mode_ok,
8393         bfin_memory_move_cost, bfin_secondary_reload,
8394         bfin_output_mi_thunk): Likewise.
8395         * config/crx/crx.c (crx_secondary_reload_class,
8396         crx_memory_move_cost): Likewise.
8397         * config/frv/frv-protos.h (frv_secondary_reload_class,
8398         frv_class_likely_spilled_p, frv_class_max_nregs): Likewise.
8399         * config/frv/frv.c (frv_override_options, frv_alloc_temp_reg,
8400         frv_secondary_reload_class, frv_class_likely_spilled_p,
8401         frv_class_max_nregs): Likewise.
8402         * config/h8300/h8300.c (h8300_classify_operand,
8403         h8300_unary_length, h8300_bitfield_length, h8300_asm_insn_count):
8404         Likewise.
8405         * config/i386/winnt.c (i386_pe_declare_function_type): Likewise.
8406         * config/ia64/ia64.c (ia64_preferred_reload_class,
8407         ia64_secondary_reload_class, ia64_output_mi_thunk): Likewise.
8408         * config/iq2000/iq2000.c (gen_int_relational): Likewise.
8409         * config/m32c/m32c.c (class_can_hold_mode, m32c_output_compare):
8410         Likewise.
8411         * config/m68hc11/m68hc11.c (preferred_reload_class,
8412         m68hc11_memory_move_cost): Likewise.
8413         * config/mcore/mcore.c (mcore_secondary_reload_class,
8414         mcore_reload_class): Likewise.
8415         * config/mips/mips.c (mips_hard_regno_mode_ok_p,
8416         mips_class_max_nregs, mips_cannot_change_mode_class,
8417         mips_preferred_reload_class, mips_secondary_reload_class,
8418         mips_output_mi_thunk): Likewise.
8419         * config/mmix/mmix.c (mmix_preferred_reload_class,
8420         mmix_preferred_output_reload_class, mmix_secondary_reload_class):
8421         Likewise.
8422         * config/mn10300/mn10300.c (mn10300_secondary_reload_class):
8423         Likewise.
8424         * config/pa/pa.c (pa_secondary_reload, pa_combine_instructions,
8425         pa_can_combine_p, pa_cannot_change_mode_class): Likewise.
8426         * config/pa/pa.h (LEGITIMIZE_RELOAD_ADDRESS): Likewise.
8427         * config/rs6000/rs6000.c (paired_expand_vector_init,
8428         rs6000_secondary_reload_class, rs6000_output_mi_thunk,
8429         compare_section_name, rs6000_memory_move_cost): Likewise.
8430         * config/s390/s390.c (s390_emit_compare_and_swap,
8431         s390_preferred_reload_class, s390_secondary_reload,
8432         legitimize_pic_address, legitimize_tls_address,
8433         legitimize_reload_address, s390_expand_cs_hqi, s390_expand_atomic,
8434         s390_class_max_nregs): Likewise.
8435         * config/s390/s390.h (LEGITIMIZE_RELOAD_ADDRESS): Likewise.
8436         * config/s390/s390.md: Likewise.
8437         * config/score/score-protos.h (score_secondary_reload_class,
8438         score_preferred_reload_class): Likewise.
8439         * config/score/score.c (score_preferred_reload_class,
8440         score_secondary_reload_class): Likewise.
8441         * config/score/score3.c (score3_output_mi_thunk,
8442         score3_preferred_reload_class, score3_secondary_reload_class,
8443         score3_hard_regno_mode_ok): Likewise.
8444         * config/score/score3.h (score3_preferred_reload_class,
8445         score3_secondary_reload_class): Likewise.
8446         * config/score/score7.c (score7_output_mi_thunk,
8447         score7_preferred_reload_class, score7_secondary_reload_class,
8448         score7_hard_regno_mode_ok): Likewise.
8449         * config/score/score7.h (score7_preferred_reload_class,
8450         score7_secondary_reload_class): Likewise.
8451         * config/sh/sh.c (prepare_move_operands, output_far_jump,
8452         output_branchy_insn, add_constant, gen_block_redirect,
8453         sh_insn_length_adjustment, sh_cannot_change_mode_class,
8454         sh_output_mi_thunk, replace_n_hard_rtx, sh_secondary_reload): Likewise.
8455         * config/sparc/sparc.c (sparc_output_mi_thunk): Likewise.
8456         * config/stormy16/stormy16.c (xstormy16_output_cbranch_hi,
8457         xstormy16_output_cbranch_si, xstormy16_secondary_reload_class,
8458         xstormy16_preferred_reload_class): Likewise.
8459         * config/xtensa/xtensa.c (xtensa_expand_compare_and_swap,
8460         xtensa_expand_atomic, override_options,
8461         xtensa_preferred_reload_class, xtensa_secondary_reload_class):
8462         Likewise.
8463         * reorg.c (try_merge_delay_insns): Likewise.
8464         * tree.c (merge_dllimport_decl_attributes): Likewise.
8465
8466         * config/frv/frv.c (frv_print_operand): Change isalpha to ISALPHA.
8467
8468 2008-08-06  Michael Matz  <matz@suse.de>
8469
8470         * Makefile.in (write_entries_to_file): Quote words.
8471         * gengtype.c: (read_input_line): Skip over leading white-space.
8472
8473 2008-08-06  Marc Gauthier  <marc@tensilica.com>
8474
8475         * config.gcc: Match more processor names for Xtensa.
8476         * configure.ac: Likewise.
8477         * doc/install.texi (Specific): Likewise.
8478         * configure: Regenerate.
8479
8480 2008-08-06  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
8481
8482         * builtins.c (expand_builtin_profile_func): Avoid C++ keywords.
8483         * calls.c (avoid_likely_spilled_reg): Likewise.
8484         * cfgexpand.c (gimple_assign_rhs_to_tree): Likewise.
8485         * cgraph.c (cgraph_clone_edge, cgraph_clone_node): Likewise.
8486         * config/i386/i386.c (ix86_expand_special_args_builtin,
8487         ix86_secondary_reload): Likewise.
8488         * except.c (struct eh_region, gen_eh_region_catch,
8489         remove_unreachable_regions, duplicate_eh_regions,
8490         assign_filter_values, build_post_landing_pads,
8491         sjlj_find_directly_reachable_regions, remove_eh_handler,
8492         reachable_next_level, foreach_reachable_handler,
8493         can_throw_internal_1, can_throw_external_1,
8494         collect_one_action_chain): Likewise.
8495         * expr.c (expand_expr_real_1, vector_mode_valid_p): Likewise.
8496         * fold-const.c (twoval_comparison_p, eval_subst): Likewise.
8497         * function.c (update_temp_slot_address, instantiate_new_reg,
8498         instantiate_virtual_regs_in_rtx,
8499         instantiate_virtual_regs_in_insn): Likewise.
8500         * gimple.c (extract_ops_from_tree, gimple_seq_copy): Likewise.
8501         * gimplify.c (gimplify_call_expr, gimplify_init_constructor,
8502         gimplify_cleanup_point_expr): Likewise.
8503         * ipa-cp.c (ipcp_lattice_changed): Likewise.
8504         * passes.c (next_pass_1): Likewise.
8505         * print-tree.c (print_node_brief, print_node): Likewise.
8506         * profile.c (branch_prob): Likewise.
8507         * tree-dump.c (dump_register): Likewise.
8508         * tree-eh.c (replace_goto_queue_cond_clause, lower_catch):
8509         Likewise.
8510         * tree-inline.c (remap_ssa_name, remap_type_1, remap_blocks,
8511         copy_statement_list, remap_gimple_op_r, copy_tree_body_r,
8512         copy_edges_for_bb, copy_cfg_body, copy_tree_r,
8513         copy_arguments_for_versioning, copy_static_chain): Likewise.
8514         * tree-into-ssa.c (names_replaced_by, add_to_repl_tbl,
8515         add_new_name_mapping, register_new_name_mapping): Likewise.
8516         * tree-mudflap.c (mf_xform_derefs): Likewise.
8517         * tree-predcom.c (struct chain, dump_chain, replace_ref_with,
8518         get_init_expr, combine_chains): Likewise.
8519         * tree-pretty-print.c (dump_generic_node): Likewise.
8520         * tree-ssa-structalias.c (create_variable_info_for): Likewise.
8521         * tree-vrp.c (simplify_cond_using_ranges): Likewise.
8522         * tree.c (substitute_in_expr, iterative_hash_expr): Likewise.
8523         * value-prof.c (gimple_duplicate_stmt_histograms): Likewise.
8524
8525 2008-08-06  H.J. Lu  <hongjiu.lu@intel.com>
8526
8527         PR middle-end/37010
8528         * calls.c (expand_call): Use the biggest preferred stack
8529         boundary.
8530
8531 2008-08-06  Michael Matz  <matz@suse.de>
8532
8533         PR target/36613
8534         * reload.c (push_reload): Merge in,out,in_reg,out_reg members
8535         for reused reload, instead of overwriting them.
8536
8537 2008-08-06  H.J. Lu  <hongjiu.lu@intel.com>
8538
8539         PR middle-end/37009
8540         * cfgexpand.c (expand_stack_alignment): Check parm_stack_boundary
8541         for incoming stack boundary.
8542
8543         * function.c (assign_parm_find_entry_rtl): Update
8544         parm_stack_boundary.
8545
8546         * function.h (rtl_data): Add parm_stack_boundary.
8547
8548         * config/i386/i386.c (ix86_finalize_stack_realign_flags): Check
8549         parm_stack_boundary for incoming stack boundary.
8550
8551 2008-08-06  Joseph Myers  <joseph@codesourcery.com>
8552
8553         * jump.c (rtx_renumbered_equal_p): Do not call subreg_regno_offset
8554         for unrepresentable subregs or treat them as equal to other regs
8555         or subregs with the same register number.
8556
8557 2008-08-06  Aldy Hernandez  <aldyh@redhat.com>
8558
8559         PR middle-end/35432
8560         * gimplify.c (gimplify_modify_expr): Do not optimize zero-sized types
8561         if want_value.
8562
8563 2008-08-06  Jan Hubicka  <jh@suse.cz>
8564
8565         * predict.c (maybe_hot_frequency_p): When profile is absent, all
8566         frequencies might be hot.
8567
8568 2008-08-06  Andreas Krebbel  <krebbel1@de.ibm.com>
8569
8570         * reload.c (find_reloads): Force constants into literal pool
8571         also if they are wrapped in a SUBREG.
8572
8573 2008-08-06  Maxim Kuvyrkov  <maxim@codesourcery.com>
8574
8575         PR target/35659
8576         * haifa-sched.c (sched_insn_is_legitimate_for_speculation_p): Move ...
8577         * sched-deps.c (sched_insn_is_legitimate_for_speculation_p): ... here.
8578         Don't allow predicated instructions for data speculation.
8579         * sched-int.h (sched_insn_is_legitimate_for_speculation_p): Move
8580         declaration.
8581
8582 2008-08-06  Maxim Kuvyrkov  <maxim@codesourcery.com>
8583
8584         * haifa-sched.c (extend_global): Split to extend_global_data and
8585         extend_region_data.  Update all uses.
8586         (extend_all): Rename to extend_block_data.
8587
8588 2008-08-06  Maxim Kuvyrkov  <maxim@codesourcery.com>
8589
8590         * sched-rgn.c (new_ready): Check if instruction can be
8591         speculatively scheduled before attempting speculation.
8592         (debug_rgn_dependencies): Remove wrongful assert.
8593
8594 2008-08-05  Bob Wilson  <bob.wilson@acm.org>
8595
8596         * config/xtensa/t-xtensa: Remove dependency for gt-xtensa.h.
8597
8598 2008-08-05  Bob Wilson  <bob.wilson@acm.org>
8599
8600         * config/xtensa/xtensa.c (xtensa_va_start): Unshare valist.
8601         (xtensa_gimplify_va_arg_expr): Unshare valist, orig_ndx, ndx, array,
8602         va_size, and type_size.
8603
8604 2008-08-04  Jason Merrill  <jason@redhat.com>
8605
8606         PR c++/37016
8607         * tree-ssa.c (useless_type_conversion_p_1): Call langhook
8608         if TYPE_STRUCTURAL_EQUALITY_P is true for both types.
8609
8610 2008-08-05  Richard Henderson  <rth@redhat.com>
8611
8612         * configure.ac (HAVE_GAS_CFI_DIRECTIVE): Check .cfi_personality.
8613         * configure: Rebuild.
8614
8615 2008-08-05  Andrew Pinski  <andrew_pinski@playstation.sony.com>
8616
8617         PR tree-opt/37024
8618         * tree-tailcall.c (process_assignment): Use gimple_assign_cast_p
8619         instead of IS_CONVERT_EXPR_CODE_P for seeing if the assignment
8620         is a conversion.
8621
8622 2008-08-05  Richard Henderson  <rth@redhat.com>
8623
8624         * Makefile.in (c-cppbuiltin.o): Depend on debug.h.
8625         * c-cppbuiltin.c (c_cpp_builtins): Define __GCC_HAVE_DWARF2_CFI_ASM.
8626         * doc/cpp.texi (__GCC_HAVE_DWARF2_CFI_ASM): Document it.
8627         * common.opt (fdwarf2-cfi-asm): New.
8628         * configure.ac (HAVE_GAS_CFI_DIRECTIVE): New.
8629         * config.in, configure: Rebuild.
8630         * dwarf2asm.c (dw2_asm_output_data_raw): New.
8631         (dw2_asm_output_data_uleb128_raw, dw2_asm_output_data_sleb128_raw):
8632         New.
8633         (dw2_force_const_mem): Externalize.
8634         * dwarf2asm.h: Update.
8635         * dwarf2out.c (dwarf2out_cfi_label): If flag_dwarf2_cfi_asm, don't
8636         generate a real label.
8637         (output_cfi_directive): New.
8638         (add_fde_cfi): If flag_dwarf2_cfi_asm, use it.
8639         (output_call_frame_info): Do nothing if flag_dwarf2_cfi_asm.
8640         (dwarf2out_begin_prologue): Emit .cfi_startproc, .cfi_personality,
8641         and .cfi_lsda.
8642         (dwarf2out_end_epilogue): Emit .cfi_endproc.
8643         (output_loc_operands_raw, output_loc_sequence_raw): New.
8644         (output_cfa_loc_raw): New.
8645
8646 2008-08-05  Paul Brook  <paul@codesourcery.com>
8647
8648         * doc/invoke.texi: Document new ARM -mfpu= and -mcpu= options.
8649         * config/arm/arm.c (all_fpus): Add vfpv3 and vfpv3-d16.
8650         (fp_model_for_fpu): Add entry for FPUTYPE_VFP3D16.
8651         (arm_file_start): Add FPUTYPE_VFP3D16.  Rename vfp3 to vfpv3.
8652         * config/arm/arm.h (TARGET_VFPD32): Define.
8653         (TARGET_VFP3): Use TARGET_VFPD32.
8654         (fputype): Add FPUTYPE_VFP3D16.
8655         (LAST_VFP_REGNUM): Use TARGET_VFPD32.
8656         * config/arm/constraints.md ("w"): Use TARGET_VFPD32.
8657         * config/arm/arm-cores.def: Add cortex-r4f.
8658         * config/arm/arm-tune.md: Regenerate.
8659
8660 2008-08-05  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
8661
8662         * config/spu_spu_mfcio.h: Wrap in extern "C" if __cplusplus.
8663         Reword some comments throughout the file.
8664
8665         (MFC_MIN_DMA_LIST_ELEMENTS): New define.
8666         (MFC_MAX_DMA_LIST_ELEMENTS): Likewise.
8667         (MFC_MIN_DMA_LIST_SIZE): Redefine in terms of
8668         MFC_MIN_DMA_LIST_ELEMENTS.
8669         (MFC_MAX_DMA_LIST_SIZE): Redefine in terms of
8670         MFC_MAX_DMA_LIST_ELEMENTS.
8671
8672         (MFC_START_ENABLE): Remove PPU-only define.
8673         (MFC_PUTS_CMD, MFC_PUTFS_CMD, MFC_PUTBS_CMD): Likewise.
8674         (MFC_GETS_CMD, MFC_GETFS_CMD, MFC_GETBS_CMD): Likewise.
8675
8676         (MFC_PUTB_CMD, MFC_PUTF_CMD): Reimplement using symbolic constants.
8677         (MFC_PUTL_CMD, MFC_PUTLB_CMD, MFC_PUTLF_CMD): Likewise.
8678         (MFC_PUTR_CMD, MFC_PUTRB_CMD, MFC_PUTRF_CMD): Likewise.
8679         (MFC_PUTRL_CMD, MFC_PUTRLB_CMD, MFC_PUTRLF_CMD): Likewise.
8680         (MFC_GETB_CMD, MFC_GETF_CMD): Likewise.
8681         (MFC_GETL_CMD, MFC_GETLB_CMD, MFC_GETLF_CMD): Likewise.
8682         (MFC_SNDSIGB_CMD, MFC_SNDSIGF_CMD): Likewise.
8683
8684         (MFC_SDCRT_CMD, MFC_SDCRTST_CMD): New defines.
8685         (MFC_SDCRZ_CMD, MFC_SDCRST_CMD, MFC_SDCRF_CMD): Likewise.
8686         (mfc_sdcrt, mfc_sdcrtst): Likewise.
8687         (mfc_sdcrz, mfc_sdcrst, mfc_sdcrf): Likewise.
8688
8689         (spu_read_machine_status): Fix typo.
8690
8691 2008-08-05  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
8692
8693         * config/spu/spu.h (CANNOT_CHANGE_MODE_CLASS): Allow (multi)word-sized
8694         SUBREG of multi-word hard register.
8695         * config/spu/spu.c (valid_subreg): Likewise.
8696         (adjust_operand): Handle SUBREGs of multi-word hard registers.
8697
8698 2008-08-04  Richard Guenther  <rguenther@suse.de>
8699
8700         * tree-ssa-loop-ivopts.c (add_iv_value_candidates): Also add
8701         the candidate with the stripped base if that base is different
8702         from the original base even for offset zero.
8703
8704 2008-08-04  Richard Guenther  <rguenther@suse.de>
8705
8706         PR middle-end/36691
8707         * tree-ssa-loop-niter.c (number_of_iterations_lt_to_ne): Correctly
8708         check for no_overflow.
8709
8710 2008-08-04  Richard Guenther  <rguenther@suse.de>
8711
8712         * tree-vect-transform.c (vectorizable_call): Fix tuplification.
8713
8714 2008-08-04  Paul Brook  <paul@codesourcery.com>
8715
8716         * cofig/arm/arm.c (thumb_core_reg_alloc_order): New.
8717         (arm_order_regs_for_local_alloc): New function.
8718         * config/arm/arm-protos.h (arm_order_regs_for_local_alloc): Add
8719         prototype.
8720         * config/arm/arm.h (ORDER_REGS_FOR_LOCAL_ALLOC): Define.
8721
8722 2008-08-04  H.J. Lu  <hongjiu.lu@intel.com>
8723
8724         PR target/37012
8725         * config/i386/i386.c (ix86_expand_prologue): Use UNITS_PER_WORD
8726         instead of STACK_BOUNDARY / BITS_PER_UNIT to align stack.
8727         (ix86_expand_epilogue): Likewise.
8728
8729 2008-08-04  H.J. Lu  <hongjiu.lu@intel.com>
8730
8731         * config/i386/i386.c (ix86_compute_frame_layout): Fix a typo
8732         in comments.
8733
8734 2008-08-03  Uros Bizjak  <ubizjak@gmail.com>
8735
8736         * config/i386/mmx.md (*mov<mode>_internal_rex64): Use Yi instead of x
8737         to avoid inter-unit moves for !TARGET_INTER_UNIT_MOVES.
8738         (*movv2sf_internal_rex64): Ditto.
8739
8740 2008-08-03  Jan Hubicka  <jh@suse.cz>
8741
8742         * optabs.c (expand_binop, expand_builtin_pow, expand_builtin_powi,
8743         expand_builtin_strcat): Upse optimize_insn_for_speed predicate.
8744         * expmed.c (expand_smod_pow2): Likewise.
8745
8746 2008-08-03  Uros Bizjak  <ubizjak@gmail.com>
8747
8748         PR target/36992
8749         * config/i386/sse.md (vec_concatv2di): Add Y2 constraint to
8750         alternative 0 of operand 1.
8751         (*vec_concatv2di_rex64_sse): Ditto.
8752         (*vec_concatv2di_rex64_sse4_1): Add x constraint to alternative 0
8753         of operand 1.
8754         (*sse2_storeq_rex64): Penalize allocation of "r" registers.
8755         * config/i386/mmx.md (*mov<mode>_internal_rex64): Penalize allocation
8756         of "Y2" registers to avoid SSE <-> MMX conversions for DImode moves.
8757         (*movv2sf_internal_rex64): Ditto.
8758
8759 2008-08-02  Richard Guenther  <rguenther@suse.de>
8760
8761         PR target/35252
8762         * config/i386/sse.md (SSEMODE4S, SSEMODE2D): New mode iterators.
8763         (ssedoublesizemode): New mode attribute.
8764         (sse_shufps): Call gen_sse_shufps_v4sf.
8765         (sse_shufps_1): Macroize.
8766         (sse2_shufpd): Call gen_Sse_shufpd_v2df.
8767         (sse2_shufpd_1): Macroize.
8768         (vec_extract_odd, vec_extract_even): New expanders.
8769         (vec_interleave_highv4sf, vec_interleave_lowv4sf,
8770         vec_interleave_highv2df, vec_interleave_lowv2df): Likewise.
8771         * i386.c (ix86_expand_vector_init_one_nonzero): Call
8772         gen_sse_shufps_v4sf instead of gen_sse_shufps_1.
8773         (ix86_expand_vector_set): Likewise.
8774         (ix86_expand_reduc_v4sf): Likewise.
8775
8776 2008-08-01  Doug Kwan  <dougkwan@google.com>
8777
8778         * matrix-reorg.c: Re-enable all code.
8779         (struct malloc_call_data): Change CALL_STMT to gimple type.
8780         (collect_data_for_malloc_call): Tuplify.
8781         (struct access_site_info): Change STMT to gimple type.
8782         (struct matrix_info): Change MIN_INDIRECT_LEVEL_ESCAPE_STMT,
8783         and MALLOC_FOR_LEVEL to gimple and gimple pointer type.
8784         (struct free_info): Change STMT to gimple type.
8785         (struct matrix_access_phi_node):  Change PHI to gimple type.
8786         (get_inner_of_cast_expr): Remove.
8787         (may_flatten_matrices_1): Tuplify.
8788         (may_flatten_matrices): Ditto.
8789         (mark_min_matrix_escape_level): Ditto.
8790         (ssa_accessed_in_tree): Refactor statement RHS related code into ...
8791         (ssa_accessed_in_call_rhs): New
8792         (ssa_accessed_in_assign_rhs): New
8793         (record_access_alloc_site_info): Tuplify.
8794         (add_allocation_site): Ditto.
8795         (analyze_matrix_allocation_site): Ditto.
8796         (analyze_transpose): Ditto.
8797         (get_index_from_offset): Ditto.
8798         (update_type_size): Ditto.
8799         (analyze_accesses_for_call_expr): Tuplify and renamed into ...
8800         (analyze_accesses_for_call_stmt): New. Also handle LHS of a call.
8801         (analyze_accesses_for_phi_node): Tuplify.
8802         (analyze_accesses_for_modify_stmt): Tuplify and renamed into ...
8803         (analyze_accesses_for_assign_stmt): Remove code for handling call LHS.
8804         (analyze_matrix_accesses): Tuplify.
8805         (check_var_data): New call-back type for check_var_notmodified_p.
8806         (check_var_notmodified_p): Tuplify and use call-back struct to
8807         return statement found.
8808         (can_calculate_expr_before_stmt): Factor out statement related code
8809         into ...
8810         (can_calculate_stmt_before_stmt): New.
8811         (check_allocation_function): Tuplify.
8812         (find_sites_in_func): Ditto.
8813         (record_all_accesses_in_func): Ditto.
8814         (transform_access_sites): Ditto.
8815         (transform_allocation_sites): Ditto.
8816         (matrix_reorg): Re-enable.
8817         (gate_matrix_reorg): Re-enable.
8818
8819 2008-08-01  Jakub Jelinek  <jakub@redhat.com>
8820
8821         * dwarf2out.c (compute_barrier_args_size): Set barrier_args_size
8822         for labels for which it hasn't been set yet.  If it has been set,
8823         stop walking insns and continue with next worklist item.
8824         (dwarf2out_stack_adjust): Don't call compute_barrier_args_size
8825         if the only BARRIER is at the very end of a function.
8826
8827 2008-08-01  H.J. Lu  <hongjiu.lu@intel.com>
8828
8829         * cfgexpand.c (expand_stack_alignment): Assert that
8830         stack_realign_drap and drap_rtx must match.
8831
8832         * function.c (instantiate_new_reg): If DRAP is used to realign
8833         stack, replace virtual_incoming_args_rtx with internal arg
8834         pointer.
8835
8836 2008-08-01  Richard Guenther  <rguenther@suse.de>
8837
8838         * tree-ssa-pre.c (fini_pre): Take in_fre parameter.  Free
8839         loop information only if we initialized it.
8840         (execute_pre): Call fini_pre with in_fre.
8841         * tree-ssa-loop-ivcanon (try_unroll_loop_completely): Dump
8842         if we do not unroll because we hit max-completely-peeled-insns.
8843         Use our estimation for consistency, do allow shrinking.
8844
8845 2008-08-01  H.J. Lu  <hongjiu.lu@intel.com>
8846
8847         * config/i386/i386.c (override_options): Replace ABI_STACK_BOUNDARY
8848         with MIN_STACK_BOUNDARY.
8849         (ix86_update_stack_boundary): Likewise.
8850         (ix86_expand_prologue): Assert MIN_STACK_BOUNDARY instead of
8851         STACK_BOUNDARY.
8852
8853         * config/i386/i386.h (ABI_STACK_BOUNDARY): Renamed to ...
8854         (MIN_STACK_BOUNDARY): This.
8855
8856 2008-08-01  Richard Guenther  <rguenther@suse.de>
8857
8858         PR middle-end/36997
8859         * gimplify.c (gimplify_call_expr): Set error_mark_node on GS_ERROR.
8860
8861 2008-08-01  Richard Guenther  <rguenther@suse.de>
8862
8863         PR tree-optimization/36988
8864         * tree-ssa-ccp.c (ccp_fold): Conversions of constants only
8865         do not matter if that doesn't change volatile qualification.
8866
8867 2008-08-01  Paolo Bonzini  <bonzini@gnu.org>
8868
8869         * configure.ac: Do not generate libada-mk.  Do not subst
8870         host_cc_for_libada.
8871         * libada-mk.in: Remove.
8872         * Makefile.in: Pass TARGET_LIBGCC2_CFLAGS to libgcc.mvars.
8873         * configure: Regenerate.
8874
8875 2008-08-01  Basile Starynkevitch  <basile@starynkevitch.net>
8876
8877         * tree-pass.h: Added comment about not dumping passes with name
8878         starting with star in struct opt_pass.
8879         * passes.c (register_dump_files_1): Don't do dump for a pass with
8880         name starting with star.
8881         * doc/passes.texi (Pass manager): Mention pass names and special
8882         meaning of star prefix to avoid dump.
8883
8884 2008-07-31  Adam Nemet  <anemet@caviumnetworks.com>
8885
8886         * config.gcc (mipsisa64r2*-*-linux*): New configuration.  Set ISA
8887         to MIPS64r2.
8888         * config/mips/mips.h (GENERATE_MIPS16E): Update comment.
8889         (ISA_MIPS64R2): New macro.
8890         (TARGET_CPU_CPP_BUILTINS, MULTILIB_ISA_DEFAULT): Handle it.
8891         (ISA_HAS_64BIT_REGS, ISA_HAS_MUL3, ISA_HAS_FP_CONDMOVE,
8892         ISA_HAS_8CC, ISA_HAS_FP4, ISA_HAS_PAIRED_SINGLE,
8893         ISA_HAS_MADD_MSUB, ISA_HAS_NMADD4_NMSUB4, ISA_HAS_CLZ_CLO,
8894         ISA_HAS_ROR, ISA_HAS_PREFETCH, ISA_HAS_PREFETCHX, ISA_HAS_SEB_SEH,
8895         ISA_HAS_EXT_INS, ISA_HAS_MXHC1, ISA_HAS_HILO_INTERLOCKS,
8896         ISA_HAS_SYNCI, MIN_FPRS_PER_FMT): Return true for ISA_MIPS64R2.
8897         (MIPS_ISA_LEVEL_SPEC, ASM_SPEC, LINK_SPEC): Handle -mips64r2.
8898         (TARGET_LOONGSON_2E, TARGET_LOONGSON_2F, TARGET_LOONGSON_2EF):
8899         Move up to keep list alphabetically sorted.
8900         (TUNE_20KC, TUNE_24K, TUNE_74K, TUNE_LOONGSON_2EF): Likewise.
8901         * config/mips/mips.c (mips_cpu_info_table): Add default MIPS64r2
8902         processor.
8903         * doc/invoke.texi (MIPS Options): Add -mips64r2.
8904         (-march=@var{arch}): Add mips64r2.
8905
8906 2008-07-31  H.J. Lu  <hongjiu.lu@intel.com>
8907
8908         * config/i386/darwin.h (MAIN_STACK_BOUNDARY): Define to 128.
8909
8910 2008-07-31  Steve Ellcey  <sje@cup.hp.com>
8911
8912         * expr.c (expand_assignment): Check for complete type.
8913
8914 2008-07-31  H.J. Lu  <hongjiu.lu@intel.com>
8915
8916         PR debug/36977
8917         * cfgexpand.c (expand_stack_alignment): Set stack_realign_tried.
8918
8919         * dwarf2out.c (based_loc_descr): Check crtl->stack_realign_tried
8920         for stack alignment.
8921
8922         * function.h (rtl_data): Add stack_realign_tried.  Update comments.
8923
8924 2008-07-31  Kaz Kojima  <kkojima@gcc.gnu.org>
8925
8926         * config/sh/sh.c (sh_canonical_va_list_type): Remove.
8927         (TARGET_CANONICAL_VA_LIST_TYPE): Remove.
8928
8929 2008-07-31  Jakub Jelinek  <jakub@redhat.com>
8930
8931         PR rtl-optimization/36419
8932         * dwarf2out.c (barrier_args_size): New variable.
8933         (compute_barrier_args_size, compute_barrier_args_size_1): New
8934         functions.
8935         (dwarf2out_stack_adjust): For BARRIERs call compute_barrier_args_size
8936         if not called yet in the current function, use barrier_args_size
8937         array to find the new args_size value.
8938         (dwarf2out_frame_debug): Free and clear barrier_args_size.
8939
8940 2008-07-31  H.J. Lu  <hongjiu.lu@intel.com>
8941
8942         PR debug/36980
8943         * dwarf2out.c (dwarf2out_frame_debug_expr): Move rule 17 before
8944         rule 19.
8945
8946 2008-07-31  H.J. Lu  <hongjiu.lu@intel.com>
8947
8948         PR debug/36976
8949         * dwarf2out.c (dwarf2out_args_size_adjust): New.
8950         (dwarf2out_stack_adjust): Use it.
8951         (dwarf2out_frame_debug_expr): Likewise.
8952
8953 2008-07-31  Richard Guenther  <rguenther@suse.de>
8954
8955         PR tree-optimization/36978
8956         * tree-ssa-loop-unswitch.c (tree_may_unswitch_on): Do not fold
8957         the generated condition.
8958
8959 2008-07-31  Richard Guenther  <rguenther@suse.de>
8960
8961         * passes.c (init_optimization_passes): Always call
8962         pass_early_warn_uninitialized.
8963         * opts.c (decode_options): Do not warn about -Wuninitialized at -O0.
8964         * doc/invoke.texi (-Wuninitialized): Correct for enabling at -O0.
8965         * doc/passes.texi (Warn for uninitialized variables): Adjust.
8966
8967 2008-07-31  Jakub Jelinek  <jakub@redhat.com>
8968
8969         PR c/36970
8970         * builtins.c (maybe_emit_free_warning): New function.
8971         (expand_builtin): Process BUILT_IN_FREE even at -O0.  Call
8972         maybe_emit_free_warning for BUILT_IN_FREE.
8973
8974         PR debug/36278
8975         * dwarf2out.c (get_context_die): New function.
8976         (force_decl_die, force_type_die): Use it.
8977         (dwarf2out_imported_module_or_decl): Likewise.  If base_type_die
8978         returns NULL, force generation of DW_TAG_typedef and put that into
8979         DW_AT_import.
8980
8981         PR preprocessor/36649
8982         * c-pch.c (c_common_read_pch): Save and restore
8983         line_table->trace_includes across PCH restore.
8984
8985 2008-07-30  Eric Botcazou  <ebotcazou@adacore.com>
8986
8987         PR ada/36554
8988         * dwarf2out.c (is_subrange_type): Deal with BOOLEAN_TYPE.
8989
8990 2008-07-30  Rafael Ã\81vila de Espíndola  <espindola@google.com>
8991
8992         PR 36974
8993         * final.c (call_from_call_insn): Handle COND_EXEC.
8994
8995 2008-07-30  H.J. Lu  <hongjiu.lu@intel.com>
8996
8997         * builtins.c (std_gimplify_va_arg_expr): Replace
8998         PREFERRED_STACK_BOUNDARY with MAX_SUPPORTED_STACK_ALIGNMENT.
8999         * config/i386/i386.c (ix86_gimplify_va_arg): Likewise.
9000
9001 2008-07-30  Joey Ye  <joey.ye@intel.com>
9002             H.J. Lu  <hongjiu.lu@intel.com>
9003
9004         * builtins.c (expand_builtin_setjmp_receiver): Replace
9005         virtual_incoming_args_rtx with crtl->args.internal_arg_pointer.
9006         (expand_builtin_apply_args_1): Likewise.
9007         (expand_builtin_longjmp): Need DRAP for stack alignment.
9008         (expand_builtin_apply): Likewise.
9009
9010         * caller-save.c (setup_save_areas): Call assign_stack_local_1
9011         instead of assign_stack_local to allow alignment reduction.
9012
9013         * calls.c (emit_call_1): Need DRAP for stack alignment if
9014         return pops.
9015         (expand_call): Replace virtual_incoming_args_rtx with
9016         crtl->args.internal_arg_pointer.
9017         * stmt.c (expand_nl_goto_receiver): Likewise.
9018
9019         * cfgexpand.c (get_decl_align_unit): Estimate stack variable
9020         alignment and store to stack_alignment_estimated and
9021         max_used_stack_slot_alignment.
9022         (expand_one_var): Likewise.
9023         (expand_stack_alignment): New function.
9024         (tree_expand_cfg): Initialize max_used_stack_slot_alignment
9025         and stack_alignment_estimated fields in rtl_data.  Call
9026         expand_stack_alignment at end.
9027
9028         * defaults.h (INCOMING_STACK_BOUNDARY): New.
9029         (MAX_STACK_ALIGNMENT): Likewise.
9030         (MAX_SUPPORTED_STACK_ALIGNMENT): Likewise.
9031         (SUPPORTS_STACK_ALIGNMENT): Likewise.
9032
9033         * emit-rtl.c (gen_reg_rtx): Estimate stack alignment for
9034         stack alignment when generating virtual registers.
9035
9036         * function.c (assign_stack_local): Renamed to ...
9037         (assign_stack_local_1): This.  Add a parameter to indicate
9038         if it is OK to reduce alignment.
9039         (assign_stack_local): Use it.
9040         (instantiate_new_reg): Instantiate virtual incoming args rtx
9041         to vDRAP if stack realignment and DRAP is needed.
9042         (assign_parms): Collect parameter/return type alignment and
9043         contribute to stack_alignment_estimated.
9044         (locate_and_pad_parm): Likewise.
9045         (get_arg_pointer_save_area): Replace virtual_incoming_args_rtx
9046         with crtl->args.internal_arg_pointer.
9047
9048         * function.h (rtl_data): Add new field drap_reg,
9049         max_used_stack_slot_alignment, stack_alignment_estimated,
9050         stack_realign_needed, need_drap, stack_realign_processed and
9051         stack_realign_finalized.
9052         (stack_realign_fp): New macro.
9053         (stack_realign_drap): Likewise.
9054
9055         * global.c (compute_regsets): Frame pointer is needed when
9056         stack is realigned.  Can eliminate frame pointer when stack is
9057         realigned and dynamic realigned argument pointer isn't used.
9058
9059         * reload1.c (update_eliminables):  Frame pointer is needed
9060         when stack is realigned.
9061         (init_elim_table): Can eliminate frame pointer when stack is
9062         realigned and dynamic realigned argument pointer isn't used.
9063
9064         * rtl.h (assign_stack_local_1): Declare new funtion.
9065
9066         * target-def.h (TARGET_UPDATE_STACK_BOUNDARY): New.
9067         (TARGET_GET_DRAP_RTX): Likewise.
9068         (TARGET_CALLS): Add TARGET_UPDATE_STACK_BOUNDARY and
9069         TARGET_GET_DRAP_RTX.
9070
9071         * target.h (gcc_target): Add update_stack_boundary and get_drap_rtx.
9072
9073         * tree-vectorizer.c (vect_can_force_dr_alignment_p): Replace
9074         STACK_BOUNDARY with MAX_STACK_ALIGNMENT.
9075
9076 2008-07-30  Xuepeng Guo  <xuepeng.guo@intel.com>
9077             H.J. Lu  <hongjiu.lu@intel.com>
9078
9079         * dwarf2out.c (dw_fde_struct): Add stack_realignment, drap_reg,
9080         vdrap_reg, stack_realign and drap_reg_saved.
9081         (add_cfi): Don't allow redefining CFA when DRAP is used.
9082         (reg_save): Handle stack alignment.
9083         (dwarf2out_frame_debug_expr): Add rules 16-20 to handle stack
9084         alignment.  Don't generate DWARF information for (set fp sp)
9085         when DRAP is used.
9086         (dwarf2out_begin_prologue): Initialize drap_reg and vdrap_reg
9087         to INVALID_REGNUM.
9088         (int_loc_descriptor): Move prototype forward.  Also define if
9089         DWARF2_UNWIND_INFO is true.
9090         (output_cfa_loc): Handle DW_CFA_expression.
9091         (build_cfa_aligned_loc): New.
9092         (based_loc_descr): Update assert for stack realign.  For local
9093         variables, use sp+offset when stack is aligned without drap and
9094         fp+offset when stack is aligned with drap.  For arguments, use
9095         cfa+offset when drap is used to align stack.
9096
9097 2008-07-30  Joey Ye  <joey.ye@intel.com>
9098             H.J. Lu  <hongjiu.lu@intel.com>
9099
9100         * config/i386/i386.c (ix86_force_align_arg_pointer_string):
9101         Break long line.
9102         (ix86_gen_andsp): New.
9103         (ix86_user_incoming_stack_boundary): Likewise.
9104         (ix86_default_incoming_stack_boundary): Likewise.
9105         (ix86_incoming_stack_boundary): Likewise.
9106         (ix86_can_eliminate): Likewise.
9107         (find_drap_reg): Likewise.
9108         (ix86_update_stack_boundary): Likewise.
9109         (ix86_get_drap_rtx): Likewise.
9110         (ix86_finalize_stack_realign_flags): Likewise.
9111         (TARGET_UPDATE_STACK_BOUNDARY): Likewise.
9112         (TARGET_GET_DRAP_RTX): Likewise.
9113         (override_options): Overide option value for new options.
9114         (ix86_function_ok_for_sibcall): Remove check for
9115         force_align_arg_pointer.
9116         (ix86_handle_cconv_attribute): Likewise.
9117         (ix86_function_regparm): Likewise.
9118         (setup_incoming_varargs_64): Don't set stack_alignment_needed here.
9119         (ix86_va_start): Replace virtual_incoming_args_rtx with
9120         crtl->args.internal_arg_pointer.
9121         (ix86_select_alt_pic_regnum): Check DRAP register.
9122         (ix86_save_reg): Replace force_align_arg_pointer with drap_reg.
9123         (ix86_compute_frame_layout): Compute frame layout wrt stack
9124         realignment.
9125         (ix86_internal_arg_pointer): Just return virtual_incoming_args_rtx.
9126         (ix86_expand_prologue): Decide if stack realignment is needed
9127         and generate prologue code accordingly.
9128         (ix86_expand_epilogue): Generate epilogue code wrt stack
9129         realignment is really needed or not.
9130
9131         * config/i386/i386.h (MAIN_STACK_BOUNDARY): New.
9132         (ABI_STACK_BOUNDARY): Likewise.
9133         (PREFERRED_STACK_BOUNDARY_DEFAULT): Likewise.
9134         (STACK_REALIGN_DEFAULT): Likewise.
9135         (INCOMING_STACK_BOUNDARY): Likewise.
9136         (MAX_STACK_ALIGNMENT): Likewise.
9137         (ix86_incoming_stack_boundary): Likewise.
9138         (FORCE_PREFERRED_STACK_BOUNDARY_IN_MAIN): Removed.
9139         (REAL_PIC_OFFSET_TABLE_REGNUM): Updated to use BX_REG.
9140         (CAN_ELIMINATE): Defined with ix86_can_eliminate.
9141         (machine_function): Remove force_align_arg_pointer.
9142
9143         * config/i386/i386.md (BX_REG): New.
9144         (R13_REG): Likewise.
9145
9146         * config/i386/i386.opt (mforce_drap): New.
9147         (mincoming-stack-boundary): Likewise.
9148         (mstackrealign): Add Init(-1).
9149
9150         * config/i386/i386-protos.h (ix86_can_eliminate): New
9151
9152 2008-07-30  H.J. Lu  <hongjiu.lu@intel.com>
9153
9154         * doc/extend.texi: Update force_align_arg_pointer.
9155
9156         * doc/invoke.texi: Document -mincoming-stack-boundary.  Update
9157         -mstackrealign.
9158
9159         * doc/tm.texi (MAX_STACK_ALIGNMENT): Add macro.
9160         (INCOMING_STACK_BOUNDARY): Likewise.
9161         (TARGET_UPDATE_STACK_BOUNDARY): New target hook.
9162         (TARGET_GET_DRAP_RTX): Likewise.
9163
9164 2008-07-30  Andreas Schwab  <schwab@suse.de>
9165
9166         PR rtl-optimization/36929
9167         * dse.c (replace_inc_dec): Use emit_insn_before instead of
9168         add_insn_before and fix argument order.
9169         (replace_inc_dec_mem): Handle NULL rtx.
9170
9171 2008-07-30  Andrew Jenner  <andrew@codesourcery.com>
9172
9173         * config/arm/arm.c (arm_compute_static_chain_stack_bytes): New
9174         function.
9175         (arm_compute_initial_elimination_offset): Use it.
9176         (arm_compute_save_reg_mask): Include static chain save slot when
9177         calculating alignment.
9178         (arm_get_frame_offsets): Ditto.
9179         (thumb1_compute_save_reg_mask): Ensure we have a low register saved
9180         that we can use to decrement the stack when the stack decrement
9181         could be too big for an immediate value in a single insn.
9182         (thumb1_expand_prologue): Avoid using r12 for stack decrement.
9183
9184 2008-07-30  Richard Guenther  <rguenther@suse.de>
9185
9186         PR tree-optimization/36967
9187         * tree-predcom.c (remove_stmt): Use gimple_assign_ssa_name_copy_p.
9188         Release defs of statements we remove.
9189
9190 2008-07-30  Nathan Froyd  <froydnj@codesourcery.com>
9191
9192         * config/arm/arm.c (arm_expand_prologue): Use 0-length rtvec
9193         instead of NULL_RTVEC.
9194
9195 2008-07-30  Nathan Froyd  <froydnj@codesourcery.com>
9196
9197         PR target/35866
9198
9199         * config/rs6000/rs6000.h (SLOW_UNALIGNED_ACCESS): Add clause for
9200         vector modes.
9201
9202 2008-07-30  Rafael Ã\81vila de Espíndola  <espindola@google.com>
9203
9204         * final.c (call_from_call_insn): New.
9205         (final_scan_insn): Call assemble_external on FUNCTION_DECLs.
9206
9207 2008-07-30  Paolo Bonzini  <bonzini@gnu.org>
9208
9209         * configure.ac: Substitute ADA_CFLAGS.
9210         * configure: Regenerate.
9211         * config.host: Remove mention of pa/x-ada and pa/x-ada-hpux10 files.
9212         * Makefile.in: Remove mention of X_* variables.
9213         * config/pa/x-ada-hpux10: Remove.
9214         * config/pa/x-ada: Remove.
9215
9216         * doc/fragments.texi: Update.
9217
9218 2008-07-30  Olivier Hainque  <hainque@adacore.com>
9219
9220         * config/mips/irix-crti.asm: .hide __gcc_init and __gcc_fini.
9221         * config/mips/iris6.h (IRIX_SUBTARGET_LINK_SPEC, irix ld): Hide
9222         __dso_handle explicitly here.
9223
9224 2008-07-30  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
9225
9226         PR 34389
9227         * c-typeck.c (build_binary_op): Encapsulate code into...
9228         * c-common.c (shorten_binary_op): ...this new function.
9229         (conversion_warning): Use the new function. Handle non-negative
9230         constant in bitwise-and.
9231         * c-common.h (shorten_binary_op): Declare.
9232
9233 2008-07-30  Olivier Hainque  <hainque@adacore.com>
9234
9235         * scan.c (make_sstring_space): Add explicit conversions of
9236         allocator's return value.
9237         * fix-header.c (recognized_function): Likewise.
9238
9239 2008-07-30  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
9240
9241         * doc/cpp.texi: Update to GFDL 1.2.
9242         * doc/gcc.texi: Do not list GPL as Invariant Section.
9243         * doc/gccint.texi: Likewise.  Update copyright years.
9244         * doc/install.texi: Update copyright years.
9245
9246 2008-07-30  Alan Modra  <amodra@bigpond.net.au>
9247
9248         PR target/36955
9249         * config/rs6000/rs6000.c (rs6000_legitimize_tls_address): Add
9250         a use of pic_offset_table_rtx for -msecure-plt __tls_get_addr calls.
9251
9252 2008-07-29  Jan Hubicka  <jh@suse.cz>
9253
9254         * c-decl.c (merge_decls): Do not handle DECL_INLINE.
9255         (grokdeclarator): Likewise.
9256         * langhooks.c (lhd_warn_unused_global_decl): Use
9257         DECL_DECLARED_INLINE_P.
9258         * print-tree.c (print_node): Remove DECL_INLINE check.
9259
9260 2008-07-29  Richard Guenther  <rguenther@suse.de>
9261
9262         PR tree-optimization/36945
9263         * tree-ssa-sccvn.h (copy_reference_ops_from_ref): Declare.
9264         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Export.
9265         Record invariant addresses un-decomposed.
9266         (copy_reference_ops_from_call): Record reference call
9267         arguments properly.  Simplify.
9268         * tree-ssa-pre.c (create_component_ref_by_pieces_1): New
9269         helper split out from ...
9270         (create_component_ref_by_pieces): ... here.  Simplify.
9271         Prepare for recursive invocation for call arguments.
9272         (create_expression_by_pieces): Adjust call to
9273         create_component_ref_by_pieces.
9274         (compute_avail): Process operand 2 of reference ops.
9275
9276 2008-07-29  Richard Guenther  <rguenther@suse.de>
9277
9278         * gimplify.c (gimplify_expr): Clear TREE_SIDE_EFFECTS for OBJ_TYPE_REF.
9279
9280 2008-07-29  Jakub Jelinek  <jakub@redhat.com>
9281
9282         * c-format.c (check_format_types): Revert unwanted checkin.
9283
9284 2008-07-29  Jan Hubicka  <jh@suse.cz>
9285
9286         * flags.h (flag_really_no_inline): Remove.
9287         * cgraph.c (cgraph_function_possibly_inlined_p): Simplify.
9288         * toplev.c (flag_really_no_inline): Remove.
9289         * c-cppbuiltin.c (c_cpp_builtins): Use flag_no_inline.
9290         * ipa-inline.c (cgraph_decide_inlining): Do not check flag_no_inline.
9291         (cgraph_decide_inlining_incrementally): Likewise.
9292         (compute_inline_parameters): Likewise.
9293         * opts.c (decode_options): Simplify.
9294         * c-opts.c (c_common_post_options): Do not set flag_no_inline.
9295         * common.opt (finline): Initialize to 1.
9296         * tree-inline.c (inlinable_function_p): Check flag_no_inline.
9297
9298 2008-07-29  Jan Hubicka  <jh@suse.cz>
9299
9300         * predict.c (always_optimize_for_size_p): New function.
9301         (optimize_bb_for_size_p, optimize_bb_for_speed_p,
9302         optimize_edge_for_size_p, optimize_edge_for_speed_p,
9303         optimize_insn_for_size_p, optimize_insn_for_speed_p): New global
9304         functions.
9305         (rtl_profile_for_bb, rtl_profile_for_edge, rtl_default_profile): New.
9306         * function.c (prepare_function_start): Set default profile.
9307         * function.h (rtl_data): Add maybe_hot_insn_p.
9308         * cfgexpand.c (expand_gimple_basic_block): Set RTL profile.
9309         (construct_exit_block): Likewise.
9310         (tree_expand_cfg): Likewise.
9311         * basic-block.h
9312         (optimize_bb_for_size_p, optimize_bb_for_speed_p,
9313         optimize_edge_for_size_p, optimize_edge_for_speed_p,
9314         optimize_insn_for_size_p, optimize_insn_for_speed_p): Declare.
9315         (rtl_profile_for_bb, rtl_profile_for_edge, default_rtl_profile):
9316         Declare.
9317
9318 2008-07-29  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
9319
9320         PR 34985
9321         * c-decl.c (merge_decls): Merge USED flags.
9322
9323 2008-07-29  Kaz Kojima  <kkojima@gcc.gnu.org>
9324
9325         * config/sh/sh.c (sh_gimplify_va_arg_expr): Unshare the addr,
9326         valist, next_fp, next_fp_tmp, next_fp_limit, next_o, next_o_limit,
9327         next_stack, lab_false and lab_over trees.
9328
9329 2008-07-28  Richard Guenther  <rguenther@suse.de>
9330
9331         PR tree-optimization/36957
9332         * tree-flow.h (tree_ssa_useless_type_conversion): Remove.
9333         (useless_type_conversion_p): Remove.
9334         (types_compatible_p): Remove.
9335         * gimple.h (tree_ssa_useless_type_conversion): Declare.
9336         (useless_type_conversion_p): Declare.
9337         (types_compatible_p): Declare.
9338         (gimple_expr_type): Return the base type only if it is
9339         trivially convertible to the subtype.
9340
9341 2008-07-28  Andreas Tobler  <a.tobler@schweiz.org>
9342
9343         * configure.ac: Use the m4_do macro to concatenate the warnings into
9344         one string in ACX_PROG_CC_WARNING_OPTS,
9345         ACX_PROG_CC_WARNING_ALMOST_PEDANTIC and
9346         ACX_PROG_CC_WARNINGS_ARE_ERRORS.
9347         * configure: Regenerate.
9348
9349 2008-07-28  Richard Guenther  <rguenther@suse.de>
9350
9351         * tree-ssa-pre.c (insert_into_preds_of_block): Remove dead code.
9352         (insert_fake_stores): Remove.
9353         (realify_fake_stores): Likewise.
9354         (execute_pre): Remove dead code.
9355         * tree-ssa-structalias.c (get_constraint_for_1): Remove tcc_unary case.
9356         (find_func_aliases): Deal with it here instead.
9357         Re-enable gcc_unreachable call.
9358
9359 2008-07-28  Richard Guenther  <rguenther@suse.de>
9360
9361         Merge from gimple-tuples-branch.
9362
9363         * ChangeLog.tuples: ChangeLog from gimple-tuples-branch.
9364         * gimple.def: New file.
9365         * gsstruct.def: Likewise.
9366         * gimple-iterator.c: Likewise.
9367         * gimple-pretty-print.c: Likewise.
9368         * tree-gimple.c: Removed.  Merged into ...
9369         * gimple.c: ... here.  New file.
9370         * tree-gimple.h: Removed.  Merged into ...
9371         * gimple.h: ... here.  New file.
9372
9373         * Makefile.in: Add dependencies on GIMPLE_H and tree-iterator.h.
9374         * configure.ac: Added support for ENABLE_GIMPLE_CHECKING and the
9375         --enable-checking=gimple flag.
9376         * config.in: Likewise.
9377         * configure: Regenerated.
9378
9379         * tree-ssa-operands.h: Tuplified.
9380         * tree-vrp.c: Likewise.
9381         * tree-loop-linear.c: Likewise.
9382         * tree-into-ssa.c: Likewise.
9383         * tree-ssa-loop-im.c: Likewise.
9384         * tree-dump.c: Likewise.
9385         * tree-complex.c: Likewise.
9386         * cgraphbuild.c: Likewise.
9387         * tree-ssa-threadupdate.c: Likewise.
9388         * tree-ssa-loop-niter.c: Likewise.
9389         * tree-pretty-print.c: Likewise.
9390         * tracer.c: Likewise.
9391         * gengtype.c: Likewise.
9392         * tree-loop-distribution.c: Likewise.
9393         * tree-ssa-loop-unswitch.c: Likewise.
9394         * cgraph.c: Likewise.
9395         * cgraph.h: Likewise.
9396         * tree-ssa-loop-manip.c: Likewise.
9397         * value-prof.c: Likewise.
9398         * tree-ssa-loop-ch.c: Likewise.
9399         * tree-tailcall.c: Likewise.
9400         * value-prof.h: Likewise.
9401         * tree.c: Likewise.
9402         * tree.h: Likewise.
9403         * tree-pass.h: Likewise.
9404         * ipa-cp.c: Likewise.
9405         * tree-scalar-evolution.c: Likewise.
9406         * tree-scalar-evolution.h: Likewise.
9407         * target.h: Likewise.
9408         * lambda-mat.c: Likewise.
9409         * tree-phinodes.c: Likewise.
9410         * diagnostic.h: Likewise.
9411         * builtins.c: Likewise.
9412         * tree-ssa-alias-warnings.c: Likewise.
9413         * cfghooks.c: Likewise.
9414         * fold-const.c: Likewise.
9415         * cfghooks.h: Likewise.
9416         * omp-low.c: Likewise.
9417         * tree-ssa-dse.c: Likewise.
9418         * ipa-reference.c: Likewise.
9419         * tree-ssa-uncprop.c: Likewise.
9420         * toplev.c: Likewise.
9421         * tree-gimple.c: Likewise.
9422         * tree-gimple.h: Likewise.
9423         * tree-chrec.c: Likewise.
9424         * tree-chrec.h: Likewise.
9425         * tree-ssa-sccvn.c: Likewise.
9426         * tree-ssa-sccvn.h: Likewise.
9427         * cgraphunit.c: Likewise.
9428         * tree-ssa-copyrename.c: Likewise.
9429         * tree-ssa-ccp.c: Likewise.
9430         * tree-ssa-loop-ivopts.c: Likewise.
9431         * tree-nomudflap.c: Likewise.
9432         * tree-call-cdce.c: Likewise.
9433         * ipa-pure-const.c: Likewise.
9434         * c-format.c: Likewise.
9435         * tree-stdarg.c: Likewise.
9436         * tree-ssa-math-opts.c: Likewise.
9437         * tree-ssa-dom.c: Likewise.
9438         * tree-nrv.c: Likewise.
9439         * tree-ssa-propagate.c: Likewise.
9440         * ipa-utils.c: Likewise.
9441         * tree-ssa-propagate.h: Likewise.
9442         * tree-ssa-alias.c: Likewise.
9443         * gimple-low.c: Likewise.
9444         * tree-ssa-sink.c: Likewise.
9445         * ipa-inline.c: Likewise.
9446         * c-semantics.c: Likewise.
9447         * dwarf2out.c: Likewise.
9448         * expr.c: Likewise.
9449         * tree-ssa-loop-ivcanon.c: Likewise.
9450         * predict.c: Likewise.
9451         * tree-ssa-loop.c: Likewise.
9452         * tree-parloops.c: Likewise.
9453         * tree-ssa-address.c: Likewise.
9454         * tree-ssa-ifcombine.c: Likewise.
9455         * matrix-reorg.c: Likewise.
9456         * c-decl.c: Likewise.
9457         * tree-eh.c: Likewise.
9458         * c-pretty-print.c: Likewise.
9459         * lambda-trans.c: Likewise.
9460         * function.c: Likewise.
9461         * langhooks.c: Likewise.
9462         * ebitmap.h: Likewise.
9463         * tree-vectorizer.c: Likewise.
9464         * function.h: Likewise.
9465         * langhooks.h: Likewise.
9466         * tree-vectorizer.h: Likewise.
9467         * ipa-type-escape.c: Likewise.
9468         * ipa-type-escape.h: Likewise.
9469         * domwalk.c: Likewise.
9470         * tree-if-conv.c: Likewise.
9471         * profile.c: Likewise.
9472         * domwalk.h: Likewise.
9473         * tree-data-ref.c: Likewise.
9474         * tree-data-ref.h: Likewise.
9475         * tree-flow-inline.h: Likewise.
9476         * tree-affine.c: Likewise.
9477         * tree-vect-analyze.c: Likewise.
9478         * c-typeck.c: Likewise.
9479         * gimplify.c: Likewise.
9480         * coretypes.h: Likewise.
9481         * tree-ssa-phiopt.c: Likewise.
9482         * calls.c: Likewise.
9483         * tree-ssa-coalesce.c: Likewise.
9484         * tree.def: Likewise.
9485         * tree-dfa.c: Likewise.
9486         * except.c: Likewise.
9487         * except.h: Likewise.
9488         * cfgexpand.c: Likewise.
9489         * tree-cfgcleanup.c: Likewise.
9490         * tree-ssa-pre.c: Likewise.
9491         * tree-ssa-live.c: Likewise.
9492         * tree-sra.c: Likewise.
9493         * tree-ssa-live.h: Likewise.
9494         * tree-predcom.c: Likewise.
9495         * lambda.h: Likewise.
9496         * tree-mudflap.c: Likewise.
9497         * ipa-prop.c: Likewise.
9498         * print-tree.c: Likewise.
9499         * tree-ssa-copy.c: Likewise.
9500         * ipa-prop.h: Likewise.
9501         * tree-ssa-forwprop.c: Likewise.
9502         * ggc-page.c: Likewise.
9503         * c-omp.c: Likewise.
9504         * tree-ssa-dce.c: Likewise.
9505         * tree-vect-patterns.c: Likewise.
9506         * tree-ssa-ter.c: Likewise.
9507         * tree-nested.c: Likewise.
9508         * tree-ssa.c: Likewise.
9509         * lambda-code.c: Likewise.
9510         * tree-ssa-loop-prefetch.c: Likewise.
9511         * tree-inline.c: Likewise.
9512         * tree-inline.h: Likewise.
9513         * tree-iterator.c: Likewise.
9514         * tree-optimize.c: Likewise.
9515         * tree-ssa-phiprop.c: Likewise.
9516         * tree-vect-transform.c: Likewise.
9517         * tree-object-size.c: Likewise.
9518         * tree-outof-ssa.c: Likewise.
9519         * cfgloop.c: Likewise.
9520         * system.h: Likewise.
9521         * tree-profile.c: Likewise.
9522         * cfgloop.h: Likewise.
9523         * c-gimplify.c: Likewise.
9524         * c-common.c: Likewise.
9525         * tree-vect-generic.c: Likewise.
9526         * tree-flow.h: Likewise.
9527         * c-common.h: Likewise.
9528         * basic-block.h: Likewise.
9529         * tree-ssa-structalias.c: Likewise.
9530         * tree-switch-conversion.c: Likewise.
9531         * tree-ssa-structalias.h: Likewise.
9532         * tree-cfg.c: Likewise.
9533         * passes.c: Likewise.
9534         * ipa-struct-reorg.c: Likewise.
9535         * ipa-struct-reorg.h: Likewise.
9536         * tree-ssa-reassoc.c: Likewise.
9537         * cfgrtl.c: Likewise.
9538         * varpool.c: Likewise.
9539         * stmt.c: Likewise.
9540         * tree-ssanames.c: Likewise.
9541         * tree-ssa-threadedge.c: Likewise.
9542         * langhooks-def.h: Likewise.
9543         * tree-ssa-operands.c: Likewise.
9544         * config/alpha/alpha.c: Likewise.
9545         * config/frv/frv.c: Likewise.
9546         * config/s390/s390.c: Likewise.
9547         * config/m32c/m32c.c: Likewise.
9548         * config/m32c/m32c-protos.h: Likewise.
9549         * config/spu/spu.c: Likewise.
9550         * config/sparc/sparc.c: Likewise.
9551         * config/i386/i386.c: Likewise.
9552         * config/sh/sh.c: Likewise.
9553         * config/xtensa/xtensa.c: Likewise.
9554         * config/stormy16/stormy16.c: Likewise.
9555         * config/ia64/ia64.c: Likewise.
9556         * config/rs6000/rs6000.c: Likewise.
9557         * config/pa/pa.c: Likewise.
9558         * config/mips/mips.c: Likewise.
9559
9560 2008-07-28  Simon Baldwin  <simonb@google.com>
9561
9562         * c-pragma.c (handle_pragma_message): New function.
9563         (init_pragma): Register handle_pragma_message.
9564         * doc/extend.texi (Diagnostic Pragmas): Added #pragma message
9565         documentation.
9566
9567 2008-07-27  Victor Kaplansky  <victork@il.ibm.com>
9568
9569         PR tree-optimization/35252
9570         * tree-vect-analyze.c (vect_build_slp_tree): Make IMAGPART_EXPR and
9571         REALPART_EXPR to be considered as same load operation.
9572
9573 2008-07-27  Eric Botcazou  <ebotcazou@adacore.com>
9574
9575         PR tree-optimization/36830
9576         * tree-ssa-sccvn.c (vn_reference_op_compute_hash): Hash operand #2.
9577         (expressions_equal_p): Return false if only one operand is null.
9578
9579 2008-07-26  Gerald Pfeifer  <gerald@pfeifer.com>
9580
9581         * doc/install.texi (powerpc-*-netbsd*): Remove redundant texinfo
9582         version requirements.
9583
9584 2008-07-26  Olivier Hainque  <hainque@adacore.com>
9585
9586         * collect2.c (symkind): New enum.  Symbol kinds we care about.
9587         (is_ctor_dtor): Return symkind instead of int.  Adjust prototype,
9588         code and head comment accordingly.
9589         (scan_prog_file): Use symkind names instead of bare integers.
9590
9591 2008-07-25  Jan Hubicka  <jh@suse.cz>
9592
9593         * cgraph.c (cgraph_function_possibly_inlined_p): Do not rely on
9594         DECL_INLINE.
9595         * cgraphunit.c (record_cdtor_fn): Do not initialize DECL_INLINE
9596         (cgraph_preserve_function_body_p): Do not rely on DECL_INLINE.
9597         * dojump.c (clear_pending_stack_adjust): Likewise.
9598         * print-tree.c (print_node): Ignore DECL_INLINE.
9599         * tree-inline.c (inlinable_function_p): Likewise.
9600
9601 2008-07-25  Michael Meissner  <gnu@the-meissners.org>
9602
9603         * doc/extend.texi (hot attribute): Document that the hot attribute
9604         turns on -O3 for some ports.
9605         (cold attribute): Document that the cold attribute turns on -Os
9606         for some ports
9607
9608         * doc/tm.texi (OPTIMIZATION_OPTIONS): Update documentation to
9609         reflect function specific option support.
9610
9611         * target.h (struct target_option_hooks): Add fields to say whether
9612         the cold attribute implies -Os and the hot attribute implies -O3.
9613
9614         * target-def.h (TARGET_OPTION_COLD_ATTRIBUTE_SETS_OPTIMIZATION):
9615         By default, do not turn on -Os for cold functions.
9616         (TARGET_OPTION_COLD_ATTRIBUTE_SETS_OPTIMIZATION): By default, do
9617         not turn on -O3 for hot functions.
9618
9619         * c-common.c (handle_hot_attribute): Use target hook to determine
9620         if hot functions should enable -O3.
9621         (handle_cold_attribute): Use target hook to determine if cold
9622         functions should enable -Os.
9623
9624         * config/i386/i386.c (ix86_target_string): Add -m3dnowa support.
9625         (override_options): Move disable scheduling to
9626         optimization_options.
9627         (optimization_options): Disable scheduling here, not
9628         override_options.
9629         (TARGET_OPTION_COLD_ATTRIBUTE_SETS_OPTIMIZATION): Define.
9630         (TARGET_OPTION_HOT_ATTRIBUTE_SETS_OPTIMIZATION): Define.
9631
9632         * config/ia64/ia64.c (ia64_override_options): Move setting
9633         scheduling flags to ia64_optimization_options.
9634         (ia64_optimization_options): Disable scheduling options here, and
9635         not in ia64_override_options.
9636         (TARGET_OPTION_COLD_ATTRIBUTE_SETS_OPTIMIZATION): Define.
9637         (TARGET_OPTION_HOT_ATTRIBUTE_SETS_OPTIMIZATION): Define.
9638
9639 2008-07-25  H.J. Lu  <hongjiu.lu@intel.com>
9640
9641         PR target/36936
9642         * config/i386/i386.c (override_options): Don't clear TARGET_CMOVE.
9643
9644 2008-07-25  Martin Jambor  <mjambor@suse.cz>
9645
9646         PR tree-optimization/36926
9647         * ipa-prop.c (ipa_analyze_call_uses): Call
9648         ipa_is_ssa_with_stmt_def instead of SSA_NAME_IS_DEFAULT_DEF.
9649
9650 2008-07-25  Joseph Myers  <joseph@codesourcery.com>
9651
9652         * config/arm/iwmmxt.md (movv8qi_internal, movv4hi_internal,
9653         movv2si_internal): Add mem = reg alternative.
9654
9655 2008-07-25  Andreas Tobler  <a.tobler@schweiz.org>
9656
9657         PR bootstrap/36918
9658         * config/sparc/sparc.h (DEFAULT_PCC_STRUCT_RETURN): Define
9659         DEFAULT_PCC_STRUCT_RETURN to 127.
9660
9661 2008-07-24  Jan Hubicka  <jh@suse.cz>
9662
9663         * cgraphbuild.c (record_reference): Drop non-unit-at-a-time code.
9664         (build_cgraph_edges): Likewise.
9665         * cgraph.c (cgraph_node): Do not update assembler hash.
9666         (cgraph_remove_node): Drop non-unit-at-a-time code.
9667         * tree-pass.h (pass_O0_always_inline): Remove.
9668         * ipa-reference.c (gate_reference): Remove unit-at-a-time check.
9669         * toplev.c (process_options): Flag unit-at-a-time does not imply
9670         no section anchors.
9671         * cgraphunit.c: Update comments.
9672         (decide_is_function_needed): Drop non-unit-at-a-time mode.
9673         (cgraph_assemble_pending_functions): Remove.
9674         (cgraph_reset_node): Drop non-unit-at-a-time code.
9675         (cgraph_finalize_function): Likewise.
9676         (cgraph_analyze_function): Likewise.
9677         (cgraph_finalize_compilation_unit): Likewise.
9678         (cgraph_expand_function): Likewise.
9679         (cgraph_optimize): Likesise.
9680         (save_inline_function_body): Likewise.
9681         * ipa-pure-const.c (gate_pure_const): Drop flag_unit_at_a_time check.
9682         * tree-ssa-alias.c (maybe_be_aliased): Likewise.
9683         * ipa-inline.c: Update comments.
9684         (enum inlining_mode): remove INLINE_SPEED.
9685         (cgraph_clone_inlined_nodes): Drop unit-at-a-time check.
9686         (cgraph_mark_inline_edge): Likewise.
9687         (try_inline): Likewise.
9688         (cgraph_decide_inlining_incrementally): Likewise.
9689         (cgraph_gate_inlining): Remove.
9690         (cgraph_early_inlining): Remove flag_unit_at_a_time checks.
9691         (cgraph_gate_early_inlining): Likewise.
9692         (gate_inline_passes): Remove.
9693         (pass_inline_parameters, pass_ipa_inline): Remove gates.
9694         (cgraph_gate_O0_always_inline, cgraph_O0_always_inline,
9695         pass_O0_always_inline): Remove.
9696         * c-pch.c (c_pch_matching): Remove -funit-at-a-time.
9697         * dwarf2out.c (reference_to_unused): Remove flag_unit_at_a_time check.
9698         * opts.c (no_unit_at_a_time_default): Remove.
9699         (decode_options): Remove flag_unit_at_a_time reset and warning.
9700         * opts.h (no_unit_at_a_time_default): Remove.
9701         * c-decl.c (diagnose_mismatched_decls): Do not require inline keyword
9702         early in GNU dialect.
9703         (merge_decls): Update comment; drop unit-at-a-time check.
9704         (finish_decl): Likewise.
9705         (grok_declaration): Remove flag_inline_trees code.
9706         (finish_functions): Return on function returning non-void on all
9707         statics.
9708         * ipa-tye-escape.c (gate_type_escape_vars): Remove.
9709         * cfgexpand.c (expand_one_static_var): Remove.
9710         (expand_one_var): Remove expand_one_static_var call.
9711         (expand_used_vars_for_block): Remove flag_unit_a_time check.
9712         * c-opts.c (c_common_post_options): Remove flag_inline_trees code
9713         and flag_unit_at_a-time compatibility checks.
9714         * varasm.c (assemble_alias): Remove flag_unit_at_a_time check.
9715         * tree-inline.c (flag_inline_trees): Remove.
9716         (inlinable_function_p): Don't check it.
9717         (expand_call_inline): Remove non-unit-at-a-time code.
9718         * tree-inline.h (flag_inline_trees): Remove.
9719         * tree-optimize.c (execute_early_local_optimizations): Remove
9720         unit-at-a-time checks.
9721         (tree_rest_of_compilation): Likewise.
9722         * combine.c (setup_incoming_promotions): Likewise.
9723         * tree-profile.c (tree_gen_ic_func_profiler): Likewise.
9724         * tree-ssa-structalias.c (delete_points_to_sets): Likewise.
9725         * passes.c (pass_inline_parameters): Update comments; remove
9726         O0_alwaysinline pass.
9727         (execute_one_ipa_transform_pass): Do not reset in_gimple_form.
9728         (execute_one_pass): Likewise.
9729         * i386.c (ix86_function_regparm): Remove unit-at-a-time check.
9730         (ix86_function_sseregparm): Likewise.
9731         * arm.c (arm_function_in_section_p): Likewise.
9732         * bfin.c (bfin_load_pic_reg, bfin_function_ok_for_sibcall): Likewise.
9733         * varpool.c: Update comments.
9734         (decide_is_variable_needed): Remove unit-at-a-time checks.
9735         (varpool_finalize_decl): Likewise.
9736
9737 2008-07-24  Kaz Kojima  <kkojima@gcc.gnu.org>
9738
9739         * config/sh/sh.h (OPTIMIZATION_OPTIONS): Set flag_omit_frame_pointer
9740         to 2 instead of -1.
9741         (OVERRIDE_OPTIONS): Check if flag_omit_frame_pointer is equal to 2.
9742
9743 2008-07-24  Kai Tietz  <kai.tietz@onevision.com>
9744
9745         * config/i386/i386.c (get_dllimport_decl): Treat user_label_prefix for
9746         imp symbol extension.
9747
9748         2008-07-23  Ian Lance Taylor  <iant@google.com>
9749
9750         * tree-vrp.c (infer_value_range): Ignore asm statements when
9751         looking for memory accesses for -fdelete-null-pointer-checks.
9752
9753 2008-07-24  Ben Elliston  <bje@au.ibm.com>
9754
9755         * config/spu/spu-c.c (__vector_keyword): New variable.
9756         (vector_keyword): Likewise.
9757         (spu_categorize_keyword): New function.
9758         (spu_macro_to_expand): Likewise.
9759         (spu_cpu_cpp_builtins): Enable context-sensitive macros if not
9760         compiling an ISO C dialect.
9761
9762 2008-07-24  Ben Elliston  <bje@au.ibm.com>
9763
9764         * config/rs6000/rs6000-c.c: Move GTY(()) markers to match
9765         conventional usage.
9766
9767 2008-07-23  Aaron W. LaFramboise  <aaronavay62@aaronwl.com>
9768
9769         * configure: Regenerate.
9770         * configure.ac: Require texinfo 4.7.
9771         * doc/install.texi: Document texinfo 4.7 requirement.
9772
9773 2008-07-23  Martin Jambor  <mjambor@suse.cz>
9774
9775         * ipa-cp.c (ipcp_print_edge_profiles): Test for node->analyzed
9776         rather than for DECL_SAVED_TREE.
9777         * ipa-prop.c: Include diagnostic.h.
9778         (ipa_check_stmt_modifications): Check LHS of GIMPLE_MODIFY_EXPRs
9779         thoroughly.
9780         (ipa_detect_param_modifications): Function rewritten from scratch.
9781         (ipa_compute_jump_functions): Changed accesses to modification flags.
9782         (ipa_free_node_params_substructures): Update flags destruction.
9783         (ipa_node_duplication_hook): Update flags duplication.
9784         (ipa_print_all_params_modified): Updated flag access.
9785         * ipa-prop.h (struct ipa_param_flags): New structure.
9786         (struct ipa_node_params): New field modification_analysis_done,
9787         modified_flags changed into param_flags.
9788         (ipa_is_ith_param_modified): Changed to use new flags.
9789         * Makefile.in (ipa-prop.o): Add $(DIAGNOSTIC_H) to dependencies.
9790
9791         * ipa-prop.c (ipa_print_all_jump_functions): Moved here from
9792         ipa-cp.c and split into two functions.
9793         (ipa_print_node_jump_functions): New function.
9794         (compute_scalar_jump_functions): New function.
9795         (type_like_member_ptr_p): New function.
9796         (compute_pass_through_member_ptrs): New function.
9797         (fill_member_ptr_cst_jump_function): New function.
9798         (determine_cst_member_ptr): New function.
9799         (compute_cst_member_ptr_arguments): New function.
9800         (ipa_compute_jump_functions): Complete rewrite.
9801         * ipa-prop.h (enum jump_func_type): Make explicit that we depend
9802         on IPA_UNKNOWN being zero. Added value IPA_CONST_MEMBER_PTR.
9803         (struct ipa_member_ptr_cst): New structure.
9804         (union jump_func_value): New field member_cst.
9805         * ipa-cp.c (ipcp_lat_is_insertable): New function.
9806         (ipcp_lattice_from_jfunc): Produces bottom lattices for unhandled
9807         jump function types.
9808         (ipcp_print_all_lattices): Slight fprintf rearrangement.
9809         (ipcp_print_all_structures): Call ipa_print_all_jump_functions
9810         instead of ipcp_print_all_jump_functions.
9811         (ipcp_insert_stage): Use ipcp_lat_is_insertable, create replace maps
9812         only for replacable scalars.
9813
9814         * doc/invoke.texi (Optimize options): Add description of
9815         -findirect-inlining.
9816         * common.opt (flag_indirect_inlining): New flag.
9817         * opts.c (decode_options): Set flag_indirect_inlining when
9818         optimize >= 3.
9819
9820         * ipa-inline.c: Include ipa-prop.h.
9821         (inline_indirect_intraprocedural_analysis): New function.
9822         (inline_generate_summary): Allocate parameter and argument info
9823         structures, call inline_indirect_intraprocedural_analysis on each
9824         node when doing indirect inlining and deallocate indirect inlining
9825         data structures in the end.
9826         * ipa-prop.c (ipa_create_param_decls_array): Return if already done.
9827         (free_all_ipa_structures_after_iinln): New function.
9828         (free_all_ipa_structures_after_ipa_cp): Checks whether iinln will be
9829         done.
9830         * Makefile.in (ipa-inline.o): Added $(IPA_PROP_H) to dependencies.
9831
9832         * cgraphbuild.c (compute_call_stmt_bb_frequency): New function.
9833         (build_cgraph_edges): Call compute_call_stmt_bb_frequency instead
9834         of computing the frequency separately.
9835         (rebuild_cgraph_edges): Call compute_call_stmt_bb_frequency instead
9836         of computing the frequency separately.
9837         * ipa-cp.c (ipcp_print_all_structures): Replace a call to
9838         ipa_print_all_param_modified with a call to ipa_print_all_param_flags.
9839         * ipa-prop.c (ipa_get_member_ptr_load_param): New function.
9840         (ipa_get_stmt_member_ptr_load_param): New function.
9841         (ipa_is_ssa_with_stmt_def): New function.
9842         (ipa_note_param_call): New function.
9843         (ipa_analyze_call_uses): New function.
9844         (ipa_analyze_stmt_uses): New function.
9845         (ipa_analyze_params_uses): New function.
9846         (ipa_free_node_params_substructures): Also free the param_calls linked
9847         list.
9848         (ipa_node_duplication_hook): Also duplicate the param_calls
9849         linked list.
9850         (ipa_print_node_param_flags): New function.
9851         (ipa_print_all_params_modified): Renamed to ipa_print_all_param_flags.
9852         (ipa_print_all_param_flags): Calls ipa_print_node_param_flags.
9853         * ipa-prop.h (struct ipa_param_flags): New field called.
9854         (struct ipa_param_call_note): New structure.
9855         (struct ipa_node_params): New fields param_calls and
9856         uses_analysis_done.
9857         (ipa_is_ith_param_called): New function.
9858         * ipa-inline.c (inline_indirect_intraprocedural_analysis): Call
9859         ipa_analyze_params_uses and dump parameter flags.
9860
9861         * ipa-inline.c (cgraph_decide_recursive_inlining): Call
9862         ipa_propagate_indirect_call_infos if performing indirect inlining,
9863         pass a new parameter new_edges to it.
9864         (add_new_edges_to_heap): New fucntion.
9865         (cgraph_decide_inlining_of_small_functions): New vector
9866         new_indirect_edges for newly found indirect edges , call
9867         ipa_propagate_indirect_call_infos after inlining.
9868         (cgraph_decide_inlining): Call ipa_propagate_indirect_call_infos after
9869         inlining if performing indirect inlining.  Call
9870         free_all_ipa_structures_after_iinln when doing so too.
9871         (inline_generate_summary): Do not call
9872         free_all_ipa_structures_after_iinln here.
9873         * ipa-prop.c (update_jump_functions_after_inlining): New function.
9874         (print_edge_addition_message): New function.
9875         (update_call_notes_after_inlining): New function.
9876         (propagate_info_to_inlined_callees): New function.
9877         (ipa_propagate_indirect_call_infos): New function.
9878         * ipa-prop.h: Include cgraph.h
9879         (struct ipa_param_call_note): Fields reordered, new field processed.
9880         * cgraph.h (cgraph_edge): Shrink loop_nest field to 31 bits, add a new
9881         flag indirect_call.
9882         * cgraphunit.c (verify_cgraph_node): Allow indirect edges not to have
9883         rediscovered call statements.
9884         * cgraph.c (cgraph_create_edge): Initialize indirect_call to zero.
9885         (dump_cgraph_node): Dump also the indirect_call flag.
9886         (cgraph_clone_edge): Copy also the indirect_call flag.
9887         * tree-inline.c (copy_bb): Do not check for fndecls from call
9888         expressions, check for edge availability when moving clones.
9889         (get_indirect_callee_fndecl): New function.
9890         (expand_call_inline): If callee declaration is not apprent from
9891         the statement, try calling get_indirect_callee_fndecl.  Do not
9892         issue warnings or call sorry when not inlinings an indirect edge.
9893         * Makefile.in (IPA_PROP_H): Added $(CGRAPH_H) to dependencies.
9894
9895         * ipa-prop.c (ipa_print_node_param_flags): Make the dump format a
9896         bit more frandly to matching.
9897         * testsuite/g++.dg/ipa/iinline-1.C: New testcase.
9898         * testsuite/gcc.dg/ipa/iinline-1.c: New testcase.
9899         * testsuite/gcc.dg/ipa/modif-1.c: New testcase.
9900
9901 2008-07-23  Michael Meissner  <gnu@the-meissners.org>
9902
9903         PR 36907
9904         * opth-gen.awk: Suppress function specific features when building
9905         target libraries.
9906         * optc-gen.awk: Ditto.
9907
9908 2008-07-23  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
9909
9910         PR 35058
9911         * diagnostic.c (pedwarn): Add opt parameter.
9912         (pedwarn0): New.
9913         * c-tree.h (pedwarn_init): Add opt parameter.
9914         (pedwarn_c90): Likewise.
9915         (pedwarn_c99): Likewise.
9916         * c-errors.c (pedwarn_c99): Likewise.
9917         (pedwarn_c90): Likewise.
9918         * toplev.h (pedwarn): Update declaration.
9919         (pedwarn0): Declare.
9920         * c-lex.c: All calls to pedwarn changed.
9921         * builtins.c: All calls to pedwarn changed.
9922         * toplev.c: All calls to pedwarn changed.
9923         * c-decl.c: All calls to pedwarn changed.
9924         * c-typeck.c: All calls to pedwarn changed.
9925         * c-common.c: All calls to pedwarn changed.
9926         * c-parser.c: All calls to pedwarn changed.
9927
9928 2008-07-23  Michael Meissner  <gnu@the-meissners.org>
9929             Karthik Kumar  <karthikkumar@gmail.com>
9930
9931         * attribs.c (file scope): Include c-common.h.
9932         (decl_attributes): Add support for #pragma GCC optimize and
9933         #pragma GCC option.
9934
9935         * targhooks.c (default_can_inline_p): New function that is the
9936         default for the TARGET_CAN_INLINE_P target hook.
9937
9938         * targhooks.h (default_can_inline_p): Add declaration.
9939
9940         * tree.c (cl_optimization_node): New static tree for building
9941         OPTIMIZATION_NODE tree.
9942         (cl_target_option_node): New static tree for building
9943         TARGET_OPTION_NODE tree.
9944         (cl_option_hash_table): New hash table for hashing
9945         OPTIMIZATION_NODE and TARGET_OPTION_NODE trees.
9946         (cl_option_hash_hash): New function to provide the hash value for
9947         OPTIMIZATION_NODE and TARGET_OPTION_NODE trees.
9948         (cl_option_hash_eq): New function to provide an equality test for
9949         OPTIMIZATION_NODE and TARGET_OPTION_NODE trees.
9950         (tree_code_size): Add support for OPTIMIZATION_NODE and
9951         TARGET_OPTION_NODE trees.
9952         (tree_code_structure): Add support for OPTIMIZATION_NODE and
9953         TARGET_OPTION_NODE trees.
9954         (build_optimization_node): Build a tree that has all of the
9955         current optimization options.
9956         (build_target_option_node): Build a tree that has the target
9957         options that might be changed on a per function basis.
9958
9959         * tree.h (file scope): Include options.h.
9960         (DECL_FUNCTION_SPECIFIC_TARGET): New accessor macro.
9961         (DECL_FUNCTION_SPECIFIC_OPTIMIZATION): Ditto.
9962         (TREE_OPTIMIZATION): Ditto.
9963         (TREE_TARGET_SPECIFIC): Ditto.
9964         (struct tree_function_decl): Add fields for remembering the
9965         current optimization options and target specific options.
9966         (struct tree_optimization_option): New tree variant that remembers
9967         the optimization options.
9968         (struct tree_target_option): New tree variant that remembers the
9969         target specific flags that might change for compiling a particular
9970         function.
9971         (union tree_node): Include tree_optimization_option and
9972         tree_target_option fields.
9973         (enum tree_index): Add TI_OPTIMIZATION_DEFAULT,
9974         TI_OPTIMIZATION_CURRENT, TI_OPTIMIZATION_COLD,
9975         TI_OPTIMIZATION_HOT, TI_TARGET_OPTION_DEFAULT,
9976         TI_TARGET_OPTION_CURRENT, TI_CURRENT_OPTION_PRAGMA,
9977         TI_CURRENT_OPTIMIZE_PRAGMA entries for saving function specific
9978         optimization and target options.
9979         (optimization_default_node): New macro to refer to global_trees
9980         field.
9981         (optimization_current_node): Ditto.
9982         (optimization_cold_node): Ditto.
9983         (optimization_hot_node): Ditto.
9984         (target_option_default_node): Ditto.
9985         (target_option_current_node): Ditto.
9986         (current_option_pragma): Ditto.
9987         (current_optimize_pragma): Ditto.
9988
9989         * target.h (struct gcc_target): Add valid_option_attribute_p,
9990         target_option_save, target_option_restore, target_option_print,
9991         target_option_pragma_parse, and can_inline_p hooks.
9992
9993         * toplev.h (parse_optimize_options): Add declaration.
9994         (fast_math_flags_struct_set_p): Ditto.
9995
9996         * c-cppbuiltin.c (c_cpp_builtins_optimize_pragma): New function to
9997         adjust the current __OPTIMIZE__, etc. macros when #pragma GCC
9998         optimize is used.
9999
10000         * ipa-inline.c (cgraph_decide_inlining_of_small_function): Call
10001         tree_can_inline_p hook to see if one function can inline another.
10002         (cgraph_decide_inlining): Ditto.
10003         (cgraph_decide_inlining_incrementally): Ditto.
10004
10005         * opts.c (decode_options): Add support for running multiple times
10006         to allow functions with different target or optimization options
10007         than was specified on the command line.
10008         (fast_math_flags_struct_set_p): New function that is similar to
10009         fast_math_flags_set_p, except it uses the values in the
10010         cl_optimization structure instead of global variables.
10011
10012         * optc-gen.awk: Add support for TargetSave to allow a back end to
10013         declare new fields that need to be saved when using function
10014         specific options.  Include flags.h and target.h in the options.c
10015         source.  Add support for Save to indicate which options can be set
10016         for individual functions.  Generate cl_optimize_save,
10017         cl_optimize_restore, cl_optimize_print, cl_target_option_save,
10018         cl_target_option_restore, cl_target_option_print functions to
10019         allow functions to use different optimization or target options.
10020
10021         * opt-functions.awk (var_type_struct): Return the type used for
10022         storing the field in a structure.
10023
10024         * opth-gen.awk: Add support for TargetSave to allow a back end to
10025         declare new fields that need to be saved when using function
10026         specific options.  Add support for Save to indicate which options
10027         can be set for individual functions.  Only generate one extern for
10028         Mask fields.  Generate cl_optimization and cl_target_option
10029         structures to remember optimization and target options.
10030
10031         * treestruct.def (TS_OPTIMIZATION): Add support for garbage
10032         collecting new tree nodes.
10033         (TS_TARGET_OPTION): Ditto.
10034
10035         * c-decl.c (merge_decls): Merge function specific target and
10036         optimization options.
10037
10038         * function.c (invoke_set_current_function_hook): If the function
10039         uses different optimization options, change the global variables
10040         to reflect this.
10041
10042         * coretypes.h (struct cl_optimization): Add forward reference.
10043         (struct cl_target_option): Ditto.
10044
10045         * c-pragma.c (option_stack): New static vector to remember the
10046         current #pragma GCC option stack.
10047         (handle_pragma_option): New function to support #pragma GCC option
10048         to change target options.
10049         (optimize_stack): New static vector to remember the current
10050         #pragma GCC optimize stack.
10051         (handle_pragma_optimize): New function to support #pragma GCC
10052         optimize to change optimization options.
10053         (init_pragma): Add support for #pragma GCC optimize and #pragma
10054         GCC option.
10055
10056         * tree.def (OPTIMIZATION_NODE): New tree code for remembering
10057         optimization options.
10058         (TARGET_OPTION_NODE): New tree code for remembering certain target
10059         options.
10060
10061         * print-tree.c (print_node): Add support for OPTIMIZATION_NODE and
10062         TARGET_OPTION_NODE trees.
10063
10064         * common.opt (-O): Add Optimization flag.
10065         (-Os): Ditto.
10066         (-fmath-errno): Ditto.
10067         (-falign-functions): Add UInteger flag to make sure flag gets full
10068         int in cl_optimization structure.
10069         (-falign-jumps): Ditto.
10070         (-falign-labels): Ditto.
10071         (-falign-loops): Ditto.
10072         (-fsched-stalled-insns): Ditto.
10073         (-fsched-stalled-insns-dep): Ditto.
10074
10075         * target-def.h (TARGET_VALID_OPTION_ATTRIBUTE_P): Add default
10076         definition.
10077         (TARGET_OPTION_SAVE): Ditto.
10078         (TARGET_OPTION_RESTORE): Ditto.
10079         (TARGET_OPTION_PRINT): Ditto.
10080         (TARGET_OPTION_PRAGMA_PARSE): Ditto.
10081         (TARGET_CAN_INLINE_P): Ditto.
10082         (TARGET_INITIALIZER): Add new hooks.
10083
10084         * tree-inline.c (tree_can_inline_p): New function to determine
10085         whether one function can inline another.  Check if the functions
10086         use compatible optimization options, and also call the backend
10087         can_inline_p hook.
10088
10089         * tree-inline.h (tree_can_inline_p): Add declaration.
10090
10091         * c-common.c (c_common_attribute): Add support for option and
10092         optimize attributes.
10093         (handle_option_attribute): Add support for the option attribute to
10094         allow the user to specify different target options for compiling a
10095         specific function.
10096         (handle_optimize_attribute): Add support for the optimize
10097         attribute to allow the user to specify different optimization
10098         options for compiling a specific function.
10099         (handle_hot_attribute): Turn on -O3 optimization for this one
10100         function if it isn't the default optimization level.
10101         (handle_cold_attribute): Turn on -Os optimization for this one
10102         function if it insn't the default optimization.
10103         (const_char_p): New const char * typedef.
10104         (optimize_args): New static vector to remember the optimization
10105         arguments.
10106         (parse_optimize_options): New function to set up the optimization
10107         arguments from either the optimize attribute or #pragma GCC optimize.
10108
10109         * c-common.h (c_cpp_builtins_optimize_pragma): Add declaration.
10110         (builtin_define_std): Ditto.
10111
10112         * config.gcc (i[3467]86-*-*): Add i386-c.o to C/C++ languages.
10113         Add t-i386 Makefile fragment to add i386-c.o and i386.o dependencies.
10114         (x86_64-*-*): Ditto.
10115
10116         * Makefile.in (TREE_H): Add options.h.
10117         (options.o): Add $(TARGET_H) $(FLAGS_H) dependencies.
10118
10119         * doc/extend.texi (option attribute): Document new attribute.
10120         (optimize attribute): Ditto.
10121         (hot attribute): Document hot attribute sets -O3.
10122         (cold attribute): Document cold attribute sets -Os.
10123         (#pragma GCC option): Document new pragma.
10124         (#pragma GCC optimize): Ditto.
10125
10126         * doc/options.texi (TargetSave): Document TargetSave syntax.
10127         (UInteger): Document UInteger must be used for certain flags.
10128         (Save): Document Save option to create target specific options
10129         that can be saved/restored on a function specific context.
10130
10131         * doc/c-tree.texi (DECL_FUNCTION_SPECIFIC_TARGET): Document new macro.
10132         (DECL_FUNCTION_SPECIFIC_OPTIMIZATION): Ditto.
10133
10134         * doc/tm.texi (TARGET_VALID_OPTION_ATTRIBUTE_P): Document new hook.
10135         (TARGET_OPTION_SAVE): Ditto.
10136         (TARGET_OPTION_RESTORE): Ditto.
10137         (TARGET_OPTION_PRINT): Ditto.
10138         (TARGET_OPTION_PRAGMA_PARSE): Ditto.
10139         (TARGET_CAN_INLINE_P): Ditto.
10140
10141         * doc/invoke.texi (-mfpmath=sse+387): Document as an alias for
10142         -mfpmath=sse,387.
10143         (-mfpmath=both): Ditto.
10144
10145 2008-07-23  Michael Meissner  <gnu@the-meissners.org>
10146             Karthik Kumar  <karthikkumar@gmail.com>
10147
10148         * config/i386/i386.h (TARGET_ABM): Move switch into ix86_isa_flags.
10149         (TARGET_POPCNT): Ditto.
10150         (TARGET_SAHF): Ditto.
10151         (TARGET_AES): Ditto.
10152         (TARGET_PCLMUL): Ditto.
10153         (TARGET_CMPXCHG16B): Ditto.
10154         (TARGET_RECIP): Move switch into target_flags.
10155         (TARGET_FUSED_MADD): Ditto.
10156         (ix86_arch_features): Make an unsigned char type.
10157         (ix86_tune_features): Ditto.
10158         (OVERRIDE_OPTIONS): Add bool argument to override_options call.
10159         (TARGET_CPU_CPP_BUILTINS): Move into ix86_target_macros.
10160         (REGISTER_TARGET_PRAGMAS): Define, call ix86_register_pragmas.
10161
10162         * config/i386/i386.opt (arch): New TargetSave field to define
10163         fields that need to be saved for function specific option support.
10164         (tune): Ditto.
10165         (fpmath): Ditto.
10166         (branch_cost): Ditto.
10167         (ix86_isa_flags_explicit): Ditto.
10168         (tune_defaulted): Ditto.
10169         (arch_specified): Ditto.
10170         (-m128-long-double): Add Save flag to save option for target
10171         specific option support.
10172         (-m80387): Ditto.
10173         (-maccumulate-outgoing-args): Ditto.
10174         (-malign-double): Ditto.
10175         (-malign-stringops): Ditto.
10176         (-mfancy-math-387): Ditto.
10177         (-mhard-float): Ditto.
10178         (-mieee-fp): Ditto.
10179         (-minline-all-stringops): Ditto.
10180         (-minline-stringops-dynamically): Ditto.
10181         (-mms-bitfields): Ditto.
10182         (-mno-align-stringops): Ditto.
10183         (-mno-fancy-math-387): Ditto.
10184         (-mno-push-args): Ditto.
10185         (-mno-red-zone): Ditto.
10186         (-mpush-args): Ditto.
10187         (-mred-zone): Ditto.
10188         (-mrtd): Ditto.
10189         (-msseregparm): Ditto.
10190         (-mstack-arg-probe): Ditto.
10191         (-m32): Ditto.
10192         (-m64): Ditto.
10193         (-mmmx): Ditto.
10194         (-m3dnow): Ditto.
10195         (-m3dnowa): Ditto.
10196         (-msse): Ditto.
10197         (-msse2): Ditto.
10198         (-msse3): Ditto.
10199         (-msse4.1): Ditto.
10200         (-msse4.2): Ditto.
10201         (-msse4): Ditto.
10202         (-mno-sse4): Ditto.
10203         (-msse4a): Ditto.
10204         (-msse5): Ditto.
10205         (-mrecip): Move flag into target_flags.
10206         (-mcld): Ditto.
10207         (-mno-fused-madd): Ditto.
10208         (-mfused-madd): Ditto.
10209         (-mabm): Move flag into ix86_isa_flags.
10210         (-mcx16): Ditto.
10211         (-mpopcnt): Ditto.
10212         (-msahf): Ditto.
10213         (-maes): Ditto.
10214         (-mpclmul): Ditto.
10215
10216         * config/i386/i386-c.c: New file for #pragma support.
10217         (ix86_target_macros_internal): New function to #define or #undef
10218         target macros based when the user uses the #pragma GCC option to
10219         change target options.
10220         (ix86_pragma_option_parse): New function to add #pragma GCC option
10221         support.
10222         (ix86_target_macros): Move defining the target macros here from
10223         TARGET_CPU_CPP_BUILTINS in i386.h.
10224         (ix86_register_pragmas): Register the #pragma GCC option hook.  If
10225         defined, initialize any subtarget #pragmas.
10226
10227         * config/i386/darwin.h (REGISTER_SUBTARGET_PRAGMAS): Rename from
10228         REGISTER_TARGET_PRAGMAS.
10229
10230         * config/i386/t-i386: New file for x86 dependencies.
10231         (i386.o): Make dependencies mirror the include files used.
10232         (i386-c.o): New file, add dependencies.
10233
10234         * config/i386/i386-protos.h (override_options): Add bool argument.
10235         (ix86_valid_option_attribute_tree): Add declaration.
10236         (ix86_target_macros): Ditto.
10237         (ix86_register_macros): Ditto.
10238
10239         * config/i386/i386.c (ix86_tune_features): Move initialization of
10240         the target masks to initial_ix86_tune_features to allow functions
10241         to have different target options.  Make type unsigned char,
10242         instead of unsigned int.
10243         (initial_ix86_tune_features): New static vector to hold processor
10244         masks for the tune variables.
10245         (ix86_arch_features): Move initialization of the target masks to
10246         initial_ix86_arch_features to allow functions to have different
10247         target options.  Make type unsigned char, instead of unsigned int.
10248         (initial_ix86_arch_features): New static vector to hold processor
10249         masks for the arch variables.
10250         (enum ix86_function_specific_strings): New enum to describe the
10251         string options used for attribute((option(...))).
10252         (ix86_target_string): New function to return a string that
10253         describes the target options.
10254         (ix86_debug_options): New function to print the current options in
10255         the debugger.
10256         (ix86_function_specific_save): New function hook to save the
10257         function specific global variables in the cl_target_option structure.
10258         (ix86_function_specific_restore): New function hook to restore the
10259         function specific variables from the cl_target_option structure to
10260         the global variables.
10261         (ix86_function_specific_print): New function hook to print the
10262         target specific options in the cl_target_option structure.
10263         (ix86_valid_option_attribute_p): New function hook to validate
10264         attribute((option(...))) arguments.
10265         (ix86_valid_option_attribute_tree): New function that is common
10266         code between attribute((option(...))) and #pragma GCC option
10267         support that parses the options and returns a tree holding the options.
10268         (ix86_valid_option_attribute_inner_p): New helper function for
10269         ix86_valid_option_attribute_tree.
10270         (ix86_can_inline_p): New function hook to decide if one function
10271         can inline another on a target specific basis.
10272         (ix86_set_current_function); New function hook to switch target
10273         options if the user used attribute((option(...))) or #pragma GCC
10274         option.
10275         (ix86_tune_defaulted): Move to static file scope from
10276         override_options.
10277         (ix86_arch_specified): Ditto.
10278         (OPTION_MASK_ISA_AES_SET): New macro for moving switches into
10279         ix86_isa_flags.
10280         (OPTION_MASK_ISA_PCLMUL_SET): Ditto.
10281         (OPTION_MASK_ISA_ABM_SET): Ditto.
10282         (OPTION_MASK_ISA_POPCNT_SET): Ditto.
10283         (OPTION_MASK_ISA_CX16_SET): Ditto.
10284         (OPTION_MASK_ISA_SAHF_SET): Ditto.
10285         (OPTION_MASK_ISA_AES_UNSET): Ditto.
10286         (OPTION_MASK_ISA_PCLMUL_UNSET): Ditto.
10287         (OPTION_MASK_ISA_ABM_UNSET): Ditto.
10288         (OPTION_MASK_ISA_POPCNT_UNSET): Ditto.
10289         (OPTION_MASK_ISA_CX16_UNSET): Ditto.
10290         (OPTION_MASK_ISA_SAHF_UNSET): Ditto.
10291         (struct ptt): Move to static file scope from override_options.
10292         (processor_target_table): Ditto.
10293         (cpu_names): Ditto.
10294         (ix86_handle_option): Add support for options that are now isa options.
10295         (override_options): Add support for declaring functions that
10296         support different target options than were specified on the
10297         command line.  Move struct ptt, processor_target_table, cpu_names,
10298         ix86_tune_defaulted, ix86_arch_specified to static file scope.
10299         Add bool argument.  Fix up error messages so the appropriate error
10300         is given for either command line or attribute.
10301         (ix86_previous_fndecl): New static to remember previous function
10302         declaration to see if we need to change target options.
10303         (ix86_builtins_isa): New array to record the ISA of each builtin
10304         function.
10305         (def_builtin): Always create the builtin function, even if the
10306         current ISA doesn't support it.
10307         (ix86_init_mmx_sse_builtins): Remove TARGET_AES and TARGET_PCLMUL
10308         tests for those builtins.
10309         (ix86_init_builtins): Remove TARGET_MMX test for calling
10310         ix86_init_mmx_sse_builtins.
10311         (ix86_expand_builtin): If the current ISA doesn't support a given
10312         builtin, signal an error.
10313         (TARGET_VALID_OPTION_ATTRIBUTE_P): Set target hook.
10314         (TARGET_SET_CURRENT_FUNCTION): Ditto.
10315         (TARGET_OPTION_SAVE): Ditto.
10316         (TARGET_OPTION_RESTORE): Ditto.
10317         (TARGET_OPTION_PRINT): Ditto.
10318         (TARGET_CAN_INLINE_P): Ditto.
10319
10320 2008-07-22  Rafael Ã\81vila de Espíndola  <espindola@google.com>
10321
10322         * c-typeck.c (build_external_ref): Don't call assemble_external.
10323         * final.c (output_operand): Call assemble_external.
10324
10325 2008-07-21  DJ Delorie  <dj@redhat.com>
10326
10327         * config/h8300/h8300.c (h8300_hard_regno_scratch_ok): New.
10328         (TARGET_HARD_REGNO_SCRATCH_OK): Define.
10329
10330 2008-07-21  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
10331
10332         * config/spu/spu.md ("div<mode>3"): Convert into expander, move
10333         original insn and splitter contents into ...
10334         ("*div<mode>3_fast"): ... this new pattern.  Enable only if
10335         flag_unsafe_math_optimizations.  Add dummy scratch register.
10336         ("*div<mode>3_adjusted"): New insn and splitter.  Enable only if
10337         !flag_unsafe_math_optimizations.  Returns number with next
10338         highest magnitude if this is still less or equal to the true
10339         quotient in magnitude.
10340
10341 2008-07-21  Rafael Ã\81vila de Espíndola  <espindola@google.com>
10342
10343         * Makefile.in: Replace toplev.h with TOPLEV_H.
10344         * c-decl.c (merge_decls): Don't set DECL_IN_SYSTEM_HEADER.
10345         * c-lex.c (fe_file_change): Don't set in_system_header.
10346         * c-parser.c (c_token): Remove in_system_header.
10347         (c_lex_one_token): Don't set in_system_header.
10348         (c_parser_set_source_position_from_token): Don't set in_system_header.
10349         * diagnostic.c (diagnostic_report_diagnostic): Use location from
10350         diagnostic_info.
10351         (warning_at): New.
10352         * diagnostic.h (diagnostic_report_warnings_p): Add LOC argument.
10353         * flags.h (in_system_header): Remove.
10354         * function.c (saved_in_system_header): Remove.
10355         (push_cfun): Don't set in_system_header.
10356         (pop_cfun): Don't set in_system_header.
10357         (push_struct_function): Don't set in_system_header.
10358         * input.h (expanded_location): Add sysp.
10359         (in_system_header_at): New.
10360         (in_system_header): New.
10361         * toplev.c (in_system_header): Remove.
10362         * toplev.h: Include input.h
10363         (warning_at): New.
10364         * tree-cfg.c (execute_warn_function_return): Call warning_at.
10365         * tree-ssa.c (warn_uninit): Call warning_at.
10366         (warn_uninitialized_var): Update calls to warn_uninit.
10367         (warn_uninitialized_phi): Update calls to warn_uninit.
10368         * tree.c (make_node_stat): Don't set DECL_IN_SYSTEM_HEADER.
10369         (expand_location): Initialize xloc.sysp.
10370         * tree.h (DECL_IN_SYSTEM_HEADER): Use in_system_header_at.
10371         (tree_decl_with_vis): Remove in_system_header_flag.
10372
10373 2008-07-21  Andreas Krebbel  <krebbel1@de.ibm.com>
10374
10375         PR target/36822
10376         * recog.c (asm_operand_ok): Change the order of the extra
10377         memory constraint checks.
10378
10379 2008-07-20  Andrew Pinski  <andrew_pinski@playstation.sony.com>
10380
10381         PR tree-opt/36879
10382         * tree-switch-conversion.c (build_one_array): Call
10383         varpool_mark_needed_node and varpool_finalize_decl
10384         instead of assemble_variable.
10385
10386 2008-07-19  Jan Hubicka  <jh@suse.cz>
10387
10388         * cgraph.c (cgraph_add_new_function): Do early local passes.
10389         * tree-nrv.c (gate_pass_return_slot): New gate.
10390         (pass_nrv): Add the gate.
10391         * tree-ssa-coalese.c (hash_ssa_name_by_var, eq_ssa_name_by_var): New
10392         functions.
10393         (coalesce_ssa_name): Coalesce SSA names.
10394         * tree-ssa-live.c (remove_unused_locals): Be more conservative when
10395         not optimizing so unused user vars remains visible.
10396         * common.opt (flag_tree_ter): Always enable by default.
10397         * tree-ssa-ter.c: Include flags.h
10398         (is_replaceable_p): Check that locations match; when aliasing
10399         is missing be conservative about loads.
10400         * tree-optimize.c (gate_init_datastructures): Remove.
10401         (pass_init_datastructures): New.
10402         * passes.c: Reorder passes so we always go into SSA.
10403
10404 2008-07-19  Jan Hubicka  <jh@suse.cz>
10405
10406         * doc/extend.texi (flatten attribute): Remove note about
10407         unit-at-a-time.
10408         * doc/invoke.texi (--combine): Likewise.
10409         (-finline-functions-called-once): Update levels when enabled.
10410         (-funit-at-a-time): Document new behaviour.
10411         (-ftoplevel-reorder): Document that it is enabled -O0 and imply
10412         -fno-section-anchors when disabled explicitly.
10413         (inline params): They are not ignored now.
10414         (precompiled headers): Remove unit-at-a-time as being incompatible.
10415         * opts.c (decode_options): Handle unit-at-a-time as alias;
10416         imply -fno-section-anchors when toplevel reorder is disabled
10417         explicitly.
10418         * common.opt (ftoplevel-reorder): Set default value to 2.
10419         (funit-at-a-time): Set default value to 1.
10420         * config/rs6000/rs6000.c (optimization_options): Set section anchors
10421         to 2.
10422
10423 2008-07-19  Jan Hubicka  <jh@suse.cz>
10424
10425         * builtins.c (expand_builtin_int_roundingfn,
10426         expand_builtin_int_roundingfn_2): Do not take subtarget argument;
10427         it is not useful.
10428
10429 2008-07-19  Richard Guenther  <rguenther@suse.de>
10430
10431         PR bootstrap/36864
10432         * tree-ssa-sccvn.h (get_constant_value_id): Declare.
10433         * tree-ssa-sccvn.c (get_constant_value_id): New function.
10434         * tree-ssa-pre.c (get_expr_value_id): For newly created
10435         constant value-ids make sure to add the expression to its
10436         expression-set.
10437
10438 2008-07-19  Jakub Jelinek  <jakub@redhat.com>
10439
10440         PR middle-end/36877
10441         * omp-low.c (expand_omp_atomic_fetch_op): Make sure the
10442         return value of the builtin is ignored.
10443
10444 2008-07-19  Olivier Hainque  <hainque@adacore.com>
10445
10446         * doc/tm.texi (MALLOC_ABI_ALIGNMENT): New macro. Alignment, in
10447         bits, a C conformant malloc implementation has to provide.
10448         * defaults.h (MALLOC_ABI_ALIGNMENT): Default to BITS_PER_WORD.
10449
10450 2008-07-19  Joseph Myers  <joseph@codesourcery.com>
10451
10452         PR target/36780
10453         PR target/36827
10454         * reload.c (find_reloads_subreg_address): Only reload address if
10455         reloaded == 0, not for reloaded != 1.
10456
10457         Revert:
10458         2008-07-16  Joseph Myers  <joseph@codesourcery.com>
10459         * config/m32c/m32c.c (BIG_FB_ADJ): Move definition earlier.
10460         (m32c_legitimate_address_p): Handle "++rii" addresses created by
10461         m32c_legitimize_reload_address.
10462
10463         2008-07-15  Kaz Kojima  <kkojima@gcc.gnu.org>
10464         * config/sh/sh.h (GO_IF_LEGITIMATE_ADDRESS): Allow
10465         (plus (plus (reg) (const_int)) (const_int)) when reload_in_progress.
10466
10467 2008-07-19  Olivier Hainque  <hainque@adacore.com>
10468
10469         * dwarf2out.c (add_subscript_info): New explicit COLLAPSE_P
10470         argument, saying whether nested array are to be collapsed
10471         into a single array type DIE with multiple subscripts.
10472         (gen_array_type_die): Factorize comments about the MIPS_DEBUG_INFO
10473         issues, centralize the nested array types collapsing control and
10474         disable the transformation for Ada.
10475
10476 2008-07-18  Uros Bizjak  <ubizjak@gmail.com>
10477
10478         PR target/36786
10479         * config/i386/i386.md (x86_64_shift_adj_1): Rename from
10480         x86_64_shift_adj.
10481         (x86_64_shift_adj_2): New expander.
10482         (x86_64_shift_adj_3): Ditto.
10483         * config/i386/i386.c (ix86_split_ashr): Use gen_x86_64_shift_adj_3
10484         to split TImode operands.
10485         (ix86_split_ashl): Use gen_x86_64_shift_adj_2 to split TImode operands.
10486         (ix86_split_lshr): Ditto.
10487
10488 2008-07-18  Kris Van Hees  <kris.van.hees@oracle.com>
10489
10490         * c-common.c (c_stddef_cpp_builtins): Define __CHAR16_TYPE__
10491         and __CHAR32_TYPE__.
10492         * c-typeck.c (digest_init): Support char16_t and char32_t.
10493         (set_nonincremental_init_from_string): Idem.
10494
10495 2008-07-18  H.J. Lu  <hongjiu.lu@intel.com>
10496
10497         PR middle-end/36859
10498         * builtins.c (std_gimplify_va_arg_expr): Limit alignment to
10499         PREFERRED_STACK_BOUNDARY.
10500         * config/i386/i386.c (ix86_gimplify_va_arg): Likewise.
10501
10502 2008-07-18  H.J. Lu  <hongjiu.lu@intel.com>
10503
10504         PR middle-end/36858
10505         * function.c (locate_and_pad_parm): Cap boundary earlier.
10506
10507 2008-07-17  Julian Brown  <julian@codesourcery.com>
10508
10509         * config/arm/arm.c (arm_cxx_determine_class_data_visibility): Make
10510         no-op for targets which don't use DLLs.
10511
10512 2008-07-17  Martin Jambor  <mjambor@suse.cz>
10513
10514         * ipa-cp.c (ipcp_print_all_lattices): New variable info, check
10515         that nodes are relevant by examining the node->analyzed flag.
10516         (ipcp_init_stage): Check which nodes are relevant, assert that the
10517         relevant ones are also required.
10518         (ipcp_propagate_stage): Check on the side arrays are properly
10519         allocated.
10520         (ipcp_print_all_jump_functions): Make sure not to touch any node
10521         that is not analyzed or an edge that does not have a corresponding
10522         entry in the on-the-side vectors.
10523         (ipcp_function_scale_print): Likewise.
10524         (ipcp_update_callgraph): Check that the node is relevant.
10525         (ipcp_insert_stage): Check that the node is relevant.  Check there is
10526         an info for every node and edge.
10527         * ipa-prop.c (ipa_init_func_list): Check the nodes are relevant.
10528         (ipa_print_all_tree_maps): Likewise and a new variable info.
10529         (ipa_print_all_params_modified): Likewise.
10530         * ipa-prop.h (ipa_edge_args_info_available_for_edge_p): New function.
10531
10532 2008-07-17  Roman Zippel <zippel@linux-m68k.org>
10533
10534         PR target/25343
10535         * config/host-linux.c (TRY_EMPTY_VM_SPACE): Define for __mc68000__.
10536
10537 2008-07-17  Paolo Bonzini  <bonzini@gnu.org>
10538
10539         PR rtl-optimization/36753
10540         * fwprop.c (use_killed_between): Don't shortcut
10541         single-definition global registers.
10542
10543 2008-07-16  Jan Hubicka  <jh@suse.cz>
10544
10545         * cgraph.h (varpool_empty_needed_queue): Declare.
10546         * cgraphunit.c (output_in_order): Mark all variables as needed;
10547         empty the queue.
10548         * varpool.c (varpool_assemble_node): Update debug queue.
10549         (varpool_assemble_pending_decls): Don't do it here.
10550         (varpool_empty_needed_queue):  New function.
10551
10552 2008-07-16  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
10553
10554         * recog.c (peephole2_optimize): Fix formatting.
10555
10556 2008-07-16  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
10557
10558         * c-pch.c (get_ident): Avoid C++ keywords.
10559         * combine-stack-adj.c (single_set_for_csa): Likewise.
10560         * final.c (asm_insn_count, final_scan_insn, alter_subreg,
10561         output_asm_insn): Likewise.
10562         * reload.c (push_secondary_reload, find_reusable_reload,
10563         push_reload, combine_reloads, find_reloads,
10564         debug_reload_to_stream): Likewise.
10565         * reload.h (struct reload): Likewise.
10566         * reload1.c (reload_reg_class_lower, find_reg, find_reload_regs,
10567         allocate_reload_reg, choose_reload_regs, emit_input_reload_insns,
10568         emit_output_reload_insns): Likewise.
10569         * targhooks.c (default_secondary_reload): Likewise.
10570         * varasm.c (section_entry_eq, object_block_entry_eq): Likewise.
10571
10572 2008-07-16  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
10573
10574         * recog.c (validate_change_1, validate_change,
10575         validate_unshare_change, validate_replace_rtx_1, struct
10576         funny_match, constrain_operands, peephole2_optimize): Avoid C++
10577         keywords.
10578         * reload.c (push_secondary_reload, secondary_reload_class,
10579         scratch_reload_class, find_valid_class, find_reusable_reload,
10580         push_reload, find_dummy_reload, find_reloads_address_1,
10581         find_reloads_address_part, find_equiv_reg): Likewise.
10582         * reload1.c (spill_failure, eliminate_regs_1, allocate_reload_reg,
10583         choose_reload_regs): Likewise.
10584         * rtlanal.c (replace_rtx, nonzero_bits1, num_sign_bit_copies1):
10585         Likewise.
10586         * rtlhooks.c (gen_lowpart_if_possible): Likewise.
10587         * sched-ebb.c (add_deps_for_risky_insns): Likewise.
10588         * sched-rgn.c (concat_INSN_LIST): Likewise.
10589         * stor-layout.c (mode_for_size, mode_for_size_tree,
10590         smallest_mode_for_size): Likewise.
10591
10592 2008-07-16  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
10593
10594         * cfg.c (dump_reg_info): Avoid C++ keywords.
10595         * dwarf2asm.c (dw2_force_const_mem,
10596         dw2_asm_output_encoded_addr_rtx): Likewise.
10597         * except.c (gen_eh_region, add_action_record, output_ttype): Likewise.
10598         * expmed.c (expand_shift): Likewise.
10599         * global.c (find_reg): Likewise.
10600         * graph.c (draw_edge): Likewise.
10601         * local-alloc.c (reg_meets_class_p, find_free_reg): Likewise.
10602         * optabs.c (expand_binop, expand_twoval_unop, expand_twoval_binop,
10603         widen_clz, widen_bswap, expand_parity, expand_unop,
10604         emit_cmp_and_jump_insn_1): Likewise.
10605         * postreload.c (reload_cse_simplify_operands): Likewise.
10606         * ra.h (add_neighbor): Likewise.
10607         * reg-stack.c (remove_regno_note, change_stack): Likewise.
10608         * regclass.c (memory_move_secondary_cost, dump_regclass, regclass,
10609         record_reg_classes, copy_cost, record_address_regs,
10610         invalid_mode_change_p): Likewise.
10611         * regrename.c (regrename_optimize, scan_rtx_reg,
10612         dump_def_use_chain, find_oldest_value_reg,
10613         replace_oldest_value_reg, copyprop_hardreg_forward_1): Likewise.
10614
10615 2008-07-16  David Edelsohn  <edelsohn@gnu.org>
10616
10617         * config/rs6000/rs6000.c (processor_target_table): Remove duplicate
10618         MASK_POWERPC64 for power4 in previous commit.
10619
10620 2008-07-16  Olivier Hainque  <hainque@adacore.com>
10621
10622         * collect2.c (scan_prog_file, COFF version): Use CONST_CAST
10623         instead of bare conversion to cast const-ness away.
10624
10625 2008-07-16  Anatoly Sokolov  <aesok@post.ru>
10626
10627         * config/xtensa/xtensa.h (FUNCTION_OUTGOING_VALUE,
10628         XTENSA_FUNCTION_VALUE, XTENSA_FUNCTION_VALUE): Remove.
10629         * config/xtensa/xtensa.c (xtensa_function_value): New function.
10630         (TARGET_FUNCTION_VALUE): Define.
10631
10632 2008-07-16  David Edelsohn  <edelsohn@gnu.org>
10633
10634         * config/rs6000/rs6000.c (processor_target_table): Add
10635         MASK_PPC_GPOPT for power4, power5, power5+, power6, and power6x.
10636
10637 2008-07-16  Joseph Myers  <joseph@codesourcery.com>
10638
10639         PR target/36827
10640         * config/m32c/m32c.c (BIG_FB_ADJ): Move definition earlier.
10641         (m32c_legitimate_address_p): Handle "++rii" addresses created by
10642         m32c_legitimize_reload_address.
10643
10644 2007-07-16  Rafael Ã\81vila de Espíndola  <espindola@google.com>
10645
10646         * c-decl.c (merge_decls): Keep DECL_SOURCE_LOCATION and
10647         DECL_IN_SYSTEM_HEADER in sync.
10648
10649 2008-07-15  Daniel Berlin  <dberlin@dberlin.org>
10650
10651         * tree-ssa-sccvn.c (expressions_equal_p): Check type equality.
10652         * tree-ssa-pre.c (pre_expr_eq): Ditto
10653         (get_constant_for_value_id): Take a type as an argument.
10654         (fully_constant_expression): Pass in type.
10655         (find_or_generate_expression): Short circuit constant case.
10656         (create_expression_by_pieces): Remove special casing of
10657         pointer_plus.
10658         (do_regular_insertion): Short circuit constant case.
10659         (do_partial_partial_insertion): Ditto.
10660
10661 2008-07-15  Kaz Kojima  <kkojima@gcc.gnu.org>
10662
10663         PR target/36782
10664         * config/sh/sh.md (symGOT_load): Don't add REG_EQUAL note.
10665
10666 2008-07-15  Bob Wilson  <bob.wilson@acm.org>
10667
10668         * config/xtensa/libgcc-xtensa.ver: New file.
10669         * config/xtensa/t-linux (SHLIB_MAPFILES): Append libgcc-xtensa.ver.
10670
10671 2008-07-15  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
10672
10673         * df-problems.c (df_set_note): Avoid C++ keywords.
10674         * df-scan.c (df_ref_change_reg_with_loc_1): Likewise.
10675         * dse.c (record_store, remove_useless_values): Likewise.
10676         * emit-rtl.c (gen_reg_rtx, update_reg_offset, gen_rtx_REG_offset,
10677         gen_reg_rtx_offset, operand_subword, change_address_1,
10678         change_address, adjust_address_1, offset_address,
10679         widen_memory_access, emit_copy_of_insn_after): Likewise.
10680         * explow.c (round_push, allocate_dynamic_stack_space): Likewise.
10681         * fwprop.c (should_replace_address, propagate_rtx_1,
10682         propagate_rtx, try_fwprop_subst, forward_propagate_and_simplify):
10683         Likewise.
10684         * gcse.c (cprop_jump, find_implicit_sets, bypass_block,
10685         gcse_emit_move_after, update_ld_motion_stores): Likewise.
10686         * lcm.c (compute_insert_delete, pre_edge_lcm,
10687         compute_rev_insert_delete, pre_edge_rev_lcm): Likewise.
10688         * lower-subreg.c (resolve_reg_notes): Likewise.
10689         * mode-switching.c (optimize_mode_switching): Likewise.
10690
10691 2008-07-15  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
10692
10693         * bt-load.c (add_btr_def, migrate_btr_def,
10694         branch_target_load_optimize): Avoid C++ keywords.
10695         * caller-save.c (insert_restore, insert_save, insert_one_insn):
10696         Likewise.
10697         * combine.c (subst, simplify_set, make_extraction,
10698         make_compound_operation, known_cond, simplify_shift_const_1): Likewise.
10699         * cse.c (make_regs_eqv, merge_equiv_classes, validate_canon_reg,
10700         fold_rtx, equiv_constant, cse_insn, cse_process_notes_1): Likewise.
10701
10702 2008-07-15  Richard Guenther  <rguenther@suse.de>
10703
10704         PR middle-end/36369
10705         * c-common.c (strict_aliasing_warning): Do not warn for
10706         TYPE_REF_CAN_ALIAS_ALL pointers.
10707         (c_common_get_alias_set): may_alias types are not special.
10708         * tree.c (build_pointer_type_for_mode): Look up the may_alias
10709         attribute and set can_ref_all accordingly.
10710         (build_reference_type_for_mode): Likewise.
10711         * doc/extend.texi (may_alias): Clarify.
10712
10713 2008-07-15  Kaz Kojima  <kkojima@gcc.gnu.org>
10714
10715         PR target/36780
10716         * config/sh/sh.h (GO_IF_LEGITIMATE_ADDRESS): Allow
10717         (plus (plus (reg) (const_int)) (const_int)) when reload_in_progress.
10718
10719 2008-07-15  Andrew Pinski  <andrew_pinski@playstation.sony.com>
10720
10721         PR target/31568
10722         * config/rs6000/rs6000.c (print_operand <case 'y'>): Don't use
10723         gcc_assert, instead call output_operand_lossage.
10724
10725 2008-07-15  Kai Tietz  <kai.tietz@onevision.com>
10726
10727         * builtins.c (std_canonical_va_list): Treat structure based
10728         va_list types.
10729
10730 2008-07-15  Ben Elliston  <bje@au.ibm.com>
10731
10732         * emit-rtl.c (set_mem_attributes_minus_bitpos): Improve comment.
10733
10734 2007-07-14  Rafael Ã\81vila de Espíndola  <espindola@google.com>
10735
10736         * c-decl.c (diagnose_mismatched_decls): Don't warn if TREE_NO_WARNING
10737         is set.
10738
10739 2008-07-14  Jan Hubicka  <jh@suse.cz>
10740
10741         * i386.md (sse5 cmov pattern): Update call of ix86_sse5_valid_op_p
10742         * sse.md (sse5 patterns): Update call of ix86_sse5_valid_op_p;
10743         fix predicates and constraints.
10744         * i386.c (ix86_sse5_valid_op_p): Add commutative parameter.
10745         * i386-protos.h (ix86_sse5_valid_op_p): Update declaration.
10746
10747 2008-07-14  Doug Kwan  <dougkwan@google.com>
10748
10749         * config.gcc (arm*-*-eabi*): Include arm/eabi.h and use
10750         additional option file arm/eabi.opt.
10751         * config/arm/eabi.h (File): New configuration file for EABI targets.
10752         * config/arm/elf.h (SUBTARGET_EXTRA_SPECS): Add
10753         SUBSUBTARGET_EXTRA_SPECS.
10754         (SUBSUBTARGET_EXTRA_SPECS): Provide empty default.
10755         * config/arm/unknown-elf.h (UNKNOWN_ELF_STARTFILE_SPEC): Renamed
10756         from STARTFILE_SPEC so that it can be referenced in an override.
10757         (STARTFILE_SPEC): Use UNKNOWN_ELF_STARTFILE_SPEC.
10758         (UNKNOWN_ELF_ENDFILE_SPEC): Renamed from ENDFILE_SPEC so that it
10759         can be referenced in an override.
10760         (ENDFILE_SPEC): Use UNKNOWN_ELF_ENDFILE_SPEC.
10761         * config/arm/bpabi.h (BPABI_LINK_SPEC): Renamed from LINK_SPEC
10762         so that it can be referenced in an override.
10763         (LINK_SPEC): Use BPABI_LINK_SPEC.
10764         * config/arm/eabi.opt (File): New.
10765
10766 2008-07-14  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
10767
10768         * Makefile.in (TARGET_DEF_H): Add targhooks.h.
10769         (FIXED_VALUE_H): New variable.
10770         (RTL_BASE_H): Use $(INPUT_H) and $(FIXED_VALUE_H) instead of
10771         input.h, fixed-value.h.
10772         (TREE_H): Use $(INPUT_H), add $(SYMTAB_H).
10773         (BASIC_BLOCK_H): Use $(BITMAP_H).
10774         (FUNCTION_H): Add varray.h.
10775         (IPA_REFERENCE_H): Use $(BITMAP_H).
10776         (CGRAPH_H): Add $(BASIC_BLOCK_H).
10777         (DF_H): Use $(BITMAP_H).
10778         (GGC_H): Add statistics.h.
10779         (INSN_ADDR_H): New.
10780         (INSN_ATTR_H): Use it.
10781         (SYSTEM_H): Add safe-ctype.h, filenames.h.
10782         (INPUT_H): New.
10783         (SYMTAB_H): Add $(OBSTACK_H).
10784         (CPP_INTERNAL_H): New.
10785         (TREE_DUMP_H): Add tree-pass.h.
10786         (TREE_FLOW_H): Use $(BITMAP_H)
10787         (PRETTY_PRINT_H): Use $(INPUT_H).
10788         (EBITMAP_H): Rename from typo-ed EBIMAP_H.
10789         (GSTAB_H): New.
10790         (BITMAP_H): New.
10791         (many object files): Fix lots of header dependencies throughout.
10792
10793 2008-07-14  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
10794
10795         * Makefile.in (write_entries_to_file, write_entries_to_file_split):
10796         New macros.
10797         (s-gtyp-input): Use them to write tmp-gi.list.
10798         (echo_to_gi.list): Remove.
10799
10800 2008-07-14  Richard Guenther  <rguenther@suse.de>
10801
10802         * tree-ssa-sccvn.c (pre_info): Remove.
10803         (switch_to_PRE_table): Likewise.
10804         (free_scc_vn): Do not clear SSA_NAME_VALUE.  Do not free pre_info.
10805         (set_hashtable_value_ids): Do not create value-ids for the
10806         optimistic tables.
10807         (run_scc_vn): Remove double test.  Remove bogus special-case
10808         in value-number printing.
10809         * tree-ssa-sccvn.h (switch_to_PRE_table): Remove.
10810         * tree-ssa-ccp.c (get_symbol_constant_value): Do not look at
10811         SSA_NAME_VALUE.
10812         * tree-flow-inline.h (get_value_handle): Remove.
10813         * tree-flow.h (get_value_handle): Remove.
10814
10815 2008-07-14  Martin Jambor  <mjambor@suse.cz>
10816
10817         * tree-switch-conversion.c (gen_inbound_check): Make sure the type
10818         in which we generate arithmetics is not a subrange.
10819
10820 2008-07-14  Martin Jambor  <mjambor@suse.cz>
10821
10822         * Makefile.in (IPA_PROP_H): Added ipa-prop.h to IPA_PROP_H variable.
10823
10824 2008-07-14  Richard Guenther  <rguenther@suse.de>
10825
10826         * tree-ssa-pre.c (insert_into_preds_of_block): Do not call convert.
10827
10828 2008-07-14  Andreas Krebbel  <krebbel1@de.ibm.com>
10829
10830         PR target/36745
10831         * config/s390/s390.c: (s390_secondary_reload): Add a secondary
10832         reload for symbol refs moved to r0 with -fPIC.
10833         (legitimize_pic_address): Use the target register as temporary
10834         reg if possible.
10835         (emit_symbolic_move): Adjust comment.
10836         * config/s390/s390.md (reloadsi_PIC_addr, reloaddi_PIC_addr):
10837         New expanders.
10838
10839 2008-07-14  Ben Elliston  <bje@au.ibm.com>
10840
10841         * c-common.h (C_CPP_HASHNODE): New macro.
10842         * coretypes.h (struct cpp_token): Forward declare.
10843         * doc/extend.texi (PowerPC AltiVec Built-in Functions): Document
10844         the context-sensitive keyword method.
10845         * config/rs6000/rs6000-c.c (__vector_keyword, vector_keyword,
10846         __pixel_keyword, pixel_keyword, __bool_keyword, bool_keyword,
10847         expand_bool_pixel): New.
10848         (altivec_categorize_keyword): New function.
10849         (init_vector_keywords): New function.
10850         (rs6000_macro_to_expand): Likewise.
10851         (rs6000_cpu_cpp_builtins): Enable context-sensitive macros if not
10852         compiling an ISO C dialect.
10853
10854 2008-07-13  Daniel Berlin  <dberlin@dberlin.org>
10855
10856         * tree-ssa-pre.c (fully_constant_expression): Add fold_convert calls.
10857         (create_expression_by_pieces): Fix typo.
10858         (do_regular_insertion): Use debug counter here too.
10859
10860 2008-07-14  Hans-Peter Nilsson  <hp@axis.com>
10861
10862         PR target/35492.
10863         * config/cris/cris.h (CRIS_CONST_OK_FOR_LETTER_P): Renamed from
10864         CONST_OK_FOR_LETTER_P.  All port-local users changed.
10865         (CONST_OK_FOR_CONSTRAINT_P): Define; implement Kc as old K,
10866         implement Kp matching power-of-two.
10867         (CONSTRAINT_LEN): Define to match.
10868         * config/cris/cris.md: Replace all use of constraint K with Kc.
10869         ("*btst*): Use Kp for operand 0 of last alternative.
10870
10871 2008-07-13  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
10872
10873         PR testsuite/36440
10874         * tree-call-cdce.c (check_target_format): Accept MIPS single, double
10875         and quad formats.
10876
10877 2008-07-13  Jan Hubicka  <jh@suse.cz>
10878
10879         * tree.c (decl_assembler_name_equal): Expect assembler name of decl
10880         to be mangled too.
10881
10882 2008-07-13  Richard Guenther  <rguenther@suse.de>
10883
10884         PR middle-end/36811
10885         * langhooks.c (lhd_print_error_function): Deal with recursive
10886         BLOCK trees.
10887
10888 2008-07-12  Jan Hubicka  <jh@suse.cz>
10889
10890         * cgraph.c (assembler_name_hash): New static var.
10891         (hash_node_by_assembler_name, eq_assembler_name): New.
10892         (cgraph_node_for_asm): Use hashtable.
10893         (cgraph_remove_node): Maintain hashtable.
10894         (change_decl_assembler_name): Sanity check that names are not changing
10895         after aliasing was processed.
10896         * cgraph.h (varpoon_node): Add next GGC marker.
10897         * tree.c (decl_assembler_name_equal): Constify.
10898         (decl_assembler_name_hash): New.
10899         * tree.h (decl_assembler_name_equal): Constify.
10900         (decl_assembler_name_hash): Update.
10901
10902 2008-07-12  David Daney  <ddaney@avtrex.com>
10903
10904         * config/mips/driver-native.c (host_detect_local_cpu): Handle
10905         sb1 and r5000 cpus.
10906
10907 2008-07-12  Richard Sandiford  <rdsandiford@googlemail.com>
10908
10909         * doc/md.texi: Document the MIPS "v" constraint.
10910         * config/mips/mips.h (reg_class): Revert last change.
10911         (REG_CLASS_NAMES): Likewise.
10912         (REG_CLASS_CONTENTS): Likewise.
10913         * config/mips/mips.c (mips_regno_to_class): Likewise.
10914         * config/mips/constraints.md (v): Likewise, but add documentation.
10915         Add a comment to say that this constraint should not be used in
10916         gcc code.
10917
10918 2008-07-11  DJ Delorie  <dj@redhat.com>
10919
10920         * config/h8300/h8300.md (length): Fix branch offset limit.
10921
10922 2008-07-11  Anatoly Sokolov  <aesok@post.ru>
10923
10924         * config/avr/avr-protos.h (avr_peep2_scratch_safe): Remove prototype.
10925         * config/avr/avr.c (avr_peep2_scratch_safe): Remove.
10926         (avr_hard_regno_scratch_ok): New function.
10927         (TARGET_HARD_REGNO_SCRATCH_OK): Define.
10928         * config/avr/avr.md (all peepholes that request a scratch register):
10929         Remove avr_peep2_scratch_safe use.
10930
10931 2008-07-11  Tom Tromey  <tromey@redhat.com>
10932             Ian Lance Taylor  <iant@google.com>
10933
10934         * c-common.h (enum rid): Add RID_CXX_COMPAT_WARN.
10935         (struct c_common_resword): Define.
10936         (D_CONLY, D_CXXONLY, D_C99, D_CXX0X, D_EXT, D_EXT89): Define.
10937         (D_ASM, D_OBJC, D_CXX_OBJC, D_CXXWARN): Define.
10938         (c_common_reswords, num_c_common_reswords): Declare.
10939         * c-common.c (c_common_reswords): New global const array.
10940         (num_c_common_reswords): New const int.
10941         * c-parser.c (struct resword, reswords): Don't define.
10942         (D_C89, D_EXT, D_EXT89, D_OBJC): Don't define.
10943         (c_parse_init): Clarify mask code.  Use c_common_reswords rather
10944         than reswords.  If warning about C++ keywords, give them a special
10945         RID code.
10946         (c_lex_one_token): Warn about C++ keywords.  Call
10947         objc_is_reserved_word rather than OBJC_IS_AT_KEYWORD.
10948         (c_parser_external_declaration): Look for RID_xxx rather than
10949         RID_AT_xxx, for ObjC++ keywords which are also C++ keywords.
10950         (c_parser_statement_after_labels): Likewise.
10951         (c_parser_objc_class_instance_variables): Likewise.
10952         (c_parser_objc_class_declaration): Likewise.
10953         (c_parser_objc_try_catch_statement): Likewise.
10954         * c-decl.c (c_print_identifier): Ignore RID_CXX_COMPAT_WARN.
10955         (declspecs_add_type): Likewise.
10956
10957 2008-07-11  Angelo Graziosi  <angelo.graziosi@alice.it>
10958
10959         * ggc-page.c (alloc_page):
10960         Substituting xmalloc, xcalloc with
10961         XNEWVEC and XCNEWVAR macros which add the
10962         needed casts.
10963
10964 2008-07-11  Richard Guenther  <rguenther@suse.de>
10965
10966         PR tree-optimization/36765
10967         * tree-ssa-alias.c (compute_flow_insensitive_aliasing): Add
10968         aliases from HEAP vars to SMTs.
10969
10970 2008-07-10  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
10971
10972         * Makefile.in (LOOSE_WARN, STRICT_WARN): Update comments.
10973         * configure.ac (loose_warn): Move -Wc++-compat from here...
10974         (strict_warn): ...to here.
10975         * configure: Regenerate.
10976
10977 2008-07-10  Joseph Myers  <joseph@codesourcery.com>
10978
10979         * config.gcc (arm-*-coff*, armel-*-coff*, h8300-*-*,
10980         i[34567]86-*-aout*, i[34567]86-*-coff*, m68k-*-aout*,
10981         m68k-*-coff*, sh-*-*, mips-sgi-irix[56]*, pdp11-*-bsd,
10982         rs6000-ibm-aix4.[12]*, powerpc-ibm-aix4.[12]*): Deprecate targets,
10983         excluding more specific h8300-*-* and sh-*-* targets.
10984
10985 2008-07-10  Daniel Berlin  <dberlin@dberlin.org>
10986
10987         * tree-ssa-pre.c (create_expression_by_pieces): Add fold_convert calls.
10988         (eliminate): Ditto.
10989         (execute_pre): Call loop_optimizer_finalize in early exit.
10990
10991 2008-07-10  Jakub Jelinek  <jakub@redhat.com>
10992
10993         PR middle-end/36790
10994         * omp-low.c (lower_omp_2): If task_shared_vars, test all DECL_P
10995         uids in the bitmap, not just VAR_DECL uids.
10996
10997         PR rtl-optimization/36419
10998         * combine-stack-adj.c (adjust_frame_related_expr): New function.
10999         (combine_stack_adjustments_for_block): Call it if needed.  Delete
11000         correct insn.
11001         * dwarf2out.c (dwarf2out_frame_debug_expr): Adjust
11002         DW_CFA_GNU_args_size if CSA pass merged some adjustments into
11003         prologue sp adjustment.
11004
11005 2008-07-10  Peter Maydell  <pmaydell@chiark.greenend.org.uk>
11006
11007         PR other/28322
11008         * opts.c (print_ignored_options): Report postponed diagnostics for
11009         unknown -Wno-* options as warnings, not errors.
11010         (postpone_unknown_option_error): Renamed to...
11011         (postpone_unknown_option_warning): ... this.
11012
11013 2008-07-09  Doug Kwan  <dougkwan@google.com>
11014
11015         Revert:
11016         2008-07-08  Doug Kwan  <dougkwan@google.com>
11017
11018         * config/arm/arm.opt (mandroid): New option.
11019         * config/arm/bpabi.h (ANDROID_LINK_SPEC): New macro.
11020         (LINK_SPEC): Enable Android specific behaviour when -mandroid is used.
11021         (CC1_SPEC): Same.
11022         (CC1PLUS_SPEC): Same.
11023         (LIB_SPEC): Same.
11024         (STARTFILE_SPEC): Same.
11025         (ENDFILE_SPEC): Same.
11026         (TARGET_BPABI_CPP_BUILTINS): Define __ANDROID__ when -mandroid is
11027         used.
11028
11029 2008-07-09  Richard Sandiford  <rdsandiford@googlemail.com>
11030
11031         PR target/35802
11032         * config/mips/mips.h (reg_class): Remove V1_REG.
11033         (REG_CLASS_NAMES, REG_CLASS_CONTENTS): Update accordingly.
11034         * config/mips/mips.c (mips_regno_to_class): Map $3 to M16_NA_REGS
11035         instead of V1_REGS.
11036         (mips_get_tp): New function.
11037         (mips_legitimize_tls_address): Use it.
11038         * config/mips/constraints.md (v): Delete.
11039         * config/mips/mips.md (TLS_GET_TP_REGNUM): New constant.
11040         (tls_get_tp_<mode>): Allow any GPR destination and clobber $3.
11041         After reload, split into a move and ...
11042         (*tls_get_tp_<mode>_split): ...this new instruction.
11043
11044 2008-07-09  David Daney  <ddaney@avtrex.com>
11045
11046         * config/mips/driver-native.c: Include coretypes.h and tm.h.
11047
11048 2008-07-09  Jakub Jelinek  <jakub@redhat.com>
11049
11050         * gimplify.c (struct gimplify_ctx): Move to tree-gimple.h.
11051         (push_gimplify_context): Don't allocate temp_htab nor c itself here.
11052         Add c argument.
11053         (pop_gimplify_context): Check c->temp_htab instead of optimize whether
11054         htab_delete should be called.  Don't free c.
11055         (lookup_tmp_var): Create temp_htab lazily.
11056         (gimplify_scan_omp_clauses, gimplify_omp_parallel, gimplify_omp_task,
11057         gimplify_body, force_gimple_operand): Adjust push_gimplify_context
11058         callers.
11059         * omp-low.c (lower_omp_sections, lower_omp_single, lower_omp_master,
11060         lower_omp_ordered, lower_omp_critical, lower_omp_for,
11061         create_task_copyfn, lower_omp_taskreg, execute_lower_omp):
11062         * tree-ssa-ccp.c (convert_to_gimple_builtin): Likewise.
11063         * tree-sra.c (generate_element_init): Likewise.
11064         * tree-mudflap.c (execute_mudflap_function_ops,
11065         execute_mudflap_function_decls): Likewise.
11066         * tree-inline.c (setup_one_parameter, optimize_inline_calls): Likewise.
11067         * tree-gimple.h (struct gimplify_ctx): New type.
11068         (push_gimplify_context): Adjust prototype.
11069
11070 2008-07-09  Daniel Berlin  <dberlin@dberlin.org>
11071
11072         * tree-ssa-pre.c (phi_translate_1): Update placement of
11073         add_to_value calls.
11074
11075 2008-07-09  Anatoly Sokolov  <aesok@post.ru>
11076
11077         * target.h (struct gcc_target): Add hard_regno_scratch_ok field.
11078         * target-def.h (TARGET_HARD_REGNO_SCRATCH_OK): New.
11079         (TARGET_INITIALIZER): Use TARGET_HARD_REGNO_SCRATCH_OK.
11080         * targhooks.c (default_hard_regno_scratch_ok): New function.
11081         * targhooks.h (default_hard_regno_scratch_ok): Declare function.
11082         * doc/tm.texi: Document TARGET_HARD_REGNO_SCRATCH_OK hook.
11083         * recog.c:  Include "target.h".
11084         (peep2_find_free_register): Add check for global regs. Add target
11085         specific check.
11086         * Makefile.in (recog.o): Depend on target.h.
11087
11088 2008-07-09  Kaz Kojima  <kkojima@gcc.gnu.org>
11089
11090         * config/sh/sh.c (sh_canonical_va_list_type): New.
11091         (TARGET_CANONICAL_VA_LIST_TYPE): Define.
11092
11093 2008-07-09  Raksit Ashok <raksit@google.com>
11094
11095         * doc/invoke.texi (Option Summary): Mention new option
11096         -Wdisallowed-function-list=...
11097         (Warning Options): Document -Wdisallowed-function-list=...
11098         * common.opt (Wdisallowed-function-list=): New flag.
11099         * flags.h (warn_disallowed_functions): External definition of new
11100         boolean warning flag.
11101         (warn_if_disallowed_function_p): Declare new function.
11102         * opts.c (warning_disallowed_functions): New static variable.
11103         (warn_disallowed_functions): New boolean warning flag.
11104         (warn_if_disallowed_function_p): New function.
11105         (add_comma_separated_to_vector): Rename
11106         add_instrument_functions_exclude_list to this.
11107         (common_handle_option): Handle new option. Rename calls to
11108         add_instrument_functions_exclude_list into calls to
11109         add_comma_separated_to_vector.
11110         * c-parser.c (c_parser_postfix_expression_after_primary): New warning
11111         based on flag warn_disallowed_functions.
11112
11113 2008-07-09  Christian Bruel  <christian.bruel@st.com>
11114
11115         * final.c (get_attr_length_1): Call get_attr_length_1 with fallback_fn
11116          instead of get_attr_length.
11117
11118 2008-07-09  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
11119
11120         * genattrtab.c (insert_right_side, evaluate_eq_attr): Avoid C++
11121         keywords.
11122         * genemit.c (gen_insn): Likewise.
11123         * gengtype.c (note_def_vec): Likewise.
11124         * gengtype.h (note_def_vec): Likewise.
11125         * genoutput.c (struct data, output_insn_data, process_template,
11126         gen_expand, gen_split, note_constraint): Likewise.
11127         * genrecog.c (new_decision, add_to_sequence, factor_tests,
11128         make_insn_sequence): Likewise.
11129         * gensupport.c (record_insn_name): Likewise.
11130
11131 2008-07-08  Doug Kwan  <dougkwan@google.com>
11132
11133         * config/arm/arm.opt (mandroid): New option.
11134         * config/arm/bpabi.h (ANDROID_LINK_SPEC): New macro.
11135         (LINK_SPEC): Enable Android specific behaviour when -mandroid is used.
11136         (CC1_SPEC): Same.
11137         (CC1PLUS_SPEC): Same.
11138         (LIB_SPEC): Same.
11139         (STARTFILE_SPEC): Same.
11140         (ENDFILE_SPEC): Same.
11141         (TARGET_BPABI_CPP_BUILTINS): Define __ANDROID__ when -mandroid is
11142         used.
11143
11144 2008-07-08  Raksit Ashok  <raksit@google.com>
11145
11146         * expr.c (emit_block_move_via_movmem): Fix expected_align parameter.
11147         (set_storage_via_setmem): Fix expected_align parameter.
11148         * doc/invoke.texi (i386 and x86-64 Options): Add a couple of options
11149         missing from the list.
11150         * doc/md.texi (movmem): Explicitly state that expected alignment is
11151         to be expressed in bytes.
11152         (setmem): Explicitly state that expected alignment is to be expressed
11153         in bytes.
11154
11155 2008-07-08  Joseph Myers  <joseph@codesourcery.com>
11156
11157         * reload.c (find_reloads_subreg_address): Do not require validity
11158         of address in original mode before reloading address.
11159
11160 2008-07-07  Tianwei Sheng  <tianweis@google.com>
11161
11162         * df-core.c (df_remove_problem): Adjust the access to avoid out of
11163         bounds array access.
11164
11165 2008-07-08  Jakub Jelinek  <jakub@redhat.com>
11166
11167         * tree-sra.c (sra_build_assignment): Handle CONVERT_EXPR_P dst.
11168
11169 2008-07-05  Daniel Berlin  <dberlin@dberlin.org>
11170
11171         Fix PR tree-optimization/23455
11172         Fix PR tree-optimization/35286
11173         Fix PR tree-optimization/35287
11174         * Makefile.in (OBJS-common): Remove tree-vn.o.
11175         (tree-vn.o): Remove.
11176         * dbgcnt.def: Add treepre_insert debug counter.
11177         * gcc/tree-flow.h (add_to_value): Updated for other changes.
11178         (debug_value_expressions): Ditto.
11179         (print_value_expressions): Ditto.
11180         * tree-pretty-print.c (dump_generic_node): Updated for
11181         VALUE_HANDLE removal.
11182         * tree-ssa-dom.c (record_equality): Ditto.
11183         (cprop_operand): Ditto.
11184         (lookup_avail_expr): Ditto.
11185         * tree-ssa-threadedge.c
11186         (record_temporary_equivalences_from_stmts_at_dest): Ditto.
11187         (simplify_control_stmt_condition): Ditto.
11188         * tree.c (tree_code_size): Ditto.
11189         (tree_node_structure): Ditto.
11190         (iterative_hash_expr): Ditto.
11191         * tree.def: Ditto.
11192         * tree.h (VALUE_HANDLE_ID): Ditto.
11193         (VALUE_HANDLE_EXPR_SET): Ditto.
11194         (struct tree_value_handle): Ditto.
11195         (union tree_node): Ditto.
11196         * treestruct.def: Ditto.
11197         * tree-vn.c: Removed.
11198         * tree-ssa-pre.c: Rewritten entirely.
11199         * tree-ssa-sccvn.c (constant_to_value_id): New hashtable.
11200         (constant_value_ids): Ditto.
11201         (vn_nary_op_t): Moved to header.
11202         (vn_phi_t): Ditto.
11203         (vn_reference_op_t): Ditto
11204         (vn_reference_t): Ditto.
11205         (next_value_id): New variable.
11206         (VN_INFO): Add an assert.
11207         (vn_constant_eq): New function.
11208         (vn_constant_hash): Ditto.
11209         (get_or_alloc_constant_value_id): Ditto.
11210         (value_id_constant_p): Ditto.
11211         (vn_reference_compute_hash): De-staticify.
11212         (copy_reference_ops_from_ref): Don't use get_callee_fndecl.
11213         Disable some code with a FIXME.  Remove VALUE_HANDLE use.
11214         (valueize_refs): Update opcode if it changes from ssa name to constant.
11215         (vn_reference_lookup_1): Add new argument.
11216         (vn_reference_lookup):  Ditto.
11217         (vn_reference_lookup_pieces): New function.
11218         (vn_reference_insert): Add return type. Modify to deal with value ids.
11219         (vn_reference_insert_pieces):  New function.
11220         (vn_nary_op_compute_hash): De-staticify.
11221         (vn_nary_op_eq): Ditto.
11222         (vn_nary_op_lookup_pieces): New function.
11223         (vn_nary_op_lookup): Add new argument.
11224         (vn_nary_op_insert_pieces): New function.
11225         (vn_nary_op_insert): Add return type. Modify to deal with value ids.
11226         (vn_phi_insert): Ditto.
11227         (visit_unary_op): Update for callee changes.
11228         (visit_binary_op): Ditto.
11229         (visit_reference_op_load): Ditto.
11230         (visit_reference_op_store): Ditto.
11231         (init_scc_vn): Init next_value_id, constant_to_value_id and
11232         constant_value_ids.
11233         (free_scc_vn): Free them.
11234         (set_hashtable_value_ids): New function.
11235         (run_scc_vn): Use it.
11236         (get_max_value_id): New function.
11237         (get_next_value_id): Ditto.
11238         (expressions_equal_p): Moved from tree-vn.c
11239         (sort_vuses): Ditto.
11240         (sort_vuses_heap): Ditto.
11241         * tree-ssa-sccvn.h: Structures moved from tree-ssa-sccvn.c (noted
11242         above).
11243         * tree.c (iterative_hash_hashval_t): Made non-static
11244         * tree.h (iterative_hash_hashval_t): Declare it.
11245
11246 2008-07-08  Martin Jambor  <mjambor@suse.cz>
11247
11248         * ipa-cp.c (ipcp_init_cloned_node): Call ipa_check_create_node_params
11249         instead of ipa_create_node_params.
11250         (ipcp_driver): Allocate infos with ipa_check_create_node_params and
11251         ipa_check_create_edge_args, free them with
11252         free_all_ipa_structures_after_ipa_cp, call ipa_register_cgraph_hooks.
11253
11254         * ipa-prop.c: Include flags.h and tree-inline.h.
11255         (ipa_node_params_vector): New variable.
11256         (ipa_edge_args_vector): New variable.
11257         (edge_removal_hook_holder): New variable.
11258         (node_removal_hook_holder): New variable.
11259         (edge_duplication_hook_holder): New variable.
11260         (node_duplication_hook_holder): New variable.
11261         (ipa_detect_param_modifications): Check for presence of modified flags.
11262         (ipa_compute_jump_functions): Check for presence of jump functions.
11263         (ipa_free_edge_args_substructures): New function.
11264         (ipa_create_node_params): Removed.
11265         (ipa_free_all_edge_args): Changed to deallocate the on-the-side vector.
11266         (ipa_free_node_params_substructures): New function.
11267         (ipa_free_all_node_params): Changed to deallocate the on-the-side
11268         vector.
11269         (ipa_edge_removal_hook): New function.
11270         (ipa_node_removal_hook): New function.
11271         (duplicate_array): New function.
11272         (ipa_edge_duplication_hook): New function.
11273         (ipa_node_duplication_hook): New function.
11274         (ipa_register_cgraph_hooks): New function.
11275         (ipa_unregister_cgraph_hooks): New function.
11276         (free_all_ipa_structures_after_ipa_cp): New function.
11277
11278         * ipa-prop.h: Include vec.h.
11279         (ipa_node_params_t): New typedef with vector types for it.
11280         (ipa_edge_args_t):  New typedef with vector types for it.
11281         (IPA_NODE_REF): Changed to access an on-the-side vector.
11282         (IPA_EDGE_REF): Changed to access an on-the-side vector.
11283         (ipa_check_create_node_params): New function.
11284         (ipa_check_create_edge_args): New function.
11285
11286         * Makefile.in (IPA_PROP_H): New variable for ipa-prop.h.  Converted
11287         all users.
11288
11289 2008-07-07  Tom Tromey  <tromey@redhat.com>
11290
11291         * configure, config.in: Rebuilt.
11292         * configure.ac: Don't check for scandir or alphasort.
11293
11294 2008-07-07  Joseph Myers  <joseph@codesourcery.com>
11295
11296         * config/arm/arm.c (arm_init_neon_builtins): Register built-in
11297         types immediately after creating them.
11298
11299 2008-07-07  Joseph Myers  <joseph@codesourcery.com>
11300
11301         * config/arm/aout.h (DOLLARS_IN_IDENTIFIERS): Remove.
11302
11303 2008-07-07  Fernando Pereira <fernando@cs.ucla.edu>
11304
11305         * tree-ssa-structalias.c (compute_points_to_sets): Add call to
11306         dump_constraint_graph.
11307         (dump_constraint_edge): New function.
11308         (dump_constraint_graph): New function.
11309         (debug_constraint_graph): New function.
11310         (dump_constraint): Removed useless comparison.
11311         * tree-ssa-structalias.h (dump_constraint_edge): Declare.
11312         (dump_constraint_graph): Declare.
11313         (debug_constraint_graph): Declare.
11314         * tree-dump.c (struct dump_option_value_info): Declare TDF_GRAPH.
11315
11316 2008-07-07  Kai Tietz  <kai.tietz@onevision.com>
11317
11318         * config/i386/i386.c (is_va_list_char_pointer): New.
11319         (ix86_va_start): Replace compare with ms_va_list_type_node
11320         by is_va_list_char_pointer.
11321         (ix86_gimplify_va_arg): Likewise.
11322
11323 2008-07-07  Martin Jambor  <mjambor@suse.cz>
11324
11325         * cgraph.c (cgraph_edge_max_uid): New variable.
11326         (struct cgraph_edge_hook_list): New type.
11327         (struct cgraph_node_hook_list): New type.
11328         (struct cgraph_2edge_hook_list): New type.
11329         (struct cgraph_2node_hook_list): New type.
11330         (first_cgraph_edge_removal_hook): New variable.
11331         (first_cgraph_node_removal_hook): New variable.
11332         (first_cgraph_edge_duplicated_hook): New variable.
11333         (first_cgraph_node_duplicated_hook): New variable.
11334         (cgraph_add_edge_removal_hook): New function.
11335         (cgraph_remove_edge_removal_hook): New function.
11336         (cgraph_call_edge_removal_hooks):  New function.
11337         (cgraph_add_node_removal_hook):  New function.
11338         (cgraph_remove_node_removal_hook):  New function.
11339         (cgraph_call_node_removal_hooks):  New function.
11340         (cgraph_add_edge_duplication_hook):  New function.
11341         (cgraph_remove_edge_duplication_hook):  New function.
11342         (cgraph_call_edge_duplication_hooks):  New function.
11343         (cgraph_add_node_duplication_hook):  New function.
11344         (cgraph_remove_node_duplication_hook):  New function.
11345         (cgraph_call_node_duplication_hooks):  New function.
11346         (cgraph_create_edge): Assign to edge uid.
11347         (cgraph_remove_edge): Call edge removal hooks.
11348         (cgraph_node_remove_callees): Call edge removal hooks.
11349         (cgraph_node_remove_callers): Call edge removal hooks.
11350         (cgraph_remove_node): Call node removal hooks.
11351         (cgraph_clone_edge): Call edge duplication hooks.
11352         (cgraph_clone_node): Call node duplication hooks.
11353
11354         * cgraph.h (cgraph_edge): New field uid.
11355         (cgraph_edge_hook): New type.
11356         (cgraph_node_hook): New type.
11357         (cgraph_2edge_hook): New type.
11358         (cgraph_2node_hook): New type.
11359
11360 2008-07-07  Andreas Tobler  <a.tobler@schweiz.org>
11361
11362         * config.in: Regenerate.
11363
11364 2008-07-07  Vladimir Prus  <vladimir@codesourcery.com>
11365
11366         * gcc.c (print_sysroot): New.
11367         (option_map, display_help, process_command): Handle the
11368         -print-sysroot option.
11369         (main): Print the sysroot if requested.
11370         * doc/invoke.texi (Debugging Options): Document -print-sysroot.
11371
11372 2008-07-07  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
11373
11374         PR target/34780
11375         * unwind-pe.h (size_of_encoded_value): add attribute unused.
11376
11377 2008-07-07  Daniel Jacobowitz  <dan@codesourcery.com>
11378
11379         * function.c (assign_parm_remove_parallels): Check mode of entry_parm.
11380         (assign_parm_setup_block_p): Also check mode of entry_parm.
11381
11382 2008-07-07  Richard Guenther  <rguenther@suse.de>
11383
11384         * tree-ssa-structalias.h (set_used_smts): Remove.
11385         * tree-ssa-structalias.c (used_smts): Likewise.
11386         (set_used_smts): Likewise.
11387         * tree-ssa-alias.c (compute_flow_sensitive_aliasing): Remove
11388         call to set_used_smts.
11389
11390 2008-07-07  Richard Guenther  <rguenther@suse.de>
11391
11392         * tree-ssa-structalias.c (struct variable_info): Add is_full_var flag.
11393         (new_var_info): Set it to false.
11394         (solution_set_add): Correctly handle pointers outside a var and
11395         inside a field.
11396         (type_safe): Treat variables with is_full_var properly.
11397         (do_sd_constraint): Likewise.
11398         (do_ds_constraint): Likewise.
11399         (process_constraint): Remove zeroing offset for !use_field_sensitive.
11400         (get_constraint_for_ptr_offset): New function.
11401         (get_constraint_for_component_ref): For addresses at least include
11402         the last field of the variable.  Handle is_full_vars properly.
11403         (get_constraint_for_1): Factor common code, handle POINTER_PLUS_EXPR.
11404         (handle_ptr_arith): Remove.
11405         (find_func_aliases): Simplify assignment handling.
11406         (create_function_info_for): For parameter and result varinfos set
11407         is_full_var flag.
11408         (create_variable_info_for): Set is_full_var flag whenever we
11409         just created a single varinfo for a decl.
11410         (init_alias_vars): Initialize use_field_sensitive from
11411         max-fields-for-field-sensitive parameter.
11412
11413 2008-07-07  Richard Guenther  <rguenther@suse.de>
11414
11415         PR tree-optimization/36713
11416         * tree-flow-inline.h (is_call_used): New function.
11417         * tree-nrv.c (dest_safe_for_nrv_p): Use it.
11418         * tree-tailcall.c (suitable_for_tail_opt_p): Likewise.
11419         * tree-outof-ssa.c (create_temp): Set call-used flag if required.
11420
11421 2008-07-07  Maxim Kuvyrkov  <maxim@codesourcery.com>
11422
11423         * config/m68k/m68k.c (m68k_return_in_memory): Fix arguments types.
11424
11425 2008-07-07  Mark Shinwell  <shinwell@codesourcery.com>
11426
11427         * config/m68k/lb1sf68.asm: Add PIC macros for Linux targets.
11428
11429 2008-07-07  Maxim Kuvyrkov  <maxim@codesourcery.com>
11430             Nathan Sidwell  <nathan@codesourcery.com>
11431
11432         * config.gcc (m68k-*-linux*): Add with_arch.  Add sysroot-suffix.h
11433         to tm_file.  Add m68k/t-floatlib, m68k/t-linux & m68k/t-mlibs to
11434         tmake_file.
11435         * config/m68k/t-linux: New.
11436         * doc/install.texi: Document m68k-*-linux is now multilibbed by
11437         default.
11438
11439 2008-07-07  Nathan Sidwell  <nathan@codesourcery.com>
11440
11441         * config/m68k/t-cf (MULTILIB_EXTRA_OPTS): Add no-mac.
11442         * config/m68k/m68k-devices.def: Remove multilibs that only differ
11443         by MAC/EMAC.
11444
11445 2008-07-06  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
11446
11447         * gcc.c (execute): Fix -Wc++-compat warning.
11448
11449 2008-07-06  H.J. Lu  <hongjiu.lu@intel.com>
11450
11451         PR target/36720
11452         * config/ia64/ia64.c (ia64_split_tmode): Fix typo in TImode
11453         constant for little endian.
11454
11455 2008-07-06  Richard Sandiford  <rdsandiford@googlemail.com>
11456
11457         * config/mips/mips.h (TARGET_CPU_CPP_BUILTINS): Check
11458         mips_base_mips16 instead of TARGET_MIPS16.
11459         (mips_base_mips16): Declare.
11460         * config/mips/mips.c (mips_base_mips16): Make global.
11461         (was_mips16_p): Remove GTY marker.
11462         (was_mips16_pch_p): New variable.
11463         (mips_set_mips16_mode): Check both was_mips16_p and was_mips16_pch_p.
11464         (mips_override_options): Force to non-MIPS16 mode initially.
11465         Do not complain about MIPS16 PIC incompatibilities here.
11466         Only allow -mgpopt if -mexplicit-relocs is in force for
11467         non-MIPS16 code.
11468
11469 2008-07-06  Andreas Tobler  <a.tobler@schweiz.org>
11470
11471         * configure.ac: Check for caddr_t, define to char * if not defined.
11472         * configure: Regenerate.
11473         * ggc-common.c (mmap_gt_pch_get_address): Fix -Wc++-compat warnings.
11474         (mmap_gt_pch_use_address): Likewise.
11475         * config/host-solaris.c (sol_gt_pch_use_address): Likewise.
11476
11477 2008-07-06  Richard Guenther  <rguenther@suse.de>
11478
11479         * tree-ssa-structalias.c (struct variable_info): Remove has_union.
11480         (new_var_info): Deal with it.
11481         (solution_set_add): Likewise.
11482         (bitpos_of_field): Make signed, fix.
11483         (struct fieldoff): Remove type and decl fields.  Make size field
11484         unsigned HOST_WIDE_INT.  Add has_unknown_size and may_have_pointers
11485         flags.
11486         (fieldoff_compare): Deal with it.
11487         (push_fields_onto_fieldstack): Remove has_union argument, glob
11488         adjacent non-pointer fields together.
11489         (create_function_info_for): Do not set has_union.
11490         (create_variable_info_for): Simplify.
11491
11492 2008-07-06  Kai Tietz  <kai.tietz@onevision.com>
11493
11494         * config.gcc (extra_headers): Add cross-stdarg.h for target
11495         x86_64-*-* and i?86-*-*.
11496         * config/i386/cross-stdarg.h: New.
11497         * builtins.c (std_fn_abi_va_list): New.
11498         (std_canonical_va_list_type): New.
11499         (stabilize_va_list): Replace va_list_type_node use by
11500         mtarget.canonical_va_list_type.
11501         (gimplify_va_arg_expr): Likewise.
11502         (expand_builtin_va_copy): Replace va_list_type_node use by
11503         mtarget.fn_abi_va_list.
11504         * tree-sra.c (is_va_list_type): New helper.
11505         (decl_can_be_decomposed_p): Replace
11506         va_list_type_node use by is_va_list_type.
11507         * tree-ssa-ccp.c (optimize_stdarg_builtin): Likewise.
11508         * tree-stdarg.c (execute_optimize_stdarg): Likewise.
11509         * c-common.c (c_common_nodes_and_builtins): Use TARGET_ENUM_VA_LIST.
11510         * config/i386/i386-protos.h (ix86_get_valist_type): New.
11511         (ix86_enum_va_list): New.
11512         * config/i386/i386.c (sysv_va_list_type_node): New.
11513         (ms_va_list_type_node): New.
11514         (ix86_function_type_abi): Remove sorry.
11515         (ix86_build_builtin_va_list_abi): New.
11516         (ix86_build_builtin_va_list): Call ix86_build_builtin_va_list_abi
11517         for 64-bit targets.
11518         (ix86_va_start): Replace va_list_type_node by sysv_va_list_type_node.
11519         (ix86_init_builtins_va_builtins_abi): New.
11520         (ix86_init_builtins): Use ix86_init_builtins_va_builtins_abi
11521         for 64-bit targets.
11522         (ix86_handle_abi_attribute): New.
11523         (attribute_spec): Add sysv_abi and ms_abi.
11524         (ix86_fn_abi_va_list): New.
11525         (ix86_canonical_va_list_type): New.
11526         (ix86_enum_va_list): New.
11527         (TARGET_FN_ABI_VA_LIST): New.
11528         (TARGET_CANONICAL_VA_LIST_TYPE): New.
11529         * config/i386/i386.h (TARGET_ENUM_VA_LIST): New.
11530         * doc/tm.texi (TARGET_FN_ABI_VA_LIST): New.
11531         (TARGET_CANONICAL_VA_LIST_TYPE): New.
11532         (TARGET_ENUM_VA_LIST): New.
11533         * expr.h (std_fn_abi_va_list): New.
11534         (std_canonical_va_list_type): New.
11535         * target-def.h (TARGET_FN_ABI_VA_LIST): New.
11536         (TARGET_CANONICAL_VA_LIST_TYPE): New.
11537         (TARGET_INITIALIZER): Add TARGET_FN_ABI_VA_LIST and
11538         TARGET_CANONICAL_VA_LIST_TYPE.
11539         * target.h (struct gcc_target): Add fn_abi_va_list hook
11540         and canonical_va_list_type hook.
11541
11542 2008-07-05  Andrew Pinski  <andrew_pinski@playstation.sony.com>
11543
11544         * fold-const.c (fold_convert_const): Treat OFFSET_TYPE the same as
11545         integral and pointer types.
11546
11547 2008-07-04  Roger Sayle  <roger@eyesopen.com>
11548
11549         * config/rs6000/host-darwin.c (darwin_rs6000_extra_signals): Cast
11550         the "void*" result of xmalloc to "char*" to fix bootstrap breakage.
11551
11552 2008-07-04  Kaz Kojima  <kkojima@gcc.gnu.org>
11553
11554         PR target/36684
11555         * config/sh/sh.h (OVERRIDE_OPTIONS): Disable -fschedule-insns for PIC.
11556
11557 2008-07-04  Jakub Jelinek  <jakub@redhat.com>
11558
11559         * tree-switch-conversion.c (build_one_array, gen_def_assigns): Use
11560         build_gimple_modify_stmt.
11561         (build_arrays, gen_inbound_check): Likewise.  Force RHS to be
11562         gimple operand.  Use fold_build* instead of build*.
11563
11564 2008-07-04  Richard Guenther  <rguenther@suse.de>
11565
11566         * tree-ssa-structalias.c (lookup_vi_for_tree): Declare.
11567         (do_sd_constraint): Handle a dereference of ESCAPED and CALLUSED
11568         properly to compute the reachability set if we do field-sensitive PTA.
11569         * invoke.texi (max-fields-for-field-sensitive): Document default.
11570         * opts.c (decode_options): Set max-fields-for-field-sensitive to
11571         100 for optimize >= 2.
11572
11573 2008-07-04  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
11574
11575         * ggc-zone.c (lookup_page_table_if_allocated,
11576         set_page_table_entry, zone_find_object_size, alloc_small_page,
11577         alloc_large_page, ggc_free, gt_ggc_m_S, ggc_marked_p, init_ggc,
11578         new_ggc_zone, init_ggc_pch, ggc_pch_this_base, ggc_pch_read): Fix
11579         -Wc++-compat and/or -Wcast-qual warnings.
11580
11581 2008-07-04  Alan Modra  <amodra@bigpond.net.au>
11582
11583         PR target/36634
11584         * config/rs6000/rs6000.md (call, call_value): Don't arrange for
11585         pic_offset_table_rtx to be marked as used here.
11586         (call_nonlocal_sysv, call_value_nonlocal_sysv): Add split for
11587         TARGET_SECURE_PLT to "use" pic_offset_table_rtx.
11588         (call_nonlocal_sysv_secure, call_value_nonlocal_sysv_secure): New insn.
11589         (sibcall_nonlocal_sysv, sibcall_value_nonlocal_sysv): Assert
11590         !TARGET_SECURE_PLT.
11591
11592 2008-07-03  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
11593
11594         * alloc-pool.c (hash_descriptor, eq_descriptor,
11595         alloc_pool_descriptor): Fix -Wc++-compat warnings.
11596         * bitmap.c (hash_descriptor, eq_descriptor, bitmap_descriptor):
11597         Likewise.
11598         * ggc-common.c (hash_descriptor, eq_descriptor, hash_ptr, eq_ptr,
11599         loc_descriptor, ggc_prune_ptr, ggc_free_overhead,
11600         final_cmp_statistic, cmp_statistic, dump_ggc_loc_statistics): Likewise.
11601         * varray.c (hash_descriptor, eq_descriptor, varray_descriptor):
11602         Likewise.
11603
11604 2008-07-03  Eric Botcazou  <ebotcazou@adacore.com>
11605
11606         * tree-flow.h (loop_only_exit_p): Declare.
11607         * tree-ssa-loop-niter.c (loop_only_exit_p): Make public.
11608         * tree-ssa-loop-ivopts.c (may_eliminate_iv): Reinstate direct check on
11609         the number of iterations if it is constant.  Otherwise, if this is the
11610         only possible exit of the loop, use the conservative estimate on the
11611         number of iterations of the entire loop if available.
11612
11613 2008-07-03  Richard Sandiford  <rdsandiford@googlemail.com>
11614
11615         * Makefile.in (libgcc.mvars): Add LIBGCC_SYNC and LIBGCC_SYNC_CFLAGS.
11616         * libgcc-std.ver (GCC_4.4.0): New version, inherited from GCC_4.3.0.
11617         Add synchronization functions.
11618         * config/sync.c: New file.
11619         * config/mips/t-libgcc-mips16 (LIBGCC_SYNC): Define.
11620         (LIBGCC_SYNC_CFLAGS): Likewise.
11621
11622 2008-07-03  Uros Bizjak  <ubizjak@gmail.com>
11623
11624         PR target/36710
11625         * config/i386/i386.md (mode): Add TF to "mode" attribute.
11626         (*pushtf_sse): New insn pattern.
11627         (pushtf splitters): New splitters.
11628
11629 2008-07-03  Michael Meissner  <gnu@the-meissners.org>
11630
11631         PR middle-end/35736
11632         * predict.c (build_predict_expr): Use void_type_node for the tree
11633         type, instead of NULL_TREE.
11634
11635 2008-07-03  H.J. Lu  <hongjiu.lu@intel.com>
11636
11637         * config/i386/i386.c (contains_aligned_value_p): Return true
11638         for TCmode.
11639         (ix86_data_alignment): Align TCmode to 128bits.
11640         (ix86_local_alignment): Likewise.
11641
11642 2008-07-03  Andrew Haley  <aph@redhat.com>
11643
11644         PR bootstrap/33304
11645         * vec.h (VEC_TA): New.
11646         (DEF_VEC_I, DEF_VEC_P, DEF_VEC_ALLOC_I, DEF_VEC_ALLOC_P,
11647         DEF_VEC_O, DEF_VEC_ALLOC_O: Use VEC_TA.
11648         * c-common.c (C_COMMON_FIXED_TYPES_SAT): New macro.
11649         (C_COMMON_FIXED_MODE_TYPES_SAT): New macro.
11650         (C_COMMON_FIXED_TYPES): Remove first arg.
11651         (C_COMMON_FIXED_MODE_TYPES): Likewise.
11652         * tree.c (MAKE_FIXED_TYPE_NODE): Break into two macros,
11653         MAKE_FIXED_TYPE_NODE and MAKE_FIXED_TYPE_NODE_WIDTH in order
11654         not to use empty macro arguments.
11655
11656 2008-07-02  Joseph Myers  <joseph@codesourcery.com>
11657
11658         * config/alpha/vms_tramp.asm, config/arm/crti.asm,
11659         config/arm/crtn.asm, config/bfin/crti.s, config/bfin/crtlibid.s,
11660         config/bfin/crtn.s, config/fr30/crti.asm, config/fr30/crtn.asm,
11661         config/frv/lib1funcs.asm, config/i386/sol2-c1.asm,
11662         config/i386/sol2-ci.asm, config/i386/sol2-cn.asm,
11663         config/i386/sol2-gc1.asm, config/ia64/crti.asm,
11664         config/ia64/crtn.asm, config/m68hc11/larith.asm,
11665         config/m68hc11/m68hc11-crt0.S, config/m68k/crti.s,
11666         config/m68k/crtn.s, config/mcore/crti.asm, config/mcore/crtn.asm,
11667         config/rs6000/crtresfpr.asm, config/rs6000/crtresgpr.asm,
11668         config/rs6000/crtresxfpr.asm, config/rs6000/crtresxgpr.asm,
11669         config/rs6000/crtsavfpr.asm, config/rs6000/crtsavgpr.asm,
11670         config/rs6000/crtsavres.asm, config/rs6000/e500crtres32gpr.asm,
11671         config/rs6000/e500crtres64gpr.asm,
11672         config/rs6000/e500crtres64gprctr.asm,
11673         config/rs6000/e500crtrest32gpr.asm,
11674         config/rs6000/e500crtrest64gpr.asm,
11675         config/rs6000/e500crtresx32gpr.asm,
11676         config/rs6000/e500crtresx64gpr.asm,
11677         config/rs6000/e500crtsav32gpr.asm,
11678         config/rs6000/e500crtsav64gpr.asm,
11679         config/rs6000/e500crtsav64gprctr.asm,
11680         config/rs6000/e500crtsavg32gpr.asm,
11681         config/rs6000/e500crtsavg64gpr.asm,
11682         config/rs6000/e500crtsavg64gprctr.asm, config/rs6000/eabi-ci.asm,
11683         config/rs6000/eabi-cn.asm, config/rs6000/eabi.asm,
11684         config/rs6000/sol-ci.asm, config/rs6000/sol-cn.asm,
11685         config/rs6000/tramp.asm, config/sparc/sol2-ci.asm,
11686         config/sparc/sol2-cn.asm: Remove .file directives.
11687
11688 2008-07-02  Richard Sandiford  <rdsandiford@googlemail.com>
11689
11690         * resource.c (mark_referenced_resources): Look inside
11691         UNSPEC_VOLATILEs and ASM_INPUTs.
11692
11693 2008-07-02  Ian Lance Taylor  <iant@google.com>
11694
11695         * rtlanal.c (add_reg_note): New function.
11696         * rtl.h (add_reg_note): Declare.
11697         * auto-inc-dec.c (attempt_change): Use add_reg_note.
11698         * bb-reorder.c (add_reg_crossing_jump_notes): Likewise.
11699         * builtins.c (expand_builtin_longjmp): Likewise.
11700         (expand_builtin_nonlocal_goto): Likewise.
11701         * calls.c (emit_call_1, expand_call): Likewise.
11702         * cfgexpand.c (add_reg_br_prob_note): Likewise.
11703         * cfglayout.c (fixup_reorder_chain): Likewise.
11704         * cfgrtl.c (force_nonfallthru_and_redirect): Likewise.
11705         (commit_one_edge_insertion): Likewise.
11706         * combine.c (move_deaths, distribute_notes): Likewise.
11707         * df-problems.c (df_set_note): Likewise.
11708         * emit-rtl.c (link_cc0_insns, try_split): Likewise.
11709         (set_unique_reg_note): Likewise.
11710         (emit_copy_of_insn_after): Likewise.
11711         * expr.c (expand_expr_real): Likewise.
11712         * gcse.c (add_label_notes): Likewise.
11713         * haifa-sched.c (create_check_block_twin): Likewise.
11714         * jump.c (mark_jump_label_1): Likewise.
11715         * loop-doloop.c (add_test, doloop_modify): Likewise.
11716         * loop-unswitch.c (compare_and_jump_seq): Likewise.
11717         * lower-subreg.c (move_eh_region_note): Likewise.
11718         * optabs.c (emit_libcall_block): Likewise.
11719         * predict.c (predict_insn): Likewise.
11720         (combine_predictions_for_insn): Likewise.
11721         * recog.c (peephole2_optimize): Likewise.
11722         * regmove.c (try_auto_increment): Likewise.
11723         * reg-stack.c (emit_pop_insn, move_for_stack_reg): Likewise.
11724         * reload.c (find_reloads): Likewise.
11725         * reload1.c (fixup_eh_region_note): Likewise.
11726         (reload_as_needed, add_auto_inc_notes, copy_eh_notes): Likewise.
11727         * reorg.c (delete_prior_computation): Likewise.
11728         (delete_computation, dbr_schedule): Likewise.
11729         * config/pa/pa.c (legitimize_pic_address): Likewise.
11730         * config/sh/sh.c (sh_reorg): Likewise.
11731
11732 2008-07-02  H.J. Lu  <hongjiu.lu@intel.com>
11733
11734         PR target/36669
11735         * config/libgcc-glibc.ver: Add %exclude.
11736         * config/m32r/libgcc-glibc.ver: Likwise.
11737         * config/s390/libgcc-glibc.ver: Likwise.
11738         * config/sh/libgcc-glibc.ver: Likwise.
11739         * config/sparc/libgcc-sparc-glibc.ver: Likwise.
11740
11741         * config/i386/libgcc-glibc.ver: New.
11742
11743         * config/i386/libgcc-x86_64-glibc.ver: Removed.
11744
11745 2008-07-02  H.J. Lu  <hongjiu.lu@intel.com>
11746
11747         * config.gcc: Remove i386/t-fprules-softfp64 soft-fp/t-softfp
11748         from tmake_file from i[34567]86-*-darwin*, x86_64-*-darwin*,
11749         i[34567]86-*-linux*, x86_64-*-linux*.  Add
11750         i386/t-fprules-softfp and soft-fp/t-softfp to tmake_file for
11751         i[34567]86-*-darwin*, x86_64-*-darwin*, i[34567]86-*-linux*,
11752         x86_64-*-linux*.  Add i386/t-linux to tmake_file for
11753         i[34567]86-*-linux*, x86_64-*-linux*.
11754
11755         * libgcc-std.ver: Add empty GCC_4.4.0.
11756
11757         * mkmap-symver.awk: Support multiple versions per symbol.
11758
11759         * config/i386/i386.c (ix86_init_builtins): Always define
11760         __builtin_fabsq and __builtin_copysignq with fallbacks.
11761         (ix86_expand_builtin): Emit normal call for __builtin_fabsq
11762         and __builtin_copysignq if SSE2 isn't available.
11763
11764         * config/i386/linux.h (LIBGCC2_HAS_TF_MODE): Defined.
11765         (LIBGCC2_TF_CEXT): Likwise.
11766         (TF_SIZE): Likwise.
11767
11768         * config/i386/linux64.h (LIBGCC2_HAS_TF_MODE): Defined as 1.
11769
11770         * config/i386/sfp-machine.h: Moved to libgcc.
11771
11772         * config/i386/sfp-machine.h: New.
11773         * config/i386/t-linux: Likwise.
11774
11775         * config/i386/t-darwin: Remove softfp_wrap_start and
11776         softfp_wrap_end.
11777         * config/i386/t-darwin64: Likewise.
11778
11779         * config/i386/t-fprules-softfp64: Renamed to ...
11780         * config/i386/t-fprules-softfp: This.
11781
11782         * config/i386/t-linux64: Remove SHLIB_MAPFILES, softfp_wrap_start
11783         and softfp_wrap_end.
11784
11785 2008-07-02  Jason Merrill  <jason@redhat.com>
11786
11787         * tree.c (ctor_to_list): Use FOR_EACH_CONSTRUCTOR_ELT.
11788
11789         * tree.c (ctor_to_list): New fn.
11790         * tree.h: Declare it.
11791         (CONSTRUCTOR_ELT): New macro.
11792         (CONSTRUCTOR_NELTS): New macro.
11793
11794 2008-07-02  Richard Guenther  <rguenther@suse.de>
11795
11796         * tree-ssa-structalias.c (struct variable_info): Reorder
11797         to fill padding on 64bit hosts.  Make collapsed_to an int.
11798         (get_varinfo_fc): Deal with that.
11799         (new_var_info): Likewise.
11800         (collapse_rest_of_var): Likewise.
11801
11802 2008-07-02  Joshua Sumali  <jsumali@redhat.com>
11803
11804         * doc/install.texi (--enable-java-home): Document.
11805         (--enable-aot-compile-rpm): Likewise.
11806         (--with-arch-directory): Likewise.
11807         (--with-os-directory): Likewise.
11808         (--with-origin-name): Likewise.
11809         (--with-arch-suffix): Likewise.
11810         (--with-jvm-root-dir): Likewise.
11811         (--with-jvm-jar-dir): Likewise.
11812         (--with-python-dir): Likewise.
11813
11814 2008-07-02  Richard Guenther  <rguenther@suse.de>
11815
11816         * tree-ssa-forwprop.c (can_propagate_from): Exclude loads
11817         from decls explicitly.  Merge operand checking from tuples.
11818
11819 2008-07-02  Martin Jambor  <mjambor@suse.cz>
11820
11821         * tree-switch-conversion.c: Included timevar.h which I forgot before.
11822
11823 2008-07-02  Martin Jambor  <mjambor@suse.cz>
11824
11825         * tree-switch-conversion.c: Included timevar.h
11826         (pass_convert_switch): Added a timevar id (TV_TREE_SWITCH_CONVERSION).
11827
11828         * timevar.def: Added TV_TREE_SWITCH_CONVERSION.
11829
11830 2008-07-02  Martin Jambor  <mjambor@suse.cz>
11831
11832         * tree-switch-conversion.c: Corrected various comments and
11833         whitespace issues
11834         (build_constructors): Fixed minor formatting mistakes.
11835
11836         * invoke.texi (Optimize Options): Corrected the
11837         switch-conversion-max-branch-ratio parameter.
11838
11839 2008-07-02  Mark Shinwell  <shinwell@codesourcery.com>
11840
11841         * final.c (asm_insn_count): Return zero for an empty asm body.
11842
11843 2008-07-02  Richard Guenther  <rguenther@suse.de>
11844
11845         * bitmap.h (bitmap_set_bit): Return bool.
11846         (bitmap_clear_bit): Likewise.
11847         * bitmap.c (bitmap_set_bit): Return if the bit changed.  Only
11848         write to the bitmap if it would.
11849         (bitmap_clear_bit): Likewise.
11850         * tree-ssa-structalias.c (add_implicit_graph_edge): Use
11851         bitmap_set_bit return value.
11852         (add_pred_graph_edge): Likewise.
11853         (add_graph_edge): Likewise.
11854         (do_sd_constraint): Likewise.
11855         (do_ds_constraint): Likewise.
11856
11857 2008-07-02  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
11858
11859         * config/alpha/alpha.c (alpha_need_linkage, alpha_use_linkage):
11860         Fix -Wc++-compat and/or -Wcast-qual warnings.
11861         * config/i386/netware.c (gen_stdcall_or_fastcall_decoration,
11862         gen_regparm_prefix): Likewise.
11863         * vmsdbgout.c (write_modbeg, lookup_filename,
11864         vmsdbgout_source_line, vmsdbgout_init): Likewise.
11865
11866 2008-07-02  Danny Smith  <dannysmith@users.sourceforge.net>
11867
11868         * config/i386/mingw32.h (TARGET_USE_JCR_SECTION): Undef to let
11869         defaults.h definition apply.
11870
11871 2008-07-01  Daniel Jacobowitz  <dan@codesourcery.com>
11872
11873         * function.c (assign_parm_remove_parallels): New.
11874         (assign_parm_setup_block_p): Do not return true for non-BLKmode
11875         PARALLELs.
11876         (assign_parm_setup_block): Do not handle them.
11877         (assign_parm_setup_reg, assign_parm_setup_stack): Call
11878         assign_parm_remove_parallels.
11879
11880 2008-07-01  Daniel Jacobowitz  <dan@codesourcery.com>
11881
11882         * c-typeck.c (convert_for_assignment): Use
11883         vector_targets_convertible_p.
11884         * c-common.c (vector_targets_convertible_p): New.
11885         * c-common.h (vector_targets_convertible_p): New prototype.
11886         * config/rs6000/rs6000.c (rs6000_is_opaque_type): Do not check
11887         opaque_p_V2SI_type_node.
11888
11889 2008-07-01  Steve Ellcey  <sje@cup.hp.com>
11890
11891         * config/ia64/ia64.c (ia64_cannot_force_const_mem): Do not allow
11892         RFmode constants.
11893
11894 2008-07-01  Uros Bizjak  <ubizjak@gmail.com>
11895
11896         * config/i386/i386.c (ix86_build_signbit_mask): Generate TImode and
11897         TFmode constants via two element DImode vector for hosts with
11898         HOST_BITS_PER_WIDE_INT < 64.
11899         (ix86_init_builtins): Define __builtin_fabsq and __builtin_copysignq
11900         also for HOST_BITS_PER_WIDE_INT < 64.
11901
11902 2008-07-01  Richard Guenther  <rguenther@suse.de>
11903
11904         PR tree-optimization/36666
11905         * tree-ssa-structalias.c (get_constraint_for_1): Declare.
11906         (get_constraint_exp_from_ssa_var): Split into ...
11907         (get_constraint_exp_for_temp): ... this ...
11908         (get_constraint_for_ssa_var): ... and that.
11909         Return constraint expressions for all touched sub-fields
11910         if the results address is not taken.
11911         (process_constraint): Remove assertion that aggregate
11912         assignments do not happen at this place.
11913         (get_constraint_for_component_ref): Add address_p argument.
11914         Return constraint expressions for all touched sub-fields
11915         if the results address is not taken.
11916         (do_deref): Use get_constraint_exp_for_temp.
11917         (get_constraint_for_1): Rename from ...
11918         (get_constraint_for): ... this.  Add the old function as wrapper.
11919         (do_structure_copy): Use get_constraint_for_1.
11920
11921 2008-07-01  Martin Jambor  <mjambor@suse.cz>
11922
11923         * Makefile.in (tree-switch-conversion.o): Add.
11924         (OBJS-common): Add tree-swtch-conversion.o.
11925         * passes.c (init_optimization_passes): Add pass_convert_switch.
11926         * tree-pass.h: (pass_convert_switch): Add.
11927         * tree-switch-conversion.c: New file.
11928         * gcc.dg/tree-ssa/cswtch.c: New testcase.
11929         * common.opt (ftree-cswtch): New option.
11930         * params.h (PARAM_SWITCH_CONVERSION_BRANCH_RATIO): New parameter.
11931         * params.def (PARAM_SWITCH_CONVERSION_BRANCH_RATIO): New parameter.
11932         * opts.c (decode_options): Set flag_tree_switch_conversion when
11933         optimization level is >= 2.
11934         * doc/invoke.texi (Optimize Options): Added description of
11935         -ftree-swtch-conversion and switch-conversion-max-branch-ratio.
11936
11937 2008-06-30  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
11938
11939         * config/darwin-driver.c (darwin_default_min_version): Fix
11940         -Wc++-compat warnings.
11941
11942 2008-06-30  Uros Bizjak  <ubizjak@gmail.com>
11943
11944         * config/i386/i386.md (*movti_rex64): Add "!" to "r" constraint
11945         of operand 0.
11946
11947 2008-06-30  Kenneth Zadeck <zadeck@naturalbridge.com>
11948
11949         * ifcvt.c (cond_move_process_if_block): Free vectors on false return.
11950
11951 2008-06-30  Kenneth Zadeck <zadeck@naturalbridge.com>
11952
11953         PR rtl-optimization/34744
11954         * df-scan.c (df_scan_free_ref_vec, df_scan_free_mws_vec): New macros.
11955         (df_scan_free_internal): Free data structures not
11956         allocated in storage pools.
11957         (df_mw_hardreg_chain_delete_eq_uses): Use df_scan_free_mws_vec.
11958         (df_refs_add_to_chains): Use df_scan_free_ref_vec and
11959         df_scan_free_mws_vec.
11960         * dse.c (dse_step6): Free offset_map_p and offset_map_n
11961         unconditionally.
11962
11963 2008-06-30  H.J. Lu  <hongjiu.lu@intel.com>
11964
11965         * config/i386/i386.c (contains_aligned_value_p): Return true
11966         for __float128.
11967         (ix86_function_arg_boundary): Return its natural boundary
11968         for __float128.
11969         (return_in_memory_32): Don't check TDmode.
11970         (ix86_split_to_parts): Support splitting into 4 parts and
11971         support TFmode for 32bit target.
11972         (ix86_split_long_move): Support splitting into 4 parts.
11973         (bdesc_args): Enable IX86_BUILTIN_FABSQ and IX86_BUILTIN_COPYSIGNQ
11974         for SSE2.
11975         (ix86_init_mmx_sse_builtins): Move __float80 and __float128 to ...
11976         (ix86_init_builtins): Here.
11977         (ix86_scalar_mode_supported_p): Always return true for TFmode.
11978         (ix86_c_mode_for_suffix): Always return TFmode and XFmode for
11979         'q' and 'w', respectively.
11980
11981         * config/i386/i386.md (movtf): Check TARGET_SSE2 instead of
11982         TARGET_64BIT.
11983         (movtf_internal): Likewise.
11984         (<code>tf2): Likewise.
11985         (*absnegtf2_sse): Likewise.
11986         (copysign<mode>3): Likewise.
11987         (copysign<mode>3_const): Likewise.
11988         (copysign<mode>3_var): Likewise.
11989         (define_split UNSPEC_COPYSIGN): Likewise.
11990         * config/i386/sse.md (*nandtf3): Likewise.
11991         (<code>tf3): Likewise.
11992         (*<code>tf3): Likewise.
11993
11994 2008-06-30  Joey Ye  <joey.ye@intel.com>
11995             H.J. Lu  <hongjiu.lu@intel.com>
11996
11997         * global.c (compute_regsets): Set frame_pointer_needed here.
11998         * reload1.c (init_elim_table): Don't set frame_pointer_needed here.
11999
12000 2008-06-30  Aaron W. LaFramboise  <aaronavay62@aaronwl.com>
12001
12002         * doc/install.texi (specific): Expand Windows build notes.
12003
12004 2008-06-30  Ira Rosen  <irar@il.ibm.com>
12005
12006         PR tree-optimization/36648
12007         * tree-vect-transform.c (vect_do_peeling_for_loop_bound): Divide
12008         number of prolog iterations by step. Fix the comment.
12009
12010 2008-06-30  Richard Guenther  <rguenther@suse.de>
12011
12012         PR middle-end/36671
12013         * tree-ssa-structalias.c (handle_lhs_call): Add flags argument,
12014         handle calls from ECF_MALLOC functions.
12015         (handle_pure_call): ECF_MALLOC functions do not return
12016         call-used memory.
12017         (find_func_aliases): Handle all calls, adjust calls to handle_lhs_call.
12018
12019 2008-06-29  Andreas Schwab  <schwab@suse.de>
12020
12021         * config/m68k/m68k.c (print_operand): Always print a float
12022         constant in hex.
12023         * config/m68k/m68k.h (ASM_OUTPUT_FLOAT_OPERAND)
12024         (ASM_OUTPUT_DOUBLE_OPERAND, ASM_OUTPUT_LONG_DOUBLE_OPERAND):
12025         Remove macros.
12026
12027         * config/rs6000/x-linux64: Remove never used file.
12028
12029 2008-06-29  Richard Guenther  <rguenther@suse.de>
12030
12031         * tree-ssa-structalias.h (compute_points_to_sets): Adjust
12032         prototype.
12033         (struct alias_info): Move ...
12034         * tree-ssa-alias.c: ... here.
12035         (update_alias_info): Declare.
12036         (compute_may_aliases): Call it.
12037         (update_alias_info): New function.
12038         * tree-ssa-structalias.c (update_alias_info): Move ...
12039         * tree-ssa-alias.c (update_alias_info_1): ... here.
12040         * tree-ssa-structalias.c (process_constraint_1): Remove
12041         unused from_call argument.  Rename to ...
12042         (process_constraint): ... this.  Delete old wrapper.
12043         (make_constraint_to): Adjust callers.
12044         (handle_const_call): Likewise.
12045         (handle_pure_call): Likewise.
12046         (init_base_vars): Likewise.
12047         (handle_lhs_call): Likewise.  Remove unnecessary constraint.
12048         (find_func_aliases): We don't need structure copies for
12049         complex types.
12050         (make_constraint_from_anything): Remove.
12051         (create_variable_info_for): For globals make constraints
12052         from escaped, not from anything.
12053         (compute_points_to_sets): Do not call update_alias_info.
12054         (ipa_pta_execute): Use make_constraint_from.
12055
12056 2008-06-29  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
12057
12058         * Makefile.in (CXX_COMPAT_WARN, cxx_compat_warn): Delete.
12059         (bitmap.o-warn, dominance.o-warn): New.
12060         * configure.ac (cxx_compat_warn): Delete.
12061         (loose_warn): Add -Wcast-qual and -Wc++-compat.
12062         * system.h: Remove #pragma diagnostic for -Wcast-qual and
12063         -Wc++-compat.
12064         * configure: Regenerate.
12065
12066         * optabs.c (libfunc_decl_hash, libfunc_decl_eq): Fix -Wcast-qual
12067         warnings.
12068
12069 2008-06-29  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
12070
12071         * alloc-pool.c (create_alloc_pool): Fix -Wc++-compat warnings.
12072         * df-scan.c (df_notes_rescan): Likewise.
12073         * ggc-page.c (set_page_table_entry): Likewise.
12074         * intl.c (gcc_gettext_width): Likewise.
12075         * varasm.c (get_unnamed_section, get_noswitch_section,
12076         get_section): Likewise.
12077
12078 2008-06-28  Andrew Jenner  <andrew@codesourcery.com>
12079
12080         * regrename.c (build_def_use): Don't copy RTX.
12081
12082 2008-06-28  Sandra Loosemore  <sandra@codesourcery.com>
12083
12084         * doc/extend.texi (Variable Attributes): Use @ref instead of @xref.
12085         (Type Attributes): Fix nesting of @table and @subsection.  Adjust
12086         punctuation.  Use @ref instead of @xref.
12087         (Function Names): Remove stray @display/@end display.
12088         (C++ Attributes): Use @ref instead of @xref.
12089         (Deprecated Features): Fix punctuation around @xref.
12090         (Backwards Compatibility): Likewise.
12091         * doc/rtl.texi (Incdec): Remove stray @table/@end table.
12092
12093 2008-06-28  Joseph Myers  <joseph@codesourcery.com>
12094
12095         * config/rs6000/predicates.md (easy_fp_constant): Reject TFmode
12096         constants for E500 double.
12097
12098 2008-06-28  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
12099
12100         * doc/rtl.texi (const_vector): Document const_fixed as legitimate
12101         element type of const_vector.
12102
12103 2008-06-28  Uros Bizjak  <ubizjak@gmail.com>
12104
12105         * config/i386/i386.md (addti3, adddi3, addsi3, addhi3, addqi3):
12106         Remove FLAGS_REG clobber from expander pattern.
12107         (subti3, subdi3, subsi3, subhi3, subqi3): Ditto.
12108         (anddi3, andsi3, andhi3, andqi3): Ditto.
12109         (iordi3, iorsi3, iorhi3, iorqi3): Ditto.
12110         (xordi3, xorsi3, xorhi3, xorqi3): Ditto.
12111         (negti2, negdi2, negsi2, neghi2, negqi2): Ditto.
12112         (ashlsi3, ashlhi3, ashlqi3): Ditto.
12113         (ashrsi3, ashrhi3, ashrqi3): Ditto.
12114         (lshrsi3, lshrhi3, lshrqi3): Ditto.
12115         (rotldi3, rotlsi3, rotlhi3, rotlqi3): Ditto.
12116         (rotrdi3, rotrsi3, rotrhi3, rotrqi3): Ditto.
12117
12118 2008-06-28  Richard Guenther  <rguenther@suse.de>
12119
12120         * tree-ssa-structalias.c (callused_id, var_callused,
12121         callused_tree): Add.
12122         (handle_pure_call): New function.
12123         (find_func_aliases): Call it.
12124         (find_what_p_points_to): Handle the call-used set.
12125         (clobber_what_escaped): Likewise.
12126         (compute_call_used_vars): New function.
12127         (init_base_vars): Init the call-used variable.
12128         (do_sd_constraint): Do not propagate the solution from CALLUSED
12129         but use CALLUSED as a placeholder.
12130         (solve_graph): Likewise.
12131         * tree-flow-inline.h (gimple_call_used_vars): New function.
12132         * tree-flow.h (struct gimple_df): Add call_used_vars bitmap.
12133         (compute_call_used_vars): Declare.
12134         * tree-ssa-alias.c (set_initial_properties): Call
12135         compute_call_used_vars.
12136         (reset_alias_info): Clear call-used variables.
12137         (add_call_clobber_ops): Assert we are not called for const/pure
12138         functions.  Remove handling of them.
12139         (add_call_read_ops): Handle pure functions by adding the
12140         call-used set of variables as VUSEs.
12141         * tree-ssa.c (init_tree_ssa): Allocate call-used bitmap.
12142         (delete_tree_ssa): Free it.
12143         * tree-dfa.c (remove_referenced_var): Clear the var from the
12144         call-used bitmap.
12145
12146 2008-06-28  Kai Tietz  <kai.tietz@onevision.com>
12147
12148         * tree.c (build_varargs_function_type_list): New.
12149         (build_function_type_list_1): New.
12150         (build_function_type_list): Use build_function_type_list_1.
12151         * tree.h (build_varargs_function_type_list): New.
12152
12153 2008-06-28  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
12154
12155         PR target/34856
12156         * config/spu/spu.c (spu_builtin_splats): Do not generate
12157         invalid CONST_VECTOR expressions.
12158         (spu_expand_vector_init): Likewise.
12159
12160 2008-06-28  Richard Sandiford  <rdsandiford@googlemail.com>
12161
12162         * optabs.c (libfunc_decls): New variable.
12163         (libfunc_decl_hash, libfunc_decl_eq): New functions.
12164         (init_one_libfunc): Reuse decls and SYMBOL_REFs when asked
12165         for the same function twice.
12166
12167 2008-06-27  Uros Bizjak  <ubizjak@gmail.com>
12168
12169         * config/i386/i386.md (ashlti3, ashrti3, lshrti3): Expand using
12170         ix86_expand_binary_operator directly.
12171         (*ashlti3_1): Rename from ashlti3_1.  Use nonmemory_operand predicate
12172         for operand 2.
12173         (*ashrti3_1): Ditto.
12174         (*lshrti3_1): Ditto.
12175         (*ashlti3_2, *ashrti3_2, *lshrti3_2): Remove insn patterns.
12176         (ashlti, ashrti and lshrti splitters): Handle nonmemory operand 2
12177         using only one splitter.  Conditionaly execute splitter before or
12178         after peephole2 pass.
12179         (ashlti, ashrti and lshrti peephole2): Define peephole2 patterns.
12180         (x86_shld): Rename from x86_shld_1.  Compress operand 2 constraints.
12181         Use only one alternative in asm template.
12182         (x86_64_shld): Compress operand 2 constraints. Use only one alternative
12183         in asm template.
12184         (*ashldi3_cmp_rex64): Use const_1_to_63_operand operand predicate and
12185         "J" operand constraint for operand 2.
12186         (*ashldi3_cconly_rex64): Ditto.
12187         (*ashrdi3_cmp_rex64): Ditto.
12188         (*ashrdi3_cconly_rex64): Ditto.
12189         (*lshrdi3_cmp_rex64): Ditto.
12190         (*lshrdi3_cconly_rex64): Ditto.
12191         * config/i386/predicates.md (const_1_to_63_operand): New predicate.
12192         * config/i386/i386.md (print_operand) ['s']: Print ", " using fputs.
12193         (split_ashr, split_ashl, split_lshr): Use gen_x86_shrd instead of
12194         gen_x86_shrd_1.
12195
12196 2008-06-27  Jakub Jelinek  <jakub@redhat.com>
12197
12198         * gimplify.c (omp_is_private): Don't return true if decl is not
12199         already private on #pragma omp for or #pragma omp parallel for.
12200
12201         PR debug/36617
12202         * tree-cfg.c (struct move_stmt_d): Replace block field with
12203         orig_block and new_block fields.
12204         (move_stmt_r): Only set TREE_BLOCK to p->new_block if
12205         if it used to be NULL, p->orig_block or if p->orig_block is NULL.
12206         (move_block_to_fn): Replace vars_map and new_label_map arguments
12207         with struct move_stmt_d pointer.
12208         (replace_block_vars_by_duplicates): New function.
12209         (move_sese_region_to_fn): Add ORIG_BLOCK argument.  Adjust
12210         move_block_to_fn caller.  If ORIG_BLOCK is non-NULL, move over
12211         all subblocks of ORIG_BLOCK to the new function.  Call
12212         replace_block_vars_by_duplicates.
12213         * tree-flow.h (move_sese_region_to_fn): Adjust prototype.
12214         * omp-low.c (expand_omp_taskreg): Set TREE_USED on DECL_INITIAL
12215         BLOCK of the new function.  Adjust move_sese_region_to_fn caller.
12216         Prune vars with original DECL_CONTEXT from child_cfun->local_decls.
12217         (expand_omp): Temporarily set input_location to the location of
12218         region's controlling stmt.
12219         (lower_omp_sections, lower_omp_for): Add a BLOCK into outermost
12220         BIND_EXPR, push ctx->block_vars and gimplification vars into
12221         the BIND_EXPR and its block's BLOCK_VARS instead of directly
12222         into dest function.
12223         (lower_omp_single): Set TREE_USED on the BIND_EXPR's BLOCK if
12224         there are any BLOCK_VARS.
12225         (lower_omp_taskreg): Set BLOCK on a BIND_EXPR containing the
12226         OMP_PARALLEL or OMP_TASK stmt.
12227         (lower_omp): Save and restore input_location around the lower_omp_1
12228         call.
12229
12230 2008-06-27  Richard Guenther  <rguenther@suse.de>
12231
12232         PR tree-optimization/36400
12233         PR tree-optimization/36373
12234         PR tree-optimization/36344
12235         * tree-ssa-structalias.c (var_escaped, escaped_tree, escaped_id,
12236         var_nonlocal, nonlocal_tree, nonlocal_id): New globals
12237         (update_alias_info): Remove call clobbering code.
12238         (make_constraint_to): New helper function.
12239         (make_escape_constraint): Likewise.
12240         (handle_rhs_call): Use it on all pointer containing arguments.
12241         Also mark the static chain escaped.
12242         (handle_lhs_call): Make constraints from NONLOCAL and ESCAPED
12243         instead of ANYTHING.
12244         (make_constraint_from): New helper split out from ...
12245         (make_constraint_from_anything): ... here.
12246         (find_func_aliases): Add constraints for escape sites.
12247         (intra_create_variable_infos): Make constraints from NONLOCAL
12248         for parameters.
12249         (find_what_p_points_to): Interpret NONLOCAL and ESCAPED the same
12250         as ANYTHING.
12251         (clobber_what_p_points_to): Remove.
12252         (clobber_what_escaped): New function.
12253         (init_base_vars): Init NONLOCAL and ESCAPED.
12254         (do_sd_constraint): Do not propagate the solution from ESCAPED
12255         but use ESCAPED as a placeholder.
12256         (solve_graph): Likewise.
12257         * tree-flow.h (clobber_what_p_points_to): Remove.
12258         (clobber_what_escaped): Declare.
12259         * tree-ssa-alias.c (set_initial_properties): Call it.
12260         Remove code clobbering escaped pointers.
12261
12262 2008-06-27  Richard Sandiford  <rdsandiford@googlemail.com>
12263
12264         * function.c (allocate_struct_function): Only allocate a unique
12265         funcdef_no if the decl is nonzero.
12266
12267 2008-06-27  Richard Sandiford  <rdsandiford@googlemail.com>
12268
12269         * config/mips/mips-protos.h (mips_split_const_insns): Declare.
12270         * config/mips/mips.c (mips_split_const_insns): New function.
12271         * config/mips/mips.md (move_type): New attribute.
12272         (mode): Move attribute definition earlier in file.  Add "TI" and "TF".
12273         (dword_mode): New attribute.
12274         (type): Avoid long line.  Map "move_type"s to "type"s,
12275         choosing "multi" for doubleword moves if appropriate.
12276         Swap MTC/MFC comments to match their declaration order.
12277         (extended_mips16): Default to "yes" if "move_type" is "sll0",
12278         "type" is "branch" or "jal" is "direct".
12279         (length): Handle "extended_mips16" first.  Make the default
12280         "0" for "ghost" instructions.  Set the length from "move_type".
12281         (truncdisi2, truncdihi2, truncdiqi2): Use "move_type" instead
12282         of "type", with "sll0" for the register alternative.  Remove the
12283         "extended_mips16" attribute.
12284         (zero_extendsidi2, *clear_upper32): Use "move_type" instead
12285         of "type", with "shift_shift" for the register alternative.
12286         Remove the "length" attribute.
12287         (*extend<SHORT:mode><GPR:mode>2, *extendqihi2): Likewise.
12288         (*zero_extend<SHORT:mode><GPR:mode>2): Use "move_type" instead
12289         of "type", with "andi" for the register alternative.
12290         (*zero_extendqihi2): Likewise.
12291         (*zero_extend<SHORT:mode><GPR:mode>2_mips16e): Use a "move_type"
12292         of "andi" instead of a "type" of "arith".
12293         (*zero_extend<SHORT:mode><GPR:mode>2_mips16): Use "move_type"
12294         instead of "type".
12295         (*zero_extendqihi2_mips16, mov_<load>l, mov_<load>r, mov_<store>l)
12296         (mov_<store>r, *mov<mode>_ra): Likewise.
12297         (extendsidi2): Use "move_type" instead of "type", with "move"
12298         for the register alternative.
12299         (*extend<SHORT:mode><GPR:mode>2_mips16e): Use "move_type" instead
12300         of "type", with "signext" for the register alternative.
12301         (*extend<SHORT:mode><GPR:mode>2_se<SHORT:size>): Likewise.
12302         (*extendqihi2_mips16e, *extendqihi2_seb): Likewise.
12303         (fix_truncdfsi2_insn, fix_truncsfsi2_insn, fix_truncdfdi2)
12304         (fix_truncsfdi2, floatsidf2, floatdidf2, floatsisf2, floatdisf2)
12305         (floatdisf2, *branch_equality<mode>_mips16): Likewise.
12306         (unnamed branch insn): Likewise.
12307         (*movdi_gp32_fp64): Fold into...
12308         (*movdi_32bit): ...here.
12309         (*movdf_hardfloat_64bit, *movdf_hardfloat_32bit): Combine into...
12310         (*movdf_hardfloat): ...this new pattern.
12311         (*movdf_softfloat): Remove redundant FPR alternatives.
12312         (*movti, *movti_mips16, *movtf, *movtf_mips16): Add "mode" attributes.
12313         (*movv2sf_hardfloat_64bit, *movv2sf_hardfloat_32bit): Combine into...
12314         (*movv2sf): ...this new pattern.  Use "DF" rather than "SF" for
12315         the "move" attribute.
12316         (*movdi_32bit): Use "move_type" instead of "type" and remove the
12317         "length" attribute.  Use "fpload" and "fpstore" instead of "load"
12318         and "store" for COP loads and stores.
12319         (*movdi_32bit_mips16, *movdi_64bit, *movsi_internal, movcc)
12320         (*movhi_internal, *movhi_mips16, *movqi_internal, *movqi_mips16)
12321         (*movsf_hardfloat, *movsf_softfloat, *movsi_mips16, *movdf_hardfloat)
12322         (*movdf_softfloat, *movdf_mips16, *movti, *movti_mips16, *movtf)
12323         (*movtf_mips16, *movv2sf): Likewise.
12324         (mfhi<GPR:mode>_<HILO:mode>, mflo<GPR:mode>_<HILO:mode>)
12325         (load_low<mode>, load_high<mode>, store_word<mode>, mthc1<mode>)
12326         (mfhc1<mode>): Use "move_type" instead of "move".
12327         (*low<mode>_mips16): Use "extended_mips16" instead of "length".
12328         (loadgp_blockage): Remove the "length" attribute.
12329         (blockage, set_got_version, update_got_version): Likewise.
12330         (call_internal): Remove the "extended_mips16" attribute.
12331         (call_value_internal, call_value_multiple_internal): Likewise.
12332         * config/mips/loongson.md (mov<mode>_internal): Use "move_type"
12333         instead of "move".
12334         * config/mips/mips-dsp.md (mips_lbux, mips_lhx, mips_lwx): Remove
12335         the "length" attribute.
12336
12337 2008-06-27  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
12338
12339         * c-format.c (handle_format_attribute): Fix -Wc++-compat and/or
12340         -Wcast-qual warnings.
12341         * c-pragma.c (dpm_eq, handle_pragma_push_macro,
12342         handle_pragma_pop_macro): Likewise.
12343         * collect2.c (resolve_lib_name): Likewise.
12344         * config/arc/arc.c (arc_init): Likewise.
12345         * config/arm/arm.c (neon_builtin_compare,
12346         locate_neon_builtin_icode): Likewise.
12347         * config/arm/pe.c (arm_mark_dllexport, arm_pe_unique_section): Likewise.
12348         * config/bfin/bfin.c (bfin_init_machine_status,
12349         bfin_optimize_loop): Likewise.
12350         * config/bfin/bfin.h (TARGET_CPU_CPP_BUILTINS): Likewise.
12351         * config/cris/cris.c (cris_init_expanders): Likewise.
12352         * config/darwin-c.c (frameworks_in_use, add_framework): Likewise.
12353         * config/darwin.c (machopic_indirection_eq,
12354         machopic_indirection_name, machopic_output_indirection): Likewise.
12355         * config/frv/frv.c (frv_init_machine_status, frv_compare_insns,
12356         frv_io_check_address, frv_io_handle_set, frv_io_handle_use_1,
12357         frv_optimize_membar): Likewise.
12358         * config/i386/cygwin.h (mingw_scan,
12359         GCC_DRIVER_HOST_INITIALIZATION): Likewise.
12360         * config/i386/cygwin1.c (mingw_scan): Likewise.
12361         * config/i386/i386.c (machopic_output_stub): Likewise.
12362         * config/i386/winnt.c (gen_stdcall_or_fastcall_suffix,
12363         i386_pe_unique_section): Likewise.
12364         * config/ia64/ia64.c (ia64_init_machine_status,
12365         ia64_h_i_d_extended, get_free_bundle_state, bundling, ia64_reorg):
12366         Likewise.
12367         * config/iq2000/iq2000.c, iq2000_init_machine_status): Likewise.
12368         * config/m68hc11/m68hc11.c (m68hc11_encode_label): Likewise.
12369         * config/m68k/m68k.c (m68k_handle_option,
12370         m68k_sched_md_init_global): Likewise.
12371         * config/mcore/mcore.c (mcore_mark_dllexport, mcore_mark_dllimport,
12372         mcore_unique_section): Likewise.
12373         * config/mips/mips.c (mips_block_move_straight,
12374         mips16_rewrite_pool_refs, mips_sim_wait_regs_2, mips_sim_record_set):
12375         Likewise.
12376         * config/mmix/mmix.c (mmix_init_machine_status,
12377         mmix_encode_section_info): Likewise.
12378         * config/pa/pa.c (pa_init_machine_status, hppa_encode_label): Likewise.
12379         * config/rs6000/rs6000.c (rs6000_init_machine_status,
12380         print_operand_address, output_toc, redefine_groups,
12381         rs6000_elf_encode_section_info, machopic_output_stub): Likewise.
12382         * config/s390/s390.c (s390_init_machine_status): Likewise.
12383         * config/score/score.c (score_block_move_straight,
12384         score_block_move_loop_body): Likewise.
12385         * config/sparc/sparc.c (sparc_init_machine_status): Likewise.
12386         * config/xtensa/xtensa.c (xtensa_init_machine_status): Likewise.
12387         * emit-rtl.c (find_auto_inc): Likewise.
12388         * gcc.c (translate_options, process_command): Likewise.
12389         * reorg.c (dbr_schedule): Likewise.
12390         * sdbout.c (sdbout_start_source_file, sdbout_init): Likewise.
12391         * xcoffout.c (xcoffout_declare_function): Likewise.
12392
12393 2008-06-27  Daniel Berlin  <dberlin@dberlin.org>
12394
12395         * tree-ssa-structalias.c (find_func_aliases): Trivial fix to get
12396         ipa-pta working again.
12397
12398 2008-06-27  David Edelsohn  <edelsohn@gnu.org>
12399
12400         * config/rs6000/t-aix52: Append large data option to LDFLAGS for
12401         genautomata.
12402
12403 2008-06-27  Edmar Wienskoski  <edmar@freescale.com>
12404
12405         * config.gcc (powerpc*-*-*): Add new core e500mc.
12406         * config/rs6000/e500mc.md: New file.
12407         * config/rs6000/rs6000.c (processor_costs): Add new costs for
12408         e500mc.
12409         (rs6000_override_options): Add e500mc case to
12410         processor_target_table. Altivec and Spe options not allowed
12411         with e500mc. Add isel instruction to e500mc by
12412         default. Initialize rs6000_cost for e500mc.
12413         (rs6000_issue_rate): Set issue rate for e500mc.
12414         * config/rs6000/rs6000.h (processor_type): Add
12415         PROCESSOR_PPCE500MC.
12416         (ASM_CPU_SPEC): Add e500mc.
12417         Set TARGET_ISEL to rs6000_isel.
12418         * config/rs6000/e500.h: Remove redefinition of TARGET_ISEL.
12419         (CHECK_E500_OPTIONS): Remove TARGET_ISEL.
12420         * config/rs6000/rs6000.md (define_attr "cpu"): Add ppce500mc.
12421         Include e500mc.md.
12422         * doc/invoke.texi: Add e500mc to list of cpus.
12423
12424 2008-06-27  Laurynas Biveinis  <laurynas.biveinis@gmail.com>
12425
12426         PR c/34867
12427         * c-lex.c (lex_charconst): Initialize unsignedp.
12428
12429 2008-06-27  Olivier Hainque  <hainque@adacore.com>
12430
12431         * gimplify.c (gimplify_modify_expr_to_memset): Assert our
12432         documented assumptions.
12433
12434 2008-06-26  H.J. Lu  <hongjiu.lu@intel.com>
12435
12436         * dwarf2out.c: Remove trailing white spaces.  Break long line
12437         in comments.
12438
12439 2008-06-26  Richard Sandiford  <rdsandiford@googlemail.com>
12440
12441         * libfuncs.h (LTI_synchronize): New libfunc_index.
12442         (synchronize_libfunc): Declare.
12443         * builtins.c (expand_builtin_synchronize): Consider using
12444         synchronize_libfunc before falling back on an asm blockage.
12445         * config/mips/mips.c: Include libfuncs.h
12446         (mips_init_libfuncs): Initialize synchronize_libfunc for TARGET_MIPS16.
12447
12448 2008-06-26  Nathan Froyd  <froydnj@codesourcery.com>
12449
12450         * config/rs6000/rs6000.c (emit_allocate_stack): Add copy_r11
12451         parameter.  Copy stack_reg to r11 where appropriate.
12452         (no_global_regs_above): Add gpr parameter.
12453         (rs6000_stack_info): Only add padding for SPE save area if we
12454         are saving SPE GPRs and CR.
12455         (saveres_routine_syms): New variable.
12456         (FIRST_SAVRES_REGISTER, LAST_SAVRES_REGISTER, N_SAVRES_REGISTERS):
12457         Define.
12458         (rs6000_savres_routine_sym): New function.
12459         (rs6000_emit_stack_reset, rs6000_restore_saved_cr): New functions,
12460         split out of...
12461         (rs6000_emit_epilogue): ...here.  Use rs6000_use_multiple_p and
12462         rs6000_savres_strategy.  Restore GPRs out-of-line if appropriate.
12463         Tweak FPR out-of-line saving.
12464         (rs6000_make_savres_rtx): New function.
12465         (rs6000_use_multiple_p): New function.
12466         (rs6000_savres_strategy): New function.
12467         (rs6000_emit_prologue): Use rs6000_savres_strategy.  Save GPRs
12468         out-of-line if appropriate.
12469         * config/rs6000/sysv4.h (FP_SAVE_INLINE): Save FPRs out-of-line
12470         if we are optimizing for size.
12471         (GP_SAVE_INLINE): Define.
12472         (SAVE_FP_SUFFIX, RESTORE_FP_SUFFIX): Only use _l on 64-bit targets.
12473         * config/rs6000/darwin.h (GP_SAVE_INLINE): Define.
12474         * config/rs6000/aix.h (GP_SAVE_INLINE): Define.
12475         * config/rs6000/rs6000.md (*save_gpregs_<mode>): New insn.
12476         (*save_fpregs_<mode>): Add use of r11.
12477         (*restore_gpregs_<mode>): New insn.
12478         (*return_and_restore_gpregs_<mode>): New insn.
12479         (*return_and_restore_fpregs_<mode>): Adjust to clobber LR and
12480         use r11.
12481         * config/rs6000/spe.md (*save_gpregs_spe): New insn.
12482         (*restore_gpregs_spe): New insn.
12483         (*return_and_restore_gpregs_spe): New insn.
12484         * config/rs6000/predicates.md (save_world_operation): Fix check.
12485
12486 2008-06-26  Steven Bosscher  <steven@gcc.gnu.org>
12487
12488         * tree-into-ssa (insert_phi_nodes_for): 'var' must be a DECL at
12489         this point, so assert that.
12490
12491 2008-06-26  Steven Bosscher  <steven@gcc.gnu.org>
12492
12493         * cfganal.c: Include vec.h and vecprim.h.
12494         (compute_idf): Import from...
12495         * tree-into-ssa (compute_idf): ...here.
12496         * basic-block.h (compute_idf): Export.
12497
12498 2008-06-26  Joseph Myers  <joseph@codesourcery.com>
12499
12500         * c-decl.c (merge_decls): Use !current_function_decl to check for
12501         extern declaration of C99 inline function being at file scope.
12502
12503 2008-06-25  John David Anglin  <dave.anglin@gcc-cnrc.gc.ca>
12504
12505         * config.gcc (hppa[12]*-*-hpux10*): Don't use fixproto.
12506
12507 2008-06-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
12508
12509         * alias.c (record_alias_subset, init_alias_analysis): Fix
12510         -Wc++-compat and/or -Wcast-qual warnings.
12511         * attribs.c (lookup_attribute_spec): Likewise.
12512         * bb-reorder.c (find_traces, rotate_loop, find_traces_1_round,
12513         copy_bb, connect_traces,
12514         find_rarely_executed_basic_blocks_and_cr): Likewise.
12515         * bt-load.c (find_btr_def_group, add_btr_def, new_btr_user,
12516         note_btr_set, migrate_btr_defs): Likewise.
12517         * builtins.c (result_vector, expand_builtin_memcpy,
12518         expand_builtin_mempcpy_args, expand_builtin_strncpy,
12519         builtin_memset_read_str, expand_builtin_printf,
12520         fold_builtin_memchr, rewrite_call_expr, fold_builtin_printf):
12521         Likewise.
12522         * caller-save.c (mark_set_regs): Likewise.
12523         * calls.c (expand_call, emit_library_call_value_1): Likewise.
12524         * cgraph.c (cgraph_edge): Likewise.
12525         * combine.c (likely_spilled_retval_1): Likewise.
12526         * coverage.c (htab_counts_entry_hash, htab_counts_entry_eq,
12527         htab_counts_entry_del, get_coverage_counts): Likewise.
12528         * cselib.c (new_elt_list, new_elt_loc_list, entry_and_rtx_equal_p,
12529         new_cselib_val): Likewise.
12530         * dbgcnt.c (dbg_cnt_process_opt): Likewise.
12531         * dbxout.c (dbxout_init, dbxout_type, output_used_types_helper):
12532         Likewise.
12533         * df-core.c (df_compact_blocks): Likewise.
12534         * df-problems.c (df_grow_bb_info, df_chain_create): Likewise.
12535         * df-scan.c (df_grow_reg_info, df_ref_create,
12536         df_insn_create_insn_record, df_insn_rescan, df_notes_rescan,
12537         df_ref_compare, df_ref_create_structure, df_bb_refs_record,
12538         df_record_entry_block_defs, df_record_exit_block_uses,
12539         df_bb_verify): Likewise.
12540         * df.h (DF_REF_EXTRACT_WIDTH_CONST, DF_REF_EXTRACT_OFFSET_CONST,
12541         DF_REF_EXTRACT_MODE_CONST): New.
12542         * dominance.c (get_immediate_dominator, get_dominated_by,
12543         nearest_common_dominator, root_of_dom_tree,
12544         iterate_fix_dominators, first_dom_son, next_dom_son): Fix
12545         -Wc++-compat and/or -Wcast-qual warnings.
12546         * dse.c (clear_alias_set_lookup, get_group_info, gen_rtx_MEM,
12547         record_store, replace_read, check_mem_read_rtx, scan_insn,
12548         dse_step1, dse_record_singleton_alias_set): Likewise.
12549         * dwarf2asm.c (dw2_force_const_mem): Likewise.
12550
12551 2008-06-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
12552
12553         * dwarf2out.c (new_cfi, queue_reg_save, dwarf2out_begin_prologue,
12554         dwarf2out_frame_init, new_loc_descr, new_die, lookup_decl_die,
12555         lookup_decl_loc, add_var_loc_to_decl, compute_section_prefix,
12556         assign_symbol_names, htab_cu_hash, htab_cu_eq, htab_cu_del,
12557         build_abbrev_table, new_loc_list, output_comp_unit, add_arange,
12558         add_ranges_num, add_ranges_by_labels, file_info_cmp,
12559         file_name_acquire, output_file_names, add_const_value_attribute,
12560         premark_used_types_helper, file_table_eq, file_table_hash,
12561         lookup_filename, dwarf2out_var_location, dwarf2out_source_line,
12562         dwarf2out_init, file_table_relative_p): Fix -Wc++-compat and/or
12563         -Wcast-qual warnings.
12564         * ebitmap.c (ebitmap_array_grow, ebitmap_array_init,
12565         ebitmap_alloc, ebitmap_ior, ebitmap_and_compl): Likewise.
12566         * emit-rtl.c (get_mem_attrs, get_reg_attrs, gen_rtvec,
12567         gen_reg_rtx, start_sequence, init_emit): Likewise.
12568         * et-forest.c (et_new_occ, et_new_tree): Likewise.
12569         * except.c (init_eh_for_function, gen_eh_region,
12570         remove_unreachable_regions, add_ehl_entry, duplicate_eh_regions_1,
12571         arh_to_landing_pad, arh_to_label, add_action_record,
12572         add_call_site, switch_to_exception_section): Likewise.
12573         * expmed.c (synth_mult): Likewise.
12574         * expr.c (gen_group_rtx, emit_group_load, emit_group_store,
12575         store_expr): Likewise.
12576         * final.c (shorten_branches, final_scan_insn, debug_queue_symbol):
12577         Likewise.
12578         * function.c (assign_stack_temp_for_type,
12579         allocate_struct_function, match_asm_constraints_1): Likewise.
12580         * gcov-io.c (gcov_allocate): Likewise.
12581         * gcse.c (GNEW, GCNEW, GNEWVEC, GCNEWVEC, GRESIZEVEC, GNEWVAR,
12582         GCNEWVAR, GRESIZEVAR, GOBNEW, GOBNEWVAR): New.
12583         (gcse_main, alloc_gcse_mem, alloc_gcse_mem, alloc_reg_set_mem,
12584         record_one_set, insert_expr_in_table, insert_set_in_table,
12585         dump_hash_table, compute_hash_table_work, alloc_hash_table,
12586         pre_ldst_expr_hash, pre_ldst_expr_eq, find_rtx_in_ldst,
12587         reg_set_info, reg_clear_last_set): Fix -Wc++-compat and/or
12588         -Wcast-qual warnings.
12589
12590 2008-06-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
12591
12592         * cse.c (approx_reg_cost_1, cse_insn): Fix -Wc++-compat and/or
12593         -Wcast-qual warnings.
12594         * gcc.c (process_command): Likewise.
12595         * genattrtab.c (oballoc): Use XOBNEW.
12596         (oballocvec): Define.
12597         (attr_hash_add_rtx, attr_hash_add_string, attr_string,
12598         get_attr_value, fill_attr, make_length_attrs, gen_attr, gen_insn,
12599         gen_delay, find_attr, gen_insn_reserv, gen_bypass_1): Fix
12600         -Wc++-compat and/or -Wcast-qual warnings.
12601         * genautomata.c (XCREATENODE, XCREATENODEVEC, XCREATENODEVAR,
12602         XCOPYNODE, XCOPYNODEVEC, XCOPYNODEVAR): New.
12603         (gen_cpu_unit, gen_query_cpu_unit, gen_bypass, gen_excl_set,
12604         gen_presence_absence_set, gen_automaton, gen_regexp_el,
12605         gen_regexp_repeat, gen_regexp_allof, gen_regexp_oneof,
12606         gen_regexp_sequence, gen_reserv, gen_insn_reserv, process_excls,
12607         add_excls, process_presence_absence_names,
12608         process_presence_absence_patterns, add_presence_absence,
12609         process_regexp, add_advance_cycle_insn_decl, get_free_alt_state,
12610         get_free_state, add_arc, get_free_automata_list_el,
12611         form_reserv_sets_list, copy_insn_regexp, transform_1, transform_2,
12612         transform_3, cache_presence, create_ainsns, create_automata,
12613         create_state_ainsn_table, dfa_insn_code_enlarge,
12614         output_trans_func, output_min_issue_delay_func,
12615         output_dead_lock_func, output_reset_func,
12616         output_get_cpu_unit_code_func, output_dfa_start_func,
12617         expand_automata): Likewise.
12618         * genextract.c (gen_insn): Likewise.
12619         * gengtype-lex.l: Likewise.
12620         * gengtype.c (read_input_list, adjust_field_type,
12621         process_gc_options): Likewise.
12622         * genoutput.c (note_constraint): Likewise.
12623         * genpreds.c (mangle, add_constraint): Likewise.
12624         * genrecog.c (process_define_predicate, new_decision,
12625         add_to_sequence): Likewise.
12626         * gensupport.c (record_insn_name): Likewise.
12627
12628 2008-06-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
12629
12630         * config/i386/driver-i386.c (detect_caches_amd,
12631         detect_caches_intel, host_detect_local_cpu): Fix -Wc++-compat
12632         and/or -Wcast-qual warnings.
12633         *ggc-common.c (ggc_mark_roots, gt_pch_note_object,
12634         gt_pch_note_reorder, relocate_ptrs, write_pch_globals,
12635         gt_pch_save): Likewise.
12636         * ggc-page.c (push_depth, push_by_depth, alloc_anon, alloc_page,
12637         gt_ggc_m_S, clear_marks, ggc_pch_read): Likewise.
12638         * global.c (compute_regsets): Likewise.
12639         * graph.c (print_rtl_graph_with_bb, clean_graph_dump_file,
12640         finish_graph_dump_file): Likewise.
12641         * haifa-sched.c (schedule_block, extend_h_i_d, extend_ready,
12642         unlink_bb_notes): Likewise.
12643         * integrate.c (get_hard_reg_initial_val): Likewise.
12644         * ipa-prop.c (ipa_push_func_to_list): Likewise.
12645         * ipa-struct-reorg.c (gen_var_name, gen_cluster_name): Likewise.
12646         * local-alloc.c (update_equiv_regs): Likewise.
12647         * loop-invariant.c (check_invariant_table_size,
12648         hash_invariant_expr, eq_invariant_expr, find_or_insert_inv):
12649         Likewise.
12650         * loop-iv.c (check_iv_ref_table_size, analyzed_for_bivness_p,
12651         altered_reg_used, mark_altered): Likewise.
12652         * loop-unroll.c (si_info_eq, ve_info_eq, allocate_basic_variable,
12653         insert_var_expansion_initialization,
12654         combine_var_copies_in_loop_exit, apply_opt_in_copies,
12655         release_var_copies): Likewise.
12656         * matrix-reorg.c (mat_acc_phi_hash, mat_acc_phi_eq, mtt_info_eq,
12657         analyze_matrix_decl, add_allocation_site, analyze_transpose,
12658         analyze_accesses_for_phi_node, check_var_notmodified_p,
12659         check_allocation_function, find_sites_in_func,
12660         record_all_accesses_in_func, transform_access_sites,
12661         transform_allocation_sites): Likewise.
12662         * omp-low.c (new_omp_region, create_omp_child_function_name,
12663         check_omp_nesting_restrictions, check_combined_parallel,
12664         lower_omp_2, diagnose_sb_1, diagnose_sb_2): Likewise.
12665         * optabs.c (no_conflict_move_test, gen_libfunc, gen_fp_libfunc,
12666         gen_intv_fp_libfunc, gen_interclass_conv_libfunc,
12667         gen_intraclass_conv_libfunc, set_optab_libfunc, set_conv_libfunc):
12668         Likewise.
12669         * opts-common.c (prune_options): Likewise.
12670         * opts.c (add_input_filename, print_filtered_help,
12671         get_option_state): Likewise.
12672         * params.c (add_params): Likewise.
12673         * passes.c (set_pass_for_id, next_pass_1,
12674         do_per_function_toporder, pass_fini_dump_file): Likewise.
12675         * postreload.c (reload_cse_simplify_operands): Likewise.
12676         * predict.c (tree_predicted_by_p, tree_predict_edge,
12677         clear_bb_predictions, combine_predictions_for_bb): Likewise.
12678
12679 2008-06-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
12680
12681         * ra.h (add_neighbor): Fix -Wc++-compat and/or -Wcast-qual
12682         warnings.
12683         * recog.c (check_asm_operands, validate_change_1): Likewise.
12684         * reg-stack.c (check_asm_stack_operands, subst_asm_stack_regs,
12685         subst_asm_stack_regs): Likewise.
12686         * regclass.c (regclass, som_hash, som_eq, record_subregs_of_mode,
12687         cannot_change_mode_set_regs, invalid_mode_change_p): Likewise.
12688         * regmove.c (reg_is_remote_constant_p): Likewise.
12689         * regrename.c (regrename_optimize, scan_rtx_reg,
12690         kill_clobbered_value, kill_set_value, kill_autoinc_value):
12691         Likewise.
12692         * regstat.c (regstat_init_n_sets_and_refs, regstat_compute_ri,
12693         regstat_compute_calls_crossed): Likewise.
12694         * reload1.c (init_reload, new_insn_chain,
12695         has_nonexceptional_receiver, reload, copy_reloads,
12696         calculate_needs_all_insns, init_elim_table): Likewise.
12697         * rtl-factoring.c (compute_rtx_cost, fill_hash_bucket): Likewise.
12698         * rtl.c (shallow_copy_rtx_stat): Likewise.
12699         * rtlanal.c (parms_set): Likewise.
12700         * sbitmap.c (sbitmap_alloc, sbitmap_alloc_with_popcount,
12701         sbitmap_resize, sbitmap_vector_alloc): Likewise.
12702         * sched-ebb.c (earliest_block_with_similiar_load,
12703         add_deps_for_risky_insns): Likewise.
12704         * sched-rgn.c (find_rgns, gather_region_statistics, extend_rgns,
12705         schedule_region): Likewise.
12706         * see.c (eq_descriptor_pre_extension,
12707         hash_descriptor_pre_extension, hash_del_pre_extension,
12708         eq_descriptor_properties, hash_descriptor_properties,
12709         hash_del_properties, see_seek_pre_extension_expr,
12710         see_initialize_data_structures, see_print_register_properties,
12711         see_print_pre_extension_expr, see_delete_merged_def_extension,
12712         see_delete_unmerged_def_extension, see_emit_use_extension,
12713         see_pre_delete_extension, see_map_extension, see_commit_changes,
12714         see_analyze_merged_def_local_prop,
12715         see_analyze_merged_def_local_prop,
12716         see_analyze_unmerged_def_local_prop, see_analyze_use_local_prop,
12717         see_set_prop_merged_def, see_set_prop_unmerged_def,
12718         see_set_prop_unmerged_use, see_print_one_extension,
12719         see_merge_one_use_extension, see_merge_one_def_extension,
12720         see_store_reference_and_extension, see_update_uses_relevancy,
12721         see_update_defs_relevancy): Likewise.
12722         * statistics.c (hash_statistics_hash, hash_statistics_eq,
12723         hash_statistics_free, curr_statistics_hash): Likewise.
12724         * stmt.c (parse_output_constraint, decl_overlaps_hard_reg_set_p,
12725         expand_asm_operands, expand_return, case_bit_test_cmp,
12726         expand_case): Likewise.
12727         * stor-layout.c (start_record_layout): Likewise.
12728         * stringpool.c (ggc_alloc_string, gt_pch_n_S,
12729         gt_pch_save_stringpool): Likewise.
12730         * tree-data-ref.c (hash_stmt_vertex_info,
12731         have_similar_memory_accesses_1, ref_base_address_1): Likewise.
12732         * tree-ssa-phiopt.c (name_to_bb_hash): Likewise.
12733
12734 2008-06-25  Uros Bizjak  <ubizjak@gmail.com>
12735
12736         PR target/36627
12737         * config/i386/i386.md : Change constraints of HImode and QImode
12738         immediate operands from "i" to "n".  Change SImode "ni" constraint to
12739         "i" and SImode "rmi" constraint to "g".  Remove all constraints
12740         from const0_operand and const1_operand predicated operands.
12741         (i): Change QImode and HImode attribute from "i" to "n".
12742         (*subqi_2): Change HImode operands to QImode.
12743         (*subqi_3): Ditto.
12744
12745 2008-06-25  Olivier Hainque  <hainque@adacore.com>
12746
12747         * Makefile.in (GTFILES_H): Use | instead of ; as separator in
12748         sed substitutions.
12749
12750 2008-06-25  Richard Guenther  <rguenther@suse.de>
12751
12752         * tree-ssa-structalias.c (fieldoff_compare): Make sure to
12753         not overflow the result type.
12754
12755 2008-06-25  Richard Guenther  <rguenther@suse.de>
12756
12757         * tree-vn.c (vn_add): Handle TRUTH_*_EXPR.
12758         (vn_lookup): Likewise.
12759
12760 2008-06-25  Richard Guenther  <rguenther@suse.de>
12761
12762         PR tree-optimization/35518
12763         * fold-const.c (fold_ternary): Strip trivial BIT_FIELD_REFs.
12764         * tree-sra.c (instantiate_element): Use fold_build3 to build
12765         BIT_FIELD_REFs.
12766         (try_instantiate_multiple_fields): Likewise.
12767
12768 2008-06-24  Andrew Pinski  <andrew_pinski@playstation.sony.com>
12769
12770         * config/rs6000/rs6000.md: Change all string instruction's clobber to
12771         be early clobbers.
12772
12773 2008-06-24  Andrew Pinski  <andrew_pinski@playstation.sony.com>
12774
12775         * config/rs6000/rs6000.c (rs6000_emit_epilogue): Set
12776         use_backchain_to_restore_sp to true
12777         if the offset of the link register save area would go over the 32k - 1
12778         offset limit of the load
12779         instructions.
12780
12781 2008-06-25  Hans-Peter Nilsson  <hp@axis.com>
12782
12783         * doc/invoke.texi (Optimize Options) <fstrict-aliasing>: Add
12784         anchor for the type-punning blurb.  Cross-reference "Structures
12785         unions enumerations and bit-fields implementation".  Provide a
12786         cast-through-pointer example.  Make final sentence self-contained.
12787         * doc/implement-c.texi (Structures unions enumerations and
12788         bit-fields implementation): Cross-reference the type-punning blurb
12789         in the -fstrict-aliasing documentation.
12790
12791 2008-06-24  Andrew Pinski  <andrew_pinski@playstation.sony.com>
12792
12793         PR middle-end/36594
12794         * builtins.c (expand_builtin_nonlocal_goto): Stabilize the address of
12795         the memory instead of the memory itself for the save area.
12796
12797 2008-06-24  Olivier Hainque  <hainque@adacore.com>
12798             Nicolas Roche  <roche@adacore.com>
12799
12800         * gengtype.c (srcdir_len): size_t instead of int.
12801         (get_file_realbasename): New function.  For F a filename, the real
12802         basename of F, with all the path components stripped.
12803         (get_file_srcdir_relative_path): New function.  For F a filename, the
12804         relative path to F from $(srcdir).
12805         (get_file_basename): Rewrite using get_file_srcdir_relative_path and
12806         get_file_realbasename.  Adjust the head comment.
12807         (get_prefix_langdir_index): New function. For F a filename, return the
12808         lang_dir_names[] relative index of the language directory that is
12809         a prefix in F.
12810         (get_file_langdir): For F a filename, return the name of the language
12811         directory where F is located.
12812         (get_file_gtfilename): New function. The gt- output file name for an
12813         input filename F.
12814         (get_output_file_with_visibility): Replace in-line computations with
12815         uses of get_file_gtfilename and get_prefix_langdir_index.
12816         * Makefile.in (GTFILES_H): Adjust to match what gengtype generates.
12817
12818 2008-06-24  Jakub Jelinek  <jakub@redhat.com>
12819
12820         PR tree-optimization/36504
12821         * tree-ssa-loop-prefetch.c (gather_memory_references_ref): Skip
12822         references without base address.
12823
12824 2008-06-23  Uros Bizjak  <ubizjak@gmail.com>
12825
12826         PR middle-end/36584
12827         * calls.c (expand_call): Increase alignment for recursive functions.
12828
12829 2008-06-23  Anatoly Sokolov  <aesok@post.ru>
12830
12831         * config/avr/avr.c (avr_function_value): Add new 'outgoing' argument.
12832         (TARGET_FUNCTION_VALUE): New define.
12833         * config/avr/avr-protos.h (avr_function_value): Remove declaration.
12834         * config/avr/avr.h (FUNCTION_VALUE): Remove.
12835
12836 2008-06-23  Uros Bizjak  <ubizjak@gmail.com>
12837
12838         * config/i386/i386.md (fmodxf3): Change sequence of move instructions.
12839         (fmod<mode>3): Ditto.
12840         (remainderxf3): Ditto.
12841         (remainder<mode>3): Ditto.
12842
12843 2008-06-23  Jakub Jelinek  <jakub@redhat.com>
12844
12845         PR target/36533
12846         * emit-rtl.c (set_reg_attrs_from_value): Do nothing if
12847         REG is a hard register.
12848
12849         PR tree-optimization/36508
12850         * tree-ssa-pre.c (compute_antic): Allow num_iterations up to
12851         499, don't check it at all in release compilers.
12852
12853 2008-06-23  Uros Bizjak  <ubizjak@gmail.com>
12854
12855         * config/i386/i386.md (*fop_<mode>_1_i387): Use SSE_FLOAT_MODE_P
12856         together with SSE_TARGET_MATH to disable insn pattern.
12857         (*fop_<MODEF:mode>_2_i387): Ditto.
12858         (*fop_<MODEF:mode>_3_i387): Ditto.
12859
12860 2008-06-22  Andy Hutchinson  <hutchinsonandy@aim.com>
12861
12862         * config/avr/avr.h (SUPPORTS_INIT_PRIORITY): Define.
12863
12864 2008-06-22  Laurynas Biveinis  <laurynas.biveinis@gmail.com>
12865
12866         PR middle-end/34906
12867         * gimplify.c (gimplify_asm_expr): Check the return code of
12868         parse_output_constraint call, set function return and is_inout
12869         value if it failed.
12870
12871 2008-06-22  Ian Lance Taylor  <iant@google.com>
12872
12873         * c-lex.c (narrowest_unsigned_type): Change itk to int.
12874         (narrowest_signed_type): Likewise.
12875         * c-typeck.c (c_common_type): Change local variable mclass to enum
12876         mode_class, twice.
12877         (parser_build_binary_op): Compare the TREE_CODE_CLASS with
12878         tcc_comparison, not the tree code itself.
12879         * c-common.c (def_fn_type): Pass int, not an enum, to va_arg.
12880         (c_expand_expr): Cast modifier to enum expand_modifier.
12881         * c-common.h (C_RID_CODE): Add casts.
12882         (C_SET_RID_CODE): Define.
12883         * c-parser.c (c_parse_init): Use C_SET_RID_CODE.
12884         (c_lex_one_token): Add cast to avoid warning.
12885         (c_parser_objc_type_name): Rename local typename to type_name.
12886         (check_no_duplicate_clause): Change code parameter to enum
12887         omp_clause_code.
12888         (c_parser_omp_var_list_parens): Change kind parameter to enum
12889         omp_clause_code.
12890         (c_parser_omp_flush): Pass OMP_CLAUSE_ERROR, not 0, to
12891         c_parser_omp_list_var_parens.
12892         (c_parser_omp_threadprivate): Likewise.
12893         * cp/lex.c (init_reswords): Use C_SET_RID_CODE.
12894         * cp/parser.c (cp_lexer_get_preprocessor_token): Likewise.
12895         * c-format.c (NO_FMT): Define.
12896         (printf_length_specs): Use NO_FMT.
12897         (asm_fprintf_length_specs): Likewise.
12898         (gcc_diag_length_specs): Likewise.
12899         (scanf_length_specs): Likewise.
12900         (strfmon_length_specs): Likewise.
12901         (gcc_gfc_length_specs): Likewise.
12902         (printf_flag_specs): Change 0 to STD_C89.
12903         (asm_fprintf_flag_specs): Likewise.
12904         (gcc_diag_flag_specs): Likewise.
12905         (gcc_cxxdiag_flag_specs): Likewise.
12906         (scanf_flag_specs): Likewise.
12907         (strftime_flag_specs): Likewise.
12908         (strfmon_flag_specs): Likewise.
12909         (print_char_table): Likewise.
12910         (asm_fprintf_char_table): Likewise.
12911         (gcc_diag_char_table): Likewise.
12912         (gcc_tdiag_char_table): Likewise.
12913         (gcc_cdiag_char_table): Likewise.
12914         (gcc_cxxdiag_char_table): Likewise.
12915         (gcc_gfc_char_table): Likewise.
12916         (scan_char_table): Likewise.
12917         (time_char_table): Likewis.
12918         (monetary_char_table): Likewise.
12919         * c-format.h (BADLEN): Likewise.
12920
12921 2008-06-21  Ian Lance Taylor  <iant@google.com>
12922
12923         * tree.h (enum tree_code): Include all-tree.def, not tree.def.
12924         Define END_OF_BASE_TREE_CODES around inclusion.
12925         * tree.c (tree_code_type): New global array.
12926         (tree_code_length, tree_code_name): Likewise.
12927         * Makefile.in (TREE_H): Add all-tree.def, c-common.def, and
12928         $(lang_tree_files).
12929         (all-tree.def, s-alltree): New targets.
12930         (gencheck.h, s-gencheck): Remove.
12931         (tree.o): Depend upon all-tree.def.
12932         (build/gencheck.o): Remove gencheck.h dependency.
12933         (mostlyclean): Don't remove gencheck.h.
12934         * c-common.h (enum c_tree_code): Remove.
12935         * c-lang.c (tree_code_type): Remove.
12936         (tree_code_length, tree_code_name): Remove.
12937         * gencheck.c (tree_codes): Include all-tree.def, rather than
12938         tree.def, c-common.def, and gencheck.h.  Undefined DEFTREECODE
12939         after it is used.
12940         * tree-browser.c (tb_tree_codes): Include all-tree.def, rather
12941         than tree.def.
12942         * cp/cp-tree.h (enum cplus_tree_code): Remove.
12943         (operator_name_info): Size to MAX_TREE_CODES.
12944         (assignment_operator_name_info): Likewise.
12945         * cp/cp-lang.c (tree_code_type): Remove.
12946         (tree_code_length, tree_code_name): Remove.
12947         * cp/lex.c (operator_name_info): Size to MAX_TREE_CODES.
12948         (assignment_operator_name_info): Likewise.
12949         * cp/decl.c (grok_op_properties): Change LAST_CPLUS_TREE_CODE to
12950         MAX_TREE_CODES.
12951         * cp/mangle.c (write_expression): Likewise.
12952         * cp/Make-lang.in (CXX_TREE_H): Remove cp/cp-tree.def.
12953         * fortran/f95-lang.c (tree_code_type): Remove.
12954         (tree_code_length, tree_code_name): Remove.
12955         * java/java-tree.h (enum java_tree_code): Remove.
12956         * java/lang.c (tree_code_type): Remove.
12957         (tree_code_length, tree_code_name): Remove.
12958         * java/Make-lang.in (JAVA_TREE_H): Remove java/java-tree.def.
12959         * objc/objc-act.h (enum objc_tree_code): Remove.
12960         * objc/objc-lang.c (tree_code_type): Remove.
12961         (tree_code_length, tree_code_name): Remove.
12962         * objcp/objcp-lang.c (tree_code_type): Remove.
12963         (tree_code_length, tree_code_name): Remove.
12964         * ada/ada-tree.h (enum gnat_tree_code): Remove.
12965         * ada/Make-lang.in (ADA_TREE_H): Remove ada/ada-tre.def.
12966         * ada/misc.c (tree_code_type): Remove.
12967         (tree_code_length, tree_code_name): Remove.
12968
12969 2008-06-21  Bernhard Fischer  <aldot@gcc.gnu.org>
12970
12971         * tree-ssa-pre.c (fini_antic): Bitmap_sets have to be freed before
12972         the grand_bitmap_obstack.
12973
12974 2008-06-20  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
12975
12976         * ggc.h (GGC_RESIZEVAR): New, reorder macros.
12977         * tracer.c (tail_duplicate): Fix for -Wc++-compat.
12978         * tree-affine.c (aff_combination_expand, free_name_expansion): Likewise.
12979         * tree-cfg.c (replace_by_duplicate_decl, replace_ssa_name,
12980         move_stmt_r, new_label_mapper): Likewise.
12981         * tree-complex.c (cvc_lookup): Likewise.
12982         * tree-dfa.c (create_function_ann): Likewise.
12983         * tree-dump.c (dump_register): Likewise.
12984         * tree-if-conv.c (tree_if_conversion, add_to_predicate_list,
12985         find_phi_replacement_condition): Likewise.
12986         * tree-inline.c (copy_phis_for_bb, estimate_num_insns_1,
12987         tree_function_versioning): Likewise.
12988         * tree-into-ssa.c (cmp_dfsnum): Likewise.
12989         * tree-iterator.c (tsi_link_before, tsi_link_after): Likewise.
12990         * tree-nested.c (lookup_field_for_decl, lookup_tramp_for_decl,
12991         get_nonlocal_debug_decl, convert_nonlocal_reference,
12992         convert_nonlocal_omp_clauses, get_local_debug_decl,
12993         convert_local_reference, convert_local_omp_clauses,
12994         convert_nl_goto_reference, convert_nl_goto_receiver,
12995         convert_tramp_reference, convert_call_expr): Likewise.
12996         * tree-outof-ssa.c (contains_tree_r): Likewise.
12997         * tree-parloops.c (reduction_phi, initialize_reductions,
12998         eliminate_local_variables_1, add_field_for_reduction,
12999         add_field_for_name, create_phi_for_local_result,
13000         create_call_for_reduction_1, create_loads_for_reductions,
13001         create_stores_for_reduction, create_loads_and_stores_for_name):
13002         Likewise.
13003         * tree-phinodes.c (allocate_phi_node): Likewise.
13004         * tree-predcom.c (order_drefs, execute_pred_commoning_cbck): Likewise.
13005         * tree-sra.c (sra_elt_hash, sra_elt_eq, lookup_element): Likewise.
13006         * tree-ssa-alias.c (get_mem_sym_stats_for): Likewise.
13007         * tree-ssa-coalesce.c (compare_pairs): Likewise.
13008         * tree-ssa-loop-im.c (mem_ref_in_stmt, memref_hash, memref_eq,
13009         memref_free, gather_mem_refs_stmt, vtoe_hash, vtoe_eq, vtoe_free,
13010         record_vop_access, get_vop_accesses, get_vop_stores): Likewise.
13011         * tree-ssa-loop-prefetch.c (determine_loop_nest_reuse): Likewise.
13012         * tree-ssa-sccvn.c (VN_INFO_GET, free_phi, free_reference,
13013         vn_nary_op_insert): Likewise.
13014         * tree-ssa.c (redirect_edge_var_map_add,
13015         redirect_edge_var_map_clear, redirect_edge_var_map_dup): Likewise.
13016         * tree-vectorizer.c (vectorize_loops): Likewise.
13017         * tree.c (make_node_stat, copy_node_stat, build_int_cst_wide,
13018         build_fixed, build_real, make_tree_binfo_stat, make_tree_vec_stat,
13019         tree_cons_stat, build1_stat, build_variant_type_copy,
13020         decl_init_priority_lookup, decl_fini_priority_lookup,
13021         decl_priority_info, decl_restrict_base_lookup,
13022         decl_restrict_base_insert, decl_debug_expr_lookup,
13023         decl_debug_expr_insert, decl_value_expr_lookup,
13024         decl_value_expr_insert, type_hash_eq, type_hash_lookup,
13025         type_hash_add, get_file_function_name, tree_check_failed,
13026         tree_not_check_failed, tree_range_check_failed,
13027         omp_clause_range_check_failed, build_omp_clause,
13028         build_vl_exp_stat): Likewise.
13029         * value-prof.c (gimple_histogram_value,
13030         gimple_duplicate_stmt_histograms): Likewise.
13031         * var-tracking.c (attrs_list_insert, attrs_list_copy,
13032         unshare_variable, variable_union_info_cmp_pos, variable_union,
13033         dataflow_set_different_1, dataflow_set_different_2,
13034         vt_find_locations, variable_was_changed, set_variable_part,
13035         emit_notes_for_differences_1, emit_notes_for_differences_2): Likewise.
13036         * varasm.c (prefix_name, emutls_decl, section_entry_eq,
13037         section_entry_hash, object_block_entry_eq,
13038         object_block_entry_hash, create_block_symbol,
13039         initialize_cold_section_name, default_function_rodata_section,
13040         strip_reg_name, set_user_assembler_name, const_desc_eq,
13041         build_constant_desc, output_constant_def, lookup_constant_def,
13042         const_desc_rtx_hash, const_desc_rtx_eq, const_rtx_hash_1,
13043         create_constant_pool, force_const_mem, compute_reloc_for_rtx_1,
13044         default_internal_label): Likewise.
13045         * varray.c (varray_init, varray_grow): Likewise.
13046         * vec.c (vec_gc_o_reserve_1, vec_heap_o_reserve_1): Likewise.
13047
13048 2008-06-20  Uros Bizjak  <ubizjak@gmail.com>
13049
13050         * config/i386/i386.md (*jcc_fused_1): Handle all valid compare
13051         operators for "test" insn.  Macroize insn using SWI mode macro.
13052         (*jcc_fused_2): Ditto.
13053         (*jcc_fused_3): Macroize insn using SWI mode macro.
13054         (*jcc_fused_4): Ditto.
13055
13056 2008-06-20  Bernhard Fischer  <aldot@gcc.gnu.org>
13057
13058         * tree-ssa-pre.c: Fix typo in comment.
13059         (init_antic, fini_antic): Add explicit funtions for
13060         initializing and deinitializing ANTIC and AVAIL sets.
13061         (create_expression_by_pieces): Fix typo in comment.
13062         Remove redundant set of new_stuff and use NULL_TREE instead of NULL.
13063         (execute_pre): Eventually dump details about ANTIC_IN.
13064
13065 2008-06-19  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
13066
13067         * collect2.c (main, add_to_list): Fix for -Wc++-compat.
13068         * gcc.c (translate_options, init_spec, store_arg, read_specs,
13069         add_to_obstack, file_at_path, find_a_file, execute,
13070         add_preprocessor_option, add_assembler_option, add_linker_option,
13071         process_command, insert_wrapper, do_option_spec, do_self_spec,
13072         spec_path, do_spec_1, is_directory, main, used_arg,
13073         getenv_spec_function): Likewise.
13074         * tlink.c (symbol_hash_lookup, file_hash_lookup,
13075         demangled_hash_lookup, symbol_push, file_push, frob_extension):
13076         Likewise.
13077
13078 2008-06-19  Kenneth Zadeck <zadeck@naturalbridge.com>
13079
13080         * doc/rtl.texi: Updated subreg section.
13081
13082 2008-06-19  Jakub Jelinek  <jakub@redhat.com>
13083
13084         PR c++/36523
13085         * cgraphunit.c (cgraph_process_new_functions): Don't clear
13086         node->needed and node->reachable.
13087         * cgraphbuild.c (record_reference): Handle OMP_PARALLEL and OMP_TASK.
13088         * omp-low.c (delete_omp_context): Call finalize_task_copyfn.
13089         (expand_task_call): Don't call expand_task_copyfn.
13090         (expand_task_copyfn): Renamed to...
13091         (finalize_task_copyfn): ... this.
13092
13093 2008-06-19  Jan Hubicka  <jh@suse.cz>
13094
13095         * builtins.c (expand_builtin_nonlocal_goto): Stabilize r_sp before
13096         clobbering framepointer.
13097
13098 2008-06-19  Jan Hubicka  <jh@suse.cz>
13099
13100         * tree-optimize.c (execute_early_local_optimizations): Set
13101         cgraph_state only at first invocation.
13102
13103 2008-06-19  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
13104
13105         * system.h (-Wc++-compat): Activate as a warning, no an error.
13106
13107 2008-06-19  Uros Bizjak  <ubizjak@gmail.com>
13108
13109         * config/i386/i386.md (*jcc_fused_1): Use ASM_COMMENT_START
13110         instead of "#" in insn asm template.
13111         (*jcc_fused_2): Ditto.
13112
13113 2008-06-19  Uros Bizjak  <ubizjak@gmail.com>
13114
13115         * config/i386/i386.h (ix86_tune_indices)
13116         [X86_TUNE_FUSE_CMP_AND_BRANCH]: New.
13117         (TARGET_FUSE_CMP_AND_BRANCH): New define.
13118         * config/i386/i386.md (*jcc_fused_1): New insn pattern
13119         (*jcc_fused_2): Ditto.
13120         * config/i386/i386.c (ix86_tune_features): Add m_CORE2 to
13121         X86_TUNE_FUSE_CMP_AND_BRANCH targets.
13122         (print operand): Handle 'E' and 'e' code.
13123
13124 2008-06-19  Anatoly Sokolov  <aesok@post.ru>
13125
13126         * config/avr/avr.c (avr_mcu_t): Add attiny13a.
13127         * config/avr/avr.h (LINK_SPEC, CRT_BINUTILS_SPECS): (Ditto.).
13128         * config/avr/t-avr (MULTILIB_MATCHES): (Ditto.).
13129
13130 2008-06-19  Bernhard Fischer  <aldot@gcc.gnu.org>
13131
13132         * cgraphunit.c (cgraph_finalize_function): Remove redundant setting of
13133         node->decl.
13134         (cgraph_expand_function): Use local copy of decl.
13135         (cgraph_expand_all_functions): Remove redundant initialization of
13136         order_pos.
13137         (cgraph_optimize): Reword internal_error message.
13138
13139 2008-06-19  Chung-Lin Tang  <ctang@marvell.com>
13140
13141         * arm-protos.h (arm_return_in_memory): Remove public
13142         arm_return_in_memory() prototype.
13143         * arm.c (arm_return_in_memory): Add static prototype, add target
13144         hook macro, change definition and comments.
13145         * arm.h (TARGET_RETURN_IN_MEMORY): Remove.
13146
13147 2008-06-19  Ben Elliston  <bje@au.ibm.com>
13148
13149         * dfp.h, dfp.c, config/dfp-bit.h, config/dfp-bit.c, real.h,
13150         real.c: Remove references to IEEE 754R.
13151         * doc/install.texi (Configuration): IEEE 754R -> IEEE 754-2008.
13152         * doc/libgcc.texi (Decimal float library routines): Likewise.
13153
13154 2008-06-18  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
13155
13156         * targhooks.h (struct gcc_target): New member unwind_word_mode.
13157         (default_unwind_word_mode): Add prototype.
13158         * targhooks.c (default_unwind_word_mode): New function.
13159         (default_eh_return_filter_mode): Return targetm.unwind_word_mode ()
13160         instead of word_mode.
13161         * target-def.h (TARGET_UNWIND_WORD_MODE): New macro.
13162         (TARGET_INITIALIZER): Use it.
13163
13164         * c-common.c (handle_mode_attribute): Support "unwind_word"
13165         mode attribute.
13166         * unwind-generic.h (_Unwind_Word, _Unwind_Sword): Use it.
13167
13168         * except.c (init_eh): Use targetm.unwind_word_mode () instead of
13169         word_mode to access SjLj_Function_Context member "data".
13170         (sjlj_emit_dispatch_table): Likewise.  Also, perform type
13171         conversion from targetm.eh_return_filter_mode () to
13172         targetm.unwind_word_mode () if they differ.
13173
13174         * builtin-types.def (BT_UNWINDWORD): New primitive type.
13175         (BT_FN_UNWINDWORD_PTR): New function type.
13176         (BT_FN_WORD_PTR): Remove.
13177         * builtins.def (BUILT_IN_EXTEND_POINTER): Use BT_FN_UNWINDWORD_PTR.
13178         * except.c (expand_builtin_extend_pointer): Convert pointer to
13179         targetm.unwind_word_mode () instead of word_mode.
13180
13181         * config/spu/spu-protos.h (spu_eh_return_filter_mode): Remove.
13182         * config/spu/spu.c (spu_eh_return_filter_mode): Remove.
13183         (spu_unwind_word_mode): New function.
13184         (TARGET_EH_RETURN_FILTER_MODE): Do not define.
13185         (TARGET_UNWIND_WORD_MODE): Define.
13186         * config/spu/t-spu-elf (TARGET_LIBGCC2_CFLAGS): Remove -D__word__=SI.
13187
13188 2008-06-18  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
13189
13190         * config/spu/spu.c (reg_align): Remove.
13191         (regno_aligned_for_load): Also accept ARG_POINTER_REGNUM.
13192         (spu_split_load): Use regno_aligned_for_load instead of reg_align.
13193         (spu_split_store): Likewise.
13194
13195 2008-06-18  Bernhard Fischer  <aldot@gcc.gnu.org>
13196
13197         * gcc/tree-vn.c: Fix typo in comment.
13198
13199 2008-06-18  Jan Hubicka  <jh@suse.cz>
13200
13201         * cgraphunit.c (cgraph_optimize): Output debug info when doing
13202         toplevel reorder too.
13203
13204 2008-06-18  Jan Hubicka  <jh@suse.cz>
13205
13206         * c-opts.c (c_common_post_options): PCH is not compatible with
13207         no-unit-at-a-time.
13208         * opts.c (handle_options): Enable unit-at-a-time at O0 along with
13209         -fno-toplevel-reorder by default now.
13210
13211 2008-06-18  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
13212
13213         PR documentation/30739
13214         * doc/install.texi (Prerequisites): Document dependency on awk.
13215
13216 2008-06-18  Uros Bizjak  <ubizjak@gmail.com>
13217             Ian Lance Taylor  <iant@google.com>
13218
13219         PR rtl-optimization/35604
13220         * jump.c (redirect_exp_1): Skip the condition of an IF_THEN_ELSE. We
13221         only want to change jump destinations, not eventual label comparisons.
13222
13223 2008-06-16  Jan Hubicka  <jh@suse.cz>
13224
13225         * cgraphunit.c (cgraph_expand_pending_functions): Give up at
13226         syntax errors.
13227         (cgraph_analyze_function): Likewise.
13228
13229 2008-06-16  Jan Hubicka  <jh@suse.cz>
13230
13231         * cgraph.h (cgraph_mark_if_needed): New function.
13232         * cgraphunit.c (cgraph_mark_if_needed): New function.
13233         * c-decl.c (duplicate_decl): Use it.
13234
13235 2008-06-16  Jan Hubicka  <jh@suse.cz>
13236
13237         * cgraph.c (cgraph_add_new_function): When in expansion state, do
13238         lowering.
13239
13240 2008-06-16  Jan Hubicka  <jh@suse.cz>
13241
13242         * tree-outof-ssa.c (pass_out_of_ssa): Do not depend on PROP_alias.
13243
13244 2008-06-16  Daniel Jacobowitz  <dan@codesourcery.com>
13245             Kazu Hirata  <kazu@codesourcery.com>
13246             Maxim Kuvyrkov  <maxim@codesourcery.com
13247
13248         * config.gcc (mips64el-st-linux-gnu): Use mips/st.h and mips/t-st.
13249         * config.host: Use driver-native.o and mips/x-native for mips*-linux*.
13250         * config/mips/linux.h (host_detect_local_cpu): Declare, add to
13251         EXTRA_SPEC_FUNCTIONS.
13252         (MARCH_MTUNE_NATIVE_SPECS, BASE_DRIVER_SELF_SPECS): New macros.
13253         (DRIVER_SELF_SPECS): Adjust.
13254         * config/mips/linux64.h (DRIVER_SELF_SPECS): Update.
13255         * config/mips/st.h, config/mips/t-st: New.
13256         * config/mips/driver-native.c, config/mips/x-native: New.
13257         * doc/invoke.texi (MIPS): Document 'native' value for -march and
13258         -mtune options.
13259
13260 2008-06-18  Maxim Kuvyrkov  <maxim@codesourcery.com>
13261
13262         * config/mips/mips.h (ISA_HAS_CONDMOVE): Slice ISA_HAS_FP_CONDMOVE
13263         from it.
13264         (ISA_HAS_FP_CONDMOVE): New macro.
13265         (ISA_HAS_FP_MADD4_MSUB4, ISA_HAS_FP_MADD3_MSUB3): New macros.
13266         (ISA_HAS_NMADD_NMSUB): Rename to ISA_HAS_NMADD4_NMSUB4.
13267         (ISA_HAS_NMADD3_NMSUB3): New macro.
13268         * config/mips/mips.c (mips_rtx_costs): Update.
13269         * config/mips/mips.md (MOVECC): Don't use FP conditional moves when
13270         compiling for ST Loongson 2E/2F.
13271         (madd<mode>): Rename to madd4<mode>.  Update.
13272         (madd3<mode>): New pattern.
13273         (msub<mode>): Rename to msub4<mode>.  Update.
13274         (msub3<mode>): New pattern.
13275         (nmadd<mode>): Rename to nmadd4<mode>.  Update.
13276         (nmadd3<mode>): New pattern.
13277         (nmadd<mode>_fastmath): Rename to nmadd4<mode>_fastmath.  Update.
13278         (nmadd3<mode>_fastmath): New pattern.
13279         (nmsub<mode>): Rename to nmsub4<mode>.  Update.
13280         (nmsub3<mode>): New pattern.
13281         (nmsub<mode>_fastmath): Rename to nmsub4<mode>_fastmath.  Update.
13282         (nmsub3<mode>_fastmath): New pattern.
13283         (mov<SCALARF:mode>_on_<MOVECC:mode>, mov<mode>cc): Update.
13284
13285 2008-06-18  Steven Bosscher  <steven@gcc.gnu.org>
13286
13287         * df.h (struct df_ref): Replace 'insn' field with 'insn_info' field.
13288         (DF_REF_INSN_INFO): New.
13289         (DF_REF_INSN, DF_REF_INSN_UID): Rewrite macros using DF_REF_INSN_INFO.
13290         (DF_REF_IS_ARTIFICIAL): Artificial refs are now identified as refs
13291         with a NULL DF_REF_INSN_INFO.
13292         (DF_INSN_INFO_GET, DF_INSN_INFO_SET): Renamed from DF_INSN_GET and
13293         DF_INSN_SET.
13294         (DF_INSN_INFO_LUID, DF_INSN_INFO_DEFS, DF_INSN_INFO_USES,
13295         DF_INSN_INFO_EQ_USES): New.
13296         (DF_INSN_LUID, DF_INSN_DEFS, DF_INSN_USES, DF_INSN_EQ_USES,
13297         DF_INSN_UID_LUID, DF_INSN_UID_DEFS, DF_INSN_UID_USES,
13298         DF_INSN_UID_EQ_USES): Rewrite using DF_INSN_INFO_* macros.
13299         * df-core.c: Update comment for above changes.
13300         (df_insn_debug_regno): Use DF_INSN_INFO_GET instead of INSN_UID and
13301         DF_INSN_UID_* macros.
13302         (df_ref_debug): Check for NULL DF_REF_INSN_INFO.
13303         * df-scan.c (df_ref_record): Take a df_insn_info instead of an
13304         insn rtx.  Update all callers.
13305         (df_def_record_1, df_defs_record, df_uses_record, df_get_call_refs,
13306         df_ref_create_structure, df_insn_refs_collect): Likewise.
13307         (df_ref_equal_p): Compare DF_REF_INSN_INFO pointers for the refs.
13308         * df-problems.c (df_chain_dump): Test for non-NULL DF_REF_INSN_INFO.
13309         (df_live_bb_local_compute): Retrieve DF_INSN_INFO, use DF_INSN_INFO_*
13310         macros to access the insn refs.
13311         (df_chain_top_dump, df_chain_bottom_dump, df_byte_lr_alloc): Likewise.
13312         * fwprop.c (use_killed_between): Use DF_REF_INSN accessor macro.
13313         (all_uses_available): Retrieve DF_INSN_INFO for def_insn, and use it
13314         for accessing the refs.
13315         (try_fwprop_subst): Likewise.
13316         * ddg.c (add_cross_iteration_register_deps): Use DF_REF_INSN macro.
13317         * web.c (union_defs): Retrieve DF_INSN_INFO for def_insn, and use it
13318         for accessing the refs.
13319         * loop-invariant.c (invariant_for_use): Use DF_REF_BB macro.
13320         (check_dependencies): Use DF_INSN_INFO_GET, use DF_INSN_INFO_* macros
13321         to look at the insn refs.
13322         (record_uses): Likewise.
13323         * dce.c (deletable_insn_p): Don't tolerate artificial DEFs in this
13324         function anymore.
13325         (mark_artificial_uses): Don't mark_insn for artificial refs.
13326         (mark_reg_rependencies): Likewise.
13327
13328         * doc/rtl.texi: Remove documentation of ADDRESSOF.
13329
13330 2008-06-17  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
13331
13332         * configure: Regenerate.
13333
13334 2008-06-17  Eric B. Weddington  <eric.weddington@atmel.com>
13335
13336         * config/avr/avr.c (avr_mcu_t): Remove atmega32hvb.
13337         * config/avr/avr.h (LINK_SPEC, CRT_BINUTILS_SPECS): Likewise.
13338         * config/avr/t-avr (MULTILIB_MATCHES): Likewise.
13339
13340 2008-06-17  Eric B. Weddington  <eric.weddington@atmel.com>
13341
13342         * config/avr/avr.c (avr_mcu_t): Add attiny167.
13343         * config/avr/avr.h (LINK_SPEC, CRT_BINUTILS_SPECS): Likewise.
13344         * gcc/config/avr/t-avr (MULTILIB_MATCHES): Likewise.
13345
13346 2008-06-17  Eric B. Weddington  <eric.weddington@atmel.com>
13347
13348         * config/avr/avr.c (avr_mcu_t): Add atmega32u4.
13349         * config/avr/avr.h (LINK_SPEC, CRT_BINUTILS_SPECS): Likewise.
13350         * config/avr/t-avr (MULTILIB_MATCHES): Likewise.
13351
13352 2008-06-17  Bernhard Fischer  <aldot@gcc.gnu.org>
13353
13354         * tree-ssa-sccvn.c: Fix format of comments.
13355
13356 2008-06-17  Bernhard Fischer  <aldot@gcc.gnu.org>
13357
13358         * cgraph.c: Remove unneeded forward declarations of eq_node()
13359         and hash_node().
13360
13361 2008-06-17  Steven Bosscher  <steven@gcc.gnu.org>
13362
13363         * see.c (see_analyse_one_def): Do not look for REG_LIBCALL and
13364         REG_RETVAL notes.
13365         (see_update_relevancy): Likewise.
13366         * fwprop.c (try_fwprop_subst): Likewise.
13367         * rtlanal.c (noop_move_p): Likewise.
13368         * builtins.c (expand_buitlin_mathfn): Don't try to add REG_EQUAL
13369         notes to non-existing libcall blocks.
13370         * cse.c (cse_insn): Change prototype.  Don't update libcall notes.
13371         Remove orig_set.
13372         (cse_extended_basic_block): Don't track libcall and no-conflict notes.
13373         (dead_libcall_p): Remove.
13374         (delete_trivially_dead_insns): Don't use it.
13375         * web.c (union_defs): Remove comment about keeping nops.
13376         * gcse.c (hash_scan_insn): Don't take libcall pointers.
13377         (compute_hash_table_work): Don't track libcall notes.
13378         (do_local_cprop): Don't take libcall pointers.  Don't update
13379         libcall notes.
13380         (adjust_libcall_notes): Deleted.
13381         (local_cprop_pass): Remove stack for nested libcalls (which shouldn't
13382         ever have existed in the first place).
13383         (replace_store_insn): Don't try to remove libcall notes.
13384         * lower-subreg.c (move_libcall_note, move_retval_note): Deleted.
13385         (resolve_reg_notes): Don't call them.
13386         (resolve_simple_move): Likewise.
13387         (decompose_multiword_subregs): Remove block handling REG_RETVAL notes.
13388         Don't remove REG_RETVAL notes.
13389         * emit-rtl.c (try_split): Don't update libcall notes.
13390         (emit_copy_of_insn_after): Dito.
13391         * cselib.c (cselib_current_insn_in_libcall): Remove.
13392         (cselib_process_insn): Don't set/clear it.
13393         (new_elt_loc_list): Don't record it.
13394         (cselib_init): Don't initialize it.
13395         * cselib.c (struct elt_loc_list): Remove in_libcall field.
13396         * loop-invariant.c (find_invariant_insn): Don't look for libcall
13397         notes.
13398         * sched-deps.c (sched_analyze_insn): Don't group libcall blocks.
13399         (sched_analyze): Don't set up deps->libcall_block_tail_insn.
13400         (init_deps): Don't initialize it.
13401         * sched-int.h (struct deps): Rremove libcall_block_tail_insn field.
13402         * combine.c (delete_noop_moves): Don't update libcall notes.
13403         (can_combine_p): Remove now pointless #if 0 block.
13404         (try_combine): Remove another obsolete #if 0 block.
13405         (distribute_notes): Don't distribute libcall notes.
13406         * reg-notes.def (REG_LIBCALL, REG_RETVAL): Remove.
13407         * dce.c (libcall_dead_p): Remove.
13408         (delete_unmarked_insns): Don't handle libcall blocks.
13409         (preserve_libcall_for_dce): Remove.
13410         (prescan_insns_for_dce): Don't special-case libcall block insns.
13411         * reload1 (reload): Don't handle libcall notes.
13412         * doc/rtl.texi (REG_LIBCALL, REG_RETVAL, REG_LIBCALL_ID): Remove
13413         documentation.
13414
13415 2008-06-16  Eric B. Weddington  <eric.weddington@atmel.com>
13416
13417         * config/avr/avr.c (avr_mcu_t): Add atmega32c1.
13418         * config/avr/avr.h (LINK_SPEC, CRT_BINUTILS_SPECS): Likewise.
13419         * config/avr/t-avr (MULTILIB_MATCHES): Likewise.
13420
13421 2008-06-16  Eric B. Weddington  <eric.weddington@atmel.com>
13422
13423         * config/avr/avr.c (avr_mcu_t): Add atmega32m1.
13424         * config/avr/avr.h (LINK_SPEC, CRT_BINUTILS_SPECS): Likewise.
13425         * config/avr/t-avr (MULTILIB_MATCHES): Likewise.
13426
13427 2008-06-16  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
13428
13429         * Makefile.in (FLAGS_TO_PASS): Add $(datarootdir).
13430
13431 2008-06-16  Ira Rosen  <irar@il.ibm.com>
13432
13433         PR tree-optimization/36493
13434         * tree-vect-transform.c (vect_create_data_ref_ptr): Remove TYPE from
13435         the arguments list. Use VECTYPE to create vector pointer.
13436         (vectorizable_store): Fail if accesses through a pointer to vectype
13437         do not alias the original memory reference operands.
13438         Call vect_create_data_ref_ptr without the removed argument.
13439         (vectorizable_load): Likewise.
13440         (vect_setup_realignment): Call vect_create_data_ref_ptr without the
13441         removed argument.
13442
13443 2008-06-015  Andy Hutchinson  <hutchinsonandy@aim.com>
13444
13445         PR target/36336
13446         * config/avr/avr.h (LEGITIMIZE_RELOAD_ADDRESS): Add check for
13447         reg_equiv_constant.
13448
13449 2008-06-15  Maxim Kuvyrkov  <maxim@codesourcery.com>
13450
13451         * config/mips/loongson2ef.md: New file.
13452         * config/mips/mips.md (UNSPEC_LOONGSON_ALU1_TURN_ENABLED_INSN)
13453         (UNSPEC_LOONGSON_ALU2_TURN_ENABLED_INSN)
13454         (UNSPEC_LOONGSON_FALU1_TURN_ENABLED_INSN)
13455         (UNSPEC_LOONGSON_FALU2_TURN_ENABLED_INSN): New constants.
13456         (define_attr "cpu"): Rename loongson2e and loongson2f to loongson_2e
13457         and loongson_2f.
13458         (loongson2ef.md): New include.
13459         * config/mips/loongson.md (vec_pack_ssat_<mode>, vec_pack_usat_<mode>)
13460         (add<mode>3, paddd, ssadd<mode>3, usadd<mode>3)
13461         (loongson_and_not_<mode>, loongson_average_<mode>, loongson_eq_<mode>)
13462         (loongson_gt_<mode>, loongson_extract_halfword)
13463         (loongson_insert_halfword_0, loongson_insert_halfword_2)
13464         (loongson_insert_halfword_3, loongson_mult_add, smax<mode>3)
13465         (umax<mode>3, smin<mode>3, umin<mode>3, loongson_move_byte_mask)
13466         (umul<mode>3_highpart, smul<mode>3_highpart, loongson_smul_lowpart)
13467         (loongson_umul_word, loongson_pasubub, reduc_uplus_<mode>)
13468         (loongson_psadbh, loongson_pshufh, loongson_psll<mode>)
13469         (loongson_psra<mode>, loongson_psrl<mode>, sub<mode>3, psubd)
13470         (sssub<mode>3, ussub<mode>3, vec_interleave_high<mode>)
13471         (vec_interleave_low<mode>): Define type attribute.
13472         * config/mips/mips.c (mips_ls2): New static variable.
13473         (mips_issue_rate): Update to handle tuning for Loongson 2E/2F.
13474         (mips_ls2_init_dfa_post_cycle_insn, mips_init_dfa_post_cycle_insn)
13475         (sched_ls2_dfa_post_advance_cycle, mips_dfa_post_advance_cycle):
13476         Implement target scheduling hooks.
13477         (mips_multipass_dfa_lookahead): Update to handle tuning for
13478         Loongson 2E/2F.
13479         (mips_sched_init): Initialize data for Loongson scheduling.
13480         (mips_ls2_variable_issue): New static function.
13481         (mips_variable_issue): Update to handle tuning for Loongson 2E/2F.
13482         Add sanity check.
13483         (TARGET_SCHED_INIT_DFA_POST_CYCLE_INSN)
13484         (TARGET_SCHED_DFA_POST_ADVANCE_CYCLE): Override target hooks.
13485         * config/mips/mips.h (TUNE_LOONGSON_2EF): New macros.
13486         (ISA_HAS_XFER_DELAY, ISA_HAS_FCMP_DELAY, ISA_HAS_HILO_INTERLOCKS):
13487         Handle ST Loongson 2E/2F cores.
13488         (CPU_UNITS_QUERY): Define macro to enable querying of DFA units.
13489
13490 2008-06-15  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
13491
13492         * omp-low.c (extract_omp_for_data): Fix comment typo.
13493         * c.opt: Fix typo.
13494
13495 2008-06-15  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
13496
13497         * doc/sourcebuild.texi (Config Fragments): Remove obsolete
13498         FIXME note about gcc/config.guess.
13499         * doc/options.texi (Option file format): Remove non-ASCII bytes.
13500         * doc/cpp.texi: Expand TABs, drop indentation outside examples.
13501         * doc/cppopts.texi: Likewise.
13502         * doc/extend.texi: Likewise.
13503         * doc/gcc.texi: Likewise.
13504         * doc/gccint.texi: Likewise.
13505         * doc/gcov.texi: Likewise.
13506         * doc/gty.texi: Likewise.
13507         * doc/hostconfig.texi: Likewise.
13508         * doc/install.texi: Likewise.
13509         * doc/invoke.texi: Likewise.
13510         * doc/loop.texi: Likewise.
13511         * doc/makefile.texi: Likewise.
13512         * doc/md.texi: Likewise.
13513         * doc/passes.texi: Likewise.
13514         * doc/tm.texi: Likewise.
13515         * doc/tree-ssa.texi: Likewise.
13516         * doc/trouble.texi: Likewise.
13517
13518 2008-06-15  Mark Shinwell  <shinwell@codesourcery.com>
13519             Nathan Sidwell  <nathan@codesourcery.com>
13520             Maxim Kuvyrkov  <maxim@codesourcery.com>
13521             Richard Sandiford  <rdsandiford@googlemail.com>
13522
13523         * config/mips/mips-modes.def: Add V8QI, V4HI and V2SI modes.
13524         * config/mips/mips-protos.h (mips_expand_vector_init): New.
13525         * config/mips/mips-ftypes.def: Add function types for Loongson-2E/2F
13526         builtins.
13527         * config/mips/mips.c (mips_split_doubleword_move): Handle new modes.
13528         (mips_hard_regno_mode_ok_p): Allow 64-bit vector modes for Loongson.
13529         (mips_vector_mode_supported_p): Add V2SImode, V4HImode and
13530         V8QImode cases.
13531         (LOONGSON_BUILTIN, LOONGSON_BUILTIN_ALIAS): New.
13532         (CODE_FOR_loongson_packsswh, CODE_FOR_loongson_packsshb,
13533         (CODE_FOR_loongson_packushb, CODE_FOR_loongson_paddw,
13534         (CODE_FOR_loongson_paddh, CODE_FOR_loongson_paddb,
13535         (CODE_FOR_loongson_paddsh, CODE_FOR_loongson_paddsb)
13536         (CODE_FOR_loongson_paddush, CODE_FOR_loongson_paddusb)
13537         (CODE_FOR_loongson_pmaxsh, CODE_FOR_loongson_pmaxub)
13538         (CODE_FOR_loongson_pminsh, CODE_FOR_loongson_pminub)
13539         (CODE_FOR_loongson_pmulhuh, CODE_FOR_loongson_pmulhh)
13540         (CODE_FOR_loongson_biadd, CODE_FOR_loongson_psubw)
13541         (CODE_FOR_loongson_psubh, CODE_FOR_loongson_psubb)
13542         (CODE_FOR_loongson_psubsh, CODE_FOR_loongson_psubsb)
13543         (CODE_FOR_loongson_psubush, CODE_FOR_loongson_psubusb)
13544         (CODE_FOR_loongson_punpckhbh, CODE_FOR_loongson_punpckhhw)
13545         (CODE_FOR_loongson_punpckhwd, CODE_FOR_loongson_punpcklbh)
13546         (CODE_FOR_loongson_punpcklhw, CODE_FOR_loongson_punpcklwd): New.
13547         (mips_builtins): Add Loongson builtins.
13548         (mips_loongson_2ef_bdesc): New.
13549         (mips_bdesc_arrays): Add mips_loongson_2ef_bdesc.
13550         (mips_builtin_vector_type): Handle unsigned versions of vector modes.
13551         (MIPS_ATYPE_UQI, MIPS_ATYPE_UDI, MIPS_ATYPE_V2SI, MIPS_ATYPE_UV2SI)
13552         (MIPS_ATYPE_V4HI, MIPS_ATYPE_UV4HI, MIPS_ATYPE_V8QI, MIPS_ATYPE_UV8QI):
13553         New.
13554         (mips_expand_vector_init): New.
13555         * config/mips/mips.h (HAVE_LOONGSON_VECTOR_MODES): New.
13556         (TARGET_CPU_CPP_BUILTINS): Define __mips_loongson_vector_rev
13557         if appropriate.
13558         * config/mips/mips.md: Add unspec numbers for Loongson
13559         builtins.  Include loongson.md.
13560         (MOVE64): Include Loongson vector modes.
13561         (SPLITF): Include Loongson vector modes.
13562         (HALFMODE): Handle Loongson vector modes.
13563         * config/mips/loongson.md: New.
13564         * config/mips/loongson.h: New.
13565         * config.gcc: Add loongson.h header for mips*-*-* targets.
13566         * doc/extend.texi (MIPS Loongson Built-in Functions): New.
13567
13568 2008-06-14  Joseph Myers  <joseph@codesourcery.com>
13569
13570         * config.gcc (arc-*-elf*, avr-*-*, fr30-*-elf, frv-*-elf,
13571         h8300-*-elf*, h8300-*-*, i[34567]86-*-elf*, x86_64-*-elf*,
13572         i[34567]86-*-aout*, i[34567]86-*-coff*, ia64*-*-elf*,
13573         iq2000*-*-elf*, m32r-*-elf*, m32rle-*-elf*, m32r-*-linux*,
13574         m32rle-*-linux*, m68hc11-*-*|m6811-*-*, m68hc12-*-*|m6812-*-*,
13575         m68k-*-coff*, mcore-*-elf, mcore-*-pe*, mipsisa64sr71k-*-elf*,
13576         mipsisa64sb1-*-elf* | mipsisa64sb1el-*-elf*, mips-*-elf* |
13577         mipsel-*-elf*, mips64-*-elf* | mips64el-*-elf*, mips64vr-*-elf* |
13578         mips64vrel-*-elf*, mips64orion-*-elf* | mips64orionel-*-elf*,
13579         mipstx39-*-elf* | mipstx39el-*-elf*, mn10300-*-*, pdp11-*-,
13580         powerpc-*-elf*, powerpcle-*-elf*, sh-*-elf* | sh[12346l]*-*-elf* |
13581         sh-*-symbianelf* | sh[12346l]*-*-symbianelf* | sh-*-linux* |
13582         sh[2346lbe]*-*-linux* | sh-*-netbsdelf* | shl*-*-netbsdelf* |
13583         sh5-*-netbsd* | sh5l*-*-netbsd* | sh64-*-netbsd* |
13584         sh64l*-*-netbsd*, sh-*-*, sparc-*-elf*, sparc64-*-elf*,
13585         v850e1-*-*, v850e-*-*, v850-*-*, xstormy16-*-elf, m32c-*-elf*):
13586         Remove use_fixproto=yes.
13587         (ia64*-*-hpux*): Remove comment about using fixproto.
13588         (m68k-*-uclinuxoldabi*, m68k-*-uclinux*): Remove use_fixproto=no.
13589
13590 2008-06-14  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
13591
13592         * configure.ac: Update gthr-default.h lazily, to avoid unneeded
13593         library rebuilds.
13594         * configure: Regenerate.
13595
13596 2008-06-13  Eric Botcazou  <ebotcazou@adacore.com>
13597
13598         PR middle-end/36520
13599         * builtins.c (get_memory_rtx): Test for the presence of DECL_SIZE_UNIT
13600         before evaluating it.
13601
13602 2008-06-13  Jakub Jelinek  <jakub@redhat.com>
13603
13604         PR c/36507
13605         * c-decl.c (merge_decls): Don't clear DECL_EXTERNAL for
13606         nested inline functions.
13607         (start_decl, start_function): Don't invert DECL_EXTERNAL
13608         for nested inline functions.
13609
13610 2008-06-13  Richard Sandiford  <rdsandiford@googlemail.com>
13611
13612         * config/mips/mips.md: Remove TARGET_DEBUG_D_MODE conditions from
13613         splits that must be made for correctness.
13614
13615 2008-06-13  Richard Sandiford  <rdsandiford@googlemail.com>
13616
13617         * config/mips/mips.c (BUILTIN_AVAIL_NON_MIPS16): New macro.
13618         (AVAIL_NON_MIPS16): Likewise.
13619         (mips_builtin_description): Replace target_flags with a predicate.
13620         (paired_single, sb1_paired_single, mips3d, dsp, dspr2, dsp_32)
13621         (dspr2_32): New availability predicates.
13622         (MIPS_BUILTIN): New macro.
13623         (DIRECT_BUILTIN, CMP_SCALAR_BUILTINS, CMP_PS_BUILTINS)
13624         (CMP_4S_BUILTINS, MOVTF_BUILTINS, CMP_BUILTINS)
13625         (DIRECT_NO_TARGET_BUILTIN, BPOSGE_BUILTIN): Use it.
13626         Replace the TARGET_FLAGS parameters with AVAIL parameters.
13627         (mips_ps_bdesc, mips_sb1_bdesc, mips_dsp_bdesc)
13628         (mips_dsp_32only_bdesc): Merge into...
13629         (mips_builtins): ...this new array.
13630         (mips_bdesc_map, mips_bdesc_arrays): Delete.
13631         (mips_init_builtins): Update after above changes.
13632         (mips_expand_builtin_1): Merge into...
13633         (mips_expand_builtin): ...here and update after above changes.
13634
13635 2008-06-12  Paul Brook  <paul@codesourcery.com>
13636
13637         * longlong.h (__arm__): Define count_leading_zeros.
13638         * config/arm/lib1funcs.asm (xxh, xxl, yyh, yyl): Define.
13639         (clzsi2, clzdi2): New functions.
13640         * config/arm/bpabi-v6m.S (xxh, xxl, yyh, yyl): Remove.
13641         * config/arm/bpabi.S (xxh, xxl, yyh, yyl): Remove.
13642         * config/arm/t-strongarm-elf (LIB1ASMFUNCS): Ditto.
13643         * config/arm/t-vxworks (LIB1ASMFUNCS): Ditto.
13644         * config/arm/t-pe (LIB1ASMFUNCS): Ditto.
13645         * config/arm/t-arm-elf (LIB1ASMFUNCS): Ditto.
13646         * config/arm/t-arm-coff (LIB1ASMFUNCS): Ditto.
13647         * config/arm/t-linux (LIB1ASMFUNCS): Ditto.
13648         * config/arm/t-symbian (LIB1ASMFUNCS): Ditto.
13649         * config/arm/t-wince-pe (LIB1ASMFUNCS): Ditto.
13650
13651 2008-06-12  Kazu Hirata  <kazu@codesourcery.com>
13652
13653         * config/m68k/m68k.c (m68k_tune_flags): New.
13654         (override_options): Compute m68k_tune_flags.
13655         (MULL_COST, MULW_COST): Update for various variants of CFV2.
13656         * config/m68k/m68k.h (TUNE_MAC, TUNE_EMAC): New.
13657
13658 2008-06-12  Jakub Jelinek  <jakub@redhat.com>
13659
13660         PR middle-end/36506
13661         * omp-low.c (expand_omp_sections): Initialize l2 to avoid bogus warning.
13662
13663 2008-06-12  Eric Botcazou  <ebotcazou@adacore.com>
13664
13665         * tree-inline.c (copy_body_r): Copy TREE_SIDE_EFFECTS along with
13666         TREE_THIS_VOLATILE on INDIRECT_REF nodes.
13667
13668 2008-06-12  Eric Botcazou  <ebotcazou@adacore.com>
13669
13670         * expr.c (store_field): Do a block copy from BLKmode to BLKmode-like.
13671         (get_inner_reference): Use BLKmode for byte-aligned BLKmode bitfields.
13672
13673 2008-06-12  Jakub Jelinek  <jakub@redhat.com>
13674
13675         PR middle-end/36506
13676         * omp-low.c (expand_omp_sections): Handle #pragma omp sections with
13677         reductions.
13678
13679 2008-06-12  Richard Guenther  <rguenther@suse.de>
13680
13681         PR tree-optimization/36345
13682         * tree-flow.h (struct ptr_info_def): Align escape_mask,
13683         add memory_tag_needed flag.
13684         (may_alias_p): Declare.
13685         * tree-ssa-alias.c (may_alias_p): Export.
13686         (set_initial_properties): Use memory_tag_needed flag.
13687         (update_reference_counts): Likewise.
13688         (reset_alias_info): Reset memory_tag_needed flag.
13689         (create_name_tags): Check memory_tag_needed flag.
13690         (dump_points_to_info_for): Dump it.
13691         * tree-ssa-structalias.c (struct variable_info): Remove
13692         directly_dereferenced flag.
13693         (new_var_info): Do not initialize it.
13694         (process_constraint_1): Do not set it.
13695         (update_alias_info): Set is_dereferenced flag.
13696         (set_uids_in_ptset): Use may_alias_p.
13697         (set_used_smts): Check memory_tag_needed flag.
13698         (find_what_p_points_to): Likewise.  Pass is_dereferenced flag.
13699         * tree-ssa-alias.c (verify_flow_sensitive_alias_info): Check
13700         memory_tag_needed flag.
13701         * tree-ssa-alias-warnings.c (dsa_named_for): Try to recover
13702         from broken design.
13703
13704 2008-06-12  Kai Tietz  <kai.tietz@onevision.com>
13705
13706         * config/i386/i386.c (ix86_compute_frame_layout): Disable
13707         red zone for w64 abi.
13708         (ix86_expand_prologue): Likewise.
13709         (ix86_force_to_memory): Likewise.
13710         (ix86_free_from_memory): Likewise.
13711
13712 2008-06-11  Edmar Wienskoski  <edmar@freescale.com>
13713
13714         PR target/36425
13715         * config/rs6000/rs6000.c (rs6000_override_options): Set
13716         rs6000_isel conditionally to the absence of comand line override.
13717         * config/rs6000/linuxspe.h (SUBSUBTARGET_OVERRIDE_OPTIONS):
13718         Remove duplicate rs6000_isel setting.
13719         * config/rs6000/eabispe.h: Ditto.
13720
13721 2008-06-11  Richard Guenther  <rguenther@suse.de>
13722
13723         * alias.c (get_alias_set): Use the element alias-set for arrays.
13724         (record_component_aliases): For arrays and vectors do nothing.
13725         * c-common.c (strict_aliasing_warning): Handle the cases
13726         of alias set zero explicitly.
13727         * Makefile.in (dfp.o-warn): Add -Wno-error.
13728
13729 2008-06-11  Joseph Myers  <joseph@codesourcery.com>
13730
13731         * config.gcc (all_defaults): Add arch_32 arch_64 cpu_32 cpu_64
13732         tune_32 tune_64.
13733         (i[34567]86-*-* | x86_64-*-*): Add arch_32 arch_64 cpu_32 cpu_64
13734         tune_32 tune_64 to supported_defaults.  Allow values not
13735         supporting 64-bit mode for arch_32, cpu_32 and tune_32 for
13736         x86_64.  Do not override cpu_32 or cpu_64 values from target name.
13737         (i[34567]86-*-linux*, i[34567]86-*-solaris2.1[0-9]*): Only default
13738         with_cpu_64 to generic for 64-bit-supporting configurations, not
13739         with_cpu.  Remove FIXMEs.
13740         * doc/install.texi (--with-cpu-32, --with-cpu-64, --with-arch-32,
13741         --with-arch-64, --with-tune-32, --with-tune-64): Document.
13742         * config/i386/i386.h (OPT_ARCH32, OPT_ARCH64): Define.
13743         (OPTION_DEFAULT_SPECS): Add tune_32, tune_64, cpu_32, cpu_64,
13744         arch_32 and arch_64.
13745
13746 2008-06-11  Eric Botcazou  <ebotcazou@adacore.com>
13747             Olivier Hainque  <hainque@adacore.com>
13748
13749         * builtins.c (get_memory_rtx): Accept byte-addressable bitfields.
13750         Use DECL_SIZE_UNIT to retrieve the size of the field.
13751
13752 2008-06-11  Joseph Myers  <joseph@codesourcery.com>
13753
13754         * config/arm/arm.c (arm_init_neon_builtins): Move initialization
13755         with function calls after declarations.  Lay out
13756         neon_float_type_node before further use.
13757
13758 2008-06-11  Richard Guenther  <rguenther@suse.de>
13759
13760         * tree-flow.h (may_point_to_global_var): Declare.
13761         * tree-ssa-alias.c (may_point_to_global_var): New function.
13762         * tree-ssa-sink.c (is_hidden_global_store): Use it.
13763
13764 2008-06-10  Kazu Hirata  <kazu@codesourcery.com>
13765
13766         * configure.ac: Teach that fido supports .debug_line.
13767         * configure: Regenerate.
13768
13769 2008-06-10  Tom Tromey  <tromey@redhat.com>
13770
13771         * c-lex.c (fe_file_change): Pass SOURCE_LINE to start_source_file
13772         debug hook.
13773
13774 2008-06-10  Joseph Myers  <joseph@codesourcery.com>
13775
13776         * dfp.c (WORDS_BIGENDIAN): Define to 0 if not defined.
13777         (encode_decimal64, decode_decimal64, encode_decimal128,
13778         decode_decimal128): Reverse order of 32-bit parts of value if host
13779         and target endianness differ.
13780
13781 2008-06-10  Vinodha Ramasamy  <vinodha@google.com>
13782
13783         * value_prob.c (tree_divmod_fixed_value_transform): Use gcov_type.
13784         Avoid division by 0.
13785         (tree_mod_pow2_value_transform): Likewise.
13786         (tree_ic_transform): Likewise.
13787         (tree_stringops_transform): Likewise.
13788         (tree_mod_subtract_transform): Likewise.
13789         * tree-inline-c (copy_bb): Corrected int type to gcov_type.
13790         (copy_edges_for_bb): Likewise.
13791         (initialize_cfun): Likewise.
13792
13793 2008-06-10  Uros Bizjak  <ubizjak@gmail.com>
13794
13795         * config/i386/i386.md (*btdi_rex64): Change operand 1 predicate to
13796         nonmemory_operand. Add "N" operand constraint.
13797         (*btsi): Ditto.
13798         (*jcc_btdi_mask_rex64): New instruction and split pattern.
13799         (*jcc_btsi_mask): Ditto.
13800         (*jcc_btsi_mask_1): Ditto.
13801
13802 2008-06-10  Joseph Myers  <joseph@codesourcery.com>
13803
13804         * config/rs6000/rs6000.c (build_opaque_vector_type): Set
13805         TYPE_CANONICAL for copied element type.
13806
13807 2008-06-10  Uros Bizjak  <ubizjak@gmail.com>
13808
13809         PR target/36473
13810         * config/i386/i386.c (ix86_tune_features) [TUNE_USE_BT]:
13811         Add m_CORE2 and m_GENERIC.
13812         * config/i386/predicates.md (bt_comparison_operator): New predicate.
13813         * config/i386/i386.md (*btdi_rex64): New instruction pattern.
13814         (*btsi): Ditto.
13815         (*jcc_btdi_rex64): New instruction and split pattern.
13816         (*jcc_btsi): Ditto.
13817         (*jcc_btsi_1): Ditto.
13818         (*btsq): Fix Intel asm dialect operand order.
13819         (*btrq): Ditto.
13820         (*btcq): Ditto.
13821
13822 2008-06-09  Andy Hutchinson  <hutchinsonandy@aim.com>
13823
13824         PR middle-end/36447
13825         * simplify-rtx.c (simplify_subreg): Add check for shift count
13826         greater than size.
13827
13828 2008-06-09  Richard Sandiford  <rdsandiford@googlemail.com>
13829
13830         * doc/md.texi: Synchronize with later constraints.md change.
13831         * longlong.h (umul_ppmm): Replace the MIPS asm implementation
13832         with a C implementation.
13833         * config/mips/mips.c (mips_legitimize_move): Remove MFHI and
13834         MFLO handling.
13835         (mips_subword): Assume TImode for CONST_INTs if TARGET_64BIT.
13836         (mips_split_doubleword_move): Use special MTHI and MFHI instructions
13837         when moving to and from MD_REGNUM.
13838         (mips_output_move): Don't handle moves from GPRs to HI_REGNUM.
13839         Handle moves from LO_REGNUM to GPRs using MFLO, MACC or DMACC.
13840         Handle byte and halfword moves.
13841         (mips_hard_regno_mode_ok_p): Handle MD_REGS and DSP_ACC_REGS
13842         separately.
13843         * config/mips/constraints.md (h): Turn into NO_REGS.
13844         (l, x): Update documentation.
13845         * config/mips/mips.md (UNSPEC_MFHILO): Delete.
13846         (UNSPEC_MFHI, UNSPEC_MTHI, UNSPEC_SET_HILO): New.
13847         (UNSPEC_TLS_LDM, UNSPEC_TLS_GET_TP): Renumber.
13848         (HILO): New mode iterator.
13849         (MOVE128): Add TI.
13850         (any_div): New code iterator.
13851         (u): Extend code attribute to div and udiv.
13852         (*add<mode>3_mips16, *movdi_64bit_mips16, *movsi_mips16): Use
13853         d_operand in the splitters.  Remove redundant CONST_INT checks.
13854         (mulsi3_mult3, mul<mode>3_internal, mul<mode>3_r4000, *mul_acc_si)
13855         (*macc, *msac, *msac_using_macc, *macc2, *msac2, *mul_sub_si)
13856         (*muls): Remove "=h" clobbers.  Adjust peephole2s and define_splits
13857         accordingly, using normal moves instead of unspecs to move LO into
13858         a GPR.  Use d_operand and lo_operand instead of *_REG_P checks.
13859         (<u>mulsidi3): Handle expansion in C code.
13860         (<u>mulsidi3_32bit_internal): Rename to...
13861         (<u>mulsidi3_32bit): ...this.
13862         (<u>mulsidi3_32bit_r4000): Fix insn separator.
13863         (*<u>mulsidi3_64bit): Rename to...
13864         (<u>mulsidi3_64bit): ...this.  Combine DImode "=h" and "=l" clobbers
13865         into a TImode "=x" clobber.  In the split, use an UNSPEC_SET_HILO
13866         to set LO and HI to the multiplication result.  Use a normal move
13867         for MFLO and an unspec for MFHI.
13868         (*<u>mulsidi3_64bit_parts): Replace with...
13869         (<u>mulsidi3_64bit_hilo): ...this new instruction.
13870         (<su>mulsi3_highpart): Extend to TARGET_FIX_R4000.
13871         (<su>mulsi3_highpart_internal): Turn into a define_insn_and_split
13872         and extend it to TARGET_FIX_R4000.  Store the destination in a GPR
13873         instead of HI.  Split the instruction into a separate multiplication
13874         and MFHI if !TARGET_FIX_R4000.
13875         (<su>muldi3_highpart): Likewise.
13876         (<su>mulsi3_highpart_mulhi_internal): Remove the first alternative
13877         and the "=h" clobber.
13878         (*<su>mulsi3_highpart_neg_mulhi_internal): Likewise.
13879         (<u>mulditi3): New expander.
13880         (<u>mulditi3_internal, <u>mulditi3_r4000): New patterns.
13881         (madsi): Remove "=h" clobber.
13882         (divmod<mode>4, udivmod<mode>4): Turn into define_insn_and_splits.
13883         Force the modulus result to be a GPR and split the instruction into
13884         a division followed by an MFHI after reload.
13885         (<u>divmod<GPR:mode>4_hilo_<HILO:mode>): New instruction.
13886         (*lea_high64): Use d_operand in the define_peephole2.  Likewise
13887         the MIPS16 HIGH define_split.
13888         (*movdi_32bit, *movdi_gp32_fp64, *movdi_32bit_mips16): Change type
13889         of acc<->gpr moves to "multi".
13890         (*movdi_64bit): Replace the single "x" alternative with
13891         alternatives for moving into and out of "a".
13892         (*movhi_internal, *movqi_internal): Likewise.  Use mips_output_move.
13893         (*movsi_internal): Extend the "d<-A" alternative to "d<-a".
13894         (*movdi_64bit_mips16, *movsi_mips16): Add d<-a alternatives.
13895         Use d_operand in the splitters.  Remove redundant CONST_INT checks.
13896         (*movhi_mips16, *movqi_mips16): Likewise.  Use mips_output_move.
13897         (movti): New expander.
13898         (*movti, *movti_mips16): New insns.
13899         (mfhilo_<mode>, *mfhilo_<mode>, *mfhilo_<mode>_macc): Delete.
13900         (mfhi<GPR:mode>_<HILO:mode>): New pattern.
13901         (mthi<GPR:mode>_<HILO:mode>): Likewise.
13902         * config/mips/predicates.md (fpr_operand): Delete.
13903         (d_operand): New predicate.
13904
13905 2008-06-09  Michael Meissner  <michael.meissner@amd.com>
13906
13907         * config.gcc (i[34567]86-*-*): Put test in quotes to prevent
13908         failure on some Bourne shells.
13909         (x86_64-*-*): Ditto.
13910
13911 2008-06-09  Kai Tietz  <kai.tietz@onevision.com>
13912
13913         * config/i386/cygming.h (TARGET_SUBTARGET64_DEFAULT): New.
13914
13915 2008-06-09  Eric Botcazou  <ebotcazou@libertysurf.fr>
13916
13917         * doc/install.texi (*-*-solaris2*): Remove obsolete contents.
13918         (sparc-sun-solaris2*): Likewise.
13919
13920 2008-06-09  Arnaud Charlet  <charlet@adacore.com
13921
13922         * doc/install.texi: Update requirements to build the Ada compiler.
13923
13924 2008-06-08  Steven Bosscher  <stevenb.gcc@gmail.com>
13925
13926         * df-scan.c (struct df_scan_problem_data): Remove the
13927         mw_link_pool alloc pool.
13928         (df_scan_free_internal): Don't free it.
13929         (df_scan_alloc): Don't allocate it.
13930         * df.h (struct df_link): Update comment.
13931
13932 2008-06-08  Nathan Sidwell  <nathan@codesourcery.com>
13933
13934         * except.h: Correct checks for when SJLJ exceptions must be used.
13935
13936 2008-06-08  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
13937
13938         * doc/invoke.texi (Wenum-compare): Mention that it is enabled by
13939         default.
13940
13941 2008-06-08  Joseph Myers  <joseph@codesourcery.com>
13942
13943         PR tree-optimization/36218
13944         * configure.ac: Use LDFLAGS="${LDFLAGS_FOR_BUILD}" when running
13945         configure for the build system.
13946         (BUILD_LDFLAGS): Define.
13947         * configure: Regenerate.
13948         * Makefile.in (BUILD_LDFLAGS): Define to @BUILD_LDFLAGS@.
13949
13950 2008-07-08  Anatoly Sokolov  <aesok@post.ru>
13951
13952         PR target/36424
13953         * config/avr/avr.h (HARD_REGNO_RENAME_OK): Define.
13954         * config/avr/avr.c (avr_hard_regno_rename_ok): New function.
13955         * config/avr/avr-protos.h (avr_hard_regno_rename_ok): New prototype.
13956
13957 2008-06-07  Danny Smith  <dannysmith@users.sourceforge.net>
13958
13959         * config/i386/cygming.h (MAYBE_UWIN_CPP_BUILTINS): Remove.
13960
13961 2008-06-07  Joseph Myers  <joseph@codesourcery.com>
13962
13963         * config.gcc (Obsolete configurations): Remove list of
13964         configurations.
13965         (Unsupported targets list): Add *-*-linux*aout*, *-*-linux*libc1*,
13966         *-*-solaris2.[0-6], *-*-solaris2.[0-6].*, *-*-sysv*.  Remove other
13967         targets matched by those patterns.
13968         (strongarm*-*-*, ep9312*-*-*, xscale-*-*, parisc*-*-*,
13969         m680[012]0-*-*, *-*-linux*libc1*, *-*-linux*aout*,
13970         alpha*-*-unicosmk*, strongarm*-*-freebsd*, ep9312-*-elf,
13971         arm*-*-kaos*, cris-*-aout, parisc*64*-*-linux*, parisc*-*-linux*,
13972         hppa1.1-*-pro*, hppa1.1-*-osf*, hppa1.1-*-bsd*,
13973         i[34567]86-sequent-ptx4*, i[34567]86-sequent-sysv4*,
13974         i[34567]86-*-beoself*, i[34567]86-*-beos*, i[34567]86-*-sco3.2v5*,
13975         i[34567]86-*-sysv5*, i[34567]86-*-sysv4*, i[34567]86-*-uwin*,
13976         i[34567]86-*-kaos*, m68020-*-elf*, m68010-*-netbsdelf*,
13977         mips-wrs-windiss, mt-*-elf, powerpc-*-beos*, powerpc-*-chorusos*,
13978         powerpc-wrs-windiss*, powerpcle-*-sysv*, powerpc-*-kaos*,
13979         powerpcle-*-kaos*, sh*-*-kaos*, sparc-*-sysv4*, strongarm-*-elf*,
13980         strongarm-*-pe, strongarm-*-kaos*, vax-*-bsd*, vax-*-sysv*,
13981         vax-*-ultrix*, xscale-*-elf, xscale-*-coff,
13982         i[34567]86-*-linux*aout*, i[34567]86-*-linux*libc1): Remove.
13983         Make code for Solaris 7 and greater unconditional for Solaris.
13984         (ep9312-*-*, parisc1*, m680[012]0-*-*, parisc*-*-*, mt-*-*):
13985         Remove --with-* handling.
13986         * config/rs6000/sysv4.h (-mwindiss): Remove from all specs.
13987         (LIB_WINDISS_SPEC, CPP_OS_WINDISS_SPEC, STARTFILE_WINDISS_SPEC,
13988         ENDFILE_WINDISS_SPEC, LINK_START_WINDISS_SPEC,
13989         LINK_OS_WINDISS_SPEC): Remove.
13990         * config/rs6000/sysv4.opt (mwindiss): Remove.
13991         * configure.ac (strongarm*-*-*, xscale*-*-*): Remove.
13992         * configure: Regenerate.
13993         * doc/cpp.texi: Don't mention BeOS.
13994         * doc/extend.texi (interrupt): Don't mention MS1.
13995         * doc/install.texi: (i386-@var{any}-sysv, m68k-bull-sysv,
13996         m68k-hp-hpux, m68000-hp-hpux, m68000-att-sysv,
13997         alphaev5-cray-unicosmk*, xscale-*-*, i?86-*-linux*aout,
13998         i?86-*-sco3.2v5*, i?86-*-udk, m68k-hp-hpux, powerpc-*-sysv4,
13999         powerpc-*-sysv4, powerpcle-*-sysv4, *-*-sysv*, vax-dec-ultrix):
14000         Remove.
14001         * doc/invoke.texi (MT Options): Remove.
14002         (-mwindiss): Remove.
14003         (CRIS Options): Remove cris-axis-aout references.
14004         (HPPA Options): Don't mention hppa1.1-*-pro.
14005         * doc/md.texi: (MorphoTech family): Remove.
14006         * libgcc2.c: Don't handle UWIN.
14007         * config/alpha/t-unicosmk: Remove.
14008         * config/alpha/unicosmk.h: Remove.
14009         * config/arm/kaos-arm.h: Remove.
14010         * config/arm/kaos-strongarm.h: Remove.
14011         * config/arm/strongarm-coff.h: Remove.
14012         * config/arm/strongarm-elf.h: Remove.
14013         * config/arm/strongarm-pe.h: Remove.
14014         * config/arm/t-strongarm-pe: Remove.
14015         * config/arm/t-xscale-coff: Remove.
14016         * config/arm/t-xscale-elf: Remove.
14017         * config/arm/xscale-coff.h: Remove.
14018         * config/arm/xscale-elf.h: Remove.
14019         * config/chorus.h: Remove.
14020         * config/cris/aout.h: Remove.
14021         * config/cris/aout.opt: Remove.
14022         * config/cris/t-aout: Remove.
14023         * config/i386/beos-elf.h: Remove.
14024         * config/i386/kaos-i386.h: Remove.
14025         * config/i386/ptx4-i.h: Remove.
14026         * config/i386/sco5.h: Remove.
14027         * config/i386/sco5.opt: Remove.
14028         * config/i386/sysv4-cpp.h: Remove.
14029         * config/i386/sysv5.h: Remove.
14030         * config/i386/t-beos: Remove.
14031         * config/i386/t-sco5: Remove.
14032         * config/i386/t-uwin: Remove.
14033         * config/i386/uwin.asm: Remove.
14034         * config/i386/uwin.h: Remove.
14035         * config/kaos.h: Remove.
14036         * config/mips/windiss.h: Remove.
14037         * config/mt: Remove directory.
14038         * config/pa/pa-osf.h: Remove.
14039         * config/pa/pa-pro-end.h: Remove.
14040         * config/pa/t-pro: Remove.
14041         * config/ptx4.h: Remove.
14042         * config/rs6000/beos.h: Remove.
14043         * config/rs6000/kaos-ppc.h: Remove.
14044         * config/rs6000/t-beos: Remove.
14045         * config/rs6000/windiss.h: Remove.
14046         * config/sh/kaos-sh.h: Remove.
14047         * config/sol2-6.h: Remove.
14048         * config/sparc/sol26-sld.h: Remove.
14049         * config/sparc/sysv4-only.h: Remove.
14050         * config/vax/bsd.h: Remove.
14051         * config/vax/t-memfuncs: Remove.
14052         * config/vax/ultrix.h: Remove.
14053         * config/vax/vaxv.h: Remove.
14054         * config/windiss.h: Remove.
14055
14056 2008-06-06  Uros Bizjak <ubizjak@gmail.com>
14057
14058         PR rtl-optimization/36438
14059         * cse.c (fold_rtx) [ASHIFT, LSHIFTRT, ASHIFTRT]: Break out early
14060         for vector shifts with constant scalar shift operands.
14061
14062 2008-06-06  Sandip Matte  <sandip@rmicorp.com>
14063
14064         * doc/invoke.texi: Document -march=xlr.
14065         * config/mips/xlr.md: New file.
14066         * config/mips/mips.md: Include it.
14067         (cpu): Add "xlr".
14068         * config/mips/mips.h (PROCESSOR_XLR): New processor_type.
14069         * config/mips/mips.c (mips_cpu_info_table): Add an XLR entry.
14070         (mips_rtx_cost_data): Likewise.
14071
14072 2008-06-06  Nathan Froyd  <froydnj@codesourcery.com>
14073
14074         * config/rs6000/rs6000.c (rs6000_mode_dependent_address): Remove
14075         PRE_INC and PRE_DEC cases.
14076
14077 2008-06-06  Jakub Jelinek  <jakub@redhat.com>
14078
14079         PR rtl-optimization/36419
14080         * except.c (expand_resx_expr): Call do_pending_stack_adjust () before
14081         the emitting jump insn.
14082
14083         PR target/36362
14084         * gimplify.c (gimplify_expr) <case TRUTH_NOT_EXPR>: If *expr_p type
14085         is not bool, boolify the whole *expr_p and convert to the desired type.
14086
14087 2008-06-06  Jakub Jelinek  <jakub@redhat.com>
14088
14089         * c-cppbuiltin.c (c_cpp_builtins): Change _OPENMP value to 200805.
14090         * langhooks.h (struct lang_hooks_for_decls): Add omp_finish_clause.
14091         Add omp_private_outer_ref hook, add another argument to
14092         omp_clause_default_ctor hook.
14093         * langhooks-def.h (LANG_HOOKS_OMP_FINISH_CLAUSE): Define.
14094         (LANG_HOOKS_OMP_PRIVATE_OUTER_REF): Define.
14095         (LANG_HOOKS_OMP_CLAUSE_DEFAULT_CTOR): Change to
14096         hook_tree_tree_tree_tree_null.
14097         (LANG_HOOKS_DECLS): Add LANG_HOOKS_OMP_FINISH_CLAUSE and
14098         LANG_HOOKS_OMP_PRIVATE_OUTER_REF.
14099         * hooks.c (hook_tree_tree_tree_tree_null): New function.
14100         * hooks.h (hook_tree_tree_tree_tree_null): New prototype.
14101         * tree.def (OMP_TASK): New tree code.
14102         * tree.h (OMP_TASK_COPYFN, OMP_TASK_ARG_SIZE, OMP_TASK_ARG_ALIGN,
14103         OMP_CLAUSE_PRIVATE_OUTER_REF, OMP_CLAUSE_LASTPRIVATE_STMT,
14104         OMP_CLAUSE_COLLAPSE_ITERVAR, OMP_CLAUSE_COLLAPSE_COUNT,
14105         OMP_TASKREG_CHECK, OMP_TASKREG_BODY, OMP_TASKREG_CLAUSES,
14106         OMP_TASKREG_FN, OMP_TASKREG_DATA_ARG, OMP_TASK_BODY,
14107         OMP_TASK_CLAUSES, OMP_TASK_FN, OMP_TASK_DATA_ARG,
14108         OMP_CLAUSE_COLLAPSE_EXPR): Define.
14109         (enum omp_clause_default_kind): Add OMP_CLAUSE_DEFAULT_FIRSTPRIVATE.
14110         (OMP_DIRECTIVE_P): Add OMP_TASK.
14111         (OMP_CLAUSE_COLLAPSE, OMP_CLAUSE_UNTIED): New clause codes.
14112         (OMP_CLAUSE_SCHEDULE_AUTO): New schedule kind.
14113         * tree.c (omp_clause_code_name): Add OMP_CLAUSE_COLLAPSE
14114         and OMP_CLAUSE_UNTIED entries.
14115         (omp_clause_num_ops): Likewise.  Increase OMP_CLAUSE_LASTPRIVATE
14116         num_ops to 2.
14117         (walk_tree_1): Handle OMP_CLAUSE_COLLAPSE and OMP_CLAUSE_UNTIED.
14118         Walk OMP_CLAUSE_LASTPRIVATE_STMT.
14119         * tree-pretty-print.c (dump_omp_clause): Handle
14120         OMP_CLAUSE_SCHEDULE_AUTO, OMP_CLAUSE_UNTIED, OMP_CLAUSE_COLLAPSE,
14121         OMP_CLAUSE_DEFAULT_FIRSTPRIVATE.
14122         (dump_generic_node): Handle OMP_TASK and collapsed OMP_FOR loops.
14123         * c-omp.c (c_finish_omp_for): Allow pointer iterators.  Remove
14124         warning about unsigned iterators.  Change decl/init/cond/incr
14125         arguments to TREE_VECs, check arguments for all collapsed loops.
14126         (c_finish_omp_taskwait): New function.
14127         (c_split_parallel_clauses): Put OMP_CLAUSE_COLLAPSE clause to
14128         ws_clauses.
14129         * c-parser.c (c_parser_omp_for_loop): Parse collapsed loops.  Call
14130         default_function_array_conversion on init.  Add par_clauses argument.
14131         If decl is present in parallel's lastprivate clause, change it to
14132         shared and add lastprivate clause for decl to OMP_FOR_CLAUSES.
14133         Add clauses argument, on success set OMP_FOR_CLAUSES to it.  Look up
14134         collapse count in clauses.
14135         (c_parser_omp_for, c_parser_omp_parallel): Adjust
14136         c_parser_omp_for_loop callers.
14137         (OMP_FOR_CLAUSE_MASK): Add 1 << PRAGMA_OMP_CLAUSE_COLLAPSE.
14138         (c_parser_pragma): Handle PRAGMA_OMP_TASKWAIT.
14139         (c_parser_omp_clause_name): Handle collapse and untied clauses.
14140         (c_parser_omp_clause_collapse, c_parser_omp_clause_untied): New
14141         functions.
14142         (c_parser_omp_clause_schedule): Handle schedule(auto).
14143         Include correct location in the error message.
14144         (c_parser_omp_all_clauses): Handle PRAGMA_OMP_CLAUSE_COLLAPSE
14145         and PRAGMA_OMP_CLAUSE_UNTIED.
14146         (OMP_TASK_CLAUSE_MASK): Define.
14147         (c_parser_omp_task, c_parser_omp_taskwait): New functions.
14148         (c_parser_omp_construct): Handle PRAGMA_OMP_TASK.
14149         * tree-nested.c (convert_nonlocal_omp_clauses,
14150         convert_local_omp_clauses): Handle OMP_CLAUSE_LASTPRIVATE_STMT,
14151         OMP_CLAUSE_REDUCTION_INIT, OMP_CLAUSE_REDUCTION_MERGE,
14152         OMP_CLAUSE_COLLAPSE and OMP_CLAUSE_UNTIED.
14153         Don't handle TREE_STATIC or DECL_EXTERNAL VAR_DECLs in
14154         OMP_CLAUSE_DECL.
14155         (conver_nonlocal_reference, convert_local_reference,
14156         convert_call_expr): Handle OMP_TASK the same as OMP_PARALLEL.  Use
14157         OMP_TASKREG_* macros rather than OMP_PARALLEL_*.
14158         (walk_omp_for): Adjust for OMP_FOR_{INIT,COND,INCR} changes.
14159         * tree-gimple.c (is_gimple_stmt): Handle OMP_TASK.
14160         * c-tree.h (c_begin_omp_task, c_finish_omp_task): New prototypes.
14161         * c-pragma.h (PRAGMA_OMP_TASK, PRAGMA_OMP_TASKWAIT): New.
14162         (PRAGMA_OMP_CLAUSE_COLLAPSE, PRAGMA_OMP_CLAUSE_UNTIED): New.
14163         * c-typeck.c (c_begin_omp_task, c_finish_omp_task): New functions.
14164         (c_finish_omp_clauses): Handle OMP_CLAUSE_COLLAPSE and
14165         OMP_CLAUSE_UNTIED.
14166         * c-pragma.c (init_pragma): Init omp task and omp taskwait pragmas.
14167         * c-common.h (c_finish_omp_taskwait): New prototype.
14168         * gimple-low.c (lower_stmt): Handle OMP_TASK.
14169         * tree-parloops.c (create_parallel_loop): Create 1 entry
14170         vectors for OMP_FOR_{INIT,COND,INCR}.
14171         * tree-cfg.c (remove_useless_stmts_1): Handle OMP_* containers.
14172         (make_edges): Handle OMP_TASK.
14173         * tree-ssa-operands.c (get_expr_operands): Handle collapsed OMP_FOR
14174         loops, adjust for OMP_FOR_{INIT,COND,INCR} changes.
14175         * tree-inline.c (estimate_num_insns_1): Handle OMP_TASK.
14176         * builtin-types.def (BT_PTR_ULONGLONG, BT_PTR_FN_VOID_PTR_PTR,
14177         BT_FN_BOOL_ULONGLONGPTR_ULONGLONGPTR,
14178         BT_FN_BOOL_BOOL_ULL_ULL_ULL_ULLPTR_ULLPTR,
14179         BT_FN_BOOL_BOOL_ULL_ULL_ULL_ULL_ULLPTR_ULLPTR,
14180         BT_FN_VOID_OMPFN_PTR_OMPCPYFN_LONG_LONG_BOOL_UINT): New.
14181         * omp-builtins.def (BUILT_IN_GOMP_TASK, BUILT_IN_GOMP_TASKWAIT,
14182         BUILT_IN_GOMP_LOOP_ULL_STATIC_START,
14183         BUILT_IN_GOMP_LOOP_ULL_DYNAMIC_START,
14184         BUILT_IN_GOMP_LOOP_ULL_GUIDED_START,
14185         BUILT_IN_GOMP_LOOP_ULL_RUNTIME_START,
14186         BUILT_IN_GOMP_LOOP_ULL_ORDERED_STATIC_START,
14187         BUILT_IN_GOMP_LOOP_ULL_ORDERED_DYNAMIC_START,
14188         BUILT_IN_GOMP_LOOP_ULL_ORDERED_GUIDED_START,
14189         BUILT_IN_GOMP_LOOP_ULL_ORDERED_RUNTIME_START,
14190         BUILT_IN_GOMP_LOOP_ULL_STATIC_NEXT,
14191         BUILT_IN_GOMP_LOOP_ULL_DYNAMIC_NEXT,
14192         BUILT_IN_GOMP_LOOP_ULL_GUIDED_NEXT,
14193         BUILT_IN_GOMP_LOOP_ULL_RUNTIME_NEXT,
14194         BUILT_IN_GOMP_LOOP_ULL_ORDERED_STATIC_NEXT,
14195         BUILT_IN_GOMP_LOOP_ULL_ORDERED_DYNAMIC_NEXT,
14196         BUILT_IN_GOMP_LOOP_ULL_ORDERED_GUIDED_NEXT,
14197         BUILT_IN_GOMP_LOOP_ULL_ORDERED_RUNTIME_NEXT): New builtins.
14198         * gimplify.c (gimplify_omp_for): Allow pointer type for decl,
14199         handle POINTER_PLUS_EXPR.  If loop counter has been replaced and
14200         original iterator is present in lastprivate clause or if
14201         collapse > 1, set OMP_CLAUSE_LASTPRIVATE_STMT.  Handle collapsed
14202         OMP_FOR loops, adjust for OMP_FOR_{INIT,COND,INCR} changes.
14203         (gimplify_expr): Handle OMP_SECTIONS_SWITCH and OMP_TASK.
14204         (enum gimplify_omp_var_data): Add GOVD_PRIVATE_OUTER_REF.
14205         (omp_notice_variable): Set GOVD_PRIVATE_OUTER_REF if needed,
14206         if it is set, lookup var in outer contexts too.  Handle
14207         OMP_CLAUSE_DEFAULT_FIRSTPRIVATE.  Handle vars that are supposed
14208         to be implicitly determined firstprivate for task regions.
14209         (gimplify_scan_omp_clauses): Set GOVD_PRIVATE_OUTER_REF if needed,
14210         if it is set, lookup var in outer contexts too.  Set
14211         OMP_CLAUSE_PRIVATE_OUTER_REF if GOVD_PRIVATE_OUTER_REF is set.
14212         Handle OMP_CLAUSE_LASTPRIVATE_STMT, OMP_CLAUSE_COLLAPSE and
14213         OMP_CLAUSE_UNTIED.  Take region_type as last argument
14214         instead of in_parallel and in_combined_parallel.
14215         (gimplify_omp_parallel, gimplify_omp_for, gimplify_omp_workshare):
14216         Adjust callers.
14217         (gimplify_adjust_omp_clauses_1): Set OMP_CLAUSE_PRIVATE_OUTER_REF if
14218         GOVD_PRIVATE_OUTER_REF is set.  Call omp_finish_clause langhook.
14219         (new_omp_context): Set default_kind to
14220         OMP_CLAUSE_DEFAULT_UNSPECIFIED for OMP_TASK regions.
14221         (omp_region_type): New enum.
14222         (struct gimplify_omp_ctx): Remove is_parallel and is_combined_parallel
14223         fields, add region_type.
14224         (new_omp_context): Take region_type as argument instead of is_parallel
14225         and is_combined_parallel.
14226         (gimple_add_tmp_var, omp_firstprivatize_variable, omp_notice_variable,
14227         omp_is_private, omp_check_private): Adjust ctx->is_parallel and
14228         ctx->is_combined_parallel checks.
14229         (gimplify_omp_task): New function.
14230         (gimplify_adjust_omp_clauses): Handle OMP_CLAUSE_COLLAPSE and
14231         OMP_CLAUSE_UNTIED.
14232         * omp-low.c (extract_omp_for_data): Use schedule(static)
14233         for schedule(auto).  Handle pointer and unsigned iterators.
14234         Compute fd->iter_type.  Handle POINTER_PLUS_EXPR increments.
14235         Add loops argument.  Extract data for collapsed OMP_FOR loops.
14236         (expand_parallel_call): Assert sched_kind isn't auto,
14237         map runtime schedule to index 3.
14238         (struct omp_for_data_loop): New type.
14239         (struct omp_for_data): Remove v, n1, n2, step, cond_code fields.
14240         Add loop, loops, collapse and iter_type fields.
14241         (workshare_safe_to_combine_p): Disallow combined for if
14242         iter_type is unsigned long long.  Don't combine collapse > 1 loops
14243         unless all bounds and steps are constant.  Adjust extract_omp_for_data
14244         caller.
14245         (expand_omp_for_generic): Handle pointer, unsigned and long long
14246         iterators.  Handle collapsed OMP_FOR loops.  Adjust
14247         for struct omp_for_data changes.  If libgomp function doesn't return
14248         boolean_type_node, add comparison of the return value with 0.
14249         (expand_omp_for_static_nochunk, expand_omp_for_static_chunk): Handle
14250         pointer, unsigned and long long iterators.  Adjust for struct
14251         omp_for_data changes.
14252         (expand_omp_for): Assert sched_kind isn't auto, map runtime schedule
14253         to index 3.  Use GOMP_loop_ull*{start,next} if iter_type is
14254         unsigned long long.  Allocate loops array, pass it to
14255         extract_omp_for_data.  For collapse > 1 loops use always
14256         expand_omp_for_generic.
14257         (omp_context): Add sfield_map and srecord_type fields.
14258         (is_task_ctx, lookup_sfield): New functions.
14259         (use_pointer_for_field): Use is_task_ctx helper.  Change first
14260         argument's type from const_tree to tree.  Clarify comment.
14261         In OMP_TASK disallow copy-in/out sharing.
14262         (build_sender_ref): Call lookup_sfield instead of lookup_field.
14263         (install_var_field): Add mask argument.  Populate both record_type
14264         and srecord_type if needed.
14265         (delete_omp_context): Destroy sfield_map, clear DECL_ABSTRACT_ORIGIN
14266         in srecord_type.
14267         (fixup_child_record_type): Also remap FIELD_DECL's DECL_SIZE{,_UNIT}
14268         and DECL_FIELD_OFFSET.
14269         (scan_sharing_clauses): Adjust install_var_field callers.  For
14270         firstprivate clauses on explicit tasks allocate the var by value in
14271         record_type unconditionally, rather than by reference.
14272         Handle OMP_CLAUSE_PRIVATE_OUTER_REF.  Scan OMP_CLAUSE_LASTPRIVATE_STMT.
14273         Use is_taskreg_ctx instead of is_parallel_ctx.
14274         Handle OMP_CLAUSE_COLLAPSE and OMP_CLAUSE_UNTIED.
14275         (create_omp_child_function_name): Add task_copy argument, use
14276         *_omp_cpyfn* names if it is true.
14277         (create_omp_child_function): Add task_copy argument, if true create
14278         *_omp_cpyfn* helper function.
14279         (scan_omp_parallel): Adjust create_omp_child_function callers.
14280         Rename parallel_nesting_level to taskreg_nesting_level.
14281         (scan_omp_task): New function.
14282         (lower_rec_input_clauses): Don't run constructors for firstprivate
14283         explicit task vars which are initialized by *_omp_cpyfn*.
14284         Pass outer var ref to omp_clause_default_ctor hook if
14285         OMP_CLAUSE_PRIVATE_OUTER_REF or OMP_CLAUSE_LASTPRIVATE.
14286         Replace OMP_CLAUSE_REDUCTION_PLACEHOLDER decls in
14287         OMP_CLAUSE_REDUCTION_INIT.
14288         (lower_send_clauses): Clear DECL_ABSTRACT_ORIGIN if in task to
14289         avoid duplicate setting of fields.  Handle
14290         OMP_CLAUSE_PRIVATE_OUTER_REF.
14291         (lower_send_shared_vars): Use srecord_type if non-NULL.  Don't
14292         copy-out if TREE_READONLY, only copy-in.
14293         (expand_task_copyfn): New function.
14294         (expand_task_call): New function.
14295         (struct omp_taskcopy_context): New type.
14296         (task_copyfn_copy_decl, task_copyfn_remap_type, create_task_copyfn):
14297         New functions.
14298         (lower_omp_parallel): Rename to...
14299         (lower_omp_taskreg): ... this.  Use OMP_TASKREG_* macros where needed.
14300         Call create_task_copyfn if srecord_type is needed.  Adjust
14301         sender_decl type.
14302         (task_shared_vars): New variable.
14303         (check_omp_nesting_restrictions): Warn if work-sharing,
14304         barrier, master or ordered region is closely nested inside OMP_TASK.
14305         Add warnings for barrier if closely nested inside of work-sharing,
14306         ordered, or master region.
14307         (scan_omp_1): Call check_omp_nesting_restrictions even for
14308         GOMP_barrier calls.  Rename parallel_nesting_level to
14309         taskreg_nesting_level.  Handle OMP_TASK.
14310         (lower_lastprivate_clauses): Even if some lastprivate is found on a
14311         work-sharing construct, continue looking for them on parent parallel
14312         construct.
14313         (lower_omp_for_lastprivate): Add lastprivate clauses
14314         to the beginning of dlist rather than end.  Adjust for struct
14315         omp_for_data changes.
14316         (lower_omp_for): Add rec input clauses before OMP_FOR_PRE_BODY,
14317         not after it.  Handle collapsed OMP_FOR loops, adjust for
14318         OMP_FOR_{INIT,COND,INCR} changes, adjust extract_omp_for_data caller.
14319         (get_ws_args_for): Adjust extract_omp_for_data caller.
14320         (scan_omp_for): Handle collapsed OMP_FOR
14321         loops, adjust for OMP_FOR_{INIT,COND,INCR} changes.
14322         (lower_omp_single_simple): If libgomp function doesn't return
14323         boolean_type_node, add comparison of the return value with 0.
14324         (diagnose_sb_1, diagnose_sb_2): Handle collapsed OMP_FOR
14325         loops, adjust for OMP_FOR_{INIT,COND,INCR} changes.  Handle OMP_TASK.
14326         (parallel_nesting_level): Rename to...
14327         (taskreg_nesting_level): ... this.
14328         (is_taskreg_ctx): New function.
14329         (build_outer_var_ref, omp_copy_decl): Use is_taskreg_ctx instead
14330         of is_parallel_ctx.
14331         (execute_lower_omp): Rename parallel_nesting_level to
14332         taskreg_nesting_level.
14333         (expand_omp_parallel): Rename to...
14334         (expand_omp_taskreg): ... this.  Use OMP_TASKREG_* macros where needed.
14335         Call omp_task_call for OMP_TASK regions.
14336         (expand_omp): Adjust caller, handle OMP_TASK.
14337         (lower_omp_1): Adjust lower_omp_taskreg caller, handle OMP_TASK.
14338
14339         * bitmap.c (bitmap_default_obstack_depth): New variable.
14340         (bitmap_obstack_initialize, bitmap_obstack_release): Do nothing
14341         if argument is NULL and bitmap_default_obstack is already initialized.
14342         * ipa-struct-reorg.c (do_reorg_1): Call bitmap_obstack_release
14343         at the end.
14344         * matrix-reorg.c (matrix_reorg): Likewise.
14345
14346 2008-06-06  Uros Bizjak  <ubizjak@gmail.com>
14347
14348         * config/i386/i386.md (*indirect_jump): Macroize using P
14349         mode iterator.  Remove !TARGET_64BIT from insn constraints.
14350         (*tablejump_1): Ditto.
14351         (*indirect_jump_rex64): Remove insn pattern.
14352         (*tablejump_1_rex64): Ditto.
14353         (eh_return_<mode>): Macroize using P mode iterator from eh_return_di
14354         and eh_return_si insn patterns.
14355
14356 2008-06-06  Richard Guenther  <rguenther@suse.de>
14357
14358         * tree-ssa-structalias.c (merge_smts_into): Remove.
14359         (find_what_p_points_to): Do not bother to compute the
14360         points-to set for pt_anything pointers.
14361         * tree-ssa-operands.c (get_addr_dereference_operands): No NMT
14362         for pt_anything pointers is ok.
14363
14364 2008-06-06  Jan Hubicka  <jh@suse.cz>
14365
14366         * passes.c (execute_ipa_pass_list): Do not regenerate summaries.
14367
14368 2008-06-06  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
14369
14370         * cgraph.c: Fix typos in comments.
14371         (cgraph_availability_names): Fix string typo.
14372         * fold-const.c: Fix typos in comments.
14373         (fold_binary): Fix typo in warning.
14374         * genautomata.c: Fix typos in comments.
14375         (check_presence_pattern_sets): Fix typo in local variable.
14376         (output_description): Fix typo in output.
14377         * ggc-zone.c (ggc_pch_finish): Fix typo in error message.
14378         * hwint.h: Likewise.
14379         * matrix-reorg.c (check_allocation_function): Likewise.
14380         * omega.c (smooth_weird_equations): Likewise.
14381         * auto-inc-dec.c: Fix typos in comments.
14382         * bb-reorder.c: Likewise.
14383         * builtins.c: Likewise.
14384         * c-common.c: Likewise.
14385         * c-cppbuiltin.c: Likewise.
14386         * c-parser.c: Likewise.
14387         * c-pretty-print.c: Likewise.
14388         * cfgcleanup.c: Likewise.
14389         * cfgexpand.c: Likewise.
14390         * cfghooks.c: Likewise.
14391         * cfglayout.c: Likewise.
14392         * cfgloopmanip.c: Likewise.
14393         * cgraphunit.c: Likewise.
14394         * coverage.c: Likewise.
14395         * dbxout.c: Likewise.
14396         * df-byte-scan.c: Likewise.
14397         * df-core.c: Likewise.
14398         * df-problems.c: Likewise.
14399         * df-scan.c: Likewise.
14400         * dfp.c: Likewise.
14401         * dominance.c: Likewise.
14402         * domwalk.c: Likewise.
14403         * dse.c: Likewise.
14404         * dwarf2out.c: Likewise.
14405         * emit-rtl.c: Likewise.
14406         * et-forest.c: Likewise.
14407         * function.c: Likewise.
14408         * function.h: Likewise.
14409         * gcc.c: Likewise.
14410         * gcov-io.c: Likewise.
14411         * gcov.c: Likewise.
14412         * gcse.c: Likewise.
14413         * genattrtab.c: Likewise.
14414         * ggc-page.c: Likewise.
14415         * gimplify.c: Likewise.
14416         * gthr-lynx.h: Likewise.
14417         * haifa-sched.c: Likewise.
14418         * ipa-cp.c: Likewise.
14419         * ipa-inline.c: Likewise.
14420         * ipa-prop.h: Likewise.
14421         * ipa-pure-const.c: Likewise.
14422         * ipa-struct-reorg.c: Likewise.
14423         * ipa-struct-reorg.h: Likewise.
14424         * ipa-type-escape.c: Likewise.
14425         * ipa.c: Likewise.
14426         * loop-doloop.c: Likewise.
14427         * mips-tfile.c: Likewise.
14428         * mkmap-flat.awk: Likewise.
14429         * mkmap-symver.awk: Likewise.
14430         * modulo-sched.c: Likewise.
14431         * omp-low.c: Likewise.
14432         * optabs.c: Likewise.
14433         * optabs.h: Likewise.
14434         * opts.c: Likewise.
14435         * passes.c: Likewise.
14436         * postreload-gcse.c: Likewise.
14437         * postreload.c: Likewise.
14438         * predict.c: Likewise.
14439         * pretty-print.h: Likewise.
14440         * profile.c: Likewise.
14441         * protoize.c: Likewise.
14442         * ra-conflict.c: Likewise.
14443         * real.c: Likewise.
14444         * recog.c: Likewise.
14445         * regclass.c: Likewise.
14446         * regs.h: Likewise.
14447         * reload.c: Likewise.
14448         * rtl-error.c: Likewise.
14449         * rtlanal.c: Likewise.
14450         * scan.h: Likewise.
14451         * sched-rgn.c: Likewise.
14452         * see.c: Likewise.
14453         * stmt.c: Likewise.
14454         * target.h: Likewise.
14455         * tree-dfa.c: Likewise.
14456         * tree-eh.c: Likewise.
14457         * tree-flow-inline.h: Likewise.
14458         * tree-inline.c: Likewise.
14459         * tree-into-ssa.c: Likewise.
14460         * tree-loop-distribution.c: Likewise.
14461         * tree-nested.c: Likewise.
14462         * tree-parloops.c: Likewise.
14463         * tree-pass.h: Likewise.
14464         * tree-pretty-print.c: Likewise.
14465         * tree-profile.c: Likewise.
14466         * tree-scalar-evolution.c: Likewise.
14467         * tree-sra.c: Likewise.
14468         * tree-ssa-alias-warnings.c: Likewise.
14469         * tree-ssa-ccp.c: Likewise.
14470         * tree-ssa-coalesce.c: Likewise.
14471         * tree-ssa-dom.c: Likewise.
14472         * tree-ssa-dse.c: Likewise.
14473         * tree-ssa-forwprop.c: Likewise.
14474         * tree-ssa-live.c: Likewise.
14475         * tree-ssa-live.h: Likewise.
14476         * tree-ssa-loop-im.c: Likewise.
14477         * tree-ssa-loop-ivopts.c: Likewise.
14478         * tree-ssa-loop-niter.c: Likewise.
14479         * tree-ssa-loop-prefetch.c: Likewise.
14480         * tree-ssa-phiopt.c: Likewise.
14481         * tree-ssa-phiprop.c: Likewise.
14482         * tree-ssa-sccvn.c: Likewise.
14483         * tree-ssa-ter.c: Likewise.
14484         * tree-ssa-threadupdate.c: Likewise.
14485         * tree-ssa.c: Likewise.
14486         * tree-vect-analyze.c: Likewise.
14487         * tree-vect-transform.c: Likewise.
14488         * tree-vectorizer.c: Likewise.
14489         * tree-vn.c: Likewise.
14490         * tree-vrp.c: Likewise.
14491         * tree.c: Likewise.
14492         * tree.def: Likewise.
14493         * tree.h: Likewise.
14494         * unwind-dw2-fde.c: Likewise.
14495         * unwind.inc: Likewise.
14496         * value-prof.c: Likewise.
14497         * vmsdbgout.c: Likewise.
14498
14499 2008-06-05  David Edelsohn  <edelsohn@gnu.org>
14500
14501         * config/rs6000/xcoff.h (ASM_OUTPUT_SPECIAL_POOL_ENTRY_P): Do not
14502         always place FP constants in the TOC for TARGET_POWERPC64.
14503         * config/rs6000/linux64.h (ASM_OUTPUT_SPECIAL_POOL_ENTRY_P): Same.
14504
14505 2008-06-05  Joseph Myers  <joseph@codesourcery.com>
14506
14507         * config.gcc (powerpc-*-linux*spe*): Use t-dfprules.
14508         * config/rs6000/dfp.md (negdd2, absdd2, negtd2, abstd2): Do not
14509         enable for TARGET_E500_DOUBLE.
14510         (*movdd_softfloat32): Also enable for !TARGET_FPRS.
14511         * config/rs6000/rs6000.c (invalid_e500_subreg): Treat decimal
14512         floating-point modes like integer modes for E500 double.
14513         (rs6000_legitimate_offset_address_p): Likewise.
14514         (rs6000_legitimize_address): Likewise.  Do not allow REG+REG
14515         addressing for DDmode for E500 double.
14516         (rs6000_hard_regno_nregs): Do not treat decimal floating-point
14517         modes as using 64-bits of registers for E500 double.
14518         (spe_build_register_parallel): Do not handle DDmode or TDmode.
14519         (rs6000_spe_function_arg): Do not handle DDmode or TDmode
14520         specially for E500 double.
14521         (function_arg): Do not call rs6000_spe_function_arg for DDmode or
14522         TDmode for E500 double.
14523         (rs6000_gimplify_va_arg): Only handle SDmode in registers
14524         specially if TARGET_HARD_FLOAT && TARGET_FPRS.
14525         (rs6000_split_multireg_move): Do not handle TDmode specially for
14526         E500 double.
14527         (spe_func_has_64bit_regs_p): Do not treat DDmode or TDmode as
14528         using 64-bit registers for E500 double.
14529         (emit_frame_save): Do not handle DDmode specially for E500 double.
14530         (gen_frame_mem_offset): Likewise.
14531         (rs6000_function_value): Do not call spe_build_register_parallel
14532         for DDmode or TDmode.
14533         (rs6000_libcall_value): Likewise.
14534         * config/rs6000/rs6000.h (LOCAL_ALIGNMENT, MEMBER_TYPE_FORCES_BLK,
14535         DATA_ALIGNMENT, CLASS_MAX_NREGS): Do not handle DDmode specially
14536         for E500 double.
14537
14538 2008-06-04  H.J. Lu  <hongjiu.lu@intel.com>
14539
14540         * config/i386/i386.c (setup_incoming_varargs_64): Fix a typo
14541         in comments.
14542
14543 2008-06-04  Junjie Gu <jgu@tensilica.com>
14544
14545         * config/xtensa/lib2funcs.S (__xtensa_nonlocal_goto): Use unsigned
14546         comparison for frame pointers.
14547
14548 2008-06-04  Andy Hutchinson  <hutchinsonandy@aim.com>
14549
14550         PR target/27386
14551         * config/avr/avr.h (PUSH_ROUNDING): Remove.
14552
14553 2008-06-04  Andy Hutchinson  <hutchinsonandy@aim.com>
14554
14555         PR target/30243
14556         * builtins.c (expand_builtin_signbit): Don't take lowpart when
14557         register is already smaller or equal to required mode.
14558
14559 2008-06-04  Xinliang David Li  <davidxl@google.com>
14560
14561         * tree-call-cdce.c: New file.
14562         (cond_dead_built_in_calls): New static variable.
14563         (input_domain): New struct.
14564         (check_pow): New function.
14565         (check_builtin_call): Ditto.
14566         (check_target_format): Ditto.
14567         (is_call_dce_candidate): Ditto.
14568         (gen_one_condition): Ditto.
14569         (gen_conditions_for_domain): Ditto.
14570         (get_domain): Ditto.
14571         (gen_conditions_for_pow_cst_base): Ditto.
14572         (gen_conditions_for_pow_int_base): Ditto.
14573         (gen_conditions_for_pow): Ditto.
14574         (get_no_error_domain): Ditto.
14575         (gen_shrink_wrap_conditions): Ditto.
14576         (shrink_wrap_one_built_in_call): Ditto.
14577         (shink_wrap_conditional_dead_built_in_calls): Ditto.
14578         (tree_call_cdce): Ditto.
14579         (gate_call_cdce): Ditto.
14580         (pass_call_cdce): New gimple pass.
14581         * passes.c: (init_optimization_passes): New pass.
14582         * tree-pass.h: New pass declaration.
14583         * opts.c (decode_options): New flag setting.
14584         * common.opt: Add -ftree-builtin-call-dce flag.
14585         * Makefile.in: Add new source file.
14586         * tempvar.def: New tv_id.
14587         * doc/invoke.texi (-ftree-builtin-call-dce): New flag.
14588
14589 2008-06-04  Richard Guenther  <rguenther@suse.de>
14590
14591         * tree-flow-inline.h (is_global_var): Do not check TREE_STATIC on MTAGs.
14592         (is_call_clobbered): Always check var_ann->call_clobbered.
14593         (mark_call_clobbered): Always set var_ann->call_clobbered.
14594         (clear_call_clobbered): Always clear var_ann->call_clobbered.
14595         * tree-ssa-alias.c (mark_non_addressable): Use clear_call_clobbered.
14596         (reset_alias_info): Clear call clobbering info on MTAGs and
14597         globals as well.
14598         (set_pt_anything): Set pt_global_mem.
14599         (create_tag_raw): Adjust comment.
14600         (may_be_aliased): Do not check TREE_PUBLIC on MTAGs.
14601
14602 2008-06-04  Joseph Myers  <joseph@codesourcery.com>
14603             Maxim Kuvyrkov  <maxim@codesourcery.com>
14604
14605         * config/m68k/m68k.opt (mxgot): New option.
14606         * config/m68k/m68k.c (legitimize_pic_address): Handle -mxgot.
14607         (m68k_output_addr_const_extra): New.
14608         * config/m68k/m68k.h (OUTPUT_ADDR_CONST_EXTRA): New.
14609         * config/m68k/m68k-protos.h (m68k_output_addr_const_extra): Declare.
14610         * config/m68k/m68k.md (UNSPEC_GOTOFF): Define.
14611         * doc/invoke.texi (M680x0 Options): Document -mxgot.
14612
14613 2008-06-04  Richard Guenther  <rguenther@suse.de>
14614
14615         * tree-ssa-structalias.c (handle_ptr_arith): Correctly handle
14616         negative or non-representable offsets.
14617
14618 2008-06-03  H.J. Lu  <hongjiu.lu@intel.com>
14619
14620         * config/i386/i386.c (ix86_gen_leave): New.
14621         (ix86_gen_pop1): Likewise.
14622         (ix86_gen_add3): Likewise.
14623         (ix86_gen_sub3): Likewise.
14624         (ix86_gen_sub3_carry): Likewise.
14625         (ix86_gen_one_cmpl2): Likewise.
14626         (ix86_gen_monitor): Likewise.
14627         (override_options): Initialize ix86_gen_leave, ix86_gen_pop1,
14628         ix86_gen_add3, ix86_gen_sub3, ix86_gen_sub3_carry,
14629         ix86_gen_one_cmpl2 and ix86_gen_monitor.
14630         (ix86_file_end): Use mov%z0 instead of mov{q}/mov{l}.
14631         (output_set_got): Use mov%z0, pop%z0 and add%z0 instead of
14632         mov{q}/mov{l}, pop{q}/pop{l} and add{q}/add{l}.
14633         (ix86_expand_epilogue): Updated.
14634         (print_operand): Handle integer register operand for 'z'.
14635         (ix86_expand_strlensi_unroll_1): Likewise.
14636         (ix86_expand_strlen): Likewise.
14637         (ix86_expand_builtin): Likewise.
14638         (x86_output_mi_thunk): Use mov%z1 and add%z1 instead of
14639         mov{q}/mov{l} and add{q}/add{l}.
14640
14641 2008-06-03  Kai Tietz  <kai.tietz@onevision.com>
14642
14643         * config/i386/i386.md (P): New mode iterator.
14644         (SFmode push_operand splitter): Macroize DImode and SImode pushes
14645         using P mode iterator.
14646         (DFmode push_operand splitter): Ditto.
14647         (XFmode push_operand splitter): Ditto.
14648         (DFmode float_extend SFmode push_operand splitter): Ditto.
14649         (XFmode float_extend SFmode push_operand splitter): Do not generate
14650         SImode pushes for 64bit target.  Macroize Dimode and SImode
14651         pushes using P mode iterator.
14652         (XFmode float_extend DFmode push_operand splitter): Ditto.
14653
14654 2008-06-03  Kai Tietz  <kai.tietz@onevision.com>
14655
14656         * config/i386/i386-protos.h (ix86_reg_parm_stack_space): New.
14657         * config/i386/i386.h (ix86_reg_parm_stack_space): Removed prototype.
14658         * config/i386/i386.c (ix86_reg_parm_stack_space): Changed
14659         return type to int.
14660         (ix86_call_abi_override): Remove check for call_used_regs.
14661
14662 2008-06-03  Richard Guenther  <rguenther@suse.de>
14663
14664         * tree-ssa-structalias.c (find_func_aliases): Add constraints
14665         for the lhs of calls if the return type contains pointers.
14666
14667 2008-06-03  Kai Tietz  <kai.tietz@onevision.com>
14668
14669         * doc/tm.texi (OVERRIDE_ABI_FORMAT): New.
14670         * doc/extend.texi (ms_abi,sysv_abi): New attribute description.
14671         * function.c (allocate_struct_function): Use of OVERRIDE_ABI_FORMAT.
14672         * config/i386/cygming.h (TARGET_64BIT_MS_ABI): Make use
14673         of cfun and DEFAULT_ABI to deceide abi mode.
14674         (DEFAULT_ABI): New.
14675         (REG_PARM_STACK_SPACE): Removed.
14676         (OUTGOING_REG_PARM_STACK_SPACE): Removed.
14677         (STACK_BOUNDARY): Use default target to deceide stack boundary.
14678         * config/i386/i386-protos.h (ix86_cfun_abi): New.
14679         (ix86_function_abi): Likewise.
14680         (ix86_function_type_abi): Likewise.
14681         (ix86_call_abi_override): Likewise.
14682         * confid/i386/i386.md (SSE_REGPARM_MAX): Replaced by abi
14683         specific define X86_64_SSE_REGPARM_MAX/X64_SSE_REGPARM_MAX.
14684         * config/i386/i386.c (override_options): Replace TARGET_64BIT_MS_ABI.
14685         (X86_64_VARARGS_SIZE): Replace REGPARM_MAX and SSE_REGPARM_MAX by abi
14686         specific defines.
14687         (X86_64_REGPARM_MAX): New.
14688         (X86_64_SSE_REGPARM_MAX): New.
14689         (X64_REGPARM_MAX): New.
14690         (X64_SSE_REGPARM_MAX): New.
14691         (X86_32_REGPARM_MAX): New.
14692         (X86_32_SSE_REGPARM_MAX): New.
14693         (ix86_handle_cconv_attribute): Replace TARGET_64BIT_MS_ABI.
14694         (ix86_function_regparm): Handle user calling abi.
14695         (ix86_function_arg_regno_p): Replace TARGET_64BIT_MS_ABI
14696         by DEFAULT_ABI versus SYSV_ABI check.
14697         (ix86_reg_parm_stack_space): New.
14698         (ix86_function_type_abi): New.
14699         (ix86_call_abi_override): New.
14700         (ix86_function_abi): New.
14701         (ix86_cfun_abi): New.
14702         (init_cumulative_args): Call abi specific initialization.
14703         (function_arg_advance): Remove TARGET_64BIT_MS_ABI.
14704         (function_arg_64): Extend SSE_REGPARM_MAX check.
14705         (function_arg (): Remove TARGET_64BIT_MS_ABI.
14706         (ix86_pass_by_reference): Likewise.
14707         (ix86_function_value_regno_p): Likewise.
14708         (function_value_64): Replace REGPARM_MAX, and SSE_REGPARM_MAX.
14709         (ix86_function_value_1): Replace TARGET_64BIT_MS_ABI.
14710         (return_in_memory_ms_64): Replace TARGET_64BIT_MS_ABI.
14711         (ix86_build_builtin_va_list): Replace TARGET_64BIT_MS_ABI.
14712         (setup_incoming_varargs_64): Adjust regparm for call abi.
14713         (ix86_setup_incoming_varargs): Replace TARGET_64BIT_MS_ABI.
14714         (ix86_va_start): Likewise.
14715         (ix86_gimplify_va_arg): Likewise.
14716         (ix86_expand_prologue): Likewise.
14717         (output_pic_addr_const): Likewise.
14718         (ix86_init_machine_status): Initialize call_abi by DEFAULT_ABI.
14719         (x86_this_parameter): Replace TARGET_64BIT_MS_ABI.
14720         (x86_output_mi_thunk): Likewise.
14721         (x86_function_profiler): Likewise.
14722         * config/i386/i386.h (TARGET_64BIT_MS_ABI): Use ix64_cfun_abi.
14723         (SYSV_ABI, MS_ABI): New constants.
14724         (DEFAULT_ABI): New.
14725         (init_regs): Add prototype of function in regclass.c file.
14726         (OVERRIDE_ABI_FORMAT): New.
14727         (CONDITIONAL_REGISTER_USAGE): Remove TARGET_64BIT_MS_ABI part.
14728         (REG_PARM_STACK_SPACE): Use ix86_reg_parm_stack_space.
14729         (OUTGOING_REG_PARM_STACK_SPACE): New.
14730         (ix86_reg_parm_stack_space): New prototype.
14731         (CUMULATIVE_ARGS): Add call_abi member.
14732         (machine_function): Add call_abi member.
14733         * config/i386/mingw32.h (EXTRA_OS_CPP_BUILTINS): Replace
14734         TARGET_64BIT_MS_ABI by DEFAULT_ABI compare to MS_ABI.
14735
14736 2008-06-02  Andy Hutchinson  <hutchinsonandy@aim.com>
14737
14738         PR target/34879
14739         * config/avr/avr.c (TARGET_BUILTIN_SETJMP_FRAME_VALUE): Redefine.
14740         (avr_builtin_setjmp_frame_value): New function.
14741         * config/avr/avr.md (nonlocal_goto_receiver): Define.
14742         (nonlocal_goto): Define.
14743
14744 2008-06-02  Richard Sandiford  <rdsandiford@googlemail.com>
14745
14746         * config/mips/mips.c (mips_emit_loadgp): Return early if
14747         there is nothing do to, otherwise emit a blockage if
14748         !TARGET_EXPLICIT_RELOCS || crtl->profile.
14749         * config/mips/mips.md (loadgp_blockage): Use SI rather than DI.
14750
14751 2008-06-02  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
14752
14753         * configure.ac: Drop unneeded backslash ending up in config.in.
14754         * acinclude.m4: Likewise.
14755         * config.in: Regenerate.
14756
14757 2008-05-26  Jan Hubicka  <jh@suse.cz>
14758
14759         * predict.c (maybe_hot_frequency_p): Break out of...
14760         (maybe_hot_bb_p): ... here.
14761         (maybe_hot_edge_p): New.
14762         * tree-ssa-coalesce.c (coalesce_cost_edge): Compute cost based on edge.
14763         * basic-block.h (maybe_hot_edge_p): Declare.
14764
14765 2008-05-31  Uros Bizjak  <ubizjak@gmail.com>
14766
14767         * config/i386/i386.md (*cmpfp_<mode>): Enable for optimize_size.
14768         (*cmpfp_<mode>_cc): Ditto.
14769         (*fp_jcc_8<mode>_387): Ditto.
14770         (*fop_<MODEF:mode>_2_i387): Ditto.
14771         (*fop_<MODEF:mode>_3_i387): Ditto.
14772         (*fop_xf_2_i387): Ditto.
14773         (*fop_xf_3_i387): Ditto.
14774
14775 2008-06-02  Tomas Bily  <tbily@suse.cz>
14776
14777         * tree-ssa-ifcombine.c (get_name_for_bit_test): Use CONVERT_EXPR_P.
14778
14779 2008-06-01  Richard Sandiford  <rdsandiford@googlemail.com>
14780
14781         * config/mips/mips.c (mips_valid_offset_p): New function.
14782         (mips_valid_lo_sum_p): Likewise.
14783         (mips_classify_address): Use them.
14784         (mips_force_address): New function.
14785         (mips_legitimize_address): Use it.
14786         * config/mips/mips.md (MOVE128): New mode iterator.
14787         (movtf): Require TARGET_64BIT.  Remove empty strings.
14788         (*movtf_internal): Rename to...
14789         (*movtf): ...this and require !TARGET_MIPS16.  Use "m" instead
14790         of "R" and use {,fp}{load,store} attributes instead of "multi".
14791         Use a separate define_split.
14792         (*movtf_mips16): New pattern.
14793
14794 2008-06-01  Richard Sandiford  <rdsandiford@googlemail.com>
14795
14796         * config/mips/mips-protos.h (mips_expand_before_return): Declare.
14797         * config/mips/mips.c (mips_expand_before_return): New function.
14798         (mips_expand_epilogue): Call it.
14799         * config/mips/mips.md (return): Turn into a define_expand.
14800         (*return): New insn.
14801
14802 2008-06-01  Richard Sandiford  <rdsandiford@googlemail.com>
14803
14804         * rtl.h (emit_clobber, gen_clobber, emit_use, gen_use): Declare.
14805         * emit-rtl.c (emit_clobber, gen_clobber, emit_use, gen_use): New
14806         functions.  Do not emit uses and clobbers of CONCATs; individually
14807         use and clobber their operands.
14808         * builtins.c (expand_builtin_setjmp_receiver): Use emit_clobber,
14809         gen_clobber, emit_use and gen_use.
14810         (expand_builtin_longjmp, expand_builtin_nonlocal_goto): Likewise.
14811         (expand_builtin_return): Likewise.
14812         * cfgbuild.c (count_basic_blocks): Likewise.
14813         * cfgrtl.c (rtl_flow_call_edges_add): Likewise.
14814         * explow.c (emit_stack_restore): Likewise.
14815         * expmed.c (extract_bit_field_1): Likewise.
14816         * expr.c (convert_move, emit_move_complex_parts): Likewise.
14817         (emit_move_multi_word, store_constructor): Likewise.
14818         * function.c (do_clobber_return_reg, do_use_return_reg): Likewise.
14819         (thread_prologue_and_epilogue_insns): Likewise.
14820         * lower-subreg.c (resolve_simple_move): Likewise.
14821         * optabs.c (widen_operand, expand_binop): Likewise.
14822         (expand_doubleword_bswap, emit_no_conflict_block): Likewise.
14823         * reload.c (find_reloads): Likewise.
14824         * reload1.c (eliminate_regs_in_insn): Likewise.
14825         * stmt.c (expand_nl_goto_receiver): Likewise.
14826         * config/alpha/alpha.md (builtin_longjmp): Likewise.
14827         * config/arc/arc.md (*movdi_insn, *movdf_insn): Likewise.
14828         * config/arm/arm.c (arm_load_pic_register): Likewise.
14829         (thumb1_expand_epilogue, thumb_set_return_address): Likewise.
14830         * config/arm/arm.md (untyped_return): Likewise.
14831         * config/arm/linux-elf.h (PROFILE_HOOK): Likewise.
14832         * config/avr/avr.c (expand_prologue): Likewise.
14833         * config/bfin/bfin.c (do_unlink): Likewise.
14834         * config/bfin/bfin.md (<optab>di3, adddi3, subdi3): Likewise.
14835         * config/cris/cris.c (cris_expand_prologue): Likewise.
14836         * config/darwin.c (machopic_indirect_data_reference): Likewise.
14837         (machopic_legitimize_pic_address): Likewise.
14838         * config/frv/frv.c (frv_frame_access, frv_expand_epilogue): Likewise.
14839         (frv_ifcvt_modify_insn, frv_expand_mdpackh_builtin): Likewise.
14840         * config/i386/i386.c (ix86_expand_vector_move_misalign): Likewise.
14841         (ix86_expand_convert_uns_didf_sse): Likewise.
14842         (ix86_expand_vector_init_general): Likewise.
14843         * config/ia64/ia64.md (eh_epilogue): Likewise.
14844         * config/iq2000/iq2000.c (iq2000_expand_epilogue): Likewise.
14845         * config/m32c/m32c.c (m32c_emit_eh_epilogue): Likewise.
14846         * config/m32r/m32r.c (m32r_reload_lr): Likewise.
14847         (config/iq2000/iq2000.c): Likewise.
14848         * config/mips/mips.md (fixuns_truncdfsi2): Likewise.
14849         (fixuns_truncdfdi2, fixuns_truncsfsi2, fixuns_truncsfdi2): Likewise.
14850         (builtin_longjmp): Likewise.
14851         * config/mn10300/mn10300.md (call, call_value): Likewise.
14852         * config/pa/pa.md (nonlocal_goto, nonlocal_longjmp): Likewise.
14853         * config/pdp11/pdp11.md (abshi2): Likewise.
14854         * config/rs6000/rs6000.c (rs6000_emit_move): Likewise.
14855         * config/s390/s390.c (s390_emit_prologue): Likewise.
14856         * config/s390/s390.md (movmem_long, setmem_long): Likewise.
14857         (cmpmem_long, extendsidi2, zero_extendsidi2, udivmoddi4): Likewise.
14858         (builtin_setjmp_receiver, restore_stack_nonlocal): Likewise.
14859         * config/sh/sh.c (prepare_move_operands): Likewise.
14860         (output_stack_adjust, sh_expand_epilogue): Likewise.
14861         (sh_set_return_address, sh_expand_t_scc): Likewise.
14862         * config/sparc/sparc.c (load_pic_register): Likewise.
14863         * config/sparc/sparc.md (untyped_return, nonlocal_goto): Likewise.
14864         * config/spu/spu.c (spu_expand_epilogue): Likewise.
14865         * config/v850/v850.c (expand_epilogue): Likewise.
14866
14867 2008-05-31  Anatoly Sokolov  <aesok@post.ru>
14868
14869         * config/avr/avr.md (UNSPECV_WRITE_SP_IRQ_ON): New constants.
14870         (UNSPECV_WRITE_SP_IRQ_OFF): (Ditto.).
14871         (movhi_sp_r_irq_off, movhi_sp_r_irq_on): New insn.
14872         * config/avr/avr.c (expand_prologue, expand_epilogue): Use
14873         movhi_sp_r_irq_off and movhi_sp_r_irq_on insns for writing to the
14874         stack pointer register.
14875         (output_movhi): Remove code for interrupt specific writing to the
14876         stack pointer register.
14877
14878 2008-05-31  Richard Guenther  <rguenther@suse.de>
14879
14880         PR tree-optimization/34244
14881         * fold-const.c (tree_expr_nonnegative_warnv_p): Do not ask VRP.
14882         (tree_expr_nonzero_warnv_p): Likewise.
14883         * tree-vrp.c (vrp_expr_computes_nonnegative): Call
14884         ssa_name_nonnegative_p.
14885         (vrp_expr_computes_nonzero): Call ssa_name_nonzero_p.
14886         (extract_range_from_unary_expr): Use vrp_expr_computes_nonzero,
14887         not tree_expr_nonzero_warnv_p.
14888
14889         PR tree-optimization/36262
14890         Revert
14891         2007-11-29  Zdenek Dvorak  <ook@ucw.cz>
14892
14893         PR tree-optimization/34244
14894         * tree-vrp.c (adjust_range_with_scev): Clear scev cache.
14895         (record_numbers_of_iterations): New function.
14896         (execute_vrp): Cache the numbers of iterations of loops.
14897         * tree-scalar-evolution.c (scev_reset_except_niters):
14898         New function.
14899         (scev_reset): Use scev_reset_except_niters.
14900         * tree-scalar-evolution.h (scev_reset_except_niters): Declare.
14901
14902 2008-05-31  Bernd Schmidt  <bernd.schmidt@analog.com>
14903
14904         * config/bfin/bfin.h (TARGET_CPU_CPP_BUILTINS): Define
14905         __WORKAROUND_RETS when appropriate.
14906
14907 2008-05-31  Uros Bizjak  <ubizjak@gmail.com>
14908
14909         * config/i386/i386.md (*fop_<mode>_comm_mixed): Macroize from
14910         *fop_sf_comm_mixed and *fop_df_comm_mixed insn patterns using MODEF
14911         mode iterator.
14912         (*fop_<mode>_comm_sse): Macroize from *fop_sf_comm_sse and
14913         *fop_df_comm_sse insn patterns using MODEF mode iterator.
14914         (*fop_<mode>_comm_i387): Macroize from *fop_sf_comm_i387 and
14915         *fop_df_comm_i387 insn patterns using MODEF mode iterator.
14916         (*fop_<mode>_1_mixed): Macroize from *fop_sf_1_mixed and
14917         *fop_df_1_mixed insn patterns using MODEF mode iterator.
14918         (*fop_<mode>_1_sse): Macroize from *fop_sf_1_sse and
14919         *fop_df_1_sse insn patterns using MODEF mode iterator.
14920         (*fop_<mode>_1_i387): Macroize from *fop_sf_1_i387 and
14921         *fop_df_1_i387 insn patterns using MODEF mode iterator.
14922         (*fop_<MODEF:mode>_2_i387): Macroize from *fop_sf_2<mode>_i387 and
14923         *fop_df_2<mode>_i387 insn patterns using MODEF mode iterator.
14924         (*fop_<MODEF:mode>_3_i387): Macroize from *fop_sf_3<mode>_i387 and
14925         *fop_df_3<mode>_i387 insn patterns using MODEF mode iterator.
14926         (*fop_xf_2_i387): Rename from *fop_xf_2<mode>_i387.
14927         (*fop_xf_3_i387): Rename from *fop_xf_3<mode>_i387.
14928         (*fop_xf_4_i387): Use <MODE> for mode attribute.
14929         (*fop_xf_5_i387): Ditto.
14930         (*fop_xf_6_i387): Ditto.
14931
14932 2008-05-30  Richard Guenther  <rguenther@suse.de>
14933
14934         * builtins.c (build_string_literal): Avoid generating
14935         a non-gimple_val result.
14936
14937 2008-05-30  DJ Delorie  <dj@redhat.com>
14938
14939         * exec-tool.in: Use an environment variable (private) instead of a
14940         file (shared) as a semaphore, so as to not break parallel builds.
14941
14942 2008-05-30  Steven Bosscher  <stevenb.gcc@gmail.com>
14943
14944         * optabs.c (maybe_encapsulate_block): Remove.
14945         (emit_libcall_block): Adjust accordingly.
14946         * optabs.h (maybe_encapsulate_block): Remove prototype.
14947
14948         * config/rs6000/rs6000.c (rs6000_legitimize_tls_address):
14949         Don't use maybe_encapsulate_block.
14950
14951 2008-05-30  Steven Bosscher  <stevenb.gcc@gmail.com>
14952
14953         * config/rs6000/rs6000.c (rs6000_legitimize_address,
14954         rs6000_legitimize_reload_address, rs6000_emit_move): Make sure an
14955         rtx is a SYMBOL_REF before calling get_pool_constant.
14956
14957 2008-05-30  Eric Botcazou  <ebotcazou@adacore.com>
14958
14959         * fold-const.c (fold_unary) <CASE_CONVERT>: Add ??? comment.
14960
14961 2008-05-30  Danny Smith  <dannysmith@users.sourceforge.net>
14962
14963         * incpath.c: Use HOST_LACKS_INODE_NUMBERS conditional
14964         rather than OS names to choose INO_T_EQ definition.
14965         (DIRS_EQ) [!INO_T_EQ]: Don't worry about case in comparison.
14966         (add_path) [!INO_T_EQ]: Use lrealpath to fill canonical_name field.
14967
14968 2008-05-29  Daniel Franke  <franke.daniel@gmail.com>
14969
14970         PR target/36348
14971         * config/darwin-f.c: New.
14972         * config/t-darwin: Added rule to build darwin-f.o.
14973         * config.gcc: Defined new variable, fortran_target_objs.
14974         (*-*-darwin*): Set fortran_target_objs.
14975         * Makefile.in: Defined new variable FORTRAN_TARGET_OBJS.
14976         * configure.ac: Substitute fortran_target_objs, set FORTRAN_TARGET_OBJS.
14977         * configure: Regenerated.
14978
14979 2008-05-29  H.J. Lu  <hongjiu.lu@intel.com>
14980
14981         PR target/35771
14982         * config/i386/i386.c (ix86_function_arg_boundary): Convert to
14983         canonical type if needed.
14984
14985 2008-05-29  Eric Botcazou  <ebotcazou@adacore.com>
14986
14987         * tree-nested.c (check_for_nested_with_variably_modified): Fix typo.
14988
14989 2008-05-29  Richard Guenther  <rguenther@suse.de>
14990
14991         PR tree-optimization/36343
14992         PR tree-optimization/36346
14993         PR tree-optimization/36347
14994         * tree-flow.h (clobber_what_p_points_to): Declare.
14995         * tree-ssa-structalias.c (set_uids_in_ptset): Whether the
14996         pointed-to variable is dereferenced is irrelevant to whether
14997         the pointer can access the pointed-to variable.
14998         (clobber_what_p_points_to): New function.
14999         * tree-ssa-alias.c (set_initial_properties): Use it.
15000         * tree-ssa.c (verify_flow_sensitive_alias_info): Adjust
15001         call clobber check for NMTs.
15002
15003 2008-05-28  Seongbae Park  <seongbae.park@gmail.com>
15004
15005         * value-prof.c (tree_ic_transform): Use HOST_WIDEST_INT_PRINT_DEC
15006         for printing gcov_type.
15007
15008 2008-05-28  Seongbae Park  <seongbae.park@gmail.com>
15009
15010         * tree-ssa-propagate.c (set_rhs): Preserve the histogram
15011         and the eh region information.
15012         * value-prof.c (gimple_move_stmt_histograms): New function.
15013         * value-prof.h (gimple_move_stmt_histograms): New function declaration.
15014
15015 2008-05-28  Andreas Tobler  <a.tobler@schweiz.org>
15016
15017         * config/pa/pa.md: Remove extern frame_pointer_needed declaration.
15018
15019 2008-05-28  Seongbae Park <seongbae.park@gmail.com>
15020
15021         * value-prof.c (tree_ic_transform): Print counts.
15022         * tree-profile.c (tree_gen_ic_func_profiler):
15023         Clear __gcov_indreict_call_callee variable to avoid misattribution
15024         of the profile.
15025
15026 2008-05-28  Rafael Espíndola  <espindola@google.com>
15027
15028         * see.c (see_def_extension_not_merged): Use copy_rtx_if_shared to avoid
15029         invalid sharing.
15030
15031 2008-05-28  Richard Guenther  <rguenther@suse.de>
15032
15033         PR tree-optimization/36339
15034         * tree-ssa-alias.c (set_initial_properties): Move pt_anything
15035         and clobbering code out of the loop.
15036
15037 2008-05-28  Andreas Krebbel  <krebbel1@de.ibm.com>
15038
15039         * config/s390/constraints.md ('b', 'C', 'D', 'e'): New constraint
15040         letters defined.
15041
15042         * config/s390/s390.c (s390_compare_and_branch_condition_mask,
15043         s390_contiguous_bitmask_p, s390_symref_operand_p,
15044         s390_check_symref_alignment, s390_reload_larl_operand,
15045         s390_reload_symref_address): New functions.
15046         (s390_branch_condition_mnemonic): Support compare and branch
15047         instructions.
15048         (s390_mem_constraint): Avoid symrefs to accepted by the 'T'
15049         and 'W' constraints.
15050         (s390_secondary_reload): Add secondary reloads for unaligned
15051         symbol refs or symbol refs to floating point or QI/TI mode
15052         integer values.
15053         (legitimate_address_p): Accept symbol references as addresses.
15054         (s390_expand_insv): Use rotate and insert selected bits
15055         instruction for insv when building for z10.
15056         (print_operand_address): Handle symbol ref addresses.
15057         (print_operand): Output modifier 'c' added for signed byte values.
15058         (s390_encode_section_info): Mark symbol refs with
15059         SYMBOL_FLAG_NOT_NATURALLY_ALIGNED if appropriate.
15060
15061         * config/s390/s390.md (SIL,RRS,RIS): New instruction formats added.
15062         (length attribute): RRF, RRR have 4 byte length.
15063         (FPALL, INTALL): New mode iterators added.
15064         (*tstdi_sign, *cmpdi_ccs_sign, *cmpsi_ccs_sign,
15065         *cmp<mode>_ccs, *cmpdi_ccu_zero, *cmpdi_ccu, *cmpsi_ccu, *cmphi_ccu,
15066         *movdi_64, *movsi_zarch, *movhi, movmem<mode>, *movmem_short,
15067         *extendsidi2, *extendhidi2_extimm, *extendhisi2_extimm,
15068         *zero_extendsidi2, adddi3, *adddi3_31z, *adddi3_31, addsi3,
15069         *add<mode>3, *add<mode>3_carry1_cc, *add<mode>3_carry2_cc,
15070         *add<mode>3_cc, *add<mode>3_imm_cc, *muldi3_sign, muldi3,
15071         *mulsi3_sign, mulsi3, mulsidi3): Patterns enhanced with z10
15072         instructions.
15073         (*cmphi_ccs_z10, *cmpdi_ccs_signhi_rl, *cmpsi_ccu_zerohi_rlsi,
15074         *cmp<GPR:mode>_ccu_zerohi_rldi, *cmp_and_br_signed_<mode>,
15075         *cmp_and_br_unsigned_<mode>, reload<INTALL:mode><P:mode>_tomem_z10,
15076         reload<INTALL:mode><P:mode>_toreg_z10,
15077         reload<FPALL:mode><P:mode>_tomem_z10,
15078         reload<FPALL:mode><P:mode>_toreg_z10,
15079         reload<P:mode>_larl_odd_addend_z10, *execute_rl, *insv<mode>_z10,
15080         *insv<mode>_z10_noshift, *insv<mode>_or_z10_noshift,
15081         *zero_extendhi<mode>2_z10, *cmp_and_trap_signed_int<mode>,
15082         *cmp_and_trap_unsigned_int<mode>, prefetch): New pattern or expander
15083         definition.
15084         (movmem, clrmem, cmpmem): New splitters added.
15085
15086         * config/s390/predicates.md (larl_operand): Use
15087         SYMBOL_REF_FLAGS (op) & SYMBOL_FLAG_ALIGN1 replaced with
15088         SYMBOL_REF_ALIGN1_P.
15089         (s390_signed_integer_comparison,
15090         s390_unsigned_integer_comparison): New predicates.
15091
15092         * config/s390/s390-protos.h (s390_check_symref_alignment,
15093         s390_contiguous_bitmask_p, s390_reload_larl_operand,
15094         s390_reload_symref_address,
15095         s390_compare_and_branch_condition_mask): Prototypes added.
15096
15097         * config/s390/s390.h (TARGET_MEM_CONSTRAINT,
15098         SYMBOL_REF_ALIGN1_P, SYMBOL_FLAG_NOT_NATURALLY_ALIGNED,
15099         SYMBOL_REF_NOT_NATURALLY_ALIGNED_P): Macro definition added.
15100
15101 2008-05-28  Andreas Krebbel  <krebbel1@de.ibm.com>
15102
15103         * config/s390/s390.c (z10_cost): New cost function for z10.
15104         (s390_handle_arch_option, override_options): Support -march=z10 switch.
15105         (s390_issue_rate): Adjust issue rate for z10.
15106         * config/s390/s390.h (processor_type): Add PROCESSOR_2097_Z10.
15107         (processor_flags): Add PF_Z10.
15108         (TARGET_CPU_Z10, TARGET_Z10): New macro definitions.
15109         * config/s390/s390.md (cpu, cpu_facility attributes): Add z10.
15110         * gcc/config.gcc: Add z10.
15111
15112 2008-05-28  Richard Guenther  <rguenther@suse.de>
15113
15114         PR tree-optimization/36291
15115         * tree-flow. h (struct gimple_df): Remove var_anns member.
15116         * tree-flow-inline.h (gimple_var_anns): Remove.
15117         (var_ann): Simplify.
15118         * tree-dfa.c (create_var_ann): Simplify.
15119         (remove_referenced_var): Clear alias info from var_anns of globals.
15120         * tree-ssa.c (init_tree_ssa): Do not allocate var_anns.
15121         (delete_tree_ssa): Clear alias info from var_anns of globals.
15122         Do not free var_anns.
15123         (var_ann_eq): Remove.
15124         (var_ann_hash): Likewise.
15125
15126 2008-05-28  Mark Shinwell  <shinwell@codesourcery.com>
15127
15128         * config/mips/mips.c (mips_cpu_info_table): Add loongson2e
15129         and loongson2f entries.
15130         (mips_rtx_cost_data): Add entries for Loongson-2E/2F.
15131         * config/mips/mips.h (processor_type): Add Loongson-2E
15132         and Loongson-2F entries.
15133         (TARGET_LOONGSON_2E, TARGET_LOONGSON_2F, TARGET_LOONGSON_2EF): New.
15134         (MIPS_ISA_LEVEL_SPEC): Handle Loongson-2E/2F.
15135         * config/mips/mips.md (define_attr cpu): Add loongson2e and loongson2f.
15136         * doc/invoke.texi (MIPS Options): Document loongson2e
15137         and loongson2f processor names.
15138
15139 2008-05-27  H.J. Lu  <hongjiu.lu@intel.com>
15140
15141         PR target/35767
15142         PR target/35771
15143         * config/i386/i386.c (ix86_function_arg_boundary): Use
15144         alignment of canonical type.
15145         (ix86_expand_vector_move): Check unaligned memory access for
15146         all SSE modes.
15147
15148 2008-05-27  H.J. Lu  <hongjiu.lu@intel.com>
15149
15150         * dwarf2out.c (current_fde): Change return type to dw_fde_ref.
15151         Moved to the front of file.
15152
15153 2008-05-27  Xuepeng Guo  <xuepeng.guo@intel.com>
15154             H.J. Lu  <hongjiu.lu@intel.com>
15155
15156         * dwarf2out.c (current_fde): New.
15157         (add_cfi): Use it.
15158         (lookup_cfa:): Likewise.
15159         (dwarf2out_end_epilogue): Likewise.
15160         (dwarf2out_note_section_used): Likewise.
15161
15162 2008-05-27  Michael Matz  <matz@suse.de>
15163
15164         PR c++/27975
15165         * c.opt (Wenum-compare): New warning option.
15166         * doc/invoke.texi  (Warning Options): Document -Wenum-compare.
15167
15168 2008-05-27  Michael Matz  <matz@suse.de>
15169
15170         PR middle-end/36326
15171         * tree-gimple.c (is_gimple_mem_rhs): Remove work-around for
15172         non-BLKmode types.
15173         * tree-tailcall.c (find_tail_calls): Don't mark calls storing
15174         into memory as tail calls.
15175
15176 2008-05-27  Richard Guenther  <rguenther@suse.de>
15177
15178         PR tree-optimization/36339
15179         * tree-ssa-alias.c (set_initial_properties): Escaped pt_anything
15180         pointers cause all addressable variables to be call clobbered.
15181
15182 2008-05-27  Richard Guenther  <rguenther@suse.de>
15183
15184         PR tree-optimization/36245
15185         * tree-ssa-address.c (add_to_parts): Deal with non-pointer bases.
15186
15187 2008-05-27  Andreas Krebbel  <krebbel1@de.ibm.com>
15188
15189         * config/s390/s390.md: Replace all occurences of the 'm'
15190         constraint with 'RT'.
15191
15192 2008-05-27  Andreas Krebbel  <krebbel1@de.ibm.com>
15193
15194         * config/s390/s390.md ("cpu_facility", "enabled"): Attribute
15195         definitions added.
15196         ("*movdi_64dfp", "*movdi_64extimm", "*movdi_64"): Merged into
15197         "*movdi_64".
15198         ("*anddi3_extimm", "*anddi3"): Merged into "*anddi3".
15199         ("*iordi3_extimm", "*iordi3"): Merged into "*iordi3".
15200         ("*xordi3_extimm", "*xordi3"): Merged into "*xordi3".
15201
15202 2008-05-27  Andreas Krebbel  <krebbel1@de.ibm.com>
15203
15204         * reload.c: (find_reloads): Skip alternatives according to the
15205         "enabled" attribute. Constify the constraint variable.
15206         * recog.c (get_attr_enabled): Add default implementation.
15207         (extract_insn): Set the alternative_enabled_p array
15208         in the recog_data struct.
15209         (preprocess_constraints, constrain_operands): Skip
15210         alternatives according to the "enabled" attribute
15211         * recog.h (struct recog_data): New field alternative_enabled_p.
15212         (skip_alternative): New inline function.
15213         * regclass.c: (record_operand_costs): Check the "enabled" attribute.
15214         (record_reg_classes): Skip alternative according to the
15215         "enabled" attribute.
15216
15217         * doc/md.texi: Add documention for the "enabled" attribute.
15218
15219 2008-05-27  Andreas Krebbel  <krebbel1@de.ibm.com>
15220
15221         * defaults.h (TARGET_MEM_CONSTRAINT): New target macro added.
15222         * postreload.c (reload_cse_simplify_operands): Replace 'm'
15223         constraint with TARGET_MEM_CONSTRAINT.
15224         * recog.c (asm_operand_ok, preprocess_constraints,
15225         constrain_operands): Likewise.
15226         * regclass.c (record_reg_classes): Likewise.
15227         * reload.c (find_reloads, alternative_allows_const_pool_ref): Likewise.
15228         * reload1.c (maybe_fix_stack_asms): Likewise.
15229         * stmt.c (parse_output_constraint, parse_input_constraint): Likewise.
15230         * recog.h: Adjust comment.
15231         * genpreds.c (generic_constraint_letters): Remove 'm' constraint.
15232         * genoutput.c (note_constraint): Don't emit error for 'm' constraint.
15233         * doc/md.texi: Add a note to description of 'm' constraint.
15234         * doc/tm.texi: Document the new TARGET_MEM_CONSTRAINT macro.
15235
15236 2008-05-27  Eric Botcazou  <ebotcazou@adacore.com>
15237
15238         * tree-sra.c (sra_type_can_be_decomposed_p) <RECORD_TYPE>: Make sure
15239         that the bitfield is of integral type before testing its precision.
15240
15241 2008-05-27  Trevor Smigiel  <trevor_smigiel@playstation.sony.com>
15242             Sa Liu  <saliu@de.ibm.com>
15243
15244         * config/spu/spu.c (spu_init_libfuncs): Add __multi3, __divti3,
15245         __modti3, __udivti3, __umodti3 and __udivmodti4.
15246         * config/spu/t-spu-elf (LIB2FUNCS_STATIC_EXTRA): Add files
15247         that implement TImode mul and div functions.
15248         * config/spu/multi3.c: New. Implement __multi3.
15249         * config/spu/divmodti4.c: New. Implement _udivmodti4 and others.
15250         * testsuite/gcc.target/spu/muldivti3.c: New. Test TImode mul and div
15251         functions on SPU.
15252
15253 2008-05-26  Steven Bosscher  <stevenb.gcc@gmail.com>
15254
15255         * config/rs6000/rs6000.c (rs6000_legitimize_tls_address): Generate
15256         new tls_gd_* and tls_ld_* insns instead of an insn sequence.
15257         * config/rs6000/rs6000.md (TLSmode, tls_abi_suffix, tls_insn_suffix,
15258         tls_sysv_suffix): New mode and mode attribute iterators.
15259         (tls_gd_32, tls_gd_64, tls_ld_32, tls_ld_64): Remove.
15260         (lts_gd_aix*, tls_gd_sysv*, tls_ld_aix*, tls_ld_sysv*): New patterns.
15261         (tls_dtprel_*, tls_dtprel_ha_*, tls_dtprel_lo_*, tls_got_dtprel_*,
15262         tls_tprel_*, tls_tprel_ha_*, tls_tprel_lo_*, tls_got_tprel_*,
15263         tls_tls_*): Merge 32 bit and 64 bit variants using aforementioned
15264         iterators.
15265
15266 2008-05-26  Eric Botcazou  <ebotcazou@adacore.com>
15267
15268         PR tree-optimization/36329
15269         * tree.h (CALL_CANNOT_INLINE_P): Add access check.
15270         * tree-gimple.h (CALL_STMT_CANNOT_INLINE_P): New macro.
15271         * cgraphbuild.c (initialize_inline_failed): Use the latter
15272         macro in lieu of the former.
15273         * ipa-inline.c (cgraph_mark_inline): Likewise.
15274         (cgraph_decide_inlining_of_small_function): Likewise.
15275         (cgraph_decide_inlining): Likewise.
15276         (cgraph_decide_inlining_incrementally): Likewise.
15277
15278 2008-05-26  Tristan Gingold  <gingold@adacore.com>
15279             Anatoly Sokolov  <aesok@post.ru>
15280
15281         * config/avr/avr.md ("call_prologue_saves"): Use hi8(gs())/lo8(gs())
15282         instead of pm_lo8/pm_hi8 to makes this call working on avr6.
15283         * config/avr/avr.c (expand_prologue): Tune "call_prologue"
15284         optimization for 'avr6' architecture.
15285
15286 2008-05-26  Andy Hutchinson  <hutchinsonandy@aim.com>
15287
15288         PR target/34932
15289         * config/avr/avr.md (*addhi3_zero_extend2): Remove.
15290
15291 2008-05-26  Richard Guenther  <rguenther@suse.de>
15292
15293         * tree-ssa-sccvn.c (expr_has_constants): Declare.
15294         (visit_reference_op_load): Initialize VN_INFO->has_constants properly.
15295
15296 2008-05-26  H.J. Lu  <hongjiu.lu@intel.com>
15297
15298         PR middle-end/36253
15299         * caller-save.c (insert_restore): Verify alignment of spill space.
15300         (insert_save): Likewise.
15301         * cfgexpand.c (LOCAL_ALIGNMENT): Removed.
15302         * defaults.h (LOCAL_ALIGNMENT): New. Provide default.
15303         (STACK_SLOT_ALIGNMENT): Likewise.
15304         * function.c (LOCAL_ALIGNMENT): Removed.
15305         (get_stack_local_alignment): New.
15306         (assign_stack_local): Use it.  Set alignment on stack slot.
15307         (assign_stack_temp_for_type): Use get_stack_local_alignment.
15308         * config/i386/i386.h (LOCAL_ALIGNMENT): Updated.
15309         (STACK_SLOT_ALIGNMENT): New.
15310         * config/i386/i386.c (ix86_local_alignment): Handle caller-save
15311         stack slot in XFmode.
15312
15313         * doc/tm.texi (STACK_SLOT_ALIGNMENT): New.
15314
15315 2008-05-26  Kai Tietz  <kai.tietz@onevision.com>
15316
15317         PR/36321
15318         * config/i386/i386.md (allocate_stack_worker_64): Make sure
15319         argument operand in rax isn't removed.
15320
15321 2008-05-26  Richard Guenther  <rguenther@suse.de>
15322
15323         PR middle-end/36300
15324         * fold-const.c (extract_muldiv_1): Use TYPE_OVERFLOW_WRAPS,
15325         not TYPE_UNSIGNED.  Use TYPE_PRECISION instead of GET_MODE_SIZE.
15326
15327 2008-05-26  Daniel Franke  <franke.daniel@gmail.com>
15328
15329         PR bootstrap/36331
15330         * c-cppbuiltin.c (define__GNUC__): Re-add definition of __GNUG__.
15331
15332 2008-05-26  Dominique Dhumieres  <dominiq@lps.ens.fr>
15333
15334         * config/darwin-c.c: Include "incpath.h" instead of "c-incpath.h".
15335         * config/t-darwin: Use "incpath.h" instead of "c-incpath.h".
15336
15337 2008-05-25  Eric Botcazou  <ebotcazou@adacore.com>
15338
15339         * tree-nested.c (convert_tramp_reference) <ADDR_EXPR>: Do not
15340         build a trampoline if we don't want one.
15341         * varasm.c (initializer_constant_valid_p) <ADDR_EXPR>: Do not
15342         return zero for nested functions if we don't want a trampoline.
15343
15344 2008-05-26  Daniel Franke  <franke.daniel@gmail.com>
15345
15346         * doc/invoke.texi: Added f77, f77-cpp-input to list of file types.
15347
15348 2008-05-26  Daniel Franke  <franke.daniel@gmail.com>
15349
15350         PR fortran/18428
15351         * c.opt: Removed undocumented option '-lang-fortran'.
15352         * c-common.h: Removed global variable 'lang_fortran'.
15353         * c-opts.c (c_common_handle_option): Removed code to handle
15354         option '-lang-fortran'. Updated includes.
15355         * c-cppbuiltin.c (c_cpp_builtins): Removed conditional
15356         definition of '__GFORTRAN__'.
15357         (define__GNUC__): Reimplemented to use BASEVER and
15358         cpp_define_formatted.
15359         (builtin_define_with_value_n): Removed.
15360         * c-incpath.h: Renamed to ...
15361         * incpath.h: ... this.
15362         * c-incpath.c: Renamed to ...
15363         * incpath.c: ... this. Updated includes.
15364         * fix-header.c: Updated includes.
15365         * Makefile.in: Replaced c-incpath.[ch] by incpath.[ch].
15366         (c-cppbuiltin.o): Added dependency on and definition of BASEVER.
15367         (OBJ-archive): Added cppdefault.o, incpath.o and prefix.o.
15368
15369 2008-05-25  Eric Botcazou  <ebotcazou@adacore.com>
15370
15371         * tree.h: Update the table of flags used on tree nodes.
15372         (TREE_NO_TRAMPOLINE): New accessor for static_flag.
15373         (SAVE_EXPR_RESOLVED_P): Use automatically-built access check.
15374         (FORCED_LABEL): Add access check.
15375         (CALL_EXPR_RETURN_SLOT_OPT): Likewise.
15376         (ASM_INPUT_P): Likewise.
15377         (ASM_VOLATILE_P): Likewise.
15378         (EH_FILTER_MUST_NOT_THROW): Access static_flag directly.
15379         (OMP_SECTION_LAST): Access private_flag directly.
15380         (OMP_RETURN_NOWAIT): Likewise.
15381         (OMP_PARALLEL_COMBINED): Likewise.
15382         (OMP_CLAUSE_PRIVATE_DEBUG): Access public_flag directly.
15383         (OMP_CLAUSE_LASTPRIVATE_FIRSTPRIVATE): Likewise.
15384         * tree-ssa-propagate.c (STMT_IN_SSA_EDGE_WORKLIST): Access
15385         deprecated_flag directly.
15386
15387 2008-05-25  H.J. Lu  <hongjiu.lu@intel.com>
15388
15389         * final.c (frame_pointer_needed): Removed.
15390         * flags.h (frame_pointer_needed): Likewise.
15391
15392         * function.h (rtl_data): Add frame_pointer_needed.
15393         (frame_pointer_needed): New.
15394
15395 2008-05-25  Arthur Loiret  <arthur.loiret@u-psud.fr>
15396
15397         * config.gcc (sh2[lbe]*-*-linux*): Allow target.
15398
15399 2008-05-25  Steven Bosscher  <stevenb.gcc@gmail.com>
15400
15401         * gcse.c (hash_scan_set): Do not pick up a REG_EQUAL value if
15402         SRC is a REG.
15403
15404 2008-05-25  Alan Modra  <amodra@bigpond.net.au>
15405
15406         * c-common.c (strip_array_types): Move function to..
15407         * tree.c: ..here.
15408         (get_inner_array_type): Delete.
15409         * c-common.h (strip_array_types): Move declaration to..
15410         * tree.h: ..here.
15411         (get_inner_array_type): Delete.
15412         * config/i386/i386.c (x86_field_alignment): Use strip_array_types.
15413         * config/rs6000/aix.h (ADJUST_FIELD_ALIGN): Likewise.
15414         * config/rs6000/linux64.h (ADJUST_FIELD_ALIGN): Likewise.
15415         * config/pa/pa.c (emit_move_sequence): Likewise.
15416
15417 2008-05-24  H.J. Lu  <hongjiu.lu@intel.com>
15418
15419         * config/i386/i386.md (*sse_prologue_save_insn): Set length
15420         attribute to 34.
15421
15422 2008-05-24  Andy Hutchinson  <hutchinsonandy@aim.com>
15423
15424         * function.c: Include target hook for nonlocal_goto frame value.
15425
15426 2008-05-24  Richard Guenther  <rguenther@suse.de>
15427
15428         * tree-dfa.c (refs_may_alias_p): Re-instantiate case that a scalar
15429         variable can be only accessed through a pointer or a union.
15430
15431 2008-05-24  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
15432
15433         * builtins.c (fold_builtin_fpclassify): Fix spelling of FP_INFINITE.
15434         * doc/extend.texi: Likewise.
15435
15436 2008-05-23  DJ Delorie  <dj@redhat.com>
15437
15438         * config/m32c/jump.md (untyped_call): Add.
15439
15440         * config/m32c/m32c.c (m32c_return_addr_rtx): Change pointer type
15441         for A24 to PSImode.
15442         (m32c_address_cost): Detail costs for indirect offsets.
15443
15444 2008-05-23  Rafael Espíndola  <espindola@google.com>
15445
15446         * see.c (see_get_extension_data): Don't use SUBREG_REG to test
15447         if a node is a SUBREG.
15448         (see_analyze_one_def): Don't use SUBREG_REG to test if a node
15449         is a SUBREG.
15450
15451 2008-05-23  Paul Brook  <paul@codesourcery.com>
15452             Carlos O'Donell  <carlos@codesourcery.com>
15453
15454         * doc/extend.texi: Clarify use of __attribute__((naked)).
15455         * doc/tm.texi: Document TARGET_ALLOCATE_STACK_SLOTS_FOR_ARGS.
15456         * target.h (gcc_target): Add allocate_stack_slots_for_args.
15457         * function.c (use_register_for_decl): Use
15458         targetm.calls.allocate_stack_slots_for_args.
15459         * target-def.h (TARGET_CALLS): Add TARGET_ALLOCATE_STACK_SLOTS_FOR_ARGS.
15460         * config/arm/arm.c (arm_allocate_stack_slots_for_args): New function.
15461         (TARGET_ALLOCATE_STACK_SLOTS_FOR_ARGS): Define.
15462
15463 2008-05-23  Eric Botcazou  <ebotcazou@adacore.com>
15464
15465         * expr.c (highest_pow2_factor) <BIT_AND_EXPR>: New case.
15466
15467 2008-05-23  Steven Munroe  <sjmunroe@us.ibm.com>
15468
15469         * config/rs6000/darwin-ldouble.c (fmsub): Eliminate the full
15470         PACK/UNPACK between FP_SUB_Q and FD_TRUNC so that the result
15471         is only rounded once.
15472
15473 2008-05-23  Richard Guenther  <rguenther@suse.de>
15474
15475         * tree-ssa-operands.c (mark_difference_for_renaming): Use bitmap_xor.
15476
15477 2008-05-23  Uros Bizjak  <ubizjak@gmail.com>
15478             Jakub Jelinek  <jakub@redhat.com>
15479
15480         PR target/36079
15481         * configure.ac: Handle --enable-cld.
15482         * configure: Regenerated.
15483         * config.gcc: Add USE_IX86_CLD to tm_defines for x86 targets.
15484         * config/i386/i386.h (struct machine_function): Add needs_cld field.
15485         (ix86_current_function_needs_cld): New define.
15486         * config/i386/i386.md (UNSPEC_CLD): New unspec volatile constant.
15487         (cld): New isns pattern.
15488         (strmov_singleop, rep_mov, strset_singleop, rep_stos, cmpstrnqi_nz_1,
15489         cmpstrnqi_1, strlenqi_1): Set ix86_current_function_needs_cld flag.
15490         * config/i386/i386.opt (mcld): New option.
15491         * config/i386/i386.c (ix86_expand_prologue): Emit cld insn if
15492         TARGET_CLD and ix86_current_function_needs_cld.
15493         (override_options): Use -mcld by default for 32-bit code if
15494         USE_IX86_CLD.
15495
15496         * doc/install.texi (Options specification): Document --enable-cld.
15497         * doc/invoke.texi (Machine Dependent Options)
15498         [i386 and x86-64 Options]: Add -mcld option.
15499         (Intel 386 and AMD x86-64 Options): Document -mcld option.
15500
15501 2008-05-23  Kai Tietz  <kai.tietz@onevison.com>
15502         * config/i386/i386.c (return_in_memory_32): Add ATTRIBUTE_UNUSED.
15503         (return_in_memory_64): Likewise.
15504         (return_in_memory_ms_64): Likewise.
15505
15506 2008-05-23  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
15507
15508         * builtin-types.def (BT_FN_INT_INT_INT_INT_INT_INT_VAR): New.
15509         * builtins.c (fold_builtin_fpclassify): New.
15510         (fold_builtin_varargs): Handle BUILT_IN_FPCLASSIFY.
15511         * builtins.def (BUILT_IN_FPCLASSIFY): New.
15512         * c-common.c (handle_type_generic_attribute): Adjust to accept
15513         fixed arguments before an elipsis.
15514         (check_builtin_function_arguments): Handle BUILT_IN_FPCLASSIFY.
15515         * doc/extend.texi: Document __builtin_fpclassify.
15516
15517 2008-05-22  Aldy Hernandez  <aldyh@redhat.com>
15518
15519         * omp-low.c (gate_expand_omp_ssa): Remove.
15520         (pass_expand_omp_ssa): Remove.
15521         (gate_expand_omp): Do not check for flag_openmp_ssa.
15522         * common.opt (-fopenmp-ssa): Remove.
15523         * passes.c (init_optimization_passes): Remove pass_expand_omp_ssa.
15524
15525 2008-05-22  Kaz Kojima  <kkojima@gcc.gnu.org>
15526
15527         * config/sh/sh.opt (mfixed-range): New option.
15528         * config/sh/sh-protos.h (sh_fix_range): Declare.
15529         * config/sh/sh.c (sh_fix_range): New function.
15530         * config/sh/sh.h (sh_fixed_range_str): Declare.
15531         (OVERRIDE_OPTIONS): Call sh_fix_range if sh_fixed_range_str
15532         is not empty.
15533         * doc/invoke.texi (SH Options): Document -mfixed-range.
15534
15535 2008-05-22  Kai Tietz  <kai.tietz@onevision.com>
15536
15537         * config/i386/sol2-10.h (SUBTARGET_RETURN_IN_MEMORY): Undefine
15538         it before the redeclaration.
15539
15540 2008-05-22  Anatoly Sokolov <aesok@post.ru>
15541
15542         * config/avr/avr.c (get_sequence_length): Add new function.
15543         (expand_prologue, expand_epilogue): Remove duplicate code.
15544
15545 2008-05-22  Rafael Espíndola  <espindola@google.com>
15546
15547         * see.c (see_pre_insert_extensions): Use copy_rtx to avoid invalid rtx
15548         sharing.
15549
15550 2008-05-22  H.J. Lu  <hongjiu.lu@intel.com>
15551
15552         * defaults.h (UNITS_PER_SIMD_WORD): Add scalar mode as argument.
15553         * doc/tm.texi (UNITS_PER_SIMD_WORD): Likewise.
15554
15555         * tree-vect-analyze.c (vect_compute_data_ref_alignment): Replace
15556         UNITS_PER_SIMD_WORD with GET_MODE_SIZE (TYPE_MODE (vectype)).
15557         (vect_update_misalignment_for_peel): Likewise.
15558         (vector_alignment_reachable_p): Likewise.
15559         * tree-vect-transform.c (vectorizable_load): Likewise.
15560         * tree-vectorizer.c (vect_supportable_dr_alignment): Likewise.
15561         (get_vectype_for_scalar_type): Pass mode of scalar_type
15562         to UNITS_PER_SIMD_WORD.
15563
15564         * config/arm/arm.h (UNITS_PER_SIMD_WORD): Updated.
15565         * config/i386/i386.h (UNITS_PER_SIMD_WORD): Likewise.
15566         * config/mips/mips.h (UNITS_PER_SIMD_WORD): Likewise.
15567         * config/rs6000/rs6000.h (UNITS_PER_SIMD_WORD): Likewise.
15568         * config/sparc/sparc.h (UNITS_PER_SIMD_WORD): Likewise.
15569
15570 2008-05-22  Ira Rosen  <irar@il.ibm.com>
15571
15572         PR tree-optimization/36293
15573         * tree-vect-transform.c (vect_transform_strided_load): Don't check
15574         if the first load must be skipped because of a gap.
15575
15576 2008-05-22  Richard Guenther  <rguenther@suse.de>
15577
15578         * tree-dfa.c (refs_may_alias_p): Exit early if possible.  Handle
15579         more cases of offset disambiguation that is possible if
15580         strict-aliasing rules apply.
15581         * tree-ssa-loop-im.c (mem_refs_may_alias_p): Use refs_may_alias_p
15582         for basic offset and type-based disambiguation.
15583
15584 2008-05-21  H.J. Lu  <hongjiu.lu@intel.com>
15585
15586         * config/i386/i386.c (ix86_expand_vector_init_one_var): Use
15587         ix86_expand_vector_set on V16QImode for SSE4.1.
15588
15589 2008-05-21  Tom Tromey  <tromey@redhat.com>
15590
15591         * c.opt (Wimport): Mark as undocumented.
15592         * doc/invoke.texi (Option Summary): Don't mention -Wimport or
15593         -Wno-import.
15594         (Warning Options): Likewise.
15595         * doc/cppopts.texi: Don't mention -Wimport.
15596
15597 2008-05-21  Sebastian Pop  <sebastian.pop@amd.com>
15598
15599         PR tree-optimization/36287
15600         PR tree-optimization/36286
15601         * lambda-code.c (build_access_matrix): Do not use the loop->num
15602         for computing the number of induction variables: use the loop depth
15603         instead.
15604
15605 2008-05-21  Kai Tietz  <kai.tietz@onevision.com>
15606
15607         PR/36280
15608         * config/i386/cygming.h (ASM_OUTPUT_LABELREF): Honor
15609         option -f(no-)leading-underscore.
15610
15611 2008-05-21  H.J. Lu  <hongjiu.lu@intel.com>
15612
15613         * config/i386/i386.c (ix86_expand_vector_init_general): Use
15614         GET_MODE_NUNITS (mode).
15615
15616 2008-05-21  Peter Bergner  <bergner@vnet.ibm.com>
15617
15618         * doc/invoke.texi: Add cpu_type's 464 and 464fp.
15619         (-mmulhw): Add 464 to description.
15620         (-mdlmzb): Likewise.
15621         * config.gcc: Handle --with-cpu=464 and --with-cpu=464fp.
15622         * config/rs6000/rs6000.c (processor_target_table): Add 464 and
15623         464fp entries.
15624         * config/rs6000/rs6000.h (ASM_CPU_SPEC): Add 464 and 464fp support.
15625         * config/rs6000/t-fprules (MULTILIB_MATCHES_FLOAT): Include -mcpu=464.
15626         * config/rs6000/rs6000.md: Update comments for 464.
15627
15628 2008-05-21  Janis Johnson  <janis187@us.ibm.com>
15629
15630         * doc/sourcebuild.texi (Test Directives): Add dg-xfail-run-if.
15631
15632 2008-05-21  H.J. Lu  <hongjiu.lu@intel.com>
15633
15634         * config/i386/sse.md (vec_extractv4sf): Removed.
15635         (vec_extractv2df): Likewise.
15636         (vec_extractv2di): Likewise.
15637         (vec_extractv4si): Likewise.
15638         (vec_extractv8hi): Likewise.
15639         (vec_extractv16qi): Likewise.
15640         (vec_extract<mode>): New.
15641
15642 2008-05-21  H.J. Lu  <hongjiu.lu@intel.com>
15643
15644         * config/i386/sse.md (vec_setv4sf): Removed.
15645         (vec_setv2df): Likewise.
15646         (vec_setv2di): Likewise.
15647         (vec_setv4si): Likewise.
15648         (vec_setv8hi): Likewise.
15649         (vec_setv16qi): Likewise.
15650         (vec_set<mode>): New.
15651
15652 2008-05-21  H.J. Lu  <hongjiu.lu@intel.com>
15653
15654         * config/i386/i386.c (ix86_expand_vector_init_general): Remove
15655         goto for vec_concat and vec_interleave.
15656
15657 2008-05-21  H.J. Lu  <hongjiu.lu@intel.com>
15658
15659         * config/i386/sse.md (vec_initv4sf): Removed.
15660         (vec_initv2df): Likewise.
15661         (vec_initv2di): Likewise.
15662         (vec_initv4si): Likewise.
15663         (vec_initv8hi): Likewise.
15664         (vec_initv16qi): Likewise.
15665         (vec_init<mode>): New.
15666
15667 2008-05-21  Joseph Myers  <joseph@codesourcery.com>
15668
15669         * collect2.c (find_a_file): Use IS_ABSOLUTE_PATH.
15670
15671 2008-05-21  Tom Tromey  <tromey@redhat.com>
15672
15673         * ggc-zone.c (lookup_page_table_if_allocated): New function.
15674         (zone_find_object_offset): Likewise.
15675         (gt_ggc_m_S): Likewise.
15676         (highest_bit): Likewise.
15677         * ggc-page.c (gt_ggc_m_S): New function.
15678         * stringpool.c (string_stack): Remove.
15679         (init_stringpool): Update.
15680         (ggc_alloc_string): Use ggc_alloc.
15681         (maybe_delete_ident): New function.
15682         (ggc_purge_stringpool): Likewise.
15683         (gt_ggc_m_S): Remove.
15684         * ggc-common.c (ggc_protect_identifiers): New global.
15685         (ggc_mark_roots): Call ggc_purge_stringpool.  Use
15686         ggc_protect_identifiers.
15687         * ggc.h (ggc_protect_identifiers): Declare.
15688         (gt_ggc_m_S): Update.
15689         (ggc_purge_stringpool): Declare.
15690         * toplev.c (compile_file): Set and reset ggc_protect_identifiers.
15691         * gengtype.c (write_types_process_field) <TYPE_STRING>: Remove
15692         special case.
15693         (write_root): Cast gt_ggc_m_S to gt_pointer_walker.
15694
15695 2008-05-21  David S. Miller  <davem@davemloft.net>
15696
15697         * config.gcc (sparc-*-linux*): Always include sparc/t-linux in
15698         tmake_file.
15699
15700 2008-05-21  Eric Botcazou  <ebotcazou@adacore.com>
15701
15702         * cfgexpand.c (tree_expand_cfg): Zap the EH throw statement table
15703         once finished.
15704
15705 2008-05-20  David Daney  <ddaney@avtrex.com>
15706
15707         * config/mips/mips.md (UNSPEC_SYNC_NEW_OP_12,
15708         UNSPEC_SYNC_OLD_OP_12, UNSPEC_SYNC_EXCHANGE_12): New define_constants.
15709         (UNSPEC_SYNC_EXCHANGE, UNSPEC_MEMORY_BARRIER, UNSPEC_SET_GOT_VERSION,
15710         UNSPEC_UPDATE_GOT_VERSION): Renumber.
15711         (optab, insn): Add 'plus' and 'minus' to define_code_attr.
15712         (atomic_hiqi_op): New define_code_iterator.
15713         (sync_compare_and_swap<mode>): Call mips_expand_atomic_qihi instead of
15714         mips_expand_compare_and_swap_12.
15715         (compare_and_swap_12): Use MIPS_COMPARE_AND_SWAP_12 instead of
15716         MIPS_COMPARE_AND_SWAP_12_0.  Pass argument to MIPS_COMPARE_AND_SWAP_12.
15717         (sync_<optab><mode>, sync_old_<optab><mode>,
15718         sync_new_<optab><mode>, sync_nand<mode>, sync_old_nand<mode>,
15719         sync_new_nand<mode>): New define_expands for HI and QI mode operands.
15720         (sync_<optab>_12, sync_old_<optab>_12, sync_new_<optab>_12,
15721         sync_nand_12, sync_old_nand_12, sync_new_nand_12): New insns.
15722         (sync_lock_test_and_set<mode>): New define_expand for HI and QI modes.
15723         (test_and_set_12): New insn.
15724         (sync_old_add<mode>, sync_new_add<mode>, sync_old_<optab><mode>,
15725         sync_new_<optab><mode>, sync_old_nand<mode>,
15726         sync_new_nand<mode>, sync_lock_test_and_set<mode>):  Add early
15727         clobber to operand 0 for SI and DI mode insns.
15728         * config/mips/mips-protos.h (mips_gen_fn_6, mips_gen_fn_5,
15729         mips_gen_fn_4): New typedefs.
15730         (mips_gen_fn_ptrs): Define new union type.
15731         (mips_expand_compare_and_swap_12): Remove declaration.
15732         (mips_expand_atomic_qihi): Declare function.
15733         * config/mips/mips.c (mips_expand_compare_and_swap_12): Rename to...
15734         (mips_expand_atomic_qihi): ... this.  Use new generator function
15735         parameter.
15736         * config/mips/mips.h (MIPS_COMPARE_AND_SWAP_12): Add OPS parameter.
15737         (MIPS_COMPARE_AND_SWAP_12_0): Delete macro.
15738         (MIPS_COMPARE_AND_SWAP_12_ZERO_OP, MIPS_COMPARE_AND_SWAP_12_NONZERO_OP,
15739         MIPS_SYNC_OP_12, MIPS_SYNC_OP_12_NOT_NOP,
15740         MIPS_SYNC_OP_12_NOT_NOT, MIPS_SYNC_OLD_OP_12,
15741         MIPS_SYNC_OLD_OP_12_NOT_NOP, MIPS_SYNC_OLD_OP_12_NOT_NOP_REG,
15742         MIPS_SYNC_OLD_OP_12_NOT_NOT, MIPS_SYNC_OLD_OP_12_NOT_NOT_REG,
15743         MIPS_SYNC_NEW_OP_12, MIPS_SYNC_NEW_OP_12_NOT_NOP,
15744         MIPS_SYNC_NEW_OP_12_NOT_NOT, MIPS_SYNC_EXCHANGE_12,
15745         MIPS_SYNC_EXCHANGE_12_ZERO_OP, MIPS_SYNC_EXCHANGE_12_NONZERO_OP):
15746         New macros.
15747
15748 2008-05-20  H.J. Lu  <hongjiu.lu@intel.com>
15749
15750         * config/i386/i386.c (ix86_expand_vector_init_one_nonzero): Add
15751         the missing break.
15752
15753 2008-05-20  Anatoly Sokolov <aesok@post.ru>
15754
15755         * config/avr/avr.h (machine_function): Add 'is_OS_main' field.
15756         * config/avr/avr.c (avr_OS_main_function_p): Add new function.
15757         (avr_attribute_table): Add 'OS_main' function attribute.
15758         (avr_regs_to_save, expand_prologue, expand_epilogue): Handle
15759         functions with 'OS_main' attribute.
15760
15761 2008-05-20  Richard Guenther  <rguenther@suse.de>
15762
15763         PR tree-optimization/35204
15764         * tree-ssa-sccvn.c (extract_and_process_scc_for_name): New
15765         helper, split out from ...
15766         (DFS): ... here.  Make the DFS walk non-recursive.
15767
15768 2008-05-20  Sebastian Pop  <sebastian.pop@amd.com>
15769             Jan Sjodin  <jan.sjodin@amd.com>
15770
15771         PR tree-optimization/36181
15772         * tree-parloops.c (loop_has_vector_phi_nodes): New.
15773         (parallelize_loops): Don't parallelize when the loop has vector
15774         phi nodes.
15775
15776 2008-05-20  Jan Sjodin  <jan.sjodin@amd.com>
15777             Sebastian Pop  <sebastian.pop@amd.com>
15778
15779         * tree-loop-linear.c (gather_interchange_stats): Look in the access
15780         matrix, and never look at the tree representation of the memory
15781         accesses.
15782         (linear_transform_loops): Computes parameters and access matrices.
15783         * tree-data-ref.c (compute_data_dependences_for_loop): Returns false
15784         when fails.
15785         (access_matrix_get_index_for_parameter): New.
15786         * tree-data-ref.h (struct access_matrix): New.
15787         (AM_LOOP_NEST_NUM, AM_NB_INDUCTION_VARS, AM_PARAMETERS, AM_MATRIX,
15788         AM_NB_PARAMETERS, AM_CONST_COLUMN_INDEX, AM_NB_COLUMNS,
15789         AM_GET_SUBSCRIPT_ACCESS_VECTOR, AM_GET_ACCESS_MATRIX_ELEMENT,
15790         am_vector_index_for_loop): New.
15791         (struct data_reference): Add field access_matrix.
15792         (DR_ACCESS_MATRIX): New.
15793         (compute_data_dependences_for_loop): Update declaration.
15794         (lambda_collect_parameters, lambda_compute_access_matrices): Declared.
15795         * lambda.h (lambda_vector_vec_p): Declared.
15796         * lambda-code.c: Depend on pointer-set.h.
15797         (lambda_collect_parameters_from_af, lambda_collect_parameters,
15798         av_for_af_base, av_for_af, build_access_matrix,
15799         lambda_compute_access_matrices): New.
15800         * Makefile.in (lambda-code.o): Depend on pointer-set.h.
15801
15802 2008-05-20  Joseph Myers  <joseph@codesourcery.com>
15803
15804         * doc/install.texi2html: Generate gcc-vers.texi in $DESTDIR not
15805         $SOURCEDIR/include.
15806
15807 2008-05-20  Jan Sjodin  <jan.sjodin@amd.com>
15808             Sebastian Pop  <sebastian.pop@amd.com>
15809
15810         PR tree-optimization/36206
15811         * tree-scalar-evolution.c: Remove enum INSERT_SUPERLOOP_CHRECS,
15812         FOLD_CONVERSIONS.
15813         (instantiate_scev_1): Rename flags to fold_conversions.
15814         Do not check for INSERT_SUPERLOOP_CHRECS, keep SSA_NAMEs defined
15815         outeside instantiation_loop.
15816         * tree-chrec.h (evolution_function_is_affine_in_loop): New.
15817         (evolution_function_is_affine_or_constant_p): Removed.
15818         * tree-data-ref.c (dr_analyze_indices): Replace resolve_mixers with
15819         instantiate_scev.
15820         (analyze_siv_subscript): Pass in the loop nest number.
15821         Call evolution_function_is_affine_in_loop instead of
15822         evolution_function_is_affine_p.
15823         (analyze_overlapping_iterations): Pass in the loop nest number.
15824
15825 2008-05-20  Jan Sjodin  <jan.sjodin@amd.com>
15826             Sebastian Pop  <sebastian.pop@amd.com>
15827
15828         PR tree-optimization/36206
15829         * tree-chrec.h (chrec_fold_op): New.
15830         * tree-data-ref.c (initialize_matrix_A): Traverse NOP_EXPR, PLUS_EXPR,
15831         and other trees.
15832
15833 2008-05-20  Nathan Sidwell  <nathan@codesourcery.com>
15834
15835         * c-incpath.c (INO_T_EQ): Do not define on non-inode systems.
15836         (DIRS_EQ): New.
15837         (remove_duplicates): Do not set inode on non-inode systems.
15838         Use DIRS_EQ.
15839
15840 2008-05-20  Sandra Loosemore  <sandra@codesourcery.com>
15841
15842         * config.gcc (tm_file): Update comments about relative pathnames.
15843
15844 2008-05-20  Richard Guenther  <rguenther@suse.de>
15845
15846         * tree-ssa-reassoc.c (fini_reassoc): Use the statistics infrastructure.
15847         * tree-ssa-sccvn.c (process_scc): Likewise.
15848         * tree-ssa-sink.c (execute_sink_code): Likewise.
15849         * tree-ssa-threadupdate.c (thread_through_all_blocks): Likewise.
15850         * tree-vrp.c (process_assert_insertions): Likewise.
15851         * tree-ssa-dce.c (eliminate_unnecessary_stmts): Likewise.
15852         (perform_tree_ssa_dce): Likewise.
15853         * tree-ssa-dom.c (tree_ssa_dominator_optimize): Likewise.
15854         (dump_dominator_optimization_stats): Likewise.
15855         * tree-vectorizer.c (vectorize_loops): Likewise.
15856
15857 2008-05-20  Richard Guenther  <rguenther@suse.de>
15858
15859         * tree-vn.c (vn_lookup_with_vuses): Do not use the alias oracle.
15860
15861 2008-05-20  Kai Tietz  <kai.tietz@onevision.com>
15862
15863         * config/i386/i386-protos.h (ix86_return_in_memory): Removed.
15864         (ix86_i386elf_return_in_memory): Likewise.
15865         (ix86_i386interix_return_in_memory): Likewise.
15866         * config/i386/i386-interix.h (TARGET_RETURN_IN_MEMORY): Removed.
15867         (SUBTARGET_RETURN_IN_MEMORY): New.
15868         * config/i386/i386elf.h: Likewise.
15869         * config/i386/ptx4-i.h: Likewise.
15870         * config/i386/sol2-10.h: Likewise.
15871         * config/i386/sysv4.h: Likewise.
15872         * config/i386/vx-common.h: Likewise.
15873         * config/i386/i386.h (TARGET_RETURN_IN_MEMORY): Removed.
15874         * config/i386/i386.c (ix86_return_in_memory): Made static and
15875         make use of optional SUBTARGET_RETURN_IN_MEMORY macro.
15876         (ix86_i386elf_return_in_memory): Removed.
15877         (ix86_i386interix_return_in_memory): Removed.
15878         (TARGET_RETURN_IN_MEMORY): Declared within i386.c only.
15879         * target-def.h (TARGET_RETURN_IN_MEMORY): Remove protection #ifdef.
15880
15881 2008-05-20  Alexandre Oliva  <aoliva@redhat.com>
15882
15883         * cselib.c (cselib_record_sets): Use correct mode for IF_THEN_ELSE.
15884
15885 2008-05-19  Xinliang David Li  <davidxl@google.com>
15886
15887         * tree-ssa-dce.c: Revert patches of 2008-05-17 and 2008-05-18.
15888         * opts.c: Ditto.
15889         * common.opt: Ditto.
15890         * doc/invoke.texi: Ditto.
15891
15892 2008-05-19  Eric Botcazou  <ebotcazou@adacore.com>
15893
15894         * tree.c (substitute_in_expr) <tcc_vl_exp>: Fix thinko.
15895         (substitute_placeholder_in_expr) <tcc_vl_exp>: Minor tweak.
15896
15897 2008-05-19  H.J. Lu  <hongjiu.lu@intel.com>
15898
15899         * config/i386/i386.c (ix86_expand_vector_init_concat): Change
15900         sizes of operand array from 8/4 to 4/2.
15901         (ix86_expand_vector_init_general): Change size of operand array
15902         from 32 to 16.  Remove op0, op1 and half_mode.
15903
15904 2008-05-19  H.J. Lu  <hongjiu.lu@intel.com>
15905
15906         * config/i386/i386.c (ix86_expand_vector_init_concat): New.
15907         (ix86_expand_vector_init_interleave): Likewise.
15908         (ix86_expand_vector_init_general): Use them.  Assert
15909         word_mode == SImode when n_words == 4.
15910
15911 2008-05-19  Uros Bizjak  <ubizjak@gmail.com>
15912
15913         * config/i386/i386.c (ix86_secondary_reload): New static function.
15914         (TARGET_SECONDARY_RELOAD): New define.
15915         * config/i386/i386.h (SECONDARY_OUTPUT_RELOAD_CLASS): Remove.
15916         * config/i386/i386.md (reload_outqi): Remove.
15917
15918 2008-05-18  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
15919
15920         PR middle-end/35509
15921         * builtins.c (mathfn_built_in_1): Renamed from mathfn_built_in.
15922         Add `implicit' parameter.  Handle BUILT_IN_SIGNBIT.
15923         (mathfn_built_in): Rewrite in terms of mathfn_built_in_1.
15924         (fold_builtin_classify): Handle BUILT_IN_ISINF_SIGN.
15925         (fold_builtin_1): Likewise.
15926         * builtins.def (BUILT_IN_ISINF_SIGN): New.
15927         c-common.c (check_builtin_function_arguments): Handle
15928         BUILT_IN_ISINF_SIGN.
15929         * doc/extend.texi: Document __builtin_isinf_sign.
15930         * fold-const.c (operand_equal_p): Handle COND_EXPR.
15931
15932 2008-05-18  Eric Botcazou  <ebotcazou@adacore.com>
15933
15934         * tree-ssa-dom.c (tree_ssa_dominator_optimize): If some blocks need
15935         EH cleanup at the end of the pass, search for those that have been
15936         turned into forwarder blocks and do the cleanup on their successor.
15937
15938 2008-05-18  Richard Guenther  <rguenther@suse.de>
15939
15940         * tree-cfg.c (verify_gimple_expr): Allow conversions from
15941         pointers to sizetype and vice versa.
15942
15943 2008-05-18 Xinliang David Li   <davidxl@google.com>
15944
15945         * gcc/tree-ssa-dce.c: Coding style fix.
15946         (check_pow): Documentation comment.
15947         (check_log): Documenation comment. Coding style fix.
15948         (is_unnecessary_except_errno_call): Ditto.
15949         (gen_conditions_for_pow): Ditto.
15950         (gen_conditions_for_log): Ditto.
15951         (gen_shrink_wrap_conditions): Ditto.
15952         (shrink_wrap_one_built_in_calls): Ditto.
15953         * gcc/doc/invoke.texi: Better documentation string.
15954         * ChangeLog: Fix wrong change log entries from
15955         May 17 checkin on function call DCE.
15956
15957 2008-05-17  Kaz Kojima  <kkojima@gcc.gnu.org>
15958
15959         * config/sh/sh.c (sh_output_mi_thunk): Update the use of init_flow.
15960
15961 2008-05-17  Kenneth Zadeck <zadeck@naturalbridge.com>
15962
15963         * doc/rtl.texi (RTL_CONST_CALL_P, RTL_PURE_CALL_P): Fixed typos.
15964         * df-problems.c (simulation routines): Fixed block comment to
15965         properly say how to add forwards scanning functions.
15966
15967 2008-05-17  Eric Botcazou  <ebotcazou@adacore.com>
15968
15969         * tree-inline.c (setup_one_parameter): Remove dead code.
15970
15971 2008-05-17  Eric Botcazou  <ebotcazou@adacore.com>
15972
15973         * fold-const.c (fold_unary) <CASE_CONVERT>: Fold the cast into
15974         a BIT_AND_EXPR only for an INTEGER_TYPE.
15975
15976 2008-05-17 Xinliang David Li   <davidxl@google.com>
15977
15978         * gcc/tree-ssa-dce.c (cond_dead_built_in_calls): New static variable.
15979         (check_pow, check_log, is_unnecessary_except_errno_call): New
15980         functions to check for eliminating math functions that are pure
15981         except for setting errno.
15982         (gen_conditions_for_pow, gen_conditionas_for_log): New functions to
15983         general condition expressions for shrink-wrapping pow/log calls.
15984         (gen_shrink_wrap_conditions): Ditto.
15985         (shrink_wrap_one_built_in_call): Ditto.
15986         (shrink_wrap_conditional_dead_built_in_calls): Ditto.
15987         (mark_operand_necessary): If debugging, output if OP is necessary.
15988         (eliminate_unnecessary_stmts): Eliminate pow, log calls that are
15989         unnecessary.
15990         * gcc/opts.c (decode_options): set flag_tree_builtin_dce to 1 when
15991         opt level >= 2.
15992         * gcc/common.opt: New user flag -ftree-builtin-dce.
15993         * gcc/doc/invoke.texi (-ftree-builtin-dce): New option.
15994
15995 2008-05-16  David S. Miller  <davem@davemloft.net>
15996
15997         * config/sparc/linux.h (NO_PROFILE_COUNTERS): Undef before overriding.
15998         * config/sparc/linux64.h (NO_PROFILE_COUNTERS): Likewise.
15999
16000 2008-05-16  Uros Bizjak  <ubizjak@gmail.com>
16001
16002         PR target/36246
16003         * config/i386/i386.h (SECONDARY_MEMORY_NEEDED_MODE): New define.
16004
16005 2008-05-16  Kenneth Zadeck <zadeck@naturalbridge.com>
16006
16007         * ifcvt.c (dead_or_predicable): Rename
16008         df_simulate_one_insn_backwards to df_simulate_one_insn.
16009         * recog.c (peephole2_optimize): Ditto.
16010         * rtl-factoring.c (collect_pattern_seqs, clear_regs_live_in_seq):
16011         Ditto.
16012         * df.h: Rename df_simulate_one_insn_backwards to
16013         df_simulate_one_insn.  and delete df_simulate_one_insn_forwards.
16014         * df-problems.c (df_simulate_artificial_refs_at_top) Reversed
16015         scanning of defs and uses.
16016         (df_simulate_one_insn_backwards): Renamed to df_simulate_one_insn.
16017         (df_simulate_one_insn_forwards): Removed.
16018
16019 2008-05-16  Doug Kwan  <dougkwan@google.com>
16020
16021         * real.c (real_to_decimal, real_to_hexadecimal): Distinguish
16022         QNaN & SNaN.
16023         (real_from_string): Handle NaNs and Inf as approriate.
16024
16025 2008-05-16  Nathan Froyd  <froydnj@codesourcery.com>
16026
16027         * doc/gty.texi (Source Files Containing Type Information): Note
16028         that headers should appear first in the gtfiles list.
16029
16030 2008-05-16  Kenneth Zadeck <zadeck@naturalbridge.com>
16031
16032         * tree.def (COND_EXEC): Properly documented this code.
16033
16034 2008-05-16  Diego Novillo  <dnovillo@google.com>
16035
16036         * dwarf2asm.c (dw2_assemble_integer): Clarify comment.
16037         * tree-nested.c (get_trampoline_type): Set DECL_CONTEXT for
16038         the new field.
16039
16040 2008-05-16  Kenneth Zadeck <zadeck@naturalbridge.com>
16041
16042         * tree-ssa-dse (max_stmt_uid): Removed.
16043         (get_stmt_uid, dse_possible_dead_store_p, dse_optimize_stmt,
16044         tree_ssa_dse): Encapsulate all uses of stmt_ann->uid.
16045         * tree-ssa-sccvn.c (compare_ops, init_scc_vn): Ditto.
16046         * function.h (cfun.last_stmt_uid): New field.
16047         * tree-flow-inline.h (set_gimple_stmt_uid, gimple_stmt_uid,
16048         gimple_stmt_max_uid, set_gimple_stmt_max_uid, inc_gimple_stmt_max_uid):
16049         New functions.
16050         * tree-dfa.c (renumber_gimple_stmt_uids): New function.
16051         (create_stmt_ann): Initialize the ann->uid field.
16052         * tree-ssa-pre.c (compute_avail): Encapsulate the stmt_ann->uid
16053         with new calls.
16054         * tree-flow.h (renumber_gimple_stmt_uids): New function.
16055
16056 2008-05-16  Nathan Froyd  <froydnj@codesourcery.com>
16057
16058         * tree-flow.h (init_empty_tree_cfg_for_function): Declare.
16059         * tree-cfg.c (init_empty_tree_cfg_for_function): Define.
16060         (init_empty_tree_cfg): Call it.
16061
16062 2008-05-16  Kenneth Zadeck <zadeck@naturalbridge.com>
16063
16064         * cfg.c (init_flow): Add argument THE_FUN.  Use it instead of cfun.
16065         Update all users.
16066
16067 2008-05-16  Kenneth Zadeck <zadeck@naturalbridge.com>
16068
16069         * doc/invoke.text (-fdump-tree-*-verbose): New option.
16070         * tree-dump.c (dump_options): New verbose option.
16071         * tree-pretty-print.c (dump_phi_nodes, dump_generic_bb_buff):
16072         Add verbose dump.
16073         * tree-pass.h (TDF_VERBOSE): New dump flag.
16074         * print-tree.c (print_node): Added code to be able to print PHI_NODES.
16075         (tree-flow.h): Added include.
16076         * Makefile.in (print-tree.o):  Added TREE_FLOW_H.
16077
16078 2008-05-16  Bernd Schmidt  <bernd.schmidt@analog.com>
16079
16080         * config/bfin/bfin.c (bfin_discover_loops): Delete empty loops.
16081
16082         From Jie Zhang  <jie.zhang@analog.com>
16083         * config/bfin/t-bfin-elf (MULTILIB_OPTIONS, MULTILIB_DIRNAMES,
16084         MULTILIB_MATCHES, MULTILIB_EXCEPTIONS): Remove mcpu=bf532-0.3,
16085         mcpu=bf561-none and mcpu=bf561-0.2.
16086         * config/bfin/t-bfin-uclinux (MULTILIB_OPTIONS, MULTILIB_DIRNAMES,
16087         MULTILIB_MATCHES, MULTILIB_EXCEPTIONS): Likewise.
16088         * config/bfin/t-bfin-linux (MULTILIB_OPTIONS, MULTILIB_DIRNAMES,
16089         MULTILIB_MATCHES, MULTILIB_EXCEPTIONS): Likewise.
16090         * config/bfin/bfin-protos.h (enum bfin_cpu_type): Add BFIN_CPU_UNKNOWN.
16091         * config/bfin/elf.h (STARTFILE_SPEC): Use specific CRT for BF561.
16092         (LIB_SPEC): Use proper linker script for bf561.  Error if no mcpu
16093         option.
16094         * config/bfin/bfin.c (bfin_cpu_type): Set to BFIN_CPU_UNKNOWN.
16095         (cputype_selected): Remove.
16096         (bfin_handle_option): Don't use cputype_selected.
16097         (override_options): When no mcpu option, enable all workarounds.
16098         Don't use bfin_workarounds.
16099         * config/bfin/bfin.h (DRIVER_SELF_SPECS): Don't set default
16100         processor type.
16101         (DEFAULT_CPU_TYPE): Don't define.
16102
16103 2008-05-16  Richard Guenther  <rguenther@suse.de>
16104
16105         * tree-ssa-propagate.c (substitute_and_fold): Fix stmt walking
16106         on deletion of the last stmt.
16107
16108 2008-05-15  H.J. Lu  <hongjiu.lu@intel.com>
16109
16110         * config/i386/i386.c (ix86_expand_vector_init_general): Optimize
16111         V8HImode for SSE2 and V16QImode for SSE4.1.
16112
16113 2008-05-15  Kenneth Zadeck <zadeck@naturalbridge.com>
16114
16115         * cgraph.h (compute_inline_parameters): Made public.
16116         * tree-pass.h (ipa_opt_pass): Removed function_generate_summary,
16117         variable_generate_summary, function_write_summary,
16118         variable_write_summary, variable_read_summary.  Added generate_summary,
16119         write_summary, read_summary.
16120         * cgraphunit.c (cgraph_process_new_functions): Changed call from
16121         pass_ipa_inline.function_generate_summary, to
16122         compute_inline_parameters.
16123         * ipa-inline.c (compute_inline_parameters): Made public and added
16124         node parameter.
16125         (compute_inline_parameters_for_current): New function.
16126         (pass_inline_param): Now calls compute_inline_parameters_for_current.
16127         (inline_generate_summary): Removed parameter and made to loop over
16128         all cgraph nodes.
16129         (pass_ipa_inline): Updated for new IPA_PASS structure.
16130         * passes.c (execute_ipa_summary_passes): Now is called once per
16131         pass rather than once per node*pass.
16132
16133 2008-05-15  Anatoly Sokolov <aesok@post.ru>
16134
16135         * config/avr/avr.c (avr_base_arch_macro, avr_have_movw_lpmx_p,
16136         avr_have_mul_p, avr_asm_only_p): Remove variables.
16137         (avr_override_options): Remove initialization of removed variables.
16138         (avr_file_start):  Convert removed variables to fields of
16139         'struct base_arch_s *avr_current_arch'.
16140         * config/avr/avr.h (TARGET_CPU_CPP_BUILTINS): (Ditto.).
16141         (AVR_HAVE_MUL): (Ditto.).
16142         (AVR_HAVE_MOVW): (Ditto.).
16143         (AVR_HAVE_LPMX): (Ditto.).
16144         (avr_base_arch_macro, avr_have_movw_lpmx_p, avr_have_mul_p,
16145         avr_asm_only_p): Remove declaration.
16146
16147 2008-05-15  Diego Novillo  <dnovillo@google.com>
16148
16149         * config/arm/arm.c (arm_return_in_memory): Fix return type.
16150         * config/arm/arm-protos.h (arm_return_in_memory): Likewise.
16151
16152 2008-05-15  Adam Nemet  <anemet@caviumnetworks.com>
16153
16154         PR middle-end/36194
16155         * combine.c (check_conversion): Rename back to check_promoted_subreg.
16156         Don't call record_truncated_value from here.
16157         (record_truncated_value): Turn it into a for_each_rtx callback.
16158         (record_truncated_values): New function.
16159         (combine_instructions): Call note_uses with record_truncated_values.
16160         Change name of check_conversion to check_promoted_subreg.
16161
16162 2008-05-15  Janis Johnson  <janis187@us.ibm.com>
16163
16164         * doc/sourcebuild.texi: Document support for torture tests.
16165
16166 2008-05-15  Uros Bizjak  <ubizjak@gmail.com>
16167
16168         * config/i386/sse.md (*vec_concatv2sf_sse4_1): Add "m" constraint
16169         to alternative 4 of operand 2.
16170
16171 2008-05-15  Richard Guenther  <rguenther@suse.de>
16172
16173         * tree-pass.h (current_pass): Declare.
16174         (get_pass_for_id): Likewise.
16175         * passes.c (passes_by_id, passes_by_id_size): New globals.
16176         (set_pass_for_id): New function.
16177         (get_pass_for_id): Likewise.
16178         (register_one_dump_file): Use set_pass_for_id to populate passes_by_id.
16179         (execute_function_todo): Flush per function statistics.
16180         * toplev.c (compile_file): Init statistics.
16181         (general_init): Do early statistics initialization.
16182         (finalize): Finish statistics.
16183         * statistics.h (statistics_early_init): Declare.
16184         (statistics_init): Likewise.
16185         (statistics_fini): Likewise.
16186         (statistics_fini_pass): Likewise.
16187         (statistics_counter_event): Likewise.
16188         (statistics_histogram_event): Likewise.
16189         * statistics.c: New file.
16190         * Makefile.in (OBJS-common): Add statistics.o.
16191         (statistics.o): Add dependencies.
16192         * doc/invoke.texi (-fdump-statistics): Document.
16193
16194         * tree-ssa-pre.c (compute_antic): Use statistics_histogram_event.
16195         (insert): Likewise.
16196         (execute_pre): Use statistics_counter_event.
16197         * tree-ssa-propagate.c (struct prop_stats_d): Add num_dce field.
16198         (substitute_and_fold): Increment it.  Use statistics_counter_event.
16199
16200 2008-05-15  Diego Novillo  <dnovillo@google.com>
16201
16202         http://gcc.gnu.org/ml/gcc-patches/2008-05/msg00893.html
16203
16204         * treestruct.def (TS_STRUCT_FIELD_TAG): Remove.
16205         * tree-ssa-alias.c (new_type_alias): Remove references to
16206         sub-variables from comment.
16207         * tree-ssa-operands.c (swap_tree_operands): Likewise.
16208
16209 2008-05-15  H.J. Lu  <hongjiu.lu@intel.com>
16210
16211         * config/i386/sse.md (*vec_concatv2sf_sse4_1): Set prefix_extra
16212         attribute to 1 only for insertps alternative.
16213
16214 2008-05-15  Bernd Schmidt  <bernd.schmidt@analog.com>
16215
16216         * config/bfin/bfin.md (loadbytes): New pattern.
16217         * config/bfin/bfin.c (enum bfin_builtins): Add BFIN_BUILTIN_LOADBYTES.
16218         (bfin_init_builtins): Initialize it.
16219         (bdesc_1arg): Add it.
16220
16221 2008-05-15  Sa Liu  <saliu@de.ibm.com>
16222
16223         * testsuite/gfortran.dg/c_kind_int128_test1.f03: New.
16224         * testsuite/gfortran.dg/c_kind_int128_test2.f03: New.
16225         * testsuite/lib/target-supports.exp: Add
16226         check_effective_target_fortran_integer_16.
16227
16228 2008-05-15  Bernd Schmidt  <bernd.schmidt@analog.com>
16229
16230         * config/bfin/bfin.h (TARGET_RETURN_IN_MEMORY): Don't define here.
16231         * config/bfin/bfin-protos.h (bfin_return_in_memory): Don't declare.
16232         * config/bfin/bfin.c (bfin_return_in_memory): Now static.  Return bool.
16233         (TARGET_RETURN_IN_MEMORY): Define.
16234
16235 2008-05-15  Richard Guenther  <rguenther@suse.de>
16236
16237         PR middle-end/36244
16238         * tree-ssa-alias.c (new_type_alias): Do not set TREE_READONLY.
16239         * tree-flow-inline.h (unmodifiable_var_p): Memory tags never
16240         represent unmodifiable vars.
16241
16242 2008-05-15  Richard Guenther  <rguenther@suse.de>
16243
16244         * tree-dfa.c (refs_may_alias_p): Allow all kinds of
16245         INDIRECT_REF and TARGET_MEM_REF.
16246         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Handle
16247         TARGET_MEM_REF.
16248
16249 2008-05-15  Uros Bizjak  <ubizjak@gmail.com>
16250             H.J. Lu  <hongjiu.lu@intel.com>
16251
16252         * config/i386/sse.md (*vec_concatv2sf_sse4_1): New insn pattern.
16253         (*vec_concatv2si_sse4_1): Use vector_move_operand predicate
16254         for operand 2.  Remove pinsr{q,d} with 0x0 immediate operand from
16255         insn alternatives.  Add missing alternatives.
16256         (*vec_concatv2di_rex64_sse4_1): Likewise.
16257         (*vec_concatv2si_sse2): Use "x" register constraint instead of "Y2".
16258         (*vec_concatv2di_rex64_sse): Rename from *vec_concatv2di_rex64.
16259         Require TARGET_SSE.
16260
16261 2008-05-15  Richard Guenther  <rguenther@suse.de>
16262
16263         PR tree-optimization/36009
16264         PR tree-optimization/36204
16265         * tree-ssa-loop-im.c (tree-ssa-propagate.h): Include.
16266         (determine_invariantness_stmt): Record the loop a store is
16267         always executed in.
16268         * Makefile.in (tree-ssa-loop-im.o): Add tree-ssa-propagate.h
16269         dependency.
16270
16271 2008-05-15  Richard Guenther  <rguenther@suse.de>
16272
16273         PR tree-optimization/34330
16274         * tree-ssa-alias.c (get_smt_for): Only assert that accesses
16275         through the pointer will alias the SMT.
16276
16277 2008-05-14  Andreas Tobler  <a.tobler@schweiz.org>
16278
16279         * config/sparc/sparc.h (NO_PROFILE_COUNTERS): Define as 0.
16280
16281 2008-05-14  H.J. Lu  <hongjiu.lu@intel.com>
16282
16283         * config/i386/sse.md (*sse4_1_pinsrq): Make it 64bit only.
16284
16285 2008-05-14  Michael Meissner  <michael.meissner@amd.com>
16286             Dwarakanath Rajagopal  <dwarak.rajagopal@amd.com>
16287
16288         * optabs.h (optab_index): Add OTI_vashl, OTI_vlshr, OTI_vashr,
16289         OTI_vrotl, OTI_vrotr to support vector/vector shifts.
16290         (vashl_optab): New optab for vector/vector shifts.
16291         (vashr_optab): Ditto.
16292         (vlshr_optab): Ditto.
16293         (vrotl_optab): Ditto.
16294         (vrotr_optab): Ditto.
16295         (optab_subtype): New enum for optab_for_tree_code call.
16296         (optab_for_tree_code): Add enum optab_subtype argument.
16297
16298         * optabs.c (optab_for_tree_code): Take an additional argument to
16299         distinguish between a vector shift by a scalar and vector shift by
16300         a vector.  Make lshr/ashr/ashl/rotl/rotr optabs just vector
16301         shifted by a scalar.  Use vlshr/vashr/vashl/vrotl/vrotr for the
16302         vector shift by a vector.
16303         (expand_widen_pattern_expr): Pass additional argument to
16304         optab_for_tree_code.
16305
16306         * genopinit.c (optabs): Add vashr_optab, vashl_optab, vlshr_optab,
16307         vrotl_optab, vrotr_optab.
16308
16309         * expr.c (expand_expr_real_1): Update calls to
16310         optab_for_tree_code to distinguish between vector shifted by a
16311         scalar and vector shifted by a vector.
16312         * tree-vectorizer.c (supportable_widening_operation): Ditto.
16313         (supportable_narrowing_operation): Ditto.
16314         * tree-vect-analyze.c (vect_build_slp_tree): Ditto.
16315         * tree-vect-patterns.c (vect_pattern_recog_1): Ditto.
16316         * tree-vect-transform.c (vect_model_reduction_cost): Ditto.
16317         (vect_create_epilog_for_reduction): Ditto.
16318         (vectorizable_reduction): Ditto.
16319         (vectorizable_operation): Ditto.
16320         (vect_strided_store_supported): Ditto.
16321         (vect_strided_load_supported): Ditto.
16322         * tree-vect-generic.c (expand_vector_operations_1): Ditto.
16323         * expmed.c (expand_shift): Ditto.
16324
16325         * doc/md.texi (ashl@var{m}3): Document that operand 2 is always a
16326         scalar type.
16327         (ashr@var{m}3): Ditto.
16328         (vashl@var{m}3): Document new vector/vector shift standard name.
16329         (vashr@var{m}3): Ditto.
16330         (vlshr@var{m}3): Ditto.
16331         (vrotl@var{m}3): Ditto.
16332         (vrotr@var{m}3): Ditto.
16333
16334         * config/i386/i386.md (PPERM_SRC): Move PPERM masks here from i386.c.
16335         (PPERM_INVERT): Ditto.
16336         (PPERM_REVERSE): Ditto.
16337         (PPERM_REV_INV): Ditto.
16338         (PPERM_ZERO): Ditto.
16339         (PPERM_ONES): Ditto.
16340         (PPERM_SIGN): Ditto.
16341         (PPERM_INV_SIGN): Ditto.
16342         (PPERM_SRC1): Ditto.
16343         (PPERM_SRC2): Ditto.
16344
16345         * config/i386/sse.md (mulv2di3): Add SSE5 support.
16346         (sse5_pmacsdql_mem): New SSE5 define_and_split that temporarily
16347         allows a memory operand to be the value being added, and split it
16348         to improve vectorization.
16349         (sse5_pmacsdqh_mem): Ditto.
16350         (sse5_mulv2div2di3_low): SSE5 32-bit multiply and extend function.
16351         (sse5_mulv2div2di3_high): Ditto.
16352         (vec_pack_trunc_v8hi): Add SSE5 pperm support.
16353         (vec_pack_trunc_v4si): Ditto.
16354         (vec_pack_trunc_v2di): Ditto.
16355         (sse5_pcmov_<mode>): Remove code that tried to use use
16356         andps/andnps instead of pcmov.
16357         (vec_widen_smult_hi_v4si): If we have SSE5, use the pmacsdql and
16358         pmacsdqh instructions.
16359         (vec_widen_smult_lo_v4si): Ditto.
16360
16361         * config/i386/i386.c (PPERM_SRC): Move PPERM masks to i386.md.
16362         (PPERM_INVERT): Ditto.
16363         (PPERM_REVERSE): Ditto.
16364         (PPERM_REV_INV): Ditto.
16365         (PPERM_ZERO): Ditto.
16366         (PPERM_ONES): Ditto.
16367         (PPERM_SIGN): Ditto.
16368         (PPERM_INV_SIGN): Ditto.
16369         (PPERM_SRC1): Ditto.
16370         (PPERM_SRC2): Ditto.
16371         (ix86_expand_sse_movcc): Move the SSE5 test after the if
16372         true/false tests.
16373         (ix86_expand_int_vcond): If SSE5 generate all possible integer
16374         comparisons.
16375         (ix86_sse5_valid_op_p): Allow num_memory to be negative, which
16376         says ignore whether the last reference is a memory operand.
16377
16378 2008-05-14  Michael Meissner  <michael.meissner@amd.com>
16379             Paolo Bonzini <bonzini at gnu dot org>
16380
16381         * config/rs6000/rs6000.c (bdesc_2arg): Change the names of vector
16382         shift patterns.
16383
16384         * config/rs6000/altivec.md (vashl<mode>3): Rename from ashl<mode>3.
16385         (vlshr<mode>3): Rename from vlshr<mode>3.
16386         (vashr<mode>3): Rename from vashr<mode>3.
16387         (mulv4sf3): Change the names of vector shift patterns.
16388         (mulv4si3): Ditto.
16389         (negv4sf2): Ditt.
16390
16391         * config/spu/spu.c (spu_initialize_trampoline): Rename vector
16392         shift insns.
16393
16394         * config/spu/spu-builtins.def (SI_SHLH): Rename vector shift insns.
16395         (SI_SHLHI): Ditto.
16396         (SI_SHL): Ditto.
16397         (SI_SHLI): Ditto.
16398         (SI_ROTH): Ditto.
16399         (SI_ROTHI): Ditto.
16400         (SI_ROT): Ditto.
16401         (SI_ROTI): Ditto.
16402         (SPU_RL_0): Ditto.
16403         (SPU_RL_1): Ditto.
16404         (SPU_RL_2): Ditto.
16405         (SPU_RL_3): Ditto.
16406         (SPU_RL_4): Ditto.
16407         (SPU_RL_5): Ditto.
16408         (SPU_RL_6): Ditto.
16409         (SPU_RL_7): Ditto.
16410         (SPU_SL_0): Ditto.
16411         (SPU_SL_1): Ditto.
16412         (SPU_SL_2): Ditto.
16413         (SPU_SL_3): Ditto.
16414         (SPU_SL_4): Ditto.
16415         (SPU_SL_5): Ditto.
16416         (SPU_SL_6): Ditto.
16417         (SPU_SL_7): Ditto.
16418
16419         * config/spu/spu.md (v): New iterator macro to add v for vector types.
16420         (floatunssidf2_internal): Change vector/vector shift names.
16421         (floatunsdidf2_internal): Ditto.
16422         (mulv8hi3): Ditto.
16423         (ashrdi3): Ditto.
16424         (ashrti3): Ditto.
16425         (cgt_df): Ditto.
16426         (cgt_v2df): Ditto.
16427         (dftsv): Ditto.
16428         (vashl<mode>3): Rename from ashl<mode>3.
16429         (vashr<mode>3): Rename from ashr<mode>3.
16430         (vlshr<mode>3): Rename from lshr<mode>3.
16431         (vrotl<mode>3): Rename from rotl<mode>3.
16432
16433 2008-05-14  Michael Meissner  <michael.meissner@amd.com>
16434
16435         PR target/36224
16436         * config/i386/sse.md (vec_widen_smult_hi_v4si): Delete, using unsigned
16437         multiply gives the wrong value when doing widening multiplies.
16438         (vec_widen_smult_lo_v4si): Ditto.
16439
16440 2008-05-14  Kenneth Zadeck <zadeck@naturalbridge.com>
16441
16442         * optabs.c (prepare_cmp_insn): Changed LCT_PURE_MAKE_BLOCK to
16443         LCT_PURE and LCT_CONST_MAKE_BLOCK to LCT_CONST in calls to
16444         emit_library_call_value.
16445         * builtins.c (expand_builtin_powi, expand_builtin_memcmp): Ditto.
16446         * tree.h (ECF_LIBCALL_BLOCK): Removed.
16447         * calls.c (initialize_argument_information, precompute_arguments,
16448         expand_call, emit_library_call_value_1): Remove ECF_LIBCALL_BLOCK.
16449         (precompute_arguments): Removed flags parameter.
16450         * rtl.h (LCT_CONST_MAKE_BLOCK, LCT_PURE_MAKE_BLOCK): Removed.
16451
16452 2008-05-14  Richard Guenther  <rguenther@suse.de>
16453
16454         * tree-ssa-dse.c (dse_possible_dead_store_p): Remove dead code.
16455         Make sure to register the store if the use is a PHI_NODE.
16456
16457 2008-05-14  Olivier Hainque  <hainque@adacore.com>
16458
16459         * expr.c (expand_expr_real_1) <normal_inner_ref>: Force op0 to
16460         memory if the component is to be referenced in BLKmode according
16461         to get_inner_reference.
16462
16463 2008-05-14  Adam Nemet  <anemet@caviumnetworks.com>
16464
16465         * calls.c (emit_library_call_value_1): Restore code clearing
16466         ECF_LIBCALL_BLOCK to ensure that we only call end_sequence once.
16467
16468 2008-05-14  Olivier Hainque  <hainque@adacore.com>
16469             Nicolas Roche  <roche@adacore.com>
16470
16471         * configure.ac: Add support for a "gcc_subdir" variable in
16472         config-lang.in, to denote a subdirectory where the language/GCC
16473         integration files are to be found.
16474         * configure: Regenerate.
16475
16476 2008-05-14  Ira Rosen  <irar@il.ibm.com>
16477
16478         PR tree-optimization/36098
16479         * tree-vect-analyze.c (vect_analyze_group_access): Set the gap
16480         value for the first load in the group in case of a gap.
16481         (vect_build_slp_tree): Check that there are no gaps in loads.
16482
16483 2008-05-14  Kenneth Zadeck <zadeck@naturalbridge.com>
16484
16485         * doc/rtl.texi: Removed reference to REG_NO_CONFLICT notes.
16486         * optabs.c (expand_binop, expand_absneg_bit, expand_unop,
16487         expand_copysign_bit, ): Change call to emit_no_conflict_block to
16488         emit_insn and remove unneeded code to construct extra args.
16489         (emit_no_conflict_block): Removed.
16490         * optabls.h: (emit_no_conflict_block): Removed.
16491         * cse.c (cse_extended_basic_block): Remove search for
16492         REG_NO_CONFLICT note.
16493         * global.c: Removed incorrect comment added in revision 117.
16494         * expr.c (convert_move): Change call to emit_no_conflict_block to
16495         emit_insn.
16496         * recog.c: Change comments so that they do not mention
16497         REG_NO_CONFLICT.
16498         * local_alloc.c (combine_regs): Removed last parameter.
16499         (no_conflict_p): Removed.
16500         (block_alloc): Removed note, no_conflict_combined_regno and set
16501         local vars. Removed all code to process REG_NO_CONFLICT blocks.
16502         (combine_regs): Removed already_dead and code to look for
16503         REG_NO_CONFLICT notes.
16504         * lower_subreg (remove_retval_note): Removed code to look for
16505         REG_NO_CONFLICT block.
16506         (resolve_reg_notes): Removed REG_NO_CONFLICT case.
16507         (resolve_clobber): Remove code to process libcalls that have
16508         REG_NO_CONFLICT notes.
16509         * loop_invariant.c (find_invariant_insn): Removed REG_NO_CONFLICT
16510         case.
16511         * combine.c (can_combine_p, distribute_notes):  Removed
16512         REG_NO_CONFLICT case.
16513         * config/cris/cris.md (movdi pattern): Changed emit_no_conflict_block
16514         to emit_insns.
16515         * config/mn10300/mn10300.md (absdf2, negdf2 patterns): Ditto.
16516         * config/m68k/m68k.md (negdf2, negxf2, absdf2, absxf2 patterns):
16517         Ditto.
16518         * reg-notes.def (NO_CONFLICT): Removed.
16519
16520 2008-05-14  David S. Miller  <davem@davemloft.net>
16521
16522         * config/sparc/sparc.c (sparc_profile_hook): If
16523         NO_PROFILE_COUNTERS, don't generate and pass a label into mcount.
16524         * config/sparc/linux.h (NO_PROFILE_COUNTERS): Define as 1.
16525         * config/sparc/linux64.h (NO_PROFILE_COUNTERS): Likewise.
16526
16527 2008-05-14  Andreas Krebbel  <krebbel1@de.ibm.com>
16528
16529         * cse.c (cse_cc_succs): Invoke delete_insn_and_edges.
16530
16531 2008-05-13  Uros Bizjak  <ubizjak@gmail.com>
16532
16533         PR target/36222
16534         * config/i386/i386.c (ix86_expand_vector_init_general): Rearrange op0
16535         and op1 expansion before vector concat to have less live pseudos.
16536
16537 2008-05-13  H.J. Lu  <hongjiu.lu@intel.com>
16538
16539         * config/i386/i386.c (ix86_expand_vector_init_one_nonzero): Use
16540         ix86_expand_vector_set if supported.
16541
16542 2008-05-13  Diego Novillo  <dnovillo@google.com>
16543             Kenneth Zadeck  <zadeck@naturalbridge.com>
16544
16545         http://gcc.gnu.org/ml/gcc-patches/2008-05/msg00748.html
16546
16547         * tree.h (init_phinodes, fini_phinodes, release_phi_node,
16548         phinodes_print_statistics, init_ssanames, fini_ssanames,
16549         make_ssa_name, duplicate_ssa_name, duplicate_ssa_name_ptr_info,
16550         release_ssa_name, release_defs, replace_ssa_name_symbol,
16551         ssanames_print_statistics): Move ...
16552         * tree-flow.h: ... here.
16553         * tree-ssanames.c (init_ssanames): Add arguments FN and SIZE.
16554         Use FN instead of cfun.
16555         (make_ssa_name_fn): Rename from make_ssa_name.
16556         (pass_release_ssa_names): Add TODO_dump_func to finish flags.
16557         * tree-flow-inline.h (make_ssa_name): Move from
16558         tree-ssanames.c.  Convert to static inline.  Call make_ssa_name_fn.
16559         * omp-low.c (expand_omp_parallel):
16560         * tree-flow-inline.h (redirect_edge_var_map_result):
16561         * tree-ssa.c (init_tree_ssa): Add argument FN.
16562         Use it instead of cfun.  Update all users.
16563
16564 2008-05-13  Tom Tromey  <tromey@redhat.com>
16565
16566         PR preprocessor/22168:
16567         * doc/cpp.texi (Top): Update menu.
16568         (Alternatives to Wrapper #ifndef): New node.
16569         (Other Directives): Document deprecation.
16570         (Obsolete Features): Remove menu.
16571         (Assertions): Merge node into Obsolete Features.
16572         (Obsolete once-only headers): Move earlier; rename to Alternatives
16573         to Wrapper #ifndef.
16574         * doc/cppopts.texi: Update.
16575         * c.opt (Wdeprecated): Enable for C and ObjC.
16576         * doc/invoke.texi (Option Summary): Move -Wno-deprecated.
16577         (C++ Dialect Options): Move -Wno-deprecated from here to...
16578         (Warning Options): ... here.
16579
16580 2008-05-13  Richard Guenther  <rguenther@suse.de>
16581
16582         PR middle-end/36227
16583         * fold-const.c (fold_sign_changed_comparison): Do not allow
16584         changes in pointer-ness.
16585
16586 2008-05-12  Kaz Kojima  <kkojima@gcc.gnu.org>
16587
16588         PR target/24713
16589         * config/sh/sh.c (sh_expand_prologue): Don't clear
16590         RTX_FRAME_RELATED_P for push insns.
16591
16592 2008-05-12  Andy Hutchinson  <hutchinsonandy@aim.com>
16593
16594         * config/avr/avr.h (MAX_OFILE_ALIGNMENT): Define.
16595
16596 2008-05-12  Anatoly Sokolov <aesok@post.ru>
16597
16598         * config/avr/avr.h (machine_function): Add 'is_leaf' field.
16599         * config/avr/avr.c (avr_regs_to_save): Compute 'machine->is_leaf'.
16600         Use 'machine->is_leaf' instead of 'leaf_func_p'.
16601
16602 2008-05-12  H.J. Lu  <hongjiu.lu@intel.com>
16603
16604         * config/i386/sse.md (*sse_concatv4sf): Renamed to ...
16605         (*vec_concatv4sf_sse): This.
16606         (*sse2_concatv2si): Renamed to ...
16607         (*vec_concatv2si_sse2): This.
16608         (*sse1_concatv2si): Renamed to ...
16609         (*vec_concatv2si_sse): This.
16610         (*vec_concatv2di_rex): Renamed to ...
16611         (*vec_concatv2di_rex64): This.
16612         (*vec_concatv2si_sse4_1): New.
16613         (*vec_concatv2di_rex64_sse4_1): Likewise.
16614
16615 2008-05-12  Uros Bizjak  <ubizjak@gmail.com>
16616
16617         PR rtl-optimization/36111
16618         * recog.c (validate_replace_rtx_1): Unshare new RTL expression
16619         that was created for swappable operands.
16620
16621 2008-05-12  Samuel Tardieu  <sam@rfc1149.net>
16622
16623         PR ada/36001
16624         * Makefile.in: Substitute GNATMAKE and GNATBIND.
16625         * configure.ac: Add call to ACX_PROG_GNAT.
16626
16627 2008-05-11  Volker Reichelt  <v.reichelt@netcologne.de>
16628
16629         * optc-gen.awk: Fix comment typo.
16630
16631 2008-05-11  Aaron W. LaFramboise  <aaronavay62@aaronwl.com>
16632
16633         * pretty-print.c (pp_integer_with_precision): Use
16634         HOST_LONG_LONG_FORMAT.
16635
16636 2008-05-10  Kenneth Zadeck  <zadeck@naturalbridge.com>
16637
16638         * gcse.c (store_killed_in_insn): Negated call to RTL_CONST_CALL_P.
16639
16640 2008-05-10  H.J. Lu  <hongjiu.lu@intel.com>
16641
16642         * config/i386/i386.c (bdesc_ptest): Removed.
16643         (ix86_builtin_type): Add INT_FTYPE_V2DI_V2DI_PTEST.
16644         (bdesc_args): Add __builtin_ia32_ptestz128,
16645         __builtin_ia32_ptestc128 and __builtin_ia32_ptestnzc128.
16646         (ix86_init_mmx_sse_builtins): Updated.
16647         (ix86_expand_args_builtin): Handle INT_FTYPE_V2DI_V2DI_PTEST.
16648         (ix86_expand_builtin): Updated.
16649
16650 2008-05-10  Richard Sandiford  <rdsandiford@googlemail.com>
16651
16652         * tree-cfg.c (valid_fixed_convert_types_p): New function.
16653         (verify_gimple_expr): Handle FIXED_CONVERT_EXPR.
16654
16655 2008-05-10  Uros Bizjak  <ubizjak@gmail.com>
16656
16657         * value-prof.c (interesting_stringop_to_profile): Do not
16658         return early for BUILT_IN_MEMPCPY.
16659
16660 2008-05-09  H.J. Lu  <hongjiu.lu@intel.com>
16661
16662         * calls.c (expand_call): Don't use callgraph to increase
16663         preferred_stack_boundary.
16664
16665         * cgraph.h (cgraph_rtl_info): Use unsigned on
16666         preferred_incoming_stack_boundary.
16667
16668         * final.c (rest_of_clean_state): Use unsigned on
16669         preferred_stack_boundary.
16670
16671 2008-05-09  Tom Tromey  <tromey@redhat.com>
16672
16673         PR preprocessor/22231:
16674         * c-opts.c (sanitize_cpp_opts): Disallow -MG if compilation is
16675         proceeding.
16676
16677 2008-05-09  Uros Bizjak  <ubizjak@gmail.com>
16678
16679         PR tree-optimization/36129
16680         * tree-ssa-ccp.c: Include value-prof.h.
16681         (execute_fold_all_builtins): Call gimple_remove_stmt_histograms if
16682         built-in function was folded to a constant.
16683         * Makefile.in (tree-ssa-ccp.c): Depend on value-prof.h
16684
16685 2008-05-09  Jan Sjodin  <jan.sjodin@amd.com>
16686             Sebastian Pop  <sebastian.pop@amd.com>
16687
16688         * tree-scalar-evolution.c: Document instantiate_scev.
16689         (instantiate_parameters_1): Renamed instantiate_scev_1.
16690         Don't use the same loop for instantiation_loop and evolution_loop.
16691         (instantiate_scev): New.
16692         (instantiate_parameters): Moved...
16693         (resolve_mixers): Update call to instantiate_scev_1 to pass the
16694         same loop twice.  Maintains the semantics for this function.
16695         * tree-scalar-evolution.h (instantiate_scev): Declare.
16696         (instantiate_parameters): ...here.  Now static inline.
16697         * tree-data-ref.c (dr_analyze_indices): Call instantiate_scev
16698         instead of resolve_mixers.
16699
16700 2008-05-09  Maxim Kuvyrkov  <maxim@codesourcery.com>
16701
16702         * rtl-factoring.c (collect_pattern_seqs): Fix typo.
16703
16704 2008-05-09  Tomas Bily  <tbily@suse.cz>
16705
16706         * config/pa/pa.c (reloc_needed): Use CASE_CONVERT.
16707         * tree-cfg.c (verify_expr, verify_gimple_expr): Likewise.
16708         * tree-ssa-structalias.c (get_constraint_for): Likewise.
16709         * c-common.c (c_common_truthvalue_conversion): Likewise.
16710         * tree-object-size.c (compute_object_offset): Likewise.
16711         * tree-inline.c (estimate_num_insns_1): Likewise.
16712         * varasm.c (const_hash_1, compare_constant, copy_constant)
16713         (compute_reloc_for_constant, output_addressed_constants)
16714         (initializer_constant_valid_p): Likewise.
16715         * c-omp.c (check_omp_for_incr_expr): Likewise.
16716         * gimplify.c (gimplify_expr): Likewise.
16717         * c-typeck.c (c_finish_return): Likewise.
16718         * tree-vectorizer.c (supportable_widening_operation)
16719         (supportable_narrowing_operation): Likewise.
16720         * c-pretty-print.c (pp_c_cast_expression, pp_c_expression): Likewise.
16721         * matrix-reorg.c (can_calculate_expr_before_stmt): Likewise.
16722         * expr.c (highest_pow2_factor, expand_expr_real_1): Likewise.
16723         * dwarf2out.c (loc_descriptor_from_tree_1, add_bound_info)
16724         (descr_info_loc): Likewise.
16725         * tree-ssa-loop-ivopts.c (may_be_nonaddressable_p): Likewise.
16726         * fold-const.c (operand_equal_p, make_range, extract_muldiv_1)
16727         (fold_unary): Likewise.
16728         * builtins.c (get_pointer_alignment): Likewise.
16729         * tree-scalar-evolution.c (interpret_rhs_modify_stmt)
16730         (instantiate_parameters_1): Likewise.
16731         * tree.c (expr_align, stabilize_reference): Likewise.
16732         * tree-pretty-print.c (dump_generic_node, op_prio): Likewise.
16733         * tree-ssa-loop-niter.c (derive_constant_upper_bound): Likewise.
16734         * convert.c (strip_float_extensions): Use CONVERT_EXPR_P.
16735         * tree-ssa-threadedge.c (simplify_control_stmt_condition): Likewise.
16736         * config/alpha/alpha.c (va_list_skip_additions): Likewise.
16737         * c-common.c (c_alignof_expr, check_function_arguments_recurse):
16738         Likewise.
16739         * tree-ssa.c (tree_ssa_useless_type_conversion): Likewise.
16740         * varasm.c (initializer_constant_valid_p, output_constant): Likewise.
16741         * tree-ssa-forwprop.c (get_prop_source_stmt, can_propagate_from)
16742         (forward_propagate_addr_expr_1, forward_propagate_addr_expr)
16743         (forward_propagate_comparison)
16744         (tree_ssa_forward_propagate_single_use_vars): Likewise.
16745         * cfgexpand.c (discover_nonconstant_array_refs_r): Likewise.
16746         * emit-rtl.c (component_ref_for_mem_expr)
16747         (set_mem_attributes_minus_bitpos): Likewise.
16748         * tree-ssa-phiopt.c (conditional_replacement): Likewise.
16749         * gimplify.c (gimplify_conversion, goa_lhs_expr_p, gimplify_expr):
16750         Likewise.
16751         * c-typeck.c (default_function_array_conversion, build_indirect_ref)
16752         (build_function_call, pointer_diff, build_compound_expr)
16753         (c_finish_return): Likewise.
16754         * tree-vect-analyze.c (vect_determine_vectorization_factor): Likewise.
16755         * matrix-reorg.c (get_inner_of_cast_expr, may_flatten_matrices_1):
16756         Likewise.
16757         * tree-ssa-ifcombine.c (recognize_single_bit_test): Likewise.
16758         * expr.c (is_aligning_offset): Likewise.
16759         * tree-ssa-alias.c (is_escape_site): Likewise.
16760         * tree-stdarg.c (va_list_counter_bump, check_va_list_escapes)
16761         (check_all_va_list_escapes): Likewise.
16762         * tree-ssa-loop-ivopts.c (determine_base_object)
16763         (determine_common_wider_type): Likewise.
16764         * dojump.c (do_jump): Likewise.
16765         * tree-ssa-sccvn.c (simplify_unary_expression): Likewise.
16766         * tree-gimple.c (is_gimple_cast): Likewise.
16767         * fold-const.c (decode_field_reference, )
16768         (fold_sign_changed_comparison, fold_unary, fold_comparison)
16769         (fold_binary): Likewise.
16770         * tree-ssa-alias-warnings.c (find_alias_site_helper)
16771         (already_warned_in_frontend_p): Likewise.
16772         * builtins.c (get_memory_rtx, fold_builtin_next_arg): Likewise.
16773         * tree.c (really_constant_p, get_unwidened): Likewise.
16774         * tree-ssa-loop-niter.c (expand_simple_operations): Likewise.
16775         * tree-ssa-loop-im.c (rewrite_bittest): Likewise.
16776         * tree-vrp.c (register_edge_assert_for_2, register_edge_assert_for_1):
16777         Likewise.
16778         * tree.h (STRIP_NOPS, STRIP_SIGN_NOPS, STRIP_TYPE_NOPS): Use
16779         CONVERT_EXPR_P.
16780         (CONVERT_EXPR_P): Define.
16781         (CASE_CONVERT): Define.
16782
16783 2008-05-08  Kenneth Zadeck  <zadeck@naturalbridge.com>
16784
16785         PR middle-end/36117
16786         * dce.c (deletable_insn_p): Do not delete calls if df_in_progress.
16787         (delete_unmarked_insns): When deleting a call, call
16788         delete_unreachable_blocks.
16789         * rtl.texi (RTL_CONST_CALL_P, RTL_PURE_CALL_P,
16790         RTL_CONST_OR_PURE_CALL_P, RTL_LOOPING_CONST_OR_PURE_CALL_P): Fixed doc.
16791
16792 2008-05-08  Richard Guenther  <rguenther@suse.de>
16793
16794         * doc/invoke.texi (-fdump-tree-salias): Remove documentation.
16795         (-ftree-salias): Likewise.
16796         (salias-max-implicit-fields): Remove param documentation.
16797         (salias-max-array-elements): Likewise.
16798         * tree-pass.h (pass_create_structure_vars): Remove.
16799         * params.h (SALIAS_MAX_IMPLICIT_FIELDS): Remove.
16800         (SALIAS_MAX_ARRAY_ELEMENTS): Likewise.
16801         * tree-ssa-alias.c (create_structure_vars): Remove.
16802         (gate_structure_vars): Likewise.
16803         (pass_create_structure_vars): Likewise.
16804         (gate_build_alias): Likewise.
16805         (pass_build_alias): Adjust to run always and dump the function.
16806         * common.opt (ftree-salias): Hide.
16807         * passes.c (init_optimization_passes): Remove
16808         pass_create_structure_vars, adjust comment.
16809         * params.def (PARAM_SALIAS_MAX_IMPLICIT_FIELDS): Remove.
16810         (PARAM_SALIAS_MAX_ARRAY_ELEMENTS): Likewise.
16811         * opts.c (decode_options): Do not set flag_tree_salias.
16812         (common_handle_option): Add OPT_ftree_salias to the backward
16813         compatibility section.
16814
16815 2008-05-08  Richard Guenther  <rguenther@suse.de>
16816
16817         * tree-flow-inline.h (var_can_have_subvars): Move ...
16818         * tree-ssa-structalias.c (var_can_have_subvars): ... here.
16819         * tree-flow.h (var_can_have_subvars): Remove.
16820         (push_fields_onto_fieldstack): Remove.
16821         (sort_fieldstack): Likewise.
16822         (struct fieldoff): Move ...
16823         * tree-ssa-structalias.c (struct fieldoff): ... here.  Remove
16824         alias_set and base_for_components fields.
16825         (sort_fieldstack): Make static.
16826         (push_fields_onto_fieldstack): Likewise.  Remove code that
16827         handles anything but RECORD_TYPEs.  Remove alias_set and
16828         base_for_components handling.
16829         (create_variable_info_for): Adjust.
16830
16831 2008-05-08  Seongbae Park  <seongbae.park@gmail.com>
16832
16833         * common.opt (Wframe-larger-than=): Shorten the help message
16834         to one line.
16835         * doc/invoke.texi (Wframe-larger-than=): Add more description.
16836
16837 2008-05-08  Rafael Espíndola  <espindola@google.com>
16838
16839         * tree-complex.c (expand_complex_div_wide): Don't create CONDs that
16840         trap.
16841         * tree-gimple.c (is_gimple_condexpr): Check that the expression doesn't
16842         trap and that both operands are gimple values.
16843         (canonicalize_cond_expr_cond): Use is_gimple_condexpr.
16844         * gcc/tree-eh.c (tree_could_trap_p): Correctly detect if a comparison
16845         is a fp operation.
16846
16847 2008-05-08  Richard Sandiford  <rsandifo@nildram.co.uk>
16848
16849         * read-rtl.c (join_c_conditions): Return the first string if the
16850         two strings are equal.
16851
16852 2008-05-08  Richard Sandiford  <rsandifo@nildram.co.uk>
16853
16854         * gensupport.h (pred_data): Add a "num_codes" field.
16855         (add_predicate_code): Declare.
16856         * gensupport.c (add_predicate_code): New function.
16857         (std_pred_table): Add an "allows_const_p" field.
16858         (std_preds): Set this field for predicates that allow RTX_CONST_OBJs.
16859         Remove the (incomplete) list of such codes from the codes field.
16860         (init_predicate_table): Use add_predicate_code.  Add all
16861         RTX_CONST_OBJs if allows_const_p is true.
16862         * genrecog.c (process_define_predicate): Use add_predicate_code.
16863
16864 2008-05-08  David Daney  <ddaney@avtrex.com>
16865             Richard Sandiford  <rsandifo@nildram.co.uk>
16866
16867         * config/mips/mips.md (mips_expand_compare_and_swap_12): Handle
16868         special case of constant zero operands.
16869         * config/mips/mips.c (mips_expand_compare_and_swap_12): Zero extend
16870         old and new values.  Special case constant zero values.
16871         * config/mips/mips.h (MIPS_COMPARE_AND_SWAP): Skip 'sync' if compare
16872         fails.
16873         (MIPS_COMPARE_AND_SWAP_12): Handle constant zero operands.
16874         (MIPS_COMPARE_AND_SWAP_12_0): New macro.
16875
16876 2008-05-08  Paolo Bonzini  <bonzini@gnu.org>
16877
16878         PR target/36090
16879         * simplify-rtx.c (simplify_plus_minus): Create CONST of
16880         similar RTX_CONST_OBJ before CONST_INT.
16881
16882 2008-05-08  Steve Ellcey  <sje@cup.hp.com>
16883
16884         * stmt.c (expand_stack_restore): Change sa mode if needed.
16885
16886 2008-05-08  Richard Guenther  <rguenther@suse.de>
16887
16888         * config/i386/i386-protos.h (ix86_return_in_memory): Adjust
16889         return type to bool.
16890         (ix86_sol10_return_in_memory): Likewise.
16891         (ix86_i386elf_return_in_memory): Likewise.
16892         (ix86_i386interix_return_in_memory): Likewise.
16893         * config/i386/i386.c (ix86_return_in_memory): Likewise.
16894         (ix86_sol10_return_in_memory): Likewise.
16895         (ix86_i386elf_return_in_memory): Likewise.
16896         (ix86_i386interix_return_in_memory): Likewise.
16897
16898 2008-05-08  Kai Tietz  <kai.tietz@onevision.com>
16899
16900         PR bootstrap/36180
16901         * calls.c (compute_argument_block_size ): Add ATTRIBUTE_UNUSED to
16902         fndecl argument.
16903         (emit_library_call_value_1): Add ATTRIBUTE_UNUSED to variable fndecl.
16904         * target-def.h: Check that TARGET_RETURN_IN_MEMORY isn't
16905         declared in front.
16906
16907 2008-05-08  Richard Guenther  <rguenther@suse.de>
16908
16909         * tree-data-ref.c (dr_analyze_alias): Do not set DR_SUBVARS.
16910         * tree-data-ref.h (struct dr_alias): Remove subvars field.
16911         (DR_SUBVARS): Remove.
16912         * tree-dfa.c (dump_subvars_for): Remove.
16913         (debug_subvars_for): Likewise.
16914         (dump_variable): Do not dump subvars.
16915         (remove_referenced_var): Do not remove subvars.
16916         * tree-flow-inline.h (clear_call_clobbered): SFTs no longer exist.
16917         (lookup_subvars_for_var): Remove.
16918         (get_subvars_for_var): Likewise.
16919         (get_subvars_at): Likewise.
16920         (get_first_overlapping_subvar): Likewise.
16921         (overlap_subvar): Likewise.
16922         * tree-flow.h (subvar_t): Remove.
16923         (struct var_ann_d): Remove subvars field.
16924         * tree-ssa-alias.c (mark_aliases_call_clobbered): Remove queued
16925         argument.  Remove special handling of SFTs.
16926         (compute_tag_properties): Likewise.
16927         (set_initial_properties): Likewise.
16928         (compute_call_clobbered): Likewise.
16929         (count_mem_refs): Likewise.
16930         (compute_memory_partitions): Likewise.
16931         (compute_flow_insensitive_aliasing): Likewise.
16932         (setup_pointers_and_addressables): Likewise.
16933         (new_type_alias): Likewise.
16934         (struct used_part): Remove.
16935         (used_portions): Likewise.
16936         (struct used_part_map): Likewise.
16937         (used_part_map_eq): Likewise.
16938         (used_part_map_hash): Likewise.
16939         (free_used_part_map): Likewise.
16940         (up_lookup): Likewise.
16941         (up_insert): Likewise.
16942         (get_or_create_used_part_for): Likewise.
16943         (create_sft): Likewise.
16944         (create_overlap_variables_for): Likewise.
16945         (find_used_portions): Likewise.
16946         (create_structure_vars): Likewise.
16947         * tree.def (STRUCT_FIELD_TAG): Remove.
16948         * tree.h (MTAG_P): Adjust.
16949         (struct tree_memory_tag): Remove base_for_components and
16950         unpartitionable flags.
16951         (struct tree_struct_field_tag): Remove.
16952         (SFT_PARENT_VAR): Likewise.
16953         (SFT_OFFSET): Likewise.
16954         (SFT_SIZE): Likewise.
16955         (SFT_NONADDRESSABLE_P): Likewise.
16956         (SFT_ALIAS_SET): Likewise.
16957         (SFT_UNPARTITIONABLE_P): Likewise.
16958         (SFT_BASE_FOR_COMPONENTS_P): Likewise.
16959         (union tree_node): Remove sft field.
16960         * alias.c (get_alias_set): Remove special handling of SFTs.
16961         * print-tree.c (print_node): Remove handling of SFTs.
16962         * tree-dump.c (dequeue_and_dump): Likewise.
16963         * tree-into-ssa.c (mark_sym_for_renaming): Likewise.
16964         * tree-nrv.c (dest_safe_for_nrv_p): Remove special handling of SFTs.
16965         * tree-predcom.c (set_alias_info): Do not set subvars.
16966         * tree-pretty-print.c (dump_generic_node): Do not handle SFTs.
16967         * tree-ssa-loop-ivopts.c (get_ref_tag): Likewise.
16968         * tree-ssa-operands.c (access_can_touch_variable): Likewise.
16969         (add_vars_for_offset): Remove.
16970         (add_virtual_operand): Remove special handling of SFTs.
16971         (add_call_clobber_ops): Likewise.
16972         (add_call_read_ops): Likewise.
16973         (get_asm_expr_operands): Likewise.
16974         (get_modify_stmt_operands): Likewise.
16975         (get_expr_operands): Likewise.
16976         (add_to_addressable_set): Likewise.
16977         * tree-ssa.c (verify_ssa_name): Do not handle SFTs.
16978         * tree-tailcall.c (suitable_for_tail_opt_p): Likewise.
16979         * tree-vect-transform.c (vect_create_data_ref_ptr): Do not set subvars.
16980         * tree.c (init_ttree): Remove STRUCT_FIELD_TAG initialization.
16981         (tree_code_size): Remove STRUCT_FIELD_TAG handling.
16982         (tree_node_structure): Likewise.
16983         * tree-ssa-structalias.c (set_uids_in_ptset): Remove special
16984         handling of SFTs.
16985         (find_what_p_points_to): Likewise.
16986
16987 2008-05-08  Sa Liu  <saliu@de.ibm.com>
16988
16989         * config/spu/spu.md: Fixed subti3 pattern.
16990
16991 2008-05-08  Richard Guenther  <rguenther@suse.de>
16992
16993         PR middle-end/36154
16994         * tree-ssa-structalias.c (push_fields_onto_fieldstack): Make
16995         sure to create a representative for trailing arrays for PTA.
16996
16997 2008-05-08  Richard Guenther  <rguenther@suse.de>
16998
16999         PR middle-end/36172
17000         * fold-const.c (operand_equal_p): Two objects which types
17001         differ in pointerness are not equal.
17002
17003 2008-05-08  Kai Tietz  <kai.tietz@onevision.com>
17004
17005         * calls.c (compute_argument_block_size): Add argument tree fndecl.
17006         (OUTGOING_REG_PARM_STACK_SPACE): Add function type argument.
17007         (emit_library_call_value_1): Add new variable fndecl initialized by
17008         NULL_TREE. It should be the decl type of orgfun, but this information
17009         seems not to be available here, so it uses the default calling abi.
17010         * config/arm/arm.c (arm_return_in_memory): Add fntype argumen.
17011         * config/arm/arm.h (RETURN_IN_MEMORY): Replace RETURN_IN_MEMORY
17012         by TARGET_RETURN_IN_MEMORY.
17013         * config/i386/i386-interix.h: Likewise.
17014         * config/i386/i386.h: Likewise.
17015         * config/i386/i386elf.h: Likewise.
17016         * config/i386/ptx4-i.h: Likewise.
17017         * config/i386/sol2-10.h: Likewise.
17018         * config/i386/sysv4.h: Likewise.
17019         * config/i386/vx-common.h: Likewise.
17020         * config/cris/cris.h: Removed #if 0 clause.
17021         * config/arm/arm-protos.h (arm_return_in_memory): Add fntype argument.
17022         * config/i386/i386-protos.h (ix86_return_in_memory): Add fntype
17023         argument.
17024         (ix86_sol10_return_in_memory): Likewise.
17025         (ix86_i386elf_return_in_memory): New.
17026         (ix86_i386interix_return_in_memory): New.
17027         * config/mt/mt-protos.h (mt_return_in_memory): New.
17028         * config/mt/mt.c: Likewise.
17029         * config/mt/mt.h (OUTGOING_REG_PARM_STACK_SPACE): Add FNTYPE argument.
17030         (RETURN_IN_MEMORY):  Replace by TARGET_RETURN_IN_MEMORY.
17031         * config/bfin/bfin.h: Likewise.
17032         * config/bfin/bfin-protos.h (bfin_return_in_memory): Add fntype
17033         argument.
17034         * config/bfin/bfin.c: Likewise.
17035         * config/pa/pa.h (OUTGOING_REG_PARM_STACK_SPACE): Add FNTYPE argument.
17036         * config/alpha/unicosmk.h: Likewise.
17037         * config/i386/cygming.h: Likewise.
17038         * config/iq2000/iq2000.h: Likewise.
17039         * config/mips/mips.h: Likewise.
17040         * config/mn10300/mn10300.h: Likewise.
17041         * config/rs6000/rs6000.h: Likewise.
17042         * config/score/score.h: Likewise.
17043         * config/spu/spu.h: Likewise.
17044         * config/v850/v850.h: Likewise.
17045         * defaults.h: Likewise.
17046         * doc/tm.texi (OUTGOING_REG_PARM_STACK_SPACE): Adjust documentation.
17047         * expr.c (emit_block_move): Adjust use of
17048         OUTGOING_REG_PARM_STACK_SPACE.
17049         * function.c (STACK_DYNAMIC_OFFSET): Adjust use of
17050         OUTGOING_REG_PARM_STACK_SPACE.
17051         * targhooks.c (default_return_in_memory): Remove RETURN_IN_MEMORY.
17052
17053 2008-05-08  Jakub Jelinek  <jakub@redhat.com>
17054
17055         * tree-parloops.c (create_parallel_loop): Set OMP_RETURN_NOWAIT
17056         on OMP_RETURN for OMP_FOR.
17057
17058         PR debug/35896
17059         * dwarf2out.c (dw_expand_expr, common_check): Removed.
17060         (fortran_common): New function.
17061         (gen_variable_die): Call fortran_common instead of common_check,
17062         adjust for it returning tree instead of rtx.  Formatting.
17063
17064 2008-05-07  Kenneth Zadeck  <zadeck@naturalbridge.com>
17065
17066         PR rtl/7335
17067         PR rtl/33826
17068         * see.c (see_copy_insn): Copy new pure const attributes for new call.
17069         * c-decl.c (merge_decls): Ditto.
17070         * postreload.c (record_opr_changes): Change CONST_OR_PURE_CALL_P
17071         to RTL_CONST_OR_PURE_CALL_P.
17072         * tree.c (define_local_buitin): Rename DECL_IS_PURE to DECL_PURE_P.
17073         Initialized DECL_LOOPING_CONST_PURE.
17074         (process_call_operands): Set tree_side_effects properly.
17075         * tree.h (TREE_READONLY_DECL_P): Removed.
17076         (DECL_IS_PURE): Renamed to DECL_PURE_P.
17077         (DECL_LOOPING_OR_CONST_P): New macro.
17078         (struct tree_function_decl): Added looping_const_or_pure_p.
17079         (ECF_*) Renumbered.
17080         (ECF_LOOPING_OR_CONST_P): New macro.
17081         * rtlanal.c (pure_const_p): Removed.
17082         * builtins.c (expand_builtin): Rename DECL_IS_PURE to DECL_PURE_P.
17083         * reorg.c (delete_prior_computation) Changed CONST_OR_PURE_CALL_P
17084         to RTL_CONST_CALL_P.
17085         * ipa-pure-const.c (pure_const_state_e): Added looping field.
17086         (check_decl, check_tree, check_call, scan_function): Initialize
17087         looping.
17088         (analyze_function): Rename DECL_IS_PURE to DECL_PURE_P.
17089         (static_execute): Set looping true for recursive functions.
17090         Undo setting state to IPA_NEITHER for recursive functions.
17091         * cse.c (cse_insn):
17092         * ifcvt.c (noce_can_store_speculate_p): Changed
17093         CONST_OR_PURE_CALL_P and pure_call_p to RTL_CONST_CALL_P or
17094         RTL_CONST_OR_PURE_CALL_P.
17095         * dse.c (scan_insn): Ditto.
17096         * local-alloc.c (validate_equiv_mem, memref_used_between_p): Ditto.
17097         * gcse.c (oprs_not_seen_p) Changed CONST_OR_PURE_CALL_P to
17098         RTL_CONST_OR_PURE_CALL_P.
17099         (store_killed_in_insn): Changed CONST_OR_PURE_CALL_P and
17100         pure_call_p to RTL_CONST_CALL_P.
17101         * gimplify.c (gimplify_call_expr): Clear side effects for
17102         non-looping pure and constant calls.
17103         * calls.c (emit_call_1): Set rtl flags from ecf flags.
17104         (flags_from_decl_or_type): Set ecf flags from decl flags.
17105         (initialize_argument_information): Turn off
17106         ECF_LOOPING_CONST_OR_PURE when turning off ECF_CONST.
17107         Change const to pure if callee_copies is true rather than just
17108         turning off const.
17109         (expand_call): Turn off ECF_LOOPING_PURE_CONST_CALL and remove old
17110         way of marking pure calls.
17111         (emit_library_call_value_1): Turn off ECF_LOOPING_PURE_CONST_CALL.
17112         Remove hack that was supposed to fix pr7335 and remove old
17113         way of marking pure calls.
17114         * emit-rtl.c (emit_copy_of_insn_after): Copy RTL_CONST_CALL_P,
17115         RTL_PURE_CALL_P, RTL_LOOPING_CONST_OR_PURE_CALL_P.
17116         * cselib.c (cselib_process_insn): Changed CONST_OR_PURE_CALL_P to
17117         RTL_CONST_OR_PURE_CALL_P.
17118         * tree-ssa-pre.c (can_value_number_call): Fixed spacing.
17119         * loop-invariant.c (find_exits, find_invariant_bb): Changed
17120         CONST_OR_PURE_CALL_P to RTL_CONST_OR_PURE_CALL_P.
17121         * sched-deps.c (schedule_analyze): Ditto.
17122         * rtl.h (struct rtx_def): Use call field, unchanging field, and
17123         return_val field of calls to represent pure and const function info.
17124         (CONST_OR_PURE_CALL_P): Deleted macro.
17125         (RTL_CONST_CALL_P, RTL_PURE_CALL_P,
17126         RTL_LOOPING_CONST_OR_PURE_CALL_P, RTL_CONST_OR_PURE_P): New macros.
17127         * tree-inline.c (copy_body_r): Changed TREE_READONLY_DECL_P to
17128         TREE_READONLY.
17129         * tree-optimize.c (execute_fixup_cfg): Added test for
17130         ECF_LOOPING_CONST_OR_PURE.
17131         * c-common.c (handle_pure_attribute): Changed DECL_IS_PURE to
17132         DECL_PURE_P.
17133         * tree-cfg.c (update_call_expr_flags): Do not clear tree side
17134         effects for looping pure or const calls.
17135         (verify_gimple_expr): Added verification code.
17136         * config/alpha/alpha.c (alpha_legitimize_address,
17137         alpha_emit_xfloating_libcall): Changed CONST_OR_PURE_CALL_P to
17138         RTL_CONST_CALL_P.
17139         * config/s390/s390.c (s390_emit_tls_call_insn): Ditto.
17140         * config/rs6000/rs6000.c (rs6000_legitimize_tls_address): Ditto.
17141         * config/mips/mips.c (mips_call_tls_get_addr): Ditto.
17142         * cfgrtl.c (need_fake_edge_p): Changed CONST_OR_PURE_CALL_P to
17143         RTL_CONST_OR_PURE_CALL_P.
17144         * dce.c (deletable_insn_p): Allow non looping, non sibling, pure
17145         and const calls to be deleted.
17146
17147 2008-05-07  Uros Bizjak  <ubizjak@gmail.com>
17148
17149         PR target/35714
17150         * config/i386/mmx.md (mmx_subv2sf3): New expander.
17151         (*mmx_subv2sf3): Rename from mmx_subv2sf3 insn pattern.
17152         (*mmx_eqv2sf3): Rename from mmx_eqv2sf3 insn pattern.
17153         (mmx_eqv2sf3): New expander.  Use ix86_fixup_binary_operands_no_copy
17154         to handle nonimmediate operands.
17155         (*mmx_paddwd): Rename from mmx_paddwd insn pattern.
17156         (mmx_paddwd): New expander.  Use ix86_fixup_binary_operands_no_copy
17157         to handle nonimmediate operands.
17158         (*mmx_pmulhrwv4hi3): Rename from mmx_pmulhrwv4hi3 insn pattern.
17159         (mmx_pmulhrwv4hi3): New expander.  Use
17160         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
17161         (*sse2_umulv1siv1di3): Rename from sse2_umulv1siv1di3 insn pattern.
17162         (sse2_umulv1siv1di3): New expander.  Use
17163         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
17164         (*mmx_eq<mode>3): Rename from mmx_eq<mode>3 insn pattern.
17165         (mmx_eq<mode>3): New expander.  Use
17166         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
17167         (*mmx_uavgv8qi3): Rename from mmx_uavgv8qi3 insn pattern.
17168         (mmx_uavgv8qi3): New expander.  Use
17169         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
17170         (*mmx_uavgv4hi3): Rename from mmx_uavgv4hi3 insn pattern.
17171         (mmx_uavgv4hi3): New expander.  Use
17172         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
17173
17174         * config/i386/sse.md
17175         (sse_movhlps_exp): New expander.  Use ix86_fixup_binary_operands
17176         to handle nonimmediate operands.
17177         (sse_movlhps_exp): New expander.  Use ix86_fixup_binary_operands
17178         to handle nonimmediate operands.
17179         (sse_loadhps_exp): New expander.  Use ix86_fixup_binary_operands
17180         to handle nonimmediate operands.
17181         (sse_loadlps_exp): New expander.  Use ix86_fixup_binary_operands
17182         to handle nonimmediate operands.
17183         (sse2_unpckhpd_exp): New expander.  Use
17184         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
17185         (sse2_unpcklpd_exp): New expander.  Use
17186         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
17187         (sse_loadhpd_exp): New expander.  Use ix86_fixup_binary_operands
17188         to handle nonimmediate operands.
17189         (sse_loadlpd): New expander.  Use ix86_fixup_binary_operands
17190         to handle nonimmediate operands.
17191         (*sse2_<plusminus_insn><mode>3): Rename from
17192         sse2_<plusminus_insn><mode>3 insn pattern.
17193         (sse2_<plusminus_insn><mode>3): New expander.  Use
17194         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
17195         (*sse2_umulv2siv2di3): Rename from sse2_umulv2siv2di3 insn pattern.
17196         (sse2_umulv2siv2di3): New expander.  Use
17197         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
17198         (*sse4_1_mulv2siv2di3): Rename from sse4_1_mulv2siv2di3 insn pattern.
17199         (sse4_1_mulv2siv2di3): New expander.  Use
17200         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
17201         (*sse2_pmaddwd): Rename from sse2_pmaddwd insn pattern.
17202         (sse2_pmaddwd): New expander.  Use
17203         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
17204         (*sse2_eq<mode>3): Rename from sse2_eq<mode>3 insn pattern.
17205         (sse2_eq<mode>3): New expander.  Use
17206         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
17207         (*sse4_1_eqv2di3): Rename from sse4_1_eqv2di3 insn pattern.
17208         (sse4_1_eqv2di3): New expander.  Use
17209         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
17210         (*sse2_uavgv16qi3): Rename from sse2_uavgv16qi3 insn pattern.
17211         (sse2_uavgv16qi3): New expander.  Use
17212         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
17213         (*sse2_uavgv16qi3): Rename from sse2_uavgv16qi3 insn pattern.
17214         (sse2_uavgv16qi3): New expander.  Use
17215         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
17216         (*sse2_uavgv8hi3): Rename from sse2_uavgv8hi3 insn pattern.
17217         (sse2_uavgv8hi3): New expander.  Use
17218         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
17219         (*ssse3_pmulhrswv8hi3): Rename from ssse3_pmulhrswv8hi3 insn pattern.
17220         (ssse3_pmulhrswv8hi3): New expander.  Use
17221         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
17222         (*ssse3_pmulhrswv4hi3): Rename from ssse3_pmulhrswv4hi3 insn pattern.
17223         (ssse3_pmulhrswv4hi3): New expander.  Use
17224         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
17225
17226         (<sse>_vm<plusminus_insn><mode>3): Do not use ix86_binary_operator_ok.
17227         (<sse>_vmmul<mode>3): Ditto.
17228         (divv4sf3): Do not use ix86_fixup_binary_operands_no_copy.
17229         (divv2df3): Ditto.
17230         (ssse3_pmaddubsw128): Use register_operand for operand 1.
17231         (ssse3_pmaddubsw): Ditto.
17232
17233         * config/i386/i386.c (struct_builtin_description)
17234         [IX86_BUILTIN_LOADHPS]: Use CODE_FOR_sse_loadhps_exp.
17235         [IX86_BUILTIN_STOREHPS]: Use CODE_FOR_sse_loadlps_exp.
17236         [IX86_BUILTIN_LOADHPD]: Use CODE_FOR_sse2_loadhpd_exp.
17237         [IX86_BUILTIN_LOADLPD]: Use CODE_FOR_sse2_loadlpd_exp.
17238         [IX86_BUILTIN_MOVHLPS]: Use CODE_FOR_sse_movhlps_exp.
17239         [IX86_BUILTIN_MOVLHPS]: Use CODE_FOR_sse_movlhps_exp.
17240         [IX86_BUILTIN_UNPCKHPD]: Use FOR_sse2_unpckhpd_exp.
17241         [IX86_BUILTIN_UNPCKLPD]: Use FOR_sse2_unpcklpd_exp.
17242         (ix86_fixup_binary_operands): Assert that src1
17243         and src2 must have the same mode when swapped.
17244         (ix86_expand_binop_builtin): Do not use ix86_fixup_binary_operands
17245         and ix86_binary_operator_ok.  Do not force operands in registers
17246         when optimizing.
17247
17248 2008-05-07  Jan Hubicka  <jh@suse.cz>
17249
17250         * cgraph.c (dump_cgraph_node): Update.
17251         * cgraph.h (cgraph_local_info): Break out inline summary.
17252         * cgraphunit.c (cgraph_process_new_functions): Use inliner analysis
17253         hook.
17254         * ipa-inline (inline_summary): New accestor function.
17255         (cgraph_clone_inlined_nodes, cgraph_check_inline_limits,
17256         cgraph_decide_inlining, compute_inline_parameters): Update.
17257         * ipa.c (cgraph_remove_unreachable_nodes): Remove statistics.
17258
17259 2008-05-07  Maxim Kuvyrkov  <maxim@codesourcery.com>
17260
17261         Cleanup ColdFire scheduling support and add V4 pipeline model.
17262
17263         * config/m68k/m68k.md (UNSPEC_TIE): New constant.
17264         (define_attr cpu): Add cfv4 value.
17265         (define_attr type, define_attr type1): Merge into a single 'type'
17266         attribute.  Update all uses.
17267         (define_attr opx_type, define_attr opy_type, define_attr opx_access):
17268         Rearrange and update.  Rename value 'reg' to 'Rn', add value 'FPn'.
17269         Update all uses.
17270         (define_attr opx_mem, define_attr opy_mem): Remove.
17271         (define_attr op_mem): Clean up, update comment.
17272         (define_attr size): Use specific values instead of general int.
17273         (define_attr guess, define_attr split): Remove.  Update all uses.
17274         (movdf_internal, tstsi_internal, tsthi_internal, tstqi_internal,
17275         tst<mode>_68881, pushexthisi_const, movsi_const0_68000_10,
17276         movsi_const0_68040_60, movsi_const0, movsi_cf, movstrictqi_cf,
17277         zero_extendhisi2_cf, zero_extendqisi2_cfv4, cfv4_extendhisi2,
17278         68k_extendhisi2, extendqihi2, cfv4_extendqisi2, 68k_extendqisi2,
17279         floatsi<mode>2_68881, ftrunc<mode>2_68881, ftrunc<mode>2_cf,
17280         fix<mode>qi2_68881, fix<mode>hi2_68881, fix<mode>si2_68881,
17281         adddi_dishl32, addsi3_5200, add<mode>3_floatsi_68881,
17282         add<mode>3_floathi_68881, add<mode>3_floatqi_68881,
17283         add<mode>3_68881, add<mode>3_cf, subdi_dishl32, subsi3,
17284         sub<mode>3_floatsi_68881, sub<mode>3_floathi_68881,
17285         sub<mode>3_floatqi_68881, sub<mode>3_68881, sub<mode>3_cf,
17286         mulhi3, mulhisi3, mulhisisi3_s, mulsi3_68020, mulsi3_cf,
17287         umulhisi3, mulhisisi3_z, mul<mode>3_floatsi_68881,
17288         mul<mode>3_floathi_68881, mul<mode>3_floatqi_68881, fmul<mode>3_cf,
17289         div<mode>3_cf, sqrt<mode>2_cf, abs<mode>2_cf, clzsi2,
17290         one_cmplsi2_5200, subreghi1ashrdi_const32, ashrsi3, lshrsi3,
17291         bsetmemqi, bsetmemqi_ext, bclrmemqi, bclrmemqi_ext,
17292         beq, bne, bgt, blt, bordered, bunordered, buneq, bunge, bungt, bunle,
17293         bunlt, bltgt, tablejump_internal, call, non_symbolic_call_value,
17294         symbolic_call_value_jsr, symbolic_call_value_bsr, link):
17295         Update or set attributes.
17296         (stack_tie): New fake instruction.
17297
17298         * config/m68k/m68k.h (TUNE_CFV4): New macro.
17299         (m68k_sched_attr_size): Update declaration.
17300         (m68k_sched_attr_type2): Remove.
17301         (m68k_sched_address_bypass_p, m68k_sched_indexed_address_bypass_p):
17302         Declare new bypass predicates.
17303
17304         * config/m68k/m68k.c (m68k_sched_issue_rate,
17305         m68k_sched_first_cycle_multipass_dfa_lookahead): Declare hook
17306         implementations.
17307         (TARGET_SCHED_ISSUE_RATE,
17308         TARGET_SCHED_FIRST_CYCLE_MULTIPASS_DFA_LOOKAHEAD): Override hooks.
17309         (override_options): Handle scheduling for ColdFire V4 core.
17310         (m68k_expand_prologue): Emit stack_tie.
17311         (enum attr_op_type): Split value 'OP_TYPE_REG' to 'OP_TYPE_RN' and
17312         'OP_TYPE_FPN'.  Update all uses.
17313         (sched_guess_p): Remove.
17314         (sched_address_type): Handle symbolic addresses.
17315         (sched_get_operand): New static function.
17316         (sched_operand_type): Merge into sched_attr_op_type.
17317         (sched_attr_op_type): Handle FP registers, handle quick constants,
17318         update.
17319         (m68k_sched_attr_opx_type, m68k_sched_attr_opy_type): Update.
17320         (m68k_sched_attr_size): Update.  Move logic to ...
17321         (sched_get_attr_size_int): New static function.
17322         (sched_get_opxy_mem_type): New static function.
17323         (m68k_sched_attr_op_mem): Update.
17324         (m68k_sched_attr_type2): Remove.
17325         (sched_cfv4_bypass_data): New static variable.
17326         (m68k_sched_adjust_cost): Handle ColdFire V4 bypass.
17327         (m68k_sched_issue_rate): Implement scheduler hook.
17328         (struct _sched_ib: enabled_p): New field.
17329         (m68k_sched_variable_issue): Update.  Handle V4.
17330         (SCHED_DUMP_TODO, SCHED_DUMP_DONE, SCHED_DUMP_NOTHING,
17331         sched_dump_class_func_t, sched_dump_split_class,
17332         sched_dump_dfa_guess_unit_code, sched_dump_dfa_state,
17333         sched_dump_dfa_class, m68k_sched_dump): Remove.
17334         (m68k_sched_first_cycle_multipass_dfa_lookahead): Implement scheduler
17335         hook.
17336         (m68k_sched_init_global): Remove statisctics dumping, introduce
17337         sanity check that all instructions have pipeline reservations.  Handle
17338         ColdFire V4 core.
17339         (m68k_sched_dfa_pre_advance_cycle, m68k_sched_dfa_post_advance_cycle):
17340         Handle ColdFire V4 core.
17341         (sched_mem_operand_p, sched_get_reg_operand, sched_get_mem_operand):
17342         New static functions.
17343         (m68k_sched_address_bypass_p): New bypass predicate.
17344         (sched_get_indexed_address_scale): New static function.
17345         (m68k_sched_indexed_address_bypass_p): New bypass predicate.
17346
17347         * cf.md: Update comments.
17348         (define_attr type2): Remove.  Use 'type' attribute instead.
17349         Update all uses.
17350         (cf_ib): Rename to cfv123_ib.  Update all uses.
17351         (cf_oep): Rename to cfv123_oep.  Update all uses.
17352         (cf_chr): Rename to cfv123_chr.  Update all uses.
17353         (cf_mem): Rename to cfv123_mem.  Update all uses.
17354         (cf_mac): Move to more appropriate place.
17355         (cfv123_guess): New automaton and cpu_unit.
17356         (cfv123_*, cfv12_*, cfv1_*, cfv2_*, cfv3_*): Use type attribute.
17357         Update uses of 'size' attribute.  Handle before reload scheduling.
17358         (cfv123_guess): New dummy reservation for unhandled instructions.
17359         (cfv4_*): Pipeline description of ColdFire V4 core.
17360         (ignore): New reservation to handle 'ignore' type.
17361
17362 2008-05-07  Ian Lance Taylor  <iant@google.com>
17363
17364         PR middle-end/36013
17365         * gimplify.c (find_single_pointer_decl_1): Don't look through
17366         indirections.
17367         (find_single_pointer_decl): Adjust comments.
17368
17369 2008-05-07  Jakub Jelinek  <jakub@redhat.com>
17370
17371         PR middle-end/36137
17372         * fold-const.c (fold_binary): Use STRIP_SIGN_NOPS instead of
17373         STRIP_NOPS on arguments even for MIN_EXPR and MAX_EXPR.
17374
17375         PR middle-end/36106
17376         * omp-low.c (expand_omp_atomic_pipeline): Load value using the
17377         integral type rather than floating point, then VIEW_CONVERT_EXPR
17378         to the floating point type.
17379
17380 2008-05-07  Uros Bizjak  <ubizjak@gmail.com>
17381
17382         * config/i386/i386.c (ix86_expand_copysign): Force non-zero constant
17383         TFmode op0 to register.
17384
17385 2008-05-07  Alan Modra  <amodra@bigpond.net.au>
17386
17387         * c-decl.c (grokdeclarator): Comment typo.
17388
17389 2008-05-06  Aldy Hernandez  <aldyh@redhat.com>
17390
17391         * tree-flow.h: Remove prototype for computed_goto_p.
17392         * tree-cfg.c (computed_goto_p): Make static.
17393
17394 2008-05-06  H.J. Lu  <hongjiu.lu@intel.com>
17395
17396         PR target/35657
17397         * config/i386/i386.c (contains_128bit_aligned_vector_p): Renamed to ...
17398         (contains_aligned_value_p): This.  Handle _Decimal128.
17399         (ix86_function_arg_boundary): Only align _Decimal128 to its
17400         natural boundary and handle it properly.
17401
17402 2008-05-06  Martin Jambor  <mjambor@suse.cz>
17403
17404         * ipa-cp.c (ipcp_method_orig_node): Renamed to ipcp_get_orig_node.
17405         (ipcp_method_is_cloned): Renamed to ipcp_node_is_clone
17406         (ipcp_method_set_orig_node): Removed.
17407         (ipcp_cval_get_cvalue_type): Removed.
17408         (ipcp_method_get_scale): Renamed to ipcp_get_node_scale.
17409         (ipcp_method_set_scale): Renamed to ipcp_set_node_scale.
17410         (ipcp_cval_set_cvalue_type): Removed.
17411         (ipcp_cval_get_cvalue): Removed.
17412         (ipcp_cval_set_cvalue): Removed.
17413         (ipcp_type_is_const): Renamed to ipcp_lat_is_const.
17414         (ipcp_cval_equal_cvalues): Renamed to ipcp_lats_are_equal
17415         (ipcp_lats_are_equal): Changed parameters to two ipcp_lattice's
17416         (ipcp_cval_meet): Renamed to ipa_lattice_meet
17417         (ipcp_cval_changed): Changed to use ipcp_lat_is_const
17418         (ipcp_method_cval): Renamed to ipcp_get_ith_lattice
17419         (ipcp_get_ith_lattice): Changed parameters.
17420         (ipcp_cval_compute): Renamed to ipcp_lattice_from_jfunc
17421         (ipcp_lattice_from_jfunc): Changed parameters.
17422         (ipcp_redirect): Local lattice pointer instead of lattice type variable.
17423         (ipcp_method_cval_print): Added temporary variable info.
17424         (ipcp_redirect): Removed already unused local variable caller.
17425         (ipcp_redirect): New temporary variable orig_callee_info
17426         (ipcp_redirect): Removed newly unused local variable callee.
17427         (ipcp_redirect): Removed (a bit confusing) local variable type.
17428         (ipcp_insert_stage): Added local variable info.
17429         (ipcp_cval_changed): Renamed to ipcp_lattice_changed, parameters
17430         renamed too
17431         (ipcp_formal_create): Removed.
17432         (ipcp_method_cval_set): Removed.
17433         (ipcp_propagate_stage): Renamed lattice variables.
17434         (ipcp_method_cval_set_cvalue_type): Removed.
17435         (ipcp_method_cval_print): Renamed to ipcp_print_all_lattices
17436         (ipcp_print_all_lattices): Changed printed strings to refer to
17437         lattices rather than cvals.
17438         (ipcp_method_cval_init): Renamed to ipcp_initialize_node_lattices
17439         (ipcp_propagate_const): Changed formal parameters.
17440         (build_const_val): Changed formal parameters.
17441         (ipcp_insert_stage): Removed useless variable cvalue
17442         (build_const_val): Changed formal parameters.
17443         (ipcp_method_compute_scale): Renamed to ipcp_compute_node_scale
17444         (ipcp_after_propagate): Renamed to ipcp_change_tops_to_bottom
17445         (ipcp_callsite_param_print): Renamed to ipcp_print_all_jump_functions
17446         (ipcp_profile_mt_count_print): Renamed to ipcp_print_func_profile_counts
17447         (ipcp_print_func_profile_counts): Changed string from "method" to
17448         "function"
17449         (ipcp_profile_cs_count_print): Renamed to ipcp_print_call_profile_counts
17450         (ipcp_profile_edge_print): Renamed to ipcp_print_edge_profiles
17451         (ipcp_profile_bb_print): Renamed to ipcp_print_bb_profiles
17452         (ipcp_structures_print): Renamed to ipcp_print_all_structures
17453         (ipcp_profile_print): Renamed to ipcp_print_profile_data
17454         (ipcp_lat_is_const): Changed parameters and made inline.
17455         (ipcp_replace_map_create): Renamed to ipcp_create_replace_map
17456         (ipcp_redirect): Renamed to ipcp_need_redirect_p
17457         (ipcp_need_redirect_p): Calls ipcp_lat_is_const instead of using
17458         the predicate condition directly
17459         (ipcp_propagate_stage): Added local variable args. Removed local
17460         variable callee.  (Both are mere code simplifications.)
17461         (ipcp_method_dont_insert_const): Renamed to
17462         ipcp_node_not_modifiable_p.
17463         (ipcp_node_not_modifiable_p): Made inline.
17464         (ipcp_cloned_create): Renamed to ipcp_init_cloned_node
17465         (ipcp_propagate_const): Renamed to ipcp_propagate_one_const
17466         (ipcp_print_all_lattices): Removed variable cvalue
17467         (ipcp_method_scale_print): Renamed to ipcp_function_scale_print
17468         Updated comments.
17469
17470 2008-05-06  Olivier Hainque  <hainque@adacore.com>
17471
17472         * tree-sra.c (try_instantiate_multiple_fields): Early return
17473         if field has POINTER_TYPE.
17474
17475 2008-05-06  Kai Tietz  <kai.tietz@onevision.com>
17476
17477         * config/i386/i386.c (output_set_got): Fix for x86_64 output_emit_asm
17478         by using 'q' specifier for instruction.
17479         (ix86_file_end): Replaced case TARGET_64BIT_MS_ABI by TARGET_64BIT.
17480
17481 2008-05-06  Anatoly Sokolov <aesok@post.ru>
17482
17483         * config/avr/avr.md (*sbrx_branch, *sbix_branch, *sbix_branch_tmp):
17484         Change mode of zero_extract from QImode to HImode.
17485         (sign bit tests peepholes): (Ditto.).
17486
17487 2008-05-06  Uros Bizjak  <ubizjak@gmail.com>
17488
17489         * config/i386/mmx.md: Remove double backslashes from asm templates.
17490         (*mmx_addv2sf3): Rename from mmx_addv2sf3 insn pattern.
17491         (mmx_addv2sf3): New expander.  Use ix86_fixup_binary_operands_no_copy
17492         to handle nonimmediate operands.
17493         (*mmx_mulv2sf3): Rename from mmx_mulv2sf3 insn pattern.
17494         (mmx_mulv2sf3): New expander.  Use ix86_fixup_binary_operands_no_copy
17495         to handle nonimmediate operands.
17496         (*mmx_<code>v2sf3_finite): New insn pattern.
17497         (*mmx_<code>v2sf3): Rename from mmx_<code>v2sf3 insn pattern.
17498         (mmx_<code>v2sf3): New expander.  Use
17499         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
17500         (mmx_<plusminus_insn><mode>3): New expander.  Use
17501         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
17502         (*mmx_<plusminus_insn><mode>3): New insn pattern.
17503         (mmx_add<mode>3): Removed.
17504         (mmx_ssadd<mode>3): Ditto.
17505         (mmx_usadd<mode>3): Ditto.
17506         (mmx_sub<mode>3): Ditto.
17507         (mmx_sssub<mode>3): Ditto.
17508         (mmx_ussub<mode>3): Ditto.
17509         (*mmx_mulv4hi3): Rename from mmx_mulv4hi3 insn pattern.
17510         (mmx_mulv4hi3): New expander.  Use ix86_fixup_binary_operands_no_copy
17511         to handle nonimmediate operands.
17512         (*mmx_smulv4hi3_highpart): Rename from mmx_smulv4hi3_highpart
17513         insn pattern.
17514         (mmx_smulv4hi3_highpart): New expander.  Use
17515         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
17516         (*mmx_umulv4hi3_highpart): Rename from mmx_umulv4hi3_highpart
17517         insn pattern.
17518         (mmx_umulv4hi3_highpart): New expander.  Use
17519         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
17520         (*mmx_<code>v4hi3): Rename from mmx_<code>v4hi3 insn pattern.
17521         (mmx_<code>v4hi3): New expander.  Use
17522         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
17523         (*mmx_<code>v8qi3): Rename from mmx_<code>v8qi3 insn pattern.
17524         (mmx_<code>v8qi3): New expander.  Use
17525         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
17526         (*mmx_<code><mode>3): Rename from mmx_<code><mode>3 insn pattern.
17527         (mmx_<code><mode>3): New expander.  Use
17528         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
17529
17530 2008-05-05  Jan Hubicka  <jh@suse.cz>
17531
17532         PR tree-optimization/36118
17533         * passes.c (pass_init_dump_file): Fix dump header.
17534
17535 2008-05-05  Andrew Pinski  <andrew_pinski@playstation.sony.com>
17536
17537         PR middle-end/36141
17538         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Don't create
17539         VCE for function decls.
17540
17541 2008-05-05  H.J. Lu  <hongjiu.lu@intel.com>
17542
17543         * config/i386/sse.md (sse2_<plusminus_insn><mode>3): Fix a typo.
17544
17545 2008-05-05  H.J. Lu  <hongjiu.lu@intel.com>
17546
17547         * config/i386/i386.md (sat_plusminus): New.
17548         (plusminus_insn): Likewise.
17549         (plusminus_mnemonic): Likewise.
17550         (addsub): Removed.
17551         (comm): Add ss_plus, us_plus, ss_minus and us_minus.
17552         (*<addsub><mode>3_cc_overflow): Renamed to ...
17553         (*<plusminus_insn><mode>3_cc_overflow): This.
17554         (*<addsub>si3_zext_cc_overflow): Renamed to ...
17555         (*<plusminus_insn>si3_zext_cc_overflow): This.
17556
17557         * config/i386/sse.md (<addsub><mode>3): Renamed to ...
17558         (<plusminus_insn><mode>3): This.
17559         (*<addsub><mode>3): Renamed to ...
17560         (*<plusminus_insn><mode>3): This.
17561         (<sse>_vm<addsub><mode>3): Renamed to ...
17562         (<sse>_vm<plusminus_insn><mode>3): This.
17563         (sse3_h<addsub>v4sf3): Renamed to ...
17564         (sse3_h<plusminus_insn>v4sf3): This.
17565         (sse3_h<addsub>v2df3): Renamed to ...
17566         (sse3_h<plusminus_insn>v2df3): This.
17567         (<plusminus_insn><mode>3): New.
17568         (*<plusminus_insn><mode>3): Likewise.
17569         (sse2_<plusminus_insn><mode>3): Likewise.
17570         (add<mode>): Removed.
17571         (*add<mode>3): Likewise.
17572         (sse2_ssadd<mode>3): Likewise.
17573         (sse2_usadd<mode>3): Likewise.
17574         (sub<mode>3): Likewise.
17575         (*sub<mode>3): Likewise.
17576         (sse2_sssub<mode>3): Likewise.
17577         (sse2_ussub<mode>3): Likewise.
17578
17579 2008-05-05  Benjamin Kosnik  <bkoz@redhat.com>
17580
17581         * gthr-single.h: Add in required interface elements as per gthr.h.
17582         Add stub types for __gthread_key_t, __gthread_once_t. Add defines
17583         for __GTHREAD_ONCE_INIT, __GTHREAD_RECURSIVE_MUTEX_INIT.
17584         Generalize UNUSED macro.
17585         (__gthread_once): Add.
17586         (__gthread_key_create): Add.
17587         (__gthread_key_delete): Add.
17588         (__gthread_getspecific): Add.
17589         (__gthread_setspecific): Add.
17590
17591 2008-05-05  Andrew Pinski  <Andrew.Pinski@playstation.sony.com>
17592
17593         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): If we have
17594         the same size types for the indirect reference on the rhs, then
17595         create a VCE.
17596
17597 2008-05-05  Uros Bizjak  <ubizjak@gmail.com>
17598
17599         * config/i386/i386.md
17600         (*float<SSEMODEI24:mode><MODEF:mode>2_sse_interunit): Use only
17601         one insn template instead of template series.
17602         (*xordi_1_rex64): Ditto.
17603         (*xordi_2_rex64): Ditto.
17604
17605 2008-05-05  Ira Rosen  <irar@il.ibm.com>
17606
17607         PR tree-optimization/36119
17608         * tree-vect-transform.c (vectorizable_assignment): Set NCOPIES to 1
17609         in case of SLP.
17610
17611 2008-06-04  Jan Hubicka  <jh@suse.cz>
17612
17613         tree-optimization/36100
17614         * tree-pass.h (pass_O0_always_inline): Declare.
17615         * ipa-inline.c (inline_transform): Remove dead code.
17616         (cgraph_gate_O0_always_inline, cgraph_O0_always_inline,
17617         pass_O0_always_inline): New.
17618         * passes.c (init_optimization_passes): Add pass_O0_always_inline.
17619
17620 2008-05-04  Kai Tietz  <kai.tietz@onevision.com>
17621
17622         * config/i386/i386.c (x86_output_mi_thunk): Use movq alternative
17623         mnemonic in this_param move for TARGET_64BIT.
17624
17625 2008-05-04  Uros Bizjak  <ubizjak@gmail.com>
17626
17627         * config/i386/i386.md (*strmovsi_1): Simplify asm alternatives.
17628         (*strmovsi_rex_1): Ditto.
17629         (*strsetsi_1): Ditto.
17630         (*strsetsi_rex_1): Ditto.
17631
17632         (add<mode>cc): Macroize expander from addqicc, addhicc, addsicc and
17633         adddicc expanders using SWI mode iterator.
17634
17635 2008-05-04  H.J. Lu  <hongjiu.lu@intel.com>
17636
17637         PR target/36121
17638         * config/i386/i386.c (ix86_expand_special_args_builtin): Remove three
17639         argument handling.
17640
17641 2008-05-04  David S. Miller  <davem@davemloft.net>
17642
17643         * config.gcc (sparc*-*-*): Always set need_64bit_hwint to yes.
17644         (sparc*-*-linux*): Use linux.h in tm_file.
17645         (sparc-*-linux*): If 'enabled_targets' is 'all', build a bi-arch
17646         compiler defaulting to 32-bit.
17647         (sparc*-*-*): Remove explicit target settings of need_64bit_hwint,
17648         no longer needed.
17649         * config/sparc/linux.h: Remove definitions now obtained
17650         properly from linux.h
17651         * config/sparc/linux64.h: Likewise.
17652         (ASM_CPU_DEFAULT_SPEC): Change this to ASM_CPU64_DEFAULT_SPEC, we
17653         don't want this setting for 32-bit builds in a biarch compiler.
17654         * doc/install.texi: Add sparc-linux to list of targets
17655         supporting --enable-targets=all.
17656
17657 2008-05-03  Andrew Pinski  <pinskia@gmail.com>
17658
17659         * Makefile.in (tree-ssa-phiprop.o): Fix dependencies.
17660
17661 2008-05-03  H.J. Lu  <hongjiu.lu@intel.com>
17662
17663         * config/i386/i386.c (ix86_builtin_type): Move V4SI_FTYPE_V4SF
17664         after V4SI_FTYPE_V8HI.
17665         (ix86_init_mmx_sse_builtins): Move case V4HI_FTYPE_V4HI after
17666         case V4SI_FTYPE_V2DF.
17667
17668 2008-05-03  Kenneth Zadeck  <zadeck@naturalbridge.com>
17669
17670         * doc/invoke.texi (max-flow-memory-locations): Removed.
17671         * params.def (PARAM_MAX_FLOW_MEMORY_LOCATIONS): Removed.
17672
17673 2008-05-03  Richard Guenther  <rguenther@suse.de>
17674
17675         PR middle-end/34973
17676         * opts.c (set_Wstrict_aliasing): Handle the turn-off case.
17677
17678 2008-05-02  David S. Miller  <davem@davemloft.net>
17679
17680         * config.gcc (need_64bit_hwint): Document libcpp dependency.
17681
17682 2008-05-02  Simon Baldwin <simonb@google.com>
17683
17684         PR bootstrap/36108
17685         * c-common.h (warn_array_subscript_range): Removed.
17686         * c-common.c (warn_array_subscript_range): Ditto.
17687         * tree-vrp.c (check_array_ref): Revert to ignoring arrays with size 2.
17688         * c-typeck.c (build_array_ref): Remove warn_array_subscript_range.
17689
17690 2008-05-02  H.J. Lu  <hongjiu.lu@intel.com>
17691
17692         * config/i386/i386.c (ix86_special_builtin_type): New.
17693         (bdesc_special_args): Likewise.
17694         (ix86_expand_special_args_builtin): Likewise.
17695         (ix86_init_mmx_sse_builtins): Updated.
17696         (ix86_expand_builtin): Updated.
17697         (ix86_expand_store_builtin): Removed.
17698         (ix86_expand_unop_builtin): Likewise.
17699
17700         * config/i386/mm3dnow.h (__v2sf): Moved to ...
17701         * config/i386/mmintrin.h (__v2sf): Here.
17702
17703         * config/i386/xmmintrin.h (_mm_loadh_pi): Replace __v2si with
17704         const __v2sf.
17705         (_mm_loadl_pi): Likewise.
17706         (_mm_storeh_pi): Replace __v2si with __v2sf.
17707         (_mm_storel_pi): Likewise.
17708
17709         * doc/extend.texi: Correct __builtin_ia32_loadhps,
17710         __builtin_ia32_loadlps, __builtin_ia32_storehps,
17711         __builtin_ia32_storelps, __builtin_ia32_loadhpd and
17712         __builtin_ia32_loadlpd.
17713
17714 2008-05-02  H.J. Lu  <hongjiu.lu@intel.com>
17715
17716         * config/i386/i386.c (ix86_builtin_type): Add FLOAT_FTYPE_FLOAT,
17717         V4SF_FTYPE_V4SF_VEC_MERGE and V2DF_FTYPE_V2DF_VEC_MERGE.
17718         (bdesc_args): Updated.  Add scalar SSE builtins with vec_merge.
17719         (ix86_init_mmx_sse_builtins): Updated.
17720         (ix86_expand_args_builtin): Likewise.
17721         (ix86_expand_builtin): Likewise.
17722         (ix86_expand_unop1_builtin): Renamed to ...
17723         (ix86_expand_unop_vec_merge_builtin): This.
17724
17725 2008-05-01  Jan Hubicka  <jh@suse.cz>
17726
17727         PR bootstrap/36100
17728         * ipa-inline.c (inline_generate_summary): Make static.
17729         (inline_transform): Do not call inlining at -O0; make static.
17730         * passes.c (execute_todo): Add sanity check.
17731         (execute_one_ipa_transform_pass): Execute proper flags.
17732
17733 2008-05-01  Eric Botcazou  <ebotcazou@adacore.com>
17734
17735         * tree.h (TYPE_NONALIASED_COMPONENT): Expand comment.
17736         (DECL_NONADDRESSABLE_P): Likewise.
17737         * alias.c (record_component_aliases): Fix comment.
17738
17739 2008-05-01  Simon Baldwin <simonb@google.com>
17740
17741         * c-common.h (warn_array_subscript_range): New function.
17742         * c-common.c (warn_array_subscript_range): Ditto.
17743         * tree-vrp.c (check_array_ref): Corrected code to agree with
17744         comment, ignoring only arrays of size 0 or size 1.
17745         * c-typeck.c (build_array_ref): Call warn_array_subscript_range.
17746
17747 2008-05-01  H.J. Lu  <hongjiu.lu@intel.com>
17748
17749         * config/i386/i386.c (ix86_builtin_type): Replace
17750         DI_FTYPE_DI_DI_INT with V1DI2DI_FTYPE_V1DI_V1DI_INT.
17751         (bdesc_args): Updated.
17752         (ix86_init_mmx_sse_builtins): Likewise.
17753         (ix86_expand_args_builtin): Likewise.
17754
17755         * config/i386/tmmintrin.h (_mm_alignr_pi8): Replace long long
17756         with __v1di.
17757
17758         * doc/extend.texi: Correct __builtin_ia32_palignr.
17759
17760 2008-05-01  H.J. Lu  <hongjiu.lu@intel.com>
17761
17762         PR target/36095
17763         * config/i386/i386.c (bdesc_crc32): Removed.
17764         (ix86_expand_crc32): Likewise.
17765         (ix86_builtin_type): Replace V2DI2TI_FTYPE_V2DI2TI_INT with
17766         V2DI2TI_FTYPE_V2DI_INT, V2DI2TI_FTYPE_V2DI2TI_V2DI2TI_INT with
17767         V2DI2TI_FTYPE_V2DI_V2DI_INT.  Add UINT64_FTYPE_UINT64_UINT64,
17768         UINT_FTYPE_UINT_UINT, UINT_FTYPE_UINT_USHORT and
17769         UINT_FTYPE_UINT_UCHAR.
17770         (bdesc_args): Updated. Add crc32 builtins.
17771         (ix86_init_mmx_sse_builtins): Updated.
17772         (ix86_expand_args_builtin): Updated to support subreg.
17773
17774         * doc/extend.texi: Correct __builtin_ia32_crc32di.
17775
17776 2008-05-01  Jan Hubicka  <jh@suse.cz>
17777
17778         * tree-pass.h (opt_pass): Add IPA_PASS.
17779         (varpool_node, cgraph_node): Forward declare.
17780         (ipa_opt_pass): Define.
17781         (pass_ipa_inline): Turn into ipa_opt_pass.
17782         (pass_apply_inline): Remove.
17783         * ipa-inline.c (pass_ipa_inline): Turn into ipa_opt_pass.
17784         (apply_inline): Turn into ....
17785         (inline_transform): ... this one.
17786         (inline_generate_summary): New function.
17787         (pass_apply_inline): Remove.
17788         * function.h (ipa_opt_pass): Forward declare structure; typedef;
17789         vector.
17790         (struct function): Add ipa_transforms_to_apply.
17791         * passes.c (register_one_dump_file): Work on IPA_PASS.
17792         (init_optimization_passes): Remove pass_inline_parameters and
17793         pass_apply_inline.
17794         (pass_init_dump_file, pass_fini_dump_file): Break out from ....
17795         (execute_one_pass) ... here; apply transforms when possible.
17796         (add_ipa_transform_pass, execute_ipa_summary_asses,
17797         execute_one_ipa_transform_pass): New.
17798         (execute_ipa_pass_list): Update for IPA_PASS type.
17799
17800 2008-05-01  H.J. Lu  <hongjiu.lu@intel.com>
17801
17802         * config/i386/i386.c (ix86_builtin_type): Add
17803         V2DI_FTYPE_V2DI_V16QI, V2DI_FTYPE_V2DI_UINT_UINT and
17804         V2DI_FTYPE_V2DI_V2DI_UINT_UINT.
17805         (bdesc_args): Add SSE4a builtins.
17806         (ix86_init_mmx_sse_builtins): Updated.
17807         (ix86_expand_args_builtin): Likewise.
17808         (ix86_expand_builtin): Likewise.
17809
17810 2008-05-01  H.J. Lu  <hongjiu.lu@intel.com>
17811
17812         * config/i386/i386.c (ix86_builtin_type): Add
17813         V8HI_FTYPE_V8HI_V8HI_COUNT, V8HI_FTYPE_V8HI_SI_COUNT,
17814         V4SI_FTYPE_V4SI_V4SI_COUNT, V4SI_FTYPE_V4SI_SI_COUNT,
17815         V4HI_FTYPE_V4HI_V4HI_COUNT, V4HI_FTYPE_V4HI_SI_COUNT,
17816         V2DI_FTYPE_V2DI_V2DI_COUNT, V2DI_FTYPE_V2DI_SI_COUNT,
17817         V2SI_FTYPE_V2SI_V2SI_COUNT, V2SI_FTYPE_V2SI_SI_COUNT,
17818         V1DI_FTYPE_V1DI_V1DI_COUNT, V1DI_FTYPE_V1DI_SI_COUNT,
17819         V8HI_FTYPE_V8HI_INT, V4SI_FTYPE_V4SI_INT, V4HI_FTYPE_V4HI_INT,
17820         V2DI2TI_FTYPE_V2DI2TI_INT, V2DI2TI_FTYPE_V2DI2TI_V2DI2TI_INT
17821         and DI_FTYPE_DI_DI_INT.
17822         (bdesc_args): Add MMX/SSE shift, shuffle and palignr builtins.
17823         (ix86_init_mmx_sse_builtins): Updated.
17824         (ix86_expand_args_builtin): Likewise.
17825         (ix86_expand_builtin): Likewise.
17826         (ix86_expand_binop_imm_builtin): Removed.
17827
17828         * doc/extend.texi: Correct __builtin_ia32_palignr128.
17829
17830 2008-04-30  Richard Guenther  <rguenther@suse.de>
17831
17832         PR tree-optimization/32921
17833         * tree-ssa-loop-im.c (mem_refs_may_alias_p): Disambiguate with TBAA.
17834
17835 2008-04-30  Richard Sandiford  <rsandifo@nildram.co.uk>
17836
17837         * config/arm/arm.c (arm_unwind_emit): Use
17838         crtl->all_throwers_are_sibcalls instead of
17839         cfun->all_throwers_are_sibcalls.
17840         (arm_output_fn_unwind): Likewise.
17841         * config/frv/frv.c (frv_stack_info): Use crtl->uses_pic_offset_table
17842         instead of cfun->uses_pic_offset_table.
17843         (frv_expand_prologue): Likewise.
17844         (frv_frame_pointer_required): Likewise.
17845         (frv_expand_fdpic_call): Likewise.
17846         (frv_emit_movsi): Likewise.
17847         * config/iq2000/iq2000.c (iq2000_expand_prologue): Use
17848         cfun->returns_pcc_struct instead of
17849         current_function_returns_pcc_struct.
17850         * config/m32c/m32c.c (need_to_save): Use crtl->calls_eh_return
17851         instead of cfun->calls_eh_return.
17852         (m32c_pushm_popm): Likewise.
17853         * config/xtensa/xtensa.h (cfun->calls_alloca): Remove bogus
17854         "extern" declaration.
17855
17856 2008-04-30  Richard Guenther  <rguenther@suse.de>
17857
17858         PR tree-optimization/21636
17859         * tree-ssa-ccp.c (ccp_fold): Handle &p->x with p being a
17860         constant address.
17861         (evaluate_stmt): Print the likely value.
17862         (ccp_visit_stmt): Avoid excessive vertical spacing.
17863
17864 2008-04-30  Rafael Espíndola  <espindola@google.com>
17865
17866         * builtins.c (fold_call_expr): Return realret.
17867         * tree-ssa-threadedge.c
17868         (record_temporary_equivalences_from_stmts_at_dest): Ignore calls to
17869         __builtin_object_size.
17870
17871 2008-04-30  Seongbae Park  <seongbae.park@gmail.com>
17872
17873         * gcc.c (wrapper_string): New variable.
17874         (insert_wrapper): New function.
17875         (execute): New option -wrapper.
17876         * doc/invoke.texi (Overall Options): New driver option -wrapper.
17877
17878 2008-04-30  Nathan Froyd  <froydnj@codesourcery.com>
17879
17880         * config/rs6000/crtresgpr.asm, config/rs6000/crtresxgpr.asm,
17881         config/rs6000/crtsavgpr.asm, config/rs6000/crtresfpr.asm,
17882         config/rs6000/crtresxfpr.asm, config/rs6000/crtsavfpr.asm: Break out
17883         from...
17884         * config/rs6000/crtsavres.asm: ...here.  Remove unneeded file.
17885         * config/rs6000/e500crtres32gpr.asm, config/rs6000/e500crtres64gpr.asm,
17886         config/rs6000/e500crtres64gprctr.asm,
17887         config/rs6000/e500crtrest32gpr.asm, config/rs6000/e500crtrest64gpr.asm,
17888         config/rs6000/e500crtresx32gpr.asm, config/rs6000/e500crtresx64gpr.asm,
17889         config/rs6000/e500crtsav32gpr.asm, config/rs6000/e500crtsav64gpr.asm,
17890         config/rs6000/e500crtsav64gprctr.asm,
17891         config/rs6000/e500crtsavg32gpr.asm, config/rs6000/e500crtsavg64gpr.asm,
17892         config/rs6000/e500crtsavg64gprctr.asm: New files.
17893         * config/rs6000/t-ppccomm: Add build rules for new files.
17894         (LIB2FUNCS_STATIC_EXTRA): Add new files.
17895         * config/rs6000/t-netbsd: Add build rules for new files.
17896         (LIB2FUNCS_STATIC_EXTRA): New variable.
17897         * config/rs6000/sysv4.h (ENDFILE_SPEC): Don't include crtsavres.o
17898         (CRTSAVRES_DEFAULT_SPEC): Likewise.
17899         * config/rs6000/netbsd.h (ENDFILE_SPEC): Likewise.
17900
17901 2008-04-30  H.J. Lu  <hongjiu.lu@intel.com>
17902
17903         * config/i386/i386.c (ix86_builtin_type): Add
17904         FLOAT128_FTYPE_FLOAT128_FLOAT128, V16QI_FTYPE_V16QI_V16QI,
17905         V16QI_FTYPE_V8HI_V8HI, V8QI_FTYPE_V8QI_V8QI,
17906         V8QI_FTYPE_V4HI_V4HI, V8HI_FTYPE_V8HI_V8HI,
17907         V8HI_FTYPE_V16QI_V16QI, V8HI_FTYPE_V4SI_V4SI,
17908         V4SI_FTYPE_V4SI_V4SI, V4SI_FTYPE_V8HI_V8HI,
17909         V4SI_FTYPE_V4SF_V4SF, V4SI_FTYPE_V2DF_V2DF,
17910         V4HI_FTYPE_V4HI_V4HI, V4HI_FTYPE_V8QI_V8QI,
17911         V4HI_FTYPE_V2SI_V2SI, V4SF_FTYPE_V4SF_V4SF,
17912         V4SF_FTYPE_V4SF_V4SF_SWAP, V4SF_FTYPE_V4SF_V2SI,
17913         V4SF_FTYPE_V4SF_V2DF, V4SF_FTYPE_V4SF_DI,
17914         V4SF_FTYPE_V4SF_SI, V2DI_FTYPE_V2DI_V2DI,
17915         V2DI_FTYPE_V16QI_V16QI, V2DI_FTYPE_V4SI_V4SI,
17916         V2DI_FTYPE_V2DF_V2DF, V2SI_FTYPE_V2SI_V2SI,
17917         V2SI_FTYPE_V4HI_V4HI, V2SI_FTYPE_V2SF_V2SF,
17918         V2DF_FTYPE_V2DF_V2DF, V2DF_FTYPE_V2DF_V2DF_SWAP,
17919         V2DF_FTYPE_V2DF_V4SF, V2DF_FTYPE_V2DF_DI,
17920         V2DF_FTYPE_V2DF_SI, V2SF_FTYPE_V2SF_V2SF,
17921         V1DI_FTYPE_V1DI_V1DI, V1DI_FTYPE_V8QI_V8QI and
17922         V1DI_FTYPE_V2SI_V2SI.
17923         (bdesc_2arg): Moved to ...
17924         (bdesc_args): Here.
17925         (ix86_init_mmx_sse_builtins): Updated.
17926         (ix86_expand_args_builtin): Updated.  Take a pointer
17927         to const struct builtin_description.  Handle comparison
17928         builtin functions.
17929         (ix86_expand_sse_compare): Take a new argument for swapping operands.
17930         (ix86_expand_builtin): Updated.
17931
17932         * config/i386/sse.md (ssse3_pmaddubswv8hi3): Renamed to ...
17933         (ssse3_pmaddubsw128): This.
17934         (ssse3_pmaddubswv4hi3): Renamed to ...
17935         (ssse3_pmaddubsw): This.
17936
17937         * doc/extend.texi (__builtin_ia32_packsswb128): Correct prototype.
17938         (__builtin_ia32_packssdw128): Likewise.
17939         (__builtin_ia32_packuswb128): Likewise.
17940         (__builtin_ia32_pmaddubsw): Likewise.
17941         (__builtin_ia32_pmaddubsw128): Likewise.
17942
17943 2008-04-30  Richard Guenther  <rguenther@suse.de>
17944
17945         PR tree-optimization/14847
17946         * tree-ssa-ifcombine.c (get_name_for_bit_test): New helper function.
17947         (recognize_bits_test): Use it.
17948         (recognize_single_bit_test): Likewise.
17949
17950 2008-04-30  Martin Jambor  <mjambor@suse.cz>
17951
17952         * ipa-cp.c (ipcp_init_stage): Calls ipa_set_called_with_variable_arg
17953         instead of setting number of formal parameters to zero.
17954         (ipcp_init_stage): Do not set the number of actual parameters to zero
17955         either.
17956         (ipcp_propagate_stage): Explicitly skipping all calls to nodes
17957         which are called with variable number of arguments.
17958         (ipcp_insert_stage): Explicitely skipping all nodes which are
17959         called with variable number of arguments.
17960         (ipcp_callsite_param_print): Skipps callsites to nodes with varaible
17961         number of parameters.
17962
17963         * ipa-prop.h (struct ipa_node_params): Added flag
17964         called_with_var_arguments
17965         (ipa_set_param_count): Added.  Changed sole setter to use it.
17966         (ipa_get_param_count): Added.  All readers of param_count
17967         converted to use it instead.
17968         (ipa_set_called_with_variable_arg): Added.
17969         (ipa_is_called_with_var_arguments): Added.
17970         (ipa_get_ith_param): Added.  All readers of param_decls converted
17971         to use it instead.
17972         (ipa_set_cs_argument_count): Added, sole writer to argument_count
17973         changed to use it.
17974         (ipa_get_cs_argument_count): Added, all readers of argument_count
17975         changed to cal it.
17976         (ipa_get_ith_jump_func): Added. Accessors of jump values changed
17977         to use it.
17978
17979         * ipa-prop.h (struct ipcp_formal): Renamed to ipcp_lattice
17980         (struct ipcp_lattice): Renamed cval_type to type
17981         (struct ipa_node_params): ipcp_cval renamed to ipcp_lattices
17982
17983         * ipa-cp.c (ipcp_cval_get_cvalue): Changed return value to tree
17984         (ipcp_cval_set_cvalue): Changed type of parameter value to tree
17985         (ipcp_insert_stage): Changed the type of variable cvalue to tree
17986         (ipcp_replace_map_create): Changed the type of parameter cvalue to tree
17987         (build_const_val): Changed the type of parameter cvalue to tree
17988         (ipcp_propagate_const): Changed the type of parameter cvalue to tree
17989         (ipcp_method_cval_set_cvalue_type): Renamed parameter cval_type1 to type
17990
17991         * ipa-prop.h (struct ipcp_formal): Replaced cvalue with tree called
17992         constant
17993
17994         * ipa-prop.c (ipa_methodlist_init): Renamed to ipa_init_func_list
17995         (ipa_methodlist_not_empty): Removed, the sole user now checks directly
17996         (ipa_add_method): Renamed to ipa_push_func_to_list
17997         (ipa_remove_method): Renamed to ipa_pop_func_from_list
17998         (ipa_callsite_param_count): Removed.
17999         (ipa_callsite_param_count_set): Removed.
18000         (ipa_callsite_param): Removed.
18001         (ipa_callsite_callee): Removed.
18002         (ipa_callsite_compute_param): Renamed to ipa_compute_jump_functions
18003         (ipa_callsite_compute_count): Renamed to ipa_count_arguments
18004         (ipa_method_formal_count): Removed.
18005         (ipa_method_formal_count_set): Removed.
18006         (ipa_method_get_tree): Removed.
18007         (ipa_method_tree_map_create): Removed.
18008         (ipa_method_compute_tree_map): Renamed to ipa_create_param_decls_array
18009         (ipa_create_param_decls_array): Creates the array itself
18010         (ipa_create_param_decls_array): Temporary variable info instead of
18011         a few dereferences.
18012         (ipa_method_formal_compute_count): Renamed to ipa_count_formal_params
18013         (ipa_method_compute_modify): Renamed to ipa_detect_param_modifications
18014         (get_type): Removed.
18015         (ipa_jf_get_info_type): Removed.
18016         (ipa_node_create): Renamed to ipa_create_node_params
18017         (ipa_free): Renamed to ipa_free_all_node_params
18018         (ipa_nodes_create): Renamed to ipa_create_all_node_params
18019         (ipa_edges_create): Renamed to ipa_create_all_edge_args
18020         (ipa_edges_free): Renamed to ipa_free_all_edge_args
18021         (ipa_nodes_free): Integrated into ipa_free_all_node_params and removed
18022         (ipa_free_all_node_params): Deallocation to jump_functions moved to
18023         ipa_free_all_edge_args
18024         (ipa_method_tree_print): Renamed to ipa_print_all_tree_maps
18025         (ipa_method_modify_print): Renamed to ipa_print_all_params_modified
18026         (ipa_create_methodlist_node): Removed.
18027         (ipa_methodlist_method): Removed.
18028         (ipa_methodlist_method_set): Removed.
18029         (ipa_methodlist_next_method): Removed.
18030         (ipa_methodlist_next_method_set): Removed.
18031         (ipa_method_is_modified): Removed.
18032         (ipa_method_modify_create): Removed.
18033         (ipa_method_modify_init): Temporary variable info instead of a few
18034         dereferences.
18035         (ipa_detect_param_modifications): Temporary variable info instead of
18036         a few dereferences.
18037         (ipa_compute_jump_functions): Temporary variable info instead of
18038         a few dereferences.
18039         (ipa_method_modify_set): Removed.
18040         (ipa_method_tree_map): Renamed to ipa_get_param_decl_index
18041         (ipa_get_param_decl_index): Now accepts struct ipa_node_params rather
18042         than craph_node as the first parameter.
18043         (ipa_method_modify_stmt): Renamed to ipa_check_stmt_modifications
18044         (ipa_method_modify_init): Removed.
18045         (ipa_compute_jump_functions): Added a temp variable instead of
18046         repeatadly dereferencing the cgraph_edge.aux pointer
18047         (ipa_callsite_param_set_type): Removed.
18048         (ipa_compute_jump_functions): i renamed to index and moved to
18049         an inner block
18050         (ipa_callsite_param_set_info_type_formal): Removed.
18051         (ipa_callsite_param_set_info_type): Removed.
18052         (ipa_callsite_param_map_create): Removed.
18053         (ipa_callsite_tree): Removed.
18054         (ipa_callsite_caller): Removed.
18055         (ipa_pop_func_from_list): return_method removed to return_func
18056
18057         * ipa-prop.h (enum cvalue_type): Renamed to ipa_lattice_type,
18058         prefixed all values with IPA_. Changed all users.
18059         (enum jump_func_type): Rnamed UNKNOWN_IPATYPE to IPA_UNKNOWN,
18060         CONST_IPATYPE to IPA_CONST, CONST_IPATYPE_REF to IPA_CONST_REF
18061         and FORMAL_IPATYPE IPA_PASS_THROUGH.
18062         (union parameter_info): Renamed to jump_func_value.
18063         (union jump_func_value): Renamed value to constant
18064         (struct ipa_jump_func): Renamed info_type to value
18065         (struct ipa_node): Renamed to ipa_node_params
18066         (struct ipa_node_params): Renamed ipa_arg_num to param_count
18067         (struct ipa_node_params): Renamed ipa_param_tree to param_decls
18068         (struct ipa_node_params): Renamed ipa_mod to modified_flags
18069         (struct ipa_edge): Renamed to ipa_edge_args
18070         (struct ipa_edge_args): Renamed ipa_param_num to argument_count
18071         (struct ipa_edge_args): Renamed ipa_param_map to jump_functions
18072         (struct ipa_methodlist): Renamed to ipa_func_list
18073         (struct ipa_func_list): method_p renamed to node, next_method
18074         renamed to next
18075         (ipa_methodlist_p): Removed, switched all users to struct pointer
18076         (IS_VALID_TREE_MAP_INDEX): Renamed to IS_VALID_JUMP_FUNC_INDEX
18077
18078 2008-04-30  Alan Modra  <amodra@bigpond.net.au>
18079
18080         * config/rs6000/rs6000.c (ALWAYS_RESTORE_ALTIVEC_BEFORE_POP): Define.
18081         (rs6000_emit_epilogue): Use backchain to restore only when we
18082         have a large frame.  Make use of frame pointer to restore if we
18083         have one.  Handle ALWAYS_RESTORE_ALTIVEC_BEFORE_POP.
18084
18085 2008-04-29  Paolo Bonzini  <bonzini@gnu.org>
18086
18087         * config/avr/avr.md (*sbrx_branch, *sbix_branch, *sbix_branch_tmp):
18088         Add mode to zero_extract.
18089         (sign bit tests peepholes): (Ditto.).
18090
18091 2008-04-29  H.J. Lu  <hongjiu.lu@intel.com>
18092
18093         * config/i386/i386.c (ix86_builtins): Replace Prescott New
18094         Instructions in comments with SSE3.
18095         (ix86_builtin_type): This.  Add FLOAT128_FTYPE_FLOAT128,
18096         INT64_FTYPE_V4SF, INT64_FTYPE_V2DF, INT_FTYPE_V16QI,
18097         INT_FTYPE_V8QI, INT_FTYPE_V4SF, INT_FTYPE_V2DF,
18098         V16QI_FTYPE_V16QI, V8HI_FTYPE_V8HI, V8HI_FTYPE_V16QI,
18099         V8QI_FTYPE_V8QI, V4SI_FTYPE_V4SI, V4SI_FTYPE_V16QI,
18100         V4SI_FTYPE_V4SF, V4SI_FTYPE_V8HI, V4SI_FTYPE_V2DF,
18101         V4HI_FTYPE_V4HI, V4SF_FTYPE_V4SF, V4SF_FTYPE_V4SI,
18102         V4SF_FTYPE_V2DF, V2DI_FTYPE_V2DI, V2DI_FTYPE_V16QI,
18103         V2DI_FTYPE_V8HI, V2DI_FTYPE_V4SI, V2DF_FTYPE_V2DF,
18104         V2DF_FTYPE_V4SI, V2DF_FTYPE_V4SF, V2DF_FTYPE_V2SI,
18105         V2SI_FTYPE_V2SI, V2SI_FTYPE_V4SF, V2SI_FTYPE_V2SF,
18106         V2SI_FTYPE_V2DF, V2SF_FTYPE_V2SF and V2SF_FTYPE_V2SI.
18107         (bdesc_sse_args): Renamed to ...
18108         (bdesc_args): This.  Add IX86_BUILTIN_PF2ID, IX86_BUILTIN_PFRCP,
18109         IX86_BUILTIN_PFRSQRT, IX86_BUILTIN_PI2FD, IX86_BUILTIN_PF2IW,
18110         IX86_BUILTIN_PSWAPDSI, IX86_BUILTIN_PSWAPDSF and
18111         IX86_BUILTIN_FABSQ.
18112         (bdesc_1arg): Moved to ...
18113         (bdesc_args): Here.
18114         (ix86_init_mmx_sse_builtins): Updated.  Replace Prescott New
18115         Instructions in comments with SSE3.
18116         (ix86_expand_sse_operands_builtin): Renamed to ...
18117         (ix86_expand_args_builtin): This.  Updated.
18118         (ix86_expand_unop1_builtin): Update comments.
18119         (ix86_expand_builtin): Updated.
18120
18121 2008-04-29  Richard Guenther  <rguenther@suse.de>
18122
18123         PR tree-optimization/36078
18124         * tree-ssa-loop-ivcanon.c (tree_unroll_loops_completely):
18125         Update virtual SSA form after cleaning up the CFG.
18126
18127 2008-04-29  Richard Guenther  <rguenther@suse.de>
18128
18129         PR middle-end/15255
18130         * fold-const.c (fold_binary): Fold (A + A) * C to A * 2*C.
18131
18132 2008-04-29  Richard Guenther  <rguenther@suse.de>
18133
18134         * tree-ssa-alias.c (finalize_ref_all_pointers): Remove.
18135         (compute_may_aliases): Do not call finalize_ref_all_pointers.
18136         (compute_flow_insensitive_aliasing): Do not treat
18137         PTR_IS_REF_ALL pointers special.
18138         (get_smt_for): Likewise.
18139         (may_alias_p): Re-structure.
18140         (is_escape_site): A ref-all pointer conversion is not an escape site.
18141         * tree-ssa-structalias.c (find_what_p_points_to): Do not treat
18142         PTR_IS_REF_ALL pointers special.
18143         * tree-ssa-structalias.h (struct alias_info): Remove
18144         ref_all_symbol_mem_tag field.
18145         (PTR_IS_REF_ALL): Remove.
18146
18147 2008-04-29  Richard Guenther  <rguenther@suse.de>
18148
18149         PR middle-end/36077
18150         * fold-const.c (extract_muldiv_1): In combining division constants
18151         make sure to never overflow.
18152
18153 2008-04-29  Nick Clifton  <nickc@redhat.com>
18154
18155         * doc/tm.texi (RETURN_ADDR_RTX): Fix typo.
18156
18157 2008-04-28  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
18158
18159         PR bootstrap/35169
18160         * optc-gen.awk: Work around HP-UX/IA awk bug.
18161
18162 2008-04-28  Danny Smith  <dannysmith@users.sourceforge.net>
18163
18164         * config/i386/cygming-crtend.c (register_frame_ctor): Revert my
18165         2008-04-25 commit.
18166
18167 2008-04-28  Uros Bizjak  <ubizjak@gmail.com>
18168
18169         PR target/36073
18170         * config/i386/i386.md
18171         (*float<SSEMODEI24:mode><MODEF:mode>2_mixed_interunit):
18172         Change operand 1 predicate to nonimmediate_operand.
18173
18174 2008-04-28  Jakub Jelinek  <jakub@redhat.com>
18175
18176         PR debug/36060
18177         * dwarf2out.c (struct die_struct): Mark as chain_circular through
18178         die_sub field.
18179         * gengtype.c (walk_type, write_func_for_structure): Handle
18180         chain_circular.
18181         * doc/gty.texi: Document chain_circular.
18182
18183 2008-04-28  Richard Guenther  <rguenther@suse.de>
18184
18185         PR tree-optimization/36066
18186         * tree-vrp.c (execute_vrp): Cleanup the CFG only after finalizing
18187         SCEV and loop.
18188
18189 2008-04-28  Uros Bizjak  <ubizjak@gmail.com>
18190
18191         PR target/36064
18192         * config/i386/i386.md
18193         (floatdi<X87MODEF:mode>2_i387_with_xmm splitters):
18194         Use match_scratch instead of match_operand for operands 3 and 4.
18195
18196 2008-04-27  Richard Guenther  <rguenther@suse.de>
18197
18198         PR tree-optimization/18754
18199         PR tree-optimization/34223
18200         * tree-pass.h (pass_complete_unrolli): Declare.
18201         * tree-ssa-loop-ivcanon.c (try_unroll_loop_completely): Print
18202         loop size before and after unconditionally of UL_NO_GROWTH in effect.
18203         Rewrite loop into loop closed SSA form if it is not already.
18204         (tree_unroll_loops_completely): Re-structure to iterate over
18205         innermost loops with intermediate CFG cleanups.
18206         Unroll outermost loops only if requested or the code does not grow
18207         doing so.
18208         * tree-ssa-loop.c (gate_tree_vectorize): Don't shortcut if no
18209         loops are available.
18210         (tree_vectorize): Instead do so here.
18211         (tree_complete_unroll): Also unroll outermost loops.
18212         (tree_complete_unroll_inner): New function.
18213         (gate_tree_complete_unroll_inner): Likewise.
18214         (pass_complete_unrolli): New pass.
18215         * tree-ssa-loop-manip.c (find_uses_to_rename_use): Only record
18216         uses outside of the loop.
18217         (tree_duplicate_loop_to_header_edge): Only verify loop-closed SSA
18218         form if it is available.
18219         * tree-flow.h (tree_unroll_loops_completely): Add extra parameter.
18220         * passes.c (init_optimization_passes): Schedule complete inner
18221         loop unrolling pass before the first CCP pass after final inlining.
18222
18223 2008-04-27  Nathan Sidwell  <nathan@codesourcery.com>
18224
18225         * targhooks.h (default_emutls_var_fields,
18226         default_emutls_var_init): Declare.
18227         * tree.h (DECL_THREAD_LOCAL): Compare against TLS_MODEL_REAL.
18228         * target.h (struct gcc_target): Add struct emutls member.
18229         * target-def.h (TARGET_EMUTLS_GET_ADDRESS,
18230         TARGET_EMUTLS_REGISTER_COMMON, TARGET_EMUTLS_VAR_SECTION,
18231         TARGET_EMUTLS_TMPL_SECTION, TARGET_EMUTLS_VAR_PREFIX,
18232         TARGET_EMUTLS_TMPL_PREFIX, TARGET_EMUTLS_VAR_FIELDS,
18233         TARGET_EMUTLS_VAR_INIT, TARGET_EMUTLS_DEBUG_FORM_TLS_ADDRESS,
18234         TARGET_EMUTLS_VAR_ALIGN_FIXED, TARGET_EMUTLS): New.
18235         (TARGET_INITIALIZER): Add TARGET_EMUTLS.
18236         * builtins.def (BUILT_IN_EMUTLS_GET_ADDRESS,
18237         BUILT_IN_EMUTLS_REGISTER_COMMON): Get name from targetm structure.
18238         * dwarf2out.c (loc_descriptor_from_tree_1): Check if emutls can
18239         emit debug information.
18240         * coretypes.h (tls_model): Add TLS_MODEL_EMULATED, TLS_MODEL_REAL.
18241         * varasm.c: Include targhooks.h.
18242         (emutls_object_section, emutls_tmpl_section): New.
18243         (EMUTLS_VAR_PREFIX, EMUTLS_TMPL_PREFIX): Remove.
18244         (EMUTLS_SEPARATOR): New.
18245         (prefix_name): New.
18246         (get_emutls_object_name): New.
18247         (default_emutls_var_fields): New, broken out of ...
18248         (get_emutls_object_type): ... here.  Adjust to use target hooks.
18249         (get_emutls_init_templ_addr): Adjust to use target hooks.
18250         (emutls_decl): Adjust to use target hooks.
18251         (emutls_finish): Likewise.
18252         (default_emutls_var_init): New, broken out of ...
18253         (assemble_variable): ... here.  Adjust to use target hooks.
18254         * output.h (enum section_category): Add SECCAT_EMUTLS_VAR,
18255         SECCAT_EMUTLS_TMPL.
18256         * c-common.c (handle_section_attribute): Prevent overriding
18257         sections for emulated tls with special sections.
18258         * config/i386/i386.c (x86_64_elf_select_section): Add
18259         SECCAT_EMUTLS_VAR and SECCAT_EMUTLS_TMPL.
18260         (x86_64_elf_unique_section): Likewise.
18261         * config/vxworks.c: Include tree.h.
18262         (vxworks_emutls_var_fields, vxworks_emutls_var_init): New.
18263         (vxworks_override_options): Set TLS scheme.
18264         * doc/tm.texi (Emulated TLS): New node.
18265
18266 2008-04-26  Simon Baldwin <simonb@google.com>
18267
18268         PR c/35652
18269         * builtins.c (c_strlen): Suppressed multiple warnings that can occur
18270         with propagated string constants.
18271
18272 2008-04-26  Uros Bizjak  <ubizjak@gmail.com>
18273
18274         * config/i386/i386.md (fix_trunc<mode>_i387_fisttp_with_temp): Use 'X'
18275         constraint for operand 2 when operand 0 is memory operand.
18276         (fix_truncdi_i387_with_temp): : Use 'X' constraint for operand 4 when
18277         operand 0 is memory operand.
18278         (fix_trunc<mode>_i387_with_temp): Ditto.
18279         (*floatsi<mode>2_vector_mixed_with_temp): Use 'X' constraint for
18280         operand 2 when operand 1 is memory operand.
18281         (*float<SSEMODEI24:mode><MODEF:mode>2_mixed_with_temp): Ditto.
18282         (*floatsi<mode>2_vector_sse_with_temp): Ditto.
18283         (*float<SSEMODEI24:mode><MODEF:mode>2_sse_with_temp): Ditto.
18284         (*float<SSEMODEI24:mode><X87MODEF:mode>2_i387_with_temp): Ditto.
18285         (floatdi<X87MODEF:mode>2_i387_with_xmm): Use 'X' constraint for
18286         operands 2,3 and 4 when operand 1 is memory operand.
18287         (fistdi2_with_temp): Use 'X' constraint for operand 2 when operand 0
18288         is memory operand.
18289         (fistdi2_floor_with_temp): Ditto.
18290         (fist<mode>2_floor_with_temp): Ditto.
18291         (fistdi2_ceil_with_temp): Ditto.
18292         (fist<mode>2_ceil_with_temp): Ditto.
18293         (*truncdfsf_fast_mixed): Merge alternatives 0 and 1.
18294
18295 2008-04-26  David Daney  <ddaney@avtrex.com>
18296
18297         * config/mips/mips.md (UNSPEC_COMPARE_AND_SWAP_12): New
18298         unspec_volitile.
18299         (UNSPEC_SYNC_OLD_OP, UNSPEC_SYNC_NEW_OP, UNSPEC_SYNC_EXCHANGE,
18300         UNSPEC_MEMORY_BARRIER, UNSPEC_SET_GOT_VERSION,
18301         UNSPEC_UPDATE_GOT_VERSION): Renumber.
18302         (sync_compare_and_swap<mode>): New expand for QI and HI modes.
18303         (compare_and_swap_12): New insn.
18304         * config/mips/mips-protos.h (mips_expand_compare_and_swap_12): Declare.
18305         * config/mips/mips.c (mips_force_binary): New function.
18306         (mips_emit_int_order_test, mips_expand_synci_loop): Use it.
18307         (mips_expand_compare_and_swap_12): New function.
18308         * config/mips/mips.h (MIPS_COMPARE_AND_SWAP_12): New macro.
18309
18310 2008-04-25  Jan Hubicka  <jh@suse.cz>
18311
18312         PR testsuite/35843
18313         * cfgexpand.c (pass_expand): Turn into RTL pass.
18314         * passes.c (execute_one_pass): Do pass typechecking after execution.
18315         * tree-pass.h (pass_expand): Turn into RTL pass.
18316
18317         * function.h (struct rtl_data): Move here fields
18318         accesses_prior_frames, calls_eh_return, saves_all_registers,
18319         has_nonlocal_goto, has_asm_statement, is_thunk,
18320         all_throwers_are_sibcalls, limit_stack, profile, uses_const_pool,
18321         uses_pic_offset_table, uses_eh_lsda, tail_call_emit,
18322         arg_pointer_save_area_init from struct function; turn into bool.
18323         (struct function): Move
18324         calls_eh_return, saves_all_registers, has_nonlocal_goto,
18325         has_asm_statement, is_thunk, all_throwers_are_sibcalls, limit_stack,
18326         profile, uses_const_pool, uses_pic_offset_table, uses_eh_lsda,
18327         tail_call_emit, arg_pointer_save_area_init
18328         into struct rtl_data.  Remove recursive_call_emit and gimplified flags.
18329         (current_function_returns_struct, current_function_returns_pcc_struct,
18330         current_function_calls_setjmp, current_function_calls_alloca,
18331         current_function_accesses_prior_frames,
18332         current_function_calls_eh_return, current_function_is_thunk,
18333         current_function_stdarg, current_function_profile,
18334         current_function_limit_stack, current_function_uses_pic_offset_table,
18335         current_function_uses_const_pool, current_function_has_nonlocal_label,
18336         current_function_saves_all_registers,
18337         current_function_has_nonlocal_goto,
18338         current_function_has_asm_statement): Remove accesor macros.
18339         * ra-conflict.c (global_conflicts): Update.
18340         * tree-tailcall.c (suitable_for_tail_opt_p): Update.
18341         (suitable_for_tail_call_opt_p): Update.
18342         * builtins.c (expand_builtin_return_addr): Update.
18343         (expand_builtin_setjmp_setup): Update.
18344         (expand_builtin_nonlocal_goto): Update.
18345         * final.c (final_start_function): Update.
18346         (profile_function): Update.
18347         (leaf_function_p): Update.
18348         (only_leaf_regs_used): Update.
18349         * df-scan.c (df_get_exit_block_use_set): Update.
18350         * dojump.c (clear_pending_stack_adjust): Update.
18351         * tree-stdarg.c (gate_optimize_stdarg): Update.
18352         * gimple-low.c (lower_function_body): Update.
18353         * global.c (compute_regsets): Update.
18354         (global_alloc): Update.
18355         * dwarf2out.c (dwarf2out_begin_prologue): Update.
18356         * expr.c (expand_assignment): Update.
18357         * dse.c (dse_step0): Update.
18358         (dse_step1): Update.
18359         * c-decl.c (store_parm_decls): Update.
18360         * local-alloc.c (combine_regs): Update.
18361         (find_free_reg): Update.
18362         * function.c (assign_parms_augmented_arg_list): Update.
18363         (assign_parm_find_data_types): Update.
18364         (assign_parms): Update.
18365         (allocate_struct_function): Update.
18366         (expand_function_start): Update.
18367         (expand_function_end): Update.
18368         (get_arg_pointer_save_area): Update.
18369         (thread_prologue_and_epilogue_insns): Update.
18370         (rest_of_match_asm_constraints): Update.
18371         * stor-layout.c (variable_size): Update.
18372         * gcse.c (gcse_main): Update.
18373         (bypass_jumps): Update.
18374         * gimplify.c (gimplify_function_tree): Update.
18375         * calls.c (emit_call_1): Update.
18376         (expand_call): Update.
18377         * bt-load.c (compute_defs_uses_and_gen): Update.
18378         * except.c (sjlj_assign_call_site_values): Update.
18379         (sjlj_emit_function_enter): Update.
18380         (can_throw_external): Update.
18381         (set_nothrow_function_flags): Update.
18382         (expand_builtin_unwind_init): Update.
18383         (expand_eh_return): Update.
18384         (convert_to_eh_region_ranges): Update.
18385         (output_function_exception_table): Update.
18386         * emit-rtl.c (gen_tmp_stack_mem): Update.
18387         * cfgexpand.c (expand_used_vars): Update.
18388         (tree_expand_cfg): Update.
18389         * cfgcleanup.c (rest_of_handle_jump): Update.
18390         * explow.c (allocate_dynamic_stack_space): Update.
18391         * varasm.c (assemble_start_function): Update.
18392         (force_const_mem): Update.
18393         (mark_constant_pool): Update.
18394         * tree-optimize.c (tree_rest_of_compilation): Update.
18395         * stack-ptr-mod.c (notice_stack_pointer_modification): Update.
18396         * tree-cfg.c (notice_special_calls): Update.
18397         (is_ctrl_altering_stmt): Update.
18398         (tree_can_make_abnormal_goto): Update.
18399         (tree_purge_dead_abnormal_call_edges): Update.
18400         * config/alpha/predicates.md: Update.
18401         * config/alpha/alpha.c (alpha_sa_mask): Update.
18402         (alpha_sa_size): Update.
18403         (alpha_does_function_need_gp): Update.
18404         (alpha_expand_prologue): Update.
18405         (alpha_start_function): Update.
18406         (alpha_output_function_end_prologue): Update.
18407         (alpha_expand_epilogue): Update.
18408         * config/frv/frv.c (frv_stack_info): Update.
18409         (frv_expand_epilogue): Update.
18410         * config/s390/s390.c (s390_regs_ever_clobbered): Update.
18411         (s390_register_info): Update.
18412         (s390_frame_info): Update.
18413         (s390_init_frame_layout): Update.
18414         (s390_can_eliminate): Update.
18415         (save_gprs): Update.
18416         * config/spu/spu.c (spu_split_immediate): Update.
18417         (need_to_save_reg): Update.
18418         (spu_expand_prologue): Update.
18419         (spu_expand_epilogue): Update.
18420         * config/sparc/sparc.md: Update.
18421         * config/sparc/sparc.c (eligible_for_return_delay): Update.
18422         (sparc_tls_got): Update.
18423         (legitimize_pic_address): Update.
18424         (sparc_emit_call_insn): Update.
18425         (sparc_expand_prologue): Update.
18426         (output_return): Update.
18427         (print_operand): Update.
18428         (sparc_function_ok_for_sibcall): Update.
18429         * config/sparc/sparc.h (EXIT_IGNORE_STACK): Update.
18430         * config/m32r/m32r.md: Update.
18431         * config/m32r/m32r.c (MUST_SAVE_RETURN_ADDR): Update.
18432         (m32r_compute_frame_size): Update.
18433         (m32r_expand_prologue): Update.
18434         (m32r_expand_epilogue): Update.
18435         (m32r_legitimize_pic_address): Update.
18436         * config/m32r/m32r.h (FRAME_POINTER_REQUIRED): Update.
18437         * config/i386/linux.h (SUBTARGET_FRAME_POINTER_REQUIRED): Update.
18438         * config/i386/i386.c (ix86_frame_pointer_required): Update.
18439         (gen_push): Update.
18440         (ix86_save_reg): Update.
18441         (ix86_compute_frame_layout): Update.
18442         (ix86_expand_prologue): Update.
18443         (ix86_expand_epilogue): Update.
18444         * config/sh/sh.c (output_stack_adjust): Update.
18445         (calc_live_regs): Update.
18446         (sh5_schedule_saves): Update.
18447         (sh_expand_prologue): Update.
18448         (sh_expand_epilogue): Update.
18449         (sh_setup_incoming_varargs): Update.
18450         (sh_allocate_initial_value): Update.
18451         (sh_get_pr_initial_val): Update.
18452         * config/sh/sh.h (SHMEDIA_REGS_STACK_ADJUST): Update.
18453         * config/sh/sh.md (label:): Update.
18454         * config/avr/avr.c (out_movhi_mr_r): Update.
18455         * config/crx/crx.h (enum): Update.
18456         * config/xtensa/xtensa.h (along): Update.
18457         * config/stormy16/stormy16.c Update.
18458         (xstormy16_compute_stack_layout): Update.
18459         * config/fr30/fr30.c (MUST_SAVE_RETURN_POINTER): Update.
18460         (fr30_expand_prologue): Update.
18461         * config/cris/cris.c (cris_conditional_register_usage): Update.
18462         (cris_reg_saved_in_regsave_area): Update.
18463         (cris_initial_frame_pointer_offset): Update.
18464         (cris_simple_epilogue): Update.
18465         (cris_expand_prologue): Update.
18466         (cris_expand_epilogue): Update.
18467         (cris_expand_pic_call_address): Update.
18468         (cris_asm_output_symbol_ref): Update.
18469         (cris_asm_output_label_ref): Update.
18470         * config/cris/cris.md Update.
18471         * config/iq2000/iq2000.c (compute_frame_size): Update.
18472         (iq2000_expand_epilogue): Update.
18473         * config/mt/mt.h (save_direction): Update.
18474         * config/mn10300/mn10300.c (mn10300_function_value): Update.
18475         * config/ia64/ia64.c (ia64_compute_frame_size): Update.
18476         (ia64_secondary_reload_class): Update.
18477         * config/m68k/m68k.c (m68k_save_reg): Update.
18478         (m68k_expand_prologue): Update.
18479         (m68k_expand_epilogue): Update.
18480         (legitimize_pic_address): Update.
18481         * config/rs6000/rs6000.c (rs6000_got_register): Update.
18482         (first_reg_to_save): Update.
18483         (first_altivec_reg_to_save): Update.
18484         (compute_vrsave_mask): Update.
18485         (compute_save_world_info): Update.
18486         (rs6000_stack_info): Update.
18487         (spe_func_has_64bit_regs_p): Update.
18488         (rs6000_ra_ever_killed): Update.
18489         (rs6000_emit_eh_reg_restore): Update.
18490         (rs6000_emit_allocate_stack): Update.
18491         (rs6000_emit_prologue): Update.
18492         (rs6000_emit_epilogue): Update.
18493         (rs6000_output_function_epilogue): Update.
18494         (output_profile_hook): Update.
18495         (rs6000_elf_declare_function_name): Update.
18496         * config/rs6000/rs6000.h (rs6000_args): Update.
18497         * config/rs6000/rs6000.md: Update.
18498         * config/mcore/mcore.c (mcore_expand_prolog): Update.
18499         * config/arc/arc.c (arc_output_function_epilogue): Update.
18500         * config/arc/arc.h (FRAME_POINTER_REQUIRED): Update.
18501         * config/darwin.c (machopic_function_base_name): Update.
18502         * config/score/score3.c (score3_compute_frame_size): Update.
18503         (rpush): Update.
18504         (rpop): Update.
18505         (score3_epilogue): Update.
18506         * config/score/score7.c (score7_compute_frame_size): Update.
18507         (score7_prologue): Update.
18508         (score7_epilogue): Update.
18509         * config/score/score.h (FRAME_POINTER_REQUIRED): Update.
18510         * config/arm/linux-elf.h (SUBTARGET_FRAME_POINTER_REQUIRED): Update.
18511         * config/arm/arm.c (use_return_insn): Update.
18512         (require_pic_register): Update.
18513         (arm_load_pic_register): Update.
18514         (arm_compute_save_reg0_reg12_mask): Update.
18515         (arm_compute_save_reg_mask): Update.
18516         (thumb1_compute_save_reg_mask): Update.
18517         (output_return_instruction): Update.
18518         (arm_output_function_prologue): Update.
18519         (arm_output_epilogue): Update.
18520         (arm_get_frame_offsets): Update.
18521         (arm_expand_prologue): Update.
18522         (thumb_pushpop): Update.
18523         (thumb_exit): Update.
18524         (thumb1_expand_prologue): Update.
18525         (thumb1_expand_epilogue): Update.
18526         (arm_unwind_emit): Update.
18527         (arm_output_fn_unwind): Update.
18528         * config/arm/arm.h (FRAME_POINTER_REQUIRED): Update.
18529         * config/arm/arm.md: Update.
18530         * config/pa/pa.md: Update.
18531         * config/pa/pa.c (legitimize_pic_address): Update.
18532         (compute_frame_size): Update.
18533         (hppa_expand_prologue): Update.
18534         (hppa_expand_epilogue): Update.
18535         (borx_reg_operand): Update.
18536         * config/pa/pa.h (FRAME_POINTER_REQUIRED): Update.
18537         (HARD_REGNO_RENAME_OK): Update.
18538         * config/mips/mips.c (mips_global_pointer): Update.
18539         (mips_save_reg_p): Update.
18540         (mips_compute_frame_info): Update.
18541         (mips_frame_pointer_required): Update.
18542         (mips_expand_prologue): Update.
18543         (mips_expand_epilogue): Update.
18544         (mips_can_use_return_insn): Update.
18545         (mips_reorg_process_insns): Update.
18546         * config/v850/v850.c (compute_register_save_size): Update.
18547         * config/mmix/mmix.h (FRAME_POINTER_REQUIRED): Update.
18548         * config/mmix/mmix.c (along): Update.
18549         (mmix_expand_epilogue): Update.
18550         * config/bfin/bfin.c (legitimize_pic_address): Update.
18551         (must_save_p): Update.
18552         (stack_frame_needed_p): Update.
18553         (add_to_reg): Update.
18554         (bfin_expand_prologue): Update.
18555         * stmt.c (expand_asm_operands): Update.
18556         * reload1.c (reload): Update.
18557         (init_elim_table): Update.
18558
18559 2008-04-25  Bob Wilson  <bob.wilson@acm.org>
18560
18561         * optabs.c (expand_float): Fix REG_EQUAL for UNSIGNED_FLOAT libcall.
18562
18563 2008-04-25  H.J. Lu  <hongjiu.lu@intel.com>
18564
18565         * config/i386/sse.md (mov<mode>): Replace SSEMODEI with SSEMODE.
18566         (*mov<mode>_internal): Likewise.  Support V4SF and V2DF.
18567         (mov<mode>): Removed.
18568         (*movv4sf_internal): Likewise.
18569         (*movv2df_internal): Likewise.
18570
18571 2008-04-25  Pompapathi V Gadad <Pompapathi.V.Gadad@nsc.com>
18572
18573         * config.gcc (crx-*-elf): Remove deprecation.
18574
18575 2008-04-25  Danny Smith  <dannysmith@users.sourceforge.net>
18576
18577         * config/i386/cygming-crtend.c (register_frame_ctor): Register
18578         __gcc_deregister_frame with atexit.
18579         (deregister_frame_dtor): Remove.
18580
18581 2008-04-24  Nathan Froyd  <froydnj@codesourcery.com>
18582             Nathan Sidwell  <nathan@codesourcery.com>
18583
18584         * config/rs6000/rs6000.opt (mspe): Remove Var property.
18585         (misel): Likewise.
18586         * config/rs6000/rs6000.h (rs6000_spe): Declare.
18587         (rs6000_isel): Likewise.
18588         * config/rs6000/rs6000.c (rs6000_spe): New variable.
18589         (rs6000_isel): New variable.
18590         (rs6000_handle_option): Handle OPT_mspe and OPT_misel.
18591
18592 2008-04-24  Jakub Jelinek  <jakub@redhat.com>
18593
18594         PR c++/35758
18595         * c-common.c (handle_vector_size_attribute): Call
18596         lang_hooks.types.reconstruct_complex_type instead of
18597         reconstruct_complex_type.
18598         * config/rs6000/rs6000.c (rs6000_handle_altivec_attribute): Likewise.
18599         * config/spu/spu.c (spu_handle_vector_attribute): Likewise.
18600         * langhooks.h (struct lang_hooks_for_types): Add
18601         reconstruct_complex_type hook.
18602         * langhooks-def.h (LANG_HOOKS_RECONSTRUCT_COMPLEX_TYPE): Define.
18603         (LANG_HOOKS_FOR_TYPES_INITIALIZER): Add it.
18604
18605 2008-04-24  Richard Guenther  <rguenther@suse.de>
18606
18607         * c-common.h (check_builtin_function_arguments): Declare.
18608         * c-common.c (validate_nargs): New function.
18609         (check_builtin_function_arguments): Likewise.
18610         * c-typeck.c (build_function_call): Call
18611         check_builtin_function_arguments.
18612         * builtins.c (fold_builtin_classify): Remove error reporting code.
18613         (fold_builtin_unordered_cmp): Likewise.
18614         (fold_builtin_1): Likewise.
18615         (fold_builtin_n): Likewise.
18616
18617 2008-04-24  Jakub Jelinek  <jakub@redhat.com>
18618
18619         PR tree-optimization/36008
18620         * fold-const.c (try_move_mult_to_index): If s == NULL, divide
18621         the original op1, rather than delta by step.
18622
18623 2008-04-22  Antoniu Pop  <antoniu.pop@gmail.com>
18624             Sebastian Pop  <sebastian.pop@amd.com>
18625
18626         * tree-parloops.c (take_address_of, eliminate_local_variables_1,
18627         eliminate_local_variables_stmt, eliminate_local_variables,
18628         separate_decls_in_loop_name, separate_decls_in_loop_stmt,
18629         separate_decls_in_loop, gen_parallel_loop): Make them work on a region
18630         of code delimited by two edges in the CFG.
18631         (separate_decls_in_loop_name): Renamed separate_decls_in_region_name.
18632         (separate_decls_in_loop_stmt): Renamed separate_decls_in_region_stmt.
18633         (separate_decls_in_loop): Renamed separate_decls_in_region.  Isolate
18634         the case of parallelisation of reductions.
18635         (expr_invariant_in_region_p): New.
18636
18637         * tree-flow.h (gather_blocks_in_sese_region): Declared.
18638         * tree-cfg.c (gather_blocks_in_sese_region): Extern.
18639
18640 2008-04-24  Ira Rosen  <irar@il.ibm.com>
18641             Richard Guenther  <rguenther@suse.de>
18642
18643         PR tree-optimization/36034
18644         * tree-vect-analyze.c (vect_analyze_group_access): SLP is
18645         incapable of dealing with loads with gaps.
18646
18647 2008-04-24  Rafael Espíndola  <espindola@google.com>
18648
18649         * tree-flow.h (vrp_evaluate_conditional): Change signature.
18650         * tree-ssa-propagate.c (fold_predicate_in): Update call to
18651         vrp_evaluate_conditional.
18652         * tree-vrp.c (vrp_evaluate_conditional_warnv): Remove.
18653         (vrp_evaluate_conditional): Split the cond argument.
18654         (vrp_visit_cond_stmt): Use vrp_evaluate_conditional_warnv_with_ops.
18655         (simplify_stmt_for_jump_threading): Update call to
18656         vrp_evaluate_conditional.
18657
18658 2008-04-24  Ira Rosen  <irar@il.ibm.com>
18659
18660         PR tree-optimization/35982
18661         * tree-vect-analyze.c (vect_check_interleaving): Check that the
18662         interleaved data-refs are of the same type.
18663
18664 2008-04-24  Danny Smith  <dannysmith@users.net>
18665
18666         * c-format.c (check_format_info_main): Use strncmp rather than a
18667         magic prefix to handle multichar length specs.
18668         * config/i386/msformat-c.c (format_length_info ms_printf_length_specs):
18669         Don't prefix "I64" and "I32" with '\0'.
18670
18671 2008-04-24  Jakub Jelinek  <jakub@redhat.com>
18672
18673         PR target/36015
18674         * config/i386/i386.c (init_cumulative_args): Don't pass anything
18675         in registers for -m32 only if stdarg_p (fntype).
18676
18677 2008-04-24  Uros Bizjak  <ubizjak@gmail.com>
18678
18679         PR rtl-optimization/36006
18680         * expmed.c (store_fixed_bit_field): Copy op0 rtx before moving
18681         temp to op0 in order to avoid invalid rtx sharing.
18682
18683 2008-04-23  Paolo Bonzini  <bonzini@gnu.org>
18684
18685         * tree-cfg.c (verify_expr): Check with is_gimple_address.  Don't
18686         check TREE_INVARIANT.
18687         * tree-gimple.c (is_gimple_address): New.
18688         (is_gimple_invariant_address): Simplify using decl_address_invariant_p.
18689         * tree-gimple.h (is_gimple_address): New.
18690         * tree.h (decl_address_invariant_p): New.
18691         * tree.c (make_node_stat): Don't set TREE_INVARIANT.
18692         (build_string): Likewise.
18693         (decl_address_invariant_p): New, from is_gimple_invariant_address.
18694         (tree_invariant_p_1): Likewise.
18695         (save_expr): Use it.
18696         (tree_invariant_p): New.
18697         (skip_simple_arithmetic): Use it.
18698         (stabilize_reference_1): Use it.
18699         (recompute_tree_invariant_for_addr_expr): Don't update TREE_INVARIANT,
18700         simplify.
18701         (build1_stat): Drop code to compute TREE_INVARIANT.
18702         (build2_stat): Drop code to compute TREE_INVARIANT.
18703         (build3_stat): Drop code to compute TREE_INVARIANT.
18704         (build4_stat): Drop code to compute TREE_INVARIANT.
18705         (build5_stat): Drop code to compute TREE_INVARIANT.
18706         (build7_stat): Drop code to compute TREE_INVARIANT.
18707         (merge_dllimport_decl_attributes): Don't mention TREE_INVARIANT.
18708         * tree.h (struct tree_base): Remove invariant_flag.
18709         (TREE_INVARIANT): Remove.
18710         * builtins.c (build_string_literal): Don't set TREE_INVARIANT.
18711         (fold_builtin_expect): Check TREE_CONSTANT.
18712         * tree-ssa-ccp.c (fold_stmt_r): Adjust comment.
18713         * c-tree.h (c_expr_to_decl): Drop third parameter.
18714         * c-typeck.c (build_external_ref): Don't set TREE_INVARIANT.
18715         (build_c_cast): Don't set TREE_INVARIANT.
18716         (pop_init_level): Don't set TREE_INVARIANT.
18717         (c_objc_common_truthvalue_conversion): Don't set TREE_INVARIANT.
18718         * gimplify.c (gimplify_init_ctor_preeval): Add assertion, test
18719         TREE_CONSTANT.
18720         (gimplify_init_constructor): Don't set TREE_INVARIANT.
18721         (gimplify_addr_expr): Adjust comment.
18722         * tree-mudflap.c (mf_build_string):
18723         * print-tree.c (print_node): Don't print TREE_INVARIANT.
18724         * tree-nested.c (convert_nonlocal_reference): Adjust comment.
18725         * c-common.c (fix_string_type): Don't set TREE_INVARIANT.
18726         * langhooks-def.h (lhd_expr_to_decl): Drop third parameter.
18727         * langhooks.c (lhd_expr_to_decl): Drop third parameter.
18728         * langhooks.h (struct lang_hooks): Drop third parameter from
18729         expr_to_decl.
18730
18731 2008-04-23  Richard Guenther  <rguenther@suse.de>
18732
18733         PR tree-optimization/27799
18734         PR tree-optimization/32921
18735         PR tree-optimization/32624
18736         * tree-ssa-structalias.c (merge_smts_into): Only merge the
18737         SMTs aliases and the tag itself into the solution.
18738         * tree-ssa-alias.c (compute_flow_sensitive_aliasing): Do not
18739         merge the points-to solution back into the SMT aliases.
18740         (may_alias_p): Use alias_set_subset_of instead of
18741         aliases_conflict_p.  A pointer which points to
18742         memory with alias set zero may access any variable.
18743
18744 2008-04-23  Richard Guenther  <rguenther@suse.de>
18745
18746         * alias.c (alias_set_subset_of): Correctly handle asking
18747         if zero is a subset of an alias set with zero child.
18748         * tree-ssa-alias.c (have_common_aliases_p): Simplify logic.
18749         (compute_flow_insensitive_aliasing): Correctly walk all
18750         pointers.  Do not unnecessarily union sets.
18751
18752 2008-04-23  Richard Guenther  <rguenther@suse.de>
18753
18754         PR middle-end/36021
18755         * c-common.c (handle_alloc_size_attribute): Use type_num_arguments.
18756
18757 2008-04-22  Tomas Bily  <tbily@suse.cz>
18758
18759         * tree-cfg.c (verify_expr): Check for NON_LVALUE_EXPR as
18760         unreachable case.
18761         * tree-vrp.c (extract_range_from_unary_expr): Removed unused
18762         NON_LVALUE_EXPR.
18763         * tree-ssa-threadedge.c (simplify_control_stmt_condition): Likewise.
18764         * tree-ssa-structalias.c (get_constraint_for): Likewise.
18765         * tree-inline.c (estimate_num_insns_1): Likewise.
18766         * varasm.c (const_hash_1, compare_constant, copy_constant)
18767         (compute_reloc_for_constant, output_addressed_constants): Likewise.
18768         * emit-rtl.c (component_ref_for_mem_expr)
18769         (set_mem_attributes_minus_bitpos): Likewise.
18770         * expr.c (highest_pow2_factor, expand_expr_real_1, )
18771         (is_aligning_offset): Likewise.
18772         * dwarf2out.c (loc_descriptor_from_tree_1, add_bound_info): Likewise.
18773         * tree-ssa-loop-ivopts.c (may_be_nonaddressable_p): Likewise.
18774         * dojump.c (do_jump): Likewise.
18775         * builtins.c (get_pointer_alignment, get_memory_rtx)
18776         (integer_valued_real_p, fold_builtin_next_arg): Likewise.
18777         * tree-scalar-evolution.c (instantiate_parameters_1): Likewise.
18778
18779 2008-04-23  Jakub Jelinek  <jakub@redhat.com>
18780
18781         PR rtl-optimization/36017
18782         * builtins.c (expand_errno_check): Clear CALL_EXPR_TAILCALL before
18783         expanding the library call.
18784
18785 2008-04-22  Ian Lance Taylor  <iant@google.com>
18786
18787         * fold-const.c (pointer_may_wrap_p): Call int_size_in_bytes rather
18788         than size_in_bytes.
18789
18790 2008-04-22  Pat Haugen  <pthaugen@us.ibm.com>
18791
18792         * config/rs6000/rs6000.c (rs6000_register_move_cost): Increase cost
18793         of LR/CTR moves for Power6.
18794
18795 2008-04-22  Kenneth Zadeck  <zadeck@naturalbridge.com>
18796
18797         PR middle-end/36003
18798         * passes.c (init_optimization_passes): Remove
18799         pass_fast_rtl_byte_dce.
18800
18801 2008-04-22  Uros Bizjak  <ubizjak@gmail.com>
18802
18803         PR target/29096
18804         * config/i386/xmmintrin.h (_mm_cvtpi16_ps): Rearrange calls to
18805         builtin functions to generate faster code.
18806         (_mm_cvtpu16_ps): Ditto.
18807         (_mm_cvtpi32x2_ps): Ditto.
18808
18809 2008-04-22  Nick Clifton  <nickc@redhat.com>
18810
18811         * common.opt (ftree-loop-distribution): Add Optimization
18812         attribute.
18813
18814         * config/frv/frv.c (frv_stack_info): Use crtl instead of cfun.
18815         (frv_expand_builtin_va_start): Likewise.
18816
18817         * config/arm/arm.c (thumb_find_work_register): Fix location of
18818         argument register count.
18819
18820 2008-04-22  Maxim Kuvyrkov  <maxim@codesourcery.com>
18821
18822         Support scheduling for ColdFire V1 and V3 microarchitecture.
18823         Improve scheduling of multiplication instructions.
18824
18825         * config/m68k/m68k.md (cpu): Add cfv1 and cfv3.  Rename cf_v2 to cfv1.
18826         (mac): New instruction attribute.
18827         * config/m68k/m68k.c (override_options): Handle cfv1, cfv3 and mac.
18828         (m68k_sched_mac): New variable.
18829         (m68k_sched_attr_type2, m68k_sched_md_init_global): Update.
18830         Handle cfv1 and cfv3.
18831         (max_insn_size): New static variable.
18832         (struct _sched_ib): New type.
18833         (sched_ib): New static variable.
18834         (sched_ib_size, sched_ib_filled, sched_ib_insn): Convert variables
18835         to fields of 'struct _sched_ib sched_ib'.  Update all uses.
18836         (m68k_sched_variable_issue): Add modeling of cfv3 instruction buffer.
18837         Update.
18838         (m68k_sched_md_init_global, m68k_sched_md_finish_global,
18839         m68k_sched_md_init, m68k_sched_md_finish): Handle cfv1 and cfv3.  Init
18840         new variables.  Update.
18841         (m68k_sched_dfa_pre_advance_cycle, m68k_sched_dfa_post_advance_cycle):
18842         Add modeling of cfv3 instruction buffer.  Update.
18843         * config/m68k/m68k-protos.h (m68k_sched_mac): Declare.
18844         * config/m68k/m68k.h (TUNE_CFV3): New macro.
18845         * config/m68k/cf.md: Change substrings 'cf_v2' to 'cfv12' or 'cfv123'.
18846         (cf_* reservations): Rename to cfv12 or cfv123 to indicate cores
18847         a particular reservation applies to.
18848         (type2): Reorganize attribute values.  Rename alu to alu_reg,
18849         alu_l to alu, move_l to omove.  Join move to alu.  Split mul
18850         to mul_l and mul_w.
18851         (cf_ib_*): Simplify description of instruction buffer.
18852         (cf_ib_w0, cf_ib_w4, cf_ib_w5, cf_ib_w6): Remove.
18853         (cf_mem): Split into cf_mem1 and cf_mem2.
18854         (cf_v2_move_??): Rename to cfv12_alu_??.
18855         (cf_v2_move_l_??): Rename to cfv12_omove_??.
18856         (cf_v2_mul_??): Remove reservations.
18857         (cfv12_mul_l_??, cfv12_mul_w_??, cfv12_mac_w_??, cfv12_mac_l_??,
18858         cfv12_emac_??, cfv12_emac_w_i0): New reservations.
18859         (cfv12_rts, cfv12_call, cfv12_bcc, cfv12_bra, cfv12_jmp): Move to
18860         appropriate place.
18861         (cfv3_alu_10, cfv3_omove_10, cfv3_alu_i0, cfv3_omove_i0, cfv3_alu_01,
18862         cfv3_alu_0i, cfv3_alu_11, cfv3_omove_11, cfv3_alu_i1, cfv3_omove_i1,
18863         cfv3_alu_1i, cfv3_omove_1i, cfv3_pea_11, cfv3_pea_i1, cfv3_mul_w_10,
18864         cfv3_mul_l_10, cfv3_mul_w_i0, cfv3_mac_w_10, cfv3_mac_l_10,
18865         cfv3_mac_w_i0, cfv3_emac_10, cfv3_emac_w_i0, cfv3_rts, cfv3_call,
18866         cfv3_bcc, cfv3_bra, cfv3_jmp): New reservations.
18867         (cfv3_*_1, cfv3_*_2, cfv3_*_3): New instruction reservations that are
18868         expansions of the above reservations for instructions of sizes
18869         1, 2 and 3 words.
18870
18871 2008-04-22  Maxim Kuvyrkov  <maxim@codesourcery.com>
18872
18873         * rtl-factoring.c (collect_patterns_seqs): Handle CC0 targets.
18874
18875 2008-04-21  Adam Nemet  <anemet@caviumnetworks.com>
18876
18877         * coverage.c: Include tree-pass.h.
18878         (coverage_counter_alloc): Print da_file_name to the dump file.
18879
18880 2008-04-21  Kenneth Zadeck  <zadeck@naturalbridge.com>
18881
18882         * sbitmap.c (sbitmap_range_empty_p): New function.
18883         * sbitmap.h (sbitmap_range_empty_p): New function.
18884         * bitmap.h: Now includes obstack.h.
18885
18886 2008-04-21  Richard Sandiford  <rsandifo@nildram.co.uk>
18887             Kenneth Zadeck  <zadeck@naturalbridge.com>
18888
18889         * dbgcnt.def (ra_byte_scan): Added.
18890         * dbgcnt.c (dbg_cnt): Added code to print message to dump_file
18891         when the last hit happens for a counter.
18892         * timevar.def (TV_DF_BYTE_LR): New variable.
18893         * tree-pass.h (pass_fast_rtl_byte_dce): New pass.
18894         * passes.c (pass_fast_rtl_byte_dce): New pass.
18895         * fwprop.c (update_df): Added mode to call df_ref_create.
18896         Renamed DF_REF_WIDTH and DF_REF_OFFSET to DF_REF_EXTRACT_WIDTH and
18897         DF_REF_EXTRACT_OFFSET.
18898         * df.h (DF_BYTE_LR, DF_BYTE_LR_BB_INFO, DF_BYTE_LR_IN,
18899         DF_BYTE_LR_OUT, df_byte_lr): New macro.
18900         (df_mm): New enum.
18901         (df_ref_extract): Added mode field.
18902         (DF_REF_WIDTH, DF_REF_OFFSET) Renamed to DF_REF_EXTRACT_WIDTH and
18903         DF_REF_EXTRACT_OFFSET.
18904         (DF_REF_EXTRACT_MODE): New macro.
18905         (df_byte_lr_bb_info): New structure.
18906         (df_print_byte_regset, df_compute_accessed_bytes,
18907         df_byte_lr_add_problem, df_byte_lr_get_regno_start,
18908         df_byte_lr_get_regno_len, df_byte_lr_simulate_defs,
18909         df_byte_lr_simulate_uses,
18910         df_byte_lr_simulate_artificial_refs_at_top,
18911         df_byte_lr_simulate_artificial_refs_at_end,
18912         df_compute_accessed_bytes): New function.
18913         (df_ref_create): Add parameter.
18914         (df_byte_lr_get_bb_info): New inline function.
18915         * df-scan.c (df_ref_record, df_uses_record,
18916         df_ref_create_structure): Added mode parameter.
18917         (df_ref_create, df_notes_rescan, df_ref_record, df_def_record_1,
18918         df_defs_record, df_uses_record, df_get_conditional_uses,
18919         df_get_call_refs, df_insn_refs_collect, df_bb_refs_collect,
18920         df_entry_block_defs_collect, df_exit_block_uses_collect):
18921         Added mode parameter to calls to df_ref_record, df_uses_record,
18922         df_ref_create_structure.
18923         (df_ref_equal_p, df_ref_compare): Added test for modes.
18924         (df_ref_create_structure): Added code to set mode.  Renamed
18925         DF_REF_WIDTH and DF_REF_OFFSET to DF_REF_EXTRACT_WIDTH and
18926         DF_REF_EXTRACT_OFFSET.
18927         * df-core.c (df_print_byte_regset): New function.
18928         * df-byte-scan.c: New file.
18929         * df-problems.c (df_rd_transfer_function): Removed unnecessary
18930         calls to BITMAP_FREE.
18931         (df_byte_lr_problem_data, df_problem problem_BYTE_LR): New structure.
18932         (df_byte_lr_get_regno_start, df_byte_lr_get_regno_len,
18933         df_byte_lr_set_bb_info, df_byte_lr_free_bb_info,
18934         df_byte_lr_check_regs, df_byte_lr_expand_bitmap,
18935         df_byte_lr_alloc, df_byte_lr_reset, df_byte_lr_bb_local_compute,
18936         df_byte_lr_local_compute, df_byte_lr_init,
18937         df_byte_lr_confluence_0, df_byte_lr_confluence_n,
18938         df_byte_lr_transfer_function, df_byte_lr_free,
18939         df_byte_lr_top_dump, df_byte_lr_bottom_dump,
18940         df_byte_lr_add_problem, df_byte_lr_simulate_defs,
18941         df_byte_lr_simulate_uses,
18942         df_byte_lr_simulate_artificial_refs_at_top,
18943         df_byte_lr_simulate_artificial_refs_at_end): New function.
18944         * dce.c (byte_dce_process_block): New function.
18945         (dce_process_block): au is now passed in rather than computed
18946         locally.  Changed loops that look at artificial defs to not look
18947         for conditional or partial ones, because there never are any.
18948         (fast_dce): Now is able to drive byte_dce_process_block or
18949         dce_process_block depending on the kind of dce being done.
18950         (rest_of_handle_fast_dce): Add parameter to fast_dce.
18951         (rest_of_handle_fast_byte_dce): New function.
18952         (rtl_opt_pass pass_fast_rtl_byte_dce): New pass.
18953         * Makefile.in (df-byte-scan.o, debugcnt.o): Added dependencies.
18954
18955 2008-04-21  Daniel Franke  <franke.daniel@gmail.com>
18956
18957         PR fortran/35019
18958         * gcc.h: Added fortran options that take arguments to
18959         DEFAULT_SWITCH_TAKES_ARG and DEFAULT_WORD_SWITCH_TAKES_ARG
18960         macros.
18961
18962 2008-04-20  Eric Botcazou  <ebotcazou@adacore.com>
18963
18964         * tree-sra.c (sra_walk_expr) <VIEW_CONVERT_EXPR>: Disable
18965         scalarization if on the LHS and not a full access.
18966
18967 2008-04-20  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
18968
18969         * Makefile.in (s-gtyp-input): Remove tmp-gi.list before writing it.
18970
18971 2008-04-18  Rafael Espíndola  <espindola@google.com>
18972
18973         * tree-vrp.c (find_case_label_index): Fix the binary search.
18974         (find_case_label_range): New.
18975         (vrp_visit_switch_stmt): Use find_case_label_range.
18976         (simplify_switch_using_ranges): Use find_case_label_range.
18977
18978 2008-04-18  Eric Botcazou  <ebotcazou@adacore.com>
18979
18980         * gimplify.c (gimplify_modify_expr_rhs) <COND_EXPR>: Gimplify the LHS
18981         using the is_gimple_lvalue predicate instead of is_gimple_min_lval.
18982
18983 2008-04-18  Tom Tromey  <tromey@redhat.com>
18984
18985         PR libcpp/15500:
18986         * doc/cpp.texi (Implementation-defined behavior): Mention
18987         -finput-charset.
18988
18989 2008-04-18  Ian Lance Taylor  <iant@google.com>
18990
18991         * fold-const.c (pointer_may_wrap_p): New static function.
18992         (fold_comparison): Add another test for pointer overflow.  Use
18993         pointer_may_wrap_p to disable some false positives.
18994
18995 2008-04-18  Kris Van Hees <kris.van.hees@oracle.com>
18996
18997         * c-common.c (CHAR16_TYPE, CHAR32_TYPE): New macros.
18998         (fname_as_string): Match updated cpp_interpret_string prototype.
18999         (fix_string_type): Support char16_t* and char32_t*.
19000         (c_common_nodes_and_builtins): Add char16_t and char32_t (and
19001         derivative) nodes.  Register as builtin if C++0x.
19002         (c_parse_error): Support CPP_CHAR{16,32}.
19003         * c-common.h (RID_CHAR16, RID_CHAR32): New elements.
19004         (enum c_tree_index) <CTI_CHAR16_TYPE, CTI_SIGNED_CHAR16_TYPE,
19005         CTI_UNSIGNED_CHAR16_TYPE, CTI_CHAR32_TYPE, CTI_SIGNED_CHAR32_TYPE,
19006         CTI_UNSIGNED_CHAR32_TYPE, CTI_CHAR16_ARRAY_TYPE,
19007         CTI_CHAR32_ARRAY_TYPE>: New elements.
19008         (char16_type_node, signed_char16_type_node, unsigned_char16_type_node,
19009         char32_type_node, signed_char32_type_node, char16_array_type_node,
19010         char32_array_type_node): New defines.
19011         * c-lex.c (cb_ident): Match updated cpp_interpret_string prototype.
19012         (c_lex_with_flags): Support CPP_CHAR{16,32} and CPP_STRING{16,32}.
19013         (lex_string): Support CPP_STRING{16,32}, match updated
19014         cpp_interpret_string and cpp_interpret_string_notranslate prototypes.
19015         (lex_charconst): Support CPP_CHAR{16,32}.
19016         * c-parser.c (c_parser_postfix_expression): Support CPP_CHAR{16,32}
19017         and CPP_STRING{16,32}.
19018
19019 2008-04-18  Paolo Bonzini  <bonzini@gnu.org>
19020
19021         PR bootstrap/35457
19022         * aclocal.m4: Regenerate.
19023         * configure: Regenerate.
19024
19025 2008-04-18  Jan Hubicka  <jh@suse.cz>
19026
19027         * except.c (dw2_size_of_call_site_table,
19028         sjlj_size_of_call_site_table): Use vector API for call_site_record.
19029
19030         * cgraphbuild.c (build_cgraph_edges): Update.
19031         * tree-pass.h: Update comment.
19032         * final.c (leaf_function_p): Update.
19033         (leaf_renumber_regs): Update.
19034         (rest_of_clean_state): Update.
19035         * omp-low.c (expand_omp_parallel): Update.
19036         * ipa-reference.c (analyze_function): Update.
19037         * reorg.c (find_end_label): Update.
19038         (optimize_skip): Update.
19039         (fill_simple_delay_slots): Update.
19040         (fill_simple_delay_slots): Update.
19041         (make_return_insns): Update.
19042         (dbr_schedule): Update.
19043         * gimple-low.c (record_vars_into): Update.
19044         * cfgbuild.c (make_edges): Update.
19045         * function.c (assign_stack_local): Update.
19046         (assign_parm_adjust_stack_rtl): Update.
19047         (locate_and_pad_parm): Update.
19048         (allocate_struct_function): Do not initialize stack_alignment_needed
19049         and preferred_stack_boundary here.
19050         (stack_protect_prologue): Update.
19051         (stack_protect_epilogue): Update.
19052         (expand_function_start): Initialize stack_alignment_needed,
19053         preferred_stack_boundary and max_jumptable_ents.
19054         (expand_function_end): Update.
19055         (free_after_compilation): Do not NULLify epilogue_delay_list.
19056         * function.h (struct rtl_data): Add stack_protect_guard,
19057         stack_alignment_needed,
19058         preferred_stack_boundary, epilogue_delay_list.
19059         (struct function): Remove value_histograms, stack_alignment_needed,
19060         preferred_stack_boundary, epilogue_delay_list, max_jumptable_ents,
19061         last_label_uid,
19062         unexpanded_var_list, stack_protect_guard.
19063         (current_function_epilogue_delay_list): Remove.
19064         * ipa-type-escape.c (analyze_function): Update.
19065         * gimplify.c (pop_gimplify_context): Update comment.
19066         * calls.c (expand_call): Update.
19067         (emit_library_call_value_1): Update.
19068         * except.c (set_nothrow_function_flags): Update.
19069         * cfgexpand.c (get_decl_align_unit): Update.
19070         (create_stack_guard): Update.
19071         (estimated_stack_frame_size): Update.
19072         (expand_used_vars): Update.
19073         (tree_expand_cfg): Free histogram earliers, init expansion variables.
19074         * explow.c (allocate_dynamic_stack_space): Update.
19075         * tree-ssa-live.c (remove_unused_locals): Update.
19076         * varasm.c (mark_constant_pool): Update.
19077         * tree-inline.c (remap_decls): Update.
19078         (initialize_cfun): Update.
19079         (declare_return_variable): Update.
19080         (inline_forbidden_p): Update.
19081         (expand_call_inline): Update.
19082         (declare_inline_vars): Update.
19083         (tree_function_versioning): Update.
19084         * tree-flow.h (value_histograms): New.
19085         (VALUE_HISTOGRAMS): New macro.
19086         * basic-block.h (control_flow_graph): Add max_jumptable_ents,
19087         last_label_uid.
19088         * tree-cfg.c (set_bb_for_stmt): Update.
19089         (replace_by_duplicate_decl): Update.
19090         (move_block_to_fn): Update.
19091         (new_label_mapper): Update.
19092         (dump_function_to_file): Update.
19093         * ipa-struct-reorg.c (build_data_structure): Update.
19094         * cfgrtl.c (print_rtl_with_bb): Update.
19095         * reload1.c (reload): Update.
19096         (reload): Update.
19097         * config/i386/i386.c (setup_incoming_varargs_64,
19098         ix86_compute_frame_layout): Update.
19099         * config/arc/arc.c (arc_output_function_epilogue): Update.
19100
19101 2008-04-18  Marius Strobl <marius@FreeBSD.org>
19102
19103         * gthr-posix.h (__gthread_active_p): Use the Solaris implementation
19104         for FreeBSD as well.
19105         * gthr-posix95.h: Likewise.
19106
19107 2008-04-17  Richard Sandiford  <rsandifo@nildram.co.uk>
19108
19109         PR rtl-optimization/35838
19110         * dse.c (find_shift_sequence): Use subreg_lowpart_offset to work
19111         out the byte offset of the first subreg.
19112
19113 2008-04-17  Uros Bizjak  <ubizjak@gmail.com>
19114
19115         * config/i386/i386.md (addti3 splitter): Pass arrays of 3 operands
19116         to split_ti instead of three separate calls with single member arrays.
19117         (subti3 splitter): Ditto.
19118         (adddi3 splitter): Ditto with split_di.
19119         (subdi3 splitter): Ditto.
19120         (negti2 splitter): Pass arrays of 2 operands to split_ti instead of
19121         two separate calls with single member arrays.  Swap match_dup
19122         operands 1 and 2 to better fit into the array.
19123         (negdi2 splitter): Ditto with split_di.
19124         (movdfcc splitter):  Pass arrays of 2 operands to split_di instead of
19125         two separate calls with single member arrays.  Swap match_dup operands
19126         6 and 7 to better fit into the array.
19127
19128 2008-04-17  H.J. Lu  <hongjiu.lu@intel.com>
19129
19130         * config/i386/i386.c (sse_builtin_type): New.
19131         (bdesc_sse_args): Likewise.
19132         (bdesc_sse_3arg): Removed.
19133         (bdesc_2arg): Remove IX86_BUILTIN_AESKEYGENASSIST128.
19134         (bdesc_1arg): Remove IX86_BUILTIN_ROUNDPD and
19135         IX86_BUILTIN_ROUNDPS.
19136         (ix86_init_mmx_sse_builtins): Handle bdesc_sse_args.  Remove
19137         bdesc_sse_3arg.  Remove IX86_BUILTIN_ROUNDPD and
19138         IX86_BUILTIN_ROUNDPS.
19139         (ix86_expand_sse_4_operands_builtin): Removed.
19140         (ix86_expand_sse_operands_builtin): New.
19141         (ix86_expand_unop_builtin): Remove CODE_FOR_sse4_1_roundpd
19142         and CODE_FOR_sse4_1_roundps.
19143         (ix86_expand_builtin): Remove IX86_BUILTIN_AESKEYGENASSIST128.
19144         Handle bdesc_sse_args.  Remove bdesc_sse_3arg.
19145
19146 2008-04-17  Alan Modra  <amodra@bigpond.net.au>
19147
19148         PR target/35907
19149         * config/rs6000/rs6000.c (rs6000_emit_epilogue): Restore vr and vrsave
19150         regs before frame pop when needed.  If use_backchain_to_restore_sp
19151         then load backchain into a temp reg to restore vr and vrsave.  Add
19152         code to restore vr after frame pop if possible.
19153
19154 2008-04-17  Richard Guenther  <rguenther@suse.de>
19155
19156         * tree-vn.c (expressions_equal_p): Do not check type
19157         equality or compatibility before calling operand_equal_p.
19158         * fold-const.c (operand_equal_p): Check equivalence of
19159         integer constants before bailing out due to signedness or
19160         precision differences.
19161         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Ignore
19162         spurious differences in type qualification.  Ignore types
19163         for COMPONENT_REFs at all.
19164
19165 2008-04-17  Christian Bruel  <christian.bruel@st.com>
19166
19167         * config/sh/sh.c (expand_cbranchdi4): Use original operands for
19168         msw_skip comparison.
19169
19170 2008-04-16  Jakub Jelinek  <jakub@redhat.com>
19171
19172         PR c/35739
19173         * tree-nrv.c (tree_nrv): Don't optimize if result_type is GIMPLE
19174         reg type.
19175
19176         PR tree-optimization/35899
19177         * tree-inline.c (expand_call_inline): Use GIMPLE_STMT_OPERAND
19178         rather than TREE_OPERAND.
19179
19180 2008-04-16  Uros Bizjak  <ubizjak@gmail.com>
19181
19182         PR target/35944
19183         * config/i386/i386.md (fmodxf3): Copy operand 1 and operand 2 into
19184         temporary registers.  Change operand predicate to general_operand.
19185         (remainderxf3): Ditto.
19186
19187 2008-04-16  Richard Guenther  <rguenther@suse.de>
19188
19189         * Makefile.in (tree-affine.o): Add $(FLAGS_H) dependency.
19190         * tree-affine.c (aff_combination_expand): Look through some
19191         conversions.
19192
19193 2008-04-15  Doug Kwan  <dougkwan@google.com>
19194
19195         * dwarf2asm.c (dw2_assemble_integer): Cast to unsigned HOST_WIDE_INT
19196         for hex printing.
19197         * tree-pretty-print.c (dump_generic_node): Ditto.
19198         * final.c (output_addr_const): Ditto.
19199         * dwarf2out.c (output_cfi): Ditto.
19200         * c-pretty-print.c (pp_c_integer_constant): Ditto.
19201         * print-rtl.c (print_rtx): Ditto.
19202         * print-tree.c (print_node_brief, print_node): Ditto.
19203         * c-common.c (match_case_to_enum_1): Ditto.
19204         * sched-vis.c (print_value): Ditto.
19205         * config/i386/i386.c (print_operand): Cast to long unsigned int
19206         for hex printing.
19207
19208 2008-04-15  Danny Smith  <dannysmith@users.sourceforge.net>
19209         * libgcc2.c [L_trampoline]: Remove  unnecessary prototype for
19210         MS Windows VirtualProtect function.
19211
19212 2008-04-15  Jan Hubicka  <jh@suse.cz>
19213
19214         * gengtype.c (write_root): Param_is argument is OK.
19215         * expr.c (expand_expr_real_1): Update call of get_exception_*.
19216         * function.h: Include varray.h
19217         (rtl_eh): New stucture based on except.c one.
19218         (call_site_record): New forward declaration and vector type.
19219         * calls.c (emit_call_1): Do not call
19220         note_current_region_may_contain_throw.
19221         * except.c (eh_status): Remove cur_region, try_region since they are
19222         unused.
19223         Move filter, exc_ptr, ttype_data, ehspec_data, action_record_data and
19224         exception_handler_label_map, ehr_stackadj, ehr_handler, ehr_label,
19225         sjlj_fc, sjlj_exit_after to rth_eh in function.h.
19226         Remove call_site_data_used, call_site_data_size.
19227         Turn call_site_record into vector in function.h.
19228         (note_current_region_may_contain_throw): Remove.
19229         (get_exception_pointer, get_exception_filter): Do not take struct
19230         function argument; update.
19231         (add_ehl_entry, find_exception_handler_labels, ehspec_filter_hash,
19232         add_ttypes_entry, add_ehspec_entry, assign_filter_values,
19233         build_post_landing_pads, dw2_build_landing_pads,
19234         sjlj_assign_call_site_values, sjlj_mark_call_sites,
19235         sjlj_emit_function_enter, sjlj_emit_function_enter,
19236         sjlj_emit_function_exit, sjlj_emit_dispatch_table,
19237         sjlj_build_landing_pads, finish_eh_generation,
19238         remove_exception_handler_label, remove_eh_handler,
19239         maybe_remove_eh_handler, add_reachable_handler,
19240         reachable_handlers, expand_builtin_eh_return, expand_eh_return,
19241         add_action_record, collect_one_action_chain, add_call_site,
19242         convert_to_eh_region_ranges, sjlj_size_of_call_site_table,
19243         sjlj_output_call_site_table, output_function_exception_table,
19244         * except.h (note_current_region_may_contain_throw): Remove
19245         (get_exception_pointer, get_exception_filter): Do not take struct
19246         function argument.
19247         * Makefile.in (GTFILES): Put varargs before struct function.
19248
19249 2008-04-15  Eric Botcazou  <ebotcazou@adacore.com>
19250
19251         * tree-ssa-structalias.c (get_constraint_for_component_ref): Do not
19252         punt for STRING_CST.
19253         (get_constraint_for): Deal with STRING_CST here instead.
19254
19255 2008-04-15  Richard Guenther  <rguenther@suse.de>
19256
19257         * tree-ssa-propagate.c (substitute_and_fold): Substitute
19258         statements in a basic-block with a backward walk.  Do not
19259         substitute into dead statements but instead remove those.
19260
19261 2008-04-15  Richard Guenther  <rguenther@suse.de>
19262
19263         * params.def (PARAM_MAX_FIELDS_FOR_FIELD_SENSITIVE): Set default
19264         to zero, thus disable creation of SFTs.
19265
19266 2008-04-15  Eric Botcazou  <ebotcazou@adacore.com>
19267
19268         * tree-predcom.c (suitable_reference_p): Return false if the
19269         reference can throw.
19270
19271 2008-04-15  Jakub Jelinek  <jakub@redhat.com>
19272
19273         PR c/35751
19274         * c-decl.c (finish_decl): If extern or static var has variable
19275         size, set TREE_TYPE (decl) to error_mark_node.
19276
19277 2008-04-15  Rafael Espíndola  <espindola@google.com>
19278
19279         * fold-const.c (tree_call_nonnegative_warnv_p): Remove local
19280         variable arg1.
19281
19282 2008-04-15  Richard Guenther  <rguenther@suse.de>
19283
19284         * tree-ssa-sccvn.h (vn_reference_lookup): Adjust prototype.
19285         * tree-ssa-sccvn.c (vn_reference_lookup): New parameter maywalk.
19286         (visit_reference_op_load): Do walk vuse-vdef chains on
19287         vn_reference_lookup.
19288         (visit_reference_op_store): But do not here.
19289         * tree-vn.c (vn_lookup): Do not walk vuse-vdef chains on
19290         vn_reference_lookup.
19291         (vn_lookup_with_vuses): But do so here.
19292
19293 2008-04-14  Ian Lance Taylor  <iant@google.com>
19294
19295         * fold-const.c (fold_overflow_warning): Remove assertion.
19296
19297 2008-04-15  Ben Elliston  <bje@au.ibm.com>
19298
19299         * config/alpha/alpha.c (alpha_initialize_trampoline): Remove temp,
19300         temp1 local variables.
19301
19302 2008-04-15  Zuxy Meng  <zuxy.meng@gmail.com>
19303
19304         PR target/35661
19305         * config/i386/winnt.c (i386_pe_section_type_flags): Mark
19306         ".text.unlikely" section as executable.
19307
19308 2008-04-14  James E. Wilson  <wilson@tuliptree.org>
19309
19310         * config/ia64/ia64.c (rtx_needs_barrier): Handle
19311         UNSPEC_FR_SQRT_RECIP_APPROX_RES.
19312         * config/ia64/ia64.c (UNSPEC_FR_SQRT_RECIP_APPROX_RES): Define.
19313         (divsi3_internal, divdi3_internal_lat, divdi3_internal_thr,
19314         divsf3_internal_lat, sqrt_approx, sqrtsf2_internal_thr,
19315         divdf3_internal_lat, sqrtdf2_internal_thr, divxf3_internal_lat,
19316         divxf3_internal_thr, sqrtxf2_internal_thr, recip_approx): Use it.
19317
19318 2008-04-14  Ian Lance Taylor  <iant@google.com>
19319
19320         * flags.h (POINTER_TYPE_OVERFLOW_UNDEFINED): Define.
19321         * fold-const.c (fold_comparison): If appropriate, test
19322         POINTER_TYPE_OVERFLOW_UNDEFINED, and issue an overflow warning.
19323         (fold_binary): Test POINTER_TYPE_OVERFLOW_UNDEFINED when
19324         reassociating a pointer type.
19325         * doc/invoke.texi (Optimize Options): Document that
19326         -fstrict-overflow applies to pointer wraparound.
19327
19328 2008-04-13  Jan Hubicka  <jh@suse.cz>
19329
19330         * m32.c (m32c_pushm_popm): Use crtl->retrun_rtx.
19331
19332 2008-04-12  Andrew Pinski  <pinskia@gmail.com>
19333
19334         * config/rs6000/rs6000.c (compute_save_world_info): Set lr_save_p if
19335         we are going to "save the world".
19336
19337 2008-04-13  Hans-Peter Nilsson  <hp@axis.com>
19338
19339         * config/cris/cris.md ("*andhi_lowpart_non_v32", "*andhi_lowpart_v32")
19340         ("*andqi_lowpart_non_v32", "*andqi_lowpart_v32"): Use "+" for the
19341         operand 0 constraint, not "=".
19342
19343 2008-04-11  James E. Wilson  <wilson@tuliptree.org>
19344
19345         * system.h: Change ASSERT_CHECKING to ENABLE_ASSERT_CHECKING.
19346
19347 2008-04-11  H.J. Lu  <hongjiu.lu@intel.com>
19348
19349         * dse.c (record_store): Use HOST_BITS_PER_WIDE_INT instead
19350         of size of positions_needed * CHAR_BIT.
19351
19352 2008-04-11  H.J. Lu  <hongjiu.lu@intel.com>
19353
19354         PR middle-end/35897
19355         * dse.c (store_info): Change positions_needed to unsigned
19356         HOST_WIDE_INT.
19357         (lowpart_bitmask): New.
19358         (record_store): Cast to unsigned HOST_WIDE_INT for
19359         positions_needed.  Assert width <= size of positions_needed *
19360         CHAR_BIT.  Call lowpart_bitmask to initialize positions_needed.
19361         (check_mem_read_rtx): Use unsigned HOST_WIDE_INT on mask.  Call
19362         lowpart_bitmask to set mask.
19363
19364 2008-04-11  Bernd Schmidt  <bernd.schmidt@analog.com>
19365
19366         * config/bfin/constraints.md: New file.
19367         * config/bfin/bfin.md: Include it.
19368         (adddi3): Use satisfies_constraint functions instead of the old macros.
19369         * config/bfin/bfin.h (REG_CLASS_FROM_LETTER, CONSTRAINT_LEN,
19370         CONST_18UBIT_IMM_P, CONST_16BIT_IMM_P, CONST_16UBIT_IMM_P,
19371         CONST_7BIT_IMM_P, CONST_7NBIT_IMM_P, CONST_5UBIT_IMM_P,
19372         CONST_4BIT_IMM_P, CONST_4UBIT_IMM_P, CONST_3BIT_IMM_P,
19373         CONST_3UBIT_IMM_P, CONST_OK_FOR_K, CONST_OK_FOR_P, CONST_OK_FOR_M,
19374         CONST_OK_FOR_CONSTRAINT_P, CONST_DOUBLE_OK_FOR_LETTER,
19375         EXTRA_CONSTRAINT): Delete.
19376         * config/bfin/predicates.md (highbits_operand, reg_or_7bit_operand,
19377         reg_or_neg7bit_operand): Use satisfies_constraint functions instead
19378         of the old macros.
19379         * config/bfin/bfin.c: Include "tm-constrs.h".
19380         (bfin_secondary_reload, split_load_immediate, bfin_rtx_costs):
19381         Use satisfies_constraint functions instead of the old macros.
19382         * doc/md.texi (Blackfin Constraints): Update file name reference.
19383
19384 2008-04-11  Richard Guenther  <rguenther@suse.de>
19385
19386         PR tree-optimization/35869
19387         * tree-vrp.c (execute_vrp): Move switch statement update after
19388         jump threading.  Schedule another cfg cleanup run.
19389
19390 2008-04-11  Volker Reichelt  <v.reichelt@netcologne.de>
19391
19392         PR c/35744
19393         * attribs.c (decl_attributes): Return early on errorneous node.
19394
19395 2008-04-10  Oleg Ryjkov  <olegr@google.com>
19396
19397         * tree.h (struct tree_base): Added a new flag default_def_flag.
19398         (SSA_NAME_IS_DEFAULT_DEF): Changed to use the new flag.
19399
19400 2008-04-11  Kaz Kojima  <kkojima@gcc.gnu.org>
19401
19402         * config.gcc (need_64bit_hwint): Need 64bit hwint for sh-*-*.
19403
19404 2008-04-10  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
19405
19406         PR target/35768
19407         * pa.md: Define mode iterator P.  Define mode attribute dwc.
19408         (dcacheflush): Update pattern to use iterator P and attribute dwc.
19409         (icacheflush): Likewise.
19410         * pa.h (INITIALIZE_TRAMPOLINE): Use dcacheflushsi/icacheflushsi if
19411         !TARGET_64BIT, and dcacheflushdi/icacheflushdi if TARGET_64BIT.
19412
19413 2008-04-11  Ben Elliston  <bje@au.ibm.com>
19414
19415         * config/spu/spu.c (spu_init_builtins): Mark builtins as nothrow.
19416
19417 2008-04-10  Rafael Espíndola  <espindola@google.com>
19418
19419         * tree-vrp.c (extract_range_from_binary_expr): Don't handle
19420         TRUTH_ANDIF_EXPR or TRUTH_ORIF_EXPR.
19421         (extract_range_from_expr): The same.
19422
19423 2008-04-10  Adam Nemet  <anemet@caviumnetworks.com>
19424
19425         * config/mips/mips.md (GPR2): New mode iterator.
19426         (seq): Add comment.
19427         (*seq_<mode>, *seq_<mode>_mips16, *sne_<mode>, *sgt<u>_<mode>,
19428         *sgt<u>_<mode>_mips16, *sge<u>_<mode>, *slt<u>_<mode>,
19429         *slt<u>_<mode>_mips16 *sle<u>_<mode>, *sle<u>_<mode>_mips16):
19430         Rewrite these to take two modes, the mode of comparison and the
19431         mode of the destination.
19432         * config/mips/mips.c (mips_expand_scc): Instead of having
19433         paradoxical subreg as destination, expand "narrowing" scc if mode
19434         of comparison is SI and target is requested in DI mode.
19435         (mips_emit_int_order_test): Update comment.  Make mode of
19436         comparison match CMP0 rather than TARGET.  When creating inverse
19437         target use mode of TARGET.
19438
19439 2008-04-10  Adam Nemet  <anemet@caviumnetworks.com>
19440
19441         * gcov-dump.c (tag_summary): Only print summaries for the first
19442         GCOV_COUNTERS_SUMMABLE counters.
19443
19444 2008-04-10  Uros Bizjak  <ubizjak@gmail.com>
19445
19446         * config/i386/i386.md (absneg): New code iterator.
19447         (absnegprefix): New code attribute.
19448         (<code><mode>2): Macroize expander from abs<mode>2 and neg<mode>2
19449         patterns using absneg code iterator.
19450         (<code>tf2): Macroize expander from abstf2 and negtf2 patterns
19451         using absneg code iterator.
19452         (*<code><mode>2_1): Macroize insn pattern from *abs<mode>2_1 and
19453         *neg<mode>2 patterns using absneg code iterator.
19454         (*<code>extendsfdf2): Macroize insn pattern from *absextendsfdf2 and
19455         *negextendsfdf2 patterns using absneg code iterator.
19456         (*<code>extendsfxf2): Macroize insn pattern from *absextendsfxf2 and
19457         *negextendsfxf2 patterns using absneg code iterator.
19458         (*<code>extendsfdf2): Macroize insn pattern from *absextendsfdf2 and
19459         *negextendsfdf2 patterns using absneg code iterator.
19460         * config/i386/sse.md (<code><mode>2): Macroize expander from
19461         abs<mode>2 and neg<mode>2 patterns using absneg code iterator.
19462
19463 2008-04-10  Andreas Krebbel  <krebbel1@de.ibm.com>
19464
19465         * config/s390/s390.h: Remove the remains of the recent search
19466         & replace action of current_function_outgoing_args_size.
19467
19468 2008-04-10  Ira Rosen  <irar@il.ibm.com>
19469
19470         PR tree-optimization/35821
19471         * tree-vect-transform.c (vect_create_data_ref_ptr): Add check that
19472         NEW_STMT_LIST is not NULL.
19473
19474 2008-04-09  David Edelsohn  <edelsohn@gnu.org>
19475
19476         PR libstdc++/35597
19477         * toplev.c (process_options): Remove -ffunction-sections debugging
19478         warning.
19479
19480 2008-04-09  Peter Bergner  <bergner@vnet.ibm.com>
19481
19482         PR middle-end/PR28690
19483         * explow.c (break_out_memory_refs): Use simplify_gen_binary rather
19484         than gen_rtx_fmt_ee to perform more canonicalizations.
19485
19486 2008-04-08  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
19487
19488         PR driver/35665
19489         * collect2.c (write_c_file): Don't wrap in "#ifdef __cplusplus".
19490
19491 2008-04-09  Richard Guenther  <rguenther@suse.de>
19492
19493         * tree-cfg.c (verify_stmt): Print complete bogus stmt.
19494         (dump_function_to_file): Dump function arguments with types.
19495
19496 2008-04-08  Richard Guenther  <rguenther@suse.de>
19497
19498         * fold-const.c (fold_widened_comparison): Do not allow
19499         sign-changes that change the result.
19500
19501 2008-04-08  Janis Johnson  <janis187@us.ibm.com>
19502
19503         PR target/35839
19504         * config/rs6000/rs6000.c (rs6000_check_sdmode): Handle additional
19505         kinds of indirect references.
19506
19507 2008-04-08  David Edelsohn  <edelsohn@gnu.org>
19508
19509         * config/rs6000/rs6000.c (rs6000_output_function_epilogue): Update
19510         GNU Fortran language string.
19511
19512 2008-04-08  Rafael Espíndola  <espindola@google.com>
19513
19514         * fold-canst.c (tree_call_nonnegative_warnv_p): New.
19515         (tree_invalid_nonnegative_warnv_p): Use tree_call_nonnegative_warnv_p.
19516         * tree.h (tree_call_nonnegative_warnv_p): New.
19517
19518 2008-04-08  Jan Hubicka  <jh@suse.cz>
19519
19520         * function.c (free_after_compilation): Clear out regno_reg_rtx
19521         pointer.
19522
19523 2008-04-08  Peter Bergner  <bergner@vnet.ibm.com>
19524
19525         Revert
19526         2008-04-07  Peter Bergner  <bergner@vnet.ibm.com>
19527
19528         PR middle-end/PR28690
19529         * rtlanal.c: (commutative_operand_precedence): Give SYMBOL_REF's the
19530         same precedence as REG_POINTER and MEM_POINTER operands.
19531
19532 2008-04-08  Richard Guenther  <rguenther@suse.de>
19533
19534         PR middle-end/35834
19535         * tree-ssa-address.c (create_mem_ref): Use POINTER_PLUS_EXPR
19536         for adding index to base.
19537
19538 2008-04-08  Kai Tietz  <kai.tietz@onevision.com>
19539
19540         * config/i386/mingw32.h (ENABLE_EXECUTE_STACK): New.
19541         (MINGW_ENABLE_EXECUTE_STACK): New.
19542         (IN_LIBGCC2): For libgcc include windows.h file for
19543         function declarations.
19544
19545 2008-04-08  Hans-Peter Nilsson  <hp@axis.com>
19546
19547         * config/cris/cris.c (cris_address_cost): For a PLUS, swap tem1
19548         and tem2 if tem1 is not a REG or MULT.
19549
19550 2008-04-08  Jan Hubicka  <jh@suse.cz>
19551
19552         * function.h (incomming_args): Break out of struct function.
19553         (function_subsections): Break out of struct function.
19554         (rtl_data): Add args, subsections fields. Break out outgoing_args_size,
19555         return_rtx and hard_reg_initial_vals from struct function.
19556         Kill inl_max_label_num.
19557         (current_function_pops_args, current_function_args_info,
19558         current_function_args_size, current_function_args_size,
19559         current_function_pretend_args_size,
19560         current_function_outgoing_args_size,
19561         current_function_internal_arg_pointer, current_function_return_rtx):
19562         Kill compatibility accestor macros.
19563         * builtins.c (expand_builtin_apply_args_1): Update.
19564         (expand_builtin_next_arg): Update.
19565         * df-scan.c (df_get_call_refs): Update.
19566         * dbxout.c (dbxout_function_end): Update.
19567         * dwarf2out.c (dwarf2out_switch_text_section): Update.
19568         (output_line_info): Update.
19569         (secname_for_decl): Update.
19570         (dwarf2out_var_location): Update.
19571         * function.c (free_after_compilation): Update.
19572         (assign_parm_find_stack_rtl): Update.
19573         (assign_parms): Update.
19574         (expand_dummy_function_end): Update.
19575         (expand_function_end): Update.
19576         * calls.c (mem_overlaps_already_clobbered_arg_p): Update.
19577         (expand_call): Update.
19578         (emit_library_call_value_1): Update.
19579         (store_one_arg): Update.
19580         * varasm.c (initialize_cold_section_name): Update.
19581         (unlikely_text_section): Update.
19582         (unlikely_text_section_p): Update.
19583         (assemble_start_function): Update.
19584         (assemble_end_function): Update.
19585         (default_section_type_flags): Update.
19586         (switch_to_section): Update.
19587         * integrate.c (set_decl_abstract_flags): Update.
19588         (get_hard_reg_initial_val): Update.
19589         (has_hard_reg_initial_val): Update.
19590         (allocate_initial_values): Update.
19591         * resource.c (init_resource_info): Update.
19592         * config/alpha/alpha.c (NUM_ARGS): Update.
19593         (direct_return): Update.
19594         (alpha_va_start): Update.
19595         (alpha_sa_size): Update.
19596         (alpha_initial_elimination_offset): Update.
19597         (alpha_expand_prologue): Update.
19598         (alpha_start_function): Update.
19599         (alpha_expand_epilogue): Update.
19600         (unicosmk_initial_elimination_offset):
19601         * config/alpha/alpha.md (call expander): Update.
19602         * config/s390/s390.c (s390_register_info): Update.
19603         (s390_register_info): Update.
19604         (s390_frame_info): Update.
19605         (s390_initial_elimination_offset): Update.
19606         (s390_build_builtin_va_list): Update.
19607         (s390_va_start): Update.
19608         * config/spu/spu.c (direct_return): Update.
19609         (spu_expand_prologue): Update.
19610         (spu_initial_elimination_offset): Update.
19611         (spu_build_builtin_va_list): Update.
19612         (spu_va_start): Update.
19613         * config/sparc/sparc.c (sparc_init_modes): Update.
19614         (sparc_compute_frame_size): Update.
19615         (function_value): Update.
19616         * config/m32r/m32r.c (m32r_compute_frame_size): Update.
19617         * config/i386/i386.md (return expander): Update.
19618         * config/i386/i386.c (ix86_va_start): Update.
19619         (ix86_can_use_return_insn_p): Update.
19620         (ix86_compute_frame_layout): Update.
19621         (ix86_expand_epilogue): Update.
19622         * config/sh/sh.c (output_stack_adjust): Update.
19623         (calc_live_regs): Update.
19624         (sh_expand_prologue): Update.
19625         (sh_builtin_saveregs): Update.
19626         (sh_va_start): Update.
19627         (initial_elimination_offset): Update.
19628         (sh_allocate_initial_value): Update.
19629         (sh_function_ok_for_sibcall): Update.
19630         (sh_get_pr_initial_val): Update.
19631         * config/sh/sh.md (return expander): Update.
19632         * config/avr/avr.c (frame_pointer_required_p): UPdate.
19633         * config/crx/crx.c (crx_compute_frame): UPdate.
19634         (crx_initial_elimination_offset): UPdate.
19635         * config/xtensa/xtensa.c (compute_frame_size): Update
19636         (xtensa_builtin_saveregs): Update.
19637         (xtensa_va_start): Update.
19638         (order_regs_for_local_alloc): Update.
19639         * config/stormy16/stormy16.c (xstormy16_compute_stack_layout): Update.
19640         (xstormy16_expand_builtin_va_start): Update.
19641         * config/fr30/fr30.c (fr30_compute_frame_size): Update.
19642         * config/m68hc11/m68hc11.md (return expanders): Update.
19643         * config/m68hc11/m68hc11.c (expand_prologue): Update.
19644         (expand_epilogue): Update.
19645         * config/cris/cris.c (cris_initial_frame_pointer_offset): Update.
19646         (cris_simple_epilogue): Update.
19647         (cris_expand_prologue): Update.
19648         (cris_expand_epilogue): Update.
19649         * config/iq2000/iq2000.c (iq2000_va_start): Update.
19650         (compute_frame_size): Update.
19651         * config/mt/mt.c (mt_compute_frame_size): Update.
19652         * config/mn10300/mn10300.c (expand_prologue): Update.
19653         (expand_epilogue): Update.
19654         (initial_offset): Update.
19655         (mn10300_builtin_saveregs):
19656         * config/mn10300/mn10300.md (return expander): Update.
19657         * config/ia64/ia64.c (ia64_compute_frame_size): Update.
19658         (ia64_initial_elimination_offset): Update.
19659         (ia64_initial_elimination_offset): Update.
19660         (ia64_expand_prologue): Update.
19661         * config/m68k/m68k.md (return expander): Update.
19662         * config/rs6000/rs6000.c (rs6000_va_start): Update.
19663         (rs6000_stack_info): Update.
19664         * config/mcore/mcore.c (layout_mcore_frame): Update.
19665         (mcore_expand_prolog): Update.
19666         * config/arc/arc.c (arc_compute_frame_size): Update.
19667         * config/score/score3.c (score3_compute_frame_size): Update.
19668         * config/score/score7.c (score7_compute_frame_size): Update.
19669         * config/arm/arm.c (use_return_insn): Update.
19670         (thumb_find_work_register): Update.
19671         (arm_compute_save_reg_mask): Update.
19672         (arm_output_function_prologue): Update.
19673         (arm_output_epilogue): Update.
19674         (arm_size_return_regs): Update.
19675         (arm_get_frame_offsets): Update.
19676         (arm_expand_prologue): Update.
19677         (thumb_exit): Update.
19678         (thumb_unexpanded_epilogue): Update.
19679         (thumb1_output_function_prologue): Update.
19680         * config/pa/pa.md (return expander): Update.
19681         * config/pa/pa.c (compute_frame_size): Update.
19682         (hppa_builtin_saveregs): Update.
19683         * config/mips/mips.c (mips_va_start): Update.
19684         (mips16_build_function_stub): Update.
19685         (mips_compute_frame_info): Update.
19686         (mips_restore_gp): Update.
19687         (mips_output_function_prologue): Update.
19688         (mips_expand_prologue): Update.
19689         * config/v850/v850.c (compute_frame_size): Update.
19690         (expand_prologue): * config/mmix/mmix.c (along): update.
19691         (mmix_initial_elimination_offset): update.
19692         (mmix_reorg): update.
19693         (mmix_use_simple_return): update.
19694         (mmix_expand_prologue): update.
19695         (mmix_expand_epilogue): Update.
19696         * config/bfin/bfin.c (bfin_initial_elimination_offset): Update.
19697         (emit_link_insn): Update.
19698
19699 2008-04-08  Anatoly Sokolov <aesok@post.ru>
19700
19701         * config/avr/avr.h (TARGET_CPU_CPP_BUILTINS): Define
19702         __AVR_HAVE_EIJMP_EICALL__ macro if device have EIJMP and EICALL
19703         instructions.
19704         * config/avr/avr.c (avr_mcu_types): Set AVR31 architecture for
19705         atmega103 device.
19706
19707 2008-04-07  Jan Hubicka  <jh@suse.cz>
19708
19709         * function.h (rtl): Rename to x_rtl.
19710         (crtl): New define.
19711         (return_label, naked_return_label, stack_slot_list, parm_birth_insn,
19712         frame_offset, stack_check_probe_note, arg_pointer_save_area,
19713         used_temp_slots avail_temp_slots, temp_slot_level,
19714         nonlocal_goto_handler_labels): Update accesstors.
19715         (rtl): New global variable.
19716         (struct function): Move some fileds to rtl_data.
19717         (get_arg_pointer_save_area): Update prototype.
19718         * builtins.c (expand_builtin_setjmp_receiver): Update call of
19719         get_arg_pointer_save_area.
19720         * expr.c (init_expr): Update
19721         * function.c (get_frame_size): Update
19722         (assign_stack_local): Update
19723         (expand_function_end): Update.
19724         (get_art_pointer_save_area): Update
19725         * function.h
19726         * emit-rtl.c (rtl): Declare.
19727         (regno_reg_rtx): Declare.
19728         (first_insn, last_insn, cur_insn_uid, last_location, first_label_num):
19729         Update.
19730         (gen_reg_rtx): Update.
19731         * varasm.c (n_deferred_constatns): Update accestor.
19732         (init_varasm_status): Do not allocate varasm_status.
19733         (force_const_mem, get_pool_size, output_constant_pool): Update.
19734         * stmt.c (force_label_rtx): Do not use x_ prefixes.
19735         (expand_nl_goto_receiver): Update get_arg_pointer_save_area.
19736         * m32c/m32.c (m32c_leaf_function_p, m32c_function_needs_enter): Update.
19737         * sparc/sparc.h (INIT_EXPANDERS): Update.
19738         * ia64/ia64.h (INIT_EXPANDERS): Update.
19739
19740 2008-04-07  James E. Wilson  <wilson@tuliptree.org>
19741
19742         * reload.c (push_secondary_reload): Add missing break to for loop.
19743
19744 2008-04-07  Peter Bergner  <bergner@vnet.ibm.com>
19745
19746         PR middle-end/PR28690
19747         * rtlanal.c: Update copyright years.
19748         (commutative_operand_precedence): Give SYMBOL_REF's the same precedence
19749         as REG_POINTER and MEM_POINTER operands.
19750         * emit-rtl.c (gen_reg_rtx_and_attrs): New function.
19751         (set_reg_attrs_from_value): Call mark_reg_pointer as appropriate.
19752         * rtl.h (gen_reg_rtx_and_attrs): Add prototype for new function.
19753         * gcse.c: Update copyright years.
19754         (pre_delete): Call gen_reg_rtx_and_attrs.
19755         (hoist_code): Likewise.
19756         (build_store_vectors): Likewise.
19757         (delete_store): Likewise.
19758         * loop-invariant.c (move_invariant_reg): Likewise.
19759         Update copyright years.
19760
19761 2008-04-07  Uros Bizjak  <ubizjak@gmail.com>
19762
19763         * config/i386/i386.md ("*sse_prologue_save_insn"): Use braced output
19764         control string instead of quoted.
19765
19766 2008-04-07  Kenneth Zadeck  <zadeck@naturalbridge.com>
19767
19768         * doc/rtl.texi: Rewrite of subreg section.
19769
19770 2008-04-07  Kai Tietz  <kai.tietz@onevision.com>
19771
19772         PR/35842
19773         * config/i386/i386.c (legitimize_pic_address): Add treating
19774         of dllimport SYM_REF's.
19775         (legitimize_dllimport_symbol): Add prototype.
19776
19777 2008-04-07  Eric Botcazou  <ebotcazou@adacore.com>
19778
19779         * fold-const.c (fold) <ARRAY_REF>: New case.  Try to fold constant
19780         reference in constructor with non self-referential type.
19781
19782 2008-04-07  Eric Botcazou  <ebotcazou@adacore.com>
19783
19784         Removal of Return with Depressed Stack Pointer support
19785         * tree.h (TYPE_RETURNS_STACK_DEPRESSED): Delete.
19786         (ECF_SP_DEPRESSED): Likewise.
19787         (ECF_LIBCALL_BLOCK, ECF_NOVOPS): Adjust.
19788         * calls.c (emit_call_1): Do not test ECF_SP_DEPRESSED.
19789         (flags_from_decl_or_type): Do not test TYPE_RETURNS_STACK_DEPRESSED.
19790         (expand_call): Do not test ECF_SP_DEPRESSED.
19791         * dse.c (dse_step0): Do not test TYPE_RETURNS_STACK_DEPRESSED.
19792         * function.c (keep_stack_depressed): Delete.
19793         (handle_epilogue_set): Likewise.
19794         (update_epilogue_consts): Likewise.
19795         (emit_equiv_load): Likewise.
19796         (thread_prologue_and_epilogue_insns): Remove support for Return with
19797         Depressed Stack Pointer.
19798         * print-tree.c (print_node): Do not test TYPE_RETURNS_STACK_DEPRESSED.
19799
19800 2008-04-06  Richard Guenther  <rguenther@suse.de>
19801
19802         PR tree-optimization/35400
19803         * tree-vrp.c (vrp_evaluate_conditional): Only query value-range
19804         information from SSA_NAMEs.
19805
19806 2008-04-06  Anatoly Sokolov <aesok@post.ru>
19807
19808         * config/avr/avr.h (avr_mega_p): Remove declaration.
19809         (AVR_MEGA): Remove macro.
19810         * config/avr/avr.c (avr_mega_p): Remove variable.
19811         (avr_override_options): Remove inicializion of avr_mega_p.
19812         Use AVR_HAVE_JMP_CALL instead of AVR_MEGA.
19813         (print_operand): Use AVR_HAVE_JMP_CALL instead of AVR_MEGA.
19814         (avr_jump_mode): (Ditto.).
19815         (avr_output_progmem_section_asm_op): (Ditto.).
19816         (avr_asm_init_sections): (Ditto.).
19817         (avr_asm_init_sections): (Ditto.).
19818         (avr_rtx_costs): (Ditto.).
19819         * config/avr/avr.md: (Ditto.).
19820         * config/avr/avr.h: Use '__AVR_HAVE_JMP_CALL__' instead of
19821         '__AVR_MEGA__'.
19822
19823 2008-04-06  Richard Guenther  <rguenther@suse.de>
19824
19825         PR tree-optimization/35842
19826         * tree-ssa-address.c (fixed_address_object_p): Adjust to match
19827         is_gimple_invariant_address.
19828
19829 2008-04-06  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
19830
19831         * gcc.c (default_compilers): Sync Fortran extensions list with
19832         that in fortran/lang-specs.h.
19833         * doc/invoke.texi: Likewise.
19834         * dbxout.c (get_lang_number): Use "GNU Fortran" in "GNU F95".
19835         * dwarf2out.c (gen_compile_unit_die): Likewise.
19836
19837 2008-04-06  Tom G. Christensen  <tgc@jupiterrise.com>
19838
19839         * gthr-posix95.h (__gthread_cond_wait_recursive): Add missing &.
19840
19841 2008-04-05  Uros Bizjak  <ubizjak@gmail.com>
19842
19843         PR target/12329
19844         * config/i386/i386.c (ix86_function_regparm): Error if regparm(3)
19845         attribute is used for nested functions.
19846
19847 2008-04-05  Jan Hubicka  <jh@suse.cz>
19848
19849         * emit-rtl.c (init_emit): xcalloc regno_pointer_align.
19850
19851         * tree-dump.c (dump_enable_all): Remove prototype; do not accept
19852         letter argument.
19853         (dump_files): Update.
19854         (enable_rtl_dump_file): Do not accept letter argument.
19855         * tree-pass.h (dump_file_info): Remove letter argument.
19856         * toplev.c (decode_d_option): Update -da handling.
19857         * toplev.h (enable_rtl_dump_file): Update prototype.
19858         * passes.c (register_one_dump_file): Do not accept IPA argument; work
19859         it out based on pass type.
19860         (register_dump_files_1): Likewise.
19861         (init_optimization_passes): Update register_one_dump_file calls.
19862         (execute_one_pass): Sanity check that IPA passes are called at IPA
19863         level and RTL passes at RTL level.
19864         (execute_pass_list): IPA pass can not be after or subpass of
19865         GIMPLE/RTL pass.
19866         (execute_ipa_pass_list): Handle IPA subpasses of IPA subpasses and
19867         disallov RTL subpasses of IPA subpasses.
19868
19869 2008-04-05  Ben Elliston  <bje@au.ibm.com>
19870
19871         * tree-cfg.c (need_fake_edge_p): Return false for calls to
19872         builtins that return exactly once and do not throw. Cache call to
19873         call_expr_flags.
19874
19875 2008-04-04 Andy Hutchinson <hutchinsonandy@aim.com>
19876
19877         PR rtl-optimization/34916
19878         PR middle-end/35519
19879         * combine.c (create_log_links): Do not create duplicate LOG_LINKS
19880         between instruction pairs.
19881
19882 2008-04-04  Naveen.H.S  <naveen.hs@kpitcummins.com>
19883
19884         * doc/invoke.texi: Document -mbitops for SH.
19885         * config/sh/constraints.md (K03, K12, Sbv, Sbw): New constraints.
19886         * config/sh/predicates.md (bitwise_memory_operand): New predicate.
19887         * config/sh/sh.c (print_operand): Add %t operand code.
19888         * config/sh/sh.h (GO_IF_LEGITIMATE_INDEX): Add condition for SH2A.
19889         * config/sh/sh.md (*iorsi3_compact): Fix condition for SH2A.
19890         (extendqisi2_compact): Add the alternative for SH2A 4-byte mov.b.
19891         (extendqihi2): Likewise.
19892         (movqi_i): Likewise.
19893         (insv): Use bset, bclr and bst instructions for SH2A if possible.
19894         (extv): Use bld instruction for SH2A if possible.
19895         (extzv): Likewise.
19896         (bclr_m2a, bclrmem_m2a, bset_m2a, bsetmem_m2a, bst_m2a, bld_m2a,
19897         bldsign_m2a, bld_reg, *bld_regqi, band_m2a, bandreg_m2a,
19898         bor_m2a, borreg_m2a, bxor_m2a, bxorreg_m2a): New insns.
19899         (bset.b, bclr.b): Define peepholes.
19900         * config/sh/sh.opt (mbitops): New option.
19901
19902 2008-04-04  Janis Johnson  <janis187@us.ibm.com>
19903
19904         PR target/35620
19905         * config/rs6000/rs6000.c (rs6000_check_sdmode): Handle indirect ref
19906         and view convert expression.
19907
19908 2008-04-04  Jakub Jelinek  <jakub@redhat.com>
19909
19910         PR target/35364
19911         * tree-cfg.c (remove_useless_stmts_1): Handle OMP_* containers.
19912
19913 2008-04-04  H.J. Lu  <hongjiu.lu@intel.com>
19914
19915         * config.gcc (extra_headers): Add wmmintrin.h for x86 and x86-64.
19916
19917         * config/i386/cpuid.h (bit_AES): New.
19918         (bit_PCLMUL): Likewise.
19919
19920         * config/i386/i386.c (pta_flags): Add PTA_AES and PTA_PCLMUL.
19921         (override_options): Handle PTA_AES and PTA_PCLMUL.  Enable
19922         SSE2 if AES or PCLMUL is enabled.
19923         (ix86_builtins): Add IX86_BUILTIN_AESENC128,
19924         IX86_BUILTIN_AESENCLAST128, IX86_BUILTIN_AESDEC128,
19925         IX86_BUILTIN_AESDECLAST128, IX86_BUILTIN_AESIMC128,
19926         IX86_BUILTIN_AESKEYGENASSIST128 and IX86_BUILTIN_PCLMULQDQ128.
19927         (bdesc_sse_3arg): Add IX86_BUILTIN_PCLMULQDQ128.
19928         (bdesc_2arg): Add IX86_BUILTIN_AESENC128,
19929         IX86_BUILTIN_AESENCLAST128, IX86_BUILTIN_AESDEC128,
19930         IX86_BUILTIN_AESDECLAST128 and IX86_BUILTIN_AESKEYGENASSIST128.
19931         (bdesc_1arg): Add IX86_BUILTIN_AESIMC128.
19932         (ix86_init_mmx_sse_builtins): Define __builtin_ia32_aesenc128,
19933         __builtin_ia32_aesenclast128, __builtin_ia32_aesdec128,
19934         __builtin_ia32_aesdeclast128,__builtin_ia32_aesimc128,
19935         __builtin_ia32_aeskeygenassist128 and
19936         __builtin_ia32_pclmulqdq128.
19937         * config/i386/i386.c (ix86_expand_binop_imm_builtin): New.
19938         (ix86_expand_builtin): Use it for IX86_BUILTIN_PSLLDQI128 and
19939         IX86_BUILTIN_PSRLDQI128.  Handle IX86_BUILTIN_AESKEYGENASSIST128.
19940
19941         * config/i386/i386.h (TARGET_AES): New.
19942         (TARGET_PCLMUL): Likewise.
19943         (TARGET_CPU_CPP_BUILTINS): Handle TARGET_AES and TARGET_PCLMUL.
19944
19945         * config/i386/i386.md (UNSPEC_AESENC): New.
19946         (UNSPEC_AESENCLAST): Likewise.
19947         (UNSPEC_AESDEC): Likewise.
19948         (UNSPEC_AESDECLAST): Likewise.
19949         (UNSPEC_AESIMC): Likewise.
19950         (UNSPEC_AESKEYGENASSIST): Likewise.
19951         (UNSPEC_PCLMUL): Likewise.
19952
19953         * config/i386/i386.opt (maes): New.
19954         (mpclmul): Likewise.
19955
19956         * config/i386/sse.md (aesenc): New pattern.
19957         (aesenclast): Likewise.
19958         (aesdec): Likewise.
19959         (aesdeclast): Likewise.
19960         (aesimc): Likewise.
19961         (aeskeygenassist): Likewise.
19962         (pclmulqdq): Likewise.
19963
19964         * config/i386/wmmintrin.h: New.
19965
19966         * doc/extend.texi: Document AES and PCLMUL built-in function.
19967
19968         * doc/invoke.texi: Document -maes and -mpclmul.
19969
19970 2008-04-04  Paolo Bonzini  <bonzini@gnu.org>
19971
19972         * function.c (free_after_parsing): Replace with
19973         cxx_push_function_context from C++ front-end.
19974         (allocate_struct_function): Don't call langhook.
19975         * langhooks.h (struct lang_hooks_for_functions): Delete.
19976         (struct lang_hooks): Add back missing_noreturn_ok_p here, delete
19977         member "function".
19978         * langhooks-def.h (LANG_HOOKS_MISSING_NORETURN_OK_P): Add.
19979         (LANG_HOOKS_FUNCTION_INIT, LANG_HOOKS_FUNCTION_FINAL,
19980         LANG_HOOKS_FUNCTION_MISSING_NORETURN_OK_P,
19981         LANG_HOOKS_FUNCTION_INITIALIZER): Delete.
19982         (LANG_HOOKS_INITIALIZER): Add LANG_HOOKS_MISSING_NORETURN_OK_P,
19983         remove LANG_HOOKS_FUNCTION_INITIALIZER.
19984         * tree-cfg.c: Adjust call to missing_noreturn_ok_p langhook.
19985
19986         * c-objc-common.h (LANG_HOOKS_FUNCTION_MISSING_NORETURN_OK_P):
19987         Rename to LANG_HOOKS_MISSING_NORETURN_OK_P.
19988
19989 2008-04-04  Jakub Jelinek  <jakub@redhat.com>
19990
19991         PR c/35440
19992         * c-pretty-print.c (pp_c_initializer_list): Handle CONSTRUCTOR
19993         for all types.
19994
19995 2008-04-04  Richard Guenther  <rguenther@suse.de>
19996
19997         PR middle-end/35823
19998         * fold-const.c (optimize_minmax_comparison): Use the correct
19999         type for the constant in the simplified comparison.
20000
20001 2008-04-04  Zuxy Meng <zuxy.meng@gmail.com>
20002
20003         * config/i386/driver-i386.c (describe_cache): Add l2_sizekb argument.
20004         Pass L2 size as "--param l2-cache-size" to the compiler.
20005         (decode_l2_cache): New function to decode L2 cache parameters using
20006         0x8000006 extended cpuid function.
20007         (detect_caches_amd): Determine parameters of L2 cache using
20008         decode_l2_caches function.
20009         (decode_caches_intel): Decode L2 cache parameters.
20010         (detect_caches_intel): Determine L2 cache parameters using
20011         decode_caches_intel and decode_l2_caches functions.
20012
20013 2008-04-03  Bob Wilson  <bob.wilson@acm.org>
20014
20015         * config/xtensa/xtensa.c (xtensa_secondary_reload_class): Use a
20016         secondary input reload for subword loads from the constant pool.
20017
20018 2008-04-03  Janis Johnson  <janis187@us.ibm.com>
20019
20020         PR target/35713
20021         * config/rs6000/rs6000.c (rs6000_gimplify_va_arg): Use integer
20022           constants of the appropriate size for runtime calculations.
20023
20024         PR c/35712
20025         * dfp.c (decimal_from_decnumber): Retain trailing zeroes for
20026           decimal-float literal constant zero.
20027
20028 2008-04-03  Jakub Jelinek  <jakub@redhat.com>
20029
20030         PR c/35738
20031         * c-parser.c (c_parser_omp_atomic): Call
20032         default_function_array_conversion on the RHS.
20033
20034         PR middle-end/35818
20035         * omp-low.c (scan_sharing_clauses) <case OMP_CLAUSE_SHARED>: Don't
20036         call is_variable_sized if decl has incomplete type.
20037
20038 2008-04-03  H.J. Lu  <hongjiu.lu@intel.com>
20039
20040         * config/i386/i386-protos.h (ix86_aligned_p): Removed.
20041
20042 2008-04-03  Adam Nemet  <anemet@caviumnetworks.com>
20043
20044         * config/mips/mips.md (any_gt, any_ge, any_lt, any_le): New code
20045         iterators.
20046         (u): Add attribute values for gt, gtu, ge, geu, lt, ltu, le and leu.
20047         (sgt<u>): Merge sgt and sgtu into new expander.
20048         (sgt, sgtu): Remove expanders.
20049         (*sgt<u>_<mode>): Merge *sgt_<mode> and *sgtu_<mode> into new pattern.
20050         (*sgt_<mode>, *sgtu_<mode>): Remove patterns.
20051         (*sgt<u>_<mode>_mips16): Merge *sgt_<mode>_mips16 and
20052         *sgtu_<mode>_mips16 into new pattern.
20053         (*sgt_<mode>_mips16, *sgtu_<mode>_mips16): Remove patterns.
20054         (sge<u>): Merge sge and sgeu into new expander.
20055         (sge, sgeu): Remove expanders.
20056         (*sge<u>_<mode>): Merge *sge_<mode> and second *sge_<mode> into
20057         new pattern.
20058         (*sge_<mode>, second *sge_<mode>): Remove patterns.
20059         (slt<u>): Merge slt and sltu into new expander.
20060         (slt, sltu): Remove expanders.
20061         (*slt<u>_<mode>): Merge *slt_<mode> and *sltu_<mode> into new pattern.
20062         (*slt_<mode>, *sltu_<mode>): Remove patterns.
20063         (*slt<u>_<mode>_mips16): Merge *slt_<mode>_mips16 and
20064         *sltu_<mode>_mips16 into new pattern.
20065         (*slt_<mode>_mips16, *sltu_<mode>_mips16): Remove patterns.
20066         (sle<u>): Merge sle and sleu into new expander.
20067         (sle, sleu): Remove expanders.
20068         (*sle<u>_<mode>): Merge *sle_<mode> and *sleu_<mode> into new pattern.
20069         (*sle_<mode>, *sleu_<mode>): Remove patterns.
20070         (*sle<u>_<mode>_mips16): Merge *sle_<mode>_mips16 and
20071         *sleu_<mode>_mips16 into new pattern.
20072         (*sle_<mode>_mips16, *sleu_<mode>_mips16): Remove patterns.
20073
20074 2008-04-03  Jan Hubicka  <jh@suse.cz>
20075
20076         PR tree-optimization/35795
20077         * alpha/alpha.c (alpha_output_mi_thunk_osf): Free after compilation.
20078         * sparc/sparc.c (sparc_output_mi_thunk): Likewise.
20079         * ia64/ia64.c (ia64_output_mi_thunk): Likewise.
20080         * m68k/m68k.c (m68k_output_mi_thunk): Likewise.
20081         * score/score3.c (score3_output_mi_thunk): Likewise.
20082         * score/score7.c (score7_output_mi_thunk): Likewise.
20083         * mips/mips.c (mips_output_mi_thunk): Likewise.
20084
20085 2008-04-03  Richard Guenther  <rguenther@suse.de>
20086
20087         * tree-vrp.c (extract_range_from_unary_expr): Handle all
20088         conversions.  Simplify code.
20089
20090 2008-04-03  Kaz Kojima  <kkojima@gcc.gnu.org>
20091
20092         * config/sh/sh.c (sh_output_mi_thunk): Free cfun.
20093
20094 2008-04-03  Tom Tromey  <tromey@redhat.com>
20095             Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
20096
20097         * config/m68k/t-uclinux (generated_files): Add sysroot-suffix.h.
20098         * config/bfin/t-bfin-linux (generated_files): Add
20099         linux-sysroot-suffix.h.
20100         * doc/install.texi (Prerequisites): Require make 3.80.
20101         * doc/sourcebuild.texi (Front End Directory): Document new
20102         variable.
20103         * Makefile.in (generated_files): New variable.
20104         (ALL_HOST_OBJS): New variable.
20105         ($(ALL_HOST_OBJS)): New target.
20106
20107 2008-04-03  Paolo Bonzini  <bonzini@gnu.org>
20108
20109         * tree-inline.c (copy_generic_body, copy_decl_no_change): Export.
20110         (remap_block): Call id->transform_lang_insert_block instead
20111         of langhook.
20112         (optimize_inline_calls, unsave_expr_now, tree_function_versioning):
20113         Set id.transform_lang_insert_block to NULL.
20114         (clone_body): Move to cp/optimize.c
20115         * tree-inline.h (struct copy_body_data): Change
20116         transform_lang_insert_block to function pointer.
20117         (copy_generic_body, copy_decl_no_change): Export.
20118         * langhooks.h (struct lang_hooks_for_decls): Kill insert_block.
20119         * langhooks-def.h (LANG_HOOKS_INSERT_BLOCK): Kill.
20120         (LANG_HOOKS_DECLS): Remove LANG_HOOKS_INSERT_BLOCK.
20121
20122         * c-tree.h (insert_block): Kill.
20123         * c-decl.c (insert_block): Kill.
20124
20125 2008-04-03  Paolo Bonzini  <bonzini@gnu.org>
20126
20127         * c-objc-common.h (LANG_HOOKS_FUNCTION_ENTER_NESTED,
20128         LANG_HOOKS_FUNCTION_LEAVE_NESTED): Delete.
20129         * c-tree.h (c_push_function_context, c_pop_function_context): Remove
20130         argument.
20131         * c-decl.c (c_push_function_context, c_pop_function_context): Remove
20132         argument, call {push,pop}_function_context from here.
20133         * c-parser.c: Use c_{push,pop}_function_context.
20134
20135         * function.c (push_function_context_to): Move meat ...
20136         (push_function_context): ... here.  Simplify.
20137         * function.c (pop_function_context_from): Move meat ...
20138         (pop_function_context): ... here.  Simplify.
20139         * langhooks.h (struct lang_hooks_for_functions): Remove enter_nested,
20140         leave_nested).
20141         * langhooks-def.h (LANG_HOOKS_FUNCTION_ENTER_NESTED,
20142         LANG_HOOKS_FUNCTION_LEAVE_NESTED): Delete.
20143         (LANG_HOOKS_FUNCTION_INITIALIZER): Delete them from here.
20144         * tree.h (push_function_context_to, pop_function_context_from): Remove.
20145
20146 2008-04-03  Ben Elliston  <bje@au.ibm.com>
20147
20148         * expmed.c (extract_force_align_mem_bit_field): Remove.
20149
20150 2008-04-03  Richard Guenther  <rguenther@suse.de>
20151
20152         PR middle-end/35800
20153         * expr.h (try_casesi): Adjust prototype.
20154         * expr.c (try_casesi): Take fallback label as extra parameter.
20155         Use that for gen_casesi if default_label is NULL.
20156         * stmt.c (expand_case): Pass fallback label to try_casesi,
20157         make sure to fill gaps with a fallback label if default_label
20158         is not present.
20159
20160 2008-04-03  Dominique d'Humières <dominiq@lps.ens.fr>
20161
20162         PR target/35801
20163         * config/rs6000/rs6000.c (rs6000_output_mi_thunk): Free cfun.
20164
20165 2008-04-03  Ben Elliston  <bje@au.ibm.com>
20166
20167         * expmed.c (extract_split_bit_field): Remove if (0) code.
20168         * tree-ssa-structalias.c (do_sd_constraint): Likewise.
20169         (do_ds_constraint): Likewise.
20170
20171 2008-04-02  Joseph Myers  <joseph@codesourcery.com>
20172
20173         * doc/cppopts.texi (-dU): Document.
20174         * c-common.h (flag_dump_macros): Update comment.
20175         * c-opts.c (handle_OPT_d): Handle -dU.
20176         * c-ppoutput.c (macro_queue, define_queue, undef_queue,
20177         dump_queued_macros, cb_used_define, cb_used_undef): New.
20178         (init_pp_output): Handle -dU.
20179         (cb_line_change): Call dump_queued_macros.
20180         * toplev.c (decode_d_option): Accept -dU as preprocessor option.
20181
20182 2008-04-02  Anatoly Sokolov <aesok@post.ru>
20183
20184         * config/avr/predicates.md (io_address_operand): New predicate.
20185         * config/avr/avr-protos.h (avr_io_address_p): Remove declaration.
20186         * config/avr/avr.c (avr_io_address_p): Remove function.
20187         (out_movqi_r_mr): Use 'io_address_operand' predicate instead of
20188         'avr_io_address_p' function.
20189         (out_movhi_r_mr): (Ditto.).
20190         (out_movqi_mr_r): (Ditto.).
20191         (out_movhi_mr_r): (Ditto.).
20192         (avr_address_cost): (Ditto.).
20193
20194 2008-04-02  Uros Bizjak  <ubizjak@gmail.com>
20195
20196         * config/i386/i386.md (*float<SSEMODEI24:mode><X87MODEF:mode>2_1):
20197         Emit gen_floatdi<X87MODEF:mode>2_i387_with_xmm for DImode values
20198         in 32bit mode when XMM registers are available to avoid store
20199         forwarding stalls.
20200         (floatdi<X87MODEF:mode>2_i387_with_xmm): New insn pattern and
20201         corresponding post-reload splitters.
20202
20203 2008-04-02  H.J. Lu  <hongjiu.lu@intel.com>
20204
20205         * config/i386/i386.c (bdesc_sse_3arg): Add __builtin_ia32_shufps
20206         and __builtin_ia32_shufpd.  Provide __builtin_ia32_roundsd and
20207         __builtin_ia32_roundss.
20208         (ix86_init_mmx_sse_builtins): Remove __builtin_ia32_shufps,
20209         __builtin_ia32_shufpd, __builtin_ia32_roundsd and
20210         __builtin_ia32_roundss.
20211         (ix86_expand_builtin): Don't handle IX86_BUILTIN_SHUFPS and
20212         IX86_BUILTIN_SHUFPD here.
20213
20214 2008-04-02  H.J. Lu  <hongjiu.lu@intel.com>
20215
20216         * config/i386/i386.md (plogic): New.
20217         (plogicprefix): Likewise.
20218
20219         * config/i386/mmx.md (mmx_<code><mode>3): New.
20220         (mmx_and<mode>3): Removed.
20221         (mmx_ior<mode>3): Likewise.
20222         (mmx_xor<mode>3): Likewise.
20223
20224         * config/i386/sse.md (<code><mode>3): New.
20225         (*<code><mode>3): Likewise.
20226         (*<code><mode>3): Likewise.
20227         (<code><mode>3): Likewise.
20228         (*sse_<code><mode>3): Likewise.
20229         (*sse2_<code><mode>3): Likewise.
20230         (<code>tf3): Likewise.
20231         (*<code>tf3): Likewise.
20232         (and<mode>3): Likewise.
20233         (*and<mode>3): Likewise.
20234         (ior<mode>3): Removed.
20235         (*ior<mode>3): Likewise.
20236         (xor<mode>3): Likewise.
20237         (*xor<mode>3): Likewise.
20238         (*and<mode>3): Likewise.
20239         (*ior<mode>3): Likewise.
20240         (*xor<mode>3): Likewise.
20241         (and<mode>3): Likewise.
20242         (*sse_and<mode>3): Likewise.
20243         (*sse2_and<mode>3): Likewise.
20244         (andtf3): Likewise.
20245         (*andtf3): Likewise.
20246         (ior<mode>3): Likewise.
20247         (*sse_ior<mode>3): Likewise.
20248         (*sse2_ior<mode>3): Likewise.
20249         (iortf3): Likewise.
20250         (*iortf3): Likewise.
20251         (xor<mode>3): Likewise.
20252         (*sse_xor<mode>3): Likewise.
20253         (*sse2_xor<mode>3): Likewise.
20254         (xortf3): Likewise.
20255         (*xortf3): Likewise.
20256
20257 2008-04-02  Richard Guenther  <rguenther@suse.de>
20258
20259         PR tree-optimization/14495
20260         PR tree-optimization/34793
20261         * tree-vrp.c (struct switch_update): New structure.
20262         (to_remove_edges, to_update_switch_stmts): New VECs.
20263         (simplify_switch_using_ranges): New function.  Remove not taken
20264         case labels and edges.
20265         (simplify_stmt_using_ranges): Call it.
20266         (identify_jump_threads): Mark edges we have queued for removal
20267         so we don't thread them.
20268         (execute_vrp): Remove edges queued for removal, update SWITCH_STMT
20269         case label vector.
20270         * tree-cfg.c (group_case_labels): Deal with missing default label.
20271         (tree_verify_flow_info): Allow missing default label.
20272         * stmt.c (emit_case_bit_tests): Deal with NULL default_label.
20273         (emit_case_nodes): Likewise.
20274         (expand_case): Do not rely on the default label to be present.
20275         * expr.c (try_casesi): Deal with NULL default_label.
20276         (do_tablejump): Likewise.
20277
20278 2008-04-02  Richard Guenther  <rguenther@suse.de>
20279
20280         PR tree-optimization/14495
20281         * tree-vrp.c (vrp_visit_cond_stmt): Do not handle
20282         SWITCH_EXPR here ...
20283         (vrp_visit_switch_stmt): ... but here (new function).
20284         (find_case_label_index): New helper function.
20285         (vrp_visit_stmt): Dispatch to vrp_visit_switch_stmt.
20286
20287 2008-04-02  Paolo Bonzini  <bonzini@gnu.org>
20288
20289         * fwprop.c: Fix ISO-C99ism.
20290
20291 2008-04-02  Paolo Bonzini  <bonzini@gnu.org>
20292
20293         PR bootstrap/35752
20294         * Makefile.in (objdir): Set it here.
20295         * configure.ac: Not here.  Find dynamic linker characteristics.
20296         * exec-tool.in: Use them.
20297         * aclocal.m4: Regenerate.
20298         * configure: Regenerate.
20299
20300 2008-04-02  Paolo Bonzini  <bonzini@gnu.org>
20301
20302         * expr.c (expand_var): Delete it.
20303         * expr.h (expand_var): Delete prototype.
20304         * function.c (expand_function_start): Use expand_decl instead.
20305         * cfgexpand.c (expand_one_static_var, expand_one_var): Don't call
20306         langhook.
20307
20308 2008-04-02  Andy Hutchinson <hutchinsonamdy@aim.com>
20309
20310         PR rtl-optimization/35542
20311         * fwprop.c (forward_propagate_and_simplify): Replace
20312         loc_reg_mentioned_in_p with reg_mentioned_p.
20313
20314 2008-04-02  Paolo Bonzini  <bonzini@gnu.org>
20315
20316         PR rtl-optimization/35281
20317         * fwprop.c (PR_CAN_APPEAR, PR_HANDLE_MEM): New.
20318         (propagate_rtx_1): Handle PR_HANDLE_MEM.
20319         (propagate_rtx): Pass PR_HANDLE_MEM if appropriate.
20320         (varying_mem_p): Move above propagate_rtx.
20321         (all_uses_available_at): Do not check MEMs.
20322
20323 2008-04-02  Rafael Espíndola  <espindola@google.com>
20324
20325         * tree-vrp.c (extract_code_and_val_from_cond): Remove.
20326         (register_edge_assert_for_2): Split the cond argument.
20327         (register_edge_assert_for_1): Adjust for the change in
20328         register_edge_assert_for_2.
20329         (register_edge_assert_for): Split the cond argument.
20330         (find_switch_asserts): Adjust for the change in
20331         register_edge_assert_for.
20332
20333 2008-04-02  Kai Tietz  <kai.tietz@onevision.com>
20334
20335         * config.gcc: Add for x86_64-*-mingw* the t-crtfm to tbuild.
20336         * config/i386/cygming.h (ASM_OUTPUT_DWARF_OFFSET): Add 8 byte
20337         offsets for 64-bit mingw.
20338         * config/i386/i386.c (ix86_pass_by_reference): Correct calling
20339         abi for x86_64-pc-mingw.
20340
20341 2008-04-02  Richard Guenther  <rguenther@suse.de>
20342
20343         * tree-vrp.c (extract_range_from_assert): Make sure to not
20344         produce range min/max with TREE_OVERFOW set.
20345         If merging a anti-range and a range keep the anti-range if
20346         the range covers all values of the type.
20347         (register_edge_assert_for_2): Only allow sign-changing
20348         conversions in detecting canonical range checks.  Also
20349         register an assert for the unsigned name if useful.
20350
20351         PR tree-optimization/35787
20352         * tree-vrp.c (vrp_val_max): New function.
20353         (vrp_val_min): Likewise.
20354         (vrp_val_is_max): Move earlier, use vrp_val_{min,max}.
20355         (vrp_val_is_min): Likewise.
20356         (supports_overflow_infinity): Use vrp_val_{min,max}.
20357         (negative_overflow_infinity): Likewise.
20358         (positive_overflow_infinity): Likewise.
20359         (is_negative_overflow_infinity): Use vrp_val_is_{min,max}.
20360         (is_positive_overflow_infinity): Likewise.
20361         (is_overflow_infinity): Likewise.
20362         (avoid_overflow_infinity): Use vrp_val_{min,max} and
20363         vrp_val_is_{min,max}.
20364         (set_and_canonicalize_value_range): Canonicalize anti-ranges
20365         to ranges if possible.  Avoid empty ranges.
20366
20367 2008-04-01  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
20368
20369         PR middle-end/35705
20370         * fold-const.c (get_pointer_modulus_and_residue): Return modulus 1 if
20371         the expression is a function address.
20372
20373 2008-04-01  George Helffrich  <george@gcc.gnu.org>
20374
20375         PR fortran/35154, fortran/23057
20376         * dbxout.c: Emit .stabs debug info for Fortran COMMON block
20377         variables as base symbol name + offset using N_BCOMM/N_ECOMM.
20378         (is_fortran, dbxout_common_name, dbxout_common_check): New functions.
20379         (dbxout_symbol_location): Transform N_LCSYM to N_GSYM for storage
20380         in common.
20381         (dbxout_syms): Check for COMMON-based symbol and wrap in
20382         N_BCOMM/N_ECOMM stab bracket, including as many symbols as possible
20383         in bracket for efficiency.
20384
20385         * dwarf2out.c: Emit DWARF debug info for Fortran COMMON block
20386         using DW_TAG_common_block + member offset.
20387         (add_pubname_string): New function.
20388         (dw_expand_expr): New function to find block name and offset for
20389         COMMON var.
20390         (common_check): New function to check whether symbol in Fortran COMMON.
20391         (gen_variable_die): If COMMON, use DW_TAG_common_block.
20392
20393 2008-04-01  Volker Reichelt  <v.reichelt@netcologne.de>
20394
20395         PR c/35436
20396         * c-format.c (init_dynamic_gfc_info): Ignore invalid locus type.
20397
20398 2008-04-02  Ben Elliston  <bje@au.ibm.com>
20399
20400         * config/v850/v850.md (casesi): Remove if (0) code.
20401         * config/i386/uwin.h (ASM_DECLARE_FUNCTION_NAME): Likewise.
20402         * config/alpha/alpha.c (alpha_initialize_trampoline): Likewise.
20403
20404 2008-04-01  Uros Bizjak  <ubizjak@gmail.com>
20405
20406         * config/i386/i386.md (rex64suffix): New mode attribute.
20407         (floathi<mode>2): Disable expander for SSE math.
20408         (*floathi<mode>2_1): New insn insn_and_split pattern.
20409         (*floathi<mode>2_i387_with_temp): New macroized instruction pattern and
20410         corresponding post-reload splitters.
20411         (*floathi<mode>2_i387): New macroized insn pattern.
20412         (float<SSEMODEI24:mode><X87MODEF:mode>2): New macroized expander.
20413         (*float<SSEMODEI24:mode><X87MODEF:mode>2_1): New macroized
20414         insn_and_split pattern.
20415         (*floatsi<mode>2_vector_mixed_with_temp, *floatsi<mode>2_vector_mixed):
20416         New macroized instruction patterns and corresponding post-reload
20417         splitters.
20418         (*floatsi<mode>2_mixed_with_temp): New macroized instruction pattern
20419         and corresponding post-reload splitters.
20420         (*floatsi<mode>2_mixed_interunit, *floatsi<mode>2_mixed_nointerunit):
20421         New macroized instruction patterns.
20422         (*floatsi<mode>2_vector_sse_with_temp, *floatsi<mode>2_vector_sse): New
20423         macroized instruction patterns and corresponding post-reload splitters.
20424         (*floatsi<mode>2_sse_with_temp): New macroized instruction pattern and
20425         corresponding post-reload splitters.
20426         (*floatsi<mode>2_sse_interunit, *floatsi<mode>2_mixed_nointerunit):
20427         New macroized instruction patterns.
20428         (*floatsi<mode>2_i387_with_temp): New macroized instruction pattern and
20429         corresponding post-reload splitters.
20430         (*floatsi<mode>2_i387): New macroized instruction patterns.
20431
20432 2008-04-01  H.J. Lu  <hongjiu.lu@intel.com>
20433
20434         * config/i386/i386.md (smaxmin): New.
20435         (umaxmin): Likewise.
20436         (maxminiprefix): Likewise.
20437         (maxminfprefix): Likewise.
20438         (<code><mode>3): Likewise.
20439         (smin<mode>3): Removed.
20440         (smax<mode>3): Likewise.
20441
20442         * config/i386/mmx.md (mmx_<code>v2sf3): New.
20443         (mmx_<code>v4hi3): Likewise.
20444         (mmx_<code>v8qi3): Likewise.
20445         (mmx_smaxv2sf3): Removed.
20446         (mmx_sminv2sf3): Likewise.
20447         (mmx_umaxv8qi3): Likewise.
20448         (mmx_smaxv4hi3): Likewise.
20449         (mmx_uminv8qi3): Likewise.
20450         (mmx_sminv4hi3): Likewise.
20451
20452         * config/i386/sse.md (<addsub><mode>3): New.
20453         (*<addsub><mode>3): Likewise.
20454         (<sse>_vm<addsub><mode>3): Likewise.
20455         (<maxmin><mode>3): Likewise.
20456         (*<maxmin><mode>3_finite): Likewise.
20457         (*<maxmin><mode>3): Likewise.
20458         (<sse>_vm<maxmin><mode>3): Likewise.
20459         (sse3_h<addsub>v4sf3): Likewise.
20460         (sse3_h<addsub>v2df3): Likewise.
20461         (<maxmin>v16qi3): Likewise.
20462         (*<maxmin>v16qi3): Likewise.
20463         (<maxmin>v8hi3): Likewise.
20464         (*<maxmin>v8hi3): Likewise.
20465         (*sse4_1_<maxmin><mode>3): Likewise.
20466         (*sse4_1_<maxmin><mode>3): Likewise.
20467         (add<mode>3): Removed.
20468         (*add<mode>3): Likewise.
20469         (<sse>_vmadd<mode>3): Likewise.
20470         (sub<mode>3): Likewise.
20471         (*sub<mode>3): Likewise.
20472         (<sse>_vmsub<mode>3): Likewise.
20473         (smin<mode>3): Likewise.
20474         (*smin<mode>3_finite): Likewise.
20475         (*smin<mode>3): Likewise.
20476         (<sse>_vmsmin<mode>3): Likewise.
20477         (smax<mode>3): Likewise.
20478         (*smax<mode>3_finite): Likewise.
20479         (*smax<mode>3): Likewise.
20480         (<sse>_vmsmax<mode>3): Likewise.
20481         (sse3_haddv4sf3): Likewise.
20482         (sse3_haddv2df3): Likewise.
20483         (sse3_hsubv4sf3): Likewise.
20484         (sse3_hsubv2df3): Likewise.
20485         (umaxv16qi3): Likewise.
20486         (*umaxv16qi3): Likewise.
20487         (smaxv8hi3): Likewise.
20488         (*smaxv8hi3): Likewise.
20489         (*sse4_1_smax<mode>3): Likewise.
20490         (*sse4_1_umax<mode>3): Likewise.
20491         (uminv16qi3): Likewise.
20492         (*uminv16qi3): Likewise.
20493         (sminv8hi3): Likewise.
20494         (*sminv8hi3): Likewise.
20495         (*sse4_1_smin<mode>3): Likewise.
20496         (*sse4_1_umin<mode>3): Likewise.
20497
20498 2008-04-01  Rafael Espíndola  <espindola@google.com>
20499
20500         * tree-cfg.c (verify_expr): remove in_phi.
20501         (verify_stmt): Don't call walk_tree with verify_expr. Use
20502         is_gimple_min_invariant instead of is_gimple_val.
20503
20504 2008-04-01  Joseph Myers  <joseph@codesourcery.com>
20505
20506         * doc/include/gpl_v3.texi: Update for manpage generation.
20507         * doc/gcc.texi, doc/gccint.texi: Include gpl_v3.texi instead of
20508         gpl.texi.
20509         * doc/sourcebuild.texi: Document gpl_v3.texi as well as gpl.texi.
20510         * Makefile.in (TEXI_GCC_FILES, TEXI_GCCINT_FILES): Include
20511         gpl_v3.texi instead of gpl.texi.
20512         (gpl.pod): New.
20513
20514 2008-04-01  Jakub Jelinek  <jakub@redhat.com>
20515
20516         PR pch/13675
20517         * c-pch.c (c_common_read_pch): On error close (fd) resp. fclose (f).
20518
20519 2008-04-01  Rafael Espíndola  <espindola@google.com>
20520
20521         * tree-vrp.c (extract_code_and_val_from_cond_with_ops): New.
20522         (extract_code_and_val_from_cond): Use
20523         extract_code_and_val_from_cond_with_ops.
20524
20525 2008-04-01  Jan Hubicka  <jh@suse.cz>
20526
20527         * function.c (free_after_compilation): Free epilogue_delay_list.
20528         (prepare_function_start): Assert that previous compilation was freed.
20529
20530 2008-04-01  Jan Hubicka  <jh@suse.cz>
20531             Jim Wilson  <wilson@tuliptree.org>
20532             Andreas Tobler <andreast@gcc.gnu.org>
20533
20534         PR middle-end/35781
20535         * m32c/m32.c (m32c_leaf_function_p, m32c_function_needs_enter): Use
20536         rtl.emit instead cfun->emit.
20537         * sparc/sparc.h (INIT_EXPANDERS): Likewise.
20538         * ia64/ia64.h (INIT_EXPANDERS): Likewise.
20539
20540 2008-04-01  Ben Elliston  <bje@au.ibm.com>
20541
20542         * doc/c-tree.texi (Function Basics): Fix grammatical error.
20543
20544 2008-03-31  Seongbae Park <seongbae.park@gmail.com>
20545
20546         * common.opt (fprofile-dir=, fprofile-use=, fprofile-generate=):
20547         New options
20548         (fprofile-use): Add var flag_profile_use
20549         * coverage.c (coverage_begin_output): Do not open a gcno file for
20550         output only if -ftest-coverage is set.
20551         Do not add getpwd() to gcda file path.
20552         (build_gcov_info): Check the new flag
20553         flag_profile_datafile_relative_path.
20554         (coverage_init): Use profile_data_prefix.
20555         Read profile counter only if flag_profile_use is set.
20556         * opts.c (common_handle_option): New option fprofile-use=,
20557         fprofile-dir=, fprofile-generate=.
20558         * toplev.c (profile_data_prefix): New variable definition.
20559         * toplev.h (profile_data_prefix): New declaration.
20560         * doc/invoke.tex (Option Summary, Optimization Options):
20561         Add new options.
20562
20563 2008-03-31  James E. Wilson  <wilson@tuliptree.org>
20564
20565         * varasm.c (output_constant_pool_1): In LABEL_REF check,
20566         use tmp consistently.
20567
20568         PR target/35695
20569         * config/ia64/div.md (recip_approx_rf): Use UNSPEC not DIV.
20570         * config/ia64/ia64.c (rtx_needs_barrier): Handle
20571         UNSPEC_FR_RECIP_APPROX_RES.
20572         * config/ia64/ia64.md (UNSPEC_FR_RECIP_APPROX_RES): Define.
20573
20574 2008-03-31  Volker Reichelt  <v.reichelt@netcologne.de>
20575
20576         PR c/35750
20577         * c-decl.c (store_parm_decls_oldstyle): Skip invalid parameters.
20578
20579 2008-03-31  Andrew Pinski  <andrew_pinski@playstation.sony.com>
20580
20581         PR middle-end/30186
20582         * fold-const.c (fold_indirect_ref_1): Support accessing non first
20583         element of the vector via a pointer.
20584
20585 2008-03-31  Ian Lance Taylor  <iant@google.com>
20586
20587         * tlink.c (scan_linker_output): Look for symbol name in single quotes.
20588
20589 2008-03-31  Jan Hubicka  <jh@suse.cz>
20590
20591         * builtins.c (expand_builtin_setjmp_receiver): Update call of
20592         get_arg_pointer_save_area.
20593         * expr.c (init_expr): Just clear out rtl.expr.
20594         * function.c (free_after_compilation): Clear out whole RTL structure.
20595         (get_func_frame_size): Merge into ...
20596         (get_frame_size): ... this one.
20597         (assign_stack_local_1): Merge into ...
20598         (assign_stack_local): ... this one.
20599         (expand_function_end): Update call of get_arg_pointer_save_area.
20600         (get_art_pointer_save_area): Remove cfun argument.
20601         * function.h (emit_status): regno_pointer_align does not need length
20602         attribute. Move x_regno_reg_rtx to ...
20603         (regno_reg_rtx): ... new global array.
20604         (reg_rtx_no, seq_stack, REGNO_POINTER_ALIGN): Update accestors.
20605         (pending_stack_adjust, inhibit_defer_pop, saveregs_value,
20606         apply_args_value, forced_labels, stack_pointer_delta):
20607         Update accestors.
20608         (struct varasm_status): Move here from varasm.c
20609         (struct rtl_data): New. Move here some fields from struct function.
20610         (return_label, naked_return_label, stack_slot_list, parm_birth_insn,
20611         frame_offset, stack_check_probe_note, arg_pointer_save_area,
20612         used_temp_slots avail_temp_slots, temp_slot_level,
20613         nonlocal_goto_handler_labels): Update accesstors.
20614         (rtl): New global variable.
20615         (struct function): Move some fileds to rtl_data.
20616         (get_arg_pointer_save_area): Update prototype.
20617         * emit-rtl.c (rtl): Declare.
20618         (regno_reg_rtx): Declare.
20619         (first_insn, last_insn, cur_insn_uid, last_location, first_label_num):
20620         Update.
20621         (gen_reg_rtx): Update.
20622         (init_virtual_regs): Do not tate emit_status argument.
20623         (init_emit): Do not allocate emit.
20624         * varasm.c (varasm_statuc): Move to function.h.
20625         (n_deferred_constatns): Update accestor.
20626         (init_varasm_status): Do not allocate varasm_status.
20627         (force_const_mem, get_pool_size, output_constant_pool): Update.
20628         * stmt.c (force_label_rtx): Do not use x_ prefixes.
20629         (expand_nl_goto_receiver): Update get_arg_pointer_save_area.
20630
20631 2008-03-31  Zdenek Dvorak  <ook@ucw.cz>
20632
20633         PR rtl-optimization/35729
20634         * loop-invariant.c (check_maybe_invariant): Disallow volatile memory
20635         references.
20636
20637 2008-03-31  H.J. Lu  <hongjiu.lu@intel.com>
20638
20639         PR target/32000
20640         * config/i386/i386.md (*movti_internal): Emit unaligned SSE
20641         load/store if memory is unaligned.
20642         (*movti_rex64): Likewise.
20643
20644         * config/i386/predicates.md (misaligned_operand): New.
20645
20646 2008-03-31  Andrew Pinski  <pinskia@gmail.com>
20647
20648         PR tree-opt/35431
20649         * tree-ssa-phiopt.c (conditional_replacement): Return early for
20650         complex types.
20651
20652 2008-03-31  Jan Beulich  <jbeulich@novell.com>
20653
20654         * config/ia64/constraints.md: Add 'j' constraint.
20655         * config/ia64/ia64.md (movsi_internal): Add addp4 case.
20656         (movdi_internal): Likewise.
20657
20658 2008-03-30  Volker Reichelt  <v.reichelt@netcologne.de>
20659
20660         PR c/35748
20661         * c-typeck.c (build_c_cast): Skip invalid fields in unions.
20662
20663 2008-03-30  H.J. Lu  <hongjiu.lu@intel.com>
20664
20665         PR target/35757
20666         * config/i386/i386.c (ix86_expand_sse_4_operands_builtin): Issue
20667         proper error message for the third argument on blendpd and
20668         blendps.
20669
20670         * config/i386/sse.md (blendbits): New.
20671         (sse4_1_blendp<ssemodesuffixf2c>): Use it.
20672
20673 2008-03-30  Eric Botcazou  <ebotcazou@adacore.com>
20674
20675         * fold-const.c (fold_binary) <BIT_IOR_EXPR>: Add missing conversions.
20676
20677 2008-03-30  Richard Guenther  <rguenther@suse.de>
20678
20679         PR middle-end/31023
20680         * fold-const.c (fold_sign_changed_comparison): Do leave
20681         conversions to base-types alone.
20682
20683 2008-03-29  Andrew Pinski  <andrew_pinski@playstation.sony.com>
20684
20685         * config/rs6000/rs6000.c (rs6000_stack_info): Don't force saving of
20686         the link register if one altivec register is be saved.
20687
20688 2008-03-30  Ben Elliston  <bje@au.ibm.com>
20689
20690         * final.c (final_scan_insn): Remove if (0) code.
20691
20692 2008-03-28  Volker Reichelt  <v.reichelt@netcologne.de>
20693
20694         * c-parser.c (c_parser_next_token_is_keyword): Simplify.
20695
20696 2008-03-28  H.J. Lu  <hongjiu.lu@intel.com>
20697
20698         * config/i386/sse.md (*and<mode>3): Pass <MODE>mode instead
20699         of V4SFmode to ix86_binary_operator_ok.
20700
20701 2008-03-28  Uros Bizjak  <ubizjak@gmail.com>
20702
20703         * config/i386/i386.c (override_options): Initialize
20704         ix86_veclib_handler to ix86_veclibabi_svml when
20705         -mveclibabi=svml is used.
20706         (ix86_veclibabi_svml): New function for SVML ABI style
20707         vectorization support.
20708         * doc/invoke.texi (-mveclibabi) [svml]: Document new target option.
20709
20710 2008-03-28  Rafael Espíndola  <espindola@google.com>
20711
20712         * fold-const.c (tree_unary_nonnegative_warnv_p): Make it public.
20713         (tree_binary_nonnegative_warnv_p): Make it public.
20714         (tree_single_nonnegative_warnv_p): Make it public.
20715         (tree_invalid_nonnegative_warnv_p): Make it public.
20716         (tree_unary_nonzero_warnv_p): Make it public.
20717         (tree_binary_nonzero_warnv_p): Make it public
20718         (tree_single_nonzero_warnv_p): Make it public.
20719         * tree-vrp.c (vrp_evaluate_conditional_warnv_with_ops): New function.
20720         (extract_range_from_binary_expr): Split the expr argument.
20721         (extract_range_from_unary_expr): Split the expr argument.
20722         (extract_range_from_comparison): Split the expr argument.
20723         (extract_range_from_expr): Use the new aux functions.
20724         (vrp_evaluate_conditional_warnv): Use
20725         vrp_evaluate_conditional_warnv_with_ops.
20726         * tree.h (tree_unary_nonzero_warnv_p): Declare.
20727         (tree_binary_nonzero_warnv_p): Declare.
20728         (tree_single_nonzero_warnv_p): Declare.
20729         (tree_expr_nonzero_warnv_p): Declare.
20730         (tree_unary_nonnegative_warnv_p): Declare.
20731         (tree_binary_nonnegative_warnv_p): Declare.
20732         (tree_single_nonnegative_warnv_p): Declare.
20733         (tree_invalid_nonnegative_warnv_p): Declare.
20734
20735 2008-03-28  Richard Guenther  <rguenther@suse.de>
20736
20737         PR tree-optimization/30317
20738         PR tree-optimization/30911
20739         PR tree-optimization/34793
20740         * tree-vrp.c (set_and_canonicalize_value_range): New function.
20741         (struct assert_locus_d): New member EXPR.
20742         (register_new_assert_for): Add EXPR parameter to support
20743         ASSERT_EXPR <name, expr OP limit>.
20744         (register_edge_assert_for_1): Adjust callers.
20745         (find_assert_locations): Likewise.
20746         (process_assert_insertions_for): Build condition from expression.
20747         (extract_range_from_assert): Handle ASSERT_EXPRs
20748         of the form ASSERT_EXPR <name, expr OP limit>.
20749         (register_edge_assert_for_2): New helper registering
20750         asserts for comparisons.  Recognize range tests of the form
20751         (unsigned)i - CST1 OP CST2.
20752         (register_edge_assert_for_1): Use it.
20753         (register_edge_assert_for): Likewise.
20754         (needs_overflow_infinity): Integer sub-types
20755         do not need overflow infinities.
20756         (vrp_val_is_max): The extreme values of integer sub-types
20757         are those of the base type.
20758         (vrp_val_is_min): Likewise.
20759         * tree.def (ASSERT_EXPR): Document extra allowed conditional
20760         expressions.
20761
20762 2008-03-28  Nick Clifton  <nickc@redhat.com>
20763
20764         PR target/31110
20765         * config/mn10300/mn10300.c (mn10300_secondary_reload_class):
20766         Return GENERAL_REGS for stack adjustment reloads.
20767
20768 2008-03-28  Andrew Pinski  <andrew_pinski@playstation.sony.com>
20769
20770         PR target/31334
20771         * config/rs6000/rs6000.c (rs6000_expand_vector_init): Create a
20772         const_vector when all the vectors are constant.
20773
20774 2008-03-27  Bob Wilson  <bob.wilson@acm.org>
20775
20776         * config/xtensa/xtensa.c (gen_float_relational): Handle unordered
20777         comparisons.
20778         * config/xtensa/xtensa.md (any_cond): Add unordered comparisons.
20779         (any_scc_sf): Add uneq, unlt, unle and unordered operators.
20780         (scc_sf): New.
20781         (s<code>_sf): Use new scc_sf attribute for opcode names.
20782
20783 2008-03-27  Tom Tromey  <tromey@redhat.com>
20784
20785         * doc/sourcebuild.texi, doc/install.texi, configure, aclocal.m4,
20786         configure.ac, Makefile.in, config/t-darwin, config/m32c/t-m32c,
20787         config/spu/t-spu-elf, config/i386/t-interix,
20788         config/i386/t-cygming, config/i386/x-i386, config/i386/t-cygwin,
20789         config/i386/x-darwin, config/i386/x-mingw32,
20790         config/i386/t-netware, config/i386/x-cygwin, config/i386/t-nwld,
20791         config/sh/t-sh, config/sh/t-symbian, config/x-linux,
20792         config/t-sol2, config/x-hpux, config/x-darwin, config/ia64/t-ia64,
20793         config/x-solaris, config/t-vxworks, config/m68k/t-uclinux,
20794         config/rs6000/x-rs6000, config/rs6000/x-darwin64,
20795         config/rs6000/x-darwin, config/rs6000/t-rs6000,
20796         config/score/t-score-elf, config/arm/t-strongarm-pe,
20797         config/arm/t-pe, config/arm/t-arm, config/arm/t-wince-pe,
20798         config/v850/t-v850, config/v850/t-v850e, config/bfin/t-bfin-linux:
20799         Revert automatic dependency patch.
20800
20801 2008-03-27  H.J. Lu  <hongjiu.lu@intel.com>
20802
20803         PR target/35657
20804         * config/i386/i386.c (ix86_function_arg_boundary): Align
20805         decimal floating point to its natural boundary.
20806
20807 2008-03-27  Richard Guenther  <rguenther@suse.de>
20808
20809         PR middle-end/35716
20810         * fold-const.c (fold_comparison): Restrict distinct decl
20811         comparison folding to VAR_DECLs and PARM_DECLs.  Do not
20812         solely rely on operand_equal_p.
20813
20814 2008-03-27  Richard Guenther  <rguenther@suse.de>
20815
20816         PR c/32511
20817         * c-common.c (handle_weak_attribute): Reject combination of
20818         weak and inline.
20819
20820 2008-03-27  Richard Guenther  <rguenther@suse.de>
20821
20822         PR tree-optimization/32810
20823         * tree-ssa-ccp.c (get_symbol_constant_value): Strip useless
20824         conversions from DECL_INITIAL.
20825         (fold_const_aggregate_ref): Likewise from constructor elements.
20826
20827 2008-03-27  Zdenek Dvorak  <ook@ucw.cz>
20828
20829         * tree-affine.h (aff_combination_expand): Declare.
20830         (get_inner_reference_aff): Likewise.
20831         * tree-affine.c (aff_combination_expand): Split out from
20832         tree_to_aff_combination_expand.
20833         (get_inner_reference_aff): New function.
20834         * tree-parloops.c (loop_parallel_p): Free vectorizer info.
20835         * tree-ssa-loop-im.c: Include tree-affine.h and pointer-set.h.
20836         (struct lim_aux_data): sm_done field removed.
20837         (mem_ref_loc_p, mem_ref_locs_p): New types.
20838         (struct mem_ref): Added id, stored, accesses_in_loop,
20839         indep_loop, dep_loop, indep_ref, dep_ref fields.
20840         Removed is_stored, locs and next fields.
20841         (memory_accesses): New variable.
20842         (movement_possibility): Do not allow moving statements
20843         that store to memory.
20844         (outermost_indep_loop, simple_mem_ref_in_stmt, mem_ref_in_stmt):
20845         New functions.
20846         (determine_max_movement): For statements with memory references,
20847         find the outermost loop in that the reference is independent.
20848         (move_computations_stmt): Mark the virtual operands for renaming.
20849         (memref_free, mem_ref_alloc, mem_ref_locs_alloc, mark_ref_stored,
20850         gather_mem_refs_stmt, gather_mem_refs_in_loops, vtoe_hash, vtoe_eq,
20851         vtoe_free, record_vop_access, get_vop_accesses, get_vop_stores,
20852         add_vop_ref_mapping, create_vop_ref_mapping_loop,
20853         create_vop_ref_mapping, analyze_memory_references,
20854         cannot_overlap_p, mem_refs_may_alias_p, rewrite_mem_ref_loc,
20855         get_all_locs_in_loop, ref_always_accessed_p,
20856         refs_independent_p, record_indep_loop, ref_indep_loop_p_1,
20857         ref_indep_loop_p, can_sm_ref_p, find_refs_for_sm,
20858         store_motion_loop, store_motion): New functions.
20859         (struct vop_to_refs_elt): New type.
20860         (record_mem_ref_loc, free_mem_ref_locs, rewrite_mem_refs,
20861         memref_hash, memref_eq, hoist_memory_references): Rewritten.
20862         (schedule_sm): Replaced by...
20863         (execute_sm): ... this.
20864         (determine_lsm_ref, hoist_memory_references,
20865         loop_suitable_for_sm, gather_mem_refs_stmt, gather_mem_refs,
20866         find_more_ref_vops, free_mem_ref, free_mem_refs,
20867         determine_lsm_loop, determine_lsm): Removed.
20868         (tree_ssa_lim_finalize): Free data structures used by store motion.
20869         (tree_ssa_lim): Call analyze_memory_references.  Use
20870         store_motion instead of determine_lsm.
20871
20872 2008-03-27  Paolo Bonzini  <bonzini@gnu.org>
20873
20874         * config.cc (m68hc11, m6811, m68hc12, m6812): Add usegas.h,
20875         rename tmake_file to m68hc11/t-m68hc11.
20876         (mcore): Set inhibit_libc to true.
20877         * config.host (alpha*-dec-*vms*): Set extra_programs.
20878         (interix3*): Don't use host_xmake_file.
20879         * configure.ac: Let config.gcc override inhibit_libc.
20880         * configure: Regenerate.
20881
20882         * config/alpha/x-vms (EXTRA_PROGRAMS): Remove.
20883         * config/t-openbsd-thread: Remove commented out lines.
20884
20885         * config/x-interix: Remove.
20886
20887         * config/m68hc11/t-m68hc11-gas: Rename to...
20888         * config/m68hc11/t-m68hc11: ... this.  Remove T_CPPFLAGS.
20889
20890         * config/mcore/t-mcore: Remove T_CFLAGS.
20891         * config/mcore/t-mcore-pe: Likewise.
20892
20893 2008-03-27  Paolo Bonzini  <bonzini@gnu.org>
20894
20895         * configure.ac: Replace custom __GNU_SOURCE test with
20896         AC_USE_SYSTEM_EXTENSIONS.  Move it earlier.
20897         * aclocal.m4: Regenerate.
20898         * configure: Regenerate.
20899         * config.in: Regenerate.
20900
20901 2008-03-27  Richard Guenther  <rguenther@suse.de>
20902
20903         * fold-const.c (target.h): Include.
20904         (fold_comparison): Fold comparison of addresses of decls
20905         that bind locally or of constants.  Consolidate address folding code.
20906         * tree-vrp.c (operand_less_p): Deal with non-INTEGER_CST
20907         results from fold_binary_to_constant.
20908         (compare_values_warnv): Likewise.
20909
20910 2008-03-27  Andrew Pinski  <pinskia@gmail.com>
20911
20912         PR middle-end/35429
20913         * fold-const.c (fold_truthop): Check for integeral types when folding
20914         a == 0 && b == 0 and a != 0 || b != 0 .
20915
20916 2008-03-26  Eric Botcazou  <ebotcazou@adacore.com>
20917
20918         * tree.c (get_unwidened): Remove code fiddling with COMPONENT_REF.
20919
20920 2008-03-26  Andreas Schwab  <schwab@suse.de>
20921
20922         * doc/invoke.texi: Fix use of @item vs. @itemx.
20923
20924 2008-03-26  Tom Tromey  <tromey@redhat.com>
20925
20926         * Makefile.in (build/gensupport.o, build/print-rtl.o,
20927         build/read-rtl.o, build/rtl.o, build/gencondmd.o, build/genattr.o,
20928         build/genattrtab.o, build/genautomata.o, build/gencheck.o,
20929         build/gencodes.o, build/genconditions.o, build/genconfig.o,
20930         build/genconstants.o, build/genemit.o, build/genextract.o,
20931         build/genflags.o, build/genmddeps.o, build/genopinit.o,
20932         build/genoutput.o, build/genpeep.o, build/genrecog.o): Depend on
20933         options.h.
20934
20935 2008-03-26  Richard Guenther  <rguenther@suse.de>
20936
20937         Revert
20938         2008-03-26  Richard Guenther  <rguenther@suse.de>
20939
20940         * fold-const.c (target.h): Include.
20941         (fold_comparison): Fold comparison of addresses of two decls
20942         that bind locally.  Consolidate address folding code.
20943
20944 2008-03-26  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
20945
20946         * builtins.c (expand_builtin_pow, fold_builtin_cabs,
20947         fold_builtin_sqrt, fold_builtin_cbrt, fold_builtin_logarithm,
20948         fold_builtin_hypot, fold_builtin_pow): Remove uses of dconst3,
20949         dconstsqrt2, dconstthird, dconste and/or dconst10.
20950         * config/i386/i386.c (ix86_emit_swsqrtsf): Likewise.
20951         * emit-rtl.c (dconst3, dconst10, dconstm2, dconstthird,
20952         dconstsqrt2, dconste): Delete.
20953         (init_emit_once): Likewise.  Simplify initializing dconstm1.
20954         Constify variable.
20955         * real.c (get_real_const): New.
20956         * real.h (dconst3, dconst10, dconstm2, dconstthird,
20957         dconstsqrt2, dconste): Delete.
20958         (real_value_const, get_real_const): New.
20959
20960 2008-03-26  H.J. Lu  <hongjiu.lu@intel.com>
20961
20962         * config/i386/cygming.h (BIGGEST_ALIGNMENT): Removed.
20963
20964         * config/i386/i386.c (ix86_function_arg_boundary): Check
20965         BIGGEST_ALIGNMENT instead of 128.
20966         (setup_incoming_varargs_64): Likewise.
20967
20968 2008-03-26  Tom Tromey  <tromey@redhat.com>
20969
20970         * Makefile.in (DEPFILES): Add missing '/'.
20971
20972 2008-03-26  Richard Guenther  <rguenther@suse.de>
20973
20974         * fold-const.c (target.h): Include.
20975         (fold_comparison): Fold comparison of addresses of two decls
20976         that bind locally.  Consolidate address folding code.
20977
20978 2008-03-26  Nick Clifton  <nickc@redhat.com>
20979
20980         PR target/31232
20981         * config/stormy16/stormy16.c (xstormy16_legitimate_address_p): Do
20982         not allow INT+INT as a legitimate addressing mode.
20983
20984 2008-03-26  Richard Guenther  <rguenther@suse.de>
20985
20986         * tree-flow.h (widen_bitfield): Remove declaration.
20987         * tree-ssa-ccp.c (visit_assignment): Remove unneeded code.
20988         (widen_bitfield): Remove function.
20989         * tree-ssa-dom.c (record_equivalences_from_stmt): Remove unneeded
20990         code.
20991
20992 2008-03-25  Andrew Pinski  <andrew_pinski@playstation.sony.com>
20993
20994         PR target/31558
20995         * config/rs6000/rs6000-c.c (rs6000_builtin_type_compatible): Handle
20996         error_mark_node's.
20997
20998 2008-03-25  Richard Sandiford  <rsandifo@nildram.co.uk>
20999
21000         PR rtl-optimization/35232
21001         * reload1.c (reg_reloaded_call_part_clobbered): Clarify comment.
21002         (forget_old_reloads_1, forget_marked_reloads): Don't clear
21003         reg_reloaded_call_part_clobbered here.
21004         (reload_regs_reach_end_p): New function.
21005         (reload_reg_rtx_for_input): New variable.
21006         (reload_reg_rtx_for_output): Likewise.
21007         (emit_input_reload_insns): Use reloadreg rather than rl->reg_rtx
21008         when reassigning a pseudo register.  Load reloadreg from
21009         reload_reg_rtx_for_input, moving the mode and register
21010         calculation to...
21011         (do_input_reload): ...here.  Use the mode-adjusted reg_rtx
21012         instead of the original when deciding whether an input reload
21013         would be a no-op or whether an output reload can be deleted.
21014         (emit_output_reload_insns): Use the mode-adjusted reg_rtx
21015         when setting up new_spill_reg_store.  Load it from
21016         reload_reg_rtx_for_output, moving the mode and register
21017         calculation to...
21018         (do_output_reload): ...here.  Use the mode-adjusted reg_rtx
21019         instead of the original when deciding whether an output reload
21020         would be a no-op.  Do the same when modifying insn notes.
21021         Use rtx_equal_p instead of == to compare the registers.
21022         (inherit_piecemeal_p): Take a mode and two register numbers
21023         as argument.
21024         (emit_reload_insns): Clear new_spill_reg_store for every hard
21025         register in the reload register.  Remove spill registers
21026         from reg_reloaded_valid before considering whether to record
21027         inheritance information for them.  Use reload_reg_rtx_for_output
21028         instead of reg_rtx when recording output reloads.  Use
21029         reload_reg_rtx_for_input instead of reg_rtx when recording
21030         input reloads.  Set or clear reg_reloaded_call_part_clobbered
21031         at the same time as setting reg_reloaded_valid.
21032         (delete_output_reload): Add a new_reload_reg parameter and use it
21033         instead of rld[j].reg_rtx.
21034         (emit_input_reload_insns, do_input_reload, do_output_reload): Adjust
21035         calls accordingly.
21036
21037 2008-03-25  Tom Tromey  <tromey@redhat.com>
21038
21039         * Makefile.in (build/gensupport.o): Depend on insn-modes.h.
21040         (build/genattr.o): Likewise.
21041         (build/genattrtab.o): Likewise.
21042         (build/gencodes.o): Likewise.
21043         (build/genconfig.o): Likewise.
21044         (build/genconstants.o): Likewise.
21045         (build/genemit.o): Likewise.
21046         (build/genextract.o): Likewise.
21047         (build/genflags.o): Likewise.
21048
21049 2008-03-25  Bob Wilson  <bob.wilson@acm.org>
21050
21051         * config/xtensa/xtensa.c (xtensa_va_start): Use build_int_cst
21052         instead of size_int for integer types.
21053         (xtensa_gimplify_va_arg_expr): Likewise.  Convert index to sizetype
21054         to match type of MINUS_EXPR.
21055
21056 2008-03-25  Tom Tromey  <tromey@redhat.com>
21057
21058         * configure: Rebuilt.
21059         * configure.ac (BUILD_DEPMODE): Extract CCDEPMODE from temporary
21060         Makefile.
21061
21062 2008-03-25  Tom Tromey  <tromey@redhat.com>
21063
21064         * config/x-solaris (host-solaris.o): Update.
21065         * config/x-linux (host-linux.o): Update.
21066         * config/x-hpux (host-hpux.o): Update.
21067         * config/x-darwin (host-darwin.o): Update.
21068         * config/v850/t-v850e (v850-c.o): Update.
21069         * config/v850/t-v850 (v850-c.o): Update.
21070         * config/t-vxworks (vxworks.o): Update.
21071         * config/t-sol2 (sol2-c.o, sol2.o): Update.
21072         * config/t-darwin (darwin.o, darwin-c.o, darwin-driver.o): Update.
21073         * config/spu/t-spu-elf (spu-c.o): Update.
21074         (spu.o): Remove.
21075         * config/sh/t-symbian (sh-c.o): Update.
21076         (symbian.o): Update.
21077         * config/sh/t-sh (sh-c.o): Update.
21078         * config/score/t-score-elf (score7.o, score3.o): Update.
21079         * config/rs6000/x-rs6000 (driver-rs6000.o): Update.
21080         * config/rs6000/x-darwin64 (host-ppc64-darwin.o): Update.
21081         * config/rs6000/x-darwin (host-ppc-darwin.o): Update.
21082         * config/rs6000/t-rs6000 (rs6000-c.o): Update.
21083         (rs6000.o): Remove.
21084         * config/m68k/t-uclinux (generated_files): Add sysroot-suffix.h.
21085         * config/m32c/t-m32c (m32c-pragma.o): Update.
21086         * config/ia64/t-ia64 (ia64-c.o): Update.
21087         * config/i386/x-mingw32 (host-mingw32.o): Update.
21088         * config/i386/x-i386 (driver-i386.o): Update.
21089         * config/i386/x-darwin (host-i386-darwin.o): Update.
21090         * config/i386/x-cygwin (host-cygwin.o): Update.
21091         * config/i386/t-nwld (nwld.o): Update.
21092         * config/i386/t-netware (netware.o): Update.
21093         * config/i386/t-interix (winnt.o): Update.
21094         * config/i386/t-cygwin (cygwin1.o, cygwin2.o): Update.
21095         * config/i386/t-cygming (winnt.o, winnt-cxx.o, winnt-stubs.o,
21096         msformat-c.o): Update.
21097         * config/bfin/t-bfin-linux (generated_files): Add
21098         linux-sysroot-suffix.h.
21099         * config/arm/t-wince-pe (pe.o): Update.
21100         * config/arm/t-strongarm-pe (pe.o): Update.
21101         * config/arm/t-pe (pe.o): Update.
21102         * config/arm/t-arm (arm-c.o): Update.
21103         * doc/install.texi (Prerequisites): Require make 3.80.
21104         * Makefile.in: Remove .o targets.
21105         (CCDEPMODE, DEPDIR, depcomp, BUILD_DEPMODE): New variables.
21106         (OBSTACK_H, FIBHEAP_H, PARTITION_H, MD5_H, BCONFIG_H): Remove.
21107         (simple_generated_h, simple_generated_c): Move earlier.
21108         (generated_files): New variable.
21109         (TARGET_H, MACHMODE_H, HOOKS_H, HOSTHOOKS_DEF_H, LANGHOOKS_DEF_H,
21110         TARGET_DEF_H, RTL_BASE_H, RTL_H, PARAMS_H, BUILTINS_DEF, TREE_H,
21111         BASIC_BLOCK_H, GCOV_IO_H, COVERAGE_H, DEMANGLE_H, RECOG_H,
21112         ALIAS_H, EMIT_RTL_H, FLAGS_H, FUNCTION_H, EXPR_H, OPTABS_H,
21113         REGS_H, RA_H, RESOURCE_H, SCHED_INT_H, INTEGRATE_H, CFGLAYOUT_H,
21114         CFGLOOP_H, IPA_UTILS_H, IPA_REFERENCE_H, IPA_TYPE_ESCAPE_H,
21115         CGRAPH_H, DF_H, RESOURCE_H, DDG_H, GCC_H, GGC_H, TIMEVAR_H,
21116         INSN_ATTR_H, C_COMMON_H, C_PRAGMA_H, C_TREE_H, SYSTEM_H,
21117         PREDICT_H, DECNUM_H, MKDEPS_H, SYMTAB_H, TREE_DUMP_H,
21118         TREE_GIMPLE_H, TREE_FLOW_H, TREE_SSA_LIVE_H, PRETTY_PRINT_H,
21119         DIAGNOSTIC_H, C_PRETTY_PRINT_H, SCEV_H, LAMBDA_H, TREE_DATA_REF_H,
21120         VARRAY_H, TREE_INLINE_H, REAL_H, DBGCNT_H, EBIMAP_H): Remove.
21121         (.c.o): Remove.
21122         (COMPILE.base, COMPILE): New variables.
21123         (%.o): New pattern rule.
21124         (ALL_HOST_OBJS): New variable.
21125         (xgcc$(exeext), cpp$(exeext)): Remove extra version.o.
21126         (dummy-checksum.o, cc1-checksum.o): Remove.
21127         (DRIVER_SHLIB): New variable.
21128         (DRIVER_DEFINES): Use it.
21129         (gencondmd.c): Move out of build/.
21130         (s-conditions): Update.
21131         (BUILDCOMPILE.base, BUILDCOMPILE): New variables.
21132         (ALL_BUILD_OBJS): Likewise.
21133         (build/%.o): Use BUILDCOMPILE.
21134         (build/ggc-none.o, build/ggc-none.o, build/min-insn-modes.o,
21135         build/print-rtl.o, build/read-rtl.o, build/rtl.o, build/vec.o,
21136         build/gencondmd.o, build/genattrtab.o, build/genautomata.o,
21137         build/gencheck.o, build/gencodes.o, build/genconditions.o,
21138         build/genconfig.o, build/genconstants.o, build/genemit.o,
21139         build/genextract.o, build/genflags.o, build/genmddeps.o,
21140         build/genopinit.o, build/genoutput.o, build/genpeep.o,
21141         build/genpreds.o, build/genrecog.o, build/gcov-iov.o,
21142         build/gen-protos.o, build/scan.o, build/fix-header.o,
21143         build/scan-decls.o): Simplify.
21144         (collect2.o, c-opts.o, gcc.o, gccspec.o, gcc-options.o,
21145         cppdefault.o, protoize.o, unprotoize.o, intl.o, version.o,
21146         prefix.o, toplev.o): Reduce to variable setting.
21147         (libbackend.o): Use COMPILE.  Remove most dependencies.  Move later.
21148         ($(out_object_file), gcc-options.o): New targets.
21149         ($(ALL_HOST_OBJS)): New target.  Include dependency files.
21150         * configure: Rebuilt.
21151         * configure.ac: Call ZW_CREATE_DEPDIR, ZW_PROG_COMPILER_DEPENDENCIES.
21152         * doc/sourcebuild.texi (Front End Directory): Document new variable.
21153
21154 2008-03-25  Douglas Gregor  <doug.gregor@gmail.com>
21155
21156         * c-common.c (c_sizeof_or_alignof_type): If we're not allowed to
21157         complain when we hit an error, return ERROR_MARK_NODE.
21158
21159 2008-03-25  Naveen.H.S  <naveen.hs@kpitcummins.com>
21160
21161         * config/sh/constraints.md (Pso, Psz): New constraints.
21162         * config/sh/sh.c (print_operand): Add %V and %W operand codes.
21163         * config/sh/sh.md (*andsi3_bclr, *iorsi3_bset): New insns.
21164
21165 2008-03-25  Naveen.H.S  <naveen.hs@kpitcummins.com>
21166
21167         * config/sh/sh.c (sh_expand_t_scc): Emit movrt for SH2A if possible.
21168         * config/sh/sh.md (xorsi3_movrt, movrt): New insns.
21169
21170 2008-03-25  Naveen.H.S  <naveen.hs@kpitcummins.com>
21171
21172         * config/sh/sh.md (prefetch): Add condition for SH2A target.
21173         (prefetch_sh2a): New.
21174
21175 2008-03-25  Jayant Sonar  <Jayant.sonar@kpitcummins.com>
21176             Naveen.H.S  <naveen.hs@kpitcummins.com>
21177
21178         * config/sh/constraints.md (I28): New constraint.
21179         * config/sh/sh.c (broken_move): Add support for movi20s.
21180         * config/sh/sh.md (movsi_ie): Add the alternative for movi20s.
21181
21182 2008-03-25  Anil Paranjape  <anil.paranjape@kpitcummins.com>
21183             Jayant Sonar  <Jayant.sonar@kpitcummins.com>
21184             Naveen.H.S  <naveen.hs@kpitcummins.com>
21185
21186         * config/sh/sh.c (SH_ATTRIBUTES): Define.
21187         (SYMBOL_FLAG_FUNCVEC_FUNCTION): Define.
21188         (print_operand): Handle resbank in %@ operand code.
21189         (sh_encode_section_info): New.
21190         (push_regs): Add conditions for resbank.
21191         (sh_expand_epilogue): Likewise.
21192         (sh_insert_attributes): Likewise.
21193         (sh_attribute_table): Likewise.
21194         (sh_handle_resbank_handler_attribute): New.
21195         (sh2a_handle_function_vector_handler_attribute): New.
21196         (sh2a_is_function_vector_call): New.
21197         (sh2a_get_function_vector_number): New.
21198         (sh2a_function_vector_p): New.
21199         (sh_cfun_resbank_handler_p): New.
21200         * config/sh/sh.md (calli): Emit jsr/n if possible.
21201         (calli_tbr_rel): New.
21202         (calli_pcrel): Emit jsr/n if possible.
21203         (return_i): Emit rts/n if possible.
21204         (call_valuei_tbr_rel): New.
21205         (call_valuei_pcrel): Add condition for SH2A target.
21206         (call_value): Likewise.
21207         * config/sh/sh-protos.h (sh_cfun_resbank_handler_p): Declare.
21208         (sh2a_get_function_vector_number): Likewise.
21209         (sh2a_is_function_vector_call): Likewise.
21210         * doc/extend.texi: Document TBR relative addressing of SH2A.
21211         (resbank): Add description for SH2A.
21212
21213 2008-03-24  Richard Guenther  <rguenther@suse.de>
21214
21215         PR c/22371
21216         * gimplify.c (gimplify_modify_expr): For frontend type-correct
21217         pointer assignments change conversions according to middle-end rules.
21218         (gimplify_modify_expr_rhs): Deal with NULL TARGET_EXPR_INITIAL.
21219         * configure.ac: Include type checking in yes.
21220         * configure: Regenerate.
21221
21222 2008-03-24  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
21223
21224         * diagnostic.c (diagnostic_count_diagnostic): Delete.
21225         (diagnostic_report_diagnostic): Update. Handle ICEs here.
21226
21227 2008-03-24  Nathan Sidwell  <nathan@codesourcery.com>
21228
21229         * gthr-vxworks.h (UNUSED): Define.
21230
21231 2008-03-23  H.J. Lu  <hongjiu.lu@intel.com>
21232
21233         * config/i386/i386.h (STATIC_CHAIN_REGNUM): Use R10_REG and CX_REG.
21234
21235 2008-03-23  Zuxy Meng <zuxy.meng@gmail.com>
21236
21237         * doc/extend.texi (Function Attributes): Add missing comma in the
21238         example of the "alloc_size" attribute.
21239
21240 2008-03-23  Uros Bizjak  <ubizjak@gmail.com>
21241
21242         Revert:
21243         2008-03-05  H.J. Lu  <hongjiu.lu@intel.com>
21244
21245         * config/i386/i386-modes.def: Use 4 byte alignment on DI for
21246         32bit host.
21247
21248         2008-03-19  Uros Bizjak  <ubizjak@gmail.com>
21249
21250         PR target/35496
21251         * stor-layout.c (update_alignment_for_field): Set minimum alignment
21252         of the underlying type of a MS bitfield layout to the natural
21253         alignment of the type.
21254
21255         2008-03-22  Uros Bizjak  <ubizjak@gmail.com>
21256
21257         * config/i386/i386.c (assign_386_stack_local): Align DImode slots
21258         to their natural alignment to avoid store forwarding stalls.
21259
21260 2008-03-22  Richard Guenther  <rguenther@suse.de>
21261
21262         * tree-cfg.c (verify_expr): Recurse again for invariant addresses.
21263         For PHI nodes verify the address is invariant.
21264         * tree-ssa-ccp.c (ccp_decl_initial_min_invariant): Remove.
21265         (get_symbol_constant_value): Use is_gimple_min_invariant.
21266         (maybe_fold_stmt_indirect): Likewise.
21267
21268 2008-03-22  Richard Sandiford  <rsandifo@nildram.co.uk>
21269
21270         PR rtl-optimization/33927
21271         * Makefile.in (dse.o): Depend on $(TM_P_H).
21272         * expr.h (extract_low_bits): Declare.
21273         * expmed.c (extract_low_bits): New function.
21274         * rtlhooks.c (gen_lowpart_general): Generalize SUBREG handling.
21275         * dse.c: Include tm_p.h.
21276         (find_shift_sequence): Remove the read_reg argument and return the
21277         read value.  Emit the instructions instead of returning them.
21278         Iterate on new_mode rather than calculating it each time.
21279         Check MODES_TIEABLE_P.  Use simplify_gen_subreg to convert the
21280         source to NEW_MODE and extract_low_bits to convert the shifted
21281         value to READ_MODE.
21282         (replace_read): Allow the load and store to have different mode
21283         classes.  Use extract_low_bits when SHIFT == 0.  Create the shift
21284         or extraction instructions before trying the replacement.  Update
21285         dump-file code accordingly, avoiding use of REGNO (store_info->rhs).
21286
21287 2008-03-22  Uros Bizjak  <ubizjak@gmail.com>
21288
21289         * config/i386/i386.c (assign_386_stack_local): Align DImode slots
21290         to their natural alignment to avoid store forwarding stalls.
21291
21292 2008-03-21  Andrew Pinski  <andrew_pinski@playstation.sony.com>
21293
21294         PR target/27946
21295         * config/rs6000/rs6000.md (floatdidf2): Discouraging fprs and
21296         encouraging but not allowing gprs for input;
21297         change the input constraint to !f#r.
21298         (fix_truncdfdi2): Discouraging fprs and encouraging but not allowing
21299         gprs for output;
21300         change the output constraint to !f#r.
21301
21302 2008-03-21  Uros Bizjak  <ubizjak@gmail.com>
21303
21304         PR target/13958
21305         * config/i386/i386.md ("*floatunssi<mode2>_1"): New pattern with
21306         corresponding post-reload splitters.
21307         ("floatunssi<mode>2"): Expand to unsigned_float x87 insn pattern
21308         when x87 FP math is selected.
21309         * config/i386/i386-protos.h (ix86_expand_convert_uns_sixf_sse):
21310         New function prototype.
21311         * config/i386/i386.c (ix86_expand_convert_uns_sixf_sse): New
21312         unreachable function to ease macroization of insn patterns.
21313
21314 2008-03-21  Martin Jambor  <mjambor@suse.cz>
21315
21316         * tree-data-ref.c (dump_data_dependence_relation): Avoid data
21317         reference dumps if ddr is NULL or dependence is unknown.
21318
21319 2008-03-20  Kaz Kojima  <kkojima@gcc.gnu.org>
21320
21321         * config/sh/linux-atomic.asm (ATOMIC_TEST_AND_SET): Take
21322         unsigned extension into account.
21323         (ATOMIC_COMPARE_AND_SWAP): Likewise.
21324         (ATOMIC_FETCH_AND_OP, ATOMIC_FETCH_AND_COMBOP): Likewise.
21325         Do computations on a scratch register.
21326
21327 2008-03-21  Richard Guenther  <rguenther@suse.de>
21328
21329         * tree-scalar-evolution.c (chrec_contains_symbols_defined_in_loop):
21330         Use is_gimple_min_invariant instead of TREE_INVARIANT.
21331         * tree-ssa-loop-ivopts.c (force_expr_to_var_cost): Likewise.
21332         * tree-ssa-dom.c (record_equality): Likewise.
21333         * tree-inline.c (copy_body_r): Likewise.
21334         * tree-ssa-pre.c (make_values_for_stmt): Remove test for
21335         TREE_INVARIANT.
21336
21337 2008-03-20  Kaz Kojima  <kkojima@gcc.gnu.org>
21338
21339         * config/sh/sh.c (split_branches): Pass zero to redirect_jump
21340         as 'delete_unused' argument.
21341
21342 2008-03-20  Richard Guenther  <rguenther@suse.de>
21343
21344         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Remove
21345         special casing of constant qualifiers.
21346         * tree-ssa.c (useless_type_conversion_p_1): Instead do not
21347         care about them in general.
21348         * tree-ssa-ccp.c (ccp_fold): Addresses are constant or not
21349         regardless of their type.
21350         (fold_stmt_r): Forcefully fold *& if we end up with that.
21351
21352 2008-03-20  Paul Brook  <paul@codesourcery.com>
21353
21354         * config.gcc (arm*-*-uclinux*): Remove duplicate arm/uclinux-elf.h.
21355         * config/arm/uclinux-eabi.h (SUBTARGET_EXTRA_LINK_SPEC): Add extra
21356         linker flags.
21357         * config/arm/bpabi.h (SUBTARGET_EXTRA_LINK_SPEC): Provide default
21358         definition.
21359         (LINK_SPEC): Use SUBTARGET_EXTRA_LINK_SPEC.
21360         * config/arm/unwind-arm.h (_Unwind_decode_target2): Add uClinux.
21361
21362 2008-03-20  Volker Reichelt  <v.reichelt@netcologne.de>
21363
21364         * common.opt (Wmudflap): New option.
21365         * tree-mudflap.c (mf_xform_derefs_1): Guard warning by OPT_Wmudflap.
21366         (mx_register_decls): Likewise.
21367         (mudflap_finish_file): Likewise.
21368         * doc/invoke.texi: Document -Wno-mudflap.
21369
21370 2008-03-20  Kai Tietz  <kai.tietz@onevision.com>
21371
21372         * c-format.c (replace_format_name_to_system_name): New.
21373         (cmp_attribs): New.
21374         (convert_format_name_to_system_name): New.
21375         (decode_format_attr): Add use of convert_format_name_to_system_name.
21376         (format_types_orig): Add gnu_ prefix to names.
21377         (check_format_info_main): Special treating of \0 escaped names for
21378         supporting multi-character format specifiers as I32, I64.
21379         (TARGET_OVERRIDES_FORMAT_ATTRIBUTES): Use of user defined attributes.
21380         (gnu_target_overrides_format_attributes): New.
21381         * c-format.h: Add structure target_ovr_attr to hold
21382         system specific formatter names.
21383         * config.gcc: Add for x86&x86_64 cygwin and mingw32 targets the
21384         msformat-c.o file to c_target_objs and cxx_target_objs.
21385         * config/i386/mingw32.h (TARGET_OVERRIDES_FORMAT_ATTRIBUTES): New.
21386         (TARGET_OVERRIDES_FORMAT_ATTRIBUTES_COUNT): New.
21387         (TARGET_N_FORMAT_TYPES): New.
21388         * config/i386/msformat-c.c: New.
21389         * config/i386/t-cygming: Add build rule for msformat-c.o.
21390         * doc/extend.texi: Add new format names gnu_* and ms_* and
21391         further details.
21392         * doc/tm.texi: (TARGET_OVERRIDES_FORMAT_ATTRIBUTES): New.
21393
21394 2008-03-20  Ira Rosen  <irar@il.ibm.com>
21395
21396         * doc/invoke.texi (-O3): Add -ftree-vectorize to the list of
21397         optimizations turned on under -O3.
21398         (ftree-vectorize): Add that the flag is turned on with -O3.
21399
21400 2008-03-20  Ben Elliston  <bje@au.ibm.com>
21401
21402         * regmove.c (try_auto_increment): Fix spelling error in comment.
21403         * final.c (final_scan_insn): Likewise.
21404
21405 2008-03-20  Uros Bizjak  <ubizjak@gmail.com>
21406
21407         PR target/14552
21408         * config/i386/mmx.md (*mov<mode>_internal_rex64"): Adjust register
21409         allocator preferences for "y" and "r" class registers.
21410         ("*mov<mode>_internal"): Ditto.
21411         ("*movv2sf_internal_rex64"): Ditto.
21412         ("*movv2sf_internal"): Ditto.
21413
21414 2008-03-19  Michael Matz  <matz@suse.de>
21415
21416         PR middle-end/35616
21417         * calls.c (expand_call): Check overlap of arguments with call
21418         address for sibcalls.
21419
21420 2008-03-19  Uros Bizjak  <ubizjak@gmail.com>
21421
21422         PR target/35496
21423         * stor-layout.c (update_alignment_for_field): Set minimum alignment
21424         of the underlying type of a MS bitfield layout to the natural
21425         alignment of the type.
21426
21427 2008-03-19  Jan Hubicka  <jh@suse.cz>
21428
21429         PR other/35094
21430         * toplev.c (decode_d_option): Handle all CPP flags.
21431         * tree-vrp.c: Update tree_pass descriptors.
21432         * regrename.c: Update tree_pass descriptors.
21433         * fwprop.c: Update tree_pass descriptors.
21434         * doc/invoke.texi: Remove documentation of dropped -d? flags.
21435         * tree-into-ssa.c: Update tree_pass descriptors.
21436         * tree-dump.c: Update tree_pass descriptors.
21437         * tree-complex.c: Update tree_pass descriptors.
21438         * tree-dump.h: Update tree_pass descriptors.
21439         * see.c: Update tree_pass descriptors.
21440         * cgraphbuild.c: Update tree_pass descriptors.
21441         * tracer.c: Update tree_pass descriptors.
21442         * tree-loop-distribution.c: Update tree_pass descriptors.
21443         * cgraph.c: Update tree_pass descriptors.
21444         * postreload-gcse.c: Update tree_pass descriptors.
21445         * postreload.c: Update tree_pass descriptors.
21446         * tree-ssa-loop-ch.c: Update tree_pass descriptors.
21447         * tree-tailcall.c: Update tree_pass descriptors.
21448         * tree-pass.h (tree_opt_pass): Rename to ...
21449         (opt_pass) ... this one; add "type" field and remove letter field.
21450         (gimple_opt_pass, rtl_opt_pass, simple_ipa_opt_pass): New.
21451         (execute_pass_list, execute_ipa_pass_list, all_passes, all_ipa_passes,
21452         all_lowering_passes): Update declaration.
21453         * ipa-cp.c: Update tree_pass descriptors.
21454         * final.c: Update tree_pass descriptors.
21455         * omp-low.c: Update tree_pass descriptors.
21456         * tree-ssa-dse.c: Update tree_pass descriptors.
21457         * ipa-reference.c: Update tree_pass descriptors.
21458         * tree-ssa-uncprop.c: Update tree_pass descriptors.
21459         * auto-inc-dec.c: Update tree_pass descriptors.
21460         * reorg.c: Update tree_pass descriptors.
21461         * cgraphunit.c: Update tree_pass descriptors.
21462         * tree-ssa-copyrename.c: Update tree_pass descriptors.
21463         * tree-ssa-ccp.c: Update tree_pass descriptors.
21464         * df-core.c: Update tree_pass descriptors.
21465         * mode-switching.c: Update tree_pass descriptors.
21466         * tree-nomudflap.c: Update tree_pass descriptors.
21467         * modulo-sched.c: Update tree_pass descriptors.
21468         * ipa-pure-const.c: Update tree_pass descriptors.
21469         * cse.c: Update tree_pass descriptors.
21470         * web.c: Update tree_pass descriptors.
21471         * tree-stdarg.c: Update tree_pass descriptors.
21472         * tree-ssa-math-opts.c: Update tree_pass descriptors.
21473         * tree-ssa-dom.c: Update tree_pass descriptors.
21474         * tree-nrv.c: Update tree_pass descriptors.
21475         * tree-ssa-alias.c: Update tree_pass descriptors.
21476         * loop-init.c: Update tree_pass descriptors.
21477         * gimple-low.c: Update tree_pass descriptors.
21478         * ipa-inline.c: Update tree_pass descriptors.
21479         * tree-ssa-sink.c: Update tree_pass descriptors.
21480         * global.c: Update tree_pass descriptors.
21481         * ifcvt.c: Update tree_pass descriptors.
21482         * jump.c: Update tree_pass descriptors.
21483         * predict.c: Update tree_pass descriptors.
21484         * tree-ssa-loop.c: Update tree_pass descriptors.
21485         * recog.c: Update tree_pass descriptors.
21486         * dse.c: Update tree_pass descriptors.
21487         * tree-ssa-ifcombine.c: Update tree_pass descriptors.
21488         * tree-eh.c: Update tree_pass descriptors.
21489         * regmove.c: Update tree_pass descriptors.
21490         * local-alloc.c
21491         * function.c: Update tree_pass descriptors.
21492         * tree-vectorizer.c: Update tree_pass descriptors.
21493         * gcse.c: Update tree_pass descriptors.
21494         * ipa-type-escape.c: Update tree_pass descriptors.
21495         * tree-if-conv.c: Update tree_pass descriptors.
21496         * init-regs.c: Update tree_pass descriptors.
21497         * ipa.c: Update tree_pass descriptors.
21498         * tree-ssa-phiopt.c: Update tree_pass descriptors.
21499         * rtl-factoring.c: Update tree_pass descriptors.
21500         * lower-subreg.c: Update tree_pass descriptors.
21501         * bt-load.c: Update tree_pass descriptors.
21502         * tree-dfa.c: Update tree_pass descriptors.
21503         * except.c: Update tree_pass descriptors.
21504         * emit-rtl.c: Update tree_pass descriptors.
21505         * cfgexpand.c: Update tree_pass descriptors.
21506         * tree-cfgcleanup.c: Update tree_pass descriptors.
21507         * cfgcleanup.c: Update tree_pass descriptors.
21508         * tree-ssa-pre.c: Update tree_pass descriptors.
21509         * tree-sra.c: Update tree_pass descriptors.
21510         * tree-mudflap.c: Update tree_pass descriptors.
21511         * tree-ssa-copy.c: Update tree_pass descriptors.
21512         * cfglayout.c: Update tree_pass descriptors.
21513         * tree-ssa-forwprop.c: Update tree_pass descriptors.
21514         * tree-ssa-dce.c: Update tree_pass descriptors.
21515         * tree-ssa.c: Update tree_pass descriptors.
21516         * regclass.c: Update tree_pass descriptors.
21517         * integrate.c: Update tree_pass descriptors.
21518         * tree-optimize.c: Update tree_pass descriptors.
21519         * tree-ssa-phiprop.c: Update tree_pass descriptors.
21520         * tree-object-size.c: Update tree_pass descriptors.
21521         * combine.c: Update tree_pass descriptors.
21522         * tree-outof-ssa.c: Update tree_pass descriptors.
21523         * bb-reorder.c: Update tree_pass descriptors.
21524         * stack-ptr-mod.c: Update tree_pass descriptors.
21525         * var-tracking.c: Update tree_pass descriptors.
21526         * tree-profile.c: Update tree_pass descriptors.
21527         * tree-vect-generic.c: Update tree_pass descriptors.
21528         * reg-stack.c: Update tree_pass descriptors.
21529         * sched-rgn.c: Update tree_pass descriptors.
21530         * tree-ssa-structalias.c: Update tree_pass descriptors.
21531         * tree-cfg.c: Update tree_pass descriptors.
21532         * passes.c (current_pass): Update declaration.
21533         (finish_optimization_passes): Update.
21534         (all_passes, all_ipa_passes, all_lowering_passes): Update declaration.
21535         (register_one_dump_file, register_dump_files_1, next_pass_1):
21536         Update arguments.
21537         (init_optimization_passes): Update handling of new types.
21538         (execute_one_pass, execute_pass_list, execute_ipa_pass_list): Update.
21539         * ipa-struct-reorg.c: Update tree_pass descriptors.
21540         * tree-ssa-reassoc.c: Update tree_pass descriptors.
21541         * combine-stack-adj.c: Update tree_pass descriptors.
21542         * cfgrtl.c: Update tree_pass descriptors.
21543         * dce.c: Update tree_pass descriptors.
21544         * tree-ssanames.c: Update tree_pass descriptors.
21545
21546 2008-03-19  Richard Guenther  <rguenther@suse.de>
21547
21548         PR middle-end/35609
21549         * tree-ssa.c (walk_data): New structure.
21550         (warn_uninitialized_var): If not always_executed warn with "maybe"
21551         instead of "is".
21552         (execute_early_warn_uninitialized): Compute post-dominators.
21553         Initialize always_executed before processing each basic block.
21554
21555 2008-03-18  Mikulas Patocka  <mikulas@artax.karlin.mff.cuni.cz>
21556
21557         PR target/35504
21558         * config/i386/i386.c (x86_this_parameter): Calculate correct location
21559         of "this" pointer when "regparm = N" or "fastcall" is in effect.
21560
21561 2008-03-18  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
21562
21563         * doc/include/texinfo.tex: Update to version 2008-03-17.10.
21564
21565 2008-03-18  Paolo Bonzini  <bonzini@gnu.org>
21566
21567         * expr.c (store_expr): Assume lang_hooks.reduce_bit_field_operations
21568         is true.
21569         (expand_expr_real_1) <REDUCE_BIT_FIELD>: Don't look at ignore.
21570         (expand_expr_real_1): Assume lang_hooks.reduce_bit_field_operations
21571         is true.  Add "&& !ignore" condition to reduce_bit_field.  Modify
21572         target after ignore has been set, and move there also the commputation
21573         of subtarget and original_target.
21574         * langhooks-def.h (LANG_HOOKS_REDUCE_BIT_FIELD_OPERATIONS): Delete.
21575         (LANG_HOOKS_INITIALIZER): Remove it.
21576         * langhooks.h (struct lang_hooks): Remove reduce_bit_field_operations.
21577
21578 2008-03-18  Richard Guenther  <rguenther@suse.de>
21579
21580         * tree-ssa-sccvn.c (visit_reference_op_load): If the lookup
21581         found an expression with constants, note that in the VN for the lhs.
21582         * tree-ssa-pre.c (eliminate): Visit COND_EXPR statements and
21583         fold them to constants if possible.  Run cleanup_cfg if done so.
21584         (execute_pre): Return todo.
21585         (do_pre): Likewise.
21586         (execute_fre): Likewise.
21587         * tree-ssa-forwprop.c (can_propagate_from): Allow propagation
21588         of constants.
21589         (get_prop_source_stmt): Look through pointer conversions.
21590
21591 2008-03-18  Jan Hubicka  <jh@suse.cz>
21592
21593         * tree-pretty-print.c: Include predict.h.
21594         (dump_generic_node): Dump predictor.
21595         * tree.h (PREDICT_EXPR_OUTCOME, PREDICT_EXPR_PREDICTION): Update.
21596         * tree-gimple.c (is_gimple_stmt): Add PREDICT_EXPR.
21597         * gimple-low.c (lower_stmt): Likewise.
21598         * expr.c (expand_expr_real): Likewise.
21599         * predict.c (tree_bb_level_predictions): Use PREDICT_EXPRs and remove
21600         them.
21601         (build_predict_expr, build_predict_expr): New.
21602         * predict.h (predictor_name, build_predict_expr): Update.
21603         * c-typeck.c (c_finish_bc_stmt): Add prediction.
21604         * gimplify.c (gimplify_expr): Add PREDICT_EXPR.
21605         * predict.def (PRED_CONTINUE): Update hitrate.
21606         * tree.def (PREDICT_EXPR): Define.
21607         * tree-ssa-dce.c (mark_stmt_if_obviously_necessary): Mark PREDICT_EXPR;
21608         do not handle BIND_EXPR.
21609         * tree-inline.c (estimate_num_insns_1): PREDICT_EXPR is free.
21610         * tree-cfg.c (verify_gimple_stmt): PREDICT_EXPR is valid.
21611         * tree-ssa-operands.c (get_expr_operands): PREDICT_EXPR takes no
21612         operands.
21613
21614 2008-03-18  Michael Matz  <matz@suse.de>
21615
21616         * gcov-io.h (__gcov_merge_ior, __gcov_fork): Mark hidden.
21617
21618 2008-03-18  Richard Guenther  <rguenther@suse.de>
21619
21620         * tree-gimple.h (is_gimple_invariant_address): Declare.
21621         (is_gimple_constant): Likewise.
21622         * tree-gimple.c (is_gimple_constant): New function.
21623         (is_gimple_invariant_address): Likewise.
21624         (is_gimple_min_invariant): Implement in terms of is_gimple_constant
21625         and is_gimple_invariant_address.
21626         * tree-ssa-loop-niter.c (expand_simple_operations): Revert
21627         previous change.
21628         * tree-data-ref.c (get_references_in_stmt): A SSA_NAME is not
21629         an addressable base.
21630
21631 2008-03-18  Jakub Jelinek  <jakub@redhat.com>
21632
21633         PR middle-end/35611
21634         * gimplify.c (gimplify_expr): Gimplify second operand of
21635         OMP_ATOMIC_LOAD.
21636
21637 2008-03-17  Richard Guenther  <rguenther@suse.de>
21638
21639         PR tree-optimization/19637
21640         * fold-const.c (fold_unary): Remove restrictions of removing
21641         intermediate pointer-conversions (P2)(P1)P0.
21642         * tree-ssa-ccp.c (maybe_fold_stmt_addition): Recover from
21643         conversion to void pointer.
21644         (get_maxval_strlen): Handle addresses of the form &(*p)[0].
21645
21646 2008-03-16  James E. Wilson  <wilson@tuliptree.org>
21647
21648         PR debug/31510
21649         * dbxout.c (dbxout_expand_expr, case VAR_DECL): Return NULL for
21650         emulated thread local variables.
21651
21652 2008-03-16  Richard Guenther  <rguenther@suse.de>
21653
21654         PR middle-end/35607
21655         * tree-ssa-loop-niter.c (expand_simple_operations): Do not
21656         expand TREE_INVARIANT operations that are not gimple invariant.
21657
21658 2008-03-16  Hans-Peter Nilsson  <hp@axis.com>
21659
21660         * doc/extend.texi (Alignment): Say that the ABI controls
21661         the __alignof__ for non-strict-alignment targets rather
21662         than being a recommendation.
21663
21664 2008-03-15  Paul Brook  <paul@codesourcery.com>
21665
21666         * config/arm/arm.c (arm_unwind_emit): Suppress unused unwinding
21667         annotations.
21668         (arm_output_fn_unwind): Mark functions that can not be unwound.
21669
21670 2008-03-15  Paul Brook  <paul@codesourcery.com>
21671
21672         * config/arm/arm.c (arm_rtx_costs_1): Add costs for ARMv6 value
21673         extension instructions.
21674
21675 2008-03-15  Richard Guenther  <rguenther@suse.de>
21676
21677         * tree-ssa-ccp.c (ccp_fold): Also read from constant values
21678         and fold constant aggregate refs.
21679         (fold_const_aggregate_ref): Handle string constants
21680         and constructors in ARRAY_REFs.  Handle INDIRECT_REF.
21681         (evaluate_stmt): Simplify now that ccp_fold folds constant
21682         aggregate refs.
21683
21684 2008-03-15  Paul Brook  <paul@codesourcery.com>
21685
21686         * config/arm/arm.md (insv): Use gen_insv_t2 and gen_insv_zero.
21687         (extzv): Use gen_extzv_t2.
21688         (insv_t2, insv_zero, extv, extzv_t2): New patterns.
21689
21690 2008-03-15  Richard Guenther  <rguenther@suse.de>
21691
21692         * tree-ssa-ccp.c (get_symbol_constant_value): Export.
21693         (fold_const_aggregate_ref): Likewise.
21694         (get_value): Return NULL if we don't have any values.
21695         (ccp_finalize): Set const_val to NULL after freeing it.
21696         * tree-flow.h (get_symbol_constant_value): Declare.
21697         (fold_const_aggregate_ref): Likewise.
21698         * tree-ssa-sccvn.c (try_to_simplify): Use them.
21699
21700 2008-03-15  Richard Guenther  <rguenther@suse.de>
21701
21702         PR middle-end/35593
21703         * tree-ssa-ccp.c (maybe_fold_offset_to_array_ref): Make sure
21704         to not produce negative array indices if not allowed.  Add
21705         parameter to indicate that.
21706         (maybe_fold_offset_to_component_ref): Allow negative array
21707         indices only for the first member of a structure.
21708         (maybe_fold_offset_to_reference): Allow negative array indices.
21709         (maybe_fold_stmt_addition): Likewise.
21710
21711 2008-03-15  Bjoern Haase  <bjoern.m.haase@web.de>
21712             Anatoly Sokolov <aesok@post.ru>
21713
21714         * config/avr/avr.c (avr_arch_types): Add avr6 entry.
21715         (avr_arch): Add ARCH_AVR6.
21716         (avr_mcu_types): Add 'atmega2560' and 'atmega2561' entry.
21717         (initial_elimination_offset): Initialize and use 'avr_pc_size'
21718         instead of fixed value 2.
21719         (print_operand_address): Use gs() asm specifier instead of pm().
21720         (avr_assemble_integer): (Ditto.).
21721         (avr_output_addr_vec_elt): (Ditto.).
21722         (print_operand): Handle "!" code.
21723         * config/avr/avr.h (TARGET_CPU_CPP_BUILTINS): Add
21724         __AVR_3_BYTE_PC__, __AVR_2_BYTE_PC__ and __AVR_HAVE_JMP_CALL__.
21725         (AVR_HAVE_EIJMP_EICALL): Define.
21726         (AVR_3_BYTE_PC): Redefine.
21727         (AVR_2_BYTE_PC): (Ditto.).
21728         (PRINT_OPERAND_PUNCT_VALID_P): Add '!' code.
21729         (LINK_SPEC): Add atmega2560 and atmega2561.
21730         (CRT_BINUTILS_SPEC): Add atmega2560 (crtm2560.o) and atmega2561
21731         (crtm2561.o).
21732         * config/avr/avr.md (call_insn): Use eicall instead of icall
21733         for 3 byte PC devices.
21734         (call_value_insn): (Ditto.).
21735         (*tablejump_enh): Use eijmp instead of ijmp for 3 byte PC devices.
21736         (indirect_jump): Use only for for 2 byte PC devices.
21737         (*tablejump): (Ditto.).
21738         (*indirect_jump_avr6): Add insn.
21739         (*tablejump_rjmp): Don't use for 3 byte PC devices.
21740         * config/avr/libgcc.S (__prologue_saves__): Use eijmp
21741         instead of ijmp for 3 byte PC devices.
21742         (__tablejump2__): (Ditto.).
21743         * config/avr/t-avr (MULITLIB_OPTIONS): Add avr6 architecture.
21744         (MULITLIB_DIRNAMES): (Ditto.).
21745         (MULTILIB_MATCHES): Add atmega2560 and atmega2561 to list.
21746
21747 2008-03-15  Uros Bizjak  <ubizjak@gmail.com>
21748
21749         * config/i386/mmx.md ("sse2_umulv1siv2di3"): Rename from
21750         "sse2_umulsidi3".  Use V1DI mode for operand 0.
21751         ("mmx_psadbw"): Use V1DI mode for operand 0.
21752         * config/i386/i386-modes.def (V1SI): New vector mode.
21753         * config/i386/i386.c (struct builtin_description)
21754         [IX86_BUILTIN_PMULUDQ]: Use CODE_FOR_sse2_umulv1siv1di3.
21755         (v1di_ftype_v8qi_v8qi): Rename from di_ftype_v8qi_v8qi.
21756         (v1di_ftype_v2si_v2si): Rename from di_ftype_v2si_v2si.
21757         (ix86_init_mmx_sse_builtins) [__builtin_ia32_psadbw]: Use
21758         v1di_ftype_v8qi_v8qi type.
21759         [__builtin_ia32_pmuludq]: Use v1di_ftype_v2si_v2si type.
21760
21761         * doc/extend.texi (X86 Built-in Functions) [__builtin_ia32_psadbw,
21762         __builtin_ia32_pmuludq]: Fix the mode of return value.
21763
21764 2008-03-15  Richard Guenther  <rguenther@suse.de>
21765
21766         PR middle-end/35595
21767         * tree-ssa-pre.c (bitmap_find_leader): Handle expression
21768         being a PHI_NODE.
21769
21770 2008-03-14  Bob Wilson  <bob.wilson@acm.org>
21771
21772         * doc/invoke.texi (Option Summary, Xtensa Options): Document
21773         -mserialize-volatile and -mno-serialize-volatile Xtensa options.
21774         * config/xtensa/xtensa.c (print_operand): Do not emit MEMW instructions
21775         unless TARGET_SERIALIZE_VOLATILE is enabled.
21776         * config/xtensa/xtensa.md (*lsiu, *ssiu): Likewise.
21777         * config/xtensa/xtensa.h (TARGET_DEFAULT): Add MASK_SERIALIZE_VOLATILE.
21778         * config/xtensa/xtensa.opt (mserialize_volatile): New option.
21779
21780 2008-03-14  Richard Guenther  <rguenther@suse.de>
21781
21782         PR tree-optimization/34172
21783         * tree-flow.h (refs_may_alias_p): Declare.
21784         (get_single_def_stmt): Likewise.
21785         (get_single_def_stmt_from_phi): Likewise.
21786         (get_single_def_stmt_with_phi): Likewise.
21787         * tree-dfa.c (refs_may_alias_p): New function.
21788         (get_single_def_stmt): Likewise.
21789         (get_single_def_stmt_from_phi): Likewise.
21790         (get_single_def_stmt_with_phi): Likewise.
21791         * tree-ssa-sccvn.c (get_def_ref_stmt_vuses): New function.
21792         (vn_reference_lookup_1): New helper function.
21793         (vn_reference_lookup): Walk the virtual use-def chain to
21794         continue searching for a match if the def does not alias the
21795         reference we are looking for.
21796
21797 2008-03-14  David Edelsohn  <edelsohn@gnu.org>
21798
21799         * doc/install.texi (Binaries): Remove UCLA archive.  Add HVCC
21800         archive and Perzl.  Update The Written Word listing.
21801
21802 2008-03-14  Richard Guenther  <rguenther@suse.de>
21803
21804         PR tree-optimization/34043
21805         PR tree-optimization/33989
21806         * tree-ssa-pre.c (execute_pre): Allow SCCVN to do insertion
21807         when doing FRE.
21808         (bitmap_find_leader): Use extra argument to verify dominance
21809         relationship inside a basic-block.
21810         (can_PRE_operation): Add VIEW_CONVERT_EXPR.
21811         (find_leader_in_sets): Adjust.
21812         (create_component_ref_by_pieces): Take extra argument for
21813         dominance check, handle lookup failures.
21814         (find_or_generate_expression): Likewise.
21815         (create_expression_by_pieces): Likewise.
21816         (insert_into_preds_of_block): Adjust.
21817         (create_value_expr_from): If asked for, verify all operands
21818         are in the blocks AVAIL_OUT set.
21819         (make_values_for_stmt): Check for SSA_NAMEs that are life
21820         over an abnormal edge.
21821         (compute_avail): Remove such check.
21822         (do_SCCVN_insertion): New function.
21823         (eliminate): If we do not find a leader suitable for replacement
21824         insert a replacement expression from SCCVN if available.
21825         * tree-ssa-sccvn.h (run_scc_vn): Update prototype.
21826         (struct vn_ssa_aux): Add needs_insertion flag.
21827         * tree-ssa-sccvn.c (may_insert): New global flag.
21828         (copy_reference_ops_from_ref): Value-number union member access
21829         based on its size, not type and member if insertion is allowed.
21830         (visit_reference_op_load): For a weak match from union type
21831         punning lookup a view-converted value and insert a SSA_NAME
21832         for that value if that is not found.
21833         (visit_use): Make dumps shorter.  Do not disallow value numbering
21834         SSA_NAMEs that are life over an abnormal edge to constants.
21835         (free_scc_vn): Release inserted SSA_NAMEs.
21836         (run_scc_vn): New flag to specify whether insertion is allowed.
21837         Process SSA_NAMEs in forward order.
21838         * tree-ssa-loop-im.c (for_each_index): Handle invariant
21839         ADDR_EXPRs inside VIEW_CONVERT_EXPR.
21840         * fold-const.c (fold_unary): Fold VIEW_CONVERT_EXPRs from/to
21841         pointer type to/from integral types that do not change the
21842         precision to regular conversions.
21843
21844 2008-03-13  Uros Bizjak  <ubizjak@gmail.com>
21845
21846         * doc/extend.texi (X86 Built-in Functions) [__builtin_ia32_psll?,
21847         __builtin_ia32_psrl?, __builtin_ia32_psra?, __builtin_ia32_psll?i,
21848         __builtin_ia32_psrl?i, __builtin_ia32_psra?i, __builtin_ia32_psll?128,
21849         __builtin_ia32_psrl?128, __builtin_ia32_psra?128]: Fix the mode of
21850         input arguments and the mode of return value.  Built-in functions
21851         that operate on whole 64-bit MMX register now use V1DI mode.
21852
21853 2008-03-13  Alon Dayan  <alond@il.ibm.com>
21854             Olga Golovanevsky  <olga@il.ibm.com>
21855
21856         PR tree-optimization/35041
21857         * ipa-struct-reorg.c (find_pos_in_stmt_1): Add another option
21858         to locate the right position in a statement.
21859
21860 2008-03-13  Uros Bizjak  <ubizjak@gmail.com>
21861
21862         PR target/34000
21863         PR target/35553
21864         * config/i386/xmmintrin.h:  Change all static inline functions to
21865         extern inline and add __gnu_inline__ attribute.
21866         * config/i386/bmintrin.h: Ditto.
21867         * config/i386/smmintrin.h: Ditto.
21868         * config/i386/tmmintrin.h: Ditto.
21869         * config/i386/mmintrin-common.h: Ditto.
21870         * config/i386/ammintrin.h: Ditto.
21871         * config/i386/emmintrin.h: Ditto.
21872         * config/i386/pmmintrin.h: Ditto.
21873         * config/i386/mmintrin.h: Ditto.
21874         * config/i386/mm3dnow.h: Ditto.
21875
21876 2008-03-13  Jakub Jelinek  <jakub@redhat.com>
21877
21878         PR middle-end/35185
21879         * omp-low.c (lower_regimplify, init_tmp_var, save_tmp_var): Removed.
21880         (lower_omp_2): New function.
21881         (lower_omp_1, lower_omp): Rewritten.
21882
21883 2008-03-13  Danny Smith  <dannysmith@users.sourceforge.net>
21884
21885         PR 35054
21886         * doc/extend.texi (Structure-Packing Pragmas): Replace "Win32"
21887         with the phrase "Microsoft Windows compilers".
21888         (Push/Pop Macro Pragmas): New subsection. Document
21889         #pragma push_macro and pragma pop_macro.
21890
21891 2008-03-12  Paul Brook  <paul@codesourcery.com>
21892
21893         * config/arm/arm.c (output_move_double): Prefer LDRD to LDM.
21894
21895 2008-03-12  Paul Brook  <paul@codesourcery.com>
21896
21897         * config/arm/thumb2.md: Extend peephole to cover 3-arg subs.
21898         (thumb2_alusi3_short): Exclude PLUS and MINUS.
21899         (thumb2_addsi_shortim): Rename ...
21900         (thumb2_addsi_short): ... to this.  Allow register operands.
21901         (thumb2_subsi_short): New pattern.
21902         (thumb2_one_cmplsi2_short,
21903         thumb2_negsi2_short): New patterns and peepholes.
21904
21905 2008-03-12  Paul Brook  <paul@codesourcery.com>
21906
21907         * config/arm/arm.c (arm_size_rtx_costs): Use ARM costs for Thumb-2.
21908
21909 2008-03-12  Uros Bizjak  <ubizjak@gmail.com>
21910
21911         * config/i386/i386.md (int_cond): New code iterator.
21912         (fp_cond): Ditto.
21913         ("s<code>"): Macroize expander from seq, sne, sgt, sgtu, slt, sltu,
21914         sge, sgeu, sle and sleu expanders usign int_cond code iterator.
21915         ("s<code>"): Macroize expander from sunordered, sordered, suneq, sunge,
21916         sungt, sunle, sunlt and sltgt expanders usign fp_cond code iterator.
21917         ("b<code>"): Macroize expander from beq, bne, bgt, bgtu, blt, bltu,
21918         bge, bgeu, ble and bleu expanders usign int_cond code iterator.
21919         ("b<code>"): Macroize expander from bunordered, bordered, buneq, bunge,
21920         bungt, bunle, bunlt and bltgt expanders usign fp_cond code iterator.
21921
21922 2008-03-12  Paul Brook  <paul@codesourcery.com>
21923
21924         * config/arm/arm.c (use_return_insn): Use offsets->saved_regs_mask
21925         instead of {arm,thumb}_compute_save_reg_mask.
21926         (output_return_instruction): Ditto.
21927         (thumb_unexpanded_epilogue): Ditto.
21928         (thumb1_expand_prologue): Ditto.
21929         (thumb1_output_function_prologue): Ditto.
21930         (arm_set_return_address): Ditto.
21931         (thumb_set_return_address): Ditto.
21932         (arm_get_frame_offsets): Set offsets->saved_regs_mask.  Push extra
21933         regs to achieve stack alignment.
21934         (thumb1_compute_save_reg_mask): Fix compiler warning.
21935         (arm_output_epilogue): Use offsets->saved_regs_mask.
21936         Adjust stack pointer by poping call clobered registers.
21937         (arm_expand_prologue): Use offsets->saved_regs_mask.
21938         Adjust stack pointer by pushing extra registers.
21939         * config/arm.h (arm_stack_offsets): Add saved_regs_mask.
21940
21941 2008-03-12  Paolo Bonzini  <bonzini@gnu.org>
21942
21943         PR tree-opt/35422
21944         * fold-const.c (fold_unary) <NOP_EXPR>: Distribute a narrowing
21945         conversion to the operands of a multiplication.
21946
21947 2008-03-12  Richard Guenther  <rguenther@suse.de>
21948
21949         * Makefile.in (OBJS-common): Add tree-ssa-phiprop.o
21950         (tree-ssa-phiprop.o): Copy dependencies from tree-ssa-forwprop.o.
21951         * timevar.def (TV_TREE_PHIPROP): Add.
21952         * tree-ssa-phiprop.c: Split from tree-ssa-forwprop.c, added
21953         pass description.  Use TV_TREE_PHIPROP.
21954         * tree-ssa-forwprop.c: Remove phiprop code.
21955
21956 2008-03-12  Jakub Jelinek  <jakub@redhat.com>
21957
21958         PR middle-end/35549
21959         * omp-low.c (maybe_lookup_decl): Constify first argument.
21960         (use_pointer_for_field): Change last argument from bool to
21961         omp_context *.  Disallow shared copy-in/out in nested
21962         parallel if decl is shared in outer parallel too.
21963         (build_outer_var_ref, scan_sharing_clauses,
21964         lower_rec_input_clauses, lower_copyprivate_clauses,
21965         lower_send_clauses, lower_send_shared_vars): Adjust callers.
21966
21967 2008-03-12  Victor Kaplansky  <victork@il.ibm.com>
21968             Ira Rosen  <irar@il.ibm.com>
21969
21970         * tree-vectorizer.c (free_stmt_vec_info): New function.
21971         (destroy_loop_vec_info): Move code to free_stmt_vec_info().
21972         Call free_stmt_vec_info(). Free LOOP_VINFO_STRIDED_STORES..
21973         * tree-vectorizer.h (free_stmt_vec_info): Declare.
21974         * tree-vect-transform.c (vectorizable_conversion): Free
21975         vec_oprnds0 if it was allocated.
21976         (vect_permute_store_chain): Remove unused VECs.
21977         (vectorizable_store): Free VECs that are allocated in the..
21978         function.
21979         (vect_transform_strided_load, vectorizable_load): Likewise.
21980         (vect_remove_stores): Simplify the code.
21981         (vect_transform_loop): Move code to vect_remove_stores().
21982         Call vect_remove_stores() and free_stmt_vec_info().
21983
21984 2008-03-11  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
21985
21986         * pa.h (TARGET_LONG_PIC_SDIFF_CALL): Conditionalize define on
21987         TARGET_HPUX.  Revise comment.
21988         (TARGET_LONG_PIC_PCREL_CALL): Revise comment.
21989         * pa.c (output_call): Update for revised TARGET_LONG_PIC_SDIFF_CALL.
21990         Use sr4 variant of `be' instruction when not generating PIC code.
21991         (attr_length_call): Adjust for above change.
21992
21993 2008-03-11  Andrew Pinski  <andrew_pinski@playstation.sony.com>
21994
21995         * ipa-reference.c (static_execute): Remove module_statics_const and
21996         associated setting code.
21997
21998 2008-03-11  Uros Bizjak  <ubizjak@gmail.com>
21999
22000         PR target/35540
22001         * config/i386/i386.md (paritysi2, paritydi2): Use register_operand
22002         predicate for operand 1.
22003         (paritysi2_cmp): Use register_operand predicate for operand 2.
22004         Use earlyclobber modifier for operand 1.  Remove support for
22005         memory operands.
22006         (paritydi2_cmp): Use register_operand predicate for operand 3.
22007         Use earlyclobber modifier for operand 1.  Remove support for
22008         memory operands.
22009
22010 2008-03-11  Paul Brook  <paul@codesourcery.com>
22011             Vladimir Prus  <vladimir@codesourcery.com>
22012
22013         * config/arm/arm.c (use_return_insn): Check TARGET_APCS_FRAME.
22014         (arm_compute_save_reg0_reg12_mask): Always
22015         check if register 11 must be saved.  Always safe hard frame pointer
22016         when frame_pointer_needeed.
22017         (arm_compute_save_reg_mask): Save IP and PC
22018         only with apcs frames.
22019         (arm_output_epilogue): Adjust Thumb2 codepath to
22020         be also invoked and work for ARM non-apcs frames.
22021         (arm_expand_prologue): Don't bother saving IP
22022         for non-apcs frame, since it's not clobbered by
22023         prologue code.  Implement non-apcs frame
22024         layout.
22025
22026 2008-03-11  Paolo Bonzini  <bonzini@gnu.org>
22027
22028         PR rtl-optimization/35281
22029         * expr.c (convert_move): Use a new pseudo for the intermediate
22030         from_mode->word_mode result.
22031
22032 2008-03-11  Paolo Bonzini  <bonzini@gnu.org>
22033
22034         * langhooks-def.h (LANG_HOOKS_CLEAR_BINDING_STACK): Delete.
22035         * langhooks.h (struct lang_hooks): Delete clear_binding_stack member.
22036         * toplev.c (compile_file): Don't call it.
22037
22038 2008-03-11  Uros Bizjak  <ubizjak@gmail.com>
22039
22040         PR middle-end/35526
22041         * expr.c (store_expr): Call emit_block_move if the mode
22042         of "temp" RTX is BLKmode.
22043
22044 2008-03-11  Andrew Pinski  <andrew_pinski@playstation.sony.com>
22045             Richard Guenther  <rguenther@suse.de>
22046
22047         PR tree-optimization/31358
22048         * tree-ssa-loop-manip.c (create_iv): Call force_gimple_operand for
22049         the step with a NULL_TREE.
22050         * tree-ssa-loop-ivopts.c (find_bivs): Convert the step
22051         to sizetype if type is a pointer type.
22052         (add_candidate_1): Don't convert the base and step to
22053         the generic type if the orginal type is a pointer type.
22054         (add_iv_value_candidates): Use sizetype for the step
22055         if type is a pointer type.
22056         (cand_value_at): Likewise.
22057         * tree-ssa-address.c (add_to_parts): Use POINTER_PLUS_EXPR
22058         for pointer types.
22059         * tree-affine.c (tree_to_aff_combination <POINTER_PLUS_EXPR>):
22060         Don't convert the tem affine to the type.
22061         (add_elt_to_tree): Use sizetype for the step if a pointer.
22062         Use POINTER_PLUS_EXPR for pointers.
22063         (aff_combination_to_tree): Use sizetype for the step if a
22064         pointer.
22065
22066 2008-03-10  Vladimir Makarov  <vmakarov@redhat.com>
22067
22068         * config/i386/sse.md (ssse3_pmaddubswv8hi3, ssse3_pmaddubswv4hi3):
22069         Remove commutativity hint.
22070
22071 2008-03-10  Jakub Jelinek  <jakub@redhat.com>
22072
22073         PR c/35438
22074         PR c/35439
22075         * c-parser.c (c_parser_omp_threadprivate): Don't add vars with
22076         errorneous type.  Check that v is a VAR_DECL.
22077
22078         PR middle-end/35099
22079         * tree-cfg.c (new_label_mapper): Update cfun->last_label_uid.
22080
22081 2008-03-10  H.J. Lu  <hongjiu.lu@intel.com>
22082
22083         PR tree-optimization/35494
22084         * tree-ssa-ccp.c (get_symbol_constant_value): Check if value
22085         may be overriden at link and run time.
22086
22087 2008-03-10  Richard Guenther  <rguenther@suse.de>
22088
22089         PR tree-optimization/34677
22090         * tree-ssa-pre.c (modify_expr_node_pool): Remove.
22091         (poolify_tree): Likewise.
22092         (modify_expr_template): Likewise.
22093         (poolify_modify_stmt): Likewise.
22094         (insert_fake_stores): Handle all component-ref style stores
22095         in addition to INDIRECT_REF.  Also handle complex types.
22096         Do not poolify the inserted load.
22097         (realify_fake_stores): Do not rebuild the tree but only
22098         make it a SSA_NAME copy.
22099         (init_pre): Remove initialzation of modify_expr_template.
22100         Do not allocate modify_expr_node_pool.
22101         (fini_pre): Do not free modify_expr_node_pool.
22102
22103 2008-03-10  Paul Brook  <paul@codesourcery.com>
22104
22105         * config/arm/arm.md (UNSPEC_STACK_ALIGN, UNSPEC_PIC_OFFSET): Renumber
22106         to avoid conflicts.
22107
22108 2008-03-10  Paul Brook  <paul@codesourcery.com>
22109             Mark Shinwell  <shinwell@codesourcery.com>
22110
22111         * config/arm/cortex-r4.md: New.
22112         * config/arm/thumb2.md (divsi3, udivsi3): Annotate with
22113         insn attributes.
22114         * config/arm/arm.md: Include cortex-r4.md.
22115         (insn): Add smmls, sdiv and udiv values.
22116         (generic_sched): Don't use generic scheduling for Cortex-R4.
22117         (arm_issue_rate): New function.
22118         (TARGET_SCHED_ISSUE_RATE): Define.
22119
22120 2008-03-10  Sebastian Pop  <sebastian.pop@amd.com>
22121
22122         * doc/invoke.texi (-ftree-loop-distribution): Add an example.
22123
22124 2008-03-10  Richard Guenther  <rguenther@suse.de>
22125
22126         * tree-ssa-pre.c (get_sccvn_value): Simplify.
22127         (compute_avail): Do not add stmt uses to AVAIL_OUT.
22128
22129 2008-03-10  Paolo Bonzini  <bonzini@gnu.org>
22130
22131         * langhooks-def.h (LANG_HOOKS_REDUCE_BIT_FIELD_OPERATIONS):
22132         Set default to true.
22133
22134 2008-03-09  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
22135
22136         * c.opt (Wsynth): Deprecate.
22137         * doc/invoke.texi (Option Summary, Warning Options): Document
22138         -Wno-format-contains-nul.
22139
22140 2008-03-09  Uros Bizjak  <ubizjak@gmail.com>
22141
22142         PR target/35496
22143         * config/i386/i386.c (ix86_constant_alignment): Compute alignment using
22144         ALIGN_MODE_128 for VECTOR_CST and INTEGER_CST in addition to REAL_CST.
22145
22146 2008-03-09  Ira Rosen  <irar@il.ibm.com>
22147
22148         * config/rs6000/rs6000.c (builtin_description): Rename vector
22149         left shift operations.
22150         * config/rs6000/altivec.md (UNSPEC_VSL): Remove.
22151         (altivec_vsl<VI_char>): Rename to ...
22152         (ashl<mode>3): ... new name.
22153         (mulv4sf3, mulv4si3, negv4sf2): Replace gen_altivec_vslw with
22154         gen_ashlv4si3.
22155         (absv4sf2): Convert to use ashift:V4SI instead of UNSPEC_VSL.
22156
22157 2008-03-08  Richard Guenther  <rguenther@suse.de>
22158
22159         * coverage.h (tree_coverage_counter_addr): Declare.
22160         * coverage.c (tree_coverage_counter_addr): New function.
22161         * tree-profile.c (tree_gen_edge_profiler): Unshare counter
22162         before using again.
22163         (tree_gen_pow2_profiler): Use tree_coverage_counter_addr.
22164         (tree_gen_one_value_profiler): Likewise.
22165         (tree_gen_ic_profiler): Likewise.
22166         (tree_gen_average_profiler): Likewise.
22167         (tree_gen_ior_profiler): Likewise.
22168
22169 2008-03-08  Richard Guenther  <rguenther@suse.de>
22170
22171         * tree-ssa-sccvn.h (vn_binary_op_lookup): Remove.
22172         (vn_binary_op_insert): Likewise.
22173         (vn_unary_op_lookup): Likewise.
22174         (vn_unary_op_insert): Likewise.
22175         (vn_nary_op_lookup): Declare.
22176         (vn_nary_op_insert): Likewise.
22177         * tree-ssa-sccvn.c (struct vn_tables_s): Merge unary
22178         and binary hashes, use a single obstack for unary_op_pool
22179         and binary_op_pool.
22180         (struct vn_binary_op_s, struct vn_unary_op_s): Replace with
22181         a single struct vn_nary_op_s.  Store tree code length and
22182         a variable number of operands.
22183         (struct vn_reference_op_struct): Remove unused op2.
22184         (vn_reference_op_eq): Do not compare op2.
22185         (vn_reference_op_compute_hash): Do not compute hash of op2.
22186         (vn_unary_op_hash, vn_binary_op_hash): Replace with vn_nary_op_hash.
22187         (vn_unary_op_compute_hash, vn_binary_op_compute_hash): Replace
22188         with vn_nary_op_compute_hash.
22189         (vn_unary_op_eq, vn_binary_op_eq): Replace with vn_nary_op_eq.
22190         (vn_unary_op_lookup, vn_binary_op_lookup): Replace with
22191         vn_nary_op_lookup.
22192         (vn_unary_op_insert, vn_binary_op_insert): Replace with
22193         vn_nary_op_insert.
22194         (visit_unary_op): Call nary functions.
22195         (visit_binary_op): Likewise.
22196         (process_scc): Adjust for struct vn_tables_s changes.
22197         (allocate_vn_table): Likewise.
22198         (free_vn_table): Likewise.
22199         * tree-vn.c (vn_add): Call nary functions.
22200         (vn_lookup): Likewise.
22201
22202 2008-03-08  Jakub Jelinek  <jakub@redhat.com>
22203
22204         PR target/35498
22205         * config/rs6000/rs6000.c (rs6000_expand_compare_and_swapqhi): Shift
22206         wdst back after sync_compare_and_swapqhi_internal.
22207
22208 2008-03-08  Uros Bizjak  <ubizjak@gmail.com>
22209
22210         PR target/22152
22211         * config/i386/i386-modes.def (V1DI): New vector mode.
22212         * config/i386/i386.h (VALID_MMX_REG_MODE): Add V1DImode.
22213         * config/i386/mmx.md (MMXMODEI8): New mode iterator.
22214         (MMXMODE248): Ditto.
22215         (MMXMODE): Add V1DI mode.
22216         (mmxvecsize): Change DI mode to V1DI mode.
22217         ("mov<mode>): Use MMXMODEI8 mode iterator.
22218         ("*mov<mode>_internal_rex64"): Ditto.
22219         ("*mov<mode>_internal"): Ditto.
22220         ("mmx_add<mode>3"): Ditto.  Handle V1DImode for TARGET_SSE2.
22221         ("mmx_sub<mode>3"): Ditto.
22222         ("mmx_adddi3"): Remove insn pattern.
22223         ("mmx_subdi3"): Ditto.
22224         ("mmx_ashr<mode>3"): Use SImode and "yN" constraint for operand 2.
22225         ("mmx_lshr<mode>3"): Ditto. Use MMXMODE248 mode iterator.
22226         ("mmx_ashl<mode>3"): Ditto.
22227         ("mmx_lshrdi3"): Remove insn pattern.
22228         ("mmx_ashldi3"): Ditto.
22229         * config/i386/i386.c (classify_argument): Handle V1DImode.
22230         (function_arg_advance_32): Ditto.
22231         (function_arg_32): Ditto.
22232         (struct builtin_description) [IX86_BUILTIN_PADDQ]: Use
22233         mmx_addv1di3 insn pattern.
22234         [IX86_BUILTIN_PSUBQ]: Use mmx_subv1di3 insn pattern.
22235         [IX86_BUILTIN_PSLL?, IX86_BUILTIN_PSRL?, IX86_BUILTIN_PSRA?,
22236         IX86_BUILTIN_PSLL?I, IX86_BUILTIN_PSRL?I, IX86_BUILTIN_PSRA?I,
22237         IX86_BUILTIN_PSLL?I128, IX86_BUILTIN_PSRL?I128, IX86_BUILTIN_PSRA?I128]:
22238         Remove definitions of built-in functions.
22239         (V1DI_type_node): New node.
22240         (v1di_ftype_v1di_int): Ditto.
22241         (v1di_ftype_v1di_v1di): Ditto.
22242         (v2si_ftype_v2si_si): Ditto.
22243         (v4hi_ftype_v4hi_di): Remove node.
22244         (v2si_ftype_v2si_di): Ditto.
22245         (ix86_init_mmx_sse_builtins): Handle V1DImode.
22246         (__builtin_ia32_psll?, __builtin_ia32_psrl?, __builtin_ia32_psra?):
22247         Redefine builtins using def_builtin_const with *_ftype_*_int node.
22248         (__builtin_ia32_psll?i, __builtin_ia32_psrl?i, __builtin_ia32_psra?i):
22249         Add new builtins using def_builtin_const.
22250         (ix86_expand_builtin) [IX86_BUILTIN_PSLL?, IX86_BUILTIN_PSRL?,
22251         IX86_BUILTIN_PSRA?, IX86_BUILTIN_PSLL?I, IX86_BUILTIN_PSRL?I,
22252         IX86_BUILTIN_PSRA?I]: Handle builtin definitions.
22253         * config/i386/mmintrin.h (__v1di): New typedef.
22254         (_mm_add_si64): Cast arguments to __v1di type.
22255         (_mm_sub_si64): Ditto.
22256         (_mm_sll_pi16): Cast __count to __v4hi type.
22257         (_mm_sll_pi32): Cast __count to __v2si type.
22258         (_mm_sll_si64): Cast arguments to __v1di type.
22259         (_mm_srl_pi16): Cast __count to __v4hi type.
22260         (_mm_srl_pi32): Cast __count to __v2si type.
22261         (_mm_srl_si64): Cast arguments to __v1di type.
22262         (_mm_sra_pi16): Cast __count to __v4hi type.
22263         (_mm_sra_pi32): Cast __count to __v2si type.
22264         (_mm_slli_pi16): Use __builtin_ia32_psllwi.
22265         (_mm_slli_pi32): Use __builtin_ia32_pslldi.
22266         (_mm_slli_si64): Use __builtin_ia32_psllqi. Cast __m to __v1di type.
22267         (_mm_srli_pi16): Use __builtin_ia32_psrlwi.
22268         (_mm_srli_pi32): Use __builtin_ia32_psrldi.
22269         (_mm_srli_si64): Use __builtin_ia32_psrlqi. Cast __m to __v1di type.
22270         (_mm_srai_pi16): Use __builtin_ia32_psrawi.
22271         (_mm_srai_pi32): Use __builtin_ia32_psradi.
22272         * config/i386/i386.md (UNSPEC_NOP): Remove unspec definition.
22273         * doc/extend.texi (X86 Built-in Functions) [__builtin_ia32_psll?,
22274         __builtin_ia32_psrl?, __builtin_ia32_psra?, __builtin_ia32_psll?i,
22275         __builtin_ia32_psrl?i, __builtin_ia32_psra?i]: Add new builtins.
22276
22277 2008-03-07  Joseph Myers  <joseph@codesourcery.com>
22278
22279         * doc/include/texinfo.tex: Update to version 2008-03-07.10.
22280
22281 2008-03-07  Peter Bergner  <bergner@vnet.ibm.com>
22282
22283         PR target/35373
22284         * config/rs6000/rs6000.c (rs6000_legitimize_address): Don't generate
22285         reg+const addressing for Altivec modes.  Don't generate reg+reg
22286         addressing for TFmode or TDmode quantities.
22287
22288 2008-03-07  Paolo Bonzini  <bonzini@gnu.org>
22289
22290         * c-common.c (vector_types_convertible_p): Call langhook
22291         instead of comptypes.
22292
22293 2008-03-06  Andrew Pinski  <andrew_pinski@playstation.sony.com>
22294
22295         PR tree-opt/35402
22296         * tree-ssa-ccp.c (get_symbol_constant_value): Handle
22297         integral and scalar float variables which have a
22298         NULL DECL_INITIAL.
22299
22300 2008-03-06  Nathan Froyd  <froydnj@codesourcery.com>
22301
22302         * dwarf2out.c (dwarf2out_frame_debug_expr): Consult the
22303         dwarf_register_span hook when emitting unwind information for
22304         register-to-memory saves.
22305         * config/rs6000/rs6000.c (spe_synthesize_frame): Delete.
22306         (rs6000_frame_related): Remove call to spe_synthesize_frame.
22307
22308 2008-03-06  Jakub Jelinek  <jakub@redhat.com>
22309
22310         * gimplify.c (goa_lhs_expr_p): Allow different ADDR_EXPR nodes
22311         for the same VAR_DECL.
22312
22313 2008-03-06  Tom Tromey  <tromey@redhat.com>
22314
22315         * treelang: Delete.
22316         * doc/standards.texi (Standards): Don't mention treelang.
22317         * doc/invoke.texi (Overall Options): Don't mention treelang.
22318         * doc/install.texi (Prerequisites): Don't mention bison or
22319         treelang.
22320         (Configuration): Don't mention treelang.
22321         (Building): Likewise.
22322         * doc/frontends.texi (G++ and GCC): Don't mention treelang.
22323
22324 2008-03-06  Paolo Bonzini  <bonzini@gnu.org>
22325
22326         * simplify-rtx.c (simplify_subreg): Remove useless shifts from
22327         word-extractions out of a multi-word object.
22328
22329 2008-03-06  Richard Guenther  <rguenther@suse.de>
22330
22331         * tree.def (BIT_FIELD_REF): Constrain result type and its precision.
22332         * tree-cfg.c (verify_expr): Verify BIT_FIELD_REF constraints on
22333         result type and precision.
22334         * expr.c (get_inner_reference): Set unsignedp based on the result
22335         type of BIT_FIELD_REF.
22336         * tree.h (BIT_FIELD_REF_UNSIGNED): Remove.
22337         * tree-sra.c (instantiate_element): Do not set BIT_FIELD_REF_UNSIGNED.
22338         (try_instantiate_multiple_fields): Likewise.  Use the correct type
22339         for BIT_FIELD_REF.
22340         (sra_build_assignment): Likewise.
22341         (sra_build_elt_assignment): Likewise.
22342         (sra_explode_bitfield_assignment): Likewise.
22343         * print-tree.c (print_node): Do not check BIT_FIELD_REF_UNSIGNED.
22344         * tree-vect-transform.c (vect_create_epilog_for_reduction): Do not
22345         set BIT_FIELD_REF_UNSIGNED.
22346         (vectorizable_load): Likewise.
22347
22348 2008-03-06  Andreas Krebbel  <krebbel1@de.ibm.com>
22349
22350         * cse.c (cse_extended_basic_block): Invalidate artificial defs
22351         at bb start.
22352
22353 2008-03-06  Richard Guenther  <rguenther@suse.de>
22354
22355         * alias.c (struct alias_set_entry): Move has_zero_child field
22356         to pack with alias_set.
22357
22358 2008-03-05  H.J. Lu  <hongjiu.lu@intel.com>
22359
22360         * config/i386/i386-modes.def: Use 4 byte alignment on DI for
22361         32bit host.
22362
22363 2008-03-05  Ian Lance Taylor  <iant@google.com>
22364
22365         * alias.h (alias_set_type): Change from HOST_WIDE_INT to int.
22366
22367 2008-03-05  Kenneth Zadeck  <zadeck@naturalbridge.com>
22368
22369         * fwprop.c (update_df): Support width and offset parameters of
22370         df_ref_create.
22371         * ra-conflict.c (mark_reg_store, clear_reg_in_live,
22372         global_conflicts): Change DF_REF_EXTRACT to either
22373         DF_REF_ZERO_EXTRACT or DF_REF_SIGN_EXTRACT.  Change
22374         DF_REF_STRICT_LOWER_PART to DF_REF_STRICT_LOW_PART.
22375         * df-scan.c (df_ref_record, df_defs_record,
22376         df_ref_create_structure, df_def_record_1, df_uses_record,
22377         df_get_conditional_uses, df_get_call_refs, df_insn_refs_collect,
22378         df_bb_refs_collect, df_entry_block_defs_collect,
22379         df_exit_block_uses_collect): Support new width and offset fields.
22380         (ref_extract_pool): New storage pool.
22381         (df_free_ref): New function.
22382         (df_reg_chain_unlink, df_free_collection_rec,
22383         df_sort_and_compress_refs): Call df_free_ref.
22384         (df_ref_equal_p, df_ref_compare): Compare offset and width fields
22385         of df_ref_extract.
22386         (df_ref_create_structure): Allocate df_ref_extract if offset and
22387         width fields are used.
22388         (df_def_record_1): Get offset and width from ZERO_EXTRACT.
22389         (df_uses_record): Get offset and width from ZERO_EXTRACT
22390         and SIGN_EXTRACT.
22391         * global.c (build_insn_chain): Change DF_REF_EXTRACT to either
22392         DF_REF_ZERO_EXTRACT or DF_REF_SIGN_EXTRACT.  Change
22393         DF_REF_STRICT_LOWER_PART to DF_REF_STRICT_LOW_PART.
22394         * df.h (df_ref_flags): Change DF_REF_EXTRACT to either
22395         DF_REF_ZERO_EXTRACT or DF_REF_SIGN_EXTRACT.  Change
22396         DF_REF_STRICT_LOWER_PART to DF_REF_STRICT_LOW_PART.
22397         (df_ref_extract): New structure.
22398         (DF_REF_WIDTH, DF_REF_OFFSET): New macros.
22399         (df_ref_create): Add width and offset parameters.
22400
22401 2008-03-05  Richard Guenther  <rguenther@suse.de>
22402
22403         * tree-ssa-structalias.c (get_constraint_for_component_ref):
22404         Use ranges_overlap_p.
22405         (offset_overlaps_with_access): Rename
22406         to ranges_overlap_p and move ...
22407         * tree-flow-inline.h (ranges_overlap_p): ... here.
22408
22409         * tree.h (get_inner_reference, handled_component_p): Update
22410         comments.
22411
22412         * tree.h (record_component_aliases, get_alias_set,
22413         alias_sets_conflict_p, alias_sets_must_conflict_p,
22414         objects_must_conflict_p): Move declarations ...
22415         * alias.h (record_component_aliases, get_alias_set,
22416         alias_sets_conflict_p, alias_sets_must_conflict_p,
22417         objects_must_conflict_p): ... here.
22418         Include coretypes.h.
22419         * Makefile.in (ALIAS_H): Add coretypes.h dependency.
22420
22421 2008-03-05  Aldy Hernandez  <aldyh@redhat.com>
22422
22423         * cfg.c: Include tree-flow.h.
22424         (remove_edge_raw): Call redirect_edge_var_map_clear.
22425         (redirect_edge_succ_nodup): Call redirect_edge_var_map_dup.
22426         * tree-flow-inline.h (redirect_edge_var_map_def): New.
22427         (redirect_edge_var_map_result): New.
22428         * tree-cfgcleanup.c (remove_forwarder_block_with_phi): Replace
22429         PENDING_STMT use with redirect_edge_var_map_*.
22430         * tree-ssa.c (edge_var_maps): New definition.
22431         (redirect_edge_var_map_add): New.
22432         (redirect_edge_var_map_clear): New.
22433         (redirect_edge_var_map_dup): New.
22434         (redirect_edge_var_map_vector): New.
22435         (redirect_edge_var_map_destroy): New.
22436         (ssa_redirect_edge): Replace PENDING_STMT use with
22437         redirect_edge_var_map_*.
22438         (flush_pending_stmts): Same.
22439         (delete_tree_ssa): Destroy edge var map.
22440         * tree-flow.h (struct _edge_var_map): New.
22441         Define edge_var_map vector type.
22442         Declare redirect_edge_var_map_* prototypes.
22443         * Makefile.in (cfg.o): Depend on TREE_FLOW_H.
22444         * tree-cfg.c (reinstall_phi_args): Replace
22445         PENDING_STMT use with redirect_edge_var_map_*.
22446
22447 2008-03-05  Richard Guenther  <rguenther@suse.de>
22448
22449         PR tree-optimization/35472
22450         * tree-ssa-dse.c (dse_optimize_stmt): Do not delete a store
22451         whose single use_stmt has a overlapping set of loaded and
22452         stored symbols as that use_stmt might be a noop assignment then.
22453
22454 2008-03-05  Joel Sherrill <joel.sherrill@oarcorp.com>
22455
22456         * gthr-rtems.h: Implement __gthread_mutex_destroy.
22457
22458 2008-03-05  Richard Guenther  <rguenther@suse.de>
22459
22460         PR c++/35336
22461         * tree.def (BIT_FIELD_REF): Document that operands 1 and 2
22462         should be constants.
22463         * tree-cfg.c (verify_expr): Verify it.
22464         * fold-const.c (fold_truthop): Remove code generating
22465         BIT_FIELD_REFs of structure bases.
22466         (fold_binary): Likewise.
22467         (fold_ternary): Position and size of BIT_FIELD_REFs are
22468         always host integers.
22469         (make_bit_field_ref): Remove.
22470         (optimize_bit_field_compare): Remove.
22471         (all_ones_mask_p): Remove.
22472
22473 2008-03-05  Gabor Loki  <loki@gcc.gnu.org>
22474
22475         PR gcc/33009
22476         * rtl-factoring.c (clear_regs_live_in_seq): Fix backward steps.
22477         (split_block_and_df_analyze): New. Split basic block and rebuild
22478         dataflow.
22479         (block_label_after): Use SPLIT_BLOCK_AND_DF_ANALYZE instead of
22480         SPLIT_BLOCK.
22481         (split_pattern_seq): Likewise.
22482         (erase_matching_seqs): Likewise.
22483         (split_pattern_seq): Skip return insn in case of REG_NORETURN note.
22484
22485 2008-03-04  Geoff Keating  <geoffk@apple.com>
22486
22487         * fold-const.c (tree_single_nonnegative_warnv_p): Fix mixed
22488         declaration and code.
22489         (tree_invalid_nonnegative_warnv_p): Likewise.
22490
22491 2008-03-05  Serge Belyshev  <belyshev@depni.sinp.msu.ru>
22492
22493         * doc/install.texi (Testing): Correct quoting for the RUNTESTFLAGS
22494         examples.  Truncate option-names then causing overfull hbox.
22495
22496 2008-03-04  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
22497
22498         PR target/35222
22499         * configure.ac (CONFIG_SJLJ_EXCEPTIONS): Force SJLJ exceptions
22500         on hpux10.
22501         * configure: Rebuilt.
22502
22503 2008-03-04  Rafael Espíndola  <espindola@google.com>
22504
22505         * fold-const.c (tree_simple_nonnegative_warnv_p): New.
22506         (tree_unary_nonnegative_warnv_p): New.
22507         (tree_binary_nonnegative_warnv_p): New.
22508         (tree_single_nonnegative_warnv_p): New.
22509         (tree_invalid_nonnegative_warnv_p): New.
22510         (tree_expr_nonnegative_warnv_p): Redefine in term of the new functions.
22511
22512 2008-03-04  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
22513
22514         PR 28322
22515         * opts.c (handle_option): Postpone 'unknown option' errors only for
22516         warning options.
22517
22518 2008-03-04  H.J. Lu  <hongjiu.lu@intel.com>
22519
22520         PR target/35453
22521         * config/i386/smmintrin.h (SIDD_XXX): Renamed to ...
22522         (_SIDD_XXX): This.
22523
22524 2008-03-04  Rafael Espíndola  <espindola@google.com>
22525
22526         * fold-const.c (tree_unary_nonzero_warnv_p): New.
22527         (tree_binary_nonzero_warnv_p): New.
22528         (tree_single_nonzero_warnv_p): New.
22529         (tree_expr_nonzero_warnv_p): Redefine using the new functions.
22530
22531 2008-03-04  Uros Bizjak  <ubizjak@gmail.com>
22532
22533         PR middle-end/35456
22534         * fold-const.c (fold_cond_expr_with_comparison): Prevent
22535         transformations for modes that have signed zeros.
22536         * ifcvt.c (noce_try_abs): Ditto.
22537
22538 2008-03-04  Joseph Myers  <joseph@codesourcery.com>
22539
22540         * config/i386/i386.c (override_options): Force
22541         -maccumulate-outgoing-args on if TARGET_STACK_PROBE.
22542
22543 2008-03-04  Jan Hubicka  <jh@suse.cz>
22544
22545         PR c++/35262
22546         * ipa-inline.c (cgraph_decide_inlining_of_small_function): Fix typo
22547         in last commit.
22548
22549 2008-03-04  Danny Smith  <dannysmith@users.sourceforge.net>
22550
22551         * config/i386/i386.md (allocate_stack_worker_32): Use  __chkstk
22552         label to probe the stack.
22553
22554 2008-03-04  Danny Smith  <dannysmith@users.sourceforge.net>
22555
22556         * gthr-win32.h [__GTHREAD_HIDE_WIN32API]
22557         (__gthr_win32_mutex_destroy): Declare.
22558         [__GTHREAD_HIDE_WIN32API] (__gthread_mutex_destroy): Use
22559         __gthr_win32_mutex_destroy.
22560         * config/i386/gthr-win32.c  (__gthr_win32_mutex_destroy): Define.
22561
22562 2008-03-03  Jan Hubicka  <jh@suse.cz>
22563
22564         PR c++/35262
22565         * ipa-inline.c (cgraph_decide_inlining_of_small_function): Be more
22566         aggressive on inlining cold calls.
22567
22568 2008-03-03  Richard Guenther  <rguenther@suse.de>
22569
22570         * tree-ssa-sccvn.c (visit_reference_op_store): Do not insert
22571         struct copies into the expression table.
22572         (simplify_unary_expression): Handle VIEW_CONVERT_EXPR.
22573         (try_to_simplify): Likewise.
22574         * fold-const.c (fold_unary): Fold VIEW_CONVERT_EXPR of
22575         integral and pointer arguments which do not change the
22576         precision to NOP_EXPRs.
22577         * tree-ssa-loop-ivopts.c (may_be_nonaddressable_p): Adjust
22578         VIEW_CONVERT_EXPR case.
22579
22580 2008-03-02  Sebastian Pop  <sebastian.pop@amd.com>
22581
22582         * tree-scalar-evolution.c (instantiate_parameters_1): An SSA_NAME
22583         defined in a loop at depth 0 is invariant.
22584         * tree-chrec.c (evolution_function_is_invariant_rec_p): Ditto.
22585         * tree-ssa-loop-ivopts.c (expr_invariant_in_loop_p): Should never
22586         be called at loop depth 0.
22587
22588 2008-03-02  Jakub Jelinek  <jakub@redhat.com>
22589
22590         PR driver/35420
22591         * gcc.c (process_command): Update copyright notice dates.
22592         * gcov.c (print_version): Likewise.
22593         * gcov-dump.c (print_version): Likewise.
22594         * mips-tfile.c (main): Likewise.
22595         * mips-tdump.c (main): Likewise.
22596
22597 2008-03-02  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
22598
22599         PR 24924
22600         * c-common.c (flag_permissive): Delete.
22601         (constant_expression_warnings): Check flags first.
22602         (constant_expression_error): New.
22603         * c-common.h (flag_permissive): Delete.
22604         (constant_expression_error): Declare.
22605         * flags.h (flag_permissive): Declare. Update description.
22606         * diagnostic.c (pedwarn): Update.
22607         (permerror): New.
22608         * diagnostic.h: (pedantic_error_kind): Rename as pedantic_warning_kind.
22609         (permissive_error_kind): New.
22610         * toplev.c (flag_permissive): Define. Update description.
22611         * toplev.h (permissive_error_kind): Declare.
22612         * c-errors.c (pedwarn_c99): Use pedantic_warning_kind.
22613         (pedwarn_c90): Use pedantic_warning_kind.
22614         * c-opts.c (c_common_post_options): flag_permissive does not affect
22615         flag_pedantic_errors.
22616
22617 2008-03-02  Joseph Myers  <joseph@codesourcery.com>
22618
22619         * libgcc2.c (__addvSI3, __addvsi3, __addvDI3, __subvSI3,
22620         __subvsi3, __subvDI3, __negvSI2, __negvsi2, __negvDI2, __absvSI2,
22621         __absvsi2, __absvDI2): Use unsigned arithmetic.
22622
22623 2008-03-02  Andi Kleen  <ak@suse.de>
22624             Richard Guenther  <rguenther@suse.de>
22625
22626         * struct-equiv.c: Remove file.
22627         * cfg_cleanup.c (condjump_equiv_p): Remove.
22628         * Makefile.in (OBJS-common): Remove struct-equiv.o.
22629         (struct-equiv.o): Remove rule.
22630         * basic-block.h (struct_equiv_checkpoint, STRUCT_EQUIV_*,
22631         insns_match_p, struct_equiv_block_eq, struct_equiv_init,
22632         rtx_equiv_p, condjump_equiv_p): Remove prototypes.
22633
22634 2008-03-01  Alexandre Oliva  <aoliva@redhat.com>
22635
22636         * ifcvt.c (noce_process_if_block): Try to handle only the then
22637         block if the else block exists but isn't suitable.
22638
22639 2008-03-01  Janne Blomqvist  <jb@gcc.gnu.org>
22640
22641         PR gcc/35063
22642         * gthr-posix.h (__gthread_mutex_destroy): Remove extra declarations.
22643         * gthr-posix95.h (__gthread_mutex_destroy): Likewise. Note this fixes
22644         regression from previous patch.
22645
22646 2008-03-01  Janne Blomqvist  <jb@gcc.gnu.org>
22647
22648         PR gcc/35063
22649         * gthr.h: Add __gthread_mutex_destroy as a function that must be
22650         implemented.
22651         * gthr-vxworks.h (__gthread_mutex_destroy): Null implementation.
22652         * gthr-single.h (__gthread_mutex_destroy): Likewise.
22653         * gthr-rtems.h (__gthread_mutex_destroy): Likewise.
22654         * gthr-mipssde.h (__gthread_mutex_destroy): Likewise.
22655         * gthr-nks.h (__gthread_mutex_destroy): Likewise.
22656         * gthr-solaris.h (__gthread_mutex_destroy): Call mutex_destroy.
22657         * gthr-win32.h (__GTHREAD_MUTEX_DESTROY_FUNCTION): Remove.
22658         (__gthread_mutex_destroy_function): Rename to
22659         __gthread_mutex_destroy.
22660         * gthr-dce.h (__gthread_mutex_destroy): Call
22661         pthread_mutex_destroy.
22662         * gthr-tpf.h (__gthread_mutex_destroy): Likewise.
22663         * gthr-posix.h (__gthread_mutex_destroy): Likewise.
22664         * gthr-posix95.h (__gthread_mutex_destroy): Likewise.
22665
22666 2008-03-01  Alexandre Oliva  <aoliva@redhat.com>
22667
22668         * df-scan.c (df_ref_chain_change_bb): Simplify.
22669         (df_insn_change_bb): Add new_bb argument.  Simplify.  Call
22670         set_block_for_insn if there's any change.
22671         * df.h ((df_insn_change_bb): Fix prototype.
22672         * cfgrtl.c (update_bb_for_insn_chain): Pass bb to
22673         df_insn_change_bb, don't call set_block_for_insn.
22674         * emit-rtl.c (reorder_insns): Likewise.
22675         * haifa-sched.c (move_insn): Likewise.
22676
22677 2008-03-01  Alexandre Oliva  <aoliva@redhat.com>
22678
22679         * rtlanal.c (loc_mentioned_in_p): Test XVECEXPs correctly.
22680
22681 2008-03-01  Alexandre Oliva  <aoliva@redhat.com>
22682
22683         * tree-flow-inline.h (next_readonly_imm_use): Return
22684         NULL_USE_OPERAND_P after the end.
22685
22686 2008-03-01  Richard Guenther  <rguenther@suse.de>
22687
22688         PR tree-optimization/35411
22689         * tree-sra.c (sra_build_assignment): Split conversion to
22690         final type to a separate statement if we are not assigning
22691         to a register.
22692
22693 2008-02-29  Francois-Xavier Coudert  <coudert@clipper.ens.fr>
22694
22695         * fold-const.c (fold_convertible_p): Correct the logic to follow
22696         that in fold_convert().
22697
22698 2008-02-29  Douglas Gregor  <doug.gregor@gmail.com>
22699
22700         PR c++/35315
22701         * tree-inline.c (build_duplicate_type): When we make a
22702         duplicate type, make it unique in the canonical types system.
22703
22704 2008-02-29  Tom Tromey  <tromey@redhat.com>
22705
22706         * toplev.c (input_file_stack, input_file_stack_tick, fs_p,
22707         input_file_stack_history, input_file_stack_restored): Remove.
22708         (push_srcloc, pop_srcloc, restore_input_file_stack): Likewise.
22709         * input.h (struct file_stack): Remove.
22710         (push_srcloc, pop_srcloc, restore_input_file_stack): Likewise.
22711         (input_file_stack, input_file_stack_tick, INPUT_FILE_STACK_BITS):
22712         Likewise.
22713         * diagnostic.h (struct diagnostic_context) <last_module>: Change
22714         type.
22715         (diagnostic_last_module_changed): Add 'map' argument.
22716         (diagnostic_set_last_function): Likewise.
22717         * diagnostic.c (undiagnostic_report_current_module): Iterate using
22718         line map, not input_file_stack.
22719         * c-lex.c (fe_file_change): Don't use push_srcloc or pop_srcloc.
22720
22721 2008-02-29  Paul Brook  <paul@codesourcery.com>
22722
22723         * config/arm/arm.md (arm_addsi3): Add r/k/n alternative.
22724
22725 2008-02-29  Paul Brook  <paul@codesourcery.com>
22726
22727         * config/arm/ieee754-df.S (muldf3): Use RET macros.
22728
22729 2008-02-29  Richard Guenther  <rguenther@suse.de>
22730
22731         * tree-ssa-pre.c (get_sccvn_value): Create missing VNs via
22732         vn_lookup_or_add.
22733         * tree-ssa-sccnv.c (visit_reference_op_store): Use the rhs
22734         value for comparing for a store match.
22735         (simplify_unary_expression): Do nothing for SSA_NAMEs.
22736         (try_to_simplify): Do not do a full-blown reference lookup.
22737
22738 2008-02-29  Kaz Kojima  <kkojima@gcc.gnu.org>
22739
22740         * config/sh/sh.c (sh_scalar_mode_supported_p): New function.
22741         (TARGET_SCALAR_MODE_SUPPORTED_P): Define.
22742
22743         * config/sh/sh.h (OVERRIDE_OPTIONS): Don't warn for profiling.
22744
22745 2008-02-29  Sebastian Pop  <sebastian.pop@amd.com>
22746
22747         * tree-loop-linear.c (try_interchange_loops): Compare memory access
22748         strides against cache sizes.
22749
22750 2008-02-29  Kaz Kojima  <kkojima@gcc.gnu.org>
22751
22752         * config/sh/sh.c (sh_secondary_reload): Handle loading a float
22753         constant to fpul.
22754
22755 2008-02-28  Richard Sandiford  <rsandifo@nildram.co.uk>
22756
22757         * simplify-rtx.c (simplify_unary_operation_1): Extend the handling
22758         of SUBREG_PROMOTED_VAR_P to cope with cases where the extended value
22759         is smaller than the original promoted value.
22760         (simplify_subreg): If OP is a SUBREG, try to preserve its
22761         SUBREG_PROMOTED_VAR_P information.
22762
22763 2008-02-28  Steven Bosscher  <stevenb.gcc@gmail.com>
22764
22765         * tree-ssa-sccvn (vn_ssa_aux_obstack): New obstack.
22766         (VN_INFO_GET): Allocate new objects on the obstack.
22767         (init_scc_vn): Initialize the obstack.  Use XDELETE instead of free
22768         for rpo_numbers_temp, for consistency.
22769         (free_scc_vn): Free the obstack.
22770
22771 2008-02-28  Sebastian Pop  <sebastian.pop@amd.com>
22772
22773         * doc/invoke.texi: Document -ftree-loop-distribution.
22774         * tree-loop-distribution.c: New.
22775         * tree-pass.h (pass_loop_distribution): New.
22776         * graphds.h (struct graph): Add htab_t indices.
22777         * timevar.def (TV_TREE_LOOP_DISTRIBUTION): New.
22778         * tree-vectorizer.c (rename_variables_in_loop): Extern.
22779         (slpeel_tree_duplicate_loop_to_edge_cfg): Init PENDING_STMT to NULL.
22780         * tree-vectorizer.h (tree_duplicate_loop_on_edge): Declared.
22781         * tree-data-ref.c (debug_data_dependence_relations): New.
22782         (dump_data_dependence_relation): Also print data references.
22783         (free_data_ref): Extern.
22784         (same_access_functions): Moved...
22785         (find_vertex_for_stmt): Renamed rdg_vertex_for_stmt.
22786         (dump_rdg_vertex, debug_rdg_vertex, dump_rdg_component,
22787         debug_rdg_component, dump_rdg, debug_rdg, dot_rdg_1, dot_rdg,
22788         struct rdg_vertex_info, rdg_vertex_for_stmt): New.
22789         (create_rdg_edge_for_ddr, create_rdg_vertices): Cleaned up.
22790         (stmts_from_loop): Skip LABEL_EXPR.
22791         (hash_stmt_vertex_info, eq_stmt_vertex_info, hash_stmt_vertex_del):
22792         New.
22793         (build_rdg): Initialize rdg->indices htab.
22794         (free_rdg, stores_from_loop, ref_base_address,
22795         rdg_defs_used_in_other_loops_p, have_similar_memory_accesses,
22796         have_similar_memory_accesses_1, ref_base_address_1,
22797         remove_similar_memory_refs): New.
22798         * tree-data-ref.h: Depend on tree-chrec.h.
22799         (debug_data_dependence_relations, free_data_ref): Declared.
22800         (same_access_functions): ... here.
22801         (ddr_is_anti_dependent, ddrs_have_anti_deps, ddr_dependence_level):
22802         New.
22803         (struct rdg_vertex): Add has_mem_write and has_mem_reads.
22804         (RDGV_HAS_MEM_WRITE, RDGV_HAS_MEM_READS, RDG_STMT,
22805         RDG_MEM_WRITE_STMT, RDG_MEM_READS_STMT): New.
22806         (dump_rdg_vertex, debug_rdg_vertex, dump_rdg_component,
22807         debug_rdg_component, dump_rdg, debug_rdg, dot_rdg,
22808         rdg_vertex_for_stmt): Declared.
22809         (struct rdg_edge): Add level.
22810         (RDGE_LEVEL): New.
22811         (free_rdg, stores_from_loop, remove_similar_memory_refs,
22812         rdg_defs_used_in_other_loops_p, have_similar_memory_accesses):
22813         Declared.
22814         (rdg_has_similar_memory_accesses): New.
22815         * tree-vect-analyze.c: Remove unused static decls.
22816         * lambda.h (dependence_level): New.
22817         * common.opt (ftree-loop-distribution): New.
22818         * tree-flow.h (mark_virtual_ops_in_bb,
22819         slpeel_tree_duplicate_loop_to_edge_cfg,
22820         rename_variables_in_loop): Declared.
22821         * Makefile.in (TREE_DATA_REF_H): Depend on tree-chrec.h.
22822         (OBJS-common): Add tree-loop-distribution.o.
22823         (tree-loop-distribution.o): New rule.
22824         * tree-cfg.c (mark_virtual_ops_in_bb): New.
22825         (mark_virtual_ops_in_region): Use mark_virtual_ops_in_bb.
22826         * passes.c (init_optimization_passes): Schedule pass_loop_distribution.
22827
22828 2008-02-28  Joseph Myers  <joseph@codesourcery.com>
22829
22830         PR target/33963
22831         * tree.c (handle_dll_attribute): Disallow TYPE_DECLs for types
22832         other than structures and unions.
22833
22834 2008-02-28  Richard Guenther  <rguenther@suse.de>
22835
22836         Revert:
22837         2008-02-26  Richard Guenther  <rguenther@suse.de>
22838
22839         * tree-flow.h (uid_decl_map_hash, uid_decl_map_eq): Move ...
22840         * tree.h (uid_decl_map_hash, uid_decl_map_eq): ... here.
22841         (lookup_decl_from_uid): Declare.
22842         (remove_decl_from_map): Likewise.
22843         * tree-ssa.c (uid_decl_map_eq, uid_decl_map_hash): Move ...
22844         * tree.c (uid_decl_map_eq, uid_decl_map_hash): ... here.
22845         (decl_for_uid_map): New global hashtable mapping DECL_UID
22846         to the decl tree.
22847         (init_ttree): Allocate it.
22848         (insert_decl_to_uid_decl_map): New helper function.
22849         (make_node_stat): Insert new decls into the map.
22850         (copy_node_stat): Likewise.
22851         (lookup_decl_from_uid): New function.
22852         (remove_decl_from_map): Likewise.
22853         (print_decl_for_uid_map_statistics): New helper.
22854         (dump_tree_statistics): Call it.
22855
22856         * tree-flow.h (struct gimple_df): Make referenced_vars a bitmap.
22857         (referenced_var_iterator): Adjust.
22858         (FOR_EACH_REFERENCED_VAR): Adjust.
22859         (FOR_EACH_REFERENCED_VAR_IN_BITMAP): New iterator.
22860         (num_referenced_vars): Adjust.
22861         * tree-flow-inline.h (gimple_referenced_vars): Adjust.
22862         (first_referenced_var): Remove.
22863         (end_referenced_vars_p): Likewise.
22864         (next_referenced_var): Likewise.
22865         (referenced_var_iterator_set): New helper function.
22866         * tree-dfa.c (referenced_var_lookup): Adjust.
22867         (referenced_var_check_and_insert): Likewise.
22868         (remove_referenced_var): Likewise.
22869         * tree-ssa.c (verify_flow_insensitive_alias_info): Use
22870         FOR_EACH_REFERENCED_VAR_IN_BITMAP.
22871         (verify_call_clobbering): Likewise.
22872         (verify_memory_partitions): Likewise.
22873         (init_tree_ssa): Allocate bitmap instead of hashtable for
22874         referenced_vars.
22875         (delete_tree_ssa): Adjust.
22876         * tree-ssa-alias.c (mark_aliases_call_clobbered): Use
22877         FOR_EACH_REFERENCED_VAR_IN_BITMAP.
22878         (compute_tag_properties): Likewise.
22879         (set_initial_properties): Likewise.
22880         (find_partition_for): Likewise.
22881         (update_reference_counts): Likewise.
22882         (dump_may_aliases_for): Likewise.
22883         * tree-ssa-operands.c (add_virtual_operand): Likewise.
22884         (add_call_clobber_ops): Likewise.
22885         (add_call_read_ops): Likewise.
22886         (get_asm_expr_operands): Likewise.
22887         * tree-into-ssa.c (dump_decl_set): Likewise.
22888         (update_ssa): Likewise.
22889         * tree-sra.c (scan_function): Likewise.
22890         (decide_instantiations): Likewise.
22891         (scalarize_parms): Likewise.
22892         * tree-ssa-alias-warnings.c (build_reference_table): Likewise.
22893         (dsa_named_for): Likewise.
22894         * tree-ssa-structalias.c (update_alias_info): Likewise.
22895         (merge_smts_into): Likewise.
22896
22897 2008-02-27  David Daney  <ddaney@avtrex.com>
22898
22899         PR target/34409
22900         * config/mips/iris.h (MIPS_DEBUGGING_INFO): Define.
22901         * config/mips/openbsd.h (MIPS_DEBUGGING_INFO): Same.
22902         * config/mips/sde.h (MIPS_DEBUGGING_INFO): Remove undef.
22903         * config/mips/vxworks.h (MIPS_DEBUGGING_INFO): Same.
22904         * config/mips/mips.h (MIPS_DEBUGGING_INFO): Remove define.
22905
22906 2008-02-27  Uros Bizjak  <ubizjak@gmail.com>
22907
22908         PR target/25477
22909         * config/darwin-ppc-ldouble-patch.def (BUILT_IN_NANL): Add.
22910         (BUILT_IN_NEXTTOWARD): Remove.
22911         (BUILT_IN_NEXTTOWARDF): Ditto.
22912         * config/darwin.c (darwin_patch_builtin): Use ACONCAT instead of
22913         alloca/strcpy/strcat.  Remove commented-out code.  Fix whitespace.
22914
22915 2008-02-27  Tom Tromey  <tromey@redhat.com>
22916
22917         * tree-dump.c (dequeue_and_dump) <FUNCTION_DECL>: Check
22918         DECL_SAVED_TREE, not DECL_LANG_SPECIFIC, when dumping body.
22919
22920 2008-02-27  Jan Beulich  <jbeulich@novell.com>
22921
22922         * c-decl.c (merge_decls): Use DECL_USER_ALIGN() on olddecl to
22923         update the respective field on newdecl.
22924
22925 2008-02-27  Revital Eres  <eres@il.ibm.com>
22926
22927         PR rtl-optimization/34999
22928         * bb-reorder.c (add_labels_and_missing_jumps): Do not handle
22929         crossing edges that ends with a call insn.
22930         (fix_up_fall_thru_edges): Handle crossing edges that ends with a
22931         call insn and clear the EDGE_CROSSING flag of the crossing edge
22932         when fixing fallthru edges.
22933
22934 2008-02-27  Richard Guenther  <rguenther@suse.de>
22935
22936         PR middle-end/35390
22937         * fold-const.c (fold_unary): Return the correct argument,
22938         converted to the result type.
22939
22940 2008-02-27  Richard Guenther  <rguenther@suse.de>
22941
22942         PR middle-end/34971
22943         * expr.c (expand_expr_real_1): Assert on rotates that operate
22944         on partial modes.
22945         * fold-const.c (fold_binary): Use the types precision, not the
22946         bitsize of the mode if folding rotate expressions.  Build rotates
22947         only for full modes.
22948
22949 2008-02-27  Jakub Jelinek  <jakub@redhat.com>
22950
22951         * c-ppoutput.c (scan_translation_unit): Handle CPP_PRAGMA
22952         and CPP_PRAGMA_EOL.
22953         * c-pragma.c (pragma_ns_name): New typedef.
22954         (registered_pp_pragmas): New variable.
22955         (c_pp_lookup_pragma): New function.
22956         (c_register_pragma_1): If flag_preprocess_only, do nothing
22957         for non-expanded pragmas, for expanded ones push pragma's
22958         namespace and name into registered_pp_pragmas vector.
22959         (c_invoke_pragma_handler): Register OpenMP pragmas even when
22960         flag_preprocess_only, don't register GCC pch_preprocess
22961         pragma if flag_preprocess_only.
22962         * c-opts.c (c_common_init): Call init_pragma even if
22963         flag_preprocess_only.
22964         * c-pragma.c (c_pp_lookup_pragma): New prototype.
22965         * config/darwin.h (DARWIN_REGISTER_TARGET_PRAGMAS): Don't call
22966         cpp_register_pragma if flag_preprocess_only.
22967
22968 2008-02-26  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
22969
22970         PR c/28800
22971         * c-parser.c (c_parser_translation_unit): Warn for empty
22972         translation unit, not empty source file.
22973
22974 2008-02-26  Paul Brook  <paul@codesourcery.com>
22975
22976         * config/arm/arm.c (thumb_set_frame_pointer): Ensure SP is first
22977         operand for Thumb-2.
22978         * config/arm/arm.h (reg_class): Add CORE_REGS.
22979         (REG_CLASS_NAMES, REG_CLASS_CONTENTS): Ditto.
22980         (BASE_REG_CLASS): Use CORE_REGS.
22981         (PREFERRED_RELOAD_CLASS): Add STACK_REG.
22982         (REGNO_MODE_OK_FOR_REG_BASE_P): Use REGNO_MODE_OK_FOR_BASE_P.
22983         (REGNO_OK_FOR_INDEX_P): Exclude SP.
22984         (ARM_REG_OK_FOR_INDEX_P): Always define.  Use
22985         ARM_REGNO_OK_FOR_INDEX_P.
22986         (ARM_PRINT_OPERAND_ADDRESS): Swap operands for [reg, sp].
22987         * config/arm/arm.md (arm_addsi3, thumb1_addsi3, arm_subsi3_insn,
22988         arm_movsi_insn, thumb1_movsi_insni, stack_tie): Add "k" alternatives.
22989         (ldm/stm peepholes): Ditto.
22990         * config/arm/thumb2.md (thumb2_movdi): Add "k" alternatives.
22991         * config/arm/vfp.md (arm_movsi_vfp, thumb2_movsi_vfp): Ditto.
22992         * config/arm/iwmmxt.md (iwmmxt_movsi_insn): Ditto.
22993         * config/arm/constraints.md: Enable "k" constraint on ARM.
22994
22995 2008-02-27  Ben Elliston  <bje@au.ibm.com>
22996
22997         * config/rs6000/rs6000.c: Annotate cache line size field in all
22998         instances of struct processor_costs.
22999
23000 2008-02-26  David Edelsohn  <edelsohn@gnu.org>
23001
23002         * dbgcnt.def (cfg_cleanup, cprop1, cprop2, dce_fast, dce_ud, dse1,
23003         dse2, gcse, if_conversion, if_after_combine, if_after_reload,
23004         jump_bypass): New counters.
23005         * cfgcleanup.c (cleanup_cfg): Add dbg_cnt.
23006         * dce.c (gate_ud_dce): Same.
23007         (gate_fast_dce): Same.
23008         * dse.c (gate_dse1): New function.
23009         (gate_dse2): New function.
23010         (gate_dse): Merge results of new gate functions.
23011         * gcse.c (gcse_main): Bracket cprop1 and cprop2 with dbg_cnt.
23012         (gate_handle_jump_bypass): Add dbg_cnt.
23013         (gate_handle_gcse): Add dbg_cnt.
23014         * ifcvt.c (gate_handle_if_conversion): Same.
23015         (gate_handle_if_after_combine): Same.
23016         (gate_handle_if_after_reload): Same.
23017         * Makefile.in: Add DBGCNT_H to cfgcleanup.o and ifcvt.o.
23018
23019 2008-02-26  Edmar Wienskoski  <edmar@freescale.com>
23020
23021         * config/rs6000/rs6000.c (processor_costs): Update e300 cache
23022         line sizes.
23023         * doc/invoke.texi: Add e300c2 and e300c3 to list of cpus.
23024
23025 2008-02-26  Jason Merrill  <jason@redhat.com>
23026
23027         PR c++/35315
23028         * attribs.c (decl_attributes): Leave ATTR_FLAG_TYPE_IN_PLACE
23029         alone if it's the naming decl for the type's main variant.
23030
23031 2008-02-26  Tom Tromey  <tromey@redhat.com>
23032
23033         * system.h (USE_MAPPED_LOCATION): Poison.
23034         * Makefile.in (GTFILES): Put CPP_ID_DATA_H first.
23035         * tree-cfg.c (make_cond_expr_edges): Remove old location code.
23036         (make_goto_expr_edges): Likewise.
23037         (remove_bb): Likewise.
23038         (execute_warn_function_return): Likewise.
23039         * basic-block.h (struct edge_def) <goto_locus>: Change type to
23040         location_t.
23041         * c-common.c (fname_decl): Remove old location code.
23042         * tree-vect-transform.c (vect_finish_stmt_generation): Remove old
23043         location code.
23044         * rtl.h (ASM_OPERANDS_SOURCE_LOCATION): Remove old-location
23045         variant.
23046         (ASM_INPUT_SOURCE_LOCATION): Likewise.
23047         (gen_rtx_ASM_INPUT): Likewise.
23048         (gen_rtx_ASM_INPUT_loc): Likewise.
23049         (get_rtx_asm_OPERANDS): Remove.
23050         * cfglayout.c (insn_locators_alloc): Remove old location code.
23051         (set_curr_insn_source_location): Likewise.
23052         (curr_insn_locator): Likewise.
23053         * print-tree.c (print_node): Remove old location code.
23054         * tree-mudflap.c (mf_varname_tree): Remove old location code.
23055         (mf_file_function_line_tree): Remove test of USE_MAPPED_LOCATION.
23056         * cfgexpand.c (expand_gimple_cond_expr): Don't use
23057         location_from_locus.
23058         (construct_exit_block): Remove old location code.
23059         * emit-rtl.c (force_next_line_note): Remove old location code.
23060         * profile.c (branch_prob): Remove old location code.
23061         * tree-vectorizer.h (LOC, UNKNOWN_LOC, EXPR_LOC, LOC_FILE,
23062         LOC_LINE): Remove old-location variants.
23063         * langhooks.c (lhd_print_error_function): Remove old location
23064         code.
23065         * configure, config.in: Rebuilt.
23066         * configure.ac (--enable-mapped-location): Remove.
23067         * c-decl.c (c_init_decl_processing): Remove old location code.
23068         (finish_function): Likewise.
23069         * recog.c (decode_asm_operands): Remove old location code.
23070         * c-pch.c (c_common_read_pch): Remove old location code.
23071         * rtl.def (ASM_INPUT, ASM_OPERANDS): Remove old location
23072         variants.
23073         * gimple-low.c (lower_function_body): Remove old location code.
23074         * toplev.c (unknown_location): Remove.
23075         (push_srcloc): Remove old-location variant.
23076         (process_options): Remove old location code.
23077         (lang_dependent_init): Likewise.
23078         * input.h (UNKNOWN_LOCATION): Move definition.
23079         (location_t): Undeprecate.
23080         (source_locus): Remove.
23081         (location_from_locus): Remove.
23082         (struct location_s): Remove.
23083         Remove all old-location code.
23084         (input_line, input_filename): Remove.
23085         * final.c (final_scan_insn): Remove old location code.
23086         * diagnostic.c (diagnostic_build_prefix): Remove
23087         USE_MAPPED_LOCATION test.
23088         * tree.h (gimple_stmt) <locus>: Now a location_t.
23089         (tree_exp) <locus>: Likewise.
23090         (DECL_IS_BUILTIN): Remove old-location variant.
23091         (annotate_with_file_line, annotate_with_locus): Likewise.
23092         (expr_locus, set_expr_locus): Update.
23093         * tree.c (build1_stat): Remove old location code.
23094         (last_annotated_node): Remove.
23095         (annotate_with_file_line): Remove old-location variant.
23096         (annotate_with_locus): Likewise.
23097         (expr_location): Remove old location code.
23098         (set_expr_location): Likewise.
23099         (expr_has_location): Likewise.
23100         (expr_locus): Likewise.
23101         (set_expr_locus): Likewise.
23102         (expr_filename): Don't use location_from_locus.
23103         (expr_lineno): Likewise.
23104         * rtl-error.c (location_for_asm): Remove old location code.
23105         * c-lex.c (cb_line_change): Remove old location code.
23106         (fe_file_change): Likewise.
23107         (cb_def_pragma): Likewise.
23108         (c_lex_with_flags): Likewise.
23109         * gengtype.c (do_typedef): Don't special-case location types.
23110         (define_location_structures): Remove.
23111         (main): Don't call define_location_structures.
23112         * tree-pretty-print.c (dump_implicit_edges): Remove old location
23113         code.
23114
23115 2008-02-26  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
23116
23117         PR 26264
23118         * builtins.def (BUILT_IN_STDARG_START): Remove.
23119         * builtins.c (expand_builtin): Remove BUILT_IN_STDARG_START.
23120         * tree-stdarg.c (execute_optimize_stdarg): Likewise.
23121         * tree-inline.c (inline_forbidden_p_1): Likewise.
23122
23123 2008-02-26  Richard Guenther  <rguenther@suse.de>
23124
23125         * tree-flow.h (uid_decl_map_hash, uid_decl_map_eq): Move ...
23126         * tree.h (uid_decl_map_hash, uid_decl_map_eq): ... here.
23127         (lookup_decl_from_uid): Declare.
23128         (remove_decl_from_map): Likewise.
23129         * tree-ssa.c (uid_decl_map_eq, uid_decl_map_hash): Move ...
23130         * tree.c (uid_decl_map_eq, uid_decl_map_hash): ... here.
23131         (decl_for_uid_map): New global hashtable mapping DECL_UID
23132         to the decl tree.
23133         (init_ttree): Allocate it.
23134         (insert_decl_to_uid_decl_map): New helper function.
23135         (make_node_stat): Insert new decls into the map.
23136         (copy_node_stat): Likewise.
23137         (lookup_decl_from_uid): New function.
23138         (remove_decl_from_map): Likewise.
23139         (print_decl_for_uid_map_statistics): New helper.
23140         (dump_tree_statistics): Call it.
23141
23142         * tree-flow.h (struct gimple_df): Make referenced_vars a bitmap.
23143         (referenced_var_iterator): Adjust.
23144         (FOR_EACH_REFERENCED_VAR): Adjust.
23145         (FOR_EACH_REFERENCED_VAR_IN_BITMAP): New iterator.
23146         (num_referenced_vars): Adjust.
23147         * tree-flow-inline.h (gimple_referenced_vars): Adjust.
23148         (first_referenced_var): Remove.
23149         (end_referenced_vars_p): Likewise.
23150         (next_referenced_var): Likewise.
23151         (referenced_var_iterator_set): New helper function.
23152         * tree-dfa.c (referenced_var_lookup): Adjust.
23153         (referenced_var_check_and_insert): Likewise.
23154         (remove_referenced_var): Likewise.
23155         * tree-ssa.c (verify_flow_insensitive_alias_info): Use
23156         FOR_EACH_REFERENCED_VAR_IN_BITMAP.
23157         (verify_call_clobbering): Likewise.
23158         (verify_memory_partitions): Likewise.
23159         (init_tree_ssa): Allocate bitmap instead of hashtable for
23160         referenced_vars.
23161         (delete_tree_ssa): Adjust.
23162         * tree-ssa-alias.c (mark_aliases_call_clobbered): Use
23163         FOR_EACH_REFERENCED_VAR_IN_BITMAP.
23164         (compute_tag_properties): Likewise.
23165         (set_initial_properties): Likewise.
23166         (find_partition_for): Likewise.
23167         (update_reference_counts): Likewise.
23168         (dump_may_aliases_for): Likewise.
23169         * tree-ssa-operands.c (add_virtual_operand): Likewise.
23170         (add_call_clobber_ops): Likewise.
23171         (add_call_read_ops): Likewise.
23172         (get_asm_expr_operands): Likewise.
23173         * tree-into-ssa.c (dump_decl_set): Likewise.
23174         (update_ssa): Likewise.
23175         * tree-sra.c (scan_function): Likewise.
23176         (decide_instantiations): Likewise.
23177         (scalarize_parms): Likewise.
23178         * tree-ssa-alias-warnings.c (build_reference_table): Likewise.
23179         (dsa_named_for): Likewise.
23180         * tree-ssa-structalias.c (update_alias_info): Likewise.
23181         (merge_smts_into): Likewise.
23182
23183 2008-02-26  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
23184
23185         PR 34351
23186         * doc/invoke.texi (-Wall): Add -Wvolatile-register-var.
23187         * c-opts.c (c_common_handle_option): Wall enables
23188         Wvolatile-register-var.
23189         * common.opt: Move Wvolatile-register-var to...
23190         * c.opt: ...here.
23191
23192 2008-02-26  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
23193
23194         * common.opt (Wlarger-than=): New.
23195         * doc/invoke.texi (Warning Options): Replace -Wlarger-than- with
23196         -Wlarger-than=.
23197         * opts.c (common_handle_option): Handle -Wlarger-than=.
23198         * optc-gen.awk: Likewise.
23199         * opth-gen.awk: Likewise.
23200         * stor-layout.c (layout_decl): Use -Wlarger-than= for warning.
23201         * tree-optimize.c (tree_rest_of_compilation): Likewise.
23202
23203 2008-02-26  Manuel Lopez-Ibanez <manu@gcc.gnu.org>
23204
23205         * c-common.c (match_case_to_enum_1): Add appropriate
23206         OPT_W* parameter to warning.
23207         (c_do_switch_warnings): Likewise.
23208         * c-typeck.c (warning_init): Add one more parameter following
23209         'warning' function.
23210         (push_init_level): Update call to warning_init.
23211         (pop_init_level): Likewise.
23212         (add_pending_init): Likewise.
23213         (output_init_element: Likewise.
23214
23215 2008-02-26  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
23216
23217         PR 28322
23218         * toplev.c (toplev_main): If there are warnings or error, print
23219         errors for ignored options.
23220         * opts.c (ignored_options): New static variable.
23221         (postpone_unknown_option_error): New.
23222         (print_ignored_options): New.
23223         (handle_option): Postpone errors for unknown -Wno-* options.
23224         * opts.h (print_ignored_options): Declare.
23225
23226 2008-02-25  Richard Sandiford  <rsandifo@nildram.co.uk>
23227
23228         * config/mips/mips.md (loadgp_blockage, blockage): Change type
23229         to "ghost".
23230
23231 2008-02-25  Richard Guenther  <rguenther@suse.de>
23232
23233         Revert:
23234         2008-02-25  Richard Guenther  <rguenther@suse.de>
23235
23236         * tree-flow.h (uid_decl_map_hash, uid_decl_map_eq): Move ...
23237         * tree.h (uid_decl_map_hash, uid_decl_map_eq): ... here.
23238         (lookup_decl_from_uid): Declare.
23239         * tree-ssa.c (uid_decl_map_eq, uid_decl_map_hash): Move ...
23240         * tree.c (uid_decl_map_eq, uid_decl_map_hash): ... here.
23241         (decl_for_uid_map): New global hashtable mapping DECL_UID
23242         to the decl tree.
23243         (init_ttree): Allocate it.
23244         (insert_decl_to_uid_decl_map): New helper function.
23245         (make_node_stat): Insert new decls into the map.
23246         (copy_node_stat): Likewise.
23247         (lookup_decl_from_uid): New function.
23248         (print_decl_for_uid_map_statistics): New helper.
23249         (dump_tree_statistics): Call it.
23250
23251         * tree-flow.h (struct gimple_df): Make referenced_vars a bitmap.
23252         (referenced_var_iterator): Adjust.
23253         (FOR_EACH_REFERENCED_VAR): Adjust.
23254         (FOR_EACH_REFERENCED_VAR_IN_BITMAP): New iterator.
23255         (num_referenced_vars): Adjust.
23256         * tree-flow-inline.h (gimple_referenced_vars): Adjust.
23257         (first_referenced_var): Remove.
23258         (end_referenced_vars_p): Likewise.
23259         (next_referenced_var): Likewise.
23260         (referenced_var_iterator_set): New helper function.
23261         * tree-dfa.c (referenced_var_lookup): Adjust.
23262         (referenced_var_check_and_insert): Likewise.
23263         (remove_referenced_var): Likewise.
23264         * tree-ssa.c (verify_flow_insensitive_alias_info): Use
23265         FOR_EACH_REFERENCED_VAR_IN_BITMAP.
23266         (verify_call_clobbering): Likewise.
23267         (verify_memory_partitions): Likewise.
23268         (init_tree_ssa): Allocate bitmap instead of hashtable for
23269         referenced_vars.
23270         (delete_tree_ssa): Adjust.
23271         * tree-ssa-alias.c (mark_aliases_call_clobbered): Use
23272         FOR_EACH_REFERENCED_VAR_IN_BITMAP.
23273         (compute_tag_properties): Likewise.
23274         (set_initial_properties): Likewise.
23275         (find_partition_for): Likewise.
23276         (update_reference_counts): Likewise.
23277         (dump_may_aliases_for): Likewise.
23278         * tree-ssa-operands.c (add_virtual_operand): Likewise.
23279         (add_call_clobber_ops): Likewise.
23280         (add_call_read_ops): Likewise.
23281         (get_asm_expr_operands): Likewise.
23282         * tree-into-ssa.c (dump_decl_set): Likewise.
23283         (update_ssa): Likewise.
23284         * tree-sra.c (scan_function): Likewise.
23285         (decide_instantiations): Likewise.
23286         (scalarize_parms): Likewise.
23287         * tree-ssa-alias-warnings.c (build_reference_table): Likewise.
23288         (dsa_named_for): Likewise.
23289         * tree-ssa-structalias.c (update_alias_info): Likewise.
23290         (merge_smts_into): Likewise.
23291
23292 2008-02-25  Janne Blomqvist  <jb@gcc.gnu.org>
23293
23294         PR fortran/29549
23295         * doc/invoke.texi (-fcx-limited-range): Document new option.
23296         * toplev.c (process_options): Handle -fcx-fortran-rules.
23297         * common.opt: Add documentation for -fcx-fortran-rules.
23298
23299 2008-02-25  Janne Blomqvist  <jb@gcc.gnu.org>
23300
23301         PR c/35162
23302         * doc/invoke.texi (-fcx-limited-range): Correct to be in line with
23303         actual behaviour and C99.
23304
23305 2008-02-26  Ben Elliston  <bje@au.ibm.com>
23306
23307         * config/rs6000/rs6000.h (ASM_CPU_POWER5_SPEC): Define.
23308         (ASM_CPU_POWER6_SPEC): Likewise.
23309         (ASM_CPU_SPEC): Pass %(asm_cpu_power5) for -mcpu=power5.
23310         Likewise, pass %(asm_cpu_power6) for -mcpu=power6.
23311         (EXTRA_SPECS): Add asm_cpu_power5, asm_cpu_power6 spec strings.
23312
23313 2008-02-25  Richard Guenther  <rguenther@suse.de>
23314
23315         * tree-flow.h (uid_decl_map_hash, uid_decl_map_eq): Move ...
23316         * tree.h (uid_decl_map_hash, uid_decl_map_eq): ... here.
23317         (lookup_decl_from_uid): Declare.
23318         * tree-ssa.c (uid_decl_map_eq, uid_decl_map_hash): Move ...
23319         * tree.c (uid_decl_map_eq, uid_decl_map_hash): ... here.
23320         (decl_for_uid_map): New global hashtable mapping DECL_UID
23321         to the decl tree.
23322         (init_ttree): Allocate it.
23323         (insert_decl_to_uid_decl_map): New helper function.
23324         (make_node_stat): Insert new decls into the map.
23325         (copy_node_stat): Likewise.
23326         (lookup_decl_from_uid): New function.
23327         (print_decl_for_uid_map_statistics): New helper.
23328         (dump_tree_statistics): Call it.
23329
23330         * tree-flow.h (struct gimple_df): Make referenced_vars a bitmap.
23331         (referenced_var_iterator): Adjust.
23332         (FOR_EACH_REFERENCED_VAR): Adjust.
23333         (FOR_EACH_REFERENCED_VAR_IN_BITMAP): New iterator.
23334         (num_referenced_vars): Adjust.
23335         * tree-flow-inline.h (gimple_referenced_vars): Adjust.
23336         (first_referenced_var): Remove.
23337         (end_referenced_vars_p): Likewise.
23338         (next_referenced_var): Likewise.
23339         (referenced_var_iterator_set): New helper function.
23340         * tree-dfa.c (referenced_var_lookup): Adjust.
23341         (referenced_var_check_and_insert): Likewise.
23342         (remove_referenced_var): Likewise.
23343         * tree-ssa.c (verify_flow_insensitive_alias_info): Use
23344         FOR_EACH_REFERENCED_VAR_IN_BITMAP.
23345         (verify_call_clobbering): Likewise.
23346         (verify_memory_partitions): Likewise.
23347         (init_tree_ssa): Allocate bitmap instead of hashtable for
23348         referenced_vars.
23349         (delete_tree_ssa): Adjust.
23350         * tree-ssa-alias.c (mark_aliases_call_clobbered): Use
23351         FOR_EACH_REFERENCED_VAR_IN_BITMAP.
23352         (compute_tag_properties): Likewise.
23353         (set_initial_properties): Likewise.
23354         (find_partition_for): Likewise.
23355         (update_reference_counts): Likewise.
23356         (dump_may_aliases_for): Likewise.
23357         * tree-ssa-operands.c (add_virtual_operand): Likewise.
23358         (add_call_clobber_ops): Likewise.
23359         (add_call_read_ops): Likewise.
23360         (get_asm_expr_operands): Likewise.
23361         * tree-into-ssa.c (dump_decl_set): Likewise.
23362         (update_ssa): Likewise.
23363         * tree-sra.c (scan_function): Likewise.
23364         (decide_instantiations): Likewise.
23365         (scalarize_parms): Likewise.
23366         * tree-ssa-alias-warnings.c (build_reference_table): Likewise.
23367         (dsa_named_for): Likewise.
23368         * tree-ssa-structalias.c (update_alias_info): Likewise.
23369         (merge_smts_into): Likewise.
23370
23371 2008-02-25  Andreas Krebbel  <krebbel1@de.ibm.com>
23372
23373         PR target/35258
23374         * cse.c (cse_insn): Avoid creation of overlapping MEMs.
23375         * alias.c (nonoverlapping_memrefs_p): Export for use in other modules.
23376         * alias.h (nonoverlapping_memrefs_p): Likewise.
23377
23378 2008-02-25  Jan Beulich  <jbeulich@novell.com>
23379
23380         * Makefile.in: Also prefix uses of crt0.o and mcrt0.o with $(T).
23381         * config/i386/netware-libgcc.exp: Add __bswap?i2,
23382         __emultls_get_address, __emultls_register_common,
23383         __floatundi?f, and _Unwind_GetIPInfo.
23384         * config/i386/netware.c (gen_stdcall_or_fastcall_decoration):
23385         Sync with config/i386/winnt.c:gen_stdcall_or_fastcall_suffix().
23386         (gen_regparm_prefix): Likewise.
23387         (i386_nlm_encode_section_info): Sync with
23388         config/i386/winnt.c:i386_pe_encode_section_info().
23389         (i386_nlm_maybe_mangle_decl_assembler_name): New.
23390         i386_nlm_mangle_decl_assembler_name): New.
23391         (netware_override_options): New.
23392         * config/i386/netware.h (netware_override_options): Declare.
23393         (OVERRIDE_OPTIONS): Re-define to netware_override_options.
23394         (i386_nlm_mangle_decl_assembler_name): Declare.
23395         (TARGET_MANGLE_DECL_ASSEMBLER_NAME): Define.
23396
23397 2008-02-25  Ben Elliston  <bje@au.ibm.com>
23398
23399         PR other/32948
23400         * c-decl.c (grokdeclarator): Remove unused local variables
23401         `typedef_type' and `type_as_written'.
23402         * bb-reorder.c
23403         (find_rarely_executed_basic_blocks_and_crossing_edges): Remove
23404         unused local variable `has_hot_blocks'.
23405         (fix_crossing_conditional_branches): Remove unused local variable
23406         `prev_bb'.
23407
23408 2008-02-25  Uros Bizjak  <ubizjak@gmail.com>
23409
23410         PR middle-end/19984
23411         * builtins.def (BUILT_IN_NAN): Define as c99 builtin
23412         using DEF_C99_BUILTIN.
23413         (BUILT_IN_NANF): Ditto.
23414         (BUILT_IN_NANL): Ditto.
23415
23416 2008-02-25  Ayal Zaks  <zaks@il.ibm.com>
23417             Revital Eres  <eres@il.ibm.com>
23418
23419         * modulo-sched.c (calculate_must_precede_follow): Address TODO
23420         regarding the order of two dependent insns in the same row.
23421
23422 2008-02-25  Eric Botcazou  <ebotcazou@adacore.com>
23423
23424         * stor-layout.c (layout_decl): Do not bump the alignment of a
23425         bit-field to more than byte alignment if it is packed.
23426
23427 2008-02-24  David Edelsohn  <edelsohn@gnu.org>
23428
23429         * config/rs6000/rs6000.c (processor_costs): Add cache costs for
23430         e300c2 and e300c3.
23431
23432 2008-02-24  Diego Novillo  <dnovillo@google.com>
23433
23434         http://gcc.gnu.org/ml/gcc-patches/2008-02/msg01094.html
23435
23436         PR 33738
23437         * tree-vrp.c (vrp_evaluate_conditional): With
23438         -Wtype-limits, emit a warning when comparing against a
23439         constant outside the natural range of OP0's type.
23440         * c.opt (Wtype-limits): Move ...
23441         * common.opt (Wtype-limits): ... here.
23442
23443 2008-02-24  Edmar Wienskoski  <edmar@freescale.com>
23444
23445         * config.gcc (powerpc*-*-*): Add new cores e300c2 and e300c3.
23446         * config/rs6000/e300c2c3.md: New file.
23447         * config/rs6000/rs6000.c (processor_costs): Add new costs for
23448         e300c2 and e300c3.
23449         (rs6000_override_options): Add e300c2 and e300c3 cases to
23450         processor_target_table. Do not allow usage of Altivec or Spe
23451         with e300 cores. Initialize rs6000_cost for e300c2 and e300c3.
23452         (rs6000_issue_rate): Set issue rate for e300c2 and e300c3.
23453         * config/rs6000/rs6000.h (processor_type): Add
23454         PROCESSOR_PPCE300C2 and PROCESSOR_PPCE300C3.
23455         (ASM_CPU_SPEC): Add e300c2 and e300c3.
23456         * config/rs6000/rs6000.md (define_attr "cpu"): Add ppce300c2
23457         and ppce300c3. Include e300c2c3.md.
23458
23459 2008-02-23  David Edelsohn  <edelsohn@gnu.org>
23460
23461         * config/rs6000/rs6000.h (CONSTANT_ALIGNMENT): Use STRICT_ALIGNMENT
23462         instead of TARGET_STRICT_ALIGN.
23463
23464 2008-02-23  Joseph Myers  <joseph@codesourcery.com>
23465
23466         * explow.c (memory_address): Assert that the generated address is
23467         valid.
23468
23469 2008-02-23  Francois-Xavier Coudert  <coudert@clipper.ens.fr>
23470
23471         PR target/25477
23472         * config/darwin-protos.h: Add darwin_patch_builtins prototype.
23473         * config/darwin-ppc-ldouble-patch.def: New file.
23474         * config/rs6000/darwin.h (SUBTARGET_INIT_BUILTINS): New macro.
23475         * config/rs6000/rs6000.c (rs6000_init_builtins): Call
23476         SUBTARGET_INIT_BUILTINS if defined.
23477         * config/darwin.c (darwin_patch_builtin, darwin_patch_builtins):
23478         New functions.
23479
23480 2008-02-23  Andrew Pinski  <andrew_pinski@playstation.sony.com>
23481
23482         PR rtl-opt/33512
23483         * simplify-rtx.c (simplify_binary_operation_1): Add simplification
23484         of (and X (ior (not X) Y) and (and (ior (not X) Y) X).
23485
23486 2008-02-23  Andrew Pinski  <andrew_pinski@playstation.sony.com>
23487
23488         PR pch/35027
23489         * c-pch.c (c_common_valid_pch): Make the "too short to be a PCH
23490         file" warning condtional on -Winvalid-PCH.
23491
23492 2008-02-23  Daniel Jacobowitz  <dan@codesourcery.com>
23493
23494         * expmed.c (extract_bit_field): Always use adjust_address for MEM.
23495
23496 2008-02-23  Uros Bizjak  <ubizjak@gmail.com>
23497
23498         PR target/22076
23499         PR target/34256
23500         * config/i386/mmx.md (*mov<mode>_internal_rex64): Use "!y" to
23501         prevent reload from using MMX registers.
23502         (*mov<mode>_internal): Ditto.
23503         (*movv2sf_internal_rex64): Ditto.
23504         (*movv2sf_internal): Ditto.
23505
23506 2008-02-23  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
23507
23508         PR documentation/31569
23509         * doc/install.texi2html: Use makeinfo --no-number-sections.
23510
23511 2008-02-22  Nathan Froyd  <froydnj@codesourcery.com>
23512
23513         * config/rs6000/rs6000.c (rs6000_legitimize_address): Check to
23514         ensure that we can address an entire entity > 8 bytes.  Don't
23515         generate reg+reg addressing for such data.
23516
23517 2008-02-22  Nathan Froyd  <froydnj@codesourcery.com>
23518
23519         * config/rs6000/rs6000.h (CONSTANT_ALIGNMENT): Don't overalign
23520         strings when optimizing for size, unless the target cares about
23521         alignment.
23522
23523 2008-02-22  Tom Tromey  <tromey@redhat.com>
23524
23525         * regclass.c (current_pass): Remove declaration.
23526
23527 2008-02-22  Anatoly Sokolov <aesok@post.ru>
23528
23529         * config/avr/libgcc.S (__RAMPZ__): Define.
23530         (__do_copy_data): Add for devices with 128KB code memory.
23531
23532 2008-02-22  Nathan Froyd  <froydnj@codesourcery.com>
23533
23534         * config/rs6000/linuxspe.h (SUBSUBTARGET_OVERRIDE_OPTIONS):
23535         Use spe_abi.
23536         * config/rs6000/eabispe.h (SUBSUBTARGET_OVERRIDE_OPTIONS): Likewise.
23537
23538 2008-02-22  Hans-Peter Nilsson  <hp@axis.com>
23539
23540         * config/cris/cris.h (REG_CLASS_FROM_LETTER): Recognize 'b' for
23541         GENNONACR_REGS.
23542
23543 2008-02-22  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
23544
23545         PR c/19999
23546         * c-typeck.c (build_binary_op): Warn about floating point
23547         comparisons if FLOAT_TYPE_P, not only for REAL_TYPE.
23548
23549 2008-02-21  Janis Johnson  <janis187@us.ibm.com>
23550
23551         PR target/34526
23552         * config/rs6000/rs6000.c (rs6000_altivec_abi): Clarify comment.
23553         (rs6000_explicit_options): Split abi into spe_abi and altivec_abi,
23554         add vrsave.
23555         (rs6000_override_options): Set altivec_abi as default, not override,
23556         for 64-bit GNU/Linux; for 32-bit GNU/Linux default to altivec_abi for
23557         TARGET_ALTIVEC; default to TARGET_ALTIVEC_VRSAVE when AltiVec ABI
23558         is used; use new member spe_abi.
23559         (rs6000_handle_option): Set rs6000_explicit_options.vrsave; use
23560         spe_abi and altivec_abi.
23561
23562 2008-02-22  Tomas Bily  <tbily@suse.cz>
23563
23564         * tree-vectorizer.c (vect_is_simple_reduction): Fix comment typo.
23565
23566 2008-02-21  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
23567
23568         PR bootstrap/35273
23569         * config.build (build_file_translate): Set to `CMD //c' only if
23570         it works.
23571         * Makefile.in (build_file_translate): Improve comment.
23572
23573 2008-02-21  Jan Hubicka  <jh@suse.cz>
23574
23575         * predict.def (PRED_TREE_OPCODE_POSITIVE, PRED_TREE_OPCODE_NONEQUAL,
23576         PRED_TREE_OPCODE_POSITIVE, PRED_TREE_OPCODE_NONEQUAL, PRED_CALL,
23577         PRED_TREE_EARLY_RETURN, PRED_NULL_RETURN): Update.
23578
23579 2008-02-21  Michael Matz  <matz@suse.de>
23580
23581         PR target/35264
23582         * config/i386/i386.c (ix86_expand_branch): Add missing breaks.
23583
23584 2008-02-21  Uros Bizjak  <ubizjak@gmail.com>
23585
23586         * config/i386/i386.md (mov<mode>cc): Macroize expander from movsfcc,
23587         movdfcc and movxfcc using X87MODEF mode iterator and SSE_FLOAT_MODE_P
23588         as insn constraint.
23589         * config/i386/sse.md (<sse>_movup<ssemodesuffixf2c>): Macroize insn
23590         from sse_movups adn sse2_movupd using SSEMODEF2P mode iterator and
23591         SSE_VEC_FLOAT_MODE_P as insn constraint.
23592         (<sse>_movmskp<ssemodesuffixf2c>): Ditto from similar patterns.
23593         (sse4a_movnt<mode>): Macroize insn from sse4a_movntsf and
23594         sse4a_movntdf using MODEF mode iterator.
23595         (sse4a_vmmovnt<mode>): Macroize insn form sse4a_vmmovntv2df and
23596         sse4a_vmmovntv4sf using SSEMODEF2P mode iterator.
23597         (sse4_1_blendp<ssemodesuffixf2c>): Ditto from similar patterns.
23598         (sse4_1_blendvp<ssemodesuffixf2c>): Ditto.
23599         (sse4_1_dpp<ssemodesuffixf2c>): Ditto.
23600         (sse4_1_roundp<ssemodesuffixf2c>): Ditto.
23601         (sse4_1_rounds<ssemodesuffixf2c>): Ditto.
23602
23603 2008-02-21  Richard Guenther  <rguenther@suse.de>
23604
23605         * tree.def (PAREN_EXPR): New tree code.
23606         * fold-const.c (fold_unary): Remove PAREN_EXPR around constants
23607         and PAREN_EXPR.
23608         * tree-pretty-print.c (dump_generic_node): Handle PAREN_EXPR.
23609         * expr.c (expand_expr_real_1): Likewise.
23610         * tree-inline.c (estimate_num_insns_1): Likewise.
23611         * tree-complex.c (expand_complex_move): Likewise.
23612         * tree-vectorizer.c (vect_is_simple_use): Treat PAREN_EXPR (x)
23613         as plain x.
23614
23615 2008-02-20  Kaz Kojima  <kkojima@gcc.gnu.org>
23616
23617         PR target/35225
23618         * config/sh/sh.c (find_barrier): Don't go past 'from' argument.
23619
23620 2008-02-20  Kaz Kojima  <kkojima@gcc.gnu.org>
23621
23622         PR target/35190
23623         * config/sh/sh.md (jump_compact): Disable for crossing jumps.
23624
23625         * config/sh/sh.c (find_barrier): Don't go past
23626         NOTE_INSN_SWITCH_TEXT_SECTIONS note.
23627
23628 2008-02-20  DJ Delorie  <dj@redhat.com>
23629
23630         * config/h8300/h8300.md (insv): Force source operand to be a register.
23631
23632         * config/h8300/h8300.c (h8300_expand_epilogue): Emit return insn
23633         as a jump, not as a plain insn.
23634
23635 2008-02-20  Seongbae Park <seongbae.park@gmail.com>
23636
23637         * doc/invoke.texi (Warning Options): Add new option
23638         -Wframe-larger-than=.
23639         (-Wframe-larger-than): Document.
23640
23641         * flags.h (warn_frame_larger_than, frame_larger_than_size):
23642         Add declarations for new option variables.
23643
23644         * final.c (final_start_function): Check the frame size
23645         before emission and issue a Wframe-larger-than warning.
23646
23647         * opts.c (warn_frame_larger_than, frame_larger_than_size):
23648         Add definitions for new option variables.
23649         (common_handle_option): Handle new option OPT_Wframe_larger_than_.
23650
23651         * common.opt (Wframe-larger-than=): New option.
23652
23653 2008-02-20  Uros Bizjak  <ubizjak@gmail.com>
23654
23655         * config/i386/sse.md (<sse>_vmmul<mode>3): Fix typo in asm template.
23656         (<sse>_div<mode>3): Ditto.
23657         (<sse>_vmdiv<mode>3): Ditto.
23658         (<sse>_vmsqrt<mode>2): Ditto.
23659         (*smax<mode>3): Ditto.
23660         (sse5_frcz<mode>2): Ditto.
23661         (sse5_vmfrcz<mode>2): Ditto.  Use TARGET_SSE5 instead of TARGET_ROUND
23662         as insn constraint.
23663
23664 2008-02-20  Richard Guenther  <rguenther@suse.de>
23665
23666         PR middle-end/35265
23667         * builtins.c (validate_arg): If we want an INTEGER_TYPE,
23668         be happy with INTEGRAL_TYPE_P.
23669
23670 2008-02-20  Richard Guenther  <rguenther@suse.de>
23671
23672         * fold-const.c (split_tree): Associate floatig-point expressions
23673         if flag_associative_math is set.
23674
23675 2008-02-20  Richard Guenther  <rguenther@suse.de>
23676
23677         * tree.h (fold_real_zero_addition_p): Declare.
23678         * fold-const.c (fold_real_zero_addition_p): Export.
23679         * tree-ssa-reassoc.c (eliminate_using_constants): Also handle
23680         floating-point operations with zero and one.
23681
23682 2008-02-20  Paolo Bonzini  <bonzini@gnu.org>
23683
23684         * doc/install.texi: Correct references to CFLAGS, replacing them
23685         with BOOT_CFLAGS.  Document flags used during bootstrap for
23686         target libraries.
23687
23688 2008-02-20  Uros Bizjak  <ubizjak@gmail.com>
23689
23690         * config/i386/i386.h (SSE_VEC_FLOAT_MODE_P): New define.
23691         * config/i386/i386.md (*sse_setcc<mode>): Macroize from *sse_setccsf
23692         and *sse_setccdf using MODEF mode iterator and SSE_FLOAT_MODE_P as
23693         insn constraint.
23694         (smin<mode>3): Ditto from similar patterns.
23695         (smax<mode>3): Ditto.
23696         (*ieee_smin<mode>3): Ditto.
23697         (*ieee_smax<mode>3): Ditto.
23698         * config/i386/sse.md (sse): New mode attribute.
23699         (mov<mode>): Macroize expander from movv4sf and movv2df using
23700         SSEMODEF2P mode iterator.
23701         (<sse>_movnt<mode>): Ditto from similar patterns. Use
23702         SSE_VEC_FLOAT_MODE_P as insn constraint.
23703         (storent<mode>): Ditto.
23704         (storent<mode>): Macroize expander from storentsf and storentdf using
23705         MODEF mode iterator.
23706         (neg<mode>2): Macroize from negv4sf2 and negv2df2 using SSEMODEF2P
23707         mode iterator and SSE_VEC_FLOAT_MODE_P as insn constraint.
23708         (abs<mode>2): Ditto from similar patterns.
23709         (add<mode>3, *add<mode>3, <sse>_vmadd<mode>3): Ditto.
23710         (sub<mode>3, *sub<mode>3, <sse>_vmsub<mode>3): Ditto.
23711         (<sse>_div<mode>3, <sse>_vmdiv<mode>3): Ditto.
23712         (<sse>_vmsqrt<mode>2): Ditto.
23713         (smin<mode>3, *smin<mode>3_finite, *smin<mode>3)
23714         (<sse>_vmsmin<mode>3, *ieee_smin<mode>3): Ditto.
23715         (smax<mode>3, *smax<mode>3_finite, *smax<mode>3)
23716         (<sse>_vmsmax<mode>3, *ieee_smax<mode>3): Ditto.
23717         (<sse>_maskcmp<mode>3): Macroize from sse_maskcmpv4sf3,
23718         sse_maskcmpsf3, sse2_maskcmpv2df3 and sse2_maskcmpdf3 using SSEMODEF4
23719         mode iterator. Use SSE_FLOAT_MODE_P with SSE_VEC_FLOAT_MODE_P as
23720         insn constraint.
23721         (<sse>_comi): Macroize from sse_comi and sse2_comi using MODEF mode
23722         iterator and SSE_FLOAT_MODE_P as insn constraint.
23723         (<sse>_ucomi): Ditto from similar patterns.
23724         (<sse>_vmmaskcmp<mode>3): Macroize from sse_vmmaskcmpv4sf3 and
23725         sse2_vmmaskcmpv2df3 using SSEMODEF2P mode iterator and
23726         SSE_VEC_FLOAT_MODE_P as insn constraint.
23727         (vcond<mode>): Ditto from similar patterns.
23728         (and<mode>3, *and<mode>3): Ditto.
23729         (<sse>_nand<mode>3): Ditto.
23730         (ior<mode>3, *ior<mode>3): Ditto.
23731         (xor<mode>3, *xor<mode>3): Ditto.
23732         (*and<mode>3): Macroize from *andsf3 and *anddf3 using MODEF mode
23733         iterator and SSE_FLOAT_MODE_P as insn constraint.
23734         (*nand<mode>3): Ditto from similar patterns.
23735         (*ior<mode>3): Ditto.
23736         (*xor<mode>3): Ditto.
23737
23738 2008-02-20  Ira Rosen  <irar@il.ibm.com>
23739
23740         * config/spu/spu.md (vec_unpacku_hi_v8hi, vec_unpacku_lo_v8hi,
23741         vec_unpacks_hi_v8hi, vec_unpacks_lo_v8hi, vec_unpacku_hi_v16qi,
23742         vec_unpacku_lo_v16qi, vec_unpacks_lo_v16qi): Implement.
23743
23744 2008-02-19  Jan Hubicka  <jh@suse.cz>
23745
23746         * predict.c (tree_bb_level_predictions): Remove variable next
23747         mistakely introduced by previous commit.
23748
23749 2008-02-19  Jan Hubicka  <jh@suse.cz>
23750
23751         * predict.c (predict_paths_leading_to): Rewrite.
23752         (predict_paths_for_bb): New.
23753         (tree_bb_level_predictions): Update call of predict_paths_leading_to.
23754
23755 2008-02-19  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
23756
23757         PR bootstrap/35218
23758         * Makefile.in (build_file_translate): New.
23759         (gcc-vers.texi): Use it for translating $(abs_srcdir).
23760         * config.build (build_file_translate): Set to `CMD //c' on MinGW.
23761         * configure.ac (build_file_translate): Substitute it.
23762         * configure: Regenerate.
23763
23764 2008-02-19  Jan Hubicka  <jh@suse.cz>
23765
23766         PR rtl-optimization/34408
23767         * see.c (see_def_extension_not_merged): Copy subreg so we don't have
23768         invalid sharing.
23769
23770 2008-02-19  Jan Hubicka  <jh@suse.cz>
23771
23772         PR middle-end/28779
23773         * tree-inline.c (estimate_num_insns_1): Fix counting of cost of
23774         call_expr.
23775
23776 2008-02-19  H.J. Lu  <hongjiu.lu@intel.com>
23777
23778         PR Ada/35186
23779         * config/i386/i386-modes.def: Revert the last DI alignment
23780         change until Ada people can look into it.
23781
23782 2008-02-19  Nick Clifton  <nickc@redhat.com>
23783
23784         * opts.c (print_specific_help): Fix typo in --help text.
23785
23786 2008-02-19  Jakub Jelinek  <jakub@redhat.com>
23787
23788         PR target/35239
23789         * config/i386/cpuid.h (__cpuid, __get_cpuid_max): Use special
23790         32-bit inline asm without asm alternatives for host GCC < 3.0.
23791
23792 2008-02-19  Richard Guenther  <rguenther@suse.de>
23793
23794         PR tree-optimization/34989
23795         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Re-structure.
23796         Allow propagation to INDIRECT_REF if we can simplify only.
23797
23798 2008-02-19  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
23799
23800         * c-common.c (warn_for_collisions_1): Use appropriate option when
23801         warning.
23802
23803 2008-02-19  Nick Clifton  <nickc@redhat.com>
23804
23805         PR other/31349
23806         * opts.c (undocumented_msg): Leave blank unless checking is enabled.
23807         (handle_options): Fix indentation.
23808         (print_filtered_help): If no language-specific options were
23809         displayed tell the user how to list all the options supported by
23810         the language's front-end.
23811         (print_specific_help): Fix indentation and remove duplicate line.
23812         (common_handle_option): Handle the -v option.
23813         For --help enable the display of undocumented options if the -v
23814         switch has been included on the command line.
23815         For --help= check for overlaps in the arguments between the option
23816         classes and the language names and issue a warning when they
23817         cannot be disambiguated.
23818         * c.opt (v): Pass on to the common option handler.
23819
23820 2008-02-19  Revital Eres  <eres@il.ibm.com>
23821
23822         * modulo-sched.c (sms_schedule): Change dump message when
23823         create_ddg function fails.
23824         (try_scheduling_node_in_cycle): Rename row to cycle.
23825         (print_partial_schedule): Rename CYCLE to ROW.
23826
23827 2008-02-19  Christian Bruel  <christian.bruel@st.com>
23828             Zdenek Dvorak  <ook@ucw.cz>
23829
23830         * tree-ssa-loop-ivopts.c (may_be_unaligned_p): Check step alignment.
23831
23832 2008-02-19  Uros Bizjak  <ubizjak@gmail.com>
23833
23834         PR target/33555
23835         * config/i386/i386.md (*x86_movsicc_0_m1_se): New insn pattern.
23836         (*x86_movdicc_0_m1_se): Ditto.
23837
23838 2008-02-19  Uros Bizjak  <ubizjak@gmail.com>
23839
23840         * config/i386/sfp-machine.h (__gcc_CMPtype): New typedef.
23841         (CMPtype): Define as __gcc_CMPtype.
23842         * config/rs6000/sfp-machine.h (__gcc_CMPtype): New typedef.
23843         (CMPtype): Define as __gcc_CMPtype.
23844
23845 2008-02-19  Hans-Peter Nilsson  <hp@axis.com>
23846
23847         Support valgrind 3.3 for --enable-checking=valgrind.
23848         * system.h: Consolidate ENABLE_VALGRIND_CHECKING-dependent defines
23849         here.
23850         [!VALGRIND_MAKE_MEM_NOACCESS]: Define as VALGRIND_MAKE_NOACCESS.
23851         [!VALGRIND_MAKE_MEM_DEFINED]: Define as VALGRIND_MAKE_READABLE.
23852         [!VALGRIND_MAKE_MEM_UNDEFINED]: Define as VALGRIND_MAKE_WRITABLE.
23853         * ggc-common.c: Remove ENABLE_VALGRIND_CHECKING-dependent defines.
23854         Replace use of VALGRIND_MAKE_READABLE, VALGRIND_MAKE_WRITABLE, and
23855         VALGRIND_MAKE_NOACCESS with VALGRIND_MAKE_MEM_DEFINED,
23856         VALGRIND_MAKE_MEM_UNDEFINED, and VALGRIND_MAKE_MEM_NOACCESS
23857         respectively.
23858         * ggc-zone.c: Similar.
23859         * ggc-page.c: Similar.
23860
23861 2008-02-19  Paul Brook  <paul@codesourcery.com>
23862
23863         PR target/35071
23864         * config/arm/ieee754-df.S: Fix do_it typo.
23865         * config/arm/ieee754-sf.S: Fix do_it typo.
23866
23867 2008-02-18  H.J. Lu  <hongjiu.lu@intel.com>
23868
23869         PR target/35189
23870         * config/i386/i386.c (OPTION_MASK_ISA_MMX_SET): New.
23871         (OPTION_MASK_ISA_3DNOW_SET): Likewise.
23872         (OPTION_MASK_ISA_SSE_SET): Likewise.
23873         (OPTION_MASK_ISA_SSE2_SET): Likewise.
23874         (OPTION_MASK_ISA_SSE3_SET): Likewise.
23875         (OPTION_MASK_ISA_SSSE3_SET): Likewise.
23876         (OPTION_MASK_ISA_SSE4_1_SET): Likewise.
23877         (OPTION_MASK_ISA_SSE4_2_SET): Likewise.
23878         (OPTION_MASK_ISA_SSE4_SET): Likewise.
23879         (OPTION_MASK_ISA_SSE4A_SET): Likewise.
23880         (OPTION_MASK_ISA_SSE5_SET): Likewise.
23881         (OPTION_MASK_ISA_3DNOW_A_UNSET): Likewise.
23882         (OPTION_MASK_ISA_MMX_UNSET): Updated.
23883         (OPTION_MASK_ISA_3DNOW_UNSET): Updated.
23884         (OPTION_MASK_ISA_SSE_UNSET): Likewise.
23885         (OPTION_MASK_ISA_SSE3_UNSET): Likewise.
23886         (OPTION_MASK_ISA_SSSE3_UNSET): Likewise.
23887         (OPTION_MASK_ISA_SSE4_1_UNSET): Likewise.
23888         (OPTION_MASK_ISA_SSE4_2_UNSET): Likewise.
23889         (OPTION_MASK_ISA_SSE4A_UNSET): Likewise.
23890         (OPTION_MASK_ISA_SSE5_UNSET): Likewise.
23891         (OPTION_MASK_ISA_SSE4): Removed.
23892         (ix86_handle_option): Turn on bits in ix86_isa_flags and
23893         ix86_isa_flags_explicit with OPTION_MASK_ISA_XXX_SET for -mXXX.
23894         (override_options): Don't turn on implied SSE/MMX bits in
23895         ix86_isa_flags.
23896
23897 2008-02-18  H.J. Lu  <hongjiu.lu@intel.com>
23898
23899         * config/i386/i386-modes.def: Use 4 byte alignment on DI for
23900         32bit host.
23901
23902 2008-02-18  Joey Ye  <joey.ye@intel.com>
23903
23904         PR middle-end/34921
23905         * tree-nested.c (insert_field_into_struct): Set type alignment
23906         to field alignment if the former is less than the latter.
23907
23908 2008-02-18  Jakub Jelinek  <jakub@redhat.com>
23909
23910         * BASE-VER: Set to 4.4.0.
23911
23912 2008-02-17 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
23913
23914         * doc/c-tree.texi: Use @dots{} and @enddots{} where appropriate.
23915         * doc/cfg.texi: Likewise.
23916         * doc/extend.texi: Likewise.
23917         * doc/gty.texi: Likewise.
23918         * doc/invoke.texi: Likewise.
23919         * doc/loop.texi: Likewise.
23920         * doc/md.texi: Likewise.
23921         * doc/passes.texi: Likewise.
23922         * doc/rtl.texi: Likewise.
23923         * doc/sourcebuild.texi: Likewise.
23924         * doc/tm.texi: Likewise.
23925         * doc/tree-ssa.texi: Likewise.
23926
23927 2008-02-17  Richard Guenther  <rguenther@suse.de>
23928
23929         PR middle-end/35227
23930         * tree-complex.c (init_parameter_lattice_values): Handle parameters
23931         without default definition.
23932
23933 2008-02-17  Richard Guenther  <rguenther@suse.de>
23934
23935         PR tree-optimization/35231
23936         * tree-vrp.c (register_edge_assert_for): Do not assume A == 0
23937         if A | B != 1.
23938
23939 2008-02-17  Uros Bizjak  <ubizjak@gmail.com>
23940
23941         Revert:
23942         2008-02-15  Uros Bizjak  <ubizjak@gmail.com>
23943         * config/i386/sfp-machine.h (CMPtype): Define as typedef using
23944         libgcc_cmp_return mode.
23945
23946 2008-02-16  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
23947
23948         PR c/28368
23949         * doc/invoke.texi (-std): Clarify description of -std= and -ansi.
23950
23951 2008-02-16  Ralf Corsepius  <ralf.corsepius@rtems.org>
23952
23953         * config/m68k/t-rtems (M68K_MLIB_CPU): Add 5208, 5307, 5407, 5475
23954         multilibs.
23955
23956 2008-02-16  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
23957
23958         * doc/c-tree.texi: Use `@.' where appropriate.
23959         * doc/extend.texi: Likewise.
23960         * doc/install.texi: Likewise.
23961         * doc/invoke.texi: Likewise.
23962         * doc/loop.texi: Likewise.
23963         * doc/makefile.texi: Likewise.
23964         * doc/md.texi: Likewise.
23965         * doc/passes.texi: Likewise.
23966         * doc/standards.texi: Likewise.
23967         * doc/tm.texi: Likewise.
23968
23969 2008-02-15  Jakub Jelinek  <jakub@redhat.com>
23970
23971         PR middle-end/35196
23972         * omp-low.c (expand_omp_for_generic): Don't initialize fd->v
23973         in entry_bb.
23974         (expand_omp_for_static_nochunk): Initialize fd->v in seq_start_bb
23975         rather than in entry_bb.
23976
23977 2008-02-15  Uros Bizjak  <ubizjak@gmail.com>
23978
23979         * config/i386/sfp-machine.h (CMPtype): Define as typedef using
23980         libgcc_cmp_return mode.
23981
23982 2008-02-15  Jakub Jelinek  <jakub@redhat.com>
23983
23984         PR middle-end/35130
23985         * tree-nested.c (convert_call_expr): Put FRAME.* vars into
23986         OMP_CLAUSE_SHARED rather than OMP_CLAUSE_FIRSTPRIVATE clause.
23987
23988 2008-02-15  Richard Guenther  <rguenther@suse.de>
23989             Zdenek Dvorak  <ook@ucw.cz>
23990
23991         PR tree-optimization/35164
23992         * tree-flow.h (stmt_references_abnormal_ssa_name): Declare.
23993         * tree-dfa.c (stmt_references_abnormal_ssa_name): New function.
23994         * tree-ssa-forwprop.c (tree_ssa_forward_propagate_single_use_vars):
23995         Only propagate addresses which do not have abnormal SSA_NAMEs
23996         in their operands.
23997
23998 2008-02-15  Joseph Myers  <joseph@codesourcery.com>
23999
24000         PR target/35088
24001         * config/m68k/m68k.h (DWARF_CIE_DATA_ALIGNMENT): Define.
24002
24003 2008-02-15  Jan Hubicka  <jh@suse.cz>
24004
24005         PR middle-end/35149
24006         * ipa.c (cgraph_remove_unreachable_nodes): Clear local.inlinable flag.
24007
24008 2008-02-15  Uros Bizjak  <ubizjak@gmail.com>
24009
24010         PR middle-end/34621
24011         * function.c (pad_to_arg_alignment): Remove test for STACK_BOUNDARY
24012         when calculating alignment_pad.
24013
24014 2008-02-15  Uros Bizjak  <ubizjak@gmail.com>
24015
24016         * config/i386/i386.h (CLEAR_RATIO): Use MIN macro.
24017         (WIDEST_HARDWARE_FP_SIZE): Use LONG_DOUBLE_TYPE_SIZE define.
24018         * config/i386/darwin.h (PREFERRED_STACK_BOUNDARY): Use MAX macro
24019         and STACK_BOUNDARY define.
24020
24021 2008-02-14  Danny Smith  <dannysmith@users.sourceforge.net>
24022
24023         PR preprocessor/35061
24024         * c-pragma.c (handle_pragma_pop_macro): Check that
24025         pushed_macro_table has been allocated.
24026
24027 2008-02-14  Eric Botcazou  <ebotcazou@adacore.com>
24028
24029         PR middle-end/35136
24030         * gimplify.c (force_gimple_operand_bsi): Revert 2008-02-12 change.
24031         (force_gimple_operand): Likewise.
24032         * tree-ssa-loop-ivopts.c (may_be_nonaddressable_p): Add new cases
24033         for TARGET_MEM_REF and CONVERT_EXPR/NON_LVALUE_EXPR/NOP_EXPR.
24034         Also recurse on the operand for regular VIEW_CONVERT_EXPRs.
24035         (find_interesting_uses_address): Check addressability and alignment
24036         of the base expression only after substituting bases of IVs into it.
24037
24038 2008-02-14  Michael Matz  <matz@suse.de>
24039
24040         PR target/34930
24041         * function.c (instantiate_virtual_regs_in_insn): Reload address
24042         before falling back to reloading the whole operand.
24043
24044 2008-02-14  Andreas Krebbel  <krebbel1@de.ibm.com>
24045
24046         * config/s390/s390.c (s390_mainpool_start): Emit the pool
24047         before the first section switch note.
24048
24049 2008-02-14 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
24050
24051         * doc/bugreport.texi: Update copyright years.
24052         * doc/c-tree.texi: Likewise.
24053         * doc/cfg.texi: Likewise.
24054         * doc/cpp.texi: Likewise.
24055         * doc/cppinternals.texi: Likewise.
24056         * doc/fragments.texi: Likewise.
24057         * doc/frontends.texi: Likewise.
24058         * doc/gcc.texi: Likewise.
24059         * doc/gty.texi: Likewise.
24060         * doc/hostconfig.texi: Likewise.
24061         * doc/implement-c.texi: Likewise.
24062         * doc/libgcc.texi: Likewise.
24063         * doc/loop.texi: Likewise.
24064         * doc/makefile.texi: Likewise.
24065         * doc/options.texi: Likewise.
24066         * doc/passes.texi: Likewise.
24067         * doc/rtl.texi: Likewise.
24068         * doc/sourcebuild.texi: Likewise.
24069         * doc/standards.texi: Likewise.
24070         * doc/tree-ssa.texi: Likewise.
24071         * doc/trouble.texi: Likewise.
24072
24073         * doc/extend.texi: Use @: or add comma where appropriate.
24074         * doc/invoke.texi: Likewise.
24075         * doc/tm.texi: Likewise.
24076
24077 2008-02-14  Alan Modra  <amodra@bigpond.net.au>
24078
24079         PR target/34393
24080         * config/rs6000/rs6000.md (restore_stack_block): Force operands[1]
24081         to a reg.
24082
24083 2008-02-14  Jesper Nilsson  <jesper.nilsson@axis.com>
24084
24085         * doc/md.texi (clz, ctz): Add reference.
24086         * doc/rtl.texi (clz, ctz): Likewise.
24087
24088 2008-02-13  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
24089
24090         PR other/35148
24091         * Makefile.in (gcc-vers.texi): Use abs_srcdir for the value of
24092         srcdir.
24093
24094 2008-02-13  Andreas Krebbel  <krebbel1@de.ibm.com>
24095
24096         * config/s390/s390.c (struct constant_pool): New field
24097         emit_pool_after added.
24098         (s390_mainpool_start): Set the emit_pool_after flag according
24099         to the section switch notes.
24100         (s390_mainpool_finish): Consider emit_pool_after when emitting
24101         the literal pool at the end of the function.
24102         (s390_chunkify_start): Force literal pool splits at section
24103         switch notes.
24104
24105 2008-02-13  Michael Matz  <matz@suse.de>
24106
24107         PR debug/35065
24108         * var-tracking.c (clobber_variable_part): Correctly traverse the
24109         list.
24110
24111 2008-02-13  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
24112
24113         PR 29673
24114         * doc/invoke.texi (Debugging Options): Remove -fdump-tree-inlined.
24115         Add -fdump-ipa-inline.
24116         * tree-dump.c (dump_files): Remove tree-inlined dump.
24117         * tree-pass.h (tree_dump_index): Remove TDI_inlined.
24118
24119 2008-02-12  Richard Guenther  <rguenther@suse.de>
24120
24121         PR tree-optimization/35171
24122         * tree-vect-patterns.c (vect_recog_dot_prod_pattern): Deal with
24123         default defs.
24124
24125 2008-02-12  Richard Guenther  <rguenther@suse.de>
24126
24127         PR middle-end/35163
24128         * fold-const.c (fold_widened_comparison): Use get_unwidened in
24129         value-preserving mode.  Disallow final truncation.
24130
24131 2008-02-12  Eric Botcazou  <ebotcazou@adacore.com>
24132
24133         PR middle-end/35136
24134         * gimplify.c (force_gimple_operand_bsi): Move SSA renaming
24135         code from here to...
24136         (force_gimple_operand): ...here.
24137
24138 2008-02-12  Jakub Jelinek  <jakub@redhat.com>
24139
24140         PR c++/35144
24141         * tree-sra.c (sra_build_assignment): fold_convert SRC if copying
24142         non-compatible pointers.
24143         (generate_element_copy): If SRC and DST are RECORD_TYPEs with
24144         different FIELD_DECLs, try harder by comparing field offsets, sizes
24145         and types.
24146
24147         PR inline-asm/35160
24148         * function.c (match_asm_constraints_1): Don't replace the same input
24149         multiple times.
24150
24151 2008-02-12  Anatoly Sokolov <aesok@post.ru>
24152
24153         * config/avr/avr.h (AVR_HAVE_RAMPZ): Define.
24154         * config/avr/avr.c (expand_prologue): Save RAMPZ register.
24155         (expand_epilogue): Restore RAMPZ register.
24156         * config/avr/avr.md (RAMPZ_ADDR): New constant.
24157
24158 2008-02-11  Kai Tietz  <kai.tietz@onevision.com>
24159
24160         * config/i386/cygwin.asm: (__alloca): Correct calling
24161         convention and alignment.
24162         (__chkstk): Force 8 byte stack alignment.
24163
24164 2008-02-11  Uros Bizjak  <ubizjak@gmail.com>
24165             Richard Guenther  <rguenther@suse.de>
24166
24167         PR tree-optimization/33992
24168         * tree-ssa-loop-im.c (rewrite_bittest): Fixup the type of
24169         the zero we compare against.
24170
24171 2008-02-10  Danny Smith  <dannysmith@users.sourceforge.net>
24172
24173         PR libfortran/35063
24174         * gthr-win32.h (__gthread_mutex_destroy_function): New function
24175         to CloseHandle after unlocking to prevent accumulation of handle
24176         count.
24177
24178 2008-02-09  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
24179
24180         PR middle_end/34150
24181         * pa.c (legitimize_pic_address): Add REG_EQUAL note on sets with a
24182         pic_label_operand source.  Similarly, add a REG_LABEL_OPERAND note
24183         and update LABEL_NUSES during and after reload.
24184
24185 2008-02-08  Steven Bosscher  <stevenb.gcc@gmail.com>
24186
24187         PR middle-end/34627
24188         * combine.c (simplify_if_then_else): Make sure the comparison is
24189         against const0_rtx when simplifying to (abs x) or (neg (abs X)).
24190
24191 2008-02-08  Richard Sandiford  <rsandifo@nildram.co.uk>
24192
24193         PR bootstrap/35051
24194         * double-int.h: Don't include gmp.h for GENERATOR_FILEs.
24195         (mpz_set_double_int, mpz_get_double_int): Hide from GENERATOR_FILEs.
24196         * real.h: Don't include gmp.h or mpfr.h for GENERATOR_FILEs.
24197         (real_from_mpfr, mpfr_from_real): Hide from GENERATOR_FILEs.
24198         * tree.h (get_type_static_bounds): Likewise.
24199
24200 2008-02-08  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
24201
24202         * doc/invoke.texi (Option Summary, C++ Dialect Options)
24203         (Objective-C and Objective-C++ Dialect Options, Warning Options):
24204         Make -Wfoo language annotations match what the compiler outputs.
24205
24206 2008-02-08  Sa Liu  <saliu@de.ibm.com>
24207
24208         * config/spu/spu-builtins.def: Fixed wrong parameter type in spu
24209         intrinsics spu_convts, spu_convtu, spu_convtf.
24210
24211 2008-02-08  Hans-Peter Nilsson  <hp@axis.com>
24212
24213         * doc/extend.texi (Function Attributes) <noinline>: Mention
24214         asm ("") as method to keep calls.
24215
24216 2008-02-07  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
24217
24218         PR other/32754
24219         * doc/options.texi (Options): Replace references to opts.sh with
24220         optc-gen.awk.
24221         * opts-common.c: Likewise.
24222         * optc-gen.awk: Likewise.
24223
24224 2008-02-07  Andreas Krebbel  <krebbel1@de.ibm.com>
24225
24226         * config/s390/s390.h (FUNCTION_ARG_REGNO_P): Fix fprs for 64 bit.
24227
24228 2008-02-07  Richard Henderson  <rth@redhat.com>
24229
24230         PR rtl-opt/33410
24231         * config/alpha/alpha.c (alpha_emit_xfloating_compare): Use an
24232         EXPR_LIST for the REG_EQUAL instead of a comparison with a
24233         funny mode.
24234
24235 2008-02-07  Uros Bizjak  <ubizjak@gmail.com>
24236
24237         PR tree-optimization/35085
24238         * tree-ssa-reassoc.c (rewrite_expr_tree): Enable destructive update
24239         for operand entry oe2 in addition to operand entry oe3 in order to
24240         expose more opportunities for vectorizer sum reduction.
24241
24242 2008-02-06  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
24243
24244         PR other/35107
24245         * Makefile.in (LIBS): Remove $(GMPLIBS).
24246         (cc1-dummy, cc1): Add $(GMPLIBS).
24247
24248 2008-02-06  Jan Hubicka  <jh@suse.cz>
24249
24250         PR target/23322
24251         * i386.md (moddf_integer): Do not produce partial memory stalls for
24252         targets where it hurts.
24253
24254 2008-02-06  Uros Bizjak  <ubizjak@gmail.com>
24255
24256         PR target/35083
24257         * optabs.c (expand_float): Do not check for decimal modes when
24258         expanding unsigned integer through signed conversion.
24259
24260 2008-02-06  Nick Clifton  <nickc@redhat.com>
24261
24262         * config/stormy16/stormy16.md (eqbranchsi): Replace a match_dup
24263         inside the clobber with a match_operand and duplicated operand
24264         number in the constraint.
24265         (ineqbranchsi): Delete redundant comment.
24266
24267 2008-02-06  Ralf Corsepius  <ralf.corsepius@rtems.org>
24268
24269         * config/arm/rtems-elf.h (TARGET_OS_CPP_BUILTINS): Add
24270         builtin_define ("__USE_INIT_FINI__").
24271         * config/h8300/t-rtems (MULTILIB_OPTION,MULTILIB_DIRNAMES): Add
24272         -msx multilibs.
24273         * gthr-rtems.h: Remove __GTHREAD_MUTEX_INIT.
24274
24275 2008-02-06  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
24276
24277         PR documentation/30330
24278         * doc/invoke.texi (C++ Dialect Options)
24279         (Objective-C and Objective-C++ Dialect Options, Warning Options):
24280         For each warning option -Wfoo that allows -Wno-foo, ensure both
24281         -Wfoo and -Wno-foo are listed in the option index.  Fix index
24282         entry of -Wswitch-default, index -Wnormalized= including the
24283         `=', and -Wlarger-than-@var{len} including @var{len}.
24284
24285 2008-02-05  Uros Bizjak  <ubizjak@gmail.com>
24286
24287         * config/i386/i386.md (floatunssisf2): Use
24288         ix86_expand_convert_uns_sisf_sse also for TARGET_SSE.
24289         (floatunssi<mode>2): Rename from floatunssisf2 and floatunssidf2.
24290         Macroize expander using MODEF mode iterator.
24291
24292 2008-02-05  Diego Novillo  <dnovillo@google.com>
24293
24294         http://gcc.gnu.org/ml/gcc-patches/2008-02/msg00140.html
24295
24296         PR 33738
24297         * tree-vrp.c (vrp_evaluate_conditional): Revert fix for PR 33738.
24298
24299 2008-02-05  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
24300
24301         PR other/35070
24302         * toplev.c (print_version): Honor `indent' for GMP/MPFR warnings.
24303
24304 2008-02-05  H.J. Lu  <hongjiu.lu@intel.com>
24305
24306         PR target/35084
24307         * config/i386/i386.c (ix86_function_sseregparm): Add an arg
24308         to indicate if a message should be generated.
24309         (init_cumulative_args): Updated.
24310         (function_value_32): Likewise.
24311
24312 2008-02-05  Joseph Myers  <joseph@codesourcery.com>
24313
24314         * doc/include/texinfo.tex: Update to version 2008-02-04.16.
24315
24316 2008-02-05  Uros Bizjak  <ubizjak@gmail.com>
24317
24318         PR target/35083
24319         * config/i386/i386.md (floatunsisf2): Enable for TARGET_SSE_MATH only.
24320         Call ix86_expand_convert_uns_sisf_sse for TARGET_SSE2.
24321
24322 2008-02-04  Diego Novillo  <dnovillo@google.com>
24323
24324         http://gcc.gnu.org/ml/gcc-patches/2008-02/msg00110.html
24325
24326         PR 33738
24327         * tree-vrp.c (vrp_evaluate_conditional): With
24328         -Wtype-limits, emit a warning when comparing against a
24329         constant outside the natural range of OP0's type.
24330
24331 2008-02-04  Richard Guenther  <rguenther@suse.de>
24332
24333         PR middle-end/33631
24334         * expr.c (count_type_elements): Give for unions instead of
24335         guessing.
24336
24337 2008-02-04  Richard Guenther  <rguenther@suse.de>
24338
24339         PR middle-end/35043
24340         * gimplify.c (gimplify_init_ctor_eval): Convert array indices
24341         to TYPE_DOMAINs base type instead of using bitsizetype here.
24342
24343 2008-02-03  Jason Merrill  <jason@redhat.com>
24344
24345         * print-tree.c (print_node) [CONSTRUCTOR]: Print elements.
24346
24347 2008-02-04  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
24348
24349         PR other/29972
24350         * doc/invoke.texi (C++ Dialect Options, Optimize Options)
24351         (HPPA Options, i386 and x86-64 Options, IA-64 Options)
24352         (RS/6000 and PowerPC Options): Fix typos and markup.
24353         * doc/passes.texi (Tree-SSA passes): Likewise.
24354
24355 2008-02-02  Michael Matz  <matz@suse.de>
24356
24357         PR target/35045
24358         * postreload-gcse.c (record_last_reg_set_info_regno): Renamed
24359         from record_last_reg_set_info.
24360         (record_last_reg_set_info): Take an RTX argument, iterate over all
24361         constituent hardregs.
24362         (record_last_set_info, record_opr_changes): Change calls to
24363         new signature or to record_last_reg_set_info_regno.
24364
24365 2008-02-02  Gerald Pfeifer  <gerald@pfeifer.com>
24366
24367         * doc/extend.texi (X86 Built-in Functions): Fix grammar.
24368
24369 2008-02-01  Hans-Peter Nilsson  <hp@axis.com>
24370
24371         PR rtl-optimization/34773
24372         * reg-notes.def (EQUAL): Mention significance of combination of
24373         REG_EQUAL and REG_RETVAL.
24374         * fwprop.c (try_fwprop_subst): Don't add REG_EQUAL to an
24375         insn that has a REG_RETVAL.
24376
24377 2008-02-01  Roger Sayle  <roger@eyesopen.com>
24378
24379         PR bootstrap/33781
24380         * configure.ac (--enable-fixed-point): Disable unless explicitly
24381         requested on IRIX.
24382         * configure: Regenerate.
24383
24384 2008-02-01  Richard Guenther  <rguenther@suse.de>
24385
24386         PR other/35042
24387         * invoke.texi (-finline-limit): Remove no longer true parts
24388         of the documentation.  Note that there is no default value.
24389
24390 2008-02-01  Andrew Pinski  <pinskia@gmail.com>
24391             Mark Mitchell  <mark@codesourcery.com>
24392             Ben Elliston  <bje@au.ibm.com>
24393
24394         PR c/29326
24395         * doc/extend.texi (Other Builtins): Document.
24396
24397 2008-01-31  Tom Browder <tom.browder@gmail.com>
24398
24399         * doc/c-tree.texi (Types): Fix grammar.
24400         (Expression trees): Ditto.
24401         * doc/passes.texi (Tree-SSA passes): Ditto.
24402
24403         * doc/configterms.texi (Configure Terms): Fix typo.
24404         * doc/cpp.texi (Common Predefined Macros): Ditto.
24405         * doc/md.texi (Machine Constraints): Ditto.
24406
24407         * doc/makefile.texi (Makefile): Add comma.
24408
24409 2008-01-31  Tom Browder  <tom.browder@gmail.com>
24410             Gerald Pfeifer  <gerald@pfeifer.com>
24411
24412         * doc/sourcebuild.texi (Front End): Remove references to CVS
24413         and CVSROOT/modules.
24414         (Texinfo Manuals): Replace reference to CVS by one to SVN.
24415         (Back End): Remove reference to CVS.
24416
24417 2008-01-31  Richard Sandiford  <rsandifo@nildram.co.uk>
24418
24419         PR target/34900
24420         * config/mips/mips.c (gen_load_const_gp): New function, taking a
24421         comment from...
24422         (mips16_gp_pseudo_reg): ...here.
24423         * config/mips/mips.md (load_const_gp): Replace with...
24424         (load_const_gp_<mode>): ...this :P-based insn.
24425
24426 2008-01-31  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
24427
24428         * doc/invoke.texi (-ansi): Mention explicitly corresponding -std=
24429         options. Minor fixes.
24430         (-std): Move reference to standards closer to where language
24431         standards are first mentioned.
24432
24433 2008-01-31  Richard Sandiford  <rsandifo@nildram.co.uk>
24434
24435         PR rtl-optimization/34995
24436         * reload.c (alternative_allows_const_pool_ref): Take an rtx
24437         parameter and return a bool.  If the rtx parameter is nonnull,
24438         check that it satisfies an EXTRA_MEMORY_CONSTRAINT.
24439         (find_reloads): Update call accordingly.  Pass the new operand
24440         if it needed no address reloads, otherwise pass null.
24441
24442 2008-01-30  Richard Henderson  <rth@redhat.com>
24443
24444         PR c/34993
24445         * tree.c (build_type_attribute_qual_variant): Skip TYPE_DOMAIN
24446         for unbounded arrays.
24447
24448 2008-01-30  Silvius Rus  <rus@google.com>
24449
24450         * config/i386/xmmintrin.h (_mm_prefetch): Add const to first arg.
24451
24452 2008-01-30  Jan Hubicka  <jh@suse.cz>
24453
24454         PR target/34982
24455         * i386.c (init_cumulative_args): Use real function declaration when
24456         calling locally.
24457
24458 2008-01-30  Richard Sandiford  <rsandifo@nildram.co.uk>
24459
24460         PR rtl-optimization/34998
24461         * global.c (build_insn_chain): Treat non-subreg_lowpart
24462         SUBREGs of pseudos as clobbering all the words covered by the
24463         SUBREG, not just all the bytes.
24464         * ra-conflict.c (clear_reg_in_live): Likewise.  Take the
24465         original df_ref rather than an extract parameter.
24466         (global_conflicts): Update call accordingly.
24467
24468 2008-01-30  Andreas Krebbel  <krebbel1@de.ibm.com>
24469
24470         * config/s390/fixdfdi.h (__fixunstfdi, __fixtfdi): Rearrange
24471         the overflow check to make it easier to read.
24472         (__fixtfdi): Change the type of the ll member in union
24473         long_double to UDItype_x.
24474
24475 2008-01-30  Jakub Jelinek  <jakub@redhat.com>
24476
24477         PR middle-end/34969
24478         * cgraph.h (cgraph_update_edges_for_call_stmt): New prototype.
24479         * cgraph.c (cgraph_update_edges_for_call_stmt): New function.
24480         * tree-inline.c (fold_marked_statements): Call
24481         cgraph_update_edges_for_call_stmt if folding a call statement.
24482         * cgraphunit.c (verify_cgraph_node): Set cfun to this_cfun for
24483         debug_generic_stmt calls, reset it back afterwards.
24484
24485         PR c/35017
24486         * c-decl.c (start_decl): Don't pedwarn about TREE_READONLY
24487         static decls.
24488         * c-typeck.c (build_external_ref): Don't pedwarn about
24489         static vars in current function's scope.
24490
24491 2008-01-29  Joseph Myers  <joseph@codesourcery.com>
24492
24493         * config.gcc (i[34567]86-*-nto-qnx*): Remove deprecation.
24494
24495 2008-01-29  Bernhard Fischer  <aldot@gcc.gnu.org>
24496
24497         PR c/35002
24498         * ipa-struct-reorg.c: Fix spelling.
24499         * params.def: Ditto.
24500
24501 2008-01-29  Richard Guenther  <rguenther@suse.de>
24502
24503         PR middle-end/35006
24504         * tree-inline.h (struct copy_body_data): Add remapping_type_depth
24505         field.
24506         * tree-inline.c (remap_type): Increment remapping_type_depth
24507         around remapping types.
24508         (copy_body_r): Only add referenced variables if they are referenced
24509         from code, not types.
24510
24511 2008-01-29  Douglas Gregor  <doug.gregor@gmail.com>
24512
24513         PR c++/34055
24514         PR c++/34103
24515         PR c++/34219
24516         PR c++/34606
24517         PR c++/34753
24518         PR c++/34754
24519         PR c++/34755
24520         PR c++/34919
24521         PR c++/34961
24522         * c-pretty-print.c (pp_c_type_qualifier_list): Don't try to print
24523         qualifiers for an ERROR_MARK_NODE or a NULL_TREE.
24524
24525 2008-01-28  Andy Hutchinson   <hutchinsonandy@netscape.net>
24526
24527         PR target/34412
24528         * config/avr/avr.c (expand_prologue): Use correct QI mode frame
24529         pointer for tiny stack.
24530
24531 2008-01-28  Bernhard Fischer  <aldot@gcc.gnu.org>
24532
24533         * doc/tree-ssa.texi: Add cindex PHI nodes and improve wording.
24534
24535 2008-01-28  Bernhard Fischer  <aldot@gcc.gnu.org>
24536
24537         * config/vx-common.h: Fix typo in comment.
24538
24539 2008-01-28  Ian Lance Taylor  <iant@google.com>
24540
24541         PR c++/34862
24542         PR c++/33407
24543         * tree-ssa-copyrename.c (copy_rename_partition_coalesce): Don't
24544         coalesce pointers if they have different DECL_NO_TBAA_P values.
24545         * tree-ssa-copy.c (may_propagate_copy): Don't propagate copies
24546         between variables with different DECL_NO_TBAA_P values.
24547
24548 2008-01-28  Nathan Froyd  <froydnj@codesourcery.com>
24549
24550         PR 31535
24551         * config/rs6000/rs6000.c (small_data_operand): Vectors and floats
24552         are not legitimate small data references on SPE targets.
24553
24554 2008-01-28  David Daney  <ddaney@avtrex.com>
24555
24556         * doc/install.texi (mips-*-*): Recommend binutils 2.18.
24557
24558 2008-01-28  David Daney  <ddaney@avtrex.com>
24559
24560         * doc/install.texi (--disable-libgcj-bc):  Reword documentation.
24561
24562 2008-01-27  Joseph Myers  <joseph@codesourcery.com>
24563
24564         * config.gcc (strongarm*-*, ep9312*-*, xscale*-*, parisc*-*,
24565         m680[012]0-*, *-*-beos*, *-*-kaos*, *-*-linux*aout*,
24566         *-*-linux*libc1*, *-*-solaris2.[0-6], *-*-solaris2.[0-6].*,
24567         *-*-sysv*, *-*-windiss*, alpha*-*-unicosmk*, cris-*-aout,
24568         hppa1.1-*-pro*, hppa1.1-*-osf*, hppa1.1-*-bsd*,
24569         i[34567]86-sequent-ptx4*, i[34567]86-*-nto-qnx*,
24570         i[34567]86-*-sco3.2v5*, i[34567]86-*-uwin*, powerpc-*-chorusos*,
24571         vax-*-bsd*, vax-*-ultrix*): Mark obsolete.
24572
24573 2008-01-27  Bernhard Fischer  <aldot@gcc.gnu.org>
24574
24575         * basic-block.h (condjump_equiv_p): Fix comment.
24576
24577 2008-01-27  Bernhard Fischer  <aldot@gcc.gnu.org>
24578
24579         * tree-pretty-print.c (print_generic_decl, print_generic_stmt,
24580         print_generic_stmt_indented): Fix comment.
24581
24582 2008-01-27  Bernhard Fischer  <aldot@gcc.gnu.org>
24583
24584         * configure.ac (__stack_chk_fail): Add detecion for availability
24585         of SSP in uClibc by checking if __UCLIBC_HAS_SSP__ is defined.
24586         * configure: Regenerate.
24587
24588 2008-01-26  Maxim Kuvyrkov  <maxim@codesourcery.com>
24589
24590         PR middle-end/34688
24591         * final.c (output_addr_const): Handle TRUNCATE.
24592
24593 2008-01-26  Zdenek Dvorak  <ook@ucw.cz>
24594
24595         PR target/34711
24596         * tree-ssa-loop-ivopts.c (comp_cost): New type.
24597         (zero_cost, infinite_cost): New constants.
24598         (struct cost_pair): Change type of cost to comp_cost.
24599         (struct iv_ca): Change type of cand_use_cost and cost to comp_cost.
24600         (new_cost, add_costs, sub_costs, compare_costs, infinite_cost_p):
24601         New functions.
24602         (set_use_iv_cost, force_expr_to_var_cost, force_var_cost,
24603         split_address_cost, ptr_difference_cost, difference_cost,
24604         get_computation_cost_at, get_computation_cost,
24605         determine_use_iv_cost_generic, determine_use_iv_cost_address,
24606         determine_use_iv_cost_condition, determine_use_iv_costs,
24607         cheaper_cost_pair, iv_ca_recount_cost, iv_ca_set_no_cp,
24608         iv_ca_set_cp, iv_ca_cost, iv_ca_new, iv_ca_dump, iv_ca_extend,
24609         iv_ca_narrow, iv_ca_prune, try_improve_iv_set, find_optimal_iv_set):
24610         Change type of cost to comp_cost.
24611         (determine_iv_cost): Increase cost of non-original ivs, instead
24612         of decreasing the cost of original ones.
24613         (get_address_cost): Indicate the complexity of the addressing mode
24614         in comp_cost.
24615         (try_add_cand_for): Prefer using ivs not specific to some object.
24616         * tree-flow.h (force_expr_to_var_cost): Declaration removed.
24617
24618 2008-01-26  Peter Bergner  <bergner@vnet.ibm.com>
24619             Janis Johnson  <janis187@us.ibm.com>
24620
24621         PR target/34814
24622         * doc/tm.texi (TARGET_EXPAND_TO_RTL_HOOK): Document.
24623         (TARGET_INSTANTIATE_DECLS): Likewise.
24624         * target.h (expand_to_rtl_hook): New target hook.
24625         (instantiate_decls): Likewise.
24626         * function.c (instantiate_decl): Make non-static.  Rename to...
24627         (instantiate_decl_rtl): ... this.
24628         (instantiate_expr): Use instantiate_decl_rtl.
24629         (instantiate_decls_1): Likewise.
24630         (instantiate_decls): Likewise.
24631         (instantiate_virtual_regs: Call new instantiate_decls taget hook.
24632         * function.h (instantiate_decl_rtl): Add prototype.
24633         * cfgexpand.c (target.h): New include.
24634         (tree_expand_cfg): Call new expand_to_rtl_hook target hook.
24635         * target-def.h (TARGET_EXPAND_TO_RTL_HOOK): New define.
24636         (TARGET_INSTANTIATE_DECLS): Likewise.
24637         (TARGET_INITIALIZER): New target hooks added.
24638         * config/rs6000/rs6000-protos.h (rs6000_secondary_memory_needed_rtx):
24639         New prototype.
24640         * config/rs6000/rs6000.c (tree-flow.h): New include.
24641         (machine_function): Add sdmode_stack_slot field.
24642         (rs6000_alloc_sdmode_stack_slot): New function.
24643         (rs6000_instantiate_decls): Likewise.
24644         (rs6000_secondary_memory_needed_rtx): Likewise.
24645         (rs6000_check_sdmode): Likewise.
24646         (TARGET_EXPAND_TO_RTL_HOOK): Target macro defined.
24647         (TARGET_INSTANTIATE_DECLS): Likewise.
24648         (rs6000_hard_regno_mode_ok): Allow SDmode.
24649         (num_insns_constant): Likewise.  Handle _Decimal32 constants.
24650         (rs6000_emit_move): Handle SDmode.
24651         (function_arg_advance): Likewise.
24652         (function_arg): Likewise.
24653         (rs6000_gimplify_va_arg): Likewise.  Add special handling of
24654         SDmode var args for 32-bit compiles.
24655         (rs6000_secondary_reload_class): Handle SDmode.
24656         (rs6000_output_function_epilogue): Likewise.
24657         (rs6000_function_value): Simplify if statement.
24658         (rs6000_libcall_value): Likewise.
24659         * config/rs6000/rs6000.h (SLOW_UNALIGNED_ACCESS): Handle SDmode.
24660         (SECONDARY_MEMORY_NEEDED_RTX): Add define.
24661         * config/rs6000/dfp.md (movsd): New define_expand and splitter.
24662         (movsd_hardfloat): New define_insn.
24663         (movsd_softfloat): Likewise.
24664         (movsd_store): Likewise.
24665         (movsd_load): Likewise.
24666         (extendsddd2): Likewise.
24667         (extendsdtd2): Likewise.
24668         (truncddsd2): Likewise.
24669         (movdd_hardfloat64): Fixup comment.
24670         (UNSPEC_MOVSD_LOAD): New constant.
24671         (UNSPEC_MOVSD_STORE): Likewise.
24672
24673 2008-01-26  Jakub Jelinek  <jakub@redhat.com>
24674
24675         PR c++/34965
24676         * c-pretty-print.c (pp_c_exclusive_or_expression): Handle
24677         TRUTH_XOR_EXPR.
24678         (pp_c_logical_and_expression): Handle TRUTH_AND_EXPR.
24679         (pp_c_logical_or_expression): Handle TRUTH_OR_EXPR.
24680         (pp_c_expression): Handle TRUTH_AND_EXPR, TRUTH_OR_EXPR
24681         and TRUTH_XOR_EXPR.
24682
24683 2008-01-26  David Edelsohn  <edelsohn@gnu.org>
24684
24685         PR target/34794
24686         * config.gcc: Separate AIX 5.3 from AIX 6.1.
24687         * config/rs6000/rs6000-c.c (rs6000_cpu_cpp_builtins): Define
24688         __LONGDOUBLE128 too.
24689         * config/rs6000/aix61.h: New file.
24690
24691 2008-01-26  Richard Sandiford  <rsandifo@nildram.co.uk>
24692
24693         PR rtl-optimization/34959
24694         * optabs.c (expand_unop): In libcall notes, give ffs, clz, ctz,
24695         popcount and parity rtxes the same mode as their operand.
24696         Truncate or extend the result to the return value's mode
24697         if necessary.
24698
24699 2008-01-26  Richard Sandiford  <rsandifo@nildram.co.uk>
24700
24701         PR target/34981
24702         * config/mips/mips-protos.h (mips_expand_call): Return an rtx.
24703         * config/mips/mips.h (FIRST_PSEUDO_REGISTER): Rename FAKE_CALL_REGNO
24704         to GOT_VERSION_REGNUM.
24705         (CALL_REALLY_USED_REGISTERS): Set the GOT_VERSION_REGNUM entry to 0.
24706         (EPILOGUE_USES): Include GOT_VERSION_REGNUM if TARGET_USE_GOT.
24707         * config/mips/mips.c (mips_emit_call_insn): New function.
24708         (mips_call_tls_get_addr): Call mips_expand_call directly.
24709         (mips16_copy_fpr_return_value): Use mips_emit_call_insn rather than
24710         emit_call_insn.
24711         (mips16_build_call_stub): Likewise.  Return the call insn or null.
24712         (mips_expand_call): Update the call to mips16_build_call_stub
24713         accordingly and a remove redundant condition.  Assert that MIPS16
24714         stubs do not use lazy binding.  Use mips_emit_call_insn and return
24715         the call insn.
24716         (mips_extra_live_on_entry): Include GOT_VERSION_REGNUM if
24717         TARGET_USE_GOT.
24718         (mips_hard_regno_mode_ok_p): Allow SImode for GOT_VERSION_REGNUM.
24719         (mips_avoid_hazard): Remove hazard_set handling.
24720         * config/mips/mips.md (UNSPEC_EH_RECEIVER): Rename to...
24721         (UNSPEC_RESTORE_GP): ...this.
24722         (UNSPEC_SET_GOT_VERSION, UNSPEC_UPDATE_GOT_VERSION): New constants.
24723         (FAKE_CALL_REGNO): Rename to...
24724         (GOT_VERSION_REGNUM): ...this.
24725         (type): Add "ghost" value.  Add an associated insn reservation.
24726         (hazard_set): Remove.
24727         (exception_receiver): Rename to...
24728         (restore_gp): ...this and update the unspec identifier accordingly.
24729         (exception_receiver, nonlocal_got_receiver): New expanders.
24730         (load_call<mode>): Use GOT_VERSION_REGNUM.  Don't set
24731         FAKE_CALL_REGNO.  Remove hazard_set attribute.
24732         (set_got_version, update_got_version): New patterns.
24733
24734 2008-01-26  Danny Smith  <dannysmith@users.sourceforge.net>
24735
24736         PR target/34970
24737         * config/i386/cygming.h (ASM_OUTPUT_LABELREF): Define.
24738
24739 2008-01-25  Joseph Myers  <joseph@codesourcery.com>
24740
24741         PR other/31955
24742         * doc/install.texi2html: Generate gcc-vers.texi.
24743
24744 2008-01-25  DJ Delorie  <dj@redhat.com>
24745
24746         * config/m32c/m32c.h (ASM_PREFERRED_EH_DATA_FORMAT): Define.
24747
24748 2008-01-25  Joseph Myers  <joseph@codesourcery.com>
24749
24750         * config/c4x: Remove directory.
24751         * config.gcc (crx-*, mt-*): Mark obsolete.
24752         (c4x-*, tic4x-*, c4x-*-rtems*, tic4x-*-rtems*, c4x-*, tic4x-*,
24753         h8300-*-rtemscoff*, ns32k-*-netbsdelf*, ns32k-*-netbsd*,
24754         sh-*-rtemscoff*): Remove cases.
24755         * defaults.h (C4X_FLOAT_FORMAT): Remove.
24756         * real.c (encode_c4x_single, decode_c4x_single,
24757         encode_c4x_extended, decode_c4x_extended, c4x_single_format,
24758         c4x_extended_format): Remove.
24759         * real.h (c4x_single_format, c4x_extended_format): Remove.
24760         * doc/extend.texi (interrupt, naked): Remove mention of attributes
24761         on C4x.
24762         (Pragmas): Remove comment about c4x pragmas.
24763         * doc/install.texi (c4x): Remove target-specific instructions.
24764         * doc/invoke.texi (TMS320C3x/C4x Options): Remove.
24765         * doc/md.texi (Machine Constraints): Remove C4x documentation.
24766         * doc/tm.texi (MEMBER_TYPE_FORCES_BLK, c_register_pragma): Do not
24767         refer to C4x source files as examples.
24768         (C4X_FLOAT_FORMAT): Remove documentation.
24769
24770 2008-01-25  Bernd Schmidt  <bernd.schmidt@analog.com>
24771
24772         * config/bfin/bfin.c (override_options): Reorder tests so that
24773         flag_pic gets enabled for -msep-data.
24774
24775 2008-01-25  Richard Guenther  <rguenther@suse.de>
24776
24777         PR middle-end/32244
24778         * expr.c (expand_expr_real_1): Reduce result of LSHIFT_EXPR
24779         to its bitfield precision if required.
24780
24781 2008-01-25  Jakub Jelinek  <jakub@redhat.com>
24782
24783         PR middle-end/33880
24784         * tree-nested.c (walk_omp_for): New function.
24785         (convert_nonlocal_reference, convert_local_reference): Call
24786         walk_omp_for on OMP_FOR.
24787         (convert_call_expr): Call walk_body on OMP_FOR's
24788         OMP_FOR_PRE_INIT_BODY.
24789
24790 2008-01-25  Richard Guenther  <rguenther@suse.de>
24791
24792         PR tree-optimization/34966
24793         * tree-ssa-math-opts.c (execute_cse_sincos_1): For all but
24794         default defs and PHI_NODEs we have to insert after the
24795         defining statement.
24796
24797 2008-01-24  Nick Clifton  <nickc@redhat.com>
24798
24799         * config/stormy16/stormy16-lib2.c (MIN_UNITS_PER_WORD):
24800         Provide a default definition.
24801         (LIBGCC2_UNITS_PER_WORD): Likewise.
24802
24803         * config/stormy16/stormy16.c: Include df.h for the prototype
24804         for df_regs_ever_live_p.
24805         (xstormy16_expand_builtin_va_start): Convert the stack offset
24806         into a component_ref and then use POINTER_PLUS_EXPR to add it
24807         to the incoming_virtual_args_rtx.
24808         (xstormy16_gimplify_va_arg_expr): Rename to
24809         xstormy16_gimplify_va_arg_expr.
24810         Use POINTER_PLUS_EXPR when performing pointer arithmetic.
24811         (TARGET_GIMPLIFY_VA_ARG_EXPR): Use renamed
24812         xstormy16_gimplify_va_arg_expr.
24813         Fix up some formatting issues.
24814
24815         * config/stormy16/stormy16.c: (xstormy16_carry_plus_operand):
24816         Move to predicates.md.
24817         (xs_hi_general_operand): Likewise.
24818         (xs_hi_nonmemory_operand): Likewise.
24819         * config/stormy16/predicates.md:
24820         (xstormy16_carry_plus_operand): New predicate.
24821         (xs_hi_general_operand): New predicate.
24822         (xs_hi_nonmemory_operand): New predicate.
24823         * config/stormy16/stormy16-protos.h:
24824         (xstormy16_carry_plus_operand): Delete prototype.
24825         (xs_hi_general_operand): Likewise.
24826         (xs_hi_nonmemory_operand): Likewise.
24827
24828         * config/storm16/stormy16.md (addhi3): Remove earlyclobber
24829         modifiers as they are no longer needed and they can trigger
24830         reload spill failures.
24831
24832         * config/storm16/stormy16.md (ineqbranchsi): Replace match_dup
24833         with a match_operand in order to help reload.
24834
24835         * config/storm16/stormy16.md (movhi_internal): Replace 'r'
24836         constraint with 'e' for the 8th alternative as this version of
24837         the mov.w instruction only accepts the lower 8 registers.
24838
24839 2008-01-25  Uros Bizjak  <ubizjak@gmail.com>
24840
24841         PR target/34856
24842         * simplifx-rtx.c (simplify_const_binary_operation) [VEC_CONCAT]:
24843         Consider only CONST_INT, CONST_DOUBLE and CONST_FIXED as constant
24844         vector elements.
24845
24846 2008-01-25  Jakub Jelinek  <jakub@redhat.com>
24847
24848         PR middle-end/33333
24849         * gimplify.c (gimplify_omp_for): Gimplify OMP_FOR_PRE_BODY.
24850
24851 2008-01-25  Golovanevsky Olga  <olga@il.ibm.com>
24852
24853         * ipa-struct-reorg.c (remove_str_allocs_in_func, remove_str_allocs):
24854         New functions.
24855         (remove_structure): Update allocations list before removing structure.
24856
24857 2008-01-25  Golovanevsky Olga  <olga@il.ibm.com>
24858
24859         * ipa-struct-reorg.c (is_safe_cond_expr,
24860         create_new_stmts_for_cond_expr): Use integer_zerop function,
24861         that recognize not only zero-pointer, but zero-integer too.
24862
24863 2008-01-25  Ben Elliston  <bje@au.ibm.com>
24864
24865         PR other/22232
24866         * fixproto: Escape "." in sed expression that strips leading "./".
24867
24868 2008-01-24  H.J. Lu  <hongjiu.lu@intel.com>
24869
24870         PR driver/34904
24871         * gcc.c (SWITCH_OK): Removed.
24872         (SWITCH_LIVE): Changed to bit.
24873         (SWITCH_FALSE): Likewise.
24874         (SWITCH_IGNORE): Likewise.
24875         (switchstr): Change live_cond to unsigned int.
24876         (process_command): Replace SWITCH_OK with 0.
24877         (do_self_spec): Likewise.
24878         (set_collect_gcc_options): Check the SWITCH_IGNORE bit.
24879         (give_switch): Likewise.
24880         (used_arg): Likewise.
24881         (do_spec_1): Set the SWITCH_IGNORE bit.
24882         (check_live_switch): Check both SWITCH_LIVE and SWITCH_FALSE
24883         bits.  Set the SWITCH_LIVE bit.
24884
24885 2008-01-24  Andreas Krebbel  <krebbel1@de.ibm.com>
24886
24887         * config/s390/s390.h (MOVE_RATIO): Define new target macro.
24888
24889 2008-01-24  Richard Sandiford  <rsandifo@nildram.co.uk>
24890
24891         PR tree-optimization/34472
24892         * ipa-struct-reorg.c (safe_cond_expr_check): Change the DATA
24893         parameter to a "bool *" and set *DATA to false if there is
24894         an unsafe access.  Do not delete the structure here.
24895         (check_cond_exprs): Delete it here instead.
24896         (check_cond_exprs, exclude_cold_structs): Do not increase
24897         I when removing a structure.
24898
24899 2008-01-24  Uros Bizjak  <ubizjak@gmail.com>
24900
24901         PR target/34856
24902         * config/i386/i386.c (ix86_expand_vector_init): Consider only
24903         CONST_INT, CONST_DOUBLE and CONST_FIXED as constant vector elements.
24904
24905 2008-01-24  Jakub Jakub Jelinek  <jakub@redhat.com>
24906
24907         PR middle-end/34934
24908         * tree-stdarg.c (reachable_at_most_once): Use VEC vector instead of
24909         a fixed vector for stack.
24910
24911 2008-01-24  Ben Elliston  <bje@au.ibm.com>
24912
24913         PR c++/25701
24914         * doc/gcc.texi (Software development): Add a direntry for g++.
24915
24916 2008-01-23  Hans-Peter Nilsson  <hp@axis.com>
24917
24918         * config/cris/cris.h (CC1PLUS_SPEC, OPTIMIZATION_OPTIONS): Drop
24919         stale and straggling -fforce-addr comments above.
24920
24921         * config/cris/cris.h (CRIS_SUBTARGET_VERSION, TARGET_VERSION): Don't
24922         define.
24923         * config/cris/linux.h (CRIS_SUBTARGET_VERSION): Don't define.
24924         * config/cris/aout.h (CRIS_SUBTARGET_VERSION): Don't define.
24925
24926 2008-01-23  Michael Matz  <matz@suse.de>
24927
24928         PR debug/34895
24929         * dwarf2out.c (force_type_die): Use modified_type_die instead of
24930         gen_type_die.
24931
24932 2008-01-23  Andreas Krebbel  <krebbel1@de.ibm.com>
24933
24934         * ipa-struct-reorg.c (create_new_malloc): Use pointer type as
24935         malloc result type.
24936
24937 2008-01-23 Anatoly Sokolov <aesok@post.ru>
24938
24939         * config/avr/avr.c (avr_current_arch): New variable.
24940         (avr_arch_types): Add 'avr31' and 'avr51' entries.
24941         (avr_arch): Add 'ARCH_AVR31' and 'ARCH_AVR51'.
24942         (avr_mcu_types): Add 'avr31' and 'avr51' architectures.
24943         (avr_override_options): Init 'avr_current_arch'.
24944         (base_arch_s): Move from here...
24945         * config/avr/avr.h (base_arch_s): ... here. Add new members
24946         'have_elpm', 'have_elpmx', 'have_eijmp_eicall', 'reserved'. Rename
24947         'mega' to 'have_jmp_call'.
24948         (TARGET_CPU_CPP_BUILTINS): Define "__AVR_HAVE_JMP_CALL__",
24949         "__AVR_HAVE_RAMPZ__", "__AVR_HAVE_ELPM__" and "__AVR_HAVE_ELPMX__"
24950         macros.
24951         (LINK_SPEC, CRT_BINUTILS_SPECS, ASM_SPEC): Add 'avr31' and 'avr51'
24952         architectures.
24953         * config/avr/t-avr (MULTILIB_OPTIONS, MULTILIB_DIRNAMES,
24954         MULTILIB_MATCHES): Ditto.
24955
24956 2008-01-23  Richard Guenther  <rguenther@suse.de>
24957
24958         PR middle-end/31529
24959         * cgraphunit.c (cgraph_reset_node): Always mark the node
24960         not reachable if it is not queued already.
24961
24962 2008-01-23  Bernd Schmidt  <bernd.schmidt@analog.com>
24963
24964         * config/bfin/bfin-protos.h (WA_RETS, ENABLE_WA_RETS): New macros.
24965         * config/bfin/bfin.c (bfin_cpus): Add WA_RETS everywhere.
24966         (cputype_selected): New static variable.
24967         (bfin_handle_option): Set it if -mcpu is used.
24968         (override_option): Select default set of workarounds if no cpu type
24969         selected on the command line.
24970         (workaround_rts_anomaly): Only run if ENABLE_WA_RETS.
24971
24972         From  Michael Frysinger  <michael.frysinger@analog.com>
24973         * config/bfin/bfin-protos.h (enum bfin_cpu_type): Add
24974         BFIN_CPU_BF547, BFIN_CPU_BF523, BFIN_CPU_BF524, and BFIN_CPU_BF526.
24975
24976         * config/bfin/elf.h (LIB_SPEC): Use proper linker script
24977         for bf547, bf523, bf524, and bf526.
24978         * config/bfin/bfin.c (bfin_cpus[]): Add bf547,  bf523, bf524, and
24979         bf526.
24980         * config/bfin/bfin.h (TARGET_CPU_CPP_BUILTINS): Define
24981         __ADSPBF523__ for bf523, __ADSPBF524__ for bf524,
24982         __ADSPBF526__ for bf526, __ADSPBF52x__ for all three, as well as
24983         __ADSPBF547__ and __ADSPBF54x__ for bf547.
24984         * doc/invoke.texi (Blackfin Options): Document that
24985         -mcpu now accept bf547, bf523, bf524, and bf526.
24986
24987 2008-01-22  Eric Botcazou  <ebotcazou@adacore.com>
24988
24989         PR rtl-optimization/34628
24990         * combine.c (try_combine): Stop and undo after the first combination
24991         if an autoincrement side-effect on the first insn has effectively
24992         been lost.
24993
24994 2008-01-22  David Edelsohn  <edelsohn@gnu.org>
24995
24996         PR target/34529
24997         * config/rs6000/rs6000.c (rs6000_legitimate_offset_address_p):
24998         Offset addresses are not valid for Altivec or paired float modes.
24999
25000 2008-01-22  Jakub Jelinek  <jakub@redhat.com>
25001
25002         PR c++/34607
25003         * c-parser.c (c_parser_omp_for_loop): Don't call c_finish_omp_for
25004         if DECL_INITIAL (decl) is error_mark_node.
25005
25006         PR c++/34914
25007         * c-common.c (handle_vector_size_attribute): Only allow
25008         integral, scalar float and fixed point types.  Handle OFFSET_TYPE
25009         the same way as pointer, array etc. types.
25010         * tree.c (reconstruct_complex_type): Handle OFFSET_TYPE.
25011
25012         PR c++/34917
25013         * tree.c (build_type_attribute_qual_variant): Call
25014         build_qualified_type if attributes are equal, but quals are not.
25015
25016 2008-01-22  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
25017
25018         PR 32102
25019         * doc/invoke.texi (-Wall): -Wall enables -Wstrict-overflow=1.
25020         * flags.h (warn_strict_aliasing): Remove.
25021         (warn_strict_overflow): Remove.
25022         * opts.c (warn_strict_aliasing): Remove.
25023         (warn_strict_overflow): Remove.
25024         * c-opts.c (c_common_handle_option): -Wall only sets
25025         -Wstrict-aliasing or -Wstrict-overflow if they are uninitialized.
25026         (c_common_post_options): Give default values to -Wstrict-aliasing
25027         and -Wstrict-overflow if they are uninitialized.
25028         * common.opt (Wstrict-aliasing): Specify Var and Init.
25029         (Wstrict-overflow): Likewise.
25030
25031 2008-01-22  Kenneth Zadeck  <zadeck@naturalbridge.com>
25032
25033         PR rtl-optimization/26854
25034         PR rtl-optimization/34400
25035         PR rtl-optimization/34884
25036         * ddg.c (create_ddg_dep_from_intra_loop_link): Use
25037         DF_RD->gen.
25038         * df.h (df_changeable_flags.DF_RD_NO_TRIM): Deleted
25039         (df_rd_bb_info.expanded_lr_out): Deleted
25040         * loop_invariant.c (find_defs): Deleted DF_RD_NO_TRIM flag.
25041         * loop_iv.c (iv_analysis_loop_init): Ditto.  * df-problems.c
25042         (df_rd_free_bb_info, df_rd_alloc, df_rd_confluence_n,
25043         df_rd_bb_local_compute, df_rd_transfer_function, df_rd_free):
25044         Removed code to allocate, initialize or free expanded_lr_out.
25045         (df_rd_bb_local_compute_process_def): Restructured to make more
25046         understandable.
25047         (df_rd_confluence_n): Removed code to no apply invalidate_by_call
25048         sets if the sets are being trimmed.
25049
25050 2008-01-22  H.J. Lu  <hongjiu.lu@intel.com>
25051
25052         PR bootstrap/32287
25053         * configure.ac (ld_vers): Support GNU linker version xx.xx.*
25054         (as_vers): Likewise.
25055         * configure: Regenerated.
25056
25057 2008-01-22  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
25058
25059         PR middle-end/33092
25060         * tree-pass.h (pass_build_alias): New pass.
25061         * tree-ssa-alias.c (gate_build_alias): New.
25062         (pass_build_alias): New.
25063         * passes.c (init_optimization_passes): Add pass_build_alias after
25064         pass_create_structure_vars.
25065
25066 2008-01-22  Wolfgang Gellerich  <gellerich@de.ibm.com>
25067
25068         * config/s390/s390.h (S390_TDC_POSITIVE_NORMALIZED_NUMBER):
25069         Renamed to S390_TDC_POSITIVE_NORMALIZED_BFP_NUMBER.
25070         (S390_TDC_NEGATIVE_NORMALIZED_NUMBER): Renamed to
25071         S390_TDC_NEGATIVE_NORMALIZED_BFP_NUMBER.
25072         (S390_TDC_POSITIVE_DENORMALIZED_NUMBER): Renamed to
25073         S390_TDC_POSITIVE_DENORMALIZED_BFP_NUMBER.
25074         (S390_TDC_NEGATIVE_DENORMALIZED_NUMBER): Renamed to
25075         S390_TDC_NEGATIVE_DENORMALIZED_BFP_NUMBER.
25076         (S390_TDC_POSITIVE_NORMALIZED_BFP_NUMBER): New constant.
25077         (S390_TDC_NEGATIVE_NORMALIZED_BFP_NUMBER): New constant.
25078         (S390_TDC_POSITIVE_DENORMALIZED_BFP_NUMBER): New constant.
25079         (S390_TDC_NEGATIVE_DENORMALIZED_BFP_NUMBER): New constant.
25080         * config/s390/s390.md (FP_ALL): New mode iterator.
25081         (_d): New mode attribute.
25082         ("*signbit<mode>2>"): Changed mode of first operand.
25083         ("isinf<mode>2"): Changed mode of first operand.
25084         ("*TDC_insn"): Adaptation for DFP modes.
25085
25086 2008-01-22  Ben Elliston  <bje@au.ibm.com>
25087
25088         * tree.c (check_qualified_type): Improve function description.
25089
25090 2008-01-21  Jason Merrill  <jason@redhat.com>
25091
25092         PR c++/34196
25093         * tree.h (TRY_CATCH_IS_CLEANUP): New macro.
25094         * tree-eh.c (honor_protect_cleanup_actions): Strip TRY_CATCH_EXPR
25095         if it is set.
25096
25097 2008-01-21  DJ Delorie  <dj@redhat.com>
25098
25099         * doc/tm.texi (HARD_REGNO_NREGS): Note that this macro must not
25100         return zero.
25101
25102 2008-01-21  Richard Guenther  <rguenther@suse.de>
25103
25104         PR middle-end/34856
25105         * tree-cfg.c (verify_expr): Allow all invariant expressions
25106         instead of just constant class ones as reference argument.
25107         * tree-ssa-loop-im.c (for_each_index): Handle CONSTRUCTOR
25108         like any other constant.
25109         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Likewise.
25110
25111 2008-01-21  H.J. Lu  <hongjiu.lu@intel.com>
25112
25113         * regmove.c (fixup_match_1): Update call crossed frequencies.
25114
25115 2008-01-21  Richard Guenther  <rguenther@suse.de>
25116
25117         PR c/34885
25118         * tree-inline.c (setup_one_parameter): Deal with mismatched
25119         types using a VIEW_CONVERT_EXPR.
25120
25121 2008-01-21  Alon Dayan  <alond@il.ibm.com>
25122             Olga Golovanevsky  <olga@il.ibm.com>
25123
25124         PR tree-optimization/34701
25125         * ipa-struct-reorg.c (gen_size): Fix the malloc parameter calculation
25126         when the structure size is not a power of 2.
25127
25128 2008-01-20  Kenneth Zadeck  <zadeck@naturalbridge.com>
25129
25130         * doc/install.texi: Add doc for --enable-checking=df.
25131
25132 2008-01-20  Kaz Kojima  <kkojima@gcc.gnu.org>
25133
25134         PR rtl-optimization/34808
25135         * emit-rtl.c (try_split): Handle REG_RETVAL notes.
25136
25137 2008-01-20  Richard Sandiford  <rsandifo@nildram.co.uk>
25138
25139         * global.c (find_reg): Only compute EH_RETURN_DATA_REGNO once per
25140         input.
25141
25142 2008-01-19  Kenneth Zadeck  <zadeck@naturalbridge.com>
25143
25144         PR rtl-optimization/26854
25145         PR rtl-optimization/34400
25146         * ddg.c (create_ddg_dep_from_intra_loop_link): Do not use
25147         DF_RD->gen.
25148         * df.h (df_changeable_flags.DF_RD_NO_TRIM): New.
25149         (df_rd_bb_info.expanded_lr_out): New.
25150         * loop_invariant.c (find_defs): Added DF_RD_NO_TRIM flag.
25151         * loop_iv.c (iv_analysis_loop_init): Ditto.
25152         * df-problems.c (df_rd_free_bb_info, df_rd_alloc, df_rd_confluence_n,
25153         df_rd_bb_local_compute, df_rd_transfer_function, df_rd_free):
25154         Added code to allocate, initialize or free expanded_lr_out.
25155         (df_rd_bb_local_compute_process_def): Restructured to make
25156         more understandable.
25157         (df_rd_confluence_n): Add code to do nothing with fake edges and
25158         code to no apply invalidate_by_call sets if the sets are being trimmed.
25159         (df_lr_local_finalize): Renamed to df_lr_finalize.
25160         (df_live_local_finalize): Renamed to df_live_finalize.
25161
25162 2008-01-20  Richard Sandiford  <rsandifo@nildram.co.uk>
25163
25164         PR target/34831
25165         * config/mips/mips.md (div<mode>3): Use <recip_condition> when
25166         deciding whether to use reciprocal instructions.
25167
25168 2008-01-19  Uros Bizjak  <ubizjak@gmail.com>
25169
25170         * dwarf2out.c (dwarf2out_switch_text_section): Do not call
25171         dwarf2out_note_section_used if cold_text_section is NULL.
25172
25173 2008-01-19  Jakub Jelinek  <jakub@redhat.com>
25174
25175         PR gcov-profile/34610
25176         * tree-cfg.c (make_edges): Mark both outgoing edges from
25177         OMP_CONTINUE and from OMP_FOR as EDGE_ABNORMAL.
25178         * omp-low.c (expand_omp_for): Clear EDGE_ABNORMAL bits
25179         from OMP_FOR and OMP_CONTINUE outgoing edges.
25180
25181         * tree-profile.c (tree_profiling): Return early if
25182         cfun->after_tree_profile != 0.  Set cfun->after_tree_profile
25183         at the end.
25184         * omp-low.c (expand_omp_parallel): Copy after_tree_profile
25185         from cfun to child_cfun.
25186         * function.h (struct function): Add after_tree_profile bit.
25187
25188 2008-01-19 Anatoly Sokolov <aesok@post.ru>
25189
25190         * config/avr/avr.S (_exit): Disable interrupt.
25191
25192 2008-01-18  Kenneth Zadeck  <zadeck@naturalbridge.com>
25193             Steven Bosscher  <stevenb.gcc@gmail.com>
25194
25195         PR rtl-optimization/26854
25196         PR rtl-optimization/34400
25197         * df-problems.c (df_live_scratch): New scratch bitmap.
25198         (df_live_alloc): Allocate df_live_scratch when doing df_live.
25199         (df_live_reset): Clear the proper bitmaps.
25200         (df_live_bb_local_compute): Only process the artificial defs once
25201         since the order is not important.
25202         (df_live_init): Init the df_live sets only with the variables
25203         found live by df_lr.
25204         (df_live_transfer_function): Use the df_lr sets to prune the
25205         df_live sets as they are being computed.
25206         (df_live_free): Free df_live_scratch.
25207
25208 2008-01-18  Ian Lance Taylor  <iant@google.com>
25209
25210         * common.opt: Add fmerge-debug-strings.
25211         * dwarf2out.c (DEBUG_STR_SECTION_FLAGS): Test
25212         flag_merge_debug_strings rather than flag_merge_constants.
25213         * doc/invoke.texi (Option Summary): Mention
25214         -fmerge-debug-strings.
25215         (Debugging Options): Document -fmerge-debug-strings.
25216
25217 2008-01-18  Ian Lance Taylor  <iant@google.com>
25218
25219         PR c++/33407
25220         * tree.h (DECL_IS_OPERATOR_NEW): Define.
25221         (struct tree_function_decl): Add new field operator_new_flag.
25222         * tree-inline.c (expand_call_inline): When inlining a call to
25223         operator new, force the return value to go into a variable, and
25224         set DECL_NO_TBAA_P on that variable.
25225         * c-decl.c (merge_decls): Merge DECL_IS_OPERATOR_NEW flag.
25226
25227 2008-01-18  Uros Bizjak  <ubizjak@gmail.com>
25228
25229         PR debug/34484
25230         * dwarf2out.c (dwarf2out_switch_text_section): Do not guard with
25231         DWARF2_DEBUGGING_INFO.
25232         (dwarf2out_note_section_used): Ditto.  Add prototype.
25233         (have_multiple_function_sections, text_section_used,
25234         cold_text_section_used, *cold_text_sections): Move declarations
25235         before their uses.
25236
25237 2008-01-17  Bob Wilson  <bob.wilson@acm.org>
25238
25239         * config/xtensa/unwind-dw2-xtensa.h (_Unwind_FrameState): Remove pc
25240         field and add signal_ra.
25241         * config/xtensa/unwind-dw2-xtensa.c (uw_frame_state_for): Remove
25242         assignments to frame state pc.  Move end of stack check after
25243         MD_FALLBACK_FRAME_STATE_FOR.
25244         (uw_update_context_1): Use frame state signal_regs if set, instead
25245         of checking signal_frame flag.
25246         (uw_update_context): Use frame state signal_ra if set.
25247         * config/xtensa/linux.h (MD_UNWIND_SUPPORT): Define.
25248         * config/xtensa/linux-unwind.h: New file.
25249
25250 2008-01-18  Bernhard Fischer  <aldot@gcc.gnu.org>
25251
25252         * modulo-sched.c (get_sched_window): Fix comment typo.
25253
25254 2008-01-17  Andrew MacLeod  <amacleod@redhat.com>
25255
25256         PR tree-optimization/34648
25257         * tree-ssa-sccvn.c (visit_use): Expressions which can throw are varying.
25258
25259 2008-01-17  Anatoly Sokolov <aesok@post.ru>
25260
25261         * config/avr/avr.h (LINK_SPEC): Support -mrelax and -mpmem-wrap-around.
25262         * config/avr/avr.opt (mrelax, mpmem-wrap-around): Add.
25263
25264 2008-01-17  Seongbae Park  <seongbae.park@gmail.com>
25265
25266         PR rtl-optimization/34400
25267         * df-core.c (df_worklist_dataflow_overeager,
25268         df_worklist_dataflow_doublequeue): New functions.
25269         (df_worklist_dataflow): Two different worklist solvers.
25270         * params.def (PARAM_DF_DOUBLE_QUEUE_THRESHOLD_FACTOR):
25271         New param.
25272
25273 2008-01-16  Sebastian Pop  <sebastian.pop@amd.com>
25274
25275         PR testsuite/34821
25276         * doc/invoke.texi: Document the dependence on pthread for fopenmp
25277         and ftree-parallelize-loops.
25278
25279 2008-01-17  Mircea Namolaru  <namolaru@il.ibm.com>
25280
25281         PR rtl-optimization/34826
25282         * loop-doloop (doloop_modify): Update the REG_BR_PROB note.
25283
25284 2008-01-17  Andreas Krebbel  <krebbel1@de.ibm.com>
25285
25286         * global.c (find_reg): Mark the eh regs as used if necessary.
25287         * ra-conflict.c (global_conflicts): Set no_eh_reg flag.
25288         * ra.h (struct allocno): no_eh_reg field added.  Changed
25289         no_stack_reg type to bitfield.
25290
25291 2008-01-17  Eric Botcazou  <ebotcazou@adacore.com>
25292
25293         * tree.c (substitute_in_expr): Add missing 'break'.
25294
25295 2008-01-17  Richard Guenther  <rguenther@suse.de>
25296
25297         PR tree-optimization/34825
25298         * tree-ssa-math-opts.c (is_division_by): Do not recognize
25299         x / x as division to handle.
25300
25301 2008-01-16  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
25302
25303         * pa64-hpux.h (LIB_SPEC): Add "-lpthread" in shared links if "-mt" or
25304         "-pthread" is specified.
25305         * pa-hpux11.h (LIB_SPEC): Likewise.
25306
25307 2008-01-16  Janis Johnson  <janis187@us.ibm.com>
25308             Peter Bergner  <bergner@vnet.ibm.com>
25309
25310         PR rtl-optimization/33796
25311         * sparseset.c (sparseset_alloc): Use xcalloc rather than xmalloc.
25312
25313 2008-01-16  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
25314
25315         PR libgfortran/34699
25316         * pa-hpux.h (LINK_SPEC): Only search /lib/pa1.1 and /usr/lib/pa1.1 on
25317         static links.
25318         * pa-hpux10.h (LINK_SPEC): Likewise.
25319         * pa-hpux11.h (LINK_SPEC): Don't search /lib/pa1.1 and /usr/lib/pa1.1.
25320
25321 2008-01-16  Richard Guenther  <rguenther@suse.de>
25322
25323         PR middle-end/32628
25324         * fold-const.c (fold_convert_const_int_from_int): Do not
25325         set overflow if that occured only because of a sign extension
25326         change when converting from/to a sizetype with the same
25327         precision and signedness.
25328
25329 2008-01-16  Uros Bizjak  <ubizjak@gmail.com>
25330
25331         PR debug/34249
25332         * dwarf2out.c (output_call_frame_info): Move output of FDE initial
25333         location address to the correct place.  Update copyright year.
25334
25335 2008-01-16  Sebastian Pop  <sebastian.pop@amd.com>
25336
25337         * lambda-code.c (lambda_transform_legal_p): Handle the case of
25338         no dependences in the dependence_relations vector.
25339
25340 2008-01-16  Jan Hubicka  <jh@suse.cz>
25341
25342         PR rtl-optimization/31396
25343         * regstat.c (regstat_bb_compute_ri): Compute FREQ_CALLS_CROSSED.
25344         * cfg.c (dump_reg_info): Print it.
25345         * regs.h (struct reg_info_t): add freq_calls_crossed.
25346         (REG_FREQ_CALLS_CROSSED): New macro.
25347         * global.c (global_alloc): Compute freq_calls_crossed for allocno.
25348         (find_reg): Update call of CALLER_SAVE_PROFITABLE.
25349         * regmove.c (optimize_reg_copy_1, optimize_reg_copy_2, fixup_match_2,
25350         regmove_optimize): Update call crossed frequencies.
25351         * local-alloc.c (struct qty): Add freq_calls_crossed.
25352         (alloc_qty): Copute freq_calls_crossed.
25353         (update_equiv_regs, combine_regs): Update REG_FREQ_CALLS_CROSSED.
25354         (find_free_reg): Update call of CALLER_SAVE_PROFITABLE.
25355         * ra.h (struct allocno): Add freq_calls_crossed.
25356
25357 2008-01-16  Sebastian Pop  <sebastian.pop@amd.com>
25358
25359         * gcc.c (LINK_COMMAND_SPEC): Add includes and link options for
25360         libgomp when compiling with ftree-parallelize-loops.
25361         (GOMP_SELF_SPECS): Add -pthread for ftree-parallelize-loops.
25362
25363 2008-01-16  Richard Guenther  <rguenther@suse.de>
25364
25365         PR tree-optimization/34769
25366         * tree-data-ref.c (initialize_matrix_A): Revert fix for PR34458.
25367         * tree.c (int_cst_value): Instead make this function more
25368         permissive in what it accepts as valid input.  Document this
25369         function always sign-extends the value.
25370
25371 2008-01-16  Jakub Jelinek  <jakub@redhat.com>
25372             Richard Guenther  <rguenther@suse.de>
25373
25374         PR c/34668
25375         * gimplify.c (fold_indirect_ref_rhs): Rename to ...
25376         (gimple_fold_indirect_ref_rhs): ... this.
25377         (gimple_fold_indirect_ref): New function with foldings
25378         that preserve lvalueness.
25379         (gimplify_modify_expr_rhs): Call gimple_fold_indirect_ref_rhs.
25380         * tree-flow.h (gimple_fold_indirect_ref): Declare.
25381         * tree-inline.c (copy_body_r): Use gimple_fold_indirect_ref
25382         to fold an INDIRECT_REF, fall back to the old use of
25383         fold_indirect_ref_1.
25384
25385 2008-01-16  Sebastian Pop  <sebastian.pop@amd.com>
25386
25387         * tree-data-ref.c (subscript_dependence_tester_1): Call
25388         free_conflict_function.
25389         (compute_self_dependence): Same.
25390
25391 2008-01-16  Uros Bizjak  <ubizjak@gmail.com>
25392
25393         PR debug/34249
25394         * debug.h (dwarf2out_switch_text_section): Move declaration from ...
25395         * dwarf2out.c (dwarf2out_switch_text_section): ... here.  Make
25396         function global.
25397         * final.c (final_scan_insn) [NOTE_INSN_SWITCH_TEXT_SECTIONS]:
25398         Depending on dwarf2out_do_frame, call dwarf2out_switch_text_section
25399         for DWARF2_UNWIND_INFO targets.
25400
25401 2008-01-16  Richard Guenther  <rguenther@suse.de>
25402
25403         PR c/34768
25404         * c-typeck.c (common_pointer_type): Do not merge inconsistent
25405         type qualifiers for function types.
25406
25407 2008-01-15  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
25408
25409         * tree-parloops.c (gen_parallel_loop): Fix ommision of declaration for
25410         loop_iterator li from previous commit.
25411
25412 2008-01-15  Sebastian Pop  <sebastian.pop@amd.com>
25413
25414         * tree-parloops.c (gen_parallel_loop): Free loop bound estimations.
25415
25416 2008-01-12  Sebastian Pop  <sebastian.pop@amd.com>
25417
25418         * tree-parloops.c (loop_has_blocks_with_irreducible_flag): New.
25419         (parallelize_loops): Don't parallelize irreducible components.
25420
25421 2008-01-14  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
25422
25423         PR c++/24924
25424         * c-opts (c_common_post_options): Do not enable CPP
25425         flag_pedantic_errors by default.
25426
25427 2008-01-14  Eric Botcazou  <ebotcazou@adacore.com>
25428
25429         PR rtl-optimization/31944
25430         * cse.c (remove_pseudo_from_table): New function.
25431         (merge_equiv_classes): Use above function to remove pseudo-registers.
25432         (invalidate): Likewise.
25433
25434 2008-01-13  Richard Guenther  <rguenther@suse.de>
25435
25436         PR middle-end/34601
25437         * emit-rtl.c (set_reg_attrs_for_decl_rtl): Use DECL_MODE
25438         instead of TYPE_MODE to deal with calls from expand_one_error_var.
25439
25440 2008-01-13  Uros Bizjak  <ubizjak@gmail.com>
25441
25442         * gcse.c (cprop_jump): Call validate_unshare_change instead of
25443         validate_change to unshare the source of the PC set.
25444
25445 2008-01-12  Jan Hubicka  <jh@suse.cz>
25446
25447         PR middle-end/32135
25448         * tree-ssa-ccp.c (maybe_fold_offset_to_array_ref): Do not construct
25449         references above array bounds.  This might trigger bounds checks for
25450         pointers to arrays.
25451
25452 2008-01-12  Sebastian Pop  <sebastian.pop@amd.com>
25453
25454         * tree-ssa-ter.c (free_temp_expr_table): Free num_in_part and
25455         new_replaceable_dependencies.
25456
25457 2008-01-12  Doug Kwan  <dougkwan@google.com>
25458
25459         * c-decl.c: (grokdeclarator): Use OPT_Wignored_qualifiers
25460         instead of OPT_Wreturn_type in warning due to ignored return type
25461         qualifiers.
25462         * c-opt.c (c_common_post_option): Add -Wignored-qualifiers to
25463         options included in -Wextra.
25464         * c.opt: New option -Wignored_qualifiers.
25465         * doc/invoke.texi (Warning Options, -Wextra): Add new option
25466         -Wignore_qualifiers.
25467         (-Wignored-qualifiers): Document.
25468         (-Wreturn-type): Remove description of functionality now handled
25469         by -Wignored-qualifiers.
25470
25471 2008-01-12  Eric Botcazou  <ebotcazou@adacore.com>
25472
25473         PR ada/33788
25474         * fold-const.c (fold_unary) <VIEW_CONVERT_EXPR>: Fold an existing
25475         NOP_EXPR if it is between integral types with the same precision.
25476
25477 2008-01-12  Jan Hubicka  <jh@suse.cz>
25478
25479         PR other/28023
25480         * invoke.texi (max-inline-recursive-depth): Fix default value.
25481
25482 2008-01-12  Zdenek Dvorak  <ook@ucw.cz>
25483
25484         * tree-parloops.c (transform_to_exit_first_loop): Cast nit to the
25485         correct type.
25486
25487 2008-01-11  Bob Wilson  <bob.wilson@acm.org>
25488
25489         * config/xtensa/xtensa.c (override_options): Set flag_shlib.
25490
25491 2008-01-11  James E. Wilson  <wilson@specifix.com>
25492
25493         PR target/26015
25494         * config/vax/elf.h (FRAME_POINTER_CFA_OFFSET): Define.
25495
25496 2008-01-11  Anatoly Sokolov <aesok@post.ru>
25497
25498         * config/avr/avr.c (expand_prologue, expand_epilogue): Don't
25499         save/restore frame pointer register and don't use 'call-prologues'
25500         optimization in function with "OS_task" attribute.
25501
25502 2008-01-11  Eric Botcazou  <ebotcazou@adacore.com>
25503
25504         PR middle-end/31309
25505         * expr.c (copy_blkmode_from_reg): Use a mode suited to the size
25506         when copying to memory.
25507
25508 2008-01-11  Steven Bosscher  <stevenb.gcc@gmail.com>
25509
25510         PR rtl-optimization/30905
25511         * cfgcleanup.c: Include dce.h
25512         (crossjumps_occured): New global variable.
25513         (try_crossjump_bb): Exit loop after finding a fallthru edge.
25514         If something changed, set crossjumps_occured to true.
25515         (try_optimize_cfg): Clear crossjumps_occured at the beginning.
25516         Don't add/remove fake edges to exit here...
25517         (cleanup_cfg): ...but do it here, when crossjumping.
25518         Run a fast DCE when successful crossjumps occured in the latest
25519         iteration of try_optimize_cfg.
25520
25521 2008-01-11  Richard Guenther  <rguenther@suse.de>
25522
25523         * tree-ssa-sccvn.c (struct vn_binary_op_s): Move hashcode near opcode.
25524         (struct vn_unary_op_s): Likewise.
25525         (vn_reference_insert): Free old reference on hash collision.
25526
25527 2008-01-10  Raksit Ashok  <raksit@google.com>
25528
25529         PR rtl-optimization/27971
25530         * combine.c (find_split_point): Split PLUS expressions which are
25531         inside a MEM rtx, and whose first operand is complex.
25532
25533 2008-01-10  DJ Delorie  <dj@redhat.com>
25534
25535         * config/m32c/m32c.c (m32c_hard_regno_nregs_1): Renamed from...
25536         (m32c_hard_regno_nregs): ...this, which is now a wrapper.
25537         (m32c_hard_regno_ok): Call the underlying function.
25538
25539 2008-01-10  Richard Guenther  <rguenther@suse.de>
25540
25541         PR middle-end/34683
25542         * tree-cfg.c (tree_merge_blocks): Do not go through the
25543         full-blown folding and stmt updating path if we just deal
25544         with virtual operands.
25545         * tree-ssa-copy.c (may_propagate_copy): Do not short-cut
25546         test for abnormal SSA_NAMEs.
25547
25548 2008-01-10  Andreas Krebbel  <krebbel1@de.ibm.com>
25549
25550         PR middle-end/34641
25551         * reload.c (push_reload): Add assertions.  All constants from
25552         reg_equiv_constant should have been used for replacing the respective
25553         pseudo earlier.
25554         (find_reloads_address): Invoke find_reloads_address_part for
25555         constant taken from the reg_equiv_constant array.
25556
25557 2008-01-10  Steven Bosscher  <stevenb.gcc@gmail.com>
25558
25559         * tree-ssa-sccvn.h (struct vn_ssa_aux): Make the most accessed
25560         field (valnum) the first in the struct.  Replace bools with
25561         unit bit fields.
25562
25563 2008-01-10  Richard Guenther  <rguenther@suse.de>
25564
25565         PR tree-optimization/34651
25566         * tree-sra.c (sra_build_assignment): Sanitize.  Use the correct
25567         types and ordering for masking and converting.
25568
25569 2008-01-09  Sebastian Pop  <sebastian.pop@amd.com>
25570
25571         PR tree-optimization/34017
25572         * lambda-code.c (lambda_loopnest_to_gcc_loopnest): Generate code
25573         also for PHI_NODE expressions.
25574
25575 2008-01-09  Jan Hubicka  <jh@suse.cz>
25576
25577         PR tree-optimization/34708
25578         * tree-inline.c (estimate_num_insns_1): Compute cost of SWITCH_EXPR
25579         based on number of case labels.
25580         (init_inline_once): Remove switch_cost.
25581         * tree-inline.h (eni_weights_d): Remove switch_cost.
25582
25583 2008-01-09  Richard Guenther  <rguenther@suse.de>
25584         Andrew Pinski  <andrew_pinski@playstation.sony.com>
25585
25586         PR middle-end/30132
25587         * gimplify.c (gimplify_cond_expr): Do not create an addressable
25588         temporary if an rvalue is ok or an lvalue is not required.
25589
25590 2008-01-09  Richard Guenther  <rguenther@suse.de>
25591
25592         PR middle-end/34458
25593         * tree-data-ref.c (initialize_matrix_A): Use tree_low_cst,
25594         adjust return type.
25595
25596 2008-01-09  Richard Guenther  <rguenther@suse.de>
25597
25598         PR middle-end/34679
25599         * tree.c (host_integerp): Check for sizetype only if the
25600         type is an integer type.
25601
25602 2008-01-09  Steven Bosscher  <stevenb.gcc@gmail.com>
25603
25604         PR debug/26364
25605         * opts.c (decode_options): Disable inlining of functions called
25606         once if not in unit-at-a-time mode.
25607
25608 2008-01-09  Alexandre Oliva  <aoliva@redhat.com>
25609
25610         * Makefile.in (dse.o): Remove duplicate $(RECOG_H) dependency.
25611
25612 2008-01-08  Richard Guenther  <rguenther@suse.de>
25613
25614         PR middle-end/31863
25615         * tree-ssa-structalias.c (push_fields_onto_fieldstack): Bail
25616         out early if the result will be unused.
25617
25618 2008-01-08  Uros Bizjak  <ubizjak@gmail.com>
25619
25620         PR target/34709
25621         Revert:
25622
25623         2008-01-05  Uros Bizjak  <ubizjak@gmail.com>
25624         * config/i386/i386.c (ix86_builtin_reciprocal): Remove check
25625         for TARGET_RECIP.
25626
25627 2008-01-08  Jan Sjodin  <jan.sjodin@amd.com>
25628
25629         * config/i386/i386.c (k8_cost, amdfam10_cost): Branch costs
25630         for vectorization tuned.
25631
25632 2008-01-08  Richard Guenther  <rguenther@suse.de>
25633
25634         PR tree-optimization/34683
25635         * tree-ssa-operands.c (operand_build_cmp): Export.
25636         * tree-ssa-operands.h (operand_build_cmp): Declare.
25637         * tree-vn.c (vuses_compare): Remove.
25638         (sort_vuses): Use operand_build_cmp.
25639         (sort_vuses_heap): Likewise.
25640         * tree-ssa-sccvn.c (vuses_to_vec): Use VEC_reserve, not VEC_alloc
25641         to re-use old VEC if available.  Do not sort already sorted VUSEs.
25642         (vdefs_to_vec): Do not sort already sorted VDEFs.
25643
25644 2008-01-08  Jakub Jelinek  <jakub@redhat.com>
25645
25646         PR middle-end/34694
25647         * omp-low.c (copy_var_decl): Copy also DECL_SOURCE_LOCATION.
25648
25649 2008-01-08  Uros Bizjak  <ubizjak@gmail.com>
25650
25651         PR target/34702
25652         * doc/invoke.texi (i386 and x86-64 Options) [mrecip]: Document
25653         limitations of reciprocal sequences on x86 targets.
25654
25655 2008-01-08  Richard Guenther  <rguenther@suse.de>
25656
25657         PR tree-optimization/34683
25658         * tree-flow-inline.h (var_ann): Remove overzealous asserts.
25659
25660 2008-01-07  Jakub Jelinek  <jakub@redhat.com>
25661
25662         PR target/34622
25663         * config/darwin.c (darwin_mergeable_string_section): Don't use
25664         .cstring if int_size_in_bytes != TREE_STRING_LENGTH.
25665
25666 2008-01-07  Uros Bizjak  <ubizjak@gmail.com>
25667
25668         PR target/34682
25669         * config/i386/i386.md (neg<mode>2): Rename from negsf2, negdf2 and
25670         negxf2.  Macroize expander using X87MODEF mode iterator.  Change
25671         predicates of op0 and op1 to register_operand.
25672         (abs<mode>2): Rename from abssf2, absdf2 and negxf2.  Macroize
25673         expander using X87MODEF mode iterator.  Change predicates of
25674         op0 and op1 to register_operand.
25675         ("*absneg<mode>2_mixed", "*absneg<mode>2_sse"): Rename from
25676         corresponding patterns and macroize using MODEF macro.  Change
25677         predicates of op0 and op1 to register_operand and remove
25678         "m" constraint. Disparage "r" alternative with "!".
25679         ("*absneg<mode>2_i387"): Rename from corresponding patterns and
25680         macroize using X87MODEF macro.  Change predicates of op0 and op1
25681         to register_operand and remove "m" constraint.  Disparage "r"
25682         alternative with "!".
25683         (absneg splitter with memory operands): Remove.
25684         ("*neg<mode>2_1", "*abs<mode>2_1"): Rename from corresponding
25685         patterns and macroize using X87MODEF mode iterator.
25686         * config/i386/sse.md (negv4sf2, absv4sf2, neg2vdf2, absv2df2):
25687         Change predicate of op1 to register_operand.
25688         * config/i386/i386.c (ix86_expand_fp_absneg_operator): Remove support
25689         for memory operands.
25690
25691 2008-01-07  Nathan Froyd  <froydnj@codesourcery.com>
25692
25693         * config/rs6000/rs6000.h (ASM_CPU_SPEC): Add clause for mcpu=8548.
25694
25695 2008-01-07  Richard Guenther  <rguenther@suse.de>
25696
25697         * basic-block.h (struct edge_def): Pair dest_idx with goto_locus
25698         fields.
25699
25700 2008-01-07  Richard Guenther  <rguenther@suse.de>
25701
25702         PR tree-optimization/34683
25703         * tree-ssa-sccvn.c (vuses_to_vec): Pre-allocate the vector of
25704         VOPs of the needed size to save memory.  Use VEC_quick_push
25705         to save compile-time.
25706         (vdefs_to_vec): Likewise.
25707
25708 2008-01-07  Sa Liu  <saliu@de.ibm.com>
25709
25710         * config/spu/spu.md (divdf3): Genetate inline code for double
25711         division.  The implementation doesn't handle INF or NAN, therefore it
25712         only applies when -ffinite-math-only is given.
25713
25714 2008-01-06  Paolo Carlini  <pcarlini@suse.de>
25715
25716         PR libstdc++/34680
25717         * c-cppbuiltin.c (c_cpp_builtins): Define __GXX_RTTI, if appropriate.
25718         * doc/cpp.texi ([Common Predefined Macros]): Document.
25719
25720 2008-01-06  Uros Bizjak  <ubizjak@gmail.com>
25721
25722         * config/i386/i386.c (ix86_emit_swsqrtsf): Use negative constants in
25723         order to use commutative addition instead of subtraction.
25724
25725 2008-01-06  Andrew Pinski  <andrew_pinski@playstation.sony.com>
25726             Mircea Namolaru  <namolaru@il.ibm.com>
25727             Vladimir Yanovsky  <yanov@il.ibm.com>
25728             Revital Eres  <eres@il.ibm.com>
25729
25730         PR tree-optimization/34263
25731         * tree-outof-ssa.c (process_single_block_loop_latch,
25732         contains_tree_r): New functions.
25733         (analyze_edges_for_bb): Call process_single_block_loop_latch
25734         function to empty single-basic-block latch block if possible.
25735
25736 2008-01-05  Uros Bizjak  <ubizjak@gmail.com>
25737
25738         * config/i386/i386.c (ix86_builtin_reciprocal): Remove check
25739         for TARGET_RECIP.
25740         (ix86_emit_swsqrtsf): Do not filter out infinity for rsqrt expansion.
25741
25742 2008-01-05  Richard Sandiford  <rsandifo@nildram.co.uk>
25743
25744         * c-omp.c (check_omp_for_incr_expr): Handle CONVERT_EXPR.
25745
25746 2008-01-05  Richard Sandiford  <rsandifo@nildram.co.uk>
25747
25748         * config/mips/mips.c (mips_in_small_data_p): Reinstate size > 0 check.
25749
25750 2008-01-05  Jakub Jelinek  <jakub@redhat.com>
25751
25752         PR tree-optimization/34618
25753         * tree-outof-ssa.c (create_temp): Copy over DECL_GIMPLE_REG_P
25754         flag from T.
25755
25756 2008-01-05  Uros Bizjak  <ubizjak@gmail.com>
25757
25758         PR target/34673
25759         * config/i386/i386.c (ix86_emit_swsqrtsf): Swap input operands
25760         in the call to gen_rtx_NE.  Remove unneeded VECTOR_MODE_P check.
25761         Update copyright year.
25762
25763         * config/i386/i386.md (rsqrtsf2): Enable for TARGET_SSE_MATH.
25764         Update copyright year.
25765         * config/i386/sse.md (rsqrtv4sf2): Ditto. Unconditionally expand
25766         using NR fixup.
25767
25768 2008-01-05  Zhouyi Zhou  <zhouzhouyi@FreeBSD.org>
25769
25770         * tree-vrp.c (find_conditional_asserts): Remove redundant check that
25771         edge does not point to current bb before changing need_assert.
25772
25773 2008-01-04  Richard Guenther  <rguenther@suse.de>
25774
25775         PR middle-end/34029
25776         * tree-cfg.c (verify_expr): Do not look inside ADDR_EXPRs
25777         for verifying purposes if they are is_gimple_min_invariant.
25778
25779 2008-01-04  Aldy Hernandez  <aldyh@redhat.com>
25780
25781         PR tree-optimization/34448
25782         PR tree-optimization/34465
25783         * gimplify.c (gimplify_init_constructor): Add new parameter
25784         notify_temp_creation.  Use it.
25785         (gimplify_modify_expr_rhs): Take volatiles into account when
25786         optimizing constructors.
25787         Do not optimize constructors if gimplify_init_constructor will dump to
25788         memory.
25789         * gcc.dg/tree-ssa/pr32901.c: Tests const volatiles.
25790         * gcc.c-torture/compile/pr34448.c: New.
25791
25792 2008-01-04  Jakub Jelinek  <jakub@redhat.com>
25793
25794         PR gcov-profile/34609
25795         * tree-inline.c (declare_return_variable): Set TREE_ADDRESSABLE on
25796         return_slot if result is TREE_ADDRESSABLE.
25797
25798 2008-01-04  Richard Sandiford  <rsandifo@nildram.co.uk>
25799
25800         * config/mips/mips.md (sqrt_condition): Tweak comment.
25801         (recip_condition): Likewise.  Require TARGET_FLOAT64 for DFmode.
25802
25803 2008-01-03  Tom Tromey  <tromey@redhat.com>
25804
25805         PR c/34457
25806         * c-common.c (c_type_hash): Handle VLAs.
25807
25808 2008-01-03  Jan Hubicka  <jh@suse.cz>
25809
25810         PR tree-optimization/31081
25811         * tree-inline.c (remap_ssa_name): Initialize uninitialized SSA vars to
25812         0 when inlining and not inlining to first basic block.
25813         (remap_decl): When var is initialized to 0, don't set default_def.
25814         (expand_call_inline): Set entry_bb.
25815         * tree-inline.h (copy_body_data): Add entry_bb.
25816
25817 2008-01-03  Jakub Jelinek  <jakub@redhat.com>
25818
25819         PR c++/34619
25820         * cgraphunit.c (cgraph_build_static_cdtor): set_cfun back to NULL
25821         before returning.
25822
25823         PR tree-optimization/29484
25824         * tree-inline.c (inline_forbidden_p_2): New function.
25825         (inline_forbidden_p): Disallow inlining if some static var
25826         has an address of a local LABEL_DECL in its initializer.
25827         * doc/extend.texi (Labels as Values): Document &&foo behaviour
25828         vs. inlining.
25829
25830 2008-01-03  Sebastian Pop  <sebastian.pop@amd.com>
25831
25832         PR tree-optimization/34635
25833         * tree-data-ref.c (add_other_self_distances): Make sure that the
25834         evolution step is constant.
25835
25836 2008-01-03  Jakub Jelinek  <jakub@redhat.com>
25837
25838         PR middle-end/34608
25839         * omp-low.c (expand_omp_parallel): Purge dead EH edges in the child fn.
25840
25841 2008-01-02  Richard Sandiford  <rsandifo@nildram.co.uk>
25842
25843         * tree-sra.c (scalarize_init): Insert the generate_element_init
25844         statements after the generate_element_zero statements.
25845
25846 2008-01-02  Richard Guenther  <rguenther@suse.de>
25847
25848         PR middle-end/34093
25849         PR middle-end/31976
25850         * tree-ssa-operands.c (ssa_operand_alloc): Also allocate a buffer
25851         for very large number of operands instead of ICEing.
25852
25853 2008-01-02  Arthur Norman <acn1@cam.ac.uk>
25854
25855         PR target/34013
25856         * config/i386/i386.c (ix86_expand_prologue): Save red-zone
25857         while stack probing.
25858
25859 2008-01-01  Douglas Gregor  <doug.gregor@gmail.com>
25860
25861         * c-opts.c (sanitize_cpp_opts): Don't warn about "long long" when
25862         in C++0x mode.
25863
25864 2008-01-01  Volker Reichelt  <v.reichelt@netcologne.de>
25865
25866         PR libmudflap/26442
25867         * tree-mudflap.c (mx_register_decls): Guard warning by
25868         !DECL_ARTIFICIAL check.
25869
25870 2008-01-01  Jakub Jelinek  <jakub@redhat.com>
25871
25872         * config/i386/sse.md (sse5_pperm, sse5_pperm_pack_v2di_v4si,
25873         sse5_pperm_pack_v4si_v8hi, sse5_pperm_pack_v8hi_v16qi,
25874         sse5_perm<mode>): Fix constraints.