OSDN Git Service

* config/alpha/alpha.h (ASM_OUTPUT_EXTERNAL): New macro.
[pf3gnuchains/gcc-fork.git] / gcc / ChangeLog
1 2008-12-22  Uros Bizjak  <ubizjak@gmail.com>
2
3         * config/alpha/alpha.h (ASM_OUTPUT_EXTERNAL): New macro.
4
5         PR target/34571
6         * config/alpha/predicates.md (symbolic_operand): Return 1 for a
7         label_ref with an offset.
8
9 2008-12-21  Andrew Pinski  <pinskia@gmail.com>
10
11         PR target/38300
12         * configure: Regenerate.
13
14 2008-12-21  Richard Sandiford  <rdsandiford@googlemail.com>
15
16         * config/mips/mips-dsp.md (mips_lbux): Turn into a define_expand,
17         changing operand 1 to a pmode_register_operand.
18         (mips_lhx, mips_lwx): Likewise.
19         (mips_lbux_<mode>, mips_lhx_<mode>, mips_lwx_<mode>): New patterns.
20         * config/mips/mips.c (mips_prepare_builtin_arg): Get the mode of
21         the value from the argument expression.
22
23 2008-12-21  Jan Hubicka  <jh@suse.cz>
24             Kai Tietz <kai.tietz@onevision.com>
25
26         * i376.md (UNSPEC_MS_TO_SYSV_CALL): New constant.
27         (call_1_rex64_ms_sysv, call_value_0_rex64_ms_sysv,
28         call_value_1_rex64_ms_sysv): New patterns.
29         * i386.c (function_arg_ms_64): Pass magical value of -2 as callarg.
30         (ix86_expand_call): Emit extra clobbers for ms->sysv ABI calls.
31
32 2008-12-21  Uros Bizjak  <ubizjak@gmail.com>
33
34         * config/alpha/alpha.c (alpha_pad_noreturn): New static function.
35         (alpha_reorg): Call alpha_pad_noreturn.
36
37 2008-12-21  Denis Chertykov  <denisc@overta.ru>
38
39         * config/avr/avr.md ("andsi3"): Fix wrong cc attribute.
40
41 2008-12-20  Eric Botcazou  <ebotcazou@adacore.com>
42
43         PR target/37610
44         * configure.ac (gcc_cv_as_cfi_advance_working): Fall back to 'no'
45         if readelf is nowhere to be found.
46         * configure: Regenerate.
47
48 2008-12-19  Andrew Haley  <aph@redhat.com>
49
50         * builtins.c, tree-ssa-loop-ivopts.c, fixed-value.c:
51         Fix comments.
52
53 2008-12-19  Richard Earnshaw  <rearnsha@arm.com>
54
55         PR target/38548
56         * arm/t-linux (LIB1ASMFUNCS): Add _arm_addsubdf3 and _arm_addsubsf3.
57         * arm/lib1funcs.asm (clzsi2): Use RET macro for return instruction.
58
59 2008-12-19  Richard Earnshaw  <rearnsha@arm.com>
60
61         PR bootstrap/38578
62         * arm.c (load_multiple_sequence): Initialize ORDER array.
63         (store_multiple_sequence): Likewise.
64         (output_move_double): Make reg0 unsigned.
65         (arm_output_epilogue): Make amount unsigned.
66         (arm_expand_prologue): Move declaration of dwarf before block
67         statements.
68
69 2008-12-19  Steve Ellcey  <sje@cup.hp.com>
70
71         * df-scan.c ( df_hard_reg_init): Move declaration of i.
72
73 2008-12-19  Jakub Jelinek  <jakub@redhat.com>
74
75         PR bootstrap/37739
76         * config.host: For powerpc*-*-linux* host with 32-bit GCC,
77         use rs6000/x-linux-relax snippet if ld is new enough,
78         otherwise use rs6000/x-linux-O1.
79         * config/rs6000/x-linux-relax: New file.
80         * config/x-cflags-O1: New file.
81
82 2008-12-18  Joseph Myers  <joseph@codesourcery.com>
83
84         * config/rs6000/rs6000.c (rs6000_generate_compare): Condition
85         choice of e500 comparison instructions on flag_finite_math_only &&
86         !flag_trapping_math, not flag_unsafe_math_optimizations.
87         * config/rs6000/rs6000.md (abstf2): Condition choice of e500
88         instructions on flag_finite_math_only && !flag_trapping_math, not
89         flag_unsafe_math_optimizations.
90         (bltgt, sltgt): Disable for TARGET_HARD_FLOAT && !TARGET_FPRS.
91         * config/rs6000/spe.md (cmpsfeq_gpr, tstsfeq_gpr, cmpsfgt_gpr,
92         tstsfgt_gpr, cmpsflt_gpr, tstsflt_gpr, cmpdfeq_gpr, tstdfeq_gpr,
93         cmpdfgt_gpr, tstdfgt_gpr, cmpdflt_gpr, tstdflt_gpr, cmptfeq_gpr,
94         tsttfeq_gpr, cmptfgt_gpr, tsttfgt_gpr, cmptflt_gpr, tsttflt_gpr):
95         Condition choice of comparison instructions on
96         flag_finite_math_only && !flag_trapping_math, not
97         flag_unsafe_math_optimizations.
98
99 2008-12-18  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
100
101         * configure: Regenerate.
102
103 2008-12-18  Jan Hubicka  <jh@suse.cz>
104             Kai Tietz <kai.tietz@onevision.com>
105
106         * df-scan.c (persistent_obstack, df_invalidated_by_call): Remove.
107         (df_scan_start_dump, df_get_call_refs, df_hard_reg_init): Rename
108         df_invalidated_by_call to invalidated_by_call_regset.
109         * df.h (df_invalidated_by_call): Remove.
110         * regclass.c (regs_invalidated_by_call_regset, persistent_obstack):
111         New variables.
112         (init_reg_sets_1): Initialize regs_invalidated_by_call_regset.
113         (globalize_reg): Likewise.
114         * df-problems.c (df_rd_local_compute, df_lr_confluence_n,
115         df_byte_lr_alloc): Rename df_invalidated_by_call to
116         invalidated_by_call_regset.
117         * basic-block.h (regs_invalidated_by_call_regset): Declare.
118
119 2008-12-18  Jan Hubicka  <jh@suse.cz>
120             Kai Tietz <kai.tietz@onevision.com>
121
122         * ira-cost.c (copy_cost): Lazilly initialize move_cost if needed.
123
124 2008-12-18  Jan Hubicka  <jh@suse.cz>
125             Kai Tietz <kai.tietz@onevision.com>
126
127         * i386.h (CONDITIONAL_REGISTER_USAGE): Initialize for current
128         function ABI.
129         * i386.c (ix86_call_abi_override): Do not trigger target re-init and
130         do not try to modify call used regs.
131         (ix86_maybe_switch_abi): New function.
132         (TARGET_EXPAND_TO_RTL_HOOK): New macro.
133
134 2008-12-18  Kenneth Zadeck <zadeck@naturalbridge.com>
135
136         PR rtl-optimization/37922
137         * dse.c (bb_info): Added regs_live field.
138         (look_for_hardregs): New function.
139         (replace_read): Added regs_live parameter and code to check that
140         shift sequence does not clobber live hardregs.
141         (check_mem_read_rtx): Added parameter to replace_read.
142         (dse_step1): Added regs_live bitmap and initialize it.
143         (rest_of_handle_dse): Added DF_NOTES problem and earlier call to
144         df_analyze.
145         * df-problems.c Renamed to 
146         df_simulate_initialize_backwards.
147         (df_simulate_one_insn): Renamed to
148         df_simulate_one_insn_backwards.
149         (df_simulate_artificial_refs_at_top): Renamed to 
150         df_simulate_finalize_backwards.
151         (df_simulate_initialized_forwards,
152         df_simulate_one_insn_forwards,
153         df_simulate_finalize_backwards): New functions.
154         * df.h (df_simulate_artificial_refs_at_end): Renamed to 
155         df_simulate_initialize_backwards.
156         (df_simulate_one_insn): Renamed to
157         df_simulate_one_insn_backwards.
158         (df_simulate_artificial_refs_at_top): Renamed to 
159         df_simulate_finalize_backwards.
160         (df_simulate_initialized_forwards,
161         df_simulate_one_insn_forwards,
162         df_simulate_finalize_backwards): New functions.
163         * ra-conflict.c (global_conflicts): Renamed
164         df_simulate_artificial_refs_at_end to
165         df_simulate_initialize_backwards.
166         * sel-sched.c (propagate_lv_set): Renamed df_simulate_one_insn to
167         df_simulate_one_insn_backwards.
168         * ifcvt.c (dead_or_predicable): Renamed
169         df_simulate_artificial_refs_at_end to
170         df_simulate_initialize_backwards. Renamed df_simulate_one_insn to
171         df_simulate_one_insn_backwards.
172         * recog.c (peephole2_optimize): Ditto.
173         * rtl-factoring (collect_pattern_seqs, clear_regs_live_in_seq): Ditto.
174
175 2008-12-18  Jakub Jelinek  <jakub@redhat.com>
176
177         PR middle-end/38533
178         * tree-ssa-reassoc.c (remove_visited_stmt_chain): New function.
179         (rewrite_expr_tree): Add moved argument, move stmts together if
180         needed.  Call remove_visited_stmt_chain.
181         (linearize_expr_tree): Don't move stmts here.
182         (reassociate_bb): Call remove_visited_stmt_chain if num ops is 1.
183         Adjust rewrite_expr_tree caller.
184
185         PR middle-end/38505
186         * tree-ssa.c (useless_type_conversion_p_1): Return
187         false if inner_type is incomplete and outer_type is complete.
188
189 2008-12-17  Sebastian Pop  <sebastian.pop@amd.com>
190
191         * doc/install.texi (Prerequisites): Document PPL and CLooG-PPL
192         dependences and the configure options.
193         (Configuration): Document --with-cloog, --with-ppl, --with-cloog-lib,
194         --with-ppl-lib, --with-cloog-incude, --with-ppl-include.
195
196 2008-12-17  H.J. Lu  <hongjiu.lu@intel.com>
197
198         PR middle-end/38556
199         * calls.c (expand_call): Check outgoing_reg_parm_stack_space
200         only if REG_PARM_STACK_SPACE is defined.
201
202 2008-12-17  Jan Hubicka  <jh@suse.cz>
203             Kai Tietz <kai.tietz@onevision.com>
204
205         * calls.c (expand_call): Do not sibcall if
206         outgoing_reg_parm_stack_space does not match.
207
208 2008-12-16  Anatoly Sokolov  <aesok@post.ru>
209
210         * config/avr/avr.c (avr_mcu_t): Add attiny87, attiny327, at90pwm81,
211         atmega16m1, at90scr100, atmega128rfa1, m3000f, m3000s and m3001b
212         devices.
213         * config/avr/avr.h (LINK_SPEC, CRT_BINUTILS_SPECS): (Ditto.).
214         * config/avr/t-avr (MULTILIB_MATCHES): (Ditto.).
215
216 2008-12-16  Hariharan Sandanagobalane <hariharan@picochip.com>
217
218         PR target/38842
219         * config/picochip/picochip.opt (mae): Squeezed the comments onto one
220         line.
221
222 2008-12-16  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
223
224         * configure.ac (gcc_cv_ld_hidden): Sun ld on Solaris 9 and up
225         supports hidden.
226         * configure: Regenerate.
227
228 2008-12-16  Richard Earnshaw  <rearnsha@arm.com>
229
230         PR target/37436
231         * arm.c (arm_legitimate_index): Only accept addresses that are in
232         canonical form.
233         * predicates.md (arm_reg_or_extendqisi_mem_op): New predicate.
234         * arm.md (extendqihi2): Use arm_reg_or_extendqisi_mem_op predicate
235         for operand1.
236         (extendqisi2): Likewise.
237         (arm_extendqisi, arm_extendqisi_v6): Use arm_extendqisi_mem_op
238         predicate for operand1.
239         
240 2008-12-15  Adam Nemet  <anemet@caviumnetworks.com>
241
242         * config/mips/mips.c (mips_output_conditional_branch): Assert that
243         openrands[1] is a CODE_LABEL.
244
245 2008-12-15  Richard Sandiford  <rdsandiford@googlemail.com>
246
247         * config/mips/mips.c (mips_expand_builtin_direct): Set TARGET to
248         the result of mips_prepare_builtin_target.
249
250 2008-12-15  Richard Sandiford  <rdsandiford@googlemail.com>
251
252         * config/mips/mips.h (TARGET_CPU_CPP_BUILTINS): Define __mips_abicalls
253         if TARGET_ABICALLS is true.
254
255 2008-12-15  Richard Sandiford  <rdsandiford@googlemail.com>
256
257         * config/mips/mips.md (move_doubleword_fpr<mode>): Use
258         TARGET_FLOAT64 && !TARGET_64BIT to detect the mxhc1 case.
259
260 2008-12-15  Hariharan Sandanagobalane <hariharan@picochip.com>
261
262         * config/picochip/picochip.c (picochip_override_options): Disable CFI
263         asm and change the signature of brev and byteSwap functions to use
264         unsigned values.
265         * config/picochip/picochip.md (commsTestPort): This is a complex
266         instruction and should not be vliwed. Dont set insn type.
267
268 2008-12-15  Wolfgang Gellerich  <gellerich@de.ibm.com>
269         * config/s390/s390.c (s390_swap_cmp): New function.
270         (s390_non_addr_reg_read_p): New function.
271         (s390_z10_optimize_cmp): New function.
272         (s390_reorg): Added call to s390_optimize_cmp.
273         * config/s390/s390.md (nop1): New insn.
274
275 2008-12-12  Rainer Emrich  <r.emrich@de.tecosim.com>
276
277         PR bootstrap/38383
278         * pa64-hpux.h (LINK_GCC_C_SEQUENCE_SPEC): Don't hardcode search path
279         for the milli.a library.
280
281 2008-12-12  Andrew Pinski  <andrew_pinskia@playstation.sony.com>
282             Peter Bergner <bergner@vnet.ibm.com>
283
284         PR target/24779
285         * config/rs6000/rs6000.md (call_indirect_aix32): Move the load of the
286         TOC into the call pattern.
287         (call_indirect_aix64): Likewise.
288         (call_value_indirect_aix32): Likewise.
289         (call_value_indirect_aix64): Likewise.
290         (call_indirect_nonlocal_aix32_internal): New insn and split patterns
291         to split off the load of the TOC.
292         (call_indirect_nonlocal_aix32): Enable only after reload.
293         (call_indirect_nonlocal_aix64_internal): New insn and split patterns
294         to split off the load of the TOC.
295         (call_indirect_nonlocal_aix64): Enable only after reload.
296         (call_value_indirect_nonlocal_aix32_internal): New insn and split
297         patterns to split off the load of the TOC.
298         (call_value_indirect_nonlocal_aix32): Enable only after reload.
299         (call_value_indirect_nonlocal_aix64_internal): New insn and split
300         patterns to split off the load of the TOC.
301         (call_value_indirect_nonlocal_aix64): Enable only after reload.
302
303 2008-12-12  Andreas Schwab  <schwab@suse.de>
304
305         Revert:
306         2008-12-12  Andreas Schwab  <schwab@suse.de>
307         * cfgrtl.c (rtl_verify_flow_info_1): Don't apply BLOCK_FOR_INSN on
308         a BARRIER insn.
309
310 2008-12-12  Zdenek Dvorak  <ook@ucw.cz>
311
312         PR tree-optimization/32044
313         * tree-scalar-evolution.h (expression_expensive_p): Declare.
314         * tree-scalar-evolution.c (expression_expensive_p): New function.
315         (scev_const_prop): Avoid introducing expensive expressions.
316         * tree-ssa-loop-ivopts.c (may_eliminate_iv): Ditto.
317
318 2008-12-12  Sebastian Pop  <sebastian.pop@amd.com>
319
320         PR middle-end/38409
321         * graphite.c (nb_reductions_in_loop): Use simple_iv.
322
323 2008-12-12  Dwarakanath Rajagopal  <dwarak.rajagopal@amd.com>
324
325         * config/i386/x86intrin.h: New header file to support all x86
326         intrinsics
327         * config.gcc (extra_headers): For x86 and x86-64, add x86intrin.h
328
329 2008-12-12  H.J. Lu  <hongjiu.lu@intel.com>
330
331         PR target/38402
332         * gcc/doc/md.texi: Remove Y and document Yz, Y2, Yi and Ym
333         constraints for x86.
334
335 2008-12-12  Andreas Schwab  <schwab@suse.de>
336
337         * cfgrtl.c (rtl_verify_flow_info_1): Don't apply BLOCK_FOR_INSN on
338         a BARRIER insn.
339
340 2008-12-12  Uros Bizjak  <ubizjak@gmail.com>
341
342         * config/alpha/sync.md (memory_barrier): Remove mem:BLK from operands.
343         Use Pmode for scratch reg.
344         (*mb_internal): Use (match_dup 0) for unspec operand.
345
346 2008-12-12  Alexandre Oliva  <aoliva@redhat.com>
347
348         * tree-vrp.c (extract_range_from_binary_expr): Don't shift by
349         floor_log2 of zero.  Negate widened zero.
350
351 2008-12-12  Ben Elliston  <bje@au.ibm.com>
352
353         * config/fp-bit.c (nan): Rename from this ...
354         (makenan): ... to this.
355
356 2008-12-11  Adam Nemet  <anemet@caviumnetworks.com>
357
358         * config/mips/mips.md (*branch_bit<bbv><mode>,
359         *branch_bit<bbv><mode>_inverted): Renumber operands so that the
360         label becomes operands[1].
361
362 2008-12-11  Harsha Jagasia  <harsha.jagasia@amd.com>
363
364         PR tree-optimization/38446
365         * graphite.c (register_bb_in_sese): New.
366         (bb_in_sese_p): Check if bb belongs to sese region by explicitly
367         looking at the bbs in the region.
368         * graphite.h (sese): Add region_basic_blocks pointer set to
369         structure and initialize at the time of defining new scop.
370
371 2008-12-11  Tobias Grosser  <grosser@fim.uni-passau.de>
372
373         * graphite.c (new_graphite_bb): Initialize GBB_STATIC_SCHEDULE.
374         (find_params_in_bb): Do not free data refs.
375         (free_graphite_bb): Add FIXME on disabled free_data_refs.
376
377 2008-12-11  Sebastian Pop  <sebastian.pop@amd.com>
378
379         * graphite.c (struct ivtype_map_elt): New.
380         (debug_ivtype_elt, debug_ivtype_map_1, debug_ivtype_map,
381         new_ivtype_map_elt, ivtype_map_elt_info, eq_ivtype_map_elts,
382         gcc_type_for_cloog_iv): New.
383         (loop_iv_stack_patch_for_consts): Use the type of the induction
384         variable from the original loop, except for the automatically
385         generated loops, i.e., in the case of a strip-mined loop, in
386         which case there is no original loop: in that case just use
387         integer_type_node.
388         (new_graphite_bb): Initialize GBB_CLOOG_IV_TYPES.
389         (free_graphite_bb): Free GBB_CLOOG_IV_TYPES.
390         (clast_name_to_gcc): Accept params to be NULL.
391         (clast_to_gcc_expression): Take an extra parameter for the type.
392         Convert to that type all the expressions built by this function.
393         (gcc_type_for_clast_expr, gcc_type_for_clast_eq): New.
394         (graphite_translate_clast_equation): Compute the type of the
395         clast_equation before translating its LHS and RHS.
396         (clast_get_body_of_loop, gcc_type_for_iv_of_clast_loop): New.
397         (graphite_create_new_loop): Compute the type of the induction
398         variable before translating the lower and upper bounds and before
399         creating the induction variable.
400         (rename_variables_from_edge, rename_phis_end_scop): New.
401         (copy_bb_and_scalar_dependences): Call rename_phis_end_scop.
402         (sese_add_exit_phis_edge): Do not use integer_zero_node.
403         (find_cloog_iv_in_expr, compute_cloog_iv_types_1,
404         compute_cloog_iv_types): New.
405         (gloog): Call compute_cloog_iv_types before starting the
406         translation of the clast.
407
408         * graphite.h (struct graphite_bb): New field cloog_iv_types.
409         (GBB_CLOOG_IV_TYPES): New.
410         (debug_ivtype_map): Declared.
411         (oldiv_for_loop): New.
412
413 2008-12-10  Tobias Grosser  <grosser@fim.uni-passau.de>
414
415         PR middle-end/38459
416         * graphite.c (new_scop): Initialize SCOP_ADD_PARAMS.
417         (param_index): Assert if parameter is not know after parameter
418         detection.
419         (find_params_in_bb): Detect params directly in GBB_CONDITIONS.
420         (find_scop_parameters): Mark, that we have finished parameter
421         detection.
422         (graphite_transform_loops): Move condition detection before parameter
423         detection.
424         * graphite.h (struct scop): Add SCOP_ADD_PARAMS.
425
426 2008-12-11  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
427
428         PR testsuite/35677
429         * emutls.c (__emutls_get_address): Make sure offset is really zero
430         before initializing the object's offset.
431
432 2008-12-11  Jakub Jelinek  <jakub@redhat.com>
433
434         PR c++/38253
435         * gimplify.c (gimplify_init_constructor): Don't force constructor
436         into memory if there is just one nonzero element.
437
438 2008-12-11  Sebastian Pop  <sebastian.pop@amd.com>
439
440         Fix testsuite/gfortran.dg/graphite/id-4.f90.
441         * graphite.c (scan_tree_for_params): Do not compute the multiplicand
442         when not needed.
443
444 2008-12-11  Sebastian Pop  <sebastian.pop@amd.com>
445
446         * graphite.c (build_scops_1): Initialize open_scop.exit
447         and sinfo.last.
448
449 2008-12-11  Sebastian Pop  <sebastian.pop@amd.com>
450             Jan Sjodin  <jan.sjodin@amd.com>
451             Harsha Jagasia  <harsha.jagasia@amd.com>
452
453         PR middle-end/37852
454         PR middle-end/37883
455         PR middle-end/37928
456         PR middle-end/37980
457         PR middle-end/38038
458         PR middle-end/38039
459         PR middle-end/38073
460         PR middle-end/38083
461         PR middle-end/38125
462
463         * tree-phinodes.c (remove_phi_nodes): New, extracted from...
464         * tree-cfg.c (remove_phi_nodes_and_edges_for_unreachable_block):
465         ... here.
466         * tree-flow.h (remove_phi_nodes, canonicalize_loop_ivs): Declared.
467         * Makefile.in (graphite.o): Depend on value-prof.h.
468         (graphite.o-warn): Removed -Wno-error.
469         * tree-parloops.c (canonicalize_loop_ivs): Allow reduction_list
470         to be a NULL pointer.  Call update_stmt.  Return the newly created
471         cannonical induction variable.
472
473         * graphite.h (debug_rename_map): Declared.  Fix some comments.
474
475         * graphite.c: Reimplement the code generation from graphite to gimple.
476         Include value-prof.h.
477         (loop_iv_stack_get_iv): Do not return NULL for constant substitutions.
478         (get_old_iv_from_ssa_name): Removed.
479         (graphite_stmt_p): New.
480         (new_graphite_bb): Test for useful statements before building a
481         graphite statement for the basic block.
482         (free_graphite_bb): Do not free GBB_DATA_REFS: this is a bug
483         in free_data_ref that calls BITMAP_FREE (DR_VOPS (dr)) without reason.
484         (recompute_all_dominators, graphite_verify,
485         nb_reductions_in_loop, graphite_loop_normal_form): New.
486         (scop_record_loop): Call graphite_loop_normal_form.
487         (build_scop_loop_nests): Iterate over all the blocks of the
488         function instead of relying on the incomplete information from
489         SCOP_BBS.  Return the success of the operation.
490         (find_params_in_bb): Use the data from GBB_DATA_REFS.
491         (add_bb_domains): Removed.
492         (build_loop_iteration_domains): Don't call add_bb_domains.
493         Add the iteration domain only to the basic blocks that have been
494         translated to graphite.
495         (build_scop_conditions_1): Add constraints only if the basic
496         block have been translated to graphite.
497         (build_scop_data_accesses): Completely disabled until data
498         dependence is correctly implemented.
499         (debug_rename_elt, debug_rename_map_1, debug_rename_map): New.
500         (remove_all_edges_1, remove_all_edges): Removed.
501         (get_new_name_from_old_name): New.
502         (graphite_rename_variables_in_stmt): Renamed.
503         rename_variables_in_stmt.  Call get_new_name_from_old_name.
504         Use replace_exp and update_stmt.
505         (is_old_iv): Renamed is_iv.
506         (expand_scalar_variables_stmt): Extra parameter for renaming map.
507         Use replace_exp and update_stmt.
508         (expand_scalar_variables_expr): Same.  Use the map to get the
509         new names for the renaming of induction variables and for the
510         renaming of variables after a basic block has been copied.
511         (expand_scalar_variables): Same.
512         (graphite_rename_variables): Renamed rename_variables.
513         (move_phi_nodes): Removed.
514         (get_false_edge_from_guard_bb): New.
515         (build_iv_mapping): Do not insert the induction variable of a
516         loop in the renaming iv map if the basic block does not belong
517         to that loop.
518         (register_old_new_names, graphite_copy_stmts_from_block,
519         copy_bb_and_scalar_dependences): New.
520         (translate_clast): Heavily reimplemented: copy basic blocks,
521         do not move them.  Finally, in call cleanup_tree_cfg in gloog.
522         At each translation step call graphite_verify ensuring the
523         consistency of the SSA, loops and dominators information.
524         (collect_virtual_phis, find_vdef_for_var_in_bb,
525         find_vdef_for_var_1, find_vdef_for_var,
526         patch_phis_for_virtual_defs): Removed huge hack.
527         (mark_old_loops, remove_dead_loops, skip_phi_defs,
528         collect_scop_exit_phi_args, patch_scop_exit_phi_args,
529         gbb_can_be_ignored, scop_remove_ignoreable_gbbs): Removed.
530         (remove_sese_region, ifsese, if_region_entry, if_region_exit,
531         if_region_get_condition_block, if_region_set_false_region,
532         create_if_region_on_edge, move_sese_in_condition, bb_in_sese_p,
533         sese_find_uses_to_rename_use, sese_find_uses_to_rename_bb,
534         sese_add_exit_phis_edge, sese_add_exit_phis_var,
535         rewrite_into_sese_closed_ssa): New.
536         (gloog): Remove dead code.  Early return if code cannot be
537         generated.  Call cleanup_tree_cfg once the scop has been code
538         generated.
539         (graphite_trans_scop_block, graphite_trans_loop_block): Do not
540         block loops with less than two loops.
541         (graphite_apply_transformations): Remove the call to
542         scop_remove_ignoreable_gbbs.
543         (limit_scops): When build_scop_loop_nests fails, continue on next
544         scop.  Fix open_scop.entry.
545         (graphite_transform_loops): Call recompute_all_dominators: force the
546         recomputation of correct CDI_DOMINATORS and CDI_POST_DOMINATORS.
547         Call initialize_original_copy_tables and free_original_copy_tables
548         to be able to copy basic blocks during code generation.
549         When build_scop_loop_nests fails, continue on next scop.
550         (value_clast): New union.
551         (clast_to_gcc_expression): Fix type cast warning.
552
553 2008-12-10  Richard Guenther  <rguenther@suse.de>
554
555         PR tree-optimization/36792
556         * tree-ssa-pre.c (compute_avail): Handle tcc_comparison like
557         tcc_binary.
558
559 2008-12-10  Daniel Berlin  <dberlin@dberlin.org>
560
561         PR tree-optimization/36792
562         * tree-ssa-pre.c (compute_avail): Don't insert defs into maximal set.
563
564 2008-12-10  Alexandre Oliva  <aoliva@redhat.com>
565
566         PR target/37033
567         * dwarf2out.c (saved_do_cfi_asm): New.
568         (dwarf2out_do_frame): Take it into account.
569         (dwarf2out_d_cfi_asm): Likewise.  Set it when appropriate.
570
571 2008-12-10  Alexandre Oliva  <aoliva@redhat.com>
572
573         PR middle-end/38271
574         * tree-sra.c (sra_build_bf_assignment): Avoid warnings for
575         variables initialized from SRAed bit fields.
576
577 2008-12-10  Martin Guy <martinwguy@yahoo.it>
578
579         PR target/37668
580         * arm.c (arm_size_rtx_costs, case NEG): Don't fall through if the
581         result will be in an FPU register.
582
583 2008-12-10  Eric Botcazou  <ebotcazou@adacore.com>
584
585         PR target/37170
586         PR target/38448
587         * final.c (output_addr_const) <SYMBOL_REF>: Call assemble_external
588         on the associated SYMBOL_REF_DECL node, if any.
589
590 2008-12-09 David Daney <ddaney@caviumnetworks.com>
591
592         * config/mips/sync.md (sync_<optab>_12): Replace
593         MIPS_SYNC_OP_12_NOT_NOP with MIPS_SYNC_OP_12_AND.
594         (sync_old_<optab>_12): Remove third paramater to
595         MIPS_SYNC_OLD_OP_12 macro, replace MIPS_SYNC_OLD_OP_12_NOT_NOP
596         with MIPS_SYNC_OLD_OP_12_AND.
597         (sync_new_<optab>_12): Replace MIPS_SYNC_NEW_OP_12_NOT_NOP
598         with MIPS_SYNC_NEW_OP_12_AND.
599         (sync_nand_12): Replace MIPS_SYNC_OP_12_NOT_NOT with
600         MIPS_SYNC_OP_12_XOR, reduce length attribute to 40.
601         (sync_old_nand_12): Remove third paramater to MIPS_SYNC_OLD_OP_12
602         macro, replace MIPS_SYNC_OLD_OP_12_NOT_NOT with
603         MIPS_SYNC_OLD_OP_12_XOR and reduce length attribute to 40.
604         (sync_new_nand_12): Replace MIPS_SYNC_NEW_OP_12_NOT_NOT with
605         MIPS_SYNC_NEW_OP_12_XOR.
606         * config/mips/mips.h (MIPS_SYNC_OP_12, MIPS_SYNC_OP_12_NOT_NOP,
607         MIPS_SYNC_OP_12_NOT_NOT,MIPS_SYNC_OLD_OP_12_NOT_NOP,
608         MIPS_SYNC_OLD_OP_12_NOT_NOT, MIPS_SYNC_NEW_OP_12,
609         MIPS_SYNC_NEW_OP_12_NOT_NOP, MIPS_SYNC_NEW_OP_12_NOT_NOT,
610         MIPS_SYNC_NAND, MIPS_SYNC_OLD_NAND, MIPS_SYNC_NEW_NAND): Rewritten
611         to implement new __sync_nand semantics.
612         (MIPS_SYNC_OLD_OP_12): Implement new __sync_nand semantics, and
613         remove third parameter.
614         (MIPS_SYNC_OLD_OP_12_NOT_NOP_REG,
615         MIPS_SYNC_OLD_OP_12_NOT_NOT_REG): Removed.
616         (MIPS_SYNC_OP_12_NOT_NOP): Renamed to MIPS_SYNC_OP_12_AND.
617         (MIPS_SYNC_OP_12_NOT_NOT): Renamed to MIPS_SYNC_OP_12_XOR.
618         (MIPS_SYNC_OLD_OP_12_NOT_NOP): Renamed to MIPS_SYNC_OLD_OP_12_AND.
619         (MIPS_SYNC_OLD_OP_12_NOT_NOT): Renamed to MIPS_SYNC_OLD_OP_12_XOR.
620         (MIPS_SYNC_NEW_OP_12_NOT_NOP): Renamed to MIPS_SYNC_NEW_OP_12_AND.
621         (MIPS_SYNC_NEW_OP_12_NOT_NOT): Renamed to MIPS_SYNC_NEW_OP_12_XOR
622
623 2008-12-09  Tobias Grosser  <grosser@fim.uni-passau.de>
624
625         * graphite.c (graphite_transform_loops): Always call find_transform ()
626         in ENABLE_CHECKING.  So we test these code paths, even if we do not
627         generate code.
628
629 2008-12-09  Tobias Grosser  <grosser@fim.uni-passau.de>
630
631         * graphite.c (print_graphite_bb): Fix printing to file != dump_file.
632
633 2008-12-09  Jakub Jelinek  <jakub@redhat.com>
634
635         PR middle-end/38454
636         * function.h (struct function): Add always_inline_functions_inlined.
637         * ipa-inline.c (cgraph_early_inlining): Set it to true.
638         * tree-optimize.c (execute_fixup_cfg): Likewise.
639         * builtins.c (avoid_folding_inline_builtin): New function.
640         (fold_call_expr): Don't optimize always_inline builtins before
641         inlining.
642         (fold_call_stmt): Likewise.
643         (fold_builtin_call_array): Likewise.  Don't call
644         fold_builtin_varargs for BUILT_IN_MD builtins.
645
646         PR tree-optimization/37416
647         * tree-scalar-evolution.c (follow_ssa_edge_in_rhs): Handle NOP_EXPR.
648
649 2008-12-09  Janis Johnson  <janis187@us.ibm.com>
650
651         * doc/sourcebuild.texi (Test Directives): Fix formatting.
652
653 2008-12-09  Vladimir Makarov  <vmakarov@redhat.com>
654
655         * doc/tm.texi (TARGET_IRA_COVER_CLASSES): Modify description.
656
657         * doc/invoke.texi (-fira-region): Describe new option.
658         (-fira-algorithm): Change the values.
659
660         * ira-conflicts.c (build_conflict_bit_table,
661         build_allocno_conflicts): Use ira_reg_classes_intersect_p.
662         (ira_build_conflicts): Use flag flag_ira_region instead of
663         flag_ira_algorithm.  Prohibit usage of callee-saved likely spilled
664         base registers for allocnos crossing calls.
665
666         * flags.h (enum ira_algorithm): Redefine.
667         (enum ira_region): New.
668         (flag_ira_region): New.
669
670         * cfgloopanal.c (estimate_reg_pressure_cost): Use flag_ira_region
671         instead of flag_ira_algorithm.
672
673         * toplev.c (flag_ira_algorithm): Change the initial value.
674         (flag_ira_region): New.
675
676         * ira-int.h (ira_reg_classes_intersect_p,
677         ira_reg_class_super_classes): New.
678
679         * ira-color.c (update_copy_costs): Use
680         ira_reg_classes_intersect_p.  Use right class to find hard reg index.
681         (update_conflict_hard_regno_costs): Ditto.  Add a new parameter.
682         (assign_hard_reg): Ditto.  Pass additional argument to
683         update_conflict_hard_regno_costs.  Do not uncoalesce for priority
684         coloring.
685         (allocno_priorities, setup_allocno_priorities,
686         allocno_priority_compare_func): Move before color_allocnos.
687         (color_allocnos): Add priority coloring.  Use flag flag_ira_region
688         instead of flag_ira_algorithm.
689         (move_spill_restore): Check classes of the same reg allocno from
690         different regions.
691         (update_curr_costs): Use ira_reg_classes_intersect_p.
692         (ira_reassign_conflict_allocnos): Ditto.
693
694         * opts.c (decode_options): Always set up flag_ira.  Set up
695         flag_ira_algorithm.  Warn CB can not be used for architecture.
696         (common_handle_option): Modify code for -fira-algorithm.  Add code
697         to process -fira-region.
698
699         * ira-lives.c (update_allocno_pressure_excess_length): Process
700         superclasses too.
701         (set_allocno_live, clear_allocno_live, mark_reg_live,
702         mark_reg_dead, process_bb_node_lives): Ditto.
703
704         * ira-emit.c (ira_emit): Fix insn codes.
705
706         * ira-build.c (propagate_allocno_info): Use flag flag_ira_region
707         instead of flag_ira_algorithm.
708         (allocno_range_compare_func): Ignore classes for priority coloring.
709         (setup_min_max_conflict_allocno_ids): Ditto.
710         (ira_flattening): Use ira_reg_classes_intersect_p.
711
712         * genpreds.c (write_enum_constraint_num): Output CONSTRAINT__LIMIT.
713
714         * common.opt (fira-algorithm): Modify.
715         (fira-region): New.
716
717         * ira.c (setup_class_hard_regs): Initialize.
718         (setup_cover_and_important_classes): Modify code setting class
719         related info for priority coloring.
720         (setup_class_translate): Ditto.
721         (ira_reg_classes_intersect_p, ira_reg_class_super_classes): New.
722         (setup_reg_class_intersect_union): Rename to
723         setup_reg_class_relations.  Add code for setting up new variables.
724         (find_reg_class_closure): Do not check targetm.ira_cover_classes.
725         (ira): Use flag flag_ira_region instead of flag_ira_algorithm.
726
727         * ira-costs.c (common_classes): New.
728         (print_costs): Use flag flag_ira_region instead of flag_ira_algorithm.
729         (find_allocno_class_costs): Ditto.  Use common_classes.  Translate
730         alt_class.
731         (ira_costs): Allocate/deallocate common_classes.
732
733         * config/m32c/m32.h (REG_ALLOC_ORDER): Add reg 19.
734         (REG_CLASS_CONTENTS, reg_class, REG_CLASS_NAMES): New entries for
735         R02A_REGS.
736
737         * reload1.c (choose_reload_regs): Use MODE_INT for partial ints in
738         smallest_mode_for_size.
739
740 2008-12-10  Ben Elliston  <bje@au.ibm.com>
741
742         * config/rs6000/linux-unwind.h (get_regs): Constify casts.
743
744 2008-12-09  Jan Hubicka  <jh@suse.cz>
745
746         * predict.c (estimate_bb_frequencies): Fix test if profile is present.
747
748 2008-12-09  Jakub Jelinek  <jakub@redhat.com>
749
750         PR tree-optimization/35468
751         * tree-ssa-ccp.c (fold_stmt_r): Don't fold reads from constant
752         string on LHS.
753
754 2008-12-09  Richard Guenther  <rguenther@suse.de>
755
756         PR tree-optimization/38445
757         * tree-ssa-structalias.c (emit_pointer_definition): Only visit
758         names once.
759         (emit_alias_warning): Adjust.
760
761 2008-12-09  Andrew Haley  <aph@redhat.com>
762
763         * fixed-value.c (do_fixed_add): Add comment.
764         * tree-ssa-loop-ivopts.c (iv_ca_cost): Likewise.
765         * builtins.c (fold_builtin_sqrt): Likewise.
766
767 2008-12-09  Kai Tietz  <kai.tietz@onevision.com>
768
769         PR/38366
770         * function.c (aggregate_value_p): Get fntype from CALL_EXPR in any
771         case.
772         * calls.c (nitialize_argument_information): Add fntype argument
773         and use it for calls.promote_function_args.
774         (expand_call): Pass fntype to aggregate_value_p if no fndecl
775         available and pass additional fntype to
776         initialize_argument_information.
777         * config/i386/i386.c (ix86_reg_parm_stack_space): Remove cfun part
778         to get function abi type.
779         (init_cumulative_args): Use for abi kind detection fntype, when no
780         fndecl is available.
781
782 2008-12-09  Andreas Krebbel  <krebbel1@de.ibm.com>
783
784         * config/s390/s390.md (movti, movdi_64, movdi_31,
785         *movsi_zarch, *movhi, *movqi, *mov<mode>_64, *mov<mode>_31,
786         *mov<mode>_64dfp, *mov<mode>_64, *mov<mode>_31, mov<mode>): Remove
787         Q->Q alternative.
788         (Integer->BLKmode splitter): Removed.
789
790 2008-12-08  Uros Bizjak  <ubizjak@gmail.com>
791
792         * config/alpha/alpha.c (alpha_set_memflags): Process memory
793         references in full insn sequence.
794
795 2008-12-09  Jason Merrill  <jason@redhat.com>
796
797         * gimplify.c (gimplify_init_constructor): Revert to using < rather
798         than <= for sparseness test.
799
800         PR c++/38410
801         * gimplify.c (gimplify_init_constructor): Don't write out a static
802         copy of the CONSTRUCTOR for TREE_ADDRESSABLE types or small sparse
803         initializers.
804
805 2008-12-09 Tobias Grosser  <grosser@fim.uni-passau.de>
806
807         PR middle-end/38084
808         Fix testsuite/gfortran.dg/graphite/id-3.f90.
809         * graphite.c (scopdet_basic_block_info): Fix bug that found some
810         regions more than once.
811
812 2008-12-09  Ben Elliston  <bje@au.ibm.com>
813
814         * emutls.c (__emutls_get_address): Prototype.
815         (__emutls_register_common): Likewise.
816
817         * config/dfp-bit.c (DFP_TO_INT): Remove unnecessary cast.
818
819 2008-12-09  Ben Elliston  <bje@au.ibm.com>
820
821         * config/rs6000/darwin-ldouble.c (fmsub): Remove unused variable, v.
822
823 2008-12-08  Steve Ellcey  <sje@cup.hp.com>
824
825         * config/ia64/ia64.md (UNSPECV_GOTO_RECEIVER): New constant.
826         (nonlocal_goto_receiver): New instruction.
827
828 2008-12-08  Jakub Jelinek  <jakub@redhat.com>
829
830         PR c/35443
831         * c-pretty-print.c (pp_c_expression): Handle BIND_EXPR.
832
833         PR c/35442
834         * c-pretty-print.c (pp_c_cast_expression, pp_c_expression): Handle
835         VIEW_CONVERT_EXPR the same as CASE_CONVERT.
836
837 2008-12-08  Richard Henderson  <rth@redhat.com>
838
839         PR 38240
840         * tree.h (TYPE_MODE): Invoke vector_type_mode when needed.
841         (SET_TYPE_MODE): New.
842         * c-decl.c (parser_xref_tag): Use it.
843         (finish_enum): Likewise.
844         * tree.c (build_pointer_type_for_mode): Likewise.
845         (build_reference_type_for_mode, build_index_type): Likewise.
846         (build_range_type, make_vector_type): Likewise.
847         (build_common_tree_nodes_2): Likewise.
848         * stor-layout.c (compute_record_mode): Likewise.
849         (finalize_type_size, layout_type, make_fract_type): Likewise.
850         (make_accum_type, initialize_sizetypes): Likewise.
851         (vector_type_mode): New.
852         * function.c (allocate_struct_function): Call
853         invoke_set_current_function_hook before querying anything else.
854
855         * config/i386/i386.c (ix86_valid_target_attribute_inner_p): Add avx.
856
857 2008-12-08  Luis Machado  <luisgpm@br.ibm.com>
858
859         * alias.c (find_base_term): Synch LO_SUM handling with what
860         find_base_value does.
861
862 2008-12-08  Andrew Haley  <aph@redhat.com>
863             Kamaraju Kusumanchi <raju.mailinglists@gmail.com>
864
865         * gimple.h (gimple_build_try): Fix declaration.
866
867         * builtins.c (fold_builtin_sqrt): Don't use a conditional operator.
868         * fixed-value.c (do_fixed_add): Likewise.
869         * tree-ssa-loop-ivopts.c (iv_ca_cost): Likewise.
870
871 2008-12-08  Jakub Jelinek  <jakub@redhat.com>
872
873         PR middle-end/36802
874         * omp-low.c (use_pointer_for_field): Only call maybe_lookup_decl
875         on parallel and task contexts.
876
877 2008-12-07  Eric Botcazou  <ebotcazou@adacore.com>
878
879         * gimple.c (recalculate_side_effects) <tcc_constant>: New case.
880
881 2008-12-07  Richard Guenther  <rguenther@suse.de>
882
883         PR tree-optimization/38405
884         * tree-vrp.c (simplify_truth_ops_using_ranges): Make sure to
885         not sign-extend truth values.
886
887 2008-12-07  Eric Botcazou  <ebotcazou@adacore.com>
888
889         * tree-sra.c (scalarize_use): Create another temporary with the proper
890         type for signed types in the use_all && !is_output bitfield case.
891
892 2008-12-06  Steven Bosscher  <steven@gcc.gnu.org>
893
894         PR rtl-optimization/36365
895         * df-core.c (df_worklist_dataflow_overeager): Remove.
896         (df_worklist_dataflow): Don't call it, use double-queue only.
897         * params.def (PARAM_DF_DOUBLE_QUQUQ_THRESHOLD_FACTOR): Remove.
898
899 2008-12-06  Jakub Jelinek  <jakub@redhat.com>
900
901         PR middle-end/38428
902         * tree-ssa-operands.c (get_expr_operands) <case BIT_FIELD_REF>: Set
903         gimple_set_has_volatile_ops if the BIT_FIELD_REF is volatile.
904
905 2008-12-07  Ben Elliston  <bje@au.ibm.com>
906
907         * gthr-single.h (__gthread_once): Adjust prototype to match all
908         other gthreads models.
909
910 2008-12-06  Jakub Jelinek  <jakub@redhat.com>
911
912         * config/i386/i386.c (override_options): Use CPU_AMDFAM10
913         instead of PROCESSOR_AMDFAM10 for barcelona's schedule.
914
915         PR middle-end/38422
916         * fold-const.c (fold_unary) <CASE_CONVERT>: Don't convert MULT_EXPR
917         operands to mult_type if it isn't narrower than op0's type.
918
919 2008-12-06  Jan Hubicka  <jh@suse.cz>
920             Jakub Jelinek <jakub@redhat.com>
921
922         PR tree-optimization/38074
923         * cgraphbuild.c (compute_call_stmt_bb_frequency): Fix handling of 0
924         entry frequency.
925         * predict.c (combine_predictions_for_bb): Ignore predictor predicting
926         in both dirrection for first match heuristics.
927         (tree_bb_level_predictions): Disable noreturn heuristic when there
928         is no returning path.
929
930 2008-12-05  Bernd Schmidt  <bernd.schmidt@analog.com>
931
932         PR rtl-optimization/38272
933         * reload1.c (choose_reload_regs): Keep reload_spill_index correct
934         in all cases.
935
936 2008-12-05  Jakub Jelinek  <jakub@redhat.com>
937
938         PR c++/35336
939         * c-pretty-print.c (pp_c_postfix_expression): Handle BIT_FIELD_REF.
940         (pp_c_expression): Likewise.
941
942 2008-12-05  Michael Meissner  <meissner@linux.vnet.ibm.com>
943
944         PR c/38416
945         * c-parser.c (struct c_token): Make pragma_kind 8 bits.
946
947 2008-12-05  Jakub Jelinek  <jakub@redhat.com>
948
949         PR middle-end/37248
950         * fold-const.c (make_bit_field_ref): Change bitpos and bitsize
951         arguments to HOST_WIDE_INT.  If type has different signedness
952         than unsignedp or different precision from bitsize, create
953         the right type for BIT_FIELD_REF and cast to type.
954         (fold_truthop): Change first_bit and end_bit to HOST_WIDE_INT.
955
956         Revert:
957         2008-03-05  Richard Guenther  <rguenther@suse.de>
958         PR c++/35336
959         * fold-const.c (fold_truthop): Remove code generating
960         BIT_FIELD_REFs of structure bases.
961         (fold_binary): Likewise.
962         (make_bit_field_ref): Remove.
963         (optimize_bit_field_compare): Remove.
964         (all_ones_mask_p): Remove.
965
966 2008-12-05  Jakub Jelinek  <jakub@redhat.com>
967
968         * tree-sra.c (sra_explode_bitfield_assignment): Always
969         call unsigned_type_for, if the precision is higher than
970         needed, call build_nonstandard_integer_type.
971
972         PR debug/38367
973         * function.c (assign_parm_find_stack_rtl): If promoted_mode
974         is wider than DECL_MODE, adjust MEM_OFFSET (stack_parm) for
975         big endian.
976
977         PR middle-end/38338
978         * builtins.c (expand_builtin_apply_args): Put before parm_birth_insn
979         only if internal_arg_pointer is a non-virtual pseudo.
980
981 2008-12-05  Joseph Myers  <joseph@codesourcery.com>
982
983         * config/rs6000/rs6000.md (move_from_CR_gt_bit): Enable for
984         TARGET_HARD_FLOAT && !TARGET_FPRS, not TARGET_E500.
985         * config/rs6000/spe.md (e500_cr_ior_compare): Likewise.
986
987 2008-12-05  Jakub Jelinek  <jakub@redhat.com>
988
989         PR tree-optimization/37716
990         * gimplify.c (gimplify_expr): Allow COND_EXPR if
991         gimplify_ctxp->allow_rhs_cond_expr.
992
993 2008-12-05  Uros Bizjak  <ubizjak@gmail.com>
994
995         * config/alpha/alpha.c (alpha_fold_vector_minmax): Create
996         VIEW_CONVERT_EXPR to convert output to long_integer_type_node.
997
998         (alpha_emit_conditional_branch): Do not generate direct branch
999         for UNORDERED comparisons.
1000
1001 2008-12-05  Andreas Schwab  <schwab@suse.de>
1002
1003         * config/rs6000/linux-unwind.h (frob_update_context): Check for
1004         NULL lr.
1005
1006 2008-12-05  Jakub Jelinek  <jakub@redhat.com>
1007
1008         PR c/38408
1009         * fold-const.c (fold_checksum_tree): Change buf type to union
1010         tree_node.
1011
1012 2008-12-05  Sebastian Pop  <sebastian.pop@amd.com>
1013
1014         PR bootstrap/38262
1015         * Makefile.in (LIBS): Remove GMPLIBS, CLOOGLIBS and PPLLIBS.
1016         (BACKENDLIBS): New.
1017         (cc1-dummy, cc1): Add BACKENDLIBS, remove GMPLIBS.
1018
1019 2008-12-05  Ben Elliston  <bje@au.ibm.com>
1020
1021         * c-parser.c (c_parser_enum_specifier): Initialise ident_loc and
1022         comma_loc.
1023         (c_parser_initelt): Initialise des_loc and ellipsis_loc.
1024
1025 2008-12-04  Eric Botcazou  <ebotcazou@adacore.com>
1026             Gary Funck  <gary@intrepid.com>
1027
1028         * cse.c (lookup_as_function): Delete mode frobbing code.
1029         (equiv_constant): Re-implement it there for SUBREGs.
1030
1031 2008-12-04  Richard Guenther  <rguenther@suse.de>
1032
1033         PR middle-end/36509
1034         * Makefile.in (tree-ssa-alias-warnings.o): Remove.
1035         (tree-ssa-structalias.o): Remove errors.h dependency.
1036         (tree-ssa-reassoc.o): Likewise.
1037         * tree-ssa-reassoc.c: Do not include errors.h.
1038         * tree-ssa-alias-warnings.c: Remove.
1039         * tree-ssa-alias.c (compute_may_aliases): Remove call to
1040         strict_aliasing_warning_backend.
1041         * tree-ssa-structalias.c (emit_pointer_definition): New function.
1042         (emit_alias_warning): Likewise.
1043         (set_uids_in_ptset): Warn for clear cases of type-punning.
1044         * tree-inline.c (remap_gimple_op_r): Preserve TREE_NO_WARNING
1045         on INDIRECT_REFs.
1046
1047 2008-12-04  Eric Botcazou  <ebotcazou@adacore.com>
1048
1049         * cse.c (equiv_constant): Fix pasto.
1050
1051 2008-12-04  Nick Clifton  <nickc@redhat.com>
1052
1053         * config/stormy16/stormy16.md: Remove extraneous spaces and quotes.
1054         * config/stormy16/stormy16.c: Remove extraneous spaces and fix up
1055         formatting of quotes.
1056
1057 2008-12-04  Jakub Jelinek  <jakub@redhat.com>
1058
1059         PR middle-end/38371
1060         * fold-const.c (fold_checksum_tree): Allow modification of
1061         TYPE_NEXT_VARIANT.
1062
1063 2008-12-03  Jakub Jelinek  <jakub@redhat.com>
1064
1065         PR middle-end/38360
1066         * tree-ssa-ccp.c (ccp_fold_builtin): Bail out if the builtin doesn't
1067         have the right number of arguments.
1068
1069 2008-12-03  Richard Guenther  <rguenther@suse.de>
1070
1071         PR middle-end/36326
1072         * gimplify.c (is_gimple_mem_or_call_rhs): Remove work-around for
1073         non-BLKmode types.
1074
1075 2008-12-03  Tomas Bily  <tbily@suse.cz>
1076
1077         PR middle-end/38250
1078         * tree-loop-distribution.c (build_size_arg): New function.
1079         (generate_memset_zero): Checks if dr_analyze_innermost succeed.
1080         Reorganized generating of stmts.
1081         * testsuite/gcc.dg/tree-ssa/pr38250.c: New file.
1082         * tree-data-ref.c (dr_analyze_innermost): Returns bool.
1083         Indicate if analysis succeed.
1084         * tree-data-ref.h (dr_analyze_innermost): Returns bool.
1085         * tree-predcom.c (valid_initializer_p, find_looparound_phi):
1086         Uses new definition of dr_analyze_innermost.
1087
1088 2008-12-03  Ben Elliston  <bje@au.ibm.com>
1089
1090         * tree-ssa-pre.c (do_regular_insertion): Initialise edoubleprime.
1091
1092 2008-12-03  Jakub Jelinek  <jakub@redhat.com>
1093
1094         PR tree-optimization/37716
1095         * tree-sra.c (sra_build_assignment): For scalar bitfield SRC construct
1096         all the needed operations as trees and gimplify_assign it to dst.
1097
1098         PR target/37610
1099         * configure.ac (gcc_cv_readelf): Look for readelf.
1100         (gcc_cv_as_cfi_advance_working): Check for working
1101         cfi advances with code alignment factor > 1.
1102         (HAVE_GAS_CFI_DIRECTIVE): Don't define if cfi advances
1103         don't work properly.
1104         * configure: Regenerated.
1105
1106 2008-12-03  Eric Botcazou  <ebotcazou@adacore.com>
1107             Jakub Jelinek  <jakub@redhat.com>
1108             Andrew Pinski  <andrew_pinski@playstation.sony.com>
1109
1110         PR rtl-optimization/38281
1111         * combine.c (distribute_notes): When invoking SET_INSN_DELETED on i2,
1112         set it to NULL_RTX afterwards.
1113
1114         * emit-rtl.c (set_insn_deleted): Fix formatting.
1115
1116 2008-12-02  Richard Sandiford  <rdsandiford@googlemail.com>
1117
1118         * config/mips/mips.c (mips_expand_builtin): Fix the mode of the
1119         error return value.
1120         * config/mips/mips.md (IMOVE32): New mode iterator.
1121         (movsi): Generalize with IMOVE32.
1122         (*movsi_internal): Likewise.
1123         (*mov<mode>_mips16): Likewise.
1124         (*lwxs): Likewise.
1125
1126 2008-12-02  Nathan Sidwell  <nathan@codesourcery.com>
1127             Maxim Kuvyrkov  <maxim@codesourcery.com>
1128
1129         * config/m68k/lb1sf68.asm (PICCALL, PICJUMP): Use GOT instead of
1130         PC-relative addressing when compiling for uclinux PIC.
1131         (__cmpdf_internal, __cmpsf_internal): Hide.
1132         (__cmpdf, __cmpsf): Use PIC call sequence.
1133
1134 2008-12-02  Andreas Tobler  <a.tobler@schweiz.org>
1135             Jack Howarth <howarth@bromo.med.uc.edu>
1136
1137         * config/i386/t-darwin64: Add m32 multilib support.
1138
1139 2008-12-02  Jack Howarth  <howarth@bromo.med.uc.edu>
1140
1141         * testsuite/gcc.dg/darwin-comm.c: Expand to darwin10 and later.
1142
1143 2008-12-02  Jakub Jelinek  <jakub@redhat.com>
1144
1145         PR middle-end/38343
1146         * builtins.c (fold_builtin_memory_op): Convert len to sizetype
1147         before using it in POINTER_PLUS_EXPR.
1148
1149 2008-12-02  Richard Guenther  <rguenther@suse.de>
1150
1151         PR tree-optimization/38359
1152         * fold-const.c (fold_binary): Fold -1 >> x to -1 only for
1153         non-negative x.
1154
1155 2008-12-02  Martin Jambor  <mjambor@suse.cz>
1156
1157         PR middle-end/37861
1158         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Do not check
1159         for INDIRECT_REFs.
1160         (forward_propagate_addr_into_variable_array_index): Check that the
1161         offset is not computed from a MULT_EXPR, use is_gimple_assign rather
1162         than the gimple code directly.
1163
1164 2008-12-02  Ben Elliston  <bje@au.ibm.com>
1165
1166         * config/spu/float_disf.c (__floatdisf): Prototype.
1167         * config/spu/float_unsdisf.c (__float_undisf): Likewise.
1168         * config/spu/float_unssidf.c (__float_unssidf): Constify cast.
1169         * config/spu/float_unsdidf.c (__float_unsdidf): Likewise.
1170
1171 2008-12-02  DJ Delorie  <dj@redhat.com>
1172
1173         * config/stormy16/stormy16.h (INCOMING_FRAME_SP_OFFSET): Negate.
1174         (DWARF_CIE_DATA_ALIGNMENT): Define.
1175
1176         * config/stormy16/stormy16.c (xstormy16_compute_stack_layout):
1177         Invert add/sub for INCOMING_FRAME_SP_OFFSET.
1178         (xstormy16_expand_prologue): Likewise.
1179         (xstormy16_expand_builtin_va_start): Likewise.
1180         (xstormy16_gimplify_va_arg_expr): Likewise.
1181
1182 2008-12-02  Jakub Jelinek  <jakub@redhat.com>
1183
1184         PR middle-end/38343
1185         * builtins.c (expand_builtin_mempcpy_args): Handle COMPOUND_EXPRs
1186         potentially returned from folding memcpy.
1187         (expand_builtin_stpcpy_args): Similarly for folding strcpy.
1188         (fold_builtin_2): Handle BUILT_IN_STPCPY if result is ignored.
1189
1190 2008-12-02  Danny Smith  <dannysmith@users.sourceforge.net>
1191
1192         PR target/38054
1193         * config/i386/winnt.c (i386_pe_encode_section_info): Condition stdcall
1194         decoration of function RTL names here on Ada language.
1195
1196 2008-12-01  Vladimir Makarov  <vmakarov@redhat.com>
1197
1198         PR rtl-optimization/38280
1199         * ira-build.c (loop_is_inside_p, regno_allocno_order_compare_func,
1200         ira_rebuild_regno_allocno_list): New functions.
1201         (regno_allocnos): New static variable.
1202         (remove_unnecessary_allocnos): Allocate/deallocate regno_allocnos.
1203         Call ira_rebuild_regno_allocno_list.
1204
1205 2008-12-01  David Daney  <ddaney@caviumnetworks.com>
1206             Adam Nemet  <anemet@caviumnetworks.com>
1207
1208         * config/mips/linux64.h (DRIVER_SELF_SPECS): Add
1209         LINUX_DRIVER_SELF_SPECS.
1210
1211 2008-12-01  Vladimir Makarov  <vmakarov@redhat.com>
1212
1213         PR rtl-optimization/37514
1214         * reload1.c (reload_as_needed): Invalidate reg_last_reload
1215         from previous insns.
1216
1217 2008-12-01  Jakub Jelinek  <jakub@redhat.com>
1218
1219         PR c++/38348
1220         * c-omp.c (c_finish_omp_for): Only transform pointer
1221         ++ or -- into MODIFY_EXPR if second argument is non-NULL.
1222
1223         PR rtl-optimization/38245
1224         * tree-vrp.c (abs_extent_range): New function.
1225         (extract_range_from_binary_expr): Compute range
1226         for *_DIV_EXPR even if vr1 is VR_VARYING, VR_ANTI_RANGE
1227         or includes zero or if vr1 is VR_RANGE and op0 has some
1228         other range.
1229
1230 2008-12-01  Uros Bizjak  <ubizjak@gmail.com>
1231
1232         PR middle-end/37908
1233         * config/alpha/alpha.c (alpha_split_atomic_op): Properly handle NAND
1234         case by calculating ~(new_reg & val) instead of (~new_reg & val).
1235         * config/alpha/sync.md (sync_nand<mode>): Change insn RTX
1236         to (not:I48MODE (and:I48MODE (...))).
1237         (sync_old_nand<mode>): Ditto.
1238         (sync_new_nand<mode>): Ditto.
1239
1240 2008-12-01  Nick Clifton  <nickc@redhat.com>
1241
1242         * config/stormy16/stormy16.md (CARRY_REG): New constant.
1243         Replace uses of the "y" register class with direct references to
1244         the CARRY_REG register.
1245         * config/stormy16/stormy16.c: Replace clobbers of a BImode scratch
1246         register with clobbers of the carry register.
1247         (xstormy16_secondary_reload_class): Do not return CARRY_REGS.
1248         (xstormy16_split_cbranch): Remove redundant carry parameter.
1249         (xstormy16_expand_arith): Likewise.
1250         * config/stormy16/stormy16.h (enum reg_class): Remove CARRY_REGS.
1251         (IRA_COVER_CLASSES, REG_CLASS_NAMES, REG_CLASS_CONTENTS,
1252         REGNO_REG_CLASS, REG_CLASS_FROM_LETTER): Likewise.
1253         (CARRY_REGNUM): Define.
1254         * config/stormy16/stormy16-protos.h (xstormy16_split_cbranch):
1255         Update prototype.
1256         (xstormy16_expand_arith): Likewise.
1257
1258 2008-12-01  Chen Liqin  <liqin.chen@sunplusct.com>
1259
1260         * config/score/score.h (IRA_COVER_CLASSES): Define.
1261
1262 2008-11-30  Eric Botcazou  <ebotcazou@adacore.com>
1263
1264         PR target/38287
1265         * config/sparc/sparc.md (divsi3 expander): Remove constraints.
1266         (divsi3_sp32): Add new alternative with 'K' for operand #2.
1267         (cmp_sdiv_cc_set): Factor common string.
1268         (udivsi3_sp32): Add new alternative with 'K' for operand #2.
1269         Add TARGET_V9 case.
1270         (cmp_udiv_cc_set): Factor common string.
1271
1272 2008-11-30  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
1273
1274         PR middle-end/38283
1275         * varasm.c (emutls_finish): Fix common registration.
1276
1277 2008-11-29  Jakub Jelinek  <jakub@redhat.com>
1278
1279         PR target/29987
1280         * config/sparc/sol2.h (ASM_OUTPUT_ALIGNED_COMMON): Redefine.
1281
1282 2008-11-29  David Edelsohn  <edelsohn@gnu.org>
1283
1284         * config/rs6000/rs6000.c (rs6000_emit_sync): Remove support for
1285         operand wrapped in NOT.  Emit NAND as (ior (not X) (not Y)).
1286         (rs6000_split_atomic_op): Emit NAND as (ior (not X) (not Y)).
1287         * config/rs6000/sync.md (sync_nand<mode>): Represent NAND in RTL.
1288         Call rs6000_emit_sync with CODE=NOT and unmodified operands.
1289         Ignore sub-word case for now.
1290         (sync_nand<mode>_internal): Represent NAND in RTL.
1291         (sync_old_nand<mode): Same.
1292         (sync_old_name<mode>_internal): Same.
1293         (sync_new_nand<mode>): Same.
1294         (sync_new_nand<mode>_internal): Same.
1295         (sync_boolcshort_internal): Expect NAND.
1296
1297 2008-11-28  Richard Guenther  <rguenther@suse.de>
1298
1299         PR tree-optimization/37955
1300         PR tree-optimization/37742
1301         * tree-vect-transform.c (vectorizable_store): Remove assert for
1302         compatible aliases.
1303         (vectorizable_load): Likewise.
1304
1305 2008-11-27  Richard Guenther  <rguenther@suse.de>
1306
1307         * tree-ssa-structalias.c (intra_create_variable_infos): Make
1308         a constraint for the static chain parameter.
1309
1310 2008-11-27  Bernd Schmidt  <bernd.schmidt@analog.com>
1311
1312         * config/bfin/bfin.opt (micplb): New option.
1313         * config/bfin/linux.h (SUBTARGET_DRIVER_SELF_SPECS): Set it.
1314         * config/bfin/bfin-protos.h (WA_INDIRECT_CALLS,
1315         ENABLE_WA_INDIRECT_CALLS): New macros.
1316         * config/bfin/bfin.c (bfin_cpus): Add WA_INDIRECT_CALLS to
1317         all 54x CPUs.
1318         (indirect_call_p): New function.
1319         (workaround_speculation): Handle anomaly 05-00-0426 when
1320         ENABLE_WA_INDIRECT_CALLS is true.
1321         * config/bfin/bfin.h (TARGET_CPU_CPP_BUILTINS): Define
1322         __WORKAROUND_INDIRECT_CALLS if ENABLE_WA_INDIRECT_CALLS.
1323         * doc/invoke.texi (Blackfin Options): Document -micplb.
1324
1325 2008-11-26  DJ Delorie  <dj@redhat.com>
1326
1327         * config/m32c/mov.md ("extendhipsi2"): New.
1328
1329         * config/m32c/bitops.md (bset_qi): Add memsym_operand predicate.
1330
1331         * config/m32c/bitops.md (andhi3_24, iorhi3_24): Don't prefer HL class.
1332         * config/m32c/mov.md (zero_extendqihi2): Likewise.
1333
1334 2008-11-26  Adam Nemet  <anemet@caviumnetworks.com>
1335
1336         * config/mips/mips.md (clear_hazard): Rename to
1337         clear_hazard_<mode>.  Use mode-specific addition.
1338         (clear_cache): Rename gen_clear_hazard to gen_clear_hazard_si
1339         or gen_clear_hazard_di depending on the size of Pmode.
1340
1341 2008-11-26  DJ Delorie  <dj@redhat.com>
1342
1343         * configure.ac: Test m32c-elf-gas for .loc.
1344         * configure: Likewise.
1345
1346 2008-11-26  Janis Johnson  <janis187@us.ibm.com>
1347
1348         PR testsuite/28870
1349         * doc/sourcebuild.texi (Test Directives): Add dg-timeout and
1350         dg-timeout-factor.
1351
1352 2008-11-26  Uros Bizjak  <ubizjak@gmail.com>
1353
1354         * config/i386/sync.md (memory_barrier_nosse): Disable also for
1355         TARGET_64BIT.  Remove special asm template for TARGET_64BIT case.
1356         (memory_barrier): Do not generate memory_barrier_nosse instruction
1357         for TARGET_64BIT.
1358         * config/i386/sse.md (*sse2_mfence): Also enable for TARGET_64BIT.
1359
1360 2008-11-26  Fredrik Unger  <fred@tree.se>
1361
1362         * config/soft-fp/floatuntisf.c (__floatuntisf): Correct
1363         function name from __floatundisf.
1364         * config/soft-fp/fixdfti.c (__fixdfti): Correct argument type to
1365         DFtype.
1366
1367 2008-11-25  Daniel Berlin  <dberlin@dberlin.org>
1368             Richard Guenther  <rguenther@suse.de>
1369
1370         PR tree-optimization/37869
1371         * tree-ssa-structalias.c (struct constraint_graph): Remove
1372         pt_used and number_incoming members.
1373         (build_pred_graph): Do not allocate them.
1374         (condense_visit): Do not use them.
1375         (label_visit): Likewise.
1376         (free_var_substitution_info): Do not free them.
1377
1378 2008-11-25  Vladimir Makarov  <vmakarov@redhat.com>
1379
1380         * doc/invoke.texi (ira-max-loops-num): Change semantics.
1381
1382         * ira-int.h (struct ira_loop_tree_node): New member to_remove_p.
1383
1384         * ira-color.c (allocno_spill_priority): New function.
1385         (remove_allocno_from_bucket_and_push, push_allocno_to_spill):
1386         Print more info about the spilled allocno.
1387         (push_allocnos_to_stack): Use allocno_spill_priority.  Add more
1388         checks on bad spill.
1389
1390         * ira-build.c (loop_node_to_be_removed_p): Remove.
1391         (loop_compare_func, mark_loops_for_removal): New functions.
1392         (remove_uneccesary_loop_nodes_from_loop_t): Use member
1393         to_remove_p.
1394         (remove_unnecessary_allocnos): Call mark_loops_for_removal.
1395
1396         * ira.c (ira): Don't change flag_ira_algorithm.
1397
1398         * params.def (ira-max-loops-num): Change the value.
1399
1400 2008-11-25  Maxim Kuvyrkov  <maxim@codesourcery.com>
1401
1402         * config/m68k/m68k.md (extendsidi2, extendsidi2_mem): Merge, clean up.
1403         Disable unsupported alternative for ColdFire,
1404         add new alternative that ColdFire can handle.
1405
1406 2008-11-25  Eric Botcazou  <ebotcazou@adacore.com>
1407
1408         * regrename.c (merge_overlapping_regs): Add registers artificially
1409         defined at the top of the basic block to the set of live ones just
1410         before the first insn.
1411
1412 2008-11-25  H.J. Lu  <hongjiu.lu@intel.com>
1413             Joey Ye  <joey.ye@intel.com>
1414
1415         PR middle-end/37843
1416         * config/i386/i386.c (ix86_function_ok_for_sibcall): Return
1417         false if we need to align the outgoing stack.
1418         (ix86_update_stack_boundary): Check parm_stack_boundary.
1419
1420 2008-11-25  Richard Guenther  <rguenther@suse.de>
1421
1422         PR middle-end/38151
1423         PR middle-end/38236
1424         * tree-ssa-alias.c (struct alias_info): Remove written_vars.
1425         Remove dereferenced_ptrs_store and dereferenced_ptrs_load
1426         in favor of dereferenced_ptrs.
1427         (init_alias_info): Adjust.
1428         (delete_alias_info): Likewise.
1429         (compute_flow_insensitive_aliasing): Properly
1430         include all aliased variables.
1431         (update_alias_info_1): Use dereferenced_ptrs.
1432         (setup_pointers_and_addressables): Likewise.
1433         (get_smt_for): Honor ref-all pointers and pointers with known alias
1434         set properly.
1435         * config/i386/i386.c (ix86_gimplify_va_arg): Use ref-all pointers.
1436
1437 2008-11-25  Uros Bizjak  <ubizjak@gmail.com>
1438
1439         PR target/38254
1440         * config/i386/sync.md (memory_barrier_nosse): New insn pattern.
1441         (memory_barrier): Generate memory_barrier_nosse insn for !TARGET_SSE2.
1442
1443 2008-11-24  Maxim Kuvyrkov  <maxim@codesourcery.com>
1444
1445         * config/m68k/m68k.md (cmpdi): Use (scratch) instead of pseudo.
1446
1447 2008-11-24  Richard Sandiford  <rdsandiford@googlemail.com>
1448
1449         * config/mips/mips.h (ASM_OUTPUT_DEBUG_LABEL): Define.
1450
1451 2008-11-24  Maxim Kuvyrkov  <maxim@codesourcery.com>
1452
1453         PR target/35018
1454         * config/m68k/m68k.md (ok_for_coldfire, enabled): New attributes.
1455         (addsi_lshrsi_31): Add ColdFire-friendly alternatives.
1456
1457 2008-11-24  Uros Bizjak  <ubizjak@gmail.com>
1458
1459         * config/i386/i386.md (UNSPECV_CMPXCHG): Rename from
1460         UNSPECV_CMPXCHG_[12].
1461         * config/i386/sync.md: Use UNSPECV_CMPXCHG instead of
1462         UNSPECV_CMPXCHG_[12].
1463
1464         PR target/36793
1465         * config/i386/sync.md (memory_barrier): New expander.
1466
1467 2008-11-24  Jakub Jelinek  <jakub@redhat.com>
1468
1469         PR middle-end/37135
1470         * dse.c (find_shift_sequence): Optimize extraction from a constant.
1471
1472 2008-11-23  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
1473
1474         * pa.c (function_arg): Revert 2008-10-26 change.
1475
1476 2008-11-23  Helge Deller  <deller@gmx.de>
1477
1478         * pa/linux-atomic.c (EBUSY): Define if not _LP64.
1479         (__kernel_cmpxchg): Return -EBUSY if the kernel LWS call
1480         succeeded and lws_ret is not equal to oldval.
1481
1482 2008-11-23  Kaz Kojima  <kkojima@gcc.gnu.org>
1483
1484         * config/sh/sh.md (consttable_4): Call mark_symbol_refs_as_used.
1485
1486 2008-11-22  Andreas Schwab  <schwab@suse.de>
1487
1488         * varasm.c (default_file_start): Suppress ASM_APP_OFF also with
1489         -dA and -dP.
1490
1491 2008-11-22  Adam Nemet  <anemet@caviumnetworks.com>
1492
1493         * config/mips/mips.md (rdhwr): Rename to rdhwr_synci_step_<mode>.
1494         Use constant 1 as the operand.
1495         * config/mips/mips.c (mips_expand_synci_loop): Make INC Pmode.
1496         Rename gen_rdhwr to gen_rdhwr_synci_step_si or
1497         gen_rdhwr_synci_step_di depending on the size of Pmode.
1498
1499 2008-11-22  Uros Bizjak  <ubizjak@gmail.com>
1500
1501         PR target/38222
1502         * config/i386/i386.md (SWI248): New mode iterator.
1503         (SWI32): Remove mode iterator.
1504         (popcount<mode>2): Rename from popcounthi2, popcountsi2 and
1505         popcounthi2 insn patterns. Macroize pattern using SWI248 mode
1506         iterator.  Generate popcnt mnemonic without mode extensions
1507         for Darwin x86 targets.
1508         (*popcount<mode>2_cmp): Ditto.
1509         (*popcountsi2_cmp_zext): Generate popcnt mnemonic without mode
1510         extensions for Darwin x86 targets.
1511
1512 2008-11-22  Eric Botcazou  <ebotcazou@adacore.com>
1513
1514         * config/sparc/sparc.c (TARGET_ASM_OUTPUT_DWARF_DTPREL): Define
1515         only if HAVE_AS_SPARC_UA_PCREL is defined.
1516
1517 2008-11-22  Richard Sandiford  <rdsandiford@googlemail.com>
1518
1519         * ira-costs.c (find_allocno_class_costs): Work out the maximum
1520         allocno_costs value of the classees with the lowest total_costs
1521         value.  Use this to set ALLOCNO_COVER_CLASS_COST here...
1522         (setup_allocno_cover_class_and_costs): ...rather than here.
1523         Use the ALLOCNO_COVER_CLASS_COST for all registers in the
1524         preferred class.
1525
1526 2008-11-22  Jakub Jelinek  <jakub@redhat.com>
1527
1528         PR middle-end/37323
1529         * builtins.c (expand_builtin_apply_args): Emit sequence before
1530         parm_birth_insn instead of after entry_of_function's first insn.
1531
1532         PR middle-end/37316
1533         * function.c (assign_parm_remove_parallels): Pass
1534         data->passed_type as third argument to emit_group_store.
1535
1536         PR target/37170
1537         * final.c (mark_symbol_refs_as_used): New function.
1538         * output.h (mark_symbol_refs_as_used): New prototype.
1539         * config/s390/s390.c (s390_mark_symbol_ref_as_used): Removed.
1540         (s390_output_pool_entry): Use mark_symbol_refs_as_used.
1541         * config/arm/arm.md (consttable_4): Likewise.
1542
1543         PR target/37880
1544         * doc/invoke.texi: Adjust wording of -mcmodel=medium description.
1545
1546 2008-11-21  Jakub Jelinek  <jakub@redhat.com>
1547
1548         PR middle-end/38200
1549         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Only
1550         propagate x = &a into *x = b if conversion from b to a's type is
1551         useless.
1552
1553 2008-11-21  Eric Botcazou  <ebotcazou@adacore.com>
1554
1555         * caller-save.c (insert_one_insn): Take into account REG_INC notes
1556         for the liveness computation of the new insn.
1557
1558 2008-11-21  DJ Delorie  <dj@redhat.com>
1559
1560         * config/stormy16/stormy16.md (movqi_internal, movhi_internal):
1561         Moves to/from below100 space (W) can only use r0-r7.
1562
1563 2008-11-21  Paolo Carlini  <paolo.carlini@oracle.com>
1564
1565         PR other/38214
1566         * doc/invoke.texi (Optimization Options): Fix typo.
1567
1568 2008-11-21  H.J. Lu  <hongjiu.lu@intel.com>
1569             Xuepeng Guo  <xuepeng.guo@intel.com>
1570
1571         * config.gcc (extra_headers): For x86 and x86-64, remove
1572         gmmintrin.h, add immintrin.h and avxintrin.h.
1573
1574         * config/i386/gmmintrin.h: Renamed to ...
1575         * config/i386/avxintrin.h: This.  Issue an error if
1576         _IMMINTRIN_H_INCLUDED is undedined.
1577
1578         * config/i386/immintrin.h: New.
1579
1580 2008-11-21  Jakub Jelinek  <jakub@redhat.com>
1581
1582         PR target/38208
1583         * reload1.c (eliminate_regs_in_insn): For trunc_int_for_mode use
1584         mode of PLUS, not mode of the eliminated register.
1585
1586 2008-11-21  Uros Bizjak  <ubizjak@gmail.com>
1587
1588         * config/i386/mmx.md (mmx_nand<mode>3): Rename to mmx_andnot<mode>3.
1589         * config/i386/sse.md (avx_nand<mode>3): Rename to avx_andnot<mode>3.
1590         (<sse>_nand<mode>3): Rename to <sse>_andnot<mode>3.
1591         (sse2_nand<mode>3): Rename to sse2_andnot<mode>3.
1592         (*sse_nand<mode>3): Rename to *sse_andnot<mode>3.
1593         (*avx_nand<mode>3): Rename to *avx_andnot<mode>3.
1594         (*nand<mode>3): Rename to *andnot<mode>3.
1595         (*nandtf3): rename to *andnottf3.
1596         * config/i386/i386.c (bdesc_args) [IX86_BUILTIN_PANDN]:
1597         Use CODE_FOR_mmx_andnotv2si3.
1598         [IX86_BUILTIN_ANDNPS]: Use CODE_FOR_sse_andnotv4sf3.
1599         [IX86_BUILTIN_ANDNPD]: Use CODE_FOR_sse2_andnotv2df3.
1600         [IX86_BUILTIN_PANDN128]: Use CODE_FOR_sse2_andnotv2di3.
1601         [IX86_BUILTIN_ANDNPS256]: Use CODE_FOR_avx_andnotv8sf3.
1602         [IX86_BUILTIN_ANDNPD256]: Use CODE_FOR_avx_andnotv4df3.
1603
1604 2008-11-21  Uros Bizjak  <ubizjak@gmail.com>
1605
1606         PR middle-end/37908
1607         * config/ia64/ia64.c (ia64_expand_atomic_op): Properly handle NAND
1608         case by calculating ~(new_reg & val) instead of (~new_reg & val).
1609         * config/ia64/sync.md (sync_nand<mode>): Change insn RTX
1610         to (not:IMODE (and:IMODE (...))).
1611         (sync_old_nand<mode>): Ditto.
1612         (sync_new_nand<mode>): Ditto.
1613
1614 2008-11-20  Joseph Myers  <joseph@codesourcery.com>
1615
1616         * config/arm/thumb2.md (thumb2_casesi_internal,
1617         thumb2_casesi_internal_pic): Use earlyclobber for scratch operand 4.
1618
1619 2008-11-20  Andreas Krebbel  <krebbel1@de.ibm.com>
1620
1621         * gcc/config/s390/s390.c (s390_expand_atomic): Adjust QI/HI atomic
1622         nand to the changed 4.4 semantic.
1623
1624 2008-11-20  Jakub Jelinek  <jakub@redhat.com>
1625
1626         PR middle-end/29215
1627         * builtins.c (SLOW_UNALIGNED_ACCESS): Define if not defined.
1628         (fold_builtin_memory_op): Handle even the case where just one
1629         of src and dest is an address of a var decl component, using
1630         TYPE_REF_CAN_ALIAS_ALL pointers.  Remove is_gimple_min_invariant
1631         and readonly_data_expr src check.
1632         * tree-ssa-sccvn.c (DFS): Use clear_and_done_ssa_iter to shut
1633         up warnings.
1634
1635         PR rtl-optimization/36998
1636         * dwarf2out.c (stack_adjust_offset): Add cur_args_size and cur_offset
1637         arguments.  Handle sp = reg and (set (foo) (mem (pre_inc (reg sp)))).
1638         (compute_barrier_args_size_1, dwarf2out_frame_debug_expr): Adjust
1639         stack_adjust_offset callers.
1640         (dwarf2out_stack_adjust): Likewise.  Handle insns in annulled
1641         branches properly.
1642         (compute_barrier_args_size): Handle insns in annulled branches
1643         properly.
1644
1645 2008-11-20  Uros Bizjak  <ubizjak@gmail.com>
1646
1647         PR target/38151
1648         * config/i386/i386.c (classify_argument) [integer mode size <= 64bit]:
1649         Handle cases when integer argument crosses argument register boundary.
1650
1651 2008-11-20  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
1652
1653         PR bootstrap/33100
1654         * config.gcc (i[34567]86-*-solaris2*): Don't include
1655         i386/t-crtstuff here.
1656         Move extra_parts, i386/t-sol2 in tmake_file to libgcc/config.host.
1657         * config/i386/t-sol2: Move to libgcc/config/i386.
1658
1659 2008-11-20  Samuel Thibault  <samuel.thibault@ens-lyon.org>
1660
1661         PR driver/21706
1662         * tlink.c: Include "libiberty.h".
1663         (initial_cwd): Change type into char *.
1664         (tlink_init): Call getpwd instead of getcwd.
1665
1666 2008-11-19  Zdenek Dvorak  <ook@ucw.cz>
1667
1668         PR rtl-optimization/32283
1669         * tree-ssa-loop-niter.c (scev_probably_wraps_p): Use type of the base
1670         of the induction variable to decide whether it may wrap.
1671         * tree-ssa-loop-ivopts.c (rewrite_use_compare): Emit the
1672         initialization of the bound before the loop.
1673         * simplify-rtx.c (simplify_binary_operation_1): Add two
1674         simplifications regarding AND.
1675         (simplify_plus_minus): Only fail if no simplification is possible.
1676         * loop-iv.c (simple_rhs_p): Consider reg + reg and reg << cst simple.
1677
1678 2008-11-20  Jakub Jelinek  <jakub@redhat.com>
1679
1680         PR c++/36631
1681         * gimplify.c (gimplify_call_expr): Defer most of the cannot inline
1682         checking until GIMPLE lowering.
1683         * gimple-low.c (check_call_args): New function.
1684         (lower_stmt) <case GIMPLE_CALL>: Call it.
1685
1686 2008-11-19  Adam Nemet  <anemet@caviumnetworks.com>
1687
1688         * config/mips/mips.c (mips_gimplify_va_arg_expr): Use -rsize
1689         with the same type as the first operand of the AND expression.
1690
1691 2008-11-19  Vladimir Makarov  <vmakarov@redhat.com>
1692
1693         PR bootstrap/37859
1694         * ira-int.h (struct ira_loop_tree_node): New member
1695         entered_from_non_parent_p.
1696
1697         * ira-color.c (print_loop_title): Print loop bbs.
1698
1699         * ira-emit.c (entered_from_non_parent_p,
1700         setup_entered_from_non_parent_p): New functions.
1701         (not_modified_p): Rename to store_can_be_removed_p.  Check there
1702         is no side entries.
1703         (generate_edge_moves): Use store_can_be_removed_p instead of
1704         not_modified_p.
1705         (ira_emit): Call setup_entered_from_non_parent_p.
1706
1707         * ira-build.c (copy_info_to_removed_store_destinations):
1708         Accumulate CALL_FREQ, CALL_CROSSED_NUM, and
1709         ALLOCNO_EXCESS_PRESSURE_POINTS_NUM.
1710         (ira_flattening): Don't CHECK MEM_OPTIMIZED_DEST[_P], always
1711         update all accumulated attributes.
1712
1713 2008-11-19  Vladimir Makarov  <vmakarov@redhat.com>
1714
1715         PR bootstrap/37790
1716         * ira-int.h (ira_copy_allocno_live_range_list,
1717         ira_merge_allocno_live_ranges, ira_allocno_live_ranges_intersect_p,
1718         ira_finish_allocno_live_range_list): New prototypes.
1719         (ira_allocno_live_ranges_intersect_p,
1720         ira_pseudo_live_ranges_intersect_p): Remove.
1721
1722         * ira-conflicts.c (ira_allocno_live_ranges_intersect_p,
1723         ira_pseudo_live_ranges_intersect_p): Rename to
1724         allocnos_have_intersected_live_ranges_p and
1725         pseudos_have_intersected_live_ranges_p.  Move them from here to ...
1726
1727         * ira-color.c: ... here
1728         (coalesced_allocno_conflict_p): Use
1729         allocnos_have_intersected_live_ranges_p.
1730         (coalesced_allocnos_living_at_program_points,
1731         coalesced_allocnos_live_at_points_p,
1732         set_coalesced_allocnos_live_points): Remove.
1733         (slot_coalesced_allocnos_live_ranges,
1734         slot_coalesced_allocno_live_ranges_intersect_p,
1735         setup_slot_coalesced_allocno_live_ranges): New.
1736         (coalesce_spill_slots): Use ranges of coalesced allocnos.
1737         (ira_sort_regnos_for_alter_reg): Use
1738         allocnos_have_intersected_live_ranges_p.
1739         (ira_reuse_stack_slot): Use
1740         pseudos_have_intersected_live_ranges_p.
1741
1742         * global.c (pseudo_for_reload_consideration_p): Check
1743         flag_ira_share_spill_slots too.
1744
1745         * ira-build.c (copy_allocno_live_range_list): Rename to
1746         ira_copy_allocno_live_range_list.  Make it external.
1747         (merge_ranges): Rename to ira_merge_allocno_live_ranges.  Make it
1748         external.
1749         (ira_allocno_live_ranges_intersect_p): New.
1750         (ira_finish_allocno_live_range_list): New.
1751         (finish_allocno): Use it.
1752         (remove_unnecessary_allocnos): Use ira_merge_allocno_live_ranges.
1753         (copy_info_to_removed_store_destinations): Ditto.  Use
1754         ira_copy_allocno_live_range_list.
1755         (ira_flattening): Use ira_merge_allocno_live_ranges.
1756
1757         * ira.c (too_high_register_pressure_p): New function.
1758         (ira): Switch off sharing spill slots if the pressure is too high.
1759
1760 2008-11-19  Richard Guenther  <rguenther@suse.de>
1761
1762         * tree.c (build2_stat): Allow non-POINTER_PLUS_EXPRs with
1763         non-sizetype offsets if their precision matches that of the pointer.
1764         * expr.c (expand_expr_real_1): Always sign-extend the offset
1765         operand of a POINTER_PLUS_EXPR.
1766
1767 2008-11-19  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
1768
1769         * config.gcc: Unobsolete mips-sgi-irix[56]*.
1770         (mips-sgi-irix[56]*): No need to use fixproto.
1771
1772 2008-11-19  Maxim Kuvyrkov  <maxim@codesourcery.com>
1773             Paul Brook  <paul@codesourcery.com>
1774
1775         * config/m68k/lb1sf68.asm: Add GNU-stack annotation to avoid
1776         executable stack.
1777
1778 2008-11-19  Maxim Kuvyrkov  <maxim@codesourcery.com>
1779
1780         * config/m68k/m68k.c (sched_attr_op_type): Handle all CONSTs.
1781
1782 2008-11-19  Razya Ladelsky  <razya@il.ibm.com>
1783
1784         PR target/38156
1785         * tree-parloops.c (loop_parallel_p): NULL vect_dump.
1786         (separate_decls_in_region): Create shared struct even when there
1787         are only reductions.
1788
1789 2008-11-19  Hariharan Sandanagobalane <hariharan@picochip.com>
1790
1791         * config/picochip/picochip.c (headers): Remove an unnecessary
1792         header file.
1793
1794 2008-11-19  Andrew Stubbs  <ams@codesourcery.com>
1795
1796         PR target/36133
1797         * config/m68k/m68k.h (CC_OVERFLOW_UNUSABLE, CC_NO_CARRY): New defines.
1798         * config/m68k/m68k.c (notice_update_cc): Set cc_status properly for
1799         shift instructions.
1800         * config/m68k/m68k.md: Adjust all conditional branches that use the
1801         carry and overflow flags so they understand CC_OVERFLOW_UNUSABLE.
1802
1803 2008-11-18  Uros Bizjak  <ubizjak@gmail.com>
1804
1805         PR target/37362
1806         * config/mips/mips.md (move_doubleword_fpr<mode>): Check that "high"
1807         is a register or zero operand in the correct mode before generating
1808         mtch1 insn or a register operand in the correct mode before generating
1809         mfch1 insn.
1810         (mtch1<mode>): Correct operand 1 predicate to reg_or_0_operand.
1811
1812 2008-11-18  Adam Nemet  <anemet@caviumnetworks.com>
1813
1814         * config.gcc (mips*-sde-elf*): Handle mipsisa64r2*.
1815         (mipsisa64r2-*-elf*, mipsisa64r2el-*-elf*): Add new cases to
1816         mipsisa*-*-elf*.  Handle mipsisa64r2*.
1817         * config/mips/sde.h (LINK_SPEC): Handle -mips64r2.
1818         * config/mips/t-isa3264 (MULTILIB_OPTIONS, MULTILIB_DIRNAMES): Add
1819         mips64r2.
1820         (MULTILIB_EXCLUSIONS): Add mips64r2/mfp64.
1821         * config/mips/t-sde (MULTILIB_OPTIONS, MULTILIB_DIRNAMES): Add
1822         mips64r2.
1823         (MULTILIB_EXCLUSIONS): Add mips64r2/mfp64.  Add mips64r2/mips16.
1824         Fix mips16 if mips64 or mips64r2 are multilib defaults.
1825         * config/mips/t-sdemtk (MULTILIB_OPTIONS, MULTILIB_DIRNAMES): Add
1826         mips64r2.
1827
1828 2008-11-18  Jakub Jelinek  <jakub@redhat.com>
1829
1830         PR target/38130
1831         * config/i386/i386.md (allocate_stack_worker_32,
1832         allocate_stack_worker_64): Don't use match_dup between input and
1833         output operand.
1834         (allocate_stack): Adjust gen_stack_worker_{32,64} caller.
1835         * config/i386/i386.c (ix86_expand_prologue): Likewise.
1836
1837 2008-11-18  Kai Tietz  <kai.tietz@onevision.com>
1838
1839         * config/i386/t-cygming (SHLIB_LINK): Make sure that $(SHLIB_MAP).def
1840         is forced when trying to do a symbol link for it.
1841
1842 2008-11-17  Adam Nemet  <anemet@caviumnetworks.com>
1843
1844         * expmed.c (extract_bit_field_1): Also use a temporary and
1845         convert_extracted_bit_field when the conversion from ext_mode to
1846         the target mode requires explicit truncation.
1847
1848 2008-11-17  Richard Sandiford  <rdsandiford@googlemail.com>
1849
1850         * config/mips/mips.h (REG_ALLOC_ORDER): Put accumulators first.
1851         Tweak formatting.
1852         * config/mips/mips.c (mips_ira_cover_classes): Don't use accumulator
1853         registers when not optimizing.
1854
1855 2008-11-17  Richard Sandiford  <rdsandiford@googlemail.com>
1856
1857         * config/mips/mips.md (*mul_acc_si): Remove middle alternative
1858         and its associated define_split.  Expose the all-d alternative
1859         to the register allocator, but mark it with "?".  Mark the first
1860         alternative with "*?*?".
1861         (*mul_sub_si): Likewise.
1862         (*mul_acc_si_r3900): New pattern.
1863
1864 2008-11-17  Jakub Jelinek  <jakub@redhat.com>
1865
1866         PR middle-end/38140
1867         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): If
1868         propagating x = &a into *x = b, add a cast if not useless
1869         type conversion or don't optimize if another stmt would be
1870         needed.
1871
1872 2008-11-17  Uros Bizjak  <ubizjak@gmail.com>
1873
1874         PR middle-end/37908
1875         * optabs.c (expand_sync_operation): Properly handle NAND case
1876         by calculating ~(t1 & val) instead of (~t1 & val).
1877         * builtins.c (expand_builtin_sync_operation): Warn for changed
1878         semantics in NAND builtins.
1879         * c.opt (Wsync-nand): New warning option.  Describe -Wsync-nand.
1880
1881         * doc/invoke.texi (Warning options): Add Wsync-nand.
1882         * doc/extend.texi (Atomic Builtins) [__sync_fetch_and_nand]: Correct
1883         __sync_fetch_and_nand builtin operation in the example.  Add a note
1884         about changed semantics in GCC 4.4.
1885         [__sync_nand_and_fetch]: Correct __sync_nand_and_fetch builtin
1886         operation in the example.  Add a note about changed semantics in
1887         GCC 4.4.
1888
1889 2008-11-16  Jan Hubicka  <jh@suse.cz>
1890
1891         * cgraph.c (cgraph_function_body_availability): Fix test of externally
1892         visible.
1893
1894 2008-11-16  Joshua Kinard  <kumba@gentoo.org>
1895
1896         * config/mips/mips.h (MIPS_ISA_LEVEL_SPEC): Map -march=r1[0246]000
1897         to -mips4.
1898
1899 2008-11-16  Richard Sandiford  <rdsandiford@googlemail.com>
1900
1901         PR target/38052
1902         * config/mips/mips.c (mips_cfun_call_saved_reg_p)
1903         (mips_cfun_might_clobber_call_saved_reg_p): New functions,
1904         split out from...
1905         (mips_save_reg_p): ...here.  Always consult TARGET_CALL_SAVED_GP
1906         rather than call_really_used_regs when handling $gp.
1907
1908 2008-11-16  Richard Sandiford  <rdsandiford@googlemail.com>
1909
1910         PR target/38052
1911         * config/mips/mips.c (machine_function): Update the comment
1912         above global_pointer.
1913         (mips_global_pointer): Use INVALID_REGNUM rather than 0 to indicate
1914         that a function doesn't need a global pointer.
1915         (mips_current_loadgp_style): Update accordingly.
1916         (mips_restore_gp): Likewise.
1917         (mips_output_cplocal): Likewise.
1918         (mips_expand_prologue): Likewise.
1919
1920 2008-11-16  Eric Botcazou  <ebotcazou@adacore.com>
1921
1922         * config/sparc/sparc.c (function_arg_vector_value): Remove 'base_mode'
1923         parameter.  Use DImode for computing the number of registers.
1924         (function_arg): Adjust for above change.
1925         (function_value): Likewise.
1926
1927 2008-11-15  Zdenek Dvorak  <ook@ucw.cz>
1928
1929         PR tree-optimization/37950
1930         * tree-flow-inline.h (memory_partition): Return NULL when aliases were
1931         not computed for the current function.
1932
1933 2008-11-15  Jakub Jelinek  <jakub@redhat.com>
1934
1935         PR target/38123
1936         * config/i386/i386.c (ix86_gimplify_va_arg): Don't share valist between
1937         gpr and other COMPONENT_REFs.
1938
1939 2008-11-15  Richard Guenther  <rguenther@suse.de>
1940
1941         PR tree-optimization/38051
1942         * tree-ssa-alias.c (update_alias_info_1): Manually find
1943         written variables.
1944
1945 2008-11-15  Joshua Kinard  <kumba@gentoo.org>
1946
1947         * doc/invoke.texi (-mfix-r10000): Document.
1948         * config/mips/mips.opt (mfix-r10000): New option.
1949         * config/mips/mips-protos.h (mips_output_sync_loop): Declare.
1950         * config/mips/mips.h (MIPS_COMPARE_AND_SWAP): Use %?.
1951         (MIPS_COMPARE_AND_SWAP_12): Likewise.
1952         (MIPS_SYNC_OP): Likewise.
1953         (MIPS_SYNC_OP_12): Likewise.
1954         (MIPS_SYNC_OLD_OP_12): Likewise.
1955         (MIPS_SYNC_NEW_OP_12): Likewise.
1956         (MIPS_SYNC_OLD_OP): Likewise.
1957         (MIPS_SYNC_NAND): Likewise.
1958         (MIPS_SYNC_OLD_NAND): Likewise.
1959         (MIPS_SYNC_EXCHANGE): Likewise.
1960         (MIPS_SYNC_EXCHANGE_12): Likewise.
1961         (MIPS_SYNC_NEW_OP): Likewise, using %~ to fill branch-likely
1962         delay slots.
1963         (MIPS_SYNC_NEW_NAND): Likewise.
1964         * config/mips/mips.c (mips_print_operand_punctuation): Handle '~'.
1965         (mips_init_print_operand_punct): Treat '~' as a punctuation character.
1966         (mips_output_sync_loop): New function.
1967         (mips_override_options): Make -march=r10000 imply -mfix-r10000.
1968         Make -mfix-r10000 require branch-likely instructions.
1969         * config/mips/sync.md (sync_compare_and_swap<mode>): Use
1970         mips_output_sync_loop.
1971         (compare_and_swap_12): Likewise.
1972         (sync_add<mode>): Likewise.
1973         (sync_<optab>_12): Likewise.
1974         (sync_old_<optab>_12): Likewise.
1975         (sync_new_<optab>_12): Likewise.
1976         (sync_nand_12): Likewise.
1977         (sync_old_nand_12): Likewise.
1978         (sync_new_nand_12): Likewise.
1979         (sync_sub<mode>): Likewise.
1980         (sync_old_add<mode>): Likewise.
1981         (sync_old_sub<mode>): Likewise.
1982         (sync_new_add<mode>): Likewise.
1983         (sync_new_sub<mode>): Likewise.
1984         (sync_<optab><mode>): Likewise.
1985         (sync_old_<optab><mode>): Likewise.
1986         (sync_new_<optab><mode>): Likewise.
1987         (sync_nand<mode>): Likewise.
1988         (sync_old_nand<mode>): Likewise.
1989         (sync_new_nand<mode>): Likewise.
1990         (sync_lock_test_and_set<mode>): Likewise.
1991         (test_and_set_12): Likewise.
1992
1993 2008-11-15  Eric Botcazou  <ebotcazou@adacore.com>
1994
1995         * gcc.c (cc1_options): Fix comment.
1996
1997 2008-11-15  Jakub Jelinek  <jakub@redhat.com>
1998
1999         PR c++/37561
2000         * c-typeck.c (build_unary_op): Don't call get_unwidened.  Use
2001         argtype instead of result_type.
2002
2003 2008-11-14  Adam Nemet  <anemet@caviumnetworks.com>
2004
2005         * ira-int.h (struct ira_loop_tree_node): Improve comments for
2006         subloop_next/next and subloops/childen fields.
2007
2008 2008-11-14  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
2009
2010         * config/spu/spu-elf.h (STANDARD_STARTFILE_PREFIX_2): Disable default.
2011         (STANDARD_INCLUDE_DIR): Redefine to "/include".
2012         (LOCAL_INCLUDE_DIR): Undefine.
2013         * config/spu/t-spu-elf (NATIVE_SYSTEM_HEADER_DIR): Define.
2014
2015 2008-11-14  Vladimir Makarov  <vmakarov@redhat.com>
2016
2017         PR rtl-optimization/37397
2018         * ira-int.h (struct ira_allocno): New member bad_spill_p.
2019         (ALLOCNO_BAD_SPILL_P): New macro.
2020
2021         * ira-color.c (push_allocnos_to_stack): Check ALLOCNO_BAD_SPILL_P.
2022
2023         * ira-build.c (ira_create_allocno): Initialize ALLOCNO_BAD_SPILL_P.
2024         (create_cap_allocno, propagate_allocno_info,
2025         remove_unnecessary_allocnos): Set up or update ALLOCNO_BAD_SPILL_P.
2026         (update_bad_spill_attribute): New function.
2027         (ira_build): Call it.
2028
2029         * ira-costs.c (record_reg_classes): Set up ALLOCNO_BAD_SPILL_P.
2030
2031 2008-11-14  Jakub Jelinek  <jakub@redhat.com>
2032
2033         PR tree-optimization/38104
2034         * gimplify.c (gimple_regimplify_operands): Add referenced vars
2035         before calling mark_symbols_for_renaming, not after it.
2036
2037 2008-11-14  Kaz Kojima  <kkojima@gcc.gnu.org>
2038
2039         * config/sh/sh.h (OPTIMIZATION_OPTIONS): Revert last change.
2040         (OVERRIDE_OPTIONS): Likewise.
2041
2042 2008-11-14  Maxim Kuvyrkov  <maxim@codesourcery.com>
2043             Andrew Stubbs  <ams@codesourcery.com>
2044             Gunnar Von Boehn  <gunnar@genesi-usa.com>
2045
2046         PR target/36134
2047         * config/m68k/m68k.md (addsi3_5200): Add a new alternative preferring
2048         the shorter LEA insn over ADD.L where possible.
2049
2050 2008-11-14  Thomas Schwinge  <tschwinge@gnu.org>
2051
2052         * configure.ac (gcc_cv_libc_provides_ssp): Also consider GNU/Hurd
2053         systems, which are assumend to always provide SSP-support in glibc.
2054         Also consider GNU/kFreeBSD, GNU/kNetBSD systems in the `*-*-linux*'
2055         case.
2056         * configure: Regenerate.
2057
2058 2008-11-14  Jakub Jelinek  <jakub@redhat.com>
2059
2060         PR middle-end/36125
2061         * function.c (gimplify_parameters): For callee copies parameters,
2062         move TREE_ADDRESSABLE flag from the PARM_DECL to the local copy.
2063
2064 2008-11-13  Thomas Schwinge  <tschwinge@gnu.org>
2065
2066         PR target/28102
2067         * config.gcc (*-*-gnu*): Move Alpha parts into the `alpha*-*-gnu*',
2068         x86 parts into the `i[34567]86-*-linux*' and parts that are
2069         independent of the processor architecture into the `*-*-linux*' cases.
2070         (*-*-linux*): Consider `linux.opt' only for Linux-based configurations.
2071         * config/i386/gnu.h (GLIBC_DYNAMIC_LINKER): Redefine.
2072         (TARGET_OS_CPP_BUILTINS, LINK_SPEC): Don't redefine.
2073         [TARGET_LIBC_PROVIDES_SSP] (TARGET_THREAD_SSP_OFFSET): Undefine.
2074         * config/gnu.h (NO_IMPLICIT_EXTERN_C): Don't redefine.
2075         (HURD_TARGET_OS_CPP_BUILTINS): Don't define, but instead...
2076         (LINUX_TARGET_OS_CPP_BUILTINS): Redefine.
2077
2078 2008-11-13  Ruan Beihong  <ruanbeihong@gmail.com>
2079
2080         * config/mips/loongson.md (<u>div<mode>3, <u>mod<mode>3): New patterns.
2081         * config/mips/loongson2ef.md (ls2_imult): Handle imul3nc.
2082         (ls2_idiv): Likewise idiv3.
2083         (ls2_prefetch): New reservation.
2084         * config/mips/mips.h (ISA_HAS_PREFETCH): Add TARGET_LOONGSON_2EF.
2085         * config/mips/mips.md (type): Add imul3nc and idiv3.
2086         (length): Handle idiv3.
2087         (any_mod): New code_iterator.
2088         (u): Handle MOD and UMOD.
2089         (mul<mode>3): Generate mul<mode>3_mul3_ls2ef on Loongson targets.
2090         (prefetch): Handle TARGET_LOONGSON_2EF.
2091
2092 2008-11-13  Jakub Jelinek  <jakub@redhat.com>
2093
2094         PR c++/27017
2095         * dwarf2out.c (prune_unused_types_walk_local_classes): New function.
2096         (prune_unused_types_walk): Call it for non-perennial local classes.
2097         Set die_mark to 2 if recursing on children.  If die_mark is 1 on
2098         entry, just set it to 2 and recurse on children, don't walk attributes
2099         again.
2100
2101 2008-11-13  Martin Michlmayr  <tbm@cyrius.com>
2102
2103         * c-common.c (warn_about_parentheses): Add missing whitespace
2104         in warning.
2105
2106 2008-11-13  Paul Brook  <paul@codesourcery.com>
2107
2108         * doc/invoke.texi: Document --fix-cortex-m3.
2109         * config/arm/arm.c (arm_override_options): Set fix_cm3_ldrd if
2110         Cortex-M3 cpu is selected.
2111         (output_move_double): Avoid overlapping base register and first
2112         destination register when fix_cm3_ldrd.
2113         * config/arm/arm.opt: Add mfix-cortex-m3-ldrd.
2114
2115 2008-11-13  Jakub Jelinek  <jakub@redhat.com>
2116
2117         PR bootstrap/38100
2118         * gimple.h (gimple_range_check_failed): Remove prototype.
2119         * gimple.c (gimple_check_failed): Don't check GCC_VERSION
2120         in guarding #if.
2121         (gimple_range_check_failed): Removed.
2122
2123 2008-11-13  Andrew Haley  <aph@redhat.com>
2124
2125         PR bootstrap/38088
2126         * mcf.c (CAP_INFINITY): Use HOST_WIDEST_INT maximum, not GCC specific
2127         __LONG_LONG_MAX__.
2128
2129 2008-11-12  Jakub Jelinek  <jakub@redhat.com>
2130
2131         PR c++/36478
2132         Revert:
2133         2007-05-07  Mike Stump  <mrs@apple.com>
2134         * doc/invoke.texi (Warning Options): Document that -Wempty-body
2135         also checks for and while statements in C++.
2136
2137 2008-11-12  Dodji Seketeli  <dodji@redhat.com>
2138
2139         PR debug/27574
2140         * cgraph.h: New abstract_and_needed member to struct cgraph_node.
2141         * cgraphunit.c (cgraph_analyze_functions): Flag abstract functions
2142         - which clones are reachable - as "abstract and needed".
2143         * cgraph.c (cgraph_release_function_body):  If a node is
2144         "abstract and needed", do not release its DECL_INITIAL() content
2145         that will be needed to emit debug info.
2146
2147 2008-11-12  Steve Ellcey  <sje@cup.hp.com>
2148
2149         PR target/27880
2150         * configure.ac (GCC_CHECK_UNWIND_GETIPINFO): Use this macro
2151         to set HAVE_GETIPINFO.
2152         * aclocal.m4: Include ../config/unwind_ipinfo.m4.
2153         * configure: Regenerate.
2154         * config.in: Regenerate.
2155
2156 2008-11-12  Jack Howarth  <howarth@bromo.med.uc.edu>
2157
2158         PR bootstrap/38010
2159         * gcc/config.gcc: Use darwin9.h on darwin10 as well.
2160
2161 2008-11-12  Jakub Jelinek  <jakub@redhat.com>
2162
2163         Revert:
2164         2008-10-21  Jakub Jelinek  <jakub@redhat.com>
2165         * gimplify.c (gimplify_expr): Drop TREE_OVERFLOW from INTEGER_CSTs.
2166
2167 2008-11-12  Jason Merrill  <jason@redhat.com>
2168
2169         PR c++/38007
2170         * c-common.c (c_common_signed_or_unsigned_type): Remove C++
2171         special casing.
2172
2173 2008-11-12  Anatoly Sokolov  <aesok@post.ru>
2174
2175         * config/avr/avr.c (avr_mcu_t): Add atmega16hvb, atmega32hvb,
2176         atmega4hvd, atmega8hvd, atmega64c1, atmega64m1, atmega16u4 and
2177         atmega32u6 devices.
2178         * config/avr/avr.h (LINK_SPEC, CRT_BINUTILS_SPECS): (Ditto.).
2179         * config/avr/t-avr (MULTILIB_MATCHES): (Ditto.).
2180
2181 2008-11-12  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
2182
2183         * gcc/config/s390/s390.h (INITIAL_FRAME_ADDRESS_RTX): Remove
2184         packed-stack special handling.
2185         (FRAME_ADDR_RTX): Add definition.
2186
2187 2008-11-12  Jakub Jelinek  <jakub@redhat.com>
2188
2189         PR target/35366
2190         * fold-const.c (native_encode_string): New function.
2191         (native_encode_expr): Use it for STRING_CST.
2192
2193 2008-11-12  DJ Delorie  <dj@redhat.com>
2194
2195         * config/m32c/cond.md (cond_to_int peephole2): Don't eliminate the
2196         insns if the intermediate value will be used later.
2197
2198 2008-11-12  Andreas Schwab  <schwab@suse.de>
2199
2200         * config/m68k/m68k.c (print_operand): Mask off extra extension
2201         bits when writing out the representation of real values.
2202
2203 2008-11-12  Ira Rosen  <irar@il.ibm.com>
2204
2205         PR tree-optimization/38079
2206         * tree-vect-analyze.c (vect_analyze_data_refs): Replace dump_file
2207         with vect_dump.
2208
2209 2008-11-12  Jakub Jelinek  <jakub@redhat.com>
2210
2211         PR c++/35334
2212         * c-pretty-print.c (pp_c_complex_expr): New function.
2213         (pp_c_postfix_expression) <case COMPLEX_EXPR>: Call it.
2214
2215         PR target/35366
2216         * expr.c (expand_expr_addr_expr_1): If EXP needs bigger alignment
2217         than INNER and INNER is a constant, forcibly align INNER as much
2218         as needed.
2219
2220 2008-11-11  Richard Sandiford  <rdsandiford@googlemail.com>
2221
2222         * cse.c (fold_rtx): Remove redundant gen_rtx_CONST.
2223
2224 2008-11-11  Richard Sandiford  <rdsandiford@googlemail.com>
2225
2226         PR rtl-optimization/37363
2227         * simplify-rtx.c (simplify_plus_minus): Don't create
2228         (const (minus ...)) expresisons.
2229
2230 2008-11-11  Eric Botcazou  <ebotcazou@adacore.com>
2231
2232         * ira-lives.c (process_bb_node_lives): Restore EH_RETURN_DATA_REGNO
2233         handling.
2234
2235 2008-11-10  Catherine Moore  <clm@codesourcery.com>
2236
2237         * config.gcc (mips64vrel-*-elf*): Include the tm_file
2238         prior to vr.h.
2239         * config/mips/linux.h (LINUX_DRIVER_SELF_SPECS): New.
2240         (BASE_DRIVER_SELF_SPECS): Remove.
2241         (DRIVER_SELF_SPECS): New definition.
2242         * config/mips/elfoabi.h: (DRIVER_SELF_SPECS): Include
2243         BASE_DRIVER_SELF_SPECS.
2244         * config/mips/sde.h: Likewise.
2245         * config/mips/iris6.h: Likewise.
2246         * config/mips/vr.h: Likewise.
2247         * config/mips/mips.h (BASE_DRIVER_SELF_SPECS): New.
2248
2249 2008-11-10  Vladimir Makarov  <vmakarov@redhat.com>
2250
2251         PR rtl-optimizations/37948
2252         * ira-int.h (struct ira_allocno_copy): New member constraint_p.
2253         (ira_create_copy, ira_add_allocno_copy): New parameter.
2254
2255         * ira-conflicts.c (process_regs_for_copy): New parameter.  Pass it
2256         to ira_add_allocno_copy.
2257         (process_reg_shuffles, add_insn_allocno_copies): Pass a new
2258         parameter to process_regs_for_copy.
2259         (propagate_copies): Pass a new parameter to ira_add_allocno_copy.
2260         Fix typo in passing second allocno to ira_add_allocno_copy.
2261
2262         * ira-color.c (update_conflict_hard_regno_costs): Use head of
2263         coalesced allocnos list.
2264         (assign_hard_reg): Ditto.  Check that assigned allocnos are not in
2265         the graph.
2266         (add_ira_allocno_to_bucket): Rename to add_allocno_to_bucket.
2267         (add_ira_allocno_to_ordered_bucket): Rename to
2268         add_allocno_to_ordered_bucket.
2269         (push_ira_allocno_to_stack): Rename to push_allocno_to_stack.  Use
2270         head of coalesced allocnos list.
2271         (push_allocnos_to_stack): Remove calculation of ALLOCNO_TEMP.
2272         Check that it is aready calculated.
2273         (push_ira_allocno_to_spill): Rename to push_ira_allocno_to_spill.
2274         (setup_allocno_left_conflicts_num): Use head of coalesced allocnos
2275         list.
2276         (coalesce_allocnos): Do extended coalescing too.
2277
2278         * ira-emit.c (add_range_and_copies_from_move_list): Pass a new
2279         parameter to ira_add_allocno_copy.
2280
2281         * ira-build.c (ira_create_copy, ira_add_allocno_copy): Add a new
2282         parameter.
2283         (print_copy): Print copy origination too.
2284
2285         * ira-costs.c (scan_one_insn): Use alloc_pref for load from
2286         equivalent memory.
2287
2288 2008-11-10  Kaz Kojima  <kkojima@gcc.gnu.org>
2289
2290         PR rtl-optimization/37514
2291         * config/sh/sh.h (OPTIMIZATION_OPTIONS): Set
2292         flag_ira_share_spill_slots to 2 if it's already non-zero.
2293         (OVERRIDE_OPTIONS): Clear flag_ira_share_spill_slots if
2294         flag_ira_share_spill_slots is 2.
2295
2296 2008-11-10  Kevin Buettner  <kevinb@redhat.com>
2297
2298         * config/m32c/prologue.md (prologue_enter_16): Set FB to SP - 2.
2299         (prologue_enter_32): Set FB to SP - 4.
2300
2301 2008-11-10  DJ Delorie  <dj@redhat.com>
2302
2303         * config/m32c/m32c.c (m32c_const_ok_for_constraint_p): Add ImB
2304         constraint for single-bit-clear in lower byte of HI constant, vs
2305         Imb which just ignores the upper byte.
2306         * config/m32c/predicates.md (m32c_1mask8_operand): Use it.
2307         * config/m32c/bitops.md (andhi3_16, andhi3_24): Use it.
2308         (iorhi3_16): Check for single bit set, not single bit clear.
2309
2310 2008-11-10  Janis Johnson  <janis187@us.ibm.com>
2311
2312         * doc/sourcebuild.texi (Torture Tests): Fix formatting for bullets.
2313
2314         * doc/sourcebuild.texi (Torture Tests): Fix formatting in example.
2315
2316 2008-11-10  Eric Botcazou  <ebotcazou@adacore.com>
2317
2318         * calls.c (store_unaligned_arguments_into_pseudos): Deal only with
2319         values living in memory and use more precise alignment information.
2320
2321 2008-11-10  Jakub Jelinek  <jakub@redhat.com>
2322
2323         PR middle-end/35314
2324         * tree-mudflap.c (mf_build_check_statement_for): Split then_block
2325         after __mf_check call if the call must end a bb.
2326
2327 2008-11-10  Ralph Loader  <suckfish@ihug.co.nz>
2328
2329         PR middle-end/37807
2330         PR middle-end/37809
2331         * combine.c (force_to_mode): Do not process vector types.
2332
2333         * rtlanal.c (nonzero_bits1): Do not process vector types.
2334         (num_sign_bit_copies1): Likewise.
2335
2336 2008-11-09  Thomas Schwinge  <tschwinge@gnu.org>
2337
2338         * config/i386/gnu.h: Add copyright and licensing header.
2339         * config/gnu.h: Likewise.
2340
2341 2008-11-07  Andrew Pinski  <andrew_pinski@playstation.sony.com>
2342
2343         * fwprop.c (fwprop_done): Call df_remove_problem.
2344
2345 2008-11-07  Sebastian Pop  <sebastian.pop@amd.com>
2346
2347         PR middle-end/37379
2348         * tree-scalar-evolution.c (instantiate_scev_1): Return
2349         chrec_dont_know for VL_EXP_CLASS_P.
2350
2351 2008-11-06  Uros Bizjak  <ubizjak@gmail.com>
2352
2353         * reg-stack.c (reg_to_stack): Add missing braces in memset
2354         size calculation.
2355
2356 2008-11-06  Andrew Stubbs  <ams@codesourcery.com>
2357
2358         * config/arm/bpabi.h (PROFILE_HOOK): New undef.
2359         (NO_PROFILE_COUNTERS): New define.
2360
2361 2008-11-06  David Edelsohn  <edelsohn@gnu.org>
2362
2363         PR target/26397
2364         * config/rs6000/aix.h (LIBSTDCXX_STATIC): Define.
2365
2366 2008-11-06  Kazu Hirata  <kazu@codesourcery.com>
2367
2368         PR target/35574
2369         * config/sparc/constraints.md (D): New.
2370         * config/sparc/predicates.md (const_double_or_vector_operand): New.
2371         * config/sparc/sparc.c (sparc_extra_constraint_check): Handle the
2372         'D' constraint.
2373         * config/sparc/sparc.md (*movdf_insn_sp32_v9, *movdf_insn_sp64):
2374         Use the 'D' constraint in addition to 'F' in some alternatives.
2375         (DF splitter): Generalize for V64mode.
2376         * doc/md.texi (SPARC): Document the 'D' constraint.
2377
2378 2008-11-06  Uros Bizjak  <ubizjak@gmail.com>
2379
2380         * reg-stack.c (reg_to_stack): Generate +QNaN using real_nan.
2381
2382 2008-11-06  Ben Elliston  <bje@au.ibm.com>
2383
2384         * gcc.c: Remove ancient comment about a bug in Sun cc.
2385
2386 2008-11-05  Janis Johnson  <janis187@us.ibm.com>
2387
2388         * doc/sourcebuild.texi (Torture Tests): Add ADDITIONAL_TORTURE_OPTIONS.
2389
2390 2008-11-06  Ben Elliston  <bje@au.ibm.com>
2391
2392         * config/rs6000/rs6000.c (rs6000_override_options): Comment fix.
2393
2394 2008-11-06  Ben Elliston  <bje@au.ibm.com>
2395
2396         * config/rs6000/rs6000.opt (mwarn-cell-microcode): Improve option
2397         description.
2398
2399 2008-11-05  Hans-Peter Nilsson  <hp@axis.com>
2400
2401         PR target/38016
2402         * config/cris/cris.c (cris_order_for_addsi3): Test for !REG_P, not
2403         just MEM_P.
2404
2405 2008-11-05  Martin Jambor  <mjambor@suse.cz>
2406
2407         PR middle-end/37861
2408         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Don't turn
2409         pointer arithmetics into array_ref if the array is accessed
2410         through an indirect_ref.
2411
2412 2008-11-05  Richard Guenther  <rguenther@suse.de>
2413
2414         PR middle-end/37742
2415         * tree-ssa.c (useless_type_conversion_p_1): Check different restrict
2416         qualified pointer conversion before stripping qualifiers.
2417         * gimplify.c (create_tmp_from_val): Use correctly qualified type.
2418         * tree-flow.h (may_propagate_address_into_dereference): Declare.
2419         * tree-ssa-ccp.c (may_propagate_address_into_dereference): New
2420         function.
2421         (ccp_fold): Use it.
2422         * tree-ssa-forwprop.c (rhs_to_tree): Remove useless conversions,
2423         properly canonicalize binary ops.
2424         (forward_propagate_addr_expr_1): Use
2425         may_propagate_address_into_dereference.
2426
2427 2008-11-05  Uros Bizjak  <ubizjak@gmail.com>
2428
2429         PR middle-end/37286
2430         * reg-stack.c (subst_stack_regs_pat) [MINUS, DIV, MULT, PLUS]:
2431         Initialize uninitialized input registers with a NaN.
2432
2433 2008-11-05  Tobias Grosser  <grosser@fim.uni-passau.de>
2434
2435         PR middle-end/37833
2436
2437         * graphite.c (scan_tree_for_params): Add POINTER_PLUS_EXPR.
2438
2439 2008-11-05  Tobias Grosser  <grosser@fim.uni-passau.de>
2440
2441         PR middle-end/37943
2442
2443         * graphite.c (scopdet_basic_block_info): Fix loops with multiple
2444         exits and conditions.
2445         * testsuite/gcc.dg/graphite/pr37943.c: New.
2446
2447 2008-11-04  Jakub Jelinek  <jakub@redhat.com>
2448             Andrew Pinski  <andrew_pinski@playstation.sony.com>
2449
2450         PR c/35430
2451         * c-common.c (warn_for_sign_compare): For complex result_type
2452         use component's type.
2453
2454 2008-11-04  Jakub Jelinek  <jakuB@redhat.com>
2455
2456         * print-tree.c (print_node): Use code instead of TREE_CODE (node).
2457
2458         * print-tree.c (print_node): Don't print DECL_INITIAL
2459         for PARM_DECL.
2460
2461         PR c/37106
2462         * c-common.c (parse_optimize_options): Save and restore
2463         flag_strict_aliasing around decode_options call.
2464
2465 2008-11-04  Uros Bizjak  <ubizjak@gmail.com>
2466
2467         * config/i386/driver-i386.c (enum vendor_signatures): New enum.
2468         (host_detect_local_cpu): Use it instead of casted strings to
2469         compare vendor signatures.
2470
2471 2008-11-03  Mikael Pettersson  <mikpe@it.uu.se>
2472
2473         PR target/37989
2474         * config/i386/mingw32.h (REAL_LIBGCC_SPEC): Only add libgcc_s.a
2475         or libgcc_eh.a to spec if ENABLE_SHARED_LIBGCC.
2476
2477 2008-11-03  Catherine Moore  <clm@codesourcery.com>
2478
2479         * config/mips.c (mips_conditional_register_usage):  Handle the
2480         DSP control register.
2481         * doc/extend.texi: Document the DSP control register.
2482
2483 2008-11-03  Steve Ellcey <sje@cup.hp.com>
2484             Jakub Jelinek  <jakub@redhat.com>
2485
2486         * omp-low.c (expand_omp_for_generic): If iter_type has different
2487         precision than type and type is a pointer type, cast n1 and n2
2488         first to an integer type with the same precision as pointers
2489         and only afterwards to iter_type.
2490
2491 2008-11-03  Richard Sandiford  <rdsandiford@googlemail.com>
2492
2493         * config/arm/arm.md (UNSPEC_PIC_BASE): Update documentation.
2494         (UNSPEC_GOTSYM_OFF): New unspec.
2495         (pic_add_dot_plus_four): Simplify the UNSPEC_PIC_BASE operands.
2496         (pic_add_dot_plus_eight): Likewise.
2497         (tls_load_dot_plus_eight): Likewise.  Update peephole2.
2498         * config/arm/thumb2.md (pic_load_dot_plus_four): Simplify the
2499         UNSPEC_PIC_BASE operands.
2500         * config/arm/arm.c (arm_load_pic_register): Use UNSPEC_GOTSYM_OFF.
2501         (arm_output_addr_const_extra): Handle it.
2502
2503 2008-11-03  Eric Botcazou  <ebotcazou@adacore.com>
2504
2505         * config/i386/i386.c (classify_argument) <ARRAY_TYPE>: Promote partial
2506         integer class to full integer class if the offset is not word-aligned.
2507
2508 2008-11-03  Andrew Pinski  <andrew_pinski@playstation.sony.com>
2509
2510         PR rtl-opt/37782
2511         * loop-doloop.c (doloop_modify): Add from_mode argument that says what
2512         mode count is in.
2513         (doloop_optimize): Update call to doloop_modify.
2514
2515 2008-11-03  Eric Botcazou  <ebotcazou@adacore.com>
2516
2517         * tree-sra.c (bitfield_overlaps_p): Fix oversight.
2518
2519 2008-11-03  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
2520
2521         PR other/37463
2522         * configure.ac (gcc_cv_ld_ro_rw_mix): Move before
2523         gcc_cv_as_cfi_directive.
2524         (gcc_cv_as_cfi_directive) [*-*-solaris*]: Check if linker supports
2525         merging read-only and read-write sections or assembler emits
2526         read-write .eh_frame sections.
2527         * configure: Regenerate.
2528
2529 2008-11-03  Nathan Froyd  <froydnj@codesourcery.com>
2530
2531         Revert:
2532         2008-10-31  Nathan Froyd  <froydnj@codesourcery.com>
2533
2534         * config/rs6000/rs6000.c (no_global_regs_above): Fix precedence
2535         problem.
2536         (rs6000_emit_prologue): Invert logic.
2537         * config/rs6000/rs6000.md (*save_gpregs_<mode>): Use explicit
2538         (reg:P 11) instead of match_operand.
2539         (*save_fpregs_<mode>): Likewise.
2540         (*restore_gpregs_<mode>): Likewise.
2541         (*return_and_restore_gpregs_<mode>): Likewise.
2542         (*return_and_restore_fpregs_<mode>): Likewise.
2543         * config/rs6000/spe.md (*save_gpregs_spe): Use explicit
2544         (reg:P 11) insted of match_operand.
2545         (*restore_gpregs_spe): Likewise.
2546         (*return_and_restore_gpregs_spe): Likewise.
2547
2548 2008-11-03  Harsha Jagasia  <harsha.jagasia@amd.com>
2549
2550         PR tree-optimization/37684
2551         * gcc.dg/graphite/pr37684.c: New.
2552         * graphite.c (exclude_component_ref): New.
2553         (is_simple_operand): Call exclude_component_ref.
2554
2555 2008-11-03  Sebastian Pop  <sebastian.pop@amd.com>
2556
2557         PR tree-optimization/36908
2558         * testsuite/gcc.dg/tree-ssa/pr36908.c: New.
2559         * tree-loop-distribution.c (number_of_rw_in_rdg): New.
2560         (number_of_rw_in_partition): New.
2561         (partition_contains_all_rw): New.
2562         (ldist_gen): Do not distribute when one of the partitions
2563         contains all the memory operations.
2564
2565 2008-11-03  Sebastian Pop  <sebastian.pop@amd.com>
2566
2567         * cfghooks.c (split_block): Set BB_IRREDUCIBLE_LOOP and
2568         EDGE_IRREDUCIBLE_LOOP.
2569
2570 2008-11-03  Bernd Schmidt  <bernd.schmidt@analog.com>
2571
2572         * config/bfin/bfin.c (bfin_optimize_loop): Properly handle case
2573         where we have one entry point in the loop which isn't the head.
2574
2575 2008-11-03  Richard Guenther  <rguenther@suse.de>
2576
2577         PR middle-end/37573
2578         * tree-data-ref.c (split_constant_offset_1): Fix tuplification.
2579
2580 2008-11-03  Jakub Jelinek  <jakub@redhat.com>
2581
2582         PR middle-end/37858
2583         * passes.c (execute_one_pass): Don't look at cfun->curr_properties
2584         for ipa and simple ipa passes.
2585
2586 2008-11-02  Richard Guenther  <rguenther@suse.de>
2587
2588         PR tree-optimization/37542
2589         * tree-ssa-pre.c (fully_constant_expression): Handle more cases.
2590         * tree-ssa-sccvn.c (vn_get_expr_for): Fix typo.
2591         (vn_nary_op_lookup_stmt): Adjust for unary reference trees.
2592         (vn_nary_op_insert_stmt): Likewise.
2593         (visit_use): Likewise.
2594
2595 2008-11-02  Anatoly Sokolov  <aesok@post.ru>
2596
2597         * config/avr/avr.md (UNSPEC_SWAP): Remove constants.
2598         (*swap): Remove.
2599         (rotlqi3, *rotlqi3_4, rotlhi3, *rotlhi3_8,
2600         rotlsi3, *rotlsi3_8, *rotlsi3_16, *rotlsi3_24): New patterns.
2601         (ashlqi3_const4, ashlqi3_const5, ashlqi3_const6, ashlqi3_l_const4,
2602         ashlqi3_l_const5, ashlqi3_l_const6, lshrqi3_const4, lshrqi3_const5,
2603         lshrqi3_const6, lshrqi3_l_const4, lshrqi3_l_const4, lshrqi3_l_const6
2604         peephole2's): Replace unspec with rotate.
2605         * config/avr/avr.c (avr_rtx_costs): Add ROTATE.
2606
2607 2008-11-02  Richard Guenther  <rguenther@suse.de>
2608
2609         PR tree-optimization/37991
2610         * tree-ssa-sccvn.h (copy_vuses_from_stmt): Remove.
2611         * tree-ssa-sccvn.c (copy_vuses_from_stmt): Make static.
2612         (set_ssa_val_to): Print if the value changed.
2613         (simplify_binary_expression): Strip useless conversions.
2614
2615 2008-11-01  Hans-Peter Nilsson  <hp@axis.com>
2616
2617         PR target/37939
2618         * config/cris/cris.c (cris_rtx_costs) <MULT>: Return 0 for an ADDI
2619         operand.
2620
2621 2008-11-01  Richard Guenther  <rguenther@suse.de>
2622
2623         PR middle-end/37976
2624         * builtins.c (fold_builtin_strspn): Return a size_t.
2625         (fold_builtin_strcspn): Likewise.
2626
2627 2008-10-31  Nathan Froyd  <froydnj@codesourcery.com>
2628
2629         * config/rs6000/rs6000.c (rs6000_file_start): Output gnu
2630         attribute for struct return convention.
2631
2632 2008-10-31  Nathan Froyd  <froydnj@codesourcery.com>
2633
2634         * config/rs6000/crtsavres.asm: Really, really delete.
2635
2636 2008-10-31  Nathan Froyd  <froydnj@codesourcery.com>
2637
2638         * config/rs6000/rs6000.c (no_global_regs_above): Fix precedence
2639         problem.
2640         (rs6000_emit_prologue): Invert logic.
2641         * config/rs6000/rs6000.md (*save_gpregs_<mode>): Use explicit
2642         (reg:P 11) instead of match_operand.
2643         (*save_fpregs_<mode>): Likewise.
2644         (*restore_gpregs_<mode>): Likewise.
2645         (*return_and_restore_gpregs_<mode>): Likewise.
2646         (*return_and_restore_fpregs_<mode>): Likewise.
2647         * config/rs6000/spe.md (*save_gpregs_spe): Use explicit
2648         (reg:P 11) insted of match_operand.
2649         (*restore_gpregs_spe): Likewise.
2650         (*return_and_restore_gpregs_spe): Likewise.
2651
2652 2008-10-28  Luis Machado  <luisgpm@br.ibm.com>
2653
2654         * gcc.h (DEFAULT_WORD_SWITCH_TAKES_ARG): Add "dumpbase" to the
2655         list of word switches that take args.
2656
2657 2008-10-30  Jakub Jelinek  <jakub@redhat.com>
2658
2659         * config/s390/s390.c (s390_mark_symbol_ref_as_used): New function.
2660         (s390_output_pool_entry): Call it through for_each_rtx.
2661
2662         PR middle-end/37730
2663         * expr.c (store_constructor): For vectors, if target is a MEM, use
2664         target's MEM_ALIAS_SET instead of elttype alias set.
2665
2666 2008-10-29  Kaz Kojima  <kkojima@gcc.gnu.org>
2667
2668         PR target/37909
2669         * config/sh/sh.c (untangle_mova): Return -1 when NEW_MOVA has
2670         no address.
2671
2672 2008-10-29  David Edelsohn  <edelsohn@gnu.org>
2673
2674         PR target/37878
2675         * config/rs6000/predicates.md (word_offset_memref_operand):
2676         Restructure code and look inside auto-inc/dec addresses.
2677
2678 2008-10-29  Steve Ellcey  <sje@cup.hp.com>
2679
2680         PR target/32277
2681         * libgcov.c ( __gcov_indirect_call_profiler): Check
2682         TARGET_VTABLE_USES_DESCRIPTORS.
2683
2684 2008-10-29  Stefan Schulze Frielinghaus  <xxschulz@de.ibm.com>
2685
2686         * config/spu/spu.h (FRAME_GROWS_DOWNWARD): Define.
2687         (INITIAL_FRAME_POINTER_OFFSET): Remove.
2688         * config/spu/spu.c (spu_initial_elimination_offset): Calculate new
2689         offset if eliminating soft frame pointer.
2690         * config/spu/spu.md (stack_protect_set, stack_protect_test)
2691         (stack_protect_test_si): Add initial machine description
2692         for Stack Smashing Protector
2693
2694 2008-10-29  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
2695
2696         PR 11492
2697         * c-common.c (min_precision): Move to...
2698         * tree.c (tree_int_cst_min_precision): ... to here. Renamed.
2699         * tree.h (tree_int_cst_min_precision): Declare.
2700         * c-common.h (min_precision): Delete declaration.
2701         * fold-const.c (tree_binary_nonnegative_warnv_p): Handle
2702         multiplication of non-negative integer constants.
2703         * c-decl.c (check_bitfield_type_and_width): Rename min_precision to
2704         tree_int_cst_min_precision.
2705         (finish_enum): Likewise.
2706
2707 2008-10-29  Joseph Myers  <joseph@codesourcery.com>
2708
2709         PR middle-end/36578
2710         * convert.c (convert_to_real): Do not optimize conversions of
2711         binary arithmetic operations between binary and decimal
2712         floating-point types.  Consider mode of target type in determining
2713         decimal type for arithmetic.  Unless
2714         flag_unsafe_math_optimizations, do not optimize binary conversions
2715         where this may change rounding behavior.
2716         * real.c (real_can_shorten_arithmetic): New.
2717         * real.h (real_can_shorten_arithmetic): Declare.
2718
2719 2008-10-29  Bernd Schmidt  <bernd.schmidt@analog.com>
2720
2721         * config/bfin/bfin-protos.h (WA_05000257, WA_05000283, WA_05000315,
2722         ENABLE_WA_05000257, ENABLE_WA_05000283, ENABLE_WA_05000315): New.
2723         * config/bfin/bfin.c (bfin_cpus): Add these workaround bits as
2724         appropriate.
2725         (must_save_p): For some workarounds, interrupts need to clobber a
2726         P register.
2727         (expand_prologue_reg_save, expand_epilogue_reg_restore): Save LC0
2728         and LC1 for WA_05000257.
2729         (expand_interrupt_handler_prologue): Add dummy read of CHIPID for
2730         WA_05000283 and WA_05000315.
2731         * config/bfin/bfin.md (UNSPEC_VOLATILE_DUMMY): New constant.
2732         (movbi): Add alternative to set CC to 1; improve code for setting
2733         CC to 0.
2734         (dummy_load): New pattern.
2735
2736 2008-10-29  Jakub Jelinek  <jakub@redhat.com>
2737
2738         PR middle-end/37870
2739         * expmed.c (extract_bit_field_1): If int_mode_for_mode returns
2740         BLKmode for non-memory, convert using a wider MODE_INT mode
2741         or through memory.
2742
2743         PR middle-end/37913
2744         * tree-cfgcleanup.c (split_bbs_on_noreturn_calls): Only split bbs
2745         that haven't been removed yet.
2746
2747 2008-10-29  Bernd Schmidt  <bernd.schmidt@analog.com>
2748
2749         * config/bfin/bfin.c (struct machine_function): New member
2750         has_loopreg_clobber.
2751         (bfin_expand_movmem): Set it when generating memcpy insns.
2752         (n_regs_saved_by_prologue, expand_prologue_reg_save,
2753         expand_epilogue_reg_restore): If we have hardware loops,
2754         memcpy insns (indicated by has_loopreg_clobber) or function
2755         calls, we need to save the loop registers.
2756
2757 2008-10-28  H.J. Lu  <hongjiu.lu@intel.com>
2758
2759         * config/i386/i386.c (core2_cost): Fix typos in comments.
2760
2761 2008-10-28  Jakub Jelinek  <jakub@redhat.com>
2762
2763         PR c/37924
2764         * combine.c (make_compound_operation): Don't call make_extraction with
2765         non-positive length.
2766         (simplify_shift_const_1): Canonicalize count even if complement_p.
2767
2768 2008-10-28  Joseph Myers  <joseph@codesourcery.com>
2769
2770         * convert.c (strip_float_extensions): Do not remove or introduce
2771         conversions between binary and decimal floating-point types.
2772
2773 2008-10-28  Jakub Jelinek  <jakub@redhat.com>
2774
2775         PR middle-end/37931
2776         * fold-const.c (distribute_bit_expr): Convert common, left and
2777         right arguments to type.
2778
2779 2008-10-28  Nick Clifton  <nickc@redhat.com>
2780
2781         * config/mn10300/mn10300.h (CALL_REALLY_USED_REGISTERS): Define.
2782         * config/mn10300/mn10300.c (fp_regs_to_save): Test the
2783         call_really_used_regs array rather than the call_used_regs array.
2784         (mn10300_get_live_callee_saved_regs, expand_prologue,
2785         expand_epilogue, output_tst): Likewise.
2786
2787 2008-10-27  Jakub Jelinek  <jakub@redhat.com>
2788
2789         PR target/37378
2790         * df-scan.c (df_bb_refs_collect): Don't handle EH_USES here.
2791         (df_get_entry_block_def_set): Neither here.
2792         (df_get_regular_block_artificial_uses): Add EH_USES registers.
2793
2794         PR tree-optimization/37879
2795         * predict.c (tree_estimate_probability): Check if last_stmt is
2796         non-NULL before dereferencing it.
2797
2798 2008-10-27  Vladimir Makarov  <vmakarov@redhat.com>
2799
2800         * ira-int.h (ira_allocno): Add member updated_cover_class_cost.
2801         (ALLOCNO_UPDATED_COVER_CLASS_COST): New.
2802         (ira_fast_allocation): Remove the prototype.
2803
2804         * ira-color.c (update_copy_costs, allocno_cost_compare_func,
2805         assign_hard_reg, calculate_allocno_spill_cost): Use updated costs.
2806         (color_pass): Modify the updated costs.
2807         (ira_color): Rename to color.  Make it static.
2808         (ira_fast_allocation): Rename to fast_allocation.  Make it static.
2809         (ira_color): New function.
2810
2811         * ira-conflicts.c (process_regs_for_copy): Propagate hard reg cost
2812         change.
2813
2814         * ira-lives.c (last_call_num, allocno_saved_at_call): New
2815         variables.
2816         (set_allocno_live, clear_allocno_live, mark_ref_live,
2817         mark_ref_dead): Invalidate corresponding element of
2818         allocno_saved_at_call.
2819         (process_bb_node_lives): Increment last_call_num.  Setup
2820         allocno_saved_at_call.  Don't increase ALLOCNO_CALL_FREQ if the
2821         allocno was already saved.
2822         (ira_create_allocno_live_ranges): Initiate last_call_num and
2823         allocno_saved_at_call.
2824
2825         * ira-build.c (ira_create_allocno): Initiate
2826         ALLOCNO_UPDATED_COVER_CLASS_COST.
2827         (create_cap_allocno, propagate_allocno_info,
2828         remove_unnecessary_allocnos): Remove setting updated costs.
2829         (ira_flattening): Set up ALLOCNO_UPDATED_COVER_CLASS_COST.
2830
2831         * ira.c (ira):  Don't call ira_fast_allocation.
2832
2833         * ira-costs.c (setup_allocno_cover_class_and_costs): Don't set up
2834         updated costs.
2835
2836 2008-10-27  Vladimir Makarov  <vmakarov@redhat.com>
2837
2838         PR middle-end/37813
2839         * ira-conflicts.c (process_regs_for_copy): Remove class subset check.
2840
2841         * ira-int.h (ira_hard_regno_cover_class): New.
2842
2843         * ira-lives.c (mark_reg_live, mark_reg_dead,
2844         process_bb_node_lives): Use ira_hard_regno_cover_class.
2845
2846         * ira.c (reg_class ira_hard_regno_cover_class): New global variable.
2847         (setup_hard_regno_cover_class): New function.
2848         (ira_init): Call setup_hard_regno_cover_class.
2849
2850         * ira-costs.c (cost_class_nums): Add comment.
2851         (find_allocno_class_costs): Initiate cost_class_nums.
2852         (setup_allocno_cover_class_and_costs): Check cost_class_nums.
2853
2854 2008-10-27  Vladimir Makarov  <vmakarov@redhat.com>
2855
2856         PR middle-end/37884
2857         * ira-build.c (copy_live_ranges_to_removed_store_destinations):
2858         Rename to copy_info_to_removed_store_destinations.  Propagate
2859         conflict hard regs and register stack attribute.
2860
2861 2008-10-26  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
2862
2863         PR middle-end/37316
2864         * pa.c (function_arg_padding):  Pad complex and vector types
2865         upward in 64-bit runtime.
2866         (function_arg): Use BLKmode for PARALLEL in 64-bit runtime.
2867
2868 2008-10-26  Matthias Klose  <doko@ubuntu.com>
2869
2870         * doc/install.texi: Document requirements on antlr.
2871
2872 2008-10-25  Richard Sandiford  <rdsandiford@googlemail.com>
2873
2874         * config/mips/mips.h (REG_ALLOC_ORDER): Put call-clobbered registers
2875         first.
2876
2877 2008-10-24  Michael Meissner  <meissner@linux.vnet.ibm.com>
2878
2879         PR target/37841
2880         * function.c (locate_and_pad_parm): If FUNCTION_ARG_ADJUST_OFFSET
2881         is defined, use it to modify the constant offset.
2882
2883         * doc/tm.texi (FUNCTION_ARG_OFFSET): Document new macro.
2884
2885         * config/spu/spu.h (FUNCTION_ARG_OFFSET): New macro to move char
2886         and short arguments to the correct location as mandated by the ABI.
2887
2888 2008-10-24  Kaz Kojima  <kkojima@gcc.gnu.org>
2889
2890         PR rtl-optimization/37769
2891         * regmove.c (optimize_reg_copy_2): Update REG_INC note if needed.
2892
2893 2008-10-24  Kaz Kojima  <kkojima@gcc.gnu.org>
2894
2895         * config/sh/t-sh: Use $(MULTILIB_CFLAGS) when compiling to
2896         unwind-dw2-Os-4-200.o.
2897
2898 2008-10-24  Joseph Myers  <joseph@codesourcery.com>
2899
2900         * c-typeck.c (enum impl_conv): Remove ic_argpass_nonproto.
2901         (convert_for_assignment): Remove ic_argpass_nonproto cases.
2902
2903 2008-10-24  Jakub Jelinek  <jakub@redhat.com>
2904
2905         PR tree-optimization/36038
2906         * tree-ssa-loop-ivopts.c (add_old_iv_candidates): For pointer bases
2907         add sizetype IV with initial value zero instead of pointer type.
2908
2909 2008-10-24  Manuel López-Ibáñez  <manu@gcc.gnu.org>
2910
2911         PR c/7543
2912         * value-prof.c (gimple_stringop_fixed_value): Use parentheses
2913         around bit operation.
2914         * profile.c (is_edge_inconsistent): Likewise.
2915         * fold-const.c (truth_value_p): Move from here...
2916         * tree.h (truth_value_p): ... to here.
2917         * c-tree.h (c_expr): Update description of original_code.
2918         * c-typeck.c (parser_build_unary_op): Set original_code.
2919         (parser_build_binary_op): Update call to warn_about_parentheses.
2920         * c-common.c (warn_about_parentheses): Take two additional
2921         arguments of the operands. Use a switch. Quote operators
2922         appropriately. Define macro APPEARS_TO_BE_BOOLEAN_EXPR_P.
2923         Add warning about !x | y and !x & y.
2924         * c-common.h (warn_about_parentheses): Update declaration.
2925
2926 2008-10-24  Jakub Jelinek  <jakub@redhat.com>
2927
2928         * Makefile.in (lang_checks_parallelized, check_gcc_parallelize,
2929         check_p_tool, check_p_vars, check_p_subno, check_p_comma,
2930         check_p_subwork, check_p_numbers, check_p_subdir, check_p_subdirs):
2931         New variables.
2932         (check-subtargets, check-%-subtargets, check-parallel-%): New targets.
2933         (check-%): For test targets listed in lang_checks_parallelized
2934         if -j is used and RUNTESTFLAGS doesn't specify tests to execute,
2935         run the testing in multiple make goals, possibly parallel, and
2936         afterwards run dg-extract-results.sh to merge the sum and log files.
2937
2938 2008-10-24  Richard Sandiford  <rdsandiford@googlemail.com>
2939
2940         * config/mips/mips.c (mips_canonicalize_move_class): New function.
2941         (mips_move_to_gpr_cost): Likewise.
2942         (mips_move_from_gpr_cost): Likewise.
2943         (mips_register_move_cost): Make more fine-grained.
2944
2945 2008-10-23  Tobias Grosser  <grosser@fim.uni-passau.de>
2946
2947         * graphite.c (graphite_apply_transformations): Check for
2948         -fgraphite-identity.
2949         * toplev.c (process_options): Add graphite_identity.
2950         * tree-ssa-loop.c (gate_graphite_transforms): Add graphite_identity.
2951
2952 2008-10-23  Bernd Schmidt  <bernd.schmidt@analog.com>
2953
2954         * config/bfin/bfin.c (bdesc_2arg): Add mulhisill, mulhisilh,
2955         mulhisihl and mulhisihh builtins.
2956
2957         From Jie Zhang  <jie.zhang@analog.com>
2958         * config/bfin/bfin.md (composev2hi): Put operands into vector
2959         with correct order.
2960
2961 2008-10-22  Chao-ying Fu  <fu@mips.com>
2962
2963         * config/mips/mips.opt (msmartmips): Accept -mno-smartmips.
2964
2965 2008-10-22  Bernd Schmidt  <bernd.schmidt@analog.com>
2966
2967         From Mike Frysinger  <michael.frysinger@analog.com>
2968         * config/bfin/bfin-protos.h (bfin_cpu_type): Add BFIN_CPU_BF512,
2969         BFIN_CPU_BF514, BFIN_CPU_BF516, and BFIN_CPU_BF518.
2970         * config/bfin/bfin.c (bfin_cpus[]): Add 0.0 for bf512, bf514, bf516,
2971         and bf518.  Add 0.2 for bf522, bf523, bf524, bf526, and bf527.
2972         Add 0.6 for bf533, bf532, and bf531.  Add 0.5 for bf538 and bf539.
2973         Add 0.2 for bf542, bf544, bf547, bf548, and bf549.
2974         * config/bfin/bfin.h (TARGET_CPU_CPP_BUILTINS): Define __ADSPBF512__
2975         for BFIN_CPU_BF512, __ADSPBF514__ for BFIN_CPU_BF514, __ADSPBF516__
2976         for BFIN_CPU_BF516, and __ADSPBF518__ for BFIN_CPU_BF518.  Define
2977         __ADSPBF51x__ for all of them.
2978         * config/bfin/elf.h (LIB_SPEC): Select proper linker scripts for
2979         -mcpu bf512, bf514, bf516, and bf518.
2980         * config/bfin/t-bfin-elf (MULTILIB_MATCHES): Select bf532-none for
2981         bf512-none, bf514-none, bf516-none, and bf518-none.
2982         * config/bfin/t-bfin-linux (MULTILIB_MATCHES): Likewise.
2983         * config/bfin/t-bfin-uclinux (MULTILIB_MATCHES): Likewise.
2984         * doc/invoke.texi (Blackfin Options): Document that
2985         -mcpu now accepts bf512, bf514, bf516, and bf518.
2986
2987 2008-10-22  Jakub Jelinek  <jakub@redhat.com>
2988
2989         PR middle-end/37882
2990         * fold-const.c (build_range_type): For 1 .. signed_max
2991         range call build_nonstandard_inter_type if signed_type_for
2992         returned a type with bigger precision.
2993
2994 2008-10-22  Richard Guenther  <rguenther@suse.de>
2995
2996         * tree.def (COMPLEX_TYPE): Constrain element type.
2997         * tree.c (build_complex_type): Assert that.
2998         * tree-ssa-structalias.c (could_have_pointers): Complex types
2999         cannot have pointers.
3000
3001 2008-10-22  Manuel López-Ibáñez  <manu@gcc.gnu.org>
3002
3003         PR c/30949
3004         * c-typeck.c (convert_for_assignment): Do not give declaration's
3005         location for builtins. Spell out which type was expected and which
3006         was given.
3007
3008 2008-10-22  Nick Clifton  <nickc@redhat.com>
3009
3010         * config/frv/frv.h (HARD_REGNO_RENAME_OK): Define.  Do not allow
3011         the fdpic register to be a target when running in fdpic mode.
3012
3013 2008-10-22 Rafael Espindola  <espindola@google.com>
3014
3015         * ipa-struct-reorg.c (create_new_alloc_sites): Properly insert the
3016         newly created statements.
3017
3018 2008-10-22  Kaz Kojima  <kkojima@gcc.gnu.org>
3019
3020         PR target/37633
3021         * config/sh/sh.c (sh_hard_regno_mode_ok): New function.
3022         * config/sh/sh.h (HARD_REGNO_MODE_OK): Use it.
3023         * config/sh/sh-protos.h (sh_hard_regno_mode_ok): Declare.
3024
3025 2008-10-22  Jakub Jelinek  <jakub@redhat.com>
3026
3027         PR target/37880
3028         * doc/invoke.texi: Fix spelling of -mlarge-data-threshold option.
3029         Adjust -mcmodel=medium description for 2005-07-31 changes.
3030
3031 2008-10-22  Jan Hubicka  <jh@suse.cz>
3032             Jakub Jelinek  <jakub@redhat.com>
3033
3034         PR middle-end/35853
3035         * doc/invoke.texi: Remove references to obsoleted -d dumps.
3036
3037 2008-10-21  Richard Henderson  <rth@redhat.com>
3038
3039         PR 37815
3040         * emit-rtl.c (get_spill_slot_decl): Export.
3041         * emit-rtl.h (get_spill_slot_decl): Declare.
3042         * var-tracking.c (vt_add_function_parameters): Relax assertion
3043         on the contents of MEM_EXPR in a PARM_DECL to include a spill slot.
3044
3045 2008-10-21  Bob Wilson  <bob.wilson@acm.org>
3046
3047         * var-tracking.c (insn_stack_adjust_offset_pre_post): If insn has a
3048         REG_FRAME_RELATED_EXPR note, examine the pattern from the note instead
3049         of from insn.
3050
3051 2008-10-21  Adam Nemet  <anemet@caviumnetworks.com>
3052
3053         PR middle-end/37669
3054         * tree-ssa-ccp.c (ccp_fold_builtin): Only allow one argument to be
3055         processed by get_maxval_strlen.
3056
3057 2008-10-21  David Edelsohn  <edelsohn@gnu.org>
3058
3059         PR target/35485
3060         * tree.c (get_file_function_name): Copy first_global_object_name.
3061         Centralize call to clean_symbol_name.
3062
3063 2008-10-21  Sandra Loosemore  <sandra@codesourcery.com>
3064
3065         * config.gcc (powerpc-*): Make t-ppcgas imply usegas.h.
3066         * config/svr4.h (SVR4_ASM_SPEC): New.
3067         (ASM_SPEC): Inherit from SVR4_ASM_SPEC.
3068         * config/rs6000/sysv4.h (ASM_SPEC): Inherit from SVR4_ASM_SPEC.
3069
3070         * doc/invoke.texi (Option Summary): Add -T to linker options.
3071         (Link Options): Document -T.
3072
3073 2008-10-21  Jakub Jelinek  <jakub@redhat.com>
3074
3075         * tree-inline.c (tree_inlinable_function_p): Remove tuples
3076         debugging hack.
3077
3078         * gimplify.c (gimplify_expr): Drop TREE_OVERFLOW from INTEGER_CSTs.
3079
3080         PR debug/37020
3081         * c-decl.c (merge_decls): Don't call outlining_inline_function hook.
3082
3083 2008-10-20  Daniel Berlin  <dberlin@dberlin.org>
3084
3085         * tree-ssa-pre.c (insert_into_preds_of_block): Don't rewrite constant
3086         part of expression.
3087
3088 2008-10-20  Tobias Schlüter  <tobi@gcc.gnu.org>
3089
3090         * doc/install.texi: Fix typos in previous patch.
3091
3092 2008-10-19  Tobias Schlüter  <tobi@gcc.gnu.org>
3093
3094         * doc/install.texi: Document in-tree building of gcc and mpfr.
3095
3096 2008-10-19  Richard Guenther  <rguenther@suse.de>
3097
3098         * tree-ssa-alias.c (may_alias_p): Remove bogus shortcut.
3099
3100 2008-10-19  Manuel López-Ibáñez  <manu@gcc.gnu.org>
3101
3102         PR c/30260
3103         * c-decl.c (finish_enum): Convert non-integer enumerators to enum type.
3104         (build_enumerator): Convert enumerators that fit in integer to
3105         integer type.
3106
3107 2008-10-18  Uros Bizjak  <ubizjak@gmail.com>
3108
3109         * config/i386/i386.md (unnamed peephole2): Do not force memory
3110         operands of arith or logical instructions into registers for
3111         non-TARGET_READ_MODIFY targets.
3112
3113         (ffs_cmove): Change operand 0 predicate to register_operand.
3114         Change operand 1 predicate to nonimmediate_operand.
3115         (ffsdi2): Ditto.
3116         (*ffs_no_cmove): Change operand 0 predicate to register_operand.
3117
3118 2008-10-18  Richard Guenther  <rguenther@suse.de>
3119
3120         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Guard
3121         VIEW_CONVERT_EXPR case against invalid gimple.
3122
3123 2008-10-17  Andreas Krebbel  <krebbel1@de.ibm.com>
3124
3125         * c-parser.c (c_parser_binary_expression): Silence the
3126         uninitialized variable warning emitted for binary_loc.
3127
3128 2008-10-16  Daniel Berlin  <dberlin@dberlin.org>
3129
3130         * tree-ssa-pre.c (phi_translate_set): Add constants to phi
3131         translation cache.
3132
3133 2008-10-16  Joseph Myers  <joseph@codesourcery.com>
3134
3135         PR c/33192
3136         * c-typeck.c (build_unary_op): Use omit_one_operand for
3137         IMAGPART_EXPR of real argument.
3138
3139 2008-10-16  Jakub Jelinek  <jakub@redhat.com>
3140
3141         PR tree-optimization/37664
3142         * fold-const.c (fold_binary): When optimizing comparison with
3143         highest or lowest type's value, don't consider TREE_OVERFLOW.
3144
3145 2008-10-16  David Edelsohn  <edelsohn@gnu.org>
3146
3147         PR target/35483
3148         * Makefile.in (coverage.o): Depend on $(TM_P_H).
3149         * coverage.c: Include tm_p.h.
3150         * config/rs6000/x-aix (jc1): Override LDFLAGS.
3151         * config/rs6000/xcoff.h (ASM_GENERATE_INTERNAL_LABEL): Strip
3152         dollar signs from PREFIX.
3153         * config/rs6000/rs6000.c (output_toc): Use RS6000_OUTPUT_BASENAME
3154         instead of manual strip_name_encoding.
3155
3156 2008-10-16  Richard Guenther  <rguenther@suse.de>
3157
3158         PR middle-end/37418
3159         * tree-ssa.c (useless_type_conversion_p_1): Do not treat
3160         volatile qualified functions or methods as relevant.
3161
3162 2008-10-16  Jakub Jelinek  <jakub@redhat.com>
3163
3164         PR tree-optimization/37525
3165         * tree.c (int_fits_type_p): Rewrite using double_int.  Zero extend
3166         sizetype unsigned constants, both in the case of C and bounds.
3167
3168 2008-10-15  Jan Hubicka  <jh@suse.cz>
3169
3170         * ira-emit.c (change_regs): Return false when replacing reg by itself.
3171
3172 2008-10-14  Vladimir Makarov  <vmakarov@redhat.com>
3173
3174         PR target/37633
3175         * ira-costs.c (ira_tune_allocno_costs_and_cover_classes): Check
3176         HARD_REGNO_CALL_PART_CLOBBERED.
3177
3178 2008-10-15  Vladimir Makarov  <vmakarov@redhat.com>
3179
3180         PR middle-end/37535
3181         * ira-lives.c (mark_early_clobbers): Remove.
3182         (make_pseudo_conflict, check_and_make_def_use_conflicts,
3183         check_and_make_def_conflicts,
3184         make_early_clobber_and_input_conflicts,
3185         mark_hard_reg_early_clobbers): New functions.
3186         (process_bb_node_lives): Call
3187         make_early_clobber_and_input_conflicts and
3188         mark_hard_reg_early_clobbers.  Make hard register inputs live again.
3189
3190         * doc/rtl.texi (clobber): Change descriotion of RA behaviour for
3191         early clobbers of pseudo-registers.
3192
3193 2008-10-15  Vladimir Makarov  <vmakarov@redhat.com>
3194
3195         PR middle-end/37674
3196         * ira-build.c (ira_flattening): Recalculate
3197         ALLOCNO_TOTAL_NO_STACK_REG_P and ALLOCNO_TOTAL_CONFLICT_HARD_REGS
3198         from the scratch instead of the propagation.
3199
3200 2008-10-15  Richard Sandiford  <rdsandiford@googlemail.com>
3201
3202         * doc/rtl.texi (const_double): Remove the "addr" operand.
3203         Describe CONST_DOUBLE_* macros under const_double rather
3204         than const_vector.
3205         (const_fixed): Fix the operand description.
3206         (const): Add an @findex directive.
3207         (CONST0_RTX, CONST1_RTX, CONST2_RTX): Move description
3208         after the constant rtl table.
3209         (fix): Combine floating-point and fixed-point descriptions.
3210         Fix hyphenation.
3211         * sched-deps.c (sched_analyze_2): Remove reference to
3212         CONST_DOUBLE_CHAIN.
3213
3214 2008-10-15  Richard Sandiford  <rdsandiford@googlemail.com>
3215
3216         * config/mn10300/mn10300.h (OUTPUT_ADDR_CONST_EXTRA): Handle
3217         UNSPEC_GOTSYM_OFFs.
3218         * config/mn10300/mn10300.c (legitimate_pic_operand_p): Return true
3219         for UNSPEC_GOTSYM_OFFs.
3220         * config/mn10300/mn10300.md (UNSPEC_GOTSYM_OFF): New unspec.
3221         (add_GOT_to_pic_reg): Use it.
3222         * config/mn10300/constraints.md (S): Allow UNSPEC_GOTSYM_OFF.
3223
3224 2008-10-15  Jan Sjodin  <jan.sjodin@amd.com>
3225             Harsha Jagasia  <harsha.jagasia@amd.com>
3226
3227         PR tree-optimization/37485
3228         * graphite.c (gmp_cst_to_tree): Moved.
3229         (iv_stack_entry_is_constant): New.
3230         (iv_stack_entry_is_iv): New.
3231         (loop_iv_stack_push): Renamed to loop_iv_stack_push_iv.
3232         (loop_iv_stack_insert_constant): New.
3233         (loop_iv_stack_pop): Use new datatpype.
3234         (loop_iv_stack_get_iv): Same.
3235         (loop_iv_stack_get_iv_from_name): Same.
3236         (loop_iv_stack_debug): Renamed to debug_loop_iv_stack.
3237         (loop_iv_stack_patch_for_consts): New.
3238         (loop_iv_stack_remove_constants): New.
3239         (graphite_create_new_loop): Use loop_iv_stack_push_iv.
3240         (translate_clast): Call loop_iv_stack_patch_for_consts and
3241         loop_iv_stack_remove_constants.
3242         (gloog): Use new datatype.  Redirect construction edge to end
3243         block to avoid accidental deletion.
3244         * graphite.h (enum iv_stack_entry_kind): New.  Tag for data in
3245         iv stack entry.
3246         (union iv_stack_entry_data): New.  Data in iv stack entry.
3247         (struct iv_stack_entry): New.  Datatype for iv stack entries.
3248
3249 2008-10-15  Sebastian Pop  <sebastian.pop@amd.com>
3250
3251         * tree-data-ref.c (stmt_simple_memref_p): Fix memleak.
3252         * graphite.c (free_scop): Same.
3253         (build_scops): Same.
3254         (free_scattering): New.
3255         (build_cloog_prog): Call free_scattering.
3256         (patch_phis_for_virtual_defs): Fix memleak.
3257         (graphite_trans_bb_strip_mine): Same.
3258         (limit_scops): Same.
3259
3260 2008-10-15  Sebastian Pop  <sebastian.pop@amd.com>
3261             Harsha Jagasia  <harsha.jagasia@amd.com>
3262
3263         PR tree-optimization/37828
3264         * graphite.c (graphite_trans_loop_block): Do not loop block
3265         single nested loops.
3266
3267 2008-10-15  Sebastian Pop  <sebastian.pop@amd.com>
3268
3269         PR tree-optimization/37686
3270         * tree-loop-linear.c (linear_transform_loops): Build a
3271         loop nest vector.  Pass it to lambda_compute_access_matrices.
3272         * tree-data-ref.h (struct access_matrix): Store the loop nest
3273         relative to which it encodes the information.
3274         (AM_LOOP_NEST_NUM): Renamed AM_LOOP_NEST.
3275         (am_vector_index_for_loop): Reimplemented: iterate over the
3276         loop nest for finding the loop index in the access matrix.
3277         (lambda_compute_access_matrices): Update declaration.
3278         * lambda-code.c (build_access_matrix): Pass the loop nest and
3279         record it.
3280         (lambda_compute_access_matrices): Same.
3281
3282 2008-10-15  Andreas Krebbel  <krebbel1@de.ibm.com>
3283
3284         * config/s390/s390.h: (TARGET_DFP): This requires TARGET_HARD_FLOAT.
3285         * config/s390/s390.md: Replace "TARGET_HARD_FLOAT &&
3286         TARGET_(HARD_)DFP" with only TARGET_(HARD_)DFP since this
3287         already implies hard float.  Also fix several insn condition
3288         with TARGET_DFP which shall require TARGET_HARD_DFP instead.
3289
3290 2008-10-15  David Edelsohn  <edelsohn@gnu.org>
3291
3292         PR target/35483
3293         Based on patches by Laurent Vivier.
3294         * xcoffout.h (DBX_FINISH_STABS): Translate dollar sign to underscore.
3295         * config/rs6000/rs6000-protos.h (rs6000_xcoff_strip_dollar): Declare.
3296         * config/rs6000/xcoff.h (ASM_DECLARE_FUNCTION_NAME): Translate
3297         dollar sign to underscore.
3298         (ASM_OUTPUT_EXTERNAL): Same.
3299         (ASM_OUTPUT_LABELREF): New.
3300         * config/rs6000/rs6000.c (rs6000_xcoff_strip_dollar): New.
3301
3302         * config/rs6000/aix51.h (TARGET_USE_JCR_SECTION): Define.
3303         * config/rs6000/aix52.h (TARGET_USE_JCR_SECTION): Define.
3304         * config/rs6000/aix53.h (TARGET_USE_JCR_SECTION): Define.
3305         * config/rs6000/aix61.h (TARGET_USE_JCR_SECTION): Define.
3306
3307 2008-10-15  Jakub Jelinek  <jakub@redhat.com>
3308
3309         PR tree-optimization/36881
3310         * tree-switch-conversion.c (check_final_bb): For flag_pic, check
3311         that each value doesn't need runtime relocations, for !flag_pic
3312         check that each value is just a valid initializer constant.
3313
3314 2008-10-14  Richard Sandiford  <rdsandiford@googlemail.com>
3315
3316         * config/mips/mips.h (reg_class): Remove HI_AND_GR_REGS,
3317         LO_AND_GR_REGS, HI_AND_FP_REGS, COP0_AND_GR_REGS, COP2_AND_GR_REGS,
3318         COP3_AND_GR_REGS, ALL_COP_REGS and ALL_COP_AND_GR_REGS.
3319         Add GR_AND_MD0_REGS, GR_AND_MD1_REGS, GR_AND_MD_REGS and
3320         GR_AND_ACC_REGS.
3321         (REG_CLASS_NAMES): Update accordingly.
3322         (REG_CLASS_CONTENTS): Likewise.  Use the class name in the comments,
3323         rather than an unpredictable descriptive string.
3324         * config/mips/mips.c (mips_register_move_cost): Remove comment.
3325         (mips_register_move_cost): Check for specific COP*_REGS classes,
3326         instead of ALL_COP_AND_GR_REGS.
3327         (mips_ira_cover_classes): New function.
3328         (mips_secondary_reload_class): Remove MTLO and MTHI workarounds.
3329         (TARGET_IRA_COVER_CLASSES): Define.
3330
3331 2008-10-14  Douglas Gregor  <doug.gregor@gmail.com>
3332
3333         PR c++/37553
3334         * tree.c (build_type_attribute_qual_variant): Hash on the
3335         unqualified type, and don't overwrite an existing
3336         (type_hash_eq): Make the TYPE_NAME of the types significant, to
3337         allow distinguishing between wchar_t and its underlying type. This
3338         also means that we'll retain a little more typedef information.
3339
3340 2008-10-14  Andrey Belevantsev  <abel@ispras.ru>
3341             Dmitry Melnik  <dm@ispras.ru>
3342             Dmitry Zhurikhin  <zhur@ispras.ru>
3343             Alexander Monakov  <amonakov@ispras.ru>
3344             Maxim Kuvyrkov  <maxim@codesourcery.com>
3345
3346         * target.h (struct gcc_target): Update prototypes of needs_block_p
3347         and gen_spec_check.
3348         * haifa-sched.c (create_check_block_twin): Update calls to the above.
3349         * sel-sched.c (create_speculation_check): Likewise.
3350         * doc/tm.texi: Provide documentation for new target hooks.
3351
3352         * config/ia64/ia64.c: Include sel-sched.h.  Rewrite speculation hooks.
3353         (ia64_gen_spec_insn): Removed.
3354         (get_spec_check_gen_function, insn_can_be_in_speculative_p,
3355         ia64_gen_spec_check): New static functions.
3356         (ia64_alloc_sched_context, ia64_init_sched_context,
3357         ia64_set_sched_context, ia64_clear_sched_context,
3358         ia64_free_sched_context, ia64_get_insn_spec_ds,
3359         ia64_get_insn_checked_ds, ia64_skip_rtx_p): Declare functions.
3360         (ia64_needs_block_p): Change prototype.
3361         (ia64_gen_check): Rename to ia64_gen_spec_check.
3362         (ia64_adjust_cost): Rename to ia64_adjust_cost_2.  Add new parameter
3363         into declaration, add special memory dependencies handling.
3364         (TARGET_SCHED_ALLOC_SCHED_CONTEXT, TARGET_SCHED_INIT_SCHED_CONTEXT,
3365         TARGET_SCHED_SET_SCHED_CONTEXT, TARGET_SCHED_CLEAR_SCHED_CONTEXT,
3366         TARGET_SCHED_FREE_SCHED_CONTEXT, TARGET_SCHED_GET_INSN_SPEC_DS,
3367         TARGET_SCHED_GET_INSN_CHECKED_DS, TARGET_SCHED_SKIP_RTX_P):
3368         Define new target hooks.
3369         (TARGET_SCHED_GEN_CHECK): Rename to TARGET_SCHED_GEN_SPEC_CHECK.
3370         (ia64_optimization_options): Turn on selective scheduling with -O3,
3371         disable -fauto-inc-dec. Set mflag_sched_control_spec to true by
3372         default with selective scheduling.
3373         (ia64_override_options): Initialize align_loops and align_functions
3374         to 32 and 64, respectively.  Set global selective scheduling flags
3375         according to target-dependent flags.
3376         (rtx_needs_barrier): Support UNSPEC_LDS_A.
3377         (group_barrier_needed): Use new mstop-bit-before-check flag.
3378         Add heuristic.
3379         (dfa_state_size): Make global.
3380         (spec_check_no, max_uid): Remove.
3381         (mem_ops_in_group, current_cycle): New variables.
3382         (ia64_sched_init): Disable checks for !SCHED_GROUP_P after reload.
3383         Initialize new variables.
3384         (is_load_p, record_memory_reference): New functions.
3385         (ia64_dfa_sched_reorder): Lower priority of loads when limit is
3386         reached.
3387         (ia64_variable_issue): Change use of current_sched_info to
3388         sched_deps_info.  Update comment.  Note if a load or a store is issued.
3389         (ia64_first_cycle_multipass_dfa_lookahead_guard_spec): Require a cycle
3390         advance if maximal number of loads or stores was issued on current
3391         cycle.
3392         (scheduled_good_insn): New static helper function.
3393         (ia64_dfa_new_cycle): Assert that last_scheduled_insn is set when
3394         a group barrier is needed.  Fix vertical spacing.  Guard the code
3395         doing state transition with last_scheduled_insn check.
3396         Mark that a stop bit should be before current insn if there was a
3397         cycle advance.  Update current_cycle and mem_ops_in_group.
3398         (ia64_h_i_d_extended): Change use of current_sched_info to
3399         sched_deps_info. Reallocate stops_p by larger chunks.
3400         (struct _ia64_sched_context): New structure.
3401         (ia64_sched_context_t): New typedef.
3402         (ia64_alloc_sched_context, ia64_init_sched_context,
3403         ia64_set_sched_context, ia64_clear_sched_context,
3404         ia64_free_sched_context): New static functions.
3405         (gen_func_t): New typedef.
3406         (get_spec_load_gen_function): New function.
3407         (SPEC_GEN_EXTEND_OFFSET): Declare.
3408         (ia64_set_sched_flags): Check common_sched_info instead of *flags.
3409         (get_mode_no_for_insn): Change the condition that prevents use of
3410         special hardware registers so it can now handle pseudos.
3411         (get_spec_unspec_code): New function.
3412         (ia64_skip_rtx_p, get_insn_spec_code, ia64_get_insn_spec_ds,
3413         ia64_get_insn_checked_ds, ia64_gen_spec_load): New static functions.
3414         (ia64_speculate_insn, ia64_needs_block_p): Support branchy checks
3415         during selective scheduling.
3416         (ia64_speculate_insn): Use ds_get_speculation_types when
3417         determining whether we need to change the pattern.
3418         (SPEC_GEN_LD_MAP, SPEC_GEN_CHECK_OFFSET): Declare.
3419         (ia64_spec_check_src_p): Support new speculation/check codes.
3420         (struct bundle_state): New field.
3421         (issue_nops_and_insn): Initialize it.
3422         (insert_bundle_state): Minimize mid-bundle stop bits.
3423         (important_for_bundling_p): New function.
3424         (get_next_important_insn): Use important_for_bundling_p.
3425         (bundling): When shifting TImode from unimportant insns, ignore
3426         also group barriers.  Assert that best state is found before
3427         the backward bundling pass.  Print number of mid-bundle stop bits.
3428         Minimize mid-bundle stop bits.  Check correct calculation of
3429         mid-bundle stop bits.
3430         (ia64_sched_finish, final_emit_insn_group_barriers): Fix formatting.
3431         (final_emit_insn_group_barriers): Emit stop bits before insns starting
3432         a new cycle.
3433         (sel2_run): New variable.
3434         (ia64_reorg): When flag_selective_scheduling2 is set, run the
3435         selective scheduling pass instead of schedule_ebbs.
3436
3437         * config/ia64/ia64.md (speculable1, speculable2): New attributes.
3438         (UNSPEC_LDS_A): New UNSPEC.
3439         (movqi_internal, movhi_internal, movsi_internal, movdi_internal,
3440         movti_internal, movsf_internal, movdf_internal,
3441         movxf_internal): Make visible.  Add speculable* attributes.
3442         (output_c_nc): New mode attribute.
3443         (mov<mode>_speculative_a, zero_extend<mode>di2_speculative_a,
3444         mov<mode>_nc, zero_extend<mode>di2_nc,
3445         advanced_load_check_nc_<mode>): New insns.
3446         (zero_extend*): Add speculable* attributes.
3447
3448         * config/ia64/ia64.opt (msched_fp_mem_deps_zero_cost): New option.
3449         (msched-stop-bits-after-every-cycle): Likewise.
3450         (msched-max-memory-insns, msched-max-memory-insns-hard-limit):
3451         Likewise.
3452         (msched-spec-verbose): Remove.
3453         (msched-prefer-non-data-spec-insns,
3454         msched-prefer-non-control-spec-insns,
3455         msched-count-spec-in-critical-path,
3456         msel-sched-dont-check-control-spec): Use Target  Report Var
3457         instead of Common Report Var.
3458
3459         * config/ia64/itanium2.md: Remove incorrect bypass.
3460
3461         * config/ia64/t-ia64 (ia64.o): Add dependency on sel-sched.h.
3462
3463 2008-10-14  Jakub Jelinek  <jakub@redhat.com>
3464
3465         PR middle-end/37805
3466         * opts.c (common_handle_option): Don't ICE on -fhelp=joined
3467         and -fhelp=separate.
3468
3469 2008-10-14  Ben Elliston  <bje@au.ibm.com>
3470
3471         * config/rs6000/rs6000.md (cell_micro): Fix formatting.
3472
3473 2008-10-13  Joseph Myers  <joseph@codesourcery.com>
3474
3475         * combine.c (simplify_set): Avoid calling LOAD_EXTEND_OP on
3476         non-integer modes.
3477
3478 2008-10-13  Matthias Klose  <doko@ubuntu.com>
3479
3480         * config/pa/linux-atomic.c: Work around missing header file
3481         for hppa64-linux-gnu targets.
3482
3483 2008-10-13  Andrew Pinski  <andrew_pinski@playstation.sony.com>
3484             Kaushal Kantawala <Kaushal_Kantawala@playstation.sony.com>
3485             Trevor Smigiel  <Trevor_Smigiel@playstation.sony.com>
3486             Grace Cao  <grace_cao@playstation.sony.com>
3487
3488         * doc/invoke.texi (-mgen-cell-microcode): Document.
3489         (-mwarn-cell-microcode): Document.
3490         * cfglayout.c (locator_location): Export.
3491         * rtl.h (locator_location): Define prototype.
3492         * config/rs6000/predicates.md (cc_reg_not_micro_cr0_operand):
3493         New predicate.
3494         * rs6000/rs6000-protos.h (rs6000_final_prescan_insn): Define prototype.
3495         * config/rs6000/rs6000.opt (mgen-cell-microcode): New option.
3496         (mwarn-cell-microcode): New option.
3497         * rs6000/rs6000.c (rs6000_cell_dont_microcode): Delete unused variable.
3498         (rs6000_override_options): Set rs6000_gen_cell_microcode if tuning for
3499         cell and not already set.
3500         Turn off string instructions if not generating cell microcode.
3501         (rs6000_final_prescan_insn): New function that warns about microcoded
3502         instructions.
3503         * config/rs6000/rs6000.h (FINAL_PRESCAN_INSN): Define.
3504         * config/rs6000/rs6000.md
3505         Replace cc_reg_not_cr0_operand with cc_reg_not_micro_cr0_operand if
3506         the instruction would have been microcoded on the Cell.  Set
3507         cell_micro to always on unnamed patterns for the string instructions.
3508         (cell_micro): Update definition, remove load/store conditional
3509         microcoded.
3510         (sign_extend:DI): Define new pattern for non microcoded version.
3511         (sign_extend:SI): Likewise.
3512         (compare (div:P)): Set cell_micro to not.
3513         (andsi3): Define as an expand.
3514         (andsi3_mc): New pattern.
3515         (andsi3_nomc): New pattern.
3516         (andsi3_internal0_nomc): New pattern.
3517         (andsi3_internal2): Rename to ...
3518         (andsi3_internal2_mc): this and enable iff generating microcode.
3519         (andsi3_internal3): Rename to ...
3520         (andsi3_internal3_mc): this and enable iff generating microcode.
3521         (andsi3_internal4): Enable iif generating microcode.
3522         (andsi3_internal5): Rename to ..
3523         (andsi3_internal5_mc): this and enable iff generating microcode.
3524         (andsi3_internal5_nomc): New pattern.
3525         (extzvdi_internal1): Enable iff generating microcode.
3526         (extzvdi_internal2): Likewise.
3527         (rotlsi3_internal7): Set cell_micro to always if non immediate form.
3528         (anddi3): Change to expand.
3529         (anddi3_mc): Rename from anddi3.
3530         (anddi3_no_mc): New pattern.
3531         (anddi3_internal2): Rename to ..
3532         (anddi3_internal2_mc): this and enable iff generating microcode.
3533         (anddi3_internal2_nomc): New pattern.
3534         (anddi3_internal3): Rename to ..
3535         (anddi3_internal3_mc): this and enable iff generating microcode.
3536         (anddi3_internal3_nomc): New pattern.
3537         (movti_string): Set cell_micro to always if TARGET_STRING.
3538         (stmsi8): Set cell_micro to always.
3539         (stmsi7): Likewise.
3540         (stmsi6): Likewise.
3541         (stmsi5): Likewise.
3542         (stmsi4): Likewise.
3543         (stmsi3): Likewise.
3544         (stmsi8_power): Likewise.
3545         (stmsi7_power): Likewise.
3546         (stmsi6_power): Likewise.
3547         (stmsi5_power): Likewise.
3548         (stmsi4_power): Likewise.
3549         (stmsi3_power): Likewise.
3550         (movsi_update2): Enable iff generating microcode.
3551         (movhi_update3): Likewise.
3552         (lmw): Set cell_micro to always.
3553
3554 2008-10-13  Richard Sandiford  <rdsandiford@googlemail.com>
3555
3556         * config/s390/s390.md (UNSPEC_POOL_OFFSET): New constant.
3557         * config/s390/s390.c (machine_function): Remove
3558         decomposed_literal_pool_addresses_ok_p.
3559         (s390_decompose_address): Check for UNSPEC_POOL_OFFSET instead of
3560         the difference of two labels.
3561         (s390_output_addr_const_extra): Handle UNSPEC_POOL_OFFSET.
3562         (s390_pool_offset): New function.
3563         (s390_find_constant, s390_find_execute, s390_dump_pool): Use it.
3564         (s390_reorg): Don't set decomposed_literal_pool_addresses_ok_p.
3565
3566 2008-10-13  Nathan Froyd  <froydnj@codesourcery.com>
3567
3568         * doc/install.texi (powerpc-*-*): Require binutils 2.15.
3569         (powerpc*-*-linux-gnu*): Describe.
3570         * config/rs6000/ppc-asm.h (HIDDEN_FUNC): New macro.
3571         * config/rs6000/crtresfpr.asm, config/rs6000/crtresgpr.asm,
3572         config/rs6000/crtresxfpr.asm, config/rs6000/crtresxgpr.asm,
3573         config/rs6000/crtsavfpr.asm, config/rs6000/crtsavgpr.asm,
3574         config/rs6000/e500crtres32gpr.asm,
3575         config/rs6000/e500crtres64gpr.asm,
3576         config/rs6000/e500crtres64gprctr.asm,
3577         config/rs6000/e500crtrest32gpr.asm,
3578         config/rs6000/e500crtrest64gpr.asm,
3579         config/rs6000/e500crtresx32gpr.asm,
3580         config/rs6000/e500crtresx64gpr.asm,
3581         config/rs6000/e500crtsav32gpr.asm,
3582         config/rs6000/e500crtsav64gpr.asm,
3583         config/rs6000/e500crtsav64gprctr.asm,
3584         config/rs6000/e500crtsavg32gpr.asm,
3585         config/rs6000/e500crtsavg64gpr.asm,
3586         config/rs6000/e500crtsavg64gprctr.asm: Use it.
3587         * config/rs6000/crtsavres.asm: Really remove.
3588
3589 2008-10-13  Kai Tietz  <kai.tietz@onevision.com>
3590
3591         Fix PR/25502
3592         * c-format.c (convert_format_name_to_system_name): Use
3593         TARGET_OVERRIDES_FORMAT_INIT.
3594         * config.gcc (extra_options): Add for mingw targets mingw.opt.
3595         * config/i386/mingw.opt: New.
3596         * config/i386/mingw32.h (TARGET_OVERRIDES_FORMAT_INIT): New.
3597         * config/i386/msformat-c.c (TARGET_OVERRIDES_FORMAT_INIT): New.
3598         (ms_printf_length_specs): Removed const specifier.
3599         * doc/tm.texi (TARGET_OVERRIDES_FORMAT_INIT): New.
3600         * doc/invoke.texi (Wno-pedantic-ms-format): New.
3601
3602 2008-10-13  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
3603
3604         * builtins.c: Remove MPFR_VERSION_NUM(2,3,0) conditionals.
3605         * doc/install.texi: Bump recommended MPFR to 2.3.2.
3606
3607 2008-10-12  Kenneth Zadeck <zadeck@naturalbridge.com>
3608
3609         PR middle-end/37808
3610         * df-scan.c (df_ref_change_reg_with_loc_1): Added test to make
3611         sure that ref has valid bb.
3612
3613 2008-10-12  Richard Henderson  <rth@redhat.com>
3614
3615         PR middle-end/37447
3616         * Makefile.in (reload1.o): Depend on EMIT_RTL_H.
3617         * alias.c (value_addr_p, stack_addr_p): Remove.
3618         (nonoverlapping_memrefs_p): Remove IRA special case.
3619         * emit-rtl.c (get_spill_slot_decl, set_mem_attrs_for_spill): New.
3620         * emit-rtl.h (set_mem_attrs_for_spill): Declare.
3621         * reload1.c (alter_reg): Use it.
3622
3623 2008-10-12  Uros Bizjak  <ubizjak@gmail.com>
3624
3625         * config/i386/driver-i386.c (detect_caches_cpuid2): Use array
3626         of registers instead of eax, ebx, ecx and edx.  Use for loop
3627         and check register for non-zero value before the call
3628         to decode_caches_intel.
3629
3630 2008-10-11  Kenneth Zadeck <zadeck@naturalbridge.com>
3631
3632         PR rtl-optimization/37448
3633         * df.h: (df_ref_class): New enum.
3634         (DF_REF_TYPE_NAMES, df_ref_extract): Removed.
3635         (struct df_ref): Replaced with union df_ref_d.
3636         (df_base_ref, df_artificial_ref, df_regular_ref, df_extract_ref):
3637         New members of df_ref_d union.
3638         (DF_REF_REAL_REG, DF_REF_REGNO, DF_REF_REAL_LOC, DF_REF_REG,
3639         DF_REF_LOC, DF_REF_BB, DF_REF_INSN_INFO, DF_REF_INSN,
3640         DF_REF_CLASS, DF_REF_TYPE, DF_REF_CHAIN, DF_REF_ID, DF_REF_FLAGS,
3641         DF_REF_ORDER, DF_REF_IS_ARTIFICIAL, DF_REF_NEXT_REG,
3642         DF_REF_PREV_REG, DF_REF_EXTRACT_WIDTH, DF_REF_EXTRACT_OFFSET,
3643         DF_REF_EXTRACT_MODE): Replaced definition to access union df_ref_d.
3644         (DF_MWS_REG_DEF_P, DF_MWS_REG_USE_P, DF_MWS_TYPE): New macros.
3645         (df_scan_bb_info, df_bb_regno_first_def_find,
3646         df_bb_regno_last_def_find, df_find_def, df_find_use,
3647         df_refs_chain_dump, df_regs_chain_dump, df_ref_debug,
3648         debug_df_ref, df_chain_create, df_chain_unlink, df_chain_copy,
3649         df_ref_create, df_ref_remove, df_compute_accessed_bytes,
3650         df_get_artificial_defs, df_get_artificial_uses, union_defs)
3651         Replaced struct df_ref * with df_ref.
3652         * df-scan.c (df_collection_rec, df_null_ref_rec,
3653         df_ref_chain_delete_du_chain, df_ref_chain_delete, df_install_ref,
3654         df_grow_ref_info, df_ref_create, df_reg_chain_unlink,
3655         df_ref_compress_rec, df_ref_remove, df_ref_chain_delete_du_chain,
3656         df_ref_chain_delete, df_free_collection_rec, df_insn_rescan,
3657         df_reorganize_refs_by_reg_by_reg,
3658         df_reorganize_refs_by_reg_by_insn, df_reorganize_refs_by_reg,
3659         df_ref_change_reg_with_loc_1, df_notes_rescan, df_swap_refs,
3660         df_sort_and_compress_refs, df_install_ref, df_install_refs,
3661         df_ref_record, df_get_conditional_uses, df_get_call_refs,
3662         df_bb_refs_record, df_exit_block_uses_collect,
3663         df_record_exit_block_uses, df_reg_chain_mark,
3664         df_reg_chain_verify_unmarked, df_refs_verify): Replaced struct
3665         df_ref * with df_ref.
3666         (df_ref_record, df_uses_record, df_ref_create_structure): Added
3667         df_ref_class parameter.
3668         (df_scan_problem_data): Added new pools for different types of refs.
3669         (df_scan_free_internal, df_scan_alloc, df_free_ref,
3670         df_ref_create_structure): Processed new ref pools.
3671         (df_scan_start_dump): Added counts of refs and insns.
3672         (df_ref_create, df_notes_rescan, df_def_record_1, df_uses_record,
3673         df_get_call_refs, df_insn_refs_collect, df_bb_refs_collect,
3674         df_entry_block_defs_collect, df_exit_block_uses_collect): Added
3675         code to pass df_ref_class down to ref creation functions.
3676         (df_reg_chain_unlink, df_ref_remove, df_ref_change_reg_with_loc_1,
3677         df_reg_chain_mark): Use macros to hide references to df_refs.
3678         (df_ref_chain_change_bb): Removed.
3679         (df_insn_change_bb): Remove calls to df_ref_insn_change_bb.
3680         (df_ref_equal_p, df_ref_compare, df_ref_create_structure):
3681         Enhanced to understand df_ref union structure.
3682         * fwprop.c (local_ref_killed_between_p, use_killed_between,
3683         all_uses_available_at, update_df, try_fwprop_subst,
3684         forward_propagate_subreg, forward_propagate_and_simplify,
3685         forward_propagate_into, fwprop, fwprop_addr): Replaced struct
3686         df_ref * with df_ref.
3687         (use_killed_between, all_uses_available_at): Use macros to hide
3688         references to df_refs.
3689         * regstat.c (regstat_bb_compute_ri,
3690         regstat_bb_compute_calls_crossed): Replaced struct df_ref * with
3691         df_ref.
3692         * see.c (see_handle_relevant_defs, see_handle_relevant_uses,
3693         see_handle_relevant_refs, see_analyze_one_def,
3694         see_update_relevancy, see_propagate_extensions_to_uses): Replaced
3695         struct df_ref * with df_ref.
3696         * ra-conflict.c (record_one_conflict, clear_reg_in_live,
3697         global_conflicts): Replaced struct df_ref * with df_ref.
3698         * ddg.c (create_ddg_dep_from_intra_loop_link,
3699         add_cross_iteration_register_deps, build_inter_loop_deps):
3700         Replaced struct df_ref * with df_ref.
3701         (create_ddg_dep_from_intra_loop_link,
3702         add_cross_iteration_register_deps): Use macros to hide references
3703         to df_refs.
3704         * auto-inc-dec.c (find_inc, merge_in_block): Replaced struct
3705         df_ref * with df_ref.
3706         * df-core.c (df_bb_regno_first_def_find,
3707         df_bb_regno_last_def_find, df_find_def, df_find_use,
3708         df_refs_chain_dump, df_regs_chain_dump, df_ref_debug,
3709         debug_df_ref): Replaced struct df_ref * with df_ref.
3710         (df_mws_dump, df_ref_debug): Use macros to hide references to df_refs.
3711         * cse.c (cse_extended_basic_block): Replaced struct df_ref * with
3712         df_ref.
3713         * web.c (union_defs, entry_register, replace_ref, web_main):
3714         Replaced struct df_ref * with df_ref.
3715         (union_defs, replace_ref): Use macros to hide references to df_refs.
3716         * global.c (compute_regs_asm_clobbered, build_insn_chain):
3717         Replaced struct df_ref * with df_ref.
3718         * ifcvt.c (dead_or_predicable): Replaced struct df_ref * with df_ref.
3719         * sel-sched-ir.c (maybe_downgrade_id_to_use, setup_id_reg_sets):
3720         Replaced struct df_ref * with df_ref.
3721         * ira-lives.c (mark_ref_live, def_conflicts_with_inputs_p,
3722         mark_ref_dead, process_bb_node_lives): Replaced struct df_ref *
3723         with df_ref.
3724         * local-alloc.c (block_alloc): Replaced struct df_ref * with df_ref.
3725         * df-byte-scan.c (df_compute_accessed_bytes_extract,
3726         df_compute_accessed_bytes_strict_low_part,
3727         df_compute_accessed_bytes_subreg, df_compute_accessed_bytes):
3728         Replaced struct df_ref * with df_ref.
3729         (df_compute_accessed_bytes): Use macros to hide references to df_refs.
3730         * init-regs.c (initialize_uninitialized_regs): Replaced struct
3731         df_ref * with df_ref.
3732         * loop-invariant.c (invariant_for_use, hash_invariant_expr_1,
3733         check_dependency, check_dependencies, record_uses): Replaced
3734         struct df_ref * with df_ref.
3735         (invariant_for_use, check_dependency): Use macros to hide
3736         references to df_refs.
3737         * loop-iv.c (iv_analysis_loop_init, iv_get_reaching_def,
3738         get_biv_step_1, get_biv_step, record_iv, iv_analyze_def,
3739         iv_analyze, biv_p): Replaced struct df_ref * with df_ref.
3740         (iv_analysis_loop_init, iv_get_reaching_def): Use macros to hide
3741         references to df_refs.
3742         * ira.c (compute_regs_asm_clobbered): Replaced struct df_ref *
3743         with df_ref.
3744         * combine.c (create_log_links): Replaced struct df_ref * with df_ref.
3745         * df-problems.c (df_rd_bb_local_compute_process_def,
3746         df_lr_bb_local_compute, df_live_bb_local_compute, df_chain_create,
3747         df_chain_unlink_1, df_chain_unlink, df_chain_copy,
3748         df_chain_remove_problem, df_chain_create_bb_process_use,
3749         df_chain_create_bb, df_chain_top_dump, df_chain_bottom_dump,
3750         df_byte_lr_check_regs, df_byte_lr_bb_local_compute,
3751         df_byte_lr_simulate_defs, df_byte_lr_simulate_uses,
3752         df_byte_lr_simulate_artificial_refs_at_top,
3753         df_byte_lr_simulate_artificial_refs_at_end, df_create_unused_note,
3754         df_note_bb_compute, df_note_add_problem, df_simulate_defs,
3755         df_simulate_uses, df_simulate_artificial_refs_at_end,
3756         df_simulate_artificial_refs_at_top): Replaced struct df_ref * with
3757         df_ref.
3758         (df_chain_dump): Use macros to hide references to df_refs.
3759         * config/mips/mips.c (r10k_simplify_address): Replaced struct
3760         df_ref * with df_ref.
3761         * dce.c (mark_nonreg_stores, delete_corresponding_reg_eq_notes,
3762         mark_artificial_uses, mark_reg_dependencies,
3763         byte_dce_process_block): Replaced struct df_ref * with df_ref.
3764
3765 2008-10-11  Eric Botcazou  <ebotcazou@adacore.com>
3766
3767         * tree.h (contains_packed_reference): Mention ARRAY_RANGE_REF in
3768         head comment.
3769         (array_ref_element_size): Likewise.
3770         (array_ref_low_bound): Likewise.
3771         (array_ref_up_bound): Likewise.
3772         * expr.c (contains_packed_reference): Likewise.
3773         (array_ref_element_size): Likewise.
3774         (array_ref_low_bound): Likewise.
3775         (array_ref_up_bound): Likewise.
3776         * tree-ssa-loop-ivopts.c (idx_contains_abnormal_ssa_name_p): Deal
3777         with ARRAY_RANGE_REF.
3778         (idx_find_step): Likewise.
3779         (idx_record_use): Likewise.
3780         (strip_offset_1): Likewise.
3781         (idx_remove_ssa_names): Likewise.
3782
3783 2008-10-11  Uros Bizjak  <ubizjak@gmail.com>
3784             Andi Kleen  <ak@linux.intel.com>
3785
3786         * config/i386/cpuid.h (__cpuid_count): New defines.
3787         * config/i386/driver-i386.c (struct cache_desc): New structure.
3788         (describe_cache): Use struct cache_desc to pass cache descriptions.
3789         (detect_l2_cache): Ditto. Rename from decode_l2_cache.
3790         (detect_caches_amd): Use struct cache_desc to describe caches.
3791         (decode_caches_intel): Use struct cache_desc to pass cache
3792         descriptions.  Update descriptions to match latest (rev -032,
3793         December 2007) CPUID documentation.  Do not check valid bit here.
3794         Check for Xeon MP value 0x49 problems.
3795         (detect_caches_cpuid2): New function, split from detect_caches_intel.
3796         Check valid bit before calling decode_caches_intel.  Detect number
3797         of times to repeat CPUID instruction.
3798         (detect_caches_cpuid4): New function.
3799         (detect_caches_intel): Depending on max_level, call
3800         detect_caches_cpuid2 or detect_caches_cpuid4.  Call detect_l2_cache
3801         only when other methods fail to provide valid L2 cache description.
3802
3803 2008-10-11  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
3804
3805         PR middle-end/37608
3806         * pa.md (call, call_value): Generate an rtx for register r4 and pass
3807         it to PIC call patterns.
3808         (call_symref_pic): Revise pattern to expose PIC register save.  Remove
3809         code generation and attributes from pattern.  Change peephole2 to
3810         split for noreturn case.  Revise split pattern for non noreturn case.
3811         (call_symref_64bit, call_reg_pic, call_reg_64bit, call_val_symref_pic,
3812         call_val_symref_64bit, call_val_reg_pic, call_val_reg_64bit): Likewise.
3813         * pa.c (attr_length_call): Simplify extraction of call rtx.  Add some
3814         asserts.
3815
3816 2008-10-11  David Edelsohn  <edelsohn@gnu.org>
3817
3818         * config/rs6000/rs6000.md (aux_truncdfsf2): Remove TARGET_SINGLE_FLOAT.
3819         (addsf3, subsf3, mulsf3 ! TARGET_POWERPC): Remove TARGET_SINGLE_FLOAT
3820         and fp_type.
3821         (divdf3): Reformat long line.
3822
3823 2008-10-11  Michael J. Eager  <eager@eagercon.com>
3824
3825         * config/rs6000/rs6000.c (rs6000_parse_fpu_option): Interpret
3826         -mfpu options.
3827         (rs6000_handle_option): Process -mfpu options.
3828         * config/rs6000/rs6000.h: (TARGET_XILINX_FPU): New.
3829         (enum fpu_type_t): New.
3830         * config/rs6000/rs6000.md (attr fp_type): New.  Include xfpu.md.
3831         (addsf3, subsf3, mulsf3, adddf3, subdf3, muldf3, trunctfdf2): Set
3832         fp_type.
3833         (floatsisf2): Remove TARGET_SINGLE_FPU condition.
3834         (floatdidf2): Add TARGET_SINGLE_FPU condition.
3835         * config/rs6000/rs6000.opt (-mfpu): New.
3836         (-mxilinx-fpu): New.
3837         * config/rs6000/sysv4.h: (DRIVER_SELF_SPECS): New.
3838         * config/rs6000/xfpu.h: New. Define TARGET_XILINX_FPU.
3839         * config/rs6000/xfpu.md: New. Define Xilinx pipeline.
3840         * gcc/config.gcc: powerpc-xilinx-eabi target: New.
3841         * gcc/doc/invoke.texi (RS/6000 and PowerPC Options): Add -mfpu option.
3842
3843 2008-10-11  Jakub Jelinek  <jakub@redhat.com>
3844
3845         PR target/35760
3846         * config/rs6000/rs6000.c (rs6000_legitimize_address): Only create
3847         LO_SUM on Darwin if mode has just one unit.
3848
3849 2008-10-10  H.J. Lu  <hongjiu.lu@intel.com>
3850
3851         PR debug/37002
3852         * dwarf2out.c (mem_loc_descriptor): Use DRAP for vDRAP which
3853         has been optimized out.
3854
3855 2008-10-10  Richard Sandiford  <rdsandiford@googlemail.com>
3856
3857         * config/sh/sh.h (PREFERRED_RELOAD_CLASS): Test PIC_ADDR_P
3858         instead of PIC_DIRECT_ADDR_P.
3859         (SECONDARY_INPUT_RELOAD_CLASS): Likewise.
3860         (IS_LITERAL_OR_SYMBOLIC_S16_P, IS_LITERAL_OR_SYMBOLIC_U16_P): Delete.
3861         (IS_NON_EXPLICIT_CONSTANT_P): Don't test PIC_OFFSET_P.
3862         (PIC_OFFSET_P): Rename to...
3863         (PCREL_SYMOFF_P): ...this.
3864         (PIC_DIRECT_ADDR_P): Delete.
3865         (MOVI_SHORI_BASE_OPERAND_P): Check PCREL_SYMOFF_P instead of
3866         PIC_OFFSET_P.
3867         (OUTPUT_ADDR_CONST_EXTRA): Don't require unspecs to have a
3868         single argument.  Handle UNSPEC_EXTRACT_S16, UNSPEC_EXTRACT_U16,
3869         UNSPEC_SYMOFF and UNSPEC_PCREL_SYMOFF.
3870         * config/sh/sh.c (print_operand): Remove CONST handling.
3871         (unspec_caller_rtx_p): Rewrite to use split_const and check
3872         the operands of UNSPEC bases.
3873         (fixup_mova): Replace (unspec [(minus A B)] UNSPEC_PIC)
3874         with (unspec [A B] UNSPEC_SYMOFF).
3875         (nonpic_symbol_mentioned_p): Check for UNSPEC_SYMOFF and
3876         UNSPEC_PCREL_SYMOFF.
3877         (sh_secondary_reload): Test PIC_ADDR_P instead of PIC_DIRECT_ADDR_P.
3878         * config/sh/sh.md (UNSPEC_EXTRACT_S16): New unspec.
3879         (UNSPEC_EXTRACT_U16): Likewise.
3880         (UNSPEC_SYMOFF): Likewise.
3881         (UNSPEC_PCREL_SYMOFF): Likewise.
3882         (movsi_const): Use UNSPEC_EXTRACT_*16s to extract 16-bit portions
3883         of constants.
3884         (movsi_const_16bit): Likewise.
3885         (movdi_const, movdi_const_32bit, movdi_const_16bit): Likewise.
3886         (GOTaddr2picreg): Replace (unspec [(minus A (minus B pc))] UNSPEC_PIC)
3887         with (unspec [A B] UNSPEC_PCREL_SYMOFF).
3888         (sym_label2reg): Replace (minus (const (unspec [A] UNSPEC_PIC)) B)
3889         with (unspec [A B] UNSPEC_SYMOFF).
3890         (symPLT_label2reg): Replace (minus A (minus B pc)) with
3891          (unspec [A B] PCREL_UNSPEC_SYMOFF).
3892         * config/sh/constraints.md (Css): Check for an UNSPEC_EXTRACT_S16.
3893         (Csu): Likewise UNSPEC_EXTRACT_U16.
3894         (Csy): Test PIC_ADDR_P instead of PIC_DIRECT_ADDR_P.
3895         (Cpg): Update after changes to IS_NON_EXPLICIT_CONSTANT_P.
3896
3897 2008-10-10  Stepan Kasal  <skasal@redhat.com>
3898
3899         * gcc/doc/invoke.texi (Optimize Options): Fix typo in examples
3900         for loop strip mining and loop blocking.
3901
3902 2008-10-10  Alexandre Oliva  <aoliva@redhat.com>
3903
3904         * fortran/trans-types.c (gfc_get_nodesc_array_type): Don't
3905         vary types depending on debug info.
3906
3907 2008-10-10  Alexandre Oliva  <aoliva@redhat.com>
3908
3909         * c-gimplify.c (c_genericize): Don't refer to DECL_ASSEMBLER_NAME
3910         before ensuring it's already computed.
3911
3912 2008-10-09  Jakub Jelinek  <jakub@redhat.com>
3913
3914         * rtl.h (locator_eq): New decl.
3915         * cfglayout.c (locator_scope): New function.
3916         (insn_scope): Use it.
3917         (locator_eq): New function.
3918         (fixup_reorder_chain): Search for last insn in src bb
3919         that has locator set or first insn in dest bb.  Use
3920         locator_eq instead of == to compare locators.
3921         * cfgrtl.c (cfg_layout_merge_blocks): Likewise.
3922         * cfgcleanup.c (try_forward_edges): Use locator_eq instead of
3923         == to compare locators.
3924
3925         * tree-ssa-live.c (remove_unused_locals): Mark all edge's goto_block
3926         as used.
3927         * gimple-low.c (lower_function_body, lower_gimple_return,
3928         lower_builtin_setjmp): Set gimple_block on the newly created stmts.
3929         * tree-cfg.c (make_cond_expr_edges, make_goto_expr_edges): Only set
3930         goto_block on edges if goto_locus is known.
3931
3932         PR middle-end/37774
3933         * tree.h (get_object_alignment): Declare.
3934         * emit-rtl.c (set_mem_attributes_minus_bitpos): Call
3935         get_object_alignment if needed.
3936         * builtins.c (get_pointer_alignment): Move ADDR_EXPR operand
3937         handling to ...
3938         (get_object_alignment): ... here.  New function.  Try harder to
3939         determine alignment from get_inner_reference returned offset.
3940
3941 2008-10-08  Jakub Jelinek  <jakub@redhat.com>
3942
3943         * graphite.c (gloog): Don't call find_unreachable_blocks
3944         before delte_unreachable_blocks.
3945
3946         * cfgexpand.c (expand_gimple_cond): Convert also goto_block and
3947         goto_locus of true_edge into RTL locator.
3948
3949 2008-10-08  Uros Bizjak  <ubizjak@gmail.com>
3950
3951         * config/i386/i386.md (*jcc_btdi_rex64): Clobber FLAGS_REG.
3952         (*jcc_btdi_mask_rex64): Ditto.
3953         (*jcc_btsi): Ditto.
3954         (*jcc_btsi_mask): Ditto.
3955         (*jcc_btsi_1): Ditto.
3956         (*jcc_btsi_mask_1): Ditto.
3957
3958 2008-10-08  Paul Brook  <paul@codesourcery.com>
3959
3960         * config/arm/bpabi.h (ARM_FUNCTION_PROFILER): Define new EABI
3961         compatible profiler (__gnu_mcount_nc).
3962         (SUBTARGET_FRAME_POINTER_REQUIRED): Define.
3963
3964 2008-10-08  H.J. Lu  <hongjiu.lu@intel.com>
3965
3966         * config/i386/i386.c (initial_ix86_tune_features): Add
3967         X86_TUNE_USE_VECTOR_FP_CONVERTS.
3968         * config/i386/i386.h (ix86_tune_indices): Likewise.
3969         (TARGET_USE_VECTOR_FP_CONVERTS): New.
3970
3971         * config/i386/i386.md: Check TARGET_USE_VECTOR_FP_CONVERTS
3972         instead of (TARGET_USE_VECTOR_CONVERTS || TARGET_GENERIC)
3973         for FP to FP splitters.
3974
3975 2008-10-08  H.J. Lu  <hongjiu.lu@intel.com>
3976
3977         * config/i386/i386.md: Add missing gen_sse2_cvtdq2p to convert
3978         splitter.
3979
3980 2008-10-08  Jakub Jelinek  <jakub@redhat.com>
3981
3982         PR target/36635
3983         PR target/37290
3984         PR rtl-optimization/37341
3985         * cse.c (cse_cc_succs): Add ORIG_BB argument, don't follow edges
3986         to ORIG_BB, pass through ORIG_BB recursively.
3987         (cse_condition_code_reg): Adjust caller.
3988
3989 2008-10-08  Kai Tietz  <kai.tietz@onevision.com>
3990
3991         * sdbout.c (sdbout_one_type): Treat the value type
3992         CONST_DECL for enumerals.
3993
3994 2008-10-07  H.J. Lu  <hongjiu.lu@intel.com>
3995
3996         * config/i386/i386.md: Remove trailing white spaces.
3997
3998 2008-10-07  Kenneth Zadeck <zadeck@naturalbridge.com>
3999
4000         PR rtl-optimization/37448
4001         * alloc-pool.c (struct alloc_pool_descriptor) [elt_size]: New field.
4002         (stuct alloc_pool_descriptor) [created, allocated, current, peak]:
4003         Make unsigned long.
4004         (struct output_info) [count]: Renamed total_created and made
4005         unsigned long.
4006         (struct output_info) [size]: Renamed total_allocated and made
4007         unsigned long.
4008         (create_alloc_pool, empty_alloc_pool, pool_alloc, pool_free):
4009         Properly keep track of desc->size.
4010         (print_statistics, dump_alloc_pool_statistics): Enhance the
4011         printing of statistics to print the number of elements and to use
4012         unsigned longs.
4013
4014 2008-10-07  Jakub Jelinek  <jakub@redhat.com>
4015
4016         PR middle-end/37576
4017         * opts.h (CL_SAVE): Move up to flags range.
4018         (CL_PARAMS, CL_WARNING, CL_OPTIMIZATION, CL_TARGET,
4019         CL_COMMON): Renumber.
4020         (CL_MIN_OPTION_CLASS): Set to CL_PARAMS.
4021         * opts.c (common_handle_option): Revert last change.
4022
4023 2008-10-07  H.J. Lu  <hongjiu.lu@intel.com>
4024
4025         * config/i386/i386-protos.h (ix86_schedule): New.
4026
4027         * config/i386/i386.c (ix86_schedule): New.
4028         (override_options): Add schedule to processor_alias_table.  Set
4029         ix86_schedule from the schedule field in processor_alias_table.
4030         (ix86_function_specific_save): Save ix86_schedule.
4031         (ix86_function_specific_restore): Restore ix86_schedule.
4032
4033         * config/i386/i386.md (cpu): Map to ix86_schedule instead of
4034         ix86_tune.  Add none and remove i386, i486, pentium4, nocona
4035         and generic32.
4036
4037         * config/i386/i386.opt: Add schedule.
4038
4039         * config/i386/ppro.md: Remove generic32.
4040
4041 2008-10-07  Simon Martin  <simartin@users.sourceforge.net>
4042
4043         PR c/35437
4044         * expr.c (count_type_elements): Handle ERROR_MARK.
4045
4046 2008-10-07  Jakub Jelinek  <jakub@redhat.com>
4047
4048         PR debug/29609
4049         PR debug/36690
4050         PR debug/37616
4051         * basic-block.h (struct edge_def): Add goto_block field.
4052         * cfglayout.c (fixup_reorder_chain): Ensure that there is at least
4053         one insn with locus corresponding to edge's goto_locus if !optimize.
4054         * profile.c (branch_prob): Copy edge's goto_block.
4055         * cfgrtl.c (force_nonfallthru_and_redirect): Use goto_locus for
4056         emitted jumps.
4057         (cfg_layout_merge_blocks): Emit a nop with edge's goto_locus
4058         locator in between the merged basic blocks if !optimize and needed.
4059         * cfgexpand.c (expand_gimple_cond): Convert goto_block and
4060         goto_locus into RTL locator.  For unconditional jump use that
4061         locator for the jump insn.
4062         (expand_gimple_cond): Convert goto_block and goto_locus into
4063         RTL locator for all remaining edges.  For unconditional jump
4064         use that locator for the jump insn.
4065         * cfgcleanup.c (try_forward_edges): Avoid the optimization if
4066         there is more than one edge or insn locator along the forwarding
4067         edges and !optimize.  If there is just one, set e->goto_locus.
4068         * tree-cfg.c (make_cond_expr_edges, make_goto_expr_edges): Set also
4069         edge's goto_block.
4070         (move_block_to_fn): Adjust edge's goto_block.
4071
4072 2008-10-07  H.J. Lu  <hongjiu.lu@intel.com>
4073
4074         PR middle-end/37731
4075         * expmed.c (expand_mult): Properly check DImode constant in
4076         CONST_DOUBLE.
4077
4078 2008-10-07  Jakub Jelinek  <jakub@redhat.com>
4079
4080         PR debug/37738
4081         * dwarf2out.c (common_block_die_table): New variable.
4082         (common_block_die_table_hash, common_block_die_table_eq): New
4083         functions.
4084         (gen_variable_die): Look up a DW_TAG_common_block die for a particular
4085         COMMON block in the current scope rather than globally.  Optimize
4086         DW_OP_addr SYMBOL_REF DW_OP_plus_uconst off into
4087         DW_OP_addr SYMBOL_REF+off.
4088
4089 2008-10-07  Eric Botcazou  <ebotcazou@adacore.com>
4090
4091         * tree-ssa-loop-ivopts.c (may_be_nonaddressable_p) <VIEW_CONVERT_EXPR>:
4092         Return true for non-addressable GIMPLE operands.
4093
4094 2008-10-07  H.J. Lu  <hongjiu.lu@intel.com>
4095
4096         PR target/24765
4097         * config/i386/i386.c (initial_ix86_tune_features): Remove
4098         X86_TUNE_USE_BIT_TEST.
4099         * config/i386/i386.h (ix86_tune_indices): Likewise.
4100         (TARGET_USE_BIT_TEST): Removed.
4101
4102 2008-10-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
4103
4104         * config.gcc (arm*-*-*): Add aapcs-linux to supported ABIs.
4105
4106 2008-10-06  Adam Nemet  <anemet@caviumnetworks.com>
4107
4108         * config/mips/mips.md (mulsi3_mul3, muldi3_mul3): Merge these ...
4109         (mul<mode>3_mul3): ... into this new template.
4110
4111 2008-10-06  Aldy Hernandez  <aldyh@redhat.com>
4112
4113         * gimplify.c (gimplify_arg): Add location argument.  Use it.
4114         (gimplify_call_expr): Pass location to gimplify_arg.
4115         (gimplify_modify_expr_to_memcpy): Same.
4116         (gimplify_modify_expr_to_memset): Same.
4117
4118 2008-10-06  Andrew Pinski  <andrew_pinski@playstation.sony.com>
4119
4120         * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin):
4121         Update calls to build_unary_op and build_indirect_ref for location
4122         changes.
4123
4124 2008-10-06  Aldy Hernandez  <aldyh@redhat.com>
4125
4126         build_modify_expr.
4127         * c-decl.c (finish_decl): Pass input_location to build_unary_op.
4128         * c-typeck.c (array_to_pointer_conversion): Pass location to
4129         build_unary_op.
4130         (function_to_pointer_conversion): Use error_at and warning_at.
4131         (build_indirect_ref): Same.
4132         (build_array_ref): Pass location to build_binary_op.
4133         (parser_build_unary_op): Do not set location after calling
4134         build_unary_op.
4135         (build_unary_op): Add location argument.  Use it throughout.  Set
4136         EXPR_LOCATION before returning new tree.
4137         (build_modify_expr): Same.
4138         (build_binary_op): Use location throughout.  Set EXPR_LOCATION before
4139         returning node.
4140         * c-omp.c (c_finish_omp_atomic): Pass location to build_unary_op,
4141         build_indirect_ref, build_modify_expr.
4142         (c_finish_omp_for): Same.  Use error_at instead of error.
4143         * c-common.c (c_common_truthvalue_conversion): Pass location to
4144         build_unary_op.
4145         (warn_for_div_by_zero): Add location argument.
4146         * c-common.h: Add argument to build_modify_expr, build_indirect_ref,
4147         build_unary_op, warn_for_div_by_zero.
4148         * c-parser.c (c_parser_typeof_specifier): Use
4149         protected_set_expr_location.
4150         (c_parser_statement_after_labels): Same.
4151         (c_parser_condition): Same.
4152         (c_parser_expr_no_commas): Pass correct location to build_modify_expr.
4153         (c_parser_conditional_expression): Use protected_set_expr_location.
4154         (c_parser_unary_expression): Pass location to build_indirect_ref.
4155         (c_parser_postfix_expression_after_primary): Pass location to
4156         build_indirect_ref, build_unary_op.
4157         (c_parser_omp_for_loop): Set the increment expression's EXPR_LOCATION.
4158
4159 2008-10-06  Joshua Kinard  <kumba@gentoo.org>
4160
4161         * doc/invoke.texi: List r1x000 family under the -march MIPS option.
4162         * config/mips/mips.h (PROCESSOR_R10000): New processor_type.
4163         * config/mips/mips.c (mips_cpu_info_table): Add r10000, r12000,
4164         r14000 and r16000.
4165         (mips_rtx_cost_data): Add a PROCESSOR_R10000 entry.
4166         (mips_issue_rate): Handle PROCESSOR_R10000.
4167         * config/mips/mips.md (cpu): Add r10000.
4168         Include r10000.md.
4169         * config/mips/10000.md: New file.
4170
4171 2008-10-06  Richard Sandiford  <rdsandiford@googlemail.com>
4172
4173         * config/rs6000/rs6000-protos.h (rs6000_find_base_term): Declare.
4174         * config/rs6000/rs6000.h (FIND_BASE_TERM): New macro.
4175         * config/rs6000/rs6000.c (rs6000_find_base_term): New function.
4176
4177 2008-10-06  Richard Sandiford  <rdsandiford@googlemail.com>
4178
4179         * config/darwin-protos.h (machopic_function_base_name): Delete.
4180         (machopic_function_base_sym): Likewise.
4181         (machopic_gen_offset): Declare.
4182         * config/darwin.h (MACHOPIC_FUNCTION_BASE_NAME): New macro.
4183         (ASM_OUTPUT_LABELREF): Use it instead of a hard-coded string constant.
4184         * config/darwin.c (machopic_function_base_name): Delete.
4185         (machopic_function_base_sym): Likewise.
4186         (gen_pic_offset): Rename to...
4187         (machopic_gen_offset): ...this and remove the pic_base argument.
4188         Instead use MACHO_DYNAMIC_NO_PIC_P to decide whether a PIC offset
4189         is needed.  Create an UNSPEC_MACHOPIC_OFFSET if so, and set
4190         crtl->uses_pic_offset_table.
4191         (machopic_indirect_data_reference): Use new machopic_gen_offset
4192         interface.
4193         (machopic_legitimize_pic_address): Likewise.
4194         (machopic_operand_p): Check for UNSPEC_MACHOPIC_OFFSET.
4195
4196         * config/i386/darwin.h (GOT_SYMBOL_NAME): Use
4197         MACHOPIC_FUNCTION_BASE_NAME instead of machopic_function_base_name.
4198         * config/i386/i386.c (output_set_got): Likewise.
4199         (darwin_local_data_pic): Check for an UNSPEC_MACHOPIC_OFFSET
4200         instead of a MINUS.
4201         (legitimate_pic_operand_p): Handle UNSPEC_MACHOPIC_OFFSET.
4202         (legitimate_address_p): Likewise.
4203         (output_pic_addr_const): Likewise.
4204         (output_addr_const_extra): Likewise.
4205         (ix86_delegitimize_address): Expect darwin_local_data_pic to
4206         match an UNSPEC rather than a MINUS.
4207         * config/i386/i386.md (UNSPEC_MACHOPIC_OFFSET): Define.
4208         (builtin_setjmp_receiver): Use machopic_gen_offset.
4209         * config/i386/predicates.md (pic_symbolic_operand): Handle
4210         UNSPEC_MACHOPIC_OFFSET.
4211
4212         * config/rs6000/rs6000.c (rs6000_legitimize_reload_address):
4213         Use machopic_gen_offset and machopic_operand_p.
4214         (rs6000_output_addr_const_extra): Handle UNSPEC_MACHOPIC_OFFSET.
4215         (rs6000_emit_prologue): Use MACHOPIC_FUNCTION_BASE_NAME.
4216         * config/rs6000/rs6000.md (UNSPEC_MACHOPIC_OFFSET): Define.
4217         (builtin_setjmp_receiver): Use MACHOPIC_FUNCTION_BASE_NAME.
4218         Set crtl->uses_pic_offset_table.
4219
4220 2008-10-06  Richard Sandiford  <rdsandiford@googlemail.com>
4221
4222         * config/rs6000/rs6000-protos.h (rs6000_output_addr_const_extra):
4223         Declare.
4224         * config/rs6000/rs6000.h (OUTPUT_ADDR_CONST_EXTRA): New macro.
4225         * config/rs6000/rs6000.md (UNSPEC_TOCREL): New constant.
4226         * config/rs6000/rs6000.c (constant_pool_expr_1): Delete.
4227         (constant_pool_expr_p): Use split_const and check the base.
4228         (toc_relative_expr_p): Likewise, checking for an UNSPEC_TOCREL
4229         instead of a MINUS.
4230         (legitimate_constant_pool_address_p): Check toc_relative_p
4231         instead of constant_pool_expr_p.
4232         (print_operand_address): Always use output_addr_const for
4233         constant pool addresses.
4234         (rs6000_output_addr_const_extra): New function.
4235         (create_TOC_reference): Create an UNSPEC_TOCREL instead of a MINUS.
4236
4237 2008-10-06  Vladimir Makarov  <vmakarov@redhat.com>
4238
4239         PR middle-end/37535
4240
4241         * ira-lives.c (mark_reg_live, mark_reg_dead): New functions.
4242         (mark_ref_live, mark_ref_dead): Use them.
4243         (def_conflicts_with_inputs_p): Remove.
4244         (mark_early_clobbers): New function.
4245         (process_bb_node_lives): Call preprocess_constraints and
4246         mark_early_clobbers.
4247
4248         * doc/rtx.texi (clobber): Change how RA deals with clobbers.
4249
4250 2008-10-06  Danny Smith  <dannysmith@users.sourceforge.net>
4251
4252         * config/i386/mingw32.h (REAL_LIBGCC_SPEC): Add thread cleanup
4253         lib with -mthread switch.
4254
4255 2008-10-05  Dodji Seketeli  <dodji@redhat.com>
4256
4257         PR c++/37410
4258         * dwarf2out.c (dwarf2out_imported_module_or_decl): Split this
4259         function in two, making it call a new and reusable
4260         dwarf2out_imported_module_or_decl() that takes the containing
4261         BLOCK of the declaration in argument.
4262         (dwarf2out_imported_module_or_decl_real): New function.
4263         (decls_for_scope, gen_decl_die, dwarf2out_decl): Take
4264         IMPORTED_DECL in account.
4265         * tree.def: Added IMPORTED_DECL node type.
4266         * tree.h: Added accessors for IMPORTED_DECL nodes.
4267         * tree.c (init_ttree): Initialise IMPORTED_DECL node type.
4268
4269 2008-10-05  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
4270
4271         * doc/gimple.texi: Fix some typos, wrap some long lines,
4272         fix some broken wraps with continuations.
4273         * tree-ssa-reassoc.c: Fix comment typos.
4274
4275 2000-10-04  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
4276
4277         PR target/37603
4278         * pa.c (legitimize_pic_address): Force function labels to memory in
4279         word mode.
4280
4281 2008-10-04  Anton Blanchard  <anton@samba.org>
4282
4283         * config/rs6000/rs6000.c (rs6000_emit_sync): Use gen_lwsync().
4284         (rs6000_split_atomic_op): Same.
4285         (rs6000_split_compare_and_swap): Same.
4286         (rs6000_split_compare_and_swapqhi): Same.
4287
4288 2008-10-04  Richard Guenther  <rguenther@suse.de>
4289
4290         * tree-ssa-sccvn.c (vn_reference_op_eq): Use types_compatible_p
4291         instead of pointer equality.
4292         (vn_nary_op_eq): Likewise.
4293
4294 2008-10-03  Andrew Pinski  <andrew_pinski@playstation.sony.com>
4295
4296         * config/rs6000/rs6000.md (fseldfsf4): Add TARGET_SINGLE_FLOAT
4297         condition.
4298         (fselsfdf4): Make condition on "TARGET_HARD_FLOAT && TARGET_FPRS &&
4299         TARGET_DOUBLE_FLOAT && TARGET_SINGLE_FLOAT".
4300
4301 2008-10-03  Danny Smith  <dannysmith@users.sourceforge.net>
4302
4303         * config/i386/winnt.c (i386_pe_strip_name_encoding_full):
4304         Revert previous change.
4305
4306 2008-10-03  Tom Tromey  <tromey@redhat.com>
4307
4308         * stringpool.c (ggc_alloc_string): Terminate string.
4309
4310 2008-10-03  Jakub Jelinek  <jakub@redhat.com>
4311
4312         * gimplify.c (gimplify_function_tree): For -finstrument-functions
4313         use gimple_bind_{,set_}block instead of gimple_{,set_}block.
4314         * gimple.h (gimple_bind_set_block): Allow second argument to be NULL.
4315
4316         PR debug/37726
4317         * gimplify.c (declare_vars): Use gimple_bind_block instead of
4318         gimple_block.
4319
4320 2008-10-03  Pascal Obry  <obry@adacore.com>
4321
4322         * gcov.c (create_file_names): Properly handle UNIX and DOS
4323         directory separators.
4324         (make_gcov_file_name): Likewise + convert the ':' DOS drive
4325         separator to '~' to ensure clean filenames on Windows.
4326
4327 2008-10-02  Danny Smith  <dannysmith@users.sourceforge.net>
4328
4329         * config/i386/winnt.c (i386_pe_strip_name_encoding_full):
4330         Add a null terminator to the stripped name.
4331
4332 2008-10-02  David Edelsohn  <edelsohn@gnu.org>
4333
4334         * config/rs6000/rs6000.c (USE_FP_FOR_ARG_P): Revert
4335         TARGET_DOUBLE_FLOAT, TARGET_SINGLE_FLOAT.
4336         (function_arg_advance): Condition on TARGET_DOUBLE_FLOAT,
4337         TARGET_SINGLE_FLOAT.  Revert SCALAR_FLOAT_MODE_P condition.
4338         (function_arg): Condition on TARGET_DOUBLE_FLOAT, TARGET_SINGLE_FLOAT.
4339         (rs6000_function_value): Revert TARGET_DOUBLE_FLOAT,
4340         TARGET_SINGLE_FLOAT.
4341
4342 2008-10-02  Daniel Jacobowitz  <dan@codesourcery.com>
4343
4344         * builtins.c (fold_builtin_pow): Check for 0 ** NEGATIVE.
4345
4346 2008-10-02  Richard Guenther  <rguenther@suse.de>
4347
4348         PR middle-end/37713
4349         * tree-ssa.c (useless_type_conversion_p_1): For COMPLEX_TYPE
4350         and VECTOR_TYPE recurse with useless_type_conversion_p which
4351         properly handles void pointer conversion.
4352
4353 2008-10-02  Danny Smith  <dannysmith@users.sourceforge.net>
4354
4355         PR target/37528
4356         * config/i386/mingw32.h (LIBGCC_SPEC) : Replace with ..
4357         (REAL_LIBGCC_SPEC): New.  Always include -lgcc.
4358
4359 2008-10-01  Andrew Pinski  <andrew_pinski@playstation.sony.com>
4360
4361         * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin):
4362         Handle ALTIVEC_BUILTIN_VEC_SPLATS, ALTIVEC_BUILTIN_VEC_PROMOTE,
4363         ALTIVEC_BUILTIN_VEC_EXTRACT, and ALTIVEC_BUILTIN_VEC_INSERT specially,
4364         they translate to non builtins.
4365         * config/rs6000/rs6000.c (altivec_init_builtins): Add new variable
4366         opaque_ftype_opaque.  Define builtins __builtin_vec_splats,
4367         __builtin_vec_promote, __builtin_vec_extract, and
4368         __builtin_vec_insert.
4369         * config/rs6000/rs6000.h (enum rs6000_builtins): Add
4370         ALTIVEC_BUILTIN_VEC_EXTRACT, ALTIVEC_BUILTIN_VEC_PROMOTE,
4371         ALTIVEC_BUILTIN_VEC_INSERT, and ALTIVEC_BUILTIN_VEC_SPLATS.
4372         * config/rs6000/altivec.h (vec_extract): Define
4373         (vec_insert): Define.
4374         (vec_splats): Define.
4375         (vec_promote): Define.
4376
4377 2008-10-01  Andrew Pinski  <andrew_pinski@playstation.sony.com>
4378             Yukishige Shibata  <shibata@rd.scei.sony.co.jp>
4379             Trevor Smigiel  <Trevor_Smigiel@playstation.sony.com>
4380
4381         * config/rs6000/rs6000-c.c (altivec_overloaded_builtins): Add Cell
4382         Altivec intrinsics.
4383         * config/rs6000/rs6000.c (altivec_expand_lv_builtin): Delete
4384         prototype.  Add new parameter, blk.
4385         Use BLKmode for the MEM if blk is true.
4386         (altivec_expand_builtin): Handle ALTIVEC_BUILTIN_STVLX,
4387         ALTIVEC_BUILTIN_STVLXL, ALTIVEC_BUILTIN_STVRX, and
4388         ALTIVEC_BUILTIN_STVRXL.
4389         Update usage of altivec_expand_lv_builtin.
4390         Handle ALTIVEC_BUILTIN_LVLX, ALTIVEC_BUILTIN_LVLXL,
4391         ALTIVEC_BUILTIN_LVRX, and ALTIVEC_BUILTIN_LVRXL.
4392         (altivec_init_builtins): If compiling for the Cell, also define the
4393         cell VMX builtins.
4394         * config/rs6000/rs6000.h (rs6000_builtins): Define
4395         ALTIVEC_BUILTIN_LVLX, ALTIVEC_BUILTIN_LVLXL, ALTIVEC_BUILTIN_LVRX,
4396         ALTIVEC_BUILTIN_LVRXL, ALTIVEC_BUILTIN_STVLX, ALTIVEC_BUILTIN_STVLXL,
4397         ALTIVEC_BUILTIN_STVRX, ALTIVEC_BUILTIN_STVRXL,
4398         ALTIVEC_BUILTIN_VEC_LVLX, ALTIVEC_BUILTIN_VEC_LVLXL,
4399         ALTIVEC_BUILTIN_VEC_LVRX, ALTIVEC_BUILTIN_VEC_LVRXL,
4400         ALTIVEC_BUILTIN_VEC_STVLX, ALTIVEC_BUILTIN_VEC_STVLXL,
4401         ALTIVEC_BUILTIN_VEC_STVRX, and ALTIVEC_BUILTIN_VEC_STVRXL.
4402         * config/rs6000/altivec.md (define_constants): Define UNSPEC_LVLX,
4403         UNSPEC_LVLXL, UNSPEC_LVRX, UNSPEC_LVRXL, UNSPEC_STVLX, UNSPEC_STVLXL,
4404         UNSPEC_STVRX, and UNSPEC_STVRXL.
4405         (altivec_lvlx): New pattern.
4406         (altivec_lvlxl): New pattern.
4407         (altivec_lvrx): New pattern.
4408         (altivec_lvrxl): New pattern.
4409         (altivec_stvlx): New pattern.
4410         (altivec_stvlxl): New pattern.
4411         (altivec_stvrx): New pattern.
4412         (altivec_stvrxl): New pattern.
4413         * config/rs6000/altivec.h (vec_lvlx): Define if PPU is defined.
4414         (vec_lvlxl): Likewise.
4415         (vec_lvrx): Define if PPU is defined.
4416         (vec_lvrxl): Likewise.
4417         (vec_stvlx): Define if PPU is defined.
4418         (vec_stvlxl): Likewise.
4419         (vec_stvrx): Define if PPU is defined.
4420         (vec_stvrxl): Likewise.
4421
4422 2008-10-01  Geert Bosch  <bosch@adacore.com>
4423
4424         * tree.c (contains_placeholder_p): Return 0 for a SAVE_EXPR.
4425
4426 2008-10-01  Richard Guenther  <rguenther@suse.de>
4427
4428         PR tree-optimization/37617
4429         * tree-ssa-pre.c (create_expression_by_pieces): During FRE
4430         do not add to the NEW_SETS.
4431
4432 2008-10-01  Richard Guenther  <rguenther@suse.de>
4433
4434         PR middle-end/37285
4435         * tree-vrp.c (execute_vrp): If we optimized away the default
4436         case make sure to promote the label that got in place of it
4437         to a default case label.
4438
4439 2008-10-01  Richard Henderson  <rth@redhat.com>
4440
4441         PR tree-opt/35737
4442         * tree-complex.c (set_component_ssa_name): Don't optimize
4443         is_gimple_min_invariant values with ssa_names in abnormal phis.
4444
4445 2008-09-30  Paolo Bonzini  <bonzini@gnu.org>
4446
4447         PR tree-optimization/37662
4448         * tree-ssa-ccp.c (fold_gimple_assign): Invert the operands of a
4449         commutative binary operation if they are in the wrong order and
4450         fold_build2 produces non-GIMPLE.
4451
4452 2008-09-30  Jakub Jelinek  <jakub@redhat.com>
4453
4454         PR tree-optimization/37662
4455         PR tree-optimization/37663
4456         * tree-vrp.c (simplify_truth_ops_using_ranges): Don't call
4457         get_value_range with non-SSA_NAME.  Don't assert operands have been
4458         folded, instead just bail out.
4459
4460 2008-09-30  Andrew Pinski  <andrew_pinski@playstation.sony.com>
4461
4462         * config/rs6000/rs6000.md (fnmadds combiner): Revert typo.
4463
4464 2008-09-30  Richard Guenther  <rguenther@suse.de>
4465
4466         PR middle-end/37491
4467         * tree-vect-transform.c (vect_create_data_ref_ptr): Properly
4468         build restrict-qualified pointers.
4469         (vectorizable_store): Move alias check later.
4470         (vectorizable_load): Likewise.
4471
4472 2008-09-30  Paolo Bonzini  <bonzini@gnu.org>
4473
4474         * c-common.c (empty_if_body_warning): Remove.
4475         * c-common.h (empty_if_body_warning): Remove.
4476         * c-parser.c (c_parser_if_body, c_parser_else_body): Implement
4477         here the -Wempty-body warning for `if' and `else' statements.
4478         * c-typeck.c (c_finish_if_stmt): Do not call empty_body_warning.
4479
4480 2008-09-29  H.J. Lu  <hongjiu.lu@intel.com>
4481
4482         * config/i386/i386.opt: Add msse2avx.
4483
4484         * config/i386/linux.h (ASM_SPEC): New.  Support -msse2avx.
4485         * config/i386/linux64.h (ASM_SPEC): Likewise.
4486
4487         * doc/invoke.texi: Document -msse2avx.
4488
4489 2008-09-29  Eric Botcazou  <ebotcazou@adacore.com>
4490
4491         * dwarf2out.c (constant_size): Use HOST_WIDE_INT in parameter type.
4492
4493 2008-09-29  Joseph Myers  <joseph@codesourcery.com>
4494
4495         * ifcvt.c (noce_emit_store_flag): If using condition from original
4496         jump, reverse it if if_info->cond was reversed.
4497
4498 2008-09-29  Eric Botcazou  <ebotcazou@adacore.com>
4499
4500         * expr.c (expand_expr_real_1) <normal_inner_ref>: Force op0 to
4501         non-constant memory if it cannot be forced to constant memory.
4502         Overhaul surrounding code and factor out common condition.
4503
4504 2008-09-29  Jeff Law <law@redhat.com>
4505
4506         * reload1.c (alter_reg): Add missing curly braces.
4507
4508 2008-09-29  Michael J. Eager  <eager@eagercon.com>
4509
4510         * config/rs6000/predicates.md (easy_fp_constant): Single FP consts
4511         are easy.
4512         * config/rs6000/rs6000.c (rs6000_override_options): Move
4513         rs6000_init_hard_regno_mode_ok after all options changed.
4514         Set rs6000_single_float, rs6000_double_float if TARGET_HARD_FLOAT.
4515         (rs6000_handle_option): Process -msingle-float, -mdouble-float,
4516         -msimple-fpu flags.  Add warning messages if single FP not configured.
4517         (rs6000_file_start): Output gnu_attribute for single-float.
4518         (legitimate_lo_sum_address_p): Condition on TARGET_DOUBLE_FLOAT.
4519         (rs6000_legitimize_address): Likewise.
4520         (rs6000_legitimize_reload_address): Likewise.
4521         (rs6000_emit_move): Condition on TARGET_DOUBLE_FLOAT,
4522         TARGET_SINGLE_FLOAT.
4523         (function_arg_advance): Likewise (partial conversion).
4524         (setup_incoming_varargs): Condition on TARGET_DOUBLE_FLOAT.
4525         (rs6000_gimplify_va_arg): Condition on TARGET_DOUBLE_FLOAT,
4526         TARGET_SINGLE_FLOAT.
4527         (rs6000_split_multireg_move): Condition on TARGET_DOUBLE_FLOAT.
4528         (rs6000_emit_prologue): Likewise.
4529         (rs6000_function_value): Condition on TARGET_DOUBLE_FLOAT,
4530         TARGET_SINGLE_FLOAT.
4531         (rs6000_libcall_value): Likewise.
4532         * config/rs6000/rs6000.h (TARGET_SINGLE_FLOAT): New default to 1.
4533         (TARGET_DOUBLE_FLOAT): New default to 1
4534         (TARGET_SIMPLE_FPU): New default to 0
4535         (TARGET_SINGLE_FPU): New default to 0
4536         (TARGET_SINGLE_FLOAT_MODE): New.
4537         (TARGET_DOUBLE_FLOAT_MODE): New.
4538         * config/rs6000/singlefp.h: New; redefine TARGET_SINGLE_FLOAT,
4539         TARGET_DOUBLE_FLOAT, TARGET_SIMPLE_FPU, TARGET_SINGLE_FPU,
4540         UNITS_PER_FP_WORD
4541         * config/rs6000/rs6000.md (define_mode_iterator): Condition on
4542         TARGET_DOUBLE_FLOAT, TARGET_SINGLE_FLOAT.
4543         (extendsfdf2, extendsfdf2_fpr, truncdfsf2, truncdfsf2_fpr,
4544         copysigndf3,fseldfsf4, negdf2, negdf2_fpr, absdf2, absdf2_fpr,
4545         nabsdf2_fpr, adddf3, adddf3_fpr, subdf3, subdf3_fpr, muldf3,
4546         muldf3_fpr, divdf3, divdf3_fpr, sqrtdf2, smaxdf3, smindf3,
4547         movdfcc, *fseldfdf4, floatsidf2, *floatsidf2_internal,
4548         floatunssidf2, *floatunssidf2_internal, fix_truncdfsi2,
4549         *fix_truncdfsi2_internal, fix_truncdfsi2_internal_gfxopt,
4550         fix_truncdfsi2_mfpgpr, fctiwz, btruncdf2, ceildf2, floordf2,
4551         rounddf2, floatdidf2, floatsidf_ppc64_mfpgpr, floatsidf_ppc64,
4552         floatunssidf_ppc64, fix_truncdfdi2, movdf_hardfloat32,
4553         movdf_hardfloat64_mfpgpr, movdf_hardfloat64, extenddftf2_fprs,
4554         extenddftf2_internal, trunctfdf2_internal2, fix_trunc_helper,
4555         abstf2_internal, movdf_update1, movdf_update2, cmpdf_internal1,
4556         cmptf_internal1, *cmptf_internal2): Condition on
4557         TARGET_DOUBLE_FLOAT.
4558         (aux_truncdfsf2, negsf2, *negsf2, abssf2, *abssf2, addsf3, subsf3,
4559         mulsf3, divsf3, sqrtsf2, copysignsf3, smaxsf3, sminsf3, movsfcc,
4560         *fselsfsf4, fixuns_truncsfsi2, fix_truncsfsi2, floatunssisf2,
4561         btruncsf2, ceilsf2, floorsf2, roundsf2, floatdisf2_internal1,
4562         floatdisf2_internal2, *movsf_hardfloat, trunctfsf2_fprs,
4563         *movsf_update1, *movsf_update2, *cmpsf_internal1): Condition on
4564         TARGET_SINGLE_FLOAT.
4565         (divsf3, sqrtsf2, divdf3, divdf3_fpr): Condition on TARGET_SIMPLE_FPU.
4566         * config/rs6000/rs6000.opt (-msingle-float): New.
4567         (-mdouble-float): New.
4568         (-msimple-fpu): New.
4569         * doc/invoke.texi (RS/6000 and PowerPC Options): Add
4570         -msingle-float, -mdouble-float, -msimple-fpu options.
4571         * config/rs6000/rs6000-c.c (rs6000_cpu_cpp_builtins): Set
4572         _SOFT_DOUBLE for -msingle-float.
4573         * config.gcc: New config for target=powerpc-xilinx-eabi.
4574
4575 2008-09-29  Tobias Grosser  <grosser@fim.uni-passau.de>
4576
4577         * graphite.c (dot_all_scops_1): Remove unused checks. SCoPs always
4578         have exit and entry.
4579         (new_scop): Take entry and exit edge to define new SCoP.
4580         (sd_region_p): New structure used during SCoP detection.
4581         (move_scops): Delete.
4582         (move_sd_regions): New.
4583         (scopdet_info): Change the definition from edges back to basic_blocks.
4584         (scopdet_edge_info):  Work on basic_blocks and rename to
4585         scopdet_basic_block_info.
4586         (split_difficult_bb): At the moment removed. We should later
4587         add it at another place.
4588         (build_scops_1): Work on basic_blocks.
4589         (bb_in_sd_region): New.
4590         (find_single_entry_edge): New.
4591         (find_single_exit_edge): New.
4592         (create_single_entry_edge): New.
4593         (sd_region_without_exit): New.
4594         (create_single_exit_edge): New.
4595         (unmark_exit_edges): New.
4596         (mark_exit_edges): New.
4597         (create_sese_edges): New.
4598         (build_graphite_scops): New.
4599         (build_scops): Make SCoPs SESE.
4600         (limit_scops): Use the new functions.
4601
4602 2008-09-29  Hans-Peter Nilsson  <hp@axis.com>
4603
4604         * config/cris/cris.h (IRA_COVER_CLASSES): Define.
4605
4606 2008-09-28  Andrew Pinski  <andrew_pinski@playstation.sony.com>
4607
4608         PR target/37640
4609         * config/rs6000/rs6000.c (rs6000_expand_compare_and_swapqhi): Force
4610         address to a register before taking the lower part.
4611
4612 2008-09-28  Kaz Kojima  <kkojima@gcc.gnu.org>
4613
4614         * config/sh/sh.h (OVERRIDE_OPTIONS): Unset flag_dwarf2_cfi_asm
4615         for SHmedia.
4616
4617 2008-09-28  Andrew Pinski  <andrew_pinski@playstation.sony.com>
4618             Kaushal Kantawala  <kaushal_kantawala@playstation.sony.com>
4619
4620         PR tree-opt/36891
4621         * tree-ssa-loop-im.c (rewrite_reciprocal): Set DECL_GIMPLE_REG_P on
4622         the newly created variable.
4623         Create a VECTOR_CST of all 1s for vector types.
4624
4625 2008-09-28  Eric Botcazou  <ebotcazou@adacore.com>
4626
4627         PR middle-end/36575
4628         * fold-const.c (div_and_round_double) <ROUND_DIV_EXPR>: Fix typo.
4629
4630 2008-09-28  Eric Botcazou  <ebotcazou@adacore.com>
4631
4632         * expmed.c (store_fixed_bit_field): Always use convert_to_mode in
4633         order to convert between modes.
4634         (extract_bit_field_1): Test TRULY_NOOP_TRUNCATION on the right mode.
4635
4636 2008-09-27  Kaz Kojima  <kkojima@gcc.gnu.org>
4637
4638         * config/sh/sh.c (sh_gimplify_va_arg_expr): Use VIEW_CONVERT_EXPR
4639         if needed.
4640
4641 2008-09-26  Vladimir Makarov  <vmakarov@redhat.com>
4642
4643         Revert:
4644         2008-09-25  Vladimir Makarov  <vmakarov@redhat.com>
4645         * ira-lives.c:...
4646         * doc/rtl.texi:...
4647
4648 2008-09-26  Adam Nemet  <anemet@caviumnetworks.com>
4649
4650         * config/mips/mips.h (ISA_HAS_DMUL3, ISA_HAS_BADDU, ISA_HAS_BBIT,
4651         ISA_HAS_CINS, ISA_HAS_EXTS, ISA_HAS_SEQ_SNE, ISA_HAS_POP): Change
4652         them to yield false with MIPS16.
4653
4654 2008-09-26  Jakub Jelinek  <jakub@redhat.com>
4655
4656         PR middle-end/37275
4657         * dwarf2out.c (tls_mem_loc_descriptor): New function.
4658         (mem_loc_descriptor): Use it for MEM.  For PLUS fail if second
4659         mem_loc_descriptor failed.  Accept UNSPEC.
4660         (loc_descriptor): Use tls_mem_loc_descriptor for MEM.  For PARALLEL
4661         fail if one of the loc_descriptor calls for pieces failed.
4662         (loc_descriptor_from_tree_1): Handle even DECL_EXTERNAL __thread vars,
4663         as long as they bind locally.  For COMPONENT_REF, ARRAY_REF etc. fail
4664         if loc_descriptor_from_tree_1 on offset failed.
4665
4666         PR middle-end/37576
4667         * opts.c (common_handle_option): Don't call print_specific_help with
4668         CL_SAVE as first argument.
4669
4670 2008-09-26  Peter O'Gorman  <pogma@thewrittenword.com>
4671             Steve Ellcey  <sje@cup.hp.com>
4672
4673         * configure: Regenerate for new libtool.
4674         * aclocal.m4: Ditto.
4675
4676 2008-09-26  Pat Haugen  <pthaugen@us.ibm.com>
4677
4678         * config/rs6000/rs6000.c (rs6000_emit_allocate_stack): Use correct
4679         alias set on MEM when saving stack pointer.
4680         * config/rs6000/rs6000.md (allocate_stack): Likewise
4681
4682 2008-09-26  Dorit Nuzman  <dorit@il.ibm.com>
4683
4684         PR tree-optimization/37574
4685         * tree-vectorizer.c (vect_is_simple_use): Fix indentation.
4686         * tree-vect-transform.c (vect_get_constant_vectors): Use vectype
4687         instead of vector_type for constants. Take computation out of loop.
4688         (vect_get_vec_def_for_operand): Use only vectype for constant case,
4689         and use only vector_type for invariant case.
4690         (get_initial_def_for_reduction): Use vectype instead of vector_type.
4691
4692 2008-09-25  Jakub Jelinek  <jakub@redhat.com>
4693
4694         PR c/37645
4695         * c-common.c (handle_weakref_attribute): Ignore the attribute unless
4696         the decl is a VAR_DECL or FUNCTION_DECL.
4697
4698 2008-09-25  Vladimir Makarov  <vmakarov@redhat.com>
4699
4700         PR middle-end/37535
4701         * ira-lives.c (mark_reg_live, mark_reg_dead): New functions.
4702         (mark_ref_live, mark_ref_dead): Use them.
4703         (def_conflicts_with_inputs_p): Remove.
4704         (mark_early_clobbers): New function.
4705         (process_bb_node_lives): Call preprocess_constraints and
4706         mark_early_clobbers.
4707
4708         * doc/rtl.texi (clobber): Change how RA deals with clobbers.
4709
4710 2008-09-25  Vladimir Makarov  <vmakarov@redhat.com>
4711
4712         PR middle-end/37448
4713         * ira-int.h (IRA_ALLOCNO_TEMP): Rename to ALLOCNO_TEMP.
4714         (ira_compress_allocno_live_ranges): New prototype.
4715
4716         * ira-color.c: Rename IRA_ALLOCNO_TEMP to ALLOCNO_TEMP.
4717         (coalesced_allocnos_living_at_program_points): New.
4718         (coalesced_allocnos_live_at_points_p,
4719         set_coalesced_allocnos_live_points): New functions.
4720         (coalesce_spill_slots): Rewrite.
4721
4722         * ira-lives.c (remove_some_program_points_and_update_live_ranges,
4723         ira_compress_allocno_live_ranges): New functions.
4724
4725         * ira-build.c (ira_flattening): Call
4726         ira_compress_allocno_live_ranges.
4727         (ira_build): Ditto.
4728
4729 2008-09-25  H.J. Lu  <hongjiu.lu@intel.com>
4730
4731         * config/i386/i386.md: Check cmp/branch fuse for cmp peephole
4732         optimization.
4733
4734 2008-09-25  Richard Sandiford  <rdsandiford@googlemail.com>
4735
4736         * combine.c (make_compound_operation): Handle the 'E' format.
4737         (count_rtxs): Likewise.
4738         (update_table_tick): Likewise.
4739         (get_last_value_validate): Likewise.
4740
4741 2008-09-25  Eric Botcazou  <ebotcazou@adacore.com>
4742
4743         * dbxout.c (dbxout_parms): Fetch the inner REG inside a PARALLEL.
4744
4745 2008-09-25 Sergei Dyshel <sergeid@il.ibm.com>
4746
4747         * matrix-reorg.c (transform_allocation_sites): Initializers
4748         added to avoid the warning.
4749
4750 2008-09-25  Martin Jambor  <mjambor@suse.cz>
4751
4752         * cgraph.c (free_nodes): New variable.
4753         (NEXT_FREE_NODE): New macro.
4754         (cgraph_create_node): Reuse nodes from the free list.  Do not
4755         update uid if doing so.
4756         (cgraph_remove_node): Add the node to the free list.
4757
4758 2008-09-25  Gerald Pfeifer  <gerald@pfeifer.com>
4759
4760         * config/freebsd.h (HANDLE_PRAGMA_PACK_PUSH_POP): Define.
4761
4762 2008-09-24  Richard Henderson  <rth@redhat.com>
4763
4764         * dwarf2.h (DW_OP_GNU_encoded_addr): New.
4765         * unwind-dw2.c (execute_stack_op): Handle it.
4766
4767 2008-09-24  David Edelsohn  <edelsohn@gnu.org>
4768
4769         Revert:
4770         2008-09-24  Michael J. Eager  <eager@eagercon.com>
4771
4772 2008-09-24  Aldy Hernandez  <aldyh@redhat.com>
4773
4774         * c-common.c (fname_decl): New location argument.
4775         * c-common.h (fname_decl): Same.
4776         * c-parser.c (c_lex_one_token): Use {warning,error}_at instead of
4777         {warning,error}.
4778         (c_parser_typeof_specifier): Same.
4779         (c_parser_parms_list_declarator): Same.
4780         (c_parser_asm_string_literal): Same.
4781         (c_parser_compound_statement_nostart): Same.
4782         (c_parser_label): Same.
4783         (c_parser_do_statement): Same.
4784         (c_parser_asm_statement): Same.
4785         (c_parser_unary_expression): Same.
4786         (c_parser_sizeof_expression): Same.
4787         (c_parser_postfix_expression): Same.
4788         (c_parser_pragma): Same.
4789         (c_parser_omp_clause_collapse): Same.
4790         (c_parser_omp_clause_num_threads): Same.
4791         (c_parser_omp_clause_schedule): Same.
4792         (c_parser_omp_all_clauses): Same.
4793         (c_parser_omp_sections_scope): Same.
4794         (c_parser_omp_for_loop): Same.  Pass condition's location to
4795         c_objc_common_truthvalue_conversion.
4796         (c_parser_enum_specifier): Remove comment.
4797
4798 2008-09-24  Michael J. Eager  <eager@eagercon.com>
4799
4800         * config/rs6000/predicates.md (easy_fp_constant): Single FP consts
4801         are easy.
4802         * config/rs6000/rs6000.c (rs6000_override_options): Move
4803         rs6000_init_hard_regno_mode_ok after all options changed.
4804         Set rs6000_single_float, rs6000_double_float if TARGET_HARD_FLOAT.
4805         (rs6000_handle_option): Process -msingle-float, -mdouble-float,
4806         -msimple-fpu flags.  Add warning messages if single FP not configured.
4807         (rs6000_file_start): Output gnu_attribute for single-float.
4808         (legitimate_lo_sum_address_p): Condition on TARGET_DOUBLE_FLOAT.
4809         (rs6000_legitimize_address): Likewise.
4810         (rs6000_legitimize_reload_address): Likewise.
4811         (rs6000_emit_move): Condition on TARGET_DOUBLE_FLOAT,
4812         TARGET_SINGLE_FLOAT.
4813         (function_arg_advance): Likewise.
4814         (function_arg): Likewise.
4815         (setup_incoming_varargs): Condition on TARGET_DOUBLE_FLOAT.
4816         (rs6000_gimplify_va_arg): Condition on TARGET_DOUBLE_FLOAT,
4817         TARGET_SINGLE_FLOAT.
4818         (rs6000_split_multireg_move): Condition on TARGET_DOUBLE_FLOAT.
4819         (rs6000_emit_prologue): Likewise.
4820         (rs6000_function_value): Condition on TARGET_DOUBLE_FLOAT,
4821         TARGET_SINGLE_FLOAT.
4822         (rs6000_libcall_value): Likewise.
4823         * config/rs6000/rs6000.h (TARGET_SINGLE_FLOAT): New default to 1.
4824         (TARGET_DOUBLE_FLOAT): New default to 1
4825         (TARGET_SIMPLE_FPU): New default to 0
4826         (TARGET_SINGLE_FPU): New default to 0
4827         (TARGET_SINGLE_FLOAT_MODE): New.
4828         (TARGET_DOUBLE_FLOAT_MODE): New.
4829         * config/rs6000/singlefp.h: New; redefine TARGET_SINGLE_FLOAT,
4830         TARGET_DOUBLE_FLOAT, TARGET_SIMPLE_FPU, TARGET_SINGLE_FPU,
4831         UNITS_PER_FP_WORD
4832         * config/rs6000/rs6000.md (define_mode_iterator): Condition on
4833         TARGET_DOUBLE_FLOAT, TARGET_SINGLE_FLOAT.
4834         (extendsfdf2, extendsfdf2_fpr, truncdfsf2, truncdfsf2_fpr,
4835         copysigndf3,fseldfsf4, negdf2, negdf2_fpr, absdf2, absdf2_fpr,
4836         nabsdf2_fpr, adddf3, adddf3_fpr, subdf3, subdf3_fpr, muldf3,
4837         muldf3_fpr, divdf3, divdf3_fpr, sqrtdf2, smaxdf3, smindf3,
4838         movdfcc, *fseldfdf4, floatsidf2, *floatsidf2_internal,
4839         floatunssidf2, *floatunssidf2_internal, fix_truncdfsi2,
4840         *fix_truncdfsi2_internal, fix_truncdfsi2_internal_gfxopt,
4841         fix_truncdfsi2_mfpgpr, fctiwz, btruncdf2, ceildf2, floordf2,
4842         rounddf2, floatdidf2, floatsidf_ppc64_mfpgpr, floatsidf_ppc64,
4843         floatunssidf_ppc64, fix_truncdfdi2, movdf_hardfloat32,
4844         movdf_hardfloat64_mfpgpr, movdf_hardfloat64, extenddftf2_fprs,
4845         extenddftf2_internal, trunctfdf2_internal2, fix_trunc_helper,
4846         abstf2_internal, movdf_update1, movdf_update2, cmpdf_internal1,
4847         cmptf_internal1, *cmptf_internal2): Condition on
4848         TARGET_DOUBLE_FLOAT.
4849         (aux_truncdfsf2, negsf2, *negsf2, abssf2, *abssf2, addsf3, subsf3,
4850         mulsf3, divsf3, sqrtsf2, copysignsf3, smaxsf3, sminsf3, movsfcc,
4851         *fselsfsf4, fixuns_truncsfsi2, fix_truncsfsi2, floatunssisf2,
4852         btruncsf2, ceilsf2, floorsf2, roundsf2, floatdisf2_internal1,
4853         floatdisf2_internal2, *movsf_hardfloat, trunctfsf2_fprs,
4854         *movsf_update1, *movsf_update2, *cmpsf_internal1): Condition on
4855         TARGET_SINGLE_FLOAT.
4856         (divsf3, sqrtsf2, divdf3, divdf3_fpr): Condition on TARGET_SIMPLE_FPU.
4857         * config/rs6000/rs6000.opt (-msingle-float): New.
4858         (-mdouble-float): New.
4859         (-msimple-fpu): New.
4860         * doc/invoke.texi (RS/6000 and PowerPC Options): Add
4861         -msingle-float, -mdouble-float, -msimple-fpu options.
4862         * config/rs6000/rs6000-c.c (rs6000_cpu_cpp_builtins): Set
4863         _SOFT_DOUBLE for -msingle-float.
4864         * config.gcc: New config for target=powerpc-xilinx-eabi.
4865
4866 2008-09-23  Eric Botcazou  <ebotcazou@adacore.com>
4867
4868         * config/sparc/constraints.md: New file.
4869         * config/sparc/sparc.md: Include it.
4870         * config/sparc/sparc-protos.h (memory_ok_for_ldd): Declare.
4871         (sparc_extra_constraint_check): Delete.
4872         * config/sparc/sparc.c (register_ok_for_ldd): Minor tweaks.
4873         (memory_ok_for_ldd): New predicate.
4874         (sparc_extra_constraint_check): Delete.
4875         * config/sparc/sparc.h (REG_CLASS_FROM_LETTER): Likewise.
4876         (CONST_OK_FOR_LETTER_P): Likewise.
4877         (CONST_DOUBLE_OK_FOR_LETTER_P): Likewise.
4878         (EXTRA_CONSTRAINT): Likewise.
4879
4880 2008-08-23  Steve Ellcey  <sje@cup.hp.com>
4881
4882         * regrename.c (do_replace): Copy REG_POINTER value to new reg.
4883
4884 2008-09-23  Richard Sandiford  <rdsandiford@googlemail.com>
4885
4886         * alias.c (find_base_value): Use FIND_BASE_TERM.
4887         * doc/tm.texi (FIND_BASE_TERM): Update documentation.
4888
4889 2008-09-23  Richard Sandiford  <rdsandiford@googlemail.com>
4890
4891         * config/i386/i386.c: Include cselib.h.
4892         (ix86_pic_register_p): New function.
4893         (ix86_delegitimize_address): Use it to check for the PIC register.
4894
4895 2008-09-23  Richard Sandiford  <rdsandiford@googlemail.com>
4896
4897         * doc/tm.texi (FIND_BASE_TERM): Expand documentation.
4898         * config/i386/i386.c (ix86_find_base_term): Don't check for
4899         SYMBOL_REF and LABEL_REF.
4900
4901 2008-09-23  Richard Sandiford  <rdsandiford@googlemail.com>
4902
4903         * config/i386/i386.c (ix86_delegitimize_address): Wrap the
4904         constant PLUS in a CONST.
4905
4906 2008-09-23  Kai Tietz  <kai.tietz@onevision.com>
4907
4908         * config/i386/i386.c (ix86_function_ok_for_sibcall): Correct
4909         check for sibcall support for w64.
4910
4911 2008-09-23  Eric Botcazou  <ebotcazou@adacore.com>
4912
4913         * c-ppoutput.c (cb_used_define): Do nothing for a builtin node.
4914
4915 2008-09-23  Aldy Hernandez  <aldyh@redhat.com>
4916
4917         * c-tree.h: Add argument to c_objc_common_truthvalue_conversion,
4918         parser_build_binary_op.
4919         * c-decl.c (build_enumerator): Pass location to build_binary_op.
4920         * c-typeck.c (build_array_ref): Same.
4921         (parser_build_unary_op): New location argument.
4922         (pointer_diff): Pass location to build_binary_op,
4923         c_objc_common_truthvalue_conversion.
4924         (build_modify_expr): Same.
4925         (build_unary_op): New location argument.
4926         (build_binary_op): New location argument.
4927         (c_objc_common_truthvalue_conversion): Pass location to
4928         c_*common_truthvalue_conversion.
4929         * c-convert.c (convert): Same.
4930         * c-common.c (binary_op_error): New location argument.
4931         (pointer_int_sum): Pass location to build_binary_op.
4932         (c_common_truthvalue_conversion): New location argument.
4933         (warn_for_sign_compare): Same.
4934         * c-common.h: Add location argument to c_common_truthvalue_conversion,
4935         binary_op_error, build_binary_op, warn_for_sign_compare.
4936         * c-parser.c (c_parser_condition): Pass location to
4937         c_*common_truthvalue_conversion.
4938         (c_parser_conditional_expression): Save condition's location and pass
4939         it on down.
4940         (c_parser_binary_expression): Same, but for the binary operator's
4941         location.
4942         (c_parser_omp_for_loop): Pass location to
4943         c_objc_common_truthvalue_conversion.
4944
4945 2008-09-23  Martin Jambor  <mjambor@suse.cz>
4946
4947         * cgraph.c (cgraph_free_edge): Use sizeof(*e).
4948         (cgraph_node_remove_callees): New temporary f.  Hold the next item
4949         in f when looping.
4950         (cgraph_node_remove_callers): Likewise.
4951
4952         * ipa-prop.c (ipa_edge_removal_hook): Use ATTRIBUTE_UNUSED.
4953         (ipa_node_removal_hook): Likewise.
4954
4955         * doc/gimple.texi (gimple_copy_call_skip_args): Changed to
4956         gimple_call_copy_skip_args and moved to the gimple_call section.
4957         * gimple.c (gimple_copy_call_skip_args): Renamed to
4958         gimple_call_copy_skip_args.  Changed al users.
4959
4960 2008-09-22  Vladimir Makarov  <vmakarov@redhat.com>
4961
4962         * ira-color.c (start_allocno_priorities): Rename to
4963         setup_allocno_priorities.  Use costs and
4964         ALLOCNO_EXCESS_PRESSURE_POINTS_NUM instead of frequencies and
4965         range lengths.  Get rid off doubles.
4966         (ira_fast_allocations): Call start_allocno_priorities.
4967
4968 2008-09-22  David Daney  <ddaney@avtrex.com>
4969
4970         PR target/37593
4971         * config/mips/mips.h (FUNCTION_PROFILER): Call _mcount via a
4972         register if TARGET_LONG_CALLS.
4973
4974 2008-09-22  Richard Guenther  <rguenther@suse.de>
4975
4976         PR tree-optimization/37145
4977         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Re-enable
4978         value-numbering union accesses with their offset and size only.
4979         (visit_reference_op_load): Fix simplification of inserted conversions.
4980         * tree-ssa-pre.c (find_or_generate_expression): Do not
4981         recursively generate expressions if running FRE.
4982
4983 2008-09-22  Adam Nemet  <anemet@caviumnetworks.com>
4984
4985         * config/mips/mips.h (ISA_HAS_BADDU): New macro.
4986         * config/mips/mips.md (*baddu_si_eb, *baddu_si_el, *baddu_di<mode>):
4987         New patterns.
4988
4989 2008-09-22  Richard Guenther  <rguenther@suse.de>
4990
4991         PR tree-optimization/37145
4992         * tree-ssa-pre.c (fully_constant_expression): Simplify builtin calls.
4993         (phi_translate_1): Constant fold references.
4994
4995 2008-09-22  Ira Rosen  <irar@il.ibm.com>
4996
4997         PR tree-optimization/37482
4998         * tree-vectorizer.h (struct _slp_instance): Add new field.
4999         (SLP_INSTANCE_FIRST_LOAD_STMT): New.
5000         (get_earlier_stmt): New function.
5001         * tree-vect-analyze.c (vect_find_first_load_in_slp_instance): New
5002         function.
5003         (vect_analyze_slp_instance): Set SLP_INSTANCE_FIRST_LOAD_STMT.
5004         * tree-vect-transform.c (vect_finish_stmt_generation): Remove the
5005         asserts that GSI points to the scalar statement being vectorized.
5006         Set new statement location according to GSI.
5007         (vect_schedule_slp_instance): Use GSI of
5008         SLP_INSTANCE_FIRST_LOAD_STMT when vectorizing loads.
5009
5010 2008-09-21  Jan Hubicka  <jh@suse.cz>
5011
5012         * ipa-cp.c (ipcp_estimate_growth): Check recursive calls.
5013         (ipcp_insert_stage): Update dead_nodes bitmap.
5014
5015 2008-09-22  Danny Smith  <dannysmith@users.sourceforge.net>
5016
5017         PR target/37528
5018         * config/i386/t-cygming (SHLIB_LC): Remove.
5019         (SHLIB_LINK): Don't add static objects to SHLIB_IMPLIB
5020         * config/i386/t-cygwin (SHLIB_LC): Specify all required libraries.
5021
5022 2008-09-22  Hans-Peter Nilsson  <hp@axis.com>
5023
5024         PR middle-end/37170
5025         PR middle-end/37280
5026         * final.c (mark_symbol_ref_as_used): New helper function.
5027         (output_operand): Instead of just looking inside MEMs for
5028         SYMBOL_REFs, use new helper function and for_each_rtx.
5029         * varasm.c (assemble_external): Move #ifndef ASM_OUTPUT_EXTERNAL
5030         to after weak-handling.  Don't mark decls with TREE_STATIC as weak.
5031         Make head comment more general.
5032         * config/darwin.c (machopic_output_indirection): Handle weak
5033         references here, like in assemble_external.
5034
5035 2008-09-21  Eric Botcazou  <ebotcazou@adacore.com>
5036
5037         * config/sparc/sparc-protos.h (gen_compare_operator): Declare.
5038         (sparc_emit_float_lib_cmp): Change return type.
5039         * config/sparc/sparc.c (gen_compare_reg): Add comment about TFmode.
5040         (gen_compare_operator): New function.
5041         (sparc_emit_float_lib_cmp): Return the new operator to be used in
5042         the comparison sequence.  Minor tweaks.
5043         * config/sparc/sparc.md (seq, sne, sgt, slt, sge, sle): Assert
5044         that the final operator and the result of sparc_emit_float_lib_cmp
5045         match for software TFmode; use emit_insn in lieu of emit_jump_insn.
5046         (beq, bne, bgt, blt, bge, ble, bunordered, bordered, bungt, bunlt,
5047         buneq, bunge, bunle, bltgt): Assert that the final operator and the
5048         result of sparc_emit_float_lib_cmp match for software TFmode.
5049         (movqicc, movhicc, movsicc, movdicc): Merge into...
5050         (mov<I:mode>cc): ...this.
5051         (movsfcc, movdfcc, movtfcc): Merge into...
5052         (mov<F:mode>cc): ...this.
5053         (movqi_cc_sp64, movhi_cc_sp64, movsi_cc_sp64, movdi_cc_sp64): Merge
5054         into...
5055         (mov<I:mode>_cc_v9): ...this.
5056         (movdi_cc_sp64_trunc): Delete.
5057         (movqi_cc_reg_sp64, movhi_cc_reg_sp64, movsi_cc_reg_sp64,
5058         movdi_cc_reg_sp64): Merge into...
5059         (mov<I:mode>_cc_reg_sp64): ...this.
5060         (movsf_cc_sp64): Rename into...
5061         (movsf_cc_v9): ...this.
5062         (movdf_cc_sp64): Rename into...
5063         (movdf_cc_v9): ...this.
5064         (movtf_cc_hq_sp64): Rename into...
5065         (movtf_cc_hq_v9): ...this.
5066         (movtf_cc_sp64): Rename into...
5067         (movtf_cc_v9): ...this.  Adjust for renaming of movdf_cc_sp64.
5068
5069 2008-09-21  Diego Novillo  <dnovillo@google.com>
5070
5071         * doc/gccint.texi: Include generic.texi and gimple.texi.
5072         Re-order index.
5073         * doc/tree-ssa.texi (GENERIC): Move to generic.texi.
5074         (GIMPLE): Move to gimple.texi.
5075         (Annotations): Remove references to to stmt_ann_t and
5076         ssa_name_ann_t.
5077         (SSA Operands): Rename from 'Statement Operands'.
5078         * doc/generic.texi: New.
5079         * doc/gimple.texi: New.
5080         * Makefile.in (TEXI_GCCINT_FILES): Add generic.texi and gimple.texi.
5081         * Makefile.in (TEXI_GCCINT_FILES):
5082         * gimple.c (gimple_copy_call_skip_args): Rename from
5083         giple_copy_call_skip_args.  Update all users.
5084         * doc/gimple.texi (gimple_copy_call_skip_args): Document.
5085
5086 2008-09-21  Ira Rosen  <irar@il.ibm.com>
5087
5088         PR tree-optimization/37539
5089         * tree-vect-transform.c (vect_transform_strided_load): Save vector
5090         statement in related statement field only for the first load of the
5091         group of loads with the same data reference.
5092
5093 2008-09-20  Adam Nemet  <anemet@caviumnetworks.com>
5094
5095         * config/mips/mips.h (TUNE_OCTEON): New macro.
5096         * config/mips/mips.c (mips_issue_rate): Return 2 for Octeon.
5097         (mips_multipass_dfa_lookahead): Return 2 for Octeon.
5098         * config/mips/octeon.md: New file.
5099         * config/mips/mips.md: Include octeon.md.  Restore
5100         semi-alphabetical order of include files.
5101
5102 2008-09-20  H.J. Lu  <hongjiu.lu@intel.com>
5103
5104         PR target/37571
5105         * config/i386/i386.md (*jcc_fused_1): Removed.
5106         (*jcc_fused_2): Likewise.
5107         (*jcc_fused_3): Likewise.
5108         (*jcc_fused_4): Likewise.
5109
5110 2008-09-20  Richard Sandiford  <rdsandiford@googlemail.com>
5111
5112         * doc/tm.texi (TARGET_IRA_COVER_CLASSES): Define.
5113         (IRA_COVER_CLASSES): Refer to TARGET_IRA_COVER_CLASSES.
5114         * target.h (gcc_target): Add ira_cover_classes.
5115         * ira.c: Remove IRA_COVER_CLASSES guards.
5116         (setup_cover_and_important_classes): Use targetm.ira_cover_classes
5117         instead of IRA_COVER_CLASSES.
5118         (setup_cover_and_important_classes): Remove IRA_COVER_CLASSES guard.
5119         (setup_class_translate): Likewise.
5120         (setup_reg_class_intersect_union): Likewise.
5121         (find_reg_class_closure): Replace IRA_COVER_CLASSES guard with a
5122         test of targetm.ira_cover_classes.
5123         * opts.c (decode_options): Use targetm.ira_cover_classes instead
5124         of IRA_COVER_CLASSES.
5125         * target-def.h (TARGET_IRA_COVER_CLASSES): Define.
5126         (TARGET_INITIALIZER): Include it.
5127         * targhooks.h (default_ira_cover_classes): Declare.
5128         * targhooks.c (default_ira_cover_classes): New function.
5129
5130 2008-09-19  Bob Wilson  <bob.wilson@acm.org>
5131
5132         * config/xtensa/xtensa.md (reload<mode>_literal): Handle MEM operands.
5133
5134 2008-09-19  Ian Lance Taylor  <iant@google.com>
5135
5136         * varasm.c (narrowing_initializer_constant_valid_p): Return
5137         NULL_TREE if ENDTYPE is not an integer.
5138
5139 2008-09-19  Andrew Pinski  <andrew_pinski@playstation.sony.com>
5140
5141         PR tree-opt/30930
5142         * tree-ssa.c (execute_update_addresses_taken): Also update
5143         DECL_GIMPLE_REG_P for vector and complex types.
5144
5145 2008-09-19  Andrew MacLeod  <amacleod@redhat.com>
5146             Jan Hubicka  <jh@suse.cz>
5147
5148         PR middle-end/37567
5149         * tree-ssa-ter.c (free_temp_expr_table): Make sure fields are actually
5150         empty before freeing them.
5151         (find_replaceable_exprs): Move asserts to free_temp_expr_table.
5152
5153 2008-09-18  Bob Wilson  <bob.wilson@acm.org>
5154
5155         * configure.ac: Add HAVE_AS_TLS check for Xtensa.
5156         * config/xtensa/predicates.md (tls_symbol_operand): New.
5157         * config/xtensa/xtensa.c (TARGET_HAVE_TLS): Define.
5158         (TARGET_CANNOT_FORCE_MEM): Define.
5159         (xtensa_tls_symbol_p): New.
5160         (xtensa_emit_move_sequence): Check for and legitimize TLS addresses.
5161         (xtensa_legitimate_address_p): Disallow constant pool TLS references.
5162         (xtensa_tls_module_base): New.
5163         (xtensa_call_tls_desc): New.
5164         (xtensa_legitimize_tls_address): New.
5165         (xtensa_legitimize_address): Handle TLS symbols.
5166         (xtensa_tls_referenced_p_1): New.
5167         (xtensa_tls_referenced_p): New.
5168         (xtensa_output_addr_const_extra): Handle UNSPEC_TPOFF and
5169         UNSPEC_DTPOFF.
5170         (XTENSA_BUILTIN_THREAD_POINTER): New.
5171         (XTENSA_BUILTIN_SET_THREAD_POINTER): New.
5172         (xtensa_init_builtins): Set NOTHROW and READONLY for umulsidi3
5173         builtin.  Add declarations for __builtin_thread_pointer and
5174         __builtin_set_thread_pointer.
5175         (xtensa_fold_builtin): Recognize new builtins.
5176         (xtensa_expand_builtin): Expand new builtins.
5177         * config/xtensa/xtensa.h (XCHAL_HAVE_THREADPTR): Define default value.
5178         (TARGET_THREADPTR): Define.
5179         (HAVE_AS_TLS): Define default value.
5180         (LEGITIMATE_CONSTANT_P): Disallow TLS references.
5181         * config/xtensa/xtensa.md (UNSPEC_TPOFF, UNSPEC_DTPOFF): New.
5182         (UNSPEC_TLS_FUNC, UNSPEC_TLS_ARG, UNSPEC_TLS_CALL, UNSPEC_TP): New.
5183         (UNSPECV_SET_TP): New.
5184         (sym_TPOFF, sym_DTPOFF): New.
5185         (load_tp, set_tp, tls_func, tls_arg, tls_call): New.
5186         * config/xtensa/xtensa-protos.h (xtensa_tls_referenced_p): Declare.
5187         * configure: Regenerated.
5188
5189 2008-09-18  H.J. Lu  <hongjiu.lu@intel.com>
5190
5191         PR target/37394
5192         * config/ia64/ia64.c (ia64_optimization_options): Move
5193         checking and setting flag_schedule_insns_after_reload and
5194         ia64_flag_schedule_insns2 back to ...
5195         (ia64_override_options): Here.
5196
5197 2008-09-18  Andrew Pinski  <andrew_pinski@playstation.sony.com>
5198
5199         PR rtl-opt/37451
5200         * loop-doloop.c (doloop_modify): New argument zero_extend_p and
5201         zero extend count after the correction to it is done.
5202         (doloop_optimize): Update call to doloop_modify, don't zero extend
5203         count before call.
5204
5205 2008-09-18  Martin Jambor  <mjambor@suse.cz>
5206
5207         * ipa-cp.c (ipcp_estimate_growth): Return 0 instead of false.
5208
5209         * ipa-prop.c: Correct comments.
5210         * ipa-prop.h: Likewise.
5211
5212 2008-09-18  Jan Hubicka  <jh@suse.cz>
5213
5214         PR middle-end/37448
5215         * ipa-reference.c (ipa_reference_local_vars_info_d,
5216         ipa_reference_global_vars_info_d,
5217         ipa_reference_local_vars_info_t, ipa_reference_global_vars_info_t,
5218         ipa_reference_vars_info_t): Move here from ipa-reference.h
5219         (node_duplication_hook_holder, node_removal_hook_holder): New.
5220         (get_reference_vars_info_from_cgraph): Rename to ...
5221         (get_reference_vars_info): ... this one, use cgraph uids.
5222         (get_local_reference_vars_info, get_global_reference_vars_info):
5223         Use cgraph instead of decl.
5224         (ipa_reference_get_read_local, ipa_reference_get_written_local):
5225         Remove.
5226         (ipa_reference_get_read_global, ipa_reference_get_not_read_global
5227         ipa_reference_get_written_global,
5228         ipa_reference_get_not_written_global): Use cgraph argument.
5229         (check_call): Simplify avail check.
5230         (scan_stmt_for_static_refs): Update.
5231         (propagate_bits): Update.
5232         (merge_callee_local_info): Remove.
5233         (init_function_info): Use cgraph nodes.
5234         (clean_function_local_data): Break out from ...
5235         (clean_function): ... here.
5236         (copy_local_bitmap, copy_global_bitmap): New functions.
5237         (duplicate_node_data, remove_node_data): New functions.
5238         (generate_summary): Register hooks; use visibility instead of
5239         master clones.
5240         (propafate): Use cgraph nodes; copy bitmap to each node in cycle.
5241         * ipa-reference.h (ipa_reference_local_vars_info_d,
5242         ipa_reference_global_vars_info_d,
5243         ipa_reference_local_vars_info_t, ipa_reference_global_vars_info_t,
5244         ipa_reference_vars_info_t): Move to ipa-reference.c
5245         (ipa_reference_get_read_local, ipa_reference_get_written_local):
5246         Remove.
5247         (ipa_reference_get_read_global, ipa_reference_get_written_global,
5248         ipa_reference_get_not_read_global,
5249         ipa_reference_get_not_written_global): Update prototype.
5250         * ipa-pure-const.c (funct_state_vec): Turn into VECtor.
5251         (init_state): Remove.
5252         (node_duplication_hook_holder, node_removal_hook_holder): New.
5253         (get_function_state, set_function_state): Use VECtor.
5254         (analyze_function): Check body availability.
5255         (add_new_function): Likewise.
5256         (duplicate_node_data, remove_node_data): New.
5257         (generate_summary): Register hooks; do not care about clones.
5258         (propafate): Do not care about clones; recursive functions are
5259         not looping.
5260         * ipa-utils.c (searchc, ipa_utils_reduced_inorder): Do not skip clones.
5261         * ipa-prop.c (edge_removal_hook_holder, node_removal_hook_holder,
5262         * edge_duplication_hook_holder, node_duplication_hook_holder): Make
5263         static.
5264         * tree-flow.h (function_ann_d): Remove reference_vars_info.
5265         * tree-ssa-opreands.c (add_call_clobber_ops, add_call_read_ops):
5266         Update call of ipa-reference accesors.
5267
5268 2008-09-18  Simon Baldwin  <simonb@google.com>
5269
5270         * c-opts.c (c_common_handle_option): Add handling for
5271         -Wbuiltin-macro-redefined command line option.
5272         * c.opt: Added builtin-macro-redefined option.
5273         * doc/invoke.texi (Warning Options): Add -Wbuiltin-macro-redefined
5274         documentation.
5275
5276 2008-09-18  Richard Guenther  <rguenther@suse.de>
5277
5278         PR tree-optimization/37258
5279         * tree-ssa-sccvn.c (vn_phi_compute_hash): Include the precision
5280         and signedness for integral types.
5281         (vn_phi_eq): Require compatible types.
5282
5283 2008-09-18  Jakub Jelinek  <jakub@redhat.com>
5284
5285         PR debug/34037
5286         * gimplify.c (gimplify_type_sizes): When not optimizing, ensure
5287         TYPE_MIN_VALUE and TYPE_MAX_VALUE is not is not DECL_IGNORED_P
5288         VAR_DECL.
5289         * cfgexpand.c (expand_used_vars): Keep DECL_ARTIFICIAL
5290         !DECL_IGNORED_P vars in local_decls list for instantiate_decls,
5291         ggc_free other TREE_LIST nodes from that chain.
5292         * function.c (instantiate_decls): Instantiate also DECL_RTL
5293         of vars in cfun->local_decls, free that list afterwards.
5294
5295 2008-09-18  Eric Botcazou  <ebotcazou@adacore.com>
5296
5297         * config/sparc/sol2.h (WIDEST_HARDWARE_FP_SIZE): Move to...
5298         * config/sparc/sparc.h (WIDEST_HARDWARE_FP_SIZE): ...here.
5299
5300 2008-09-18  Andrew MacLeod  <amacleod@redhat.com>
5301
5302         * tree-outof-ssa.c (eliminate_useless_phis): Fix formatting.
5303         * tree-flow-.h (struct immediate_use_iterator_d): Fix comment.
5304
5305 2008-09-18  Andrew MacLeod  <amacleod@redhat.com>
5306
5307         PR tree-optimization/37102
5308         * tree-outof-ssa.c (remove_gimple_phi_args): Remove all the PHI args
5309         from a node. Check to see if another PHI is dead.
5310         (eliminate_useless_phis): Rename from eliminate_virtual_phis and
5311         remove real PHIs which have no uses.
5312         (rewrite_out_of_ssa): Call eliminate_useless_phis.
5313
5314 2008-09-18  Richard Guenther  <rguenther@suse.de>
5315
5316         PR middle-end/37284
5317         * tree-cfg.c (remove_useless_stmts_1): Remove
5318         GIMPLE_CHANGE_DYNAMIC_TYPE if not optimizing.
5319
5320 2008-09-18  Nick Clifton  <nickc@redhat.com>
5321
5322         * config/frv/frv.h (IRA_COVER_CLASSES): Define.
5323         (SECONDARY_INPUT_RELOAD_CLASS): Omit unused argument in call
5324         to frv_secondary_reload_class.
5325         (SECONDARY_OUTPUT_RELOAD_CLASS): Likewise.
5326         * config/frv/frv.c (TARGET_SECONDARY_RELOAD): Define.
5327         (frv_secondary_reload_class): Omit unused parameter.
5328         (frv_secondary_reload): New function.  Handle the case when
5329         secondary_reload_class() is called before the reload_(in|out)
5330         _optabs have been initialised.
5331         * config/frv/frv-protos.h (frv_secondary_reload_class): Omit
5332         unused parameter.
5333         * config/frv/frv.md: Define an exclusion set between fr550_m0
5334         and fr550_f0.
5335
5336 2008-09-18  Richard Guenther  <rguenther@suse.de>
5337
5338         PR tree-optimization/37456
5339         * tree-ssa-reassoc.c (build_and_add_sum): If the stmt we
5340         want to insert after ends a BB insert on the single fallthru
5341         outgoing edge.
5342
5343 2008-09-18  Andreas Krebbel  <krebbel1@de.ibm.com>
5344
5345         * doc/invoke.texi: Document -mhard-dfp, -mno-hard-dfp.
5346         Mention -march=z9-109, z9-ec and z10.
5347
5348 2008-09-18  Uros Bizjak  <ubizjak@gmail.com>
5349
5350         PR rtl-optimization/37544
5351         * regrename.c (maybe_mode_change): Exit early when copy_mode
5352         is narrower than orig_mode and narrower than new_mode.
5353
5354 2008-09-18  Alexander Monakov  <amonakov@ispras.ru>
5355
5356         PR middle-end/37499
5357         * sched-int.h (struct _haifa_insn_data): Remove unused field ref_count.
5358
5359         * sched-rgn.c (ref_counts): Remove.
5360         (insn_referenced): New static variable.
5361         (INSN_REF_COUNT): Remove.
5362         (sched_run_compute_dependencies): Use insn_referenced instead of
5363         INSN_REF_COUNT.
5364         (add_branch_dependences): Likewise.  Delete dead assignment.
5365
5366 2008-09-17  Adam Nemet  <anemet@caviumnetworks.com>
5367
5368         * haifa-sched.c (dep_cost_1): Recognize the producer even if the
5369         consumer is an asm.  Add comment why this is important.
5370         (choose_ready): Add comment to the "INSN_CODE (insn) >= 0 ||
5371         recog_memoized (insn) < 0" assert.  Put ENABLE_CHECKING around it.
5372
5373 2008-09-17  Joseph Myers  <joseph@codesourcery.com>
5374
5375         * expr.c (emit_group_store): Do not shift before moving via a
5376         stack slot.
5377
5378 2008-09-17  Eric Botcazou  <ebotcazou@adacore.com>
5379
5380         * varasm.c (initializer_constant_valid_p): Forbid view-conversions
5381         from aggregate to non-aggregate type if the bit pattern is not fully
5382         preserved afterwards.
5383
5384 2008-09-17  Richard Guenther  <rguenther@suse.de>
5385
5386         * tree-cfg.c (verify_types_in_gimple_assign): Rename to ...
5387         (verify_gimple_assign): ... this.  Split into ...
5388         (verify_gimple_assign_unary): ... this,
5389         (verify_gimple_assign_binary): ... that,
5390         (verify_gimple_assign_single): ... and this.
5391         (verify_types_in_gimple_stmt): Call verify_gimple_assign.
5392         Fix GIMPLE_CHANGE_DYNAMIC_TYPE handling.
5393         (verify_types_in_gimple_min_lval): Handle TARGET_MEM_REF.
5394         (verify_types_in_gimple_reference): Be forgiving with
5395         VIEW_CONVERT_EXPRs.
5396         (verify_gimple_phi): Deal with virtual operands.
5397
5398         * tree.def (PREDICT_EXPR): Change to tcc_expression.
5399
5400 2008-09-17  Andrew Pinski  <andrew_pinski@playstation.sony.com>
5401
5402         * tree.c (get_callee_fndecl): Don't call the language hook.
5403         * langhooks.h (lang_hooks): Remove lang_get_callee_fndecl.
5404         * langhooks-def.h (LANG_HOOKS_GET_CALLEE_FNDECL): Kill.
5405         (LANG_HOOKS_INITIALIZER): Remove LANG_HOOKS_GET_CALLEE_FNDECL.
5406
5407 2008-09-17  Jakub Jelinek  <jakub@redhat.com>
5408
5409         * tree.c (protected_set_expr_location): Don't unnecessarily
5410         check for error_mark_node.
5411
5412 2008-09-17  Art Haas  <ahaas@impactweather.com>
5413
5414         * ipa-reference.c (analyze_function): Declare step only if
5415         ENABLE_CHECKING is defined.
5416
5417 2008-09-17  Jan Hubicka  <jh@suse.cz>
5418
5419         PR c++/18071
5420         * tree.h (DECL_INLINE): remove.
5421         (DECL_DECLARED_INLINE_P): Update docs.
5422         (DECL_NO_INLINE_WARNING_P): new.
5423         (tree_function_decl): Replace inline_flag by no_inline_warning_flag.
5424         * tree-inline.c (inlinable_function_p): Set DECL_NO_INLINE_WARNING_P.
5425
5426 2008-09-17  Jakub Jelinek  <jakub@redhat.com>
5427             Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
5428
5429         PR bootstrap/37441
5430         * dwarf2out.c (dwarf2out_do_cfi_asm) [MIPS_DEBUGGING_INFO]: Return
5431         false.
5432
5433 2008-09-17  Jan Hubicka  <jh@suse.cz>
5434
5435         * ipa-reference.c (ipa_obstack): Remove.
5436         (local_info_obstack, global_info_obstack): New.
5437         (add_static_var): We now handle variables only.
5438         (mark_address_taken, mark_load, mark_store): New functions based on ...
5439         (check_operand): ... remove.
5440         (get_asm_stmt_operands): Rename to ...
5441         (check_asm_memory_clobber): ... this. Look only for memory clobber.
5442         (scan_stmt_for_static_refs): Rewrite.
5443         (scan_op_for_static_refs): Rename to ...
5444         (scan_initializer_for_static_refs): do not look for VAR_DECL
5445         initializers; stop recursion on types and decls.
5446         (ipa_init): Use proper obstacks.
5447         (analyze_variable): Use scan_initializer_for_static_refs.
5448         (init_function_info): Use local obstack.
5449         (analyze_function): Simplify.
5450         (add_new_function): We don't need visited_nodes obstack.
5451         (generate_summary): Use proper obstacks; cleanup after propagation.
5452
5453 2008-09-17  Richard Guenther  <rguenther@suse.de>
5454
5455         PR middle-end/37385
5456         PR tree-optimization/37491
5457         * alias.c (get_alias_set): Use the canonical type.
5458         * tree-vect-transform.c (vectorizable_store): Use the type of
5459         the lhs for the vector type.  Adjust checking.
5460         (vectorizable_load): Adjust checking.
5461
5462 2008-09-16  Jakub Jelinek  <jakub@redhat.com>
5463             Adam Nemet  <anemet@caviumnetworks.com>
5464
5465         PR rtl-optimization/37483
5466         * ifcvt.c (noce_try_sign_mask): Use if_info->test_bb instead of
5467         if_info->insn_b's bb as argument to optimize_bb_for_speed_p.
5468         Rearrange code to better match the original comment.  Check
5469         t_unconditional first.  Improve comment.
5470
5471 2008-09-16  Jakub Jelinek  <jakub@redhat.com>
5472
5473         PR c/37529
5474         * gimplify.c (gimplify_expr) <case GOTO_EXPR>: If gimplification of
5475         GOTO_DESTINATION failed, don't create GIMPLE_GOTO.
5476
5477         PR c++/37530
5478         * gimplify.c (gimplify_expr) <case TRY_CATCH_EXPR>: Don't create
5479         GIMPLE_TRY if cleanup sequence is empty.
5480
5481 2008-09-16  Andrew Pinski  <andrew_pinski@playstation.sony.com>
5482
5483         PR middle-end/37263
5484         * tree-ssa-loop-ivopts.c (determine_use_iv_cost_condition): Prefer the
5485         eliminate IV if the cost are the same.
5486
5487 2008-09-16  Richard Guenther  <rguenther@suse.de>
5488
5489         PR middle-end/37380
5490         * tree-sra.c (sra_build_assignment): Do not call the gimplifier
5491         if not necessary.
5492
5493 2008-09-16  Richard Guenther  <rguenther@suse.de>
5494
5495         PR tree-optimization/37508
5496         * tree-vrp.c (simplify_truth_ops_using_ranges): Also allow -1.
5497
5498 2008-09-15  Kaz Kojima  <kkojima@gcc.gnu.org>
5499
5500         * config/sh/sh.md (movsf_ie): Fix length for TARGET_SH2A.
5501
5502 2008-09-15  Andrew Pinski  <andrew_pinski@playstation.sony.com>
5503
5504         * config/rs6000/rs6000.md (floatsidf2): Rewrite PowerPC64 case to
5505         use gen_floatdidf2 directly.
5506         (floatunssidf2): Likewise.
5507         (floatsidf_ppc64_mfpgpr): Remove.
5508         (floatsidf_ppc64): Remove.
5509         (floatunssidf_ppc64): Remove.
5510
5511 2008-09-15  Jakub Jelinek  <jakub@redhat.com>
5512
5513         * ira-color.c (finish_cost_update): Free update_cost_queue_elems
5514         rather than update_cost_queue.
5515
5516         * tree-ssa-alias.c (init_alias_info): Call bitmap_obstack_release
5517         in every call starting with the second one, instead of only when
5518         alias_bitmap_obstack.elements != NULL.
5519
5520         * tree-predcom.c (filter_suitable_components): Free all refs in
5521         act->refs vector before calling release_component.
5522         (add_ref_to_chain): Free ref if not adding it to chain->refs.
5523
5524         * tree-data-ref.c (free_subscripts): Free all subscript objects.
5525
5526         * tree-loop-linear.c (linear_transform_loops): Initialize
5527         lambda_obstack only after calling perfect_loop_nest_depth.
5528         Goto free_and_continue instead of just continue for later failures.
5529
5530         PR middle-end/37479
5531         * doc/invoke.texi: Document -fno-dwarf2-cfi-asm.
5532
5533         PR libmudflap/36397
5534         * tree-mudflap.c (mf_xform_derefs_1): Handle VIEW_CONVERT_EXPR.
5535
5536 2008-09-14  Andreas Schwab  <schwab@suse.de>
5537
5538         * tree-call-cdce.c (check_target_format): Accept Motorola formats.
5539
5540 2008-09-14  Jan Hubicka  <jh@suse.cz>
5541
5542         * invoke.texi (-fconserve-stack): Document.
5543         * opts.c (decode_options): Handle conserve_stack.
5544         * common.opt (fconvserve_stack): New.
5545
5546 2008-09-14  David Edelsohn  <edelsohn@gnu.org>
5547
5548         * config.host: Add x-aix to host_xmake_file.
5549         * config/rs6000/t-aix52: Do not override LDFLAGS.
5550         * config/rs6000/x-aix: New file.
5551
5552 2008-09-14  Andy Hutchinson  <hutchinsonandy@aim.com>
5553
5554         PR target/19636
5555         PR target/24894
5556         PR target/31644
5557         PR target/31786
5558         * config/avr/avr.c (legitimate_address_p): Fix problem where subreg
5559         is not recognized as a valid register usage. Allow REG_X to be used
5560         as a base pointer.
5561         * config/avr/avr.h (LEGITIMIZE_RELOAD_ADDRESS): Remove code that
5562         forces a reload when using a base register.
5563
5564 2008-09-14  Danny Smith  <dannysmith@users.sourceforge.net>
5565
5566         * config/i386/cygming-crtend.c (register_frame_ctor): If
5567         DEFAULT_USE_CXA_ATEXIT, register __gcc_deregister_frame
5568         directly with atexit.
5569         (deregister_frame_ctor): Rename to ...
5570         (deregister_frame_dtor): Use to call __gcc_deregister_frame
5571         if !DEFAULT_USE_CXA_ATEXIT.
5572
5573 2008-09-13  Jan Hubicka  <jh@suse.cz>
5574
5575         * cgraph.c: Include value-prof.h
5576         * Makefile.in (cgraph.o): Add value-prof.h dependency.
5577
5578 2008-09-13  Jan Hubicka  <jh@suse.cz>
5579
5580         PR middle-end/32581
5581         * tree-profile.c (add_abnormal_goto_call_edges): New function.
5582         (tree_gen_interval_profiler, tree_gen_pow2_profiler,
5583         tree_gen_one_value_profiler, tree_gen_average_profiler,
5584         tree_gen_ic_func_profiler, tree_gen_ior_profiler): Use it.
5585
5586 2008-09-13  Jan Hubicka  <jh@suse.cz>
5587
5588         * i386.c (ix86_expand_movmem, ix86_expand_movstr): Avoid processing
5589         too many bytes on misalligned blocks.
5590
5591 2008-09-13  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
5592
5593         * doc/cfg.texi: Fix some typos.
5594         * doc/extend.texi: Likewise.
5595         * doc/install.texi: Likewise.
5596         * doc/invoke.texi: Likewise.
5597         * doc/rtl.texi: Likewise.
5598         * doc/tree-ssa.texi: Likewise.
5599
5600 2008-09-13  Richard Guenther  <rguenther@suse.de>
5601
5602         PR middle-end/30141
5603         * tree-nested.c (finalize_nesting_tree_1): Generate valid
5604         gimple stores for memory rhs.
5605
5606 2008-09-13  H.J. Lu  <hongjiu.lu@intel.com>
5607
5608         PR rtl-optimization/37489
5609         * cse.c (fold_rtx): Don't return const_true_rtx for float
5610         compare if FLOAT_STORE_FLAG_VALUE is undefined.
5611
5612 2008-09-13  Jan Hubicka  <jh@suse.cz>
5613
5614         PR tree-optimization/37392
5615         * tree-inline.c (remap_gimple_stmt): Do not remap return value.
5616
5617 2008-09-13  Martin Jambor  <mjambor@suse.cz>
5618             Jan Hubicka  <jh@suse.cz>
5619
5620         * cgraph.c (free_edges): New variable.
5621         (NEXT_FREE_EDGE): New macro.
5622         (cgraph_free_edge): New function.
5623         (cgraph_remove_edge): Call cgraph_remove_edge_1.
5624         (cgraph_node_remove_callees): Likewise.
5625         (cgraph_node_remove_callers): Likewise.
5626         (cgraph_create_edge): Reuse edges from the free list.  Do not
5627         update uid if doing so.
5628         (cgraph_remove_*_hook): Add free call.
5629
5630 2008-09-13  Richard Sandiford  <rdsandiford@googlemail.com>
5631
5632         * ira-color.c (conflict_allocno_vec): Delete.
5633         (update_cost_queue_elem): New structure.
5634         (update_cost_queue): New variable.
5635         (update_cost_queue_tail): Likewise.
5636         (update_cost_queue_elems): Likewise.
5637         (allocno_update_cost_check): Delete.
5638         (initiate_cost_update): Allocate update_cost_queue_elems
5639         instead of allocno_update_cost_check.
5640         (finish_cost_update): Update the free()s accordingly.
5641         (start_update_cost): New function.
5642         (queue_update_cost): Likewise.
5643         (get_next_update_cost): Likewise.
5644         (update_copy_costs_1): Inline into...
5645         (update_copy_costs): ...here.  Use a queue instead of recursive calls.
5646         Use cover_class instead of ALLOCNO_COVER_CLASS (another_allocno),
5647         once we've established they are equal.  Don't allocate update
5648         costs if there is nothing to add to them.
5649         (update_conflict_hard_regno_costs): Remove ALLOCNO and
5650         DIVISOR arguments.  Use a queue instead of recursive calls;
5651         process all the allocnos in the initial queue, rather than
5652         a single allocno.
5653         (assign_hard_reg): Use queue_update_cost instead of
5654         conflict_allocno_vec.  Queue coalesced allocnos instead
5655         of calling update_conflict_hard_regno_costs for each one.
5656         Just call update_conflict_hard_regno_costs once for the
5657         entire queue.
5658         (ira_color): Remove conflict_allocno_vec handling.
5659
5660 2008-09-12  Sebastian Pop  <sebastian.pop@amd.com>
5661
5662         PR tree-optimization/37484
5663         * graphite.c (scop_record_loop): Use snprintf instead of sprintf.
5664         (save_var_name): Same.
5665         (initialize_cloog_names): Same.
5666         (initialize_cloog_names): Same.
5667
5668 2008-09-12  Sebastian Pop  <sebastian.pop@amd.com>
5669
5670         * tree-scalar-evolution.c (set_instantiated_value): Set
5671         instantiated_below.
5672
5673 2008-09-12  Vladimir Makarov  <vmakarov@redhat.com>
5674
5675         PR rtl-opt/37377
5676
5677         * ira-build.c (common_loop_tree_node_dominator): Remove.
5678         (copy_live_ranges_to_removed_store_destinations): New function.
5679         (regno_top_level_allocno_map): Move to top level from ...
5680         (ira_flattening): ... here.  Use
5681         copy_live_ranges_to_removed_store_destinations.
5682
5683         * ira-emit.c (generate_edge_moves): Fix a comment.
5684
5685 2008-09-12  Anatoly Sokolov  <aesok@post.ru>
5686
5687         PR target/37466
5688         * config/avr/avr.md (movsi_lreg_const peephole2): Add match_dup for
5689         scratch register after 'set' pattern.
5690
5691 2008-09-12  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
5692
5693         * emit-rtl.c (set_reg_attrs_from_value): Fix invalid alignment
5694         information passed to mark_reg_pointer.
5695         * explow.c (force_reg): Likewise.
5696
5697 2008-09-12  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
5698
5699         * config/spu/spu.c (spu_override_options): Default to -mno-safe-hints
5700         when building for the celledp architecture.
5701
5702 2008-09-12  Richard Guenther  <rguenther@suse.de>
5703
5704         * tree-vrp.c (simplify_truth_ops_using_ranges): Fix types.
5705
5706 2008-09-12  Eric Botcazou  <ebotcazou@adacore.com>
5707
5708         PR rtl-optimization/37424
5709         * ira-color.c (coalesced_pseudo_reg_slot_compare): Untie by comparing
5710         the regnos instead of the addresses.
5711
5712 2008-09-11  Janis Johnson  <janis187@us.ibm.com>
5713
5714         * ginclude/float.h (DEC_EVAL_METHOD): Correct the macro name.
5715
5716 2008-09-11  Richard Guenther  <rguenther@suse.de>
5717
5718         * tree-ssa-uncprop.c (associate_equivalences_with_edges): Avoid
5719         entering the weaker equivalence recording.
5720
5721         * tree-ssa-phiprop.c (propagate_with_phi): Fix tuplification.
5722
5723 2008-09-11  Jeff Law <law@redhat.com>
5724
5725         * reload1.c (alter_reg): Undo the BYTE_BIG_ENDIAN correction performed
5726         by assign_stack_local on the IRA path for stack slot sharing
5727         as well as the non-IRA path.
5728
5729 2008-09-11  Uros Bizjak  <ubizjak@gmail.com>
5730
5731         * config/i386/i386.h: Fix whitespace issues.
5732
5733 2008-09-11  Martin Jambor  <mjambor@suse.cz>
5734
5735         * ipa-prop.h (struct ipa_param_flags): Removed.
5736         (struct ipa_param_descriptor): New structure.
5737         (struct ipa_node_params): ipcp_lattices, param_decls and
5738         param_flags moved to ipa_param_description.
5739         (ipa_get_ith_param): Renamed to ipa_get_param, changed to access
5740         descriptors.  Renamed all users.
5741         (ipa_is_ith_param_modified): Renamed to ipa_is_param_modified,
5742         changed to access descriptors.  Renamed all users.
5743         (ipa_is_ith_param_called): Renamed to ipa_is_param_called, changed
5744         to access descriptors. Renamed all users.
5745         * ipa-cp.c (ipcp_init_cloned_node): Call
5746         ipa_initialize_node_params instead of ipa_count_formal_params and
5747         ipa_create_param_decls_array.
5748         (ipcp_analyze_node): Likewise.
5749         (ipcp_get_ith_lattice): Renamed to ipcp_get_lattice, changed to access
5750         descriptors.  Renamed all users.
5751         (ipcp_initialize_node_lattices): Remove allocation.
5752         * ipa-inline.c (inline_indirect_intraprocedural_analysis): Call
5753         ipa_initialize_node_params instead of ipa_count_formal_params and
5754         ipa_create_param_decls_array.
5755         * ipa-prop.c (ipa_create_param_decls_array): Renamed to
5756         ipa_populate_param_decls, made static, added parameter info,
5757         renamed mt to node, removed allocation, changed to use
5758         descriptors.
5759         (ipa_count_formal_params): Made static, added parameter info,
5760         renamed mt to node.
5761         (ipa_initialize_node_params): New function.
5762         (ipa_check_stmt_modifications): Changed to use descriptors.
5763         (ipa_detect_param_modifications): Removed allocation, changed to
5764         use descriptors.
5765         (ipa_note_param_call): Changed to use descriptors.
5766         (ipa_analyze_params_uses): Removed allocation.
5767         (ipa_free_node_params_substructures): Changed to use descriptors.
5768         (ipa_edge_duplication_hook): Use the unused attribute.
5769         (ipa_node_duplication_hook): Use the unused attribute, changed to
5770         use descriptors, changed to duplicate descriptors.
5771
5772         * ipa-inline.c (cgraph_mark_inline_edge): New parameter new_edges,
5773         changed all callers.  Call ipa_propagate_indirect_call_infos if doing
5774         indirect inlining.  Made static.
5775         (cgraph_decide_inlining): Freeing ipa-prop structures after inlining
5776         functions called only once.
5777         (cgraph_decide_recursive_inlining): Don't call
5778         ipa_propagate_indirect_call_infos, pass new_edges to
5779         cgraph_mark_inline_edge instead.
5780         (cgraph_decide_inlining_of_small_functions): Don't call
5781         ipa_propagate_indirect_call_infos, pass new_edges to
5782         cgraph_mark_inline_edge instead.
5783         (cgraph_decide_inlining): Don't call
5784         ipa_propagate_indirect_call_infos.
5785         * ipa-prop.c: Check that vectors are allocated.
5786
5787         * ipa-inline.c (cgraph_mark_inline_edge): Returns boolean, true
5788         iff a new cgraph edges have been created.
5789         (cgraph_decide_inlining): New variable redo_always_inline.
5790         Flattening and always_inlining loop until callgraph stabilizes.
5791         * ipa-prop.c (update_call_notes_after_inlining): Returns boolean,
5792         true iff new cgraph edges have been created.
5793         (propagate_info_to_inlined_callees): Likewise.
5794         (ipa_propagate_indirect_call_infos): Likewise.
5795
5796 2008-09-11  Richard Guenther  <rguenther@suse.de>
5797
5798         * tree-vectorizer.c (slpeel_add_loop_guard): Fix types.
5799         (set_prologue_iterations): Likewise.
5800         * tree-vect-transform.c (vect_create_addr_base_for_vector_ref):
5801         Likewise.
5802         (vect_update_init_of_dr): Likewise.
5803         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Fix
5804         type verification.
5805         * fold-const.c (fold_unary): Do not generate calculations
5806         in sub-types.
5807
5808 2008-09-11  Paolo Bonzini  <bonzini@gnu.org>
5809
5810         * dojump.c (do_jump) [BIT_AND_EXPR]: Move below.  Fall through to
5811         TRUTH_AND_EXPR for boolean (1-bit precision) expressions.
5812         (do_jump) [BIT_IOR_EXPR]: Compile as TRUTH_OR_EXPR.
5813
5814         * tree-flow.h (simplify_stmt_using_ranges): Accept a GSI, return
5815         a bool.
5816         * tree-ssa-propagate.c (substitute_and_fold): Pass a GSI to
5817         VRP's simplify_stmt_using_ranges.  Do simplify_stmt_using_ranges
5818         before finalizing the changes.
5819         * tree-vrp.c (extract_range_from_binary_expr): Add limited support
5820         for BIT_IOR_EXPR.
5821         (simplify_truth_ops_using_ranges): New.
5822         (simplify_div_or_mod_using_ranges, simplify_abs_using_ranges,
5823         simplify_cond_using_ranges, simplify_switch_using_ranges): Return
5824         whether a simplification was made.
5825         (simplify_stmt_using_ranges): Ditto, and accept a GSI.  For GS_ASSIGN,
5826         use a switch statement and also call simplify_truth_ops_using_ranges.
5827
5828 2008-09-11  Jan Hubicka  <jh@suse.cz>
5829
5830         * ggc-common.c (loc_array): Make static.
5831         * dce.c (rest_of_handle_ud_dce): Free worklist.
5832
5833 2008-09-11  Jan Hubicka  <jh@suse.cz>
5834
5835         * cgraph.c (cgraph_release_function_body): Plug memory leak on
5836         ipa_transforms_to_apply and CFG; ggc_free gimple df and struct
5837         function so we are sure we do not dangle it forever.
5838         * function.c (outer_function_chain, find_function_data): Remove.
5839         (function_context_stack): New.
5840         (push_function_context, pop_function_context): Update.
5841         * function.h (struct function): Remove pointer outer.
5842         (outer_function_chain, find_function_data): Remove.
5843         * stmt.c (force_label_rtx): Remove dead call of find_function_data.
5844
5845 2008-09-11  Jan Hubicka  <jh@suse.cz>
5846
5847         PR middle-end/37448
5848         * cgraph.c (cgraph_create_edge): Use !cgraph_edge for sanity check.
5849
5850 2008-09-11  Jan Hubicka  <jh@suse.cz>
5851
5852         * tree-ssa-pre.c (phi_translate_1): Fix memory leak
5853
5854 2008-09-11  Jan Hubicka  <jh@suse.cz>
5855
5856         * tree-ssa.c (redirect_edge_var_map_clear): Fix formatting.
5857         (free_var_map_entry): New function.
5858         (redirect_edge_var_map_destroy): Use it.
5859
5860 2008-09-11  Jan Hubicka  <jh@suse.cz>
5861
5862         PR middle-end/37448
5863         * tree-inline.c (add_lexical_block): Replace with ...
5864         (prepend_lexical_block): ... prepend at begginig.
5865         (remap_blocks): Use it and reverse later.
5866         (expand_call_inline): Use prepend_lexical_block.
5867
5868 2008-09-11  Jan Hubicka  <jh@suse.cz>
5869
5870         * gimplify.c (pop_gimplify_context): Free bind_expr_stack.
5871
5872 2008-09-11  Jan Hubicka  <jh@suse.cz>
5873
5874         * function.c (free_after_compilation): Call insn_locators_free.
5875         * cfglayout.c (insn_locators_free): New function.
5876         * rtl.h (insn_locators_free): Declare.
5877
5878 2008-09-11  Jan Hubicka  <jh@suse.cz>
5879
5880         * ifcvt.c (check_cond_move_block): Make regs argument pointer to
5881         vector pointer.
5882         (cond_move_process_if_block): Update call.
5883
5884 2008-09-11  Jan Hubicka  <jh@suse.cz>
5885
5886         * toplev.c (dump_memory_report): Call dump_vec_loc_statistics.
5887         * vec.c: Include hashtab.h
5888         (vec_descriptor, ptr_hash_entry): New structures.
5889         (vec_desc_hash, vec_ptr_map): New static variables.
5890         (hash_descriptor, eq_descriptor, hash_ptr, eq_ptr, vec_descriptor,
5891         register_overhead, free_overhead, vec_heap_free): New functions.
5892         (vec_gc_o_reserve_1): ggc_free when resizing to 0.
5893         (vec_heap_o_reserve_1): free when resizing to 0; add statistics.
5894         (cmp_statistic, add_statistics, dump_vec_loc_statistics):
5895         New functions.
5896
5897 2008-09-11  Ira Rosen  <irar@il.ibm.com>
5898
5899         PR tree-optimization/37474
5900         * tree-vect-analyze.c (vect_supported_load_permutation_p): Check the
5901         length of load permutation.
5902
5903 2008-09-11  Andreas Schwab  <schwab@suse.de>
5904
5905         * config/m68k/m68k.h (IRA_COVER_CLASSES): Define.
5906
5907 2008-09-11  Jakub Jelinek  <jakub@redhat.com>
5908
5909         PR target/37382
5910         * expmed.c (extract_low_bits): Avoid creating invalid subregs.
5911         * dse.c (find_shift_sequence): Use extract_low_bits instead of
5912         simplify_gen_subreg.
5913
5914 2008-09-11  Ira Rosen  <irar@il.ibm.com>
5915
5916         * tree-vect-transform.c (vectorizable_store): Use the rhs vector type
5917         for alias check.
5918
5919 2008-09-10  Jakub Jelinek  <jakub@redhat.com>
5920
5921         PR middle-end/37338
5922         * gimplify.c (gimplify_body): Call default_rtl_profile.
5923
5924         PR target/36904
5925         * config/rs6000/rs6000-c.c (rs6000_macro_to_expand): Return NULL
5926         instead of tok->val.node if not expanding to something else.  Handle
5927         intervening CPP_PADDING tokens.
5928         (altivec_categorize_keyword): Remove unneeded comparisons.
5929
5930 2008-09-10  Richard Guenther  <rguenther@suse.de>
5931
5932         * tree-ssa-pre.c (phi_translate_1): Fix memory leak.
5933
5934 2008-09-10  Richard Guenther  <rguenther@suse.de>
5935
5936         PR middle-end/37432
5937         * tree-inline.c (insert_init_stmt): Make sure to not
5938         insert invalid gimple stores.
5939
5940 2008-09-10  Sebastian Pop  <sebastian.pop@amd.com>
5941
5942         PR tree-optimization/37388
5943         * toplev.c (process_options): Fail and warn when graphite
5944         flags are used, but the compiler has not been configured
5945         with graphite libraries.
5946         * graphite.c (graphite_transform_loops): Remove printfs
5947         to dump_file for the case when graphite is not available.
5948
5949 2008-09-10  H.J. Lu  <hongjiu.lu@intel.com>
5950
5951         PR target/37434:
5952         * config/i386/i386.c (ix86_expand_vector_init_interleave): Force
5953         the even element into register.
5954         (ix86_expand_vector_init_general): Don't use
5955         ix86_expand_vector_init_interleave on V16QImode and V8HImode
5956         if we can't move from GPR to SSE register directly.
5957
5958 2008-09-10  Bernd Schmidt  <bernd.schmidt@analog.com>
5959
5960         * config/bfin/bfin.c (workaround_speculation): Correct algorithm to
5961         not lose track of the number of NOPs needed.  Number of NOPs needed
5962         for sync vs. loads workaround was switched; corrected.  Run second
5963         pass for all workarounds.  No NOPs needed after call insns.  Change
5964         second pass to use find_next_insn_start and find_load helpers in order
5965         to properly detect parallel insns.
5966         * config/bfin/bfin.md (cbranch_with_nops): Increase length.
5967
5968 2008-09-10  Jan Hubicka  <jh@suse.cz>
5969
5970         * value-prof.c (gimple_ic): Fix tuplification bug.
5971         * sched-deps.c (sched_insns_conditions_mutex_p): Silence unitialized
5972         var warning.
5973
5974 2008-09-10  Jakub Jelinek  <jakub@redhat.com>
5975
5976         PR tree-optimization/37353
5977         * tree-call-cdce.c (cond_dead_built_in_calls): Remove.
5978         (shrink_wrap_conditional_dead_built_in_calls): Add calls argument, use
5979         calls instead of cond_dead_built_in_calls.
5980         (tree_call_cdce): Add cond_dead_built_in_calls automatic variable,
5981         initalize the vector only before adding first entry.  Use VEC_safe_push
5982         instead of VEC_quick_push.  Pass cond_dead_built_in_calls to
5983         shrink_wrap_conditional_dead_built_in_calls call.
5984
5985 2008-09-10  Ira Rosen  <irar@il.ibm.com>
5986
5987         PR tree-optimization/37385
5988         * tree-vect-transform.c (vect_create_data_ref_ptr): Add a new
5989         argument, and use it as a vector type if not NULL.
5990         (vectorizable_store): Call vect_create_data_ref_ptr with the type of
5991         vectorized rhs.
5992         (vect_setup_realignment): Call vect_create_data_ref_ptr with
5993         additional argument.
5994         (vectorizable_load): Likewise.
5995
5996 2008-09-10  Jakub Jelinek  <jakub@redhat.com>
5997
5998         * config/i386/i386.md (SWI32): New mode iterator.
5999         (jcc_fused_1, jcc_fused_2, jcc_fused_3, jcc_fused_4): Use it instead
6000         of SWI.
6001
6002 2008-09-09  Vladimir Makarov  <vmakarov@redhat.com>
6003
6004         PR rtl-optimization/37435
6005         * caller-save.c (insert_restore, insert_save): Check the mode by
6006         reg_save_code.
6007
6008 2008-09-09  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
6009
6010         PR other/37265
6011         * dwarf2asm.c (dw2_force_const_mem): Use unstripped symbol name for
6012         splay tree lookup.
6013         (dw2_output_indirect_constant_1): Use unstripped name in symbol
6014         reference.
6015
6016 2008-09-09  Sandra Loosemore  <sandra@codesourcery.com>
6017
6018         * doc/invoke.texi (ARM Options): Correct errors in discussion
6019         of -mfloat-abi, -mhard-float, and -msoft-float.
6020
6021 2008-09-09  Jakub Jelinek  <jakub@redhat.com>
6022             Jan Hubicka  <jh@suse.cz>
6023
6024         PR middle-end/37356
6025         * tree-inline.c (copy_bb): Insert stmt into copy_basic_block before
6026         calling gimple_regimplify_operands on it.  Iterate over all newly
6027         added statements, not just the last one.
6028         (insert_init_stmt): Insert stmt into seq first, then call
6029         gimple_regimplify_operands on it.  Don't create new gimplification
6030         context, nor find referenced vars.
6031
6032 2008-09-09  Jakub Jelinek  <jakub@redhat.com>
6033
6034         PR other/37419
6035         * ipa-prop.h (ipa_propagate_indirect_call_infos): Change last argument
6036         to pointer to vector pointer.
6037         * ipa-prop.c (ipa_propagate_indirect_call_infos,
6038         propagate_info_to_inlined_callees): Likewise.
6039         (update_call_notes_after_inlining): Likewise.  Push new indirect edge
6040         to *new_edges instead of new_edges.  Reread IPA_EDGE_REF after
6041         ipa_check_create_edge_args.
6042         * ipa-inline.c (cgraph_decide_recursive_inlining): Change last
6043         argument to pointer to vector pointer.
6044         (cgraph_decide_inlining_of_small_function): Adjust
6045         cgraph_decide_recursive_inlining and ipa_propagate_indirect_call_infos
6046         calls.
6047
6048         PR target/37438
6049         * config/i386/i386.md (zero_extendqihi2_movzbl): Enable when
6050         optimizing for size, not speed.
6051
6052         PR rtl-optimization/37408
6053         * function.c (assign_parm_find_stack_rtl): Set correct MEM_SIZE
6054         if parm is promoted.
6055
6056 2008-09-09  Sebastian Pop  <sebastian.pop@amd.com>
6057
6058         PR tree-optimization/37375
6059         * tree-scalar-evolution.c (scev_info_str): Add field
6060         instantiated_below.
6061         (new_scev_info_str, eq_scev_info, find_var_scev_info,
6062         set_scalar_evolution, get_scalar_evolution, get_instantiated_value,
6063         set_instantiated_value): Pass instantiated_below.
6064         (analyze_scalar_evolution_1, analyze_scalar_evolution): Update calls
6065         to above functions.
6066         (instantiate_scev_1, instantiate_scev): Pass a basic block above which
6067         the definitions are not instantiated.
6068
6069         * tree-scalar-evolution.h (instantiate_scev): Update declaration.
6070         (block_before_loop): New.
6071         * tree-data-ref.c (dr_analyze_indices): Update uses of
6072         instantiate_scev.
6073         * graphite.c (block_before_scop): New.
6074         (loop_affine_expr, stmt_simple_for_scop_p, harmful_stmt_in_bb): Pass a
6075         basic block, not a loop for determining the parameters.
6076         (scopdet_edge_info, build_scops_1): Do not pass outermost loop in the
6077         scop.
6078         (idx_record_params, find_params_in_bb, find_scop_parameters,
6079         build_loop_iteration_domains, add_conditions_to_domain): Update calls
6080         to instantiate_scev.
6081
6082         * Makefile.in (cfgloopmanip.o): Add missing dependency on TREE_FLOW_H.
6083
6084 2008-09-09  Vladimir Makarov  <vmakarov@redhat.com>
6085
6086         PR rtl-opt/37333
6087
6088         * ira-build.c (ira_create_allocno): Setup frequency to 0.
6089
6090         * ira-color.c (update_conflict_hard_regno_costs): Remove assert.
6091         Check zero freq and increase if necessary.
6092
6093 2008-09-09  Vladimir Makarov  <vmakarov@redhat.com>
6094
6095         * ira-conflicts.c (process_regs_for_copy): Check that the hard
6096         regno is in the right range.  Add comments.
6097
6098 2008-09-09  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
6099
6100         * Makefile.in (mips-tfile.o-warn): Don't error out on mips-tfile.c
6101         warnings.
6102         * mips-tfile.c (copy_object): Cast alloca result to int *.
6103         * mips-tdump.c (print_symbol): Cast xmalloc return values to
6104         proper types.
6105         Rename class to sclass.
6106         (read_tfile): Cast read_seek return values to proper types.
6107         Cast xcalloc return value to proper type.
6108
6109 2008-09-09  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
6110
6111         * config/sol2.h (REGISTER_TARGET_PRAGMAS): Move ...
6112         * config/i386/sol2.h (REGISTER_SUBTARGET_PRAGMAS): ... here.
6113         * config/sparc/sol2.h (REGISTER_TARGET_PRAGMAS): ... and here.
6114
6115 2008-09-09  Jan Hubicka  <jh@suse.cz>
6116
6117         * profile.c (is_edge_inconsistent): Add debug output; ignore
6118         negative count on fake edges.
6119         (is_inconsistent): Add debug output.
6120
6121 2008-09-09  Andrey Belevantsev  <abel@ispras.ru>
6122
6123         * haifa-sched.c (advance_one_cycle): Do not print '\n' before printing
6124         dump message.
6125         (choose_ready): When first insn is chosen from the ready list, also
6126         dump it.
6127
6128 2008-09-09  Andrey Belevantsev  <abel@ispras.ru>
6129
6130         PR rtl-optimization/37360
6131         * haifa-sched.c (max_issue): Do not assert that we never issue more
6132         insns than issue_rate.  Add comment.
6133
6134 2008-09-09  Richard Guenther  <rguenther@suse.de>
6135
6136         * tree-cfg.c (verify_types_in_gimple_op): Remove.
6137         (verify_types_in_gimple_call): Rename to ...
6138         (verify_gimple_call): ... this.  Enhance.
6139         (verify_types_in_gimple_cond): Remove.
6140         (verify_gimple_comparison): New function ...
6141         (verify_types_in_gimple_assign): ... split out from here.
6142         (verify_types_in_gimple_return): Rename to ...
6143         (verify_gimple_return): ... this.  Enhance.
6144         (verify_types_in_gimple_switch): Rename to ...
6145         (verify_gimple_switch): ... this.  Enhance.
6146         (verify_gimple_goto): New function.
6147         (verify_types_in_gimple_phi): Rename to ...
6148         (verify_gimple_phi): ... this.  Enhance.
6149         (verify_types_in_gimple_stmt): Adjust calls to helper functions.
6150         Fold in single-statement cases from verify_types_in_gimple_seq_2.
6151         (verify_types_in_gimple_seq_2): Remove cases handled in
6152         verify_types_in_gimple_stmt.
6153
6154 2008-09-09  Bernd Schmidt  <bernd.schmidt@analog.com>
6155
6156         * config/bfin/bfin.c (n_regs_to_save): New static variable.
6157         (push_multiple_operation, pop_multiple_operation): Set it.
6158         (workaround_rts_anomaly): New function.
6159         (workaround_speculation): New function, broken out of bfin_reorg.
6160         (bfin_reorg): Call the new functions.
6161
6162 2008-09-09  Richard Guenther  <rguenther@suse.de>
6163
6164         PR middle-end/37354
6165         PR middle-end/30165
6166         * gimplify.c (gimplify_conversion): Change conversions of
6167         non-register type to VIEW_CONVERT_EXPRs.
6168         (gimplify_addr_expr): If we need to make the operand
6169         addressable make sure to use a properly initialized
6170         temporary for that so it gets a valid gimple store.
6171
6172 2008-09-09  Aldy Hernandez  <aldyh@redhat.com>
6173
6174         * function.h (struct function): Add function_start_locus.
6175         * cfgexpand.c (gimple_expand_cfg): Use it.
6176         * c-parser.c (c_parser_declaration_or_fndef): Set it.
6177
6178 2008-09-09  Richard Guenther  <rguenther@suse.de>
6179
6180         PR tree-optimization/37433
6181         * tree-ssa-ccp.c (ccp_fold): Properly guard folding of
6182         function calls.
6183
6184 2008-09-09  Richard Guenther  <rguenther@suse.de>
6185
6186         PR tree-optimization/37387
6187         * tree-ssa-ifcombine.c (ifcombine_iforif): Convert the name
6188         and bits to a common type.
6189
6190 2008-09-09  Nick Clifton  <nickc@redhat.com>
6191
6192         * config/v850/v850.md (return): Restore frame size restriction.
6193
6194 2008-09-09  Paolo Bonzini  <bonzini@gnu.org>
6195
6196         * c-common.c (c_expand_decl): Remove.
6197         * c-common.h (anon_aggr_type_p): Remove prototype.
6198         (DECL_ANON_UNION_ELEMS): Remove.
6199         * c-objc-common.h (LANG_HOOKS_EXPAND_DECL): Remove.
6200         * c-decl.c (anon_aggr_type_p): Remove.
6201         * langhooks-def.h (LANG_HOOKS_EXPAND_DECL): Remove.
6202         (LANG_HOOKS_INITIALIZER): Remove LANG_HOOKS_EXPAND_DECL.
6203         * langhooks.h (struct lang_hooks): Remove expand_decl.
6204         * langhooks.c (lhd_expand_decl): Remove.
6205         * stmt.c (expand_anon_union_decl): Remove.
6206         * tree.h (expand_anon_union_decl): Remove prototype.
6207
6208 2008-08-09  Andy Hutchinson  <hutchinsonandy@aim.com>
6209
6210         PR target/36609
6211         * config/avr/avr.c (avr_reorg): Create RTL for reversed compare with
6212         zero.
6213         * config/avr/avr.md  (QISI) : Define mode iterator.
6214         (negated_tst<mode>) : Redefine as split using mode macro.
6215         (reversed_tstqi): Define insn as reversed compare with zero.
6216         (reversed_tsthi): Ditto.
6217         (reversed_tstsi): Ditto.
6218
6219 2008-09-08  Jakub Jelinek  <jakub@redhat.com>
6220
6221         PR middle-end/37393
6222         * tree-inline.c (copy_bb): When replacing a gimple_call_va_arg_pack_p
6223         call stmt by new_call, clear gimple_bb on stmt after gsi_replace.
6224
6225         PR middle-end/37414
6226         * predict.c (optimize_function_for_size_p): Don't segfault if
6227         FUN is NULL.
6228         * fold-const.c (LOGICAL_OP_NON_SHORT_CIRCUIT, fold_truthop,
6229         tree_swap_operands_p): Don't test cfun != NULL before calling
6230         optimize_function_for_s*_p.
6231
6232 2008-09-08  Eric Botcazou  <ebotcazou@adacore.com>
6233
6234         * ira-color.c (ira_reuse_stack_slot): Set slot_num on success at the
6235         end of the search.
6236
6237 2008-09-08  M R Swami Reddy <MR.Swami.Reddy@nsc.com>
6238
6239         * crx/crx.h (IRA_COVER_CLASSES): Define.
6240
6241 2008-09-08  Jakub Jelinek  <jakub@redhat.com>
6242
6243         PR middle-end/37337
6244         * tree-ssa-dom.c (optimize_stmt): Call maybe_clean_or_replace_eh_stmt
6245         even when a stmt has been gimple_modified_p, but after fold_stmt is
6246         not any longer.  Remove unneeded may_have_exposed_new_symbols
6247         initializations.
6248
6249 2008-09-08  Richard Guenther  <rguenther@suse.de>
6250
6251         PR tree-optimization/37421
6252         * tree-ssa-sccvn.c (visit_copy): Make sure to fully
6253         valueize the RHS.
6254
6255 2008-09-08  Jakub Jelinek  <jakub@redhat.com>
6256
6257         PR middle-end/37415
6258         * opts.c (common_handle_option): Handle OPT_ftree_store_ccp.
6259
6260 2008-09-08  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
6261
6262         PR driver/37409
6263         * pa-hpux.h (LINK_SPEC): Strip -fwhole-program.
6264         * pa-hpux10.h (LINK_SPEC): Likewise.
6265         * pa-hpux11.h (LINK_SPEC): Likewise.
6266
6267 2008-09-07  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
6268
6269         * pa32-regs.h (IRA_COVER_CLASSES): Define.
6270         * pa64-regs.h (IRA_COVER_CLASSES): Define.
6271
6272 2008-09-07  Helge Deller  <deller@gmx.de>
6273
6274         * pa/linux-atomic.c: New file.
6275         * pa/t-linux (LIB2FUNCS_STATIC_EXTRA): Define.
6276         * pa/t-linux64 (LIB2FUNCS_STATIC_EXTRA): Define.
6277
6278 2008-09-07  Richard Guenther  <rguenther@suse.de>
6279             Ira Rosen  <irar@il.ibm.com>
6280
6281         PR tree-optimization/36630
6282         * tree-vect-transform.c (vect_update_ivs_after_vectorizer):
6283         Call STRIP_NOPS before calling evolution_part_in_loop_num.
6284
6285 2008-09-07  Dorit Nuzman  <dorit@il.ibm.com>
6286             Ira Rosen  <irar@il.ibm.com>
6287
6288         PR tree-optimization/35642
6289         * config/rs6000/altivec.md (mulv8hi3): Implement.
6290
6291 2008-09-06  Jeff Law <law@redhat.com>
6292
6293         * h8300/h8300.h (IRA_COVER_CLASSES): Define.
6294
6295 2008-09-06  Jan Hubicka  <jh@suse.cz>
6296
6297         PR tree-optimization/14703
6298         * tree-ssa-live.c (remove_unused_scope_block_p): Remove ignored
6299         declarations.
6300         * passes.c (init_optimization_passes): Recompute inline parameters.
6301
6302 2008-09-06  Richard Sandiford  <rdsandiford@googlemail.com>
6303
6304         * config/mips/mips.c (mips_function_ok_for_sibcall): Check for
6305         DECL being null.
6306
6307 2008-09-06  Richard Sandiford  <rdsandiford@goolemail.com>
6308             Peter Fuerst  <post@pfrst.de>
6309
6310         * doc/invoke.texi: Document -mr10k-cache-barrier=.
6311         * doc/extend.texi: Document __builtin_mips_cache.
6312         * config/mips/mips-ftypes.def: Add a (VOID, SI, CVPOINTER) entry.
6313         * config/mips/mips.opt (mr10k-cache-barrier=): New option.
6314         * config/mips/mips.h (TARGET_CPU_CPP_BUILTINS): Define
6315         __GCC_HAVE_BUILTIN_MIPS_CACHE.
6316         (TARGET_CACHE_BUILTIN, ISA_HAS_CACHE): New macros.
6317         * config/mips/mips.c (mips_r10k_cache_barrier_setting): New enum.
6318         (set_push_mips_isas): New variable.
6319         (mips_r10k_cache_barrier): New variable.
6320         (cache): New availability predicate.
6321         (mips_builtins): Add an entry for __builtin_mips_cache.
6322         (mips_build_cvpointer_type): New function.
6323         (MIPS_ATYPE_CVPOINTER): New macro.
6324         (mips_prepare_builtin_arg): Only use the insn's mode if the rtx's
6325         mode is VOIDmode.
6326         (r10k_simplified_address_p, r10k_simplify_address)
6327         (r10k_uncached_address_p, r10k_safe_address_p)
6328         (r10k_needs_protection_p_1, r10k_needs_protection_p_store)
6329         (r10k_needs_protection_p_call, r10k_needs_protection_p)
6330         (r10k_insert_cache_barriers): New functions.
6331         (mips_reorg_process_insns): Delete cache barriers after a
6332         branch-likely instruction.
6333         (mips_reorg): Call r10k_insert_cache_barriers.
6334         (mips_handle_option): Handle OPT_mr10k_cache_barrier_.
6335         * config/mips/mips.md (UNSPEC_MIPS_CACHE): New constant.
6336         (UNSPEC_R10K_CACHE_BARRIER): Likewise.
6337         (mips_cache, r10k_cache_barrier): New define_insns.
6338
6339 2008-09-06  Richard Sandiford  <rdsandiford@googlemail.com>
6340
6341         * ira-int.h (ira_zero_hard_reg_set, ira_one_hard_reg_set): Delete.
6342         * ira-color.c (setup_allocno_left_conflicts_num): Use
6343         hard_reg_set_equal_p instead of a comparison with
6344         ira_zero_hard_reg_set.
6345         * ira.c (setup_reg_subclasses): Likewise.
6346         (setup_cover_and_important_classes): Likewise.
6347         (setup_class_translate): Likewise.
6348         (setup_reg_class_intersect_union): Likewise.
6349         (ira_zero_hard_reg_set, ira_one_hard_reg_set): Delete.
6350         (ira_init_once): Don't initialize them.
6351
6352 2008-09-05  Vladimir Makarov  <vmakarov@redhat.com>
6353
6354         * doc/tm.texi (IRA_COVER_CLASSES): Fix a typo.
6355
6356 2008-09-05  Vladimir Makarov  <vmakarov@redhat.com>
6357
6358         * ira-color.c (ira_fast_allocation): Permit global allocno allocation.
6359
6360 2008-09-05  Trevor Smigiel <Trevor_Smigiel@playstation.sony.com>
6361
6362         Improved branch hints, safe hints, and scheduling.
6363
6364         * haifa-sched.c (sched_emit_insn) : Define.
6365         * sched-int.h (sched_emit_insn) : Add prototype.
6366         * doc/invoke.texi (-mdual-nops, -mhint-max-nops,
6367         -mhint-max-distance -msafe-hints) : Document.
6368         * config/spu/spu.c (spu_flag_var_tracking): New.
6369         (TARGET_SCHED_INIT_GLOBAL, TARGET_SCHED_INIT,
6370         TARGET_SCHED_REORDER, TARGET_SCHED_REORDER2,
6371         TARGET_ASM_FILE_START): Define.
6372         (TARGET_SCHED_ADJUST_PRIORITY): Remove.
6373         (STOP_HINT_P, HINTED_P, SCHED_ON_EVEN_P): Define.
6374         (spu_emit_branch_hint): Add blocks argument.
6375         (insert_branch_hints, insert_nops): Remove.
6376         (pad_bb, insert_hbrp_for_ilb_runout, insert_hbrp, in_spu_reorg,
6377         uses_ls_unit, spu_sched_init_global, spu_sched_init,
6378         spu_sched_reorder, asm_file_start): New functions.
6379         (clock_var, spu_sched_length, pipe0_clock,
6380         pipe1_clock, prev_clock_var, prev_priority,
6381         spu_ls_first, prev_ls_clock): New static variables.
6382         * config/spu/spu.h (TARGET_DEFAULT): Add MASK_SAFE_HINTS.
6383         * config/spu.md (iprefetch): Add operand, make it clobber MEM.
6384         (nopn_nv): Add a non-volatile version of nop.
6385         * config/spu/spu.opt (-mdual-nops, -mhint-max-nops,
6386         -mhint-max-distance, -msafe-hints): New options.
6387
6388 2008-09-05  Janis Johnson  <janis187@us.ibm.com>
6389             Samuel Tardieu  <sam@rfc1149.net>
6390
6391         * opts.c (decode_options): Combine nested if statements.
6392
6393         PR target/37283
6394         * opts.c (decode_options): Handle more relationships among
6395         unit-at-a-time, toplevel-reorder, and section-anchors.
6396
6397 2008-09-05  David Daney  <ddaney@avtrex.com>
6398
6399         * doc/install.texi (--enable-reduced-reflection): Document new option.
6400
6401 2008-09-05  Bob Wilson  <bob.wilson@acm.org>
6402
6403         * config/xtensa/predicates.md (nonimmed_operand, mem_operand): Use
6404         constantpool_mem_p.
6405         (constantpool_operand): New.
6406         (move_operand): Disallow sub-word modes for the constant pool.
6407         * config/xtensa/xtensa.c (TARGET_SECONDARY_RELOAD): Define.
6408         (xtensa_secondary_reload_class): Replace with....
6409         (xtensa_secondary_reload): this function.  Remove SIGN_EXTEND check.
6410         Set icode for sub-word reloads from the constant pool.
6411         * config/xtensa/xtensa.h (SECONDARY_INPUT_RELOAD_CLASS): Delete.
6412         (SECONDARY_OUTPUT_RELOAD_CLASS): Delete.
6413         * config/xtensa/xtensa.md (reload<mode>_literal): New.
6414         * config/xtensa/xtensa-protos.h: Update prototypes.
6415
6416 2008-09-05  Joseph Myers  <joseph@codesourcery.com>
6417
6418         * config/mips/mips.h (enum reg_class): Add FRAME_REGS.
6419         (REG_CLASS_NAMES): Update.
6420         (REG_CLASS_CONTENTS): Update.
6421         * config/mips/mips.c (mips_regno_to_class): Use FRAME_REGS instead
6422         of ALL_REGS for regs 77 and 78.
6423         * function.c (instantiate_virtual_regs_in_insn): Assert that
6424         return value of simplify_gen_subreg is not NULL.
6425
6426 2008-09-05  Paolo Bonzini  <bonzini@gnu.org>
6427
6428         * emit-rtl.c (gen_rtvec): Rewrite not using gen_rtvec_v.
6429         (gen_rtvec_v): Fix coding standards.
6430
6431 2008-09-04  Jan Hubicka  <jh@suse.cz>
6432
6433         * i386.c (decide_alg): Be more conservative about optimizing for size.
6434
6435 2008-09-04  Ian Lance Taylor  <iant@google.com>
6436
6437         * varasm.c (narrowing_initializer_constant_valid_p): New
6438         static function.
6439         (initializer_constant_valid_p): Call it.
6440
6441 2008-09-04  Jeff Law  <law@redhat.com>
6442
6443         * fold-const.c (native_encode_real): Fix computation of WORDS.
6444         (native_interpret_real): Likewise.
6445
6446 2008-09-04  Janis Johnson  <janis187@us.ibm.com>
6447
6448         * config/rs6000/t-rs6000: Remove target gt-rs6000.h.
6449
6450 2008-09-04  Vladimir Makarov  <vmakarov@redhat.com>
6451
6452         * ira-conflicts.c (process_regs_for_copy): Check insn to check
6453         that the cost is already taken into account in ira-costs.c
6454
6455         * ira-int.h (ira_debug_copy, ira_debug_copies): New.
6456
6457         * ira-build.c (print_copy, print_copies, ira_debug_copy,
6458         ira_debug_copies): New.
6459         (ira_bulid): Call print_copies.
6460
6461         * doc/tm.texi (IRA_COVER_CLASSES): Fix the description.
6462
6463 2008-09-04  Samuel Tardieu  <sam@rfc1149.net>
6464
6465         PR target/32783
6466         * config/rs6000/rs6000.c (optimization_options): Remove check of
6467         flag_toplevel_order.
6468
6469 2008-09-04  Adam Nemet  <anemet@caviumnetworks.com>
6470
6471         * config/mips/mips.h (ISA_HAS_SEQ_SNE): New macro.
6472         * config/mips/mips.c (mips_expand_scc): Also expand seq and sne if
6473         second operand is a reg_imm10_operand.
6474         * config/mips/mips.md (*seq_<GPR:mode><GPR2:mode>_seq,
6475         *sne_<GPR:mode><GPR2:mode>_sne): New patterns.
6476         (*seq_<GPR:mode><GPR2:mode>): Rename to
6477         *seq_zero_<GPR:mode><GPR2:mode>.  Don't match if
6478         ISA_HAS_SEQ_SNE.
6479         (*seq_<GPR:mode><GPR2:mode>_mips16): Rename to
6480         *seq_zero_<GPR:mode><GPR2:mode>_mip16.  Don't match if
6481         ISA_HAS_SEQ_SNE.
6482         (*sne_<GPR:mode><GPR2:mode>): Rename to
6483         *sne_zero_<GPR:mode><GPR2:mode>.  Don't match if
6484         ISA_HAS_SEQ_SNE.
6485
6486 2008-09-04  Adam Nemet  <anemet@caviumnetworks.com>
6487
6488         * config/mips/mips.h (ISA_HAS_EXTS): New macro.
6489         * config/mips/mips.md (*ashr_trunc<mode>): Name the pattern
6490         combining an arithmetic right shift by more than 31 and a
6491         trunction.  Don't match for out-of-range shift amounts.  Set
6492         attribute mode to <MODE>.
6493         (*lshr32_trunc<mode>): Name the pattern combining a logical right
6494         shift by 32 and and a truncation.  Set attribute mode to <MODE>.
6495         (*<optab>_trunc<mode>_exts): New pattern for truncated right
6496         shifts by less than 32.
6497         (extv): Change predicate on first operand to accept registers.
6498         Change predicate of the other operands from immediate_operand to
6499         const_int_operand.  Expand exts when source is a register.
6500         (extzv): Change predicate of the constant operands from
6501         immediate_operand to const_int_operand.
6502         (extzv<mode>): Change predicate of the constant operands from
6503         immediate_operand to const_int_operand and no constraint. Also
6504         remove mode.
6505         (*extzv_trunc<mode>_exts): New pattern.
6506
6507 2008-09-04  Adam Nemet  <anemet@caviumnetworks.com>
6508
6509         * config/mips/mips.h (ISA_HAS_CINS): New macro.
6510         * config/mips/mips-protos.h (mask_low_and_shift_p,
6511         mask_low_and_shift_len): Declare.
6512         * config/mips/mips.c (mask_low_and_shift_p,
6513         mask_low_and_shift_len): New functions.
6514         (mips_print_operand): Handle new operand prefix "m".
6515         * config/mips/mips.md (*cins<mode>): New pattern.
6516
6517 2008-09-04  Bernd Schmidt  <bernd.schmidt@analog.com>
6518
6519         * config/bfin/bfin.c (gen_one_bundle): Don't create new nops when
6520         optimizing for size.
6521
6522 2008-09-04  Richard Sandiford  <rdsandiford@googlemail.com>
6523
6524         * df-scan.c (df_get_entry_block_def_set): Add STACK_POINTER_REGNUM
6525         regardless of epilogue_completed.
6526
6527 2008-09-04  Vladimir Makarov  <vmakarov@redhat.com>
6528
6529         PR middle-end/37359
6530         * ira-lives.c (process_bb_node_lives): Check setjmp.
6531
6532 2008-09-04  Richard Sandiford  <rdsandiford@googlemail.com>
6533
6534         PR middle-end/37243
6535         * ira-build.c (form_loop_tree): Reverse BB walk.
6536         (create_bb_allocnos): Likewise.
6537         * ira-lives.c (make_regno_born_and_dead, regs_set): Delete.
6538         (mark_reg_store): Rename to...
6539         (mark_ref_live): ...this and take a df_ref argument instead of
6540         note_stores arguments.  Assert that we have a register.
6541         (mark_reg_clobber): Delete.
6542         (def_conflicts_with_inputs_p): New function.
6543         (mark_reg_conflicts): Delete.
6544         (mark_reg_death): Rename to...
6545         (mark_ref_dead): ...this and take a df_ref argument instead of
6546         a register.  Assert that we have a register.
6547         (process_bb_node_lives): Hoist frequency calculation out of
6548         instruction walk.  Convert from a forwards scan to a backwards scan.
6549         Use DF_REF_USES and DF_REF_DEFS instead of register notes and
6550         note_stores.  Remove EH_RETURN_DATA_REGNO and regs_set handling.
6551         (create_allocno_live_ranges): Don't create regs_set.
6552
6553 2008-09-04  Ian Lance Taylor  <iant@google.com>
6554
6555         * rtl.h (LABEL_REF_NONLOCAL_P): Don't check for REG_LABEL_OPERAND
6556         or REG_LABEL_TARGET.
6557         * calls.c (emit_library_call_value_1): Use MEM_P rather than
6558         comparing MODE with MEM.
6559         * gimple.c (gimple_build_predict): Cast END_PREDICTORS before
6560         comparing with GF_PREDICT_TAKEN.
6561         (gimple_get_lhs): Change code to enum gimple_code.
6562         (gimple_set_lhs): Likewise.
6563         * ifcvt.c (noce_process_if_block): Correct GET_MODE to GET_CODE.
6564         * omp-low.c (find_omp_clause): Change kind parameter to enum
6565         omp_clause_code.
6566         * tree-flow.h (find_omp_clause): Update declaration.
6567         * regrename.c (clear_dead_regs): Change kind parameter to enum
6568         reg_note.
6569         * reload1.c (eliminate_regs_1): Use REG_NOTE_KIND rather than
6570         GET_MODE.
6571         * see.c (see_get_extension_data): Change return type to enum
6572         entry_type.  Change UNKNOWN to NOT_RELEVANT, SIGN_EXTEND to
6573         SIGNED_EXTENDED_DEF, ZERO_EXTEND to ZERO_EXTENDED_DEF.
6574         (see_gen_normalized_extension): Change extension_code parameter to
6575         enum entry_type.
6576         (see_seek_pre_extension_expr): Change extension_code to enum
6577         entry_type.
6578         (see_merge_one_def_extension): Likewise.
6579         (see_handle_relevant_defs): Likewise.
6580         (see_handle_relevant_uses): Likewise.
6581         (see_analyze_one_def): Likewise.
6582         * tree-cfg.c (need_fake_edge_p): Compare gimple code with
6583         GIMPLE_ASM rather than ASM_EXPR.
6584         * tree-ssa-alias.c (is_escape_site): Compare gimple code with
6585         GIMPLE_RETURN rather than RETURN_EXPR.
6586         * tree-ssa-ccp.c (likely_value): Change code to enum gimple_code.
6587         (evaluate_stmt): Likewise.
6588         * tree-vect-analyze.c (vect_analyze_operations): Change relevance
6589         to enum vect_relevant.
6590         (vect_mark_stmts_to_be_vectorized): Change assertion to not
6591         compare gimple codes with tree codes.
6592
6593 2008-09-04  Paul Brook  <paul@codesourcery.com>
6594
6595         * config/arm/arm.c (arm_size_rtx_costs): Call cost function.
6596
6597 2008-09-04  Bernd Schmidt  <bernd.schmidt@analog.com>
6598
6599         * config/bfin/bfin.c (bfin_function_ok_for_sibcall): Restore a null
6600         pointer check lost in the recent no-unit-at-a-time patch.
6601
6602 2008-09-04  Jan Hubicka  <jh@suse.cz>
6603
6604         PR middle-end/37343
6605         * tree-switch-conversion.c (check_final_bb): Accept only IP
6606         invariants.
6607
6608 2008-09-04  Jan Hubicka  <jh@suse.cz>
6609
6610         * tree-vrp.c (vrp_evaluate_conditional_warnv_with_ops_using_ranges):
6611         Break out from ...
6612         (vrp_evaluate_conditional_warnv_with_ops): ... this one.  Add
6613         using_ranges argument.
6614         (vrp_evaluate_conditional): Avoid bogus warning for type range.
6615         (vrp_visit_cond_stmt): Update call of
6616         vrp_evaluate_conditional_warnv_with_ops
6617
6618 2008-09-04  Jan Hubicka  <jh@suse.cz>
6619
6620         PR tree-optimization/37345
6621         PR tree-optimization/37358
6622         PR tree-optimization/37357
6623         * tree.c (build_function_type_skip_args): Build distinct type copy;
6624         set TYPE_CONTEXT.
6625         (build_function_decl_skip_args): Set type of new decl not orig decl;
6626         clear DECL_VINDEX for methods turned into functions.
6627
6628 2008-09-04  Nick Clifton  <nickc@redhat.com>
6629
6630         * configure.ac (HAVE_GAS_LCOMM_WITH_ALIGNMENT): New assembler check.
6631         * configure: Regenerate.
6632         * config.in: Regenerate.
6633         * config/i386/bsd.h (ASM_OUTPUT_ALIGNED_LOCAL): Use .lcomm with an
6634         alignment field, if it is supported.
6635
6636 2008-09-04  Kai Tietz  <kai.tietz@onevision.com>
6637
6638         * config/i386/t-mingw32 (SHLIB_LC): Change order of import
6639         libraries.
6640
6641 2008-09-03  David Edelsohn  <edelsohn@gnu.org>
6642
6643         * config/rs6000/rs6000.c (processor_target_table): Do not
6644         enable VMX for POWER6.
6645
6646 2008-09-03  Anton Blanchard  <anton@samba.org>
6647
6648         * config/rs6000/rs6000.c (rs6000_split_lock_test_and_set): Do not
6649         emit memory barrier before operation.
6650
6651 2008-09-03  John David Anglin  <dave.anglin@nrc.cnrc.gc.ca>
6652
6653         PR testsuite/37325
6654         * config/pa/pa64-hpux.h (ASM_OUTPUT_EXTERNAL_REAL): Call
6655         default_elf_asm_output_external.
6656
6657 2008-09-03  Jeff Law  <law@redhat.com>
6658
6659         * h8300.c (expand_a_shift): Avoid invalid RTL sharing.
6660
6661 2008-09-03  Richard Henderson  <rth@redhat.com>
6662
6663         * config/alpha/alpha.c (alpha_split_lock_test_and_set): Move
6664         memory barrier to below the test-and-set.
6665         (alpha_split_lock_test_and_set_12): Likewise.
6666
6667 2008-09-03  Vladimir Makarov  <vmakarov@redhat.com>
6668
6669         PR rtl-opt/37243
6670
6671         * ira-int.h (ira_loop_tree_node): Rename mentioned_allocnos to
6672         all_allocnos.
6673
6674         * ira-color.c (print_loop_title): Use all_allocnos.
6675         (color_pass): Ditto.  Don't add border_allocnos.  Check that
6676         subloop allocno in the correspdoning bitmap all_allocnos.
6677
6678         * ira-emit.c (change_loop): Use all_allocnos.
6679
6680         * ira-build.c (create_loop_tree_nodes, finish_loop_tree_node): Ditto.
6681         (ira_create_allocno): Set up all_allocnos bit for the created allocno.
6682         (create_cap_allocno): Remove setting mentioned_allocnos.
6683         (create_insn_allocnos): Ditto.
6684         (remove_unnecessary_allocnos): Use all_allocnos.
6685         (check_allocno_creation): Check that allocnos are in the
6686         corresponding bitmap all_allocnos.
6687
6688 2008-09-03  Vladimir Makarov  <vmakarov@redhat.com>
6689
6690         PR rtl-opt/37243
6691
6692         * ira-conflicts.c (REG_SUBREG_P, go_through_subreg): New.
6693         (process_regs_for_copy): Process subregs.  Refine check when cost
6694         is taken into account in ira-costs.c.
6695         (process_reg_shuffles): Use REG_SUBREG_P.
6696         (add_insn_allocno_copies): Ditto.  Ignore modes.
6697
6698         * ira-color.c (conflict_allocno_vec): New.
6699         (COST_HOP_DIVISOR): New macro.
6700         (update_copy_costs_1): Use it.
6701         (update_conflict_hard_regno_costs): New function.
6702         (assign_hard_reg): Use it.
6703         (ira_color): Allocate and free conflict_allocno_vec.
6704
6705 2008-09-03  Vladimir Makarov  <vmakarov@redhat.com>
6706
6707         PR rtl-opt/37296
6708
6709         * ira-int.h (ira_sort_insn_chain): Remove.
6710
6711         * ira.c (basic_block_order_nums, chain_insn_order,
6712         chain_freq_compare, chain_bb_compare, ira_sort_insn_chain): Remove.
6713         (ira): Don't call ira_sort_insn_chain.
6714
6715         * reload1.c (reload): Don't call ira_sort_insn_chain.
6716
6717 2008-09-03  Andrew Pinski  <andrew_pinski@playstation.sony.com>
6718
6719         PR middle-end/37293
6720         * cgraphunit.c (update_call_expr): Remove eh regions from statements
6721         which become non throw.
6722         (cgraph_function_versioning): Also clear DECL_WEAK.  Call
6723         update_call_expr after updating the flags on the decl.
6724
6725 2008-09-03  Jan Hubicka  <jh@suse.cz>
6726
6727         PR tree-optimization/37315
6728         * cgraph.c (cgraph_create_edge): Use gimple_has_body_p.
6729         * cgraphunit.c (verify_cgraph_node): drop gimple_body check.
6730         (cgraph_analyze_functions): Use node->analyzed
6731         (cgraph_mark_functions_to_output): Likewise.
6732         (cgraph_expand_function): All functions can be released after
6733         expanding.
6734         (cgraph_optimize): Use gimple_has_body_p.
6735         * ipa-inline.c (cgraph_clone_inlined_nodes): Use analyzed flag.
6736         (cgraph_decide_inlining_incrementally): Likewise.
6737         (inline_transform): Inline transform.
6738         * tree-inline.c (initialize_cfun): Do now shallow copy structure;
6739         copy fields needed.
6740         (inlinable_function_p): Drop gimple_body check.
6741         (expand_call_inline): Use gimple_has_body_p.
6742         * gimple.c (gimple_has_body_p): New.
6743         * gimple.h (gimple_has_body_p): Add prototype.
6744         * tree-cfg.c (execute_build_cfg): Remove gimple_body.
6745         (dump_function_to_file): Use gimple_has_body_p check.
6746
6747 2008-09-03  Jakub Jelinek  <jakub@redhat.com>
6748
6749         PR c++/37346
6750         * gimple.h (gimple_has_substatements): GIMPLE_OMP_CRITICAL has
6751         substatements.
6752         * tree-inline.c (remap_gimple_stmt): Handle GIMPLE_OMP_CRITICAL.
6753
6754 2008-09-03  Bernd Schmidt  <bernd.schmidt@analog.com>
6755
6756         From Michael Frysinger  <michael.frysinger@analog.com>
6757         * config/bfin/bfin.c (bfin_cpus[]): Add 0.1 for bf522, bf523, bf524,
6758         bf525, bf526, bf527, bf542, bf544, bf547, bf548, and bf549.  Add 0.2
6759         for bf538.
6760
6761 2008-09-03  Hari Sandanagobalane  <hariharan@picochip.com>
6762
6763         Add picoChip port.
6764         * doc/extend.texi: Document picoChip builtin functions.
6765         * doc/invoke.texi: Document picoChip options.
6766         * doc/contrib.texi: Add picoChip contribution.
6767         * doc/md.texi: Document picoChip constraints.
6768         * config.gcc: Add picochip-*-*.
6769         * config/picochip/: Add new port.
6770
6771 2008-09-03  Richard Guenther  <rguenther@suse.de>
6772
6773         PR tree-optimization/37328
6774         * tree-sra.c (sra_build_assignment): Gimplify properly.
6775         (generate_copy_inout): Take the correct stmt as definition,
6776         remove bogus assert.
6777
6778 2008-09-03  Bernd Schmidt  <bernd.schmidt@analog.com>
6779
6780         * config/bfin/bfin.c (bfin_expand_prologue): Honour no_stack_limit
6781         attributes.
6782
6783         From Michael Frysinger  <michael.frysinger@analog.com>
6784         * config/bfin/bfin.c (bfin_handle_option): Remove BF561 warning.
6785
6786 2008-09-03 Danny Smith  <dannysmith@usrs.sourceforge.net>
6787
6788         * gthr-win32.h (CONST_CAST2): Really make sure CONST_CAST2 is defined.
6789         (__gthread_setspecific): Revert 2008-08-31 change to
6790         __GTHREAD_HIDE_W32API case.  Apply it to !__GTHREAD_HIDE_W32API case.
6791
6792 2008-09-02  Aldy Hernandez  <aldyh@redhat.com>
6793
6794         * diagnostic.c (error_at): New.
6795         * toplev.h (error_at): New prototype.
6796         * c-typeck.c (build_array_ref): Call error_at instead of error.
6797         Pass location to pedwarn.
6798
6799 2008-09-02  Adam Nemet  <anemet@caviumnetworks.com>
6800
6801         * sel-sched.c (sel_hard_regno_rename_ok): Mark arguments unused.
6802
6803 2008-09-02  Jakub Jelinek  <jakub@redhat.com>
6804
6805         * dwarf2out.c (tree_add_const_value_attribute): Only handle
6806         VAR_DECL and CONST_DECL.
6807
6808 2008-09-02  H.J. Lu  <hongjiu.lu@intel.com>
6809             Jakub Jelinek  <jakub@redhat.com>
6810
6811         * config/i386/i386.c (X86_64_VARARGS_SIZE): Removed.
6812         (setup_incoming_varargs_64): Assume cum != NULL. Set/check
6813         ix86_varargs_gpr_size and ix86_varargs_fpr_size.  Use
6814         ix86_varargs_gpr_size instead of X86_64_REGPARM_MAX.
6815         Don't set ix86_save_varrargs_registers.
6816         (ix86_setup_incoming_varargs): Assume cum != NULL.
6817         (ix86_va_start): Check ix86_varargs_gpr_size and
6818         ix86_varargs_fpr_size instead of cfun->va_list_gpr_size and
6819         cfun->va_list_fpr_size, respectively.  Subtract 8*X86_64_REGPARM_MAX
6820         from frame pointer if ix86_varargs_gpr_size == 0.
6821         (ix86_compute_frame_layout): Updated.
6822         * config/i386/i386.h (ix86_save_varrargs_registers): Removed.
6823         (ix86_varargs_gpr_size): Define.
6824         (ix86_varargs_fpr_size): Likewise.
6825         (machine_function): Remove save_varrargs_registers.
6826         Add varargs_gpr_size and varargs_fpr_size.
6827
6828 2008-09-02  Jakub Jelinek  <jakub@redhat.com>
6829
6830         * config/alpha/alpha.c (va_list_skip_additions,
6831         alpha_stdarg_optimize_hook, alpha_gimplify_va_arg_1): Tuplify.
6832         (alpha_gimplify_va_arg): Call unshare_expr on second use of
6833         offset_field.
6834
6835         PR tree-optimization/36766
6836         * tree-cfg.c (gimple_purge_all_dead_eh_edges): Do nothing
6837         for already removed basic blocks.
6838
6839         PR target/36332
6840         * real.c (real_maxval): Clear a lower bit to make real_maxval
6841         match get_max_float for IBM long double format.
6842
6843 2008-09-02  Andreas Schwab  <schwab@suse.de>
6844
6845         * configure.ac: Use m4_quote to quote the expansion of m4_do.
6846         * configure: Regenerate.
6847
6848 2008-09-02  Richard Sandiford  <rdsandiford@googlemail.com>
6849
6850         * simplify-rtx.c (simplify_binary_operation_1): Check for CONST,
6851         SYMBOL_REF and LABEL_REF when applying plus_constant, instead of
6852         checking for a non-VOID CONSTANT_P.
6853
6854 2008-09-02  Jan Hubicka  <jh@suse.cz>
6855
6856         * predict.c (pass_strip_predict_hints): Avoid bugs dump file.
6857         * expmed.c (expand_divmod): Fix test of smod_pow2_cheap and
6858         sdiv_pow2_cheap
6859
6860 2008-09-02  H.J. Lu  <hongjiu.lu@intel.com>
6861
6862         * expr.c (emit_group_store): Don't assert stack temp mode size.
6863
6864 2008-09-02  Sebastian Pop  <sebastian.pop@amd.com>
6865             Tobias Grosser  <grosser@fim.uni-passau.de>
6866             Jan Sjodin  <jan.sjodin@amd.com>
6867             Harsha Jagasia  <harsha.jagasia@amd.com>
6868             Dwarakanath Rajagopal  <dwarak.rajagopal@amd.com>
6869             Konrad Trifunovic  <konrad.trifunovic@inria.fr>
6870             Adrien Eliche  <aeliche@isty.uvsq.fr>
6871
6872         Merge from graphite branch.
6873         * graphite.c: New.
6874         * graphite.h: New.
6875         * tree-loop-linear.c (perfect_loop_nest_depth): Export.
6876         * doc/invoke.texi (-floop-block, -floop-interchange,
6877         -floop-strip-mine): Document new flags.
6878         * tree-into-ssa.c (gimple_vec): Moved...
6879         * tree-loop-distribution.c (rdg_component): Moved...
6880         * cfgloopmanip.c: Include tree-flow.h.
6881         (update_dominators_in_loop): New.
6882         (create_empty_if_region_on_edge): New.
6883         (create_empty_loop_on_edge): New.
6884         (loopify): Use update_dominators_in_loop.
6885         * tree-pass.h (pass_graphite_transforms): Declared.
6886         * configure: Regenerate.
6887         * tree-phinodes.c (make_phi_node): Export.
6888         (add_phi_node_to_bb): New, split from create_phi_node.
6889         * tree-chrec.c (for_each_scev_op): New.
6890         * tree-chrec.h (for_each_scev_op): Declared.
6891         * tree-ssa-loop-ivopts.c (get_phi_with_result): New.
6892         (remove_statement): Call get_phi_with_result.
6893         * config.in (HAVE_cloog): Undef.
6894         * gdbinit.in (pgg): New.
6895         * timevar.def (TV_GRAPHITE_TRANSFORMS): New.
6896         * tree-ssa-loop.c (graphite_transforms): New.
6897         (gate_graphite_transforms): New.
6898         (pass_graphite_transforms): New.
6899         * configure.ac (PPLLIBS, PPLINC, CLOOGLIBS, CLOOGINC,
6900         HAVE_cloog): Defined.
6901         * tree-vectorizer.c (rename_variables_in_bb): Export.
6902         * tree-data-ref.c (dr_may_alias_p): Export.
6903         (stmt_simple_memref_p): New.
6904         (find_data_references_in_stmt): Export.
6905         (find_data_references_in_loop): Export.
6906         (create_rdg_edge_for_ddr): Initialize RDGE_RELATION.
6907         (create_rdg_edges_for_scalar): Initialize RDGE_RELATION.
6908         (create_rdg_vertices): Export.
6909         (build_empty_rdg): New.
6910         (build_rdg): Call build_empty_rdg.  Free dependence_relations.
6911         * tree-data-ref.h (rdg_component): ... here.
6912         (scop_p): New.
6913         (struct data_reference): Add a field scop.
6914         (DR_SCOP): New.
6915         (find_data_references_in_loop): Declared.
6916         (find_data_references_in_stmt): Declared.
6917         (create_rdg_vertices): Declared.
6918         (dr_may_alias_p): Declared.
6919         (stmt_simple_memref_p): Declared.
6920         (struct rdg_edge): Add a field ddr_p relation.
6921         (build_empty_rdg): Declared.
6922         * lambda.h (lambda_matrix): Declare a VEC of.
6923         (find_induction_var_from_exit_cond): Declared.
6924         (lambda_vector_compare): New.
6925         * common.opt (fgraphite, floop-strip-mine,
6926         floop-interchange, floop-block): New flags.
6927         * lambda-code.c (find_induction_var_from_exit_cond): Export.
6928         * cfgloop.c (is_loop_exit): New.
6929         * cfgloop.h (is_loop_exit): Declared.
6930         (create_empty_if_region_on_edge): Declared.
6931         (create_empty_loop_on_edge): Declared.
6932         * tree-flow.h (add_phi_node_to_bb): Declared.
6933         (make_phi_node): Declared.
6934         (rename_variables_in_bb): Declared.
6935         (perfect_loop_nest_depth): Declared.
6936         (graphite_transform_loops): Declared.
6937         * Makefile.in (cfgloopmanip.o): Depend on TREE_FLOW_H.
6938         (graphite.o-warn): Add -Wno-error.
6939         (PPLLIBS, PPLINC, CLOOGLIBS, CLOOGINC): Declared.
6940         (LIBS): Add GMPLIBS, CLOOGLIBS, PPLLIBS.
6941         (INCLUDES): Add PPLINC, CLOOGINC.
6942         (OBJS-common): Add graphite.o.
6943         (graphite.o): Add rule.
6944         * gimple.h (gimple_vec): ... here.
6945         * tree-cfg.c (print_loops): Start printing at ENTRY_BLOCK_PTR.
6946         * passes.c (init_optimization_passes): Schedule
6947         pass_graphite_transforms.
6948
6949 2008-09-02  Samuel Tardieu  <sam@rfc1149.net>
6950
6951         PR target/37283
6952         * opts.c (decode_options): Move processing of -fno-unit-at-a-time
6953         and -fno-toplevel-reorder after handle_options.
6954
6955 2008-09-02  Paul Brook  <paul@codesourcery.com>
6956
6957         * config/arm/arm.c (arm_tune_cortex_a9): Define.
6958         (arm_override_options): Set arm_tune_cortex_a9.
6959         (arm_rtx_costs_1): Make register shifts more expensive on Cortex-A9.
6960         (arm_issue_rate): Handle cortexa9.
6961         * config/arm/arm.h (arm_tune_cortex_a9): Declare.
6962         * config/arm/arm-cores.def: Add cortex-a9.
6963         * config/arm/arm-tune.md: Regenerate.
6964         * config/arm/arm.md: Include cortex-a9.md.
6965         (generic_sched, generic_vfp): Add cortexa9.
6966         * config/arm/cortex-a9.md: New file.
6967
6968 2008-09-02  Richard Guenther  <rguenther@suse.de>
6969
6970         PR tree-optimization/37327
6971         * tree-vrp.c (register_new_assert_for): Make sure to not have
6972         TREE_OVERFLOW set on the bound.
6973
6974 2008-09-02  Alexander Monakov  <amonakov@ispras.ru>
6975
6976         Fixed typo in date of the 2008-09-01 MOVE_RATIO commit.
6977
6978         * config/ia64/ia64.opt (msched-ar-data-spec): Default to 1.
6979         * config/ia64/ia64.c (ia64_set_sched_flags): Always initialize
6980         spec_info->mask.
6981
6982 2008-09-02  Victor Kaplansky  <victork@il.ibm.com>
6983
6984         * gcc/config/spu/spu.md (divdf3): Removed.
6985
6986 2008-09-02  Jakub Jelinek  <jakub@redhat.com>
6987
6988         PR tree-optimization/37095
6989         * cgraph.c (cgraph_node): When creating new cgraph node after
6990         assembler_name_hash has been populated, record it in the hash
6991         table.
6992
6993 2008-09-01  Paul Brook  <paul@codesourcery.com>
6994
6995         * doc/invoke.texi: Document -mword-relocations.
6996         * config/arm/uclinux-elf.h (TARGET_DEFAULT_WORD_RELOCATIONS): Define.
6997         * config/arm/symbian.h (TARGET_DEFAULT_WORD_RELOCATIONS): Define.
6998         * config/arm/vxworks.h (TARGET_DEFAULT_WORD_RELOCATIONS): Define.
6999         * config/arm/arm.c (arm_split_constant): Use arm_emit_movpair.
7000         (arm_rtx_costs_1, arm_size_rtx_costs): Handle HIGH and LO_SUM.
7001         (arm_emit_movpair): New function.
7002         (arm_print_operand <c>): Handle sybolic addresses.
7003         * config/arm/arm.h (TARGET_USE_MOVT): Define.
7004         (TARGET_DEFAULT_WORD_RELOCATIONS): Define.
7005         * config/arm/arm-protos.h (arm_emit_movpair): Add prototype.
7006         * config/arm/arm.opt: Add -mword-relocations.
7007         * config/arm/arm.md (movsi): Use arm_emit_movpair.
7008         (arm_movt, arm_movw): New.
7009
7010 2008-09-01  Paul Brook  <paul@codesourcery.com>
7011
7012         * config/arm/arm.c (arm_override_options): Set arm_abi earlier.
7013         Allow Interworking on ARMv4 EABI based targets.
7014         * config/arm/bpabi.h (TARGET_FIX_V4BX_SPEC): Define.
7015         (SUBTARGET_EXTRA_ASM_SPEC, LINK_SPEC): Add TARGET_FIX_V4BX_SPEC.
7016
7017 2008-09-01  Paul Brook  <paul@codesourcery.com>
7018
7019         * config/arm/thumb2.md (thumb2_negscc): Match the correct operand for
7020         optimized LT0 test.  Remove optimization for GT.
7021
7022 2008-09-01  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
7023
7024         * pa64-hpux.h (LIB_SPEC): Link against librt when building static
7025         openmp applications.
7026         * pa-hpux11.h (LIB_SPEC): Likewise.
7027
7028         * ira.c (setup_eliminable_regset): Only declare i if ELIMINABLE_REGS
7029         is defined.
7030
7031 2008-09-01  Jan Hubicka  <jh@suse.cz>
7032
7033         * predict.c (maybe_hot_count_p, maybe_hot_edge_p): When profile is
7034         present, use only counts; when guessed use only frequencies.
7035         (estimate_bb_frequencies): Use function_frequency.
7036         * profile.c (compute_branch_probabilities): Exit early when
7037         profile reading failed. Set profile_status.
7038         (branch_prob): Do not set profile_status.
7039
7040 2008-09-01  Aldy Hernandez  <aldyh@redhat.com>
7041
7042         * tree.c (protected_set_expr_location): New.
7043         * tree.h (protected_set_expr_location): New prototype.
7044         * c-tree.h (build_array_ref): Add argument.
7045         (parser_build_unary_op): Same.
7046         * c-typeck.c (build_indirect_ref): Handle new location argument.
7047         (build_array_ref): Same.
7048         (parser_build_unary_op): Same.
7049         * gimplify.c (gimplify_asm_expr): Set input_location before calling
7050         error.
7051         * c-omp.c (c_finish_omp_atomic): Pass location when calling
7052         build_indirect_ref.
7053         * c-common.c (finish_label_address_expr): Handle new location argument.
7054         * c-common.h (build_indirect_ref): Add argument.
7055         (finish_label_address_expr): Same.
7056         * c-parser.c (c_parser_unary_expression): Pass location to build
7057         functions.
7058         (c_parser_postfix_expression): Same.
7059
7060 2008-09-01  Paul Brook  <paul@codesourcery.com>
7061
7062         * config/arm/arm.md: Include cortex-r4f.md.
7063         (attr fpu): Update type list.
7064         (attr type): Add fcpys, ffariths, ffarithd, fadds, faddd, fconsts,
7065         fconstd, fcmps and fcmpd.
7066         (attr tune_cortexr4): Define.
7067         (attr generic_sched, attr generic_vfp): Use tune_cortexr4.
7068         * config/arm/vfp.md: Document fcpys, ffariths, ffarithd, fadds, faddd,
7069         fconsts, fconstd, fcmps and fcmpd.  Use them in insn patterns.
7070         * config/arm/arm.c (arm_issue_rate): Add cortexr4f.
7071         * config/arm/arm1020e.md (v10_ffarith, v10_farith): Use new insn types.
7072         * config/arm/cortex-a8-neon.md (cortex_a8_vfp_add_sub,
7073         cortex_a8_vfp_farith: Ditto.
7074         * config/arm/vfp11.md (vfp_ffarith, vfp_farith): Ditto.
7075         * config/arm/cortex-r4.md: Use tune_cortexr4.
7076         * config/arm/cortex-r4f.md: New file.
7077
7078 2008-09-01  Richard Guenther  <rguenther@suse.de>
7079
7080         PR tree-optimization/37305
7081         * tree-ssa-ccp.c (ccp_fold): Do not set TREE_OVERFLOW on
7082         the result of constant conversions.
7083         (fold_gimple_assign): Likewise.
7084
7085 2008-09-01  Andrey Belevantsev  <abel@ispras.ru>
7086
7087         * sel-sched-ir.c (cmp_v_in_regset_pool): Surround with
7088         #ifdef ENABLE_CHECKING.
7089
7090 2008-09-01  Andrey Belevantsev  <abel@ispras.ru>
7091
7092         * sel-sched-dump.c: Surround with #ifdef INSN_SCHEDULING.
7093         * sched-int.h (print_insn, print_pattern, print_value): Declare also
7094         when !INSN_SCHEDULING.
7095
7096 2008-09-01  Andreas Schwab  <schwab@suse.de>
7097
7098         * config/ia64/ia64.c (TARGET_ADDRESS_COST): Update.
7099
7100 2008-09-01  Paul Brook  <paul@codesourcery.com>
7101
7102         * config/arm/arm.c (arm_no_early_mul_dep): Handle multiply-subtract.
7103
7104 2008-09-01  Jan Hubicka  <jh@suse.cz>
7105
7106         * config/spu/spu.c (spu_expand_block_move) Update call of MOVE_RATIO.
7107
7108         * expr.c (MOVE_BY_PIECES_P, CLEAR_BY_PIECES_P, SET_BY_PIECES_P):
7109         Pass speed operand.
7110         * expr.h (MOVE_RATIO, CLEAR_RATIO, SET_RATIO): Update.
7111         * gimplify.c (gimplify_init_constructor): Add speed operand.
7112         * tree-sra.c (decide_block_copy): Likewise.
7113         * tree-inline.c (estimate_move_cost): Likewise.
7114         * config/alpha/alpha.h (MOVE_RATIO): Update.
7115         * config/frv/frv.c (MOVE_RATIO): Update.
7116         * config/spu/spu.h (MOVE_RATIO): Update.
7117         * config/sparc/sparc.h (MOVE_RATIO): Update.
7118         * config/i386/i386.h (MOVE_RATIO, CLEAR_RATIO): Update.
7119         * config/m68hc11/m68hc11.h (MOVE_RATIO): Update.
7120         * config/cris/cris.h (MOVE_RATIO): Update.
7121         * config/mn10300/mn10300.h (MOVE_RATIO): Update.
7122         * config/arm/arm.h (MOVE_RATIO): Update.
7123         * config/pa/pa.md: Update uses of MOVE_RATIO
7124         * config/pa/pa.h (MOVE_RATIO): Update.
7125         * config/mips/mips.h (MOVE_RATIO, MOVE_BY_PIECES,
7126         CLEAR_RATIO, SET_RATIO): Update.
7127         * config/h8300/h8300.h (MOVE_RATIO): Update.
7128         * config/v850/v850.h (MOVE_RATIO): Update.
7129         * config/bfin/bfin.h (MOVE_RATIO): Update.
7130
7131 2008-08-31  Andrey Belevantsev  <abel@ispras.ru>
7132             Dmitry Melnik  <dm@ispras.ru>
7133             Dmitry Zhurikhin  <zhur@ispras.ru>
7134             Alexander Monakov  <amonakov@ispras.ru>
7135             Maxim Kuvyrkov  <maxim@codesourcery.com>
7136
7137         * sel-sched.h, sel-sched-dump.h, sel-sched-ir.h, sel-sched.c,
7138         sel-sched-dump.c, sel-sched-ir.c: New files.
7139         * Makefile.in (OBJS-common): Add selective scheduling object files.
7140         (sel-sched.o, sel-sched-dump.o, sel-sched-ir.o): New entries.
7141         (SEL_SCHED_IR_H, SEL_SCHED_DUMP_H): New entries.
7142         (sched-vis.o): Add dependency on $(INSN_ATTR_H).
7143         * cfghooks.h (get_cfg_hooks, set_cfg_hooks): New prototypes.
7144         * cfghooks.c (get_cfg_hooks, set_cfg_hooks): New functions.
7145         (make_forwarder_block): Update loop latch if we have redirected
7146         the loop latch edge.
7147         * cfgloop.c (get_loop_body_in_custom_order): New function.
7148         * cfgloop.h (LOOPS_HAVE_FALLTHRU_PREHEADERS): New enum field.
7149         (CP_FALLTHRU_PREHEADERS): Likewise.
7150         (get_loop_body_in_custom_order): Declare.
7151         * cfgloopmanip.c (has_preds_from_loop): New.
7152         (create_preheader): Honor CP_FALLTHRU_PREHEADERS.
7153         Assert that the preheader edge will be fall thru when it is set.
7154         * common.opt (fsel-sched-bookkeeping, fsel-sched-pipelining,
7155         fsel-sched-pipelining-outer-loops, fsel-sched-renaming,
7156         fsel-sched-substitution, fselective-scheduling): New flags.
7157         * cse.c (hash_rtx_cb): New.
7158         (hash_rtx): Use it.
7159         * dbgcnt.def (sel_sched_cnt, sel_sched_region_cnt,
7160         sel_sched_insn_cnt): New counters.
7161         * final.c (compute_alignments): Export.  Free dominance
7162         info after loop_optimizer_finalize.
7163         * genattr.c (main): Output maximal_insn_latency prototype.
7164         * genautomata.c (output_default_latencies): New.
7165         Factor its code from ...
7166         (output_internal_insn_latency_func): ... here.
7167         (output_internal_maximal_insn_latency_func): New.
7168         (output_maximal_insn_latency_func): New.
7169         * hard-reg-set.h (UHOST_BITS_PER_WIDE_INT): Define unconditionally.
7170         (struct hard_reg_set_iterator): New.
7171         (hard_reg_set_iter_init, hard_reg_set_iter_set,
7172         hard_reg_set_iter_next): New functions.
7173         (EXECUTE_IF_SET_IN_HARD_REG_SET): New macro.
7174         * lists.c (remove_free_INSN_LIST_node,
7175         remove_free_EXPR_LIST_node): New functions.
7176         * loop-init.c (loop_optimizer_init): When
7177         LOOPS_HAVE_FALLTHRU_PREHEADERS, set CP_FALLTHRU_PREHEADERS when
7178         calling create_preheaders.
7179         (loop_optimizer_finalize): Do not verify flow info after reload.
7180         * recog.c (validate_replace_rtx_1): New parameter simplify.
7181         Default it to true.  Update all uses.  Factor out simplifying
7182         code to ...
7183         (simplify_while_replacing): ... this new function.
7184         (validate_replace_rtx_part,
7185         validate_replace_rtx_part_nosimplify): New.
7186         * recog.h (validate_replace_rtx_part,
7187         validate_replace_rtx_part_nosimplify): Declare.
7188         * rtl.c (rtx_equal_p_cb): New.
7189         (rtx_equal_p): Use it.
7190         * rtl.h (rtx_equal_p_cb, hash_rtx_cb): Declare.
7191         (remove_free_INSN_LIST_NODE, remove_free_EXPR_LIST_node,
7192         debug_bb_n_slim, debug_bb_slim,    print_rtl_slim): Likewise.
7193         * vecprim.h: Add a vector type for unsigned int.
7194         * haifa-sched.c: Include vecprim.h and cfgloop.h.
7195         (issue_rate, sched_verbose_param, note_list, dfa_state_size,
7196         ready_try, cycle_issued_insns, spec_info): Make global.
7197         (readyp): Initialize.
7198         (dfa_lookahead): New global variable.
7199         (old_max_uid, old_last_basic_block): Remove.
7200         (h_i_d): Make it a vector.
7201         (INSN_TICK, INTER_TICK, QUEUE_INDEX, INSN_COST): Make them work
7202         through HID macro.
7203         (after_recovery, adding_bb_to_current_region_p):
7204         New variables to handle correct insertion of the recovery code.
7205         (struct ready_list): Move declaration to sched-int.h.
7206         (rgn_n_insns): Removed.
7207         (rtx_vec_t): Move to sched-int.h.
7208         (find_insn_reg_weight): Remove.
7209         (find_insn_reg_weight1): Rename to find_insn_reg_weight.
7210         (haifa_init_h_i_d, haifa_finish_h_i_d):
7211         New functions to initialize / finalize haifa instruction data.
7212         (extend_h_i_d, init_h_i_d): Rewrite.
7213         (unlink_other_notes): Move logic to add_to_note_list.  Handle
7214         selective scheduler.
7215         (ready_lastpos, ready_element, ready_sort, reemit_notes,
7216         find_fallthru_edge): Make global, remove static prototypes.
7217         (max_issue): Make global.  Add privileged_n and state parameters.  Use
7218         them.
7219         (extend_global, extend_all): Removed.
7220         (init_before_recovery): Add new param.  Fix the handling of the case
7221         when we insert a recovery code before the EXIT which has a predecessor
7222         with a fallthrough edge to it.
7223         (create_recovery_block): Make global.  Rename to
7224         sched_create_recovery_block.  Update.
7225         (change_pattern): Rename to sched_change_pattern.  Make global.
7226         (speculate_insn): Rename to sched_speculate_insn.  Make global.
7227         Split haifa-specific functionality into ...
7228         (haifa_change_pattern): New static function.
7229         (sched_extend_bb): New static function.
7230         (sched_init_bbs): New function.
7231         (current_sched_info): Change type to struct haifa_sched_info.
7232         (insn_cost): Adjust for selective scheduling.
7233         (dep_cost_1): New function.  Move logic from ...
7234         (dep_cost): ... here.
7235         (dep_cost): Use dep_cost_1.
7236         (contributes_to_priority_p): Use sched_deps_info instead of
7237         current_sched_info.
7238         (priority): Adjust to work with selective scheduling.  Process the
7239         corner case when all dependencies don't contribute to priority.
7240         (rank_for_schedule): Use ds_weak instead of dep_weak.
7241         (advance_state): New function.  Move logic from ...
7242         (advance_one_cycle): ... here.
7243         (add_to_note_list, concat_note_lists): New functions.
7244         (rm_other_notes): Make static.  Adjust for selective scheduling.
7245         (remove_notes, restore_other_notes): New functions.
7246         (move_insn): Add two arguments.  Update assert.  Don't call
7247         reemit_notes.
7248         (choose_ready): Remove lookahead variable, use dfa_lookahead.
7249         Remove more_issue, max_points.  Move the code to initialize
7250         max_lookahead_tries to max_issue.
7251         (schedule_block): Remove rgn_n_insns1 parameter.  Don't allocate
7252         ready.  Adjust use of move_insn.  Call restore_other_notes.
7253         (luid): Remove.
7254         (sched_init, sched_finish): Move Haifa-specific initialization/
7255         finalization to ...
7256         (haifa_sched_init, haifa_sched_finish): ... respectively.
7257         New functions.
7258         (setup_sched_dump): New function.
7259         (haifa_init_only_bb): New static function.
7260         (haifa_speculate_insn): New static function.
7261         (try_ready): Use haifa_* instead of speculate_insn and change_pattern.
7262         (extend_ready, extend_all): Remove.
7263         (sched_extend_ready_list, sched_finish_ready_list): New functions.
7264         (create_check_block_twin, add_to_speculative_block): Use
7265         haifa_insns_init instead of extend_global.  Update to use new
7266         initialization functions.  Change parameter.  Factor out code from
7267         create_check_block_twin to ...
7268         (sched_create_recovery_edges) ... this new function.
7269         (add_block): Remove.
7270         (sched_scan_info): New.
7271         (extend_bb): Use sched_scan_info.
7272         (init_bb, extend_insn, init_insn, init_insns_in_bb, sched_scan): New
7273         static functions for walking through scheduling region.
7274         (sched_luids): New vector variable to replace uid_to_luid.
7275         (luids_extend_insn): New function.
7276         (sched_max_luid): New variable.
7277         (luids_init_insn): New function.
7278         (sched_init_luids, sched_finish_luids): New functions.
7279         (insn_luid): New debug function.
7280         (sched_extend_target): New function.
7281         (haifa_init_insn): New static function.
7282         (sched_init_only_bb): New hook.
7283         (sched_split_block): New hook.
7284         (sched_split_block_1): New function.
7285         (sched_create_empty_bb): New hook.
7286         (sched_create_empty_bb_1): New function.
7287         (common_sched_info, ready): New global variables.
7288         (current_sched_info_var): Remove.
7289         (move_block_after_check): Use common_sched_info.
7290         (haifa_luid_for_non_insn): New static function.
7291         (init_before_recovery): Use haifa_init_only_bb instead of add_block.
7292         (increase_insn_priority): New.
7293         * modulo-sched.c: (issue_rate): Remove static declaration.
7294         (sms_sched_info): Change type to haifa_sched_info.
7295         (sms_sched_deps_info, sms_common_sched_info): New variables.
7296         (setup_sched_infos): New.
7297         (sms_schedule): Initialize them.  Call haifa_sched_init/finish.
7298         Do not call regstat_free_calls_crossed.
7299         (sms_print_insn): Use const_rtx.
7300         * params.def (PARAM_MAX_PIPELINE_REGION_BLOCKS,
7301         PARAM_MAX_PIPELINE_REGION_INSNS, PARAM_SELSCHED_MAX_LOOKAHEAD,
7302         PARAM_SELSCHED_MAX_SCHED_TIMES, PARAM_SELSCHED_INSNS_TO_RENAME,
7303         PARAM_SCHED_MEM_TRUE_DEP_COST): New.
7304         * sched-deps.c (sched_deps_info): New.  Update all relevant uses of
7305         current_sched_info to use it.
7306         (enum reg_pending_barrier_mode): Move to sched-int.h.
7307         (h_d_i_d): New variable. Initialize to NULL.
7308         ({true, output, anti, spec, forward}_dependency_cache): Initialize
7309         to NULL.
7310         (estimate_dep_weak): Remove static declaration.
7311         (sched_has_condition_p): New function.  Adjust users of
7312         sched_get_condition to use it instead.
7313         (conditions_mutex_p): Add arguments indicating which conditions are
7314         reversed.  Use them.
7315         (sched_get_condition_with_rev): Rename from sched_get_condition.  Add
7316         argument to indicate whether returned condition is reversed.  Do not
7317         generate new rtx when condition should be reversed; indicate it by
7318         setting new argument instead.
7319         (add_dependence_list_and_free): Add deps parameter.
7320         Update all users.  Do not free dependence list when
7321         deps context is readonly.
7322         (add_insn_mem_dependence, flush_pending_lists): Adjust for readonly
7323         contexts.
7324         (remove_from_dependence_list, remove_from_both_dependence_lists): New.
7325         (remove_from_deps): New. Use the above functions.
7326         (cur_insn, can_start_lhs_rhs_p): New static variables.
7327         (add_or_update_back_dep_1): Initialize present_dep_type.
7328         (haifa_start_insn, haifa_finish_insn, haifa_note_reg_set,
7329         haifa_note_reg_clobber, haifa_note_reg_use, haifa_note_mem_dep,
7330         haifa_note_dep): New functions implementing dependence hooks for
7331         the Haifa scheduler.
7332         (note_reg_use, note_reg_set, note_reg_clobber, note_mem_dep,
7333         note_dep): New functions.
7334         (ds_to_dt, extend_deps_reg_info, maybe_extend_reg_info_p): New
7335         functions.
7336         (init_deps): Initialize last_reg_pending_barrier and deps->readonly.
7337         (free_deps): Initialize deps->reg_last.
7338         (sched_analyze_reg, sched_analyze_1, sched_analyze_2,
7339         sched_analyze_insn): Update to use dependency hooks infrastructure
7340         and readonly contexts.
7341         (deps_analyze_insn): New function.  Move part of logic from ...
7342         (sched_analyze): ... here.  Also move some logic to ...
7343         (deps_start_bb): ... here.  New function.
7344         (add_forw_dep, delete_forw_dep): Guard use of INSN_DEP_COUNT with
7345         sel_sched_p.
7346         (sched_deps_init): New function.  Move code from ...
7347         (init_dependency_caches): ... here.  Remove.
7348         (init_deps_data_vector): New.
7349         (sched_deps_finish): New function.  Move code from ...
7350         (free_dependency_caches): ... here.  Remove.
7351         (init_deps_global, finish_deps_global): Adjust for use with
7352         selective scheduling.
7353         (get_dep_weak): Move logic to ...
7354         (get_dep_weak_1): New function.
7355         (ds_merge): Move logic to ...
7356         (ds_merge_1): New static function.
7357         (ds_full_merge, ds_max_merge, ds_get_speculation_types): New functions.
7358         (ds_get_max_dep_weak): New function.
7359         * sched-ebb.c (sched_n_insns): Rename to sched_rgn_n_insns.
7360         (n_insns): Rename to rgn_n_insns.
7361         (debug_ebb_dependencies): New function.
7362         (init_ready_list): Use it.
7363         (begin_schedule_ready): Use sched_init_only_bb.
7364         (ebb_print_insn): Indicate when an insn starts a new cycle.
7365         (contributes_to_priority, compute_jump_reg_dependencies,
7366         add_remove_insn, fix_recovery_cfg): Add ebb_ prefix to function names.
7367         (add_block1): Remove to ebb_add_block.
7368         (ebb_sched_deps_info, ebb_common_sched_info): New variables.
7369         (schedule_ebb): Initialize them.  Use remove_notes instead of
7370         rm_other_notes.  Use haifa_local_init/finish.
7371         (schedule_ebbs): Use haifa_sched_init/finish.
7372         * sched-int.h: Include vecprim.h, remove rtl.h.
7373         (struct ready_list): Delete declaration.
7374         (sched_verbose_param, enum sched_pass_id_t,
7375         bb_vec_t, insn_vec_t, rtx_vec_t): New.
7376         (struct sched_scan_info_def): New structure.
7377         (sched_scan_info, sched_scan, sched_init_bbs,
7378         sched_init_luids, sched_finish_luids, sched_extend_target,
7379         haifa_init_h_i_d, haifa_finish_h_i_d): Declare.
7380         (struct common_sched_info_def): New.
7381         (common_sched_info, haifa_common_sched_info,
7382         sched_emulate_haifa_p): Declare.
7383         (sel_sched_p): New.
7384         (sched_luids): Declare.
7385         (INSN_LUID, LUID_BY_UID, SET_INSN_LUID): Declare.
7386         (sched_max_luid, insn_luid): Declare.
7387         (note_list, remove_notes, restore_other_notes, bb_note): Declare.
7388         (sched_insns_init, sched_insns_finish, xrecalloc, reemit_notes,
7389         print_insn, print_pattern, print_value, haifa_classify_insn,
7390         sel_find_rgns, sel_mark_hard_insn, dfa_state_size, advance_state,
7391         setup_sched_dump, sched_init, sched_finish,
7392         sel_insn_is_speculation_check): Export.
7393         (struct ready_list): Move from haifa-sched.c.
7394         (ready_try, ready, max_issue): Export.
7395         (ebb_compute_jump_reg_dependencies, find_fallthru_edge,
7396         sched_init_only_bb, sched_split_block, sched_split_block_1,
7397         sched_create_empty_bb, sched_create_empty_bb_1,
7398         sched_create_recovery_block, sched_create_recovery_edges): Export.
7399         (enum reg_pending_barrier_mode): Export.
7400         (struct deps): New fields `last_reg_pending_barrier' and `readonly'.
7401         (deps_t): New.
7402         (struct sched_info): Rename to haifa_sched_info.  Use const_rtx for
7403         print_insn field.  Move add_block and fix_recovery_cfg to
7404         common_sched_info_def.  Move compute_jump_reg_dependencies,
7405         use_cselib  ...
7406         (struct sched_deps_info_def): ... this new structure.
7407         (sched_deps_info): Declare.
7408         (struct spec_info_def): Remove weakness_cutoff, add
7409         data_weakness_cutoff and control_weakness_cutoff.
7410         (spec_info): Declare.
7411         (struct _haifa_deps_insn_data): Split from haifa_insn_data.  Add
7412         dep_count field.
7413         (struct haifa_insn_data): Rename to struct _haifa_insn_data.
7414         (haifa_insn_data_def, haifa_insn_data_t): New typedefs.
7415         (current_sched_info): Change type to struct haifa_sched_info.
7416         (haifa_deps_insn_data_def, haifa_deps_insn_data_t): New typedefs.
7417         (h_d_i_d): New variable.
7418         (HDID): New accessor macro.
7419         (h_i_d): Change type to VEC (haifa_insn_data_def, heap) *.
7420         (HID): New accessor macro.  Rewrite h_i_d accessor macros through HID
7421         and HDID.
7422         (IS_SPECULATION_CHECK_P): Update for selective scheduler.
7423         (enum SCHED_FLAGS): Update for selective scheduler.
7424         (enum SPEC_SCHED_FLAGS): New flag SEL_SCHED_SPEC_DONT_CHECK_CONTROL.
7425         (init_dependency_caches, free_dependency_caches): Delete declarations.
7426         (deps_analyze_insn, remove_from_deps, get_dep_weak_1,
7427         estimate_dep_weak, ds_full_merge, ds_max_merge, ds_weak,
7428         ds_get_speculation_types, ds_get_max_dep_weak, sched_deps_init,
7429         sched_deps_finish, haifa_note_reg_set, haifa_note_reg_use,
7430         haifa_note_reg_clobber, maybe_extend_reg_info_p, deps_start_bb,
7431         ds_to_dt): Export.
7432         (rm_other_notes): Delete declaration.
7433         (schedule_block): Remove one argument.
7434         (cycle_issued_insns, issue_rate, dfa_lookahead, ready_sort,
7435         ready_element, ready_lastpos, sched_extend_ready_list,
7436         sched_finish_ready_list, sched_change_pattern, sched_speculate_insn,
7437         concat_note_lists): Export.
7438         (struct region): Move from sched-rgn.h.
7439         (nr_regions, rgn_table, rgn_bb_table, block_to_bb, containing_rgn,
7440         RGN_NR_BLOCKS, RGN_BLOCKS, RGN_DONT_CALC_DEPS, RGN_HAS_REAL_EBB,
7441         BLOCK_TO_BB, CONTAINING_RGN): Export.
7442         (ebb_head, BB_TO_BLOCK, EBB_FIRST_BB, EBB_LAST_BB, INSN_BB): Likewise.
7443         (current_nr_blocks, current_blocks, target_bb): Likewise.
7444         (dep_cost_1, sched_is_disabled_for_current_region_p, sched_rgn_init,
7445         sched_rgn_finish, rgn_setup_region, sched_rgn_compute_dependencies,
7446         sched_rgn_local_init, extend_regions,
7447         rgn_make_new_region_out_of_new_block, compute_priorities,
7448         debug_rgn_dependencies, free_rgn_deps, contributes_to_priority,
7449         extend_rgns, deps_join rgn_setup_common_sched_info,
7450         rgn_setup_sched_infos, debug_regions, debug_region, dump_region_dot,
7451         dump_region_dot_file, haifa_sched_init, haifa_sched_finish): Export.
7452         (get_rgn_sched_max_insns_priority, sel_add_to_insn_priority,
7453         increase_insn_priority): Likewise.
7454         * sched-rgn.c: Include sel-sched.h.
7455         (ref_counts): New static variable.  Use it ...
7456         (INSN_REF_COUNT): ... here.  Rewrite and move closer to uses.
7457         (FED_BY_SPEC_LOAD, IS_LOAD_INSN): Rewrite to use HID accessor macro.
7458         (sched_is_disabled_for_current_region_p): Delete static declaration.
7459         (struct region): Move to sched-int.h.
7460         (nr_regions, rgn_table, rgn_bb_table, block_to_bb, containing_rgn,
7461         ebb_head): Define and initialize.
7462         (RGN_NR_BLOCKS, RGN_BLOCKS, RGN_DONT_CALC_DEPS, RGN_HAS_REAL_EBB,
7463         BLOCK_TO_BB, CONTAINING_RGN, debug_regions, extend_regions,
7464         BB_TO_BLOCK, EBB_FIRST_BB, EBB_LAST_BB): Move to
7465         sched-int.h.
7466         (find_single_block_region): Add new argument to indicate that EBB
7467         regions should be constructed.
7468         (debug_live): Delete declaration.
7469         (current_nr_blocks, current_blocks, target_bb):
7470         Remove static qualifiers.
7471         (compute_dom_prob_ps, check_live, update_live, set_spec_fed): Delete
7472         declaration.
7473         (init_regions): Delete declaration.
7474         (debug_region, bb_in_region_p, dump_region_dot_file, dump_region_dot,
7475         rgn_estimate_number_of_insns): New.
7476         (too_large): Use estimate_number_of_insns.
7477         (haifa_find_rgns): New. Move the code from ...
7478         (find_rgns): ... here.  Call either sel_find_rgns or haifa_find_rgns.
7479         (free_trg_info): New.
7480         (compute_trg_info): Allocate candidate tables here instead of ...
7481         (init_ready_list): ... here.
7482         (rgn_print_insn): Use const_rtx.
7483         (contributes_to_priority, extend_regions): Delete static declaration.
7484         (add_remove_insn, fix_recovery_cfg): Add rgn_ to function names.
7485         (add_block1): Rename to rgn_add_block.
7486         (debug_rgn_dependencies): Delete static qualifier.
7487         (new_ready): Use sched_deps_info.  Simplify.
7488         (rgn_common_sched_info, rgn_const_sched_deps_info,
7489         rgn_const_sel_sched_deps_info, rgn_sched_deps_info, rgn_sched_info):
7490         New.
7491         (region_sched_info): Rename to rgn_const_sched_info.
7492         (deps_join): New, extracted from ...
7493         (propagate_deps): ... here.
7494         (compute_block_dependences, debug_dependencies): Update for selective
7495         scheduling.
7496         (free_rgn_deps, compute_priorities): New functions.
7497         (sched_rgn_init, sched_rgn_finish, rgn_setup_region,
7498         sched_rgn_compute_dependencies): New functions.
7499         (schedule_region): Use them.
7500         (sched_rgn_local_init, sched_rgn_local_free, sched_rgn_local_finish,
7501         rgn_setup_common_sched_info, rgn_setup_sched_infos):
7502         New functions.
7503         (schedule_insns): Call new functions that were split out.
7504         (rgn_make_new_region_out_of_new_block): New.
7505         (get_rgn_sched_max_insns_priority): New.
7506         (rest_of_handle_sched, rest_of_handle_sched2): Call selective
7507         scheduling when appropriate.
7508         * sched-vis.c: Include insn-attr.h.
7509         (print_value, print_pattern): Make global.
7510         (print_rtl_slim, debug_bb_slim, debug_bb_n_slim): New functions.
7511         * target-def.h (TARGET_SCHED_ADJUST_COST_2,
7512         TARGET_SCHED_ALLOC_SCHED_CONTEXT, TARGET_SCHED_INIT_SCHED_CONTEXT,
7513         TARGET_SCHED_SET_SCHED_CONTEXT, TARGET_SCHED_CLEAR_SCHED_CONTEXT,
7514         TARGET_SCHED_FREE_SCHED_CONTEXT, TARGET_SCHED_GET_INSN_CHECKED_DS,
7515         TARGET_SCHED_GET_INSN_SPEC_DS, TARGET_SCHED_SKIP_RTX_P): New target
7516         hooks.  Initialize them to 0.
7517         (TARGET_SCHED_GEN_CHECK): Rename to TARGET_SCHED_GEN_SPEC_CHECK.
7518         * target.h (struct gcc_target): Add them.  Rename gen_check field to
7519         gen_spec_check.
7520         * flags.h (sel_sched_switch_set): Declare.
7521         * opts.c (sel_sched_switch_set): New variable.
7522         (decode_options): Unset flag_sel_sched_pipelining_outer_loops if
7523         pipelining is disabled from command line.
7524         (common_handle_option): Record whether selective scheduling is
7525         requested from command line.
7526         * doc/invoke.texi: Document new flags and parameters.
7527         * doc/tm.texi: Document new target hooks.
7528         * config/ia64/ia64.c (TARGET_SCHED_GEN_SPEC_CHECK): Define to
7529         ia64_gen_check.
7530         (dfa_state_size): Do not declare locally.
7531         * config/ia64/ia64.opt (msched-ar-data-spec): Default to 0.
7532         * config/rs6000/rs6000.c (rs6000_init_sched_context,
7533         rs6000_alloc_sched_context, rs6000_set_sched_context,
7534         rs6000_free_sched_context): New functions.
7535         (struct _rs6000_sched_context): New.
7536         (rs6000_sched_reorder2): Do not modify INSN_PRIORITY for selective
7537         scheduling.
7538         (rs6000_sched_finish): Do not run for selective scheduling.
7539
7540 2008-08-31  Jan Hubicka  <jh@suse.cz>
7541
7542         * frv.c (frv_rtx_costs): Update forward declaration.
7543         * spu.c (spu_rtx_costs): Likewise.
7544         * pdp11.c: Include df.h
7545         (pdp11_output_function_epilogue): Use df_set_regs_ever_live.
7546         * m68hc11.c (m68hc11_gen_highpart): Fix call of gen_rtx_SUBREG.
7547         (m68hc11_rtx_costs_1): Fix call of rtx_cost.
7548         * iq2000.c (iq2000_address_cost): Add speed argument.
7549         (iq2000_rtx_costs): Likewise.
7550         * mn10300.c (mn10300_address_cost_1): Remove speed argument;
7551         update call of mn10300_address_cost.
7552         * mcore.c: Include df.h
7553         (mcore_rtx_costs): Update prototype.
7554         * score3.c: Include df.h
7555         (score3_rtx_costs): Remove speed argument.
7556         * score7.c: Include df.h
7557         (score7_address_cost): Remove speed argument.
7558         * score-protos.h (score_address_cost): Update prototype.
7559         * score.c: Include df.h
7560         (score_rtx_costs): Update call of costs functions.
7561         * v850.c (v850_rtx_costs): Add bool argument.
7562
7563 2008-08-31  Hans-Peter Nilsson  <hp@axis.com>
7564
7565         * config/cris/cris.c (cris_rtx_costs): Correct call to rtx_costs.
7566
7567 2008-08-31  Aaron W. LaFramboise  <aaronavay62@aaronwl.com>
7568
7569         * gthr-win32.h (__gthread_setspecific): Use CONST_CAST2.
7570         * config/i386/gthr-win32.c (__gthread_setspecific): Same.
7571
7572 2008-08-31  Aaron W. LaFramboise  <aaronavay62@aaronwl.com>
7573
7574         * mkmap-flat.awk: Add option pe_dll.
7575         * config/i386/t-cygming (SHLIB_LINK): Support building libgcc_s.
7576         * config/i386/t-cygwin (SHLIB_LC): Add.
7577         * config/i386/t-mingw32 (SHLIB_LC): Add.
7578         * config/i386/mingw32.h (SHARED_LIBGCC_UNDEFS_SPEC): New.
7579         (SUBTARGET_EXTRA_SPECS): Use SHARED_LIBGCC_UNDEFS_SPEC.
7580         (LINK_SPEC): Support libgcc_s.
7581         (LIBGCC_SPEC): Support libgcc_s.
7582         (LIBGCC_SONAME): New.
7583
7584 2008-08-31  Jan Hubicka  <jh@suse.cz>
7585
7586         * predict.c (maybe_hot_bb_p, maybe_hot_edge_p): Previous commit
7587         mistakely had old version of patch.
7588
7589         * ipa-cp.c (ipcp_need_original_clone_p): Remove.
7590         (ipcp_estimate_growth): New.
7591         (ipcp_insert_stage): Use ipcp_estimate_growth.
7592         * profile.c (branch_prob): When reading failed, do not consider
7593         profile as read.
7594
7595 2008-08-31  Jan Hubicka  <jh@suse.cz>
7596
7597         * tree-ssa-loop-unswitch.c (tree_unswitch_single_loop): Check that
7598         loop is optimized for speed.
7599
7600 2008-08-31  Richard Guenther  <rguenther@suse.de>
7601
7602         PR middle-end/37289
7603         * fold-const.c (fold_binary): Retain conversions in folding
7604         ~A + 1 to -A.
7605
7606 2008-08-31  Jan Hubicka  <jh@suse.cz>
7607
7608         * postreload-gcse.c (eliminate_partially_redundant_loads):
7609         Use optimize_bb_for_size_p.
7610         * predict.c (maybe_hot_frequency_p): Make inline.
7611         (maybe_hot_count_p): Break out from ...
7612         (maybe_hot_bb_p): ... this one.
7613         (maybe_hot_edge_p): Simplify.
7614         * basic-block.h (probably_cold_bb_p): Remove.
7615
7616 2008-08-31  Jakub Jelinek  <jakub@redhat.com>
7617
7618         PR target/37168
7619         * config/rs6000/rs6000-protos.h (const_vector_elt_as_int): Add
7620         prototype.
7621         * config/rs6000/rs6000.c (const_vector_elt_as_int): No longer static.
7622         * config/rs6000/altivec.md (easy_vector_constant_add_self splitter):
7623         Also split V4SFmode.
7624         * config/rs6000/predicates.md (easy_vector_constant_add_self): Handle
7625         vector float modes.
7626
7627 2008-08-31  Jan Hubicka  <jh@suse.cz>
7628
7629         * predict.c (PROB_VERY_LIKELY): Make small enough so things
7630         become cold.
7631         * predict.def (PRED_NORETURN_CALL, PRED_COLD_CALL): Use it.
7632
7633 2008-08-31  Jakub Jelinek  <jakub@redhat.com>
7634
7635         PR debug/37287
7636         * dwarf2out.c (gen_namespace_die): For DECL_EXTERNAL modules don't
7637         add source coords.
7638
7639         * dwarf2out.c (native_encode_initializer): Subtract min_index for
7640         non-range array index.  Handle VIEW_CONVERT_EXPR and NON_LVALUE_EXPR.
7641
7642 2008-08-31  Jan Hubicka  <jh@suse.cz>
7643
7644         * sparc.h (BRANCH_COST): Fix macro definition.
7645         * avr.c (avr_operand_rtx_cost): Add speed argument.
7646         (avr_rtx_costs): Update calls of avr_operand_rtx_cost.
7647
7648 2008-08-31  Richard Guenther  <rguenther@suse.de>
7649
7650         * tree-cfg.c (verify_types_in_gimple_assign): Dump mismatched
7651         types instead of operands.  Re-instantiate verifying of
7652         binary expression operands.
7653
7654 2008-08-30  Jan Hubicka  <jh@suse.cz>
7655
7656         * fwprop.c (should_replace_address): Add speed attribute.
7657         (PR_OPTIMIZE_FOR_SPEED): New flag.
7658         (propagate_rtx_1): Use it.
7659         (propagate_rtx): Set it.
7660         (try_fwprop_subst): Update call of rtx_costs.
7661         (forward_propagate_and_simplify): LIkewise.
7662         * hooks.c (hook_int_rtx_bool_0): New
7663         (hook_bool_rtx_int_int_intp_false): Replace by ...
7664         (hook_bool_rtx_int_int_intp_bool_false): .. thisone.
7665         * hooks.h (hook_int_rtx_bool_0): New
7666         (hook_bool_rtx_int_int_intp_false): Replace by ...
7667         (hook_bool_rtx_int_int_intp_bool_false): .. thisone.
7668         * optabs.c (avoid_expensive_constant): UPdate call of rtx_cost.
7669         (prepare_cmp_insn): UPdate call of rtx_cost.
7670         * postreload.c (reload_cse_simplify_set): Update call of rtx_cost.
7671         (reload_cse_simplify_operands): Update call of rtx_cost.
7672         (reload_cse_move2add): call of rtx_cost.
7673         * target.h (struct gcc_target): Update rtx_costs and address_costs.
7674         * rtlanal.c (rtx_cost): Add speed argument.
7675         (address_cost): Add speed argument
7676         (default_address_cost): Likewise.
7677         (insn_rtx_cost): Likewise.
7678         * cfgloopanal.c (seq_cost): Add speed argument.
7679         (target_reg_cost, target_spill_cost): Turn to array.
7680         (init_set_costs): Update for speed.
7681         (estimate_reg_pressure_cost): Add speed argument.
7682         * auto-inc-dec.c (attempt_change): Update call of rtx_cost.
7683         * dojump.c (prefer_and_bit_test): UPdate call of rtx_cost.
7684         * tree-ssa-loop-ivopts.c (struct ivopts_data): New field speed.
7685         (seq_cost): Add speed argument.
7686         (computation_cost): Add speed arugment.
7687         (add_cost, multiply_by_const, get_address_cost): add speed argument.
7688         (force_expr_to_var_cost): Update for profile info.
7689         (force_var_cost): Likewise.
7690         (split_address_cost): Likewise.
7691         (ptr_difference_cost): Likewise.
7692         (difference_cost): Likewise.
7693         (get_computation_cost_at): Likewise.
7694         (determine_iv_cost): Likewise.
7695         (ivopts_global_cost_for_size): Likewise.
7696         (rewrite_use_address): Likewise.
7697         (tree_ssa_iv_optimize_loop): Initialize speed field.
7698         * cse.c (optimize_this_for_speed_p): New static var.
7699         (notreg_cost): Update call of rtx_cost.
7700         (cse_extended_basic_block): set optimize_this_for_speed_p.
7701         * ifcvt.c (cheap_bb_rtx_cost_p): Update call of rtx_cost.
7702         (noce_try_cmove_arith): Likewise.
7703         (noce_try_sign_mask): LIkewise.
7704         * expr.c (compress_float_constant): Update rtx_cost calls.
7705         * tree-ssa-address.c (most_expensive_mult_to_index): Add speed
7706         argument.
7707         (addr_to_parts): Likewise.
7708         (create_mem_ref): Likewise.
7709         * dse.c (find_shift_sequence): Add speed argument.
7710         (replace_read): Update call.
7711         * calls.c (precompute_register_parameters): Update call of rtx_cost.
7712         * expmed.c (sdiv_pow2_cheap, smod_pow2_cheap, zero_cost, add_cost,
7713         * neg_cost, shift_cost, shiftadd_cost,
7714         shiftsub_cost, mul_cost, sdiv_cost, udiv_cost ,mul_widen_cost,
7715         mul_highpart_cost): Increase dimension.
7716         (init_expmed): Initialize for both size and speed.
7717         (expand_shift): Use profile.
7718         (synth_mult): Use profile.
7719         (choose_mult_variant): Use profile.
7720         (expand_mult): Use profile.
7721         (expand_mult_highpart_optab): Use profile.
7722         (expand_mult_highpart): Use profile.
7723         (expand_smod_pow2): Use profile.
7724         (expand_divmod): Use profile.
7725         * simplify-rtx.c (simplify_binary_operation_1): Update call of
7726         rtx_cost.
7727         * loop-invariant.c (create_new_invariant): Use profile.
7728         (gain_for_invariant): Add speed parameter.
7729         (best_gain_for_invariant): Likewise.
7730         (find_invariants_to_move): Likewise.
7731         (move_single_loop_invariants): Set it.
7732         * target-def.h (TARGET_RTX_COSTS): Use hook.
7733         * rtl.h (rtx_cost, address_cost, insn_rtx_cost): Update prototpe.
7734         (optimize_insn_for_size_p, optimize_insn_for_speed_p): Declare.
7735         * output.h (default_address_cost): Update prototype.
7736         * combine.c (optimize_this_for_speed_p): New static var.
7737         (combine_validate_cost): Update call of rtx_cost.
7738         (combine_instructions): Set optimize_this_for_speed_p.
7739         (expand_compound_operation): Update call of rtx_cost.
7740         (make_extraction):Update call of rtx_cost.
7741         (force_to_mode):Update call of rtx_cost.
7742         (distribute_and_simplify_rtx):Update call of rtx_cost.
7743         * cfgloop.h (target_reg_cost, target_spill_cost): Turn to array.
7744         (estimate_reg_pressure_cost): Update prototype.
7745         * tree-flow.h (multiply_by_cost, create_mem_ref): Update prototype.
7746         * basic-block.h (optimize_insn_for_size_p, optimize_insn_for_speed_p):
7747         Remove.
7748         * config/alpha/alpha.c (alpha_rtx_costs): Update.
7749         (alpha_rtx_costs): Update.
7750         * config/frv/frv.c (frv_rtx_costs): Update.
7751         * config/s390/s390.c (s390_rtx_costs): Update.
7752         * config/m32c/m32c.c (m32c_memory_move_cost): Update.
7753         (m32c_rtx_costs): Update.
7754         * config/spu/spu.c (TARGET_ADDRESS_COST): Upate.
7755         (spu_rtx_costs): Update.
7756         * config/sparc/sparc.c (sparc_rtx_costs): Update.
7757         * config/m32r/m32r.c (m32r_rtx_costs): Update.
7758         * config/i386/i386.c (:ix86_address_cost): Update.
7759         (ix86_rtx_costs): Update.
7760         * config/sh/sh.c (sh_rtx_costs, sh_address_cost): Update.
7761         * config/pdp11/pdp11.c (pdp11_rtx_costs): Update.
7762         * config/avr/avr.c (avr_rtx_costs, avr_address_cost): Update.
7763         * config/crx/crx.c (crx_address_cost): Update.
7764         * config/xtensa/xtensa.c (xtensa_rtx_costs): Update.
7765         * config/stormy16/stormy16.c
7766         (xstormy16_address_cost, xstormy16_rtx_costs): Update.
7767         * config/m68hc11/m68hc11.c
7768         (m68hc11_address_cost, m68hc11_rtx_costs): Update.
7769         * config/cris/cris.c (cris_rtx_costs, cris_address_cost): Update.
7770         * config/iq2000/iq2000.c (iq2000_rtx_costs, iq2000_address_cost):
7771         Update.
7772         * config/mn10300/mn10300.c (mn10300_address_cost, mn10300_rtx_costs):
7773         Update
7774         * config/ia64/ia64.c (ia64_rtx_costs): Update.
7775         * config/m68k/m68k.c (m68k_rtx_costs): Update.
7776         * config/rs6000/rs6000.c (rs6000_rtx_costs): Update.
7777         * config/arc/arc.c (arc_rtx_costs, arc_address_cost): Update.
7778         * config/mcore/mcore.c (TARGET_ADDRESS_COST): Update.
7779         (mcore_rtx_costs): update.
7780         * config/score/score3.c (score3_rtx_costs): Update.
7781         * config/score/score7.c (score7_rtx_costs): Update.
7782         * config/score/score3.h (score3_rtx_costs):Update.
7783         * config/score/score7.h (score7_rtx_costs): Update.
7784         * config/score/score.c (score_rtx_costs): Update.
7785         * config/arm/arm.c (arm_address_cost): Update.
7786         (arm_rtx_costs_1): Update.
7787         (arm_rtx_costs_1): Update.
7788         (arm_size_rtx_costs): Update.
7789         (arm_size_rtx_costs): Update.
7790         (arm_size_rtx_costs): Update.
7791         (arm_xscale_rtx_costs): Update.
7792         (arm_thumb_address_cost): Update.
7793         * config/pa/pa.c (hppa_address_cost): Update.
7794         * config/mips/mips.c (mips_rtx_costs): Update.
7795         * config/vax/vax.c (vax_address_cost): Update.
7796         * config/h8300/h8300.c (h8300_shift_costs): Update.
7797         (h8300_rtx_costs): Update.
7798         * config/v850/v850.c (TARGET_ADDRESS_COST): Update.
7799         (v850_rtx_costs): Update.
7800         * config/mmix/mmix.c (mmix_rtx_costs, mmix_rtx_costs): Update.
7801         * config/bfin/bfin.c
7802         (bfin_address_cost): Update.
7803         (bfin_rtx_costs): Update.
7804         * stmt.c (lshift_cheap_p): Update.
7805
7806 2008-08-30  Andrew Pinski  <andrew_pinski@playstation.sony.com>
7807
7808         PR middle-end/36444
7809         * expmed.c (extract_bit_field_1): Check the mode size to make
7810         sure the vector modes have the same size.
7811
7812 2008-08-29  Michael Meissner  <gnu@the-meissners.org>
7813
7814         * dojump.c (top level): Include basic-block.h to declare
7815         optimize_insn_for_speed_p
7816
7817         * Makefile.in (dodump.h): Add $(BASIC_BLOCK_H) dependency.
7818
7819         * opts.h (CL_SAVE): New option class for marking options that are
7820         target specific options usable in the target attribute.
7821         (CL_MIN_OPTION_CLASS): CL_SAVE is now the minimum option.
7822
7823         * opt-functions.awk (switch_flags): Add CL_SAVE flag so backends
7824         can easily find the target specific options that are safe to use
7825         in the attribute or pragma.
7826
7827         * attribs.c (decl_attributes): Change #pragma GCC option to
7828         #pragma GCC target, and attribute((option(...))) to
7829         attribute((target(...))).
7830
7831         * doc/extend.texi (target attribute): Change from option
7832         attribute.  Delete push/pop/reset.
7833         (#pragma GCC target): Change from #pragma GCC option.  Delete
7834         push/pop/reset.
7835         (#pragma GCC push_options): Document new pragma.
7836         (#pragma GCC pop_options): Document new pragma.
7837         (#pragma GCC reset_options): Document new pragma.
7838
7839         * targhooks.c (default_target_option_valid_attribute_p): Add
7840         warning about port not supporting target attributes.
7841         (default_target_option_pragma_parse): New function, warn about
7842         #pragma GCC target not being supported.
7843
7844         * targhooks.h (default_target_option_pragma_parse): Add
7845         declaration.
7846
7847         * tree.h (TI_CURRENT_TARGET_PRAGMA): Rename from
7848         TI_CURRENT_OPTION_PRAGMA.
7849         (current_target_pragma): Rename from current_option_pragma.
7850
7851         * target.h: (struct target_option): Delete booleans for changing
7852         the optimization level on hot/cold functions.  Change signature of
7853         pragma_parse hook to take a second tree.
7854
7855         * c-tree.h (c_builtin_function_ext_scope): Add declaration.
7856
7857         * c-decl.c (c_builtin_function_ext_scope): New function, guarantee
7858         that the declaration is done at global scope.
7859
7860         * langhooks.c (add_builtin_function_common): Move most of the code
7861         from add_builtin_function here, calling the hook passed in.
7862         (add_builtin_function): Call add_builtin_function_common with
7863         standard builtin hook.
7864         (add_builtin_function_ext_scope): New function to add builtins to
7865         global scope.
7866
7867         * langhooks.h (struct lang_hooks): Add builtin_function_ext_scope
7868         hook.
7869         (add_builtin_function_ext_scope): Add declaration.
7870
7871         * c-pragma.c (handle_pragma_target): Rename from
7872         handle_pragma_option, #pragma GCC option is now #pragma GCC
7873         target.  Move warning about port not supporting target options to
7874         default pragma parse hook.  Remove push/pop/reset from this
7875         pragma.
7876         (handle_pragma_optimize): Remove push/pop/reset from this pragma.
7877         (option_stack): Delete static variable.
7878         (optimize_stack): Ditto.
7879         (optons_stack): New stack of saved target and optimization
7880         options.
7881         (handle_pragma_push_options): New function to handle pushing both
7882         target and optimization options.
7883         (handle_pragma_pop_options): New function to handle popping both
7884         target and optimization options.
7885         (handle_pragma_reset_options): New function to handle resetting
7886         both target and optimization options to their initial state.
7887         (init_pragma): Rename handle_pragma_option to
7888         handle_pragma_target.  Add support for push_options, pop_options,
7889         and reset_options pragmas.
7890
7891         * target-def.h (TARGET_OPTION_PRAGMA_PARSE): Change default to
7892         default_target_option_pragma_parse.
7893         (TARGET_OPTION_VALID_ATTRIBUTE_P): Change default to
7894         default_target_option_valid_attribute_p.
7895         (TARGET_OPTION_COLD_ATTRIBUTE_SETS_OPTIMIZATION): Delete.
7896         (TARGET_OPTION_HOT_ATTRIBUTE_SETS_OPTIMIZATION): Ditto.
7897         (TARGET_OPTION_HOOKS): Delete the fields for whether to change
7898         optimization level on hot/cold functions.
7899
7900         * tree-inline.c (tree_can_inline_p): Disable suppressing inlining
7901         if the caller and callee have different optimization levels.
7902
7903         * c-common.c (handle_target_attribute): Rename from
7904         handle_option_attribute, attribute((option(...))) is now
7905         attribute((target(...))).  Move warning if the port does not
7906         support target attributes to the default hook.
7907         (handle_hot_attribute): Delete code to change the optimization
7908         level of hot functions.
7909         (handle_cold_attribute): Ditto.
7910
7911         * config/i386/i386-c.c (ix86_pragma_target_parse): Take a second
7912         argument that is the binary tree options to use if there are no
7913         arguments.  Call ix86_valid_target_attribute_tree instead of
7914         ix86_valid_option_attribute_tree.
7915         (ix86_pragma_target_parse): Rename from ix86_pragma_option_parse.
7916         (ix86_register_pragmas): Use ix86_pragma_target_parse instead of
7917         ix86_pragma_option_parse.
7918
7919         * config/i386/i386-protos.h (ix86_valid_target_attribute_tree):
7920         Rename from ix86_valid_option_attribute_tree.
7921
7922         * config/i386/i386.c (ix86_add_new_builtins): New function to add
7923         new builtins when the ISA changes.
7924         (ix86_valid_target_attribute_tree): Rename from
7925         ix86_valid_option_attribute_tree.  Change callers.  If the
7926         function specified optimization options, use those as the starting
7927         point before setting up the target attributes.  If the
7928         optimization options were changed in the course of setting the
7929         target attributes, record the new optimization options.
7930         (ix86_valid_target_attribute_tree_inner_p): Rename from
7931         ix86_valid_option_attribute_tree_inner_p.  Change callers.  Call
7932         ix86_add_new_builtins if the ISA changed.
7933         (ix86_valid_target_attribute_p): Rename from
7934         ix86_valid_option_attribute_p.  Change callers.
7935         (enum ix86_builtins): Add IX86_BUILTIN_PCMOV to allow both
7936         __builtin_ia32_pcmov and __builtin_ia32_pcmov_v2di to be declared
7937         as delayed builtin functions.
7938         (struct builtin_isa): New structure to record builtin functions
7939         that should be delayed until the ISA for that function is used.
7940         (ix86_builtins_isa): Change from int to struct to track builtin
7941         functions we want to declare at some point.
7942         (def_builtin): If the front end can delay defining the builtin
7943         functions, don't create builtins for ISAs not part of the default
7944         options.
7945         (def_builtin_const): Ditto.
7946         (bdesc_multi_arg): Declare __builtin_ia32_pcmov and
7947         __builtin_ia32_pcmov_v2di to be different builtin functions.
7948         (ix86_expand_builtin): Changes due to ix86_builtins_isa now being
7949         a structure instead of an int.
7950         (TARGET_OPTION_VALID_ATTRIBUTE_P): Use
7951         ix86_valid_target_attribute_p, not ix86_valid_option_attribute_p.
7952         (TARGET_OPTION_COLD_ATTRIBUTE_SETS_OPTIMIZATION): Delete.
7953         (TARGET_OPTION_HOT_ATTRIBUTE_SETS_OPTIMIZATION): Ditto.
7954
7955         * config/ia64/ia64.h
7956         (TARGET_OPTION_COLD_ATTRIBUTE_SETS_OPTIMIZATION): Delete.
7957         (TARGET_OPTION_HOT_ATTRIBUTE_SETS_OPTIMIZATION): Ditto.
7958
7959         * langhooks-def.h (LANG_HOOKS_BUILTIN_FUNCTION_EXT_SCOPE): New
7960         hook, default to being the same as LANG_HOOKS_BUILTIN_FUNCTION.
7961         (LANG_HOOKS_INITIALIZER): Add
7962         LANG_HOOKS_BUILTIN_FUNCTION_EXT_SCOPE hook.
7963
7964 2008-08-30  Kaz Kojima  <kkojima@gcc.gnu.org>
7965
7966         PR target/37270
7967         * config/sh/sh.h (LEGITIMIZE_RELOAD_ADDRESS): Generate
7968         the reload address with the index register for SFmode
7969         access with a displacement.
7970
7971 2008-08-30  Jan Hubicka  <jh@suse.cz>
7972
7973         * optabs.c (expand_abs_nojump): Update BRANCH_COST call.
7974         * fold-cost.c (LOGICAL_OP_NON_SHORT_CIRCUIT, fold_truthop): Likewise.
7975         * dojump.c (do_jump): Likewise.
7976         * ifcvt.c (MAX_CONDITIONAL_EXECUTE): Likewise.
7977         (note-if_info): Add BRANCH_COST.
7978         (noce_try_store_flag_constants, noce_try_addcc,
7979         noce_try_store_flag_mask, noce_try_cmove_arith, noce_try_cmove_arith,
7980         noce_try_cmove_arith, noce_find_if_block, find_if_case_1,
7981         find_if_case_2): Use computed branch cost.
7982         * expr.h (BRANCH_COST): Update default.
7983         * predict.c (predictable_edge_p): New function.
7984         * expmed.c (expand_smod_pow2, expand_sdiv_pow2, emit_store_flag):
7985         Update BRANCH_COST call.
7986         * basic-block.h (predictable_edge_p): Declare.
7987         * config/alpha/alpha.h (BRANCH_COST): Update.
7988         * config/frv/frv.h (BRANCH_COST): Update.
7989         * config/s390/s390.h (BRANCH_COST): Update.
7990         * config/spu/spu.h (BRANCH_COST): Update.
7991         * config/sparc/sparc.h (BRANCH_COST): Update.
7992         * config/m32r/m32r.h (BRANCH_COST): Update.
7993         * config/i386/i386.h (BRANCH_COST): Update.
7994         * config/i386/i386.c (ix86_expand_int_movcc): Update use of
7995         BRANCH_COST.
7996         * config/sh/sh.h (BRANCH_COST): Update.
7997         * config/pdp11/pdp11.h (BRANCH_COST): Update.
7998         * config/avr/avr.h (BRANCH_COST): Update.
7999         * config/crx/crx.h (BRANCH_COST): Update.
8000         * config/xtensa/xtensa.h (BRANCH_COST): Update.
8001         * config/stormy16/stormy16.h (BRANCH_COST): Update.
8002         * config/m68hc11/m68hc11.h (BRANCH_COST): Update.
8003         * config/iq2000/iq2000.h (BRANCH_COST): Update.
8004         * config/ia64/ia64.h (BRANCH_COST): Update.
8005         * config/rs6000/rs6000.h (BRANCH_COST): Update.
8006         * config/arc/arc.h (BRANCH_COST): Update.
8007         * config/score/score.h (BRANCH_COST): Update.
8008         * config/arm/arm.h (BRANCH_COST): Update.
8009         * config/pa/pa.h (BRANCH_COST): Update.
8010         * config/mips/mips.h (BRANCH_COST): Update.
8011         * config/vax/vax.h (BRANCH_COST): Update.
8012         * config/h8300/h8300.h (BRANCH_COST): Update.
8013         * params.def (PARAM_PREDICTABLE_BRANCH_OUTCOME): New.
8014         * doc/invoke.texi (predictable-branch-cost-outcome): Document.
8015         * doc/tm.texi (BRANCH_COST): Update.
8016
8017 2008-08-30  Samuel Tardieu  <sam@rfc1149.net>
8018
8019         PR target/37283
8020         * config/arm/arm.c (arm_optimization_options): Set
8021         flag_section_anchors to 2 instead of 1 to distinguish it from
8022         -fsection-anchors given explicitely on the command line.
8023
8024 2008-08-30  Richard Sandiford  <rdsandiford@googlemail.com>
8025
8026         * recog.c (split_insn): Consider attaching a REG_EQUAL note to the
8027         final insn of a split.
8028
8029 2008-08-30  Jan Hubicka  <jh@suse.cz>
8030
8031         * postreload-gcse.c (gate_handle_gcse2): Disable for functions
8032         optimized for speed.
8033         * final.c (compute_alignments): Use optimize_bb_for_size_p.
8034         * tree-call-cdce.c (gate_call_cdce): Use optimize_function_for_speed_p.
8035         * opts.c (flag_predictive_commoning_set, flag_unswitch_loops_set,
8036         flag_gcse_after_reload_set): New static vars.
8037         (common_handle_option): Enable those flags for profile-use.
8038         (decode_options): Remove optimize_size flags that are handled
8039         on higher granuality.
8040         * tree-vectorizer.c (vectorize_loops): Use
8041         optimize_loop_nest_for_speed_p.
8042         * tree-ssa-pre.c (do_pre): Use optimize_function_for_speed_p.
8043         * tree-predcom.c (tree_predictive_commoning): Use
8044         optimize_loop_for_speed_p.
8045         * varasm.c (assemble_start_function): Use
8046         optimize_function_for_speed_p.
8047         * bb-reorder.c (rest_of_handle_reorder_blocks): Likewise.
8048         * predict.c (optimize_loop_for_speed_p): Fix walk.
8049
8050 2008-08-30  Jan Hubicka  <jh@suse.cz>
8051
8052         * ipa-inline.c (cgraph_estimate_growth): Discover self recursive
8053         functions.
8054         (cgraph_decide_inlining_of_small_function): Use edge->count to detect
8055         profile presence locally.
8056
8057 2008-08-29  Joseph Myers  <joseph@codesourcery.com>
8058
8059         PR bootstrap/37086
8060         * tree-vrp.c (find_switch_asserts): Make idx volatile for GCC
8061         versions before 4.0.
8062
8063 2008-08-29  Jan Hubicka  <jh@suse.cz>
8064
8065         * tree-inline.c (insert_init_stmt): Insert sequence even when
8066         not in SSA form.
8067
8068 2008-08-29  Jeff Law  <law@redhat.com>
8069
8070         * mn10300.c (mn10300_secondary_reload_class): We need secondary
8071         reloads for AM33-2 if IN is a pseudo with an equivalent memory
8072         location and class is an FP register.
8073
8074 2008-08-29  Jan Hubicka  <jh@suse.cz>
8075
8076         * see.c (see_merge_one_def_extension): Silence used uninitialized
8077         warning.
8078         * matrix-reorg.c (check_allocation_function): Likewise.
8079         * config/i386/driver-i386.c (detect_caches_amd): Likewise.
8080
8081 2008-08-29  Jakub Jelinek  <jakub@redhat.com>
8082
8083         PR c/37261
8084         * fold-const.c (fold_binary): In (X | C1) & C2 canonicalization
8085         compute new & and | in type rather than TREE_TYPE (arg0).
8086
8087         * dwarf2out.c (fortran_common): Update comment.
8088         (gen_variable_die): Swap com_die and var_die variables in Fortran
8089         COMMON block handling code.
8090
8091         * dwarf2out.c (descr_info_loc): Handle VAR_DECL.
8092
8093         * dwarf2out.c (gen_const_die): New function.
8094         (size_of_die, value_format, output_die): Output larger
8095         dw_val_class_vec using DW_FORM_block2 or DW_FORM_block4.
8096         (native_encode_initializer): New function.
8097         (tree_add_const_value_attribute): Call it.
8098         (gen_decl_die, dwarf2out_decl): Handle CONST_DECLs if is_fortran ().
8099
8100         * dwarf2out.c (gen_formal_parameter_die, gen_variable_die): For
8101         DECL_BY_REFERENCE decls don't pass TREE_READONLY and
8102         TREE_THIS_VOLATILE to add_type_attribute.
8103
8104         * dwarf2out.c (add_subscript_info): Stop on Fortran TYPE_STRING_FLAG
8105         types.
8106         (gen_array_type_die): Emit DW_TAG_string_type for Fortran character
8107         types.
8108
8109         * dwarf2out.c (loc_by_reference): New function.
8110         (add_location_or_const_value_attribute): Use it.
8111
8112         PR fortran/23057
8113         * dwarf2out.c (gen_variable_die): Represent Fortran COMMON vars
8114         as DW_TAG_variable children of DW_TAG_common_block rather than
8115         DW_TAG_member children.  Put DW_AT_external to individual
8116         DW_TAG_variable DIEs, not to DW_TAG_common_block.
8117
8118         * dwarf2out.c (add_bound_info): If lookup_decl_die failed, try
8119         loc_descriptor_from_tree_1.
8120
8121         PR fortran/29635
8122         PR fortran/23057
8123         * debug.h (struct gcc_debug_hooks): Add NAME and CHILD
8124         arguments to imported_module_or_decl.
8125         (debug_nothing_tree_tree): Removed.
8126         (debug_nothing_tree_tree_tree_bool): New prototype.
8127         * debug.c (do_nothing_debug_hooks): Adjust.
8128         (debug_nothing_tree_tree): Removed.
8129         (debug_nothing_tree_tree_tree_bool): New function.
8130         * dwarf2out.c (is_symbol_die): Handle DW_TAG_module.
8131         (gen_variable_die): Put all common vars for the
8132         same COMMON block under one DW_TAG_common_block.
8133         (declare_in_namespace): Return new context_die, for Fortran
8134         return the module DIE instead of adding extra declarations into
8135         the namespace.
8136         (gen_type_die_with_usage): Adjust declare_in_namespace caller.
8137         (gen_namespace_die): If is_fortran (), generate DW_TAG_module
8138         instead of DW_TAG_namespace.  If DECL_EXTERNAL is set, add
8139         DW_AT_declaration.
8140         (dwarf2out_global_decl): Don't skip Fortran global vars.
8141         (gen_decl_die): Likewise.  Adjust declare_in_namespace callers.
8142         (dwarf2out_imported_module_or_decl): Add NAME and CHILD arguments.
8143         If NAME is non-NULL, add DW_AT_name.  If CHILD is non-NULL, put
8144         DW_TAG_imported_declaration as child of previous
8145         DW_TAG_imported_module.
8146         * dbxout.c (dbx_debug_hooks, xcoff_debug_hooks): Adjust.
8147         * sdbout.c (sdb_debug_hooks): Likewise.
8148         * vmsdbgout.c (vmsdbg_debug_hooks): Likewise.
8149
8150 2008-08-29  Jan Hubicka  <jh@suse.cz>
8151
8152         * cgraph.c (cgraph_remove_node): Do not remove nested nodes.
8153
8154         * cgraph.h (cgraph_maybe_hot_edge_p): Declare.
8155         * ipa-cp.c (n_cloning_candidates): New static variable.
8156         (ipcp_print_profile_data, ipcp_function_scale_print): Forward declare.
8157         (ipcp_print_all_lattices): Improve debug output.
8158         (ipcp_cloning_candidate_p): New function.
8159         (ipcp_initialize_node_lattices): Use it.
8160         (ipcp_init_stage): Do only analyzis here; prettier debug output.
8161         (ipcp_propagate_stage): Prettier debug output.
8162         (ipcp_iterate_stage): Initialize latices here; prettier debug output.
8163         (ipcp_print_all_structures): Remove.
8164         (ipcp_need_redirect_p): Test !n_cloning_candidates.
8165         (ipcp_insert_stage): Prettier debug output; call
8166         cgraph_remove_unreachable_nodes before propagating.
8167         (pass_ipa_cp): Schedule function removal pass.
8168         * ipa-inline.c (inline_indirect_intraprocedural_analysis): Better
8169         debug output.
8170         (cgraph_maybe_hot_edge_p): Move to ...
8171         * predict.c (cgraph_maybe_hot_edge_p) ... here.
8172         * opts.c (flag_ipa_cp_set, flag_ipa_cp_clone_set): New.
8173         (common_handle_option): Set them; enable ipa-cp when profiling.
8174         * ipa-prop.c (ipa_print_node_jump_functions): Prettier output.
8175         (ipa_print_all_jump_functions): Likewise.
8176         (ipa_print_all_tree_maps, ipa_print_node_param_flags): Remove.
8177         (ipa_print_node_params, ipa_print_all_params): New.
8178         * ipa-prop.h (ipa_print_all_tree_maps, ipa_print_node_param_flags,
8179         ipa_print_all_param_flags): Remove.
8180         (ipa_print_node_params, ipa_print_all_params): New.
8181
8182 2008-08-29  Bob Wilson  <bob.wilson@acm.org>
8183
8184         * config/xtensa/xtensa.c (xtensa_secondary_reload_class): Revert
8185         change from 2008-04-03.
8186         * config/xtensa/xtensa.h (IRA_COVER_CLASSES): Define.
8187
8188 2008-08-29  Vladimir Makarov  <vmakarov@redhat.com>
8189
8190         PR rtl-opt/37251
8191         * ira-color.c (push_allocnos_to_stack): Truncate
8192         removed_splay_allocno_vec.
8193
8194 2008-08-29  Vladimir Makarov  <vmakarov@redhat.com>
8195
8196         PR rtl-opt/37243
8197         * ira-color (ira_fast_allocation): Don't assign hard registers to
8198         global allocnos.
8199
8200 2008-08-29  Jan Hubicka  <jh@suse.cz>
8201
8202         PR middle-end/37278
8203         * predict.c (optimize_loop_nest_for_speed_p): Do not ICE
8204         for cold internal loops.
8205
8206 2008-08-29  Richard Guenther  <rguenther@suse.de>
8207
8208         * tree-ssa-structalias.c (create_variable_info_for): Do not
8209         create fields for heap vars or vars with a noalias state.
8210         For NO_ALIAS_ANYTHING variables add a self-constraint, not one
8211         from ESCAPED.
8212
8213 2008-08-29  Richard Guenther  <rguenther@suse.de>
8214
8215         * common.opt (ftree-store-ccp): Mark as preserved for
8216         backward compatibility.
8217         * doc/invoke.texi (-ftree-store-ccp): Remove documentation.
8218         * tree-pass.h (pass_store_ccp): Remove.
8219         * tree-ssa-propagate.h (struct prop_value_d): Remove mem_ref field.
8220         (first_vdef): Remove declaration.
8221         (get_value_loaded_by): Likewise.
8222         * tree-ssa-ccp.c (do_store_ccp): Remove.
8223         (get_default_value): Simplify as do_store_ccp is always false
8224         now.  Do not initialize mem_ref.
8225         (set_value_varying): Likewise.
8226         (canonicalize_float_value): Likewise.
8227         (set_lattice_value): Likewise.
8228         (likely_value): Likewise.
8229         (surely_varying_stmt_p): Likewise.
8230         (ccp_initialize): Likewise.
8231         (ccp_lattice_meet): Likewise.
8232         (ccp_visit_phi_node): Likewise.
8233         (ccp_fold): Likewise.
8234         (evaluate_stmt): Likewise.
8235         (visit_assignment): Likewise.
8236         (ccp_visit_stmt): Likewise.
8237         (execute_ssa_ccp): Fold into ...
8238         (do_ssa_ccp): ... this.
8239         (do_ssa_store_ccp): Remove.
8240         (gate_store_ccp): Likewise.
8241         (pass_store_ccp): Likewise.
8242         * tree-ssa-copy.c (copy_prop_visit_phi_node): Do not
8243         initialize mem_ref.
8244         * tree-ssa-propagate.c (first_vdef): Remove.
8245         (get_value_loaded_by): Likewise.
8246         (replace_vuses_in): Likewise.
8247         (substitute_and_fold): Do not call replace_vuses_in.
8248         * opts.c (decode_options): Do not set flag_tree_store_ccp.
8249
8250 2008-08-29  Richard Guenther  <rguenther@suse.de>
8251
8252         PR middle-end/37236
8253         * tree-ssa-structalias.c (intra_create_variable_infos): Mark
8254         PARAM_NOALIAS tags with is_heapvar.
8255         * tree-ssa-operands.c (access_can_touch_variable): Offset
8256         based tests do not apply for heapvars.  Fix offset test.
8257
8258 2008-08-29  Jan Hubicka  <jh@suse.cz>
8259
8260         * doc/invoke.texi (-fipa-cp): Enabled by default at -O2/-Os/-O3
8261         (-fipa-cp-clone): Enabled by default at -O3.
8262         * opts.c (decode_options): Enable ipa-cp at -O2, ipa-cp-clone at -O3;
8263         make ipa-cp-clone to imply ipa-cp; disable cloning at -Os.
8264
8265 2008-08-29  Jan Hubicka  <jh@suse.cz>
8266
8267         * tree.c (build_function_type_skip_args,
8268         build_function_decl_skip_args): New functions.
8269         * tree.h (build_function_type_skip_args,
8270         build_function_decl_skip_args): Declare.
8271         * gimple.c (giple_copy_call_skip_args): New function.
8272         (giple_copy_call_skip_args): Declare.
8273
8274         * cgraph.h (cgraph_function_versioning): Add skip_args arugmnet
8275         * ipa-cp.c (ipcp_node_not_modifiable_p): Rename to ...
8276         (ipcp_node_modifiable_p): ... this one; use
8277         tree_versionable_function_p.
8278         (ipcp_create_replace_map): Improve debug output.
8279         (ipcp_need_redirect_p): Return false when not clonning.
8280         (ipcp_update_callgraph): Skip args.
8281         (ipcp_insert_stage): UPdate call of !ipcp_node_modifiable_p;
8282         skip args.
8283         * cgraphunit.c (cgraph_function_versioning): Add skip_args argument.
8284         (save_inline_function_body): Update call of tree_function_versioning.
8285         * ipa-prop.c (ipa_edge_removal_hook): Do not ICE on unanalyzed nodes.
8286         * tree-inline.c (copy_arguments_for_versioning): Add skip_args
8287         argument.
8288         (tree_function_versioning): Likewise.
8289         * tree-inline.h (tree_function_versioning): Update prototype.
8290
8291 2008-08-29  Jan Hubicka  <jh@suse.cz>
8292
8293         * loop-unswitch.c (unswitch_single_loop): Use
8294         optimize_loop_for_speed_p.
8295         * tree-ssa-threadupdate.c (mark_threaded_blocks):
8296         Use optimize_function_for_size_p.
8297         * tracer.c (ignore_bb_p): Use optimize_bb_for_size_p.
8298         * postreload-gcse.c (eliminate_partially_redundant_load):
8299         Use optimize_bb_for_size_p.
8300         * value-prof.c (gimple_divmod_fixed_value_transform,
8301         gimple_mod_pow2_value_transform, gimple_mod_subtract_transform,
8302         gimple_stringops_transform): Use optimize_bb_for_size_p.
8303         * ipa-cp.c (ipcp_insert_stage): Use optimize_function_for_size_p.
8304         * final.c (compute_alignments): Use optimize_function_for_size_p.
8305         * builtins.c (fold_builtin_cabs): Use optimize_function_for_speed_p.
8306         (fold_builtin_strcpy, fold_builtin_fputs): Use
8307         optimize_function_for_size_p.
8308         * fold-const.c (tree_swap_operands_p): Use
8309         optimize_function_for_size_p.
8310         * recog.c (relax_delay_slots): Likewise.
8311         * tree-ssa-math-opts.c (replace_reciprocal):
8312         Use optimize_bb_for_speed_p.
8313         (execute_cse_reciprocals): Use optimize_bb_for_size_p.
8314         * ipa-inline.c (cgraph_decide_recursive_inlining): Use
8315         optimize_function_for_size_p.
8316         (cgraph_decide_inlining_of_small_function): Use
8317         optimize_function_for_size_p.
8318         * global.c (find_reg): Use optimize_function_for_size_p.
8319         * opts.c (decode_options): Do not clear flag_tree_ch,
8320         flag_inline_functions, flag_unswitch_loops, flag_unroll_loops,
8321         flag_unroll_all_loops and flag_prefetch_loop_arrays. Those can
8322         work it out from profile.
8323         * tree-ssa-loop-ivcanon.c (tree_unroll_loops_completely): Use
8324         optimize_loop_for_speed_p.
8325         * predict.c (optimize_bb_for_size_p, optimize_bb_for_speed_p):
8326         Constify argument.
8327         (optimize_loop_nest_for_size_p, optimize_loop_nest_for_speed_p): New.
8328         * tree-parloops.c (parallelize_loops): Use optimize_loop_for_size_p.
8329         * tree-eh.c (decide_copy_try_finally): Use
8330         optimize_function_for_size_p.
8331         * local-alloc.c (block_alloc): Pass BB pointer.
8332         (find_free_reg): Add BB pointer, use optimize_bb_for_size_p.
8333         * gcse.c (gcse_main): Use optimize_function_for_size_p.
8334         * loop-unroll.c (decide_unrolling_and_peeling):
8335         Use optimize_loop_for_size_p.
8336         (decide_peel_completely): Likewise.
8337         * tree-vect-analyze.c (vect_mark_for_runtime_alias_test): Use
8338         optimize_loop_for_size_p.
8339         (vect_enhance_data_refs_alignment): Likewise.
8340         * tree-ssa-coalesce.c (coalesce_cost): Add optimize_for_size argument.
8341         (coalesce_cost_bb, coalesce_cost_edge, create_outofssa_var_map):
8342         Update call.
8343         * cfgcleanup.c (outgoing_edges_match): Use optimize_bb_for_speed_p.
8344         (try_crossjump_bb): Use optimize_bb_for_size_p.
8345         * tree-ssa-loop-prefetch.c (loop_prefetch_arrays): Use
8346         optimize_loop_for_speed_p.
8347         * bb-reorder.c (find_traces_1_round): Likewise.
8348         (copy_bb): Use optimize_bb_for_speed_p.
8349         (duplicate_computed_gotos): Likewise.
8350         * basic-block.h (optimize_loop_nest_for_size_p,
8351         optimize_loop_nest_for_speed_p): New.
8352         * stmt.c (expand_case): Use optimize_insn_for_size_p.
8353
8354 2008-08-29  Tristan Gingold  <gingold@adacore.com>
8355
8356         * gcov.c (main): Call expandargv.
8357
8358 2008-08-29  Jan Hubicka  <jh@suse.cz>
8359
8360         * tree-ssa-loop-ch.c (should_duplicate_loop_header_p): Check that loop
8361         is not cold.
8362         * predict.c (optimize_bb_for_size_p, optimize_bb_for_speed_p):
8363         Constify arguments.
8364         (optimize_loop_for_size_p, optimize_loop_for_speed_p): New functions.
8365         * basic-block.h (optimize_bb_for_size_p, optimize_bb_for_speed_p):
8366         Constify.
8367         (optimize_loop_for_size_p, optimize_loop_for_speed_p): Declare.
8368
8369 2008-08-29  Jan Hubicka  <jh@suse.cz>
8370
8371         * tree-pass.h (pass_strip_predict_hints): Declare.
8372         * predict.c (strip_builtin_expect): Rename to ...
8373         (strip_predict_hints): ... this one; strip also GIMPLE_PREDICT.
8374         (tree_bb_level_predictions): Do not remove GIMPLE_PREDICT.
8375         (tree_estimate_probability): Do not strip builtin_expect.
8376         (pass_strip_predict_hints): New pass.
8377         * tree-inline.c (expand_call_inline): When inlining cold function,
8378         predict it as unlikely.
8379         * passes.c (init_optimization_passes): Add pass_strip_predict_hints.
8380
8381 2008-08-29  Richard Guenther  <rguenther@suse.de>
8382
8383         PR tree-optimization/37207
8384         * tree-vrp.c (extract_range_from_binary_expr): Also try
8385         to constant fold if only one of the operands is a constant.
8386
8387 2008-08-29  Nick Clifton  <nickc@redhat.com>
8388
8389         * config/m32r/m32r.h (LEGITIMATE_CONSTANT_P): Treat LABEL_REFs in
8390         the same way as SYMBOL_REFs.
8391
8392 2008-08-28  Bob Wilson  <bob.wilson@acm.org>
8393
8394         * config/xtensa/xtensa.md (<u>mulsidi3): Use a temporary register.
8395
8396 2008-08-28  Adam Nemet  <anemet@caviumnetworks.com>
8397
8398         * config/mips/mips.h (ISA_HAS_BBIT): New macro.
8399         * config/mips/mips.md (branch_likely): Remove const.  Fix
8400         comment formatting.
8401         (define_delay for type "branch"): Change to only apply for branch
8402         with likely variant.
8403         (define_delay for type "branch" and "branch_likely" no).  New delay
8404         definition.
8405         (equality_op): New code iterator.
8406         (bbv, bbinv): New code attributes.
8407         (*branch_bit<bbv><mode>, *branch_bit<bbv><mode>_inverted): New
8408         patterns.
8409
8410 2008-08-28  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
8411             Andrew Pinski  <pinskia@gcc.gnu.org>
8412
8413         PR 18050
8414         * c-common.c (verify_tree): Fix handling of ADDR_EXPR.
8415
8416 2008-08-28  Paolo Carlini  <paolo.carlini@oracle.com>
8417
8418         * gtrh-posix.h: Fix uses of _POSIX_TIMEOUTS per the normal Posix
8419         rule that a symbolic constant must be defined and >= 0 for the
8420         corresponding facility to be present at compile-time.
8421         * gthr-posix.c: Likewise.
8422
8423 2008-08-28  Adam Nemet  <anemet@caviumnetworks.com>
8424
8425         * config/mips/mips.h (ISA_HAS_DMUL3): New macro.
8426         * config/mips/mips.md (D): New mode attribute.
8427         (mulsi3, muldi3): Merge it into ...
8428         (mul<mode>3): ... new template.  Use _mul3 ending for 3-op patterns.
8429         (muldi3_mul3): New pattern.
8430         (mulsi3_mult3): Rename to mulsi3_mul3.
8431
8432 2008-08-28  Jan Hubicka  <jh@suse.cz>
8433
8434         * expmed.c (store_bit_field_1): Be prepared for movstrict expander
8435         to fail.
8436         * predict.c (always_optimize_for_size_p): Rename to ...
8437         (optimize_function_for_size): ... this one; make extern.
8438         (optimize_function_for_speed_p): New.
8439         (optimize_bb_for_size_p, optimize_bb_for_size_p,
8440         optimize_edge_for_size_p,optimize_edge_for_size_p,
8441         optimize_insn_for_size_p, optimize_insn_for_size_p): Update.
8442         * basic-block.h (optimize_function_for_size_p,
8443         optimize_function_for_speed_p): Declare.
8444         * i386.md (optimize_size checks): Replace them by appropriate
8445         predicate.
8446         (standard_80387_constant_p, ix86_compute_frame_layout,
8447         ix86_expand_epilogue, ix86_decompose_address,
8448         print_operand, emit_i387_cw_initialization,
8449         inline_memory_move_cost, ix86_pad_returns,
8450         ix86_reorg): Replace optimize_size checks.
8451
8452 2008-08-28  Richard Sandiford  <rdsandiford@googlemail.com>
8453
8454         * rtl.h (simplify_subreg_regno): Declare.
8455         * rtlanal.c (simplify_subreg_regno): New function, split out from...
8456         * simplify-rtx.c (simplify_subreg): ...here.
8457         * reload.c (find_reloads): Use simplify_subreg_regno instead of
8458         subreg_offset_representable_p.
8459
8460 2008-08-28  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
8461
8462         PR c/30949
8463         * c-typeck.c (convert_for_assignment): Give a note describing what
8464         was passed and what was expected.
8465
8466 2008-08-28  Joey Ye  <joey.ye@intel.com>
8467
8468         * doc/extend.texi: Document AVX built-in functions.
8469         * doc/invoke.texi: Document -mavx.
8470
8471 2008-08-28  H.J. Lu  <hongjiu.lu@intel.com>
8472             Joey Ye  <joey.ye@intel.com>
8473             Xuepeng Guo  <xuepeng.guo@intel.com>
8474
8475         * config.gcc (extra_headers): Add gmmintrin.h for x86 and x86-64.
8476
8477         * config/i386/cpuid.h (bit_FMA): New.
8478         (bit_XSAVE): Likewise.
8479         (bit_OSXSAVE): Likewise.
8480         (bit_AVX): Likewise.
8481
8482         * config/i386/gas.h (ASM_OUTPUT_OPCODE): Undefine before
8483         define.  Use ASM_OUTPUT_AVX_PREFIX.
8484
8485         * config/i386/gmmintrin.h: New.
8486
8487         * config/i386/i386.c (x86_64_reg_class): Add X86_64_AVX_CLASS.
8488         (OPTION_MASK_ISA_AVX_SET): New.
8489         (OPTION_MASK_ISA_FMA_SET): Likewise.
8490         (OPTION_MASK_ISA_AVX_UNSET): Likewise.
8491         (OPTION_MASK_ISA_FMA_SET): Likewise.
8492         (OPTION_MASK_ISA_SSE4_2_UNSET): Updated.
8493         (ix86_handle_option): Handle OPT_mavx and OPT_mfma.
8494         (pta_flags): Add PTA_AVX and PTA_FMA.
8495         (override_options): Handle PTA_AVX and PTA_FMA.
8496         (init_cumulative_args): Handle warn_avx.
8497         (classify_argument): Return 0 for COImode and OImode.  Return
8498         1 and X86_64_AVX_CLASS for 256bit vector types.
8499         (examine_argument): Handle X86_64_AVX_CLASS.
8500         (construct_container): Likewise.
8501         (function_arg_advance_32): Pass OImode and 256bit vector types
8502         in AVX register.
8503         (function_arg_advance_64): Take a new argument to indicate if a
8504         parameter is named.  Handle 256bit vector types.  Return
8505         immediately for unnamed 256bit vector mode parameters.
8506         (function_arg_advance): Updated.
8507         (function_arg_32): Add comments for TImode.  Handle OImode
8508         and 256bit vector types.
8509         (function_arg_64): Take a new argument to indicate if a
8510         parameter is named.  Handle 256bit vector types.  Return NULL
8511         for unnamed 256bit vector mode parameters.
8512         (function_arg): Updated.
8513         (setup_incoming_varargs_64): Support
8514         AVX encoding for *sse_prologue_save_insn.
8515         (ix86_gimplify_va_arg): Handle 256bit vector mode parameters.
8516         (standard_sse_constant_p): Return -2 for all 1s if SSE2 isn't
8517         enabled.  For all 1s in 256bit vector modes, return 3 if AVX is
8518         enabled, otherwise return -3.
8519         (standard_sse_constant_opcode): Handle AVX and 256bit vector
8520         modes.
8521         (print_reg): Support AVX registers.  Handle 'x' and 't'.
8522         Handle 'd' to duplicate the operand.
8523         (print_operand): Likewise.  Also support AVX vector compare
8524         instructions.
8525         (output_387_binary_op): Support AVX.
8526         (output_fp_compare): Likewise.
8527         (ix86_expand_vector_move_misalign): Likewise.
8528         (ix86_attr_length_vex_default): New.
8529         (ix86_builtins): Add IX86_BUILTIN_ADDPD256,
8530         IX86_BUILTIN_ADDPS256, IX86_BUILTIN_ADDSUBPD256,
8531         IX86_BUILTIN_ADDSUBPS256, IX86_BUILTIN_ANDPD256,
8532         IX86_BUILTIN_ANDPS256, IX86_BUILTIN_ANDNPD256,
8533         IX86_BUILTIN_ANDNPS256, IX86_BUILTIN_BLENDPD256,
8534         IX86_BUILTIN_BLENDPS256, IX86_BUILTIN_BLENDVPD256,
8535         IX86_BUILTIN_BLENDVPS256, IX86_BUILTIN_DIVPD256,
8536         IX86_BUILTIN_DIVPS256, IX86_BUILTIN_DPPS256,
8537         IX86_BUILTIN_HADDPD256, IX86_BUILTIN_HADDPS256,
8538         IX86_BUILTIN_HSUBPD256, IX86_BUILTIN_HSUBPS256,
8539         IX86_BUILTIN_MAXPD256, IX86_BUILTIN_MAXPS256,
8540         IX86_BUILTIN_MINPD256, IX86_BUILTIN_MINPS256,
8541         IX86_BUILTIN_MULPD256, IX86_BUILTIN_MULPS256,
8542         IX86_BUILTIN_ORPD256, IX86_BUILTIN_ORPS256,
8543         IX86_BUILTIN_SHUFPD256, IX86_BUILTIN_SHUFPS256,
8544         IX86_BUILTIN_SUBPD256, IX86_BUILTIN_SUBPS256,
8545         IX86_BUILTIN_XORPD256, IX86_BUILTIN_XORPS256,
8546         IX86_BUILTIN_CMPSD, IX86_BUILTIN_CMPSS, IX86_BUILTIN_CMPPD,
8547         IX86_BUILTIN_CMPPS, IX86_BUILTIN_CMPPD256,
8548         IX86_BUILTIN_CMPPS256, IX86_BUILTIN_CVTDQ2PD256,
8549         IX86_BUILTIN_CVTDQ2PS256, IX86_BUILTIN_CVTPD2PS256,
8550         IX86_BUILTIN_CVTPS2DQ256, IX86_BUILTIN_CVTPS2PD256,
8551         IX86_BUILTIN_CVTTPD2DQ256, IX86_BUILTIN_CVTPD2DQ256,
8552         IX86_BUILTIN_CVTTPS2DQ256, IX86_BUILTIN_EXTRACTF128PD256,
8553         IX86_BUILTIN_EXTRACTF128PS256, IX86_BUILTIN_EXTRACTF128SI256,
8554         IX86_BUILTIN_VZEROALL, IX86_BUILTIN_VZEROUPPER,
8555         IX86_BUILTIN_VZEROUPPER_REX64, IX86_BUILTIN_VPERMILVARPD,
8556         IX86_BUILTIN_VPERMILVARPS, IX86_BUILTIN_VPERMILVARPD256,
8557         IX86_BUILTIN_VPERMILVARPS256, IX86_BUILTIN_VPERMILPD,
8558         IX86_BUILTIN_VPERMILPS, IX86_BUILTIN_VPERMILPD256,
8559         IX86_BUILTIN_VPERMILPS256, IX86_BUILTIN_VPERMIL2PD,
8560         IX86_BUILTIN_VPERMIL2PS, IX86_BUILTIN_VPERMIL2PD256,
8561         IX86_BUILTIN_VPERMIL2PS256, IX86_BUILTIN_VPERM2F128PD256,
8562         IX86_BUILTIN_VPERM2F128PS256, IX86_BUILTIN_VPERM2F128SI256,
8563         IX86_BUILTIN_VBROADCASTSS, IX86_BUILTIN_VBROADCASTSD256,
8564         IX86_BUILTIN_VBROADCASTSS256, IX86_BUILTIN_VBROADCASTPD256,
8565         IX86_BUILTIN_VBROADCASTPS256, IX86_BUILTIN_VINSERTF128PD256,
8566         IX86_BUILTIN_VINSERTF128PS256, IX86_BUILTIN_VINSERTF128SI256,
8567         IX86_BUILTIN_LOADUPD256, IX86_BUILTIN_LOADUPS256,
8568         IX86_BUILTIN_STOREUPD256, IX86_BUILTIN_STOREUPS256,
8569         IX86_BUILTIN_LDDQU256, IX86_BUILTIN_LOADDQU256,
8570         IX86_BUILTIN_STOREDQU256, IX86_BUILTIN_MASKLOADPD,
8571         IX86_BUILTIN_MASKLOADPS, IX86_BUILTIN_MASKSTOREPD,
8572         IX86_BUILTIN_MASKSTOREPS, IX86_BUILTIN_MASKLOADPD256,
8573         IX86_BUILTIN_MASKLOADPS256, IX86_BUILTIN_MASKSTOREPD256,
8574         IX86_BUILTIN_MASKSTOREPS256, IX86_BUILTIN_MOVSHDUP256,
8575         IX86_BUILTIN_MOVSLDUP256, IX86_BUILTIN_MOVDDUP256,
8576         IX86_BUILTIN_SQRTPD256, IX86_BUILTIN_SQRTPS256,
8577         IX86_BUILTIN_SQRTPS_NR256, IX86_BUILTIN_RSQRTPS256,
8578         IX86_BUILTIN_RSQRTPS_NR256, IX86_BUILTIN_RCPPS256,
8579         IX86_BUILTIN_ROUNDPD256, IX86_BUILTIN_ROUNDPS256,
8580         IX86_BUILTIN_UNPCKHPD256, IX86_BUILTIN_UNPCKLPD256,
8581         IX86_BUILTIN_UNPCKHPS256, IX86_BUILTIN_UNPCKLPS256,
8582         IX86_BUILTIN_SI256_SI, IX86_BUILTIN_PS256_PS,
8583         IX86_BUILTIN_PD256_PD, IX86_BUILTIN_SI_SI256,
8584         IX86_BUILTIN_PS_PS256, IX86_BUILTIN_PD_PD256,
8585         IX86_BUILTIN_VTESTZPD, IX86_BUILTIN_VTESTCPD,
8586         IX86_BUILTIN_VTESTNZCPD, IX86_BUILTIN_VTESTZPS,
8587         IX86_BUILTIN_VTESTCPS, IX86_BUILTIN_VTESTNZCPS,
8588         IX86_BUILTIN_VTESTZPD256, IX86_BUILTIN_VTESTCPD256,
8589         IX86_BUILTIN_VTESTNZCPD256, IX86_BUILTIN_VTESTZPS256,
8590         IX86_BUILTIN_VTESTCPS256, IX86_BUILTIN_VTESTNZCPS256,
8591         IX86_BUILTIN_PTESTZ256, IX86_BUILTIN_PTESTC256,
8592         IX86_BUILTIN_PTESTNZC256, IX86_BUILTIN_MOVMSKPD256
8593         and IX86_BUILTIN_MOVMSKPS256,
8594         (ix86_special_builtin_type): Add V32QI_FTYPE_PCCHAR,
8595         V8SF_FTYPE_PCV4SF, V8SF_FTYPE_PCFLOAT, V4DF_FTYPE_PCV2DF,
8596         V4DF_FTYPE_PCDOUBLE, V8SF_FTYPE_PCV8SF_V8SF,
8597         V4DF_FTYPE_PCV4DF_V4DF, V4SF_FTYPE_PCV4SF_V4SF,
8598         V2DF_FTYPE_PCV2DF_V2DF, VOID_FTYPE_PCHAR_V32QI,
8599         VOID_FTYPE_PFLOAT_V8SF, VOID_FTYPE_PDOUBLE_V4DF,
8600         VOID_FTYPE_PV8SF_V8SF_V8SF, VOID_FTYPE_PV4DF_V4DF_V4DF,
8601         VOID_FTYPE_PV4SF_V4SF_V4SF and VOID_FTYPE_PV2DF_V2DF_V2DF,
8602         (ix86_builtin_type): Add INT_FTYPE_V8SF_V8SF_PTEST,
8603         INT_FTYPE_V4DI_V4DI_PTEST, INT_FTYPE_V4DF_V4DF_PTEST,
8604         INT_FTYPE_V4SF_V4SF_PTEST, INT_FTYPE_V2DF_V2DF_PTEST,
8605         INT_FTYPE_V8SF, INT_FTYPE_V4DF, V8SI_FTYPE_V8SF, V8SI_FTYPE_V4SI,
8606         V8SF_FTYPE_V8SF, V8SF_FTYPE_V8SI, V8SF_FTYPE_V4SF,
8607         V4SI_FTYPE_V8SI, V4SI_FTYPE_V4DF, V4DF_FTYPE_V4DF,
8608         V4DF_FTYPE_V4SI, V4DF_FTYPE_V4SF, V4DF_FTYPE_V2DF,
8609         V4SF_FTYPE_V4DF, V4SF_FTYPE_V8SF, V2DF_FTYPE_V4DF,
8610         V8SF_FTYPE_V8SF_V8SF, V8SF_FTYPE_V8SF_V8SI,
8611         V4DF_FTYPE_V4DF_V4DF, V4DF_FTYPE_V4DF_V4DI,
8612         V4SF_FTYPE_V4SF_V4SI, V2DF_FTYPE_V2DF_V2DI,
8613         V8SF_FTYPE_V8SF_INT, V4SI_FTYPE_V8SI_INT, V4SF_FTYPE_V8SF_INT,
8614         V2DF_FTYPE_V4DF_INT, V4DF_FTYPE_V4DF_INT,
8615         V8SF_FTYPE_V8SF_V8SF_V8SF, V4DF_FTYPE_V4DF_V4DF_V4DF,
8616         V8SI_FTYPE_V8SI_V8SI_INT, V8SF_FTYPE_V8SF_V8SF_INT,
8617         V4DF_FTYPE_V4DF_V4DF_INT, V4DF_FTYPE_V4DF_V2DF_INT,
8618         V8SF_FTYPE_V8SF_V8SF_V8SI_INT, V4DF_FTYPE_V4DF_V4DF_V4DI_INT,
8619         V4SF_FTYPE_V4SF_V4SF_V4SI_INT and V2DF_FTYPE_V2DF_V2DF_V2DI_INT.
8620         (bdesc_special_args): Add IX86_BUILTIN_VZEROALL,
8621         IX86_BUILTIN_VZEROUPPER. IX86_BUILTIN_VZEROUPPER_REX64,
8622         IX86_BUILTIN_VBROADCASTSS, IX86_BUILTIN_VBROADCASTSD256,
8623         IX86_BUILTIN_VBROADCASTSS256, IX86_BUILTIN_VBROADCASTPD256,
8624         IX86_BUILTIN_VBROADCASTPS256, IX86_BUILTIN_LOADUPD256,
8625         IX86_BUILTIN_LOADUPS256, IX86_BUILTIN_STOREUPD256,
8626         IX86_BUILTIN_STOREUPS256, IX86_BUILTIN_LOADDQU256,
8627         IX86_BUILTIN_STOREDQU256, IX86_BUILTIN_LDDQU256,
8628         IX86_BUILTIN_MASKLOADPD, IX86_BUILTIN_MASKLOADPS,
8629         IX86_BUILTIN_MASKLOADPD256, IX86_BUILTIN_MASKLOADPS256,
8630         IX86_BUILTIN_MASKSTOREPD, IX86_BUILTIN_MASKSTOREPS,
8631         IX86_BUILTIN_MASKSTOREPD256 and IX86_BUILTIN_MASKSTOREPS256.
8632         (ix86_builtins): Add IX86_BUILTIN_ADDPD256,
8633         IX86_BUILTIN_ADDPS256, IX86_BUILTIN_ADDSUBPD256,
8634         IX86_BUILTIN_ADDSUBPS256, IX86_BUILTIN_ANDPD256,
8635         IX86_BUILTIN_ANDPS256, IX86_BUILTIN_ANDNPD256,
8636         IX86_BUILTIN_ANDNPS256, IX86_BUILTIN_DIVPD256,
8637         IX86_BUILTIN_DIVPS256, IX86_BUILTIN_HADDPD256,
8638         IX86_BUILTIN_HSUBPS256, IX86_BUILTIN_HSUBPD256,
8639         IX86_BUILTIN_HADDPS256, IX86_BUILTIN_MAXPD256,
8640         IX86_BUILTIN_MAXPS256, IX86_BUILTIN_MINPD256,
8641         IX86_BUILTIN_MINPS256, IX86_BUILTIN_MULPD256,
8642         IX86_BUILTIN_MULPS256, IX86_BUILTIN_ORPD256,
8643         IX86_BUILTIN_ORPS256, IX86_BUILTIN_SUBPD256,
8644         IX86_BUILTIN_SUBPS256, IX86_BUILTIN_XORPD256,
8645         IX86_BUILTIN_XORPS256, IX86_BUILTIN_VPERMILVARPD,
8646         IX86_BUILTIN_VPERMILVARPS, IX86_BUILTIN_VPERMILVARPD256,
8647         IX86_BUILTIN_VPERMILVARPS256, IX86_BUILTIN_BLENDPD256,
8648         IX86_BUILTIN_BLENDPS256, IX86_BUILTIN_BLENDVPD256,
8649         IX86_BUILTIN_BLENDVPS256, IX86_BUILTIN_DPPS256,
8650         IX86_BUILTIN_SHUFPD256, IX86_BUILTIN_SHUFPS256,
8651         IX86_BUILTIN_CMPSD, IX86_BUILTIN_CMPSS, IX86_BUILTIN_CMPPD,
8652         IX86_BUILTIN_CMPPS,
8653         IX86_BUILTIN_CMPPD256,IX86_BUILTIN_CMPPS256,
8654         IX86_BUILTIN_EXTRACTF128PD256, IX86_BUILTIN_EXTRACTF128PS256,
8655         IX86_BUILTIN_EXTRACTF128SI256, IX86_BUILTIN_CVTDQ2PD256,
8656         IX86_BUILTIN_CVTDQ2PS256, IX86_BUILTIN_CVTPD2PS256,
8657         IX86_BUILTIN_CVTPS2DQ256, IX86_BUILTIN_CVTPS2PD256,
8658         IX86_BUILTIN_CVTTPD2DQ256, IX86_BUILTIN_CVTPD2DQ256,
8659         IX86_BUILTIN_CVTTPS2DQ256, IX86_BUILTIN_VPERM2F128PD256,
8660         IX86_BUILTIN_VPERM2F128PS256, IX86_BUILTIN_VPERM2F128SI256,
8661         IX86_BUILTIN_VPERMILPD, IX86_BUILTIN_VPERMILPS,
8662         IX86_BUILTIN_VPERMILPD256, IX86_BUILTIN_VPERMILPS256,
8663         IX86_BUILTIN_VPERMIL2PD, IX86_BUILTIN_VPERMILPS,
8664         IX86_BUILTIN_VPERMILPD256, IX86_BUILTIN_VPERMILPS256,
8665         IX86_BUILTIN_VPERMIL2PD, IX86_BUILTIN_VPERMIL2PS,
8666         IX86_BUILTIN_VPERMIL2PD256, IX86_BUILTIN_VPERMIL2PS256,
8667         IX86_BUILTIN_VINSERTF128PD256, IX86_BUILTIN_VINSERTF128PS256,
8668         IX86_BUILTIN_VINSERTF128SI256, IX86_BUILTIN_MOVSHDUP256,
8669         IX86_BUILTIN_MOVSLDUP256, IX86_BUILTIN_MOVDDUP256,
8670         IX86_BUILTIN_SQRTPD256, IX86_BUILTIN_SQRTPS256,
8671         IX86_BUILTIN_SQRTPS_NR256, IX86_BUILTIN_RSQRTPS256,
8672         IX86_BUILTIN_RSQRTPS_NR256, IX86_BUILTIN_RCPPS256,
8673         IX86_BUILTIN_ROUNDPD256, IX86_BUILTIN_ROUNDPS256,
8674         IX86_BUILTIN_UNPCKHPD256, IX86_BUILTIN_UNPCKLPD256,
8675         IX86_BUILTIN_UNPCKHPS256, IX86_BUILTIN_UNPCKLPS256,
8676         IX86_BUILTIN_SI256_SI, IX86_BUILTIN_PS256_PS,
8677         IX86_BUILTIN_PD256_PD, IX86_BUILTIN_SI_SI256,
8678         IX86_BUILTIN_PS_PS256, IX86_BUILTIN_PD_PD256,
8679         IX86_BUILTIN_VTESTZPD, IX86_BUILTIN_VTESTCPD,
8680         IX86_BUILTIN_VTESTNZCPD, IX86_BUILTIN_VTESTZPS,
8681         IX86_BUILTIN_VTESTCPS, IX86_BUILTIN_VTESTNZCPS,
8682         IX86_BUILTIN_VTESTZPD256, IX86_BUILTIN_VTESTCPD256,
8683         IX86_BUILTIN_VTESTNZCPD256, IX86_BUILTIN_VTESTZPS256,
8684         IX86_BUILTIN_VTESTCPS256, IX86_BUILTIN_VTESTNZCPS256,
8685         IX86_BUILTIN_PTESTZ256, IX86_BUILTIN_PTESTC256,
8686         IX86_BUILTIN_PTESTNZC256, IX86_BUILTIN_MOVMSKPD256 and
8687         IX86_BUILTIN_MOVMSKPS256.
8688         (ix86_init_mmx_sse_builtins): Support AVX builtins.
8689         (ix86_expand_args_builtin): Likewise.
8690         (ix86_expand_special_args_builtin): Likewise.
8691         (ix86_hard_regno_mode_ok): Handle AVX modes.
8692         (ix86_expand_vector_init_duplicate): Likewise.
8693         (ix86_expand_vector_init_one_nonzero): Likewise.
8694         (ix86_expand_vector_init_one_var): Likewise.
8695         (ix86_expand_vector_init_concat): Likewise.
8696         (ix86_expand_vector_init_general): Likewise.
8697         (ix86_expand_vector_set): Likewise.
8698         (ix86_vector_mode_supported_p): Likewise.
8699         (x86_extended_reg_mentioned_p): Check INSN_P before using
8700         PATTERN.
8701
8702         * config/i386/i386-c.c (ix86_target_macros_internal): Handle
8703         OPTION_MASK_ISA_AVX and OPTION_MASK_ISA_FMA.
8704
8705         * config/i386/i386.h (TARGET_AVX): New.
8706         (TARGET_FMA): Likewise.
8707         (TARGET_CPU_CPP_BUILTINS): Handle TARGET_AVX and TARGET_FMA.
8708         (BIGGEST_ALIGNMENT): Set to 256 for TARGET_AVX.
8709         (VALID_AVX256_REG_MODE): New.
8710         (AVX256_VEC_FLOAT_MODE_P): Likewise.
8711         (AVX_FLOAT_MODE_P): Likewise.
8712         (AVX128_VEC_FLOAT_MODE_P): Likewise.
8713         (AVX256_VEC_FLOAT_MODE_P): Likewise.
8714         (AVX_VEC_FLOAT_MODE_P): Likewise.
8715         (ASM_OUTPUT_AVX_PREFIX): Likewise.
8716         (ASM_OUTPUT_OPCODE): Likewise.
8717         (UNITS_PER_SIMD_WORD): Add a FIXME for 32byte vectorizer
8718         support.
8719         (SSE_REG_MODE_P): Allow 256bit vector modes.
8720         (ix86_args): Add a warn_avx field.
8721
8722         * config/i386/i386.md (UNSPEC_PCMP): New.
8723         (UNSPEC_VPERMIL): Likewise.
8724         (UNSPEC_VPERMIL2): Likewise.
8725         (UNSPEC_VPERMIL2F128): Likewise.
8726         (UNSPEC_MASKLOAD): Likewise.
8727         (UNSPEC_MASKSTORE): Likewise.
8728         (UNSPEC_CAST): Likewise.
8729         (UNSPEC_VTESTP): Likewise.
8730         (UNSPECV_VZEROALL): Likewise.
8731         (UNSPECV_VZEROUPPER): Likewise.
8732         (XMM0_REG): Likewise.
8733         (XMM1_REG): Likewise.
8734         (XMM2_REG): Likewise.
8735         (XMM3_REG): Likewise.
8736         (XMM4_REG): Likewise.
8737         (XMM5_REG): Likewise.
8738         (XMM6_REG): Likewise.
8739         (XMM8_REG): Likewise.
8740         (XMM9_REG): Likewise.
8741         (XMM10_REG): Likewise.
8742         (XMM11_REG): Likewise.
8743         (XMM12_REG): Likewise.
8744         (XMM13_REG): Likewise.
8745         (XMM14_REG): Likewise.
8746         (XMM15_REG): Likewise.
8747         (prefix): Likewise.
8748         (prefix_vex_imm8): Likewise.
8749         (prefix_vex_w): Likewise.
8750         (length_vex): Likewise.
8751         (maxmin): Likewise.
8752         (movoi): Likewise.
8753         (*avx_ashlti3): Likewise.
8754         (*avx_lshrti3): Likewise.
8755         (*avx_setcc<mode>): Likewise.
8756         (*fop_<mode>_comm_mixed_avx): Likewise.
8757         (*fop_<mode>_comm_avx): Likewise.
8758         (*fop_<mode>_1_mixed_avx): Likewise.
8759         (*fop_<mode>_1_avx): Likewise.
8760         (*avx_<code><mode>3): Likewise.
8761         (*avx_ieee_smin<mode>3): Likewise.
8762         (*avx_ieee_smax<mode>3): Likewise.
8763         (mode): Add OI, V8SF and V4DF.
8764         (length): Support VEX prefix.
8765         (*cmpfp_i_mixed): Set prefix attribute.
8766         (*cmpfp_i_sse): Likewise.
8767         (*cmpfp_iu_mixed): Likewise.
8768         (*cmpfp_iu_sse): Likewise.
8769         (*movsi_1): Support AVX.
8770         (*movdi_2): Likewise.
8771         (*movdi_1_rex64): Likewise.
8772         (*movti_internal): Likewise.
8773         (*movti_rex64): Likewise.
8774         (*movsf_1): Likewise.
8775         (*movdf_nointeger): Likewise.
8776         (*movdf_integer_rex64): Likewise.
8777         (*movtf_internal): Likewise.
8778         (zero_extendsidi2_32): Likewise.
8779         (zero_extendsidi2_rex64): Likewise.
8780         (*extendsfdf2_mixed): Likewise.
8781         (*extendsfdf2_sse): Likewise.
8782         (*truncdfsf_fast_mixed): Likewise.
8783         (*truncdfsf_fast_sse): Likewise.
8784         (*truncdfsf_mixed): Likewise.
8785         (fix_trunc<mode>di_sse): Likewise.
8786         (fix_trunc<mode>si_sse): Likewise.
8787         (*float<SSEMODEI24:mode><MODEF:mode>2_mixed_interunit): Likewise.
8788         (*float<SSEMODEI24:mode><MODEF:mode>2_mixed_nointerunit): Likewise.
8789         (*float<SSEMODEI24:mode><MODEF:mode>2_sse_interunit): Likewise.
8790         (*float<SSEMODEI24:mode><MODEF:mode>2_sse_nointerunit): Likewise.
8791         (*rcpsf2_sse): Likewise.
8792         (*rsqrtsf2_sse): Likewise.
8793         (*sqrt<mode>2_sse): Likewise.
8794         (sse4_1_round<mode>2): Likewise.
8795         (*sse_prologue_save_insn): Disallow REX prefix for AVX.
8796         Support AVX.  Set length attribute properly for AVX.
8797
8798         * config/i386/i386-modes.def (VECTOR_MODES (INT, 32)): New.
8799         (VECTOR_MODES (FLOAT, 32)): Likewise.
8800         (VECTOR_MODE (INT, DI, 8)): Likewise.
8801         (VECTOR_MODE (INT, HI, 32)): Likewise.
8802         (VECTOR_MODE (INT, QI, 64)): Likewise.
8803         (VECTOR_MODE (FLOAT, DF, 8)): Likewise.
8804         (VECTOR_MODE (FLOAT, SF, 16)): Likewise.
8805         (VECTOR_MODE (INT, DI, 4)): Removed.
8806         (VECTOR_MODE (INT, SI, 8)): Likewise.
8807         (VECTOR_MODE (INT, HI, 16)): Likewise.
8808         (VECTOR_MODE (INT, QI, 32)): Likewise.
8809         (VECTOR_MODE (FLOAT, SF, 8)): Likewise.
8810         (INT_MODE (OI, 32)): Likewise.
8811
8812         * config/i386/i386.opt (mavx): New.
8813         (mfma): Likewise.
8814
8815         * config/i386/i386-protos.h (ix86_attr_length_vex_default): New.
8816
8817         * config/i386/mmx.md (*mov<mode>_internal_rex64): Support AVX.
8818         (*mov<mode>_internal_avx): New.
8819         (*movv2sf_internal_rex64_avx): Likewise.
8820         (*movv2sf_internal_avx): Likewise.
8821
8822         * config/i386/predicates.md (const_4_to_5_operand): New.
8823         (const_6_to_7_operand): Likewise.
8824         (const_8_to_11_operand): Likewise.
8825         (const_12_to_15_operand): Likewise.
8826         (avx_comparison_float_operator): Likewise.
8827
8828         * config/i386/sse.md (AVX256MODEI): New.
8829         (AVX256MODE): Likewise.
8830         (AVXMODEQI): Likewise.
8831         (AVXMODE): Likewise.
8832         (AVX256MODEF2P): Likewise.
8833         (AVX256MODE2P): Likewise.
8834         (AVX256MODE4P): Likewise.
8835         (AVX256MODE8P): Likewise.
8836         (AVXMODEF2P): Likewise.
8837         (AVXMODEF4P): Likewise.
8838         (AVXMODEDCVTDQ2PS): Likewise.
8839         (AVXMODEDCVTPS2DQ): Likewise.
8840         (avxvecmode): Likewise.
8841         (avxvecpsmode): Likewise.
8842         (avxhalfvecmode): Likewise.
8843         (avxscalarmode): Likewise.
8844         (avxcvtvecmode): Likewise.
8845         (avxpermvecmode): Likewise.
8846         (avxmodesuffixf2c): Likewise.
8847         (avxmodesuffixp): Likewise.
8848         (avxmodesuffixs): Likewise.
8849         (avxmodesuffix): Likewise.
8850         (vpermilbits): Likewise.
8851         (pinsrbits): Likewise.
8852         (mov<mode>): Likewise.
8853         (*mov<mode>_internal): Likewise.
8854         (push<mode>1): Likewise.
8855         (movmisalign<mode>): Likewise.
8856         (avx_movup<avxmodesuffixf2c><avxmodesuffix>): Likewise.
8857         (avx_movdqu<avxmodesuffix>): Likewise.
8858         (avx_lddqu<avxmodesuffix>): Likewise.
8859         (<plusminus_insn><mode>3): Likewise.
8860         (*avx_<plusminus_insn><mode>3): Likewise.
8861         (*avx_vm<plusminus_insn><mode>3): Likewise.
8862         (mul<mode>3): Likewise.
8863         (*avx_mul<mode>3): Likewise.
8864         (*avx_vmmul<mode>3): Likewise.
8865         (divv8sf3): Likewise.
8866         (divv4df3): Likewise.
8867         (avx_div<mode>3): Likewise.
8868         (*avx_div<mode>3): Likewise.
8869         (*avx_vmdiv<mode>3): Likewise.
8870         (avx_rcpv8sf2): Likewise.
8871         (*avx_vmrcpv4sf2): Likewise.
8872         (sqrtv8sf2): Likewise.
8873         (avx_sqrtv8sf2): Likewise.
8874         (*avx_vmsqrt<mode>2): Likewise.
8875         (rsqrtv8sf2): Likewise.
8876         (avx_rsqrtv8sf2): Likewise.
8877         (*avx_vmrsqrtv4sf2): Likewise.
8878         (<code><mode>3): Likewise.
8879         (*avx_<code><mode>3_finite): Likewise.
8880         (*avx_<code><mode>3): Likewise.
8881         (*avx_vm<code><mode>3): Likewise.
8882         (*avx_ieee_smin<mode>3): Likewise.
8883         (*avx_ieee_smax<mode>3): Likewise.
8884         (avx_addsubv8sf3): Likewise.
8885         (avx_addsubv4df3): Likewise.
8886         (*avx_addsubv4sf3): Likewise.
8887         (*avx_addsubv2df3): Likewise.
8888         (avx_h<plusminus_insn>v4df3): Likewise.
8889         (avx_h<plusminus_insn>v8sf3): Likewise.
8890         (*avx_h<plusminus_insn>v4sf3): Likewise.
8891         (*avx_h<plusminus_insn>v2df3): Likewise.
8892         (avx_cmpp<avxmodesuffixf2c><mode>3): Likewise.
8893         (avx_cmps<ssemodesuffixf2c><mode>3): Likewise.
8894         (*avx_maskcmp<mode>3): Likewise.
8895         (avx_nand<mode>3): Likewise.
8896         (*avx_<code><mode>3): Likewise.
8897         (*avx_nand<mode>3): Likewise.
8898         (*avx_<code><mode>3): Likewise.
8899         (*avx_cvtsi2ss): Likewise.
8900         (*avx_cvtsi2ssq): Likewise.
8901         (*avx_cvtsi2sd): Likewise.
8902         (*avx_cvtsi2sdq): Likewise.
8903         (*avx_cvtsd2ss): Likewise.
8904         (avx_cvtss2sd): Likewise.
8905         (avx_cvtdq2ps<avxmodesuffix>): Likewise.
8906         (avx_cvtps2dq<avxmodesuffix>): Likewise.
8907         (avx_cvttps2dq<avxmodesuffix>): Likewise.
8908         (*avx_cvtsi2sd): Likewise.
8909         (*avx_cvtsi2sdq): Likewise.
8910         (avx_cvtdq2pd256): Likewise.
8911         (avx_cvtpd2dq256): Likewise.
8912         (avx_cvttpd2dq256): Likewise.
8913         (*avx_cvtsd2ss): Likewise.
8914         (*avx_cvtss2sd): Likewise.
8915         (avx_cvtpd2ps256): Likewise.
8916         (avx_cvtps2pd256): Likewise.
8917         (*avx_movhlps): Likewise.
8918         (*avx_movlhps): Likewise.
8919         (avx_unpckhps256): Likewise.
8920         (*avx_unpckhps): Likewise.
8921         (avx_unpcklps256): Likewise.
8922         (*avx_unpcklps): Likewise.
8923         (avx_movshdup256): Likewise.
8924         (avx_movsldup256): Likewise.
8925         (avx_shufps256): Likewise.
8926         (avx_shufps256_1): Likewise.
8927         (*avx_shufps_<mode>): Likewise.
8928         (*avx_loadhps): Likewise.
8929         (*avx_storelps): Likewise.
8930         (*avx_loadlps): Likewise.
8931         (*avx_movss): Likewise.
8932         (*vec_dupv4sf_avx): Likewise.
8933         (*vec_concatv2sf_avx): Likewise.
8934         (*vec_concatv4sf_avx): Likewise.
8935         (*vec_setv4sf_0_avx): Likewise.
8936         (*vec_setv4sf_avx): Likewise.
8937         (*avx_insertps): Likewise.
8938         (avx_vextractf128<mode>): Likewise.
8939         (vec_extract_lo_<mode>): Likewise.
8940         (vec_extract_hi_<mode>): Likewise.
8941         (vec_extract_lo_<mode>): Likewise.
8942         (vec_extract_hi_<mode>): Likewise.
8943         (vec_extract_lo_v16hi): Likewise.
8944         (vec_extract_hi_v16hi): Likewise.
8945         (vec_extract_lo_v32qi): Likewise.
8946         (vec_extract_hi_v32qi): Likewise.
8947         (avx_unpckhpd256): Likewise.
8948         (*avx_unpckhpd): Likewise.
8949         (avx_movddup256): Likewise.
8950         (*avx_movddup): Likewise.
8951         (avx_unpcklpd256): Likewise.
8952         (*avx_unpcklpd): Likewise.
8953         (avx_shufpd256): Likewise.
8954         (avx_shufpd256_1): Likewise.
8955         (*avx_punpckhqdq): Likewise.
8956         (*avx_punpcklqdq): Likewise.
8957         (*avx_shufpd_<mode>): Likewise.
8958         (*avx_storehpd): Likewise.
8959         (*avx_loadhpd): Likewise.
8960         (*avx_loadlpd): Likewise.
8961         (*avx_movsd): Likewise.
8962         (*vec_concatv2df_avx): Likewise.
8963         (*avx_<plusminus_insn><mode>3): Likewise.
8964         (*avx_<plusminus_insn><mode>3): Likewise.
8965         (*avx_mulv8hi3): Likewise.
8966         (*avxv8hi3_highpart): Likewise.
8967         (*avx_umulv8hi3_highpart): Likewise.
8968         (*avx_umulv2siv2di3): Likewise.
8969         (*avx_mulv2siv2di3): Likewise.
8970         (*avx_pmaddwd): Likewise.
8971         (*avx_mulv4si3): Likewise.
8972         (*avx_ashr<mode>3): Likewise.
8973         (*avx_lshr<mode>3): Likewise.
8974         (*avx_ashl<mode>3): Likewise.
8975         (*avx_<code><mode>3): Likewise.
8976         (*avx_eq<mode>3): Likewise.
8977         (*avx_gt<mode>3): Likewise.
8978         (*avx_nand<mode>3): Likewise.
8979         (*avx_nand<mode>3): Likewise.
8980         (*avx_<code><mode>3): Likewise.
8981         (*avx_<code><mode>3): Likewise.
8982         (*avx_packsswb): Likewise.
8983         (*avx_packssdw): Likewise.
8984         (*avx_packuswb): Likewise.
8985         (*avx_punpckhbw): Likewise.
8986         (*avx_punpcklbw): Likewise.
8987         (*avx_punpckhwd): Likewise.
8988         (*avx_punpcklwd): Likewise.
8989         (*avx_punpckhdq): Likewise.
8990         (*avx_punpckldq): Likewise.
8991         (*avx_pinsr<avxmodesuffixs>): Likewise.
8992         (*avx_pinsrq): Likewise.
8993         (*avx_loadld): Likewise.
8994         (*vec_extractv2di_1_rex64_avx): Likewise.
8995         (*vec_extractv2di_1_avx): Likewise.
8996         (*vec_dupv2di_avx): Likewise.
8997         (*vec_concatv2si_avx): Likewise.
8998         (*vec_concatv4si_1_avx): Likewise.
8999         (*vec_concatv2di_avx): Likewise.
9000         (*vec_concatv2di_rex64_avx): Likewise.
9001         (*avx_uavgv16qi3): Likewise.
9002         (*avx_uavgv8hi3): Likewise.
9003         (*avx_psadbw): Likewise.
9004         (avx_movmskp<avxmodesuffixf2c>256): Likewise.
9005         (*avx_phaddwv8hi3): Likewise.
9006         (*avx_phadddv4si3): Likewise.
9007         (*avx_phaddswv8hi3): Likewise.
9008         (*avx_phsubwv8hi3): Likewise.
9009         (*avx_phsubdv4si3): Likewise.
9010         (*avx_phsubswv8hi3): Likewise.
9011         (*avx_pmaddubsw128): Likewise.
9012         (*avx_pmulhrswv8hi3): Likewise.
9013         (*avx_pshufbv16qi3): Likewise.
9014         (*avx_psign<mode>3): Likewise.
9015         (*avx_palignrti): Likewise.
9016         (avx_blendp<avxmodesuffixf2c><avxmodesuffix>): Likewise.
9017         (avx_blendvp<avxmodesuffixf2c><avxmodesuffix>): Likewise.
9018         (avx_dpp<avxmodesuffixf2c><avxmodesuffix>): Likewise.
9019         (*avx_mpsadbw): Likewise.
9020         (*avx_packusdw): Likewise.
9021         (*avx_pblendvb): Likewise.
9022         (*avx_pblendw): Likewise.
9023         (avx_vtestp<avxmodesuffixf2c><avxmodesuffix>): Likewise.
9024         (avx_ptest256): Likewise.
9025         (avx_roundp<avxmodesuffixf2c>256): Likewise.
9026         (*avx_rounds<ssemodesuffixf2c>): Likewise.
9027         (*avx_aesenc): Likewise.
9028         (*avx_aesenclast): Likewise.
9029         (*avx_aesdec): Likewise.
9030         (*avx_aesdeclast): Likewise.
9031         (avx_vzeroupper): Likewise.
9032         (avx_vzeroupper_rex64): Likewise.
9033         (avx_vpermil<mode>): Likewise.
9034         (avx_vpermilvar<mode>3): Likewise.
9035         (avx_vpermil2<mode>3): Likewise.
9036         (avx_vperm2f128<mode>3): Likewise.
9037         (avx_vbroadcasts<avxmodesuffixf2c><avxmodesuffix>): Likewise.
9038         (avx_vbroadcastss256): Likewise.
9039         (avx_vbroadcastf128_p<avxmodesuffixf2c>256): Likewise.
9040         (avx_vinsertf128<mode>): Likewise.
9041         (vec_set_lo_<mode>): Likewise.
9042         (vec_set_hi_<mode>): Likewise.
9043         (vec_set_lo_<mode>): Likewise.
9044         (vec_set_hi_<mode>): Likewise.
9045         (vec_set_lo_v16hi): Likewise.
9046         (vec_set_hi_v16hi): Likewise.
9047         (vec_set_lo_v32qi): Likewise.
9048         (vec_set_hi_v32qi): Likewise.
9049         (avx_maskloadp<avxmodesuffixf2c><avxmodesuffix>): Likewise.
9050         (avx_maskstorep<avxmodesuffixf2c><avxmodesuffix>): Likewise.
9051         (avx_<avxmodesuffixp><avxmodesuffix>_<avxmodesuffixp>): Likewise.
9052         (avx_<avxmodesuffixp>_<avxmodesuffixp><avxmodesuffix>): Likewise.
9053         (vec_init<mode>): Likewise.
9054         (*vec_concat<mode>_avx): Likewise.
9055         (blendbits): Support V8SF and V4DF.
9056         (sse2_movq128): Support AVX.
9057         (<sse>_movnt<mode>): Likewise.
9058         (sse2_movntv2di): Likewise.
9059         (sse_rcpv4sf2): Likewise.
9060         (sse_sqrtv4sf2): Likewise.
9061         (sse_rsqrtv4sf2): Likewise.
9062         (<sse>_comi): Likewise.
9063         (<sse>_ucomi): Likewise.
9064         (sse_cvtss2si): Likewise.
9065         (sse_cvtss2si_2): Likewise.
9066         (sse_cvtss2siq): Likewise.
9067         (sse_cvtss2siq_2): Likewise.
9068         (sse_cvttss2si): Likewise.
9069         (sse_cvttss2siq): Likewise.
9070         (sse2_cvtsd2si): Likewise.
9071         (sse2_cvtsd2si_2): Likewise.
9072         (sse2_cvtsd2siq): Likewise.
9073         (sse2_cvtsd2siq_2): Likewise.
9074         (sse2_cvttsd2si): Likewise.
9075         (sse2_cvttsd2siq): Likewise.
9076         (sse2_cvtdq2pd): Likewise.
9077         (*sse2_cvtpd2dq): Likewise.
9078         (*sse2_cvttpd2dq): Likewise.
9079         (*sse2_cvtpd2ps): Likewise.
9080         (sse2_cvtps2pd): Likewise.
9081         (sse3_movshdup): Likewise.
9082         (sse3_movsldup): Likewise.
9083         (sse_storehps): Likewise.
9084         (*sse4_1_extractps): Likewise.
9085         (sse2_storelpd): Likewise.
9086         (vec_dupv2df_sse3): Likewise.
9087         (*vec_concatv2df_sse3): Likewise.
9088         (*sse4_1_pextrb): Likewise.
9089         (*sse4_1_pextrb_memory): Likewise.
9090         (*sse2_pextrw): Likewise.
9091         (*sse4_1_pextrw_memory): Likewise.
9092         (*sse4_1_pextrd): Likewise.
9093         (*sse4_1_pextrq): Likewise.
9094         (sse2_pshufd_1): Likewise.
9095         (sse2_pshuflw_1): Likewise.
9096         (sse2_pshufhw_1): Likewise.
9097         (*sse2_storeq_rex64): Likewise.
9098         (*vec_dupv4si): Likewise.
9099         (<sse>_movmskp<ssemodesuffixf2c>): Likewise.
9100         (sse2_pmovmskb): Likewise.
9101         (*sse2_maskmovdqu): Likewise.
9102         (*sse2_maskmovdqu_rex64): Likewise.
9103         (sse_ldmxcsr): Likewise.
9104         (sse_stmxcsr): Likewise.
9105         (abs<mode>2): Likewise.
9106         (sse4_1_movntdqa): Likewise.
9107         (sse4_1_phminposuw): Likewise.
9108         (sse4_1_extendv8qiv8hi2): Likewise.
9109         (*sse4_1_extendv8qiv8hi2): Likewise.
9110         (sse4_1_extendv4qiv4si2): Likewise.
9111         (*sse4_1_extendv4qiv4si2): Likewise.
9112         (sse4_1_extendv2qiv2di2): Likewise.
9113         (*sse4_1_extendv2qiv2di2): Likewise.
9114         (sse4_1_extendv4hiv4si2): Likewise.
9115         (*sse4_1_extendv4hiv4si2): Likewise.
9116         (sse4_1_extendv2hiv2di2): Likewise.
9117         (*sse4_1_extendv2hiv2di2): Likewise.
9118         (sse4_1_extendv2siv2di2): Likewise.
9119         (*sse4_1_extendv2siv2di2): Likewise.
9120         (sse4_1_zero_extendv8qiv8hi2): Likewise.
9121         (*sse4_1_zero_extendv8qiv8hi2): Likewise.
9122         (sse4_1_zero_extendv4qiv4si2): Likewise.
9123         (*sse4_1_zero_extendv4qiv4si2): Likewise.
9124         (sse4_1_zero_extendv2qiv2di2): Likewise.
9125         (*sse4_1_zero_extendv2qiv2di2): Likewise.
9126         (sse4_1_zero_extendv4hiv4si2): Likewise.
9127         (*sse4_1_zero_extendv4hiv4si2): Likewise.
9128         (sse4_1_zero_extendv2hiv2di2): Likewise.
9129         (*sse4_1_zero_extendv2hiv2di2): Likewise.
9130         (sse4_1_zero_extendv2siv2di2): Likewise.
9131         (*sse4_1_zero_extendv2siv2di2): Likewise.
9132         (sse4_1_ptest): Likewise.
9133         (sse4_1_roundp<ssemodesuffixf2c>): Likewise.
9134         (sse4_2_pcmpestri): Likewise.
9135         (sse4_2_pcmpestrm): Likewise.
9136         (sse4_2_pcmpistri): Likewise.
9137         (sse4_2_pcmpistrm): Likewise.
9138         (aesimc): Likewise.
9139         (aeskeygenassist): Likewise.
9140
9141 2008-08-28  Uros Bizjak  <ubizjak@gmail.com>
9142
9143         * config/i386/predicates.md (vzeroall_operation): New.
9144
9145         * config/i386/sse.md (avx_vzeroall): New.
9146         (*avx_vzeroall): Likewise.
9147
9148 2008-08-28  Paul Brook  <paul@codesourcery.com>
9149             Mark Shinwell  <shinwell@codesourcery.com>
9150             Richard Earnshaw  <richard.earnshaw@arm.com>
9151
9152         * config/arm/arm.c (TARGET_MAX_ANCHOR_OFFSET): New.
9153         (TARGET_MIN_ANCHOR_OFFSET): New.
9154         (arm_override_options): Set correct anchor ranges for Thumb-1
9155         and Thumb-2 if required.
9156         (legitimize_pic_address): Handle case involving a TLS symbol
9157         reference with an addend.
9158         (arm_optimization_options): Enable section anchors at -O1 and
9159         above.
9160         * config/arm/arm.h (OPTIMIZATION_OPTIONS): New.
9161         * config/arm/arm-protos.h (arm_optimization_options): New.
9162
9163 2008-08-28  Nick Clifton  <nickc@redhat.com>
9164
9165         * config/stormy16/stormy16.h (IRA_COVER_CLASSES): Define.
9166         * config/stormy16/stormy16.md (zero_extendqihi2): Fix length
9167         attribute.
9168
9169         * config/v850/v850.h (IRA_COVER_CLASSES): Define.
9170         * config/v850/v850.md (return): Remove frame size restriction.
9171
9172         * config/mcore/mcore.h (IRA_COVER_CLASSES): Define.
9173
9174         * config/iq2000/iq2000.h (IRA_COVER_CLASSES): Define.
9175
9176         * config/fr30/fr30.h (IRA_COVER_CLASSES): Define.
9177
9178         * config/m32r/m32r.h (IRA_COVER_CLASSES): Define.
9179
9180 2008-08-28  Paul Brook  <paul@codesourcery.com>
9181
9182         * config/arm/vfp11.md: Update license notice.
9183         * config/arm/cortex-r4.md: Ditto.
9184
9185 2008-08-28  Richard Guenther  <rguenther@suse.de>
9186
9187         PR tree-optimization/37207
9188         * tree-ssa-ifcombine.c (recognize_single_bit_test): Fix
9189         tuplification bug.
9190
9191 2008-08-28  Dodji Seketeli  <dodji@redhat.com>
9192
9193         PR c++/36741
9194         * tree.c (int_fits_type_p): Don't forget unsigned integers
9195           of type sizetype which higher end word equals -1.
9196
9197 2008-08-28  Ira Rosen  <irar@il.ibm.com>
9198
9199         * target.h (struct vectorize): Add new target builtin.
9200         * tree-vectorizer.c (destroy_loop_vec_info): Call
9201         vect_free_slp_instance instead of vect_free_slp_node.
9202         * tree-vectorizer.h (enum slp_load_perm_type): New.
9203         (struct _slp_instance): Add new fields.
9204         (SLP_INSTANCE_LOAD_PERMUTATION): New.
9205         (SLP_INSTANCE_LOADS): New.
9206         (vect_free_slp_tree): Remove.
9207         (vect_free_slp_instance): Declare.
9208         (SLP_TREE_LOADS_PERM_TYPE, TARG_VEC_PERMUTE_COST): New.
9209         (vectorizable_load): Add argument.
9210         (vect_transform_slp_perm_load): New.
9211         * tree-vect-analyze.c (vect_analyze_operations): Add an argument to
9212         vectorizable_load.
9213         (vect_get_place_in_interleaving_chain): New function.
9214         (vect_free_slp_tree): Make static.
9215         (vect_free_slp_instance): New function.
9216         (vect_build_slp_tree): Add new arguments. Allow load permutations and
9217         collect the load location in the interleaving chain.
9218         (vect_supported_slp_permutation_p): New function.
9219         (vect_supported_load_permutation_p): Likewise.
9220         (vect_analyze_slp_instance): In case of loads permutation, call
9221         vect_supported_load_permutation_p to check that the permutation is
9222         supported.
9223         * target-def.h (TARGET_VECTORIZE_BUILTIN_VEC_PERM): New.
9224         * tree-vect-transform.c (vect_transform_stmt): Add new argument.
9225         (vect_create_mask_and_perm): New function.
9226         (vect_get_mask_element, vect_transform_slp_perm_load): Likewise.
9227         (vectorizable_load): Add an argument. Don't keep the created vectors
9228         statements in the node if permutation is required. Call
9229         vect_transform_slp_perm_load to generate the permutation.
9230         (vect_transform_stmt): Add new argument. Call vectorizable_load with
9231         additional argument.
9232         (vect_schedule_slp_instance): In case of loads permutation, allocate
9233         vectorized statements structure for all the related SLP nodes. Call
9234         vect_transform_stmt with addditional argument.
9235         (vect_transform_loop): Call vect_transform_stmt with correct arguments.
9236         * config/spu/spu.c (spu_builtin_vec_perm): New.
9237         (TARGET_VECTORIZE_BUILTIN_VEC_PERM): Redefine.
9238         * config/spu/spu.h (TARG_VEC_PERMUTE_COS): Define.
9239         * config/rs6000/rs6000.c (rs6000_builtin_vec_perm): New.
9240         (TARGET_VECTORIZE_BUILTIN_VEC_PERM): Redefine.
9241
9242 2008-08-28  Chris Fairles  <chris.fairles@gmail.com>
9243
9244         * gthr-posix.h (__gthread_create,  __gthread_join, __gthread_detach,
9245         __gthread_mutex_timed_lock, __gthread_recursive_mutex_timed_lock,
9246         __gthread_cond_signal, __gthread_cond_timedwait,
9247         __gthread_cond_timedwait_recursive): New functions.
9248         * gthr-posix.c (pthread_mutex_timedlock, pthread_cond_timedwait):
9249         Likewise.
9250         * gthr.h: Comment on defining __GTHREADS_CXX0X macro in conforming
9251         thread interfaces.
9252
9253 2008-08-28  Richard Guenther  <rguenther@suse.de>
9254
9255         PR middle-end/37005
9256         * fold-const.c (maybe_canonicalize_comparison_1): Require
9257         undefined overflow only for canonicalizing A +- CST cmp CST.
9258         Make sure to not generate new constants that are not inside
9259         their TYPE_MIN/MAX_VALUE range.
9260         (maybe_canonicalize_comparison): Remove undefined overflow
9261         checking from here.
9262         (fold_binary): Remove now duplicate folding.
9263
9264 2008-08-27  Paolo Carlini  <paolo.carlini@oracle.com>
9265
9266         * c-typeck.c (convert_for_assignment): Adjust WARN_FOR_ASSIGNMENT
9267         use not updated in the last change.
9268
9269 2008-08-27  Kaz Kojima  <kkojima@gcc.gnu.org>
9270
9271         * config/sh/sh.h (REG_CLASS_CONTENTS): Drop fr32 from FPUL_REGS.
9272         (IRA_COVER_CLASSES): Add FPUL_REGS.
9273
9274 2008-08-27  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
9275
9276         PR 37217
9277         * c-common.c (conversion_warning): Check for null operands.
9278
9279 2008-08-27  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
9280
9281         PR c/31673
9282         * c-decl.c (check_for_loop_decls): Improve error message. Give
9283         hint.
9284
9285 2008-08-27  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
9286
9287         PR c/37186
9288         * c-typeck.c (WARN_FOR_ASSIGNMENT): Add OPT parameter.
9289         (convert_for_assignment): Pass corrent OPT_W* parameter to
9290         WARN_FOR_ASSIGNMENT.
9291
9292 2008-08-27  Paolo Carlini  <paolo.carlini@oracle.com>
9293
9294         PR c++/35321
9295         * c-common.c (fold_offsetof_1): Handle TARGET_EXPR like CALL_EXPR.
9296
9297 2008-08-27  Paul Brook  <paul@codesourcery.com>
9298
9299         * config.gcc: Loosen checks for arm uclinux eabi targets.
9300
9301 2008-08-27  Paul Brook  <paul@codesourcery.com>
9302
9303         * config/arm/t-arm-coff (LIB1ASMFUNCS): Add missing undescrore on
9304         _clzsi2.
9305         * config/arm/t-linux (LIB1ASMFUNCS): Ditto.
9306
9307 2008-08-26  Douglas Gregor  <doug.gregor@gmail.com>
9308
9309         * c-common.c (do_switch_warnings): Look through the CONST_DECLs in
9310         the enumerators of an ENUMERAL_TYPE.
9311         * dbxout.c (dbxout_type): Ditto.
9312
9313 2008-08-26  Andrew Pinski  <andrew_pinski@playstation.sony.com>
9314
9315         PR rtl-opt/37219
9316         * fwprop.c (fwprop): Check that the loop_father is the outer loop.
9317         (fwprop_addr): Check that the loop_father is not the outer loop.
9318
9319 2008-08-26  Paul Brook  <paul@codesourcery.com>
9320
9321         * config/arm/vfp.md: Document fmul{s,d} and fmac{s,d} types.
9322         Remove documentation entry for fmul type.
9323         Use fmuls to annotate single-precision multiplication patterns,
9324         fmuld to annotate double-precision multiplication patterns,
9325         fmacs to annotate single-precision multiply-accumulate patterns
9326         and fmacd to annotate double-precision multiply-accumulate patterns.
9327         * config/arm/vfp11.md: Update reservations accordingly.
9328         * config/arm/arm.md: Note that certain values of the "type"
9329         attribute are documented in vfp.md.
9330         * config/arm/arm1020e.md: Remove out of date duplicate comment.
9331         (v10_cvt): Use new fmul types.
9332
9333 2008-08-26  Paul Brook  <paul@codesourcery.com>
9334
9335         * config/arm/vfp.md: Move pipeline description for VFP11 to...
9336         * config/arm/vfp11.md: ...here.  New.
9337         * config/arm/arm.md: Include vfp11.md.
9338
9339 2008-08-26  Hans-Peter Nilsson  <hp@axis.com>
9340
9341         * opts.c (decode_options) [!IRA_COVER_CLASSES]: Add missing
9342         parameter to inform call.
9343
9344 2008-08-26  Jeff Law  <law@redhat.com>
9345
9346         * mn10300.md (movqi, movhi): Split i->d*a case into two cases to
9347         avoid the possibility of getting DATA_OR_ADDRESS_REGS as the
9348         preferred class when copying a constant into a partial word register.
9349
9350 2008-08-26  Ben Elliston  <bje@au.ibm.com>
9351
9352         * rtlanal.c: Fix uses of "it's" with "its" where appropriate.
9353         * cp/typeck.c: Likewise.
9354         * cp/tree.c: Likewise.
9355         * gimple-low.c: Likewise.
9356         * jump.c: Likewise.
9357
9358 2008-08-26  Vladimir Makarov  <vmakarov@redhat.com>
9359
9360         * ira-build.c, ira-color.c, ira-costs.c, ira.h, ira-lives.c,
9361         ira.c, ira-conflicts.c, ira-emit.c, ira-int.h: New files.
9362
9363         * doc/passes.texi: Describe IRA.
9364
9365         * doc/tm.texi (IRA_COVER_CLASSES,
9366         IRA_HARD_REGNO_ADD_COST_MULTIPLIER): Describe the new macros.
9367
9368         * doc/invoke.texi (ira-max-loops-num): Describe the new parameter.
9369         (-fira, -fira-algorithm, -fira-coalesce, -fno-ira-move-spills,
9370         -fira-propagate-cost, -fno-ira-share-save-slots,
9371         -fno-ira-share-spill-slots, -fira-verbose): Describe new options.
9372
9373         * flags.h (ira_algorithm): New enumeration.
9374         (flag_ira_algorithm, flag_ira_verbose): New external variable
9375         declarations.
9376
9377         * postreload.c (gate_handle_postreload): Don't do post reload
9378         optimizations unless the reload is completed.
9379
9380         * reload.c (push_reload, find_dummy_reload): Use DF_LR_OUT for
9381         IRA.
9382
9383         * tree-pass.h (pass_ira): New external variable declaration.
9384
9385         * reload.h: Add 2008 to the Copyright.
9386
9387         * cfgloopanal.c: Include params.h.
9388         (estimate_reg_pressure_cost): Decrease cost for IRA optimization
9389         mode.
9390
9391         * params.h (IRA_MAX_LOOPS_NUM): New macro.
9392
9393         * toplev.c (ira.h): New include.
9394         (flag_ira_algorithm, flag_ira_verbose): New external variables.
9395         (backend_init_target): Call ira_init.
9396         (backend_init): Call ira_init_once.
9397         (finalize): Call finish_ira_once.
9398
9399         * toplev.h (flag_ira, flag_ira_coalesce, flag_ira_move_spills,
9400         flag_ira_share_save_slots, flag_ira_share_spill_slots): New
9401         external variables.
9402
9403         * regs.h (contains_reg_of_mode, move_cost, may_move_in_cost,
9404         may_move_out_cost): New external variable declarations.
9405         (move_table): New typedef.
9406
9407         * caller-save.c: Include headers output.h and ira.h.
9408         (no_caller_save_reg_set): New global variable.
9409         (save_slots_num, save_slots): New variables.
9410         (reg_save_code, reg_restore_code, add_stored_regs): Add
9411         prototypes.
9412         (init_caller_save): Set up no_caller_save_reg_set.
9413         (init_save_areas): Reset save_slots_num.
9414         (saved_hard_reg): New structure.
9415         (hard_reg_map, saved_regs_num, all_saved_regs): New variables.
9416         (initiate_saved_hard_regs, new_saved_hard_reg,
9417         finish_saved_hard_regs, saved_hard_reg_compare_func): New
9418         functions.
9419         (setup_save_areas): Add code for sharing stack slots.
9420         (all_blocks): New variable.
9421         (save_call_clobbered_regs): Process pseudo-register too.
9422         (mark_set_regs): Process pseudo-register too.
9423         (insert_one_insn): Put the insn after bb note in a empty basic
9424         block.  Add insn check.
9425
9426         * global.c (eliminable_regset): Make it external.
9427         (mark_elimination): Use DF_LR_IN for IRA.
9428         (pseudo_for_reload_consideration_p): New.
9429         (build_insn_chain): Make it external.  Don't ignore spilled
9430         pseudos for IRA.  Use pseudo_for_reload_consideration_p.
9431         (gate_handle_global_alloc): New function.
9432         (pass_global_alloc): Add the gate function.
9433
9434         * opts.c (decode_options): Set up flag_ira.  Print the warning for
9435         -fira.
9436         (common_handle_option): Process -fira-algorithm and -fira-verbose.
9437
9438         * timevar.def (TV_IRA, TV_RELOAD): New passes.
9439
9440         * regmove.c (regmove_optimize): Don't do replacement of output for
9441         IRA.
9442
9443         * hard-reg-set.h (no_caller_save_reg_set, reg_class_subclasses):
9444         New external variable declarations.
9445
9446         * local-alloc.c (update_equiv_regs): Make it external.  Return
9447         true if jump label rebuilding should be done.  Rescan new_insn for
9448         notes.
9449         (gate_handle_local_alloc): New function.
9450         (pass_local_alloc): Add the gate function.
9451
9452         * alias.c (value_addr_p, stack_addr_p): New functions.
9453         (nonoverlapping_memrefs_p): Use them for IRA.
9454
9455         * common.opt (fira, fira-algorithm, fira-coalesce,
9456         fira-move-spills, fira-share-save-slots, fira-share-spill-slots,
9457         fira-verbose): New options.
9458
9459         * regclass.c (reg_class_subclasses, contains_reg_of_mode,
9460         move_cost, may_move_in_cost, may_move_out_cost): Make the
9461         variables external.
9462         (move_table): Remove typedef.
9463         (init_move_cost): Make it external.
9464         (allocate_reg_info, resize_reg_info, setup_reg_classes): New
9465         functions.
9466
9467         * rtl.h (init_move_cost, allocate_reg_info, resize_reg_info,
9468         setup_reg_classes): New function prototypes.
9469         (eliminable_regset): New external variable declaration.
9470         (build_insn_chain, update_equiv_regs): New function prototypes.
9471
9472         * Makefile.in (IRA_INT_H): New definition.
9473         (OBJS-common): Add ira.o, ira-build.o, ira-costs.o,
9474         ira-conflicts.o, ira-color.o, ira-emit.o, and ira-lives.o.
9475         (reload1.o, toplev.o): Add dependence on ira.h.
9476         (cfgloopanal.o): Add PARAMS_H.
9477         (caller-save.o): Add dependence on output.h and ira.h.
9478         (ira.o, ira-build.o, ira-costs.o, ira-conflicts.o, ira-color.o,
9479         ira-emit.o, ira-lives.o): New entries.
9480
9481         * passes.c (pass_ira): New pass.
9482
9483         * params.def (PARAM_IRA_MAX_LOOPS_NUM): New parameter.
9484
9485         * reload1.c (ira.h): Include the header.
9486         (changed_allocation_pseudos): New bitmap.
9487         (init_reload): Initiate the bitmap.
9488         (compute_use_by_pseudos): Permits spilled registers in FROM.
9489         (temp_pseudo_reg_arr): New variable.
9490         (reload): Allocate and free temp_pseudo_reg_arr.  Sort pseudos for
9491         IRA.  Call alter_reg with the additional parameter.  Don't clear
9492         spilled_pseudos for IRA.  Restore original insn chain for IRA.
9493         Clear changed_allocation_pseudos at the end of reload.
9494         (calculate_needs_all_insns): Call IRA's mark_memory_move_deletion.
9495         (hard_regno_to_pseudo_regno): New variable.
9496         (count_pseudo): Check spilled pseudos.  Set up
9497         hard_regno_to_pseudo_regno.
9498         (count_spilled_pseudo): Check spilled pseudos. Update
9499         hard_regno_to_pseudo_regno.
9500         (find_reg): Use better_spill_reload_regno_p.  Check
9501         hard_regno_to_pseudo_regno.
9502         (alter_reg): Set up spilled_pseudos.  Add a new parameter.  Add
9503         code for IRA.
9504         (eliminate_regs_1): Use additional parameter for alter_reg.
9505         (finish_spills): Set up pseudo_previous_regs only for spilled
9506         pseudos.  Call reassign_pseudos once for all spilled pseudos, pass
9507         more arguments.  Don't clear live_throughout and dead_or_set for
9508         spilled pseudos.  Use additional parameter for alter_reg.  Call
9509         mark_allocation_change.  Set up changed_allocation_pseudos.
9510         Remove sanity check.
9511         (emit_input_reload_insns, delete_output_reload): Use additional
9512         parameter for alter_reg.  Call mark_allocation_change.
9513         (substitute, gen_reload_chain_without_interm_reg_p): New
9514         functions.
9515         (reloads_conflict): Use gen_reload_chain_without_interm_reg_p.
9516
9517         * testsuite/gcc.dg/20080410-1.c: New file.
9518
9519         * config/s390/s390.h (IRA_COVER_CLASSES,
9520         IRA_HARD_REGNO_ADD_COST_MULTIPLIER): Define.
9521
9522         * config/sparc/sparc.h (IRA_COVER_CLASSES): New macro.
9523
9524         * config/i386/i386.h (IRA_COVER_CLASSES): Ditto.
9525
9526         * config/ia64/ia64.h (IRA_COVER_CLASSES): Ditto.
9527
9528         * config/rs6000/rs6000.h (IRA_COVER_CLASSES): Ditto.
9529
9530         * config/arm/arm.h (IRA_COVER_CLASSES): Ditto.
9531
9532         * config/alpha/alpha.h (IRA_COVER_CLASSES): Ditto.
9533
9534         2008-08-24  Jeff Law  <law@redhat.com>
9535         * ira.c (setup_reg_class_intersect_union): Prefer smallest class
9536         when ignoring unavailable registers.
9537
9538         2008-08-24  Jeff Law  <law@redhat.com>
9539         * ira-color.c (coalesced_pseudo_reg_slot_compare): Check
9540         FRAME_GROWS_DOWNWARD and STACK_GROWS_DOWNWARD.
9541         * ira.c (setup_eliminable_regset): Check stack_realign_needed.
9542         * config/mn10300/mn10300.h (IRA_COVER_CLASSES): New macro.
9543
9544         2008-06-03 Steve Chamberlain <steve.chamberlain@gmail.com>
9545         * ira-build.c (allocno_range_compare_func): Stabilize sort.
9546
9547         2008-05-29 Andy Hutchinson <hutchinsonandy@aim.com>
9548         * config/avr/avr.h (IRA_COVER_CLASSES): New macro.
9549         * reload1.c (find_reg): Process registers in register allocation order.
9550
9551         2008-05-10 Richard Sandiford <rsandifo@nildram.co.uk>
9552         * toplev.c (backend_init_target): Move ira_init call from
9553         here...
9554         (lang_dependent_init_target): ...to here.
9555
9556         2008-05-10 Richard Sandiford <rsandifo@nildram.co.uk>
9557         * ira.c (setup_class_subset_and_memory_move_costs): Don't
9558         calculate memory move costs for NO_REGS.
9559
9560         2008-05-05 Kaz Kojima <kkojima@gcc.gnu.org>
9561         * ira-color.c (ira_fast_allocation): Use no_stack_reg_p only if
9562         STACK_REGS is defined.
9563
9564         2008-04-08 Andrew Pinski <andrew_pinski@playstation.sony.com>
9565         * config/spu/spu.h (IRA_COVER_CLASSES): New macro.
9566
9567         2008-04-04 Bernd Schmidt <bernd.schmidt@analog.com>
9568         * config/bfin/bfin.h (IRA_COVER_CLASSES): New macro.
9569
9570         2008-04-04 Kaz Kojima <kkojima@gcc.gnu.org>
9571         * config/sh/sh.h (IRA_COVER_CLASSES): Define.
9572         * config/sh/sh.md (movsicc_true+3): Check if emit returns a
9573         barrier.
9574
9575 2008-08-26  Victor Kaplansky  <victork@il.ibm.com>
9576             Dorit Nuzman  <dorit@il.ibm.com>
9577
9578         * gcc/config/spu/spu.md (vec_extract_evenv4si,
9579         vec_extract_evenv4sf, vec_extract_evenv8hi,
9580         vec_extract_evenv16qi, vec_extract_oddv4si,
9581         vec_extract_oddv4sf, vec_extract_oddv8hi, vec_extract_oddv16qi,
9582         vec_interleave_highv4sf, vec_interleave_lowv4sf,
9583         vec_interleave_highv4si, vec_interleave_lowv4si,
9584         vec_interleave_highv8hi, vec_interleave_lowv8hi,
9585         vec_interleave_highv16qi, vec_interleave_lowv16qi,
9586         vec_pack_trunc_v8hi, vec_pack_trunc_v4si): Implement.S
9587
9588 2008-08-25  Janis Johnson  <janis187@us.ibm.com>
9589
9590         PR target/36756
9591         * config/rs6000/rs6000.c (optimization_options): Don't default to
9592         section anchors without toplevel reorder.
9593
9594 2008-08-25  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
9595
9596         * config/spu/spu_mfcio.h (mfc_begin_critical_section): New function.
9597         (mfc_end_critical_section): Likewise.
9598
9599 2008-08-25  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
9600
9601         * config/rs6000/rs6000.c (rs6000_handle_altivec_attribute): Propagate
9602         all type qualifiers from element type to vector type.
9603
9604 2008-08-25  David Daney  <ddaney@avtrex.com>
9605
9606         * config/mips/mips.md (immediate_insn): Move up in file, fix
9607         comment typo, reformat.
9608         (fetchop_bit, atomic_hiqi_op memory_barrier,
9609         sync_compare_and_swap<mode>, compare_and_swap_12, sync_add<mode>,
9610         sync_<optab><mode>, sync_<optab>_12, sync_old_<optab><mode>,
9611         sync_old_<optab>_12, sync_new_<optab><mode>, sync_new_<optab>_12,
9612         sync_nand<mode>, sync_nand_12, sync_old_nand<mode>,
9613         sync_old_nand_12, sync_new_nand<mode>, sync_new_nand_12,
9614         sync_sub<mode>, sync_old_add<mode>, sync_old_sub<mode>,
9615         sync_new_add<mode>, sync_new_sub<mode>, sync_<optab><mode>,
9616         sync_old_<optab><mode>, sync_new_<optab><mode>, sync_nand<mode>,
9617         sync_old_nand<mode>, sync_new_nand<mode>,
9618         sync_lock_test_and_set<mode>, sync_lock_test_and_set<mode>,
9619         test_and_set_12): Moved to sync.md.
9620         (sync.md): Include.
9621         * config/mips/sync.md: New file.
9622
9623 2008-08-25  Richard Henderson  <rth@redhat.com>
9624
9625         * dwarf2out.c (def_cfa_1): Don't scale by DWARF_CIE_DATA_ALIGNMENT.
9626         (regsave): Likewise.
9627         (lookup_cfa_1): Don't rescale by DWARF_CIE_DATA_ALIGNMENT.
9628         (output_cfi_directive): Likewise.
9629         (div_data_align): New.
9630         (output_cfi): Use it.
9631
9632 2008-08-24  Adam Nemet  <anemet@caviumnetworks.com>
9633
9634         * config.gcc (mips64*-*-linux*): Handle mips64octeon*-*-linux*.
9635         * config/mips/mips.h (enum processor_type): Add PROCESSOR_OCTEON.
9636         (TARGET_OCTEON): New macro.
9637         (TARGET_CPU_CPP_BUILTINS): Define __OCTEON__ for Octeon.
9638         (MIPS_ISA_LEVEL_SPEC, MIPS_ARCH_FLOAT_SPEC): Handle -march=octeon.
9639         (ISA_HAS_POP): New macro.
9640         * config/mips/driver-native.c (host_detect_local_cpu): Handle
9641         Octeon.
9642         * config/mips/mips.c (mips_cpu_info_table, mips_rtx_cost_data):
9643         Handle Octeon.
9644         * config/mips/mips.md (cpu): Add octeon.
9645         (type): Add pop attribute value.
9646         (popcount<mode>2): New pattern.
9647         * doc/invoke.texi (-march=@var{arch}): Add octeon.
9648
9649 2008-08-24  Jan Hubicka  <jh@suse.cz>
9650
9651         * doc/invoke.texi (-fipa-cp-clone): New option.
9652         (-fipa-cp): Update docs.
9653         (--param ipcp-unit-growth):New.
9654         * ipa-cp.c: Include fibheap.h, params.h
9655         (ipcp_initialize_node_lattices): When not cloning, all externally
9656         visible functions are bottom.
9657         (ipcp_need_redirect_p): Accept clones.
9658         (ipcp_insert_stage): Use cost driven heuristics.
9659         (max_count, dead_nodes): New static vars.
9660         (ipcp_need_original_clone_p, ipcp_estimate_cloning_cost,
9661         ipcp_const_param_count): New functions.
9662         * common.opt (ipa-cp-clone): New command line option.
9663         * params.def (ipcp-unit-growth): New.
9664
9665 2008-08-24  Jan Hubicka  <jh@suse.cz>
9666
9667         * tree-inline.c (tree_function_versioning): Look harder
9668         for referenced vars.
9669
9670 2008-08-24  Razya Ladelsky  <razya@il.ibm.com>
9671
9672         PR tree-optimization/37185
9673         * matrix-reorg.c (transform_access_sites): Update changed stmt.
9674
9675 2008-08-23  Jan Hubicka  <jh@suse.cz>
9676
9677         * ipa-cp.c (ipcp_analyze_node): New function.
9678         (ipcp_update_cloned_node): Use it.
9679         (ipcp_init_stage): Likewise.
9680         * ipa-inline.c (function_insertion_hook_holder): New static var.
9681         (analyze_function): Break out from ....
9682         (inline_generate_summary): Here; register insertion hook.
9683         (cgraph_decide_inlining): Remove hook.
9684         (add_new_function): New function.
9685
9686 2008-08-23  Jan Hubicka  <jh@suse.cz>
9687
9688         * opts.c (decode_options): Revert accidental change enabling ipa-cp.
9689
9690 2008-08-23  Jan Hubicka  <jh@suse.cz>
9691
9692         * ipa-cp.c (constant_val_insert): Remove.
9693         (ipcp_propagate_one_const): Remove.
9694         (ipcp_create_replace_map): Always insert replacements to the map.
9695         (ipcp_insert_stage): Do not try to insert statements by hand.
9696         * tree-inline.c (insert_init_stmt): Break out from ...
9697         (setup_one_parameter): ... here; allow NULL BB pointer.
9698         (tree_function_versioning): Use setup_one_parameter to process
9699         replacement map.
9700
9701 2008-08-23  Jan Hubicka  <jh@suse.cz>
9702
9703         * tree.c (decl_address_ip_invariant_p): New function.
9704         * tree.h (decl_address_ip_invariant_p): Declare.
9705         * gimple.c (strip_invariant_refs): Break out from ...
9706         (is_gimple_invariant_address): ... here
9707         (is_gimple_ip_invariant_address): New function.
9708         (is_gimple_ip_invariant): New function.
9709         * gimple.h (is_gimple_ip_invariant_address, is_gimple_ip_invariant):
9710         Declare.
9711
9712         * ipa-cp.c (ipcp_lat_is_const): Remove handling of IPA_CONST_VALUE_REF.
9713         (ipcp_lat_is_insertable): All constants are insertable.
9714         (ipcp_lattice_from_jfunc, ipcp_print_all_lattices): Remove handling of
9715         IPA_CONST_VALUE_REF.
9716         (ipcp_initialize_node_lattices): Propagate all types of operands.
9717         (build_const_val): Do not handle IPA_CONST_VALUE_REF.
9718         (ipcp_create_replace_map): Reformat.
9719         (ipcp_need_redirect_p): Simplify.
9720         (ipcp_insert_stage): Check that argument is used before clonning.
9721         * ipa-prop.c (ipa_print_node_jump_functions): Do not handle
9722         IPA_CONST_REF.
9723         (compute_scalar_jump_functions): Simplify using is_gimple_ip_invariat.
9724         (determine_cst_member_ptr): Keep wrapping ADDR_EXPR of members.
9725         (update_call_notes_after_inlining): Expect ADDR_EXPR in operand.
9726         * ipa-prop.h (jump_func_type): Remove IPA_CONST_REF.
9727         (jump_func_type): Remove IPA_CONST_VALUE_REF.
9728         * tree-inline.c (tree_function_versioning): Add variables referenced
9729         by replacing trees.
9730
9731 2008-08-23  Jan Hubicka  <jh@suse.cz>
9732
9733         PR target/37094
9734         * i386.c (standard_80387_constant_p): Use optimize_size.
9735
9736 2008-08-23  Ira Rosen  <irar@il.ibm.com>
9737
9738         PR tree-optimization/37161
9739         * tree-vectorizer.h (vect_get_smallest_scalar_type): Declare.
9740         * tree-vect-analyze.c (vect_get_smallest_scalar_type): New function.
9741         (vect_determine_vectorization_factor): Move the scalar type
9742         retrieval to vect_get_smallest_scalar_type.
9743         (vect_build_slp_tree): Call vect_get_smallest_scalar_type to get
9744         scalar type. Remove redundant computation.
9745         * tree-vect-transform.c (vect_get_constant_vectors): Add argument.
9746         (vect_get_slp_defs): Take the type of RHS into account if
9747         necessary by calling vect_get_smallest_scalar_type. Call
9748         vect_get_constant_vectors with additional argument.
9749
9750 2008-08-23  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
9751
9752         PR 35648
9753         * doc/invoke.texi (Wwrite-strings): Clarify description.
9754
9755 2008-08-23  Ira Rosen  <irar@il.ibm.com>
9756
9757         PR tree-optimization/37174
9758         * tree-vect-analyze.c (vect_get_and_check_slp_defs): Check that the
9759         def stmt is a part of the loop before accessing its stmt_vec_info.
9760
9761 2008-08-22  Anatoly Sokolov  <aesok@post.ru>
9762
9763         PR target/11259
9764         * config/avr/avr.md (UNSPEC_SWAP): New constants.
9765         (*swap): New insn pattern.
9766         (*ashlqi3): Rename from ashlqi3 insn pattern.
9767         (ashlqi3): New expanders.
9768         (*lshrqi3): Rename from lshrqi3 insn pattern.
9769         (lshrqi3): New expanders.
9770         (ashlqi3_const4, ashlqi3_const5, ashlqi3_const6, lshrqi3_const4,
9771         lshrqi3_const5, lshrqi3_const6): New splitters.
9772         (andi, ashlqi3_l_const4, ashlqi3_l_const5, ashlqi3_l_const6,
9773         lshrqi3_l_const4, lshrqi3_l_const5, lshrqi3_l_const6): Define
9774         peephole2 patterns.
9775
9776 2008-08-22  Richard Guenther  <rguenther@suse.de>
9777
9778         PR tree-optimization/37078
9779         * tree-vrp.c (extract_range_from_unary_expr): Avoid generating
9780         [+INF, +INF] ranges.
9781
9782 2008-08-22  Richard Guenther  <rguenther@suse.de>
9783
9784         PR tree-optimization/37143
9785         * tree-vect-transform.c (vect_create_cond_for_align_checks): Build
9786         a conversion statement instead of a copy.
9787
9788 2008-08-22  Uros Bizjak  <ubizjak@gmail.com>
9789
9790         PR target/37184
9791         * config/i386/i386.c (ix86_match_ccmode): Handle CCAmode,
9792         CCCmode, CCOmode and CCSmode destination modes.
9793
9794         PR target/37191
9795         * config/i386/mmx.md (*vec_extractv2sf_0): Avoid combining registers
9796         from different units in a single alternative.
9797         (*vec_extractv2sf_1): Ditto.
9798         (*vec_extractv2si_0): Ditto.
9799         (*vec_extractv2si_1): Ditto.
9800         * config/i386/sse.md (sse2_storehpd): Ditto.
9801         (sse2_storelpd): Ditto.
9802         (sse2_loadhpd): Ditto.
9803         (sse2_loadlpd): Ditto.
9804
9805         PR target/37197
9806         * config/i386/i386.md (clzsi2_abm): Fix operand 1 constraints.
9807         (popcountsi2): Ditto.
9808         (clzdi2_abm): Ditto.
9809         (popcountdi2): Ditto.
9810         (clzhi2_abm): Ditto.
9811         (popcounthi2): Ditto.
9812
9813 2008-08-22  Richard Guenther  <rguenther@suse.de>
9814
9815         PR middle-end/36548
9816         PR middle-end/37125
9817         * fold-const.c (extract_muldiv_1): Optimize (X * C1) % C2 only
9818         if the multiplication does not overflow.
9819
9820 2008-08-21  Nathan Sidwell  <nathan@codesourcery.com>
9821
9822         * c-ppoutput.c (init_pp_output): Initialize src_line to 1.
9823
9824 2008-08-21  Richard Henderson  <rth@redhat.com>
9825
9826         * configure.ac (HAVE_GAS_CFI_PERSONALITY_DIRECTIVE): Remove
9827         spurrious comma from test.
9828         * configure: Rebuild.
9829
9830 2008-08-21  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
9831
9832         PR 30457
9833         * builtins.c (fold_builtin_next_arg): Add warning about undefined
9834         behaviour.
9835
9836 2008-08-21  Aldy Hernandez  <aldyh@redhat.com>
9837
9838         * c-tree.h (grokfield): New argument.
9839         * c-decl.c (grokfield): Handle new location argument.
9840         * c-parser.c (c_parser_struct_declaration): Pass location to grokfield.
9841
9842 2008-08-21  Richard Guenther  <rguenther@suse.de>
9843
9844         * tree-ssa-ccp.c (ccp_fold): Fold VIEW_CONVERT_EXPRs of constants.
9845
9846 2008-08-21  Jan Hubicka  <jh@suse.cz>
9847
9848         * cgraph.c (first_cgraph_function_insertion_hook): New variable.
9849         (cgraph_add_function_insertion_hook,
9850         cgraph_remove_function_insertion_hook,
9851         cgraph_call_function_insertion_hooks): New functions.
9852         * cgraph.h (cgraph_add_function_insertion_hook,
9853         cgraph_remove_function_insertion_hook,
9854         cgraph_call_function_insertion_hooks): Declare.
9855         * ipa-reference.c (function_insertion_hook_holder): New variable.
9856         (check_operand, look_for_address_of): When checking late, do not care
9857         about module bitmaps.
9858         (add_new_function): New function.
9859         (generate_summary): Register hooks; zero module bitmaps.
9860         (propagate): Unregister hooks.
9861         * ipa-pure-const.c (function_insertion_hook_holder): New variable.
9862         (add_new_function): New function.
9863         (generate_summary): Register hook.
9864         (propagate): Remove hook.
9865
9866         * ipa-cp.c (ipcp_need_redirect_p): Fix to not be constant 0.
9867
9868         * tree-pass.h (pass_ipa_cp): Make ipa_opt_pass.
9869         * ipa-cp.c (ipcp_update_cloned_node): New function.
9870         (build_const_val): Handle functions correctly; bring type logic
9871         into sync with tree-inline.c
9872         (ipcp_init_stage):  Take care of computing stuff needed by
9873         indirect inlining; update clones.
9874         (ipcp_generate_summary): Break out of ipcp_driver.
9875         (ipcp_driver): Do only execution and transformation.
9876         (pass_ipa_cp): Make IPA_PASS.
9877         * tree-ssa-ccp.c (fold_stmt_r): Check type before trying to fold
9878         offset to address.
9879         * ipa-inline.c (inline_indirect_intraprocedural_analysis): When doing
9880         ipcp, some info is already available.
9881         * ipa-prop.c (ipa_count_arguments): Grow edge lists as needed.
9882         * tree-inline.c (remap_ssa_name): Unshare expression.
9883
9884 2008-08-21  Richard Guenther  <rguenther@suse.de>
9885
9886         * tree-ssa-pre.c (insert_into_preds_of_block): Before inserting
9887         a PHI ask VN if it is already available.
9888         * tree-ssa-sccvn.h (vn_phi_lookup): Declare.
9889         * tree-ssa-sccvn.c (vn_phi_lookup): Export.
9890
9891 2008-08-21  Richard Guenther  <rguenther@suse.de>
9892
9893         PR middle-end/36817
9894         * tree-chrec.c (chrec_apply): Always call chrec_fold_plus which
9895         makes sure to produce a result of the correct type.
9896
9897 2008-08-21  Jan Hubicka  <jh@suse.cz>
9898         Backport from LTO branch:
9899
9900         2008-05-05  Kenneth Zadeck <zadeck@naturalbridge.com>
9901                     Jan Hubicka  <jh@suse.cz>
9902
9903         * ipa-pure-const.c
9904         (init_state, finish_state, set_function_state, generate_summary):
9905         New functions.
9906         (scan_stmt): Renamed from scan_function.  Changed to keep state in
9907         local static vars rather than cgraph aux field.
9908         (propagate): Renamed from static_execute. Changed to keep state in
9909         local static vars rather than cgraph aux field.
9910         (pass_ipa_pure_const): Changed from SIMPLE_IPA_PASS to IPA_PASS.
9911         * tree-pass.h (pass_ipa_pure_const): Turn into IPA_PASS.
9912
9913         2008-07-15  Kenneth Zadeck <zadeck@naturalbridge.com>
9914
9915         * tree-pass.h (pass_ipa_reference): Make into ipa_opt_pass.
9916         * ipa-reference.c (init_function_info, generate_summary,
9917         propagate): New functions.
9918         (analyze_function):  Call init_function_info.
9919         (static_execute): Stripped into generate_summary and propagate.
9920         (pass_ipa_reference): Made into ipa_opt_pass.
9921
9922 2008-08-21  Richard Guenther  <rguenther@suse.de>
9923
9924         PR tree-optimization/37181
9925         * tree-vrp.c (extract_range_from_binary_expr): Check for NULL
9926         folding result.
9927         (extract_range_from_unary_expr): Likewise.
9928
9929 2008-08-21  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
9930
9931         * diagnostic.c (pedwarn_at): Rename as pedwarn.
9932         (pedwarn): Delete.
9933         * toplev.h (pedwarn_at): Likewise.
9934         * builtins.c: Update all calls to pedwarn.
9935         * c-lex.c: Likewise.
9936         * toplev.c: Likewise.
9937         * c-tree.h: Likewise.
9938         * c-decl.c: Likewise.
9939         * c-errors.c: Likewise.
9940         * c-typeck.c: Likewise.
9941         * c-common.c: Likewise.
9942         * c-parser.c: Likewise.
9943
9944 2008-08-20  Joseph Myers  <joseph@codesourcery.com>
9945
9946         PR target/31070
9947         * config/sparc/sparc.c (function_arg_slotno): Handle structure
9948         with MODE_VECTOR_INT mode.
9949
9950 2008-08-21  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
9951
9952         PR middle-end/179
9953         * tree-ssa.c (warn_uninit): Do not warn for variables that can be
9954         initialized outside the current module.
9955         (warn_uninitialized_var): Ignore left-hand side when walking the
9956         trees. Ignore address expressions. Examine VUSE operands in gimple
9957         statements with a variable declaration on the right-hand side.
9958
9959 2008-08-20  Richard Sandiford  <rdsandiford@googlemail.com>
9960
9961         PR bootstrap/37155
9962         * rtlanal.c (subreg_offset_representable_p): Revert last change.
9963
9964 2008-08-20  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
9965
9966         PR 35701
9967         * c-common.c (conversion_warning): Do not warn if applying bit-and
9968         operator to unsigned constant that fits in the target type.
9969
9970 2008-08-20  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
9971
9972         PR c++/35602
9973         * c-common.c (conversion_warning): Do not warn for artificial
9974         expressions.
9975
9976 2008-08-20  Richard Guenther  <rguenther@suse.de>
9977
9978         * tree-vrp.c (op_with_constant_singleton_value_range): New function.
9979         (extract_range_from_binary_expr): Fall back to constant propagation.
9980         (extract_range_from_unary_expr): Likewise.
9981
9982 2008-08-20  Richard Guenther  <rguenther@suse.de>
9983
9984         * tree-ssa-ccp.c (maybe_fold_stmt_indirect): Do not mess
9985         with TREE_THIS_VOLATILE on shared nodes.
9986         (fold_stmt_r): Likewise.
9987
9988 2008-08-20  Jakub Jelinek  <jakub@redhat.com>
9989
9990         PR c/37171
9991         * c-parser.c (c_parser_attributes): For keywords use canonical
9992         spelling for attr_name.
9993
9994 2008-08-20  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
9995
9996         * value-prof.c (check_counter): Revert wrong call to error.
9997
9998 2008-08-20  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
9999
10000         * profile.c: Update calls to inform.
10001         * value-prof.c: Update calls to inform.
10002
10003 2008-08-20  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
10004
10005         * diagnostic.c (inform): Add an explicit location_t parameter.
10006         * toplev.h (inform): Update declaration.
10007         * builtins.c: Update all calls to inform.
10008         * c-common.c: Likewise.
10009         * c-decl.c: Likewise.
10010         * c-opts.c: Likewise.
10011         * c-pch.c: Likewise.
10012         * c-pragma.c: Likewise.
10013         * c-typeck.c: Likewise.
10014         * coverage.c: Likewise.
10015         * opts.c: Likewise.
10016         * toplev.c: Likewise.
10017         * tree-cfg.c: Likewise.
10018         * tree-ssa.c: Likewise.
10019
10020 2008-08-20  H.J. Lu  <hongjiu.lu@intel.com>
10021
10022         PR target/37169
10023         * config/i386/i386.c (ix86_expand_vector_init_one_nonzero): In
10024         V2DI mode, for SSE4.1, use movq instead of vector set if the
10025         second element is zero and inter-unit moves are OK.
10026
10027 2008-08-20  Richard Guenther  <rguenther@suse.de>
10028
10029         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): More
10030         properly handle conversion/copy chains after tuplification.
10031
10032 2008-08-20  Richard Guenther  <rguenther@suse.de>
10033
10034         * passes.c (init_optimization_passes): Move the second
10035         forwprop pass before alias computation.  Remove the second
10036         DCE pass.  Remove the first dominator and phi copy/const
10037         prop passes.
10038
10039 2008-08-20  Nick Clifton  <nickc@redhat.com>
10040
10041         * configure.ac (HAVE_GAS_CFI_DIRECTIVE): Always test for assembler
10042         support of this feature.  Do not assume that a sufficiently new
10043         assembler will support the feature regardless of the target type.
10044         (HAVE_GAS_CFI_PERSONALITY_DIRECTIVE): Likewise.
10045         * configure: Regenerate.
10046
10047 2008-08-20  Richard Guenther  <rguenther@suse.de>
10048
10049         * tree-vrp.c (found_in_subgraph): Remove.
10050         (live): New global static.
10051         (live_on_edge): New function.
10052         (blocks_visited): Remove.
10053         (register_edge_assert_for_2): Use live_on_edge.
10054         (find_conditional_asserts): Remove code dealing with
10055         found_in_subgraph.  Do not walk the CFG.
10056         (find_switch_asserts): Likewise.
10057         (find_assert_locations_1): Renamed from find_assert_locations.
10058         Move finding assert locations for conditional and switch
10059         statements first.  Update live bitmap.  Do not walk the CFG.
10060         (find_assert_locations): New function.
10061         (insert_range_assertions): Remove entry of CFG walk.
10062         Adjust call to find_assert_locations.
10063         * tree-ssa-pre.c (do_regular_insertion): Ignore critical edges
10064         that only can appear because of fake exit edges but assert we
10065         never try to insert on those.
10066         (fini_pre): Do not remove fake exit edges here...
10067         (execute_pre): ...but here, before committing edge inserts.
10068
10069 2008-08-19  Richard Guenther  <rguenther@suse.de>
10070
10071         * passes.c (init_optimization_passes): Exchange store-ccp
10072         with a ccp pass.
10073
10074 2008-08-19  Rafael Espíndola  <espindola@google.com>
10075
10076         * varasm.c (weak_decls): Move earlier in the file.
10077         (assemble_external): Add weak decls to the weak_decls list.
10078         (declare_weak): Don't add decls to the weak_decls list.
10079
10080 2008-08-19  H.J. Lu  <hongjiu.lu@intel.com>
10081
10082         PR target/37157
10083         * config/i386/sse.md (sse2_punpckhqdq, sse2_punpcklqdq): Moved
10084         before (sse2_shufpd_<mode>).
10085
10086 2008-08-19  Jakub Jelinek  <jakub@redhat.com>
10087
10088         PR debug/37156
10089         * pretty-print.c (pp_base_format): Deal with recursive BLOCK trees.
10090         * tree.c (block_nonartificial_location): Likewise.
10091
10092 2008-08-19  Richard Guenther  <rguenther@suse.de>
10093
10094         PR tree-optimization/35972
10095         PR tree-optimization/23094
10096         * tree-ssa-sccvn.h (vn_reference_lookup_pieces): Add maywalk
10097         parameter.
10098         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Properly
10099         handle MISALIGNED_INDIRECT_REF.
10100         (get_ref_from_reference_ops): New helper.
10101         (vn_reference_lookup_pieces): Walk the use-def chain using the
10102         alias-oracle if requested.
10103         * tree-ssa-pre.c (phi_translate_1): Do reference lookup with
10104         walking the use-def chain.
10105         (compute_avail): But not here.
10106         (create_component_ref_by_pieces_1): Properly handle
10107         MISALIGNED_INDIRECT_REF.
10108         (do_regular_insertion): Handle fully redundant
10109         expressions after PHI-translation also for SSA_NAME values, not
10110         only constants.  Correctly use edoubleprime for that.
10111
10112 2008-08-19  Ira Rosen  <irar@il.ibm.com>
10113
10114         * tree-vectorizer.c (supportable_widening_operation): Support
10115         multi-step conversion, return the number of steps in such conversion
10116         and the required intermediate types.
10117         (supportable_narrowing_operation): Likewise.
10118         * tree-vectorizer.h (vect_pow2): New function.
10119         (supportable_widening_operation): Change argument types.
10120         (supportable_narrowing_operation): Likewise.
10121         (vectorizable_type_promotion): Add an argument.
10122         (vectorizable_type_demotion): Likewise.
10123         * tree-vect-analyze.c (vect_analyze_operations): Call
10124         vectorizable_type_promotion and vectorizable_type_demotion with
10125         additional argument.
10126         (vect_get_and_check_slp_defs): Detect patterns.
10127         (vect_build_slp_tree): Add an argument, don't fail in case of multiple
10128         types.
10129         (vect_analyze_slp_instance): Don't fail in case of multiple types.
10130         Call vect_build_slp_tree with correct arguments. Calculate unrolling
10131         factor according to the smallest type in the loop.
10132         (vect_detect_hybrid_slp_stmts): Include statements from patterns.
10133         * tree-vect-patterns.c (vect_recog_widen_mult_pattern): Call
10134         supportable_widening_operation with correct arguments.
10135         * tree-vect-transform.c (vect_get_slp_defs): Allocate output vector
10136         operands lists according to the number of vector statements in left
10137         or right node, if exists.
10138         (vect_gen_widened_results_half): Remove unused argument.
10139         (vectorizable_conversion): Call supportable_widening_operation,
10140         supportable_narrowing_operation, and vect_gen_widened_results_half
10141         with correct arguments.
10142         (vectorizable_assignment): Change documentation, support multiple
10143         types in SLP.
10144         (vectorizable_operation): Likewise.
10145         (vect_get_loop_based_defs): New function.
10146         (vect_create_vectorized_demotion_stmts): Likewise.
10147         (vectorizable_type_demotion): Support loop-aware SLP and general
10148         multi-step conversion. Call vect_get_loop_based_defs and
10149         vect_create_vectorized_demotion_stmts for transformation.
10150         (vect_create_vectorized_promotion_stmts): New function.
10151         (vectorizable_type_promotion): Support loop-aware SLP and general
10152         multi-step conversion. Call vect_create_vectorized_promotion_stmts
10153         for transformation.
10154         (vectorizable_store): Change documentation, support multiple
10155         types in SLP.
10156         (vectorizable_load): Likewise.
10157         (vect_transform_stmt): Pass SLP_NODE to
10158         vectorizable_type_promotion and vectorizable_type_demotion.
10159         (vect_schedule_slp_instance): Move here the calculation of number
10160         of vectorized statements for each node from...
10161         (vect_schedule_slp): ... here.
10162         (vect_transform_loop): Call vect_schedule_slp without the last
10163         argument.
10164
10165 2008-08-19  Dorit Nuzman  <dorit@il.ibm.com>
10166
10167         PR bootstrap/37152
10168         * tree-vect-transform.c (vect_create_epilog_for_reduction): Change =
10169         to == in assert statement.
10170         (vectorizable_reduction): Fix typo.
10171
10172 2008-08-18  H.J. Lu  <hongjiu.lu@intel.com>
10173
10174         PR bootstrap/37153
10175         * value-prof.c (check_counter): Dereference pointer to overall
10176         count when printing it.
10177
10178 2008-08-18  H.J. Lu  <hongjiu.lu@intel.com>
10179
10180         * profile.h: Really add it.
10181
10182 2008-08-18  H.J. Lu  <hongjiu.lu@intel.com>
10183
10184         * mcf.c: Really add it.
10185
10186 2008-08-18  Paul Yuan  <yingbo.com@gmail.com>
10187             Vinodha Ramasamy  <vinodha@google.com>
10188
10189         * cgraph.c (cgraph_edge): Handle inconsistent counts when setting
10190         count_scale.
10191         * value-prof.c (check_counter): Fix the counter if
10192         flag_profile_correction is true.
10193         (tree_divmod_fixed_value_transform, tree_mod_pow2_value_transform,
10194         tree_mod_subtract_transform):
10195         Follow check_counter parameter change.
10196         * common.opt (fprofile-correction): New option.
10197         * mcf.c: New file.
10198         * profile.h: Likewise.
10199         * profile.c (edge_info, EDGE_INFO): Moved to new file profile.h.
10200         (sum_edge_counts, is_edge_inconsistent, correct_negative_edge_counts,
10201         is_inconsistent, set_bb_counts, read_profile_edge_counts): New
10202         functions.
10203         (compute_branch_probabilities): Refactored. Invokes mcf_smooth_cfg if
10204         flag_profile_correction is set.
10205
10206 2008-08-18  Richard Sandiford  <rdsandiford@googlemail.com>
10207
10208         * rtlanal.c (subreg_offset_representable_p): Check HARD_REGNO_MODE_OK.
10209
10210 2008-08-18  Tomas Bily  <tbily@suse.cz>
10211
10212         * tree.h (IS_CONVERT_EXPR_CODE_P): Renamed to CONVERT_EXPR_CODE_P.
10213         * tree-ssa-threadedge.c (simplify_control_stmt_condition): Use
10214         CONVERT_EXPR_P.
10215         * tree-data-ref.c (split_constant_offset_1): Likewise.
10216         * tree-inline.c (estimate_operator_cost): Use CASE_CONVERT.
10217         * tree-sra.c (sra_walk_expr): Likewise.
10218         * matrix-reorg.c (ssa_accessed_in_assign_rhs): Likewise.
10219         * tree-ssa-loop-niter.c (expand_simple_operations): Likewise.
10220         * gimple.h (gimple_assign_cast_p): Use CONVERT_EXPR_CODE_P.
10221         * tree-ssa-structalias.c (find_func_aliases, find_func_aliases):
10222         Likewise.
10223         * gimple.c (gimple_assign_unary_nop_p): Likewise.
10224         * tree-vect-transform.c (vectorizable_type_demotion)
10225         (vectorizable_type_promotion): Likewise.
10226         * tree-inline.c (expand_call_inline):
10227         * tree-ssa-forwprop.c (get_prop_source_stmt, can_propagate_from)
10228         (forward_propagate_addr_expr_1, forward_propagate_comparison)
10229         (tree_ssa_forward_propagate_single_use_vars): Likewise.
10230         * expr.c (expand_expr_real_1): Likewise.
10231         * tree-ssa-dom.c (hashable_expr_equal_p, iterative_hash_hashable_expr)
10232         (gimple_assign_unary_useless_conversion_p): Likewise.
10233         * tree-stdarg.c (execute_optimize_stdarg): Likewise.
10234         * tree-ssa-ccp.c (ccp_fold, fold_gimple_assign): Likewise.
10235         * fold-const.c (fold_unary): Likewise.
10236         * tree.h (CONVERT_EXPR_P): Likewise.
10237         * tree.c (simple_cst_equal, iterative_hash_expr): Likewise.
10238         * tree-ssa-loop-im.c (rewrite_bittest): Likewise.
10239         * tree-vrp.c:
10240         (register_edge_assert_for_2, extract_range_from_unary_expr)
10241         (register_edge_assert_for_1): Likewise.
10242
10243 2008-08-18  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
10244
10245         * real.h (dconst_e, dconst_third, dconst_sqrt2, dconst_e_ptr,
10246         dconst_third_ptr, dconst_sqrt2_ptr): Declare.
10247         (enum real_value_const): Delete.
10248         (get_real_const): Delete.
10249         * real.c (get_real_const): Delete.
10250         (dconst_e_ptr): Define.
10251         (dconst_third_ptr): Define.
10252         (dconst_sqrt2_ptr): Define.
10253         * builtins.c: Update all callers.
10254
10255 2008-08-18  Richard Guenther  <rguenther@suse.de>
10256
10257         * tree-ssa-reassoc.c (reassociate_bb): Properly reset the
10258         statement iterator after statement removal.
10259
10260 2008-08-18  Andreas Tobler  <a.tobler@schweiz.org>
10261
10262         * config/rs6000/driver-rs6000.c (detect_caches_freebsd): New function.
10263         (detect_processor_freebsd): Likewise.
10264         (host_detect_local_cpu): Call newly added functions for FreeBSD.
10265
10266 2008-08-18  Richard Guenther  <rguenther@suse.de>
10267
10268         * tree-cfg.c (verify_types_in_gimple_assign): Verify copies
10269         and loads have the correct types.
10270
10271 2008-08-18  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
10272
10273         PR cpp/7263
10274         * c-opts.c (cpp_opts): Remove static.
10275         * c-parser.c (cpp_opts): Declare it extern.
10276         (disable_extension_diagnostics): Handle cpp options.
10277         (enable_extension_diagnostics): Likewise.
10278
10279 2008-08-18  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
10280
10281         * diagnostics.c (permerror_at): Rename as permerror.
10282         (permerror): Delete.
10283         * toplev.h: Likewise.
10284
10285 2008-08-18  Richard Guenther  <rguenther@suse.de>
10286
10287         * passes.c (init_optimization_passes): Remove cleanup_cfg1,
10288         sdse1 and addressables2 passes.  Replace dce1 with cddce1.
10289         Move call_cdce before build_alias.  Move copyrename2,
10290         cunrolli and ccp2 beafore build_alias.  Re-add addressable2
10291         right after final inlining.
10292         * tree-cfg.c (build_gimple_cfg): Do not dump function here.
10293         (pass_build_cfg): But instead via TODO_dump_func.
10294
10295 2008-08-18  Richard Guenther  <rguenther@suse.de>
10296
10297         * tree-sra.c (generate_element_init_1): Deal with NULL constructor
10298         element index.
10299         (scalarize_init): If we failed to generate some initializers
10300         do not generate zeros for not instantiated members.  Instead
10301         rely on the copy out.
10302         * tree-ssa-operands.c (get_addr_dereference_operands): Warn
10303         about missing flow-sensitive alias info only if we have
10304         aliases computed.
10305
10306 2008-08-17  Nick Clifton  <nickc@redhat.com>
10307
10308         * doc/extend.texi (Function Attributes): Fix typo in description
10309         if hot function attribute.
10310
10311 2008-08-17  Daniel Jacobowitz  <dan@codesourcery.com>
10312             Richard Sandiford  <rdsandiford@googlemail.com>
10313
10314         * doc/install.texi (--with-mips-plt): Document.
10315         * doc/invoke.texi (-mplt, -mno-plt): Document.
10316         * config.gcc (mips*-*-*): Add mips-plt to supported_defaults
10317         and handle ${with_mips_plt}.
10318         * config/mips/mips.opt (mplt): New option.
10319         * config/mips/mips.h (TARGET_ABICALLS_PIC0): New macro.
10320         (TARGET_ABICALLS_PIC2): Likewise.
10321         (TARGET_GPWORD): Return false for TARGET_ABSOLUTE_ABICALLS.
10322         (OPTION_DEFAULT_SPECS): Add a mips-plt entry.
10323         (ASM_SPEC): Use !mabi=* instead of !mabi*.
10324         (MIPS_CALL): Use TARGET_ABICALLS_PIC2 instead of TARGET_ABICALLS
10325         to decide whether to output ".option picX" directives.
10326         * config/mips/linux.h (SUBTARGET_ASM_SPEC): Remove -mabi=64 handling.
10327         Pass -call_nonpic rather than -KPIC for -mplt.
10328         (BASE_DRIVER_SELF_SPECS): Remove -mplt if -mno-shared is not present
10329         on the command line.  Also remove it when -mabi=64 is used without
10330         -msym32.
10331         * config/mips/linux64.h (SUBTARGET_ASM_SPEC): Delete.
10332         * config/mips/mips.c (mips_use_pic_fn_addr_reg_p): Handle
10333         TARGET_ABICALLS_PIC0.
10334         (mips_classify_symbol): Use TARGET_ABICALLS_PIC2 instead of
10335         TARGET_ABICALLS.
10336         (mips16_build_function_stub): Only output ".option pic" directives
10337         and PIC stubs if TARGET_ABICALLS_PIC2.  Call through $25 instead of $1.
10338         (mips16_build_call_stub): Fix comment and remove redundant
10339         ".set at"/"set .noat" directives.
10340         (mips_function_rodata_section): Use the default behaviour for
10341         TARGET_ABSOLUTE_ABICALLS.
10342         (mips_file_start): Emit ".option pic0" for TARGET_ABICALLS_PIC0.
10343         (mips_global_pointer): Handle TARGET_ABICALLS_PIC0.
10344         (mips_restore_gp): Do nothing if the current function doesn't use
10345         a global pointer.
10346         (mips_expand_prologue): Only save $gp if the current function uses it.
10347         Use a normal move for TARGET_ABICALLS_PIC0.
10348         (mips_override_options): Only set flag_pic if TARGET_ABICALLS_PIC2.
10349
10350 2008-08-17  Richard Sandiford  <rdsandiford@googlemail.com>
10351
10352         * config/mips/mips.c (mips_save_reg_p): Don't short-circuit rest
10353         of function when handling GLOBAL_POINTER_REGNUM.
10354
10355 2008-08-16  Eric Botcazou  <ebotcazou@adacore.com>
10356
10357         PR ada/20548
10358         * common.opt (-fstack-check): Do not declare the variable here.
10359         (-fstack-check=): New option variant.
10360         * doc/invoke.texi (Code Gen Options): Document it.
10361         * expr.h (STACK_OLD_CHECK_PROTECT): New macro.
10362         (STACK_CHECK_PROTECT): Bump to 3 pages if DWARF-2 EH is used.
10363         (STACK_CHECK_STATIC_BUILTIN): New macro.
10364         * doc/tm.texi (Stack Checking): Document STACK_CHECK_STATIC_BUILTIN.
10365         * opts.c: Include expr.h.
10366         (common_handle_option) <OPT_fold_stack_check_>: New case.
10367         <OPT_fstack_check>: Likewise.
10368         * calls.c (initialize_argument_information): Use TYPE_SIZE_UNIT
10369         consistently in the test for variable-sized types.  Adjust for
10370         new behaviour of flag_stack_check.
10371         * explow.c: Include except.h.
10372         (allocate_dynamic_stack_space): Do not take into account
10373         STACK_CHECK_MAX_FRAME_SIZE for static builtin stack checking.
10374         * function.c (gimplify_parameters): Use DECL_SIZE_UNIT in the test
10375         for variable-sized parameters.  Treat all parameters whose size is
10376         greater than STACK_CHECK_MAX_VAR_SIZE as variable-sized if generic
10377         stack checking is enabled.
10378         * gimplify.c (gimplify_decl_expr): Treat non-static objects whose
10379         size is greater than STACK_CHECK_MAX_VAR_SIZE as variable-sized
10380         if generic stack checking is enabled.
10381         (expand_function_end): Adjust for new behaviour of flag_stack_check.
10382         * reload1.c (reload): Likewise.
10383         * stmt.c (expand_decl): Assert that all automatic variables have
10384         fixed size at this point and remove dead code.
10385         * flags.h (stack_check_type): New enumeration type.
10386         (flag_stack_check): Declare.
10387         * toplev.c (flag_stack_check): New global variable.
10388         * Makefile.in (opts.o): Add dependency on EXPR_H.
10389         (explow.o): Add dependency on except.h.
10390
10391 2008-08-16  Andy Hutchinson  <hutchinsonandy@aim.com>
10392
10393         * config/avr/avr.c (avr_override_options): Reduce value of
10394         PARAM_INLINE_CALL_COST.
10395
10396 2008-08-15  Eric Botcazou  <ebotcazou@adacore.com>
10397
10398         * expr.c (expand_expr_real_1) <VIEW_CONVERT_EXPR>: When converting
10399         to BLKmode, try to fetch an inner memory reference.  Use 'mode' in
10400         lieu of TYPE_MODE (type) throughout.
10401
10402 2008-08-15  Joseph Myers  <joseph@codesourcery.com>
10403
10404         * config/arm/arm.c (add_minipool_backward_ref): Check for
10405         8-byte-aligned entries in second case of forcing insertion after a
10406         particular entry.  Change third case to avoid inserting
10407         non-8-byte-aligned entries before 8-byte-aligned ones.
10408
10409 2008-08-15  Richard Guenther  <rguenther@suse.de>
10410
10411         * tree-ssa-ccp.c (maybe_fold_offset_to_reference): Do not
10412         strip components for unknown size accesses.
10413
10414 2008-08-15  Wolfgang Gellerich  <gellerich@de.ibm.com>
10415
10416         * config/s390/2097.md New file.
10417         * config/s390/s390.md ("z10prop" attribute): Define none,
10418         z10_super, z10_super_E1, z10_super_A1, z10_super_c,
10419         z10_super_c_E1, z10_fwd, z10_fwd_A1, z10_fwd_A3, z10_fwd_E1,
10420         z10_rec, z10_fr, z10_fr_A3, z10_fr_E1, z10_c, and z10_cobra as
10421         possible values and apply them to insns as appropriate.
10422         ("type" attribute): Removed itof and added ftrunctf,ftruncdf,
10423         ftruncsd, ftruncdd, itoftf, itofdf, itofsf, itofdd, itoftd,
10424         fdivdd, fdivtd, floaddd, floadsd, fmuldd, fmultd, fsimpdd,
10425         fsimpsd, fsimptd, fstoredd, fstoresd, ftoidfp as possible values.
10426         ("bfp" mode attribute): Removed.  Every occurence replaced
10427         with <mode>.
10428         * config/s390/s390.c (struct "z10_cost"): Updated entries.
10429         * config/s390/2084.md (insn_reservation "x_itof"): Updated
10430         type attribute.
10431
10432 2008-08-14  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
10433
10434         PR c/28152
10435         * c-parser.c (c_lex_one_token): Do not store the canonical spelling
10436         for keywords.
10437
10438 2008-08-14  Dorit Nuzman  <dorit@il.ibm.com>
10439
10440         * tree-vect-transform.c (vect_create_epilog_for_reduction): Takes an
10441         additional argument. Support reduction when duplication is needed due
10442         to data-types of different sizes in the loop.
10443         (get_initial_def_for_induction): Fix printout.
10444         (vect_get_vec_def_for_stmt_copy): Support case where the
10445         vec_stmt_for_operand is a phi node.
10446         (vectorizable_reduction): Support reduction when duplication is needed
10447         due to data-types of different sizes in the loop.
10448         (vectorizable_call): Remove restriction to not vectorize in case we
10449         have data-types of different sizes in the loop.
10450         (vectorizable_conversion): Likewise.
10451         (vectorizable_operation): Likewise.
10452         (vectorizable_type_demotion): Likewise.
10453         (vectorizable_type_promotion): Likewise.
10454         (vectorizable_induction): Add restriction to not vectorize in case
10455         we have data-types of different sizes in the loop.
10456
10457 2008-08-14  Christophe Saout  <christophe@saout.de>
10458             Uros Bizjak  <ubizjak@gmail.com>
10459
10460         PR target/37101
10461         * config/i386/sse.md (vec_concatv2di): Remove movlps alternative.
10462         (*vec_concatv2di_rex64_sse4_1): Ditto.
10463         (*vec_concatv2di_rex64_sse): Ditto.
10464
10465 2008-08-14  Jakub Jelinek  <jakub@redhat.com>
10466
10467         PR middle-end/37103
10468         * fold-const.c (fold_widened_comparison): Do not allow
10469         sign changes that change the result even if shorter type
10470         is wider than arg1_unw's type.
10471
10472 2008-08-13  Kazu Hirata  <kazu@codesourcery.com>
10473
10474         * gcc.dg/arm-g2.c, gcc.dg/arm-mmx-1.c, gcc.dg/arm-scd42-2.c:
10475         Skip if the multilib testing specifies -march that does not
10476         agree with the one specified in the testcase.
10477
10478 2008-08-13  Joseph Myers  <joseph@codesourcery.com>
10479
10480         * config/sparc/sparc.c (emit_soft_tfmode_cvt): Explicitly sign or
10481         zero extend SImode values being converted to TFmode before passing
10482         to libcalls.
10483
10484 2008-08-13  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
10485
10486         * config/rs6000/rs6000-c.c (rs6000_cpu_cpp_builtins): Predefine
10487         __PPU__ when targeting the Cell/B.E. PPU processor.
10488
10489 2008-08-13  Eric Botcazou  <ebotcazou@adacore.com>
10490
10491         * gimple.h (gimple_call_set_chain): Accept SSA variables.
10492         * tree-ssa-pre.c (create_component_ref_by_pieces_1) <CALL_EXPR>:
10493         Rematerialize the static chain, if any.
10494         * tree-ssa-sccvn.c (copy_reference_ops_from_call): Also copy the
10495         static chain.
10496
10497 2008-08-13  H.J. Lu  <hongjiu.lu@intel.com>
10498
10499         * dwarf2out.c (dwarf_stack_op_name): Remove prototype.
10500         (new_loc_descr): Likewise.
10501         (add_loc_descr): Likewise.
10502         (size_of_loc_descr): Likewise.
10503         (size_of_locs): Likewise.
10504         (output_loc_operands): Likewise.
10505         (output_loc_sequence): Likewise.
10506         (new_reg_loc_descr): New.
10507         (build_cfa_loc): Use it.
10508         (build_cfa_aligned_loc): Likewise.
10509         (one_reg_loc_descriptor): Likewise.
10510         (based_loc_descr): Likewise.
10511
10512 2008-08-13  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
10513
10514         PR 30551
10515         * doc/invoke.texi (Wmain): Update.
10516         * c-decl.c (start_decl): warn_main is only 0 or 1.
10517         (start_function): Likewise. Fix formatting.
10518         (finish_function): Delete redundant warning.
10519         * c.opt (Wmain): Add Var(warn_main) and Init(-1).
10520         * c-opts (c_common_handle_option): -Wall only has effect if
10521         warn_main is uninitialized. OPT_Wmain is automatically
10522         handled. -pedantic also enables Wmain.
10523         (c_common_post_options): Handle all logic for Wmain here.
10524         * c-common.c (warn_main): Delete.
10525         (check_main_parameter_types): Make pedwarns conditional on OPT_Wmain.
10526         * c-common.h (warn_main): Delete.
10527
10528 2008-08-13  H.J. Lu  <hongjiu.lu@intel.com>
10529
10530         PR middle-end/36701
10531         * expr.c (emit_group_store): Allocate stack temp with the
10532         largest alignment when copying from register to stack.
10533
10534 2008-08-13  Richard Guenther  <rguenther@suse.de>
10535
10536         * tree.h (maybe_fold_offset_to_address): Declare.
10537         * tree-ssa-ccp.c (surely_varying_stmt_p): Fix typo in last commit.
10538         (ccp_fold): Handle pointer conversions the same as fold_stmt.
10539         Likewise for POINTER_PLUS_EXPR.
10540         (maybe_fold_offset_to_reference): Enable disabled code.
10541         (maybe_fold_offset_to_address): New function.
10542         (fold_stmt_r): Use it.
10543         (fold_gimple_assign): Likewise.
10544         * gimplify.c (gimplify_conversion): Use maybe_fold_offset_to_address.
10545         (gimplify_expr): Likewise.
10546
10547 2008-08-13  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
10548
10549         * toplev.h (pedwarn_at): Fix declaration.
10550
10551 2008-08-13  Joseph Myers  <joseph@codesourcery.com>
10552
10553         * config/sparc/linux64.h (LINK_ARCH32_SPEC, LINK_ARCH64_SPEC,
10554         LINK_SPEC): Use %R in -Y P argument.
10555
10556 2008-08-13  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
10557
10558         PR c/15236
10559         * diagnostic.c (pedwarn_at): New.
10560         * toplev.h (pedwarn_at): Declare.
10561         * c-tree.h (build_enumerator): Update declaration.
10562         * c-decl.c (finish_enum): Update comment.
10563         (build_enumerator): Take a location parameter. Give a pedwarn but do
10564         not perform any conversion.
10565         * c-parser.c (c_parser_enum_specifier): Set correct location for
10566         enumerator.
10567
10568 2008-08-13  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
10569
10570         PR 35635
10571         * c-common.c (conversion_warning): Use a switch. Ignore boolean
10572         expressions except for conversions to signed:1 bitfields. Handle
10573         COND_EXPR with constant operands.
10574
10575 2008-08-13  Richard Guenther  <rguenther@suse.de>
10576
10577         PR tree-optimization/15255
10578         * tree-ssa-reassoc.c (linearize_expr_tree): Declare.
10579         (struct oecount_s): New struct and VEC types.
10580         (cvec): New global.
10581         (oecount_hash): New function.
10582         (oecount_eq): Likewise.
10583         (oecount_cmp): Likewise.
10584         (zero_one_operation): New function.
10585         (build_and_add_sum): Likewise.
10586         (undistribute_ops_list): Perform un-distribution of multiplication
10587         and division on the chain of summands.
10588         (should_break_up_subtract): Also break up subtracts for factors.
10589         (reassociate_bb): Delete dead visited statements.
10590         Call undistribute_ops_list.  Re-sort and optimize if it did something.
10591         * passes.c (init_optimization_passes): Move DSE before
10592         reassociation.
10593         * tree-ssa-loop-niter.c (stmt_dominates_stmt_p): Correctly handle
10594         PHI nodes.
10595
10596 2008-08-12  Janis Johnson  <janis187@us.ibm.com>
10597
10598         * doc/invoke.texi (-fipa-pta): Say the option is experimental.
10599
10600         * doc/invoke.texi: Revert unintended checkin.
10601
10602 2008-08-12  Nathan Froyd  <froydnj@codesourcery.com>
10603
10604         PR libgomp/26165
10605         * gcc.c (include_spec_function): Tweak call to find_a_file.
10606
10607 2008-08-12  Jakub Jelinek  <jakub@redhat.com>
10608
10609         PR middle-end/37014
10610         * expr.c (expand_expr_real_1): Handle TRUTH_ANDIF_EXPR
10611         and TRUTH_ORIF_EXPR.
10612         * dojump.c (do_jump): Likewise.
10613
10614         PR tree-optimization/37084
10615         * tree-inline.c (copy_bb): Call gimple_regimplify_operands
10616         if id->regimplify, don't assume stmt is a cast assignment.
10617
10618 2008-08-12  Anatoly Sokolov  <aesok@post.ru>
10619
10620         * final.c (final_scan_insn): Use app_enable/app_disable functions.
10621
10622 2008-08-12  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
10623
10624         PR bootstrap/37097
10625         * builtins.c (do_mpfr_bessel_n): Fix copy-and-paste bug introduced
10626         by last change.
10627
10628 2008-08-12  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
10629
10630         * defaults.h (TARGET_FLOAT_FORMAT): Remove.
10631         (UNKNOWN_FLOAT_FORMAT, IEEE_FLOAT_FORMAT, VAX_FLOAT_FORMAT): Remove.
10632
10633         * config/alpha/alpha.h (TARGET_FLOAT_FORMAT): Remove.
10634         * config/iq2000/iq2000.h (TARGET_FLOAT_FORMAT): Remove.
10635         * config/pdp11/pdp11.h (TARGET_FLOAT_FORMAT): Remove.
10636         * config/score/score.h (TARGET_FLOAT_FORMAT): Remove.
10637         * config/vax/vax.h (TARGET_FLOAT_FORMAT): Remove.
10638
10639         * doc/tm.texi (Storage Layout): Remove documentation for
10640         TARGET_FLOAT_FORMAT.
10641
10642         * simplify-rtx.c (simplify_binary_operation_1): Replace
10643         TARGET_FLOAT_FORMAT check by appropriate HONOR_... checks.
10644
10645 2008-08-12  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
10646
10647         * real.h (struct real_format): New member has_sign_dependent_rounding.
10648         * real.c (ieee_single_format, mips_single_format, motorola_single_format,
10649         spu_single_format, ieee_double_format, mips_double_format,
10650         motorola_double_format, ieee_extended_motorola_format,
10651         ieee_extended_intel_96_format, ieee_extended_intel_128_format,
10652         ieee_extended_intel_96_round_53_format, ibm_extended_format,
10653         mips_extended_format, ieee_quad_format, mips_quad_format,
10654         vax_f_format, vax_d_format, vax_g_format): Initialize it.
10655         * config/pdp11/pdp11.c (pdp11_f_format, pdp11_d_format): Likewise.
10656
10657         * defaults.h (MODE_HAS_NANS, MODE_HAS_INFINITIES,
10658         MODE_HAS_SIGNED_ZEROS, MODE_HAS_SIGN_DEPENDENT_ROUNDING): Remove.
10659         * config/spu/spu.h (MODE_HAS_NANS, MODE_HAS_INFINITIES,
10660         MODE_HAS_SIGN_DEPENDENT_ROUNDING): Remove.
10661         (ROUND_TOWARDS_ZERO): Likewise.
10662
10663         * real.h (REAL_MODE_FORMAT): Protect MODE against macro expansion.
10664         (FLOAT_MODE_FORMAT): New macro.
10665         (REAL_MODE_FORMAT_COMPOSITE_P): Remove, replace by ...
10666         (MODE_COMPOSITE_P): ... this new macro.
10667         (MODE_HAS_NANS, MODE_HAS_INFINITIES, MODE_HAS_SIGNED_ZEROS,
10668         MODE_HAS_SIGN_DEPENDENT_ROUNDING): New macros.
10669         * machmode.h (GET_MODE_INNER): Cast result to enum machine_mode.
10670
10671         * flags.h: Include "real.h".
10672
10673         * fold-const.c (const_binop): Use MODE_COMPOSITE_P instead of
10674         REAL_MODE_FORMAT_COMPOSITE_P.
10675         * simplify-rtx.c (simplify_const_binary_operation): Likewise.
10676
10677         * doc/tm.texi (Storage Layout): Remove documentation of
10678         MODE_HAS_NANS, MODE_HAS_INFINITIES, MODE_HAS_SIGNED_ZEROS,
10679         MODE_HAS_SIGN_DEPENDENT_ROUNDING.  Update documentation of
10680         ROUND_TOWARDS_ZERO and LARGEST_EXPONENT_IS_NORMAL to clarify
10681         they only apply to libgcc2.a.
10682
10683 2008-08-12  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
10684
10685         * config/spu/float_disf.c: New file.
10686         * config/spu/float_unsdisf.c: New file.
10687         * config/spu/t-elf (LIB2FUNCS_STATIC_EXTRA): Add them.
10688         (LIB2FUNCS_EXCLUDE): Define.
10689
10690 2008-08-12  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
10691             Trevor Smigiel  <trevor_smigiel@playstation.sony.com>
10692
10693         * real.h (struct real_format): New member round_towards_zero.
10694         * real.c (round_for_format): Respect fmt->round_towards_zero.
10695         (ieee_single_format, mips_single_format, motorola_single_format,
10696         spu_single_format, ieee_double_format, mips_double_format,
10697         motorola_double_format, ieee_extended_motorola_format,
10698         ieee_extended_intel_96_format, ieee_extended_intel_128_format,
10699         ieee_extended_intel_96_round_53_format, ibm_extended_format,
10700         mips_extended_format, ieee_quad_format, mips_quad_format,
10701         vax_f_format, vax_d_format, vax_g_format): Initialize it.
10702         * config/pdp11/pdp11.c (pdp11_f_format, pdp11_d_format): Likewise.
10703
10704         * builtins.s (do_mpfr_arg1): Consider round_towards_zero member of
10705         real_format to choose rounding mode when calling MPFR functions.
10706         (do_mpfr_arg2, do_mpfr_arg3, do_mpfr_sincos): Likewise.
10707         (do_mpfr_bessel_n, do_mpfr_remquo, do_mpfr_lgamma_r): Likewise.
10708
10709         * real.h (real_to_decimal_for_mode): Add prototype.
10710         * real.c (real_to_decimal_for_mode): Renames old real_to_decimal.
10711         Respect target rounding mode when generating decimal representation.
10712         (real_to_decimal): New stub for backwards compatibility.
10713         * c-cppbuiltin.c (builtin_define_with_hex_fp_value): Use
10714         real_to_decimal_for_mode instead of real_to_decimal.
10715
10716         * config/spu/spu.md ("floatdisf2", "floatunsdisf2"): New.
10717
10718 2008-08-12  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
10719             Trevor Smigiel  <trevor_smigiel@playstation.sony.com>
10720
10721         * real.c (spu_single_format): New variable.
10722         * real.h (spu_single_format): Declare.
10723
10724         * config/spu/spu.c (spu_override_options): Install SFmode format.
10725         (spu_split_immediate): Use integer mode to operate on pieces of
10726         floating-point values in all cases.
10727
10728         * config/spu/spu.md (UNSPEC_FLOAT_EXTEND, UNSPEC_FLOAT_TRUNCATE): New.
10729         ("extendsfdf2"): Use UNSPEC_FLOAT_EXTEND instead of FLOAT_EXTEND.
10730         ("truncdfsf2"): Use UNSPEC_FLOAT_TRUNCATE instead of FLOAT_TRUNCATE.
10731
10732 2008-08-12  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
10733
10734         * config/spu/spu.c (spu_safe_dma): Respect TARGET_SAFE_DMA.
10735
10736 2008-08-12  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
10737
10738         * config/spu/spu.h (DWARF_FRAME_RETURN_COLUMN): Define.
10739
10740 2008-08-12  Jakub Jelinek  <jakub@redhat.com>
10741
10742         PR c++/36688
10743         * gimplify.c (gimplify_modify_expr_rhs): Test TREE_READONLY
10744         on the VAR_DECL instead of TYPE_READONLY on its type.
10745
10746 2008-08-12  Ira Rosen  <irar@il.ibm.com>
10747
10748         * tree-vectorizer.c: Depend on langhooks.h.
10749         (supportable_widening_operation): Add two arguments. Support double
10750         type conversions.
10751         (supportable_narrowing_operation): Likewise.
10752         * tree-vectorizer.h (supportable_widening_operation): Add two
10753         arguments.
10754         (supportable_narrowing_operation): Likewise.
10755         * tree-vect-patterns.c (vect_recog_widen_mult_pattern) : Call
10756         supportable_widening_operation with correct arguments.
10757         * tree-vect-transform.c (vectorizable_conversion): Likewise.
10758         (vectorizable_type_demotion): Support double type conversions.
10759         (vectorizable_type_promotion): Likewise.
10760         * Makefile.in (tree-vectorizer.o): Depend on langhooks.h.
10761
10762 2008-08-11  Michael Matz  <matz@suse.de>
10763
10764         * i386/i386.c (override_options): Move initialisation from
10765         flag_schedule_insns_after_reload to here from ...
10766         (optimization_options): ... here.
10767
10768 2008-08-11  Jakub Jelinek  <jakub@redhat.com>
10769
10770         PR rtl-optimization/36998
10771         * dwarf2out.c (compute_barrier_args_size_1,
10772         compute_barrier_args_size): Temporarily remove assertions.
10773
10774 2008-08-10  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
10775
10776         PR middle-end/20644
10777         * tree-ssa.c (struct walk_data): Add new flag
10778         warn_possibly_uninitialized.
10779         (warn_uninitialized_var): Use it.
10780         (warn_uninitialized_vars): New.
10781         (execute_early_warn_uninitialized): Call it.
10782         (execute_late_warn_uninitialized): Likewise.
10783
10784 2008-08-09  Andrew Pinski  <andrew_pinski@playstation.sony.com>
10785
10786         PR middle-end/36238
10787         * reload1.c (gen_reload): Guard calls to get_secondary_mem
10788         for memory subregs.
10789
10790 2008-08-09  Jan Hubicka  <jh@suse.cz>
10791
10792         PR target/37055
10793         * optabs.c (maybe_emit_unop_insn): Remove produced code if
10794         expansion failed.
10795         (expand_fix): Be prepared for expansion to fail.
10796         (expand_sfix_optab): Remove instructions if expansion failed.
10797
10798 2008-08-09  Anatoly Sokolov  <aesok@post.ru>
10799
10800         * config/avr/avr.c (avr_mcu_types): Move the AT43USB320 device to
10801         avr31 architecture.
10802         * config/avr/avr.h (CRT_BINUTILS_SPECS): (Ditto.).
10803         * config/avr/t-avr (MULTILIB_MATCHES): (Ditto.).
10804
10805 2008-08-09  Richard Sandiford  <rdsandiford@googlemail.com>
10806
10807         * config.gcc (mips*-*-linux*, mips64*-*-linux*): Add
10808         mips/t-libgcc-mips16 to tmake_file.
10809         * config/mips/mips-protos.h (mips_call_type): New enum.
10810         (mips_pic_base_register, mips_got_load): Declare.
10811         (mips_restore_gp): Take an rtx argument.
10812         (mips_use_pic_fn_addr_reg_p): Declare.
10813         (mips_expand_call): Replace the sibcall_p argument with
10814         a mips_call_type argument.  Add a lazy_p parameter.
10815         (mips_split_call): Declare.
10816         * config/mips/mips.h (MIPS16_PIC_TEMP_REGNUM): New macro.
10817         (MIPS16_PIC_TEMP): Likewise.
10818         (reg_class): Delete M16_NA_REGS.
10819         (REG_CLASS_NAMES, REG_CLASS_CONTENTS): Update accordingly.
10820         (SYMBOL_FLAG_BIND_NOW, SYMBOL_REF_BIND_NOW_P): New macros.
10821         (mips_split_hi_p): Declare.
10822         * config/mips/mips.c (mips_split_hi_p): New array.
10823         (mips_regno_to_class): Change M16_NA_REGS entries to M16_REGS.
10824         (mips_got_symbol_type_p): New function.
10825         (mips_global_symbol_p): Check SYMBOL_REF_EXTERNAL_P.
10826         (mips16_stub_function_p): New function.
10827         (mips16_local_function_p): Likewise.
10828         (mips_use_pic_fn_addr_reg_p): Likewise.
10829         (mips_cannot_force_const_mem): Return false for HIGHs.
10830         Extend CONST_INT and symbolic handling to MIPS16, using
10831         mips_symbol_insns to check that the base symbol type is a
10832         legitimate constant.  Reject GOT-based constants if
10833         TARGET_MIPS16_PCREL_LOADS.
10834         (mips_const_insns): Check targetm.cannot_force_const_mem when
10835         decomposing a symbolic base and a large offset.
10836         (mips_emit_call_insn): Add ORIG_ADDR and ADDR parameters.
10837         When calling a function that needs $25 from MIPS16 code,
10838         move the target address into $25 separately and add a USE
10839         to the call insn.
10840         (mips16_gp_pseudo_reg): Insert the initializer immediately
10841         before the first real insn.
10842         (mips_pic_base_register, mips_got_load): New functions.
10843         (mips_split_symbol): Generalize the name of the LO_SUM_OUT
10844         parameter to LOW_OUT.  Say that it can be any valid SET_SRC
10845         when splitting a load-address operation.  Split SYMBOL_GOT_DISP
10846         constants and highs of SYMBOL_GOT_PAGE_OFST constants.
10847         (mips_call_tls_get_addr): Update the call to mips_expand_call,
10848         also passing NULL_RTX rather than const0_rtx as the aux argument.
10849         (mips_rewrite_small_data_p): Check mips_lo_relocs and mips_split_p
10850         instead of TARGET_EXPLICIT_RELOCS.
10851         (mips_ok_for_lazy_binding_p): Check SYMBOL_REF_BIND_NOW_P.
10852         (mips_load_call_address): Replace the sibcall_p argument with
10853         a mips_call_type argument.  Use mips_got_load.
10854         (mips16_local_alias): New structure.
10855         (mips16_local_aliases): New variable.
10856         (mips16_local_aliases_hash): New function.
10857         (mips16_local_aliases_eq): Likewise.
10858         (mips16_local_alias): Likewise.
10859         (mips16_stub_function): Likewise.
10860         (mips16_build_function_stub): Create a local alias for the target
10861         function.  Handle TARGET_ABICALLS.  For PIC abicalls, emit a
10862         .cpload directive and an R_MIPS_NONE relocation for the target
10863         function, then load the alias rather than the function itself.
10864         Wrap the non-PIC abicalls version in ".option pic0/.option pic2".
10865         (mips16_copy_fpr_return_value): Use mips16_stub_function and
10866         mips_expand_call.  Set SYMBOL_REF_BIND_NOW on the symbol.
10867         (mips16_build_call_stub): Replace the FN parameter with an
10868         FN_PTR parameter.  Force the address into a register if it
10869         isn't a call_insn_operand; don't rely on the caller to do this.
10870         If a call to a locally-defined and locally-binding MIPS16
10871         function must be made indirectly, redirect the call to the
10872         function's local alias.  Use mips16_stub_function_p,
10873         mips16_stub_function, mips_expand_call and use_reg.
10874         Set SYMBOL_FLAG_BIND_NOW on __mips_call_* symbols.
10875         Use explicit %hi and %lo accesses where possible.
10876         Use MIPS_CALL to generate the correct code form of a
10877         jal instruction.  Add clobbers of $18 instead of uses.
10878         Update the call to mips_emit_call_insn.
10879         (mips_expand_call): Replace the SIBCALL_P argument with a
10880         mips_call_type argument and handle the new MIPS_CALL_EPILOGUE value.
10881         Take a LAZY_P parameter.  Call mips16_build_call_stub first,
10882         allowing it to modify the call address.  Update the calls to
10883         mips_load_call_address and mips_emit_call_insn.
10884         (mips_split_call): New function.
10885         (mips_init_relocs): Clear mips_split_hi_p.  Only use %gp_rel if
10886         !TARGET_MIPS16.  Split SYMBOL_GOT_DISP, and the high parts of
10887         SYMBOL_GOT_PAGE_OFST, for MIPS16 code.
10888         (mips_global_pointer): Check mips16_cfun_returns_in_fpr_p.
10889         (mips_extra_live_on_entry): Include MIPS16_PIC_TEMP_REGNUM
10890         if TARGET_MIPS16.
10891         (mips_cprestore_slot): New function.
10892         (mips_restore_gp): Take a TEMP parameter.  Handle TARGET_MIPS16
10893         and use mips_cprestore_slot.
10894         (mips_output_function_prologue): Handle TARGET_MIPS16 for
10895         LOADGP_OLDABI.
10896         (mips_emit_loadgp): Move into MIPS16_PIC_TEMP for MIPS16,
10897         then use a copygp_mips16 instruction to set up $28.
10898         (mips_expand_prologue): Initialize the cprestore slot for MIPS16 too.
10899         (mips16_lay_out_constants): Call split_all_insns_noflow.
10900         (mips_reorg_process_insns): Explicitly set all_noreorder_p to
10901         false if TARGET_MIPS16.
10902         (mips_reorg): Don't call vr4130_align_insns if TARGET_MIPS16.
10903         (mips_output_mi_thunk): Use mips_got_symbol_type_p.  Use the
10904         mips_dangerous_for_la25_p approach for MIPS16 PIC calls too.
10905         (mips_set_mips16_mode): Always set MASK_EXPLICIT_RELOCS for
10906         MIPS16 code.  Allow MIPS16 o32 PIC.
10907         (mips_override_options): Allow MIPS16 o32 PIC.
10908         * config/mips/mips.md: Lower CONST_GP_P moves into register moves
10909         after reload if TARGET_USE_GOT.
10910         (UNSPEC_COPYGP): New constant.
10911         (length): Use a default length of 8 for MIPS16 GOT loads.
10912         (*got_disp<mode>): Check mips_split_p instead of TARGET_XGOT.
10913         (*got_page<mode>): Check mips_split_hi_p.
10914         (*got_disp<mode>, *got_page<mode>): Use mips_got_load.
10915         (unspec_got<mode>, unspec_call<mode>): New expanders.
10916         (load_got<mode>, load_call<mode>): Remove the length attributes.
10917         Use a got attribute instead of a type attribute.
10918         (copygp_mips16): New insn.
10919         (restore_gp): Add a scratch clobber and pass it to mips_restore_gp.
10920         (load_call<mode>): Use a "d" constraint instead of an "r" constraint.
10921         (sibcall, sibcall_value, call, call_value): Update the calls
10922         to mips_expand_call.
10923         (call_internal, call_value_internal): Use mips_split_call.
10924         (call_value_multiple_internal): Likewise.
10925         (call_split): Move after call_internal (the insn it is split from).
10926         (call_internal_direct, call_value_internal_direct): Turn into
10927         define_insn_and_splits.  Split if TARGET_SPLIT_CALLS.
10928         (call_direct_split, call_value_direct_split): New patterns.
10929         * config/mips/constraints.md (c): Handle TARGET_MIPS16 first
10930         and use M16_REGS instead of M16_NA_REGS.
10931         * config/mips/predicates.md (const_call_insn_operand): Replace
10932         the TARGET_ABSOLUTE_ABICALLS-based check with a more general
10933         mips_use_pic_fn_addr_reg_p check.
10934         (move_operand): Reject HIGHs if mips_split_hi_p.
10935         * config/mips/mips16.S: Assembly as empty if the ABI is not suitable.
10936         (__mips16_floatunsisf): Inline __mips16_floatsisf.
10937         (CALL_STUB_NO_RET, CALL_STUB_REG): Copy the target register to $25.
10938         * config/mips/libgcc-mips16.ver: New file.
10939         * config/mips/t-libgcc-mips16 (SHLIB_MAPFILES): Add
10940         $(srcdir)/config/mips/libgcc-mips16.ver.
10941
10942 2008-08-09  Richard Sandiford  <rdsandiford@googlemail.com>
10943
10944         * config/mips/mips.c (mips_unspec_address_offset): Move earlier
10945         in file.
10946         (mips_unspec_address, mips_unspec_offset_high): Likewise.
10947         (mips_ok_for_lazy_binding_p, mips_load_call_address): Likewise.
10948         (mips16_cfun_returns_in_fpr_p): Likewise.
10949
10950 2008-08-09  Richard Sandiford  <rdsandiford@googlemail.com>
10951
10952         * config/mips/mips.h (MASK_RETURN_ADDR): Expand commentary.
10953         * config/mips/linux-unwind.h (mips_fallback_frame_state): Add 2
10954         rather than 4 to PC.
10955
10956 2008-08-09  Richard Sandiford  <rdsandiford@googlemail.com>
10957
10958         * config/mips/mips.h (STATIC_CHAIN_REGNUM): Remap to $15.
10959         (FUNCTION_PROFILER): Save the static chain pointer into $2
10960         beforehand and restore it aftewards.
10961         (TRAMPOLINE_TEMPLATE): Adjust accordingly.  Load the target
10962         address directly into $25 and call the function through $25;
10963         do not clobber $3.  Pad the DImode version to cover the space
10964         left by the deleted $25 <- $3 move.
10965         (TRAMPOLINE_SIZE): Adjust the size of the SImode version after
10966         the removal of the $25 <- $3 move.
10967         (INITIALIZE_TRAMPOLINE): Update offsets accordingly.
10968         * config/mips/sdemtk.h (FUNCTION_PROFILER): As for mips.h.
10969
10970 2008-08-09  Richard Sandiford  <rdsandiford@googlemail.com>
10971             Daniel Jacobowitz  <dan@codesourcery.com>
10972
10973         * config/mips/mips.h (FUNCTION_NAME_ALREADY_DECLARED): Delete.
10974         * config/mips/linux.h (ASM_DECLARE_FUNCTION_NAME): Delete.
10975         (ASM_DECLARE_FUNCTION_SIZE, FUNCTION_NAME_ALREADY_DECLARED): Delete.
10976         * config/mips/mips.c (mips_start_function_definition): New function.
10977         (mips_end_function_definition): Likewise.
10978         (mips_output_function_prologue): Use mips_start_function_definition.
10979         (mips_output_function_epilogue): Use mips_end_function_definition.
10980         (build_mips16_function_stub): Use mips_start_function_definition
10981         and mips_end_function_definition.
10982         (build_mips16_call_stub): Likewise.
10983
10984 2008-08-09  Richard Guenther  <rguenther@suse.de>
10985
10986         * gimple.c (gimple_build_call_1): Deal with FUNCTION_DECL fn.
10987         * gimple.h (gimple_call_fn): Adjust comment.
10988         (gimple_call_set_fndecl): New function.
10989         (gimple_call_fndecl): Adjust for GIMPLE_CALL no
10990         longer having bare FUNCTION_DECL operand.
10991         (gimple_call_return_type): Likewise.
10992         * tree-cfg.c (verify_stmt): Verify function operand of a GIMPLE_CALL.
10993
10994         * value-prof.c (gimple_divmod_fixed_value): Do not emit labels.
10995         (gimple_mod_pow2): Likewise.
10996         (gimple_mod_subtract): Likewise.
10997         (gimple_ic): Likewise.
10998         (gimple_stringop_fixed_value): Likewise.
10999         (gimple_indirect_call_to_profile): Fix for GIMPLE_CALL no
11000         longer having bare FUNCTION_DECL operand.
11001         * ipa-cp.c (ipcp_update_callgraph): Use gimple_call_set_fndecl.
11002         * omp-low.c (optimize_omp_library_calls): Likewise.
11003         * cgraphunit.c (update_call_expr): Likewise.
11004         * tree-ssa-math-opts.c (execute_cse_reciprocals): Likewise.
11005         (execute_convert_to_rsqrt): Likewise.
11006         * cfgexpand.c (gimple_to_tree): Simplify.
11007         (release_stmt_tree): Fix for GIMPLE_CALL no longer having
11008         bare FUNCTION_DECL operand.
11009         * tree-nested.c (init_tmp_var_with_call): Use gimple_call_return_type.
11010         (convert_gimple_call): Use gimple_call_fndecl.
11011         * c-common.c (c_warn_unused_result): Likewise.
11012
11013 2008-08-09  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
11014
11015         PR c/17880
11016         * c-typeck.c (digest_init): Call verify_sequence_points from here.
11017         (c_finish_return): Likewise.
11018         (c_start_case): Likewise.
11019         * c-common.c (warn_for_collisions_1): Use explicit location in warning.
11020         * c-parser.c (c_parser_condition): New. Call
11021         verify_sequence_points.
11022         (c_parser_paren_condition): Call c_parser_condition.
11023         (c_parser_for_statement): Call c_parser_condition.
11024
11025 2008-08-09  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
11026
11027         PR 36901
11028         * diagnostic.def (DK_PEDWARN, DK_PERMERROR): New.
11029         * diagnostic.c (pedantic_warning_kind, permissive_error_kind):
11030         Moved from diagnostic.h
11031         (diagnostic_report_diagnostic): Return bool. Handle DK_PEDWARN and
11032         DK_PERMERROR.
11033         (emit_diagnostic): New.
11034         (warning0, pedwarn0): Delete.
11035         (warning, warning_at, pedwarn, permerror): Return bool.
11036         * diagnostic.h (pedantic_warning_kind, permissive_error_kind):
11037         Moved to diagnostic.c.
11038         (struct diagnostic_context): Use correct type for
11039         classify_diagnostic.
11040         (diagnostic_report_diagnostic): Update declaration.
11041         (emit_diagnostic): Declare.
11042         * errors.c (warning): Return bool.
11043         * errors.h (warning): Update declaration.
11044         * toplev.h (warning0, pedwarn0): Delete.
11045         (warning, warning_at, pedwarn, permerror): Return bool.
11046         * c-errors.c (pedwarn_c99, pedwarn_c90): Use DK_PEDWARN.
11047         * c-decl.c (locate_old_decl): Delete 'diag' argument. Always use
11048         inform. Update all calls.
11049         (diagnose_mismatched_decls): Check return value of warning/pedwarn
11050         before giving informative note.
11051         (implicit_decl_warning): Likewise.
11052         * c-typeck.c (build_function_call): Likewise.
11053         * tree-sssa.c (warn_uninit): Likewise.
11054         * builtins.c (gimplify_va_arg_expr): Likewise.
11055
11056 2008-08-09  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
11057
11058         PR 7651
11059         * doc/invoke.texi (-Wextra): Move warning from here...
11060         (-Wuninitialized): ... to here.
11061
11062 2008-08-08  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
11063
11064         PR 28875
11065         * flags.h (set_Wunused): Delete
11066         * toplev.c (process_options): Handle Wunused flags here.
11067         * opts.c (maybe_warn_unused_parameter): Delete.
11068         (common_handle_option): Replace set_Wunused by warn_unused.
11069         (set_Wextra): Do not handle Wunused-parameter here.
11070         (set_Wunused): Delete.
11071         * c-opts.c (c_common_handle_option): Replace set_Wunused by
11072         warn_unused.
11073         * common.opt (Wunused): Add Var and Init.
11074         (Wunused-function): Likewise.
11075         (Wunused-label): Likewise.
11076         (Wunused-parameter): Likewise.
11077         (Wunused-value): Likewise.
11078         (Wunused-variable): Likewise.
11079
11080 2008-08-08  Peter Bergner  <bergner@vnet.ibm.com>
11081
11082         * doc/invoke.texi: Add cpu_type power7.
11083         * config.in (HAVE_AS_VSX): New.
11084         * config.gcc: Add cpu_type power7.
11085         * configure.ac (HAVE_AS_VSX): Check for assembler support of the
11086         VSX instructions.
11087         * configure: Regenerate.
11088         * config/rs6000/rs6000.c (rs6000_override_options): Alias power7 to
11089         power5.
11090         * config/rs6000/rs6000.h (ASM_CPU_POWER7_SPEC): Define.
11091         (ASM_CPU_SPEC): Pass %(asm_cpu_power7) for -mcpu=power7.
11092         (EXTRA_SPECS): Add asm_cpu_power7 spec string.
11093
11094 2008-08-08  Dorit Nuzman  <dorit@il.ibm.com>
11095
11096         * tree-vect-transform.c (vectorizable_conversion): Pass the integral
11097         type to vectorize.builtin_conversion.
11098         (vectorizable_conversion): Likewise.
11099         * config/i386/i386.c (ix86_vectorize_builtin_conversion): Always takes
11100         integral type as input.
11101         * config/rs6000/rs6000.c (rs6000_builtin_conversion): Add case for
11102         FIX_TRUNC_EXPR.
11103         (rs6000_expand_builtin): Add case for ALTIVEC_BUILTIN_VCTUXS
11104         and ALTIVEC_BUILTIN_VCTSXS.
11105         (rs6000_builtin_mul_widen_even. rs6000_builtin_mul_widen_odd): Fix
11106         formatting.
11107
11108 2008-08-08  Richard Guenther  <rguenther@suse.de>
11109
11110         * tree-ssa-ccp.c (likely_value): Calls are not all varying.
11111         (surely_varying_stmt_p): Calls are varying only if they are
11112         non-builtin and not indirect or have no result.
11113         (ccp_fold): Re-instantiate code before the tuples merge.
11114
11115 2008-08-08  Richard Guenther  <rguenther@suse.de>
11116
11117         PR tree-optimization/37056
11118         * gimple.h (gimple_assign_rhs_class): New helper function.
11119         * tree-ssa-loop-niter.c (get_val_for): Fix tuplification, handle
11120         unary operations properly.
11121
11122 2008-08-07  Jan Hubicka  <jh@suse.cz>
11123
11124         * i386.h (ix86_size_cost): Declare.
11125         (ix86_cur_cost): New function macro.
11126         * i386.md (peepholes expanding size and splitters): Predicate by
11127         optimize_insn_for_speed_p.
11128         (peepholes reduce size and splitters): Predicate by
11129         optimize_insn_for_size_p.
11130         * i386.c (ix86_size_cost): Rename from ...
11131         (size_cost): This one.
11132         (override_options): Update.
11133         (decide_alg): Likewise.
11134         (ix86_expand_clear): Use RTL profile.
11135         (ix86_pad_returns): Use RTL profile.
11136
11137 2008-08-07  Jan Hubicka  <jh@suse.cz>
11138
11139         * recog.c (split_all_insns): Set RTL profile
11140         (peephole2_optimize): Likewise.
11141         * function.c (thread_prologue_and_epilogue_insns): Likewise.
11142         * combine.c (combine_instructions): Likewise.
11143
11144 2008-08-07  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
11145
11146         * c-common.c (c_common_reswords): Also warn about keyword "bool".
11147
11148 2008-08-07  Bob Wilson  <bob.wilson@acm.org>
11149
11150         * config/xtensa/xtensa.c (xtensa_copy_incoming_a7): Copy incoming
11151         value in a6 after the set_frame_ptr insn.
11152
11153 2008-08-07  Richard Henderson  <rth@redhat.com>
11154
11155         PR debug/37033
11156         * gcc.c (cpp_options): Pass along -g*.
11157
11158 2008-08-07  Joseph Myers  <joseph@codesourcery.com>
11159
11160         * config/arm/arm.c (output_move_neon): Update comment describing
11161         big-endian vector layout.
11162         (arm_assemble_integer): Do not handle big-endian NEON vectors
11163         specially.
11164         * config/arm/neon.md (vec_set<mode>_internal, vec_extract<mode>,
11165         neon_vget_lane<mode>_sext_internal,
11166         neon_vget_lane<mode>_zext_internal, neon_vget_lane<mode>): Adjust
11167         element indices for big-endian.
11168
11169 2008-08-07  Richard Henderson  <rth@redhat.com>
11170
11171         * configure.ac (HAVE_GAS_CFI_PERSONALITY_DIRECTIVE): New.
11172         * configure, config.in: Rebuild.
11173         * debug.h (dwarf2out_do_cfi_asm): Declare.
11174         * c-cppbuiltin.c (c_cpp_builtins): Use it.
11175         * dwarf2out.c (dwarf2out_do_cfi_asm): New.
11176         (dwarf2out_cfi_label, add_fde_cfi, output_call_frame_info,
11177         dwarf2out_begin_prologue, dwarf2out_end_epilogue): Use it.
11178
11179 2008-08-07  Joseph Myers  <joseph@codesourcery.com>
11180
11181         * config/arm/iwmmxt.md (movv8qi_internal, movv4hi_internal,
11182         movv2si_internal): Combine into mov<mode>_internal.
11183         (movv2si_internal_2): Remove.
11184
11185 2008-08-07  Jan Hubicka  <jh@suse.cz>
11186
11187         PR target/37048
11188         * i386.md (single stringop patterns): Enable unconditionally.
11189
11190 2008-08-07  H.J. Lu  <hongjiu.lu@intel.com>
11191
11192         PR target/36992
11193         * config/i386/emmintrin.h (_mm_move_epi64): Use __builtin_ia32_movq128.
11194
11195         * config/i386/i386.c (ix86_builtins): Add IX86_BUILTIN_MOVQ128.
11196         (bdesc_args): Add IX86_BUILTIN_MOVQ128.
11197
11198         * config/i386/sse.md (sse2_movq128): New.
11199
11200         * doc/extend.texi: Document __builtin_ia32_movq128.
11201
11202 2008-08-07  Richard Guenther  <rguenther@suse.de>
11203
11204         PR middle-end/37042
11205         * tree-ssa-alias-warnings.c (nonstandard_alias_p): Ref-all
11206         pointers can access anything.
11207
11208 2008-08-06  Jan Hubicka  <jh@suse.cz>
11209
11210         * optabs.c (emit_unop_insn): Break out to ...
11211         (maybe_emit_unop_insn): ... this one.
11212         (expand_sfix_optab): Use maybe variant.
11213         * optabs.h (maybe_emit_unop_insn): Declare.
11214
11215         * i386.md (mov0 patterns): Enable by default.
11216         (FP conversion expanders): Disable expansion of code expanding
11217         sequences when instruction should be optimized for size.
11218         (single strinop patterns): Enable when optimizing for size.
11219         (string expanders): Disable expanding of code expanding sequences
11220         when optimizning instruction for size.
11221         * i386.c (ix86_expand_vector_move_misalign): Do code size optimization
11222         per BB basis.
11223         (ix86_fp_comparison_sahf_cost): Likewise.
11224         (ix86_expand_branch): Likewise.
11225         (ix86_expand_ashl_const): Likewise.
11226         (ix86_split_ashl): Likewise.
11227         (ix86_expand_strlen): Likewise.
11228         (ix86_emit_fp_unordered_jump): Likewie.
11229
11230 2008-08-06  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
11231
11232         * c-common.c: Fix typo.
11233         (c_common_reswords): Activate more C++ keyword warnings.
11234
11235         * matrix-reorg.c (compute_offset): Avoid C++ keywords.
11236
11237 2008-08-06  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
11238
11239         PR 26785
11240         * diagnostic.c (permerror_at): New.
11241         * toplev.h (permerror_at): Declare.
11242
11243 2008-08-06  Victor Kaplansky  <victork@il.ibm.com>
11244             Ira Rosen  <irar@il.ibm.com>
11245
11246         * tree-vect-transform.c (vect_model_simple_cost): Return
11247         immediately if stmt is pure SLP.
11248         (vect_model_store_cost): Ditto.
11249         (vect_model_load_cost): Ditto.
11250         (vectorizable_store): Remove PURE_SLP check before call
11251         to vect_model_store_cost.
11252         (vect_model_store_cost): When checking whether stmt describe
11253         strided access, add a check that it is not slp_node.
11254
11255 2008-08-06  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
11256
11257         PR 8715
11258         * c-common.c (warn_for_sign_compare): New. Handle separately the
11259         case that 'constant' is zero.
11260         * c-typeck.c (build_binary_op): Move code to c-common.c
11261
11262 2008-08-06  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
11263
11264         * config/alpha/alpha.c (alpha_preferred_reload_class,
11265         alpha_secondary_reload, alpha_emit_set_const_1, function_value,
11266         alpha_output_mi_thunk_osf): Avoid C++ keywords.
11267         * config/arm/arm.c (output_move_vfp, output_move_neon): Likewise.
11268         * config/arm/arm.md: Likewise.
11269         * config/avr/avr-protos.h (preferred_reload_class,
11270         test_hard_reg_class, avr_simplify_comparison_p,
11271         out_shift_with_cnt, class_max_nregs): Likewise.
11272         * config/avr/avr.c (class_max_nregs, avr_simplify_comparison_p,
11273         output_movqi, output_movhi, output_movsisf, out_shift_with_cnt,
11274         preferred_reload_class, test_hard_reg_class): Likewise.
11275         * config/bfin/bfin.c (legitimize_pic_address, hard_regno_mode_ok,
11276         bfin_memory_move_cost, bfin_secondary_reload,
11277         bfin_output_mi_thunk): Likewise.
11278         * config/crx/crx.c (crx_secondary_reload_class,
11279         crx_memory_move_cost): Likewise.
11280         * config/frv/frv-protos.h (frv_secondary_reload_class,
11281         frv_class_likely_spilled_p, frv_class_max_nregs): Likewise.
11282         * config/frv/frv.c (frv_override_options, frv_alloc_temp_reg,
11283         frv_secondary_reload_class, frv_class_likely_spilled_p,
11284         frv_class_max_nregs): Likewise.
11285         * config/h8300/h8300.c (h8300_classify_operand,
11286         h8300_unary_length, h8300_bitfield_length, h8300_asm_insn_count):
11287         Likewise.
11288         * config/i386/winnt.c (i386_pe_declare_function_type): Likewise.
11289         * config/ia64/ia64.c (ia64_preferred_reload_class,
11290         ia64_secondary_reload_class, ia64_output_mi_thunk): Likewise.
11291         * config/iq2000/iq2000.c (gen_int_relational): Likewise.
11292         * config/m32c/m32c.c (class_can_hold_mode, m32c_output_compare):
11293         Likewise.
11294         * config/m68hc11/m68hc11.c (preferred_reload_class,
11295         m68hc11_memory_move_cost): Likewise.
11296         * config/mcore/mcore.c (mcore_secondary_reload_class,
11297         mcore_reload_class): Likewise.
11298         * config/mips/mips.c (mips_hard_regno_mode_ok_p,
11299         mips_class_max_nregs, mips_cannot_change_mode_class,
11300         mips_preferred_reload_class, mips_secondary_reload_class,
11301         mips_output_mi_thunk): Likewise.
11302         * config/mmix/mmix.c (mmix_preferred_reload_class,
11303         mmix_preferred_output_reload_class, mmix_secondary_reload_class):
11304         Likewise.
11305         * config/mn10300/mn10300.c (mn10300_secondary_reload_class):
11306         Likewise.
11307         * config/pa/pa.c (pa_secondary_reload, pa_combine_instructions,
11308         pa_can_combine_p, pa_cannot_change_mode_class): Likewise.
11309         * config/pa/pa.h (LEGITIMIZE_RELOAD_ADDRESS): Likewise.
11310         * config/rs6000/rs6000.c (paired_expand_vector_init,
11311         rs6000_secondary_reload_class, rs6000_output_mi_thunk,
11312         compare_section_name, rs6000_memory_move_cost): Likewise.
11313         * config/s390/s390.c (s390_emit_compare_and_swap,
11314         s390_preferred_reload_class, s390_secondary_reload,
11315         legitimize_pic_address, legitimize_tls_address,
11316         legitimize_reload_address, s390_expand_cs_hqi, s390_expand_atomic,
11317         s390_class_max_nregs): Likewise.
11318         * config/s390/s390.h (LEGITIMIZE_RELOAD_ADDRESS): Likewise.
11319         * config/s390/s390.md: Likewise.
11320         * config/score/score-protos.h (score_secondary_reload_class,
11321         score_preferred_reload_class): Likewise.
11322         * config/score/score.c (score_preferred_reload_class,
11323         score_secondary_reload_class): Likewise.
11324         * config/score/score3.c (score3_output_mi_thunk,
11325         score3_preferred_reload_class, score3_secondary_reload_class,
11326         score3_hard_regno_mode_ok): Likewise.
11327         * config/score/score3.h (score3_preferred_reload_class,
11328         score3_secondary_reload_class): Likewise.
11329         * config/score/score7.c (score7_output_mi_thunk,
11330         score7_preferred_reload_class, score7_secondary_reload_class,
11331         score7_hard_regno_mode_ok): Likewise.
11332         * config/score/score7.h (score7_preferred_reload_class,
11333         score7_secondary_reload_class): Likewise.
11334         * config/sh/sh.c (prepare_move_operands, output_far_jump,
11335         output_branchy_insn, add_constant, gen_block_redirect,
11336         sh_insn_length_adjustment, sh_cannot_change_mode_class,
11337         sh_output_mi_thunk, replace_n_hard_rtx, sh_secondary_reload): Likewise.
11338         * config/sparc/sparc.c (sparc_output_mi_thunk): Likewise.
11339         * config/stormy16/stormy16.c (xstormy16_output_cbranch_hi,
11340         xstormy16_output_cbranch_si, xstormy16_secondary_reload_class,
11341         xstormy16_preferred_reload_class): Likewise.
11342         * config/xtensa/xtensa.c (xtensa_expand_compare_and_swap,
11343         xtensa_expand_atomic, override_options,
11344         xtensa_preferred_reload_class, xtensa_secondary_reload_class):
11345         Likewise.
11346         * reorg.c (try_merge_delay_insns): Likewise.
11347         * tree.c (merge_dllimport_decl_attributes): Likewise.
11348
11349         * config/frv/frv.c (frv_print_operand): Change isalpha to ISALPHA.
11350
11351 2008-08-06  Michael Matz  <matz@suse.de>
11352
11353         * Makefile.in (write_entries_to_file): Quote words.
11354         * gengtype.c: (read_input_line): Skip over leading white-space.
11355
11356 2008-08-06  Marc Gauthier  <marc@tensilica.com>
11357
11358         * config.gcc: Match more processor names for Xtensa.
11359         * configure.ac: Likewise.
11360         * doc/install.texi (Specific): Likewise.
11361         * configure: Regenerate.
11362
11363 2008-08-06  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
11364
11365         * builtins.c (expand_builtin_profile_func): Avoid C++ keywords.
11366         * calls.c (avoid_likely_spilled_reg): Likewise.
11367         * cfgexpand.c (gimple_assign_rhs_to_tree): Likewise.
11368         * cgraph.c (cgraph_clone_edge, cgraph_clone_node): Likewise.
11369         * config/i386/i386.c (ix86_expand_special_args_builtin,
11370         ix86_secondary_reload): Likewise.
11371         * except.c (struct eh_region, gen_eh_region_catch,
11372         remove_unreachable_regions, duplicate_eh_regions,
11373         assign_filter_values, build_post_landing_pads,
11374         sjlj_find_directly_reachable_regions, remove_eh_handler,
11375         reachable_next_level, foreach_reachable_handler,
11376         can_throw_internal_1, can_throw_external_1,
11377         collect_one_action_chain): Likewise.
11378         * expr.c (expand_expr_real_1, vector_mode_valid_p): Likewise.
11379         * fold-const.c (twoval_comparison_p, eval_subst): Likewise.
11380         * function.c (update_temp_slot_address, instantiate_new_reg,
11381         instantiate_virtual_regs_in_rtx,
11382         instantiate_virtual_regs_in_insn): Likewise.
11383         * gimple.c (extract_ops_from_tree, gimple_seq_copy): Likewise.
11384         * gimplify.c (gimplify_call_expr, gimplify_init_constructor,
11385         gimplify_cleanup_point_expr): Likewise.
11386         * ipa-cp.c (ipcp_lattice_changed): Likewise.
11387         * passes.c (next_pass_1): Likewise.
11388         * print-tree.c (print_node_brief, print_node): Likewise.
11389         * profile.c (branch_prob): Likewise.
11390         * tree-dump.c (dump_register): Likewise.
11391         * tree-eh.c (replace_goto_queue_cond_clause, lower_catch):
11392         Likewise.
11393         * tree-inline.c (remap_ssa_name, remap_type_1, remap_blocks,
11394         copy_statement_list, remap_gimple_op_r, copy_tree_body_r,
11395         copy_edges_for_bb, copy_cfg_body, copy_tree_r,
11396         copy_arguments_for_versioning, copy_static_chain): Likewise.
11397         * tree-into-ssa.c (names_replaced_by, add_to_repl_tbl,
11398         add_new_name_mapping, register_new_name_mapping): Likewise.
11399         * tree-mudflap.c (mf_xform_derefs): Likewise.
11400         * tree-predcom.c (struct chain, dump_chain, replace_ref_with,
11401         get_init_expr, combine_chains): Likewise.
11402         * tree-pretty-print.c (dump_generic_node): Likewise.
11403         * tree-ssa-structalias.c (create_variable_info_for): Likewise.
11404         * tree-vrp.c (simplify_cond_using_ranges): Likewise.
11405         * tree.c (substitute_in_expr, iterative_hash_expr): Likewise.
11406         * value-prof.c (gimple_duplicate_stmt_histograms): Likewise.
11407
11408 2008-08-06  H.J. Lu  <hongjiu.lu@intel.com>
11409
11410         PR middle-end/37010
11411         * calls.c (expand_call): Use the biggest preferred stack
11412         boundary.
11413
11414 2008-08-06  Michael Matz  <matz@suse.de>
11415
11416         PR target/36613
11417         * reload.c (push_reload): Merge in,out,in_reg,out_reg members
11418         for reused reload, instead of overwriting them.
11419
11420 2008-08-06  H.J. Lu  <hongjiu.lu@intel.com>
11421
11422         PR middle-end/37009
11423         * cfgexpand.c (expand_stack_alignment): Check parm_stack_boundary
11424         for incoming stack boundary.
11425
11426         * function.c (assign_parm_find_entry_rtl): Update
11427         parm_stack_boundary.
11428
11429         * function.h (rtl_data): Add parm_stack_boundary.
11430
11431         * config/i386/i386.c (ix86_finalize_stack_realign_flags): Check
11432         parm_stack_boundary for incoming stack boundary.
11433
11434 2008-08-06  Joseph Myers  <joseph@codesourcery.com>
11435
11436         * jump.c (rtx_renumbered_equal_p): Do not call subreg_regno_offset
11437         for unrepresentable subregs or treat them as equal to other regs
11438         or subregs with the same register number.
11439
11440 2008-08-06  Aldy Hernandez  <aldyh@redhat.com>
11441
11442         PR middle-end/35432
11443         * gimplify.c (gimplify_modify_expr): Do not optimize zero-sized types
11444         if want_value.
11445
11446 2008-08-06  Jan Hubicka  <jh@suse.cz>
11447
11448         * predict.c (maybe_hot_frequency_p): When profile is absent, all
11449         frequencies might be hot.
11450
11451 2008-08-06  Andreas Krebbel  <krebbel1@de.ibm.com>
11452
11453         * reload.c (find_reloads): Force constants into literal pool
11454         also if they are wrapped in a SUBREG.
11455
11456 2008-08-06  Maxim Kuvyrkov  <maxim@codesourcery.com>
11457
11458         PR target/35659
11459         * haifa-sched.c (sched_insn_is_legitimate_for_speculation_p): Move ...
11460         * sched-deps.c (sched_insn_is_legitimate_for_speculation_p): ... here.
11461         Don't allow predicated instructions for data speculation.
11462         * sched-int.h (sched_insn_is_legitimate_for_speculation_p): Move
11463         declaration.
11464
11465 2008-08-06  Maxim Kuvyrkov  <maxim@codesourcery.com>
11466
11467         * haifa-sched.c (extend_global): Split to extend_global_data and
11468         extend_region_data.  Update all uses.
11469         (extend_all): Rename to extend_block_data.
11470
11471 2008-08-06  Maxim Kuvyrkov  <maxim@codesourcery.com>
11472
11473         * sched-rgn.c (new_ready): Check if instruction can be
11474         speculatively scheduled before attempting speculation.
11475         (debug_rgn_dependencies): Remove wrongful assert.
11476
11477 2008-08-05  Bob Wilson  <bob.wilson@acm.org>
11478
11479         * config/xtensa/t-xtensa: Remove dependency for gt-xtensa.h.
11480
11481 2008-08-05  Bob Wilson  <bob.wilson@acm.org>
11482
11483         * config/xtensa/xtensa.c (xtensa_va_start): Unshare valist.
11484         (xtensa_gimplify_va_arg_expr): Unshare valist, orig_ndx, ndx, array,
11485         va_size, and type_size.
11486
11487 2008-08-04  Jason Merrill  <jason@redhat.com>
11488
11489         PR c++/37016
11490         * tree-ssa.c (useless_type_conversion_p_1): Call langhook
11491         if TYPE_STRUCTURAL_EQUALITY_P is true for both types.
11492
11493 2008-08-05  Richard Henderson  <rth@redhat.com>
11494
11495         * configure.ac (HAVE_GAS_CFI_DIRECTIVE): Check .cfi_personality.
11496         * configure: Rebuild.
11497
11498 2008-08-05  Andrew Pinski  <andrew_pinski@playstation.sony.com>
11499
11500         PR tree-opt/37024
11501         * tree-tailcall.c (process_assignment): Use gimple_assign_cast_p
11502         instead of IS_CONVERT_EXPR_CODE_P for seeing if the assignment
11503         is a conversion.
11504
11505 2008-08-05  Richard Henderson  <rth@redhat.com>
11506
11507         * Makefile.in (c-cppbuiltin.o): Depend on debug.h.
11508         * c-cppbuiltin.c (c_cpp_builtins): Define __GCC_HAVE_DWARF2_CFI_ASM.
11509         * doc/cpp.texi (__GCC_HAVE_DWARF2_CFI_ASM): Document it.
11510         * common.opt (fdwarf2-cfi-asm): New.
11511         * configure.ac (HAVE_GAS_CFI_DIRECTIVE): New.
11512         * config.in, configure: Rebuild.
11513         * dwarf2asm.c (dw2_asm_output_data_raw): New.
11514         (dw2_asm_output_data_uleb128_raw, dw2_asm_output_data_sleb128_raw):
11515         New.
11516         (dw2_force_const_mem): Externalize.
11517         * dwarf2asm.h: Update.
11518         * dwarf2out.c (dwarf2out_cfi_label): If flag_dwarf2_cfi_asm, don't
11519         generate a real label.
11520         (output_cfi_directive): New.
11521         (add_fde_cfi): If flag_dwarf2_cfi_asm, use it.
11522         (output_call_frame_info): Do nothing if flag_dwarf2_cfi_asm.
11523         (dwarf2out_begin_prologue): Emit .cfi_startproc, .cfi_personality,
11524         and .cfi_lsda.
11525         (dwarf2out_end_epilogue): Emit .cfi_endproc.
11526         (output_loc_operands_raw, output_loc_sequence_raw): New.
11527         (output_cfa_loc_raw): New.
11528
11529 2008-08-05  Paul Brook  <paul@codesourcery.com>
11530
11531         * doc/invoke.texi: Document new ARM -mfpu= and -mcpu= options.
11532         * config/arm/arm.c (all_fpus): Add vfpv3 and vfpv3-d16.
11533         (fp_model_for_fpu): Add entry for FPUTYPE_VFP3D16.
11534         (arm_file_start): Add FPUTYPE_VFP3D16.  Rename vfp3 to vfpv3.
11535         * config/arm/arm.h (TARGET_VFPD32): Define.
11536         (TARGET_VFP3): Use TARGET_VFPD32.
11537         (fputype): Add FPUTYPE_VFP3D16.
11538         (LAST_VFP_REGNUM): Use TARGET_VFPD32.
11539         * config/arm/constraints.md ("w"): Use TARGET_VFPD32.
11540         * config/arm/arm-cores.def: Add cortex-r4f.
11541         * config/arm/arm-tune.md: Regenerate.
11542
11543 2008-08-05  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
11544
11545         * config/spu_spu_mfcio.h: Wrap in extern "C" if __cplusplus.
11546         Reword some comments throughout the file.
11547
11548         (MFC_MIN_DMA_LIST_ELEMENTS): New define.
11549         (MFC_MAX_DMA_LIST_ELEMENTS): Likewise.
11550         (MFC_MIN_DMA_LIST_SIZE): Redefine in terms of
11551         MFC_MIN_DMA_LIST_ELEMENTS.
11552         (MFC_MAX_DMA_LIST_SIZE): Redefine in terms of
11553         MFC_MAX_DMA_LIST_ELEMENTS.
11554
11555         (MFC_START_ENABLE): Remove PPU-only define.
11556         (MFC_PUTS_CMD, MFC_PUTFS_CMD, MFC_PUTBS_CMD): Likewise.
11557         (MFC_GETS_CMD, MFC_GETFS_CMD, MFC_GETBS_CMD): Likewise.
11558
11559         (MFC_PUTB_CMD, MFC_PUTF_CMD): Reimplement using symbolic constants.
11560         (MFC_PUTL_CMD, MFC_PUTLB_CMD, MFC_PUTLF_CMD): Likewise.
11561         (MFC_PUTR_CMD, MFC_PUTRB_CMD, MFC_PUTRF_CMD): Likewise.
11562         (MFC_PUTRL_CMD, MFC_PUTRLB_CMD, MFC_PUTRLF_CMD): Likewise.
11563         (MFC_GETB_CMD, MFC_GETF_CMD): Likewise.
11564         (MFC_GETL_CMD, MFC_GETLB_CMD, MFC_GETLF_CMD): Likewise.
11565         (MFC_SNDSIGB_CMD, MFC_SNDSIGF_CMD): Likewise.
11566
11567         (MFC_SDCRT_CMD, MFC_SDCRTST_CMD): New defines.
11568         (MFC_SDCRZ_CMD, MFC_SDCRST_CMD, MFC_SDCRF_CMD): Likewise.
11569         (mfc_sdcrt, mfc_sdcrtst): Likewise.
11570         (mfc_sdcrz, mfc_sdcrst, mfc_sdcrf): Likewise.
11571
11572         (spu_read_machine_status): Fix typo.
11573
11574 2008-08-05  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
11575
11576         * config/spu/spu.h (CANNOT_CHANGE_MODE_CLASS): Allow (multi)word-sized
11577         SUBREG of multi-word hard register.
11578         * config/spu/spu.c (valid_subreg): Likewise.
11579         (adjust_operand): Handle SUBREGs of multi-word hard registers.
11580
11581 2008-08-04  Richard Guenther  <rguenther@suse.de>
11582
11583         * tree-ssa-loop-ivopts.c (add_iv_value_candidates): Also add
11584         the candidate with the stripped base if that base is different
11585         from the original base even for offset zero.
11586
11587 2008-08-04  Richard Guenther  <rguenther@suse.de>
11588
11589         PR middle-end/36691
11590         * tree-ssa-loop-niter.c (number_of_iterations_lt_to_ne): Correctly
11591         check for no_overflow.
11592
11593 2008-08-04  Richard Guenther  <rguenther@suse.de>
11594
11595         * tree-vect-transform.c (vectorizable_call): Fix tuplification.
11596
11597 2008-08-04  Paul Brook  <paul@codesourcery.com>
11598
11599         * cofig/arm/arm.c (thumb_core_reg_alloc_order): New.
11600         (arm_order_regs_for_local_alloc): New function.
11601         * config/arm/arm-protos.h (arm_order_regs_for_local_alloc): Add
11602         prototype.
11603         * config/arm/arm.h (ORDER_REGS_FOR_LOCAL_ALLOC): Define.
11604
11605 2008-08-04  H.J. Lu  <hongjiu.lu@intel.com>
11606
11607         PR target/37012
11608         * config/i386/i386.c (ix86_expand_prologue): Use UNITS_PER_WORD
11609         instead of STACK_BOUNDARY / BITS_PER_UNIT to align stack.
11610         (ix86_expand_epilogue): Likewise.
11611
11612 2008-08-04  H.J. Lu  <hongjiu.lu@intel.com>
11613
11614         * config/i386/i386.c (ix86_compute_frame_layout): Fix a typo
11615         in comments.
11616
11617 2008-08-03  Uros Bizjak  <ubizjak@gmail.com>
11618
11619         * config/i386/mmx.md (*mov<mode>_internal_rex64): Use Yi instead of x
11620         to avoid inter-unit moves for !TARGET_INTER_UNIT_MOVES.
11621         (*movv2sf_internal_rex64): Ditto.
11622
11623 2008-08-03  Jan Hubicka  <jh@suse.cz>
11624
11625         * optabs.c (expand_binop, expand_builtin_pow, expand_builtin_powi,
11626         expand_builtin_strcat): Upse optimize_insn_for_speed predicate.
11627         * expmed.c (expand_smod_pow2): Likewise.
11628
11629 2008-08-03  Uros Bizjak  <ubizjak@gmail.com>
11630
11631         PR target/36992
11632         * config/i386/sse.md (vec_concatv2di): Add Y2 constraint to
11633         alternative 0 of operand 1.
11634         (*vec_concatv2di_rex64_sse): Ditto.
11635         (*vec_concatv2di_rex64_sse4_1): Add x constraint to alternative 0
11636         of operand 1.
11637         (*sse2_storeq_rex64): Penalize allocation of "r" registers.
11638         * config/i386/mmx.md (*mov<mode>_internal_rex64): Penalize allocation
11639         of "Y2" registers to avoid SSE <-> MMX conversions for DImode moves.
11640         (*movv2sf_internal_rex64): Ditto.
11641
11642 2008-08-02  Richard Guenther  <rguenther@suse.de>
11643
11644         PR target/35252
11645         * config/i386/sse.md (SSEMODE4S, SSEMODE2D): New mode iterators.
11646         (ssedoublesizemode): New mode attribute.
11647         (sse_shufps): Call gen_sse_shufps_v4sf.
11648         (sse_shufps_1): Macroize.
11649         (sse2_shufpd): Call gen_Sse_shufpd_v2df.
11650         (sse2_shufpd_1): Macroize.
11651         (vec_extract_odd, vec_extract_even): New expanders.
11652         (vec_interleave_highv4sf, vec_interleave_lowv4sf,
11653         vec_interleave_highv2df, vec_interleave_lowv2df): Likewise.
11654         * i386.c (ix86_expand_vector_init_one_nonzero): Call
11655         gen_sse_shufps_v4sf instead of gen_sse_shufps_1.
11656         (ix86_expand_vector_set): Likewise.
11657         (ix86_expand_reduc_v4sf): Likewise.
11658
11659 2008-08-01  Doug Kwan  <dougkwan@google.com>
11660
11661         * matrix-reorg.c: Re-enable all code.
11662         (struct malloc_call_data): Change CALL_STMT to gimple type.
11663         (collect_data_for_malloc_call): Tuplify.
11664         (struct access_site_info): Change STMT to gimple type.
11665         (struct matrix_info): Change MIN_INDIRECT_LEVEL_ESCAPE_STMT,
11666         and MALLOC_FOR_LEVEL to gimple and gimple pointer type.
11667         (struct free_info): Change STMT to gimple type.
11668         (struct matrix_access_phi_node):  Change PHI to gimple type.
11669         (get_inner_of_cast_expr): Remove.
11670         (may_flatten_matrices_1): Tuplify.
11671         (may_flatten_matrices): Ditto.
11672         (mark_min_matrix_escape_level): Ditto.
11673         (ssa_accessed_in_tree): Refactor statement RHS related code into ...
11674         (ssa_accessed_in_call_rhs): New
11675         (ssa_accessed_in_assign_rhs): New
11676         (record_access_alloc_site_info): Tuplify.
11677         (add_allocation_site): Ditto.
11678         (analyze_matrix_allocation_site): Ditto.
11679         (analyze_transpose): Ditto.
11680         (get_index_from_offset): Ditto.
11681         (update_type_size): Ditto.
11682         (analyze_accesses_for_call_expr): Tuplify and renamed into ...
11683         (analyze_accesses_for_call_stmt): New. Also handle LHS of a call.
11684         (analyze_accesses_for_phi_node): Tuplify.
11685         (analyze_accesses_for_modify_stmt): Tuplify and renamed into ...
11686         (analyze_accesses_for_assign_stmt): Remove code for handling call LHS.
11687         (analyze_matrix_accesses): Tuplify.
11688         (check_var_data): New call-back type for check_var_notmodified_p.
11689         (check_var_notmodified_p): Tuplify and use call-back struct to
11690         return statement found.
11691         (can_calculate_expr_before_stmt): Factor out statement related code
11692         into ...
11693         (can_calculate_stmt_before_stmt): New.
11694         (check_allocation_function): Tuplify.
11695         (find_sites_in_func): Ditto.
11696         (record_all_accesses_in_func): Ditto.
11697         (transform_access_sites): Ditto.
11698         (transform_allocation_sites): Ditto.
11699         (matrix_reorg): Re-enable.
11700         (gate_matrix_reorg): Re-enable.
11701
11702 2008-08-01  Jakub Jelinek  <jakub@redhat.com>
11703
11704         * dwarf2out.c (compute_barrier_args_size): Set barrier_args_size
11705         for labels for which it hasn't been set yet.  If it has been set,
11706         stop walking insns and continue with next worklist item.
11707         (dwarf2out_stack_adjust): Don't call compute_barrier_args_size
11708         if the only BARRIER is at the very end of a function.
11709
11710 2008-08-01  H.J. Lu  <hongjiu.lu@intel.com>
11711
11712         * cfgexpand.c (expand_stack_alignment): Assert that
11713         stack_realign_drap and drap_rtx must match.
11714
11715         * function.c (instantiate_new_reg): If DRAP is used to realign
11716         stack, replace virtual_incoming_args_rtx with internal arg
11717         pointer.
11718
11719 2008-08-01  Richard Guenther  <rguenther@suse.de>
11720
11721         * tree-ssa-pre.c (fini_pre): Take in_fre parameter.  Free
11722         loop information only if we initialized it.
11723         (execute_pre): Call fini_pre with in_fre.
11724         * tree-ssa-loop-ivcanon (try_unroll_loop_completely): Dump
11725         if we do not unroll because we hit max-completely-peeled-insns.
11726         Use our estimation for consistency, do allow shrinking.
11727
11728 2008-08-01  H.J. Lu  <hongjiu.lu@intel.com>
11729
11730         * config/i386/i386.c (override_options): Replace ABI_STACK_BOUNDARY
11731         with MIN_STACK_BOUNDARY.
11732         (ix86_update_stack_boundary): Likewise.
11733         (ix86_expand_prologue): Assert MIN_STACK_BOUNDARY instead of
11734         STACK_BOUNDARY.
11735
11736         * config/i386/i386.h (ABI_STACK_BOUNDARY): Renamed to ...
11737         (MIN_STACK_BOUNDARY): This.
11738
11739 2008-08-01  Richard Guenther  <rguenther@suse.de>
11740
11741         PR middle-end/36997
11742         * gimplify.c (gimplify_call_expr): Set error_mark_node on GS_ERROR.
11743
11744 2008-08-01  Richard Guenther  <rguenther@suse.de>
11745
11746         PR tree-optimization/36988
11747         * tree-ssa-ccp.c (ccp_fold): Conversions of constants only
11748         do not matter if that doesn't change volatile qualification.
11749
11750 2008-08-01  Paolo Bonzini  <bonzini@gnu.org>
11751
11752         * configure.ac: Do not generate libada-mk.  Do not subst
11753         host_cc_for_libada.
11754         * libada-mk.in: Remove.
11755         * Makefile.in: Pass TARGET_LIBGCC2_CFLAGS to libgcc.mvars.
11756         * configure: Regenerate.
11757
11758 2008-08-01  Basile Starynkevitch  <basile@starynkevitch.net>
11759
11760         * tree-pass.h: Added comment about not dumping passes with name
11761         starting with star in struct opt_pass.
11762         * passes.c (register_dump_files_1): Don't do dump for a pass with
11763         name starting with star.
11764         * doc/passes.texi (Pass manager): Mention pass names and special
11765         meaning of star prefix to avoid dump.
11766
11767 2008-07-31  Adam Nemet  <anemet@caviumnetworks.com>
11768
11769         * config.gcc (mipsisa64r2*-*-linux*): New configuration.  Set ISA
11770         to MIPS64r2.
11771         * config/mips/mips.h (GENERATE_MIPS16E): Update comment.
11772         (ISA_MIPS64R2): New macro.
11773         (TARGET_CPU_CPP_BUILTINS, MULTILIB_ISA_DEFAULT): Handle it.
11774         (ISA_HAS_64BIT_REGS, ISA_HAS_MUL3, ISA_HAS_FP_CONDMOVE,
11775         ISA_HAS_8CC, ISA_HAS_FP4, ISA_HAS_PAIRED_SINGLE,
11776         ISA_HAS_MADD_MSUB, ISA_HAS_NMADD4_NMSUB4, ISA_HAS_CLZ_CLO,
11777         ISA_HAS_ROR, ISA_HAS_PREFETCH, ISA_HAS_PREFETCHX, ISA_HAS_SEB_SEH,
11778         ISA_HAS_EXT_INS, ISA_HAS_MXHC1, ISA_HAS_HILO_INTERLOCKS,
11779         ISA_HAS_SYNCI, MIN_FPRS_PER_FMT): Return true for ISA_MIPS64R2.
11780         (MIPS_ISA_LEVEL_SPEC, ASM_SPEC, LINK_SPEC): Handle -mips64r2.
11781         (TARGET_LOONGSON_2E, TARGET_LOONGSON_2F, TARGET_LOONGSON_2EF):
11782         Move up to keep list alphabetically sorted.
11783         (TUNE_20KC, TUNE_24K, TUNE_74K, TUNE_LOONGSON_2EF): Likewise.
11784         * config/mips/mips.c (mips_cpu_info_table): Add default MIPS64r2
11785         processor.
11786         * doc/invoke.texi (MIPS Options): Add -mips64r2.
11787         (-march=@var{arch}): Add mips64r2.
11788
11789 2008-07-31  H.J. Lu  <hongjiu.lu@intel.com>
11790
11791         * config/i386/darwin.h (MAIN_STACK_BOUNDARY): Define to 128.
11792
11793 2008-07-31  Steve Ellcey  <sje@cup.hp.com>
11794
11795         * expr.c (expand_assignment): Check for complete type.
11796
11797 2008-07-31  H.J. Lu  <hongjiu.lu@intel.com>
11798
11799         PR debug/36977
11800         * cfgexpand.c (expand_stack_alignment): Set stack_realign_tried.
11801
11802         * dwarf2out.c (based_loc_descr): Check crtl->stack_realign_tried
11803         for stack alignment.
11804
11805         * function.h (rtl_data): Add stack_realign_tried.  Update comments.
11806
11807 2008-07-31  Kaz Kojima  <kkojima@gcc.gnu.org>
11808
11809         * config/sh/sh.c (sh_canonical_va_list_type): Remove.
11810         (TARGET_CANONICAL_VA_LIST_TYPE): Remove.
11811
11812 2008-07-31  Jakub Jelinek  <jakub@redhat.com>
11813
11814         PR rtl-optimization/36419
11815         * dwarf2out.c (barrier_args_size): New variable.
11816         (compute_barrier_args_size, compute_barrier_args_size_1): New
11817         functions.
11818         (dwarf2out_stack_adjust): For BARRIERs call compute_barrier_args_size
11819         if not called yet in the current function, use barrier_args_size
11820         array to find the new args_size value.
11821         (dwarf2out_frame_debug): Free and clear barrier_args_size.
11822
11823 2008-07-31  H.J. Lu  <hongjiu.lu@intel.com>
11824
11825         PR debug/36980
11826         * dwarf2out.c (dwarf2out_frame_debug_expr): Move rule 17 before
11827         rule 19.
11828
11829 2008-07-31  H.J. Lu  <hongjiu.lu@intel.com>
11830
11831         PR debug/36976
11832         * dwarf2out.c (dwarf2out_args_size_adjust): New.
11833         (dwarf2out_stack_adjust): Use it.
11834         (dwarf2out_frame_debug_expr): Likewise.
11835
11836 2008-07-31  Richard Guenther  <rguenther@suse.de>
11837
11838         PR tree-optimization/36978
11839         * tree-ssa-loop-unswitch.c (tree_may_unswitch_on): Do not fold
11840         the generated condition.
11841
11842 2008-07-31  Richard Guenther  <rguenther@suse.de>
11843
11844         * passes.c (init_optimization_passes): Always call
11845         pass_early_warn_uninitialized.
11846         * opts.c (decode_options): Do not warn about -Wuninitialized at -O0.
11847         * doc/invoke.texi (-Wuninitialized): Correct for enabling at -O0.
11848         * doc/passes.texi (Warn for uninitialized variables): Adjust.
11849
11850 2008-07-31  Jakub Jelinek  <jakub@redhat.com>
11851
11852         PR c/36970
11853         * builtins.c (maybe_emit_free_warning): New function.
11854         (expand_builtin): Process BUILT_IN_FREE even at -O0.  Call
11855         maybe_emit_free_warning for BUILT_IN_FREE.
11856
11857         PR debug/36278
11858         * dwarf2out.c (get_context_die): New function.
11859         (force_decl_die, force_type_die): Use it.
11860         (dwarf2out_imported_module_or_decl): Likewise.  If base_type_die
11861         returns NULL, force generation of DW_TAG_typedef and put that into
11862         DW_AT_import.
11863
11864         PR preprocessor/36649
11865         * c-pch.c (c_common_read_pch): Save and restore
11866         line_table->trace_includes across PCH restore.
11867
11868 2008-07-30  Eric Botcazou  <ebotcazou@adacore.com>
11869
11870         PR ada/36554
11871         * dwarf2out.c (is_subrange_type): Deal with BOOLEAN_TYPE.
11872
11873 2008-07-30  Rafael Ávila de Espíndola  <espindola@google.com>
11874
11875         PR 36974
11876         * final.c (call_from_call_insn): Handle COND_EXEC.
11877
11878 2008-07-30  H.J. Lu  <hongjiu.lu@intel.com>
11879
11880         * builtins.c (std_gimplify_va_arg_expr): Replace
11881         PREFERRED_STACK_BOUNDARY with MAX_SUPPORTED_STACK_ALIGNMENT.
11882         * config/i386/i386.c (ix86_gimplify_va_arg): Likewise.
11883
11884 2008-07-30  Joey Ye  <joey.ye@intel.com>
11885             H.J. Lu  <hongjiu.lu@intel.com>
11886
11887         * builtins.c (expand_builtin_setjmp_receiver): Replace
11888         virtual_incoming_args_rtx with crtl->args.internal_arg_pointer.
11889         (expand_builtin_apply_args_1): Likewise.
11890         (expand_builtin_longjmp): Need DRAP for stack alignment.
11891         (expand_builtin_apply): Likewise.
11892
11893         * caller-save.c (setup_save_areas): Call assign_stack_local_1
11894         instead of assign_stack_local to allow alignment reduction.
11895
11896         * calls.c (emit_call_1): Need DRAP for stack alignment if
11897         return pops.
11898         (expand_call): Replace virtual_incoming_args_rtx with
11899         crtl->args.internal_arg_pointer.
11900         * stmt.c (expand_nl_goto_receiver): Likewise.
11901
11902         * cfgexpand.c (get_decl_align_unit): Estimate stack variable
11903         alignment and store to stack_alignment_estimated and
11904         max_used_stack_slot_alignment.
11905         (expand_one_var): Likewise.
11906         (expand_stack_alignment): New function.
11907         (tree_expand_cfg): Initialize max_used_stack_slot_alignment
11908         and stack_alignment_estimated fields in rtl_data.  Call
11909         expand_stack_alignment at end.
11910
11911         * defaults.h (INCOMING_STACK_BOUNDARY): New.
11912         (MAX_STACK_ALIGNMENT): Likewise.
11913         (MAX_SUPPORTED_STACK_ALIGNMENT): Likewise.
11914         (SUPPORTS_STACK_ALIGNMENT): Likewise.
11915
11916         * emit-rtl.c (gen_reg_rtx): Estimate stack alignment for
11917         stack alignment when generating virtual registers.
11918
11919         * function.c (assign_stack_local): Renamed to ...
11920         (assign_stack_local_1): This.  Add a parameter to indicate
11921         if it is OK to reduce alignment.
11922         (assign_stack_local): Use it.
11923         (instantiate_new_reg): Instantiate virtual incoming args rtx
11924         to vDRAP if stack realignment and DRAP is needed.
11925         (assign_parms): Collect parameter/return type alignment and
11926         contribute to stack_alignment_estimated.
11927         (locate_and_pad_parm): Likewise.
11928         (get_arg_pointer_save_area): Replace virtual_incoming_args_rtx
11929         with crtl->args.internal_arg_pointer.
11930
11931         * function.h (rtl_data): Add new field drap_reg,
11932         max_used_stack_slot_alignment, stack_alignment_estimated,
11933         stack_realign_needed, need_drap, stack_realign_processed and
11934         stack_realign_finalized.
11935         (stack_realign_fp): New macro.
11936         (stack_realign_drap): Likewise.
11937
11938         * global.c (compute_regsets): Frame pointer is needed when
11939         stack is realigned.  Can eliminate frame pointer when stack is
11940         realigned and dynamic realigned argument pointer isn't used.
11941
11942         * reload1.c (update_eliminables):  Frame pointer is needed
11943         when stack is realigned.
11944         (init_elim_table): Can eliminate frame pointer when stack is
11945         realigned and dynamic realigned argument pointer isn't used.
11946
11947         * rtl.h (assign_stack_local_1): Declare new funtion.
11948
11949         * target-def.h (TARGET_UPDATE_STACK_BOUNDARY): New.
11950         (TARGET_GET_DRAP_RTX): Likewise.
11951         (TARGET_CALLS): Add TARGET_UPDATE_STACK_BOUNDARY and
11952         TARGET_GET_DRAP_RTX.
11953
11954         * target.h (gcc_target): Add update_stack_boundary and get_drap_rtx.
11955
11956         * tree-vectorizer.c (vect_can_force_dr_alignment_p): Replace
11957         STACK_BOUNDARY with MAX_STACK_ALIGNMENT.
11958
11959 2008-07-30  Xuepeng Guo  <xuepeng.guo@intel.com>
11960             H.J. Lu  <hongjiu.lu@intel.com>
11961
11962         * dwarf2out.c (dw_fde_struct): Add stack_realignment, drap_reg,
11963         vdrap_reg, stack_realign and drap_reg_saved.
11964         (add_cfi): Don't allow redefining CFA when DRAP is used.
11965         (reg_save): Handle stack alignment.
11966         (dwarf2out_frame_debug_expr): Add rules 16-20 to handle stack
11967         alignment.  Don't generate DWARF information for (set fp sp)
11968         when DRAP is used.
11969         (dwarf2out_begin_prologue): Initialize drap_reg and vdrap_reg
11970         to INVALID_REGNUM.
11971         (int_loc_descriptor): Move prototype forward.  Also define if
11972         DWARF2_UNWIND_INFO is true.
11973         (output_cfa_loc): Handle DW_CFA_expression.
11974         (build_cfa_aligned_loc): New.
11975         (based_loc_descr): Update assert for stack realign.  For local
11976         variables, use sp+offset when stack is aligned without drap and
11977         fp+offset when stack is aligned with drap.  For arguments, use
11978         cfa+offset when drap is used to align stack.
11979
11980 2008-07-30  Joey Ye  <joey.ye@intel.com>
11981             H.J. Lu  <hongjiu.lu@intel.com>
11982
11983         * config/i386/i386.c (ix86_force_align_arg_pointer_string):
11984         Break long line.
11985         (ix86_gen_andsp): New.
11986         (ix86_user_incoming_stack_boundary): Likewise.
11987         (ix86_default_incoming_stack_boundary): Likewise.
11988         (ix86_incoming_stack_boundary): Likewise.
11989         (ix86_can_eliminate): Likewise.
11990         (find_drap_reg): Likewise.
11991         (ix86_update_stack_boundary): Likewise.
11992         (ix86_get_drap_rtx): Likewise.
11993         (ix86_finalize_stack_realign_flags): Likewise.
11994         (TARGET_UPDATE_STACK_BOUNDARY): Likewise.
11995         (TARGET_GET_DRAP_RTX): Likewise.
11996         (override_options): Overide option value for new options.
11997         (ix86_function_ok_for_sibcall): Remove check for
11998         force_align_arg_pointer.
11999         (ix86_handle_cconv_attribute): Likewise.
12000         (ix86_function_regparm): Likewise.
12001         (setup_incoming_varargs_64): Don't set stack_alignment_needed here.
12002         (ix86_va_start): Replace virtual_incoming_args_rtx with
12003         crtl->args.internal_arg_pointer.
12004         (ix86_select_alt_pic_regnum): Check DRAP register.
12005         (ix86_save_reg): Replace force_align_arg_pointer with drap_reg.
12006         (ix86_compute_frame_layout): Compute frame layout wrt stack
12007         realignment.
12008         (ix86_internal_arg_pointer): Just return virtual_incoming_args_rtx.
12009         (ix86_expand_prologue): Decide if stack realignment is needed
12010         and generate prologue code accordingly.
12011         (ix86_expand_epilogue): Generate epilogue code wrt stack
12012         realignment is really needed or not.
12013
12014         * config/i386/i386.h (MAIN_STACK_BOUNDARY): New.
12015         (ABI_STACK_BOUNDARY): Likewise.
12016         (PREFERRED_STACK_BOUNDARY_DEFAULT): Likewise.
12017         (STACK_REALIGN_DEFAULT): Likewise.
12018         (INCOMING_STACK_BOUNDARY): Likewise.
12019         (MAX_STACK_ALIGNMENT): Likewise.
12020         (ix86_incoming_stack_boundary): Likewise.
12021         (FORCE_PREFERRED_STACK_BOUNDARY_IN_MAIN): Removed.
12022         (REAL_PIC_OFFSET_TABLE_REGNUM): Updated to use BX_REG.
12023         (CAN_ELIMINATE): Defined with ix86_can_eliminate.
12024         (machine_function): Remove force_align_arg_pointer.
12025
12026         * config/i386/i386.md (BX_REG): New.
12027         (R13_REG): Likewise.
12028
12029         * config/i386/i386.opt (mforce_drap): New.
12030         (mincoming-stack-boundary): Likewise.
12031         (mstackrealign): Add Init(-1).
12032
12033         * config/i386/i386-protos.h (ix86_can_eliminate): New
12034
12035 2008-07-30  H.J. Lu  <hongjiu.lu@intel.com>
12036
12037         * doc/extend.texi: Update force_align_arg_pointer.
12038
12039         * doc/invoke.texi: Document -mincoming-stack-boundary.  Update
12040         -mstackrealign.
12041
12042         * doc/tm.texi (MAX_STACK_ALIGNMENT): Add macro.
12043         (INCOMING_STACK_BOUNDARY): Likewise.
12044         (TARGET_UPDATE_STACK_BOUNDARY): New target hook.
12045         (TARGET_GET_DRAP_RTX): Likewise.
12046
12047 2008-07-30  Andreas Schwab  <schwab@suse.de>
12048
12049         PR rtl-optimization/36929
12050         * dse.c (replace_inc_dec): Use emit_insn_before instead of
12051         add_insn_before and fix argument order.
12052         (replace_inc_dec_mem): Handle NULL rtx.
12053
12054 2008-07-30  Andrew Jenner  <andrew@codesourcery.com>
12055
12056         * config/arm/arm.c (arm_compute_static_chain_stack_bytes): New
12057         function.
12058         (arm_compute_initial_elimination_offset): Use it.
12059         (arm_compute_save_reg_mask): Include static chain save slot when
12060         calculating alignment.
12061         (arm_get_frame_offsets): Ditto.
12062         (thumb1_compute_save_reg_mask): Ensure we have a low register saved
12063         that we can use to decrement the stack when the stack decrement
12064         could be too big for an immediate value in a single insn.
12065         (thumb1_expand_prologue): Avoid using r12 for stack decrement.
12066
12067 2008-07-30  Richard Guenther  <rguenther@suse.de>
12068
12069         PR tree-optimization/36967
12070         * tree-predcom.c (remove_stmt): Use gimple_assign_ssa_name_copy_p.
12071         Release defs of statements we remove.
12072
12073 2008-07-30  Nathan Froyd  <froydnj@codesourcery.com>
12074
12075         * config/arm/arm.c (arm_expand_prologue): Use 0-length rtvec
12076         instead of NULL_RTVEC.
12077
12078 2008-07-30  Nathan Froyd  <froydnj@codesourcery.com>
12079
12080         PR target/35866
12081
12082         * config/rs6000/rs6000.h (SLOW_UNALIGNED_ACCESS): Add clause for
12083         vector modes.
12084
12085 2008-07-30  Rafael Ávila de Espíndola  <espindola@google.com>
12086
12087         * final.c (call_from_call_insn): New.
12088         (final_scan_insn): Call assemble_external on FUNCTION_DECLs.
12089
12090 2008-07-30  Paolo Bonzini  <bonzini@gnu.org>
12091
12092         * configure.ac: Substitute ADA_CFLAGS.
12093         * configure: Regenerate.
12094         * config.host: Remove mention of pa/x-ada and pa/x-ada-hpux10 files.
12095         * Makefile.in: Remove mention of X_* variables.
12096         * config/pa/x-ada-hpux10: Remove.
12097         * config/pa/x-ada: Remove.
12098
12099         * doc/fragments.texi: Update.
12100
12101 2008-07-30  Olivier Hainque  <hainque@adacore.com>
12102
12103         * config/mips/irix-crti.asm: .hide __gcc_init and __gcc_fini.
12104         * config/mips/iris6.h (IRIX_SUBTARGET_LINK_SPEC, irix ld): Hide
12105         __dso_handle explicitly here.
12106
12107 2008-07-30  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
12108
12109         PR 34389
12110         * c-typeck.c (build_binary_op): Encapsulate code into...
12111         * c-common.c (shorten_binary_op): ...this new function.
12112         (conversion_warning): Use the new function. Handle non-negative
12113         constant in bitwise-and.
12114         * c-common.h (shorten_binary_op): Declare.
12115
12116 2008-07-30  Olivier Hainque  <hainque@adacore.com>
12117
12118         * scan.c (make_sstring_space): Add explicit conversions of
12119         allocator's return value.
12120         * fix-header.c (recognized_function): Likewise.
12121
12122 2008-07-30  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
12123
12124         * doc/cpp.texi: Update to GFDL 1.2.
12125         * doc/gcc.texi: Do not list GPL as Invariant Section.
12126         * doc/gccint.texi: Likewise.  Update copyright years.
12127         * doc/install.texi: Update copyright years.
12128
12129 2008-07-30  Alan Modra  <amodra@bigpond.net.au>
12130
12131         PR target/36955
12132         * config/rs6000/rs6000.c (rs6000_legitimize_tls_address): Add
12133         a use of pic_offset_table_rtx for -msecure-plt __tls_get_addr calls.
12134
12135 2008-07-29  Jan Hubicka  <jh@suse.cz>
12136
12137         * c-decl.c (merge_decls): Do not handle DECL_INLINE.
12138         (grokdeclarator): Likewise.
12139         * langhooks.c (lhd_warn_unused_global_decl): Use
12140         DECL_DECLARED_INLINE_P.
12141         * print-tree.c (print_node): Remove DECL_INLINE check.
12142
12143 2008-07-29  Richard Guenther  <rguenther@suse.de>
12144
12145         PR tree-optimization/36945
12146         * tree-ssa-sccvn.h (copy_reference_ops_from_ref): Declare.
12147         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Export.
12148         Record invariant addresses un-decomposed.
12149         (copy_reference_ops_from_call): Record reference call
12150         arguments properly.  Simplify.
12151         * tree-ssa-pre.c (create_component_ref_by_pieces_1): New
12152         helper split out from ...
12153         (create_component_ref_by_pieces): ... here.  Simplify.
12154         Prepare for recursive invocation for call arguments.
12155         (create_expression_by_pieces): Adjust call to
12156         create_component_ref_by_pieces.
12157         (compute_avail): Process operand 2 of reference ops.
12158
12159 2008-07-29  Richard Guenther  <rguenther@suse.de>
12160
12161         * gimplify.c (gimplify_expr): Clear TREE_SIDE_EFFECTS for OBJ_TYPE_REF.
12162
12163 2008-07-29  Jakub Jelinek  <jakub@redhat.com>
12164
12165         * c-format.c (check_format_types): Revert unwanted checkin.
12166
12167 2008-07-29  Jan Hubicka  <jh@suse.cz>
12168
12169         * flags.h (flag_really_no_inline): Remove.
12170         * cgraph.c (cgraph_function_possibly_inlined_p): Simplify.
12171         * toplev.c (flag_really_no_inline): Remove.
12172         * c-cppbuiltin.c (c_cpp_builtins): Use flag_no_inline.
12173         * ipa-inline.c (cgraph_decide_inlining): Do not check flag_no_inline.
12174         (cgraph_decide_inlining_incrementally): Likewise.
12175         (compute_inline_parameters): Likewise.
12176         * opts.c (decode_options): Simplify.
12177         * c-opts.c (c_common_post_options): Do not set flag_no_inline.
12178         * common.opt (finline): Initialize to 1.
12179         * tree-inline.c (inlinable_function_p): Check flag_no_inline.
12180
12181 2008-07-29  Jan Hubicka  <jh@suse.cz>
12182
12183         * predict.c (always_optimize_for_size_p): New function.
12184         (optimize_bb_for_size_p, optimize_bb_for_speed_p,
12185         optimize_edge_for_size_p, optimize_edge_for_speed_p,
12186         optimize_insn_for_size_p, optimize_insn_for_speed_p): New global
12187         functions.
12188         (rtl_profile_for_bb, rtl_profile_for_edge, rtl_default_profile): New.
12189         * function.c (prepare_function_start): Set default profile.
12190         * function.h (rtl_data): Add maybe_hot_insn_p.
12191         * cfgexpand.c (expand_gimple_basic_block): Set RTL profile.
12192         (construct_exit_block): Likewise.
12193         (tree_expand_cfg): Likewise.
12194         * basic-block.h
12195         (optimize_bb_for_size_p, optimize_bb_for_speed_p,
12196         optimize_edge_for_size_p, optimize_edge_for_speed_p,
12197         optimize_insn_for_size_p, optimize_insn_for_speed_p): Declare.
12198         (rtl_profile_for_bb, rtl_profile_for_edge, default_rtl_profile):
12199         Declare.
12200
12201 2008-07-29  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
12202
12203         PR 34985
12204         * c-decl.c (merge_decls): Merge USED flags.
12205
12206 2008-07-29  Kaz Kojima  <kkojima@gcc.gnu.org>
12207
12208         * config/sh/sh.c (sh_gimplify_va_arg_expr): Unshare the addr,
12209         valist, next_fp, next_fp_tmp, next_fp_limit, next_o, next_o_limit,
12210         next_stack, lab_false and lab_over trees.
12211
12212 2008-07-28  Richard Guenther  <rguenther@suse.de>
12213
12214         PR tree-optimization/36957
12215         * tree-flow.h (tree_ssa_useless_type_conversion): Remove.
12216         (useless_type_conversion_p): Remove.
12217         (types_compatible_p): Remove.
12218         * gimple.h (tree_ssa_useless_type_conversion): Declare.
12219         (useless_type_conversion_p): Declare.
12220         (types_compatible_p): Declare.
12221         (gimple_expr_type): Return the base type only if it is
12222         trivially convertible to the subtype.
12223
12224 2008-07-28  Andreas Tobler  <a.tobler@schweiz.org>
12225
12226         * configure.ac: Use the m4_do macro to concatenate the warnings into
12227         one string in ACX_PROG_CC_WARNING_OPTS,
12228         ACX_PROG_CC_WARNING_ALMOST_PEDANTIC and
12229         ACX_PROG_CC_WARNINGS_ARE_ERRORS.
12230         * configure: Regenerate.
12231
12232 2008-07-28  Richard Guenther  <rguenther@suse.de>
12233
12234         * tree-ssa-pre.c (insert_into_preds_of_block): Remove dead code.
12235         (insert_fake_stores): Remove.
12236         (realify_fake_stores): Likewise.
12237         (execute_pre): Remove dead code.
12238         * tree-ssa-structalias.c (get_constraint_for_1): Remove tcc_unary case.
12239         (find_func_aliases): Deal with it here instead.
12240         Re-enable gcc_unreachable call.
12241
12242 2008-07-28  Richard Guenther  <rguenther@suse.de>
12243
12244         Merge from gimple-tuples-branch.
12245
12246         * ChangeLog.tuples: ChangeLog from gimple-tuples-branch.
12247         * gimple.def: New file.
12248         * gsstruct.def: Likewise.
12249         * gimple-iterator.c: Likewise.
12250         * gimple-pretty-print.c: Likewise.
12251         * tree-gimple.c: Removed.  Merged into ...
12252         * gimple.c: ... here.  New file.
12253         * tree-gimple.h: Removed.  Merged into ...
12254         * gimple.h: ... here.  New file.
12255
12256         * Makefile.in: Add dependencies on GIMPLE_H and tree-iterator.h.
12257         * configure.ac: Added support for ENABLE_GIMPLE_CHECKING and the
12258         --enable-checking=gimple flag.
12259         * config.in: Likewise.
12260         * configure: Regenerated.
12261
12262         * tree-ssa-operands.h: Tuplified.
12263         * tree-vrp.c: Likewise.
12264         * tree-loop-linear.c: Likewise.
12265         * tree-into-ssa.c: Likewise.
12266         * tree-ssa-loop-im.c: Likewise.
12267         * tree-dump.c: Likewise.
12268         * tree-complex.c: Likewise.
12269         * cgraphbuild.c: Likewise.
12270         * tree-ssa-threadupdate.c: Likewise.
12271         * tree-ssa-loop-niter.c: Likewise.
12272         * tree-pretty-print.c: Likewise.
12273         * tracer.c: Likewise.
12274         * gengtype.c: Likewise.
12275         * tree-loop-distribution.c: Likewise.
12276         * tree-ssa-loop-unswitch.c: Likewise.
12277         * cgraph.c: Likewise.
12278         * cgraph.h: Likewise.
12279         * tree-ssa-loop-manip.c: Likewise.
12280         * value-prof.c: Likewise.
12281         * tree-ssa-loop-ch.c: Likewise.
12282         * tree-tailcall.c: Likewise.
12283         * value-prof.h: Likewise.
12284         * tree.c: Likewise.
12285         * tree.h: Likewise.
12286         * tree-pass.h: Likewise.
12287         * ipa-cp.c: Likewise.
12288         * tree-scalar-evolution.c: Likewise.
12289         * tree-scalar-evolution.h: Likewise.
12290         * target.h: Likewise.
12291         * lambda-mat.c: Likewise.
12292         * tree-phinodes.c: Likewise.
12293         * diagnostic.h: Likewise.
12294         * builtins.c: Likewise.
12295         * tree-ssa-alias-warnings.c: Likewise.
12296         * cfghooks.c: Likewise.
12297         * fold-const.c: Likewise.
12298         * cfghooks.h: Likewise.
12299         * omp-low.c: Likewise.
12300         * tree-ssa-dse.c: Likewise.
12301         * ipa-reference.c: Likewise.
12302         * tree-ssa-uncprop.c: Likewise.
12303         * toplev.c: Likewise.
12304         * tree-gimple.c: Likewise.
12305         * tree-gimple.h: Likewise.
12306         * tree-chrec.c: Likewise.
12307         * tree-chrec.h: Likewise.
12308         * tree-ssa-sccvn.c: Likewise.
12309         * tree-ssa-sccvn.h: Likewise.
12310         * cgraphunit.c: Likewise.
12311         * tree-ssa-copyrename.c: Likewise.
12312         * tree-ssa-ccp.c: Likewise.
12313         * tree-ssa-loop-ivopts.c: Likewise.
12314         * tree-nomudflap.c: Likewise.
12315         * tree-call-cdce.c: Likewise.
12316         * ipa-pure-const.c: Likewise.
12317         * c-format.c: Likewise.
12318         * tree-stdarg.c: Likewise.
12319         * tree-ssa-math-opts.c: Likewise.
12320         * tree-ssa-dom.c: Likewise.
12321         * tree-nrv.c: Likewise.
12322         * tree-ssa-propagate.c: Likewise.
12323         * ipa-utils.c: Likewise.
12324         * tree-ssa-propagate.h: Likewise.
12325         * tree-ssa-alias.c: Likewise.
12326         * gimple-low.c: Likewise.
12327         * tree-ssa-sink.c: Likewise.
12328         * ipa-inline.c: Likewise.
12329         * c-semantics.c: Likewise.
12330         * dwarf2out.c: Likewise.
12331         * expr.c: Likewise.
12332         * tree-ssa-loop-ivcanon.c: Likewise.
12333         * predict.c: Likewise.
12334         * tree-ssa-loop.c: Likewise.
12335         * tree-parloops.c: Likewise.
12336         * tree-ssa-address.c: Likewise.
12337         * tree-ssa-ifcombine.c: Likewise.
12338         * matrix-reorg.c: Likewise.
12339         * c-decl.c: Likewise.
12340         * tree-eh.c: Likewise.
12341         * c-pretty-print.c: Likewise.
12342         * lambda-trans.c: Likewise.
12343         * function.c: Likewise.
12344         * langhooks.c: Likewise.
12345         * ebitmap.h: Likewise.
12346         * tree-vectorizer.c: Likewise.
12347         * function.h: Likewise.
12348         * langhooks.h: Likewise.
12349         * tree-vectorizer.h: Likewise.
12350         * ipa-type-escape.c: Likewise.
12351         * ipa-type-escape.h: Likewise.
12352         * domwalk.c: Likewise.
12353         * tree-if-conv.c: Likewise.
12354         * profile.c: Likewise.
12355         * domwalk.h: Likewise.
12356         * tree-data-ref.c: Likewise.
12357         * tree-data-ref.h: Likewise.
12358         * tree-flow-inline.h: Likewise.
12359         * tree-affine.c: Likewise.
12360         * tree-vect-analyze.c: Likewise.
12361         * c-typeck.c: Likewise.
12362         * gimplify.c: Likewise.
12363         * coretypes.h: Likewise.
12364         * tree-ssa-phiopt.c: Likewise.
12365         * calls.c: Likewise.
12366         * tree-ssa-coalesce.c: Likewise.
12367         * tree.def: Likewise.
12368         * tree-dfa.c: Likewise.
12369         * except.c: Likewise.
12370         * except.h: Likewise.
12371         * cfgexpand.c: Likewise.
12372         * tree-cfgcleanup.c: Likewise.
12373         * tree-ssa-pre.c: Likewise.
12374         * tree-ssa-live.c: Likewise.
12375         * tree-sra.c: Likewise.
12376         * tree-ssa-live.h: Likewise.
12377         * tree-predcom.c: Likewise.
12378         * lambda.h: Likewise.
12379         * tree-mudflap.c: Likewise.
12380         * ipa-prop.c: Likewise.
12381         * print-tree.c: Likewise.
12382         * tree-ssa-copy.c: Likewise.
12383         * ipa-prop.h: Likewise.
12384         * tree-ssa-forwprop.c: Likewise.
12385         * ggc-page.c: Likewise.
12386         * c-omp.c: Likewise.
12387         * tree-ssa-dce.c: Likewise.
12388         * tree-vect-patterns.c: Likewise.
12389         * tree-ssa-ter.c: Likewise.
12390         * tree-nested.c: Likewise.
12391         * tree-ssa.c: Likewise.
12392         * lambda-code.c: Likewise.
12393         * tree-ssa-loop-prefetch.c: Likewise.
12394         * tree-inline.c: Likewise.
12395         * tree-inline.h: Likewise.
12396         * tree-iterator.c: Likewise.
12397         * tree-optimize.c: Likewise.
12398         * tree-ssa-phiprop.c: Likewise.
12399         * tree-vect-transform.c: Likewise.
12400         * tree-object-size.c: Likewise.
12401         * tree-outof-ssa.c: Likewise.
12402         * cfgloop.c: Likewise.
12403         * system.h: Likewise.
12404         * tree-profile.c: Likewise.
12405         * cfgloop.h: Likewise.
12406         * c-gimplify.c: Likewise.
12407         * c-common.c: Likewise.
12408         * tree-vect-generic.c: Likewise.
12409         * tree-flow.h: Likewise.
12410         * c-common.h: Likewise.
12411         * basic-block.h: Likewise.
12412         * tree-ssa-structalias.c: Likewise.
12413         * tree-switch-conversion.c: Likewise.
12414         * tree-ssa-structalias.h: Likewise.
12415         * tree-cfg.c: Likewise.
12416         * passes.c: Likewise.
12417         * ipa-struct-reorg.c: Likewise.
12418         * ipa-struct-reorg.h: Likewise.
12419         * tree-ssa-reassoc.c: Likewise.
12420         * cfgrtl.c: Likewise.
12421         * varpool.c: Likewise.
12422         * stmt.c: Likewise.
12423         * tree-ssanames.c: Likewise.
12424         * tree-ssa-threadedge.c: Likewise.
12425         * langhooks-def.h: Likewise.
12426         * tree-ssa-operands.c: Likewise.
12427         * config/alpha/alpha.c: Likewise.
12428         * config/frv/frv.c: Likewise.
12429         * config/s390/s390.c: Likewise.
12430         * config/m32c/m32c.c: Likewise.
12431         * config/m32c/m32c-protos.h: Likewise.
12432         * config/spu/spu.c: Likewise.
12433         * config/sparc/sparc.c: Likewise.
12434         * config/i386/i386.c: Likewise.
12435         * config/sh/sh.c: Likewise.
12436         * config/xtensa/xtensa.c: Likewise.
12437         * config/stormy16/stormy16.c: Likewise.
12438         * config/ia64/ia64.c: Likewise.
12439         * config/rs6000/rs6000.c: Likewise.
12440         * config/pa/pa.c: Likewise.
12441         * config/mips/mips.c: Likewise.
12442
12443 2008-07-28  Simon Baldwin  <simonb@google.com>
12444
12445         * c-pragma.c (handle_pragma_message): New function.
12446         (init_pragma): Register handle_pragma_message.
12447         * doc/extend.texi (Diagnostic Pragmas): Added #pragma message
12448         documentation.
12449
12450 2008-07-27  Victor Kaplansky  <victork@il.ibm.com>
12451
12452         PR tree-optimization/35252
12453         * tree-vect-analyze.c (vect_build_slp_tree): Make IMAGPART_EXPR and
12454         REALPART_EXPR to be considered as same load operation.
12455
12456 2008-07-27  Eric Botcazou  <ebotcazou@adacore.com>
12457
12458         PR tree-optimization/36830
12459         * tree-ssa-sccvn.c (vn_reference_op_compute_hash): Hash operand #2.
12460         (expressions_equal_p): Return false if only one operand is null.
12461
12462 2008-07-26  Gerald Pfeifer  <gerald@pfeifer.com>
12463
12464         * doc/install.texi (powerpc-*-netbsd*): Remove redundant texinfo
12465         version requirements.
12466
12467 2008-07-26  Olivier Hainque  <hainque@adacore.com>
12468
12469         * collect2.c (symkind): New enum.  Symbol kinds we care about.
12470         (is_ctor_dtor): Return symkind instead of int.  Adjust prototype,
12471         code and head comment accordingly.
12472         (scan_prog_file): Use symkind names instead of bare integers.
12473
12474 2008-07-25  Jan Hubicka  <jh@suse.cz>
12475
12476         * cgraph.c (cgraph_function_possibly_inlined_p): Do not rely on
12477         DECL_INLINE.
12478         * cgraphunit.c (record_cdtor_fn): Do not initialize DECL_INLINE
12479         (cgraph_preserve_function_body_p): Do not rely on DECL_INLINE.
12480         * dojump.c (clear_pending_stack_adjust): Likewise.
12481         * print-tree.c (print_node): Ignore DECL_INLINE.
12482         * tree-inline.c (inlinable_function_p): Likewise.
12483
12484 2008-07-25  Michael Meissner  <gnu@the-meissners.org>
12485
12486         * doc/extend.texi (hot attribute): Document that the hot attribute
12487         turns on -O3 for some ports.
12488         (cold attribute): Document that the cold attribute turns on -Os
12489         for some ports
12490
12491         * doc/tm.texi (OPTIMIZATION_OPTIONS): Update documentation to
12492         reflect function specific option support.
12493
12494         * target.h (struct target_option_hooks): Add fields to say whether
12495         the cold attribute implies -Os and the hot attribute implies -O3.
12496
12497         * target-def.h (TARGET_OPTION_COLD_ATTRIBUTE_SETS_OPTIMIZATION):
12498         By default, do not turn on -Os for cold functions.
12499         (TARGET_OPTION_COLD_ATTRIBUTE_SETS_OPTIMIZATION): By default, do
12500         not turn on -O3 for hot functions.
12501
12502         * c-common.c (handle_hot_attribute): Use target hook to determine
12503         if hot functions should enable -O3.
12504         (handle_cold_attribute): Use target hook to determine if cold
12505         functions should enable -Os.
12506
12507         * config/i386/i386.c (ix86_target_string): Add -m3dnowa support.
12508         (override_options): Move disable scheduling to
12509         optimization_options.
12510         (optimization_options): Disable scheduling here, not
12511         override_options.
12512         (TARGET_OPTION_COLD_ATTRIBUTE_SETS_OPTIMIZATION): Define.
12513         (TARGET_OPTION_HOT_ATTRIBUTE_SETS_OPTIMIZATION): Define.
12514
12515         * config/ia64/ia64.c (ia64_override_options): Move setting
12516         scheduling flags to ia64_optimization_options.
12517         (ia64_optimization_options): Disable scheduling options here, and
12518         not in ia64_override_options.
12519         (TARGET_OPTION_COLD_ATTRIBUTE_SETS_OPTIMIZATION): Define.
12520         (TARGET_OPTION_HOT_ATTRIBUTE_SETS_OPTIMIZATION): Define.
12521
12522 2008-07-25  H.J. Lu  <hongjiu.lu@intel.com>
12523
12524         PR target/36936
12525         * config/i386/i386.c (override_options): Don't clear TARGET_CMOVE.
12526
12527 2008-07-25  Martin Jambor  <mjambor@suse.cz>
12528
12529         PR tree-optimization/36926
12530         * ipa-prop.c (ipa_analyze_call_uses): Call
12531         ipa_is_ssa_with_stmt_def instead of SSA_NAME_IS_DEFAULT_DEF.
12532
12533 2008-07-25  Joseph Myers  <joseph@codesourcery.com>
12534
12535         * config/arm/iwmmxt.md (movv8qi_internal, movv4hi_internal,
12536         movv2si_internal): Add mem = reg alternative.
12537
12538 2008-07-25  Andreas Tobler  <a.tobler@schweiz.org>
12539
12540         PR bootstrap/36918
12541         * config/sparc/sparc.h (DEFAULT_PCC_STRUCT_RETURN): Define
12542         DEFAULT_PCC_STRUCT_RETURN to 127.
12543
12544 2008-07-24  Jan Hubicka  <jh@suse.cz>
12545
12546         * cgraphbuild.c (record_reference): Drop non-unit-at-a-time code.
12547         (build_cgraph_edges): Likewise.
12548         * cgraph.c (cgraph_node): Do not update assembler hash.
12549         (cgraph_remove_node): Drop non-unit-at-a-time code.
12550         * tree-pass.h (pass_O0_always_inline): Remove.
12551         * ipa-reference.c (gate_reference): Remove unit-at-a-time check.
12552         * toplev.c (process_options): Flag unit-at-a-time does not imply
12553         no section anchors.
12554         * cgraphunit.c: Update comments.
12555         (decide_is_function_needed): Drop non-unit-at-a-time mode.
12556         (cgraph_assemble_pending_functions): Remove.
12557         (cgraph_reset_node): Drop non-unit-at-a-time code.
12558         (cgraph_finalize_function): Likewise.
12559         (cgraph_analyze_function): Likewise.
12560         (cgraph_finalize_compilation_unit): Likewise.
12561         (cgraph_expand_function): Likewise.
12562         (cgraph_optimize): Likesise.
12563         (save_inline_function_body): Likewise.
12564         * ipa-pure-const.c (gate_pure_const): Drop flag_unit_at_a_time check.
12565         * tree-ssa-alias.c (maybe_be_aliased): Likewise.
12566         * ipa-inline.c: Update comments.
12567         (enum inlining_mode): remove INLINE_SPEED.
12568         (cgraph_clone_inlined_nodes): Drop unit-at-a-time check.
12569         (cgraph_mark_inline_edge): Likewise.
12570         (try_inline): Likewise.
12571         (cgraph_decide_inlining_incrementally): Likewise.
12572         (cgraph_gate_inlining): Remove.
12573         (cgraph_early_inlining): Remove flag_unit_at_a_time checks.
12574         (cgraph_gate_early_inlining): Likewise.
12575         (gate_inline_passes): Remove.
12576         (pass_inline_parameters, pass_ipa_inline): Remove gates.
12577         (cgraph_gate_O0_always_inline, cgraph_O0_always_inline,
12578         pass_O0_always_inline): Remove.
12579         * c-pch.c (c_pch_matching): Remove -funit-at-a-time.
12580         * dwarf2out.c (reference_to_unused): Remove flag_unit_at_a_time check.
12581         * opts.c (no_unit_at_a_time_default): Remove.
12582         (decode_options): Remove flag_unit_at_a_time reset and warning.
12583         * opts.h (no_unit_at_a_time_default): Remove.
12584         * c-decl.c (diagnose_mismatched_decls): Do not require inline keyword
12585         early in GNU dialect.
12586         (merge_decls): Update comment; drop unit-at-a-time check.
12587         (finish_decl): Likewise.
12588         (grok_declaration): Remove flag_inline_trees code.
12589         (finish_functions): Return on function returning non-void on all
12590         statics.
12591         * ipa-tye-escape.c (gate_type_escape_vars): Remove.
12592         * cfgexpand.c (expand_one_static_var): Remove.
12593         (expand_one_var): Remove expand_one_static_var call.
12594         (expand_used_vars_for_block): Remove flag_unit_a_time check.
12595         * c-opts.c (c_common_post_options): Remove flag_inline_trees code
12596         and flag_unit_at_a-time compatibility checks.
12597         * varasm.c (assemble_alias): Remove flag_unit_at_a_time check.
12598         * tree-inline.c (flag_inline_trees): Remove.
12599         (inlinable_function_p): Don't check it.
12600         (expand_call_inline): Remove non-unit-at-a-time code.
12601         * tree-inline.h (flag_inline_trees): Remove.
12602         * tree-optimize.c (execute_early_local_optimizations): Remove
12603         unit-at-a-time checks.
12604         (tree_rest_of_compilation): Likewise.
12605         * combine.c (setup_incoming_promotions): Likewise.
12606         * tree-profile.c (tree_gen_ic_func_profiler): Likewise.
12607         * tree-ssa-structalias.c (delete_points_to_sets): Likewise.
12608         * passes.c (pass_inline_parameters): Update comments; remove
12609         O0_alwaysinline pass.
12610         (execute_one_ipa_transform_pass): Do not reset in_gimple_form.
12611         (execute_one_pass): Likewise.
12612         * i386.c (ix86_function_regparm): Remove unit-at-a-time check.
12613         (ix86_function_sseregparm): Likewise.
12614         * arm.c (arm_function_in_section_p): Likewise.
12615         * bfin.c (bfin_load_pic_reg, bfin_function_ok_for_sibcall): Likewise.
12616         * varpool.c: Update comments.
12617         (decide_is_variable_needed): Remove unit-at-a-time checks.
12618         (varpool_finalize_decl): Likewise.
12619
12620 2008-07-24  Kaz Kojima  <kkojima@gcc.gnu.org>
12621
12622         * config/sh/sh.h (OPTIMIZATION_OPTIONS): Set flag_omit_frame_pointer
12623         to 2 instead of -1.
12624         (OVERRIDE_OPTIONS): Check if flag_omit_frame_pointer is equal to 2.
12625
12626 2008-07-24  Kai Tietz  <kai.tietz@onevision.com>
12627
12628         * config/i386/i386.c (get_dllimport_decl): Treat user_label_prefix for
12629         imp symbol extension.
12630
12631         2008-07-23  Ian Lance Taylor  <iant@google.com>
12632
12633         * tree-vrp.c (infer_value_range): Ignore asm statements when
12634         looking for memory accesses for -fdelete-null-pointer-checks.
12635
12636 2008-07-24  Ben Elliston  <bje@au.ibm.com>
12637
12638         * config/spu/spu-c.c (__vector_keyword): New variable.
12639         (vector_keyword): Likewise.
12640         (spu_categorize_keyword): New function.
12641         (spu_macro_to_expand): Likewise.
12642         (spu_cpu_cpp_builtins): Enable context-sensitive macros if not
12643         compiling an ISO C dialect.
12644
12645 2008-07-24  Ben Elliston  <bje@au.ibm.com>
12646
12647         * config/rs6000/rs6000-c.c: Move GTY(()) markers to match
12648         conventional usage.
12649
12650 2008-07-23  Aaron W. LaFramboise  <aaronavay62@aaronwl.com>
12651
12652         * configure: Regenerate.
12653         * configure.ac: Require texinfo 4.7.
12654         * doc/install.texi: Document texinfo 4.7 requirement.
12655
12656 2008-07-23  Martin Jambor  <mjambor@suse.cz>
12657
12658         * ipa-cp.c (ipcp_print_edge_profiles): Test for node->analyzed
12659         rather than for DECL_SAVED_TREE.
12660         * ipa-prop.c: Include diagnostic.h.
12661         (ipa_check_stmt_modifications): Check LHS of GIMPLE_MODIFY_EXPRs
12662         thoroughly.
12663         (ipa_detect_param_modifications): Function rewritten from scratch.
12664         (ipa_compute_jump_functions): Changed accesses to modification flags.
12665         (ipa_free_node_params_substructures): Update flags destruction.
12666         (ipa_node_duplication_hook): Update flags duplication.
12667         (ipa_print_all_params_modified): Updated flag access.
12668         * ipa-prop.h (struct ipa_param_flags): New structure.
12669         (struct ipa_node_params): New field modification_analysis_done,
12670         modified_flags changed into param_flags.
12671         (ipa_is_ith_param_modified): Changed to use new flags.
12672         * Makefile.in (ipa-prop.o): Add $(DIAGNOSTIC_H) to dependencies.
12673
12674         * ipa-prop.c (ipa_print_all_jump_functions): Moved here from
12675         ipa-cp.c and split into two functions.
12676         (ipa_print_node_jump_functions): New function.
12677         (compute_scalar_jump_functions): New function.
12678         (type_like_member_ptr_p): New function.
12679         (compute_pass_through_member_ptrs): New function.
12680         (fill_member_ptr_cst_jump_function): New function.
12681         (determine_cst_member_ptr): New function.
12682         (compute_cst_member_ptr_arguments): New function.
12683         (ipa_compute_jump_functions): Complete rewrite.
12684         * ipa-prop.h (enum jump_func_type): Make explicit that we depend
12685         on IPA_UNKNOWN being zero. Added value IPA_CONST_MEMBER_PTR.
12686         (struct ipa_member_ptr_cst): New structure.
12687         (union jump_func_value): New field member_cst.
12688         * ipa-cp.c (ipcp_lat_is_insertable): New function.
12689         (ipcp_lattice_from_jfunc): Produces bottom lattices for unhandled
12690         jump function types.
12691         (ipcp_print_all_lattices): Slight fprintf rearrangement.
12692         (ipcp_print_all_structures): Call ipa_print_all_jump_functions
12693         instead of ipcp_print_all_jump_functions.
12694         (ipcp_insert_stage): Use ipcp_lat_is_insertable, create replace maps
12695         only for replacable scalars.
12696
12697         * doc/invoke.texi (Optimize options): Add description of
12698         -findirect-inlining.
12699         * common.opt (flag_indirect_inlining): New flag.
12700         * opts.c (decode_options): Set flag_indirect_inlining when
12701         optimize >= 3.
12702
12703         * ipa-inline.c: Include ipa-prop.h.
12704         (inline_indirect_intraprocedural_analysis): New function.
12705         (inline_generate_summary): Allocate parameter and argument info
12706         structures, call inline_indirect_intraprocedural_analysis on each
12707         node when doing indirect inlining and deallocate indirect inlining
12708         data structures in the end.
12709         * ipa-prop.c (ipa_create_param_decls_array): Return if already done.
12710         (free_all_ipa_structures_after_iinln): New function.
12711         (free_all_ipa_structures_after_ipa_cp): Checks whether iinln will be
12712         done.
12713         * Makefile.in (ipa-inline.o): Added $(IPA_PROP_H) to dependencies.
12714
12715         * cgraphbuild.c (compute_call_stmt_bb_frequency): New function.
12716         (build_cgraph_edges): Call compute_call_stmt_bb_frequency instead
12717         of computing the frequency separately.
12718         (rebuild_cgraph_edges): Call compute_call_stmt_bb_frequency instead
12719         of computing the frequency separately.
12720         * ipa-cp.c (ipcp_print_all_structures): Replace a call to
12721         ipa_print_all_param_modified with a call to ipa_print_all_param_flags.
12722         * ipa-prop.c (ipa_get_member_ptr_load_param): New function.
12723         (ipa_get_stmt_member_ptr_load_param): New function.
12724         (ipa_is_ssa_with_stmt_def): New function.
12725         (ipa_note_param_call): New function.
12726         (ipa_analyze_call_uses): New function.
12727         (ipa_analyze_stmt_uses): New function.
12728         (ipa_analyze_params_uses): New function.
12729         (ipa_free_node_params_substructures): Also free the param_calls linked
12730         list.
12731         (ipa_node_duplication_hook): Also duplicate the param_calls
12732         linked list.
12733         (ipa_print_node_param_flags): New function.
12734         (ipa_print_all_params_modified): Renamed to ipa_print_all_param_flags.
12735         (ipa_print_all_param_flags): Calls ipa_print_node_param_flags.
12736         * ipa-prop.h (struct ipa_param_flags): New field called.
12737         (struct ipa_param_call_note): New structure.
12738         (struct ipa_node_params): New fields param_calls and
12739         uses_analysis_done.
12740         (ipa_is_ith_param_called): New function.
12741         * ipa-inline.c (inline_indirect_intraprocedural_analysis): Call
12742         ipa_analyze_params_uses and dump parameter flags.
12743
12744         * ipa-inline.c (cgraph_decide_recursive_inlining): Call
12745         ipa_propagate_indirect_call_infos if performing indirect inlining,
12746         pass a new parameter new_edges to it.
12747         (add_new_edges_to_heap): New fucntion.
12748         (cgraph_decide_inlining_of_small_functions): New vector
12749         new_indirect_edges for newly found indirect edges , call
12750         ipa_propagate_indirect_call_infos after inlining.
12751         (cgraph_decide_inlining): Call ipa_propagate_indirect_call_infos after
12752         inlining if performing indirect inlining.  Call
12753         free_all_ipa_structures_after_iinln when doing so too.
12754         (inline_generate_summary): Do not call
12755         free_all_ipa_structures_after_iinln here.
12756         * ipa-prop.c (update_jump_functions_after_inlining): New function.
12757         (print_edge_addition_message): New function.
12758         (update_call_notes_after_inlining): New function.
12759         (propagate_info_to_inlined_callees): New function.
12760         (ipa_propagate_indirect_call_infos): New function.
12761         * ipa-prop.h: Include cgraph.h
12762         (struct ipa_param_call_note): Fields reordered, new field processed.
12763         * cgraph.h (cgraph_edge): Shrink loop_nest field to 31 bits, add a new
12764         flag indirect_call.
12765         * cgraphunit.c (verify_cgraph_node): Allow indirect edges not to have
12766         rediscovered call statements.
12767         * cgraph.c (cgraph_create_edge): Initialize indirect_call to zero.
12768         (dump_cgraph_node): Dump also the indirect_call flag.
12769         (cgraph_clone_edge): Copy also the indirect_call flag.
12770         * tree-inline.c (copy_bb): Do not check for fndecls from call
12771         expressions, check for edge availability when moving clones.
12772         (get_indirect_callee_fndecl): New function.
12773         (expand_call_inline): If callee declaration is not apprent from
12774         the statement, try calling get_indirect_callee_fndecl.  Do not
12775         issue warnings or call sorry when not inlinings an indirect edge.
12776         * Makefile.in (IPA_PROP_H): Added $(CGRAPH_H) to dependencies.
12777
12778         * ipa-prop.c (ipa_print_node_param_flags): Make the dump format a
12779         bit more frandly to matching.
12780         * testsuite/g++.dg/ipa/iinline-1.C: New testcase.
12781         * testsuite/gcc.dg/ipa/iinline-1.c: New testcase.
12782         * testsuite/gcc.dg/ipa/modif-1.c: New testcase.
12783
12784 2008-07-23  Michael Meissner  <gnu@the-meissners.org>
12785
12786         PR 36907
12787         * opth-gen.awk: Suppress function specific features when building
12788         target libraries.
12789         * optc-gen.awk: Ditto.
12790
12791 2008-07-23  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
12792
12793         PR 35058
12794         * diagnostic.c (pedwarn): Add opt parameter.
12795         (pedwarn0): New.
12796         * c-tree.h (pedwarn_init): Add opt parameter.
12797         (pedwarn_c90): Likewise.
12798         (pedwarn_c99): Likewise.
12799         * c-errors.c (pedwarn_c99): Likewise.
12800         (pedwarn_c90): Likewise.
12801         * toplev.h (pedwarn): Update declaration.
12802         (pedwarn0): Declare.
12803         * c-lex.c: All calls to pedwarn changed.
12804         * builtins.c: All calls to pedwarn changed.
12805         * toplev.c: All calls to pedwarn changed.
12806         * c-decl.c: All calls to pedwarn changed.
12807         * c-typeck.c: All calls to pedwarn changed.
12808         * c-common.c: All calls to pedwarn changed.
12809         * c-parser.c: All calls to pedwarn changed.
12810
12811 2008-07-23  Michael Meissner  <gnu@the-meissners.org>
12812             Karthik Kumar  <karthikkumar@gmail.com>
12813
12814         * attribs.c (file scope): Include c-common.h.
12815         (decl_attributes): Add support for #pragma GCC optimize and
12816         #pragma GCC option.
12817
12818         * targhooks.c (default_can_inline_p): New function that is the
12819         default for the TARGET_CAN_INLINE_P target hook.
12820
12821         * targhooks.h (default_can_inline_p): Add declaration.
12822
12823         * tree.c (cl_optimization_node): New static tree for building
12824         OPTIMIZATION_NODE tree.
12825         (cl_target_option_node): New static tree for building
12826         TARGET_OPTION_NODE tree.
12827         (cl_option_hash_table): New hash table for hashing
12828         OPTIMIZATION_NODE and TARGET_OPTION_NODE trees.
12829         (cl_option_hash_hash): New function to provide the hash value for
12830         OPTIMIZATION_NODE and TARGET_OPTION_NODE trees.
12831         (cl_option_hash_eq): New function to provide an equality test for
12832         OPTIMIZATION_NODE and TARGET_OPTION_NODE trees.
12833         (tree_code_size): Add support for OPTIMIZATION_NODE and
12834         TARGET_OPTION_NODE trees.
12835         (tree_code_structure): Add support for OPTIMIZATION_NODE and
12836         TARGET_OPTION_NODE trees.
12837         (build_optimization_node): Build a tree that has all of the
12838         current optimization options.
12839         (build_target_option_node): Build a tree that has the target
12840         options that might be changed on a per function basis.
12841
12842         * tree.h (file scope): Include options.h.
12843         (DECL_FUNCTION_SPECIFIC_TARGET): New accessor macro.
12844         (DECL_FUNCTION_SPECIFIC_OPTIMIZATION): Ditto.
12845         (TREE_OPTIMIZATION): Ditto.
12846         (TREE_TARGET_SPECIFIC): Ditto.
12847         (struct tree_function_decl): Add fields for remembering the
12848         current optimization options and target specific options.
12849         (struct tree_optimization_option): New tree variant that remembers
12850         the optimization options.
12851         (struct tree_target_option): New tree variant that remembers the
12852         target specific flags that might change for compiling a particular
12853         function.
12854         (union tree_node): Include tree_optimization_option and
12855         tree_target_option fields.
12856         (enum tree_index): Add TI_OPTIMIZATION_DEFAULT,
12857         TI_OPTIMIZATION_CURRENT, TI_OPTIMIZATION_COLD,
12858         TI_OPTIMIZATION_HOT, TI_TARGET_OPTION_DEFAULT,
12859         TI_TARGET_OPTION_CURRENT, TI_CURRENT_OPTION_PRAGMA,
12860         TI_CURRENT_OPTIMIZE_PRAGMA entries for saving function specific
12861         optimization and target options.
12862         (optimization_default_node): New macro to refer to global_trees
12863         field.
12864         (optimization_current_node): Ditto.
12865         (optimization_cold_node): Ditto.
12866         (optimization_hot_node): Ditto.
12867         (target_option_default_node): Ditto.
12868         (target_option_current_node): Ditto.
12869         (current_option_pragma): Ditto.
12870         (current_optimize_pragma): Ditto.
12871
12872         * target.h (struct gcc_target): Add valid_option_attribute_p,
12873         target_option_save, target_option_restore, target_option_print,
12874         target_option_pragma_parse, and can_inline_p hooks.
12875
12876         * toplev.h (parse_optimize_options): Add declaration.
12877         (fast_math_flags_struct_set_p): Ditto.
12878
12879         * c-cppbuiltin.c (c_cpp_builtins_optimize_pragma): New function to
12880         adjust the current __OPTIMIZE__, etc. macros when #pragma GCC
12881         optimize is used.
12882
12883         * ipa-inline.c (cgraph_decide_inlining_of_small_function): Call
12884         tree_can_inline_p hook to see if one function can inline another.
12885         (cgraph_decide_inlining): Ditto.
12886         (cgraph_decide_inlining_incrementally): Ditto.
12887
12888         * opts.c (decode_options): Add support for running multiple times
12889         to allow functions with different target or optimization options
12890         than was specified on the command line.
12891         (fast_math_flags_struct_set_p): New function that is similar to
12892         fast_math_flags_set_p, except it uses the values in the
12893         cl_optimization structure instead of global variables.
12894
12895         * optc-gen.awk: Add support for TargetSave to allow a back end to
12896         declare new fields that need to be saved when using function
12897         specific options.  Include flags.h and target.h in the options.c
12898         source.  Add support for Save to indicate which options can be set
12899         for individual functions.  Generate cl_optimize_save,
12900         cl_optimize_restore, cl_optimize_print, cl_target_option_save,
12901         cl_target_option_restore, cl_target_option_print functions to
12902         allow functions to use different optimization or target options.
12903
12904         * opt-functions.awk (var_type_struct): Return the type used for
12905         storing the field in a structure.
12906
12907         * opth-gen.awk: Add support for TargetSave to allow a back end to
12908         declare new fields that need to be saved when using function
12909         specific options.  Add support for Save to indicate which options
12910         can be set for individual functions.  Only generate one extern for
12911         Mask fields.  Generate cl_optimization and cl_target_option
12912         structures to remember optimization and target options.
12913
12914         * treestruct.def (TS_OPTIMIZATION): Add support for garbage
12915         collecting new tree nodes.
12916         (TS_TARGET_OPTION): Ditto.
12917
12918         * c-decl.c (merge_decls): Merge function specific target and
12919         optimization options.
12920
12921         * function.c (invoke_set_current_function_hook): If the function
12922         uses different optimization options, change the global variables
12923         to reflect this.
12924
12925         * coretypes.h (struct cl_optimization): Add forward reference.
12926         (struct cl_target_option): Ditto.
12927
12928         * c-pragma.c (option_stack): New static vector to remember the
12929         current #pragma GCC option stack.
12930         (handle_pragma_option): New function to support #pragma GCC option
12931         to change target options.
12932         (optimize_stack): New static vector to remember the current
12933         #pragma GCC optimize stack.
12934         (handle_pragma_optimize): New function to support #pragma GCC
12935         optimize to change optimization options.
12936         (init_pragma): Add support for #pragma GCC optimize and #pragma
12937         GCC option.
12938
12939         * tree.def (OPTIMIZATION_NODE): New tree code for remembering
12940         optimization options.
12941         (TARGET_OPTION_NODE): New tree code for remembering certain target
12942         options.
12943
12944         * print-tree.c (print_node): Add support for OPTIMIZATION_NODE and
12945         TARGET_OPTION_NODE trees.
12946
12947         * common.opt (-O): Add Optimization flag.
12948         (-Os): Ditto.
12949         (-fmath-errno): Ditto.
12950         (-falign-functions): Add UInteger flag to make sure flag gets full
12951         int in cl_optimization structure.
12952         (-falign-jumps): Ditto.
12953         (-falign-labels): Ditto.
12954         (-falign-loops): Ditto.
12955         (-fsched-stalled-insns): Ditto.
12956         (-fsched-stalled-insns-dep): Ditto.
12957
12958         * target-def.h (TARGET_VALID_OPTION_ATTRIBUTE_P): Add default
12959         definition.
12960         (TARGET_OPTION_SAVE): Ditto.
12961         (TARGET_OPTION_RESTORE): Ditto.
12962         (TARGET_OPTION_PRINT): Ditto.
12963         (TARGET_OPTION_PRAGMA_PARSE): Ditto.
12964         (TARGET_CAN_INLINE_P): Ditto.
12965         (TARGET_INITIALIZER): Add new hooks.
12966
12967         * tree-inline.c (tree_can_inline_p): New function to determine
12968         whether one function can inline another.  Check if the functions
12969         use compatible optimization options, and also call the backend
12970         can_inline_p hook.
12971
12972         * tree-inline.h (tree_can_inline_p): Add declaration.
12973
12974         * c-common.c (c_common_attribute): Add support for option and
12975         optimize attributes.
12976         (handle_option_attribute): Add support for the option attribute to
12977         allow the user to specify different target options for compiling a
12978         specific function.
12979         (handle_optimize_attribute): Add support for the optimize
12980         attribute to allow the user to specify different optimization
12981         options for compiling a specific function.
12982         (handle_hot_attribute): Turn on -O3 optimization for this one
12983         function if it isn't the default optimization level.
12984         (handle_cold_attribute): Turn on -Os optimization for this one
12985         function if it insn't the default optimization.
12986         (const_char_p): New const char * typedef.
12987         (optimize_args): New static vector to remember the optimization
12988         arguments.
12989         (parse_optimize_options): New function to set up the optimization
12990         arguments from either the optimize attribute or #pragma GCC optimize.
12991
12992         * c-common.h (c_cpp_builtins_optimize_pragma): Add declaration.
12993         (builtin_define_std): Ditto.
12994
12995         * config.gcc (i[3467]86-*-*): Add i386-c.o to C/C++ languages.
12996         Add t-i386 Makefile fragment to add i386-c.o and i386.o dependencies.
12997         (x86_64-*-*): Ditto.
12998
12999         * Makefile.in (TREE_H): Add options.h.
13000         (options.o): Add $(TARGET_H) $(FLAGS_H) dependencies.
13001
13002         * doc/extend.texi (option attribute): Document new attribute.
13003         (optimize attribute): Ditto.
13004         (hot attribute): Document hot attribute sets -O3.
13005         (cold attribute): Document cold attribute sets -Os.
13006         (#pragma GCC option): Document new pragma.
13007         (#pragma GCC optimize): Ditto.
13008
13009         * doc/options.texi (TargetSave): Document TargetSave syntax.
13010         (UInteger): Document UInteger must be used for certain flags.
13011         (Save): Document Save option to create target specific options
13012         that can be saved/restored on a function specific context.
13013
13014         * doc/c-tree.texi (DECL_FUNCTION_SPECIFIC_TARGET): Document new macro.
13015         (DECL_FUNCTION_SPECIFIC_OPTIMIZATION): Ditto.
13016
13017         * doc/tm.texi (TARGET_VALID_OPTION_ATTRIBUTE_P): Document new hook.
13018         (TARGET_OPTION_SAVE): Ditto.
13019         (TARGET_OPTION_RESTORE): Ditto.
13020         (TARGET_OPTION_PRINT): Ditto.
13021         (TARGET_OPTION_PRAGMA_PARSE): Ditto.
13022         (TARGET_CAN_INLINE_P): Ditto.
13023
13024         * doc/invoke.texi (-mfpmath=sse+387): Document as an alias for
13025         -mfpmath=sse,387.
13026         (-mfpmath=both): Ditto.
13027
13028 2008-07-23  Michael Meissner  <gnu@the-meissners.org>
13029             Karthik Kumar  <karthikkumar@gmail.com>
13030
13031         * config/i386/i386.h (TARGET_ABM): Move switch into ix86_isa_flags.
13032         (TARGET_POPCNT): Ditto.
13033         (TARGET_SAHF): Ditto.
13034         (TARGET_AES): Ditto.
13035         (TARGET_PCLMUL): Ditto.
13036         (TARGET_CMPXCHG16B): Ditto.
13037         (TARGET_RECIP): Move switch into target_flags.
13038         (TARGET_FUSED_MADD): Ditto.
13039         (ix86_arch_features): Make an unsigned char type.
13040         (ix86_tune_features): Ditto.
13041         (OVERRIDE_OPTIONS): Add bool argument to override_options call.
13042         (TARGET_CPU_CPP_BUILTINS): Move into ix86_target_macros.
13043         (REGISTER_TARGET_PRAGMAS): Define, call ix86_register_pragmas.
13044
13045         * config/i386/i386.opt (arch): New TargetSave field to define
13046         fields that need to be saved for function specific option support.
13047         (tune): Ditto.
13048         (fpmath): Ditto.
13049         (branch_cost): Ditto.
13050         (ix86_isa_flags_explicit): Ditto.
13051         (tune_defaulted): Ditto.
13052         (arch_specified): Ditto.
13053         (-m128-long-double): Add Save flag to save option for target
13054         specific option support.
13055         (-m80387): Ditto.
13056         (-maccumulate-outgoing-args): Ditto.
13057         (-malign-double): Ditto.
13058         (-malign-stringops): Ditto.
13059         (-mfancy-math-387): Ditto.
13060         (-mhard-float): Ditto.
13061         (-mieee-fp): Ditto.
13062         (-minline-all-stringops): Ditto.
13063         (-minline-stringops-dynamically): Ditto.
13064         (-mms-bitfields): Ditto.
13065         (-mno-align-stringops): Ditto.
13066         (-mno-fancy-math-387): Ditto.
13067         (-mno-push-args): Ditto.
13068         (-mno-red-zone): Ditto.
13069         (-mpush-args): Ditto.
13070         (-mred-zone): Ditto.
13071         (-mrtd): Ditto.
13072         (-msseregparm): Ditto.
13073         (-mstack-arg-probe): Ditto.
13074         (-m32): Ditto.
13075         (-m64): Ditto.
13076         (-mmmx): Ditto.
13077         (-m3dnow): Ditto.
13078         (-m3dnowa): Ditto.
13079         (-msse): Ditto.
13080         (-msse2): Ditto.
13081         (-msse3): Ditto.
13082         (-msse4.1): Ditto.
13083         (-msse4.2): Ditto.
13084         (-msse4): Ditto.
13085         (-mno-sse4): Ditto.
13086         (-msse4a): Ditto.
13087         (-msse5): Ditto.
13088         (-mrecip): Move flag into target_flags.
13089         (-mcld): Ditto.
13090         (-mno-fused-madd): Ditto.
13091         (-mfused-madd): Ditto.
13092         (-mabm): Move flag into ix86_isa_flags.
13093         (-mcx16): Ditto.
13094         (-mpopcnt): Ditto.
13095         (-msahf): Ditto.
13096         (-maes): Ditto.
13097         (-mpclmul): Ditto.
13098
13099         * config/i386/i386-c.c: New file for #pragma support.
13100         (ix86_target_macros_internal): New function to #define or #undef
13101         target macros based when the user uses the #pragma GCC option to
13102         change target options.
13103         (ix86_pragma_option_parse): New function to add #pragma GCC option
13104         support.
13105         (ix86_target_macros): Move defining the target macros here from
13106         TARGET_CPU_CPP_BUILTINS in i386.h.
13107         (ix86_register_pragmas): Register the #pragma GCC option hook.  If
13108         defined, initialize any subtarget #pragmas.
13109
13110         * config/i386/darwin.h (REGISTER_SUBTARGET_PRAGMAS): Rename from
13111         REGISTER_TARGET_PRAGMAS.
13112
13113         * config/i386/t-i386: New file for x86 dependencies.
13114         (i386.o): Make dependencies mirror the include files used.
13115         (i386-c.o): New file, add dependencies.
13116
13117         * config/i386/i386-protos.h (override_options): Add bool argument.
13118         (ix86_valid_option_attribute_tree): Add declaration.
13119         (ix86_target_macros): Ditto.
13120         (ix86_register_macros): Ditto.
13121
13122         * config/i386/i386.c (ix86_tune_features): Move initialization of
13123         the target masks to initial_ix86_tune_features to allow functions
13124         to have different target options.  Make type unsigned char,
13125         instead of unsigned int.
13126         (initial_ix86_tune_features): New static vector to hold processor
13127         masks for the tune variables.
13128         (ix86_arch_features): Move initialization of the target masks to
13129         initial_ix86_arch_features to allow functions to have different
13130         target options.  Make type unsigned char, instead of unsigned int.
13131         (initial_ix86_arch_features): New static vector to hold processor
13132         masks for the arch variables.
13133         (enum ix86_function_specific_strings): New enum to describe the
13134         string options used for attribute((option(...))).
13135         (ix86_target_string): New function to return a string that
13136         describes the target options.
13137         (ix86_debug_options): New function to print the current options in
13138         the debugger.
13139         (ix86_function_specific_save): New function hook to save the
13140         function specific global variables in the cl_target_option structure.
13141         (ix86_function_specific_restore): New function hook to restore the
13142         function specific variables from the cl_target_option structure to
13143         the global variables.
13144         (ix86_function_specific_print): New function hook to print the
13145         target specific options in the cl_target_option structure.
13146         (ix86_valid_option_attribute_p): New function hook to validate
13147         attribute((option(...))) arguments.
13148         (ix86_valid_option_attribute_tree): New function that is common
13149         code between attribute((option(...))) and #pragma GCC option
13150         support that parses the options and returns a tree holding the options.
13151         (ix86_valid_option_attribute_inner_p): New helper function for
13152         ix86_valid_option_attribute_tree.
13153         (ix86_can_inline_p): New function hook to decide if one function
13154         can inline another on a target specific basis.
13155         (ix86_set_current_function); New function hook to switch target
13156         options if the user used attribute((option(...))) or #pragma GCC
13157         option.
13158         (ix86_tune_defaulted): Move to static file scope from
13159         override_options.
13160         (ix86_arch_specified): Ditto.
13161         (OPTION_MASK_ISA_AES_SET): New macro for moving switches into
13162         ix86_isa_flags.
13163         (OPTION_MASK_ISA_PCLMUL_SET): Ditto.
13164         (OPTION_MASK_ISA_ABM_SET): Ditto.
13165         (OPTION_MASK_ISA_POPCNT_SET): Ditto.
13166         (OPTION_MASK_ISA_CX16_SET): Ditto.
13167         (OPTION_MASK_ISA_SAHF_SET): Ditto.
13168         (OPTION_MASK_ISA_AES_UNSET): Ditto.
13169         (OPTION_MASK_ISA_PCLMUL_UNSET): Ditto.
13170         (OPTION_MASK_ISA_ABM_UNSET): Ditto.
13171         (OPTION_MASK_ISA_POPCNT_UNSET): Ditto.
13172         (OPTION_MASK_ISA_CX16_UNSET): Ditto.
13173         (OPTION_MASK_ISA_SAHF_UNSET): Ditto.
13174         (struct ptt): Move to static file scope from override_options.
13175         (processor_target_table): Ditto.
13176         (cpu_names): Ditto.
13177         (ix86_handle_option): Add support for options that are now isa options.
13178         (override_options): Add support for declaring functions that
13179         support different target options than were specified on the
13180         command line.  Move struct ptt, processor_target_table, cpu_names,
13181         ix86_tune_defaulted, ix86_arch_specified to static file scope.
13182         Add bool argument.  Fix up error messages so the appropriate error
13183         is given for either command line or attribute.
13184         (ix86_previous_fndecl): New static to remember previous function
13185         declaration to see if we need to change target options.
13186         (ix86_builtins_isa): New array to record the ISA of each builtin
13187         function.
13188         (def_builtin): Always create the builtin function, even if the
13189         current ISA doesn't support it.
13190         (ix86_init_mmx_sse_builtins): Remove TARGET_AES and TARGET_PCLMUL
13191         tests for those builtins.
13192         (ix86_init_builtins): Remove TARGET_MMX test for calling
13193         ix86_init_mmx_sse_builtins.
13194         (ix86_expand_builtin): If the current ISA doesn't support a given
13195         builtin, signal an error.
13196         (TARGET_VALID_OPTION_ATTRIBUTE_P): Set target hook.
13197         (TARGET_SET_CURRENT_FUNCTION): Ditto.
13198         (TARGET_OPTION_SAVE): Ditto.
13199         (TARGET_OPTION_RESTORE): Ditto.
13200         (TARGET_OPTION_PRINT): Ditto.
13201         (TARGET_CAN_INLINE_P): Ditto.
13202
13203 2008-07-22  Rafael Ávila de Espíndola  <espindola@google.com>
13204
13205         * c-typeck.c (build_external_ref): Don't call assemble_external.
13206         * final.c (output_operand): Call assemble_external.
13207
13208 2008-07-21  DJ Delorie  <dj@redhat.com>
13209
13210         * config/h8300/h8300.c (h8300_hard_regno_scratch_ok): New.
13211         (TARGET_HARD_REGNO_SCRATCH_OK): Define.
13212
13213 2008-07-21  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
13214
13215         * config/spu/spu.md ("div<mode>3"): Convert into expander, move
13216         original insn and splitter contents into ...
13217         ("*div<mode>3_fast"): ... this new pattern.  Enable only if
13218         flag_unsafe_math_optimizations.  Add dummy scratch register.
13219         ("*div<mode>3_adjusted"): New insn and splitter.  Enable only if
13220         !flag_unsafe_math_optimizations.  Returns number with next
13221         highest magnitude if this is still less or equal to the true
13222         quotient in magnitude.
13223
13224 2008-07-21  Rafael Ávila de Espíndola  <espindola@google.com>
13225
13226         * Makefile.in: Replace toplev.h with TOPLEV_H.
13227         * c-decl.c (merge_decls): Don't set DECL_IN_SYSTEM_HEADER.
13228         * c-lex.c (fe_file_change): Don't set in_system_header.
13229         * c-parser.c (c_token): Remove in_system_header.
13230         (c_lex_one_token): Don't set in_system_header.
13231         (c_parser_set_source_position_from_token): Don't set in_system_header.
13232         * diagnostic.c (diagnostic_report_diagnostic): Use location from
13233         diagnostic_info.
13234         (warning_at): New.
13235         * diagnostic.h (diagnostic_report_warnings_p): Add LOC argument.
13236         * flags.h (in_system_header): Remove.
13237         * function.c (saved_in_system_header): Remove.
13238         (push_cfun): Don't set in_system_header.
13239         (pop_cfun): Don't set in_system_header.
13240         (push_struct_function): Don't set in_system_header.
13241         * input.h (expanded_location): Add sysp.
13242         (in_system_header_at): New.
13243         (in_system_header): New.
13244         * toplev.c (in_system_header): Remove.
13245         * toplev.h: Include input.h
13246         (warning_at): New.
13247         * tree-cfg.c (execute_warn_function_return): Call warning_at.
13248         * tree-ssa.c (warn_uninit): Call warning_at.
13249         (warn_uninitialized_var): Update calls to warn_uninit.
13250         (warn_uninitialized_phi): Update calls to warn_uninit.
13251         * tree.c (make_node_stat): Don't set DECL_IN_SYSTEM_HEADER.
13252         (expand_location): Initialize xloc.sysp.
13253         * tree.h (DECL_IN_SYSTEM_HEADER): Use in_system_header_at.
13254         (tree_decl_with_vis): Remove in_system_header_flag.
13255
13256 2008-07-21  Andreas Krebbel  <krebbel1@de.ibm.com>
13257
13258         PR target/36822
13259         * recog.c (asm_operand_ok): Change the order of the extra
13260         memory constraint checks.
13261
13262 2008-07-20  Andrew Pinski  <andrew_pinski@playstation.sony.com>
13263
13264         PR tree-opt/36879
13265         * tree-switch-conversion.c (build_one_array): Call
13266         varpool_mark_needed_node and varpool_finalize_decl
13267         instead of assemble_variable.
13268
13269 2008-07-19  Jan Hubicka  <jh@suse.cz>
13270
13271         * cgraph.c (cgraph_add_new_function): Do early local passes.
13272         * tree-nrv.c (gate_pass_return_slot): New gate.
13273         (pass_nrv): Add the gate.
13274         * tree-ssa-coalese.c (hash_ssa_name_by_var, eq_ssa_name_by_var): New
13275         functions.
13276         (coalesce_ssa_name): Coalesce SSA names.
13277         * tree-ssa-live.c (remove_unused_locals): Be more conservative when
13278         not optimizing so unused user vars remains visible.
13279         * common.opt (flag_tree_ter): Always enable by default.
13280         * tree-ssa-ter.c: Include flags.h
13281         (is_replaceable_p): Check that locations match; when aliasing
13282         is missing be conservative about loads.
13283         * tree-optimize.c (gate_init_datastructures): Remove.
13284         (pass_init_datastructures): New.
13285         * passes.c: Reorder passes so we always go into SSA.
13286
13287 2008-07-19  Jan Hubicka  <jh@suse.cz>
13288
13289         * doc/extend.texi (flatten attribute): Remove note about
13290         unit-at-a-time.
13291         * doc/invoke.texi (--combine): Likewise.
13292         (-finline-functions-called-once): Update levels when enabled.
13293         (-funit-at-a-time): Document new behaviour.
13294         (-ftoplevel-reorder): Document that it is enabled -O0 and imply
13295         -fno-section-anchors when disabled explicitly.
13296         (inline params): They are not ignored now.
13297         (precompiled headers): Remove unit-at-a-time as being incompatible.
13298         * opts.c (decode_options): Handle unit-at-a-time as alias;
13299         imply -fno-section-anchors when toplevel reorder is disabled
13300         explicitly.
13301         * common.opt (ftoplevel-reorder): Set default value to 2.
13302         (funit-at-a-time): Set default value to 1.
13303         * config/rs6000/rs6000.c (optimization_options): Set section anchors
13304         to 2.
13305
13306 2008-07-19  Jan Hubicka  <jh@suse.cz>
13307
13308         * builtins.c (expand_builtin_int_roundingfn,
13309         expand_builtin_int_roundingfn_2): Do not take subtarget argument;
13310         it is not useful.
13311
13312 2008-07-19  Richard Guenther  <rguenther@suse.de>
13313
13314         PR bootstrap/36864
13315         * tree-ssa-sccvn.h (get_constant_value_id): Declare.
13316         * tree-ssa-sccvn.c (get_constant_value_id): New function.
13317         * tree-ssa-pre.c (get_expr_value_id): For newly created
13318         constant value-ids make sure to add the expression to its
13319         expression-set.
13320
13321 2008-07-19  Jakub Jelinek  <jakub@redhat.com>
13322
13323         PR middle-end/36877
13324         * omp-low.c (expand_omp_atomic_fetch_op): Make sure the
13325         return value of the builtin is ignored.
13326
13327 2008-07-19  Olivier Hainque  <hainque@adacore.com>
13328
13329         * doc/tm.texi (MALLOC_ABI_ALIGNMENT): New macro. Alignment, in
13330         bits, a C conformant malloc implementation has to provide.
13331         * defaults.h (MALLOC_ABI_ALIGNMENT): Default to BITS_PER_WORD.
13332
13333 2008-07-19  Joseph Myers  <joseph@codesourcery.com>
13334
13335         PR target/36780
13336         PR target/36827
13337         * reload.c (find_reloads_subreg_address): Only reload address if
13338         reloaded == 0, not for reloaded != 1.
13339
13340         Revert:
13341         2008-07-16  Joseph Myers  <joseph@codesourcery.com>
13342         * config/m32c/m32c.c (BIG_FB_ADJ): Move definition earlier.
13343         (m32c_legitimate_address_p): Handle "++rii" addresses created by
13344         m32c_legitimize_reload_address.
13345
13346         2008-07-15  Kaz Kojima  <kkojima@gcc.gnu.org>
13347         * config/sh/sh.h (GO_IF_LEGITIMATE_ADDRESS): Allow
13348         (plus (plus (reg) (const_int)) (const_int)) when reload_in_progress.
13349
13350 2008-07-19  Olivier Hainque  <hainque@adacore.com>
13351
13352         * dwarf2out.c (add_subscript_info): New explicit COLLAPSE_P
13353         argument, saying whether nested array are to be collapsed
13354         into a single array type DIE with multiple subscripts.
13355         (gen_array_type_die): Factorize comments about the MIPS_DEBUG_INFO
13356         issues, centralize the nested array types collapsing control and
13357         disable the transformation for Ada.
13358
13359 2008-07-18  Uros Bizjak  <ubizjak@gmail.com>
13360
13361         PR target/36786
13362         * config/i386/i386.md (x86_64_shift_adj_1): Rename from
13363         x86_64_shift_adj.
13364         (x86_64_shift_adj_2): New expander.
13365         (x86_64_shift_adj_3): Ditto.
13366         * config/i386/i386.c (ix86_split_ashr): Use gen_x86_64_shift_adj_3
13367         to split TImode operands.
13368         (ix86_split_ashl): Use gen_x86_64_shift_adj_2 to split TImode operands.
13369         (ix86_split_lshr): Ditto.
13370
13371 2008-07-18  Kris Van Hees  <kris.van.hees@oracle.com>
13372
13373         * c-common.c (c_stddef_cpp_builtins): Define __CHAR16_TYPE__
13374         and __CHAR32_TYPE__.
13375         * c-typeck.c (digest_init): Support char16_t and char32_t.
13376         (set_nonincremental_init_from_string): Idem.
13377
13378 2008-07-18  H.J. Lu  <hongjiu.lu@intel.com>
13379
13380         PR middle-end/36859
13381         * builtins.c (std_gimplify_va_arg_expr): Limit alignment to
13382         PREFERRED_STACK_BOUNDARY.
13383         * config/i386/i386.c (ix86_gimplify_va_arg): Likewise.
13384
13385 2008-07-18  H.J. Lu  <hongjiu.lu@intel.com>
13386
13387         PR middle-end/36858
13388         * function.c (locate_and_pad_parm): Cap boundary earlier.
13389
13390 2008-07-17  Julian Brown  <julian@codesourcery.com>
13391
13392         * config/arm/arm.c (arm_cxx_determine_class_data_visibility): Make
13393         no-op for targets which don't use DLLs.
13394
13395 2008-07-17  Martin Jambor  <mjambor@suse.cz>
13396
13397         * ipa-cp.c (ipcp_print_all_lattices): New variable info, check
13398         that nodes are relevant by examining the node->analyzed flag.
13399         (ipcp_init_stage): Check which nodes are relevant, assert that the
13400         relevant ones are also required.
13401         (ipcp_propagate_stage): Check on the side arrays are properly
13402         allocated.
13403         (ipcp_print_all_jump_functions): Make sure not to touch any node
13404         that is not analyzed or an edge that does not have a corresponding
13405         entry in the on-the-side vectors.
13406         (ipcp_function_scale_print): Likewise.
13407         (ipcp_update_callgraph): Check that the node is relevant.
13408         (ipcp_insert_stage): Check that the node is relevant.  Check there is
13409         an info for every node and edge.
13410         * ipa-prop.c (ipa_init_func_list): Check the nodes are relevant.
13411         (ipa_print_all_tree_maps): Likewise and a new variable info.
13412         (ipa_print_all_params_modified): Likewise.
13413         * ipa-prop.h (ipa_edge_args_info_available_for_edge_p): New function.
13414
13415 2008-07-17  Roman Zippel <zippel@linux-m68k.org>
13416
13417         PR target/25343
13418         * config/host-linux.c (TRY_EMPTY_VM_SPACE): Define for __mc68000__.
13419
13420 2008-07-17  Paolo Bonzini  <bonzini@gnu.org>
13421
13422         PR rtl-optimization/36753
13423         * fwprop.c (use_killed_between): Don't shortcut
13424         single-definition global registers.
13425
13426 2008-07-16  Jan Hubicka  <jh@suse.cz>
13427
13428         * cgraph.h (varpool_empty_needed_queue): Declare.
13429         * cgraphunit.c (output_in_order): Mark all variables as needed;
13430         empty the queue.
13431         * varpool.c (varpool_assemble_node): Update debug queue.
13432         (varpool_assemble_pending_decls): Don't do it here.
13433         (varpool_empty_needed_queue):  New function.
13434
13435 2008-07-16  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
13436
13437         * recog.c (peephole2_optimize): Fix formatting.
13438
13439 2008-07-16  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
13440
13441         * c-pch.c (get_ident): Avoid C++ keywords.
13442         * combine-stack-adj.c (single_set_for_csa): Likewise.
13443         * final.c (asm_insn_count, final_scan_insn, alter_subreg,
13444         output_asm_insn): Likewise.
13445         * reload.c (push_secondary_reload, find_reusable_reload,
13446         push_reload, combine_reloads, find_reloads,
13447         debug_reload_to_stream): Likewise.
13448         * reload.h (struct reload): Likewise.
13449         * reload1.c (reload_reg_class_lower, find_reg, find_reload_regs,
13450         allocate_reload_reg, choose_reload_regs, emit_input_reload_insns,
13451         emit_output_reload_insns): Likewise.
13452         * targhooks.c (default_secondary_reload): Likewise.
13453         * varasm.c (section_entry_eq, object_block_entry_eq): Likewise.
13454
13455 2008-07-16  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
13456
13457         * recog.c (validate_change_1, validate_change,
13458         validate_unshare_change, validate_replace_rtx_1, struct
13459         funny_match, constrain_operands, peephole2_optimize): Avoid C++
13460         keywords.
13461         * reload.c (push_secondary_reload, secondary_reload_class,
13462         scratch_reload_class, find_valid_class, find_reusable_reload,
13463         push_reload, find_dummy_reload, find_reloads_address_1,
13464         find_reloads_address_part, find_equiv_reg): Likewise.
13465         * reload1.c (spill_failure, eliminate_regs_1, allocate_reload_reg,
13466         choose_reload_regs): Likewise.
13467         * rtlanal.c (replace_rtx, nonzero_bits1, num_sign_bit_copies1):
13468         Likewise.
13469         * rtlhooks.c (gen_lowpart_if_possible): Likewise.
13470         * sched-ebb.c (add_deps_for_risky_insns): Likewise.
13471         * sched-rgn.c (concat_INSN_LIST): Likewise.
13472         * stor-layout.c (mode_for_size, mode_for_size_tree,
13473         smallest_mode_for_size): Likewise.
13474
13475 2008-07-16  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
13476
13477         * cfg.c (dump_reg_info): Avoid C++ keywords.
13478         * dwarf2asm.c (dw2_force_const_mem,
13479         dw2_asm_output_encoded_addr_rtx): Likewise.
13480         * except.c (gen_eh_region, add_action_record, output_ttype): Likewise.
13481         * expmed.c (expand_shift): Likewise.
13482         * global.c (find_reg): Likewise.
13483         * graph.c (draw_edge): Likewise.
13484         * local-alloc.c (reg_meets_class_p, find_free_reg): Likewise.
13485         * optabs.c (expand_binop, expand_twoval_unop, expand_twoval_binop,
13486         widen_clz, widen_bswap, expand_parity, expand_unop,
13487         emit_cmp_and_jump_insn_1): Likewise.
13488         * postreload.c (reload_cse_simplify_operands): Likewise.
13489         * ra.h (add_neighbor): Likewise.
13490         * reg-stack.c (remove_regno_note, change_stack): Likewise.
13491         * regclass.c (memory_move_secondary_cost, dump_regclass, regclass,
13492         record_reg_classes, copy_cost, record_address_regs,
13493         invalid_mode_change_p): Likewise.
13494         * regrename.c (regrename_optimize, scan_rtx_reg,
13495         dump_def_use_chain, find_oldest_value_reg,
13496         replace_oldest_value_reg, copyprop_hardreg_forward_1): Likewise.
13497
13498 2008-07-16  David Edelsohn  <edelsohn@gnu.org>
13499
13500         * config/rs6000/rs6000.c (processor_target_table): Remove duplicate
13501         MASK_POWERPC64 for power4 in previous commit.
13502
13503 2008-07-16  Olivier Hainque  <hainque@adacore.com>
13504
13505         * collect2.c (scan_prog_file, COFF version): Use CONST_CAST
13506         instead of bare conversion to cast const-ness away.
13507
13508 2008-07-16  Anatoly Sokolov  <aesok@post.ru>
13509
13510         * config/xtensa/xtensa.h (FUNCTION_OUTGOING_VALUE,
13511         XTENSA_FUNCTION_VALUE, XTENSA_FUNCTION_VALUE): Remove.
13512         * config/xtensa/xtensa.c (xtensa_function_value): New function.
13513         (TARGET_FUNCTION_VALUE): Define.
13514
13515 2008-07-16  David Edelsohn  <edelsohn@gnu.org>
13516
13517         * config/rs6000/rs6000.c (processor_target_table): Add
13518         MASK_PPC_GPOPT for power4, power5, power5+, power6, and power6x.
13519
13520 2008-07-16  Joseph Myers  <joseph@codesourcery.com>
13521
13522         PR target/36827
13523         * config/m32c/m32c.c (BIG_FB_ADJ): Move definition earlier.
13524         (m32c_legitimate_address_p): Handle "++rii" addresses created by
13525         m32c_legitimize_reload_address.
13526
13527 2007-07-16  Rafael Ávila de Espíndola  <espindola@google.com>
13528
13529         * c-decl.c (merge_decls): Keep DECL_SOURCE_LOCATION and
13530         DECL_IN_SYSTEM_HEADER in sync.
13531
13532 2008-07-15  Daniel Berlin  <dberlin@dberlin.org>
13533
13534         * tree-ssa-sccvn.c (expressions_equal_p): Check type equality.
13535         * tree-ssa-pre.c (pre_expr_eq): Ditto
13536         (get_constant_for_value_id): Take a type as an argument.
13537         (fully_constant_expression): Pass in type.
13538         (find_or_generate_expression): Short circuit constant case.
13539         (create_expression_by_pieces): Remove special casing of
13540         pointer_plus.
13541         (do_regular_insertion): Short circuit constant case.
13542         (do_partial_partial_insertion): Ditto.
13543
13544 2008-07-15  Kaz Kojima  <kkojima@gcc.gnu.org>
13545
13546         PR target/36782
13547         * config/sh/sh.md (symGOT_load): Don't add REG_EQUAL note.
13548
13549 2008-07-15  Bob Wilson  <bob.wilson@acm.org>
13550
13551         * config/xtensa/libgcc-xtensa.ver: New file.
13552         * config/xtensa/t-linux (SHLIB_MAPFILES): Append libgcc-xtensa.ver.
13553
13554 2008-07-15  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
13555
13556         * df-problems.c (df_set_note): Avoid C++ keywords.
13557         * df-scan.c (df_ref_change_reg_with_loc_1): Likewise.
13558         * dse.c (record_store, remove_useless_values): Likewise.
13559         * emit-rtl.c (gen_reg_rtx, update_reg_offset, gen_rtx_REG_offset,
13560         gen_reg_rtx_offset, operand_subword, change_address_1,
13561         change_address, adjust_address_1, offset_address,
13562         widen_memory_access, emit_copy_of_insn_after): Likewise.
13563         * explow.c (round_push, allocate_dynamic_stack_space): Likewise.
13564         * fwprop.c (should_replace_address, propagate_rtx_1,
13565         propagate_rtx, try_fwprop_subst, forward_propagate_and_simplify):
13566         Likewise.
13567         * gcse.c (cprop_jump, find_implicit_sets, bypass_block,
13568         gcse_emit_move_after, update_ld_motion_stores): Likewise.
13569         * lcm.c (compute_insert_delete, pre_edge_lcm,
13570         compute_rev_insert_delete, pre_edge_rev_lcm): Likewise.
13571         * lower-subreg.c (resolve_reg_notes): Likewise.
13572         * mode-switching.c (optimize_mode_switching): Likewise.
13573
13574 2008-07-15  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
13575
13576         * bt-load.c (add_btr_def, migrate_btr_def,
13577         branch_target_load_optimize): Avoid C++ keywords.
13578         * caller-save.c (insert_restore, insert_save, insert_one_insn):
13579         Likewise.
13580         * combine.c (subst, simplify_set, make_extraction,
13581         make_compound_operation, known_cond, simplify_shift_const_1): Likewise.
13582         * cse.c (make_regs_eqv, merge_equiv_classes, validate_canon_reg,
13583         fold_rtx, equiv_constant, cse_insn, cse_process_notes_1): Likewise.
13584
13585 2008-07-15  Richard Guenther  <rguenther@suse.de>
13586
13587         PR middle-end/36369
13588         * c-common.c (strict_aliasing_warning): Do not warn for
13589         TYPE_REF_CAN_ALIAS_ALL pointers.
13590         (c_common_get_alias_set): may_alias types are not special.
13591         * tree.c (build_pointer_type_for_mode): Look up the may_alias
13592         attribute and set can_ref_all accordingly.
13593         (build_reference_type_for_mode): Likewise.
13594         * doc/extend.texi (may_alias): Clarify.
13595
13596 2008-07-15  Kaz Kojima  <kkojima@gcc.gnu.org>
13597
13598         PR target/36780
13599         * config/sh/sh.h (GO_IF_LEGITIMATE_ADDRESS): Allow
13600         (plus (plus (reg) (const_int)) (const_int)) when reload_in_progress.
13601
13602 2008-07-15  Andrew Pinski  <andrew_pinski@playstation.sony.com>
13603
13604         PR target/31568
13605         * config/rs6000/rs6000.c (print_operand <case 'y'>): Don't use
13606         gcc_assert, instead call output_operand_lossage.
13607
13608 2008-07-15  Kai Tietz  <kai.tietz@onevision.com>
13609
13610         * builtins.c (std_canonical_va_list): Treat structure based
13611         va_list types.
13612
13613 2008-07-15  Ben Elliston  <bje@au.ibm.com>
13614
13615         * emit-rtl.c (set_mem_attributes_minus_bitpos): Improve comment.
13616
13617 2007-07-14  Rafael Ávila de Espíndola  <espindola@google.com>
13618
13619         * c-decl.c (diagnose_mismatched_decls): Don't warn if TREE_NO_WARNING
13620         is set.
13621
13622 2008-07-14  Jan Hubicka  <jh@suse.cz>
13623
13624         * i386.md (sse5 cmov pattern): Update call of ix86_sse5_valid_op_p
13625         * sse.md (sse5 patterns): Update call of ix86_sse5_valid_op_p;
13626         fix predicates and constraints.
13627         * i386.c (ix86_sse5_valid_op_p): Add commutative parameter.
13628         * i386-protos.h (ix86_sse5_valid_op_p): Update declaration.
13629
13630 2008-07-14  Doug Kwan  <dougkwan@google.com>
13631
13632         * config.gcc (arm*-*-eabi*): Include arm/eabi.h and use
13633         additional option file arm/eabi.opt.
13634         * config/arm/eabi.h (File): New configuration file for EABI targets.
13635         * config/arm/elf.h (SUBTARGET_EXTRA_SPECS): Add
13636         SUBSUBTARGET_EXTRA_SPECS.
13637         (SUBSUBTARGET_EXTRA_SPECS): Provide empty default.
13638         * config/arm/unknown-elf.h (UNKNOWN_ELF_STARTFILE_SPEC): Renamed
13639         from STARTFILE_SPEC so that it can be referenced in an override.
13640         (STARTFILE_SPEC): Use UNKNOWN_ELF_STARTFILE_SPEC.
13641         (UNKNOWN_ELF_ENDFILE_SPEC): Renamed from ENDFILE_SPEC so that it
13642         can be referenced in an override.
13643         (ENDFILE_SPEC): Use UNKNOWN_ELF_ENDFILE_SPEC.
13644         * config/arm/bpabi.h (BPABI_LINK_SPEC): Renamed from LINK_SPEC
13645         so that it can be referenced in an override.
13646         (LINK_SPEC): Use BPABI_LINK_SPEC.
13647         * config/arm/eabi.opt (File): New.
13648
13649 2008-07-14  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
13650
13651         * Makefile.in (TARGET_DEF_H): Add targhooks.h.
13652         (FIXED_VALUE_H): New variable.
13653         (RTL_BASE_H): Use $(INPUT_H) and $(FIXED_VALUE_H) instead of
13654         input.h, fixed-value.h.
13655         (TREE_H): Use $(INPUT_H), add $(SYMTAB_H).
13656         (BASIC_BLOCK_H): Use $(BITMAP_H).
13657         (FUNCTION_H): Add varray.h.
13658         (IPA_REFERENCE_H): Use $(BITMAP_H).
13659         (CGRAPH_H): Add $(BASIC_BLOCK_H).
13660         (DF_H): Use $(BITMAP_H).
13661         (GGC_H): Add statistics.h.
13662         (INSN_ADDR_H): New.
13663         (INSN_ATTR_H): Use it.
13664         (SYSTEM_H): Add safe-ctype.h, filenames.h.
13665         (INPUT_H): New.
13666         (SYMTAB_H): Add $(OBSTACK_H).
13667         (CPP_INTERNAL_H): New.
13668         (TREE_DUMP_H): Add tree-pass.h.
13669         (TREE_FLOW_H): Use $(BITMAP_H)
13670         (PRETTY_PRINT_H): Use $(INPUT_H).
13671         (EBITMAP_H): Rename from typo-ed EBIMAP_H.
13672         (GSTAB_H): New.
13673         (BITMAP_H): New.
13674         (many object files): Fix lots of header dependencies throughout.
13675
13676 2008-07-14  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
13677
13678         * Makefile.in (write_entries_to_file, write_entries_to_file_split):
13679         New macros.
13680         (s-gtyp-input): Use them to write tmp-gi.list.
13681         (echo_to_gi.list): Remove.
13682
13683 2008-07-14  Richard Guenther  <rguenther@suse.de>
13684
13685         * tree-ssa-sccvn.c (pre_info): Remove.
13686         (switch_to_PRE_table): Likewise.
13687         (free_scc_vn): Do not clear SSA_NAME_VALUE.  Do not free pre_info.
13688         (set_hashtable_value_ids): Do not create value-ids for the
13689         optimistic tables.
13690         (run_scc_vn): Remove double test.  Remove bogus special-case
13691         in value-number printing.
13692         * tree-ssa-sccvn.h (switch_to_PRE_table): Remove.
13693         * tree-ssa-ccp.c (get_symbol_constant_value): Do not look at
13694         SSA_NAME_VALUE.
13695         * tree-flow-inline.h (get_value_handle): Remove.
13696         * tree-flow.h (get_value_handle): Remove.
13697
13698 2008-07-14  Martin Jambor  <mjambor@suse.cz>
13699
13700         * tree-switch-conversion.c (gen_inbound_check): Make sure the type
13701         in which we generate arithmetics is not a subrange.
13702
13703 2008-07-14  Martin Jambor  <mjambor@suse.cz>
13704
13705         * Makefile.in (IPA_PROP_H): Added ipa-prop.h to IPA_PROP_H variable.
13706
13707 2008-07-14  Richard Guenther  <rguenther@suse.de>
13708
13709         * tree-ssa-pre.c (insert_into_preds_of_block): Do not call convert.
13710
13711 2008-07-14  Andreas Krebbel  <krebbel1@de.ibm.com>
13712
13713         PR target/36745
13714         * config/s390/s390.c: (s390_secondary_reload): Add a secondary
13715         reload for symbol refs moved to r0 with -fPIC.
13716         (legitimize_pic_address): Use the target register as temporary
13717         reg if possible.
13718         (emit_symbolic_move): Adjust comment.
13719         * config/s390/s390.md (reloadsi_PIC_addr, reloaddi_PIC_addr):
13720         New expanders.
13721
13722 2008-07-14  Ben Elliston  <bje@au.ibm.com>
13723
13724         * c-common.h (C_CPP_HASHNODE): New macro.
13725         * coretypes.h (struct cpp_token): Forward declare.
13726         * doc/extend.texi (PowerPC AltiVec Built-in Functions): Document
13727         the context-sensitive keyword method.
13728         * config/rs6000/rs6000-c.c (__vector_keyword, vector_keyword,
13729         __pixel_keyword, pixel_keyword, __bool_keyword, bool_keyword,
13730         expand_bool_pixel): New.
13731         (altivec_categorize_keyword): New function.
13732         (init_vector_keywords): New function.
13733         (rs6000_macro_to_expand): Likewise.
13734         (rs6000_cpu_cpp_builtins): Enable context-sensitive macros if not
13735         compiling an ISO C dialect.
13736
13737 2008-07-13  Daniel Berlin  <dberlin@dberlin.org>
13738
13739         * tree-ssa-pre.c (fully_constant_expression): Add fold_convert calls.
13740         (create_expression_by_pieces): Fix typo.
13741         (do_regular_insertion): Use debug counter here too.
13742
13743 2008-07-14  Hans-Peter Nilsson  <hp@axis.com>
13744
13745         PR target/35492.
13746         * config/cris/cris.h (CRIS_CONST_OK_FOR_LETTER_P): Renamed from
13747         CONST_OK_FOR_LETTER_P.  All port-local users changed.
13748         (CONST_OK_FOR_CONSTRAINT_P): Define; implement Kc as old K,
13749         implement Kp matching power-of-two.
13750         (CONSTRAINT_LEN): Define to match.
13751         * config/cris/cris.md: Replace all use of constraint K with Kc.
13752         ("*btst*): Use Kp for operand 0 of last alternative.
13753
13754 2008-07-13  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
13755
13756         PR testsuite/36440
13757         * tree-call-cdce.c (check_target_format): Accept MIPS single, double
13758         and quad formats.
13759
13760 2008-07-13  Jan Hubicka  <jh@suse.cz>
13761
13762         * tree.c (decl_assembler_name_equal): Expect assembler name of decl
13763         to be mangled too.
13764
13765 2008-07-13  Richard Guenther  <rguenther@suse.de>
13766
13767         PR middle-end/36811
13768         * langhooks.c (lhd_print_error_function): Deal with recursive
13769         BLOCK trees.
13770
13771 2008-07-12  Jan Hubicka  <jh@suse.cz>
13772
13773         * cgraph.c (assembler_name_hash): New static var.
13774         (hash_node_by_assembler_name, eq_assembler_name): New.
13775         (cgraph_node_for_asm): Use hashtable.
13776         (cgraph_remove_node): Maintain hashtable.
13777         (change_decl_assembler_name): Sanity check that names are not changing
13778         after aliasing was processed.
13779         * cgraph.h (varpoon_node): Add next GGC marker.
13780         * tree.c (decl_assembler_name_equal): Constify.
13781         (decl_assembler_name_hash): New.
13782         * tree.h (decl_assembler_name_equal): Constify.
13783         (decl_assembler_name_hash): Update.
13784
13785 2008-07-12  David Daney  <ddaney@avtrex.com>
13786
13787         * config/mips/driver-native.c (host_detect_local_cpu): Handle
13788         sb1 and r5000 cpus.
13789
13790 2008-07-12  Richard Sandiford  <rdsandiford@googlemail.com>
13791
13792         * doc/md.texi: Document the MIPS "v" constraint.
13793         * config/mips/mips.h (reg_class): Revert last change.
13794         (REG_CLASS_NAMES): Likewise.
13795         (REG_CLASS_CONTENTS): Likewise.
13796         * config/mips/mips.c (mips_regno_to_class): Likewise.
13797         * config/mips/constraints.md (v): Likewise, but add documentation.
13798         Add a comment to say that this constraint should not be used in
13799         gcc code.
13800
13801 2008-07-11  DJ Delorie  <dj@redhat.com>
13802
13803         * config/h8300/h8300.md (length): Fix branch offset limit.
13804
13805 2008-07-11  Anatoly Sokolov  <aesok@post.ru>
13806
13807         * config/avr/avr-protos.h (avr_peep2_scratch_safe): Remove prototype.
13808         * config/avr/avr.c (avr_peep2_scratch_safe): Remove.
13809         (avr_hard_regno_scratch_ok): New function.
13810         (TARGET_HARD_REGNO_SCRATCH_OK): Define.
13811         * config/avr/avr.md (all peepholes that request a scratch register):
13812         Remove avr_peep2_scratch_safe use.
13813
13814 2008-07-11  Tom Tromey  <tromey@redhat.com>
13815             Ian Lance Taylor  <iant@google.com>
13816
13817         * c-common.h (enum rid): Add RID_CXX_COMPAT_WARN.
13818         (struct c_common_resword): Define.
13819         (D_CONLY, D_CXXONLY, D_C99, D_CXX0X, D_EXT, D_EXT89): Define.
13820         (D_ASM, D_OBJC, D_CXX_OBJC, D_CXXWARN): Define.
13821         (c_common_reswords, num_c_common_reswords): Declare.
13822         * c-common.c (c_common_reswords): New global const array.
13823         (num_c_common_reswords): New const int.
13824         * c-parser.c (struct resword, reswords): Don't define.
13825         (D_C89, D_EXT, D_EXT89, D_OBJC): Don't define.
13826         (c_parse_init): Clarify mask code.  Use c_common_reswords rather
13827         than reswords.  If warning about C++ keywords, give them a special
13828         RID code.
13829         (c_lex_one_token): Warn about C++ keywords.  Call
13830         objc_is_reserved_word rather than OBJC_IS_AT_KEYWORD.
13831         (c_parser_external_declaration): Look for RID_xxx rather than
13832         RID_AT_xxx, for ObjC++ keywords which are also C++ keywords.
13833         (c_parser_statement_after_labels): Likewise.
13834         (c_parser_objc_class_instance_variables): Likewise.
13835         (c_parser_objc_class_declaration): Likewise.
13836         (c_parser_objc_try_catch_statement): Likewise.
13837         * c-decl.c (c_print_identifier): Ignore RID_CXX_COMPAT_WARN.
13838         (declspecs_add_type): Likewise.
13839
13840 2008-07-11  Angelo Graziosi  <angelo.graziosi@alice.it>
13841
13842         * ggc-page.c (alloc_page):
13843         Substituting xmalloc, xcalloc with
13844         XNEWVEC and XCNEWVAR macros which add the
13845         needed casts.
13846
13847 2008-07-11  Richard Guenther  <rguenther@suse.de>
13848
13849         PR tree-optimization/36765
13850         * tree-ssa-alias.c (compute_flow_insensitive_aliasing): Add
13851         aliases from HEAP vars to SMTs.
13852
13853 2008-07-10  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
13854
13855         * Makefile.in (LOOSE_WARN, STRICT_WARN): Update comments.
13856         * configure.ac (loose_warn): Move -Wc++-compat from here...
13857         (strict_warn): ...to here.
13858         * configure: Regenerate.
13859
13860 2008-07-10  Joseph Myers  <joseph@codesourcery.com>
13861
13862         * config.gcc (arm-*-coff*, armel-*-coff*, h8300-*-*,
13863         i[34567]86-*-aout*, i[34567]86-*-coff*, m68k-*-aout*,
13864         m68k-*-coff*, sh-*-*, mips-sgi-irix[56]*, pdp11-*-bsd,
13865         rs6000-ibm-aix4.[12]*, powerpc-ibm-aix4.[12]*): Deprecate targets,
13866         excluding more specific h8300-*-* and sh-*-* targets.
13867
13868 2008-07-10  Daniel Berlin  <dberlin@dberlin.org>
13869
13870         * tree-ssa-pre.c (create_expression_by_pieces): Add fold_convert calls.
13871         (eliminate): Ditto.
13872         (execute_pre): Call loop_optimizer_finalize in early exit.
13873
13874 2008-07-10  Jakub Jelinek  <jakub@redhat.com>
13875
13876         PR middle-end/36790
13877         * omp-low.c (lower_omp_2): If task_shared_vars, test all DECL_P
13878         uids in the bitmap, not just VAR_DECL uids.
13879
13880         PR rtl-optimization/36419
13881         * combine-stack-adj.c (adjust_frame_related_expr): New function.
13882         (combine_stack_adjustments_for_block): Call it if needed.  Delete
13883         correct insn.
13884         * dwarf2out.c (dwarf2out_frame_debug_expr): Adjust
13885         DW_CFA_GNU_args_size if CSA pass merged some adjustments into
13886         prologue sp adjustment.
13887
13888 2008-07-10  Peter Maydell  <pmaydell@chiark.greenend.org.uk>
13889
13890         PR other/28322
13891         * opts.c (print_ignored_options): Report postponed diagnostics for
13892         unknown -Wno-* options as warnings, not errors.
13893         (postpone_unknown_option_error): Renamed to...
13894         (postpone_unknown_option_warning): ... this.
13895
13896 2008-07-09  Doug Kwan  <dougkwan@google.com>
13897
13898         Revert:
13899         2008-07-08  Doug Kwan  <dougkwan@google.com>
13900
13901         * config/arm/arm.opt (mandroid): New option.
13902         * config/arm/bpabi.h (ANDROID_LINK_SPEC): New macro.
13903         (LINK_SPEC): Enable Android specific behaviour when -mandroid is used.
13904         (CC1_SPEC): Same.
13905         (CC1PLUS_SPEC): Same.
13906         (LIB_SPEC): Same.
13907         (STARTFILE_SPEC): Same.
13908         (ENDFILE_SPEC): Same.
13909         (TARGET_BPABI_CPP_BUILTINS): Define __ANDROID__ when -mandroid is
13910         used.
13911
13912 2008-07-09  Richard Sandiford  <rdsandiford@googlemail.com>
13913
13914         PR target/35802
13915         * config/mips/mips.h (reg_class): Remove V1_REG.
13916         (REG_CLASS_NAMES, REG_CLASS_CONTENTS): Update accordingly.
13917         * config/mips/mips.c (mips_regno_to_class): Map $3 to M16_NA_REGS
13918         instead of V1_REGS.
13919         (mips_get_tp): New function.
13920         (mips_legitimize_tls_address): Use it.
13921         * config/mips/constraints.md (v): Delete.
13922         * config/mips/mips.md (TLS_GET_TP_REGNUM): New constant.
13923         (tls_get_tp_<mode>): Allow any GPR destination and clobber $3.
13924         After reload, split into a move and ...
13925         (*tls_get_tp_<mode>_split): ...this new instruction.
13926
13927 2008-07-09  David Daney  <ddaney@avtrex.com>
13928
13929         * config/mips/driver-native.c: Include coretypes.h and tm.h.
13930
13931 2008-07-09  Jakub Jelinek  <jakub@redhat.com>
13932
13933         * gimplify.c (struct gimplify_ctx): Move to tree-gimple.h.
13934         (push_gimplify_context): Don't allocate temp_htab nor c itself here.
13935         Add c argument.
13936         (pop_gimplify_context): Check c->temp_htab instead of optimize whether
13937         htab_delete should be called.  Don't free c.
13938         (lookup_tmp_var): Create temp_htab lazily.
13939         (gimplify_scan_omp_clauses, gimplify_omp_parallel, gimplify_omp_task,
13940         gimplify_body, force_gimple_operand): Adjust push_gimplify_context
13941         callers.
13942         * omp-low.c (lower_omp_sections, lower_omp_single, lower_omp_master,
13943         lower_omp_ordered, lower_omp_critical, lower_omp_for,
13944         create_task_copyfn, lower_omp_taskreg, execute_lower_omp):
13945         * tree-ssa-ccp.c (convert_to_gimple_builtin): Likewise.
13946         * tree-sra.c (generate_element_init): Likewise.
13947         * tree-mudflap.c (execute_mudflap_function_ops,
13948         execute_mudflap_function_decls): Likewise.
13949         * tree-inline.c (setup_one_parameter, optimize_inline_calls): Likewise.
13950         * tree-gimple.h (struct gimplify_ctx): New type.
13951         (push_gimplify_context): Adjust prototype.
13952
13953 2008-07-09  Daniel Berlin  <dberlin@dberlin.org>
13954
13955         * tree-ssa-pre.c (phi_translate_1): Update placement of
13956         add_to_value calls.
13957
13958 2008-07-09  Anatoly Sokolov  <aesok@post.ru>
13959
13960         * target.h (struct gcc_target): Add hard_regno_scratch_ok field.
13961         * target-def.h (TARGET_HARD_REGNO_SCRATCH_OK): New.
13962         (TARGET_INITIALIZER): Use TARGET_HARD_REGNO_SCRATCH_OK.
13963         * targhooks.c (default_hard_regno_scratch_ok): New function.
13964         * targhooks.h (default_hard_regno_scratch_ok): Declare function.
13965         * doc/tm.texi: Document TARGET_HARD_REGNO_SCRATCH_OK hook.
13966         * recog.c:  Include "target.h".
13967         (peep2_find_free_register): Add check for global regs. Add target
13968         specific check.
13969         * Makefile.in (recog.o): Depend on target.h.
13970
13971 2008-07-09  Kaz Kojima  <kkojima@gcc.gnu.org>
13972
13973         * config/sh/sh.c (sh_canonical_va_list_type): New.
13974         (TARGET_CANONICAL_VA_LIST_TYPE): Define.
13975
13976 2008-07-09  Raksit Ashok <raksit@google.com>
13977
13978         * doc/invoke.texi (Option Summary): Mention new option
13979         -Wdisallowed-function-list=...
13980         (Warning Options): Document -Wdisallowed-function-list=...
13981         * common.opt (Wdisallowed-function-list=): New flag.
13982         * flags.h (warn_disallowed_functions): External definition of new
13983         boolean warning flag.
13984         (warn_if_disallowed_function_p): Declare new function.
13985         * opts.c (warning_disallowed_functions): New static variable.
13986         (warn_disallowed_functions): New boolean warning flag.
13987         (warn_if_disallowed_function_p): New function.
13988         (add_comma_separated_to_vector): Rename
13989         add_instrument_functions_exclude_list to this.
13990         (common_handle_option): Handle new option. Rename calls to
13991         add_instrument_functions_exclude_list into calls to
13992         add_comma_separated_to_vector.
13993         * c-parser.c (c_parser_postfix_expression_after_primary): New warning
13994         based on flag warn_disallowed_functions.
13995
13996 2008-07-09  Christian Bruel  <christian.bruel@st.com>
13997
13998         * final.c (get_attr_length_1): Call get_attr_length_1 with fallback_fn
13999          instead of get_attr_length.
14000
14001 2008-07-09  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
14002
14003         * genattrtab.c (insert_right_side, evaluate_eq_attr): Avoid C++
14004         keywords.
14005         * genemit.c (gen_insn): Likewise.
14006         * gengtype.c (note_def_vec): Likewise.
14007         * gengtype.h (note_def_vec): Likewise.
14008         * genoutput.c (struct data, output_insn_data, process_template,
14009         gen_expand, gen_split, note_constraint): Likewise.
14010         * genrecog.c (new_decision, add_to_sequence, factor_tests,
14011         make_insn_sequence): Likewise.
14012         * gensupport.c (record_insn_name): Likewise.
14013
14014 2008-07-08  Doug Kwan  <dougkwan@google.com>
14015
14016         * config/arm/arm.opt (mandroid): New option.
14017         * config/arm/bpabi.h (ANDROID_LINK_SPEC): New macro.
14018         (LINK_SPEC): Enable Android specific behaviour when -mandroid is used.
14019         (CC1_SPEC): Same.
14020         (CC1PLUS_SPEC): Same.
14021         (LIB_SPEC): Same.
14022         (STARTFILE_SPEC): Same.
14023         (ENDFILE_SPEC): Same.
14024         (TARGET_BPABI_CPP_BUILTINS): Define __ANDROID__ when -mandroid is
14025         used.
14026
14027 2008-07-08  Raksit Ashok  <raksit@google.com>
14028
14029         * expr.c (emit_block_move_via_movmem): Fix expected_align parameter.
14030         (set_storage_via_setmem): Fix expected_align parameter.
14031         * doc/invoke.texi (i386 and x86-64 Options): Add a couple of options
14032         missing from the list.
14033         * doc/md.texi (movmem): Explicitly state that expected alignment is
14034         to be expressed in bytes.
14035         (setmem): Explicitly state that expected alignment is to be expressed
14036         in bytes.
14037
14038 2008-07-08  Joseph Myers  <joseph@codesourcery.com>
14039
14040         * reload.c (find_reloads_subreg_address): Do not require validity
14041         of address in original mode before reloading address.
14042
14043 2008-07-07  Tianwei Sheng  <tianweis@google.com>
14044
14045         * df-core.c (df_remove_problem): Adjust the access to avoid out of
14046         bounds array access.
14047
14048 2008-07-08  Jakub Jelinek  <jakub@redhat.com>
14049
14050         * tree-sra.c (sra_build_assignment): Handle CONVERT_EXPR_P dst.
14051
14052 2008-07-05  Daniel Berlin  <dberlin@dberlin.org>
14053
14054         Fix PR tree-optimization/23455
14055         Fix PR tree-optimization/35286
14056         Fix PR tree-optimization/35287
14057         * Makefile.in (OBJS-common): Remove tree-vn.o.
14058         (tree-vn.o): Remove.
14059         * dbgcnt.def: Add treepre_insert debug counter.
14060         * gcc/tree-flow.h (add_to_value): Updated for other changes.
14061         (debug_value_expressions): Ditto.
14062         (print_value_expressions): Ditto.
14063         * tree-pretty-print.c (dump_generic_node): Updated for
14064         VALUE_HANDLE removal.
14065         * tree-ssa-dom.c (record_equality): Ditto.
14066         (cprop_operand): Ditto.
14067         (lookup_avail_expr): Ditto.
14068         * tree-ssa-threadedge.c
14069         (record_temporary_equivalences_from_stmts_at_dest): Ditto.
14070         (simplify_control_stmt_condition): Ditto.
14071         * tree.c (tree_code_size): Ditto.
14072         (tree_node_structure): Ditto.
14073         (iterative_hash_expr): Ditto.
14074         * tree.def: Ditto.
14075         * tree.h (VALUE_HANDLE_ID): Ditto.
14076         (VALUE_HANDLE_EXPR_SET): Ditto.
14077         (struct tree_value_handle): Ditto.
14078         (union tree_node): Ditto.
14079         * treestruct.def: Ditto.
14080         * tree-vn.c: Removed.
14081         * tree-ssa-pre.c: Rewritten entirely.
14082         * tree-ssa-sccvn.c (constant_to_value_id): New hashtable.
14083         (constant_value_ids): Ditto.
14084         (vn_nary_op_t): Moved to header.
14085         (vn_phi_t): Ditto.
14086         (vn_reference_op_t): Ditto
14087         (vn_reference_t): Ditto.
14088         (next_value_id): New variable.
14089         (VN_INFO): Add an assert.
14090         (vn_constant_eq): New function.
14091         (vn_constant_hash): Ditto.
14092         (get_or_alloc_constant_value_id): Ditto.
14093         (value_id_constant_p): Ditto.
14094         (vn_reference_compute_hash): De-staticify.
14095         (copy_reference_ops_from_ref): Don't use get_callee_fndecl.
14096         Disable some code with a FIXME.  Remove VALUE_HANDLE use.
14097         (valueize_refs): Update opcode if it changes from ssa name to constant.
14098         (vn_reference_lookup_1): Add new argument.
14099         (vn_reference_lookup):  Ditto.
14100         (vn_reference_lookup_pieces): New function.
14101         (vn_reference_insert): Add return type. Modify to deal with value ids.
14102         (vn_reference_insert_pieces):  New function.
14103         (vn_nary_op_compute_hash): De-staticify.
14104         (vn_nary_op_eq): Ditto.
14105         (vn_nary_op_lookup_pieces): New function.
14106         (vn_nary_op_lookup): Add new argument.
14107         (vn_nary_op_insert_pieces): New function.
14108         (vn_nary_op_insert): Add return type. Modify to deal with value ids.
14109         (vn_phi_insert): Ditto.
14110         (visit_unary_op): Update for callee changes.
14111         (visit_binary_op): Ditto.
14112         (visit_reference_op_load): Ditto.
14113         (visit_reference_op_store): Ditto.
14114         (init_scc_vn): Init next_value_id, constant_to_value_id and
14115         constant_value_ids.
14116         (free_scc_vn): Free them.
14117         (set_hashtable_value_ids): New function.
14118         (run_scc_vn): Use it.
14119         (get_max_value_id): New function.
14120         (get_next_value_id): Ditto.
14121         (expressions_equal_p): Moved from tree-vn.c
14122         (sort_vuses): Ditto.
14123         (sort_vuses_heap): Ditto.
14124         * tree-ssa-sccvn.h: Structures moved from tree-ssa-sccvn.c (noted
14125         above).
14126         * tree.c (iterative_hash_hashval_t): Made non-static
14127         * tree.h (iterative_hash_hashval_t): Declare it.
14128
14129 2008-07-08  Martin Jambor  <mjambor@suse.cz>
14130
14131         * ipa-cp.c (ipcp_init_cloned_node): Call ipa_check_create_node_params
14132         instead of ipa_create_node_params.
14133         (ipcp_driver): Allocate infos with ipa_check_create_node_params and
14134         ipa_check_create_edge_args, free them with
14135         free_all_ipa_structures_after_ipa_cp, call ipa_register_cgraph_hooks.
14136
14137         * ipa-prop.c: Include flags.h and tree-inline.h.
14138         (ipa_node_params_vector): New variable.
14139         (ipa_edge_args_vector): New variable.
14140         (edge_removal_hook_holder): New variable.
14141         (node_removal_hook_holder): New variable.
14142         (edge_duplication_hook_holder): New variable.
14143         (node_duplication_hook_holder): New variable.
14144         (ipa_detect_param_modifications): Check for presence of modified flags.
14145         (ipa_compute_jump_functions): Check for presence of jump functions.
14146         (ipa_free_edge_args_substructures): New function.
14147         (ipa_create_node_params): Removed.
14148         (ipa_free_all_edge_args): Changed to deallocate the on-the-side vector.
14149         (ipa_free_node_params_substructures): New function.
14150         (ipa_free_all_node_params): Changed to deallocate the on-the-side
14151         vector.
14152         (ipa_edge_removal_hook): New function.
14153         (ipa_node_removal_hook): New function.
14154         (duplicate_array): New function.
14155         (ipa_edge_duplication_hook): New function.
14156         (ipa_node_duplication_hook): New function.
14157         (ipa_register_cgraph_hooks): New function.
14158         (ipa_unregister_cgraph_hooks): New function.
14159         (free_all_ipa_structures_after_ipa_cp): New function.
14160
14161         * ipa-prop.h: Include vec.h.
14162         (ipa_node_params_t): New typedef with vector types for it.
14163         (ipa_edge_args_t):  New typedef with vector types for it.
14164         (IPA_NODE_REF): Changed to access an on-the-side vector.
14165         (IPA_EDGE_REF): Changed to access an on-the-side vector.
14166         (ipa_check_create_node_params): New function.
14167         (ipa_check_create_edge_args): New function.
14168
14169         * Makefile.in (IPA_PROP_H): New variable for ipa-prop.h.  Converted
14170         all users.
14171
14172 2008-07-07  Tom Tromey  <tromey@redhat.com>
14173
14174         * configure, config.in: Rebuilt.
14175         * configure.ac: Don't check for scandir or alphasort.
14176
14177 2008-07-07  Joseph Myers  <joseph@codesourcery.com>
14178
14179         * config/arm/arm.c (arm_init_neon_builtins): Register built-in
14180         types immediately after creating them.
14181
14182 2008-07-07  Joseph Myers  <joseph@codesourcery.com>
14183
14184         * config/arm/aout.h (DOLLARS_IN_IDENTIFIERS): Remove.
14185
14186 2008-07-07  Fernando Pereira <fernando@cs.ucla.edu>
14187
14188         * tree-ssa-structalias.c (compute_points_to_sets): Add call to
14189         dump_constraint_graph.
14190         (dump_constraint_edge): New function.
14191         (dump_constraint_graph): New function.
14192         (debug_constraint_graph): New function.
14193         (dump_constraint): Removed useless comparison.
14194         * tree-ssa-structalias.h (dump_constraint_edge): Declare.
14195         (dump_constraint_graph): Declare.
14196         (debug_constraint_graph): Declare.
14197         * tree-dump.c (struct dump_option_value_info): Declare TDF_GRAPH.
14198
14199 2008-07-07  Kai Tietz  <kai.tietz@onevision.com>
14200
14201         * config/i386/i386.c (is_va_list_char_pointer): New.
14202         (ix86_va_start): Replace compare with ms_va_list_type_node
14203         by is_va_list_char_pointer.
14204         (ix86_gimplify_va_arg): Likewise.
14205
14206 2008-07-07  Martin Jambor  <mjambor@suse.cz>
14207
14208         * cgraph.c (cgraph_edge_max_uid): New variable.
14209         (struct cgraph_edge_hook_list): New type.
14210         (struct cgraph_node_hook_list): New type.
14211         (struct cgraph_2edge_hook_list): New type.
14212         (struct cgraph_2node_hook_list): New type.
14213         (first_cgraph_edge_removal_hook): New variable.
14214         (first_cgraph_node_removal_hook): New variable.
14215         (first_cgraph_edge_duplicated_hook): New variable.
14216         (first_cgraph_node_duplicated_hook): New variable.
14217         (cgraph_add_edge_removal_hook): New function.
14218         (cgraph_remove_edge_removal_hook): New function.
14219         (cgraph_call_edge_removal_hooks):  New function.
14220         (cgraph_add_node_removal_hook):  New function.
14221         (cgraph_remove_node_removal_hook):  New function.
14222         (cgraph_call_node_removal_hooks):  New function.
14223         (cgraph_add_edge_duplication_hook):  New function.
14224         (cgraph_remove_edge_duplication_hook):  New function.
14225         (cgraph_call_edge_duplication_hooks):  New function.
14226         (cgraph_add_node_duplication_hook):  New function.
14227         (cgraph_remove_node_duplication_hook):  New function.
14228         (cgraph_call_node_duplication_hooks):  New function.
14229         (cgraph_create_edge): Assign to edge uid.
14230         (cgraph_remove_edge): Call edge removal hooks.
14231         (cgraph_node_remove_callees): Call edge removal hooks.
14232         (cgraph_node_remove_callers): Call edge removal hooks.
14233         (cgraph_remove_node): Call node removal hooks.
14234         (cgraph_clone_edge): Call edge duplication hooks.
14235         (cgraph_clone_node): Call node duplication hooks.
14236
14237         * cgraph.h (cgraph_edge): New field uid.
14238         (cgraph_edge_hook): New type.
14239         (cgraph_node_hook): New type.
14240         (cgraph_2edge_hook): New type.
14241         (cgraph_2node_hook): New type.
14242
14243 2008-07-07  Andreas Tobler  <a.tobler@schweiz.org>
14244
14245         * config.in: Regenerate.
14246
14247 2008-07-07  Vladimir Prus  <vladimir@codesourcery.com>
14248
14249         * gcc.c (print_sysroot): New.
14250         (option_map, display_help, process_command): Handle the
14251         -print-sysroot option.
14252         (main): Print the sysroot if requested.
14253         * doc/invoke.texi (Debugging Options): Document -print-sysroot.
14254
14255 2008-07-07  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
14256
14257         PR target/34780
14258         * unwind-pe.h (size_of_encoded_value): add attribute unused.
14259
14260 2008-07-07  Daniel Jacobowitz  <dan@codesourcery.com>
14261
14262         * function.c (assign_parm_remove_parallels): Check mode of entry_parm.
14263         (assign_parm_setup_block_p): Also check mode of entry_parm.
14264
14265 2008-07-07  Richard Guenther  <rguenther@suse.de>
14266
14267         * tree-ssa-structalias.h (set_used_smts): Remove.
14268         * tree-ssa-structalias.c (used_smts): Likewise.
14269         (set_used_smts): Likewise.
14270         * tree-ssa-alias.c (compute_flow_sensitive_aliasing): Remove
14271         call to set_used_smts.
14272
14273 2008-07-07  Richard Guenther  <rguenther@suse.de>
14274
14275         * tree-ssa-structalias.c (struct variable_info): Add is_full_var flag.
14276         (new_var_info): Set it to false.
14277         (solution_set_add): Correctly handle pointers outside a var and
14278         inside a field.
14279         (type_safe): Treat variables with is_full_var properly.
14280         (do_sd_constraint): Likewise.
14281         (do_ds_constraint): Likewise.
14282         (process_constraint): Remove zeroing offset for !use_field_sensitive.
14283         (get_constraint_for_ptr_offset): New function.
14284         (get_constraint_for_component_ref): For addresses at least include
14285         the last field of the variable.  Handle is_full_vars properly.
14286         (get_constraint_for_1): Factor common code, handle POINTER_PLUS_EXPR.
14287         (handle_ptr_arith): Remove.
14288         (find_func_aliases): Simplify assignment handling.
14289         (create_function_info_for): For parameter and result varinfos set
14290         is_full_var flag.
14291         (create_variable_info_for): Set is_full_var flag whenever we
14292         just created a single varinfo for a decl.
14293         (init_alias_vars): Initialize use_field_sensitive from
14294         max-fields-for-field-sensitive parameter.
14295
14296 2008-07-07  Richard Guenther  <rguenther@suse.de>
14297
14298         PR tree-optimization/36713
14299         * tree-flow-inline.h (is_call_used): New function.
14300         * tree-nrv.c (dest_safe_for_nrv_p): Use it.
14301         * tree-tailcall.c (suitable_for_tail_opt_p): Likewise.
14302         * tree-outof-ssa.c (create_temp): Set call-used flag if required.
14303
14304 2008-07-07  Maxim Kuvyrkov  <maxim@codesourcery.com>
14305
14306         * config/m68k/m68k.c (m68k_return_in_memory): Fix arguments types.
14307
14308 2008-07-07  Mark Shinwell  <shinwell@codesourcery.com>
14309
14310         * config/m68k/lb1sf68.asm: Add PIC macros for Linux targets.
14311
14312 2008-07-07  Maxim Kuvyrkov  <maxim@codesourcery.com>
14313             Nathan Sidwell  <nathan@codesourcery.com>
14314
14315         * config.gcc (m68k-*-linux*): Add with_arch.  Add sysroot-suffix.h
14316         to tm_file.  Add m68k/t-floatlib, m68k/t-linux & m68k/t-mlibs to
14317         tmake_file.
14318         * config/m68k/t-linux: New.
14319         * doc/install.texi: Document m68k-*-linux is now multilibbed by
14320         default.
14321
14322 2008-07-07  Nathan Sidwell  <nathan@codesourcery.com>
14323
14324         * config/m68k/t-cf (MULTILIB_EXTRA_OPTS): Add no-mac.
14325         * config/m68k/m68k-devices.def: Remove multilibs that only differ
14326         by MAC/EMAC.
14327
14328 2008-07-06  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
14329
14330         * gcc.c (execute): Fix -Wc++-compat warning.
14331
14332 2008-07-06  H.J. Lu  <hongjiu.lu@intel.com>
14333
14334         PR target/36720
14335         * config/ia64/ia64.c (ia64_split_tmode): Fix typo in TImode
14336         constant for little endian.
14337
14338 2008-07-06  Richard Sandiford  <rdsandiford@googlemail.com>
14339
14340         * config/mips/mips.h (TARGET_CPU_CPP_BUILTINS): Check
14341         mips_base_mips16 instead of TARGET_MIPS16.
14342         (mips_base_mips16): Declare.
14343         * config/mips/mips.c (mips_base_mips16): Make global.
14344         (was_mips16_p): Remove GTY marker.
14345         (was_mips16_pch_p): New variable.
14346         (mips_set_mips16_mode): Check both was_mips16_p and was_mips16_pch_p.
14347         (mips_override_options): Force to non-MIPS16 mode initially.
14348         Do not complain about MIPS16 PIC incompatibilities here.
14349         Only allow -mgpopt if -mexplicit-relocs is in force for
14350         non-MIPS16 code.
14351
14352 2008-07-06  Andreas Tobler  <a.tobler@schweiz.org>
14353
14354         * configure.ac: Check for caddr_t, define to char * if not defined.
14355         * configure: Regenerate.
14356         * ggc-common.c (mmap_gt_pch_get_address): Fix -Wc++-compat warnings.
14357         (mmap_gt_pch_use_address): Likewise.
14358         * config/host-solaris.c (sol_gt_pch_use_address): Likewise.
14359
14360 2008-07-06  Richard Guenther  <rguenther@suse.de>
14361
14362         * tree-ssa-structalias.c (struct variable_info): Remove has_union.
14363         (new_var_info): Deal with it.
14364         (solution_set_add): Likewise.
14365         (bitpos_of_field): Make signed, fix.
14366         (struct fieldoff): Remove type and decl fields.  Make size field
14367         unsigned HOST_WIDE_INT.  Add has_unknown_size and may_have_pointers
14368         flags.
14369         (fieldoff_compare): Deal with it.
14370         (push_fields_onto_fieldstack): Remove has_union argument, glob
14371         adjacent non-pointer fields together.
14372         (create_function_info_for): Do not set has_union.
14373         (create_variable_info_for): Simplify.
14374
14375 2008-07-06  Kai Tietz  <kai.tietz@onevision.com>
14376
14377         * config.gcc (extra_headers): Add cross-stdarg.h for target
14378         x86_64-*-* and i?86-*-*.
14379         * config/i386/cross-stdarg.h: New.
14380         * builtins.c (std_fn_abi_va_list): New.
14381         (std_canonical_va_list_type): New.
14382         (stabilize_va_list): Replace va_list_type_node use by
14383         mtarget.canonical_va_list_type.
14384         (gimplify_va_arg_expr): Likewise.
14385         (expand_builtin_va_copy): Replace va_list_type_node use by
14386         mtarget.fn_abi_va_list.
14387         * tree-sra.c (is_va_list_type): New helper.
14388         (decl_can_be_decomposed_p): Replace
14389         va_list_type_node use by is_va_list_type.
14390         * tree-ssa-ccp.c (optimize_stdarg_builtin): Likewise.
14391         * tree-stdarg.c (execute_optimize_stdarg): Likewise.
14392         * c-common.c (c_common_nodes_and_builtins): Use TARGET_ENUM_VA_LIST.
14393         * config/i386/i386-protos.h (ix86_get_valist_type): New.
14394         (ix86_enum_va_list): New.
14395         * config/i386/i386.c (sysv_va_list_type_node): New.
14396         (ms_va_list_type_node): New.
14397         (ix86_function_type_abi): Remove sorry.
14398         (ix86_build_builtin_va_list_abi): New.
14399         (ix86_build_builtin_va_list): Call ix86_build_builtin_va_list_abi
14400         for 64-bit targets.
14401         (ix86_va_start): Replace va_list_type_node by sysv_va_list_type_node.
14402         (ix86_init_builtins_va_builtins_abi): New.
14403         (ix86_init_builtins): Use ix86_init_builtins_va_builtins_abi
14404         for 64-bit targets.
14405         (ix86_handle_abi_attribute): New.
14406         (attribute_spec): Add sysv_abi and ms_abi.
14407         (ix86_fn_abi_va_list): New.
14408         (ix86_canonical_va_list_type): New.
14409         (ix86_enum_va_list): New.
14410         (TARGET_FN_ABI_VA_LIST): New.
14411         (TARGET_CANONICAL_VA_LIST_TYPE): New.
14412         * config/i386/i386.h (TARGET_ENUM_VA_LIST): New.
14413         * doc/tm.texi (TARGET_FN_ABI_VA_LIST): New.
14414         (TARGET_CANONICAL_VA_LIST_TYPE): New.
14415         (TARGET_ENUM_VA_LIST): New.
14416         * expr.h (std_fn_abi_va_list): New.
14417         (std_canonical_va_list_type): New.
14418         * target-def.h (TARGET_FN_ABI_VA_LIST): New.
14419         (TARGET_CANONICAL_VA_LIST_TYPE): New.
14420         (TARGET_INITIALIZER): Add TARGET_FN_ABI_VA_LIST and
14421         TARGET_CANONICAL_VA_LIST_TYPE.
14422         * target.h (struct gcc_target): Add fn_abi_va_list hook
14423         and canonical_va_list_type hook.
14424
14425 2008-07-05  Andrew Pinski  <andrew_pinski@playstation.sony.com>
14426
14427         * fold-const.c (fold_convert_const): Treat OFFSET_TYPE the same as
14428         integral and pointer types.
14429
14430 2008-07-04  Roger Sayle  <roger@eyesopen.com>
14431
14432         * config/rs6000/host-darwin.c (darwin_rs6000_extra_signals): Cast
14433         the "void*" result of xmalloc to "char*" to fix bootstrap breakage.
14434
14435 2008-07-04  Kaz Kojima  <kkojima@gcc.gnu.org>
14436
14437         PR target/36684
14438         * config/sh/sh.h (OVERRIDE_OPTIONS): Disable -fschedule-insns for PIC.
14439
14440 2008-07-04  Jakub Jelinek  <jakub@redhat.com>
14441
14442         * tree-switch-conversion.c (build_one_array, gen_def_assigns): Use
14443         build_gimple_modify_stmt.
14444         (build_arrays, gen_inbound_check): Likewise.  Force RHS to be
14445         gimple operand.  Use fold_build* instead of build*.
14446
14447 2008-07-04  Richard Guenther  <rguenther@suse.de>
14448
14449         * tree-ssa-structalias.c (lookup_vi_for_tree): Declare.
14450         (do_sd_constraint): Handle a dereference of ESCAPED and CALLUSED
14451         properly to compute the reachability set if we do field-sensitive PTA.
14452         * invoke.texi (max-fields-for-field-sensitive): Document default.
14453         * opts.c (decode_options): Set max-fields-for-field-sensitive to
14454         100 for optimize >= 2.
14455
14456 2008-07-04  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
14457
14458         * ggc-zone.c (lookup_page_table_if_allocated,
14459         set_page_table_entry, zone_find_object_size, alloc_small_page,
14460         alloc_large_page, ggc_free, gt_ggc_m_S, ggc_marked_p, init_ggc,
14461         new_ggc_zone, init_ggc_pch, ggc_pch_this_base, ggc_pch_read): Fix
14462         -Wc++-compat and/or -Wcast-qual warnings.
14463
14464 2008-07-04  Alan Modra  <amodra@bigpond.net.au>
14465
14466         PR target/36634
14467         * config/rs6000/rs6000.md (call, call_value): Don't arrange for
14468         pic_offset_table_rtx to be marked as used here.
14469         (call_nonlocal_sysv, call_value_nonlocal_sysv): Add split for
14470         TARGET_SECURE_PLT to "use" pic_offset_table_rtx.
14471         (call_nonlocal_sysv_secure, call_value_nonlocal_sysv_secure): New insn.
14472         (sibcall_nonlocal_sysv, sibcall_value_nonlocal_sysv): Assert
14473         !TARGET_SECURE_PLT.
14474
14475 2008-07-03  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
14476
14477         * alloc-pool.c (hash_descriptor, eq_descriptor,
14478         alloc_pool_descriptor): Fix -Wc++-compat warnings.
14479         * bitmap.c (hash_descriptor, eq_descriptor, bitmap_descriptor):
14480         Likewise.
14481         * ggc-common.c (hash_descriptor, eq_descriptor, hash_ptr, eq_ptr,
14482         loc_descriptor, ggc_prune_ptr, ggc_free_overhead,
14483         final_cmp_statistic, cmp_statistic, dump_ggc_loc_statistics): Likewise.
14484         * varray.c (hash_descriptor, eq_descriptor, varray_descriptor):
14485         Likewise.
14486
14487 2008-07-03  Eric Botcazou  <ebotcazou@adacore.com>
14488
14489         * tree-flow.h (loop_only_exit_p): Declare.
14490         * tree-ssa-loop-niter.c (loop_only_exit_p): Make public.
14491         * tree-ssa-loop-ivopts.c (may_eliminate_iv): Reinstate direct check on
14492         the number of iterations if it is constant.  Otherwise, if this is the
14493         only possible exit of the loop, use the conservative estimate on the
14494         number of iterations of the entire loop if available.
14495
14496 2008-07-03  Richard Sandiford  <rdsandiford@googlemail.com>
14497
14498         * Makefile.in (libgcc.mvars): Add LIBGCC_SYNC and LIBGCC_SYNC_CFLAGS.
14499         * libgcc-std.ver (GCC_4.4.0): New version, inherited from GCC_4.3.0.
14500         Add synchronization functions.
14501         * config/sync.c: New file.
14502         * config/mips/t-libgcc-mips16 (LIBGCC_SYNC): Define.
14503         (LIBGCC_SYNC_CFLAGS): Likewise.
14504
14505 2008-07-03  Uros Bizjak  <ubizjak@gmail.com>
14506
14507         PR target/36710
14508         * config/i386/i386.md (mode): Add TF to "mode" attribute.
14509         (*pushtf_sse): New insn pattern.
14510         (pushtf splitters): New splitters.
14511
14512 2008-07-03  Michael Meissner  <gnu@the-meissners.org>
14513
14514         PR middle-end/35736
14515         * predict.c (build_predict_expr): Use void_type_node for the tree
14516         type, instead of NULL_TREE.
14517
14518 2008-07-03  H.J. Lu  <hongjiu.lu@intel.com>
14519
14520         * config/i386/i386.c (contains_aligned_value_p): Return true
14521         for TCmode.
14522         (ix86_data_alignment): Align TCmode to 128bits.
14523         (ix86_local_alignment): Likewise.
14524
14525 2008-07-03  Andrew Haley  <aph@redhat.com>
14526
14527         PR bootstrap/33304
14528         * vec.h (VEC_TA): New.
14529         (DEF_VEC_I, DEF_VEC_P, DEF_VEC_ALLOC_I, DEF_VEC_ALLOC_P,
14530         DEF_VEC_O, DEF_VEC_ALLOC_O: Use VEC_TA.
14531         * c-common.c (C_COMMON_FIXED_TYPES_SAT): New macro.
14532         (C_COMMON_FIXED_MODE_TYPES_SAT): New macro.
14533         (C_COMMON_FIXED_TYPES): Remove first arg.
14534         (C_COMMON_FIXED_MODE_TYPES): Likewise.
14535         * tree.c (MAKE_FIXED_TYPE_NODE): Break into two macros,
14536         MAKE_FIXED_TYPE_NODE and MAKE_FIXED_TYPE_NODE_WIDTH in order
14537         not to use empty macro arguments.
14538
14539 2008-07-02  Joseph Myers  <joseph@codesourcery.com>
14540
14541         * config/alpha/vms_tramp.asm, config/arm/crti.asm,
14542         config/arm/crtn.asm, config/bfin/crti.s, config/bfin/crtlibid.s,
14543         config/bfin/crtn.s, config/fr30/crti.asm, config/fr30/crtn.asm,
14544         config/frv/lib1funcs.asm, config/i386/sol2-c1.asm,
14545         config/i386/sol2-ci.asm, config/i386/sol2-cn.asm,
14546         config/i386/sol2-gc1.asm, config/ia64/crti.asm,
14547         config/ia64/crtn.asm, config/m68hc11/larith.asm,
14548         config/m68hc11/m68hc11-crt0.S, config/m68k/crti.s,
14549         config/m68k/crtn.s, config/mcore/crti.asm, config/mcore/crtn.asm,
14550         config/rs6000/crtresfpr.asm, config/rs6000/crtresgpr.asm,
14551         config/rs6000/crtresxfpr.asm, config/rs6000/crtresxgpr.asm,
14552         config/rs6000/crtsavfpr.asm, config/rs6000/crtsavgpr.asm,
14553         config/rs6000/crtsavres.asm, config/rs6000/e500crtres32gpr.asm,
14554         config/rs6000/e500crtres64gpr.asm,
14555         config/rs6000/e500crtres64gprctr.asm,
14556         config/rs6000/e500crtrest32gpr.asm,
14557         config/rs6000/e500crtrest64gpr.asm,
14558         config/rs6000/e500crtresx32gpr.asm,
14559         config/rs6000/e500crtresx64gpr.asm,
14560         config/rs6000/e500crtsav32gpr.asm,
14561         config/rs6000/e500crtsav64gpr.asm,
14562         config/rs6000/e500crtsav64gprctr.asm,
14563         config/rs6000/e500crtsavg32gpr.asm,
14564         config/rs6000/e500crtsavg64gpr.asm,
14565         config/rs6000/e500crtsavg64gprctr.asm, config/rs6000/eabi-ci.asm,
14566         config/rs6000/eabi-cn.asm, config/rs6000/eabi.asm,
14567         config/rs6000/sol-ci.asm, config/rs6000/sol-cn.asm,
14568         config/rs6000/tramp.asm, config/sparc/sol2-ci.asm,
14569         config/sparc/sol2-cn.asm: Remove .file directives.
14570
14571 2008-07-02  Richard Sandiford  <rdsandiford@googlemail.com>
14572
14573         * resource.c (mark_referenced_resources): Look inside
14574         UNSPEC_VOLATILEs and ASM_INPUTs.
14575
14576 2008-07-02  Ian Lance Taylor  <iant@google.com>
14577
14578         * rtlanal.c (add_reg_note): New function.
14579         * rtl.h (add_reg_note): Declare.
14580         * auto-inc-dec.c (attempt_change): Use add_reg_note.
14581         * bb-reorder.c (add_reg_crossing_jump_notes): Likewise.
14582         * builtins.c (expand_builtin_longjmp): Likewise.
14583         (expand_builtin_nonlocal_goto): Likewise.
14584         * calls.c (emit_call_1, expand_call): Likewise.
14585         * cfgexpand.c (add_reg_br_prob_note): Likewise.
14586         * cfglayout.c (fixup_reorder_chain): Likewise.
14587         * cfgrtl.c (force_nonfallthru_and_redirect): Likewise.
14588         (commit_one_edge_insertion): Likewise.
14589         * combine.c (move_deaths, distribute_notes): Likewise.
14590         * df-problems.c (df_set_note): Likewise.
14591         * emit-rtl.c (link_cc0_insns, try_split): Likewise.
14592         (set_unique_reg_note): Likewise.
14593         (emit_copy_of_insn_after): Likewise.
14594         * expr.c (expand_expr_real): Likewise.
14595         * gcse.c (add_label_notes): Likewise.
14596         * haifa-sched.c (create_check_block_twin): Likewise.
14597         * jump.c (mark_jump_label_1): Likewise.
14598         * loop-doloop.c (add_test, doloop_modify): Likewise.
14599         * loop-unswitch.c (compare_and_jump_seq): Likewise.
14600         * lower-subreg.c (move_eh_region_note): Likewise.
14601         * optabs.c (emit_libcall_block): Likewise.
14602         * predict.c (predict_insn): Likewise.
14603         (combine_predictions_for_insn): Likewise.
14604         * recog.c (peephole2_optimize): Likewise.
14605         * regmove.c (try_auto_increment): Likewise.
14606         * reg-stack.c (emit_pop_insn, move_for_stack_reg): Likewise.
14607         * reload.c (find_reloads): Likewise.
14608         * reload1.c (fixup_eh_region_note): Likewise.
14609         (reload_as_needed, add_auto_inc_notes, copy_eh_notes): Likewise.
14610         * reorg.c (delete_prior_computation): Likewise.
14611         (delete_computation, dbr_schedule): Likewise.
14612         * config/pa/pa.c (legitimize_pic_address): Likewise.
14613         * config/sh/sh.c (sh_reorg): Likewise.
14614
14615 2008-07-02  H.J. Lu  <hongjiu.lu@intel.com>
14616
14617         PR target/36669
14618         * config/libgcc-glibc.ver: Add %exclude.
14619         * config/m32r/libgcc-glibc.ver: Likwise.
14620         * config/s390/libgcc-glibc.ver: Likwise.
14621         * config/sh/libgcc-glibc.ver: Likwise.
14622         * config/sparc/libgcc-sparc-glibc.ver: Likwise.
14623
14624         * config/i386/libgcc-glibc.ver: New.
14625
14626         * config/i386/libgcc-x86_64-glibc.ver: Removed.
14627
14628 2008-07-02  H.J. Lu  <hongjiu.lu@intel.com>
14629
14630         * config.gcc: Remove i386/t-fprules-softfp64 soft-fp/t-softfp
14631         from tmake_file from i[34567]86-*-darwin*, x86_64-*-darwin*,
14632         i[34567]86-*-linux*, x86_64-*-linux*.  Add
14633         i386/t-fprules-softfp and soft-fp/t-softfp to tmake_file for
14634         i[34567]86-*-darwin*, x86_64-*-darwin*, i[34567]86-*-linux*,
14635         x86_64-*-linux*.  Add i386/t-linux to tmake_file for
14636         i[34567]86-*-linux*, x86_64-*-linux*.
14637
14638         * libgcc-std.ver: Add empty GCC_4.4.0.
14639
14640         * mkmap-symver.awk: Support multiple versions per symbol.
14641
14642         * config/i386/i386.c (ix86_init_builtins): Always define
14643         __builtin_fabsq and __builtin_copysignq with fallbacks.
14644         (ix86_expand_builtin): Emit normal call for __builtin_fabsq
14645         and __builtin_copysignq if SSE2 isn't available.
14646
14647         * config/i386/linux.h (LIBGCC2_HAS_TF_MODE): Defined.
14648         (LIBGCC2_TF_CEXT): Likwise.
14649         (TF_SIZE): Likwise.
14650
14651         * config/i386/linux64.h (LIBGCC2_HAS_TF_MODE): Defined as 1.
14652
14653         * config/i386/sfp-machine.h: Moved to libgcc.
14654
14655         * config/i386/sfp-machine.h: New.
14656         * config/i386/t-linux: Likwise.
14657
14658         * config/i386/t-darwin: Remove softfp_wrap_start and
14659         softfp_wrap_end.
14660         * config/i386/t-darwin64: Likewise.
14661
14662         * config/i386/t-fprules-softfp64: Renamed to ...
14663         * config/i386/t-fprules-softfp: This.
14664
14665         * config/i386/t-linux64: Remove SHLIB_MAPFILES, softfp_wrap_start
14666         and softfp_wrap_end.
14667
14668 2008-07-02  Jason Merrill  <jason@redhat.com>
14669
14670         * tree.c (ctor_to_list): Use FOR_EACH_CONSTRUCTOR_ELT.
14671
14672         * tree.c (ctor_to_list): New fn.
14673         * tree.h: Declare it.
14674         (CONSTRUCTOR_ELT): New macro.
14675         (CONSTRUCTOR_NELTS): New macro.
14676
14677 2008-07-02  Richard Guenther  <rguenther@suse.de>
14678
14679         * tree-ssa-structalias.c (struct variable_info): Reorder
14680         to fill padding on 64bit hosts.  Make collapsed_to an int.
14681         (get_varinfo_fc): Deal with that.
14682         (new_var_info): Likewise.
14683         (collapse_rest_of_var): Likewise.
14684
14685 2008-07-02  Joshua Sumali  <jsumali@redhat.com>
14686
14687         * doc/install.texi (--enable-java-home): Document.
14688         (--enable-aot-compile-rpm): Likewise.
14689         (--with-arch-directory): Likewise.
14690         (--with-os-directory): Likewise.
14691         (--with-origin-name): Likewise.
14692         (--with-arch-suffix): Likewise.
14693         (--with-jvm-root-dir): Likewise.
14694         (--with-jvm-jar-dir): Likewise.
14695         (--with-python-dir): Likewise.
14696
14697 2008-07-02  Richard Guenther  <rguenther@suse.de>
14698
14699         * tree-ssa-forwprop.c (can_propagate_from): Exclude loads
14700         from decls explicitly.  Merge operand checking from tuples.
14701
14702 2008-07-02  Martin Jambor  <mjambor@suse.cz>
14703
14704         * tree-switch-conversion.c: Included timevar.h which I forgot before.
14705
14706 2008-07-02  Martin Jambor  <mjambor@suse.cz>
14707
14708         * tree-switch-conversion.c: Included timevar.h
14709         (pass_convert_switch): Added a timevar id (TV_TREE_SWITCH_CONVERSION).
14710
14711         * timevar.def: Added TV_TREE_SWITCH_CONVERSION.
14712
14713 2008-07-02  Martin Jambor  <mjambor@suse.cz>
14714
14715         * tree-switch-conversion.c: Corrected various comments and
14716         whitespace issues
14717         (build_constructors): Fixed minor formatting mistakes.
14718
14719         * invoke.texi (Optimize Options): Corrected the
14720         switch-conversion-max-branch-ratio parameter.
14721
14722 2008-07-02  Mark Shinwell  <shinwell@codesourcery.com>
14723
14724         * final.c (asm_insn_count): Return zero for an empty asm body.
14725
14726 2008-07-02  Richard Guenther  <rguenther@suse.de>
14727
14728         * bitmap.h (bitmap_set_bit): Return bool.
14729         (bitmap_clear_bit): Likewise.
14730         * bitmap.c (bitmap_set_bit): Return if the bit changed.  Only
14731         write to the bitmap if it would.
14732         (bitmap_clear_bit): Likewise.
14733         * tree-ssa-structalias.c (add_implicit_graph_edge): Use
14734         bitmap_set_bit return value.
14735         (add_pred_graph_edge): Likewise.
14736         (add_graph_edge): Likewise.
14737         (do_sd_constraint): Likewise.
14738         (do_ds_constraint): Likewise.
14739
14740 2008-07-02  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
14741
14742         * config/alpha/alpha.c (alpha_need_linkage, alpha_use_linkage):
14743         Fix -Wc++-compat and/or -Wcast-qual warnings.
14744         * config/i386/netware.c (gen_stdcall_or_fastcall_decoration,
14745         gen_regparm_prefix): Likewise.
14746         * vmsdbgout.c (write_modbeg, lookup_filename,
14747         vmsdbgout_source_line, vmsdbgout_init): Likewise.
14748
14749 2008-07-02  Danny Smith  <dannysmith@users.sourceforge.net>
14750
14751         * config/i386/mingw32.h (TARGET_USE_JCR_SECTION): Undef to let
14752         defaults.h definition apply.
14753
14754 2008-07-01  Daniel Jacobowitz  <dan@codesourcery.com>
14755
14756         * function.c (assign_parm_remove_parallels): New.
14757         (assign_parm_setup_block_p): Do not return true for non-BLKmode
14758         PARALLELs.
14759         (assign_parm_setup_block): Do not handle them.
14760         (assign_parm_setup_reg, assign_parm_setup_stack): Call
14761         assign_parm_remove_parallels.
14762
14763 2008-07-01  Daniel Jacobowitz  <dan@codesourcery.com>
14764
14765         * c-typeck.c (convert_for_assignment): Use
14766         vector_targets_convertible_p.
14767         * c-common.c (vector_targets_convertible_p): New.
14768         * c-common.h (vector_targets_convertible_p): New prototype.
14769         * config/rs6000/rs6000.c (rs6000_is_opaque_type): Do not check
14770         opaque_p_V2SI_type_node.
14771
14772 2008-07-01  Steve Ellcey  <sje@cup.hp.com>
14773
14774         * config/ia64/ia64.c (ia64_cannot_force_const_mem): Do not allow
14775         RFmode constants.
14776
14777 2008-07-01  Uros Bizjak  <ubizjak@gmail.com>
14778
14779         * config/i386/i386.c (ix86_build_signbit_mask): Generate TImode and
14780         TFmode constants via two element DImode vector for hosts with
14781         HOST_BITS_PER_WIDE_INT < 64.
14782         (ix86_init_builtins): Define __builtin_fabsq and __builtin_copysignq
14783         also for HOST_BITS_PER_WIDE_INT < 64.
14784
14785 2008-07-01  Richard Guenther  <rguenther@suse.de>
14786
14787         PR tree-optimization/36666
14788         * tree-ssa-structalias.c (get_constraint_for_1): Declare.
14789         (get_constraint_exp_from_ssa_var): Split into ...
14790         (get_constraint_exp_for_temp): ... this ...
14791         (get_constraint_for_ssa_var): ... and that.
14792         Return constraint expressions for all touched sub-fields
14793         if the results address is not taken.
14794         (process_constraint): Remove assertion that aggregate
14795         assignments do not happen at this place.
14796         (get_constraint_for_component_ref): Add address_p argument.
14797         Return constraint expressions for all touched sub-fields
14798         if the results address is not taken.
14799         (do_deref): Use get_constraint_exp_for_temp.
14800         (get_constraint_for_1): Rename from ...
14801         (get_constraint_for): ... this.  Add the old function as wrapper.
14802         (do_structure_copy): Use get_constraint_for_1.
14803
14804 2008-07-01  Martin Jambor  <mjambor@suse.cz>
14805
14806         * Makefile.in (tree-switch-conversion.o): Add.
14807         (OBJS-common): Add tree-swtch-conversion.o.
14808         * passes.c (init_optimization_passes): Add pass_convert_switch.
14809         * tree-pass.h: (pass_convert_switch): Add.
14810         * tree-switch-conversion.c: New file.
14811         * gcc.dg/tree-ssa/cswtch.c: New testcase.
14812         * common.opt (ftree-cswtch): New option.
14813         * params.h (PARAM_SWITCH_CONVERSION_BRANCH_RATIO): New parameter.
14814         * params.def (PARAM_SWITCH_CONVERSION_BRANCH_RATIO): New parameter.
14815         * opts.c (decode_options): Set flag_tree_switch_conversion when
14816         optimization level is >= 2.
14817         * doc/invoke.texi (Optimize Options): Added description of
14818         -ftree-swtch-conversion and switch-conversion-max-branch-ratio.
14819
14820 2008-06-30  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
14821
14822         * config/darwin-driver.c (darwin_default_min_version): Fix
14823         -Wc++-compat warnings.
14824
14825 2008-06-30  Uros Bizjak  <ubizjak@gmail.com>
14826
14827         * config/i386/i386.md (*movti_rex64): Add "!" to "r" constraint
14828         of operand 0.
14829
14830 2008-06-30  Kenneth Zadeck <zadeck@naturalbridge.com>
14831
14832         * ifcvt.c (cond_move_process_if_block): Free vectors on false return.
14833
14834 2008-06-30  Kenneth Zadeck <zadeck@naturalbridge.com>
14835
14836         PR rtl-optimization/34744
14837         * df-scan.c (df_scan_free_ref_vec, df_scan_free_mws_vec): New macros.
14838         (df_scan_free_internal): Free data structures not
14839         allocated in storage pools.
14840         (df_mw_hardreg_chain_delete_eq_uses): Use df_scan_free_mws_vec.
14841         (df_refs_add_to_chains): Use df_scan_free_ref_vec and
14842         df_scan_free_mws_vec.
14843         * dse.c (dse_step6): Free offset_map_p and offset_map_n
14844         unconditionally.
14845
14846 2008-06-30  H.J. Lu  <hongjiu.lu@intel.com>
14847
14848         * config/i386/i386.c (contains_aligned_value_p): Return true
14849         for __float128.
14850         (ix86_function_arg_boundary): Return its natural boundary
14851         for __float128.
14852         (return_in_memory_32): Don't check TDmode.
14853         (ix86_split_to_parts): Support splitting into 4 parts and
14854         support TFmode for 32bit target.
14855         (ix86_split_long_move): Support splitting into 4 parts.
14856         (bdesc_args): Enable IX86_BUILTIN_FABSQ and IX86_BUILTIN_COPYSIGNQ
14857         for SSE2.
14858         (ix86_init_mmx_sse_builtins): Move __float80 and __float128 to ...
14859         (ix86_init_builtins): Here.
14860         (ix86_scalar_mode_supported_p): Always return true for TFmode.
14861         (ix86_c_mode_for_suffix): Always return TFmode and XFmode for
14862         'q' and 'w', respectively.
14863
14864         * config/i386/i386.md (movtf): Check TARGET_SSE2 instead of
14865         TARGET_64BIT.
14866         (movtf_internal): Likewise.
14867         (<code>tf2): Likewise.
14868         (*absnegtf2_sse): Likewise.
14869         (copysign<mode>3): Likewise.
14870         (copysign<mode>3_const): Likewise.
14871         (copysign<mode>3_var): Likewise.
14872         (define_split UNSPEC_COPYSIGN): Likewise.
14873         * config/i386/sse.md (*nandtf3): Likewise.
14874         (<code>tf3): Likewise.
14875         (*<code>tf3): Likewise.
14876
14877 2008-06-30  Joey Ye  <joey.ye@intel.com>
14878             H.J. Lu  <hongjiu.lu@intel.com>
14879
14880         * global.c (compute_regsets): Set frame_pointer_needed here.
14881         * reload1.c (init_elim_table): Don't set frame_pointer_needed here.
14882
14883 2008-06-30  Aaron W. LaFramboise  <aaronavay62@aaronwl.com>
14884
14885         * doc/install.texi (specific): Expand Windows build notes.
14886
14887 2008-06-30  Ira Rosen  <irar@il.ibm.com>
14888
14889         PR tree-optimization/36648
14890         * tree-vect-transform.c (vect_do_peeling_for_loop_bound): Divide
14891         number of prolog iterations by step. Fix the comment.
14892
14893 2008-06-30  Richard Guenther  <rguenther@suse.de>
14894
14895         PR middle-end/36671
14896         * tree-ssa-structalias.c (handle_lhs_call): Add flags argument,
14897         handle calls from ECF_MALLOC functions.
14898         (handle_pure_call): ECF_MALLOC functions do not return
14899         call-used memory.
14900         (find_func_aliases): Handle all calls, adjust calls to handle_lhs_call.
14901
14902 2008-06-29  Andreas Schwab  <schwab@suse.de>
14903
14904         * config/m68k/m68k.c (print_operand): Always print a float
14905         constant in hex.
14906         * config/m68k/m68k.h (ASM_OUTPUT_FLOAT_OPERAND)
14907         (ASM_OUTPUT_DOUBLE_OPERAND, ASM_OUTPUT_LONG_DOUBLE_OPERAND):
14908         Remove macros.
14909
14910         * config/rs6000/x-linux64: Remove never used file.
14911
14912 2008-06-29  Richard Guenther  <rguenther@suse.de>
14913
14914         * tree-ssa-structalias.h (compute_points_to_sets): Adjust
14915         prototype.
14916         (struct alias_info): Move ...
14917         * tree-ssa-alias.c: ... here.
14918         (update_alias_info): Declare.
14919         (compute_may_aliases): Call it.
14920         (update_alias_info): New function.
14921         * tree-ssa-structalias.c (update_alias_info): Move ...
14922         * tree-ssa-alias.c (update_alias_info_1): ... here.
14923         * tree-ssa-structalias.c (process_constraint_1): Remove
14924         unused from_call argument.  Rename to ...
14925         (process_constraint): ... this.  Delete old wrapper.
14926         (make_constraint_to): Adjust callers.
14927         (handle_const_call): Likewise.
14928         (handle_pure_call): Likewise.
14929         (init_base_vars): Likewise.
14930         (handle_lhs_call): Likewise.  Remove unnecessary constraint.
14931         (find_func_aliases): We don't need structure copies for
14932         complex types.
14933         (make_constraint_from_anything): Remove.
14934         (create_variable_info_for): For globals make constraints
14935         from escaped, not from anything.
14936         (compute_points_to_sets): Do not call update_alias_info.
14937         (ipa_pta_execute): Use make_constraint_from.
14938
14939 2008-06-29  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
14940
14941         * Makefile.in (CXX_COMPAT_WARN, cxx_compat_warn): Delete.
14942         (bitmap.o-warn, dominance.o-warn): New.
14943         * configure.ac (cxx_compat_warn): Delete.
14944         (loose_warn): Add -Wcast-qual and -Wc++-compat.
14945         * system.h: Remove #pragma diagnostic for -Wcast-qual and
14946         -Wc++-compat.
14947         * configure: Regenerate.
14948
14949         * optabs.c (libfunc_decl_hash, libfunc_decl_eq): Fix -Wcast-qual
14950         warnings.
14951
14952 2008-06-29  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
14953
14954         * alloc-pool.c (create_alloc_pool): Fix -Wc++-compat warnings.
14955         * df-scan.c (df_notes_rescan): Likewise.
14956         * ggc-page.c (set_page_table_entry): Likewise.
14957         * intl.c (gcc_gettext_width): Likewise.
14958         * varasm.c (get_unnamed_section, get_noswitch_section,
14959         get_section): Likewise.
14960
14961 2008-06-28  Andrew Jenner  <andrew@codesourcery.com>
14962
14963         * regrename.c (build_def_use): Don't copy RTX.
14964
14965 2008-06-28  Sandra Loosemore  <sandra@codesourcery.com>
14966
14967         * doc/extend.texi (Variable Attributes): Use @ref instead of @xref.
14968         (Type Attributes): Fix nesting of @table and @subsection.  Adjust
14969         punctuation.  Use @ref instead of @xref.
14970         (Function Names): Remove stray @display/@end display.
14971         (C++ Attributes): Use @ref instead of @xref.
14972         (Deprecated Features): Fix punctuation around @xref.
14973         (Backwards Compatibility): Likewise.
14974         * doc/rtl.texi (Incdec): Remove stray @table/@end table.
14975
14976 2008-06-28  Joseph Myers  <joseph@codesourcery.com>
14977
14978         * config/rs6000/predicates.md (easy_fp_constant): Reject TFmode
14979         constants for E500 double.
14980
14981 2008-06-28  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
14982
14983         * doc/rtl.texi (const_vector): Document const_fixed as legitimate
14984         element type of const_vector.
14985
14986 2008-06-28  Uros Bizjak  <ubizjak@gmail.com>
14987
14988         * config/i386/i386.md (addti3, adddi3, addsi3, addhi3, addqi3):
14989         Remove FLAGS_REG clobber from expander pattern.
14990         (subti3, subdi3, subsi3, subhi3, subqi3): Ditto.
14991         (anddi3, andsi3, andhi3, andqi3): Ditto.
14992         (iordi3, iorsi3, iorhi3, iorqi3): Ditto.
14993         (xordi3, xorsi3, xorhi3, xorqi3): Ditto.
14994         (negti2, negdi2, negsi2, neghi2, negqi2): Ditto.
14995         (ashlsi3, ashlhi3, ashlqi3): Ditto.
14996         (ashrsi3, ashrhi3, ashrqi3): Ditto.
14997         (lshrsi3, lshrhi3, lshrqi3): Ditto.
14998         (rotldi3, rotlsi3, rotlhi3, rotlqi3): Ditto.
14999         (rotrdi3, rotrsi3, rotrhi3, rotrqi3): Ditto.
15000
15001 2008-06-28  Richard Guenther  <rguenther@suse.de>
15002
15003         * tree-ssa-structalias.c (callused_id, var_callused,
15004         callused_tree): Add.
15005         (handle_pure_call): New function.
15006         (find_func_aliases): Call it.
15007         (find_what_p_points_to): Handle the call-used set.
15008         (clobber_what_escaped): Likewise.
15009         (compute_call_used_vars): New function.
15010         (init_base_vars): Init the call-used variable.
15011         (do_sd_constraint): Do not propagate the solution from CALLUSED
15012         but use CALLUSED as a placeholder.
15013         (solve_graph): Likewise.
15014         * tree-flow-inline.h (gimple_call_used_vars): New function.
15015         * tree-flow.h (struct gimple_df): Add call_used_vars bitmap.
15016         (compute_call_used_vars): Declare.
15017         * tree-ssa-alias.c (set_initial_properties): Call
15018         compute_call_used_vars.
15019         (reset_alias_info): Clear call-used variables.
15020         (add_call_clobber_ops): Assert we are not called for const/pure
15021         functions.  Remove handling of them.
15022         (add_call_read_ops): Handle pure functions by adding the
15023         call-used set of variables as VUSEs.
15024         * tree-ssa.c (init_tree_ssa): Allocate call-used bitmap.
15025         (delete_tree_ssa): Free it.
15026         * tree-dfa.c (remove_referenced_var): Clear the var from the
15027         call-used bitmap.
15028
15029 2008-06-28  Kai Tietz  <kai.tietz@onevision.com>
15030
15031         * tree.c (build_varargs_function_type_list): New.
15032         (build_function_type_list_1): New.
15033         (build_function_type_list): Use build_function_type_list_1.
15034         * tree.h (build_varargs_function_type_list): New.
15035
15036 2008-06-28  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
15037
15038         PR target/34856
15039         * config/spu/spu.c (spu_builtin_splats): Do not generate
15040         invalid CONST_VECTOR expressions.
15041         (spu_expand_vector_init): Likewise.
15042
15043 2008-06-28  Richard Sandiford  <rdsandiford@googlemail.com>
15044
15045         * optabs.c (libfunc_decls): New variable.
15046         (libfunc_decl_hash, libfunc_decl_eq): New functions.
15047         (init_one_libfunc): Reuse decls and SYMBOL_REFs when asked
15048         for the same function twice.
15049
15050 2008-06-27  Uros Bizjak  <ubizjak@gmail.com>
15051
15052         * config/i386/i386.md (ashlti3, ashrti3, lshrti3): Expand using
15053         ix86_expand_binary_operator directly.
15054         (*ashlti3_1): Rename from ashlti3_1.  Use nonmemory_operand predicate
15055         for operand 2.
15056         (*ashrti3_1): Ditto.
15057         (*lshrti3_1): Ditto.
15058         (*ashlti3_2, *ashrti3_2, *lshrti3_2): Remove insn patterns.
15059         (ashlti, ashrti and lshrti splitters): Handle nonmemory operand 2
15060         using only one splitter.  Conditionaly execute splitter before or
15061         after peephole2 pass.
15062         (ashlti, ashrti and lshrti peephole2): Define peephole2 patterns.
15063         (x86_shld): Rename from x86_shld_1.  Compress operand 2 constraints.
15064         Use only one alternative in asm template.
15065         (x86_64_shld): Compress operand 2 constraints. Use only one alternative
15066         in asm template.
15067         (*ashldi3_cmp_rex64): Use const_1_to_63_operand operand predicate and
15068         "J" operand constraint for operand 2.
15069         (*ashldi3_cconly_rex64): Ditto.
15070         (*ashrdi3_cmp_rex64): Ditto.
15071         (*ashrdi3_cconly_rex64): Ditto.
15072         (*lshrdi3_cmp_rex64): Ditto.
15073         (*lshrdi3_cconly_rex64): Ditto.
15074         * config/i386/predicates.md (const_1_to_63_operand): New predicate.
15075         * config/i386/i386.md (print_operand) ['s']: Print ", " using fputs.
15076         (split_ashr, split_ashl, split_lshr): Use gen_x86_shrd instead of
15077         gen_x86_shrd_1.
15078
15079 2008-06-27  Jakub Jelinek  <jakub@redhat.com>
15080
15081         * gimplify.c (omp_is_private): Don't return true if decl is not
15082         already private on #pragma omp for or #pragma omp parallel for.
15083
15084         PR debug/36617
15085         * tree-cfg.c (struct move_stmt_d): Replace block field with
15086         orig_block and new_block fields.
15087         (move_stmt_r): Only set TREE_BLOCK to p->new_block if
15088         if it used to be NULL, p->orig_block or if p->orig_block is NULL.
15089         (move_block_to_fn): Replace vars_map and new_label_map arguments
15090         with struct move_stmt_d pointer.
15091         (replace_block_vars_by_duplicates): New function.
15092         (move_sese_region_to_fn): Add ORIG_BLOCK argument.  Adjust
15093         move_block_to_fn caller.  If ORIG_BLOCK is non-NULL, move over
15094         all subblocks of ORIG_BLOCK to the new function.  Call
15095         replace_block_vars_by_duplicates.
15096         * tree-flow.h (move_sese_region_to_fn): Adjust prototype.
15097         * omp-low.c (expand_omp_taskreg): Set TREE_USED on DECL_INITIAL
15098         BLOCK of the new function.  Adjust move_sese_region_to_fn caller.
15099         Prune vars with original DECL_CONTEXT from child_cfun->local_decls.
15100         (expand_omp): Temporarily set input_location to the location of
15101         region's controlling stmt.
15102         (lower_omp_sections, lower_omp_for): Add a BLOCK into outermost
15103         BIND_EXPR, push ctx->block_vars and gimplification vars into
15104         the BIND_EXPR and its block's BLOCK_VARS instead of directly
15105         into dest function.
15106         (lower_omp_single): Set TREE_USED on the BIND_EXPR's BLOCK if
15107         there are any BLOCK_VARS.
15108         (lower_omp_taskreg): Set BLOCK on a BIND_EXPR containing the
15109         OMP_PARALLEL or OMP_TASK stmt.
15110         (lower_omp): Save and restore input_location around the lower_omp_1
15111         call.
15112
15113 2008-06-27  Richard Guenther  <rguenther@suse.de>
15114
15115         PR tree-optimization/36400
15116         PR tree-optimization/36373
15117         PR tree-optimization/36344
15118         * tree-ssa-structalias.c (var_escaped, escaped_tree, escaped_id,
15119         var_nonlocal, nonlocal_tree, nonlocal_id): New globals
15120         (update_alias_info): Remove call clobbering code.
15121         (make_constraint_to): New helper function.
15122         (make_escape_constraint): Likewise.
15123         (handle_rhs_call): Use it on all pointer containing arguments.
15124         Also mark the static chain escaped.
15125         (handle_lhs_call): Make constraints from NONLOCAL and ESCAPED
15126         instead of ANYTHING.
15127         (make_constraint_from): New helper split out from ...
15128         (make_constraint_from_anything): ... here.
15129         (find_func_aliases): Add constraints for escape sites.
15130         (intra_create_variable_infos): Make constraints from NONLOCAL
15131         for parameters.
15132         (find_what_p_points_to): Interpret NONLOCAL and ESCAPED the same
15133         as ANYTHING.
15134         (clobber_what_p_points_to): Remove.
15135         (clobber_what_escaped): New function.
15136         (init_base_vars): Init NONLOCAL and ESCAPED.
15137         (do_sd_constraint): Do not propagate the solution from ESCAPED
15138         but use ESCAPED as a placeholder.
15139         (solve_graph): Likewise.
15140         * tree-flow.h (clobber_what_p_points_to): Remove.
15141         (clobber_what_escaped): Declare.
15142         * tree-ssa-alias.c (set_initial_properties): Call it.
15143         Remove code clobbering escaped pointers.
15144
15145 2008-06-27  Richard Sandiford  <rdsandiford@googlemail.com>
15146
15147         * function.c (allocate_struct_function): Only allocate a unique
15148         funcdef_no if the decl is nonzero.
15149
15150 2008-06-27  Richard Sandiford  <rdsandiford@googlemail.com>
15151
15152         * config/mips/mips-protos.h (mips_split_const_insns): Declare.
15153         * config/mips/mips.c (mips_split_const_insns): New function.
15154         * config/mips/mips.md (move_type): New attribute.
15155         (mode): Move attribute definition earlier in file.  Add "TI" and "TF".
15156         (dword_mode): New attribute.
15157         (type): Avoid long line.  Map "move_type"s to "type"s,
15158         choosing "multi" for doubleword moves if appropriate.
15159         Swap MTC/MFC comments to match their declaration order.
15160         (extended_mips16): Default to "yes" if "move_type" is "sll0",
15161         "type" is "branch" or "jal" is "direct".
15162         (length): Handle "extended_mips16" first.  Make the default
15163         "0" for "ghost" instructions.  Set the length from "move_type".
15164         (truncdisi2, truncdihi2, truncdiqi2): Use "move_type" instead
15165         of "type", with "sll0" for the register alternative.  Remove the
15166         "extended_mips16" attribute.
15167         (zero_extendsidi2, *clear_upper32): Use "move_type" instead
15168         of "type", with "shift_shift" for the register alternative.
15169         Remove the "length" attribute.
15170         (*extend<SHORT:mode><GPR:mode>2, *extendqihi2): Likewise.
15171         (*zero_extend<SHORT:mode><GPR:mode>2): Use "move_type" instead
15172         of "type", with "andi" for the register alternative.
15173         (*zero_extendqihi2): Likewise.
15174         (*zero_extend<SHORT:mode><GPR:mode>2_mips16e): Use a "move_type"
15175         of "andi" instead of a "type" of "arith".
15176         (*zero_extend<SHORT:mode><GPR:mode>2_mips16): Use "move_type"
15177         instead of "type".
15178         (*zero_extendqihi2_mips16, mov_<load>l, mov_<load>r, mov_<store>l)
15179         (mov_<store>r, *mov<mode>_ra): Likewise.
15180         (extendsidi2): Use "move_type" instead of "type", with "move"
15181         for the register alternative.
15182         (*extend<SHORT:mode><GPR:mode>2_mips16e): Use "move_type" instead
15183         of "type", with "signext" for the register alternative.
15184         (*extend<SHORT:mode><GPR:mode>2_se<SHORT:size>): Likewise.
15185         (*extendqihi2_mips16e, *extendqihi2_seb): Likewise.
15186         (fix_truncdfsi2_insn, fix_truncsfsi2_insn, fix_truncdfdi2)
15187         (fix_truncsfdi2, floatsidf2, floatdidf2, floatsisf2, floatdisf2)
15188         (floatdisf2, *branch_equality<mode>_mips16): Likewise.
15189         (unnamed branch insn): Likewise.
15190         (*movdi_gp32_fp64): Fold into...
15191         (*movdi_32bit): ...here.
15192         (*movdf_hardfloat_64bit, *movdf_hardfloat_32bit): Combine into...
15193         (*movdf_hardfloat): ...this new pattern.
15194         (*movdf_softfloat): Remove redundant FPR alternatives.
15195         (*movti, *movti_mips16, *movtf, *movtf_mips16): Add "mode" attributes.
15196         (*movv2sf_hardfloat_64bit, *movv2sf_hardfloat_32bit): Combine into...
15197         (*movv2sf): ...this new pattern.  Use "DF" rather than "SF" for
15198         the "move" attribute.
15199         (*movdi_32bit): Use "move_type" instead of "type" and remove the
15200         "length" attribute.  Use "fpload" and "fpstore" instead of "load"
15201         and "store" for COP loads and stores.
15202         (*movdi_32bit_mips16, *movdi_64bit, *movsi_internal, movcc)
15203         (*movhi_internal, *movhi_mips16, *movqi_internal, *movqi_mips16)
15204         (*movsf_hardfloat, *movsf_softfloat, *movsi_mips16, *movdf_hardfloat)
15205         (*movdf_softfloat, *movdf_mips16, *movti, *movti_mips16, *movtf)
15206         (*movtf_mips16, *movv2sf): Likewise.
15207         (mfhi<GPR:mode>_<HILO:mode>, mflo<GPR:mode>_<HILO:mode>)
15208         (load_low<mode>, load_high<mode>, store_word<mode>, mthc1<mode>)
15209         (mfhc1<mode>): Use "move_type" instead of "move".
15210         (*low<mode>_mips16): Use "extended_mips16" instead of "length".
15211         (loadgp_blockage): Remove the "length" attribute.
15212         (blockage, set_got_version, update_got_version): Likewise.
15213         (call_internal): Remove the "extended_mips16" attribute.
15214         (call_value_internal, call_value_multiple_internal): Likewise.
15215         * config/mips/loongson.md (mov<mode>_internal): Use "move_type"
15216         instead of "move".
15217         * config/mips/mips-dsp.md (mips_lbux, mips_lhx, mips_lwx): Remove
15218         the "length" attribute.
15219
15220 2008-06-27  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
15221
15222         * c-format.c (handle_format_attribute): Fix -Wc++-compat and/or
15223         -Wcast-qual warnings.
15224         * c-pragma.c (dpm_eq, handle_pragma_push_macro,
15225         handle_pragma_pop_macro): Likewise.
15226         * collect2.c (resolve_lib_name): Likewise.
15227         * config/arc/arc.c (arc_init): Likewise.
15228         * config/arm/arm.c (neon_builtin_compare,
15229         locate_neon_builtin_icode): Likewise.
15230         * config/arm/pe.c (arm_mark_dllexport, arm_pe_unique_section): Likewise.
15231         * config/bfin/bfin.c (bfin_init_machine_status,
15232         bfin_optimize_loop): Likewise.
15233         * config/bfin/bfin.h (TARGET_CPU_CPP_BUILTINS): Likewise.
15234         * config/cris/cris.c (cris_init_expanders): Likewise.
15235         * config/darwin-c.c (frameworks_in_use, add_framework): Likewise.
15236         * config/darwin.c (machopic_indirection_eq,
15237         machopic_indirection_name, machopic_output_indirection): Likewise.
15238         * config/frv/frv.c (frv_init_machine_status, frv_compare_insns,
15239         frv_io_check_address, frv_io_handle_set, frv_io_handle_use_1,
15240         frv_optimize_membar): Likewise.
15241         * config/i386/cygwin.h (mingw_scan,
15242         GCC_DRIVER_HOST_INITIALIZATION): Likewise.
15243         * config/i386/cygwin1.c (mingw_scan): Likewise.
15244         * config/i386/i386.c (machopic_output_stub): Likewise.
15245         * config/i386/winnt.c (gen_stdcall_or_fastcall_suffix,
15246         i386_pe_unique_section): Likewise.
15247         * config/ia64/ia64.c (ia64_init_machine_status,
15248         ia64_h_i_d_extended, get_free_bundle_state, bundling, ia64_reorg):
15249         Likewise.
15250         * config/iq2000/iq2000.c, iq2000_init_machine_status): Likewise.
15251         * config/m68hc11/m68hc11.c (m68hc11_encode_label): Likewise.
15252         * config/m68k/m68k.c (m68k_handle_option,
15253         m68k_sched_md_init_global): Likewise.
15254         * config/mcore/mcore.c (mcore_mark_dllexport, mcore_mark_dllimport,
15255         mcore_unique_section): Likewise.
15256         * config/mips/mips.c (mips_block_move_straight,
15257         mips16_rewrite_pool_refs, mips_sim_wait_regs_2, mips_sim_record_set):
15258         Likewise.
15259         * config/mmix/mmix.c (mmix_init_machine_status,
15260         mmix_encode_section_info): Likewise.
15261         * config/pa/pa.c (pa_init_machine_status, hppa_encode_label): Likewise.
15262         * config/rs6000/rs6000.c (rs6000_init_machine_status,
15263         print_operand_address, output_toc, redefine_groups,
15264         rs6000_elf_encode_section_info, machopic_output_stub): Likewise.
15265         * config/s390/s390.c (s390_init_machine_status): Likewise.
15266         * config/score/score.c (score_block_move_straight,
15267         score_block_move_loop_body): Likewise.
15268         * config/sparc/sparc.c (sparc_init_machine_status): Likewise.
15269         * config/xtensa/xtensa.c (xtensa_init_machine_status): Likewise.
15270         * emit-rtl.c (find_auto_inc): Likewise.
15271         * gcc.c (translate_options, process_command): Likewise.
15272         * reorg.c (dbr_schedule): Likewise.
15273         * sdbout.c (sdbout_start_source_file, sdbout_init): Likewise.
15274         * xcoffout.c (xcoffout_declare_function): Likewise.
15275
15276 2008-06-27  Daniel Berlin  <dberlin@dberlin.org>
15277
15278         * tree-ssa-structalias.c (find_func_aliases): Trivial fix to get
15279         ipa-pta working again.
15280
15281 2008-06-27  David Edelsohn  <edelsohn@gnu.org>
15282
15283         * config/rs6000/t-aix52: Append large data option to LDFLAGS for
15284         genautomata.
15285
15286 2008-06-27  Edmar Wienskoski  <edmar@freescale.com>
15287
15288         * config.gcc (powerpc*-*-*): Add new core e500mc.
15289         * config/rs6000/e500mc.md: New file.
15290         * config/rs6000/rs6000.c (processor_costs): Add new costs for
15291         e500mc.
15292         (rs6000_override_options): Add e500mc case to
15293         processor_target_table. Altivec and Spe options not allowed
15294         with e500mc. Add isel instruction to e500mc by
15295         default. Initialize rs6000_cost for e500mc.
15296         (rs6000_issue_rate): Set issue rate for e500mc.
15297         * config/rs6000/rs6000.h (processor_type): Add
15298         PROCESSOR_PPCE500MC.
15299         (ASM_CPU_SPEC): Add e500mc.
15300         Set TARGET_ISEL to rs6000_isel.
15301         * config/rs6000/e500.h: Remove redefinition of TARGET_ISEL.
15302         (CHECK_E500_OPTIONS): Remove TARGET_ISEL.
15303         * config/rs6000/rs6000.md (define_attr "cpu"): Add ppce500mc.
15304         Include e500mc.md.
15305         * doc/invoke.texi: Add e500mc to list of cpus.
15306
15307 2008-06-27  Laurynas Biveinis  <laurynas.biveinis@gmail.com>
15308
15309         PR c/34867
15310         * c-lex.c (lex_charconst): Initialize unsignedp.
15311
15312 2008-06-27  Olivier Hainque  <hainque@adacore.com>
15313
15314         * gimplify.c (gimplify_modify_expr_to_memset): Assert our
15315         documented assumptions.
15316
15317 2008-06-26  H.J. Lu  <hongjiu.lu@intel.com>
15318
15319         * dwarf2out.c: Remove trailing white spaces.  Break long line
15320         in comments.
15321
15322 2008-06-26  Richard Sandiford  <rdsandiford@googlemail.com>
15323
15324         * libfuncs.h (LTI_synchronize): New libfunc_index.
15325         (synchronize_libfunc): Declare.
15326         * builtins.c (expand_builtin_synchronize): Consider using
15327         synchronize_libfunc before falling back on an asm blockage.
15328         * config/mips/mips.c: Include libfuncs.h
15329         (mips_init_libfuncs): Initialize synchronize_libfunc for TARGET_MIPS16.
15330
15331 2008-06-26  Nathan Froyd  <froydnj@codesourcery.com>
15332
15333         * config/rs6000/rs6000.c (emit_allocate_stack): Add copy_r11
15334         parameter.  Copy stack_reg to r11 where appropriate.
15335         (no_global_regs_above): Add gpr parameter.
15336         (rs6000_stack_info): Only add padding for SPE save area if we
15337         are saving SPE GPRs and CR.
15338         (saveres_routine_syms): New variable.
15339         (FIRST_SAVRES_REGISTER, LAST_SAVRES_REGISTER, N_SAVRES_REGISTERS):
15340         Define.
15341         (rs6000_savres_routine_sym): New function.
15342         (rs6000_emit_stack_reset, rs6000_restore_saved_cr): New functions,
15343         split out of...
15344         (rs6000_emit_epilogue): ...here.  Use rs6000_use_multiple_p and
15345         rs6000_savres_strategy.  Restore GPRs out-of-line if appropriate.
15346         Tweak FPR out-of-line saving.
15347         (rs6000_make_savres_rtx): New function.
15348         (rs6000_use_multiple_p): New function.
15349         (rs6000_savres_strategy): New function.
15350         (rs6000_emit_prologue): Use rs6000_savres_strategy.  Save GPRs
15351         out-of-line if appropriate.
15352         * config/rs6000/sysv4.h (FP_SAVE_INLINE): Save FPRs out-of-line
15353         if we are optimizing for size.
15354         (GP_SAVE_INLINE): Define.
15355         (SAVE_FP_SUFFIX, RESTORE_FP_SUFFIX): Only use _l on 64-bit targets.
15356         * config/rs6000/darwin.h (GP_SAVE_INLINE): Define.
15357         * config/rs6000/aix.h (GP_SAVE_INLINE): Define.
15358         * config/rs6000/rs6000.md (*save_gpregs_<mode>): New insn.
15359         (*save_fpregs_<mode>): Add use of r11.
15360         (*restore_gpregs_<mode>): New insn.
15361         (*return_and_restore_gpregs_<mode>): New insn.
15362         (*return_and_restore_fpregs_<mode>): Adjust to clobber LR and
15363         use r11.
15364         * config/rs6000/spe.md (*save_gpregs_spe): New insn.
15365         (*restore_gpregs_spe): New insn.
15366         (*return_and_restore_gpregs_spe): New insn.
15367         * config/rs6000/predicates.md (save_world_operation): Fix check.
15368
15369 2008-06-26  Steven Bosscher  <steven@gcc.gnu.org>
15370
15371         * tree-into-ssa (insert_phi_nodes_for): 'var' must be a DECL at
15372         this point, so assert that.
15373
15374 2008-06-26  Steven Bosscher  <steven@gcc.gnu.org>
15375
15376         * cfganal.c: Include vec.h and vecprim.h.
15377         (compute_idf): Import from...
15378         * tree-into-ssa (compute_idf): ...here.
15379         * basic-block.h (compute_idf): Export.
15380
15381 2008-06-26  Joseph Myers  <joseph@codesourcery.com>
15382
15383         * c-decl.c (merge_decls): Use !current_function_decl to check for
15384         extern declaration of C99 inline function being at file scope.
15385
15386 2008-06-25  John David Anglin  <dave.anglin@gcc-cnrc.gc.ca>
15387
15388         * config.gcc (hppa[12]*-*-hpux10*): Don't use fixproto.
15389
15390 2008-06-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
15391
15392         * alias.c (record_alias_subset, init_alias_analysis): Fix
15393         -Wc++-compat and/or -Wcast-qual warnings.
15394         * attribs.c (lookup_attribute_spec): Likewise.
15395         * bb-reorder.c (find_traces, rotate_loop, find_traces_1_round,
15396         copy_bb, connect_traces,
15397         find_rarely_executed_basic_blocks_and_cr): Likewise.
15398         * bt-load.c (find_btr_def_group, add_btr_def, new_btr_user,
15399         note_btr_set, migrate_btr_defs): Likewise.
15400         * builtins.c (result_vector, expand_builtin_memcpy,
15401         expand_builtin_mempcpy_args, expand_builtin_strncpy,
15402         builtin_memset_read_str, expand_builtin_printf,
15403         fold_builtin_memchr, rewrite_call_expr, fold_builtin_printf):
15404         Likewise.
15405         * caller-save.c (mark_set_regs): Likewise.
15406         * calls.c (expand_call, emit_library_call_value_1): Likewise.
15407         * cgraph.c (cgraph_edge): Likewise.
15408         * combine.c (likely_spilled_retval_1): Likewise.
15409         * coverage.c (htab_counts_entry_hash, htab_counts_entry_eq,
15410         htab_counts_entry_del, get_coverage_counts): Likewise.
15411         * cselib.c (new_elt_list, new_elt_loc_list, entry_and_rtx_equal_p,
15412         new_cselib_val): Likewise.
15413         * dbgcnt.c (dbg_cnt_process_opt): Likewise.
15414         * dbxout.c (dbxout_init, dbxout_type, output_used_types_helper):
15415         Likewise.
15416         * df-core.c (df_compact_blocks): Likewise.
15417         * df-problems.c (df_grow_bb_info, df_chain_create): Likewise.
15418         * df-scan.c (df_grow_reg_info, df_ref_create,
15419         df_insn_create_insn_record, df_insn_rescan, df_notes_rescan,
15420         df_ref_compare, df_ref_create_structure, df_bb_refs_record,
15421         df_record_entry_block_defs, df_record_exit_block_uses,
15422         df_bb_verify): Likewise.
15423         * df.h (DF_REF_EXTRACT_WIDTH_CONST, DF_REF_EXTRACT_OFFSET_CONST,
15424         DF_REF_EXTRACT_MODE_CONST): New.
15425         * dominance.c (get_immediate_dominator, get_dominated_by,
15426         nearest_common_dominator, root_of_dom_tree,
15427         iterate_fix_dominators, first_dom_son, next_dom_son): Fix
15428         -Wc++-compat and/or -Wcast-qual warnings.
15429         * dse.c (clear_alias_set_lookup, get_group_info, gen_rtx_MEM,
15430         record_store, replace_read, check_mem_read_rtx, scan_insn,
15431         dse_step1, dse_record_singleton_alias_set): Likewise.
15432         * dwarf2asm.c (dw2_force_const_mem): Likewise.
15433
15434 2008-06-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
15435
15436         * dwarf2out.c (new_cfi, queue_reg_save, dwarf2out_begin_prologue,
15437         dwarf2out_frame_init, new_loc_descr, new_die, lookup_decl_die,
15438         lookup_decl_loc, add_var_loc_to_decl, compute_section_prefix,
15439         assign_symbol_names, htab_cu_hash, htab_cu_eq, htab_cu_del,
15440         build_abbrev_table, new_loc_list, output_comp_unit, add_arange,
15441         add_ranges_num, add_ranges_by_labels, file_info_cmp,
15442         file_name_acquire, output_file_names, add_const_value_attribute,
15443         premark_used_types_helper, file_table_eq, file_table_hash,
15444         lookup_filename, dwarf2out_var_location, dwarf2out_source_line,
15445         dwarf2out_init, file_table_relative_p): Fix -Wc++-compat and/or
15446         -Wcast-qual warnings.
15447         * ebitmap.c (ebitmap_array_grow, ebitmap_array_init,
15448         ebitmap_alloc, ebitmap_ior, ebitmap_and_compl): Likewise.
15449         * emit-rtl.c (get_mem_attrs, get_reg_attrs, gen_rtvec,
15450         gen_reg_rtx, start_sequence, init_emit): Likewise.
15451         * et-forest.c (et_new_occ, et_new_tree): Likewise.
15452         * except.c (init_eh_for_function, gen_eh_region,
15453         remove_unreachable_regions, add_ehl_entry, duplicate_eh_regions_1,
15454         arh_to_landing_pad, arh_to_label, add_action_record,
15455         add_call_site, switch_to_exception_section): Likewise.
15456         * expmed.c (synth_mult): Likewise.
15457         * expr.c (gen_group_rtx, emit_group_load, emit_group_store,
15458         store_expr): Likewise.
15459         * final.c (shorten_branches, final_scan_insn, debug_queue_symbol):
15460         Likewise.
15461         * function.c (assign_stack_temp_for_type,
15462         allocate_struct_function, match_asm_constraints_1): Likewise.
15463         * gcov-io.c (gcov_allocate): Likewise.
15464         * gcse.c (GNEW, GCNEW, GNEWVEC, GCNEWVEC, GRESIZEVEC, GNEWVAR,
15465         GCNEWVAR, GRESIZEVAR, GOBNEW, GOBNEWVAR): New.
15466         (gcse_main, alloc_gcse_mem, alloc_gcse_mem, alloc_reg_set_mem,
15467         record_one_set, insert_expr_in_table, insert_set_in_table,
15468         dump_hash_table, compute_hash_table_work, alloc_hash_table,
15469         pre_ldst_expr_hash, pre_ldst_expr_eq, find_rtx_in_ldst,
15470         reg_set_info, reg_clear_last_set): Fix -Wc++-compat and/or
15471         -Wcast-qual warnings.
15472
15473 2008-06-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
15474
15475         * cse.c (approx_reg_cost_1, cse_insn): Fix -Wc++-compat and/or
15476         -Wcast-qual warnings.
15477         * gcc.c (process_command): Likewise.
15478         * genattrtab.c (oballoc): Use XOBNEW.
15479         (oballocvec): Define.
15480         (attr_hash_add_rtx, attr_hash_add_string, attr_string,
15481         get_attr_value, fill_attr, make_length_attrs, gen_attr, gen_insn,
15482         gen_delay, find_attr, gen_insn_reserv, gen_bypass_1): Fix
15483         -Wc++-compat and/or -Wcast-qual warnings.
15484         * genautomata.c (XCREATENODE, XCREATENODEVEC, XCREATENODEVAR,
15485         XCOPYNODE, XCOPYNODEVEC, XCOPYNODEVAR): New.
15486         (gen_cpu_unit, gen_query_cpu_unit, gen_bypass, gen_excl_set,
15487         gen_presence_absence_set, gen_automaton, gen_regexp_el,
15488         gen_regexp_repeat, gen_regexp_allof, gen_regexp_oneof,
15489         gen_regexp_sequence, gen_reserv, gen_insn_reserv, process_excls,
15490         add_excls, process_presence_absence_names,
15491         process_presence_absence_patterns, add_presence_absence,
15492         process_regexp, add_advance_cycle_insn_decl, get_free_alt_state,
15493         get_free_state, add_arc, get_free_automata_list_el,
15494         form_reserv_sets_list, copy_insn_regexp, transform_1, transform_2,
15495         transform_3, cache_presence, create_ainsns, create_automata,
15496         create_state_ainsn_table, dfa_insn_code_enlarge,
15497         output_trans_func, output_min_issue_delay_func,
15498         output_dead_lock_func, output_reset_func,
15499         output_get_cpu_unit_code_func, output_dfa_start_func,
15500         expand_automata): Likewise.
15501         * genextract.c (gen_insn): Likewise.
15502         * gengtype-lex.l: Likewise.
15503         * gengtype.c (read_input_list, adjust_field_type,
15504         process_gc_options): Likewise.
15505         * genoutput.c (note_constraint): Likewise.
15506         * genpreds.c (mangle, add_constraint): Likewise.
15507         * genrecog.c (process_define_predicate, new_decision,
15508         add_to_sequence): Likewise.
15509         * gensupport.c (record_insn_name): Likewise.
15510
15511 2008-06-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
15512
15513         * config/i386/driver-i386.c (detect_caches_amd,
15514         detect_caches_intel, host_detect_local_cpu): Fix -Wc++-compat
15515         and/or -Wcast-qual warnings.
15516         *ggc-common.c (ggc_mark_roots, gt_pch_note_object,
15517         gt_pch_note_reorder, relocate_ptrs, write_pch_globals,
15518         gt_pch_save): Likewise.
15519         * ggc-page.c (push_depth, push_by_depth, alloc_anon, alloc_page,
15520         gt_ggc_m_S, clear_marks, ggc_pch_read): Likewise.
15521         * global.c (compute_regsets): Likewise.
15522         * graph.c (print_rtl_graph_with_bb, clean_graph_dump_file,
15523         finish_graph_dump_file): Likewise.
15524         * haifa-sched.c (schedule_block, extend_h_i_d, extend_ready,
15525         unlink_bb_notes): Likewise.
15526         * integrate.c (get_hard_reg_initial_val): Likewise.
15527         * ipa-prop.c (ipa_push_func_to_list): Likewise.
15528         * ipa-struct-reorg.c (gen_var_name, gen_cluster_name): Likewise.
15529         * local-alloc.c (update_equiv_regs): Likewise.
15530         * loop-invariant.c (check_invariant_table_size,
15531         hash_invariant_expr, eq_invariant_expr, find_or_insert_inv):
15532         Likewise.
15533         * loop-iv.c (check_iv_ref_table_size, analyzed_for_bivness_p,
15534         altered_reg_used, mark_altered): Likewise.
15535         * loop-unroll.c (si_info_eq, ve_info_eq, allocate_basic_variable,
15536         insert_var_expansion_initialization,
15537         combine_var_copies_in_loop_exit, apply_opt_in_copies,
15538         release_var_copies): Likewise.
15539         * matrix-reorg.c (mat_acc_phi_hash, mat_acc_phi_eq, mtt_info_eq,
15540         analyze_matrix_decl, add_allocation_site, analyze_transpose,
15541         analyze_accesses_for_phi_node, check_var_notmodified_p,
15542         check_allocation_function, find_sites_in_func,
15543         record_all_accesses_in_func, transform_access_sites,
15544         transform_allocation_sites): Likewise.
15545         * omp-low.c (new_omp_region, create_omp_child_function_name,
15546         check_omp_nesting_restrictions, check_combined_parallel,
15547         lower_omp_2, diagnose_sb_1, diagnose_sb_2): Likewise.
15548         * optabs.c (no_conflict_move_test, gen_libfunc, gen_fp_libfunc,
15549         gen_intv_fp_libfunc, gen_interclass_conv_libfunc,
15550         gen_intraclass_conv_libfunc, set_optab_libfunc, set_conv_libfunc):
15551         Likewise.
15552         * opts-common.c (prune_options): Likewise.
15553         * opts.c (add_input_filename, print_filtered_help,
15554         get_option_state): Likewise.
15555         * params.c (add_params): Likewise.
15556         * passes.c (set_pass_for_id, next_pass_1,
15557         do_per_function_toporder, pass_fini_dump_file): Likewise.
15558         * postreload.c (reload_cse_simplify_operands): Likewise.
15559         * predict.c (tree_predicted_by_p, tree_predict_edge,
15560         clear_bb_predictions, combine_predictions_for_bb): Likewise.
15561
15562 2008-06-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
15563
15564         * ra.h (add_neighbor): Fix -Wc++-compat and/or -Wcast-qual
15565         warnings.
15566         * recog.c (check_asm_operands, validate_change_1): Likewise.
15567         * reg-stack.c (check_asm_stack_operands, subst_asm_stack_regs,
15568         subst_asm_stack_regs): Likewise.
15569         * regclass.c (regclass, som_hash, som_eq, record_subregs_of_mode,
15570         cannot_change_mode_set_regs, invalid_mode_change_p): Likewise.
15571         * regmove.c (reg_is_remote_constant_p): Likewise.
15572         * regrename.c (regrename_optimize, scan_rtx_reg,
15573         kill_clobbered_value, kill_set_value, kill_autoinc_value):
15574         Likewise.
15575         * regstat.c (regstat_init_n_sets_and_refs, regstat_compute_ri,
15576         regstat_compute_calls_crossed): Likewise.
15577         * reload1.c (init_reload, new_insn_chain,
15578         has_nonexceptional_receiver, reload, copy_reloads,
15579         calculate_needs_all_insns, init_elim_table): Likewise.
15580         * rtl-factoring.c (compute_rtx_cost, fill_hash_bucket): Likewise.
15581         * rtl.c (shallow_copy_rtx_stat): Likewise.
15582         * rtlanal.c (parms_set): Likewise.
15583         * sbitmap.c (sbitmap_alloc, sbitmap_alloc_with_popcount,
15584         sbitmap_resize, sbitmap_vector_alloc): Likewise.
15585         * sched-ebb.c (earliest_block_with_similiar_load,
15586         add_deps_for_risky_insns): Likewise.
15587         * sched-rgn.c (find_rgns, gather_region_statistics, extend_rgns,
15588         schedule_region): Likewise.
15589         * see.c (eq_descriptor_pre_extension,
15590         hash_descriptor_pre_extension, hash_del_pre_extension,
15591         eq_descriptor_properties, hash_descriptor_properties,
15592         hash_del_properties, see_seek_pre_extension_expr,
15593         see_initialize_data_structures, see_print_register_properties,
15594         see_print_pre_extension_expr, see_delete_merged_def_extension,
15595         see_delete_unmerged_def_extension, see_emit_use_extension,
15596         see_pre_delete_extension, see_map_extension, see_commit_changes,
15597         see_analyze_merged_def_local_prop,
15598         see_analyze_merged_def_local_prop,
15599         see_analyze_unmerged_def_local_prop, see_analyze_use_local_prop,
15600         see_set_prop_merged_def, see_set_prop_unmerged_def,
15601         see_set_prop_unmerged_use, see_print_one_extension,
15602         see_merge_one_use_extension, see_merge_one_def_extension,
15603         see_store_reference_and_extension, see_update_uses_relevancy,
15604         see_update_defs_relevancy): Likewise.
15605         * statistics.c (hash_statistics_hash, hash_statistics_eq,
15606         hash_statistics_free, curr_statistics_hash): Likewise.
15607         * stmt.c (parse_output_constraint, decl_overlaps_hard_reg_set_p,
15608         expand_asm_operands, expand_return, case_bit_test_cmp,
15609         expand_case): Likewise.
15610         * stor-layout.c (start_record_layout): Likewise.
15611         * stringpool.c (ggc_alloc_string, gt_pch_n_S,
15612         gt_pch_save_stringpool): Likewise.
15613         * tree-data-ref.c (hash_stmt_vertex_info,
15614         have_similar_memory_accesses_1, ref_base_address_1): Likewise.
15615         * tree-ssa-phiopt.c (name_to_bb_hash): Likewise.
15616
15617 2008-06-25  Uros Bizjak  <ubizjak@gmail.com>
15618
15619         PR target/36627
15620         * config/i386/i386.md : Change constraints of HImode and QImode
15621         immediate operands from "i" to "n".  Change SImode "ni" constraint to
15622         "i" and SImode "rmi" constraint to "g".  Remove all constraints
15623         from const0_operand and const1_operand predicated operands.
15624         (i): Change QImode and HImode attribute from "i" to "n".
15625         (*subqi_2): Change HImode operands to QImode.
15626         (*subqi_3): Ditto.
15627
15628 2008-06-25  Olivier Hainque  <hainque@adacore.com>
15629
15630         * Makefile.in (GTFILES_H): Use | instead of ; as separator in
15631         sed substitutions.
15632
15633 2008-06-25  Richard Guenther  <rguenther@suse.de>
15634
15635         * tree-ssa-structalias.c (fieldoff_compare): Make sure to
15636         not overflow the result type.
15637
15638 2008-06-25  Richard Guenther  <rguenther@suse.de>
15639
15640         * tree-vn.c (vn_add): Handle TRUTH_*_EXPR.
15641         (vn_lookup): Likewise.
15642
15643 2008-06-25  Richard Guenther  <rguenther@suse.de>
15644
15645         PR tree-optimization/35518
15646         * fold-const.c (fold_ternary): Strip trivial BIT_FIELD_REFs.
15647         * tree-sra.c (instantiate_element): Use fold_build3 to build
15648         BIT_FIELD_REFs.
15649         (try_instantiate_multiple_fields): Likewise.
15650
15651 2008-06-24  Andrew Pinski  <andrew_pinski@playstation.sony.com>
15652
15653         * config/rs6000/rs6000.md: Change all string instruction's clobber to
15654         be early clobbers.
15655
15656 2008-06-24  Andrew Pinski  <andrew_pinski@playstation.sony.com>
15657
15658         * config/rs6000/rs6000.c (rs6000_emit_epilogue): Set
15659         use_backchain_to_restore_sp to true
15660         if the offset of the link register save area would go over the 32k - 1
15661         offset limit of the load
15662         instructions.
15663
15664 2008-06-25  Hans-Peter Nilsson  <hp@axis.com>
15665
15666         * doc/invoke.texi (Optimize Options) <fstrict-aliasing>: Add
15667         anchor for the type-punning blurb.  Cross-reference "Structures
15668         unions enumerations and bit-fields implementation".  Provide a
15669         cast-through-pointer example.  Make final sentence self-contained.
15670         * doc/implement-c.texi (Structures unions enumerations and
15671         bit-fields implementation): Cross-reference the type-punning blurb
15672         in the -fstrict-aliasing documentation.
15673
15674 2008-06-24  Andrew Pinski  <andrew_pinski@playstation.sony.com>
15675
15676         PR middle-end/36594
15677         * builtins.c (expand_builtin_nonlocal_goto): Stabilize the address of
15678         the memory instead of the memory itself for the save area.
15679
15680 2008-06-24  Olivier Hainque  <hainque@adacore.com>
15681             Nicolas Roche  <roche@adacore.com>
15682
15683         * gengtype.c (srcdir_len): size_t instead of int.
15684         (get_file_realbasename): New function.  For F a filename, the real
15685         basename of F, with all the path components stripped.
15686         (get_file_srcdir_relative_path): New function.  For F a filename, the
15687         relative path to F from $(srcdir).
15688         (get_file_basename): Rewrite using get_file_srcdir_relative_path and
15689         get_file_realbasename.  Adjust the head comment.
15690         (get_prefix_langdir_index): New function. For F a filename, return the
15691         lang_dir_names[] relative index of the language directory that is
15692         a prefix in F.
15693         (get_file_langdir): For F a filename, return the name of the language
15694         directory where F is located.
15695         (get_file_gtfilename): New function. The gt- output file name for an
15696         input filename F.
15697         (get_output_file_with_visibility): Replace in-line computations with
15698         uses of get_file_gtfilename and get_prefix_langdir_index.
15699         * Makefile.in (GTFILES_H): Adjust to match what gengtype generates.
15700
15701 2008-06-24  Jakub Jelinek  <jakub@redhat.com>
15702
15703         PR tree-optimization/36504
15704         * tree-ssa-loop-prefetch.c (gather_memory_references_ref): Skip
15705         references without base address.
15706
15707 2008-06-23  Uros Bizjak  <ubizjak@gmail.com>
15708
15709         PR middle-end/36584
15710         * calls.c (expand_call): Increase alignment for recursive functions.
15711
15712 2008-06-23  Anatoly Sokolov  <aesok@post.ru>
15713
15714         * config/avr/avr.c (avr_function_value): Add new 'outgoing' argument.
15715         (TARGET_FUNCTION_VALUE): New define.
15716         * config/avr/avr-protos.h (avr_function_value): Remove declaration.
15717         * config/avr/avr.h (FUNCTION_VALUE): Remove.
15718
15719 2008-06-23  Uros Bizjak  <ubizjak@gmail.com>
15720
15721         * config/i386/i386.md (fmodxf3): Change sequence of move instructions.
15722         (fmod<mode>3): Ditto.
15723         (remainderxf3): Ditto.
15724         (remainder<mode>3): Ditto.
15725
15726 2008-06-23  Jakub Jelinek  <jakub@redhat.com>
15727
15728         PR target/36533
15729         * emit-rtl.c (set_reg_attrs_from_value): Do nothing if
15730         REG is a hard register.
15731
15732         PR tree-optimization/36508
15733         * tree-ssa-pre.c (compute_antic): Allow num_iterations up to
15734         499, don't check it at all in release compilers.
15735
15736 2008-06-23  Uros Bizjak  <ubizjak@gmail.com>
15737
15738         * config/i386/i386.md (*fop_<mode>_1_i387): Use SSE_FLOAT_MODE_P
15739         together with SSE_TARGET_MATH to disable insn pattern.
15740         (*fop_<MODEF:mode>_2_i387): Ditto.
15741         (*fop_<MODEF:mode>_3_i387): Ditto.
15742
15743 2008-06-22  Andy Hutchinson  <hutchinsonandy@aim.com>
15744
15745         * config/avr/avr.h (SUPPORTS_INIT_PRIORITY): Define.
15746
15747 2008-06-22  Laurynas Biveinis  <laurynas.biveinis@gmail.com>
15748
15749         PR middle-end/34906
15750         * gimplify.c (gimplify_asm_expr): Check the return code of
15751         parse_output_constraint call, set function return and is_inout
15752         value if it failed.
15753
15754 2008-06-22  Ian Lance Taylor  <iant@google.com>
15755
15756         * c-lex.c (narrowest_unsigned_type): Change itk to int.
15757         (narrowest_signed_type): Likewise.
15758         * c-typeck.c (c_common_type): Change local variable mclass to enum
15759         mode_class, twice.
15760         (parser_build_binary_op): Compare the TREE_CODE_CLASS with
15761         tcc_comparison, not the tree code itself.
15762         * c-common.c (def_fn_type): Pass int, not an enum, to va_arg.
15763         (c_expand_expr): Cast modifier to enum expand_modifier.
15764         * c-common.h (C_RID_CODE): Add casts.
15765         (C_SET_RID_CODE): Define.
15766         * c-parser.c (c_parse_init): Use C_SET_RID_CODE.
15767         (c_lex_one_token): Add cast to avoid warning.
15768         (c_parser_objc_type_name): Rename local typename to type_name.
15769         (check_no_duplicate_clause): Change code parameter to enum
15770         omp_clause_code.
15771         (c_parser_omp_var_list_parens): Change kind parameter to enum
15772         omp_clause_code.
15773         (c_parser_omp_flush): Pass OMP_CLAUSE_ERROR, not 0, to
15774         c_parser_omp_list_var_parens.
15775         (c_parser_omp_threadprivate): Likewise.
15776         * cp/lex.c (init_reswords): Use C_SET_RID_CODE.
15777         * cp/parser.c (cp_lexer_get_preprocessor_token): Likewise.
15778         * c-format.c (NO_FMT): Define.
15779         (printf_length_specs): Use NO_FMT.
15780         (asm_fprintf_length_specs): Likewise.
15781         (gcc_diag_length_specs): Likewise.
15782         (scanf_length_specs): Likewise.
15783         (strfmon_length_specs): Likewise.
15784         (gcc_gfc_length_specs): Likewise.
15785         (printf_flag_specs): Change 0 to STD_C89.
15786         (asm_fprintf_flag_specs): Likewise.
15787         (gcc_diag_flag_specs): Likewise.
15788         (gcc_cxxdiag_flag_specs): Likewise.
15789         (scanf_flag_specs): Likewise.
15790         (strftime_flag_specs): Likewise.
15791         (strfmon_flag_specs): Likewise.
15792         (print_char_table): Likewise.
15793         (asm_fprintf_char_table): Likewise.
15794         (gcc_diag_char_table): Likewise.
15795         (gcc_tdiag_char_table): Likewise.
15796         (gcc_cdiag_char_table): Likewise.
15797         (gcc_cxxdiag_char_table): Likewise.
15798         (gcc_gfc_char_table): Likewise.
15799         (scan_char_table): Likewise.
15800         (time_char_table): Likewis.
15801         (monetary_char_table): Likewise.
15802         * c-format.h (BADLEN): Likewise.
15803
15804 2008-06-21  Ian Lance Taylor  <iant@google.com>
15805
15806         * tree.h (enum tree_code): Include all-tree.def, not tree.def.
15807         Define END_OF_BASE_TREE_CODES around inclusion.
15808         * tree.c (tree_code_type): New global array.
15809         (tree_code_length, tree_code_name): Likewise.
15810         * Makefile.in (TREE_H): Add all-tree.def, c-common.def, and
15811         $(lang_tree_files).
15812         (all-tree.def, s-alltree): New targets.
15813         (gencheck.h, s-gencheck): Remove.
15814         (tree.o): Depend upon all-tree.def.
15815         (build/gencheck.o): Remove gencheck.h dependency.
15816         (mostlyclean): Don't remove gencheck.h.
15817         * c-common.h (enum c_tree_code): Remove.
15818         * c-lang.c (tree_code_type): Remove.
15819         (tree_code_length, tree_code_name): Remove.
15820         * gencheck.c (tree_codes): Include all-tree.def, rather than
15821         tree.def, c-common.def, and gencheck.h.  Undefined DEFTREECODE
15822         after it is used.
15823         * tree-browser.c (tb_tree_codes): Include all-tree.def, rather
15824         than tree.def.
15825         * cp/cp-tree.h (enum cplus_tree_code): Remove.
15826         (operator_name_info): Size to MAX_TREE_CODES.
15827         (assignment_operator_name_info): Likewise.
15828         * cp/cp-lang.c (tree_code_type): Remove.
15829         (tree_code_length, tree_code_name): Remove.
15830         * cp/lex.c (operator_name_info): Size to MAX_TREE_CODES.
15831         (assignment_operator_name_info): Likewise.
15832         * cp/decl.c (grok_op_properties): Change LAST_CPLUS_TREE_CODE to
15833         MAX_TREE_CODES.
15834         * cp/mangle.c (write_expression): Likewise.
15835         * cp/Make-lang.in (CXX_TREE_H): Remove cp/cp-tree.def.
15836         * fortran/f95-lang.c (tree_code_type): Remove.
15837         (tree_code_length, tree_code_name): Remove.
15838         * java/java-tree.h (enum java_tree_code): Remove.
15839         * java/lang.c (tree_code_type): Remove.
15840         (tree_code_length, tree_code_name): Remove.
15841         * java/Make-lang.in (JAVA_TREE_H): Remove java/java-tree.def.
15842         * objc/objc-act.h (enum objc_tree_code): Remove.
15843         * objc/objc-lang.c (tree_code_type): Remove.
15844         (tree_code_length, tree_code_name): Remove.
15845         * objcp/objcp-lang.c (tree_code_type): Remove.
15846         (tree_code_length, tree_code_name): Remove.
15847         * ada/ada-tree.h (enum gnat_tree_code): Remove.
15848         * ada/Make-lang.in (ADA_TREE_H): Remove ada/ada-tre.def.
15849         * ada/misc.c (tree_code_type): Remove.
15850         (tree_code_length, tree_code_name): Remove.
15851
15852 2008-06-21  Bernhard Fischer  <aldot@gcc.gnu.org>
15853
15854         * tree-ssa-pre.c (fini_antic): Bitmap_sets have to be freed before
15855         the grand_bitmap_obstack.
15856
15857 2008-06-20  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
15858
15859         * ggc.h (GGC_RESIZEVAR): New, reorder macros.
15860         * tracer.c (tail_duplicate): Fix for -Wc++-compat.
15861         * tree-affine.c (aff_combination_expand, free_name_expansion): Likewise.
15862         * tree-cfg.c (replace_by_duplicate_decl, replace_ssa_name,
15863         move_stmt_r, new_label_mapper): Likewise.
15864         * tree-complex.c (cvc_lookup): Likewise.
15865         * tree-dfa.c (create_function_ann): Likewise.
15866         * tree-dump.c (dump_register): Likewise.
15867         * tree-if-conv.c (tree_if_conversion, add_to_predicate_list,
15868         find_phi_replacement_condition): Likewise.
15869         * tree-inline.c (copy_phis_for_bb, estimate_num_insns_1,
15870         tree_function_versioning): Likewise.
15871         * tree-into-ssa.c (cmp_dfsnum): Likewise.
15872         * tree-iterator.c (tsi_link_before, tsi_link_after): Likewise.
15873         * tree-nested.c (lookup_field_for_decl, lookup_tramp_for_decl,
15874         get_nonlocal_debug_decl, convert_nonlocal_reference,
15875         convert_nonlocal_omp_clauses, get_local_debug_decl,
15876         convert_local_reference, convert_local_omp_clauses,
15877         convert_nl_goto_reference, convert_nl_goto_receiver,
15878         convert_tramp_reference, convert_call_expr): Likewise.
15879         * tree-outof-ssa.c (contains_tree_r): Likewise.
15880         * tree-parloops.c (reduction_phi, initialize_reductions,
15881         eliminate_local_variables_1, add_field_for_reduction,
15882         add_field_for_name, create_phi_for_local_result,
15883         create_call_for_reduction_1, create_loads_for_reductions,
15884         create_stores_for_reduction, create_loads_and_stores_for_name):
15885         Likewise.
15886         * tree-phinodes.c (allocate_phi_node): Likewise.
15887         * tree-predcom.c (order_drefs, execute_pred_commoning_cbck): Likewise.
15888         * tree-sra.c (sra_elt_hash, sra_elt_eq, lookup_element): Likewise.
15889         * tree-ssa-alias.c (get_mem_sym_stats_for): Likewise.
15890         * tree-ssa-coalesce.c (compare_pairs): Likewise.
15891         * tree-ssa-loop-im.c (mem_ref_in_stmt, memref_hash, memref_eq,
15892         memref_free, gather_mem_refs_stmt, vtoe_hash, vtoe_eq, vtoe_free,
15893         record_vop_access, get_vop_accesses, get_vop_stores): Likewise.
15894         * tree-ssa-loop-prefetch.c (determine_loop_nest_reuse): Likewise.
15895         * tree-ssa-sccvn.c (VN_INFO_GET, free_phi, free_reference,
15896         vn_nary_op_insert): Likewise.
15897         * tree-ssa.c (redirect_edge_var_map_add,
15898         redirect_edge_var_map_clear, redirect_edge_var_map_dup): Likewise.
15899         * tree-vectorizer.c (vectorize_loops): Likewise.
15900         * tree.c (make_node_stat, copy_node_stat, build_int_cst_wide,
15901         build_fixed, build_real, make_tree_binfo_stat, make_tree_vec_stat,
15902         tree_cons_stat, build1_stat, build_variant_type_copy,
15903         decl_init_priority_lookup, decl_fini_priority_lookup,
15904         decl_priority_info, decl_restrict_base_lookup,
15905         decl_restrict_base_insert, decl_debug_expr_lookup,
15906         decl_debug_expr_insert, decl_value_expr_lookup,
15907         decl_value_expr_insert, type_hash_eq, type_hash_lookup,
15908         type_hash_add, get_file_function_name, tree_check_failed,
15909         tree_not_check_failed, tree_range_check_failed,
15910         omp_clause_range_check_failed, build_omp_clause,
15911         build_vl_exp_stat): Likewise.
15912         * value-prof.c (gimple_histogram_value,
15913         gimple_duplicate_stmt_histograms): Likewise.
15914         * var-tracking.c (attrs_list_insert, attrs_list_copy,
15915         unshare_variable, variable_union_info_cmp_pos, variable_union,
15916         dataflow_set_different_1, dataflow_set_different_2,
15917         vt_find_locations, variable_was_changed, set_variable_part,
15918         emit_notes_for_differences_1, emit_notes_for_differences_2): Likewise.
15919         * varasm.c (prefix_name, emutls_decl, section_entry_eq,
15920         section_entry_hash, object_block_entry_eq,
15921         object_block_entry_hash, create_block_symbol,
15922         initialize_cold_section_name, default_function_rodata_section,
15923         strip_reg_name, set_user_assembler_name, const_desc_eq,
15924         build_constant_desc, output_constant_def, lookup_constant_def,
15925         const_desc_rtx_hash, const_desc_rtx_eq, const_rtx_hash_1,
15926         create_constant_pool, force_const_mem, compute_reloc_for_rtx_1,
15927         default_internal_label): Likewise.
15928         * varray.c (varray_init, varray_grow): Likewise.
15929         * vec.c (vec_gc_o_reserve_1, vec_heap_o_reserve_1): Likewise.
15930
15931 2008-06-20  Uros Bizjak  <ubizjak@gmail.com>
15932
15933         * config/i386/i386.md (*jcc_fused_1): Handle all valid compare
15934         operators for "test" insn.  Macroize insn using SWI mode macro.
15935         (*jcc_fused_2): Ditto.
15936         (*jcc_fused_3): Macroize insn using SWI mode macro.
15937         (*jcc_fused_4): Ditto.
15938
15939 2008-06-20  Bernhard Fischer  <aldot@gcc.gnu.org>
15940
15941         * tree-ssa-pre.c: Fix typo in comment.
15942         (init_antic, fini_antic): Add explicit funtions for
15943         initializing and deinitializing ANTIC and AVAIL sets.
15944         (create_expression_by_pieces): Fix typo in comment.
15945         Remove redundant set of new_stuff and use NULL_TREE instead of NULL.
15946         (execute_pre): Eventually dump details about ANTIC_IN.
15947
15948 2008-06-19  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
15949
15950         * collect2.c (main, add_to_list): Fix for -Wc++-compat.
15951         * gcc.c (translate_options, init_spec, store_arg, read_specs,
15952         add_to_obstack, file_at_path, find_a_file, execute,
15953         add_preprocessor_option, add_assembler_option, add_linker_option,
15954         process_command, insert_wrapper, do_option_spec, do_self_spec,
15955         spec_path, do_spec_1, is_directory, main, used_arg,
15956         getenv_spec_function): Likewise.
15957         * tlink.c (symbol_hash_lookup, file_hash_lookup,
15958         demangled_hash_lookup, symbol_push, file_push, frob_extension):
15959         Likewise.
15960
15961 2008-06-19  Kenneth Zadeck <zadeck@naturalbridge.com>
15962
15963         * doc/rtl.texi: Updated subreg section.
15964
15965 2008-06-19  Jakub Jelinek  <jakub@redhat.com>
15966
15967         PR c++/36523
15968         * cgraphunit.c (cgraph_process_new_functions): Don't clear
15969         node->needed and node->reachable.
15970         * cgraphbuild.c (record_reference): Handle OMP_PARALLEL and OMP_TASK.
15971         * omp-low.c (delete_omp_context): Call finalize_task_copyfn.
15972         (expand_task_call): Don't call expand_task_copyfn.
15973         (expand_task_copyfn): Renamed to...
15974         (finalize_task_copyfn): ... this.
15975
15976 2008-06-19  Jan Hubicka  <jh@suse.cz>
15977
15978         * builtins.c (expand_builtin_nonlocal_goto): Stabilize r_sp before
15979         clobbering framepointer.
15980
15981 2008-06-19  Jan Hubicka  <jh@suse.cz>
15982
15983         * tree-optimize.c (execute_early_local_optimizations): Set
15984         cgraph_state only at first invocation.
15985
15986 2008-06-19  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
15987
15988         * system.h (-Wc++-compat): Activate as a warning, no an error.
15989
15990 2008-06-19  Uros Bizjak  <ubizjak@gmail.com>
15991
15992         * config/i386/i386.md (*jcc_fused_1): Use ASM_COMMENT_START
15993         instead of "#" in insn asm template.
15994         (*jcc_fused_2): Ditto.
15995
15996 2008-06-19  Uros Bizjak  <ubizjak@gmail.com>
15997
15998         * config/i386/i386.h (ix86_tune_indices)
15999         [X86_TUNE_FUSE_CMP_AND_BRANCH]: New.
16000         (TARGET_FUSE_CMP_AND_BRANCH): New define.
16001         * config/i386/i386.md (*jcc_fused_1): New insn pattern
16002         (*jcc_fused_2): Ditto.
16003         * config/i386/i386.c (ix86_tune_features): Add m_CORE2 to
16004         X86_TUNE_FUSE_CMP_AND_BRANCH targets.
16005         (print operand): Handle 'E' and 'e' code.
16006
16007 2008-06-19  Anatoly Sokolov  <aesok@post.ru>
16008
16009         * config/avr/avr.c (avr_mcu_t): Add attiny13a.
16010         * config/avr/avr.h (LINK_SPEC, CRT_BINUTILS_SPECS): (Ditto.).
16011         * config/avr/t-avr (MULTILIB_MATCHES): (Ditto.).
16012
16013 2008-06-19  Bernhard Fischer  <aldot@gcc.gnu.org>
16014
16015         * cgraphunit.c (cgraph_finalize_function): Remove redundant setting of
16016         node->decl.
16017         (cgraph_expand_function): Use local copy of decl.
16018         (cgraph_expand_all_functions): Remove redundant initialization of
16019         order_pos.
16020         (cgraph_optimize): Reword internal_error message.
16021
16022 2008-06-19  Chung-Lin Tang  <ctang@marvell.com>
16023
16024         * arm-protos.h (arm_return_in_memory): Remove public
16025         arm_return_in_memory() prototype.
16026         * arm.c (arm_return_in_memory): Add static prototype, add target
16027         hook macro, change definition and comments.
16028         * arm.h (TARGET_RETURN_IN_MEMORY): Remove.
16029
16030 2008-06-19  Ben Elliston  <bje@au.ibm.com>
16031
16032         * dfp.h, dfp.c, config/dfp-bit.h, config/dfp-bit.c, real.h,
16033         real.c: Remove references to IEEE 754R.
16034         * doc/install.texi (Configuration): IEEE 754R -> IEEE 754-2008.
16035         * doc/libgcc.texi (Decimal float library routines): Likewise.
16036
16037 2008-06-18  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
16038
16039         * targhooks.h (struct gcc_target): New member unwind_word_mode.
16040         (default_unwind_word_mode): Add prototype.
16041         * targhooks.c (default_unwind_word_mode): New function.
16042         (default_eh_return_filter_mode): Return targetm.unwind_word_mode ()
16043         instead of word_mode.
16044         * target-def.h (TARGET_UNWIND_WORD_MODE): New macro.
16045         (TARGET_INITIALIZER): Use it.
16046
16047         * c-common.c (handle_mode_attribute): Support "unwind_word"
16048         mode attribute.
16049         * unwind-generic.h (_Unwind_Word, _Unwind_Sword): Use it.
16050
16051         * except.c (init_eh): Use targetm.unwind_word_mode () instead of
16052         word_mode to access SjLj_Function_Context member "data".
16053         (sjlj_emit_dispatch_table): Likewise.  Also, perform type
16054         conversion from targetm.eh_return_filter_mode () to
16055         targetm.unwind_word_mode () if they differ.
16056
16057         * builtin-types.def (BT_UNWINDWORD): New primitive type.
16058         (BT_FN_UNWINDWORD_PTR): New function type.
16059         (BT_FN_WORD_PTR): Remove.
16060         * builtins.def (BUILT_IN_EXTEND_POINTER): Use BT_FN_UNWINDWORD_PTR.
16061         * except.c (expand_builtin_extend_pointer): Convert pointer to
16062         targetm.unwind_word_mode () instead of word_mode.
16063
16064         * config/spu/spu-protos.h (spu_eh_return_filter_mode): Remove.
16065         * config/spu/spu.c (spu_eh_return_filter_mode): Remove.
16066         (spu_unwind_word_mode): New function.
16067         (TARGET_EH_RETURN_FILTER_MODE): Do not define.
16068         (TARGET_UNWIND_WORD_MODE): Define.
16069         * config/spu/t-spu-elf (TARGET_LIBGCC2_CFLAGS): Remove -D__word__=SI.
16070
16071 2008-06-18  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
16072
16073         * config/spu/spu.c (reg_align): Remove.
16074         (regno_aligned_for_load): Also accept ARG_POINTER_REGNUM.
16075         (spu_split_load): Use regno_aligned_for_load instead of reg_align.
16076         (spu_split_store): Likewise.
16077
16078 2008-06-18  Bernhard Fischer  <aldot@gcc.gnu.org>
16079
16080         * gcc/tree-vn.c: Fix typo in comment.
16081
16082 2008-06-18  Jan Hubicka  <jh@suse.cz>
16083
16084         * cgraphunit.c (cgraph_optimize): Output debug info when doing
16085         toplevel reorder too.
16086
16087 2008-06-18  Jan Hubicka  <jh@suse.cz>
16088
16089         * c-opts.c (c_common_post_options): PCH is not compatible with
16090         no-unit-at-a-time.
16091         * opts.c (handle_options): Enable unit-at-a-time at O0 along with
16092         -fno-toplevel-reorder by default now.
16093
16094 2008-06-18  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
16095
16096         PR documentation/30739
16097         * doc/install.texi (Prerequisites): Document dependency on awk.
16098
16099 2008-06-18  Uros Bizjak  <ubizjak@gmail.com>
16100             Ian Lance Taylor  <iant@google.com>
16101
16102         PR rtl-optimization/35604
16103         * jump.c (redirect_exp_1): Skip the condition of an IF_THEN_ELSE. We
16104         only want to change jump destinations, not eventual label comparisons.
16105
16106 2008-06-16  Jan Hubicka  <jh@suse.cz>
16107
16108         * cgraphunit.c (cgraph_expand_pending_functions): Give up at
16109         syntax errors.
16110         (cgraph_analyze_function): Likewise.
16111
16112 2008-06-16  Jan Hubicka  <jh@suse.cz>
16113
16114         * cgraph.h (cgraph_mark_if_needed): New function.
16115         * cgraphunit.c (cgraph_mark_if_needed): New function.
16116         * c-decl.c (duplicate_decl): Use it.
16117
16118 2008-06-16  Jan Hubicka  <jh@suse.cz>
16119
16120         * cgraph.c (cgraph_add_new_function): When in expansion state, do
16121         lowering.
16122
16123 2008-06-16  Jan Hubicka  <jh@suse.cz>
16124
16125         * tree-outof-ssa.c (pass_out_of_ssa): Do not depend on PROP_alias.
16126
16127 2008-06-16  Daniel Jacobowitz  <dan@codesourcery.com>
16128             Kazu Hirata  <kazu@codesourcery.com>
16129             Maxim Kuvyrkov  <maxim@codesourcery.com
16130
16131         * config.gcc (mips64el-st-linux-gnu): Use mips/st.h and mips/t-st.
16132         * config.host: Use driver-native.o and mips/x-native for mips*-linux*.
16133         * config/mips/linux.h (host_detect_local_cpu): Declare, add to
16134         EXTRA_SPEC_FUNCTIONS.
16135         (MARCH_MTUNE_NATIVE_SPECS, BASE_DRIVER_SELF_SPECS): New macros.
16136         (DRIVER_SELF_SPECS): Adjust.
16137         * config/mips/linux64.h (DRIVER_SELF_SPECS): Update.
16138         * config/mips/st.h, config/mips/t-st: New.
16139         * config/mips/driver-native.c, config/mips/x-native: New.
16140         * doc/invoke.texi (MIPS): Document 'native' value for -march and
16141         -mtune options.
16142
16143 2008-06-18  Maxim Kuvyrkov  <maxim@codesourcery.com>
16144
16145         * config/mips/mips.h (ISA_HAS_CONDMOVE): Slice ISA_HAS_FP_CONDMOVE
16146         from it.
16147         (ISA_HAS_FP_CONDMOVE): New macro.
16148         (ISA_HAS_FP_MADD4_MSUB4, ISA_HAS_FP_MADD3_MSUB3): New macros.
16149         (ISA_HAS_NMADD_NMSUB): Rename to ISA_HAS_NMADD4_NMSUB4.
16150         (ISA_HAS_NMADD3_NMSUB3): New macro.
16151         * config/mips/mips.c (mips_rtx_costs): Update.
16152         * config/mips/mips.md (MOVECC): Don't use FP conditional moves when
16153         compiling for ST Loongson 2E/2F.
16154         (madd<mode>): Rename to madd4<mode>.  Update.
16155         (madd3<mode>): New pattern.
16156         (msub<mode>): Rename to msub4<mode>.  Update.
16157         (msub3<mode>): New pattern.
16158         (nmadd<mode>): Rename to nmadd4<mode>.  Update.
16159         (nmadd3<mode>): New pattern.
16160         (nmadd<mode>_fastmath): Rename to nmadd4<mode>_fastmath.  Update.
16161         (nmadd3<mode>_fastmath): New pattern.
16162         (nmsub<mode>): Rename to nmsub4<mode>.  Update.
16163         (nmsub3<mode>): New pattern.
16164         (nmsub<mode>_fastmath): Rename to nmsub4<mode>_fastmath.  Update.
16165         (nmsub3<mode>_fastmath): New pattern.
16166         (mov<SCALARF:mode>_on_<MOVECC:mode>, mov<mode>cc): Update.
16167
16168 2008-06-18  Steven Bosscher  <steven@gcc.gnu.org>
16169
16170         * df.h (struct df_ref): Replace 'insn' field with 'insn_info' field.
16171         (DF_REF_INSN_INFO): New.
16172         (DF_REF_INSN, DF_REF_INSN_UID): Rewrite macros using DF_REF_INSN_INFO.
16173         (DF_REF_IS_ARTIFICIAL): Artificial refs are now identified as refs
16174         with a NULL DF_REF_INSN_INFO.
16175         (DF_INSN_INFO_GET, DF_INSN_INFO_SET): Renamed from DF_INSN_GET and
16176         DF_INSN_SET.
16177         (DF_INSN_INFO_LUID, DF_INSN_INFO_DEFS, DF_INSN_INFO_USES,
16178         DF_INSN_INFO_EQ_USES): New.
16179         (DF_INSN_LUID, DF_INSN_DEFS, DF_INSN_USES, DF_INSN_EQ_USES,
16180         DF_INSN_UID_LUID, DF_INSN_UID_DEFS, DF_INSN_UID_USES,
16181         DF_INSN_UID_EQ_USES): Rewrite using DF_INSN_INFO_* macros.
16182         * df-core.c: Update comment for above changes.
16183         (df_insn_debug_regno): Use DF_INSN_INFO_GET instead of INSN_UID and
16184         DF_INSN_UID_* macros.
16185         (df_ref_debug): Check for NULL DF_REF_INSN_INFO.
16186         * df-scan.c (df_ref_record): Take a df_insn_info instead of an
16187         insn rtx.  Update all callers.
16188         (df_def_record_1, df_defs_record, df_uses_record, df_get_call_refs,
16189         df_ref_create_structure, df_insn_refs_collect): Likewise.
16190         (df_ref_equal_p): Compare DF_REF_INSN_INFO pointers for the refs.
16191         * df-problems.c (df_chain_dump): Test for non-NULL DF_REF_INSN_INFO.
16192         (df_live_bb_local_compute): Retrieve DF_INSN_INFO, use DF_INSN_INFO_*
16193         macros to access the insn refs.
16194         (df_chain_top_dump, df_chain_bottom_dump, df_byte_lr_alloc): Likewise.
16195         * fwprop.c (use_killed_between): Use DF_REF_INSN accessor macro.
16196         (all_uses_available): Retrieve DF_INSN_INFO for def_insn, and use it
16197         for accessing the refs.
16198         (try_fwprop_subst): Likewise.
16199         * ddg.c (add_cross_iteration_register_deps): Use DF_REF_INSN macro.
16200         * web.c (union_defs): Retrieve DF_INSN_INFO for def_insn, and use it
16201         for accessing the refs.
16202         * loop-invariant.c (invariant_for_use): Use DF_REF_BB macro.
16203         (check_dependencies): Use DF_INSN_INFO_GET, use DF_INSN_INFO_* macros
16204         to look at the insn refs.
16205         (record_uses): Likewise.
16206         * dce.c (deletable_insn_p): Don't tolerate artificial DEFs in this
16207         function anymore.
16208         (mark_artificial_uses): Don't mark_insn for artificial refs.
16209         (mark_reg_rependencies): Likewise.
16210
16211         * doc/rtl.texi: Remove documentation of ADDRESSOF.
16212
16213 2008-06-17  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
16214
16215         * configure: Regenerate.
16216
16217 2008-06-17  Eric B. Weddington  <eric.weddington@atmel.com>
16218
16219         * config/avr/avr.c (avr_mcu_t): Remove atmega32hvb.
16220         * config/avr/avr.h (LINK_SPEC, CRT_BINUTILS_SPECS): Likewise.
16221         * config/avr/t-avr (MULTILIB_MATCHES): Likewise.
16222
16223 2008-06-17  Eric B. Weddington  <eric.weddington@atmel.com>
16224
16225         * config/avr/avr.c (avr_mcu_t): Add attiny167.
16226         * config/avr/avr.h (LINK_SPEC, CRT_BINUTILS_SPECS): Likewise.
16227         * gcc/config/avr/t-avr (MULTILIB_MATCHES): Likewise.
16228
16229 2008-06-17  Eric B. Weddington  <eric.weddington@atmel.com>
16230
16231         * config/avr/avr.c (avr_mcu_t): Add atmega32u4.
16232         * config/avr/avr.h (LINK_SPEC, CRT_BINUTILS_SPECS): Likewise.
16233         * config/avr/t-avr (MULTILIB_MATCHES): Likewise.
16234
16235 2008-06-17  Bernhard Fischer  <aldot@gcc.gnu.org>
16236
16237         * tree-ssa-sccvn.c: Fix format of comments.
16238
16239 2008-06-17  Bernhard Fischer  <aldot@gcc.gnu.org>
16240
16241         * cgraph.c: Remove unneeded forward declarations of eq_node()
16242         and hash_node().
16243
16244 2008-06-17  Steven Bosscher  <steven@gcc.gnu.org>
16245
16246         * see.c (see_analyse_one_def): Do not look for REG_LIBCALL and
16247         REG_RETVAL notes.
16248         (see_update_relevancy): Likewise.
16249         * fwprop.c (try_fwprop_subst): Likewise.
16250         * rtlanal.c (noop_move_p): Likewise.
16251         * builtins.c (expand_buitlin_mathfn): Don't try to add REG_EQUAL
16252         notes to non-existing libcall blocks.
16253         * cse.c (cse_insn): Change prototype.  Don't update libcall notes.
16254         Remove orig_set.
16255         (cse_extended_basic_block): Don't track libcall and no-conflict notes.
16256         (dead_libcall_p): Remove.
16257         (delete_trivially_dead_insns): Don't use it.
16258         * web.c (union_defs): Remove comment about keeping nops.
16259         * gcse.c (hash_scan_insn): Don't take libcall pointers.
16260         (compute_hash_table_work): Don't track libcall notes.
16261         (do_local_cprop): Don't take libcall pointers.  Don't update
16262         libcall notes.
16263         (adjust_libcall_notes): Deleted.
16264         (local_cprop_pass): Remove stack for nested libcalls (which shouldn't
16265         ever have existed in the first place).
16266         (replace_store_insn): Don't try to remove libcall notes.
16267         * lower-subreg.c (move_libcall_note, move_retval_note): Deleted.
16268         (resolve_reg_notes): Don't call them.
16269         (resolve_simple_move): Likewise.
16270         (decompose_multiword_subregs): Remove block handling REG_RETVAL notes.
16271         Don't remove REG_RETVAL notes.
16272         * emit-rtl.c (try_split): Don't update libcall notes.
16273         (emit_copy_of_insn_after): Dito.
16274         * cselib.c (cselib_current_insn_in_libcall): Remove.
16275         (cselib_process_insn): Don't set/clear it.
16276         (new_elt_loc_list): Don't record it.
16277         (cselib_init): Don't initialize it.
16278         * cselib.c (struct elt_loc_list): Remove in_libcall field.
16279         * loop-invariant.c (find_invariant_insn): Don't look for libcall
16280         notes.
16281         * sched-deps.c (sched_analyze_insn): Don't group libcall blocks.
16282         (sched_analyze): Don't set up deps->libcall_block_tail_insn.
16283         (init_deps): Don't initialize it.
16284         * sched-int.h (struct deps): Rremove libcall_block_tail_insn field.
16285         * combine.c (delete_noop_moves): Don't update libcall notes.
16286         (can_combine_p): Remove now pointless #if 0 block.
16287         (try_combine): Remove another obsolete #if 0 block.
16288         (distribute_notes): Don't distribute libcall notes.
16289         * reg-notes.def (REG_LIBCALL, REG_RETVAL): Remove.
16290         * dce.c (libcall_dead_p): Remove.
16291         (delete_unmarked_insns): Don't handle libcall blocks.
16292         (preserve_libcall_for_dce): Remove.
16293         (prescan_insns_for_dce): Don't special-case libcall block insns.
16294         * reload1 (reload): Don't handle libcall notes.
16295         * doc/rtl.texi (REG_LIBCALL, REG_RETVAL, REG_LIBCALL_ID): Remove
16296         documentation.
16297
16298 2008-06-16  Eric B. Weddington  <eric.weddington@atmel.com>
16299
16300         * config/avr/avr.c (avr_mcu_t): Add atmega32c1.
16301         * config/avr/avr.h (LINK_SPEC, CRT_BINUTILS_SPECS): Likewise.
16302         * config/avr/t-avr (MULTILIB_MATCHES): Likewise.
16303
16304 2008-06-16  Eric B. Weddington  <eric.weddington@atmel.com>
16305
16306         * config/avr/avr.c (avr_mcu_t): Add atmega32m1.
16307         * config/avr/avr.h (LINK_SPEC, CRT_BINUTILS_SPECS): Likewise.
16308         * config/avr/t-avr (MULTILIB_MATCHES): Likewise.
16309
16310 2008-06-16  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
16311
16312         * Makefile.in (FLAGS_TO_PASS): Add $(datarootdir).
16313
16314 2008-06-16  Ira Rosen  <irar@il.ibm.com>
16315
16316         PR tree-optimization/36493
16317         * tree-vect-transform.c (vect_create_data_ref_ptr): Remove TYPE from
16318         the arguments list. Use VECTYPE to create vector pointer.
16319         (vectorizable_store): Fail if accesses through a pointer to vectype
16320         do not alias the original memory reference operands.
16321         Call vect_create_data_ref_ptr without the removed argument.
16322         (vectorizable_load): Likewise.
16323         (vect_setup_realignment): Call vect_create_data_ref_ptr without the
16324         removed argument.
16325
16326 2008-06-015  Andy Hutchinson  <hutchinsonandy@aim.com>
16327
16328         PR target/36336
16329         * config/avr/avr.h (LEGITIMIZE_RELOAD_ADDRESS): Add check for
16330         reg_equiv_constant.
16331
16332 2008-06-15  Maxim Kuvyrkov  <maxim@codesourcery.com>
16333
16334         * config/mips/loongson2ef.md: New file.
16335         * config/mips/mips.md (UNSPEC_LOONGSON_ALU1_TURN_ENABLED_INSN)
16336         (UNSPEC_LOONGSON_ALU2_TURN_ENABLED_INSN)
16337         (UNSPEC_LOONGSON_FALU1_TURN_ENABLED_INSN)
16338         (UNSPEC_LOONGSON_FALU2_TURN_ENABLED_INSN): New constants.
16339         (define_attr "cpu"): Rename loongson2e and loongson2f to loongson_2e
16340         and loongson_2f.
16341         (loongson2ef.md): New include.
16342         * config/mips/loongson.md (vec_pack_ssat_<mode>, vec_pack_usat_<mode>)
16343         (add<mode>3, paddd, ssadd<mode>3, usadd<mode>3)
16344         (loongson_and_not_<mode>, loongson_average_<mode>, loongson_eq_<mode>)
16345         (loongson_gt_<mode>, loongson_extract_halfword)
16346         (loongson_insert_halfword_0, loongson_insert_halfword_2)
16347         (loongson_insert_halfword_3, loongson_mult_add, smax<mode>3)
16348         (umax<mode>3, smin<mode>3, umin<mode>3, loongson_move_byte_mask)
16349         (umul<mode>3_highpart, smul<mode>3_highpart, loongson_smul_lowpart)
16350         (loongson_umul_word, loongson_pasubub, reduc_uplus_<mode>)
16351         (loongson_psadbh, loongson_pshufh, loongson_psll<mode>)
16352         (loongson_psra<mode>, loongson_psrl<mode>, sub<mode>3, psubd)
16353         (sssub<mode>3, ussub<mode>3, vec_interleave_high<mode>)
16354         (vec_interleave_low<mode>): Define type attribute.
16355         * config/mips/mips.c (mips_ls2): New static variable.
16356         (mips_issue_rate): Update to handle tuning for Loongson 2E/2F.
16357         (mips_ls2_init_dfa_post_cycle_insn, mips_init_dfa_post_cycle_insn)
16358         (sched_ls2_dfa_post_advance_cycle, mips_dfa_post_advance_cycle):
16359         Implement target scheduling hooks.
16360         (mips_multipass_dfa_lookahead): Update to handle tuning for
16361         Loongson 2E/2F.
16362         (mips_sched_init): Initialize data for Loongson scheduling.
16363         (mips_ls2_variable_issue): New static function.
16364         (mips_variable_issue): Update to handle tuning for Loongson 2E/2F.
16365         Add sanity check.
16366         (TARGET_SCHED_INIT_DFA_POST_CYCLE_INSN)
16367         (TARGET_SCHED_DFA_POST_ADVANCE_CYCLE): Override target hooks.
16368         * config/mips/mips.h (TUNE_LOONGSON_2EF): New macros.
16369         (ISA_HAS_XFER_DELAY, ISA_HAS_FCMP_DELAY, ISA_HAS_HILO_INTERLOCKS):
16370         Handle ST Loongson 2E/2F cores.
16371         (CPU_UNITS_QUERY): Define macro to enable querying of DFA units.
16372
16373 2008-06-15  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
16374
16375         * omp-low.c (extract_omp_for_data): Fix comment typo.
16376         * c.opt: Fix typo.
16377
16378 2008-06-15  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
16379
16380         * doc/sourcebuild.texi (Config Fragments): Remove obsolete
16381         FIXME note about gcc/config.guess.
16382         * doc/options.texi (Option file format): Remove non-ASCII bytes.
16383         * doc/cpp.texi: Expand TABs, drop indentation outside examples.
16384         * doc/cppopts.texi: Likewise.
16385         * doc/extend.texi: Likewise.
16386         * doc/gcc.texi: Likewise.
16387         * doc/gccint.texi: Likewise.
16388         * doc/gcov.texi: Likewise.
16389         * doc/gty.texi: Likewise.
16390         * doc/hostconfig.texi: Likewise.
16391         * doc/install.texi: Likewise.
16392         * doc/invoke.texi: Likewise.
16393         * doc/loop.texi: Likewise.
16394         * doc/makefile.texi: Likewise.
16395         * doc/md.texi: Likewise.
16396         * doc/passes.texi: Likewise.
16397         * doc/tm.texi: Likewise.
16398         * doc/tree-ssa.texi: Likewise.
16399         * doc/trouble.texi: Likewise.
16400
16401 2008-06-15  Mark Shinwell  <shinwell@codesourcery.com>
16402             Nathan Sidwell  <nathan@codesourcery.com>
16403             Maxim Kuvyrkov  <maxim@codesourcery.com>
16404             Richard Sandiford  <rdsandiford@googlemail.com>
16405
16406         * config/mips/mips-modes.def: Add V8QI, V4HI and V2SI modes.
16407         * config/mips/mips-protos.h (mips_expand_vector_init): New.
16408         * config/mips/mips-ftypes.def: Add function types for Loongson-2E/2F
16409         builtins.
16410         * config/mips/mips.c (mips_split_doubleword_move): Handle new modes.
16411         (mips_hard_regno_mode_ok_p): Allow 64-bit vector modes for Loongson.
16412         (mips_vector_mode_supported_p): Add V2SImode, V4HImode and
16413         V8QImode cases.
16414         (LOONGSON_BUILTIN, LOONGSON_BUILTIN_ALIAS): New.
16415         (CODE_FOR_loongson_packsswh, CODE_FOR_loongson_packsshb,
16416         (CODE_FOR_loongson_packushb, CODE_FOR_loongson_paddw,
16417         (CODE_FOR_loongson_paddh, CODE_FOR_loongson_paddb,
16418         (CODE_FOR_loongson_paddsh, CODE_FOR_loongson_paddsb)
16419         (CODE_FOR_loongson_paddush, CODE_FOR_loongson_paddusb)
16420         (CODE_FOR_loongson_pmaxsh, CODE_FOR_loongson_pmaxub)
16421         (CODE_FOR_loongson_pminsh, CODE_FOR_loongson_pminub)
16422         (CODE_FOR_loongson_pmulhuh, CODE_FOR_loongson_pmulhh)
16423         (CODE_FOR_loongson_biadd, CODE_FOR_loongson_psubw)
16424         (CODE_FOR_loongson_psubh, CODE_FOR_loongson_psubb)
16425         (CODE_FOR_loongson_psubsh, CODE_FOR_loongson_psubsb)
16426         (CODE_FOR_loongson_psubush, CODE_FOR_loongson_psubusb)
16427         (CODE_FOR_loongson_punpckhbh, CODE_FOR_loongson_punpckhhw)
16428         (CODE_FOR_loongson_punpckhwd, CODE_FOR_loongson_punpcklbh)
16429         (CODE_FOR_loongson_punpcklhw, CODE_FOR_loongson_punpcklwd): New.
16430         (mips_builtins): Add Loongson builtins.
16431         (mips_loongson_2ef_bdesc): New.
16432         (mips_bdesc_arrays): Add mips_loongson_2ef_bdesc.
16433         (mips_builtin_vector_type): Handle unsigned versions of vector modes.
16434         (MIPS_ATYPE_UQI, MIPS_ATYPE_UDI, MIPS_ATYPE_V2SI, MIPS_ATYPE_UV2SI)
16435         (MIPS_ATYPE_V4HI, MIPS_ATYPE_UV4HI, MIPS_ATYPE_V8QI, MIPS_ATYPE_UV8QI):
16436         New.
16437         (mips_expand_vector_init): New.
16438         * config/mips/mips.h (HAVE_LOONGSON_VECTOR_MODES): New.
16439         (TARGET_CPU_CPP_BUILTINS): Define __mips_loongson_vector_rev
16440         if appropriate.
16441         * config/mips/mips.md: Add unspec numbers for Loongson
16442         builtins.  Include loongson.md.
16443         (MOVE64): Include Loongson vector modes.
16444         (SPLITF): Include Loongson vector modes.
16445         (HALFMODE): Handle Loongson vector modes.
16446         * config/mips/loongson.md: New.
16447         * config/mips/loongson.h: New.
16448         * config.gcc: Add loongson.h header for mips*-*-* targets.
16449         * doc/extend.texi (MIPS Loongson Built-in Functions): New.
16450
16451 2008-06-14  Joseph Myers  <joseph@codesourcery.com>
16452
16453         * config.gcc (arc-*-elf*, avr-*-*, fr30-*-elf, frv-*-elf,
16454         h8300-*-elf*, h8300-*-*, i[34567]86-*-elf*, x86_64-*-elf*,
16455         i[34567]86-*-aout*, i[34567]86-*-coff*, ia64*-*-elf*,
16456         iq2000*-*-elf*, m32r-*-elf*, m32rle-*-elf*, m32r-*-linux*,
16457         m32rle-*-linux*, m68hc11-*-*|m6811-*-*, m68hc12-*-*|m6812-*-*,
16458         m68k-*-coff*, mcore-*-elf, mcore-*-pe*, mipsisa64sr71k-*-elf*,
16459         mipsisa64sb1-*-elf* | mipsisa64sb1el-*-elf*, mips-*-elf* |
16460         mipsel-*-elf*, mips64-*-elf* | mips64el-*-elf*, mips64vr-*-elf* |
16461         mips64vrel-*-elf*, mips64orion-*-elf* | mips64orionel-*-elf*,
16462         mipstx39-*-elf* | mipstx39el-*-elf*, mn10300-*-*, pdp11-*-,
16463         powerpc-*-elf*, powerpcle-*-elf*, sh-*-elf* | sh[12346l]*-*-elf* |
16464         sh-*-symbianelf* | sh[12346l]*-*-symbianelf* | sh-*-linux* |
16465         sh[2346lbe]*-*-linux* | sh-*-netbsdelf* | shl*-*-netbsdelf* |
16466         sh5-*-netbsd* | sh5l*-*-netbsd* | sh64-*-netbsd* |
16467         sh64l*-*-netbsd*, sh-*-*, sparc-*-elf*, sparc64-*-elf*,
16468         v850e1-*-*, v850e-*-*, v850-*-*, xstormy16-*-elf, m32c-*-elf*):
16469         Remove use_fixproto=yes.
16470         (ia64*-*-hpux*): Remove comment about using fixproto.
16471         (m68k-*-uclinuxoldabi*, m68k-*-uclinux*): Remove use_fixproto=no.
16472
16473 2008-06-14  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
16474
16475         * configure.ac: Update gthr-default.h lazily, to avoid unneeded
16476         library rebuilds.
16477         * configure: Regenerate.
16478
16479 2008-06-13  Eric Botcazou  <ebotcazou@adacore.com>
16480
16481         PR middle-end/36520
16482         * builtins.c (get_memory_rtx): Test for the presence of DECL_SIZE_UNIT
16483         before evaluating it.
16484
16485 2008-06-13  Jakub Jelinek  <jakub@redhat.com>
16486
16487         PR c/36507
16488         * c-decl.c (merge_decls): Don't clear DECL_EXTERNAL for
16489         nested inline functions.
16490         (start_decl, start_function): Don't invert DECL_EXTERNAL
16491         for nested inline functions.
16492
16493 2008-06-13  Richard Sandiford  <rdsandiford@googlemail.com>
16494
16495         * config/mips/mips.md: Remove TARGET_DEBUG_D_MODE conditions from
16496         splits that must be made for correctness.
16497
16498 2008-06-13  Richard Sandiford  <rdsandiford@googlemail.com>
16499
16500         * config/mips/mips.c (BUILTIN_AVAIL_NON_MIPS16): New macro.
16501         (AVAIL_NON_MIPS16): Likewise.
16502         (mips_builtin_description): Replace target_flags with a predicate.
16503         (paired_single, sb1_paired_single, mips3d, dsp, dspr2, dsp_32)
16504         (dspr2_32): New availability predicates.
16505         (MIPS_BUILTIN): New macro.
16506         (DIRECT_BUILTIN, CMP_SCALAR_BUILTINS, CMP_PS_BUILTINS)
16507         (CMP_4S_BUILTINS, MOVTF_BUILTINS, CMP_BUILTINS)
16508         (DIRECT_NO_TARGET_BUILTIN, BPOSGE_BUILTIN): Use it.
16509         Replace the TARGET_FLAGS parameters with AVAIL parameters.
16510         (mips_ps_bdesc, mips_sb1_bdesc, mips_dsp_bdesc)
16511         (mips_dsp_32only_bdesc): Merge into...
16512         (mips_builtins): ...this new array.
16513         (mips_bdesc_map, mips_bdesc_arrays): Delete.
16514         (mips_init_builtins): Update after above changes.
16515         (mips_expand_builtin_1): Merge into...
16516         (mips_expand_builtin): ...here and update after above changes.
16517
16518 2008-06-12  Paul Brook  <paul@codesourcery.com>
16519
16520         * longlong.h (__arm__): Define count_leading_zeros.
16521         * config/arm/lib1funcs.asm (xxh, xxl, yyh, yyl): Define.
16522         (clzsi2, clzdi2): New functions.
16523         * config/arm/bpabi-v6m.S (xxh, xxl, yyh, yyl): Remove.
16524         * config/arm/bpabi.S (xxh, xxl, yyh, yyl): Remove.
16525         * config/arm/t-strongarm-elf (LIB1ASMFUNCS): Ditto.
16526         * config/arm/t-vxworks (LIB1ASMFUNCS): Ditto.
16527         * config/arm/t-pe (LIB1ASMFUNCS): Ditto.
16528         * config/arm/t-arm-elf (LIB1ASMFUNCS): Ditto.
16529         * config/arm/t-arm-coff (LIB1ASMFUNCS): Ditto.
16530         * config/arm/t-linux (LIB1ASMFUNCS): Ditto.
16531         * config/arm/t-symbian (LIB1ASMFUNCS): Ditto.
16532         * config/arm/t-wince-pe (LIB1ASMFUNCS): Ditto.
16533
16534 2008-06-12  Kazu Hirata  <kazu@codesourcery.com>
16535
16536         * config/m68k/m68k.c (m68k_tune_flags): New.
16537         (override_options): Compute m68k_tune_flags.
16538         (MULL_COST, MULW_COST): Update for various variants of CFV2.
16539         * config/m68k/m68k.h (TUNE_MAC, TUNE_EMAC): New.
16540
16541 2008-06-12  Jakub Jelinek  <jakub@redhat.com>
16542
16543         PR middle-end/36506
16544         * omp-low.c (expand_omp_sections): Initialize l2 to avoid bogus warning.
16545
16546 2008-06-12  Eric Botcazou  <ebotcazou@adacore.com>
16547
16548         * tree-inline.c (copy_body_r): Copy TREE_SIDE_EFFECTS along with
16549         TREE_THIS_VOLATILE on INDIRECT_REF nodes.
16550
16551 2008-06-12  Eric Botcazou  <ebotcazou@adacore.com>
16552
16553         * expr.c (store_field): Do a block copy from BLKmode to BLKmode-like.
16554         (get_inner_reference): Use BLKmode for byte-aligned BLKmode bitfields.
16555
16556 2008-06-12  Jakub Jelinek  <jakub@redhat.com>
16557
16558         PR middle-end/36506
16559         * omp-low.c (expand_omp_sections): Handle #pragma omp sections with
16560         reductions.
16561
16562 2008-06-12  Richard Guenther  <rguenther@suse.de>
16563
16564         PR tree-optimization/36345
16565         * tree-flow.h (struct ptr_info_def): Align escape_mask,
16566         add memory_tag_needed flag.
16567         (may_alias_p): Declare.
16568         * tree-ssa-alias.c (may_alias_p): Export.
16569         (set_initial_properties): Use memory_tag_needed flag.
16570         (update_reference_counts): Likewise.
16571         (reset_alias_info): Reset memory_tag_needed flag.
16572         (create_name_tags): Check memory_tag_needed flag.
16573         (dump_points_to_info_for): Dump it.
16574         * tree-ssa-structalias.c (struct variable_info): Remove
16575         directly_dereferenced flag.
16576         (new_var_info): Do not initialize it.
16577         (process_constraint_1): Do not set it.
16578         (update_alias_info): Set is_dereferenced flag.
16579         (set_uids_in_ptset): Use may_alias_p.
16580         (set_used_smts): Check memory_tag_needed flag.
16581         (find_what_p_points_to): Likewise.  Pass is_dereferenced flag.
16582         * tree-ssa-alias.c (verify_flow_sensitive_alias_info): Check
16583         memory_tag_needed flag.
16584         * tree-ssa-alias-warnings.c (dsa_named_for): Try to recover
16585         from broken design.
16586
16587 2008-06-12  Kai Tietz  <kai.tietz@onevision.com>
16588
16589         * config/i386/i386.c (ix86_compute_frame_layout): Disable
16590         red zone for w64 abi.
16591         (ix86_expand_prologue): Likewise.
16592         (ix86_force_to_memory): Likewise.
16593         (ix86_free_from_memory): Likewise.
16594
16595 2008-06-11  Edmar Wienskoski  <edmar@freescale.com>
16596
16597         PR target/36425
16598         * config/rs6000/rs6000.c (rs6000_override_options): Set
16599         rs6000_isel conditionally to the absence of comand line override.
16600         * config/rs6000/linuxspe.h (SUBSUBTARGET_OVERRIDE_OPTIONS):
16601         Remove duplicate rs6000_isel setting.
16602         * config/rs6000/eabispe.h: Ditto.
16603
16604 2008-06-11  Richard Guenther  <rguenther@suse.de>
16605
16606         * alias.c (get_alias_set): Use the element alias-set for arrays.
16607         (record_component_aliases): For arrays and vectors do nothing.
16608         * c-common.c (strict_aliasing_warning): Handle the cases
16609         of alias set zero explicitly.
16610         * Makefile.in (dfp.o-warn): Add -Wno-error.
16611
16612 2008-06-11  Joseph Myers  <joseph@codesourcery.com>
16613
16614         * config.gcc (all_defaults): Add arch_32 arch_64 cpu_32 cpu_64
16615         tune_32 tune_64.
16616         (i[34567]86-*-* | x86_64-*-*): Add arch_32 arch_64 cpu_32 cpu_64
16617         tune_32 tune_64 to supported_defaults.  Allow values not
16618         supporting 64-bit mode for arch_32, cpu_32 and tune_32 for
16619         x86_64.  Do not override cpu_32 or cpu_64 values from target name.
16620         (i[34567]86-*-linux*, i[34567]86-*-solaris2.1[0-9]*): Only default
16621         with_cpu_64 to generic for 64-bit-supporting configurations, not
16622         with_cpu.  Remove FIXMEs.
16623         * doc/install.texi (--with-cpu-32, --with-cpu-64, --with-arch-32,
16624         --with-arch-64, --with-tune-32, --with-tune-64): Document.
16625         * config/i386/i386.h (OPT_ARCH32, OPT_ARCH64): Define.
16626         (OPTION_DEFAULT_SPECS): Add tune_32, tune_64, cpu_32, cpu_64,
16627         arch_32 and arch_64.
16628
16629 2008-06-11  Eric Botcazou  <ebotcazou@adacore.com>
16630             Olivier Hainque  <hainque@adacore.com>
16631
16632         * builtins.c (get_memory_rtx): Accept byte-addressable bitfields.
16633         Use DECL_SIZE_UNIT to retrieve the size of the field.
16634
16635 2008-06-11  Joseph Myers  <joseph@codesourcery.com>
16636
16637         * config/arm/arm.c (arm_init_neon_builtins): Move initialization
16638         with function calls after declarations.  Lay out
16639         neon_float_type_node before further use.
16640
16641 2008-06-11  Richard Guenther  <rguenther@suse.de>
16642
16643         * tree-flow.h (may_point_to_global_var): Declare.
16644         * tree-ssa-alias.c (may_point_to_global_var): New function.
16645         * tree-ssa-sink.c (is_hidden_global_store): Use it.
16646
16647 2008-06-10  Kazu Hirata  <kazu@codesourcery.com>
16648
16649         * configure.ac: Teach that fido supports .debug_line.
16650         * configure: Regenerate.
16651
16652 2008-06-10  Tom Tromey  <tromey@redhat.com>
16653
16654         * c-lex.c (fe_file_change): Pass SOURCE_LINE to start_source_file
16655         debug hook.
16656
16657 2008-06-10  Joseph Myers  <joseph@codesourcery.com>
16658
16659         * dfp.c (WORDS_BIGENDIAN): Define to 0 if not defined.
16660         (encode_decimal64, decode_decimal64, encode_decimal128,
16661         decode_decimal128): Reverse order of 32-bit parts of value if host
16662         and target endianness differ.
16663
16664 2008-06-10  Vinodha Ramasamy  <vinodha@google.com>
16665
16666         * value_prob.c (tree_divmod_fixed_value_transform): Use gcov_type.
16667         Avoid division by 0.
16668         (tree_mod_pow2_value_transform): Likewise.
16669         (tree_ic_transform): Likewise.
16670         (tree_stringops_transform): Likewise.
16671         (tree_mod_subtract_transform): Likewise.
16672         * tree-inline-c (copy_bb): Corrected int type to gcov_type.
16673         (copy_edges_for_bb): Likewise.
16674         (initialize_cfun): Likewise.
16675
16676 2008-06-10  Uros Bizjak  <ubizjak@gmail.com>
16677
16678         * config/i386/i386.md (*btdi_rex64): Change operand 1 predicate to
16679         nonmemory_operand. Add "N" operand constraint.
16680         (*btsi): Ditto.
16681         (*jcc_btdi_mask_rex64): New instruction and split pattern.
16682         (*jcc_btsi_mask): Ditto.
16683         (*jcc_btsi_mask_1): Ditto.
16684
16685 2008-06-10  Joseph Myers  <joseph@codesourcery.com>
16686
16687         * config/rs6000/rs6000.c (build_opaque_vector_type): Set
16688         TYPE_CANONICAL for copied element type.
16689
16690 2008-06-10  Uros Bizjak  <ubizjak@gmail.com>
16691
16692         PR target/36473
16693         * config/i386/i386.c (ix86_tune_features) [TUNE_USE_BT]:
16694         Add m_CORE2 and m_GENERIC.
16695         * config/i386/predicates.md (bt_comparison_operator): New predicate.
16696         * config/i386/i386.md (*btdi_rex64): New instruction pattern.
16697         (*btsi): Ditto.
16698         (*jcc_btdi_rex64): New instruction and split pattern.
16699         (*jcc_btsi): Ditto.
16700         (*jcc_btsi_1): Ditto.
16701         (*btsq): Fix Intel asm dialect operand order.
16702         (*btrq): Ditto.
16703         (*btcq): Ditto.
16704
16705 2008-06-09  Andy Hutchinson  <hutchinsonandy@aim.com>
16706
16707         PR middle-end/36447
16708         * simplify-rtx.c (simplify_subreg): Add check for shift count
16709         greater than size.
16710
16711 2008-06-09  Richard Sandiford  <rdsandiford@googlemail.com>
16712
16713         * doc/md.texi: Synchronize with later constraints.md change.
16714         * longlong.h (umul_ppmm): Replace the MIPS asm implementation
16715         with a C implementation.
16716         * config/mips/mips.c (mips_legitimize_move): Remove MFHI and
16717         MFLO handling.
16718         (mips_subword): Assume TImode for CONST_INTs if TARGET_64BIT.
16719         (mips_split_doubleword_move): Use special MTHI and MFHI instructions
16720         when moving to and from MD_REGNUM.
16721         (mips_output_move): Don't handle moves from GPRs to HI_REGNUM.
16722         Handle moves from LO_REGNUM to GPRs using MFLO, MACC or DMACC.
16723         Handle byte and halfword moves.
16724         (mips_hard_regno_mode_ok_p): Handle MD_REGS and DSP_ACC_REGS
16725         separately.
16726         * config/mips/constraints.md (h): Turn into NO_REGS.
16727         (l, x): Update documentation.
16728         * config/mips/mips.md (UNSPEC_MFHILO): Delete.
16729         (UNSPEC_MFHI, UNSPEC_MTHI, UNSPEC_SET_HILO): New.
16730         (UNSPEC_TLS_LDM, UNSPEC_TLS_GET_TP): Renumber.
16731         (HILO): New mode iterator.
16732         (MOVE128): Add TI.
16733         (any_div): New code iterator.
16734         (u): Extend code attribute to div and udiv.
16735         (*add<mode>3_mips16, *movdi_64bit_mips16, *movsi_mips16): Use
16736         d_operand in the splitters.  Remove redundant CONST_INT checks.
16737         (mulsi3_mult3, mul<mode>3_internal, mul<mode>3_r4000, *mul_acc_si)
16738         (*macc, *msac, *msac_using_macc, *macc2, *msac2, *mul_sub_si)
16739         (*muls): Remove "=h" clobbers.  Adjust peephole2s and define_splits
16740         accordingly, using normal moves instead of unspecs to move LO into
16741         a GPR.  Use d_operand and lo_operand instead of *_REG_P checks.
16742         (<u>mulsidi3): Handle expansion in C code.
16743         (<u>mulsidi3_32bit_internal): Rename to...
16744         (<u>mulsidi3_32bit): ...this.
16745         (<u>mulsidi3_32bit_r4000): Fix insn separator.
16746         (*<u>mulsidi3_64bit): Rename to...
16747         (<u>mulsidi3_64bit): ...this.  Combine DImode "=h" and "=l" clobbers
16748         into a TImode "=x" clobber.  In the split, use an UNSPEC_SET_HILO
16749         to set LO and HI to the multiplication result.  Use a normal move
16750         for MFLO and an unspec for MFHI.
16751         (*<u>mulsidi3_64bit_parts): Replace with...
16752         (<u>mulsidi3_64bit_hilo): ...this new instruction.
16753         (<su>mulsi3_highpart): Extend to TARGET_FIX_R4000.
16754         (<su>mulsi3_highpart_internal): Turn into a define_insn_and_split
16755         and extend it to TARGET_FIX_R4000.  Store the destination in a GPR
16756         instead of HI.  Split the instruction into a separate multiplication
16757         and MFHI if !TARGET_FIX_R4000.
16758         (<su>muldi3_highpart): Likewise.
16759         (<su>mulsi3_highpart_mulhi_internal): Remove the first alternative
16760         and the "=h" clobber.
16761         (*<su>mulsi3_highpart_neg_mulhi_internal): Likewise.
16762         (<u>mulditi3): New expander.
16763         (<u>mulditi3_internal, <u>mulditi3_r4000): New patterns.
16764         (madsi): Remove "=h" clobber.
16765         (divmod<mode>4, udivmod<mode>4): Turn into define_insn_and_splits.
16766         Force the modulus result to be a GPR and split the instruction into
16767         a division followed by an MFHI after reload.
16768         (<u>divmod<GPR:mode>4_hilo_<HILO:mode>): New instruction.
16769         (*lea_high64): Use d_operand in the define_peephole2.  Likewise
16770         the MIPS16 HIGH define_split.
16771         (*movdi_32bit, *movdi_gp32_fp64, *movdi_32bit_mips16): Change type
16772         of acc<->gpr moves to "multi".
16773         (*movdi_64bit): Replace the single "x" alternative with
16774         alternatives for moving into and out of "a".
16775         (*movhi_internal, *movqi_internal): Likewise.  Use mips_output_move.
16776         (*movsi_internal): Extend the "d<-A" alternative to "d<-a".
16777         (*movdi_64bit_mips16, *movsi_mips16): Add d<-a alternatives.
16778         Use d_operand in the splitters.  Remove redundant CONST_INT checks.
16779         (*movhi_mips16, *movqi_mips16): Likewise.  Use mips_output_move.
16780         (movti): New expander.
16781         (*movti, *movti_mips16): New insns.
16782         (mfhilo_<mode>, *mfhilo_<mode>, *mfhilo_<mode>_macc): Delete.
16783         (mfhi<GPR:mode>_<HILO:mode>): New pattern.
16784         (mthi<GPR:mode>_<HILO:mode>): Likewise.
16785         * config/mips/predicates.md (fpr_operand): Delete.
16786         (d_operand): New predicate.
16787
16788 2008-06-09  Michael Meissner  <michael.meissner@amd.com>
16789
16790         * config.gcc (i[34567]86-*-*): Put test in quotes to prevent
16791         failure on some Bourne shells.
16792         (x86_64-*-*): Ditto.
16793
16794 2008-06-09  Kai Tietz  <kai.tietz@onevision.com>
16795
16796         * config/i386/cygming.h (TARGET_SUBTARGET64_DEFAULT): New.
16797
16798 2008-06-09  Eric Botcazou  <ebotcazou@libertysurf.fr>
16799
16800         * doc/install.texi (*-*-solaris2*): Remove obsolete contents.
16801         (sparc-sun-solaris2*): Likewise.
16802
16803 2008-06-09  Arnaud Charlet  <charlet@adacore.com
16804
16805         * doc/install.texi: Update requirements to build the Ada compiler.
16806
16807 2008-06-08  Steven Bosscher  <stevenb.gcc@gmail.com>
16808
16809         * df-scan.c (struct df_scan_problem_data): Remove the
16810         mw_link_pool alloc pool.
16811         (df_scan_free_internal): Don't free it.
16812         (df_scan_alloc): Don't allocate it.
16813         * df.h (struct df_link): Update comment.
16814
16815 2008-06-08  Nathan Sidwell  <nathan@codesourcery.com>
16816
16817         * except.h: Correct checks for when SJLJ exceptions must be used.
16818
16819 2008-06-08  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
16820
16821         * doc/invoke.texi (Wenum-compare): Mention that it is enabled by
16822         default.
16823
16824 2008-06-08  Joseph Myers  <joseph@codesourcery.com>
16825
16826         PR tree-optimization/36218
16827         * configure.ac: Use LDFLAGS="${LDFLAGS_FOR_BUILD}" when running
16828         configure for the build system.
16829         (BUILD_LDFLAGS): Define.
16830         * configure: Regenerate.
16831         * Makefile.in (BUILD_LDFLAGS): Define to @BUILD_LDFLAGS@.
16832
16833 2008-07-08  Anatoly Sokolov  <aesok@post.ru>
16834
16835         PR target/36424
16836         * config/avr/avr.h (HARD_REGNO_RENAME_OK): Define.
16837         * config/avr/avr.c (avr_hard_regno_rename_ok): New function.
16838         * config/avr/avr-protos.h (avr_hard_regno_rename_ok): New prototype.
16839
16840 2008-06-07  Danny Smith  <dannysmith@users.sourceforge.net>
16841
16842         * config/i386/cygming.h (MAYBE_UWIN_CPP_BUILTINS): Remove.
16843
16844 2008-06-07  Joseph Myers  <joseph@codesourcery.com>
16845
16846         * config.gcc (Obsolete configurations): Remove list of
16847         configurations.
16848         (Unsupported targets list): Add *-*-linux*aout*, *-*-linux*libc1*,
16849         *-*-solaris2.[0-6], *-*-solaris2.[0-6].*, *-*-sysv*.  Remove other
16850         targets matched by those patterns.
16851         (strongarm*-*-*, ep9312*-*-*, xscale-*-*, parisc*-*-*,
16852         m680[012]0-*-*, *-*-linux*libc1*, *-*-linux*aout*,
16853         alpha*-*-unicosmk*, strongarm*-*-freebsd*, ep9312-*-elf,
16854         arm*-*-kaos*, cris-*-aout, parisc*64*-*-linux*, parisc*-*-linux*,
16855         hppa1.1-*-pro*, hppa1.1-*-osf*, hppa1.1-*-bsd*,
16856         i[34567]86-sequent-ptx4*, i[34567]86-sequent-sysv4*,
16857         i[34567]86-*-beoself*, i[34567]86-*-beos*, i[34567]86-*-sco3.2v5*,
16858         i[34567]86-*-sysv5*, i[34567]86-*-sysv4*, i[34567]86-*-uwin*,
16859         i[34567]86-*-kaos*, m68020-*-elf*, m68010-*-netbsdelf*,
16860         mips-wrs-windiss, mt-*-elf, powerpc-*-beos*, powerpc-*-chorusos*,
16861         powerpc-wrs-windiss*, powerpcle-*-sysv*, powerpc-*-kaos*,
16862         powerpcle-*-kaos*, sh*-*-kaos*, sparc-*-sysv4*, strongarm-*-elf*,
16863         strongarm-*-pe, strongarm-*-kaos*, vax-*-bsd*, vax-*-sysv*,
16864         vax-*-ultrix*, xscale-*-elf, xscale-*-coff,
16865         i[34567]86-*-linux*aout*, i[34567]86-*-linux*libc1): Remove.
16866         Make code for Solaris 7 and greater unconditional for Solaris.
16867         (ep9312-*-*, parisc1*, m680[012]0-*-*, parisc*-*-*, mt-*-*):
16868         Remove --with-* handling.
16869         * config/rs6000/sysv4.h (-mwindiss): Remove from all specs.
16870         (LIB_WINDISS_SPEC, CPP_OS_WINDISS_SPEC, STARTFILE_WINDISS_SPEC,
16871         ENDFILE_WINDISS_SPEC, LINK_START_WINDISS_SPEC,
16872         LINK_OS_WINDISS_SPEC): Remove.
16873         * config/rs6000/sysv4.opt (mwindiss): Remove.
16874         * configure.ac (strongarm*-*-*, xscale*-*-*): Remove.
16875         * configure: Regenerate.
16876         * doc/cpp.texi: Don't mention BeOS.
16877         * doc/extend.texi (interrupt): Don't mention MS1.
16878         * doc/install.texi: (i386-@var{any}-sysv, m68k-bull-sysv,
16879         m68k-hp-hpux, m68000-hp-hpux, m68000-att-sysv,
16880         alphaev5-cray-unicosmk*, xscale-*-*, i?86-*-linux*aout,
16881         i?86-*-sco3.2v5*, i?86-*-udk, m68k-hp-hpux, powerpc-*-sysv4,
16882         powerpc-*-sysv4, powerpcle-*-sysv4, *-*-sysv*, vax-dec-ultrix):
16883         Remove.
16884         * doc/invoke.texi (MT Options): Remove.
16885         (-mwindiss): Remove.
16886         (CRIS Options): Remove cris-axis-aout references.
16887         (HPPA Options): Don't mention hppa1.1-*-pro.
16888         * doc/md.texi: (MorphoTech family): Remove.
16889         * libgcc2.c: Don't handle UWIN.
16890         * config/alpha/t-unicosmk: Remove.
16891         * config/alpha/unicosmk.h: Remove.
16892         * config/arm/kaos-arm.h: Remove.
16893         * config/arm/kaos-strongarm.h: Remove.
16894         * config/arm/strongarm-coff.h: Remove.
16895         * config/arm/strongarm-elf.h: Remove.
16896         * config/arm/strongarm-pe.h: Remove.
16897         * config/arm/t-strongarm-pe: Remove.
16898         * config/arm/t-xscale-coff: Remove.
16899         * config/arm/t-xscale-elf: Remove.
16900         * config/arm/xscale-coff.h: Remove.
16901         * config/arm/xscale-elf.h: Remove.
16902         * config/chorus.h: Remove.
16903         * config/cris/aout.h: Remove.
16904         * config/cris/aout.opt: Remove.
16905         * config/cris/t-aout: Remove.
16906         * config/i386/beos-elf.h: Remove.
16907         * config/i386/kaos-i386.h: Remove.
16908         * config/i386/ptx4-i.h: Remove.
16909         * config/i386/sco5.h: Remove.
16910         * config/i386/sco5.opt: Remove.
16911         * config/i386/sysv4-cpp.h: Remove.
16912         * config/i386/sysv5.h: Remove.
16913         * config/i386/t-beos: Remove.
16914         * config/i386/t-sco5: Remove.
16915         * config/i386/t-uwin: Remove.
16916         * config/i386/uwin.asm: Remove.
16917         * config/i386/uwin.h: Remove.
16918         * config/kaos.h: Remove.
16919         * config/mips/windiss.h: Remove.
16920         * config/mt: Remove directory.
16921         * config/pa/pa-osf.h: Remove.
16922         * config/pa/pa-pro-end.h: Remove.
16923         * config/pa/t-pro: Remove.
16924         * config/ptx4.h: Remove.
16925         * config/rs6000/beos.h: Remove.
16926         * config/rs6000/kaos-ppc.h: Remove.
16927         * config/rs6000/t-beos: Remove.
16928         * config/rs6000/windiss.h: Remove.
16929         * config/sh/kaos-sh.h: Remove.
16930         * config/sol2-6.h: Remove.
16931         * config/sparc/sol26-sld.h: Remove.
16932         * config/sparc/sysv4-only.h: Remove.
16933         * config/vax/bsd.h: Remove.
16934         * config/vax/t-memfuncs: Remove.
16935         * config/vax/ultrix.h: Remove.
16936         * config/vax/vaxv.h: Remove.
16937         * config/windiss.h: Remove.
16938
16939 2008-06-06  Uros Bizjak <ubizjak@gmail.com>
16940
16941         PR rtl-optimization/36438
16942         * cse.c (fold_rtx) [ASHIFT, LSHIFTRT, ASHIFTRT]: Break out early
16943         for vector shifts with constant scalar shift operands.
16944
16945 2008-06-06  Sandip Matte  <sandip@rmicorp.com>
16946
16947         * doc/invoke.texi: Document -march=xlr.
16948         * config/mips/xlr.md: New file.
16949         * config/mips/mips.md: Include it.
16950         (cpu): Add "xlr".
16951         * config/mips/mips.h (PROCESSOR_XLR): New processor_type.
16952         * config/mips/mips.c (mips_cpu_info_table): Add an XLR entry.
16953         (mips_rtx_cost_data): Likewise.
16954
16955 2008-06-06  Nathan Froyd  <froydnj@codesourcery.com>
16956
16957         * config/rs6000/rs6000.c (rs6000_mode_dependent_address): Remove
16958         PRE_INC and PRE_DEC cases.
16959
16960 2008-06-06  Jakub Jelinek  <jakub@redhat.com>
16961
16962         PR rtl-optimization/36419
16963         * except.c (expand_resx_expr): Call do_pending_stack_adjust () before
16964         the emitting jump insn.
16965
16966         PR target/36362
16967         * gimplify.c (gimplify_expr) <case TRUTH_NOT_EXPR>: If *expr_p type
16968         is not bool, boolify the whole *expr_p and convert to the desired type.
16969
16970 2008-06-06  Jakub Jelinek  <jakub@redhat.com>
16971
16972         * c-cppbuiltin.c (c_cpp_builtins): Change _OPENMP value to 200805.
16973         * langhooks.h (struct lang_hooks_for_decls): Add omp_finish_clause.
16974         Add omp_private_outer_ref hook, add another argument to
16975         omp_clause_default_ctor hook.
16976         * langhooks-def.h (LANG_HOOKS_OMP_FINISH_CLAUSE): Define.
16977         (LANG_HOOKS_OMP_PRIVATE_OUTER_REF): Define.
16978         (LANG_HOOKS_OMP_CLAUSE_DEFAULT_CTOR): Change to
16979         hook_tree_tree_tree_tree_null.
16980         (LANG_HOOKS_DECLS): Add LANG_HOOKS_OMP_FINISH_CLAUSE and
16981         LANG_HOOKS_OMP_PRIVATE_OUTER_REF.
16982         * hooks.c (hook_tree_tree_tree_tree_null): New function.
16983         * hooks.h (hook_tree_tree_tree_tree_null): New prototype.
16984         * tree.def (OMP_TASK): New tree code.
16985         * tree.h (OMP_TASK_COPYFN, OMP_TASK_ARG_SIZE, OMP_TASK_ARG_ALIGN,
16986         OMP_CLAUSE_PRIVATE_OUTER_REF, OMP_CLAUSE_LASTPRIVATE_STMT,
16987         OMP_CLAUSE_COLLAPSE_ITERVAR, OMP_CLAUSE_COLLAPSE_COUNT,
16988         OMP_TASKREG_CHECK, OMP_TASKREG_BODY, OMP_TASKREG_CLAUSES,
16989         OMP_TASKREG_FN, OMP_TASKREG_DATA_ARG, OMP_TASK_BODY,
16990         OMP_TASK_CLAUSES, OMP_TASK_FN, OMP_TASK_DATA_ARG,
16991         OMP_CLAUSE_COLLAPSE_EXPR): Define.
16992         (enum omp_clause_default_kind): Add OMP_CLAUSE_DEFAULT_FIRSTPRIVATE.
16993         (OMP_DIRECTIVE_P): Add OMP_TASK.
16994         (OMP_CLAUSE_COLLAPSE, OMP_CLAUSE_UNTIED): New clause codes.
16995         (OMP_CLAUSE_SCHEDULE_AUTO): New schedule kind.
16996         * tree.c (omp_clause_code_name): Add OMP_CLAUSE_COLLAPSE
16997         and OMP_CLAUSE_UNTIED entries.
16998         (omp_clause_num_ops): Likewise.  Increase OMP_CLAUSE_LASTPRIVATE
16999         num_ops to 2.
17000         (walk_tree_1): Handle OMP_CLAUSE_COLLAPSE and OMP_CLAUSE_UNTIED.
17001         Walk OMP_CLAUSE_LASTPRIVATE_STMT.
17002         * tree-pretty-print.c (dump_omp_clause): Handle
17003         OMP_CLAUSE_SCHEDULE_AUTO, OMP_CLAUSE_UNTIED, OMP_CLAUSE_COLLAPSE,
17004         OMP_CLAUSE_DEFAULT_FIRSTPRIVATE.
17005         (dump_generic_node): Handle OMP_TASK and collapsed OMP_FOR loops.
17006         * c-omp.c (c_finish_omp_for): Allow pointer iterators.  Remove
17007         warning about unsigned iterators.  Change decl/init/cond/incr
17008         arguments to TREE_VECs, check arguments for all collapsed loops.
17009         (c_finish_omp_taskwait): New function.
17010         (c_split_parallel_clauses): Put OMP_CLAUSE_COLLAPSE clause to
17011         ws_clauses.
17012         * c-parser.c (c_parser_omp_for_loop): Parse collapsed loops.  Call
17013         default_function_array_conversion on init.  Add par_clauses argument.
17014         If decl is present in parallel's lastprivate clause, change it to
17015         shared and add lastprivate clause for decl to OMP_FOR_CLAUSES.
17016         Add clauses argument, on success set OMP_FOR_CLAUSES to it.  Look up
17017         collapse count in clauses.
17018         (c_parser_omp_for, c_parser_omp_parallel): Adjust
17019         c_parser_omp_for_loop callers.
17020         (OMP_FOR_CLAUSE_MASK): Add 1 << PRAGMA_OMP_CLAUSE_COLLAPSE.
17021         (c_parser_pragma): Handle PRAGMA_OMP_TASKWAIT.
17022         (c_parser_omp_clause_name): Handle collapse and untied clauses.
17023         (c_parser_omp_clause_collapse, c_parser_omp_clause_untied): New
17024         functions.
17025         (c_parser_omp_clause_schedule): Handle schedule(auto).
17026         Include correct location in the error message.
17027         (c_parser_omp_all_clauses): Handle PRAGMA_OMP_CLAUSE_COLLAPSE
17028         and PRAGMA_OMP_CLAUSE_UNTIED.
17029         (OMP_TASK_CLAUSE_MASK): Define.
17030         (c_parser_omp_task, c_parser_omp_taskwait): New functions.
17031         (c_parser_omp_construct): Handle PRAGMA_OMP_TASK.
17032         * tree-nested.c (convert_nonlocal_omp_clauses,
17033         convert_local_omp_clauses): Handle OMP_CLAUSE_LASTPRIVATE_STMT,
17034         OMP_CLAUSE_REDUCTION_INIT, OMP_CLAUSE_REDUCTION_MERGE,
17035         OMP_CLAUSE_COLLAPSE and OMP_CLAUSE_UNTIED.
17036         Don't handle TREE_STATIC or DECL_EXTERNAL VAR_DECLs in
17037         OMP_CLAUSE_DECL.
17038         (conver_nonlocal_reference, convert_local_reference,
17039         convert_call_expr): Handle OMP_TASK the same as OMP_PARALLEL.  Use
17040         OMP_TASKREG_* macros rather than OMP_PARALLEL_*.
17041         (walk_omp_for): Adjust for OMP_FOR_{INIT,COND,INCR} changes.
17042         * tree-gimple.c (is_gimple_stmt): Handle OMP_TASK.
17043         * c-tree.h (c_begin_omp_task, c_finish_omp_task): New prototypes.
17044         * c-pragma.h (PRAGMA_OMP_TASK, PRAGMA_OMP_TASKWAIT): New.
17045         (PRAGMA_OMP_CLAUSE_COLLAPSE, PRAGMA_OMP_CLAUSE_UNTIED): New.
17046         * c-typeck.c (c_begin_omp_task, c_finish_omp_task): New functions.
17047         (c_finish_omp_clauses): Handle OMP_CLAUSE_COLLAPSE and
17048         OMP_CLAUSE_UNTIED.
17049         * c-pragma.c (init_pragma): Init omp task and omp taskwait pragmas.
17050         * c-common.h (c_finish_omp_taskwait): New prototype.
17051         * gimple-low.c (lower_stmt): Handle OMP_TASK.
17052         * tree-parloops.c (create_parallel_loop): Create 1 entry
17053         vectors for OMP_FOR_{INIT,COND,INCR}.
17054         * tree-cfg.c (remove_useless_stmts_1): Handle OMP_* containers.
17055         (make_edges): Handle OMP_TASK.
17056         * tree-ssa-operands.c (get_expr_operands): Handle collapsed OMP_FOR
17057         loops, adjust for OMP_FOR_{INIT,COND,INCR} changes.
17058         * tree-inline.c (estimate_num_insns_1): Handle OMP_TASK.
17059         * builtin-types.def (BT_PTR_ULONGLONG, BT_PTR_FN_VOID_PTR_PTR,
17060         BT_FN_BOOL_ULONGLONGPTR_ULONGLONGPTR,
17061         BT_FN_BOOL_BOOL_ULL_ULL_ULL_ULLPTR_ULLPTR,
17062         BT_FN_BOOL_BOOL_ULL_ULL_ULL_ULL_ULLPTR_ULLPTR,
17063         BT_FN_VOID_OMPFN_PTR_OMPCPYFN_LONG_LONG_BOOL_UINT): New.
17064         * omp-builtins.def (BUILT_IN_GOMP_TASK, BUILT_IN_GOMP_TASKWAIT,
17065         BUILT_IN_GOMP_LOOP_ULL_STATIC_START,
17066         BUILT_IN_GOMP_LOOP_ULL_DYNAMIC_START,
17067         BUILT_IN_GOMP_LOOP_ULL_GUIDED_START,
17068         BUILT_IN_GOMP_LOOP_ULL_RUNTIME_START,
17069         BUILT_IN_GOMP_LOOP_ULL_ORDERED_STATIC_START,
17070         BUILT_IN_GOMP_LOOP_ULL_ORDERED_DYNAMIC_START,
17071         BUILT_IN_GOMP_LOOP_ULL_ORDERED_GUIDED_START,
17072         BUILT_IN_GOMP_LOOP_ULL_ORDERED_RUNTIME_START,
17073         BUILT_IN_GOMP_LOOP_ULL_STATIC_NEXT,
17074         BUILT_IN_GOMP_LOOP_ULL_DYNAMIC_NEXT,
17075         BUILT_IN_GOMP_LOOP_ULL_GUIDED_NEXT,
17076         BUILT_IN_GOMP_LOOP_ULL_RUNTIME_NEXT,
17077         BUILT_IN_GOMP_LOOP_ULL_ORDERED_STATIC_NEXT,
17078         BUILT_IN_GOMP_LOOP_ULL_ORDERED_DYNAMIC_NEXT,
17079         BUILT_IN_GOMP_LOOP_ULL_ORDERED_GUIDED_NEXT,
17080         BUILT_IN_GOMP_LOOP_ULL_ORDERED_RUNTIME_NEXT): New builtins.
17081         * gimplify.c (gimplify_omp_for): Allow pointer type for decl,
17082         handle POINTER_PLUS_EXPR.  If loop counter has been replaced and
17083         original iterator is present in lastprivate clause or if
17084         collapse > 1, set OMP_CLAUSE_LASTPRIVATE_STMT.  Handle collapsed
17085         OMP_FOR loops, adjust for OMP_FOR_{INIT,COND,INCR} changes.
17086         (gimplify_expr): Handle OMP_SECTIONS_SWITCH and OMP_TASK.
17087         (enum gimplify_omp_var_data): Add GOVD_PRIVATE_OUTER_REF.
17088         (omp_notice_variable): Set GOVD_PRIVATE_OUTER_REF if needed,
17089         if it is set, lookup var in outer contexts too.  Handle
17090         OMP_CLAUSE_DEFAULT_FIRSTPRIVATE.  Handle vars that are supposed
17091         to be implicitly determined firstprivate for task regions.
17092         (gimplify_scan_omp_clauses): Set GOVD_PRIVATE_OUTER_REF if needed,
17093         if it is set, lookup var in outer contexts too.  Set
17094         OMP_CLAUSE_PRIVATE_OUTER_REF if GOVD_PRIVATE_OUTER_REF is set.
17095         Handle OMP_CLAUSE_LASTPRIVATE_STMT, OMP_CLAUSE_COLLAPSE and
17096         OMP_CLAUSE_UNTIED.  Take region_type as last argument
17097         instead of in_parallel and in_combined_parallel.
17098         (gimplify_omp_parallel, gimplify_omp_for, gimplify_omp_workshare):
17099         Adjust callers.
17100         (gimplify_adjust_omp_clauses_1): Set OMP_CLAUSE_PRIVATE_OUTER_REF if
17101         GOVD_PRIVATE_OUTER_REF is set.  Call omp_finish_clause langhook.
17102         (new_omp_context): Set default_kind to
17103         OMP_CLAUSE_DEFAULT_UNSPECIFIED for OMP_TASK regions.
17104         (omp_region_type): New enum.
17105         (struct gimplify_omp_ctx): Remove is_parallel and is_combined_parallel
17106         fields, add region_type.
17107         (new_omp_context): Take region_type as argument instead of is_parallel
17108         and is_combined_parallel.
17109         (gimple_add_tmp_var, omp_firstprivatize_variable, omp_notice_variable,
17110         omp_is_private, omp_check_private): Adjust ctx->is_parallel and
17111         ctx->is_combined_parallel checks.
17112         (gimplify_omp_task): New function.
17113         (gimplify_adjust_omp_clauses): Handle OMP_CLAUSE_COLLAPSE and
17114         OMP_CLAUSE_UNTIED.
17115         * omp-low.c (extract_omp_for_data): Use schedule(static)
17116         for schedule(auto).  Handle pointer and unsigned iterators.
17117         Compute fd->iter_type.  Handle POINTER_PLUS_EXPR increments.
17118         Add loops argument.  Extract data for collapsed OMP_FOR loops.
17119         (expand_parallel_call): Assert sched_kind isn't auto,
17120         map runtime schedule to index 3.
17121         (struct omp_for_data_loop): New type.
17122         (struct omp_for_data): Remove v, n1, n2, step, cond_code fields.
17123         Add loop, loops, collapse and iter_type fields.
17124         (workshare_safe_to_combine_p): Disallow combined for if
17125         iter_type is unsigned long long.  Don't combine collapse > 1 loops
17126         unless all bounds and steps are constant.  Adjust extract_omp_for_data
17127         caller.
17128         (expand_omp_for_generic): Handle pointer, unsigned and long long
17129         iterators.  Handle collapsed OMP_FOR loops.  Adjust
17130         for struct omp_for_data changes.  If libgomp function doesn't return
17131         boolean_type_node, add comparison of the return value with 0.
17132         (expand_omp_for_static_nochunk, expand_omp_for_static_chunk): Handle
17133         pointer, unsigned and long long iterators.  Adjust for struct
17134         omp_for_data changes.
17135         (expand_omp_for): Assert sched_kind isn't auto, map runtime schedule
17136         to index 3.  Use GOMP_loop_ull*{start,next} if iter_type is
17137         unsigned long long.  Allocate loops array, pass it to
17138         extract_omp_for_data.  For collapse > 1 loops use always
17139         expand_omp_for_generic.
17140         (omp_context): Add sfield_map and srecord_type fields.
17141         (is_task_ctx, lookup_sfield): New functions.
17142         (use_pointer_for_field): Use is_task_ctx helper.  Change first
17143         argument's type from const_tree to tree.  Clarify comment.
17144         In OMP_TASK disallow copy-in/out sharing.
17145         (build_sender_ref): Call lookup_sfield instead of lookup_field.
17146         (install_var_field): Add mask argument.  Populate both record_type
17147         and srecord_type if needed.
17148         (delete_omp_context): Destroy sfield_map, clear DECL_ABSTRACT_ORIGIN
17149         in srecord_type.
17150         (fixup_child_record_type): Also remap FIELD_DECL's DECL_SIZE{,_UNIT}
17151         and DECL_FIELD_OFFSET.
17152         (scan_sharing_clauses): Adjust install_var_field callers.  For
17153         firstprivate clauses on explicit tasks allocate the var by value in
17154         record_type unconditionally, rather than by reference.
17155         Handle OMP_CLAUSE_PRIVATE_OUTER_REF.  Scan OMP_CLAUSE_LASTPRIVATE_STMT.
17156         Use is_taskreg_ctx instead of is_parallel_ctx.
17157         Handle OMP_CLAUSE_COLLAPSE and OMP_CLAUSE_UNTIED.
17158         (create_omp_child_function_name): Add task_copy argument, use
17159         *_omp_cpyfn* names if it is true.
17160         (create_omp_child_function): Add task_copy argument, if true create
17161         *_omp_cpyfn* helper function.
17162         (scan_omp_parallel): Adjust create_omp_child_function callers.
17163         Rename parallel_nesting_level to taskreg_nesting_level.
17164         (scan_omp_task): New function.
17165         (lower_rec_input_clauses): Don't run constructors for firstprivate
17166         explicit task vars which are initialized by *_omp_cpyfn*.
17167         Pass outer var ref to omp_clause_default_ctor hook if
17168         OMP_CLAUSE_PRIVATE_OUTER_REF or OMP_CLAUSE_LASTPRIVATE.
17169         Replace OMP_CLAUSE_REDUCTION_PLACEHOLDER decls in
17170         OMP_CLAUSE_REDUCTION_INIT.
17171         (lower_send_clauses): Clear DECL_ABSTRACT_ORIGIN if in task to
17172         avoid duplicate setting of fields.  Handle
17173         OMP_CLAUSE_PRIVATE_OUTER_REF.
17174         (lower_send_shared_vars): Use srecord_type if non-NULL.  Don't
17175         copy-out if TREE_READONLY, only copy-in.
17176         (expand_task_copyfn): New function.
17177         (expand_task_call): New function.
17178         (struct omp_taskcopy_context): New type.
17179         (task_copyfn_copy_decl, task_copyfn_remap_type, create_task_copyfn):
17180         New functions.
17181         (lower_omp_parallel): Rename to...
17182         (lower_omp_taskreg): ... this.  Use OMP_TASKREG_* macros where needed.
17183         Call create_task_copyfn if srecord_type is needed.  Adjust
17184         sender_decl type.
17185         (task_shared_vars): New variable.
17186         (check_omp_nesting_restrictions): Warn if work-sharing,
17187         barrier, master or ordered region is closely nested inside OMP_TASK.
17188         Add warnings for barrier if closely nested inside of work-sharing,
17189         ordered, or master region.
17190         (scan_omp_1): Call check_omp_nesting_restrictions even for
17191         GOMP_barrier calls.  Rename parallel_nesting_level to
17192         taskreg_nesting_level.  Handle OMP_TASK.
17193         (lower_lastprivate_clauses): Even if some lastprivate is found on a
17194         work-sharing construct, continue looking for them on parent parallel
17195         construct.
17196         (lower_omp_for_lastprivate): Add lastprivate clauses
17197         to the beginning of dlist rather than end.  Adjust for struct
17198         omp_for_data changes.
17199         (lower_omp_for): Add rec input clauses before OMP_FOR_PRE_BODY,
17200         not after it.  Handle collapsed OMP_FOR loops, adjust for
17201         OMP_FOR_{INIT,COND,INCR} changes, adjust extract_omp_for_data caller.
17202         (get_ws_args_for): Adjust extract_omp_for_data caller.
17203         (scan_omp_for): Handle collapsed OMP_FOR
17204         loops, adjust for OMP_FOR_{INIT,COND,INCR} changes.
17205         (lower_omp_single_simple): If libgomp function doesn't return
17206         boolean_type_node, add comparison of the return value with 0.
17207         (diagnose_sb_1, diagnose_sb_2): Handle collapsed OMP_FOR
17208         loops, adjust for OMP_FOR_{INIT,COND,INCR} changes.  Handle OMP_TASK.
17209         (parallel_nesting_level): Rename to...
17210         (taskreg_nesting_level): ... this.
17211         (is_taskreg_ctx): New function.
17212         (build_outer_var_ref, omp_copy_decl): Use is_taskreg_ctx instead
17213         of is_parallel_ctx.
17214         (execute_lower_omp): Rename parallel_nesting_level to
17215         taskreg_nesting_level.
17216         (expand_omp_parallel): Rename to...
17217         (expand_omp_taskreg): ... this.  Use OMP_TASKREG_* macros where needed.
17218         Call omp_task_call for OMP_TASK regions.
17219         (expand_omp): Adjust caller, handle OMP_TASK.
17220         (lower_omp_1): Adjust lower_omp_taskreg caller, handle OMP_TASK.
17221
17222         * bitmap.c (bitmap_default_obstack_depth): New variable.
17223         (bitmap_obstack_initialize, bitmap_obstack_release): Do nothing
17224         if argument is NULL and bitmap_default_obstack is already initialized.
17225         * ipa-struct-reorg.c (do_reorg_1): Call bitmap_obstack_release
17226         at the end.
17227         * matrix-reorg.c (matrix_reorg): Likewise.
17228
17229 2008-06-06  Uros Bizjak  <ubizjak@gmail.com>
17230
17231         * config/i386/i386.md (*indirect_jump): Macroize using P
17232         mode iterator.  Remove !TARGET_64BIT from insn constraints.
17233         (*tablejump_1): Ditto.
17234         (*indirect_jump_rex64): Remove insn pattern.
17235         (*tablejump_1_rex64): Ditto.
17236         (eh_return_<mode>): Macroize using P mode iterator from eh_return_di
17237         and eh_return_si insn patterns.
17238
17239 2008-06-06  Richard Guenther  <rguenther@suse.de>
17240
17241         * tree-ssa-structalias.c (merge_smts_into): Remove.
17242         (find_what_p_points_to): Do not bother to compute the
17243         points-to set for pt_anything pointers.
17244         * tree-ssa-operands.c (get_addr_dereference_operands): No NMT
17245         for pt_anything pointers is ok.
17246
17247 2008-06-06  Jan Hubicka  <jh@suse.cz>
17248
17249         * passes.c (execute_ipa_pass_list): Do not regenerate summaries.
17250
17251 2008-06-06  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
17252
17253         * cgraph.c: Fix typos in comments.
17254         (cgraph_availability_names): Fix string typo.
17255         * fold-const.c: Fix typos in comments.
17256         (fold_binary): Fix typo in warning.
17257         * genautomata.c: Fix typos in comments.
17258         (check_presence_pattern_sets): Fix typo in local variable.
17259         (output_description): Fix typo in output.
17260         * ggc-zone.c (ggc_pch_finish): Fix typo in error message.
17261         * hwint.h: Likewise.
17262         * matrix-reorg.c (check_allocation_function): Likewise.
17263         * omega.c (smooth_weird_equations): Likewise.
17264         * auto-inc-dec.c: Fix typos in comments.
17265         * bb-reorder.c: Likewise.
17266         * builtins.c: Likewise.
17267         * c-common.c: Likewise.
17268         * c-cppbuiltin.c: Likewise.
17269         * c-parser.c: Likewise.
17270         * c-pretty-print.c: Likewise.
17271         * cfgcleanup.c: Likewise.
17272         * cfgexpand.c: Likewise.
17273         * cfghooks.c: Likewise.
17274         * cfglayout.c: Likewise.
17275         * cfgloopmanip.c: Likewise.
17276         * cgraphunit.c: Likewise.
17277         * coverage.c: Likewise.
17278         * dbxout.c: Likewise.
17279         * df-byte-scan.c: Likewise.
17280         * df-core.c: Likewise.
17281         * df-problems.c: Likewise.
17282         * df-scan.c: Likewise.
17283         * dfp.c: Likewise.
17284         * dominance.c: Likewise.
17285         * domwalk.c: Likewise.
17286         * dse.c: Likewise.
17287         * dwarf2out.c: Likewise.
17288         * emit-rtl.c: Likewise.
17289         * et-forest.c: Likewise.
17290         * function.c: Likewise.
17291         * function.h: Likewise.
17292         * gcc.c: Likewise.
17293         * gcov-io.c: Likewise.
17294         * gcov.c: Likewise.
17295         * gcse.c: Likewise.
17296         * genattrtab.c: Likewise.
17297         * ggc-page.c: Likewise.
17298         * gimplify.c: Likewise.
17299         * gthr-lynx.h: Likewise.
17300         * haifa-sched.c: Likewise.
17301         * ipa-cp.c: Likewise.
17302         * ipa-inline.c: Likewise.
17303         * ipa-prop.h: Likewise.
17304         * ipa-pure-const.c: Likewise.
17305         * ipa-struct-reorg.c: Likewise.
17306         * ipa-struct-reorg.h: Likewise.
17307         * ipa-type-escape.c: Likewise.
17308         * ipa.c: Likewise.
17309         * loop-doloop.c: Likewise.
17310         * mips-tfile.c: Likewise.
17311         * mkmap-flat.awk: Likewise.
17312         * mkmap-symver.awk: Likewise.
17313         * modulo-sched.c: Likewise.
17314         * omp-low.c: Likewise.
17315         * optabs.c: Likewise.
17316         * optabs.h: Likewise.
17317         * opts.c: Likewise.
17318         * passes.c: Likewise.
17319         * postreload-gcse.c: Likewise.
17320         * postreload.c: Likewise.
17321         * predict.c: Likewise.
17322         * pretty-print.h: Likewise.
17323         * profile.c: Likewise.
17324         * protoize.c: Likewise.
17325         * ra-conflict.c: Likewise.
17326         * real.c: Likewise.
17327         * recog.c: Likewise.
17328         * regclass.c: Likewise.
17329         * regs.h: Likewise.
17330         * reload.c: Likewise.
17331         * rtl-error.c: Likewise.
17332         * rtlanal.c: Likewise.
17333         * scan.h: Likewise.
17334         * sched-rgn.c: Likewise.
17335         * see.c: Likewise.
17336         * stmt.c: Likewise.
17337         * target.h: Likewise.
17338         * tree-dfa.c: Likewise.
17339         * tree-eh.c: Likewise.
17340         * tree-flow-inline.h: Likewise.
17341         * tree-inline.c: Likewise.
17342         * tree-into-ssa.c: Likewise.
17343         * tree-loop-distribution.c: Likewise.
17344         * tree-nested.c: Likewise.
17345         * tree-parloops.c: Likewise.
17346         * tree-pass.h: Likewise.
17347         * tree-pretty-print.c: Likewise.
17348         * tree-profile.c: Likewise.
17349         * tree-scalar-evolution.c: Likewise.
17350         * tree-sra.c: Likewise.
17351         * tree-ssa-alias-warnings.c: Likewise.
17352         * tree-ssa-ccp.c: Likewise.
17353         * tree-ssa-coalesce.c: Likewise.
17354         * tree-ssa-dom.c: Likewise.
17355         * tree-ssa-dse.c: Likewise.
17356         * tree-ssa-forwprop.c: Likewise.
17357         * tree-ssa-live.c: Likewise.
17358         * tree-ssa-live.h: Likewise.
17359         * tree-ssa-loop-im.c: Likewise.
17360         * tree-ssa-loop-ivopts.c: Likewise.
17361         * tree-ssa-loop-niter.c: Likewise.
17362         * tree-ssa-loop-prefetch.c: Likewise.
17363         * tree-ssa-phiopt.c: Likewise.
17364         * tree-ssa-phiprop.c: Likewise.
17365         * tree-ssa-sccvn.c: Likewise.
17366         * tree-ssa-ter.c: Likewise.
17367         * tree-ssa-threadupdate.c: Likewise.
17368         * tree-ssa.c: Likewise.
17369         * tree-vect-analyze.c: Likewise.
17370         * tree-vect-transform.c: Likewise.
17371         * tree-vectorizer.c: Likewise.
17372         * tree-vn.c: Likewise.
17373         * tree-vrp.c: Likewise.
17374         * tree.c: Likewise.
17375         * tree.def: Likewise.
17376         * tree.h: Likewise.
17377         * unwind-dw2-fde.c: Likewise.
17378         * unwind.inc: Likewise.
17379         * value-prof.c: Likewise.
17380         * vmsdbgout.c: Likewise.
17381
17382 2008-06-05  David Edelsohn  <edelsohn@gnu.org>
17383
17384         * config/rs6000/xcoff.h (ASM_OUTPUT_SPECIAL_POOL_ENTRY_P): Do not
17385         always place FP constants in the TOC for TARGET_POWERPC64.
17386         * config/rs6000/linux64.h (ASM_OUTPUT_SPECIAL_POOL_ENTRY_P): Same.
17387
17388 2008-06-05  Joseph Myers  <joseph@codesourcery.com>
17389
17390         * config.gcc (powerpc-*-linux*spe*): Use t-dfprules.
17391         * config/rs6000/dfp.md (negdd2, absdd2, negtd2, abstd2): Do not
17392         enable for TARGET_E500_DOUBLE.
17393         (*movdd_softfloat32): Also enable for !TARGET_FPRS.
17394         * config/rs6000/rs6000.c (invalid_e500_subreg): Treat decimal
17395         floating-point modes like integer modes for E500 double.
17396         (rs6000_legitimate_offset_address_p): Likewise.
17397         (rs6000_legitimize_address): Likewise.  Do not allow REG+REG
17398         addressing for DDmode for E500 double.
17399         (rs6000_hard_regno_nregs): Do not treat decimal floating-point
17400         modes as using 64-bits of registers for E500 double.
17401         (spe_build_register_parallel): Do not handle DDmode or TDmode.
17402         (rs6000_spe_function_arg): Do not handle DDmode or TDmode
17403         specially for E500 double.
17404         (function_arg): Do not call rs6000_spe_function_arg for DDmode or
17405         TDmode for E500 double.
17406         (rs6000_gimplify_va_arg): Only handle SDmode in registers
17407         specially if TARGET_HARD_FLOAT && TARGET_FPRS.
17408         (rs6000_split_multireg_move): Do not handle TDmode specially for
17409         E500 double.
17410         (spe_func_has_64bit_regs_p): Do not treat DDmode or TDmode as
17411         using 64-bit registers for E500 double.
17412         (emit_frame_save): Do not handle DDmode specially for E500 double.
17413         (gen_frame_mem_offset): Likewise.
17414         (rs6000_function_value): Do not call spe_build_register_parallel
17415         for DDmode or TDmode.
17416         (rs6000_libcall_value): Likewise.
17417         * config/rs6000/rs6000.h (LOCAL_ALIGNMENT, MEMBER_TYPE_FORCES_BLK,
17418         DATA_ALIGNMENT, CLASS_MAX_NREGS): Do not handle DDmode specially
17419         for E500 double.
17420
17421 2008-06-04  H.J. Lu  <hongjiu.lu@intel.com>
17422
17423         * config/i386/i386.c (setup_incoming_varargs_64): Fix a typo
17424         in comments.
17425
17426 2008-06-04  Junjie Gu <jgu@tensilica.com>
17427
17428         * config/xtensa/lib2funcs.S (__xtensa_nonlocal_goto): Use unsigned
17429         comparison for frame pointers.
17430
17431 2008-06-04  Andy Hutchinson  <hutchinsonandy@aim.com>
17432
17433         PR target/27386
17434         * config/avr/avr.h (PUSH_ROUNDING): Remove.
17435
17436 2008-06-04  Andy Hutchinson  <hutchinsonandy@aim.com>
17437
17438         PR target/30243
17439         * builtins.c (expand_builtin_signbit): Don't take lowpart when
17440         register is already smaller or equal to required mode.
17441
17442 2008-06-04  Xinliang David Li  <davidxl@google.com>
17443
17444         * tree-call-cdce.c: New file.
17445         (cond_dead_built_in_calls): New static variable.
17446         (input_domain): New struct.
17447         (check_pow): New function.
17448         (check_builtin_call): Ditto.
17449         (check_target_format): Ditto.
17450         (is_call_dce_candidate): Ditto.
17451         (gen_one_condition): Ditto.
17452         (gen_conditions_for_domain): Ditto.
17453         (get_domain): Ditto.
17454         (gen_conditions_for_pow_cst_base): Ditto.
17455         (gen_conditions_for_pow_int_base): Ditto.
17456         (gen_conditions_for_pow): Ditto.
17457         (get_no_error_domain): Ditto.
17458         (gen_shrink_wrap_conditions): Ditto.
17459         (shrink_wrap_one_built_in_call): Ditto.
17460         (shink_wrap_conditional_dead_built_in_calls): Ditto.
17461         (tree_call_cdce): Ditto.
17462         (gate_call_cdce): Ditto.
17463         (pass_call_cdce): New gimple pass.
17464         * passes.c: (init_optimization_passes): New pass.
17465         * tree-pass.h: New pass declaration.
17466         * opts.c (decode_options): New flag setting.
17467         * common.opt: Add -ftree-builtin-call-dce flag.
17468         * Makefile.in: Add new source file.
17469         * tempvar.def: New tv_id.
17470         * doc/invoke.texi (-ftree-builtin-call-dce): New flag.
17471
17472 2008-06-04  Richard Guenther  <rguenther@suse.de>
17473
17474         * tree-flow-inline.h (is_global_var): Do not check TREE_STATIC on MTAGs.
17475         (is_call_clobbered): Always check var_ann->call_clobbered.
17476         (mark_call_clobbered): Always set var_ann->call_clobbered.
17477         (clear_call_clobbered): Always clear var_ann->call_clobbered.
17478         * tree-ssa-alias.c (mark_non_addressable): Use clear_call_clobbered.
17479         (reset_alias_info): Clear call clobbering info on MTAGs and
17480         globals as well.
17481         (set_pt_anything): Set pt_global_mem.
17482         (create_tag_raw): Adjust comment.
17483         (may_be_aliased): Do not check TREE_PUBLIC on MTAGs.
17484
17485 2008-06-04  Joseph Myers  <joseph@codesourcery.com>
17486             Maxim Kuvyrkov  <maxim@codesourcery.com>
17487
17488         * config/m68k/m68k.opt (mxgot): New option.
17489         * config/m68k/m68k.c (legitimize_pic_address): Handle -mxgot.
17490         (m68k_output_addr_const_extra): New.
17491         * config/m68k/m68k.h (OUTPUT_ADDR_CONST_EXTRA): New.
17492         * config/m68k/m68k-protos.h (m68k_output_addr_const_extra): Declare.
17493         * config/m68k/m68k.md (UNSPEC_GOTOFF): Define.
17494         * doc/invoke.texi (M680x0 Options): Document -mxgot.
17495
17496 2008-06-04  Richard Guenther  <rguenther@suse.de>
17497
17498         * tree-ssa-structalias.c (handle_ptr_arith): Correctly handle
17499         negative or non-representable offsets.
17500
17501 2008-06-03  H.J. Lu  <hongjiu.lu@intel.com>
17502
17503         * config/i386/i386.c (ix86_gen_leave): New.
17504         (ix86_gen_pop1): Likewise.
17505         (ix86_gen_add3): Likewise.
17506         (ix86_gen_sub3): Likewise.
17507         (ix86_gen_sub3_carry): Likewise.
17508         (ix86_gen_one_cmpl2): Likewise.
17509         (ix86_gen_monitor): Likewise.
17510         (override_options): Initialize ix86_gen_leave, ix86_gen_pop1,
17511         ix86_gen_add3, ix86_gen_sub3, ix86_gen_sub3_carry,
17512         ix86_gen_one_cmpl2 and ix86_gen_monitor.
17513         (ix86_file_end): Use mov%z0 instead of mov{q}/mov{l}.
17514         (output_set_got): Use mov%z0, pop%z0 and add%z0 instead of
17515         mov{q}/mov{l}, pop{q}/pop{l} and add{q}/add{l}.
17516         (ix86_expand_epilogue): Updated.
17517         (print_operand): Handle integer register operand for 'z'.
17518         (ix86_expand_strlensi_unroll_1): Likewise.
17519         (ix86_expand_strlen): Likewise.
17520         (ix86_expand_builtin): Likewise.
17521         (x86_output_mi_thunk): Use mov%z1 and add%z1 instead of
17522         mov{q}/mov{l} and add{q}/add{l}.
17523
17524 2008-06-03  Kai Tietz  <kai.tietz@onevision.com>
17525
17526         * config/i386/i386.md (P): New mode iterator.
17527         (SFmode push_operand splitter): Macroize DImode and SImode pushes
17528         using P mode iterator.
17529         (DFmode push_operand splitter): Ditto.
17530         (XFmode push_operand splitter): Ditto.
17531         (DFmode float_extend SFmode push_operand splitter): Ditto.
17532         (XFmode float_extend SFmode push_operand splitter): Do not generate
17533         SImode pushes for 64bit target.  Macroize Dimode and SImode
17534         pushes using P mode iterator.
17535         (XFmode float_extend DFmode push_operand splitter): Ditto.
17536
17537 2008-06-03  Kai Tietz  <kai.tietz@onevision.com>
17538
17539         * config/i386/i386-protos.h (ix86_reg_parm_stack_space): New.
17540         * config/i386/i386.h (ix86_reg_parm_stack_space): Removed prototype.
17541         * config/i386/i386.c (ix86_reg_parm_stack_space): Changed
17542         return type to int.
17543         (ix86_call_abi_override): Remove check for call_used_regs.
17544
17545 2008-06-03  Richard Guenther  <rguenther@suse.de>
17546
17547         * tree-ssa-structalias.c (find_func_aliases): Add constraints
17548         for the lhs of calls if the return type contains pointers.
17549
17550 2008-06-03  Kai Tietz  <kai.tietz@onevision.com>
17551
17552         * doc/tm.texi (OVERRIDE_ABI_FORMAT): New.
17553         * doc/extend.texi (ms_abi,sysv_abi): New attribute description.
17554         * function.c (allocate_struct_function): Use of OVERRIDE_ABI_FORMAT.
17555         * config/i386/cygming.h (TARGET_64BIT_MS_ABI): Make use
17556         of cfun and DEFAULT_ABI to deceide abi mode.
17557         (DEFAULT_ABI): New.
17558         (REG_PARM_STACK_SPACE): Removed.
17559         (OUTGOING_REG_PARM_STACK_SPACE): Removed.
17560         (STACK_BOUNDARY): Use default target to deceide stack boundary.
17561         * config/i386/i386-protos.h (ix86_cfun_abi): New.
17562         (ix86_function_abi): Likewise.
17563         (ix86_function_type_abi): Likewise.
17564         (ix86_call_abi_override): Likewise.
17565         * confid/i386/i386.md (SSE_REGPARM_MAX): Replaced by abi
17566         specific define X86_64_SSE_REGPARM_MAX/X64_SSE_REGPARM_MAX.
17567         * config/i386/i386.c (override_options): Replace TARGET_64BIT_MS_ABI.
17568         (X86_64_VARARGS_SIZE): Replace REGPARM_MAX and SSE_REGPARM_MAX by abi
17569         specific defines.
17570         (X86_64_REGPARM_MAX): New.
17571         (X86_64_SSE_REGPARM_MAX): New.
17572         (X64_REGPARM_MAX): New.
17573         (X64_SSE_REGPARM_MAX): New.
17574         (X86_32_REGPARM_MAX): New.
17575         (X86_32_SSE_REGPARM_MAX): New.
17576         (ix86_handle_cconv_attribute): Replace TARGET_64BIT_MS_ABI.
17577         (ix86_function_regparm): Handle user calling abi.
17578         (ix86_function_arg_regno_p): Replace TARGET_64BIT_MS_ABI
17579         by DEFAULT_ABI versus SYSV_ABI check.
17580         (ix86_reg_parm_stack_space): New.
17581         (ix86_function_type_abi): New.
17582         (ix86_call_abi_override): New.
17583         (ix86_function_abi): New.
17584         (ix86_cfun_abi): New.
17585         (init_cumulative_args): Call abi specific initialization.
17586         (function_arg_advance): Remove TARGET_64BIT_MS_ABI.
17587         (function_arg_64): Extend SSE_REGPARM_MAX check.
17588         (function_arg (): Remove TARGET_64BIT_MS_ABI.
17589         (ix86_pass_by_reference): Likewise.
17590         (ix86_function_value_regno_p): Likewise.
17591         (function_value_64): Replace REGPARM_MAX, and SSE_REGPARM_MAX.
17592         (ix86_function_value_1): Replace TARGET_64BIT_MS_ABI.
17593         (return_in_memory_ms_64): Replace TARGET_64BIT_MS_ABI.
17594         (ix86_build_builtin_va_list): Replace TARGET_64BIT_MS_ABI.
17595         (setup_incoming_varargs_64): Adjust regparm for call abi.
17596         (ix86_setup_incoming_varargs): Replace TARGET_64BIT_MS_ABI.
17597         (ix86_va_start): Likewise.
17598         (ix86_gimplify_va_arg): Likewise.
17599         (ix86_expand_prologue): Likewise.
17600         (output_pic_addr_const): Likewise.
17601         (ix86_init_machine_status): Initialize call_abi by DEFAULT_ABI.
17602         (x86_this_parameter): Replace TARGET_64BIT_MS_ABI.
17603         (x86_output_mi_thunk): Likewise.
17604         (x86_function_profiler): Likewise.
17605         * config/i386/i386.h (TARGET_64BIT_MS_ABI): Use ix64_cfun_abi.
17606         (SYSV_ABI, MS_ABI): New constants.
17607         (DEFAULT_ABI): New.
17608         (init_regs): Add prototype of function in regclass.c file.
17609         (OVERRIDE_ABI_FORMAT): New.
17610         (CONDITIONAL_REGISTER_USAGE): Remove TARGET_64BIT_MS_ABI part.
17611         (REG_PARM_STACK_SPACE): Use ix86_reg_parm_stack_space.
17612         (OUTGOING_REG_PARM_STACK_SPACE): New.
17613         (ix86_reg_parm_stack_space): New prototype.
17614         (CUMULATIVE_ARGS): Add call_abi member.
17615         (machine_function): Add call_abi member.
17616         * config/i386/mingw32.h (EXTRA_OS_CPP_BUILTINS): Replace
17617         TARGET_64BIT_MS_ABI by DEFAULT_ABI compare to MS_ABI.
17618
17619 2008-06-02  Andy Hutchinson  <hutchinsonandy@aim.com>
17620
17621         PR target/34879
17622         * config/avr/avr.c (TARGET_BUILTIN_SETJMP_FRAME_VALUE): Redefine.
17623         (avr_builtin_setjmp_frame_value): New function.
17624         * config/avr/avr.md (nonlocal_goto_receiver): Define.
17625         (nonlocal_goto): Define.
17626
17627 2008-06-02  Richard Sandiford  <rdsandiford@googlemail.com>
17628
17629         * config/mips/mips.c (mips_emit_loadgp): Return early if
17630         there is nothing do to, otherwise emit a blockage if
17631         !TARGET_EXPLICIT_RELOCS || crtl->profile.
17632         * config/mips/mips.md (loadgp_blockage): Use SI rather than DI.
17633
17634 2008-06-02  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
17635
17636         * configure.ac: Drop unneeded backslash ending up in config.in.
17637         * acinclude.m4: Likewise.
17638         * config.in: Regenerate.
17639
17640 2008-05-26  Jan Hubicka  <jh@suse.cz>
17641
17642         * predict.c (maybe_hot_frequency_p): Break out of...
17643         (maybe_hot_bb_p): ... here.
17644         (maybe_hot_edge_p): New.
17645         * tree-ssa-coalesce.c (coalesce_cost_edge): Compute cost based on edge.
17646         * basic-block.h (maybe_hot_edge_p): Declare.
17647
17648 2008-05-31  Uros Bizjak  <ubizjak@gmail.com>
17649
17650         * config/i386/i386.md (*cmpfp_<mode>): Enable for optimize_size.
17651         (*cmpfp_<mode>_cc): Ditto.
17652         (*fp_jcc_8<mode>_387): Ditto.
17653         (*fop_<MODEF:mode>_2_i387): Ditto.
17654         (*fop_<MODEF:mode>_3_i387): Ditto.
17655         (*fop_xf_2_i387): Ditto.
17656         (*fop_xf_3_i387): Ditto.
17657
17658 2008-06-02  Tomas Bily  <tbily@suse.cz>
17659
17660         * tree-ssa-ifcombine.c (get_name_for_bit_test): Use CONVERT_EXPR_P.
17661
17662 2008-06-01  Richard Sandiford  <rdsandiford@googlemail.com>
17663
17664         * config/mips/mips.c (mips_valid_offset_p): New function.
17665         (mips_valid_lo_sum_p): Likewise.
17666         (mips_classify_address): Use them.
17667         (mips_force_address): New function.
17668         (mips_legitimize_address): Use it.
17669         * config/mips/mips.md (MOVE128): New mode iterator.
17670         (movtf): Require TARGET_64BIT.  Remove empty strings.
17671         (*movtf_internal): Rename to...
17672         (*movtf): ...this and require !TARGET_MIPS16.  Use "m" instead
17673         of "R" and use {,fp}{load,store} attributes instead of "multi".
17674         Use a separate define_split.
17675         (*movtf_mips16): New pattern.
17676
17677 2008-06-01  Richard Sandiford  <rdsandiford@googlemail.com>
17678
17679         * config/mips/mips-protos.h (mips_expand_before_return): Declare.
17680         * config/mips/mips.c (mips_expand_before_return): New function.
17681         (mips_expand_epilogue): Call it.
17682         * config/mips/mips.md (return): Turn into a define_expand.
17683         (*return): New insn.
17684
17685 2008-06-01  Richard Sandiford  <rdsandiford@googlemail.com>
17686
17687         * rtl.h (emit_clobber, gen_clobber, emit_use, gen_use): Declare.
17688         * emit-rtl.c (emit_clobber, gen_clobber, emit_use, gen_use): New
17689         functions.  Do not emit uses and clobbers of CONCATs; individually
17690         use and clobber their operands.
17691         * builtins.c (expand_builtin_setjmp_receiver): Use emit_clobber,
17692         gen_clobber, emit_use and gen_use.
17693         (expand_builtin_longjmp, expand_builtin_nonlocal_goto): Likewise.
17694         (expand_builtin_return): Likewise.
17695         * cfgbuild.c (count_basic_blocks): Likewise.
17696         * cfgrtl.c (rtl_flow_call_edges_add): Likewise.
17697         * explow.c (emit_stack_restore): Likewise.
17698         * expmed.c (extract_bit_field_1): Likewise.
17699         * expr.c (convert_move, emit_move_complex_parts): Likewise.
17700         (emit_move_multi_word, store_constructor): Likewise.
17701         * function.c (do_clobber_return_reg, do_use_return_reg): Likewise.
17702         (thread_prologue_and_epilogue_insns): Likewise.
17703         * lower-subreg.c (resolve_simple_move): Likewise.
17704         * optabs.c (widen_operand, expand_binop): Likewise.
17705         (expand_doubleword_bswap, emit_no_conflict_block): Likewise.
17706         * reload.c (find_reloads): Likewise.
17707         * reload1.c (eliminate_regs_in_insn): Likewise.
17708         * stmt.c (expand_nl_goto_receiver): Likewise.
17709         * config/alpha/alpha.md (builtin_longjmp): Likewise.
17710         * config/arc/arc.md (*movdi_insn, *movdf_insn): Likewise.
17711         * config/arm/arm.c (arm_load_pic_register): Likewise.
17712         (thumb1_expand_epilogue, thumb_set_return_address): Likewise.
17713         * config/arm/arm.md (untyped_return): Likewise.
17714         * config/arm/linux-elf.h (PROFILE_HOOK): Likewise.
17715         * config/avr/avr.c (expand_prologue): Likewise.
17716         * config/bfin/bfin.c (do_unlink): Likewise.
17717         * config/bfin/bfin.md (<optab>di3, adddi3, subdi3): Likewise.
17718         * config/cris/cris.c (cris_expand_prologue): Likewise.
17719         * config/darwin.c (machopic_indirect_data_reference): Likewise.
17720         (machopic_legitimize_pic_address): Likewise.
17721         * config/frv/frv.c (frv_frame_access, frv_expand_epilogue): Likewise.
17722         (frv_ifcvt_modify_insn, frv_expand_mdpackh_builtin): Likewise.
17723         * config/i386/i386.c (ix86_expand_vector_move_misalign): Likewise.
17724         (ix86_expand_convert_uns_didf_sse): Likewise.
17725         (ix86_expand_vector_init_general): Likewise.
17726         * config/ia64/ia64.md (eh_epilogue): Likewise.
17727         * config/iq2000/iq2000.c (iq2000_expand_epilogue): Likewise.
17728         * config/m32c/m32c.c (m32c_emit_eh_epilogue): Likewise.
17729         * config/m32r/m32r.c (m32r_reload_lr): Likewise.
17730         (config/iq2000/iq2000.c): Likewise.
17731         * config/mips/mips.md (fixuns_truncdfsi2): Likewise.
17732         (fixuns_truncdfdi2, fixuns_truncsfsi2, fixuns_truncsfdi2): Likewise.
17733         (builtin_longjmp): Likewise.
17734         * config/mn10300/mn10300.md (call, call_value): Likewise.
17735         * config/pa/pa.md (nonlocal_goto, nonlocal_longjmp): Likewise.
17736         * config/pdp11/pdp11.md (abshi2): Likewise.
17737         * config/rs6000/rs6000.c (rs6000_emit_move): Likewise.
17738         * config/s390/s390.c (s390_emit_prologue): Likewise.
17739         * config/s390/s390.md (movmem_long, setmem_long): Likewise.
17740         (cmpmem_long, extendsidi2, zero_extendsidi2, udivmoddi4): Likewise.
17741         (builtin_setjmp_receiver, restore_stack_nonlocal): Likewise.
17742         * config/sh/sh.c (prepare_move_operands): Likewise.
17743         (output_stack_adjust, sh_expand_epilogue): Likewise.
17744         (sh_set_return_address, sh_expand_t_scc): Likewise.
17745         * config/sparc/sparc.c (load_pic_register): Likewise.
17746         * config/sparc/sparc.md (untyped_return, nonlocal_goto): Likewise.
17747         * config/spu/spu.c (spu_expand_epilogue): Likewise.
17748         * config/v850/v850.c (expand_epilogue): Likewise.
17749
17750 2008-05-31  Anatoly Sokolov  <aesok@post.ru>
17751
17752         * config/avr/avr.md (UNSPECV_WRITE_SP_IRQ_ON): New constants.
17753         (UNSPECV_WRITE_SP_IRQ_OFF): (Ditto.).
17754         (movhi_sp_r_irq_off, movhi_sp_r_irq_on): New insn.
17755         * config/avr/avr.c (expand_prologue, expand_epilogue): Use
17756         movhi_sp_r_irq_off and movhi_sp_r_irq_on insns for writing to the
17757         stack pointer register.
17758         (output_movhi): Remove code for interrupt specific writing to the
17759         stack pointer register.
17760
17761 2008-05-31  Richard Guenther  <rguenther@suse.de>
17762
17763         PR tree-optimization/34244
17764         * fold-const.c (tree_expr_nonnegative_warnv_p): Do not ask VRP.
17765         (tree_expr_nonzero_warnv_p): Likewise.
17766         * tree-vrp.c (vrp_expr_computes_nonnegative): Call
17767         ssa_name_nonnegative_p.
17768         (vrp_expr_computes_nonzero): Call ssa_name_nonzero_p.
17769         (extract_range_from_unary_expr): Use vrp_expr_computes_nonzero,
17770         not tree_expr_nonzero_warnv_p.
17771
17772         PR tree-optimization/36262
17773         Revert
17774         2007-11-29  Zdenek Dvorak  <ook@ucw.cz>
17775
17776         PR tree-optimization/34244
17777         * tree-vrp.c (adjust_range_with_scev): Clear scev cache.
17778         (record_numbers_of_iterations): New function.
17779         (execute_vrp): Cache the numbers of iterations of loops.
17780         * tree-scalar-evolution.c (scev_reset_except_niters):
17781         New function.
17782         (scev_reset): Use scev_reset_except_niters.
17783         * tree-scalar-evolution.h (scev_reset_except_niters): Declare.
17784
17785 2008-05-31  Bernd Schmidt  <bernd.schmidt@analog.com>
17786
17787         * config/bfin/bfin.h (TARGET_CPU_CPP_BUILTINS): Define
17788         __WORKAROUND_RETS when appropriate.
17789
17790 2008-05-31  Uros Bizjak  <ubizjak@gmail.com>
17791
17792         * config/i386/i386.md (*fop_<mode>_comm_mixed): Macroize from
17793         *fop_sf_comm_mixed and *fop_df_comm_mixed insn patterns using MODEF
17794         mode iterator.
17795         (*fop_<mode>_comm_sse): Macroize from *fop_sf_comm_sse and
17796         *fop_df_comm_sse insn patterns using MODEF mode iterator.
17797         (*fop_<mode>_comm_i387): Macroize from *fop_sf_comm_i387 and
17798         *fop_df_comm_i387 insn patterns using MODEF mode iterator.
17799         (*fop_<mode>_1_mixed): Macroize from *fop_sf_1_mixed and
17800         *fop_df_1_mixed insn patterns using MODEF mode iterator.
17801         (*fop_<mode>_1_sse): Macroize from *fop_sf_1_sse and
17802         *fop_df_1_sse insn patterns using MODEF mode iterator.
17803         (*fop_<mode>_1_i387): Macroize from *fop_sf_1_i387 and
17804         *fop_df_1_i387 insn patterns using MODEF mode iterator.
17805         (*fop_<MODEF:mode>_2_i387): Macroize from *fop_sf_2<mode>_i387 and
17806         *fop_df_2<mode>_i387 insn patterns using MODEF mode iterator.
17807         (*fop_<MODEF:mode>_3_i387): Macroize from *fop_sf_3<mode>_i387 and
17808         *fop_df_3<mode>_i387 insn patterns using MODEF mode iterator.
17809         (*fop_xf_2_i387): Rename from *fop_xf_2<mode>_i387.
17810         (*fop_xf_3_i387): Rename from *fop_xf_3<mode>_i387.
17811         (*fop_xf_4_i387): Use <MODE> for mode attribute.
17812         (*fop_xf_5_i387): Ditto.
17813         (*fop_xf_6_i387): Ditto.
17814
17815 2008-05-30  Richard Guenther  <rguenther@suse.de>
17816
17817         * builtins.c (build_string_literal): Avoid generating
17818         a non-gimple_val result.
17819
17820 2008-05-30  DJ Delorie  <dj@redhat.com>
17821
17822         * exec-tool.in: Use an environment variable (private) instead of a
17823         file (shared) as a semaphore, so as to not break parallel builds.
17824
17825 2008-05-30  Steven Bosscher  <stevenb.gcc@gmail.com>
17826
17827         * optabs.c (maybe_encapsulate_block): Remove.
17828         (emit_libcall_block): Adjust accordingly.
17829         * optabs.h (maybe_encapsulate_block): Remove prototype.
17830
17831         * config/rs6000/rs6000.c (rs6000_legitimize_tls_address):
17832         Don't use maybe_encapsulate_block.
17833
17834 2008-05-30  Steven Bosscher  <stevenb.gcc@gmail.com>
17835
17836         * config/rs6000/rs6000.c (rs6000_legitimize_address,
17837         rs6000_legitimize_reload_address, rs6000_emit_move): Make sure an
17838         rtx is a SYMBOL_REF before calling get_pool_constant.
17839
17840 2008-05-30  Eric Botcazou  <ebotcazou@adacore.com>
17841
17842         * fold-const.c (fold_unary) <CASE_CONVERT>: Add ??? comment.
17843
17844 2008-05-30  Danny Smith  <dannysmith@users.sourceforge.net>
17845
17846         * incpath.c: Use HOST_LACKS_INODE_NUMBERS conditional
17847         rather than OS names to choose INO_T_EQ definition.
17848         (DIRS_EQ) [!INO_T_EQ]: Don't worry about case in comparison.
17849         (add_path) [!INO_T_EQ]: Use lrealpath to fill canonical_name field.
17850
17851 2008-05-29  Daniel Franke  <franke.daniel@gmail.com>
17852
17853         PR target/36348
17854         * config/darwin-f.c: New.
17855         * config/t-darwin: Added rule to build darwin-f.o.
17856         * config.gcc: Defined new variable, fortran_target_objs.
17857         (*-*-darwin*): Set fortran_target_objs.
17858         * Makefile.in: Defined new variable FORTRAN_TARGET_OBJS.
17859         * configure.ac: Substitute fortran_target_objs, set FORTRAN_TARGET_OBJS.
17860         * configure: Regenerated.
17861
17862 2008-05-29  H.J. Lu  <hongjiu.lu@intel.com>
17863
17864         PR target/35771
17865         * config/i386/i386.c (ix86_function_arg_boundary): Convert to
17866         canonical type if needed.
17867
17868 2008-05-29  Eric Botcazou  <ebotcazou@adacore.com>
17869
17870         * tree-nested.c (check_for_nested_with_variably_modified): Fix typo.
17871
17872 2008-05-29  Richard Guenther  <rguenther@suse.de>
17873
17874         PR tree-optimization/36343
17875         PR tree-optimization/36346
17876         PR tree-optimization/36347
17877         * tree-flow.h (clobber_what_p_points_to): Declare.
17878         * tree-ssa-structalias.c (set_uids_in_ptset): Whether the
17879         pointed-to variable is dereferenced is irrelevant to whether
17880         the pointer can access the pointed-to variable.
17881         (clobber_what_p_points_to): New function.
17882         * tree-ssa-alias.c (set_initial_properties): Use it.
17883         * tree-ssa.c (verify_flow_sensitive_alias_info): Adjust
17884         call clobber check for NMTs.
17885
17886 2008-05-28  Seongbae Park  <seongbae.park@gmail.com>
17887
17888         * value-prof.c (tree_ic_transform): Use HOST_WIDEST_INT_PRINT_DEC
17889         for printing gcov_type.
17890
17891 2008-05-28  Seongbae Park  <seongbae.park@gmail.com>
17892
17893         * tree-ssa-propagate.c (set_rhs): Preserve the histogram
17894         and the eh region information.
17895         * value-prof.c (gimple_move_stmt_histograms): New function.
17896         * value-prof.h (gimple_move_stmt_histograms): New function declaration.
17897
17898 2008-05-28  Andreas Tobler  <a.tobler@schweiz.org>
17899
17900         * config/pa/pa.md: Remove extern frame_pointer_needed declaration.
17901
17902 2008-05-28  Seongbae Park <seongbae.park@gmail.com>
17903
17904         * value-prof.c (tree_ic_transform): Print counts.
17905         * tree-profile.c (tree_gen_ic_func_profiler):
17906         Clear __gcov_indreict_call_callee variable to avoid misattribution
17907         of the profile.
17908
17909 2008-05-28  Rafael Espíndola  <espindola@google.com>
17910
17911         * see.c (see_def_extension_not_merged): Use copy_rtx_if_shared to avoid
17912         invalid sharing.
17913
17914 2008-05-28  Richard Guenther  <rguenther@suse.de>
17915
17916         PR tree-optimization/36339
17917         * tree-ssa-alias.c (set_initial_properties): Move pt_anything
17918         and clobbering code out of the loop.
17919
17920 2008-05-28  Andreas Krebbel  <krebbel1@de.ibm.com>
17921
17922         * config/s390/constraints.md ('b', 'C', 'D', 'e'): New constraint
17923         letters defined.
17924
17925         * config/s390/s390.c (s390_compare_and_branch_condition_mask,
17926         s390_contiguous_bitmask_p, s390_symref_operand_p,
17927         s390_check_symref_alignment, s390_reload_larl_operand,
17928         s390_reload_symref_address): New functions.
17929         (s390_branch_condition_mnemonic): Support compare and branch
17930         instructions.
17931         (s390_mem_constraint): Avoid symrefs to accepted by the 'T'
17932         and 'W' constraints.
17933         (s390_secondary_reload): Add secondary reloads for unaligned
17934         symbol refs or symbol refs to floating point or QI/TI mode
17935         integer values.
17936         (legitimate_address_p): Accept symbol references as addresses.
17937         (s390_expand_insv): Use rotate and insert selected bits
17938         instruction for insv when building for z10.
17939         (print_operand_address): Handle symbol ref addresses.
17940         (print_operand): Output modifier 'c' added for signed byte values.
17941         (s390_encode_section_info): Mark symbol refs with
17942         SYMBOL_FLAG_NOT_NATURALLY_ALIGNED if appropriate.
17943
17944         * config/s390/s390.md (SIL,RRS,RIS): New instruction formats added.
17945         (length attribute): RRF, RRR have 4 byte length.
17946         (FPALL, INTALL): New mode iterators added.
17947         (*tstdi_sign, *cmpdi_ccs_sign, *cmpsi_ccs_sign,
17948         *cmp<mode>_ccs, *cmpdi_ccu_zero, *cmpdi_ccu, *cmpsi_ccu, *cmphi_ccu,
17949         *movdi_64, *movsi_zarch, *movhi, movmem<mode>, *movmem_short,
17950         *extendsidi2, *extendhidi2_extimm, *extendhisi2_extimm,
17951         *zero_extendsidi2, adddi3, *adddi3_31z, *adddi3_31, addsi3,
17952         *add<mode>3, *add<mode>3_carry1_cc, *add<mode>3_carry2_cc,
17953         *add<mode>3_cc, *add<mode>3_imm_cc, *muldi3_sign, muldi3,
17954         *mulsi3_sign, mulsi3, mulsidi3): Patterns enhanced with z10
17955         instructions.
17956         (*cmphi_ccs_z10, *cmpdi_ccs_signhi_rl, *cmpsi_ccu_zerohi_rlsi,
17957         *cmp<GPR:mode>_ccu_zerohi_rldi, *cmp_and_br_signed_<mode>,
17958         *cmp_and_br_unsigned_<mode>, reload<INTALL:mode><P:mode>_tomem_z10,
17959         reload<INTALL:mode><P:mode>_toreg_z10,
17960         reload<FPALL:mode><P:mode>_tomem_z10,
17961         reload<FPALL:mode><P:mode>_toreg_z10,
17962         reload<P:mode>_larl_odd_addend_z10, *execute_rl, *insv<mode>_z10,
17963         *insv<mode>_z10_noshift, *insv<mode>_or_z10_noshift,
17964         *zero_extendhi<mode>2_z10, *cmp_and_trap_signed_int<mode>,
17965         *cmp_and_trap_unsigned_int<mode>, prefetch): New pattern or expander
17966         definition.
17967         (movmem, clrmem, cmpmem): New splitters added.
17968
17969         * config/s390/predicates.md (larl_operand): Use
17970         SYMBOL_REF_FLAGS (op) & SYMBOL_FLAG_ALIGN1 replaced with
17971         SYMBOL_REF_ALIGN1_P.
17972         (s390_signed_integer_comparison,
17973         s390_unsigned_integer_comparison): New predicates.
17974
17975         * config/s390/s390-protos.h (s390_check_symref_alignment,
17976         s390_contiguous_bitmask_p, s390_reload_larl_operand,
17977         s390_reload_symref_address,
17978         s390_compare_and_branch_condition_mask): Prototypes added.
17979
17980         * config/s390/s390.h (TARGET_MEM_CONSTRAINT,
17981         SYMBOL_REF_ALIGN1_P, SYMBOL_FLAG_NOT_NATURALLY_ALIGNED,
17982         SYMBOL_REF_NOT_NATURALLY_ALIGNED_P): Macro definition added.
17983
17984 2008-05-28  Andreas Krebbel  <krebbel1@de.ibm.com>
17985
17986         * config/s390/s390.c (z10_cost): New cost function for z10.
17987         (s390_handle_arch_option, override_options): Support -march=z10 switch.
17988         (s390_issue_rate): Adjust issue rate for z10.
17989         * config/s390/s390.h (processor_type): Add PROCESSOR_2097_Z10.
17990         (processor_flags): Add PF_Z10.
17991         (TARGET_CPU_Z10, TARGET_Z10): New macro definitions.
17992         * config/s390/s390.md (cpu, cpu_facility attributes): Add z10.
17993         * gcc/config.gcc: Add z10.
17994
17995 2008-05-28  Richard Guenther  <rguenther@suse.de>
17996
17997         PR tree-optimization/36291
17998         * tree-flow. h (struct gimple_df): Remove var_anns member.
17999         * tree-flow-inline.h (gimple_var_anns): Remove.
18000         (var_ann): Simplify.
18001         * tree-dfa.c (create_var_ann): Simplify.
18002         (remove_referenced_var): Clear alias info from var_anns of globals.
18003         * tree-ssa.c (init_tree_ssa): Do not allocate var_anns.
18004         (delete_tree_ssa): Clear alias info from var_anns of globals.
18005         Do not free var_anns.
18006         (var_ann_eq): Remove.
18007         (var_ann_hash): Likewise.
18008
18009 2008-05-28  Mark Shinwell  <shinwell@codesourcery.com>
18010
18011         * config/mips/mips.c (mips_cpu_info_table): Add loongson2e
18012         and loongson2f entries.
18013         (mips_rtx_cost_data): Add entries for Loongson-2E/2F.
18014         * config/mips/mips.h (processor_type): Add Loongson-2E
18015         and Loongson-2F entries.
18016         (TARGET_LOONGSON_2E, TARGET_LOONGSON_2F, TARGET_LOONGSON_2EF): New.
18017         (MIPS_ISA_LEVEL_SPEC): Handle Loongson-2E/2F.
18018         * config/mips/mips.md (define_attr cpu): Add loongson2e and loongson2f.
18019         * doc/invoke.texi (MIPS Options): Document loongson2e
18020         and loongson2f processor names.
18021
18022 2008-05-27  H.J. Lu  <hongjiu.lu@intel.com>
18023
18024         PR target/35767
18025         PR target/35771
18026         * config/i386/i386.c (ix86_function_arg_boundary): Use
18027         alignment of canonical type.
18028         (ix86_expand_vector_move): Check unaligned memory access for
18029         all SSE modes.
18030
18031 2008-05-27  H.J. Lu  <hongjiu.lu@intel.com>
18032
18033         * dwarf2out.c (current_fde): Change return type to dw_fde_ref.
18034         Moved to the front of file.
18035
18036 2008-05-27  Xuepeng Guo  <xuepeng.guo@intel.com>
18037             H.J. Lu  <hongjiu.lu@intel.com>
18038
18039         * dwarf2out.c (current_fde): New.
18040         (add_cfi): Use it.
18041         (lookup_cfa:): Likewise.
18042         (dwarf2out_end_epilogue): Likewise.
18043         (dwarf2out_note_section_used): Likewise.
18044
18045 2008-05-27  Michael Matz  <matz@suse.de>
18046
18047         PR c++/27975
18048         * c.opt (Wenum-compare): New warning option.
18049         * doc/invoke.texi  (Warning Options): Document -Wenum-compare.
18050
18051 2008-05-27  Michael Matz  <matz@suse.de>
18052
18053         PR middle-end/36326
18054         * tree-gimple.c (is_gimple_mem_rhs): Remove work-around for
18055         non-BLKmode types.
18056         * tree-tailcall.c (find_tail_calls): Don't mark calls storing
18057         into memory as tail calls.
18058
18059 2008-05-27  Richard Guenther  <rguenther@suse.de>
18060
18061         PR tree-optimization/36339
18062         * tree-ssa-alias.c (set_initial_properties): Escaped pt_anything
18063         pointers cause all addressable variables to be call clobbered.
18064
18065 2008-05-27  Richard Guenther  <rguenther@suse.de>
18066
18067         PR tree-optimization/36245
18068         * tree-ssa-address.c (add_to_parts): Deal with non-pointer bases.
18069
18070 2008-05-27  Andreas Krebbel  <krebbel1@de.ibm.com>
18071
18072         * config/s390/s390.md: Replace all occurences of the 'm'
18073         constraint with 'RT'.
18074
18075 2008-05-27  Andreas Krebbel  <krebbel1@de.ibm.com>
18076
18077         * config/s390/s390.md ("cpu_facility", "enabled"): Attribute
18078         definitions added.
18079         ("*movdi_64dfp", "*movdi_64extimm", "*movdi_64"): Merged into
18080         "*movdi_64".
18081         ("*anddi3_extimm", "*anddi3"): Merged into "*anddi3".
18082         ("*iordi3_extimm", "*iordi3"): Merged into "*iordi3".
18083         ("*xordi3_extimm", "*xordi3"): Merged into "*xordi3".
18084
18085 2008-05-27  Andreas Krebbel  <krebbel1@de.ibm.com>
18086
18087         * reload.c: (find_reloads): Skip alternatives according to the
18088         "enabled" attribute. Constify the constraint variable.
18089         * recog.c (get_attr_enabled): Add default implementation.
18090         (extract_insn): Set the alternative_enabled_p array
18091         in the recog_data struct.
18092         (preprocess_constraints, constrain_operands): Skip
18093         alternatives according to the "enabled" attribute
18094         * recog.h (struct recog_data): New field alternative_enabled_p.
18095         (skip_alternative): New inline function.
18096         * regclass.c: (record_operand_costs): Check the "enabled" attribute.
18097         (record_reg_classes): Skip alternative according to the
18098         "enabled" attribute.
18099
18100         * doc/md.texi: Add documention for the "enabled" attribute.
18101
18102 2008-05-27  Andreas Krebbel  <krebbel1@de.ibm.com>
18103
18104         * defaults.h (TARGET_MEM_CONSTRAINT): New target macro added.
18105         * postreload.c (reload_cse_simplify_operands): Replace 'm'
18106         constraint with TARGET_MEM_CONSTRAINT.
18107         * recog.c (asm_operand_ok, preprocess_constraints,
18108         constrain_operands): Likewise.
18109         * regclass.c (record_reg_classes): Likewise.
18110         * reload.c (find_reloads, alternative_allows_const_pool_ref): Likewise.
18111         * reload1.c (maybe_fix_stack_asms): Likewise.
18112         * stmt.c (parse_output_constraint, parse_input_constraint): Likewise.
18113         * recog.h: Adjust comment.
18114         * genpreds.c (generic_constraint_letters): Remove 'm' constraint.
18115         * genoutput.c (note_constraint): Don't emit error for 'm' constraint.
18116         * doc/md.texi: Add a note to description of 'm' constraint.
18117         * doc/tm.texi: Document the new TARGET_MEM_CONSTRAINT macro.
18118
18119 2008-05-27  Eric Botcazou  <ebotcazou@adacore.com>
18120
18121         * tree-sra.c (sra_type_can_be_decomposed_p) <RECORD_TYPE>: Make sure
18122         that the bitfield is of integral type before testing its precision.
18123
18124 2008-05-27  Trevor Smigiel  <trevor_smigiel@playstation.sony.com>
18125             Sa Liu  <saliu@de.ibm.com>
18126
18127         * config/spu/spu.c (spu_init_libfuncs): Add __multi3, __divti3,
18128         __modti3, __udivti3, __umodti3 and __udivmodti4.
18129         * config/spu/t-spu-elf (LIB2FUNCS_STATIC_EXTRA): Add files
18130         that implement TImode mul and div functions.
18131         * config/spu/multi3.c: New. Implement __multi3.
18132         * config/spu/divmodti4.c: New. Implement _udivmodti4 and others.
18133         * testsuite/gcc.target/spu/muldivti3.c: New. Test TImode mul and div
18134         functions on SPU.
18135
18136 2008-05-26  Steven Bosscher  <stevenb.gcc@gmail.com>
18137
18138         * config/rs6000/rs6000.c (rs6000_legitimize_tls_address): Generate
18139         new tls_gd_* and tls_ld_* insns instead of an insn sequence.
18140         * config/rs6000/rs6000.md (TLSmode, tls_abi_suffix, tls_insn_suffix,
18141         tls_sysv_suffix): New mode and mode attribute iterators.
18142         (tls_gd_32, tls_gd_64, tls_ld_32, tls_ld_64): Remove.
18143         (lts_gd_aix*, tls_gd_sysv*, tls_ld_aix*, tls_ld_sysv*): New patterns.
18144         (tls_dtprel_*, tls_dtprel_ha_*, tls_dtprel_lo_*, tls_got_dtprel_*,
18145         tls_tprel_*, tls_tprel_ha_*, tls_tprel_lo_*, tls_got_tprel_*,
18146         tls_tls_*): Merge 32 bit and 64 bit variants using aforementioned
18147         iterators.
18148
18149 2008-05-26  Eric Botcazou  <ebotcazou@adacore.com>
18150
18151         PR tree-optimization/36329
18152         * tree.h (CALL_CANNOT_INLINE_P): Add access check.
18153         * tree-gimple.h (CALL_STMT_CANNOT_INLINE_P): New macro.
18154         * cgraphbuild.c (initialize_inline_failed): Use the latter
18155         macro in lieu of the former.
18156         * ipa-inline.c (cgraph_mark_inline): Likewise.
18157         (cgraph_decide_inlining_of_small_function): Likewise.
18158         (cgraph_decide_inlining): Likewise.
18159         (cgraph_decide_inlining_incrementally): Likewise.
18160
18161 2008-05-26  Tristan Gingold  <gingold@adacore.com>
18162             Anatoly Sokolov  <aesok@post.ru>
18163
18164         * config/avr/avr.md ("call_prologue_saves"): Use hi8(gs())/lo8(gs())
18165         instead of pm_lo8/pm_hi8 to makes this call working on avr6.
18166         * config/avr/avr.c (expand_prologue): Tune "call_prologue"
18167         optimization for 'avr6' architecture.
18168
18169 2008-05-26  Andy Hutchinson  <hutchinsonandy@aim.com>
18170
18171         PR target/34932
18172         * config/avr/avr.md (*addhi3_zero_extend2): Remove.
18173
18174 2008-05-26  Richard Guenther  <rguenther@suse.de>
18175
18176         * tree-ssa-sccvn.c (expr_has_constants): Declare.
18177         (visit_reference_op_load): Initialize VN_INFO->has_constants properly.
18178
18179 2008-05-26  H.J. Lu  <hongjiu.lu@intel.com>
18180
18181         PR middle-end/36253
18182         * caller-save.c (insert_restore): Verify alignment of spill space.
18183         (insert_save): Likewise.
18184         * cfgexpand.c (LOCAL_ALIGNMENT): Removed.
18185         * defaults.h (LOCAL_ALIGNMENT): New. Provide default.
18186         (STACK_SLOT_ALIGNMENT): Likewise.
18187         * function.c (LOCAL_ALIGNMENT): Removed.
18188         (get_stack_local_alignment): New.
18189         (assign_stack_local): Use it.  Set alignment on stack slot.
18190         (assign_stack_temp_for_type): Use get_stack_local_alignment.
18191         * config/i386/i386.h (LOCAL_ALIGNMENT): Updated.
18192         (STACK_SLOT_ALIGNMENT): New.
18193         * config/i386/i386.c (ix86_local_alignment): Handle caller-save
18194         stack slot in XFmode.
18195
18196         * doc/tm.texi (STACK_SLOT_ALIGNMENT): New.
18197
18198 2008-05-26  Kai Tietz  <kai.tietz@onevision.com>
18199
18200         PR/36321
18201         * config/i386/i386.md (allocate_stack_worker_64): Make sure
18202         argument operand in rax isn't removed.
18203
18204 2008-05-26  Richard Guenther  <rguenther@suse.de>
18205
18206         PR middle-end/36300
18207         * fold-const.c (extract_muldiv_1): Use TYPE_OVERFLOW_WRAPS,
18208         not TYPE_UNSIGNED.  Use TYPE_PRECISION instead of GET_MODE_SIZE.
18209
18210 2008-05-26  Daniel Franke  <franke.daniel@gmail.com>
18211
18212         PR bootstrap/36331
18213         * c-cppbuiltin.c (define__GNUC__): Re-add definition of __GNUG__.
18214
18215 2008-05-26  Dominique Dhumieres  <dominiq@lps.ens.fr>
18216
18217         * config/darwin-c.c: Include "incpath.h" instead of "c-incpath.h".
18218         * config/t-darwin: Use "incpath.h" instead of "c-incpath.h".
18219
18220 2008-05-25  Eric Botcazou  <ebotcazou@adacore.com>
18221
18222         * tree-nested.c (convert_tramp_reference) <ADDR_EXPR>: Do not
18223         build a trampoline if we don't want one.
18224         * varasm.c (initializer_constant_valid_p) <ADDR_EXPR>: Do not
18225         return zero for nested functions if we don't want a trampoline.
18226
18227 2008-05-26  Daniel Franke  <franke.daniel@gmail.com>
18228
18229         * doc/invoke.texi: Added f77, f77-cpp-input to list of file types.
18230
18231 2008-05-26  Daniel Franke  <franke.daniel@gmail.com>
18232
18233         PR fortran/18428
18234         * c.opt: Removed undocumented option '-lang-fortran'.
18235         * c-common.h: Removed global variable 'lang_fortran'.
18236         * c-opts.c (c_common_handle_option): Removed code to handle
18237         option '-lang-fortran'. Updated includes.
18238         * c-cppbuiltin.c (c_cpp_builtins): Removed conditional
18239         definition of '__GFORTRAN__'.
18240         (define__GNUC__): Reimplemented to use BASEVER and
18241         cpp_define_formatted.
18242         (builtin_define_with_value_n): Removed.
18243         * c-incpath.h: Renamed to ...
18244         * incpath.h: ... this.
18245         * c-incpath.c: Renamed to ...
18246         * incpath.c: ... this. Updated includes.
18247         * fix-header.c: Updated includes.
18248         * Makefile.in: Replaced c-incpath.[ch] by incpath.[ch].
18249         (c-cppbuiltin.o): Added dependency on and definition of BASEVER.
18250         (OBJ-archive): Added cppdefault.o, incpath.o and prefix.o.
18251
18252 2008-05-25  Eric Botcazou  <ebotcazou@adacore.com>
18253
18254         * tree.h: Update the table of flags used on tree nodes.
18255         (TREE_NO_TRAMPOLINE): New accessor for static_flag.
18256         (SAVE_EXPR_RESOLVED_P): Use automatically-built access check.
18257         (FORCED_LABEL): Add access check.
18258         (CALL_EXPR_RETURN_SLOT_OPT): Likewise.
18259         (ASM_INPUT_P): Likewise.
18260         (ASM_VOLATILE_P): Likewise.
18261         (EH_FILTER_MUST_NOT_THROW): Access static_flag directly.
18262         (OMP_SECTION_LAST): Access private_flag directly.
18263         (OMP_RETURN_NOWAIT): Likewise.
18264         (OMP_PARALLEL_COMBINED): Likewise.
18265         (OMP_CLAUSE_PRIVATE_DEBUG): Access public_flag directly.
18266         (OMP_CLAUSE_LASTPRIVATE_FIRSTPRIVATE): Likewise.
18267         * tree-ssa-propagate.c (STMT_IN_SSA_EDGE_WORKLIST): Access
18268         deprecated_flag directly.
18269
18270 2008-05-25  H.J. Lu  <hongjiu.lu@intel.com>
18271
18272         * final.c (frame_pointer_needed): Removed.
18273         * flags.h (frame_pointer_needed): Likewise.
18274
18275         * function.h (rtl_data): Add frame_pointer_needed.
18276         (frame_pointer_needed): New.
18277
18278 2008-05-25  Arthur Loiret  <arthur.loiret@u-psud.fr>
18279
18280         * config.gcc (sh2[lbe]*-*-linux*): Allow target.
18281
18282 2008-05-25  Steven Bosscher  <stevenb.gcc@gmail.com>
18283
18284         * gcse.c (hash_scan_set): Do not pick up a REG_EQUAL value if
18285         SRC is a REG.
18286
18287 2008-05-25  Alan Modra  <amodra@bigpond.net.au>
18288
18289         * c-common.c (strip_array_types): Move function to..
18290         * tree.c: ..here.
18291         (get_inner_array_type): Delete.
18292         * c-common.h (strip_array_types): Move declaration to..
18293         * tree.h: ..here.
18294         (get_inner_array_type): Delete.
18295         * config/i386/i386.c (x86_field_alignment): Use strip_array_types.
18296         * config/rs6000/aix.h (ADJUST_FIELD_ALIGN): Likewise.
18297         * config/rs6000/linux64.h (ADJUST_FIELD_ALIGN): Likewise.
18298         * config/pa/pa.c (emit_move_sequence): Likewise.
18299
18300 2008-05-24  H.J. Lu  <hongjiu.lu@intel.com>
18301
18302         * config/i386/i386.md (*sse_prologue_save_insn): Set length
18303         attribute to 34.
18304
18305 2008-05-24  Andy Hutchinson  <hutchinsonandy@aim.com>
18306
18307         * function.c: Include target hook for nonlocal_goto frame value.
18308
18309 2008-05-24  Richard Guenther  <rguenther@suse.de>
18310
18311         * tree-dfa.c (refs_may_alias_p): Re-instantiate case that a scalar
18312         variable can be only accessed through a pointer or a union.
18313
18314 2008-05-24  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
18315
18316         * builtins.c (fold_builtin_fpclassify): Fix spelling of FP_INFINITE.
18317         * doc/extend.texi: Likewise.
18318
18319 2008-05-23  DJ Delorie  <dj@redhat.com>
18320
18321         * config/m32c/jump.md (untyped_call): Add.
18322
18323         * config/m32c/m32c.c (m32c_return_addr_rtx): Change pointer type
18324         for A24 to PSImode.
18325         (m32c_address_cost): Detail costs for indirect offsets.
18326
18327 2008-05-23  Rafael Espíndola  <espindola@google.com>
18328
18329         * see.c (see_get_extension_data): Don't use SUBREG_REG to test
18330         if a node is a SUBREG.
18331         (see_analyze_one_def): Don't use SUBREG_REG to test if a node
18332         is a SUBREG.
18333
18334 2008-05-23  Paul Brook  <paul@codesourcery.com>
18335             Carlos O'Donell  <carlos@codesourcery.com>
18336
18337         * doc/extend.texi: Clarify use of __attribute__((naked)).
18338         * doc/tm.texi: Document TARGET_ALLOCATE_STACK_SLOTS_FOR_ARGS.
18339         * target.h (gcc_target): Add allocate_stack_slots_for_args.
18340         * function.c (use_register_for_decl): Use
18341         targetm.calls.allocate_stack_slots_for_args.
18342         * target-def.h (TARGET_CALLS): Add TARGET_ALLOCATE_STACK_SLOTS_FOR_ARGS.
18343         * config/arm/arm.c (arm_allocate_stack_slots_for_args): New function.
18344         (TARGET_ALLOCATE_STACK_SLOTS_FOR_ARGS): Define.
18345
18346 2008-05-23  Eric Botcazou  <ebotcazou@adacore.com>
18347
18348         * expr.c (highest_pow2_factor) <BIT_AND_EXPR>: New case.
18349
18350 2008-05-23  Steven Munroe  <sjmunroe@us.ibm.com>
18351
18352         * config/rs6000/darwin-ldouble.c (fmsub): Eliminate the full
18353         PACK/UNPACK between FP_SUB_Q and FD_TRUNC so that the result
18354         is only rounded once.
18355
18356 2008-05-23  Richard Guenther  <rguenther@suse.de>
18357
18358         * tree-ssa-operands.c (mark_difference_for_renaming): Use bitmap_xor.
18359
18360 2008-05-23  Uros Bizjak  <ubizjak@gmail.com>
18361             Jakub Jelinek  <jakub@redhat.com>
18362
18363         PR target/36079
18364         * configure.ac: Handle --enable-cld.
18365         * configure: Regenerated.
18366         * config.gcc: Add USE_IX86_CLD to tm_defines for x86 targets.
18367         * config/i386/i386.h (struct machine_function): Add needs_cld field.
18368         (ix86_current_function_needs_cld): New define.
18369         * config/i386/i386.md (UNSPEC_CLD): New unspec volatile constant.
18370         (cld): New isns pattern.
18371         (strmov_singleop, rep_mov, strset_singleop, rep_stos, cmpstrnqi_nz_1,
18372         cmpstrnqi_1, strlenqi_1): Set ix86_current_function_needs_cld flag.
18373         * config/i386/i386.opt (mcld): New option.
18374         * config/i386/i386.c (ix86_expand_prologue): Emit cld insn if
18375         TARGET_CLD and ix86_current_function_needs_cld.
18376         (override_options): Use -mcld by default for 32-bit code if
18377         USE_IX86_CLD.
18378
18379         * doc/install.texi (Options specification): Document --enable-cld.
18380         * doc/invoke.texi (Machine Dependent Options)
18381         [i386 and x86-64 Options]: Add -mcld option.
18382         (Intel 386 and AMD x86-64 Options): Document -mcld option.
18383
18384 2008-05-23  Kai Tietz  <kai.tietz@onevison.com>
18385         * config/i386/i386.c (return_in_memory_32): Add ATTRIBUTE_UNUSED.
18386         (return_in_memory_64): Likewise.
18387         (return_in_memory_ms_64): Likewise.
18388
18389 2008-05-23  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
18390
18391         * builtin-types.def (BT_FN_INT_INT_INT_INT_INT_INT_VAR): New.
18392         * builtins.c (fold_builtin_fpclassify): New.
18393         (fold_builtin_varargs): Handle BUILT_IN_FPCLASSIFY.
18394         * builtins.def (BUILT_IN_FPCLASSIFY): New.
18395         * c-common.c (handle_type_generic_attribute): Adjust to accept
18396         fixed arguments before an elipsis.
18397         (check_builtin_function_arguments): Handle BUILT_IN_FPCLASSIFY.
18398         * doc/extend.texi: Document __builtin_fpclassify.
18399
18400 2008-05-22  Aldy Hernandez  <aldyh@redhat.com>
18401
18402         * omp-low.c (gate_expand_omp_ssa): Remove.
18403         (pass_expand_omp_ssa): Remove.
18404         (gate_expand_omp): Do not check for flag_openmp_ssa.
18405         * common.opt (-fopenmp-ssa): Remove.
18406         * passes.c (init_optimization_passes): Remove pass_expand_omp_ssa.
18407
18408 2008-05-22  Kaz Kojima  <kkojima@gcc.gnu.org>
18409
18410         * config/sh/sh.opt (mfixed-range): New option.
18411         * config/sh/sh-protos.h (sh_fix_range): Declare.
18412         * config/sh/sh.c (sh_fix_range): New function.
18413         * config/sh/sh.h (sh_fixed_range_str): Declare.
18414         (OVERRIDE_OPTIONS): Call sh_fix_range if sh_fixed_range_str
18415         is not empty.
18416         * doc/invoke.texi (SH Options): Document -mfixed-range.
18417
18418 2008-05-22  Kai Tietz  <kai.tietz@onevision.com>
18419
18420         * config/i386/sol2-10.h (SUBTARGET_RETURN_IN_MEMORY): Undefine
18421         it before the redeclaration.
18422
18423 2008-05-22  Anatoly Sokolov <aesok@post.ru>
18424
18425         * config/avr/avr.c (get_sequence_length): Add new function.
18426         (expand_prologue, expand_epilogue): Remove duplicate code.
18427
18428 2008-05-22  Rafael Espíndola  <espindola@google.com>
18429
18430         * see.c (see_pre_insert_extensions): Use copy_rtx to avoid invalid rtx
18431         sharing.
18432
18433 2008-05-22  H.J. Lu  <hongjiu.lu@intel.com>
18434
18435         * defaults.h (UNITS_PER_SIMD_WORD): Add scalar mode as argument.
18436         * doc/tm.texi (UNITS_PER_SIMD_WORD): Likewise.
18437
18438         * tree-vect-analyze.c (vect_compute_data_ref_alignment): Replace
18439         UNITS_PER_SIMD_WORD with GET_MODE_SIZE (TYPE_MODE (vectype)).
18440         (vect_update_misalignment_for_peel): Likewise.
18441         (vector_alignment_reachable_p): Likewise.
18442         * tree-vect-transform.c (vectorizable_load): Likewise.
18443         * tree-vectorizer.c (vect_supportable_dr_alignment): Likewise.
18444         (get_vectype_for_scalar_type): Pass mode of scalar_type
18445         to UNITS_PER_SIMD_WORD.
18446
18447         * config/arm/arm.h (UNITS_PER_SIMD_WORD): Updated.
18448         * config/i386/i386.h (UNITS_PER_SIMD_WORD): Likewise.
18449         * config/mips/mips.h (UNITS_PER_SIMD_WORD): Likewise.
18450         * config/rs6000/rs6000.h (UNITS_PER_SIMD_WORD): Likewise.
18451         * config/sparc/sparc.h (UNITS_PER_SIMD_WORD): Likewise.
18452
18453 2008-05-22  Ira Rosen  <irar@il.ibm.com>
18454
18455         PR tree-optimization/36293
18456         * tree-vect-transform.c (vect_transform_strided_load): Don't check
18457         if the first load must be skipped because of a gap.
18458
18459 2008-05-22  Richard Guenther  <rguenther@suse.de>
18460
18461         * tree-dfa.c (refs_may_alias_p): Exit early if possible.  Handle
18462         more cases of offset disambiguation that is possible if
18463         strict-aliasing rules apply.
18464         * tree-ssa-loop-im.c (mem_refs_may_alias_p): Use refs_may_alias_p
18465         for basic offset and type-based disambiguation.
18466
18467 2008-05-21  H.J. Lu  <hongjiu.lu@intel.com>
18468
18469         * config/i386/i386.c (ix86_expand_vector_init_one_var): Use
18470         ix86_expand_vector_set on V16QImode for SSE4.1.
18471
18472 2008-05-21  Tom Tromey  <tromey@redhat.com>
18473
18474         * c.opt (Wimport): Mark as undocumented.
18475         * doc/invoke.texi (Option Summary): Don't mention -Wimport or
18476         -Wno-import.
18477         (Warning Options): Likewise.
18478         * doc/cppopts.texi: Don't mention -Wimport.
18479
18480 2008-05-21  Sebastian Pop  <sebastian.pop@amd.com>
18481
18482         PR tree-optimization/36287
18483         PR tree-optimization/36286
18484         * lambda-code.c (build_access_matrix): Do not use the loop->num
18485         for computing the number of induction variables: use the loop depth
18486         instead.
18487
18488 2008-05-21  Kai Tietz  <kai.tietz@onevision.com>
18489
18490         PR/36280
18491         * config/i386/cygming.h (ASM_OUTPUT_LABELREF): Honor
18492         option -f(no-)leading-underscore.
18493
18494 2008-05-21  H.J. Lu  <hongjiu.lu@intel.com>
18495
18496         * config/i386/i386.c (ix86_expand_vector_init_general): Use
18497         GET_MODE_NUNITS (mode).
18498
18499 2008-05-21  Peter Bergner  <bergner@vnet.ibm.com>
18500
18501         * doc/invoke.texi: Add cpu_type's 464 and 464fp.
18502         (-mmulhw): Add 464 to description.
18503         (-mdlmzb): Likewise.
18504         * config.gcc: Handle --with-cpu=464 and --with-cpu=464fp.
18505         * config/rs6000/rs6000.c (processor_target_table): Add 464 and
18506         464fp entries.
18507         * config/rs6000/rs6000.h (ASM_CPU_SPEC): Add 464 and 464fp support.
18508         * config/rs6000/t-fprules (MULTILIB_MATCHES_FLOAT): Include -mcpu=464.
18509         * config/rs6000/rs6000.md: Update comments for 464.
18510
18511 2008-05-21  Janis Johnson  <janis187@us.ibm.com>
18512
18513         * doc/sourcebuild.texi (Test Directives): Add dg-xfail-run-if.
18514
18515 2008-05-21  H.J. Lu  <hongjiu.lu@intel.com>
18516
18517         * config/i386/sse.md (vec_extractv4sf): Removed.
18518         (vec_extractv2df): Likewise.
18519         (vec_extractv2di): Likewise.
18520         (vec_extractv4si): Likewise.
18521         (vec_extractv8hi): Likewise.
18522         (vec_extractv16qi): Likewise.
18523         (vec_extract<mode>): New.
18524
18525 2008-05-21  H.J. Lu  <hongjiu.lu@intel.com>
18526
18527         * config/i386/sse.md (vec_setv4sf): Removed.
18528         (vec_setv2df): Likewise.
18529         (vec_setv2di): Likewise.
18530         (vec_setv4si): Likewise.
18531         (vec_setv8hi): Likewise.
18532         (vec_setv16qi): Likewise.
18533         (vec_set<mode>): New.
18534
18535 2008-05-21  H.J. Lu  <hongjiu.lu@intel.com>
18536
18537         * config/i386/i386.c (ix86_expand_vector_init_general): Remove
18538         goto for vec_concat and vec_interleave.
18539
18540 2008-05-21  H.J. Lu  <hongjiu.lu@intel.com>
18541
18542         * config/i386/sse.md (vec_initv4sf): Removed.
18543         (vec_initv2df): Likewise.
18544         (vec_initv2di): Likewise.
18545         (vec_initv4si): Likewise.
18546         (vec_initv8hi): Likewise.
18547         (vec_initv16qi): Likewise.
18548         (vec_init<mode>): New.
18549
18550 2008-05-21  Joseph Myers  <joseph@codesourcery.com>
18551
18552         * collect2.c (find_a_file): Use IS_ABSOLUTE_PATH.
18553
18554 2008-05-21  Tom Tromey  <tromey@redhat.com>
18555
18556         * ggc-zone.c (lookup_page_table_if_allocated): New function.
18557         (zone_find_object_offset): Likewise.
18558         (gt_ggc_m_S): Likewise.
18559         (highest_bit): Likewise.
18560         * ggc-page.c (gt_ggc_m_S): New function.
18561         * stringpool.c (string_stack): Remove.
18562         (init_stringpool): Update.
18563         (ggc_alloc_string): Use ggc_alloc.
18564         (maybe_delete_ident): New function.
18565         (ggc_purge_stringpool): Likewise.
18566         (gt_ggc_m_S): Remove.
18567         * ggc-common.c (ggc_protect_identifiers): New global.
18568         (ggc_mark_roots): Call ggc_purge_stringpool.  Use
18569         ggc_protect_identifiers.
18570         * ggc.h (ggc_protect_identifiers): Declare.
18571         (gt_ggc_m_S): Update.
18572         (ggc_purge_stringpool): Declare.
18573         * toplev.c (compile_file): Set and reset ggc_protect_identifiers.
18574         * gengtype.c (write_types_process_field) <TYPE_STRING>: Remove
18575         special case.
18576         (write_root): Cast gt_ggc_m_S to gt_pointer_walker.
18577
18578 2008-05-21  David S. Miller  <davem@davemloft.net>
18579
18580         * config.gcc (sparc-*-linux*): Always include sparc/t-linux in
18581         tmake_file.
18582
18583 2008-05-21  Eric Botcazou  <ebotcazou@adacore.com>
18584
18585         * cfgexpand.c (tree_expand_cfg): Zap the EH throw statement table
18586         once finished.
18587
18588 2008-05-20  David Daney  <ddaney@avtrex.com>
18589
18590         * config/mips/mips.md (UNSPEC_SYNC_NEW_OP_12,
18591         UNSPEC_SYNC_OLD_OP_12, UNSPEC_SYNC_EXCHANGE_12): New define_constants.
18592         (UNSPEC_SYNC_EXCHANGE, UNSPEC_MEMORY_BARRIER, UNSPEC_SET_GOT_VERSION,
18593         UNSPEC_UPDATE_GOT_VERSION): Renumber.
18594         (optab, insn): Add 'plus' and 'minus' to define_code_attr.
18595         (atomic_hiqi_op): New define_code_iterator.
18596         (sync_compare_and_swap<mode>): Call mips_expand_atomic_qihi instead of
18597         mips_expand_compare_and_swap_12.
18598         (compare_and_swap_12): Use MIPS_COMPARE_AND_SWAP_12 instead of
18599         MIPS_COMPARE_AND_SWAP_12_0.  Pass argument to MIPS_COMPARE_AND_SWAP_12.
18600         (sync_<optab><mode>, sync_old_<optab><mode>,
18601         sync_new_<optab><mode>, sync_nand<mode>, sync_old_nand<mode>,
18602         sync_new_nand<mode>): New define_expands for HI and QI mode operands.
18603         (sync_<optab>_12, sync_old_<optab>_12, sync_new_<optab>_12,
18604         sync_nand_12, sync_old_nand_12, sync_new_nand_12): New insns.
18605         (sync_lock_test_and_set<mode>): New define_expand for HI and QI modes.
18606         (test_and_set_12): New insn.
18607         (sync_old_add<mode>, sync_new_add<mode>, sync_old_<optab><mode>,
18608         sync_new_<optab><mode>, sync_old_nand<mode>,
18609         sync_new_nand<mode>, sync_lock_test_and_set<mode>):  Add early
18610         clobber to operand 0 for SI and DI mode insns.
18611         * config/mips/mips-protos.h (mips_gen_fn_6, mips_gen_fn_5,
18612         mips_gen_fn_4): New typedefs.
18613         (mips_gen_fn_ptrs): Define new union type.
18614         (mips_expand_compare_and_swap_12): Remove declaration.
18615         (mips_expand_atomic_qihi): Declare function.
18616         * config/mips/mips.c (mips_expand_compare_and_swap_12): Rename to...
18617         (mips_expand_atomic_qihi): ... this.  Use new generator function
18618         parameter.
18619         * config/mips/mips.h (MIPS_COMPARE_AND_SWAP_12): Add OPS parameter.
18620         (MIPS_COMPARE_AND_SWAP_12_0): Delete macro.
18621         (MIPS_COMPARE_AND_SWAP_12_ZERO_OP, MIPS_COMPARE_AND_SWAP_12_NONZERO_OP,
18622         MIPS_SYNC_OP_12, MIPS_SYNC_OP_12_NOT_NOP,
18623         MIPS_SYNC_OP_12_NOT_NOT, MIPS_SYNC_OLD_OP_12,
18624         MIPS_SYNC_OLD_OP_12_NOT_NOP, MIPS_SYNC_OLD_OP_12_NOT_NOP_REG,
18625         MIPS_SYNC_OLD_OP_12_NOT_NOT, MIPS_SYNC_OLD_OP_12_NOT_NOT_REG,
18626         MIPS_SYNC_NEW_OP_12, MIPS_SYNC_NEW_OP_12_NOT_NOP,
18627         MIPS_SYNC_NEW_OP_12_NOT_NOT, MIPS_SYNC_EXCHANGE_12,
18628         MIPS_SYNC_EXCHANGE_12_ZERO_OP, MIPS_SYNC_EXCHANGE_12_NONZERO_OP):
18629         New macros.
18630
18631 2008-05-20  H.J. Lu  <hongjiu.lu@intel.com>
18632
18633         * config/i386/i386.c (ix86_expand_vector_init_one_nonzero): Add
18634         the missing break.
18635
18636 2008-05-20  Anatoly Sokolov <aesok@post.ru>
18637
18638         * config/avr/avr.h (machine_function): Add 'is_OS_main' field.
18639         * config/avr/avr.c (avr_OS_main_function_p): Add new function.
18640         (avr_attribute_table): Add 'OS_main' function attribute.
18641         (avr_regs_to_save, expand_prologue, expand_epilogue): Handle
18642         functions with 'OS_main' attribute.
18643
18644 2008-05-20  Richard Guenther  <rguenther@suse.de>
18645
18646         PR tree-optimization/35204
18647         * tree-ssa-sccvn.c (extract_and_process_scc_for_name): New
18648         helper, split out from ...
18649         (DFS): ... here.  Make the DFS walk non-recursive.
18650
18651 2008-05-20  Sebastian Pop  <sebastian.pop@amd.com>
18652             Jan Sjodin  <jan.sjodin@amd.com>
18653
18654         PR tree-optimization/36181
18655         * tree-parloops.c (loop_has_vector_phi_nodes): New.
18656         (parallelize_loops): Don't parallelize when the loop has vector
18657         phi nodes.
18658
18659 2008-05-20  Jan Sjodin  <jan.sjodin@amd.com>
18660             Sebastian Pop  <sebastian.pop@amd.com>
18661
18662         * tree-loop-linear.c (gather_interchange_stats): Look in the access
18663         matrix, and never look at the tree representation of the memory
18664         accesses.
18665         (linear_transform_loops): Computes parameters and access matrices.
18666         * tree-data-ref.c (compute_data_dependences_for_loop): Returns false
18667         when fails.
18668         (access_matrix_get_index_for_parameter): New.
18669         * tree-data-ref.h (struct access_matrix): New.
18670         (AM_LOOP_NEST_NUM, AM_NB_INDUCTION_VARS, AM_PARAMETERS, AM_MATRIX,
18671         AM_NB_PARAMETERS, AM_CONST_COLUMN_INDEX, AM_NB_COLUMNS,
18672         AM_GET_SUBSCRIPT_ACCESS_VECTOR, AM_GET_ACCESS_MATRIX_ELEMENT,
18673         am_vector_index_for_loop): New.
18674         (struct data_reference): Add field access_matrix.
18675         (DR_ACCESS_MATRIX): New.
18676         (compute_data_dependences_for_loop): Update declaration.
18677         (lambda_collect_parameters, lambda_compute_access_matrices): Declared.
18678         * lambda.h (lambda_vector_vec_p): Declared.
18679         * lambda-code.c: Depend on pointer-set.h.
18680         (lambda_collect_parameters_from_af, lambda_collect_parameters,
18681         av_for_af_base, av_for_af, build_access_matrix,
18682         lambda_compute_access_matrices): New.
18683         * Makefile.in (lambda-code.o): Depend on pointer-set.h.
18684
18685 2008-05-20  Joseph Myers  <joseph@codesourcery.com>
18686
18687         * doc/install.texi2html: Generate gcc-vers.texi in $DESTDIR not
18688         $SOURCEDIR/include.
18689
18690 2008-05-20  Jan Sjodin  <jan.sjodin@amd.com>
18691             Sebastian Pop  <sebastian.pop@amd.com>
18692
18693         PR tree-optimization/36206
18694         * tree-scalar-evolution.c: Remove enum INSERT_SUPERLOOP_CHRECS,
18695         FOLD_CONVERSIONS.
18696         (instantiate_scev_1): Rename flags to fold_conversions.
18697         Do not check for INSERT_SUPERLOOP_CHRECS, keep SSA_NAMEs defined
18698         outeside instantiation_loop.
18699         * tree-chrec.h (evolution_function_is_affine_in_loop): New.
18700         (evolution_function_is_affine_or_constant_p): Removed.
18701         * tree-data-ref.c (dr_analyze_indices): Replace resolve_mixers with
18702         instantiate_scev.
18703         (analyze_siv_subscript): Pass in the loop nest number.
18704         Call evolution_function_is_affine_in_loop instead of
18705         evolution_function_is_affine_p.
18706         (analyze_overlapping_iterations): Pass in the loop nest number.
18707
18708 2008-05-20  Jan Sjodin  <jan.sjodin@amd.com>
18709             Sebastian Pop  <sebastian.pop@amd.com>
18710
18711         PR tree-optimization/36206
18712         * tree-chrec.h (chrec_fold_op): New.
18713         * tree-data-ref.c (initialize_matrix_A): Traverse NOP_EXPR, PLUS_EXPR,
18714         and other trees.
18715
18716 2008-05-20  Nathan Sidwell  <nathan@codesourcery.com>
18717
18718         * c-incpath.c (INO_T_EQ): Do not define on non-inode systems.
18719         (DIRS_EQ): New.
18720         (remove_duplicates): Do not set inode on non-inode systems.
18721         Use DIRS_EQ.
18722
18723 2008-05-20  Sandra Loosemore  <sandra@codesourcery.com>
18724
18725         * config.gcc (tm_file): Update comments about relative pathnames.
18726
18727 2008-05-20  Richard Guenther  <rguenther@suse.de>
18728
18729         * tree-ssa-reassoc.c (fini_reassoc): Use the statistics infrastructure.
18730         * tree-ssa-sccvn.c (process_scc): Likewise.
18731         * tree-ssa-sink.c (execute_sink_code): Likewise.
18732         * tree-ssa-threadupdate.c (thread_through_all_blocks): Likewise.
18733         * tree-vrp.c (process_assert_insertions): Likewise.
18734         * tree-ssa-dce.c (eliminate_unnecessary_stmts): Likewise.
18735         (perform_tree_ssa_dce): Likewise.
18736         * tree-ssa-dom.c (tree_ssa_dominator_optimize): Likewise.
18737         (dump_dominator_optimization_stats): Likewise.
18738         * tree-vectorizer.c (vectorize_loops): Likewise.
18739
18740 2008-05-20  Richard Guenther  <rguenther@suse.de>
18741
18742         * tree-vn.c (vn_lookup_with_vuses): Do not use the alias oracle.
18743
18744 2008-05-20  Kai Tietz  <kai.tietz@onevision.com>
18745
18746         * config/i386/i386-protos.h (ix86_return_in_memory): Removed.
18747         (ix86_i386elf_return_in_memory): Likewise.
18748         (ix86_i386interix_return_in_memory): Likewise.
18749         * config/i386/i386-interix.h (TARGET_RETURN_IN_MEMORY): Removed.
18750         (SUBTARGET_RETURN_IN_MEMORY): New.
18751         * config/i386/i386elf.h: Likewise.
18752         * config/i386/ptx4-i.h: Likewise.
18753         * config/i386/sol2-10.h: Likewise.
18754         * config/i386/sysv4.h: Likewise.
18755         * config/i386/vx-common.h: Likewise.
18756         * config/i386/i386.h (TARGET_RETURN_IN_MEMORY): Removed.
18757         * config/i386/i386.c (ix86_return_in_memory): Made static and
18758         make use of optional SUBTARGET_RETURN_IN_MEMORY macro.
18759         (ix86_i386elf_return_in_memory): Removed.
18760         (ix86_i386interix_return_in_memory): Removed.
18761         (TARGET_RETURN_IN_MEMORY): Declared within i386.c only.
18762         * target-def.h (TARGET_RETURN_IN_MEMORY): Remove protection #ifdef.
18763
18764 2008-05-20  Alexandre Oliva  <aoliva@redhat.com>
18765
18766         * cselib.c (cselib_record_sets): Use correct mode for IF_THEN_ELSE.
18767
18768 2008-05-19  Xinliang David Li  <davidxl@google.com>
18769
18770         * tree-ssa-dce.c: Revert patches of 2008-05-17 and 2008-05-18.
18771         * opts.c: Ditto.
18772         * common.opt: Ditto.
18773         * doc/invoke.texi: Ditto.
18774
18775 2008-05-19  Eric Botcazou  <ebotcazou@adacore.com>
18776
18777         * tree.c (substitute_in_expr) <tcc_vl_exp>: Fix thinko.
18778         (substitute_placeholder_in_expr) <tcc_vl_exp>: Minor tweak.
18779
18780 2008-05-19  H.J. Lu  <hongjiu.lu@intel.com>
18781
18782         * config/i386/i386.c (ix86_expand_vector_init_concat): Change
18783         sizes of operand array from 8/4 to 4/2.
18784         (ix86_expand_vector_init_general): Change size of operand array
18785         from 32 to 16.  Remove op0, op1 and half_mode.
18786
18787 2008-05-19  H.J. Lu  <hongjiu.lu@intel.com>
18788
18789         * config/i386/i386.c (ix86_expand_vector_init_concat): New.
18790         (ix86_expand_vector_init_interleave): Likewise.
18791         (ix86_expand_vector_init_general): Use them.  Assert
18792         word_mode == SImode when n_words == 4.
18793
18794 2008-05-19  Uros Bizjak  <ubizjak@gmail.com>
18795
18796         * config/i386/i386.c (ix86_secondary_reload): New static function.
18797         (TARGET_SECONDARY_RELOAD): New define.
18798         * config/i386/i386.h (SECONDARY_OUTPUT_RELOAD_CLASS): Remove.
18799         * config/i386/i386.md (reload_outqi): Remove.
18800
18801 2008-05-18  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
18802
18803         PR middle-end/35509
18804         * builtins.c (mathfn_built_in_1): Renamed from mathfn_built_in.
18805         Add `implicit' parameter.  Handle BUILT_IN_SIGNBIT.
18806         (mathfn_built_in): Rewrite in terms of mathfn_built_in_1.
18807         (fold_builtin_classify): Handle BUILT_IN_ISINF_SIGN.
18808         (fold_builtin_1): Likewise.
18809         * builtins.def (BUILT_IN_ISINF_SIGN): New.
18810         c-common.c (check_builtin_function_arguments): Handle
18811         BUILT_IN_ISINF_SIGN.
18812         * doc/extend.texi: Document __builtin_isinf_sign.
18813         * fold-const.c (operand_equal_p): Handle COND_EXPR.
18814
18815 2008-05-18  Eric Botcazou  <ebotcazou@adacore.com>
18816
18817         * tree-ssa-dom.c (tree_ssa_dominator_optimize): If some blocks need
18818         EH cleanup at the end of the pass, search for those that have been
18819         turned into forwarder blocks and do the cleanup on their successor.
18820
18821 2008-05-18  Richard Guenther  <rguenther@suse.de>
18822
18823         * tree-cfg.c (verify_gimple_expr): Allow conversions from
18824         pointers to sizetype and vice versa.
18825
18826 2008-05-18 Xinliang David Li   <davidxl@google.com>
18827
18828         * gcc/tree-ssa-dce.c: Coding style fix.
18829         (check_pow): Documentation comment.
18830         (check_log): Documenation comment. Coding style fix.
18831         (is_unnecessary_except_errno_call): Ditto.
18832         (gen_conditions_for_pow): Ditto.
18833         (gen_conditions_for_log): Ditto.
18834         (gen_shrink_wrap_conditions): Ditto.
18835         (shrink_wrap_one_built_in_calls): Ditto.
18836         * gcc/doc/invoke.texi: Better documentation string.
18837         * ChangeLog: Fix wrong change log entries from
18838         May 17 checkin on function call DCE.
18839
18840 2008-05-17  Kaz Kojima  <kkojima@gcc.gnu.org>
18841
18842         * config/sh/sh.c (sh_output_mi_thunk): Update the use of init_flow.
18843
18844 2008-05-17  Kenneth Zadeck <zadeck@naturalbridge.com>
18845
18846         * doc/rtl.texi (RTL_CONST_CALL_P, RTL_PURE_CALL_P): Fixed typos.
18847         * df-problems.c (simulation routines): Fixed block comment to
18848         properly say how to add forwards scanning functions.
18849
18850 2008-05-17  Eric Botcazou  <ebotcazou@adacore.com>
18851
18852         * tree-inline.c (setup_one_parameter): Remove dead code.
18853
18854 2008-05-17  Eric Botcazou  <ebotcazou@adacore.com>
18855
18856         * fold-const.c (fold_unary) <CASE_CONVERT>: Fold the cast into
18857         a BIT_AND_EXPR only for an INTEGER_TYPE.
18858
18859 2008-05-17 Xinliang David Li   <davidxl@google.com>
18860
18861         * gcc/tree-ssa-dce.c (cond_dead_built_in_calls): New static variable.
18862         (check_pow, check_log, is_unnecessary_except_errno_call): New
18863         functions to check for eliminating math functions that are pure
18864         except for setting errno.
18865         (gen_conditions_for_pow, gen_conditionas_for_log): New functions to
18866         general condition expressions for shrink-wrapping pow/log calls.
18867         (gen_shrink_wrap_conditions): Ditto.
18868         (shrink_wrap_one_built_in_call): Ditto.
18869         (shrink_wrap_conditional_dead_built_in_calls): Ditto.
18870         (mark_operand_necessary): If debugging, output if OP is necessary.
18871         (eliminate_unnecessary_stmts): Eliminate pow, log calls that are
18872         unnecessary.
18873         * gcc/opts.c (decode_options): set flag_tree_builtin_dce to 1 when
18874         opt level >= 2.
18875         * gcc/common.opt: New user flag -ftree-builtin-dce.
18876         * gcc/doc/invoke.texi (-ftree-builtin-dce): New option.
18877
18878 2008-05-16  David S. Miller  <davem@davemloft.net>
18879
18880         * config/sparc/linux.h (NO_PROFILE_COUNTERS): Undef before overriding.
18881         * config/sparc/linux64.h (NO_PROFILE_COUNTERS): Likewise.
18882
18883 2008-05-16  Uros Bizjak  <ubizjak@gmail.com>
18884
18885         PR target/36246
18886         * config/i386/i386.h (SECONDARY_MEMORY_NEEDED_MODE): New define.
18887
18888 2008-05-16  Kenneth Zadeck <zadeck@naturalbridge.com>
18889
18890         * ifcvt.c (dead_or_predicable): Rename
18891         df_simulate_one_insn_backwards to df_simulate_one_insn.
18892         * recog.c (peephole2_optimize): Ditto.
18893         * rtl-factoring.c (collect_pattern_seqs, clear_regs_live_in_seq):
18894         Ditto.
18895         * df.h: Rename df_simulate_one_insn_backwards to
18896         df_simulate_one_insn.  and delete df_simulate_one_insn_forwards.
18897         * df-problems.c (df_simulate_artificial_refs_at_top) Reversed
18898         scanning of defs and uses.
18899         (df_simulate_one_insn_backwards): Renamed to df_simulate_one_insn.
18900         (df_simulate_one_insn_forwards): Removed.
18901
18902 2008-05-16  Doug Kwan  <dougkwan@google.com>
18903
18904         * real.c (real_to_decimal, real_to_hexadecimal): Distinguish
18905         QNaN & SNaN.
18906         (real_from_string): Handle NaNs and Inf as approriate.
18907
18908 2008-05-16  Nathan Froyd  <froydnj@codesourcery.com>
18909
18910         * doc/gty.texi (Source Files Containing Type Information): Note
18911         that headers should appear first in the gtfiles list.
18912
18913 2008-05-16  Kenneth Zadeck <zadeck@naturalbridge.com>
18914
18915         * tree.def (COND_EXEC): Properly documented this code.
18916
18917 2008-05-16  Diego Novillo  <dnovillo@google.com>
18918
18919         * dwarf2asm.c (dw2_assemble_integer): Clarify comment.
18920         * tree-nested.c (get_trampoline_type): Set DECL_CONTEXT for
18921         the new field.
18922
18923 2008-05-16  Kenneth Zadeck <zadeck@naturalbridge.com>
18924
18925         * tree-ssa-dse (max_stmt_uid): Removed.
18926         (get_stmt_uid, dse_possible_dead_store_p, dse_optimize_stmt,
18927         tree_ssa_dse): Encapsulate all uses of stmt_ann->uid.
18928         * tree-ssa-sccvn.c (compare_ops, init_scc_vn): Ditto.
18929         * function.h (cfun.last_stmt_uid): New field.
18930         * tree-flow-inline.h (set_gimple_stmt_uid, gimple_stmt_uid,
18931         gimple_stmt_max_uid, set_gimple_stmt_max_uid, inc_gimple_stmt_max_uid):
18932         New functions.
18933         * tree-dfa.c (renumber_gimple_stmt_uids): New function.
18934         (create_stmt_ann): Initialize the ann->uid field.
18935         * tree-ssa-pre.c (compute_avail): Encapsulate the stmt_ann->uid
18936         with new calls.
18937         * tree-flow.h (renumber_gimple_stmt_uids): New function.
18938
18939 2008-05-16  Nathan Froyd  <froydnj@codesourcery.com>
18940
18941         * tree-flow.h (init_empty_tree_cfg_for_function): Declare.
18942         * tree-cfg.c (init_empty_tree_cfg_for_function): Define.
18943         (init_empty_tree_cfg): Call it.
18944
18945 2008-05-16  Kenneth Zadeck <zadeck@naturalbridge.com>
18946
18947         * cfg.c (init_flow): Add argument THE_FUN.  Use it instead of cfun.
18948         Update all users.
18949
18950 2008-05-16  Kenneth Zadeck <zadeck@naturalbridge.com>
18951
18952         * doc/invoke.text (-fdump-tree-*-verbose): New option.
18953         * tree-dump.c (dump_options): New verbose option.
18954         * tree-pretty-print.c (dump_phi_nodes, dump_generic_bb_buff):
18955         Add verbose dump.
18956         * tree-pass.h (TDF_VERBOSE): New dump flag.
18957         * print-tree.c (print_node): Added code to be able to print PHI_NODES.
18958         (tree-flow.h): Added include.
18959         * Makefile.in (print-tree.o):  Added TREE_FLOW_H.
18960
18961 2008-05-16  Bernd Schmidt  <bernd.schmidt@analog.com>
18962
18963         * config/bfin/bfin.c (bfin_discover_loops): Delete empty loops.
18964
18965         From Jie Zhang  <jie.zhang@analog.com>
18966         * config/bfin/t-bfin-elf (MULTILIB_OPTIONS, MULTILIB_DIRNAMES,
18967         MULTILIB_MATCHES, MULTILIB_EXCEPTIONS): Remove mcpu=bf532-0.3,
18968         mcpu=bf561-none and mcpu=bf561-0.2.
18969         * config/bfin/t-bfin-uclinux (MULTILIB_OPTIONS, MULTILIB_DIRNAMES,
18970         MULTILIB_MATCHES, MULTILIB_EXCEPTIONS): Likewise.
18971         * config/bfin/t-bfin-linux (MULTILIB_OPTIONS, MULTILIB_DIRNAMES,
18972         MULTILIB_MATCHES, MULTILIB_EXCEPTIONS): Likewise.
18973         * config/bfin/bfin-protos.h (enum bfin_cpu_type): Add BFIN_CPU_UNKNOWN.
18974         * config/bfin/elf.h (STARTFILE_SPEC): Use specific CRT for BF561.
18975         (LIB_SPEC): Use proper linker script for bf561.  Error if no mcpu
18976         option.
18977         * config/bfin/bfin.c (bfin_cpu_type): Set to BFIN_CPU_UNKNOWN.
18978         (cputype_selected): Remove.
18979         (bfin_handle_option): Don't use cputype_selected.
18980         (override_options): When no mcpu option, enable all workarounds.
18981         Don't use bfin_workarounds.
18982         * config/bfin/bfin.h (DRIVER_SELF_SPECS): Don't set default
18983         processor type.
18984         (DEFAULT_CPU_TYPE): Don't define.
18985
18986 2008-05-16  Richard Guenther  <rguenther@suse.de>
18987
18988         * tree-ssa-propagate.c (substitute_and_fold): Fix stmt walking
18989         on deletion of the last stmt.
18990
18991 2008-05-15  H.J. Lu  <hongjiu.lu@intel.com>
18992
18993         * config/i386/i386.c (ix86_expand_vector_init_general): Optimize
18994         V8HImode for SSE2 and V16QImode for SSE4.1.
18995
18996 2008-05-15  Kenneth Zadeck <zadeck@naturalbridge.com>
18997
18998         * cgraph.h (compute_inline_parameters): Made public.
18999         * tree-pass.h (ipa_opt_pass): Removed function_generate_summary,
19000         variable_generate_summary, function_write_summary,
19001         variable_write_summary, variable_read_summary.  Added generate_summary,
19002         write_summary, read_summary.
19003         * cgraphunit.c (cgraph_process_new_functions): Changed call from
19004         pass_ipa_inline.function_generate_summary, to
19005         compute_inline_parameters.
19006         * ipa-inline.c (compute_inline_parameters): Made public and added
19007         node parameter.
19008         (compute_inline_parameters_for_current): New function.
19009         (pass_inline_param): Now calls compute_inline_parameters_for_current.
19010         (inline_generate_summary): Removed parameter and made to loop over
19011         all cgraph nodes.
19012         (pass_ipa_inline): Updated for new IPA_PASS structure.
19013         * passes.c (execute_ipa_summary_passes): Now is called once per
19014         pass rather than once per node*pass.
19015
19016 2008-05-15  Anatoly Sokolov <aesok@post.ru>
19017
19018         * config/avr/avr.c (avr_base_arch_macro, avr_have_movw_lpmx_p,
19019         avr_have_mul_p, avr_asm_only_p): Remove variables.
19020         (avr_override_options): Remove initialization of removed variables.
19021         (avr_file_start):  Convert removed variables to fields of
19022         'struct base_arch_s *avr_current_arch'.
19023         * config/avr/avr.h (TARGET_CPU_CPP_BUILTINS): (Ditto.).
19024         (AVR_HAVE_MUL): (Ditto.).
19025         (AVR_HAVE_MOVW): (Ditto.).
19026         (AVR_HAVE_LPMX): (Ditto.).
19027         (avr_base_arch_macro, avr_have_movw_lpmx_p, avr_have_mul_p,
19028         avr_asm_only_p): Remove declaration.
19029
19030 2008-05-15  Diego Novillo  <dnovillo@google.com>
19031
19032         * config/arm/arm.c (arm_return_in_memory): Fix return type.
19033         * config/arm/arm-protos.h (arm_return_in_memory): Likewise.
19034
19035 2008-05-15  Adam Nemet  <anemet@caviumnetworks.com>
19036
19037         PR middle-end/36194
19038         * combine.c (check_conversion): Rename back to check_promoted_subreg.
19039         Don't call record_truncated_value from here.
19040         (record_truncated_value): Turn it into a for_each_rtx callback.
19041         (record_truncated_values): New function.
19042         (combine_instructions): Call note_uses with record_truncated_values.
19043         Change name of check_conversion to check_promoted_subreg.
19044
19045 2008-05-15  Janis Johnson  <janis187@us.ibm.com>
19046
19047         * doc/sourcebuild.texi: Document support for torture tests.
19048
19049 2008-05-15  Uros Bizjak  <ubizjak@gmail.com>
19050
19051         * config/i386/sse.md (*vec_concatv2sf_sse4_1): Add "m" constraint
19052         to alternative 4 of operand 2.
19053
19054 2008-05-15  Richard Guenther  <rguenther@suse.de>
19055
19056         * tree-pass.h (current_pass): Declare.
19057         (get_pass_for_id): Likewise.
19058         * passes.c (passes_by_id, passes_by_id_size): New globals.
19059         (set_pass_for_id): New function.
19060         (get_pass_for_id): Likewise.
19061         (register_one_dump_file): Use set_pass_for_id to populate passes_by_id.
19062         (execute_function_todo): Flush per function statistics.
19063         * toplev.c (compile_file): Init statistics.
19064         (general_init): Do early statistics initialization.
19065         (finalize): Finish statistics.
19066         * statistics.h (statistics_early_init): Declare.
19067         (statistics_init): Likewise.
19068         (statistics_fini): Likewise.
19069         (statistics_fini_pass): Likewise.
19070         (statistics_counter_event): Likewise.
19071         (statistics_histogram_event): Likewise.
19072         * statistics.c: New file.
19073         * Makefile.in (OBJS-common): Add statistics.o.
19074         (statistics.o): Add dependencies.
19075         * doc/invoke.texi (-fdump-statistics): Document.
19076
19077         * tree-ssa-pre.c (compute_antic): Use statistics_histogram_event.
19078         (insert): Likewise.
19079         (execute_pre): Use statistics_counter_event.
19080         * tree-ssa-propagate.c (struct prop_stats_d): Add num_dce field.
19081         (substitute_and_fold): Increment it.  Use statistics_counter_event.
19082
19083 2008-05-15  Diego Novillo  <dnovillo@google.com>
19084
19085         http://gcc.gnu.org/ml/gcc-patches/2008-05/msg00893.html
19086
19087         * treestruct.def (TS_STRUCT_FIELD_TAG): Remove.
19088         * tree-ssa-alias.c (new_type_alias): Remove references to
19089         sub-variables from comment.
19090         * tree-ssa-operands.c (swap_tree_operands): Likewise.
19091
19092 2008-05-15  H.J. Lu  <hongjiu.lu@intel.com>
19093
19094         * config/i386/sse.md (*vec_concatv2sf_sse4_1): Set prefix_extra
19095         attribute to 1 only for insertps alternative.
19096
19097 2008-05-15  Bernd Schmidt  <bernd.schmidt@analog.com>
19098
19099         * config/bfin/bfin.md (loadbytes): New pattern.
19100         * config/bfin/bfin.c (enum bfin_builtins): Add BFIN_BUILTIN_LOADBYTES.
19101         (bfin_init_builtins): Initialize it.
19102         (bdesc_1arg): Add it.
19103
19104 2008-05-15  Sa Liu  <saliu@de.ibm.com>
19105
19106         * testsuite/gfortran.dg/c_kind_int128_test1.f03: New.
19107         * testsuite/gfortran.dg/c_kind_int128_test2.f03: New.
19108         * testsuite/lib/target-supports.exp: Add
19109         check_effective_target_fortran_integer_16.
19110
19111 2008-05-15  Bernd Schmidt  <bernd.schmidt@analog.com>
19112
19113         * config/bfin/bfin.h (TARGET_RETURN_IN_MEMORY): Don't define here.
19114         * config/bfin/bfin-protos.h (bfin_return_in_memory): Don't declare.
19115         * config/bfin/bfin.c (bfin_return_in_memory): Now static.  Return bool.
19116         (TARGET_RETURN_IN_MEMORY): Define.
19117
19118 2008-05-15  Richard Guenther  <rguenther@suse.de>
19119
19120         PR middle-end/36244
19121         * tree-ssa-alias.c (new_type_alias): Do not set TREE_READONLY.
19122         * tree-flow-inline.h (unmodifiable_var_p): Memory tags never
19123         represent unmodifiable vars.
19124
19125 2008-05-15  Richard Guenther  <rguenther@suse.de>
19126
19127         * tree-dfa.c (refs_may_alias_p): Allow all kinds of
19128         INDIRECT_REF and TARGET_MEM_REF.
19129         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Handle
19130         TARGET_MEM_REF.
19131
19132 2008-05-15  Uros Bizjak  <ubizjak@gmail.com>
19133             H.J. Lu  <hongjiu.lu@intel.com>
19134
19135         * config/i386/sse.md (*vec_concatv2sf_sse4_1): New insn pattern.
19136         (*vec_concatv2si_sse4_1): Use vector_move_operand predicate
19137         for operand 2.  Remove pinsr{q,d} with 0x0 immediate operand from
19138         insn alternatives.  Add missing alternatives.
19139         (*vec_concatv2di_rex64_sse4_1): Likewise.
19140         (*vec_concatv2si_sse2): Use "x" register constraint instead of "Y2".
19141         (*vec_concatv2di_rex64_sse): Rename from *vec_concatv2di_rex64.
19142         Require TARGET_SSE.
19143
19144 2008-05-15  Richard Guenther  <rguenther@suse.de>
19145
19146         PR tree-optimization/36009
19147         PR tree-optimization/36204
19148         * tree-ssa-loop-im.c (tree-ssa-propagate.h): Include.
19149         (determine_invariantness_stmt): Record the loop a store is
19150         always executed in.
19151         * Makefile.in (tree-ssa-loop-im.o): Add tree-ssa-propagate.h
19152         dependency.
19153
19154 2008-05-15  Richard Guenther  <rguenther@suse.de>
19155
19156         PR tree-optimization/34330
19157         * tree-ssa-alias.c (get_smt_for): Only assert that accesses
19158         through the pointer will alias the SMT.
19159
19160 2008-05-14  Andreas Tobler  <a.tobler@schweiz.org>
19161
19162         * config/sparc/sparc.h (NO_PROFILE_COUNTERS): Define as 0.
19163
19164 2008-05-14  H.J. Lu  <hongjiu.lu@intel.com>
19165
19166         * config/i386/sse.md (*sse4_1_pinsrq): Make it 64bit only.
19167
19168 2008-05-14  Michael Meissner  <michael.meissner@amd.com>
19169             Dwarakanath Rajagopal  <dwarak.rajagopal@amd.com>
19170
19171         * optabs.h (optab_index): Add OTI_vashl, OTI_vlshr, OTI_vashr,
19172         OTI_vrotl, OTI_vrotr to support vector/vector shifts.
19173         (vashl_optab): New optab for vector/vector shifts.
19174         (vashr_optab): Ditto.
19175         (vlshr_optab): Ditto.
19176         (vrotl_optab): Ditto.
19177         (vrotr_optab): Ditto.
19178         (optab_subtype): New enum for optab_for_tree_code call.
19179         (optab_for_tree_code): Add enum optab_subtype argument.
19180
19181         * optabs.c (optab_for_tree_code): Take an additional argument to
19182         distinguish between a vector shift by a scalar and vector shift by
19183         a vector.  Make lshr/ashr/ashl/rotl/rotr optabs just vector
19184         shifted by a scalar.  Use vlshr/vashr/vashl/vrotl/vrotr for the
19185         vector shift by a vector.
19186         (expand_widen_pattern_expr): Pass additional argument to
19187         optab_for_tree_code.
19188
19189         * genopinit.c (optabs): Add vashr_optab, vashl_optab, vlshr_optab,
19190         vrotl_optab, vrotr_optab.
19191
19192         * expr.c (expand_expr_real_1): Update calls to
19193         optab_for_tree_code to distinguish between vector shifted by a
19194         scalar and vector shifted by a vector.
19195         * tree-vectorizer.c (supportable_widening_operation): Ditto.
19196         (supportable_narrowing_operation): Ditto.
19197         * tree-vect-analyze.c (vect_build_slp_tree): Ditto.
19198         * tree-vect-patterns.c (vect_pattern_recog_1): Ditto.
19199         * tree-vect-transform.c (vect_model_reduction_cost): Ditto.
19200         (vect_create_epilog_for_reduction): Ditto.
19201         (vectorizable_reduction): Ditto.
19202         (vectorizable_operation): Ditto.
19203         (vect_strided_store_supported): Ditto.
19204         (vect_strided_load_supported): Ditto.
19205         * tree-vect-generic.c (expand_vector_operations_1): Ditto.
19206         * expmed.c (expand_shift): Ditto.
19207
19208         * doc/md.texi (ashl@var{m}3): Document that operand 2 is always a
19209         scalar type.
19210         (ashr@var{m}3): Ditto.
19211         (vashl@var{m}3): Document new vector/vector shift standard name.
19212         (vashr@var{m}3): Ditto.
19213         (vlshr@var{m}3): Ditto.
19214         (vrotl@var{m}3): Ditto.
19215         (vrotr@var{m}3): Ditto.
19216
19217         * config/i386/i386.md (PPERM_SRC): Move PPERM masks here from i386.c.
19218         (PPERM_INVERT): Ditto.
19219         (PPERM_REVERSE): Ditto.
19220         (PPERM_REV_INV): Ditto.
19221         (PPERM_ZERO): Ditto.
19222         (PPERM_ONES): Ditto.
19223         (PPERM_SIGN): Ditto.
19224         (PPERM_INV_SIGN): Ditto.
19225         (PPERM_SRC1): Ditto.
19226         (PPERM_SRC2): Ditto.
19227
19228         * config/i386/sse.md (mulv2di3): Add SSE5 support.
19229         (sse5_pmacsdql_mem): New SSE5 define_and_split that temporarily
19230         allows a memory operand to be the value being added, and split it
19231         to improve vectorization.
19232         (sse5_pmacsdqh_mem): Ditto.
19233         (sse5_mulv2div2di3_low): SSE5 32-bit multiply and extend function.
19234         (sse5_mulv2div2di3_high): Ditto.
19235         (vec_pack_trunc_v8hi): Add SSE5 pperm support.
19236         (vec_pack_trunc_v4si): Ditto.
19237         (vec_pack_trunc_v2di): Ditto.
19238         (sse5_pcmov_<mode>): Remove code that tried to use use
19239         andps/andnps instead of pcmov.
19240         (vec_widen_smult_hi_v4si): If we have SSE5, use the pmacsdql and
19241         pmacsdqh instructions.
19242         (vec_widen_smult_lo_v4si): Ditto.
19243
19244         * config/i386/i386.c (PPERM_SRC): Move PPERM masks to i386.md.
19245         (PPERM_INVERT): Ditto.
19246         (PPERM_REVERSE): Ditto.
19247         (PPERM_REV_INV): Ditto.
19248         (PPERM_ZERO): Ditto.
19249         (PPERM_ONES): Ditto.
19250         (PPERM_SIGN): Ditto.
19251         (PPERM_INV_SIGN): Ditto.
19252         (PPERM_SRC1): Ditto.
19253         (PPERM_SRC2): Ditto.
19254         (ix86_expand_sse_movcc): Move the SSE5 test after the if
19255         true/false tests.
19256         (ix86_expand_int_vcond): If SSE5 generate all possible integer
19257         comparisons.
19258         (ix86_sse5_valid_op_p): Allow num_memory to be negative, which
19259         says ignore whether the last reference is a memory operand.
19260
19261 2008-05-14  Michael Meissner  <michael.meissner@amd.com>
19262             Paolo Bonzini <bonzini at gnu dot org>
19263
19264         * config/rs6000/rs6000.c (bdesc_2arg): Change the names of vector
19265         shift patterns.
19266
19267         * config/rs6000/altivec.md (vashl<mode>3): Rename from ashl<mode>3.
19268         (vlshr<mode>3): Rename from vlshr<mode>3.
19269         (vashr<mode>3): Rename from vashr<mode>3.
19270         (mulv4sf3): Change the names of vector shift patterns.
19271         (mulv4si3): Ditto.
19272         (negv4sf2): Ditt.
19273
19274         * config/spu/spu.c (spu_initialize_trampoline): Rename vector
19275         shift insns.
19276
19277         * config/spu/spu-builtins.def (SI_SHLH): Rename vector shift insns.
19278         (SI_SHLHI): Ditto.
19279         (SI_SHL): Ditto.
19280         (SI_SHLI): Ditto.
19281         (SI_ROTH): Ditto.
19282         (SI_ROTHI): Ditto.
19283         (SI_ROT): Ditto.
19284         (SI_ROTI): Ditto.
19285         (SPU_RL_0): Ditto.
19286         (SPU_RL_1): Ditto.
19287         (SPU_RL_2): Ditto.
19288         (SPU_RL_3): Ditto.
19289         (SPU_RL_4): Ditto.
19290         (SPU_RL_5): Ditto.
19291         (SPU_RL_6): Ditto.
19292         (SPU_RL_7): Ditto.
19293         (SPU_SL_0): Ditto.
19294         (SPU_SL_1): Ditto.
19295         (SPU_SL_2): Ditto.
19296         (SPU_SL_3): Ditto.
19297         (SPU_SL_4): Ditto.
19298         (SPU_SL_5): Ditto.
19299         (SPU_SL_6): Ditto.
19300         (SPU_SL_7): Ditto.
19301
19302         * config/spu/spu.md (v): New iterator macro to add v for vector types.
19303         (floatunssidf2_internal): Change vector/vector shift names.
19304         (floatunsdidf2_internal): Ditto.
19305         (mulv8hi3): Ditto.
19306         (ashrdi3): Ditto.
19307         (ashrti3): Ditto.
19308         (cgt_df): Ditto.
19309         (cgt_v2df): Ditto.
19310         (dftsv): Ditto.
19311         (vashl<mode>3): Rename from ashl<mode>3.
19312         (vashr<mode>3): Rename from ashr<mode>3.
19313         (vlshr<mode>3): Rename from lshr<mode>3.
19314         (vrotl<mode>3): Rename from rotl<mode>3.
19315
19316 2008-05-14  Michael Meissner  <michael.meissner@amd.com>
19317
19318         PR target/36224
19319         * config/i386/sse.md (vec_widen_smult_hi_v4si): Delete, using unsigned
19320         multiply gives the wrong value when doing widening multiplies.
19321         (vec_widen_smult_lo_v4si): Ditto.
19322
19323 2008-05-14  Kenneth Zadeck <zadeck@naturalbridge.com>
19324
19325         * optabs.c (prepare_cmp_insn): Changed LCT_PURE_MAKE_BLOCK to
19326         LCT_PURE and LCT_CONST_MAKE_BLOCK to LCT_CONST in calls to
19327         emit_library_call_value.
19328         * builtins.c (expand_builtin_powi, expand_builtin_memcmp): Ditto.
19329         * tree.h (ECF_LIBCALL_BLOCK): Removed.
19330         * calls.c (initialize_argument_information, precompute_arguments,
19331         expand_call, emit_library_call_value_1): Remove ECF_LIBCALL_BLOCK.
19332         (precompute_arguments): Removed flags parameter.
19333         * rtl.h (LCT_CONST_MAKE_BLOCK, LCT_PURE_MAKE_BLOCK): Removed.
19334
19335 2008-05-14  Richard Guenther  <rguenther@suse.de>
19336
19337         * tree-ssa-dse.c (dse_possible_dead_store_p): Remove dead code.
19338         Make sure to register the store if the use is a PHI_NODE.
19339
19340 2008-05-14  Olivier Hainque  <hainque@adacore.com>
19341
19342         * expr.c (expand_expr_real_1) <normal_inner_ref>: Force op0 to
19343         memory if the component is to be referenced in BLKmode according
19344         to get_inner_reference.
19345
19346 2008-05-14  Adam Nemet  <anemet@caviumnetworks.com>
19347
19348         * calls.c (emit_library_call_value_1): Restore code clearing
19349         ECF_LIBCALL_BLOCK to ensure that we only call end_sequence once.
19350
19351 2008-05-14  Olivier Hainque  <hainque@adacore.com>
19352             Nicolas Roche  <roche@adacore.com>
19353
19354         * configure.ac: Add support for a "gcc_subdir" variable in
19355         config-lang.in, to denote a subdirectory where the language/GCC
19356         integration files are to be found.
19357         * configure: Regenerate.
19358
19359 2008-05-14  Ira Rosen  <irar@il.ibm.com>
19360
19361         PR tree-optimization/36098
19362         * tree-vect-analyze.c (vect_analyze_group_access): Set the gap
19363         value for the first load in the group in case of a gap.
19364         (vect_build_slp_tree): Check that there are no gaps in loads.
19365
19366 2008-05-14  Kenneth Zadeck <zadeck@naturalbridge.com>
19367
19368         * doc/rtl.texi: Removed reference to REG_NO_CONFLICT notes.
19369         * optabs.c (expand_binop, expand_absneg_bit, expand_unop,
19370         expand_copysign_bit): Change call to emit_no_conflict_block to
19371         emit_insn and remove unneeded code to construct extra args.
19372         (emit_no_conflict_block): Removed.
19373         * optabls.h: (emit_no_conflict_block): Removed.
19374         * cse.c (cse_extended_basic_block): Remove search for
19375         REG_NO_CONFLICT note.
19376         * global.c: Removed incorrect comment added in revision 117.
19377         * expr.c (convert_move): Change call to emit_no_conflict_block to
19378         emit_insn.
19379         * recog.c: Change comments so that they do not mention
19380         REG_NO_CONFLICT.
19381         * local_alloc.c (combine_regs): Removed last parameter.
19382         (no_conflict_p): Removed.
19383         (block_alloc): Removed note, no_conflict_combined_regno and set
19384         local vars. Removed all code to process REG_NO_CONFLICT blocks.
19385         (combine_regs): Removed already_dead and code to look for
19386         REG_NO_CONFLICT notes.
19387         * lower_subreg (remove_retval_note): Removed code to look for
19388         REG_NO_CONFLICT block.
19389         (resolve_reg_notes): Removed REG_NO_CONFLICT case.
19390         (resolve_clobber): Remove code to process libcalls that have
19391         REG_NO_CONFLICT notes.
19392         * loop_invariant.c (find_invariant_insn): Removed REG_NO_CONFLICT
19393         case.
19394         * combine.c (can_combine_p, distribute_notes):  Removed
19395         REG_NO_CONFLICT case.
19396         * config/cris/cris.md (movdi pattern): Changed emit_no_conflict_block
19397         to emit_insns.
19398         * config/mn10300/mn10300.md (absdf2, negdf2 patterns): Ditto.
19399         * config/m68k/m68k.md (negdf2, negxf2, absdf2, absxf2 patterns):
19400         Ditto.
19401         * reg-notes.def (NO_CONFLICT): Removed.
19402
19403 2008-05-14  David S. Miller  <davem@davemloft.net>
19404
19405         * config/sparc/sparc.c (sparc_profile_hook): If
19406         NO_PROFILE_COUNTERS, don't generate and pass a label into mcount.
19407         * config/sparc/linux.h (NO_PROFILE_COUNTERS): Define as 1.
19408         * config/sparc/linux64.h (NO_PROFILE_COUNTERS): Likewise.
19409
19410 2008-05-14  Andreas Krebbel  <krebbel1@de.ibm.com>
19411
19412         * cse.c (cse_cc_succs): Invoke delete_insn_and_edges.
19413
19414 2008-05-13  Uros Bizjak  <ubizjak@gmail.com>
19415
19416         PR target/36222
19417         * config/i386/i386.c (ix86_expand_vector_init_general): Rearrange op0
19418         and op1 expansion before vector concat to have less live pseudos.
19419
19420 2008-05-13  H.J. Lu  <hongjiu.lu@intel.com>
19421
19422         * config/i386/i386.c (ix86_expand_vector_init_one_nonzero): Use
19423         ix86_expand_vector_set if supported.
19424
19425 2008-05-13  Diego Novillo  <dnovillo@google.com>
19426             Kenneth Zadeck  <zadeck@naturalbridge.com>
19427
19428         http://gcc.gnu.org/ml/gcc-patches/2008-05/msg00748.html
19429
19430         * tree.h (init_phinodes, fini_phinodes, release_phi_node,
19431         phinodes_print_statistics, init_ssanames, fini_ssanames,
19432         make_ssa_name, duplicate_ssa_name, duplicate_ssa_name_ptr_info,
19433         release_ssa_name, release_defs, replace_ssa_name_symbol,
19434         ssanames_print_statistics): Move ...
19435         * tree-flow.h: ... here.
19436         * tree-ssanames.c (init_ssanames): Add arguments FN and SIZE.
19437         Use FN instead of cfun.
19438         (make_ssa_name_fn): Rename from make_ssa_name.
19439         (pass_release_ssa_names): Add TODO_dump_func to finish flags.
19440         * tree-flow-inline.h (make_ssa_name): Move from
19441         tree-ssanames.c.  Convert to static inline.  Call make_ssa_name_fn.
19442         * omp-low.c (expand_omp_parallel):
19443         * tree-flow-inline.h (redirect_edge_var_map_result):
19444         * tree-ssa.c (init_tree_ssa): Add argument FN.
19445         Use it instead of cfun.  Update all users.
19446
19447 2008-05-13  Tom Tromey  <tromey@redhat.com>
19448
19449         PR preprocessor/22168:
19450         * doc/cpp.texi (Top): Update menu.
19451         (Alternatives to Wrapper #ifndef): New node.
19452         (Other Directives): Document deprecation.
19453         (Obsolete Features): Remove menu.
19454         (Assertions): Merge node into Obsolete Features.
19455         (Obsolete once-only headers): Move earlier; rename to Alternatives
19456         to Wrapper #ifndef.
19457         * doc/cppopts.texi: Update.
19458         * c.opt (Wdeprecated): Enable for C and ObjC.
19459         * doc/invoke.texi (Option Summary): Move -Wno-deprecated.
19460         (C++ Dialect Options): Move -Wno-deprecated from here to...
19461         (Warning Options): ... here.
19462
19463 2008-05-13  Richard Guenther  <rguenther@suse.de>
19464
19465         PR middle-end/36227
19466         * fold-const.c (fold_sign_changed_comparison): Do not allow
19467         changes in pointer-ness.
19468
19469 2008-05-12  Kaz Kojima  <kkojima@gcc.gnu.org>
19470
19471         PR target/24713
19472         * config/sh/sh.c (sh_expand_prologue): Don't clear
19473         RTX_FRAME_RELATED_P for push insns.
19474
19475 2008-05-12  Andy Hutchinson  <hutchinsonandy@aim.com>
19476
19477         * config/avr/avr.h (MAX_OFILE_ALIGNMENT): Define.
19478
19479 2008-05-12  Anatoly Sokolov <aesok@post.ru>
19480
19481         * config/avr/avr.h (machine_function): Add 'is_leaf' field.
19482         * config/avr/avr.c (avr_regs_to_save): Compute 'machine->is_leaf'.
19483         Use 'machine->is_leaf' instead of 'leaf_func_p'.
19484
19485 2008-05-12  H.J. Lu  <hongjiu.lu@intel.com>
19486
19487         * config/i386/sse.md (*sse_concatv4sf): Renamed to ...
19488         (*vec_concatv4sf_sse): This.
19489         (*sse2_concatv2si): Renamed to ...
19490         (*vec_concatv2si_sse2): This.
19491         (*sse1_concatv2si): Renamed to ...
19492         (*vec_concatv2si_sse): This.
19493         (*vec_concatv2di_rex): Renamed to ...
19494         (*vec_concatv2di_rex64): This.
19495         (*vec_concatv2si_sse4_1): New.
19496         (*vec_concatv2di_rex64_sse4_1): Likewise.
19497
19498 2008-05-12  Uros Bizjak  <ubizjak@gmail.com>
19499
19500         PR rtl-optimization/36111
19501         * recog.c (validate_replace_rtx_1): Unshare new RTL expression
19502         that was created for swappable operands.
19503
19504 2008-05-12  Samuel Tardieu  <sam@rfc1149.net>
19505
19506         PR ada/36001
19507         * Makefile.in: Substitute GNATMAKE and GNATBIND.
19508         * configure.ac: Add call to ACX_PROG_GNAT.
19509
19510 2008-05-11  Volker Reichelt  <v.reichelt@netcologne.de>
19511
19512         * optc-gen.awk: Fix comment typo.
19513
19514 2008-05-11  Aaron W. LaFramboise  <aaronavay62@aaronwl.com>
19515
19516         * pretty-print.c (pp_integer_with_precision): Use
19517         HOST_LONG_LONG_FORMAT.
19518
19519 2008-05-10  Kenneth Zadeck  <zadeck@naturalbridge.com>
19520
19521         * gcse.c (store_killed_in_insn): Negated call to RTL_CONST_CALL_P.
19522
19523 2008-05-10  H.J. Lu  <hongjiu.lu@intel.com>
19524
19525         * config/i386/i386.c (bdesc_ptest): Removed.
19526         (ix86_builtin_type): Add INT_FTYPE_V2DI_V2DI_PTEST.
19527         (bdesc_args): Add __builtin_ia32_ptestz128,
19528         __builtin_ia32_ptestc128 and __builtin_ia32_ptestnzc128.
19529         (ix86_init_mmx_sse_builtins): Updated.
19530         (ix86_expand_args_builtin): Handle INT_FTYPE_V2DI_V2DI_PTEST.
19531         (ix86_expand_builtin): Updated.
19532
19533 2008-05-10  Richard Sandiford  <rdsandiford@googlemail.com>
19534
19535         * tree-cfg.c (valid_fixed_convert_types_p): New function.
19536         (verify_gimple_expr): Handle FIXED_CONVERT_EXPR.
19537
19538 2008-05-10  Uros Bizjak  <ubizjak@gmail.com>
19539
19540         * value-prof.c (interesting_stringop_to_profile): Do not
19541         return early for BUILT_IN_MEMPCPY.
19542
19543 2008-05-09  H.J. Lu  <hongjiu.lu@intel.com>
19544
19545         * calls.c (expand_call): Don't use callgraph to increase
19546         preferred_stack_boundary.
19547
19548         * cgraph.h (cgraph_rtl_info): Use unsigned on
19549         preferred_incoming_stack_boundary.
19550
19551         * final.c (rest_of_clean_state): Use unsigned on
19552         preferred_stack_boundary.
19553
19554 2008-05-09  Tom Tromey  <tromey@redhat.com>
19555
19556         PR preprocessor/22231:
19557         * c-opts.c (sanitize_cpp_opts): Disallow -MG if compilation is
19558         proceeding.
19559
19560 2008-05-09  Uros Bizjak  <ubizjak@gmail.com>
19561
19562         PR tree-optimization/36129
19563         * tree-ssa-ccp.c: Include value-prof.h.
19564         (execute_fold_all_builtins): Call gimple_remove_stmt_histograms if
19565         built-in function was folded to a constant.
19566         * Makefile.in (tree-ssa-ccp.c): Depend on value-prof.h
19567
19568 2008-05-09  Jan Sjodin  <jan.sjodin@amd.com>
19569             Sebastian Pop  <sebastian.pop@amd.com>
19570
19571         * tree-scalar-evolution.c: Document instantiate_scev.
19572         (instantiate_parameters_1): Renamed instantiate_scev_1.
19573         Don't use the same loop for instantiation_loop and evolution_loop.
19574         (instantiate_scev): New.
19575         (instantiate_parameters): Moved...
19576         (resolve_mixers): Update call to instantiate_scev_1 to pass the
19577         same loop twice.  Maintains the semantics for this function.
19578         * tree-scalar-evolution.h (instantiate_scev): Declare.
19579         (instantiate_parameters): ...here.  Now static inline.
19580         * tree-data-ref.c (dr_analyze_indices): Call instantiate_scev
19581         instead of resolve_mixers.
19582
19583 2008-05-09  Maxim Kuvyrkov  <maxim@codesourcery.com>
19584
19585         * rtl-factoring.c (collect_pattern_seqs): Fix typo.
19586
19587 2008-05-09  Tomas Bily  <tbily@suse.cz>
19588
19589         * config/pa/pa.c (reloc_needed): Use CASE_CONVERT.
19590         * tree-cfg.c (verify_expr, verify_gimple_expr): Likewise.
19591         * tree-ssa-structalias.c (get_constraint_for): Likewise.
19592         * c-common.c (c_common_truthvalue_conversion): Likewise.
19593         * tree-object-size.c (compute_object_offset): Likewise.
19594         * tree-inline.c (estimate_num_insns_1): Likewise.
19595         * varasm.c (const_hash_1, compare_constant, copy_constant)
19596         (compute_reloc_for_constant, output_addressed_constants)
19597         (initializer_constant_valid_p): Likewise.
19598         * c-omp.c (check_omp_for_incr_expr): Likewise.
19599         * gimplify.c (gimplify_expr): Likewise.
19600         * c-typeck.c (c_finish_return): Likewise.
19601         * tree-vectorizer.c (supportable_widening_operation)
19602         (supportable_narrowing_operation): Likewise.
19603         * c-pretty-print.c (pp_c_cast_expression, pp_c_expression): Likewise.
19604         * matrix-reorg.c (can_calculate_expr_before_stmt): Likewise.
19605         * expr.c (highest_pow2_factor, expand_expr_real_1): Likewise.
19606         * dwarf2out.c (loc_descriptor_from_tree_1, add_bound_info)
19607         (descr_info_loc): Likewise.
19608         * tree-ssa-loop-ivopts.c (may_be_nonaddressable_p): Likewise.
19609         * fold-const.c (operand_equal_p, make_range, extract_muldiv_1)
19610         (fold_unary): Likewise.
19611         * builtins.c (get_pointer_alignment): Likewise.
19612         * tree-scalar-evolution.c (interpret_rhs_modify_stmt)
19613         (instantiate_parameters_1): Likewise.
19614         * tree.c (expr_align, stabilize_reference): Likewise.
19615         * tree-pretty-print.c (dump_generic_node, op_prio): Likewise.
19616         * tree-ssa-loop-niter.c (derive_constant_upper_bound): Likewise.
19617         * convert.c (strip_float_extensions): Use CONVERT_EXPR_P.
19618         * tree-ssa-threadedge.c (simplify_control_stmt_condition): Likewise.
19619         * config/alpha/alpha.c (va_list_skip_additions): Likewise.
19620         * c-common.c (c_alignof_expr, check_function_arguments_recurse):
19621         Likewise.
19622         * tree-ssa.c (tree_ssa_useless_type_conversion): Likewise.
19623         * varasm.c (initializer_constant_valid_p, output_constant): Likewise.
19624         * tree-ssa-forwprop.c (get_prop_source_stmt, can_propagate_from)
19625         (forward_propagate_addr_expr_1, forward_propagate_addr_expr)
19626         (forward_propagate_comparison)
19627         (tree_ssa_forward_propagate_single_use_vars): Likewise.
19628         * cfgexpand.c (discover_nonconstant_array_refs_r): Likewise.
19629         * emit-rtl.c (component_ref_for_mem_expr)
19630         (set_mem_attributes_minus_bitpos): Likewise.
19631         * tree-ssa-phiopt.c (conditional_replacement): Likewise.
19632         * gimplify.c (gimplify_conversion, goa_lhs_expr_p, gimplify_expr):
19633         Likewise.
19634         * c-typeck.c (default_function_array_conversion, build_indirect_ref)
19635         (build_function_call, pointer_diff, build_compound_expr)
19636         (c_finish_return): Likewise.
19637         * tree-vect-analyze.c (vect_determine_vectorization_factor): Likewise.
19638         * matrix-reorg.c (get_inner_of_cast_expr, may_flatten_matrices_1):
19639         Likewise.
19640         * tree-ssa-ifcombine.c (recognize_single_bit_test): Likewise.
19641         * expr.c (is_aligning_offset): Likewise.
19642         * tree-ssa-alias.c (is_escape_site): Likewise.
19643         * tree-stdarg.c (va_list_counter_bump, check_va_list_escapes)
19644         (check_all_va_list_escapes): Likewise.
19645         * tree-ssa-loop-ivopts.c (determine_base_object)
19646         (determine_common_wider_type): Likewise.
19647         * dojump.c (do_jump): Likewise.
19648         * tree-ssa-sccvn.c (simplify_unary_expression): Likewise.
19649         * tree-gimple.c (is_gimple_cast): Likewise.
19650         * fold-const.c (decode_field_reference)
19651         (fold_sign_changed_comparison, fold_unary, fold_comparison)
19652         (fold_binary): Likewise.
19653         * tree-ssa-alias-warnings.c (find_alias_site_helper)
19654         (already_warned_in_frontend_p): Likewise.
19655         * builtins.c (get_memory_rtx, fold_builtin_next_arg): Likewise.
19656         * tree.c (really_constant_p, get_unwidened): Likewise.
19657         * tree-ssa-loop-niter.c (expand_simple_operations): Likewise.
19658         * tree-ssa-loop-im.c (rewrite_bittest): Likewise.
19659         * tree-vrp.c (register_edge_assert_for_2, register_edge_assert_for_1):
19660         Likewise.
19661         * tree.h (STRIP_NOPS, STRIP_SIGN_NOPS, STRIP_TYPE_NOPS): Use
19662         CONVERT_EXPR_P.
19663         (CONVERT_EXPR_P): Define.
19664         (CASE_CONVERT): Define.
19665
19666 2008-05-08  Kenneth Zadeck  <zadeck@naturalbridge.com>
19667
19668         PR middle-end/36117
19669         * dce.c (deletable_insn_p): Do not delete calls if df_in_progress.
19670         (delete_unmarked_insns): When deleting a call, call
19671         delete_unreachable_blocks.
19672         * rtl.texi (RTL_CONST_CALL_P, RTL_PURE_CALL_P,
19673         RTL_CONST_OR_PURE_CALL_P, RTL_LOOPING_CONST_OR_PURE_CALL_P): Fixed doc.
19674
19675 2008-05-08  Richard Guenther  <rguenther@suse.de>
19676
19677         * doc/invoke.texi (-fdump-tree-salias): Remove documentation.
19678         (-ftree-salias): Likewise.
19679         (salias-max-implicit-fields): Remove param documentation.
19680         (salias-max-array-elements): Likewise.
19681         * tree-pass.h (pass_create_structure_vars): Remove.
19682         * params.h (SALIAS_MAX_IMPLICIT_FIELDS): Remove.
19683         (SALIAS_MAX_ARRAY_ELEMENTS): Likewise.
19684         * tree-ssa-alias.c (create_structure_vars): Remove.
19685         (gate_structure_vars): Likewise.
19686         (pass_create_structure_vars): Likewise.
19687         (gate_build_alias): Likewise.
19688         (pass_build_alias): Adjust to run always and dump the function.
19689         * common.opt (ftree-salias): Hide.
19690         * passes.c (init_optimization_passes): Remove
19691         pass_create_structure_vars, adjust comment.
19692         * params.def (PARAM_SALIAS_MAX_IMPLICIT_FIELDS): Remove.
19693         (PARAM_SALIAS_MAX_ARRAY_ELEMENTS): Likewise.
19694         * opts.c (decode_options): Do not set flag_tree_salias.
19695         (common_handle_option): Add OPT_ftree_salias to the backward
19696         compatibility section.
19697
19698 2008-05-08  Richard Guenther  <rguenther@suse.de>
19699
19700         * tree-flow-inline.h (var_can_have_subvars): Move ...
19701         * tree-ssa-structalias.c (var_can_have_subvars): ... here.
19702         * tree-flow.h (var_can_have_subvars): Remove.
19703         (push_fields_onto_fieldstack): Remove.
19704         (sort_fieldstack): Likewise.
19705         (struct fieldoff): Move ...
19706         * tree-ssa-structalias.c (struct fieldoff): ... here.  Remove
19707         alias_set and base_for_components fields.
19708         (sort_fieldstack): Make static.
19709         (push_fields_onto_fieldstack): Likewise.  Remove code that
19710         handles anything but RECORD_TYPEs.  Remove alias_set and
19711         base_for_components handling.
19712         (create_variable_info_for): Adjust.
19713
19714 2008-05-08  Seongbae Park  <seongbae.park@gmail.com>
19715
19716         * common.opt (Wframe-larger-than=): Shorten the help message
19717         to one line.
19718         * doc/invoke.texi (Wframe-larger-than=): Add more description.
19719
19720 2008-05-08  Rafael Espíndola  <espindola@google.com>
19721
19722         * tree-complex.c (expand_complex_div_wide): Don't create CONDs that
19723         trap.
19724         * tree-gimple.c (is_gimple_condexpr): Check that the expression doesn't
19725         trap and that both operands are gimple values.
19726         (canonicalize_cond_expr_cond): Use is_gimple_condexpr.
19727         * gcc/tree-eh.c (tree_could_trap_p): Correctly detect if a comparison
19728         is a fp operation.
19729
19730 2008-05-08  Richard Sandiford  <rsandifo@nildram.co.uk>
19731
19732         * read-rtl.c (join_c_conditions): Return the first string if the
19733         two strings are equal.
19734
19735 2008-05-08  Richard Sandiford  <rsandifo@nildram.co.uk>
19736
19737         * gensupport.h (pred_data): Add a "num_codes" field.
19738         (add_predicate_code): Declare.
19739         * gensupport.c (add_predicate_code): New function.
19740         (std_pred_table): Add an "allows_const_p" field.
19741         (std_preds): Set this field for predicates that allow RTX_CONST_OBJs.
19742         Remove the (incomplete) list of such codes from the codes field.
19743         (init_predicate_table): Use add_predicate_code.  Add all
19744         RTX_CONST_OBJs if allows_const_p is true.
19745         * genrecog.c (process_define_predicate): Use add_predicate_code.
19746
19747 2008-05-08  David Daney  <ddaney@avtrex.com>
19748             Richard Sandiford  <rsandifo@nildram.co.uk>
19749
19750         * config/mips/mips.md (mips_expand_compare_and_swap_12): Handle
19751         special case of constant zero operands.
19752         * config/mips/mips.c (mips_expand_compare_and_swap_12): Zero extend
19753         old and new values.  Special case constant zero values.
19754         * config/mips/mips.h (MIPS_COMPARE_AND_SWAP): Skip 'sync' if compare
19755         fails.
19756         (MIPS_COMPARE_AND_SWAP_12): Handle constant zero operands.
19757         (MIPS_COMPARE_AND_SWAP_12_0): New macro.
19758
19759 2008-05-08  Paolo Bonzini  <bonzini@gnu.org>
19760
19761         PR target/36090
19762         * simplify-rtx.c (simplify_plus_minus): Create CONST of
19763         similar RTX_CONST_OBJ before CONST_INT.
19764
19765 2008-05-08  Steve Ellcey  <sje@cup.hp.com>
19766
19767         * stmt.c (expand_stack_restore): Change sa mode if needed.
19768
19769 2008-05-08  Richard Guenther  <rguenther@suse.de>
19770
19771         * config/i386/i386-protos.h (ix86_return_in_memory): Adjust
19772         return type to bool.
19773         (ix86_sol10_return_in_memory): Likewise.
19774         (ix86_i386elf_return_in_memory): Likewise.
19775         (ix86_i386interix_return_in_memory): Likewise.
19776         * config/i386/i386.c (ix86_return_in_memory): Likewise.
19777         (ix86_sol10_return_in_memory): Likewise.
19778         (ix86_i386elf_return_in_memory): Likewise.
19779         (ix86_i386interix_return_in_memory): Likewise.
19780
19781 2008-05-08  Kai Tietz  <kai.tietz@onevision.com>
19782
19783         PR bootstrap/36180
19784         * calls.c (compute_argument_block_size ): Add ATTRIBUTE_UNUSED to
19785         fndecl argument.
19786         (emit_library_call_value_1): Add ATTRIBUTE_UNUSED to variable fndecl.
19787         * target-def.h: Check that TARGET_RETURN_IN_MEMORY isn't
19788         declared in front.
19789
19790 2008-05-08  Richard Guenther  <rguenther@suse.de>
19791
19792         * tree-data-ref.c (dr_analyze_alias): Do not set DR_SUBVARS.
19793         * tree-data-ref.h (struct dr_alias): Remove subvars field.
19794         (DR_SUBVARS): Remove.
19795         * tree-dfa.c (dump_subvars_for): Remove.
19796         (debug_subvars_for): Likewise.
19797         (dump_variable): Do not dump subvars.
19798         (remove_referenced_var): Do not remove subvars.
19799         * tree-flow-inline.h (clear_call_clobbered): SFTs no longer exist.
19800         (lookup_subvars_for_var): Remove.
19801         (get_subvars_for_var): Likewise.
19802         (get_subvars_at): Likewise.
19803         (get_first_overlapping_subvar): Likewise.
19804         (overlap_subvar): Likewise.
19805         * tree-flow.h (subvar_t): Remove.
19806         (struct var_ann_d): Remove subvars field.
19807         * tree-ssa-alias.c (mark_aliases_call_clobbered): Remove queued
19808         argument.  Remove special handling of SFTs.
19809         (compute_tag_properties): Likewise.
19810         (set_initial_properties): Likewise.
19811         (compute_call_clobbered): Likewise.
19812         (count_mem_refs): Likewise.
19813         (compute_memory_partitions): Likewise.
19814         (compute_flow_insensitive_aliasing): Likewise.
19815         (setup_pointers_and_addressables): Likewise.
19816         (new_type_alias): Likewise.
19817         (struct used_part): Remove.
19818         (used_portions): Likewise.
19819         (struct used_part_map): Likewise.
19820         (used_part_map_eq): Likewise.
19821         (used_part_map_hash): Likewise.
19822         (free_used_part_map): Likewise.
19823         (up_lookup): Likewise.
19824         (up_insert): Likewise.
19825         (get_or_create_used_part_for): Likewise.
19826         (create_sft): Likewise.
19827         (create_overlap_variables_for): Likewise.
19828         (find_used_portions): Likewise.
19829         (create_structure_vars): Likewise.
19830         * tree.def (STRUCT_FIELD_TAG): Remove.
19831         * tree.h (MTAG_P): Adjust.
19832         (struct tree_memory_tag): Remove base_for_components and
19833         unpartitionable flags.
19834         (struct tree_struct_field_tag): Remove.
19835         (SFT_PARENT_VAR): Likewise.
19836         (SFT_OFFSET): Likewise.
19837         (SFT_SIZE): Likewise.
19838         (SFT_NONADDRESSABLE_P): Likewise.
19839         (SFT_ALIAS_SET): Likewise.
19840         (SFT_UNPARTITIONABLE_P): Likewise.
19841         (SFT_BASE_FOR_COMPONENTS_P): Likewise.
19842         (union tree_node): Remove sft field.
19843         * alias.c (get_alias_set): Remove special handling of SFTs.
19844         * print-tree.c (print_node): Remove handling of SFTs.
19845         * tree-dump.c (dequeue_and_dump): Likewise.
19846         * tree-into-ssa.c (mark_sym_for_renaming): Likewise.
19847         * tree-nrv.c (dest_safe_for_nrv_p): Remove special handling of SFTs.
19848         * tree-predcom.c (set_alias_info): Do not set subvars.
19849         * tree-pretty-print.c (dump_generic_node): Do not handle SFTs.
19850         * tree-ssa-loop-ivopts.c (get_ref_tag): Likewise.
19851         * tree-ssa-operands.c (access_can_touch_variable): Likewise.
19852         (add_vars_for_offset): Remove.
19853         (add_virtual_operand): Remove special handling of SFTs.
19854         (add_call_clobber_ops): Likewise.
19855         (add_call_read_ops): Likewise.
19856         (get_asm_expr_operands): Likewise.
19857         (get_modify_stmt_operands): Likewise.
19858         (get_expr_operands): Likewise.
19859         (add_to_addressable_set): Likewise.
19860         * tree-ssa.c (verify_ssa_name): Do not handle SFTs.
19861         * tree-tailcall.c (suitable_for_tail_opt_p): Likewise.
19862         * tree-vect-transform.c (vect_create_data_ref_ptr): Do not set subvars.
19863         * tree.c (init_ttree): Remove STRUCT_FIELD_TAG initialization.
19864         (tree_code_size): Remove STRUCT_FIELD_TAG handling.
19865         (tree_node_structure): Likewise.
19866         * tree-ssa-structalias.c (set_uids_in_ptset): Remove special
19867         handling of SFTs.
19868         (find_what_p_points_to): Likewise.
19869
19870 2008-05-08  Sa Liu  <saliu@de.ibm.com>
19871
19872         * config/spu/spu.md: Fixed subti3 pattern.
19873
19874 2008-05-08  Richard Guenther  <rguenther@suse.de>
19875
19876         PR middle-end/36154
19877         * tree-ssa-structalias.c (push_fields_onto_fieldstack): Make
19878         sure to create a representative for trailing arrays for PTA.
19879
19880 2008-05-08  Richard Guenther  <rguenther@suse.de>
19881
19882         PR middle-end/36172
19883         * fold-const.c (operand_equal_p): Two objects which types
19884         differ in pointerness are not equal.
19885
19886 2008-05-08  Kai Tietz  <kai.tietz@onevision.com>
19887
19888         * calls.c (compute_argument_block_size): Add argument tree fndecl.
19889         (OUTGOING_REG_PARM_STACK_SPACE): Add function type argument.
19890         (emit_library_call_value_1): Add new variable fndecl initialized by
19891         NULL_TREE. It should be the decl type of orgfun, but this information
19892         seems not to be available here, so it uses the default calling abi.
19893         * config/arm/arm.c (arm_return_in_memory): Add fntype argumen.
19894         * config/arm/arm.h (RETURN_IN_MEMORY): Replace RETURN_IN_MEMORY
19895         by TARGET_RETURN_IN_MEMORY.
19896         * config/i386/i386-interix.h: Likewise.
19897         * config/i386/i386.h: Likewise.
19898         * config/i386/i386elf.h: Likewise.
19899         * config/i386/ptx4-i.h: Likewise.
19900         * config/i386/sol2-10.h: Likewise.
19901         * config/i386/sysv4.h: Likewise.
19902         * config/i386/vx-common.h: Likewise.
19903         * config/cris/cris.h: Removed #if 0 clause.
19904         * config/arm/arm-protos.h (arm_return_in_memory): Add fntype argument.
19905         * config/i386/i386-protos.h (ix86_return_in_memory): Add fntype
19906         argument.
19907         (ix86_sol10_return_in_memory): Likewise.
19908         (ix86_i386elf_return_in_memory): New.
19909         (ix86_i386interix_return_in_memory): New.
19910         * config/mt/mt-protos.h (mt_return_in_memory): New.
19911         * config/mt/mt.c: Likewise.
19912         * config/mt/mt.h (OUTGOING_REG_PARM_STACK_SPACE): Add FNTYPE argument.
19913         (RETURN_IN_MEMORY):  Replace by TARGET_RETURN_IN_MEMORY.
19914         * config/bfin/bfin.h: Likewise.
19915         * config/bfin/bfin-protos.h (bfin_return_in_memory): Add fntype
19916         argument.
19917         * config/bfin/bfin.c: Likewise.
19918         * config/pa/pa.h (OUTGOING_REG_PARM_STACK_SPACE): Add FNTYPE argument.
19919         * config/alpha/unicosmk.h: Likewise.
19920         * config/i386/cygming.h: Likewise.
19921         * config/iq2000/iq2000.h: Likewise.
19922         * config/mips/mips.h: Likewise.
19923         * config/mn10300/mn10300.h: Likewise.
19924         * config/rs6000/rs6000.h: Likewise.
19925         * config/score/score.h: Likewise.
19926         * config/spu/spu.h: Likewise.
19927         * config/v850/v850.h: Likewise.
19928         * defaults.h: Likewise.
19929         * doc/tm.texi (OUTGOING_REG_PARM_STACK_SPACE): Adjust documentation.
19930         * expr.c (emit_block_move): Adjust use of
19931         OUTGOING_REG_PARM_STACK_SPACE.
19932         * function.c (STACK_DYNAMIC_OFFSET): Adjust use of
19933         OUTGOING_REG_PARM_STACK_SPACE.
19934         * targhooks.c (default_return_in_memory): Remove RETURN_IN_MEMORY.
19935
19936 2008-05-08  Jakub Jelinek  <jakub@redhat.com>
19937
19938         * tree-parloops.c (create_parallel_loop): Set OMP_RETURN_NOWAIT
19939         on OMP_RETURN for OMP_FOR.
19940
19941         PR debug/35896
19942         * dwarf2out.c (dw_expand_expr, common_check): Removed.
19943         (fortran_common): New function.
19944         (gen_variable_die): Call fortran_common instead of common_check,
19945         adjust for it returning tree instead of rtx.  Formatting.
19946
19947 2008-05-07  Kenneth Zadeck  <zadeck@naturalbridge.com>
19948
19949         PR rtl/7335
19950         PR rtl/33826
19951         * see.c (see_copy_insn): Copy new pure const attributes for new call.
19952         * c-decl.c (merge_decls): Ditto.
19953         * postreload.c (record_opr_changes): Change CONST_OR_PURE_CALL_P
19954         to RTL_CONST_OR_PURE_CALL_P.
19955         * tree.c (define_local_buitin): Rename DECL_IS_PURE to DECL_PURE_P.
19956         Initialized DECL_LOOPING_CONST_PURE.
19957         (process_call_operands): Set tree_side_effects properly.
19958         * tree.h (TREE_READONLY_DECL_P): Removed.
19959         (DECL_IS_PURE): Renamed to DECL_PURE_P.
19960         (DECL_LOOPING_OR_CONST_P): New macro.
19961         (struct tree_function_decl): Added looping_const_or_pure_p.
19962         (ECF_*) Renumbered.
19963         (ECF_LOOPING_OR_CONST_P): New macro.
19964         * rtlanal.c (pure_const_p): Removed.
19965         * builtins.c (expand_builtin): Rename DECL_IS_PURE to DECL_PURE_P.
19966         * reorg.c (delete_prior_computation) Changed CONST_OR_PURE_CALL_P
19967         to RTL_CONST_CALL_P.
19968         * ipa-pure-const.c (pure_const_state_e): Added looping field.
19969         (check_decl, check_tree, check_call, scan_function): Initialize
19970         looping.
19971         (analyze_function): Rename DECL_IS_PURE to DECL_PURE_P.
19972         (static_execute): Set looping true for recursive functions.
19973         Undo setting state to IPA_NEITHER for recursive functions.
19974         * cse.c (cse_insn):
19975         * ifcvt.c (noce_can_store_speculate_p): Changed
19976         CONST_OR_PURE_CALL_P and pure_call_p to RTL_CONST_CALL_P or
19977         RTL_CONST_OR_PURE_CALL_P.
19978         * dse.c (scan_insn): Ditto.
19979         * local-alloc.c (validate_equiv_mem, memref_used_between_p): Ditto.
19980         * gcse.c (oprs_not_seen_p) Changed CONST_OR_PURE_CALL_P to
19981         RTL_CONST_OR_PURE_CALL_P.
19982         (store_killed_in_insn): Changed CONST_OR_PURE_CALL_P and
19983         pure_call_p to RTL_CONST_CALL_P.
19984         * gimplify.c (gimplify_call_expr): Clear side effects for
19985         non-looping pure and constant calls.
19986         * calls.c (emit_call_1): Set rtl flags from ecf flags.
19987         (flags_from_decl_or_type): Set ecf flags from decl flags.
19988         (initialize_argument_information): Turn off
19989         ECF_LOOPING_CONST_OR_PURE when turning off ECF_CONST.
19990         Change const to pure if callee_copies is true rather than just
19991         turning off const.
19992         (expand_call): Turn off ECF_LOOPING_PURE_CONST_CALL and remove old
19993         way of marking pure calls.
19994         (emit_library_call_value_1): Turn off ECF_LOOPING_PURE_CONST_CALL.
19995         Remove hack that was supposed to fix pr7335 and remove old
19996         way of marking pure calls.
19997         * emit-rtl.c (emit_copy_of_insn_after): Copy RTL_CONST_CALL_P,
19998         RTL_PURE_CALL_P, RTL_LOOPING_CONST_OR_PURE_CALL_P.
19999         * cselib.c (cselib_process_insn): Changed CONST_OR_PURE_CALL_P to
20000         RTL_CONST_OR_PURE_CALL_P.
20001         * tree-ssa-pre.c (can_value_number_call): Fixed spacing.
20002         * loop-invariant.c (find_exits, find_invariant_bb): Changed
20003         CONST_OR_PURE_CALL_P to RTL_CONST_OR_PURE_CALL_P.
20004         * sched-deps.c (schedule_analyze): Ditto.
20005         * rtl.h (struct rtx_def): Use call field, unchanging field, and
20006         return_val field of calls to represent pure and const function info.
20007         (CONST_OR_PURE_CALL_P): Deleted macro.
20008         (RTL_CONST_CALL_P, RTL_PURE_CALL_P,
20009         RTL_LOOPING_CONST_OR_PURE_CALL_P, RTL_CONST_OR_PURE_P): New macros.
20010         * tree-inline.c (copy_body_r): Changed TREE_READONLY_DECL_P to
20011         TREE_READONLY.
20012         * tree-optimize.c (execute_fixup_cfg): Added test for
20013         ECF_LOOPING_CONST_OR_PURE.
20014         * c-common.c (handle_pure_attribute): Changed DECL_IS_PURE to
20015         DECL_PURE_P.
20016         * tree-cfg.c (update_call_expr_flags): Do not clear tree side
20017         effects for looping pure or const calls.
20018         (verify_gimple_expr): Added verification code.
20019         * config/alpha/alpha.c (alpha_legitimize_address,
20020         alpha_emit_xfloating_libcall): Changed CONST_OR_PURE_CALL_P to
20021         RTL_CONST_CALL_P.
20022         * config/s390/s390.c (s390_emit_tls_call_insn): Ditto.
20023         * config/rs6000/rs6000.c (rs6000_legitimize_tls_address): Ditto.
20024         * config/mips/mips.c (mips_call_tls_get_addr): Ditto.
20025         * cfgrtl.c (need_fake_edge_p): Changed CONST_OR_PURE_CALL_P to
20026         RTL_CONST_OR_PURE_CALL_P.
20027         * dce.c (deletable_insn_p): Allow non looping, non sibling, pure
20028         and const calls to be deleted.
20029
20030 2008-05-07  Uros Bizjak  <ubizjak@gmail.com>
20031
20032         PR target/35714
20033         * config/i386/mmx.md (mmx_subv2sf3): New expander.
20034         (*mmx_subv2sf3): Rename from mmx_subv2sf3 insn pattern.
20035         (*mmx_eqv2sf3): Rename from mmx_eqv2sf3 insn pattern.
20036         (mmx_eqv2sf3): New expander.  Use ix86_fixup_binary_operands_no_copy
20037         to handle nonimmediate operands.
20038         (*mmx_paddwd): Rename from mmx_paddwd insn pattern.
20039         (mmx_paddwd): New expander.  Use ix86_fixup_binary_operands_no_copy
20040         to handle nonimmediate operands.
20041         (*mmx_pmulhrwv4hi3): Rename from mmx_pmulhrwv4hi3 insn pattern.
20042         (mmx_pmulhrwv4hi3): New expander.  Use
20043         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
20044         (*sse2_umulv1siv1di3): Rename from sse2_umulv1siv1di3 insn pattern.
20045         (sse2_umulv1siv1di3): New expander.  Use
20046         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
20047         (*mmx_eq<mode>3): Rename from mmx_eq<mode>3 insn pattern.
20048         (mmx_eq<mode>3): New expander.  Use
20049         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
20050         (*mmx_uavgv8qi3): Rename from mmx_uavgv8qi3 insn pattern.
20051         (mmx_uavgv8qi3): New expander.  Use
20052         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
20053         (*mmx_uavgv4hi3): Rename from mmx_uavgv4hi3 insn pattern.
20054         (mmx_uavgv4hi3): New expander.  Use
20055         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
20056
20057         * config/i386/sse.md
20058         (sse_movhlps_exp): New expander.  Use ix86_fixup_binary_operands
20059         to handle nonimmediate operands.
20060         (sse_movlhps_exp): New expander.  Use ix86_fixup_binary_operands
20061         to handle nonimmediate operands.
20062         (sse_loadhps_exp): New expander.  Use ix86_fixup_binary_operands
20063         to handle nonimmediate operands.
20064         (sse_loadlps_exp): New expander.  Use ix86_fixup_binary_operands
20065         to handle nonimmediate operands.
20066         (sse2_unpckhpd_exp): New expander.  Use
20067         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
20068         (sse2_unpcklpd_exp): New expander.  Use
20069         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
20070         (sse_loadhpd_exp): New expander.  Use ix86_fixup_binary_operands
20071         to handle nonimmediate operands.
20072         (sse_loadlpd): New expander.  Use ix86_fixup_binary_operands
20073         to handle nonimmediate operands.
20074         (*sse2_<plusminus_insn><mode>3): Rename from
20075         sse2_<plusminus_insn><mode>3 insn pattern.
20076         (sse2_<plusminus_insn><mode>3): New expander.  Use
20077         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
20078         (*sse2_umulv2siv2di3): Rename from sse2_umulv2siv2di3 insn pattern.
20079         (sse2_umulv2siv2di3): New expander.  Use
20080         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
20081         (*sse4_1_mulv2siv2di3): Rename from sse4_1_mulv2siv2di3 insn pattern.
20082         (sse4_1_mulv2siv2di3): New expander.  Use
20083         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
20084         (*sse2_pmaddwd): Rename from sse2_pmaddwd insn pattern.
20085         (sse2_pmaddwd): New expander.  Use
20086         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
20087         (*sse2_eq<mode>3): Rename from sse2_eq<mode>3 insn pattern.
20088         (sse2_eq<mode>3): New expander.  Use
20089         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
20090         (*sse4_1_eqv2di3): Rename from sse4_1_eqv2di3 insn pattern.
20091         (sse4_1_eqv2di3): New expander.  Use
20092         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
20093         (*sse2_uavgv16qi3): Rename from sse2_uavgv16qi3 insn pattern.
20094         (sse2_uavgv16qi3): New expander.  Use
20095         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
20096         (*sse2_uavgv16qi3): Rename from sse2_uavgv16qi3 insn pattern.
20097         (sse2_uavgv16qi3): New expander.  Use
20098         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
20099         (*sse2_uavgv8hi3): Rename from sse2_uavgv8hi3 insn pattern.
20100         (sse2_uavgv8hi3): New expander.  Use
20101         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
20102         (*ssse3_pmulhrswv8hi3): Rename from ssse3_pmulhrswv8hi3 insn pattern.
20103         (ssse3_pmulhrswv8hi3): New expander.  Use
20104         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
20105         (*ssse3_pmulhrswv4hi3): Rename from ssse3_pmulhrswv4hi3 insn pattern.
20106         (ssse3_pmulhrswv4hi3): New expander.  Use
20107         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
20108
20109         (<sse>_vm<plusminus_insn><mode>3): Do not use ix86_binary_operator_ok.
20110         (<sse>_vmmul<mode>3): Ditto.
20111         (divv4sf3): Do not use ix86_fixup_binary_operands_no_copy.
20112         (divv2df3): Ditto.
20113         (ssse3_pmaddubsw128): Use register_operand for operand 1.
20114         (ssse3_pmaddubsw): Ditto.
20115
20116         * config/i386/i386.c (struct_builtin_description)
20117         [IX86_BUILTIN_LOADHPS]: Use CODE_FOR_sse_loadhps_exp.
20118         [IX86_BUILTIN_STOREHPS]: Use CODE_FOR_sse_loadlps_exp.
20119         [IX86_BUILTIN_LOADHPD]: Use CODE_FOR_sse2_loadhpd_exp.
20120         [IX86_BUILTIN_LOADLPD]: Use CODE_FOR_sse2_loadlpd_exp.
20121         [IX86_BUILTIN_MOVHLPS]: Use CODE_FOR_sse_movhlps_exp.
20122         [IX86_BUILTIN_MOVLHPS]: Use CODE_FOR_sse_movlhps_exp.
20123         [IX86_BUILTIN_UNPCKHPD]: Use FOR_sse2_unpckhpd_exp.
20124         [IX86_BUILTIN_UNPCKLPD]: Use FOR_sse2_unpcklpd_exp.
20125         (ix86_fixup_binary_operands): Assert that src1
20126         and src2 must have the same mode when swapped.
20127         (ix86_expand_binop_builtin): Do not use ix86_fixup_binary_operands
20128         and ix86_binary_operator_ok.  Do not force operands in registers
20129         when optimizing.
20130
20131 2008-05-07  Jan Hubicka  <jh@suse.cz>
20132
20133         * cgraph.c (dump_cgraph_node): Update.
20134         * cgraph.h (cgraph_local_info): Break out inline summary.
20135         * cgraphunit.c (cgraph_process_new_functions): Use inliner analysis
20136         hook.
20137         * ipa-inline (inline_summary): New accestor function.
20138         (cgraph_clone_inlined_nodes, cgraph_check_inline_limits,
20139         cgraph_decide_inlining, compute_inline_parameters): Update.
20140         * ipa.c (cgraph_remove_unreachable_nodes): Remove statistics.
20141
20142 2008-05-07  Maxim Kuvyrkov  <maxim@codesourcery.com>
20143
20144         Cleanup ColdFire scheduling support and add V4 pipeline model.
20145
20146         * config/m68k/m68k.md (UNSPEC_TIE): New constant.
20147         (define_attr cpu): Add cfv4 value.
20148         (define_attr type, define_attr type1): Merge into a single 'type'
20149         attribute.  Update all uses.
20150         (define_attr opx_type, define_attr opy_type, define_attr opx_access):
20151         Rearrange and update.  Rename value 'reg' to 'Rn', add value 'FPn'.
20152         Update all uses.
20153         (define_attr opx_mem, define_attr opy_mem): Remove.
20154         (define_attr op_mem): Clean up, update comment.
20155         (define_attr size): Use specific values instead of general int.
20156         (define_attr guess, define_attr split): Remove.  Update all uses.
20157         (movdf_internal, tstsi_internal, tsthi_internal, tstqi_internal,
20158         tst<mode>_68881, pushexthisi_const, movsi_const0_68000_10,
20159         movsi_const0_68040_60, movsi_const0, movsi_cf, movstrictqi_cf,
20160         zero_extendhisi2_cf, zero_extendqisi2_cfv4, cfv4_extendhisi2,
20161         68k_extendhisi2, extendqihi2, cfv4_extendqisi2, 68k_extendqisi2,
20162         floatsi<mode>2_68881, ftrunc<mode>2_68881, ftrunc<mode>2_cf,
20163         fix<mode>qi2_68881, fix<mode>hi2_68881, fix<mode>si2_68881,
20164         adddi_dishl32, addsi3_5200, add<mode>3_floatsi_68881,
20165         add<mode>3_floathi_68881, add<mode>3_floatqi_68881,
20166         add<mode>3_68881, add<mode>3_cf, subdi_dishl32, subsi3,
20167         sub<mode>3_floatsi_68881, sub<mode>3_floathi_68881,
20168         sub<mode>3_floatqi_68881, sub<mode>3_68881, sub<mode>3_cf,
20169         mulhi3, mulhisi3, mulhisisi3_s, mulsi3_68020, mulsi3_cf,
20170         umulhisi3, mulhisisi3_z, mul<mode>3_floatsi_68881,
20171         mul<mode>3_floathi_68881, mul<mode>3_floatqi_68881, fmul<mode>3_cf,
20172         div<mode>3_cf, sqrt<mode>2_cf, abs<mode>2_cf, clzsi2,
20173         one_cmplsi2_5200, subreghi1ashrdi_const32, ashrsi3, lshrsi3,
20174         bsetmemqi, bsetmemqi_ext, bclrmemqi, bclrmemqi_ext,
20175         beq, bne, bgt, blt, bordered, bunordered, buneq, bunge, bungt, bunle,
20176         bunlt, bltgt, tablejump_internal, call, non_symbolic_call_value,
20177         symbolic_call_value_jsr, symbolic_call_value_bsr, link):
20178         Update or set attributes.
20179         (stack_tie): New fake instruction.
20180
20181         * config/m68k/m68k.h (TUNE_CFV4): New macro.
20182         (m68k_sched_attr_size): Update declaration.
20183         (m68k_sched_attr_type2): Remove.
20184         (m68k_sched_address_bypass_p, m68k_sched_indexed_address_bypass_p):
20185         Declare new bypass predicates.
20186
20187         * config/m68k/m68k.c (m68k_sched_issue_rate,
20188         m68k_sched_first_cycle_multipass_dfa_lookahead): Declare hook
20189         implementations.
20190         (TARGET_SCHED_ISSUE_RATE,
20191         TARGET_SCHED_FIRST_CYCLE_MULTIPASS_DFA_LOOKAHEAD): Override hooks.
20192         (override_options): Handle scheduling for ColdFire V4 core.
20193         (m68k_expand_prologue): Emit stack_tie.
20194         (enum attr_op_type): Split value 'OP_TYPE_REG' to 'OP_TYPE_RN' and
20195         'OP_TYPE_FPN'.  Update all uses.
20196         (sched_guess_p): Remove.
20197         (sched_address_type): Handle symbolic addresses.
20198         (sched_get_operand): New static function.
20199         (sched_operand_type): Merge into sched_attr_op_type.
20200         (sched_attr_op_type): Handle FP registers, handle quick constants,
20201         update.
20202         (m68k_sched_attr_opx_type, m68k_sched_attr_opy_type): Update.
20203         (m68k_sched_attr_size): Update.  Move logic to ...
20204         (sched_get_attr_size_int): New static function.
20205         (sched_get_opxy_mem_type): New static function.
20206         (m68k_sched_attr_op_mem): Update.
20207         (m68k_sched_attr_type2): Remove.
20208         (sched_cfv4_bypass_data): New static variable.
20209         (m68k_sched_adjust_cost): Handle ColdFire V4 bypass.
20210         (m68k_sched_issue_rate): Implement scheduler hook.
20211         (struct _sched_ib: enabled_p): New field.
20212         (m68k_sched_variable_issue): Update.  Handle V4.
20213         (SCHED_DUMP_TODO, SCHED_DUMP_DONE, SCHED_DUMP_NOTHING,
20214         sched_dump_class_func_t, sched_dump_split_class,
20215         sched_dump_dfa_guess_unit_code, sched_dump_dfa_state,
20216         sched_dump_dfa_class, m68k_sched_dump): Remove.
20217         (m68k_sched_first_cycle_multipass_dfa_lookahead): Implement scheduler
20218         hook.
20219         (m68k_sched_init_global): Remove statisctics dumping, introduce
20220         sanity check that all instructions have pipeline reservations.  Handle
20221         ColdFire V4 core.
20222         (m68k_sched_dfa_pre_advance_cycle, m68k_sched_dfa_post_advance_cycle):
20223         Handle ColdFire V4 core.
20224         (sched_mem_operand_p, sched_get_reg_operand, sched_get_mem_operand):
20225         New static functions.
20226         (m68k_sched_address_bypass_p): New bypass predicate.
20227         (sched_get_indexed_address_scale): New static function.
20228         (m68k_sched_indexed_address_bypass_p): New bypass predicate.
20229
20230         * cf.md: Update comments.
20231         (define_attr type2): Remove.  Use 'type' attribute instead.
20232         Update all uses.
20233         (cf_ib): Rename to cfv123_ib.  Update all uses.
20234         (cf_oep): Rename to cfv123_oep.  Update all uses.
20235         (cf_chr): Rename to cfv123_chr.  Update all uses.
20236         (cf_mem): Rename to cfv123_mem.  Update all uses.
20237         (cf_mac): Move to more appropriate place.
20238         (cfv123_guess): New automaton and cpu_unit.
20239         (cfv123_*, cfv12_*, cfv1_*, cfv2_*, cfv3_*): Use type attribute.
20240         Update uses of 'size' attribute.  Handle before reload scheduling.
20241         (cfv123_guess): New dummy reservation for unhandled instructions.
20242         (cfv4_*): Pipeline description of ColdFire V4 core.
20243         (ignore): New reservation to handle 'ignore' type.
20244
20245 2008-05-07  Ian Lance Taylor  <iant@google.com>
20246
20247         PR middle-end/36013
20248         * gimplify.c (find_single_pointer_decl_1): Don't look through
20249         indirections.
20250         (find_single_pointer_decl): Adjust comments.
20251
20252 2008-05-07  Jakub Jelinek  <jakub@redhat.com>
20253
20254         PR middle-end/36137
20255         * fold-const.c (fold_binary): Use STRIP_SIGN_NOPS instead of
20256         STRIP_NOPS on arguments even for MIN_EXPR and MAX_EXPR.
20257
20258         PR middle-end/36106
20259         * omp-low.c (expand_omp_atomic_pipeline): Load value using the
20260         integral type rather than floating point, then VIEW_CONVERT_EXPR
20261         to the floating point type.
20262
20263 2008-05-07  Uros Bizjak  <ubizjak@gmail.com>
20264
20265         * config/i386/i386.c (ix86_expand_copysign): Force non-zero constant
20266         TFmode op0 to register.
20267
20268 2008-05-07  Alan Modra  <amodra@bigpond.net.au>
20269
20270         * c-decl.c (grokdeclarator): Comment typo.
20271
20272 2008-05-06  Aldy Hernandez  <aldyh@redhat.com>
20273
20274         * tree-flow.h: Remove prototype for computed_goto_p.
20275         * tree-cfg.c (computed_goto_p): Make static.
20276
20277 2008-05-06  H.J. Lu  <hongjiu.lu@intel.com>
20278
20279         PR target/35657
20280         * config/i386/i386.c (contains_128bit_aligned_vector_p): Renamed to ...
20281         (contains_aligned_value_p): This.  Handle _Decimal128.
20282         (ix86_function_arg_boundary): Only align _Decimal128 to its
20283         natural boundary and handle it properly.
20284
20285 2008-05-06  Martin Jambor  <mjambor@suse.cz>
20286
20287         * ipa-cp.c (ipcp_method_orig_node): Renamed to ipcp_get_orig_node.
20288         (ipcp_method_is_cloned): Renamed to ipcp_node_is_clone
20289         (ipcp_method_set_orig_node): Removed.
20290         (ipcp_cval_get_cvalue_type): Removed.
20291         (ipcp_method_get_scale): Renamed to ipcp_get_node_scale.
20292         (ipcp_method_set_scale): Renamed to ipcp_set_node_scale.
20293         (ipcp_cval_set_cvalue_type): Removed.
20294         (ipcp_cval_get_cvalue): Removed.
20295         (ipcp_cval_set_cvalue): Removed.
20296         (ipcp_type_is_const): Renamed to ipcp_lat_is_const.
20297         (ipcp_cval_equal_cvalues): Renamed to ipcp_lats_are_equal
20298         (ipcp_lats_are_equal): Changed parameters to two ipcp_lattice's
20299         (ipcp_cval_meet): Renamed to ipa_lattice_meet
20300         (ipcp_cval_changed): Changed to use ipcp_lat_is_const
20301         (ipcp_method_cval): Renamed to ipcp_get_ith_lattice
20302         (ipcp_get_ith_lattice): Changed parameters.
20303         (ipcp_cval_compute): Renamed to ipcp_lattice_from_jfunc
20304         (ipcp_lattice_from_jfunc): Changed parameters.
20305         (ipcp_redirect): Local lattice pointer instead of lattice type variable.
20306         (ipcp_method_cval_print): Added temporary variable info.
20307         (ipcp_redirect): Removed already unused local variable caller.
20308         (ipcp_redirect): New temporary variable orig_callee_info
20309         (ipcp_redirect): Removed newly unused local variable callee.
20310         (ipcp_redirect): Removed (a bit confusing) local variable type.
20311         (ipcp_insert_stage): Added local variable info.
20312         (ipcp_cval_changed): Renamed to ipcp_lattice_changed, parameters
20313         renamed too
20314         (ipcp_formal_create): Removed.
20315         (ipcp_method_cval_set): Removed.
20316         (ipcp_propagate_stage): Renamed lattice variables.
20317         (ipcp_method_cval_set_cvalue_type): Removed.
20318         (ipcp_method_cval_print): Renamed to ipcp_print_all_lattices
20319         (ipcp_print_all_lattices): Changed printed strings to refer to
20320         lattices rather than cvals.
20321         (ipcp_method_cval_init): Renamed to ipcp_initialize_node_lattices
20322         (ipcp_propagate_const): Changed formal parameters.
20323         (build_const_val): Changed formal parameters.
20324         (ipcp_insert_stage): Removed useless variable cvalue
20325         (build_const_val): Changed formal parameters.
20326         (ipcp_method_compute_scale): Renamed to ipcp_compute_node_scale
20327         (ipcp_after_propagate): Renamed to ipcp_change_tops_to_bottom
20328         (ipcp_callsite_param_print): Renamed to ipcp_print_all_jump_functions
20329         (ipcp_profile_mt_count_print): Renamed to ipcp_print_func_profile_counts
20330         (ipcp_print_func_profile_counts): Changed string from "method" to
20331         "function"
20332         (ipcp_profile_cs_count_print): Renamed to ipcp_print_call_profile_counts
20333         (ipcp_profile_edge_print): Renamed to ipcp_print_edge_profiles
20334         (ipcp_profile_bb_print): Renamed to ipcp_print_bb_profiles
20335         (ipcp_structures_print): Renamed to ipcp_print_all_structures
20336         (ipcp_profile_print): Renamed to ipcp_print_profile_data
20337         (ipcp_lat_is_const): Changed parameters and made inline.
20338         (ipcp_replace_map_create): Renamed to ipcp_create_replace_map
20339         (ipcp_redirect): Renamed to ipcp_need_redirect_p
20340         (ipcp_need_redirect_p): Calls ipcp_lat_is_const instead of using
20341         the predicate condition directly
20342         (ipcp_propagate_stage): Added local variable args. Removed local
20343         variable callee.  (Both are mere code simplifications.)
20344         (ipcp_method_dont_insert_const): Renamed to
20345         ipcp_node_not_modifiable_p.
20346         (ipcp_node_not_modifiable_p): Made inline.
20347         (ipcp_cloned_create): Renamed to ipcp_init_cloned_node
20348         (ipcp_propagate_const): Renamed to ipcp_propagate_one_const
20349         (ipcp_print_all_lattices): Removed variable cvalue
20350         (ipcp_method_scale_print): Renamed to ipcp_function_scale_print
20351         Updated comments.
20352
20353 2008-05-06  Olivier Hainque  <hainque@adacore.com>
20354
20355         * tree-sra.c (try_instantiate_multiple_fields): Early return
20356         if field has POINTER_TYPE.
20357
20358 2008-05-06  Kai Tietz  <kai.tietz@onevision.com>
20359
20360         * config/i386/i386.c (output_set_got): Fix for x86_64 output_emit_asm
20361         by using 'q' specifier for instruction.
20362         (ix86_file_end): Replaced case TARGET_64BIT_MS_ABI by TARGET_64BIT.
20363
20364 2008-05-06  Anatoly Sokolov <aesok@post.ru>
20365
20366         * config/avr/avr.md (*sbrx_branch, *sbix_branch, *sbix_branch_tmp):
20367         Change mode of zero_extract from QImode to HImode.
20368         (sign bit tests peepholes): (Ditto.).
20369
20370 2008-05-06  Uros Bizjak  <ubizjak@gmail.com>
20371
20372         * config/i386/mmx.md: Remove double backslashes from asm templates.
20373         (*mmx_addv2sf3): Rename from mmx_addv2sf3 insn pattern.
20374         (mmx_addv2sf3): New expander.  Use ix86_fixup_binary_operands_no_copy
20375         to handle nonimmediate operands.
20376         (*mmx_mulv2sf3): Rename from mmx_mulv2sf3 insn pattern.
20377         (mmx_mulv2sf3): New expander.  Use ix86_fixup_binary_operands_no_copy
20378         to handle nonimmediate operands.
20379         (*mmx_<code>v2sf3_finite): New insn pattern.
20380         (*mmx_<code>v2sf3): Rename from mmx_<code>v2sf3 insn pattern.
20381         (mmx_<code>v2sf3): New expander.  Use
20382         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
20383         (mmx_<plusminus_insn><mode>3): New expander.  Use
20384         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
20385         (*mmx_<plusminus_insn><mode>3): New insn pattern.
20386         (mmx_add<mode>3): Removed.
20387         (mmx_ssadd<mode>3): Ditto.
20388         (mmx_usadd<mode>3): Ditto.
20389         (mmx_sub<mode>3): Ditto.
20390         (mmx_sssub<mode>3): Ditto.
20391         (mmx_ussub<mode>3): Ditto.
20392         (*mmx_mulv4hi3): Rename from mmx_mulv4hi3 insn pattern.
20393         (mmx_mulv4hi3): New expander.  Use ix86_fixup_binary_operands_no_copy
20394         to handle nonimmediate operands.
20395         (*mmx_smulv4hi3_highpart): Rename from mmx_smulv4hi3_highpart
20396         insn pattern.
20397         (mmx_smulv4hi3_highpart): New expander.  Use
20398         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
20399         (*mmx_umulv4hi3_highpart): Rename from mmx_umulv4hi3_highpart
20400         insn pattern.
20401         (mmx_umulv4hi3_highpart): New expander.  Use
20402         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
20403         (*mmx_<code>v4hi3): Rename from mmx_<code>v4hi3 insn pattern.
20404         (mmx_<code>v4hi3): New expander.  Use
20405         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
20406         (*mmx_<code>v8qi3): Rename from mmx_<code>v8qi3 insn pattern.
20407         (mmx_<code>v8qi3): New expander.  Use
20408         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
20409         (*mmx_<code><mode>3): Rename from mmx_<code><mode>3 insn pattern.
20410         (mmx_<code><mode>3): New expander.  Use
20411         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
20412
20413 2008-05-05  Jan Hubicka  <jh@suse.cz>
20414
20415         PR tree-optimization/36118
20416         * passes.c (pass_init_dump_file): Fix dump header.
20417
20418 2008-05-05  Andrew Pinski  <andrew_pinski@playstation.sony.com>
20419
20420         PR middle-end/36141
20421         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Don't create
20422         VCE for function decls.
20423
20424 2008-05-05  H.J. Lu  <hongjiu.lu@intel.com>
20425
20426         * config/i386/sse.md (sse2_<plusminus_insn><mode>3): Fix a typo.
20427
20428 2008-05-05  H.J. Lu  <hongjiu.lu@intel.com>
20429
20430         * config/i386/i386.md (sat_plusminus): New.
20431         (plusminus_insn): Likewise.
20432         (plusminus_mnemonic): Likewise.
20433         (addsub): Removed.
20434         (comm): Add ss_plus, us_plus, ss_minus and us_minus.
20435         (*<addsub><mode>3_cc_overflow): Renamed to ...
20436         (*<plusminus_insn><mode>3_cc_overflow): This.
20437         (*<addsub>si3_zext_cc_overflow): Renamed to ...
20438         (*<plusminus_insn>si3_zext_cc_overflow): This.
20439
20440         * config/i386/sse.md (<addsub><mode>3): Renamed to ...
20441         (<plusminus_insn><mode>3): This.
20442         (*<addsub><mode>3): Renamed to ...
20443         (*<plusminus_insn><mode>3): This.
20444         (<sse>_vm<addsub><mode>3): Renamed to ...
20445         (<sse>_vm<plusminus_insn><mode>3): This.
20446         (sse3_h<addsub>v4sf3): Renamed to ...
20447         (sse3_h<plusminus_insn>v4sf3): This.
20448         (sse3_h<addsub>v2df3): Renamed to ...
20449         (sse3_h<plusminus_insn>v2df3): This.
20450         (<plusminus_insn><mode>3): New.
20451         (*<plusminus_insn><mode>3): Likewise.
20452         (sse2_<plusminus_insn><mode>3): Likewise.
20453         (add<mode>): Removed.
20454         (*add<mode>3): Likewise.
20455         (sse2_ssadd<mode>3): Likewise.
20456         (sse2_usadd<mode>3): Likewise.
20457         (sub<mode>3): Likewise.
20458         (*sub<mode>3): Likewise.
20459         (sse2_sssub<mode>3): Likewise.
20460         (sse2_ussub<mode>3): Likewise.
20461
20462 2008-05-05  Benjamin Kosnik  <bkoz@redhat.com>
20463
20464         * gthr-single.h: Add in required interface elements as per gthr.h.
20465         Add stub types for __gthread_key_t, __gthread_once_t. Add defines
20466         for __GTHREAD_ONCE_INIT, __GTHREAD_RECURSIVE_MUTEX_INIT.
20467         Generalize UNUSED macro.
20468         (__gthread_once): Add.
20469         (__gthread_key_create): Add.
20470         (__gthread_key_delete): Add.
20471         (__gthread_getspecific): Add.
20472         (__gthread_setspecific): Add.
20473
20474 2008-05-05  Andrew Pinski  <Andrew.Pinski@playstation.sony.com>
20475
20476         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): If we have
20477         the same size types for the indirect reference on the rhs, then
20478         create a VCE.
20479
20480 2008-05-05  Uros Bizjak  <ubizjak@gmail.com>
20481
20482         * config/i386/i386.md
20483         (*float<SSEMODEI24:mode><MODEF:mode>2_sse_interunit): Use only
20484         one insn template instead of template series.
20485         (*xordi_1_rex64): Ditto.
20486         (*xordi_2_rex64): Ditto.
20487
20488 2008-05-05  Ira Rosen  <irar@il.ibm.com>
20489
20490         PR tree-optimization/36119
20491         * tree-vect-transform.c (vectorizable_assignment): Set NCOPIES to 1
20492         in case of SLP.
20493
20494 2008-06-04  Jan Hubicka  <jh@suse.cz>
20495
20496         tree-optimization/36100
20497         * tree-pass.h (pass_O0_always_inline): Declare.
20498         * ipa-inline.c (inline_transform): Remove dead code.
20499         (cgraph_gate_O0_always_inline, cgraph_O0_always_inline,
20500         pass_O0_always_inline): New.
20501         * passes.c (init_optimization_passes): Add pass_O0_always_inline.
20502
20503 2008-05-04  Kai Tietz  <kai.tietz@onevision.com>
20504
20505         * config/i386/i386.c (x86_output_mi_thunk): Use movq alternative
20506         mnemonic in this_param move for TARGET_64BIT.
20507
20508 2008-05-04  Uros Bizjak  <ubizjak@gmail.com>
20509
20510         * config/i386/i386.md (*strmovsi_1): Simplify asm alternatives.
20511         (*strmovsi_rex_1): Ditto.
20512         (*strsetsi_1): Ditto.
20513         (*strsetsi_rex_1): Ditto.
20514
20515         (add<mode>cc): Macroize expander from addqicc, addhicc, addsicc and
20516         adddicc expanders using SWI mode iterator.
20517
20518 2008-05-04  H.J. Lu  <hongjiu.lu@intel.com>
20519
20520         PR target/36121
20521         * config/i386/i386.c (ix86_expand_special_args_builtin): Remove three
20522         argument handling.
20523
20524 2008-05-04  David S. Miller  <davem@davemloft.net>
20525
20526         * config.gcc (sparc*-*-*): Always set need_64bit_hwint to yes.
20527         (sparc*-*-linux*): Use linux.h in tm_file.
20528         (sparc-*-linux*): If 'enabled_targets' is 'all', build a bi-arch
20529         compiler defaulting to 32-bit.
20530         (sparc*-*-*): Remove explicit target settings of need_64bit_hwint,
20531         no longer needed.
20532         * config/sparc/linux.h: Remove definitions now obtained
20533         properly from linux.h
20534         * config/sparc/linux64.h: Likewise.
20535         (ASM_CPU_DEFAULT_SPEC): Change this to ASM_CPU64_DEFAULT_SPEC, we
20536         don't want this setting for 32-bit builds in a biarch compiler.
20537         * doc/install.texi: Add sparc-linux to list of targets
20538         supporting --enable-targets=all.
20539
20540 2008-05-03  Andrew Pinski  <pinskia@gmail.com>
20541
20542         * Makefile.in (tree-ssa-phiprop.o): Fix dependencies.
20543
20544 2008-05-03  H.J. Lu  <hongjiu.lu@intel.com>
20545
20546         * config/i386/i386.c (ix86_builtin_type): Move V4SI_FTYPE_V4SF
20547         after V4SI_FTYPE_V8HI.
20548         (ix86_init_mmx_sse_builtins): Move case V4HI_FTYPE_V4HI after
20549         case V4SI_FTYPE_V2DF.
20550
20551 2008-05-03  Kenneth Zadeck  <zadeck@naturalbridge.com>
20552
20553         * doc/invoke.texi (max-flow-memory-locations): Removed.
20554         * params.def (PARAM_MAX_FLOW_MEMORY_LOCATIONS): Removed.
20555
20556 2008-05-03  Richard Guenther  <rguenther@suse.de>
20557
20558         PR middle-end/34973
20559         * opts.c (set_Wstrict_aliasing): Handle the turn-off case.
20560
20561 2008-05-02  David S. Miller  <davem@davemloft.net>
20562
20563         * config.gcc (need_64bit_hwint): Document libcpp dependency.
20564
20565 2008-05-02  Simon Baldwin <simonb@google.com>
20566
20567         PR bootstrap/36108
20568         * c-common.h (warn_array_subscript_range): Removed.
20569         * c-common.c (warn_array_subscript_range): Ditto.
20570         * tree-vrp.c (check_array_ref): Revert to ignoring arrays with size 2.
20571         * c-typeck.c (build_array_ref): Remove warn_array_subscript_range.
20572
20573 2008-05-02  H.J. Lu  <hongjiu.lu@intel.com>
20574
20575         * config/i386/i386.c (ix86_special_builtin_type): New.
20576         (bdesc_special_args): Likewise.
20577         (ix86_expand_special_args_builtin): Likewise.
20578         (ix86_init_mmx_sse_builtins): Updated.
20579         (ix86_expand_builtin): Updated.
20580         (ix86_expand_store_builtin): Removed.
20581         (ix86_expand_unop_builtin): Likewise.
20582
20583         * config/i386/mm3dnow.h (__v2sf): Moved to ...
20584         * config/i386/mmintrin.h (__v2sf): Here.
20585
20586         * config/i386/xmmintrin.h (_mm_loadh_pi): Replace __v2si with
20587         const __v2sf.
20588         (_mm_loadl_pi): Likewise.
20589         (_mm_storeh_pi): Replace __v2si with __v2sf.
20590         (_mm_storel_pi): Likewise.
20591
20592         * doc/extend.texi: Correct __builtin_ia32_loadhps,
20593         __builtin_ia32_loadlps, __builtin_ia32_storehps,
20594         __builtin_ia32_storelps, __builtin_ia32_loadhpd and
20595         __builtin_ia32_loadlpd.
20596
20597 2008-05-02  H.J. Lu  <hongjiu.lu@intel.com>
20598
20599         * config/i386/i386.c (ix86_builtin_type): Add FLOAT_FTYPE_FLOAT,
20600         V4SF_FTYPE_V4SF_VEC_MERGE and V2DF_FTYPE_V2DF_VEC_MERGE.
20601         (bdesc_args): Updated.  Add scalar SSE builtins with vec_merge.
20602         (ix86_init_mmx_sse_builtins): Updated.
20603         (ix86_expand_args_builtin): Likewise.
20604         (ix86_expand_builtin): Likewise.
20605         (ix86_expand_unop1_builtin): Renamed to ...
20606         (ix86_expand_unop_vec_merge_builtin): This.
20607
20608 2008-05-01  Jan Hubicka  <jh@suse.cz>
20609
20610         PR bootstrap/36100
20611         * ipa-inline.c (inline_generate_summary): Make static.
20612         (inline_transform): Do not call inlining at -O0; make static.
20613         * passes.c (execute_todo): Add sanity check.
20614         (execute_one_ipa_transform_pass): Execute proper flags.
20615
20616 2008-05-01  Eric Botcazou  <ebotcazou@adacore.com>
20617
20618         * tree.h (TYPE_NONALIASED_COMPONENT): Expand comment.
20619         (DECL_NONADDRESSABLE_P): Likewise.
20620         * alias.c (record_component_aliases): Fix comment.
20621
20622 2008-05-01  Simon Baldwin <simonb@google.com>
20623
20624         * c-common.h (warn_array_subscript_range): New function.
20625         * c-common.c (warn_array_subscript_range): Ditto.
20626         * tree-vrp.c (check_array_ref): Corrected code to agree with
20627         comment, ignoring only arrays of size 0 or size 1.
20628         * c-typeck.c (build_array_ref): Call warn_array_subscript_range.
20629
20630 2008-05-01  H.J. Lu  <hongjiu.lu@intel.com>
20631
20632         * config/i386/i386.c (ix86_builtin_type): Replace
20633         DI_FTYPE_DI_DI_INT with V1DI2DI_FTYPE_V1DI_V1DI_INT.
20634         (bdesc_args): Updated.
20635         (ix86_init_mmx_sse_builtins): Likewise.
20636         (ix86_expand_args_builtin): Likewise.
20637
20638         * config/i386/tmmintrin.h (_mm_alignr_pi8): Replace long long
20639         with __v1di.
20640
20641         * doc/extend.texi: Correct __builtin_ia32_palignr.
20642
20643 2008-05-01  H.J. Lu  <hongjiu.lu@intel.com>
20644
20645         PR target/36095
20646         * config/i386/i386.c (bdesc_crc32): Removed.
20647         (ix86_expand_crc32): Likewise.
20648         (ix86_builtin_type): Replace V2DI2TI_FTYPE_V2DI2TI_INT with
20649         V2DI2TI_FTYPE_V2DI_INT, V2DI2TI_FTYPE_V2DI2TI_V2DI2TI_INT with
20650         V2DI2TI_FTYPE_V2DI_V2DI_INT.  Add UINT64_FTYPE_UINT64_UINT64,
20651         UINT_FTYPE_UINT_UINT, UINT_FTYPE_UINT_USHORT and
20652         UINT_FTYPE_UINT_UCHAR.
20653         (bdesc_args): Updated. Add crc32 builtins.
20654         (ix86_init_mmx_sse_builtins): Updated.
20655         (ix86_expand_args_builtin): Updated to support subreg.
20656
20657         * doc/extend.texi: Correct __builtin_ia32_crc32di.
20658
20659 2008-05-01  Jan Hubicka  <jh@suse.cz>
20660
20661         * tree-pass.h (opt_pass): Add IPA_PASS.
20662         (varpool_node, cgraph_node): Forward declare.
20663         (ipa_opt_pass): Define.
20664         (pass_ipa_inline): Turn into ipa_opt_pass.
20665         (pass_apply_inline): Remove.
20666         * ipa-inline.c (pass_ipa_inline): Turn into ipa_opt_pass.
20667         (apply_inline): Turn into ....
20668         (inline_transform): ... this one.
20669         (inline_generate_summary): New function.
20670         (pass_apply_inline): Remove.
20671         * function.h (ipa_opt_pass): Forward declare structure; typedef;
20672         vector.
20673         (struct function): Add ipa_transforms_to_apply.
20674         * passes.c (register_one_dump_file): Work on IPA_PASS.
20675         (init_optimization_passes): Remove pass_inline_parameters and
20676         pass_apply_inline.
20677         (pass_init_dump_file, pass_fini_dump_file): Break out from ....
20678         (execute_one_pass) ... here; apply transforms when possible.
20679         (add_ipa_transform_pass, execute_ipa_summary_asses,
20680         execute_one_ipa_transform_pass): New.
20681         (execute_ipa_pass_list): Update for IPA_PASS type.
20682
20683 2008-05-01  H.J. Lu  <hongjiu.lu@intel.com>
20684
20685         * config/i386/i386.c (ix86_builtin_type): Add
20686         V2DI_FTYPE_V2DI_V16QI, V2DI_FTYPE_V2DI_UINT_UINT and
20687         V2DI_FTYPE_V2DI_V2DI_UINT_UINT.
20688         (bdesc_args): Add SSE4a builtins.
20689         (ix86_init_mmx_sse_builtins): Updated.
20690         (ix86_expand_args_builtin): Likewise.
20691         (ix86_expand_builtin): Likewise.
20692
20693 2008-05-01  H.J. Lu  <hongjiu.lu@intel.com>
20694
20695         * config/i386/i386.c (ix86_builtin_type): Add
20696         V8HI_FTYPE_V8HI_V8HI_COUNT, V8HI_FTYPE_V8HI_SI_COUNT,
20697         V4SI_FTYPE_V4SI_V4SI_COUNT, V4SI_FTYPE_V4SI_SI_COUNT,
20698         V4HI_FTYPE_V4HI_V4HI_COUNT, V4HI_FTYPE_V4HI_SI_COUNT,
20699         V2DI_FTYPE_V2DI_V2DI_COUNT, V2DI_FTYPE_V2DI_SI_COUNT,
20700         V2SI_FTYPE_V2SI_V2SI_COUNT, V2SI_FTYPE_V2SI_SI_COUNT,
20701         V1DI_FTYPE_V1DI_V1DI_COUNT, V1DI_FTYPE_V1DI_SI_COUNT,
20702         V8HI_FTYPE_V8HI_INT, V4SI_FTYPE_V4SI_INT, V4HI_FTYPE_V4HI_INT,
20703         V2DI2TI_FTYPE_V2DI2TI_INT, V2DI2TI_FTYPE_V2DI2TI_V2DI2TI_INT
20704         and DI_FTYPE_DI_DI_INT.
20705         (bdesc_args): Add MMX/SSE shift, shuffle and palignr builtins.
20706         (ix86_init_mmx_sse_builtins): Updated.
20707         (ix86_expand_args_builtin): Likewise.
20708         (ix86_expand_builtin): Likewise.
20709         (ix86_expand_binop_imm_builtin): Removed.
20710
20711         * doc/extend.texi: Correct __builtin_ia32_palignr128.
20712
20713 2008-04-30  Richard Guenther  <rguenther@suse.de>
20714
20715         PR tree-optimization/32921
20716         * tree-ssa-loop-im.c (mem_refs_may_alias_p): Disambiguate with TBAA.
20717
20718 2008-04-30  Richard Sandiford  <rsandifo@nildram.co.uk>
20719
20720         * config/arm/arm.c (arm_unwind_emit): Use
20721         crtl->all_throwers_are_sibcalls instead of
20722         cfun->all_throwers_are_sibcalls.
20723         (arm_output_fn_unwind): Likewise.
20724         * config/frv/frv.c (frv_stack_info): Use crtl->uses_pic_offset_table
20725         instead of cfun->uses_pic_offset_table.
20726         (frv_expand_prologue): Likewise.
20727         (frv_frame_pointer_required): Likewise.
20728         (frv_expand_fdpic_call): Likewise.
20729         (frv_emit_movsi): Likewise.
20730         * config/iq2000/iq2000.c (iq2000_expand_prologue): Use
20731         cfun->returns_pcc_struct instead of
20732         current_function_returns_pcc_struct.
20733         * config/m32c/m32c.c (need_to_save): Use crtl->calls_eh_return
20734         instead of cfun->calls_eh_return.
20735         (m32c_pushm_popm): Likewise.
20736         * config/xtensa/xtensa.h (cfun->calls_alloca): Remove bogus
20737         "extern" declaration.
20738
20739 2008-04-30  Richard Guenther  <rguenther@suse.de>
20740
20741         PR tree-optimization/21636
20742         * tree-ssa-ccp.c (ccp_fold): Handle &p->x with p being a
20743         constant address.
20744         (evaluate_stmt): Print the likely value.
20745         (ccp_visit_stmt): Avoid excessive vertical spacing.
20746
20747 2008-04-30  Rafael Espíndola  <espindola@google.com>
20748
20749         * builtins.c (fold_call_expr): Return realret.
20750         * tree-ssa-threadedge.c
20751         (record_temporary_equivalences_from_stmts_at_dest): Ignore calls to
20752         __builtin_object_size.
20753
20754 2008-04-30  Seongbae Park  <seongbae.park@gmail.com>
20755
20756         * gcc.c (wrapper_string): New variable.
20757         (insert_wrapper): New function.
20758         (execute): New option -wrapper.
20759         * doc/invoke.texi (Overall Options): New driver option -wrapper.
20760
20761 2008-04-30  Nathan Froyd  <froydnj@codesourcery.com>
20762
20763         * config/rs6000/crtresgpr.asm, config/rs6000/crtresxgpr.asm,
20764         config/rs6000/crtsavgpr.asm, config/rs6000/crtresfpr.asm,
20765         config/rs6000/crtresxfpr.asm, config/rs6000/crtsavfpr.asm: Break out
20766         from...
20767         * config/rs6000/crtsavres.asm: ...here.  Remove unneeded file.
20768         * config/rs6000/e500crtres32gpr.asm, config/rs6000/e500crtres64gpr.asm,
20769         config/rs6000/e500crtres64gprctr.asm,
20770         config/rs6000/e500crtrest32gpr.asm, config/rs6000/e500crtrest64gpr.asm,
20771         config/rs6000/e500crtresx32gpr.asm, config/rs6000/e500crtresx64gpr.asm,
20772         config/rs6000/e500crtsav32gpr.asm, config/rs6000/e500crtsav64gpr.asm,
20773         config/rs6000/e500crtsav64gprctr.asm,
20774         config/rs6000/e500crtsavg32gpr.asm, config/rs6000/e500crtsavg64gpr.asm,
20775         config/rs6000/e500crtsavg64gprctr.asm: New files.
20776         * config/rs6000/t-ppccomm: Add build rules for new files.
20777         (LIB2FUNCS_STATIC_EXTRA): Add new files.
20778         * config/rs6000/t-netbsd: Add build rules for new files.
20779         (LIB2FUNCS_STATIC_EXTRA): New variable.
20780         * config/rs6000/sysv4.h (ENDFILE_SPEC): Don't include crtsavres.o
20781         (CRTSAVRES_DEFAULT_SPEC): Likewise.
20782         * config/rs6000/netbsd.h (ENDFILE_SPEC): Likewise.
20783
20784 2008-04-30  H.J. Lu  <hongjiu.lu@intel.com>
20785
20786         * config/i386/i386.c (ix86_builtin_type): Add
20787         FLOAT128_FTYPE_FLOAT128_FLOAT128, V16QI_FTYPE_V16QI_V16QI,
20788         V16QI_FTYPE_V8HI_V8HI, V8QI_FTYPE_V8QI_V8QI,
20789         V8QI_FTYPE_V4HI_V4HI, V8HI_FTYPE_V8HI_V8HI,
20790         V8HI_FTYPE_V16QI_V16QI, V8HI_FTYPE_V4SI_V4SI,
20791         V4SI_FTYPE_V4SI_V4SI, V4SI_FTYPE_V8HI_V8HI,
20792         V4SI_FTYPE_V4SF_V4SF, V4SI_FTYPE_V2DF_V2DF,
20793         V4HI_FTYPE_V4HI_V4HI, V4HI_FTYPE_V8QI_V8QI,
20794         V4HI_FTYPE_V2SI_V2SI, V4SF_FTYPE_V4SF_V4SF,
20795         V4SF_FTYPE_V4SF_V4SF_SWAP, V4SF_FTYPE_V4SF_V2SI,
20796         V4SF_FTYPE_V4SF_V2DF, V4SF_FTYPE_V4SF_DI,
20797         V4SF_FTYPE_V4SF_SI, V2DI_FTYPE_V2DI_V2DI,
20798         V2DI_FTYPE_V16QI_V16QI, V2DI_FTYPE_V4SI_V4SI,
20799         V2DI_FTYPE_V2DF_V2DF, V2SI_FTYPE_V2SI_V2SI,
20800         V2SI_FTYPE_V4HI_V4HI, V2SI_FTYPE_V2SF_V2SF,
20801         V2DF_FTYPE_V2DF_V2DF, V2DF_FTYPE_V2DF_V2DF_SWAP,
20802         V2DF_FTYPE_V2DF_V4SF, V2DF_FTYPE_V2DF_DI,
20803         V2DF_FTYPE_V2DF_SI, V2SF_FTYPE_V2SF_V2SF,
20804         V1DI_FTYPE_V1DI_V1DI, V1DI_FTYPE_V8QI_V8QI and
20805         V1DI_FTYPE_V2SI_V2SI.
20806         (bdesc_2arg): Moved to ...
20807         (bdesc_args): Here.
20808         (ix86_init_mmx_sse_builtins): Updated.
20809         (ix86_expand_args_builtin): Updated.  Take a pointer
20810         to const struct builtin_description.  Handle comparison
20811         builtin functions.
20812         (ix86_expand_sse_compare): Take a new argument for swapping operands.
20813         (ix86_expand_builtin): Updated.
20814
20815         * config/i386/sse.md (ssse3_pmaddubswv8hi3): Renamed to ...
20816         (ssse3_pmaddubsw128): This.
20817         (ssse3_pmaddubswv4hi3): Renamed to ...
20818         (ssse3_pmaddubsw): This.
20819
20820         * doc/extend.texi (__builtin_ia32_packsswb128): Correct prototype.
20821         (__builtin_ia32_packssdw128): Likewise.
20822         (__builtin_ia32_packuswb128): Likewise.
20823         (__builtin_ia32_pmaddubsw): Likewise.
20824         (__builtin_ia32_pmaddubsw128): Likewise.
20825
20826 2008-04-30  Richard Guenther  <rguenther@suse.de>
20827
20828         PR tree-optimization/14847
20829         * tree-ssa-ifcombine.c (get_name_for_bit_test): New helper function.
20830         (recognize_bits_test): Use it.
20831         (recognize_single_bit_test): Likewise.
20832
20833 2008-04-30  Martin Jambor  <mjambor@suse.cz>
20834
20835         * ipa-cp.c (ipcp_init_stage): Calls ipa_set_called_with_variable_arg
20836         instead of setting number of formal parameters to zero.
20837         (ipcp_init_stage): Do not set the number of actual parameters to zero
20838         either.
20839         (ipcp_propagate_stage): Explicitly skipping all calls to nodes
20840         which are called with variable number of arguments.
20841         (ipcp_insert_stage): Explicitely skipping all nodes which are
20842         called with variable number of arguments.
20843         (ipcp_callsite_param_print): Skipps callsites to nodes with varaible
20844         number of parameters.
20845
20846         * ipa-prop.h (struct ipa_node_params): Added flag
20847         called_with_var_arguments
20848         (ipa_set_param_count): Added.  Changed sole setter to use it.
20849         (ipa_get_param_count): Added.  All readers of param_count
20850         converted to use it instead.
20851         (ipa_set_called_with_variable_arg): Added.
20852         (ipa_is_called_with_var_arguments): Added.
20853         (ipa_get_ith_param): Added.  All readers of param_decls converted
20854         to use it instead.
20855         (ipa_set_cs_argument_count): Added, sole writer to argument_count
20856         changed to use it.
20857         (ipa_get_cs_argument_count): Added, all readers of argument_count
20858         changed to cal it.
20859         (ipa_get_ith_jump_func): Added. Accessors of jump values changed
20860         to use it.
20861
20862         * ipa-prop.h (struct ipcp_formal): Renamed to ipcp_lattice
20863         (struct ipcp_lattice): Renamed cval_type to type
20864         (struct ipa_node_params): ipcp_cval renamed to ipcp_lattices
20865
20866         * ipa-cp.c (ipcp_cval_get_cvalue): Changed return value to tree
20867         (ipcp_cval_set_cvalue): Changed type of parameter value to tree
20868         (ipcp_insert_stage): Changed the type of variable cvalue to tree
20869         (ipcp_replace_map_create): Changed the type of parameter cvalue to tree
20870         (build_const_val): Changed the type of parameter cvalue to tree
20871         (ipcp_propagate_const): Changed the type of parameter cvalue to tree
20872         (ipcp_method_cval_set_cvalue_type): Renamed parameter cval_type1 to type
20873
20874         * ipa-prop.h (struct ipcp_formal): Replaced cvalue with tree called
20875         constant
20876
20877         * ipa-prop.c (ipa_methodlist_init): Renamed to ipa_init_func_list
20878         (ipa_methodlist_not_empty): Removed, the sole user now checks directly
20879         (ipa_add_method): Renamed to ipa_push_func_to_list
20880         (ipa_remove_method): Renamed to ipa_pop_func_from_list
20881         (ipa_callsite_param_count): Removed.
20882         (ipa_callsite_param_count_set): Removed.
20883         (ipa_callsite_param): Removed.
20884         (ipa_callsite_callee): Removed.
20885         (ipa_callsite_compute_param): Renamed to ipa_compute_jump_functions
20886         (ipa_callsite_compute_count): Renamed to ipa_count_arguments
20887         (ipa_method_formal_count): Removed.
20888         (ipa_method_formal_count_set): Removed.
20889         (ipa_method_get_tree): Removed.
20890         (ipa_method_tree_map_create): Removed.
20891         (ipa_method_compute_tree_map): Renamed to ipa_create_param_decls_array
20892         (ipa_create_param_decls_array): Creates the array itself
20893         (ipa_create_param_decls_array): Temporary variable info instead of
20894         a few dereferences.
20895         (ipa_method_formal_compute_count): Renamed to ipa_count_formal_params
20896         (ipa_method_compute_modify): Renamed to ipa_detect_param_modifications
20897         (get_type): Removed.
20898         (ipa_jf_get_info_type): Removed.
20899         (ipa_node_create): Renamed to ipa_create_node_params
20900         (ipa_free): Renamed to ipa_free_all_node_params
20901         (ipa_nodes_create): Renamed to ipa_create_all_node_params
20902         (ipa_edges_create): Renamed to ipa_create_all_edge_args
20903         (ipa_edges_free): Renamed to ipa_free_all_edge_args
20904         (ipa_nodes_free): Integrated into ipa_free_all_node_params and removed
20905         (ipa_free_all_node_params): Deallocation to jump_functions moved to
20906         ipa_free_all_edge_args
20907         (ipa_method_tree_print): Renamed to ipa_print_all_tree_maps
20908         (ipa_method_modify_print): Renamed to ipa_print_all_params_modified
20909         (ipa_create_methodlist_node): Removed.
20910         (ipa_methodlist_method): Removed.
20911         (ipa_methodlist_method_set): Removed.
20912         (ipa_methodlist_next_method): Removed.
20913         (ipa_methodlist_next_method_set): Removed.
20914         (ipa_method_is_modified): Removed.
20915         (ipa_method_modify_create): Removed.
20916         (ipa_method_modify_init): Temporary variable info instead of a few
20917         dereferences.
20918         (ipa_detect_param_modifications): Temporary variable info instead of
20919         a few dereferences.
20920         (ipa_compute_jump_functions): Temporary variable info instead of
20921         a few dereferences.
20922         (ipa_method_modify_set): Removed.
20923         (ipa_method_tree_map): Renamed to ipa_get_param_decl_index
20924         (ipa_get_param_decl_index): Now accepts struct ipa_node_params rather
20925         than craph_node as the first parameter.
20926         (ipa_method_modify_stmt): Renamed to ipa_check_stmt_modifications
20927         (ipa_method_modify_init): Removed.
20928         (ipa_compute_jump_functions): Added a temp variable instead of
20929         repeatadly dereferencing the cgraph_edge.aux pointer
20930         (ipa_callsite_param_set_type): Removed.
20931         (ipa_compute_jump_functions): i renamed to index and moved to
20932         an inner block
20933         (ipa_callsite_param_set_info_type_formal): Removed.
20934         (ipa_callsite_param_set_info_type): Removed.
20935         (ipa_callsite_param_map_create): Removed.
20936         (ipa_callsite_tree): Removed.
20937         (ipa_callsite_caller): Removed.
20938         (ipa_pop_func_from_list): return_method removed to return_func
20939
20940         * ipa-prop.h (enum cvalue_type): Renamed to ipa_lattice_type,
20941         prefixed all values with IPA_. Changed all users.
20942         (enum jump_func_type): Rnamed UNKNOWN_IPATYPE to IPA_UNKNOWN,
20943         CONST_IPATYPE to IPA_CONST, CONST_IPATYPE_REF to IPA_CONST_REF
20944         and FORMAL_IPATYPE IPA_PASS_THROUGH.
20945         (union parameter_info): Renamed to jump_func_value.
20946         (union jump_func_value): Renamed value to constant
20947         (struct ipa_jump_func): Renamed info_type to value
20948         (struct ipa_node): Renamed to ipa_node_params
20949         (struct ipa_node_params): Renamed ipa_arg_num to param_count
20950         (struct ipa_node_params): Renamed ipa_param_tree to param_decls
20951         (struct ipa_node_params): Renamed ipa_mod to modified_flags
20952         (struct ipa_edge): Renamed to ipa_edge_args
20953         (struct ipa_edge_args): Renamed ipa_param_num to argument_count
20954         (struct ipa_edge_args): Renamed ipa_param_map to jump_functions
20955         (struct ipa_methodlist): Renamed to ipa_func_list
20956         (struct ipa_func_list): method_p renamed to node, next_method
20957         renamed to next
20958         (ipa_methodlist_p): Removed, switched all users to struct pointer
20959         (IS_VALID_TREE_MAP_INDEX): Renamed to IS_VALID_JUMP_FUNC_INDEX
20960
20961 2008-04-30  Alan Modra  <amodra@bigpond.net.au>
20962
20963         * config/rs6000/rs6000.c (ALWAYS_RESTORE_ALTIVEC_BEFORE_POP): Define.
20964         (rs6000_emit_epilogue): Use backchain to restore only when we
20965         have a large frame.  Make use of frame pointer to restore if we
20966         have one.  Handle ALWAYS_RESTORE_ALTIVEC_BEFORE_POP.
20967
20968 2008-04-29  Paolo Bonzini  <bonzini@gnu.org>
20969
20970         * config/avr/avr.md (*sbrx_branch, *sbix_branch, *sbix_branch_tmp):
20971         Add mode to zero_extract.
20972         (sign bit tests peepholes): (Ditto.).
20973
20974 2008-04-29  H.J. Lu  <hongjiu.lu@intel.com>
20975
20976         * config/i386/i386.c (ix86_builtins): Replace Prescott New
20977         Instructions in comments with SSE3.
20978         (ix86_builtin_type): This.  Add FLOAT128_FTYPE_FLOAT128,
20979         INT64_FTYPE_V4SF, INT64_FTYPE_V2DF, INT_FTYPE_V16QI,
20980         INT_FTYPE_V8QI, INT_FTYPE_V4SF, INT_FTYPE_V2DF,
20981         V16QI_FTYPE_V16QI, V8HI_FTYPE_V8HI, V8HI_FTYPE_V16QI,
20982         V8QI_FTYPE_V8QI, V4SI_FTYPE_V4SI, V4SI_FTYPE_V16QI,
20983         V4SI_FTYPE_V4SF, V4SI_FTYPE_V8HI, V4SI_FTYPE_V2DF,
20984         V4HI_FTYPE_V4HI, V4SF_FTYPE_V4SF, V4SF_FTYPE_V4SI,
20985         V4SF_FTYPE_V2DF, V2DI_FTYPE_V2DI, V2DI_FTYPE_V16QI,
20986         V2DI_FTYPE_V8HI, V2DI_FTYPE_V4SI, V2DF_FTYPE_V2DF,
20987         V2DF_FTYPE_V4SI, V2DF_FTYPE_V4SF, V2DF_FTYPE_V2SI,
20988         V2SI_FTYPE_V2SI, V2SI_FTYPE_V4SF, V2SI_FTYPE_V2SF,
20989         V2SI_FTYPE_V2DF, V2SF_FTYPE_V2SF and V2SF_FTYPE_V2SI.
20990         (bdesc_sse_args): Renamed to ...
20991         (bdesc_args): This.  Add IX86_BUILTIN_PF2ID, IX86_BUILTIN_PFRCP,
20992         IX86_BUILTIN_PFRSQRT, IX86_BUILTIN_PI2FD, IX86_BUILTIN_PF2IW,
20993         IX86_BUILTIN_PSWAPDSI, IX86_BUILTIN_PSWAPDSF and
20994         IX86_BUILTIN_FABSQ.
20995         (bdesc_1arg): Moved to ...
20996         (bdesc_args): Here.
20997         (ix86_init_mmx_sse_builtins): Updated.  Replace Prescott New
20998         Instructions in comments with SSE3.
20999         (ix86_expand_sse_operands_builtin): Renamed to ...
21000         (ix86_expand_args_builtin): This.  Updated.
21001         (ix86_expand_unop1_builtin): Update comments.
21002         (ix86_expand_builtin): Updated.
21003
21004 2008-04-29  Richard Guenther  <rguenther@suse.de>
21005
21006         PR tree-optimization/36078
21007         * tree-ssa-loop-ivcanon.c (tree_unroll_loops_completely):
21008         Update virtual SSA form after cleaning up the CFG.
21009
21010 2008-04-29  Richard Guenther  <rguenther@suse.de>
21011
21012         PR middle-end/15255
21013         * fold-const.c (fold_binary): Fold (A + A) * C to A * 2*C.
21014
21015 2008-04-29  Richard Guenther  <rguenther@suse.de>
21016
21017         * tree-ssa-alias.c (finalize_ref_all_pointers): Remove.
21018         (compute_may_aliases): Do not call finalize_ref_all_pointers.
21019         (compute_flow_insensitive_aliasing): Do not treat
21020         PTR_IS_REF_ALL pointers special.
21021         (get_smt_for): Likewise.
21022         (may_alias_p): Re-structure.
21023         (is_escape_site): A ref-all pointer conversion is not an escape site.
21024         * tree-ssa-structalias.c (find_what_p_points_to): Do not treat
21025         PTR_IS_REF_ALL pointers special.
21026         * tree-ssa-structalias.h (struct alias_info): Remove
21027         ref_all_symbol_mem_tag field.
21028         (PTR_IS_REF_ALL): Remove.
21029
21030 2008-04-29  Richard Guenther  <rguenther@suse.de>
21031
21032         PR middle-end/36077
21033         * fold-const.c (extract_muldiv_1): In combining division constants
21034         make sure to never overflow.
21035
21036 2008-04-29  Nick Clifton  <nickc@redhat.com>
21037
21038         * doc/tm.texi (RETURN_ADDR_RTX): Fix typo.
21039
21040 2008-04-28  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
21041
21042         PR bootstrap/35169
21043         * optc-gen.awk: Work around HP-UX/IA awk bug.
21044
21045 2008-04-28  Danny Smith  <dannysmith@users.sourceforge.net>
21046
21047         * config/i386/cygming-crtend.c (register_frame_ctor): Revert my
21048         2008-04-25 commit.
21049
21050 2008-04-28  Uros Bizjak  <ubizjak@gmail.com>
21051
21052         PR target/36073
21053         * config/i386/i386.md
21054         (*float<SSEMODEI24:mode><MODEF:mode>2_mixed_interunit):
21055         Change operand 1 predicate to nonimmediate_operand.
21056
21057 2008-04-28  Jakub Jelinek  <jakub@redhat.com>
21058
21059         PR debug/36060
21060         * dwarf2out.c (struct die_struct): Mark as chain_circular through
21061         die_sub field.
21062         * gengtype.c (walk_type, write_func_for_structure): Handle
21063         chain_circular.
21064         * doc/gty.texi: Document chain_circular.
21065
21066 2008-04-28  Richard Guenther  <rguenther@suse.de>
21067
21068         PR tree-optimization/36066
21069         * tree-vrp.c (execute_vrp): Cleanup the CFG only after finalizing
21070         SCEV and loop.
21071
21072 2008-04-28  Uros Bizjak  <ubizjak@gmail.com>
21073
21074         PR target/36064
21075         * config/i386/i386.md
21076         (floatdi<X87MODEF:mode>2_i387_with_xmm splitters):
21077         Use match_scratch instead of match_operand for operands 3 and 4.
21078
21079 2008-04-27  Richard Guenther  <rguenther@suse.de>
21080
21081         PR tree-optimization/18754
21082         PR tree-optimization/34223
21083         * tree-pass.h (pass_complete_unrolli): Declare.
21084         * tree-ssa-loop-ivcanon.c (try_unroll_loop_completely): Print
21085         loop size before and after unconditionally of UL_NO_GROWTH in effect.
21086         Rewrite loop into loop closed SSA form if it is not already.
21087         (tree_unroll_loops_completely): Re-structure to iterate over
21088         innermost loops with intermediate CFG cleanups.
21089         Unroll outermost loops only if requested or the code does not grow
21090         doing so.
21091         * tree-ssa-loop.c (gate_tree_vectorize): Don't shortcut if no
21092         loops are available.
21093         (tree_vectorize): Instead do so here.
21094         (tree_complete_unroll): Also unroll outermost loops.
21095         (tree_complete_unroll_inner): New function.
21096         (gate_tree_complete_unroll_inner): Likewise.
21097         (pass_complete_unrolli): New pass.
21098         * tree-ssa-loop-manip.c (find_uses_to_rename_use): Only record
21099         uses outside of the loop.
21100         (tree_duplicate_loop_to_header_edge): Only verify loop-closed SSA
21101         form if it is available.
21102         * tree-flow.h (tree_unroll_loops_completely): Add extra parameter.
21103         * passes.c (init_optimization_passes): Schedule complete inner
21104         loop unrolling pass before the first CCP pass after final inlining.
21105
21106 2008-04-27  Nathan Sidwell  <nathan@codesourcery.com>
21107
21108         * targhooks.h (default_emutls_var_fields,
21109         default_emutls_var_init): Declare.
21110         * tree.h (DECL_THREAD_LOCAL): Compare against TLS_MODEL_REAL.
21111         * target.h (struct gcc_target): Add struct emutls member.
21112         * target-def.h (TARGET_EMUTLS_GET_ADDRESS,
21113         TARGET_EMUTLS_REGISTER_COMMON, TARGET_EMUTLS_VAR_SECTION,
21114         TARGET_EMUTLS_TMPL_SECTION, TARGET_EMUTLS_VAR_PREFIX,
21115         TARGET_EMUTLS_TMPL_PREFIX, TARGET_EMUTLS_VAR_FIELDS,
21116         TARGET_EMUTLS_VAR_INIT, TARGET_EMUTLS_DEBUG_FORM_TLS_ADDRESS,
21117         TARGET_EMUTLS_VAR_ALIGN_FIXED, TARGET_EMUTLS): New.
21118         (TARGET_INITIALIZER): Add TARGET_EMUTLS.
21119         * builtins.def (BUILT_IN_EMUTLS_GET_ADDRESS,
21120         BUILT_IN_EMUTLS_REGISTER_COMMON): Get name from targetm structure.
21121         * dwarf2out.c (loc_descriptor_from_tree_1): Check if emutls can
21122         emit debug information.
21123         * coretypes.h (tls_model): Add TLS_MODEL_EMULATED, TLS_MODEL_REAL.
21124         * varasm.c: Include targhooks.h.
21125         (emutls_object_section, emutls_tmpl_section): New.
21126         (EMUTLS_VAR_PREFIX, EMUTLS_TMPL_PREFIX): Remove.
21127         (EMUTLS_SEPARATOR): New.
21128         (prefix_name): New.
21129         (get_emutls_object_name): New.
21130         (default_emutls_var_fields): New, broken out of ...
21131         (get_emutls_object_type): ... here.  Adjust to use target hooks.
21132         (get_emutls_init_templ_addr): Adjust to use target hooks.
21133         (emutls_decl): Adjust to use target hooks.
21134         (emutls_finish): Likewise.
21135         (default_emutls_var_init): New, broken out of ...
21136         (assemble_variable): ... here.  Adjust to use target hooks.
21137         * output.h (enum section_category): Add SECCAT_EMUTLS_VAR,
21138         SECCAT_EMUTLS_TMPL.
21139         * c-common.c (handle_section_attribute): Prevent overriding
21140         sections for emulated tls with special sections.
21141         * config/i386/i386.c (x86_64_elf_select_section): Add
21142         SECCAT_EMUTLS_VAR and SECCAT_EMUTLS_TMPL.
21143         (x86_64_elf_unique_section): Likewise.
21144         * config/vxworks.c: Include tree.h.
21145         (vxworks_emutls_var_fields, vxworks_emutls_var_init): New.
21146         (vxworks_override_options): Set TLS scheme.
21147         * doc/tm.texi (Emulated TLS): New node.
21148
21149 2008-04-26  Simon Baldwin <simonb@google.com>
21150
21151         PR c/35652
21152         * builtins.c (c_strlen): Suppressed multiple warnings that can occur
21153         with propagated string constants.
21154
21155 2008-04-26  Uros Bizjak  <ubizjak@gmail.com>
21156
21157         * config/i386/i386.md (fix_trunc<mode>_i387_fisttp_with_temp): Use 'X'
21158         constraint for operand 2 when operand 0 is memory operand.
21159         (fix_truncdi_i387_with_temp): : Use 'X' constraint for operand 4 when
21160         operand 0 is memory operand.
21161         (fix_trunc<mode>_i387_with_temp): Ditto.
21162         (*floatsi<mode>2_vector_mixed_with_temp): Use 'X' constraint for
21163         operand 2 when operand 1 is memory operand.
21164         (*float<SSEMODEI24:mode><MODEF:mode>2_mixed_with_temp): Ditto.
21165         (*floatsi<mode>2_vector_sse_with_temp): Ditto.
21166         (*float<SSEMODEI24:mode><MODEF:mode>2_sse_with_temp): Ditto.
21167         (*float<SSEMODEI24:mode><X87MODEF:mode>2_i387_with_temp): Ditto.
21168         (floatdi<X87MODEF:mode>2_i387_with_xmm): Use 'X' constraint for
21169         operands 2,3 and 4 when operand 1 is memory operand.
21170         (fistdi2_with_temp): Use 'X' constraint for operand 2 when operand 0
21171         is memory operand.
21172         (fistdi2_floor_with_temp): Ditto.
21173         (fist<mode>2_floor_with_temp): Ditto.
21174         (fistdi2_ceil_with_temp): Ditto.
21175         (fist<mode>2_ceil_with_temp): Ditto.
21176         (*truncdfsf_fast_mixed): Merge alternatives 0 and 1.
21177
21178 2008-04-26  David Daney  <ddaney@avtrex.com>
21179
21180         * config/mips/mips.md (UNSPEC_COMPARE_AND_SWAP_12): New
21181         unspec_volitile.
21182         (UNSPEC_SYNC_OLD_OP, UNSPEC_SYNC_NEW_OP, UNSPEC_SYNC_EXCHANGE,
21183         UNSPEC_MEMORY_BARRIER, UNSPEC_SET_GOT_VERSION,
21184         UNSPEC_UPDATE_GOT_VERSION): Renumber.
21185         (sync_compare_and_swap<mode>): New expand for QI and HI modes.
21186         (compare_and_swap_12): New insn.
21187         * config/mips/mips-protos.h (mips_expand_compare_and_swap_12): Declare.
21188         * config/mips/mips.c (mips_force_binary): New function.
21189         (mips_emit_int_order_test, mips_expand_synci_loop): Use it.
21190         (mips_expand_compare_and_swap_12): New function.
21191         * config/mips/mips.h (MIPS_COMPARE_AND_SWAP_12): New macro.
21192
21193 2008-04-25  Jan Hubicka  <jh@suse.cz>
21194
21195         PR testsuite/35843
21196         * cfgexpand.c (pass_expand): Turn into RTL pass.
21197         * passes.c (execute_one_pass): Do pass typechecking after execution.
21198         * tree-pass.h (pass_expand): Turn into RTL pass.
21199
21200         * function.h (struct rtl_data): Move here fields
21201         accesses_prior_frames, calls_eh_return, saves_all_registers,
21202         has_nonlocal_goto, has_asm_statement, is_thunk,
21203         all_throwers_are_sibcalls, limit_stack, profile, uses_const_pool,
21204         uses_pic_offset_table, uses_eh_lsda, tail_call_emit,
21205         arg_pointer_save_area_init from struct function; turn into bool.
21206         (struct function): Move
21207         calls_eh_return, saves_all_registers, has_nonlocal_goto,
21208         has_asm_statement, is_thunk, all_throwers_are_sibcalls, limit_stack,
21209         profile, uses_const_pool, uses_pic_offset_table, uses_eh_lsda,
21210         tail_call_emit, arg_pointer_save_area_init
21211         into struct rtl_data.  Remove recursive_call_emit and gimplified flags.
21212         (current_function_returns_struct, current_function_returns_pcc_struct,
21213         current_function_calls_setjmp, current_function_calls_alloca,
21214         current_function_accesses_prior_frames,
21215         current_function_calls_eh_return, current_function_is_thunk,
21216         current_function_stdarg, current_function_profile,
21217         current_function_limit_stack, current_function_uses_pic_offset_table,
21218         current_function_uses_const_pool, current_function_has_nonlocal_label,
21219         current_function_saves_all_registers,
21220         current_function_has_nonlocal_goto,
21221         current_function_has_asm_statement): Remove accesor macros.
21222         * ra-conflict.c (global_conflicts): Update.
21223         * tree-tailcall.c (suitable_for_tail_opt_p): Update.
21224         (suitable_for_tail_call_opt_p): Update.
21225         * builtins.c (expand_builtin_return_addr): Update.
21226         (expand_builtin_setjmp_setup): Update.
21227         (expand_builtin_nonlocal_goto): Update.
21228         * final.c (final_start_function): Update.
21229         (profile_function): Update.
21230         (leaf_function_p): Update.
21231         (only_leaf_regs_used): Update.
21232         * df-scan.c (df_get_exit_block_use_set): Update.
21233         * dojump.c (clear_pending_stack_adjust): Update.
21234         * tree-stdarg.c (gate_optimize_stdarg): Update.
21235         * gimple-low.c (lower_function_body): Update.
21236         * global.c (compute_regsets): Update.
21237         (global_alloc): Update.
21238         * dwarf2out.c (dwarf2out_begin_prologue): Update.
21239         * expr.c (expand_assignment): Update.
21240         * dse.c (dse_step0): Update.
21241         (dse_step1): Update.
21242         * c-decl.c (store_parm_decls): Update.
21243         * local-alloc.c (combine_regs): Update.
21244         (find_free_reg): Update.
21245         * function.c (assign_parms_augmented_arg_list): Update.
21246         (assign_parm_find_data_types): Update.
21247         (assign_parms): Update.
21248         (allocate_struct_function): Update.
21249         (expand_function_start): Update.
21250         (expand_function_end): Update.
21251         (get_arg_pointer_save_area): Update.
21252         (thread_prologue_and_epilogue_insns): Update.
21253         (rest_of_match_asm_constraints): Update.
21254         * stor-layout.c (variable_size): Update.
21255         * gcse.c (gcse_main): Update.
21256         (bypass_jumps): Update.
21257         * gimplify.c (gimplify_function_tree): Update.
21258         * calls.c (emit_call_1): Update.
21259         (expand_call): Update.
21260         * bt-load.c (compute_defs_uses_and_gen): Update.
21261         * except.c (sjlj_assign_call_site_values): Update.
21262         (sjlj_emit_function_enter): Update.
21263         (can_throw_external): Update.
21264         (set_nothrow_function_flags): Update.
21265         (expand_builtin_unwind_init): Update.
21266         (expand_eh_return): Update.
21267         (convert_to_eh_region_ranges): Update.
21268         (output_function_exception_table): Update.
21269         * emit-rtl.c (gen_tmp_stack_mem): Update.
21270         * cfgexpand.c (expand_used_vars): Update.
21271         (tree_expand_cfg): Update.
21272         * cfgcleanup.c (rest_of_handle_jump): Update.
21273         * explow.c (allocate_dynamic_stack_space): Update.
21274         * varasm.c (assemble_start_function): Update.
21275         (force_const_mem): Update.
21276         (mark_constant_pool): Update.
21277         * tree-optimize.c (tree_rest_of_compilation): Update.
21278         * stack-ptr-mod.c (notice_stack_pointer_modification): Update.
21279         * tree-cfg.c (notice_special_calls): Update.
21280         (is_ctrl_altering_stmt): Update.
21281         (tree_can_make_abnormal_goto): Update.
21282         (tree_purge_dead_abnormal_call_edges): Update.
21283         * config/alpha/predicates.md: Update.
21284         * config/alpha/alpha.c (alpha_sa_mask): Update.
21285         (alpha_sa_size): Update.
21286         (alpha_does_function_need_gp): Update.
21287         (alpha_expand_prologue): Update.
21288         (alpha_start_function): Update.
21289         (alpha_output_function_end_prologue): Update.
21290         (alpha_expand_epilogue): Update.
21291         * config/frv/frv.c (frv_stack_info): Update.
21292         (frv_expand_epilogue): Update.
21293         * config/s390/s390.c (s390_regs_ever_clobbered): Update.
21294         (s390_register_info): Update.
21295         (s390_frame_info): Update.
21296         (s390_init_frame_layout): Update.
21297         (s390_can_eliminate): Update.
21298         (save_gprs): Update.
21299         * config/spu/spu.c (spu_split_immediate): Update.
21300         (need_to_save_reg): Update.
21301         (spu_expand_prologue): Update.
21302         (spu_expand_epilogue): Update.
21303         * config/sparc/sparc.md: Update.
21304         * config/sparc/sparc.c (eligible_for_return_delay): Update.
21305         (sparc_tls_got): Update.
21306         (legitimize_pic_address): Update.
21307         (sparc_emit_call_insn): Update.
21308         (sparc_expand_prologue): Update.
21309         (output_return): Update.
21310         (print_operand): Update.
21311         (sparc_function_ok_for_sibcall): Update.
21312         * config/sparc/sparc.h (EXIT_IGNORE_STACK): Update.
21313         * config/m32r/m32r.md: Update.
21314         * config/m32r/m32r.c (MUST_SAVE_RETURN_ADDR): Update.
21315         (m32r_compute_frame_size): Update.
21316         (m32r_expand_prologue): Update.
21317         (m32r_expand_epilogue): Update.
21318         (m32r_legitimize_pic_address): Update.
21319         * config/m32r/m32r.h (FRAME_POINTER_REQUIRED): Update.
21320         * config/i386/linux.h (SUBTARGET_FRAME_POINTER_REQUIRED): Update.
21321         * config/i386/i386.c (ix86_frame_pointer_required): Update.
21322         (gen_push): Update.
21323         (ix86_save_reg): Update.
21324         (ix86_compute_frame_layout): Update.
21325         (ix86_expand_prologue): Update.
21326         (ix86_expand_epilogue): Update.
21327         * config/sh/sh.c (output_stack_adjust): Update.
21328         (calc_live_regs): Update.
21329         (sh5_schedule_saves): Update.
21330         (sh_expand_prologue): Update.
21331         (sh_expand_epilogue): Update.
21332         (sh_setup_incoming_varargs): Update.
21333         (sh_allocate_initial_value): Update.
21334         (sh_get_pr_initial_val): Update.
21335         * config/sh/sh.h (SHMEDIA_REGS_STACK_ADJUST): Update.
21336         * config/sh/sh.md (label:): Update.
21337         * config/avr/avr.c (out_movhi_mr_r): Update.
21338         * config/crx/crx.h (enum): Update.
21339         * config/xtensa/xtensa.h (along): Update.
21340         * config/stormy16/stormy16.c Update.
21341         (xstormy16_compute_stack_layout): Update.
21342         * config/fr30/fr30.c (MUST_SAVE_RETURN_POINTER): Update.
21343         (fr30_expand_prologue): Update.
21344         * config/cris/cris.c (cris_conditional_register_usage): Update.
21345         (cris_reg_saved_in_regsave_area): Update.
21346         (cris_initial_frame_pointer_offset): Update.
21347         (cris_simple_epilogue): Update.
21348         (cris_expand_prologue): Update.
21349         (cris_expand_epilogue): Update.
21350         (cris_expand_pic_call_address): Update.
21351         (cris_asm_output_symbol_ref): Update.
21352         (cris_asm_output_label_ref): Update.
21353         * config/cris/cris.md Update.
21354         * config/iq2000/iq2000.c (compute_frame_size): Update.
21355         (iq2000_expand_epilogue): Update.
21356         * config/mt/mt.h (save_direction): Update.
21357         * config/mn10300/mn10300.c (mn10300_function_value): Update.
21358         * config/ia64/ia64.c (ia64_compute_frame_size): Update.
21359         (ia64_secondary_reload_class): Update.
21360         * config/m68k/m68k.c (m68k_save_reg): Update.
21361         (m68k_expand_prologue): Update.
21362         (m68k_expand_epilogue): Update.
21363         (legitimize_pic_address): Update.
21364         * config/rs6000/rs6000.c (rs6000_got_register): Update.
21365         (first_reg_to_save): Update.
21366         (first_altivec_reg_to_save): Update.
21367         (compute_vrsave_mask): Update.
21368         (compute_save_world_info): Update.
21369         (rs6000_stack_info): Update.
21370         (spe_func_has_64bit_regs_p): Update.
21371         (rs6000_ra_ever_killed): Update.
21372         (rs6000_emit_eh_reg_restore): Update.
21373         (rs6000_emit_allocate_stack): Update.
21374         (rs6000_emit_prologue): Update.
21375         (rs6000_emit_epilogue): Update.
21376         (rs6000_output_function_epilogue): Update.
21377         (output_profile_hook): Update.
21378         (rs6000_elf_declare_function_name): Update.
21379         * config/rs6000/rs6000.h (rs6000_args): Update.
21380         * config/rs6000/rs6000.md: Update.
21381         * config/mcore/mcore.c (mcore_expand_prolog): Update.
21382         * config/arc/arc.c (arc_output_function_epilogue): Update.
21383         * config/arc/arc.h (FRAME_POINTER_REQUIRED): Update.
21384         * config/darwin.c (machopic_function_base_name): Update.
21385         * config/score/score3.c (score3_compute_frame_size): Update.
21386         (rpush): Update.
21387         (rpop): Update.
21388         (score3_epilogue): Update.
21389         * config/score/score7.c (score7_compute_frame_size): Update.
21390         (score7_prologue): Update.
21391         (score7_epilogue): Update.
21392         * config/score/score.h (FRAME_POINTER_REQUIRED): Update.
21393         * config/arm/linux-elf.h (SUBTARGET_FRAME_POINTER_REQUIRED): Update.
21394         * config/arm/arm.c (use_return_insn): Update.
21395         (require_pic_register): Update.
21396         (arm_load_pic_register): Update.
21397         (arm_compute_save_reg0_reg12_mask): Update.
21398         (arm_compute_save_reg_mask): Update.
21399         (thumb1_compute_save_reg_mask): Update.
21400         (output_return_instruction): Update.
21401         (arm_output_function_prologue): Update.
21402         (arm_output_epilogue): Update.
21403         (arm_get_frame_offsets): Update.
21404         (arm_expand_prologue): Update.
21405         (thumb_pushpop): Update.
21406         (thumb_exit): Update.
21407         (thumb1_expand_prologue): Update.
21408         (thumb1_expand_epilogue): Update.
21409         (arm_unwind_emit): Update.
21410         (arm_output_fn_unwind): Update.
21411         * config/arm/arm.h (FRAME_POINTER_REQUIRED): Update.
21412         * config/arm/arm.md: Update.
21413         * config/pa/pa.md: Update.
21414         * config/pa/pa.c (legitimize_pic_address): Update.
21415         (compute_frame_size): Update.
21416         (hppa_expand_prologue): Update.
21417         (hppa_expand_epilogue): Update.
21418         (borx_reg_operand): Update.
21419         * config/pa/pa.h (FRAME_POINTER_REQUIRED): Update.
21420         (HARD_REGNO_RENAME_OK): Update.
21421         * config/mips/mips.c (mips_global_pointer): Update.
21422         (mips_save_reg_p): Update.
21423         (mips_compute_frame_info): Update.
21424         (mips_frame_pointer_required): Update.
21425         (mips_expand_prologue): Update.
21426         (mips_expand_epilogue): Update.
21427         (mips_can_use_return_insn): Update.
21428         (mips_reorg_process_insns): Update.
21429         * config/v850/v850.c (compute_register_save_size): Update.
21430         * config/mmix/mmix.h (FRAME_POINTER_REQUIRED): Update.
21431         * config/mmix/mmix.c (along): Update.
21432         (mmix_expand_epilogue): Update.
21433         * config/bfin/bfin.c (legitimize_pic_address): Update.
21434         (must_save_p): Update.
21435         (stack_frame_needed_p): Update.
21436         (add_to_reg): Update.
21437         (bfin_expand_prologue): Update.
21438         * stmt.c (expand_asm_operands): Update.
21439         * reload1.c (reload): Update.
21440         (init_elim_table): Update.
21441
21442 2008-04-25  Bob Wilson  <bob.wilson@acm.org>
21443
21444         * optabs.c (expand_float): Fix REG_EQUAL for UNSIGNED_FLOAT libcall.
21445
21446 2008-04-25  H.J. Lu  <hongjiu.lu@intel.com>
21447
21448         * config/i386/sse.md (mov<mode>): Replace SSEMODEI with SSEMODE.
21449         (*mov<mode>_internal): Likewise.  Support V4SF and V2DF.
21450         (mov<mode>): Removed.
21451         (*movv4sf_internal): Likewise.
21452         (*movv2df_internal): Likewise.
21453
21454 2008-04-25  Pompapathi V Gadad <Pompapathi.V.Gadad@nsc.com>
21455
21456         * config.gcc (crx-*-elf): Remove deprecation.
21457
21458 2008-04-25  Danny Smith  <dannysmith@users.sourceforge.net>
21459
21460         * config/i386/cygming-crtend.c (register_frame_ctor): Register
21461         __gcc_deregister_frame with atexit.
21462         (deregister_frame_dtor): Remove.
21463
21464 2008-04-24  Nathan Froyd  <froydnj@codesourcery.com>
21465             Nathan Sidwell  <nathan@codesourcery.com>
21466
21467         * config/rs6000/rs6000.opt (mspe): Remove Var property.
21468         (misel): Likewise.
21469         * config/rs6000/rs6000.h (rs6000_spe): Declare.
21470         (rs6000_isel): Likewise.
21471         * config/rs6000/rs6000.c (rs6000_spe): New variable.
21472         (rs6000_isel): New variable.
21473         (rs6000_handle_option): Handle OPT_mspe and OPT_misel.
21474
21475 2008-04-24  Jakub Jelinek  <jakub@redhat.com>
21476
21477         PR c++/35758
21478         * c-common.c (handle_vector_size_attribute): Call
21479         lang_hooks.types.reconstruct_complex_type instead of
21480         reconstruct_complex_type.
21481         * config/rs6000/rs6000.c (rs6000_handle_altivec_attribute): Likewise.
21482         * config/spu/spu.c (spu_handle_vector_attribute): Likewise.
21483         * langhooks.h (struct lang_hooks_for_types): Add
21484         reconstruct_complex_type hook.
21485         * langhooks-def.h (LANG_HOOKS_RECONSTRUCT_COMPLEX_TYPE): Define.
21486         (LANG_HOOKS_FOR_TYPES_INITIALIZER): Add it.
21487
21488 2008-04-24  Richard Guenther  <rguenther@suse.de>
21489
21490         * c-common.h (check_builtin_function_arguments): Declare.
21491         * c-common.c (validate_nargs): New function.
21492         (check_builtin_function_arguments): Likewise.
21493         * c-typeck.c (build_function_call): Call
21494         check_builtin_function_arguments.
21495         * builtins.c (fold_builtin_classify): Remove error reporting code.
21496         (fold_builtin_unordered_cmp): Likewise.
21497         (fold_builtin_1): Likewise.
21498         (fold_builtin_n): Likewise.
21499
21500 2008-04-24  Jakub Jelinek  <jakub@redhat.com>
21501
21502         PR tree-optimization/36008
21503         * fold-const.c (try_move_mult_to_index): If s == NULL, divide
21504         the original op1, rather than delta by step.
21505
21506 2008-04-22  Antoniu Pop  <antoniu.pop@gmail.com>
21507             Sebastian Pop  <sebastian.pop@amd.com>
21508
21509         * tree-parloops.c (take_address_of, eliminate_local_variables_1,
21510         eliminate_local_variables_stmt, eliminate_local_variables,
21511         separate_decls_in_loop_name, separate_decls_in_loop_stmt,
21512         separate_decls_in_loop, gen_parallel_loop): Make them work on a region
21513         of code delimited by two edges in the CFG.
21514         (separate_decls_in_loop_name): Renamed separate_decls_in_region_name.
21515         (separate_decls_in_loop_stmt): Renamed separate_decls_in_region_stmt.
21516         (separate_decls_in_loop): Renamed separate_decls_in_region.  Isolate
21517         the case of parallelisation of reductions.
21518         (expr_invariant_in_region_p): New.
21519
21520         * tree-flow.h (gather_blocks_in_sese_region): Declared.
21521         * tree-cfg.c (gather_blocks_in_sese_region): Extern.
21522
21523 2008-04-24  Ira Rosen  <irar@il.ibm.com>
21524             Richard Guenther  <rguenther@suse.de>
21525
21526         PR tree-optimization/36034
21527         * tree-vect-analyze.c (vect_analyze_group_access): SLP is
21528         incapable of dealing with loads with gaps.
21529
21530 2008-04-24  Rafael Espíndola  <espindola@google.com>
21531
21532         * tree-flow.h (vrp_evaluate_conditional): Change signature.
21533         * tree-ssa-propagate.c (fold_predicate_in): Update call to
21534         vrp_evaluate_conditional.
21535         * tree-vrp.c (vrp_evaluate_conditional_warnv): Remove.
21536         (vrp_evaluate_conditional): Split the cond argument.
21537         (vrp_visit_cond_stmt): Use vrp_evaluate_conditional_warnv_with_ops.
21538         (simplify_stmt_for_jump_threading): Update call to
21539         vrp_evaluate_conditional.
21540
21541 2008-04-24  Ira Rosen  <irar@il.ibm.com>
21542
21543         PR tree-optimization/35982
21544         * tree-vect-analyze.c (vect_check_interleaving): Check that the
21545         interleaved data-refs are of the same type.
21546
21547 2008-04-24  Danny Smith  <dannysmith@users.net>
21548
21549         * c-format.c (check_format_info_main): Use strncmp rather than a
21550         magic prefix to handle multichar length specs.
21551         * config/i386/msformat-c.c (format_length_info ms_printf_length_specs):
21552         Don't prefix "I64" and "I32" with '\0'.
21553
21554 2008-04-24  Jakub Jelinek  <jakub@redhat.com>
21555
21556         PR target/36015
21557         * config/i386/i386.c (init_cumulative_args): Don't pass anything
21558         in registers for -m32 only if stdarg_p (fntype).
21559
21560 2008-04-24  Uros Bizjak  <ubizjak@gmail.com>
21561
21562         PR rtl-optimization/36006
21563         * expmed.c (store_fixed_bit_field): Copy op0 rtx before moving
21564         temp to op0 in order to avoid invalid rtx sharing.
21565
21566 2008-04-23  Paolo Bonzini  <bonzini@gnu.org>
21567
21568         * tree-cfg.c (verify_expr): Check with is_gimple_address.  Don't
21569         check TREE_INVARIANT.
21570         * tree-gimple.c (is_gimple_address): New.
21571         (is_gimple_invariant_address): Simplify using decl_address_invariant_p.
21572         * tree-gimple.h (is_gimple_address): New.
21573         * tree.h (decl_address_invariant_p): New.
21574         * tree.c (make_node_stat): Don't set TREE_INVARIANT.
21575         (build_string): Likewise.
21576         (decl_address_invariant_p): New, from is_gimple_invariant_address.
21577         (tree_invariant_p_1): Likewise.
21578         (save_expr): Use it.
21579         (tree_invariant_p): New.
21580         (skip_simple_arithmetic): Use it.
21581         (stabilize_reference_1): Use it.
21582         (recompute_tree_invariant_for_addr_expr): Don't update TREE_INVARIANT,
21583         simplify.
21584         (build1_stat): Drop code to compute TREE_INVARIANT.
21585         (build2_stat): Drop code to compute TREE_INVARIANT.
21586         (build3_stat): Drop code to compute TREE_INVARIANT.
21587         (build4_stat): Drop code to compute TREE_INVARIANT.
21588         (build5_stat): Drop code to compute TREE_INVARIANT.
21589         (build7_stat): Drop code to compute TREE_INVARIANT.
21590         (merge_dllimport_decl_attributes): Don't mention TREE_INVARIANT.
21591         * tree.h (struct tree_base): Remove invariant_flag.
21592         (TREE_INVARIANT): Remove.
21593         * builtins.c (build_string_literal): Don't set TREE_INVARIANT.
21594         (fold_builtin_expect): Check TREE_CONSTANT.
21595         * tree-ssa-ccp.c (fold_stmt_r): Adjust comment.
21596         * c-tree.h (c_expr_to_decl): Drop third parameter.
21597         * c-typeck.c (build_external_ref): Don't set TREE_INVARIANT.
21598         (build_c_cast): Don't set TREE_INVARIANT.
21599         (pop_init_level): Don't set TREE_INVARIANT.
21600         (c_objc_common_truthvalue_conversion): Don't set TREE_INVARIANT.
21601         * gimplify.c (gimplify_init_ctor_preeval): Add assertion, test
21602         TREE_CONSTANT.
21603         (gimplify_init_constructor): Don't set TREE_INVARIANT.
21604         (gimplify_addr_expr): Adjust comment.
21605         * tree-mudflap.c (mf_build_string):
21606         * print-tree.c (print_node): Don't print TREE_INVARIANT.
21607         * tree-nested.c (convert_nonlocal_reference): Adjust comment.
21608         * c-common.c (fix_string_type): Don't set TREE_INVARIANT.
21609         * langhooks-def.h (lhd_expr_to_decl): Drop third parameter.
21610         * langhooks.c (lhd_expr_to_decl): Drop third parameter.
21611         * langhooks.h (struct lang_hooks): Drop third parameter from
21612         expr_to_decl.
21613
21614 2008-04-23  Richard Guenther  <rguenther@suse.de>
21615
21616         PR tree-optimization/27799
21617         PR tree-optimization/32921
21618         PR tree-optimization/32624
21619         * tree-ssa-structalias.c (merge_smts_into): Only merge the
21620         SMTs aliases and the tag itself into the solution.
21621         * tree-ssa-alias.c (compute_flow_sensitive_aliasing): Do not
21622         merge the points-to solution back into the SMT aliases.
21623         (may_alias_p): Use alias_set_subset_of instead of
21624         aliases_conflict_p.  A pointer which points to
21625         memory with alias set zero may access any variable.
21626
21627 2008-04-23  Richard Guenther  <rguenther@suse.de>
21628
21629         * alias.c (alias_set_subset_of): Correctly handle asking
21630         if zero is a subset of an alias set with zero child.
21631         * tree-ssa-alias.c (have_common_aliases_p): Simplify logic.
21632         (compute_flow_insensitive_aliasing): Correctly walk all
21633         pointers.  Do not unnecessarily union sets.
21634
21635 2008-04-23  Richard Guenther  <rguenther@suse.de>
21636
21637         PR middle-end/36021
21638         * c-common.c (handle_alloc_size_attribute): Use type_num_arguments.
21639
21640 2008-04-22  Tomas Bily  <tbily@suse.cz>
21641
21642         * tree-cfg.c (verify_expr): Check for NON_LVALUE_EXPR as
21643         unreachable case.
21644         * tree-vrp.c (extract_range_from_unary_expr): Removed unused
21645         NON_LVALUE_EXPR.
21646         * tree-ssa-threadedge.c (simplify_control_stmt_condition): Likewise.
21647         * tree-ssa-structalias.c (get_constraint_for): Likewise.
21648         * tree-inline.c (estimate_num_insns_1): Likewise.
21649         * varasm.c (const_hash_1, compare_constant, copy_constant)
21650         (compute_reloc_for_constant, output_addressed_constants): Likewise.
21651         * emit-rtl.c (component_ref_for_mem_expr)
21652         (set_mem_attributes_minus_bitpos): Likewise.
21653         * expr.c (highest_pow2_factor, expand_expr_real_1)
21654         (is_aligning_offset): Likewise.
21655         * dwarf2out.c (loc_descriptor_from_tree_1, add_bound_info): Likewise.
21656         * tree-ssa-loop-ivopts.c (may_be_nonaddressable_p): Likewise.
21657         * dojump.c (do_jump): Likewise.
21658         * builtins.c (get_pointer_alignment, get_memory_rtx)
21659         (integer_valued_real_p, fold_builtin_next_arg): Likewise.
21660         * tree-scalar-evolution.c (instantiate_parameters_1): Likewise.
21661
21662 2008-04-23  Jakub Jelinek  <jakub@redhat.com>
21663
21664         PR rtl-optimization/36017
21665         * builtins.c (expand_errno_check): Clear CALL_EXPR_TAILCALL before
21666         expanding the library call.
21667
21668 2008-04-22  Ian Lance Taylor  <iant@google.com>
21669
21670         * fold-const.c (pointer_may_wrap_p): Call int_size_in_bytes rather
21671         than size_in_bytes.
21672
21673 2008-04-22  Pat Haugen  <pthaugen@us.ibm.com>
21674
21675         * config/rs6000/rs6000.c (rs6000_register_move_cost): Increase cost
21676         of LR/CTR moves for Power6.
21677
21678 2008-04-22  Kenneth Zadeck  <zadeck@naturalbridge.com>
21679
21680         PR middle-end/36003
21681         * passes.c (init_optimization_passes): Remove
21682         pass_fast_rtl_byte_dce.
21683
21684 2008-04-22  Uros Bizjak  <ubizjak@gmail.com>
21685
21686         PR target/29096
21687         * config/i386/xmmintrin.h (_mm_cvtpi16_ps): Rearrange calls to
21688         builtin functions to generate faster code.
21689         (_mm_cvtpu16_ps): Ditto.
21690         (_mm_cvtpi32x2_ps): Ditto.
21691
21692 2008-04-22  Nick Clifton  <nickc@redhat.com>
21693
21694         * common.opt (ftree-loop-distribution): Add Optimization
21695         attribute.
21696
21697         * config/frv/frv.c (frv_stack_info): Use crtl instead of cfun.
21698         (frv_expand_builtin_va_start): Likewise.
21699
21700         * config/arm/arm.c (thumb_find_work_register): Fix location of
21701         argument register count.
21702
21703 2008-04-22  Maxim Kuvyrkov  <maxim@codesourcery.com>
21704
21705         Support scheduling for ColdFire V1 and V3 microarchitecture.
21706         Improve scheduling of multiplication instructions.
21707
21708         * config/m68k/m68k.md (cpu): Add cfv1 and cfv3.  Rename cf_v2 to cfv1.
21709         (mac): New instruction attribute.
21710         * config/m68k/m68k.c (override_options): Handle cfv1, cfv3 and mac.
21711         (m68k_sched_mac): New variable.
21712         (m68k_sched_attr_type2, m68k_sched_md_init_global): Update.
21713         Handle cfv1 and cfv3.
21714         (max_insn_size): New static variable.
21715         (struct _sched_ib): New type.
21716         (sched_ib): New static variable.
21717         (sched_ib_size, sched_ib_filled, sched_ib_insn): Convert variables
21718         to fields of 'struct _sched_ib sched_ib'.  Update all uses.
21719         (m68k_sched_variable_issue): Add modeling of cfv3 instruction buffer.
21720         Update.
21721         (m68k_sched_md_init_global, m68k_sched_md_finish_global,
21722         m68k_sched_md_init, m68k_sched_md_finish): Handle cfv1 and cfv3.  Init
21723         new variables.  Update.
21724         (m68k_sched_dfa_pre_advance_cycle, m68k_sched_dfa_post_advance_cycle):
21725         Add modeling of cfv3 instruction buffer.  Update.
21726         * config/m68k/m68k-protos.h (m68k_sched_mac): Declare.
21727         * config/m68k/m68k.h (TUNE_CFV3): New macro.
21728         * config/m68k/cf.md: Change substrings 'cf_v2' to 'cfv12' or 'cfv123'.
21729         (cf_* reservations): Rename to cfv12 or cfv123 to indicate cores
21730         a particular reservation applies to.
21731         (type2): Reorganize attribute values.  Rename alu to alu_reg,
21732         alu_l to alu, move_l to omove.  Join move to alu.  Split mul
21733         to mul_l and mul_w.
21734         (cf_ib_*): Simplify description of instruction buffer.
21735         (cf_ib_w0, cf_ib_w4, cf_ib_w5, cf_ib_w6): Remove.
21736         (cf_mem): Split into cf_mem1 and cf_mem2.
21737         (cf_v2_move_??): Rename to cfv12_alu_??.
21738         (cf_v2_move_l_??): Rename to cfv12_omove_??.
21739         (cf_v2_mul_??): Remove reservations.
21740         (cfv12_mul_l_??, cfv12_mul_w_??, cfv12_mac_w_??, cfv12_mac_l_??,
21741         cfv12_emac_??, cfv12_emac_w_i0): New reservations.
21742         (cfv12_rts, cfv12_call, cfv12_bcc, cfv12_bra, cfv12_jmp): Move to
21743         appropriate place.
21744         (cfv3_alu_10, cfv3_omove_10, cfv3_alu_i0, cfv3_omove_i0, cfv3_alu_01,
21745         cfv3_alu_0i, cfv3_alu_11, cfv3_omove_11, cfv3_alu_i1, cfv3_omove_i1,
21746         cfv3_alu_1i, cfv3_omove_1i, cfv3_pea_11, cfv3_pea_i1, cfv3_mul_w_10,
21747         cfv3_mul_l_10, cfv3_mul_w_i0, cfv3_mac_w_10, cfv3_mac_l_10,
21748         cfv3_mac_w_i0, cfv3_emac_10, cfv3_emac_w_i0, cfv3_rts, cfv3_call,
21749         cfv3_bcc, cfv3_bra, cfv3_jmp): New reservations.
21750         (cfv3_*_1, cfv3_*_2, cfv3_*_3): New instruction reservations that are
21751         expansions of the above reservations for instructions of sizes
21752         1, 2 and 3 words.
21753
21754 2008-04-22  Maxim Kuvyrkov  <maxim@codesourcery.com>
21755
21756         * rtl-factoring.c (collect_patterns_seqs): Handle CC0 targets.
21757
21758 2008-04-21  Adam Nemet  <anemet@caviumnetworks.com>
21759
21760         * coverage.c: Include tree-pass.h.
21761         (coverage_counter_alloc): Print da_file_name to the dump file.
21762
21763 2008-04-21  Kenneth Zadeck  <zadeck@naturalbridge.com>
21764
21765         * sbitmap.c (sbitmap_range_empty_p): New function.
21766         * sbitmap.h (sbitmap_range_empty_p): New function.
21767         * bitmap.h: Now includes obstack.h.
21768
21769 2008-04-21  Richard Sandiford  <rsandifo@nildram.co.uk>
21770             Kenneth Zadeck  <zadeck@naturalbridge.com>
21771
21772         * dbgcnt.def (ra_byte_scan): Added.
21773         * dbgcnt.c (dbg_cnt): Added code to print message to dump_file
21774         when the last hit happens for a counter.
21775         * timevar.def (TV_DF_BYTE_LR): New variable.
21776         * tree-pass.h (pass_fast_rtl_byte_dce): New pass.
21777         * passes.c (pass_fast_rtl_byte_dce): New pass.
21778         * fwprop.c (update_df): Added mode to call df_ref_create.
21779         Renamed DF_REF_WIDTH and DF_REF_OFFSET to DF_REF_EXTRACT_WIDTH and
21780         DF_REF_EXTRACT_OFFSET.
21781         * df.h (DF_BYTE_LR, DF_BYTE_LR_BB_INFO, DF_BYTE_LR_IN,
21782         DF_BYTE_LR_OUT, df_byte_lr): New macro.
21783         (df_mm): New enum.
21784         (df_ref_extract): Added mode field.
21785         (DF_REF_WIDTH, DF_REF_OFFSET) Renamed to DF_REF_EXTRACT_WIDTH and
21786         DF_REF_EXTRACT_OFFSET.
21787         (DF_REF_EXTRACT_MODE): New macro.
21788         (df_byte_lr_bb_info): New structure.
21789         (df_print_byte_regset, df_compute_accessed_bytes,
21790         df_byte_lr_add_problem, df_byte_lr_get_regno_start,
21791         df_byte_lr_get_regno_len, df_byte_lr_simulate_defs,
21792         df_byte_lr_simulate_uses,
21793         df_byte_lr_simulate_artificial_refs_at_top,
21794         df_byte_lr_simulate_artificial_refs_at_end,
21795         df_compute_accessed_bytes): New function.
21796         (df_ref_create): Add parameter.
21797         (df_byte_lr_get_bb_info): New inline function.
21798         * df-scan.c (df_ref_record, df_uses_record,
21799         df_ref_create_structure): Added mode parameter.
21800         (df_ref_create, df_notes_rescan, df_ref_record, df_def_record_1,
21801         df_defs_record, df_uses_record, df_get_conditional_uses,
21802         df_get_call_refs, df_insn_refs_collect, df_bb_refs_collect,
21803         df_entry_block_defs_collect, df_exit_block_uses_collect):
21804         Added mode parameter to calls to df_ref_record, df_uses_record,
21805         df_ref_create_structure.
21806         (df_ref_equal_p, df_ref_compare): Added test for modes.
21807         (df_ref_create_structure): Added code to set mode.  Renamed
21808         DF_REF_WIDTH and DF_REF_OFFSET to DF_REF_EXTRACT_WIDTH and
21809         DF_REF_EXTRACT_OFFSET.
21810         * df-core.c (df_print_byte_regset): New function.
21811         * df-byte-scan.c: New file.
21812         * df-problems.c (df_rd_transfer_function): Removed unnecessary
21813         calls to BITMAP_FREE.
21814         (df_byte_lr_problem_data, df_problem problem_BYTE_LR): New structure.
21815         (df_byte_lr_get_regno_start, df_byte_lr_get_regno_len,
21816         df_byte_lr_set_bb_info, df_byte_lr_free_bb_info,
21817         df_byte_lr_check_regs, df_byte_lr_expand_bitmap,
21818         df_byte_lr_alloc, df_byte_lr_reset, df_byte_lr_bb_local_compute,
21819         df_byte_lr_local_compute, df_byte_lr_init,
21820         df_byte_lr_confluence_0, df_byte_lr_confluence_n,
21821         df_byte_lr_transfer_function, df_byte_lr_free,
21822         df_byte_lr_top_dump, df_byte_lr_bottom_dump,
21823         df_byte_lr_add_problem, df_byte_lr_simulate_defs,
21824         df_byte_lr_simulate_uses,
21825         df_byte_lr_simulate_artificial_refs_at_top,
21826         df_byte_lr_simulate_artificial_refs_at_end): New function.
21827         * dce.c (byte_dce_process_block): New function.
21828         (dce_process_block): au is now passed in rather than computed
21829         locally.  Changed loops that look at artificial defs to not look
21830         for conditional or partial ones, because there never are any.
21831         (fast_dce): Now is able to drive byte_dce_process_block or
21832         dce_process_block depending on the kind of dce being done.
21833         (rest_of_handle_fast_dce): Add parameter to fast_dce.
21834         (rest_of_handle_fast_byte_dce): New function.
21835         (rtl_opt_pass pass_fast_rtl_byte_dce): New pass.
21836         * Makefile.in (df-byte-scan.o, debugcnt.o): Added dependencies.
21837
21838 2008-04-21  Daniel Franke  <franke.daniel@gmail.com>
21839
21840         PR fortran/35019
21841         * gcc.h: Added fortran options that take arguments to
21842         DEFAULT_SWITCH_TAKES_ARG and DEFAULT_WORD_SWITCH_TAKES_ARG
21843         macros.
21844
21845 2008-04-20  Eric Botcazou  <ebotcazou@adacore.com>
21846
21847         * tree-sra.c (sra_walk_expr) <VIEW_CONVERT_EXPR>: Disable
21848         scalarization if on the LHS and not a full access.
21849
21850 2008-04-20  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
21851
21852         * Makefile.in (s-gtyp-input): Remove tmp-gi.list before writing it.
21853
21854 2008-04-18  Rafael Espíndola  <espindola@google.com>
21855
21856         * tree-vrp.c (find_case_label_index): Fix the binary search.
21857         (find_case_label_range): New.
21858         (vrp_visit_switch_stmt): Use find_case_label_range.
21859         (simplify_switch_using_ranges): Use find_case_label_range.
21860
21861 2008-04-18  Eric Botcazou  <ebotcazou@adacore.com>
21862
21863         * gimplify.c (gimplify_modify_expr_rhs) <COND_EXPR>: Gimplify the LHS
21864         using the is_gimple_lvalue predicate instead of is_gimple_min_lval.
21865
21866 2008-04-18  Tom Tromey  <tromey@redhat.com>
21867
21868         PR libcpp/15500:
21869         * doc/cpp.texi (Implementation-defined behavior): Mention
21870         -finput-charset.
21871
21872 2008-04-18  Ian Lance Taylor  <iant@google.com>
21873
21874         * fold-const.c (pointer_may_wrap_p): New static function.
21875         (fold_comparison): Add another test for pointer overflow.  Use
21876         pointer_may_wrap_p to disable some false positives.
21877
21878 2008-04-18  Kris Van Hees <kris.van.hees@oracle.com>
21879
21880         * c-common.c (CHAR16_TYPE, CHAR32_TYPE): New macros.
21881         (fname_as_string): Match updated cpp_interpret_string prototype.
21882         (fix_string_type): Support char16_t* and char32_t*.
21883         (c_common_nodes_and_builtins): Add char16_t and char32_t (and
21884         derivative) nodes.  Register as builtin if C++0x.
21885         (c_parse_error): Support CPP_CHAR{16,32}.
21886         * c-common.h (RID_CHAR16, RID_CHAR32): New elements.
21887         (enum c_tree_index) <CTI_CHAR16_TYPE, CTI_SIGNED_CHAR16_TYPE,
21888         CTI_UNSIGNED_CHAR16_TYPE, CTI_CHAR32_TYPE, CTI_SIGNED_CHAR32_TYPE,
21889         CTI_UNSIGNED_CHAR32_TYPE, CTI_CHAR16_ARRAY_TYPE,
21890         CTI_CHAR32_ARRAY_TYPE>: New elements.
21891         (char16_type_node, signed_char16_type_node, unsigned_char16_type_node,
21892         char32_type_node, signed_char32_type_node, char16_array_type_node,
21893         char32_array_type_node): New defines.
21894         * c-lex.c (cb_ident): Match updated cpp_interpret_string prototype.
21895         (c_lex_with_flags): Support CPP_CHAR{16,32} and CPP_STRING{16,32}.
21896         (lex_string): Support CPP_STRING{16,32}, match updated
21897         cpp_interpret_string and cpp_interpret_string_notranslate prototypes.
21898         (lex_charconst): Support CPP_CHAR{16,32}.
21899         * c-parser.c (c_parser_postfix_expression): Support CPP_CHAR{16,32}
21900         and CPP_STRING{16,32}.
21901
21902 2008-04-18  Paolo Bonzini  <bonzini@gnu.org>
21903
21904         PR bootstrap/35457
21905         * aclocal.m4: Regenerate.
21906         * configure: Regenerate.
21907
21908 2008-04-18  Jan Hubicka  <jh@suse.cz>
21909
21910         * except.c (dw2_size_of_call_site_table,
21911         sjlj_size_of_call_site_table): Use vector API for call_site_record.
21912
21913         * cgraphbuild.c (build_cgraph_edges): Update.
21914         * tree-pass.h: Update comment.
21915         * final.c (leaf_function_p): Update.
21916         (leaf_renumber_regs): Update.
21917         (rest_of_clean_state): Update.
21918         * omp-low.c (expand_omp_parallel): Update.
21919         * ipa-reference.c (analyze_function): Update.
21920         * reorg.c (find_end_label): Update.
21921         (optimize_skip): Update.
21922         (fill_simple_delay_slots): Update.
21923         (fill_simple_delay_slots): Update.
21924         (make_return_insns): Update.
21925         (dbr_schedule): Update.
21926         * gimple-low.c (record_vars_into): Update.
21927         * cfgbuild.c (make_edges): Update.
21928         * function.c (assign_stack_local): Update.
21929         (assign_parm_adjust_stack_rtl): Update.
21930         (locate_and_pad_parm): Update.
21931         (allocate_struct_function): Do not initialize stack_alignment_needed
21932         and preferred_stack_boundary here.
21933         (stack_protect_prologue): Update.
21934         (stack_protect_epilogue): Update.
21935         (expand_function_start): Initialize stack_alignment_needed,
21936         preferred_stack_boundary and max_jumptable_ents.
21937         (expand_function_end): Update.
21938         (free_after_compilation): Do not NULLify epilogue_delay_list.
21939         * function.h (struct rtl_data): Add stack_protect_guard,
21940         stack_alignment_needed,
21941         preferred_stack_boundary, epilogue_delay_list.
21942         (struct function): Remove value_histograms, stack_alignment_needed,
21943         preferred_stack_boundary, epilogue_delay_list, max_jumptable_ents,
21944         last_label_uid,
21945         unexpanded_var_list, stack_protect_guard.
21946         (current_function_epilogue_delay_list): Remove.
21947         * ipa-type-escape.c (analyze_function): Update.
21948         * gimplify.c (pop_gimplify_context): Update comment.
21949         * calls.c (expand_call): Update.
21950         (emit_library_call_value_1): Update.
21951         * except.c (set_nothrow_function_flags): Update.
21952         * cfgexpand.c (get_decl_align_unit): Update.
21953         (create_stack_guard): Update.
21954         (estimated_stack_frame_size): Update.
21955         (expand_used_vars): Update.
21956         (tree_expand_cfg): Free histogram earliers, init expansion variables.
21957         * explow.c (allocate_dynamic_stack_space): Update.
21958         * tree-ssa-live.c (remove_unused_locals): Update.
21959         * varasm.c (mark_constant_pool): Update.
21960         * tree-inline.c (remap_decls): Update.
21961         (initialize_cfun): Update.
21962         (declare_return_variable): Update.
21963         (inline_forbidden_p): Update.
21964         (expand_call_inline): Update.
21965         (declare_inline_vars): Update.
21966         (tree_function_versioning): Update.
21967         * tree-flow.h (value_histograms): New.
21968         (VALUE_HISTOGRAMS): New macro.
21969         * basic-block.h (control_flow_graph): Add max_jumptable_ents,
21970         last_label_uid.
21971         * tree-cfg.c (set_bb_for_stmt): Update.
21972         (replace_by_duplicate_decl): Update.
21973         (move_block_to_fn): Update.
21974         (new_label_mapper): Update.
21975         (dump_function_to_file): Update.
21976         * ipa-struct-reorg.c (build_data_structure): Update.
21977         * cfgrtl.c (print_rtl_with_bb): Update.
21978         * reload1.c (reload): Update.
21979         (reload): Update.
21980         * config/i386/i386.c (setup_incoming_varargs_64,
21981         ix86_compute_frame_layout): Update.
21982         * config/arc/arc.c (arc_output_function_epilogue): Update.
21983
21984 2008-04-18  Marius Strobl <marius@FreeBSD.org>
21985
21986         * gthr-posix.h (__gthread_active_p): Use the Solaris implementation
21987         for FreeBSD as well.
21988         * gthr-posix95.h: Likewise.
21989
21990 2008-04-17  Richard Sandiford  <rsandifo@nildram.co.uk>
21991
21992         PR rtl-optimization/35838
21993         * dse.c (find_shift_sequence): Use subreg_lowpart_offset to work
21994         out the byte offset of the first subreg.
21995
21996 2008-04-17  Uros Bizjak  <ubizjak@gmail.com>
21997
21998         * config/i386/i386.md (addti3 splitter): Pass arrays of 3 operands
21999         to split_ti instead of three separate calls with single member arrays.
22000         (subti3 splitter): Ditto.
22001         (adddi3 splitter): Ditto with split_di.
22002         (subdi3 splitter): Ditto.
22003         (negti2 splitter): Pass arrays of 2 operands to split_ti instead of
22004         two separate calls with single member arrays.  Swap match_dup
22005         operands 1 and 2 to better fit into the array.
22006         (negdi2 splitter): Ditto with split_di.
22007         (movdfcc splitter):  Pass arrays of 2 operands to split_di instead of
22008         two separate calls with single member arrays.  Swap match_dup operands
22009         6 and 7 to better fit into the array.
22010
22011 2008-04-17  H.J. Lu  <hongjiu.lu@intel.com>
22012
22013         * config/i386/i386.c (sse_builtin_type): New.
22014         (bdesc_sse_args): Likewise.
22015         (bdesc_sse_3arg): Removed.
22016         (bdesc_2arg): Remove IX86_BUILTIN_AESKEYGENASSIST128.
22017         (bdesc_1arg): Remove IX86_BUILTIN_ROUNDPD and
22018         IX86_BUILTIN_ROUNDPS.
22019         (ix86_init_mmx_sse_builtins): Handle bdesc_sse_args.  Remove
22020         bdesc_sse_3arg.  Remove IX86_BUILTIN_ROUNDPD and
22021         IX86_BUILTIN_ROUNDPS.
22022         (ix86_expand_sse_4_operands_builtin): Removed.
22023         (ix86_expand_sse_operands_builtin): New.
22024         (ix86_expand_unop_builtin): Remove CODE_FOR_sse4_1_roundpd
22025         and CODE_FOR_sse4_1_roundps.
22026         (ix86_expand_builtin): Remove IX86_BUILTIN_AESKEYGENASSIST128.
22027         Handle bdesc_sse_args.  Remove bdesc_sse_3arg.
22028
22029 2008-04-17  Alan Modra  <amodra@bigpond.net.au>
22030
22031         PR target/35907
22032         * config/rs6000/rs6000.c (rs6000_emit_epilogue): Restore vr and vrsave
22033         regs before frame pop when needed.  If use_backchain_to_restore_sp
22034         then load backchain into a temp reg to restore vr and vrsave.  Add
22035         code to restore vr after frame pop if possible.
22036
22037 2008-04-17  Richard Guenther  <rguenther@suse.de>
22038
22039         * tree-vn.c (expressions_equal_p): Do not check type
22040         equality or compatibility before calling operand_equal_p.
22041         * fold-const.c (operand_equal_p): Check equivalence of
22042         integer constants before bailing out due to signedness or
22043         precision differences.
22044         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Ignore
22045         spurious differences in type qualification.  Ignore types
22046         for COMPONENT_REFs at all.
22047
22048 2008-04-17  Christian Bruel  <christian.bruel@st.com>
22049
22050         * config/sh/sh.c (expand_cbranchdi4): Use original operands for
22051         msw_skip comparison.
22052
22053 2008-04-16  Jakub Jelinek  <jakub@redhat.com>
22054
22055         PR c/35739
22056         * tree-nrv.c (tree_nrv): Don't optimize if result_type is GIMPLE
22057         reg type.
22058
22059         PR tree-optimization/35899
22060         * tree-inline.c (expand_call_inline): Use GIMPLE_STMT_OPERAND
22061         rather than TREE_OPERAND.
22062
22063 2008-04-16  Uros Bizjak  <ubizjak@gmail.com>
22064
22065         PR target/35944
22066         * config/i386/i386.md (fmodxf3): Copy operand 1 and operand 2 into
22067         temporary registers.  Change operand predicate to general_operand.
22068         (remainderxf3): Ditto.
22069
22070 2008-04-16  Richard Guenther  <rguenther@suse.de>
22071
22072         * Makefile.in (tree-affine.o): Add $(FLAGS_H) dependency.
22073         * tree-affine.c (aff_combination_expand): Look through some
22074         conversions.
22075
22076 2008-04-15  Doug Kwan  <dougkwan@google.com>
22077
22078         * dwarf2asm.c (dw2_assemble_integer): Cast to unsigned HOST_WIDE_INT
22079         for hex printing.
22080         * tree-pretty-print.c (dump_generic_node): Ditto.
22081         * final.c (output_addr_const): Ditto.
22082         * dwarf2out.c (output_cfi): Ditto.
22083         * c-pretty-print.c (pp_c_integer_constant): Ditto.
22084         * print-rtl.c (print_rtx): Ditto.
22085         * print-tree.c (print_node_brief, print_node): Ditto.
22086         * c-common.c (match_case_to_enum_1): Ditto.
22087         * sched-vis.c (print_value): Ditto.
22088         * config/i386/i386.c (print_operand): Cast to long unsigned int
22089         for hex printing.
22090
22091 2008-04-15  Danny Smith  <dannysmith@users.sourceforge.net>
22092         * libgcc2.c [L_trampoline]: Remove  unnecessary prototype for
22093         MS Windows VirtualProtect function.
22094
22095 2008-04-15  Jan Hubicka  <jh@suse.cz>
22096
22097         * gengtype.c (write_root): Param_is argument is OK.
22098         * expr.c (expand_expr_real_1): Update call of get_exception_*.
22099         * function.h: Include varray.h
22100         (rtl_eh): New stucture based on except.c one.
22101         (call_site_record): New forward declaration and vector type.
22102         * calls.c (emit_call_1): Do not call
22103         note_current_region_may_contain_throw.
22104         * except.c (eh_status): Remove cur_region, try_region since they are
22105         unused.
22106         Move filter, exc_ptr, ttype_data, ehspec_data, action_record_data and
22107         exception_handler_label_map, ehr_stackadj, ehr_handler, ehr_label,
22108         sjlj_fc, sjlj_exit_after to rth_eh in function.h.
22109         Remove call_site_data_used, call_site_data_size.
22110         Turn call_site_record into vector in function.h.
22111         (note_current_region_may_contain_throw): Remove.
22112         (get_exception_pointer, get_exception_filter): Do not take struct
22113         function argument; update.
22114         (add_ehl_entry, find_exception_handler_labels, ehspec_filter_hash,
22115         add_ttypes_entry, add_ehspec_entry, assign_filter_values,
22116         build_post_landing_pads, dw2_build_landing_pads,
22117         sjlj_assign_call_site_values, sjlj_mark_call_sites,
22118         sjlj_emit_function_enter, sjlj_emit_function_enter,
22119         sjlj_emit_function_exit, sjlj_emit_dispatch_table,
22120         sjlj_build_landing_pads, finish_eh_generation,
22121         remove_exception_handler_label, remove_eh_handler,
22122         maybe_remove_eh_handler, add_reachable_handler,
22123         reachable_handlers, expand_builtin_eh_return, expand_eh_return,
22124         add_action_record, collect_one_action_chain, add_call_site,
22125         convert_to_eh_region_ranges, sjlj_size_of_call_site_table,
22126         sjlj_output_call_site_table, output_function_exception_table,
22127         * except.h (note_current_region_may_contain_throw): Remove
22128         (get_exception_pointer, get_exception_filter): Do not take struct
22129         function argument.
22130         * Makefile.in (GTFILES): Put varargs before struct function.
22131
22132 2008-04-15  Eric Botcazou  <ebotcazou@adacore.com>
22133
22134         * tree-ssa-structalias.c (get_constraint_for_component_ref): Do not
22135         punt for STRING_CST.
22136         (get_constraint_for): Deal with STRING_CST here instead.
22137
22138 2008-04-15  Richard Guenther  <rguenther@suse.de>
22139
22140         * tree-ssa-propagate.c (substitute_and_fold): Substitute
22141         statements in a basic-block with a backward walk.  Do not
22142         substitute into dead statements but instead remove those.
22143
22144 2008-04-15  Richard Guenther  <rguenther@suse.de>
22145
22146         * params.def (PARAM_MAX_FIELDS_FOR_FIELD_SENSITIVE): Set default
22147         to zero, thus disable creation of SFTs.
22148
22149 2008-04-15  Eric Botcazou  <ebotcazou@adacore.com>
22150
22151         * tree-predcom.c (suitable_reference_p): Return false if the
22152         reference can throw.
22153
22154 2008-04-15  Jakub Jelinek  <jakub@redhat.com>
22155
22156         PR c/35751
22157         * c-decl.c (finish_decl): If extern or static var has variable
22158         size, set TREE_TYPE (decl) to error_mark_node.
22159
22160 2008-04-15  Rafael Espíndola  <espindola@google.com>
22161
22162         * fold-const.c (tree_call_nonnegative_warnv_p): Remove local
22163         variable arg1.
22164
22165 2008-04-15  Richard Guenther  <rguenther@suse.de>
22166
22167         * tree-ssa-sccvn.h (vn_reference_lookup): Adjust prototype.
22168         * tree-ssa-sccvn.c (vn_reference_lookup): New parameter maywalk.
22169         (visit_reference_op_load): Do walk vuse-vdef chains on
22170         vn_reference_lookup.
22171         (visit_reference_op_store): But do not here.
22172         * tree-vn.c (vn_lookup): Do not walk vuse-vdef chains on
22173         vn_reference_lookup.
22174         (vn_lookup_with_vuses): But do so here.
22175
22176 2008-04-14  Ian Lance Taylor  <iant@google.com>
22177
22178         * fold-const.c (fold_overflow_warning): Remove assertion.
22179
22180 2008-04-15  Ben Elliston  <bje@au.ibm.com>
22181
22182         * config/alpha/alpha.c (alpha_initialize_trampoline): Remove temp,
22183         temp1 local variables.
22184
22185 2008-04-15  Zuxy Meng  <zuxy.meng@gmail.com>
22186
22187         PR target/35661
22188         * config/i386/winnt.c (i386_pe_section_type_flags): Mark
22189         ".text.unlikely" section as executable.
22190
22191 2008-04-14  James E. Wilson  <wilson@tuliptree.org>
22192
22193         * config/ia64/ia64.c (rtx_needs_barrier): Handle
22194         UNSPEC_FR_SQRT_RECIP_APPROX_RES.
22195         * config/ia64/ia64.c (UNSPEC_FR_SQRT_RECIP_APPROX_RES): Define.
22196         (divsi3_internal, divdi3_internal_lat, divdi3_internal_thr,
22197         divsf3_internal_lat, sqrt_approx, sqrtsf2_internal_thr,
22198         divdf3_internal_lat, sqrtdf2_internal_thr, divxf3_internal_lat,
22199         divxf3_internal_thr, sqrtxf2_internal_thr, recip_approx): Use it.
22200
22201 2008-04-14  Ian Lance Taylor  <iant@google.com>
22202
22203         * flags.h (POINTER_TYPE_OVERFLOW_UNDEFINED): Define.
22204         * fold-const.c (fold_comparison): If appropriate, test
22205         POINTER_TYPE_OVERFLOW_UNDEFINED, and issue an overflow warning.
22206         (fold_binary): Test POINTER_TYPE_OVERFLOW_UNDEFINED when
22207         reassociating a pointer type.
22208         * doc/invoke.texi (Optimize Options): Document that
22209         -fstrict-overflow applies to pointer wraparound.
22210
22211 2008-04-13  Jan Hubicka  <jh@suse.cz>
22212
22213         * m32.c (m32c_pushm_popm): Use crtl->retrun_rtx.
22214
22215 2008-04-12  Andrew Pinski  <pinskia@gmail.com>
22216
22217         * config/rs6000/rs6000.c (compute_save_world_info): Set lr_save_p if
22218         we are going to "save the world".
22219
22220 2008-04-13  Hans-Peter Nilsson  <hp@axis.com>
22221
22222         * config/cris/cris.md ("*andhi_lowpart_non_v32", "*andhi_lowpart_v32")
22223         ("*andqi_lowpart_non_v32", "*andqi_lowpart_v32"): Use "+" for the
22224         operand 0 constraint, not "=".
22225
22226 2008-04-11  James E. Wilson  <wilson@tuliptree.org>
22227
22228         * system.h: Change ASSERT_CHECKING to ENABLE_ASSERT_CHECKING.
22229
22230 2008-04-11  H.J. Lu  <hongjiu.lu@intel.com>
22231
22232         * dse.c (record_store): Use HOST_BITS_PER_WIDE_INT instead
22233         of size of positions_needed * CHAR_BIT.
22234
22235 2008-04-11  H.J. Lu  <hongjiu.lu@intel.com>
22236
22237         PR middle-end/35897
22238         * dse.c (store_info): Change positions_needed to unsigned
22239         HOST_WIDE_INT.
22240         (lowpart_bitmask): New.
22241         (record_store): Cast to unsigned HOST_WIDE_INT for
22242         positions_needed.  Assert width <= size of positions_needed *
22243         CHAR_BIT.  Call lowpart_bitmask to initialize positions_needed.
22244         (check_mem_read_rtx): Use unsigned HOST_WIDE_INT on mask.  Call
22245         lowpart_bitmask to set mask.
22246
22247 2008-04-11  Bernd Schmidt  <bernd.schmidt@analog.com>
22248
22249         * config/bfin/constraints.md: New file.
22250         * config/bfin/bfin.md: Include it.
22251         (adddi3): Use satisfies_constraint functions instead of the old macros.
22252         * config/bfin/bfin.h (REG_CLASS_FROM_LETTER, CONSTRAINT_LEN,
22253         CONST_18UBIT_IMM_P, CONST_16BIT_IMM_P, CONST_16UBIT_IMM_P,
22254         CONST_7BIT_IMM_P, CONST_7NBIT_IMM_P, CONST_5UBIT_IMM_P,
22255         CONST_4BIT_IMM_P, CONST_4UBIT_IMM_P, CONST_3BIT_IMM_P,
22256         CONST_3UBIT_IMM_P, CONST_OK_FOR_K, CONST_OK_FOR_P, CONST_OK_FOR_M,
22257         CONST_OK_FOR_CONSTRAINT_P, CONST_DOUBLE_OK_FOR_LETTER,
22258         EXTRA_CONSTRAINT): Delete.
22259         * config/bfin/predicates.md (highbits_operand, reg_or_7bit_operand,
22260         reg_or_neg7bit_operand): Use satisfies_constraint functions instead
22261         of the old macros.
22262         * config/bfin/bfin.c: Include "tm-constrs.h".
22263         (bfin_secondary_reload, split_load_immediate, bfin_rtx_costs):
22264         Use satisfies_constraint functions instead of the old macros.
22265         * doc/md.texi (Blackfin Constraints): Update file name reference.
22266
22267 2008-04-11  Richard Guenther  <rguenther@suse.de>
22268
22269         PR tree-optimization/35869
22270         * tree-vrp.c (execute_vrp): Move switch statement update after
22271         jump threading.  Schedule another cfg cleanup run.
22272
22273 2008-04-11  Volker Reichelt  <v.reichelt@netcologne.de>
22274
22275         PR c/35744
22276         * attribs.c (decl_attributes): Return early on errorneous node.
22277
22278 2008-04-10  Oleg Ryjkov  <olegr@google.com>
22279
22280         * tree.h (struct tree_base): Added a new flag default_def_flag.
22281         (SSA_NAME_IS_DEFAULT_DEF): Changed to use the new flag.
22282
22283 2008-04-11  Kaz Kojima  <kkojima@gcc.gnu.org>
22284
22285         * config.gcc (need_64bit_hwint): Need 64bit hwint for sh-*-*.
22286
22287 2008-04-10  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
22288
22289         PR target/35768
22290         * pa.md: Define mode iterator P.  Define mode attribute dwc.
22291         (dcacheflush): Update pattern to use iterator P and attribute dwc.
22292         (icacheflush): Likewise.
22293         * pa.h (INITIALIZE_TRAMPOLINE): Use dcacheflushsi/icacheflushsi if
22294         !TARGET_64BIT, and dcacheflushdi/icacheflushdi if TARGET_64BIT.
22295
22296 2008-04-11  Ben Elliston  <bje@au.ibm.com>
22297
22298         * config/spu/spu.c (spu_init_builtins): Mark builtins as nothrow.
22299
22300 2008-04-10  Rafael Espíndola  <espindola@google.com>
22301
22302         * tree-vrp.c (extract_range_from_binary_expr): Don't handle
22303         TRUTH_ANDIF_EXPR or TRUTH_ORIF_EXPR.
22304         (extract_range_from_expr): The same.
22305
22306 2008-04-10  Adam Nemet  <anemet@caviumnetworks.com>
22307
22308         * config/mips/mips.md (GPR2): New mode iterator.
22309         (seq): Add comment.
22310         (*seq_<mode>, *seq_<mode>_mips16, *sne_<mode>, *sgt<u>_<mode>,
22311         *sgt<u>_<mode>_mips16, *sge<u>_<mode>, *slt<u>_<mode>,
22312         *slt<u>_<mode>_mips16 *sle<u>_<mode>, *sle<u>_<mode>_mips16):
22313         Rewrite these to take two modes, the mode of comparison and the
22314         mode of the destination.
22315         * config/mips/mips.c (mips_expand_scc): Instead of having
22316         paradoxical subreg as destination, expand "narrowing" scc if mode
22317         of comparison is SI and target is requested in DI mode.
22318         (mips_emit_int_order_test): Update comment.  Make mode of
22319         comparison match CMP0 rather than TARGET.  When creating inverse
22320         target use mode of TARGET.
22321
22322 2008-04-10  Adam Nemet  <anemet@caviumnetworks.com>
22323
22324         * gcov-dump.c (tag_summary): Only print summaries for the first
22325         GCOV_COUNTERS_SUMMABLE counters.
22326
22327 2008-04-10  Uros Bizjak  <ubizjak@gmail.com>
22328
22329         * config/i386/i386.md (absneg): New code iterator.
22330         (absnegprefix): New code attribute.
22331         (<code><mode>2): Macroize expander from abs<mode>2 and neg<mode>2
22332         patterns using absneg code iterator.
22333         (<code>tf2): Macroize expander from abstf2 and negtf2 patterns
22334         using absneg code iterator.
22335         (*<code><mode>2_1): Macroize insn pattern from *abs<mode>2_1 and
22336         *neg<mode>2 patterns using absneg code iterator.
22337         (*<code>extendsfdf2): Macroize insn pattern from *absextendsfdf2 and
22338         *negextendsfdf2 patterns using absneg code iterator.
22339         (*<code>extendsfxf2): Macroize insn pattern from *absextendsfxf2 and
22340         *negextendsfxf2 patterns using absneg code iterator.
22341         (*<code>extendsfdf2): Macroize insn pattern from *absextendsfdf2 and
22342         *negextendsfdf2 patterns using absneg code iterator.
22343         * config/i386/sse.md (<code><mode>2): Macroize expander from
22344         abs<mode>2 and neg<mode>2 patterns using absneg code iterator.
22345
22346 2008-04-10  Andreas Krebbel  <krebbel1@de.ibm.com>
22347
22348         * config/s390/s390.h: Remove the remains of the recent search
22349         & replace action of current_function_outgoing_args_size.
22350
22351 2008-04-10  Ira Rosen  <irar@il.ibm.com>
22352
22353         PR tree-optimization/35821
22354         * tree-vect-transform.c (vect_create_data_ref_ptr): Add check that
22355         NEW_STMT_LIST is not NULL.
22356
22357 2008-04-09  David Edelsohn  <edelsohn@gnu.org>
22358
22359         PR libstdc++/35597
22360         * toplev.c (process_options): Remove -ffunction-sections debugging
22361         warning.
22362
22363 2008-04-09  Peter Bergner  <bergner@vnet.ibm.com>
22364
22365         PR middle-end/PR28690
22366         * explow.c (break_out_memory_refs): Use simplify_gen_binary rather
22367         than gen_rtx_fmt_ee to perform more canonicalizations.
22368
22369 2008-04-08  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
22370
22371         PR driver/35665
22372         * collect2.c (write_c_file): Don't wrap in "#ifdef __cplusplus".
22373
22374 2008-04-09  Richard Guenther  <rguenther@suse.de>
22375
22376         * tree-cfg.c (verify_stmt): Print complete bogus stmt.
22377         (dump_function_to_file): Dump function arguments with types.
22378
22379 2008-04-08  Richard Guenther  <rguenther@suse.de>
22380
22381         * fold-const.c (fold_widened_comparison): Do not allow
22382         sign-changes that change the result.
22383
22384 2008-04-08  Janis Johnson  <janis187@us.ibm.com>
22385
22386         PR target/35839
22387         * config/rs6000/rs6000.c (rs6000_check_sdmode): Handle additional
22388         kinds of indirect references.
22389
22390 2008-04-08  David Edelsohn  <edelsohn@gnu.org>
22391
22392         * config/rs6000/rs6000.c (rs6000_output_function_epilogue): Update
22393         GNU Fortran language string.
22394
22395 2008-04-08  Rafael Espíndola  <espindola@google.com>
22396
22397         * fold-canst.c (tree_call_nonnegative_warnv_p): New.
22398         (tree_invalid_nonnegative_warnv_p): Use tree_call_nonnegative_warnv_p.
22399         * tree.h (tree_call_nonnegative_warnv_p): New.
22400
22401 2008-04-08  Jan Hubicka  <jh@suse.cz>
22402
22403         * function.c (free_after_compilation): Clear out regno_reg_rtx
22404         pointer.
22405
22406 2008-04-08  Peter Bergner  <bergner@vnet.ibm.com>
22407
22408         Revert
22409         2008-04-07  Peter Bergner  <bergner@vnet.ibm.com>
22410
22411         PR middle-end/PR28690
22412         * rtlanal.c: (commutative_operand_precedence): Give SYMBOL_REF's the
22413         same precedence as REG_POINTER and MEM_POINTER operands.
22414
22415 2008-04-08  Richard Guenther  <rguenther@suse.de>
22416
22417         PR middle-end/35834
22418         * tree-ssa-address.c (create_mem_ref): Use POINTER_PLUS_EXPR
22419         for adding index to base.
22420
22421 2008-04-08  Kai Tietz  <kai.tietz@onevision.com>
22422
22423         * config/i386/mingw32.h (ENABLE_EXECUTE_STACK): New.
22424         (MINGW_ENABLE_EXECUTE_STACK): New.
22425         (IN_LIBGCC2): For libgcc include windows.h file for
22426         function declarations.
22427
22428 2008-04-08  Hans-Peter Nilsson  <hp@axis.com>
22429
22430         * config/cris/cris.c (cris_address_cost): For a PLUS, swap tem1
22431         and tem2 if tem1 is not a REG or MULT.
22432
22433 2008-04-08  Jan Hubicka  <jh@suse.cz>
22434
22435         * function.h (incomming_args): Break out of struct function.
22436         (function_subsections): Break out of struct function.
22437         (rtl_data): Add args, subsections fields. Break out outgoing_args_size,
22438         return_rtx and hard_reg_initial_vals from struct function.
22439         Kill inl_max_label_num.
22440         (current_function_pops_args, current_function_args_info,
22441         current_function_args_size, current_function_args_size,
22442         current_function_pretend_args_size,
22443         current_function_outgoing_args_size,
22444         current_function_internal_arg_pointer, current_function_return_rtx):
22445         Kill compatibility accestor macros.
22446         * builtins.c (expand_builtin_apply_args_1): Update.
22447         (expand_builtin_next_arg): Update.
22448         * df-scan.c (df_get_call_refs): Update.
22449         * dbxout.c (dbxout_function_end): Update.
22450         * dwarf2out.c (dwarf2out_switch_text_section): Update.
22451         (output_line_info): Update.
22452         (secname_for_decl): Update.
22453         (dwarf2out_var_location): Update.
22454         * function.c (free_after_compilation): Update.
22455         (assign_parm_find_stack_rtl): Update.
22456         (assign_parms): Update.
22457         (expand_dummy_function_end): Update.
22458         (expand_function_end): Update.
22459         * calls.c (mem_overlaps_already_clobbered_arg_p): Update.
22460         (expand_call): Update.
22461         (emit_library_call_value_1): Update.
22462         (store_one_arg): Update.
22463         * varasm.c (initialize_cold_section_name): Update.
22464         (unlikely_text_section): Update.
22465         (unlikely_text_section_p): Update.
22466         (assemble_start_function): Update.
22467         (assemble_end_function): Update.
22468         (default_section_type_flags): Update.
22469         (switch_to_section): Update.
22470         * integrate.c (set_decl_abstract_flags): Update.
22471         (get_hard_reg_initial_val): Update.
22472         (has_hard_reg_initial_val): Update.
22473         (allocate_initial_values): Update.
22474         * resource.c (init_resource_info): Update.
22475         * config/alpha/alpha.c (NUM_ARGS): Update.
22476         (direct_return): Update.
22477         (alpha_va_start): Update.
22478         (alpha_sa_size): Update.
22479         (alpha_initial_elimination_offset): Update.
22480         (alpha_expand_prologue): Update.
22481         (alpha_start_function): Update.
22482         (alpha_expand_epilogue): Update.
22483         (unicosmk_initial_elimination_offset):
22484         * config/alpha/alpha.md (call expander): Update.
22485         * config/s390/s390.c (s390_register_info): Update.
22486         (s390_register_info): Update.
22487         (s390_frame_info): Update.
22488         (s390_initial_elimination_offset): Update.
22489         (s390_build_builtin_va_list): Update.
22490         (s390_va_start): Update.
22491         * config/spu/spu.c (direct_return): Update.
22492         (spu_expand_prologue): Update.
22493         (spu_initial_elimination_offset): Update.
22494         (spu_build_builtin_va_list): Update.
22495         (spu_va_start): Update.
22496         * config/sparc/sparc.c (sparc_init_modes): Update.
22497         (sparc_compute_frame_size): Update.
22498         (function_value): Update.
22499         * config/m32r/m32r.c (m32r_compute_frame_size): Update.
22500         * config/i386/i386.md (return expander): Update.
22501         * config/i386/i386.c (ix86_va_start): Update.
22502         (ix86_can_use_return_insn_p): Update.
22503         (ix86_compute_frame_layout): Update.
22504         (ix86_expand_epilogue): Update.
22505         * config/sh/sh.c (output_stack_adjust): Update.
22506         (calc_live_regs): Update.
22507         (sh_expand_prologue): Update.
22508         (sh_builtin_saveregs): Update.
22509         (sh_va_start): Update.
22510         (initial_elimination_offset): Update.
22511         (sh_allocate_initial_value): Update.
22512         (sh_function_ok_for_sibcall): Update.
22513         (sh_get_pr_initial_val): Update.
22514         * config/sh/sh.md (return expander): Update.
22515         * config/avr/avr.c (frame_pointer_required_p): UPdate.
22516         * config/crx/crx.c (crx_compute_frame): UPdate.
22517         (crx_initial_elimination_offset): UPdate.
22518         * config/xtensa/xtensa.c (compute_frame_size): Update
22519         (xtensa_builtin_saveregs): Update.
22520         (xtensa_va_start): Update.
22521         (order_regs_for_local_alloc): Update.
22522         * config/stormy16/stormy16.c (xstormy16_compute_stack_layout): Update.
22523         (xstormy16_expand_builtin_va_start): Update.
22524         * config/fr30/fr30.c (fr30_compute_frame_size): Update.
22525         * config/m68hc11/m68hc11.md (return expanders): Update.
22526         * config/m68hc11/m68hc11.c (expand_prologue): Update.
22527         (expand_epilogue): Update.
22528         * config/cris/cris.c (cris_initial_frame_pointer_offset): Update.
22529         (cris_simple_epilogue): Update.
22530         (cris_expand_prologue): Update.
22531         (cris_expand_epilogue): Update.
22532         * config/iq2000/iq2000.c (iq2000_va_start): Update.
22533         (compute_frame_size): Update.
22534         * config/mt/mt.c (mt_compute_frame_size): Update.
22535         * config/mn10300/mn10300.c (expand_prologue): Update.
22536         (expand_epilogue): Update.
22537         (initial_offset): Update.
22538         (mn10300_builtin_saveregs):
22539         * config/mn10300/mn10300.md (return expander): Update.
22540         * config/ia64/ia64.c (ia64_compute_frame_size): Update.
22541         (ia64_initial_elimination_offset): Update.
22542         (ia64_initial_elimination_offset): Update.
22543         (ia64_expand_prologue): Update.
22544         * config/m68k/m68k.md (return expander): Update.
22545         * config/rs6000/rs6000.c (rs6000_va_start): Update.
22546         (rs6000_stack_info): Update.
22547         * config/mcore/mcore.c (layout_mcore_frame): Update.
22548         (mcore_expand_prolog): Update.
22549         * config/arc/arc.c (arc_compute_frame_size): Update.
22550         * config/score/score3.c (score3_compute_frame_size): Update.
22551         * config/score/score7.c (score7_compute_frame_size): Update.
22552         * config/arm/arm.c (use_return_insn): Update.
22553         (thumb_find_work_register): Update.
22554         (arm_compute_save_reg_mask): Update.
22555         (arm_output_function_prologue): Update.
22556         (arm_output_epilogue): Update.
22557         (arm_size_return_regs): Update.
22558         (arm_get_frame_offsets): Update.
22559         (arm_expand_prologue): Update.
22560         (thumb_exit): Update.
22561         (thumb_unexpanded_epilogue): Update.
22562         (thumb1_output_function_prologue): Update.
22563         * config/pa/pa.md (return expander): Update.
22564         * config/pa/pa.c (compute_frame_size): Update.
22565         (hppa_builtin_saveregs): Update.
22566         * config/mips/mips.c (mips_va_start): Update.
22567         (mips16_build_function_stub): Update.
22568         (mips_compute_frame_info): Update.
22569         (mips_restore_gp): Update.
22570         (mips_output_function_prologue): Update.
22571         (mips_expand_prologue): Update.
22572         * config/v850/v850.c (compute_frame_size): Update.
22573         (expand_prologue): * config/mmix/mmix.c (along): update.
22574         (mmix_initial_elimination_offset): update.
22575         (mmix_reorg): update.
22576         (mmix_use_simple_return): update.
22577         (mmix_expand_prologue): update.
22578         (mmix_expand_epilogue): Update.
22579         * config/bfin/bfin.c (bfin_initial_elimination_offset): Update.
22580         (emit_link_insn): Update.
22581
22582 2008-04-08  Anatoly Sokolov <aesok@post.ru>
22583
22584         * config/avr/avr.h (TARGET_CPU_CPP_BUILTINS): Define
22585         __AVR_HAVE_EIJMP_EICALL__ macro if device have EIJMP and EICALL
22586         instructions.
22587         * config/avr/avr.c (avr_mcu_types): Set AVR31 architecture for
22588         atmega103 device.
22589
22590 2008-04-07  Jan Hubicka  <jh@suse.cz>
22591
22592         * function.h (rtl): Rename to x_rtl.
22593         (crtl): New define.
22594         (return_label, naked_return_label, stack_slot_list, parm_birth_insn,
22595         frame_offset, stack_check_probe_note, arg_pointer_save_area,
22596         used_temp_slots avail_temp_slots, temp_slot_level,
22597         nonlocal_goto_handler_labels): Update accesstors.
22598         (rtl): New global variable.
22599         (struct function): Move some fileds to rtl_data.
22600         (get_arg_pointer_save_area): Update prototype.
22601         * builtins.c (expand_builtin_setjmp_receiver): Update call of
22602         get_arg_pointer_save_area.
22603         * expr.c (init_expr): Update
22604         * function.c (get_frame_size): Update
22605         (assign_stack_local): Update
22606         (expand_function_end): Update.
22607         (get_art_pointer_save_area): Update
22608         * function.h
22609         * emit-rtl.c (rtl): Declare.
22610         (regno_reg_rtx): Declare.
22611         (first_insn, last_insn, cur_insn_uid, last_location, first_label_num):
22612         Update.
22613         (gen_reg_rtx): Update.
22614         * varasm.c (n_deferred_constatns): Update accestor.
22615         (init_varasm_status): Do not allocate varasm_status.
22616         (force_const_mem, get_pool_size, output_constant_pool): Update.
22617         * stmt.c (force_label_rtx): Do not use x_ prefixes.
22618         (expand_nl_goto_receiver): Update get_arg_pointer_save_area.
22619         * m32c/m32.c (m32c_leaf_function_p, m32c_function_needs_enter): Update.
22620         * sparc/sparc.h (INIT_EXPANDERS): Update.
22621         * ia64/ia64.h (INIT_EXPANDERS): Update.
22622
22623 2008-04-07  James E. Wilson  <wilson@tuliptree.org>
22624
22625         * reload.c (push_secondary_reload): Add missing break to for loop.
22626
22627 2008-04-07  Peter Bergner  <bergner@vnet.ibm.com>
22628
22629         PR middle-end/PR28690
22630         * rtlanal.c: Update copyright years.
22631         (commutative_operand_precedence): Give SYMBOL_REF's the same precedence
22632         as REG_POINTER and MEM_POINTER operands.
22633         * emit-rtl.c (gen_reg_rtx_and_attrs): New function.
22634         (set_reg_attrs_from_value): Call mark_reg_pointer as appropriate.
22635         * rtl.h (gen_reg_rtx_and_attrs): Add prototype for new function.
22636         * gcse.c: Update copyright years.
22637         (pre_delete): Call gen_reg_rtx_and_attrs.
22638         (hoist_code): Likewise.
22639         (build_store_vectors): Likewise.
22640         (delete_store): Likewise.
22641         * loop-invariant.c (move_invariant_reg): Likewise.
22642         Update copyright years.
22643
22644 2008-04-07  Uros Bizjak  <ubizjak@gmail.com>
22645
22646         * config/i386/i386.md ("*sse_prologue_save_insn"): Use braced output
22647         control string instead of quoted.
22648
22649 2008-04-07  Kenneth Zadeck  <zadeck@naturalbridge.com>
22650
22651         * doc/rtl.texi: Rewrite of subreg section.
22652
22653 2008-04-07  Kai Tietz  <kai.tietz@onevision.com>
22654
22655         PR/35842
22656         * config/i386/i386.c (legitimize_pic_address): Add treating
22657         of dllimport SYM_REF's.
22658         (legitimize_dllimport_symbol): Add prototype.
22659
22660 2008-04-07  Eric Botcazou  <ebotcazou@adacore.com>
22661
22662         * fold-const.c (fold) <ARRAY_REF>: New case.  Try to fold constant
22663         reference in constructor with non self-referential type.
22664
22665 2008-04-07  Eric Botcazou  <ebotcazou@adacore.com>
22666
22667         Removal of Return with Depressed Stack Pointer support
22668         * tree.h (TYPE_RETURNS_STACK_DEPRESSED): Delete.
22669         (ECF_SP_DEPRESSED): Likewise.
22670         (ECF_LIBCALL_BLOCK, ECF_NOVOPS): Adjust.
22671         * calls.c (emit_call_1): Do not test ECF_SP_DEPRESSED.
22672         (flags_from_decl_or_type): Do not test TYPE_RETURNS_STACK_DEPRESSED.
22673         (expand_call): Do not test ECF_SP_DEPRESSED.
22674         * dse.c (dse_step0): Do not test TYPE_RETURNS_STACK_DEPRESSED.
22675         * function.c (keep_stack_depressed): Delete.
22676         (handle_epilogue_set): Likewise.
22677         (update_epilogue_consts): Likewise.
22678         (emit_equiv_load): Likewise.
22679         (thread_prologue_and_epilogue_insns): Remove support for Return with
22680         Depressed Stack Pointer.
22681         * print-tree.c (print_node): Do not test TYPE_RETURNS_STACK_DEPRESSED.
22682
22683 2008-04-06  Richard Guenther  <rguenther@suse.de>
22684
22685         PR tree-optimization/35400
22686         * tree-vrp.c (vrp_evaluate_conditional): Only query value-range
22687         information from SSA_NAMEs.
22688
22689 2008-04-06  Anatoly Sokolov <aesok@post.ru>
22690
22691         * config/avr/avr.h (avr_mega_p): Remove declaration.
22692         (AVR_MEGA): Remove macro.
22693         * config/avr/avr.c (avr_mega_p): Remove variable.
22694         (avr_override_options): Remove inicializion of avr_mega_p.
22695         Use AVR_HAVE_JMP_CALL instead of AVR_MEGA.
22696         (print_operand): Use AVR_HAVE_JMP_CALL instead of AVR_MEGA.
22697         (avr_jump_mode): (Ditto.).
22698         (avr_output_progmem_section_asm_op): (Ditto.).
22699         (avr_asm_init_sections): (Ditto.).
22700         (avr_asm_init_sections): (Ditto.).
22701         (avr_rtx_costs): (Ditto.).
22702         * config/avr/avr.md: (Ditto.).
22703         * config/avr/avr.h: Use '__AVR_HAVE_JMP_CALL__' instead of
22704         '__AVR_MEGA__'.
22705
22706 2008-04-06  Richard Guenther  <rguenther@suse.de>
22707
22708         PR tree-optimization/35842
22709         * tree-ssa-address.c (fixed_address_object_p): Adjust to match
22710         is_gimple_invariant_address.
22711
22712 2008-04-06  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
22713
22714         * gcc.c (default_compilers): Sync Fortran extensions list with
22715         that in fortran/lang-specs.h.
22716         * doc/invoke.texi: Likewise.
22717         * dbxout.c (get_lang_number): Use "GNU Fortran" in "GNU F95".
22718         * dwarf2out.c (gen_compile_unit_die): Likewise.
22719
22720 2008-04-06  Tom G. Christensen  <tgc@jupiterrise.com>
22721
22722         * gthr-posix95.h (__gthread_cond_wait_recursive): Add missing &.
22723
22724 2008-04-05  Uros Bizjak  <ubizjak@gmail.com>
22725
22726         PR target/12329
22727         * config/i386/i386.c (ix86_function_regparm): Error if regparm(3)
22728         attribute is used for nested functions.
22729
22730 2008-04-05  Jan Hubicka  <jh@suse.cz>
22731
22732         * emit-rtl.c (init_emit): xcalloc regno_pointer_align.
22733
22734         * tree-dump.c (dump_enable_all): Remove prototype; do not accept
22735         letter argument.
22736         (dump_files): Update.
22737         (enable_rtl_dump_file): Do not accept letter argument.
22738         * tree-pass.h (dump_file_info): Remove letter argument.
22739         * toplev.c (decode_d_option): Update -da handling.
22740         * toplev.h (enable_rtl_dump_file): Update prototype.
22741         * passes.c (register_one_dump_file): Do not accept IPA argument; work
22742         it out based on pass type.
22743         (register_dump_files_1): Likewise.
22744         (init_optimization_passes): Update register_one_dump_file calls.
22745         (execute_one_pass): Sanity check that IPA passes are called at IPA
22746         level and RTL passes at RTL level.
22747         (execute_pass_list): IPA pass can not be after or subpass of
22748         GIMPLE/RTL pass.
22749         (execute_ipa_pass_list): Handle IPA subpasses of IPA subpasses and
22750         disallov RTL subpasses of IPA subpasses.
22751
22752 2008-04-05  Ben Elliston  <bje@au.ibm.com>
22753
22754         * tree-cfg.c (need_fake_edge_p): Return false for calls to
22755         builtins that return exactly once and do not throw. Cache call to
22756         call_expr_flags.
22757
22758 2008-04-04 Andy Hutchinson <hutchinsonandy@aim.com>
22759
22760         PR rtl-optimization/34916
22761         PR middle-end/35519
22762         * combine.c (create_log_links): Do not create duplicate LOG_LINKS
22763         between instruction pairs.
22764
22765 2008-04-04  Naveen.H.S  <naveen.hs@kpitcummins.com>
22766
22767         * doc/invoke.texi: Document -mbitops for SH.
22768         * config/sh/constraints.md (K03, K12, Sbv, Sbw): New constraints.
22769         * config/sh/predicates.md (bitwise_memory_operand): New predicate.
22770         * config/sh/sh.c (print_operand): Add %t operand code.
22771         * config/sh/sh.h (GO_IF_LEGITIMATE_INDEX): Add condition for SH2A.
22772         * config/sh/sh.md (*iorsi3_compact): Fix condition for SH2A.
22773         (extendqisi2_compact): Add the alternative for SH2A 4-byte mov.b.
22774         (extendqihi2): Likewise.
22775         (movqi_i): Likewise.
22776         (insv): Use bset, bclr and bst instructions for SH2A if possible.
22777         (extv): Use bld instruction for SH2A if possible.
22778         (extzv): Likewise.
22779         (bclr_m2a, bclrmem_m2a, bset_m2a, bsetmem_m2a, bst_m2a, bld_m2a,
22780         bldsign_m2a, bld_reg, *bld_regqi, band_m2a, bandreg_m2a,
22781         bor_m2a, borreg_m2a, bxor_m2a, bxorreg_m2a): New insns.
22782         (bset.b, bclr.b): Define peepholes.
22783         * config/sh/sh.opt (mbitops): New option.
22784
22785 2008-04-04  Janis Johnson  <janis187@us.ibm.com>
22786
22787         PR target/35620
22788         * config/rs6000/rs6000.c (rs6000_check_sdmode): Handle indirect ref
22789         and view convert expression.
22790
22791 2008-04-04  Jakub Jelinek  <jakub@redhat.com>
22792
22793         PR target/35364
22794         * tree-cfg.c (remove_useless_stmts_1): Handle OMP_* containers.
22795
22796 2008-04-04  H.J. Lu  <hongjiu.lu@intel.com>
22797
22798         * config.gcc (extra_headers): Add wmmintrin.h for x86 and x86-64.
22799
22800         * config/i386/cpuid.h (bit_AES): New.
22801         (bit_PCLMUL): Likewise.
22802
22803         * config/i386/i386.c (pta_flags): Add PTA_AES and PTA_PCLMUL.
22804         (override_options): Handle PTA_AES and PTA_PCLMUL.  Enable
22805         SSE2 if AES or PCLMUL is enabled.
22806         (ix86_builtins): Add IX86_BUILTIN_AESENC128,
22807         IX86_BUILTIN_AESENCLAST128, IX86_BUILTIN_AESDEC128,
22808         IX86_BUILTIN_AESDECLAST128, IX86_BUILTIN_AESIMC128,
22809         IX86_BUILTIN_AESKEYGENASSIST128 and IX86_BUILTIN_PCLMULQDQ128.
22810         (bdesc_sse_3arg): Add IX86_BUILTIN_PCLMULQDQ128.
22811         (bdesc_2arg): Add IX86_BUILTIN_AESENC128,
22812         IX86_BUILTIN_AESENCLAST128, IX86_BUILTIN_AESDEC128,
22813         IX86_BUILTIN_AESDECLAST128 and IX86_BUILTIN_AESKEYGENASSIST128.
22814         (bdesc_1arg): Add IX86_BUILTIN_AESIMC128.
22815         (ix86_init_mmx_sse_builtins): Define __builtin_ia32_aesenc128,
22816         __builtin_ia32_aesenclast128, __builtin_ia32_aesdec128,
22817         __builtin_ia32_aesdeclast128,__builtin_ia32_aesimc128,
22818         __builtin_ia32_aeskeygenassist128 and
22819         __builtin_ia32_pclmulqdq128.
22820         * config/i386/i386.c (ix86_expand_binop_imm_builtin): New.
22821         (ix86_expand_builtin): Use it for IX86_BUILTIN_PSLLDQI128 and
22822         IX86_BUILTIN_PSRLDQI128.  Handle IX86_BUILTIN_AESKEYGENASSIST128.
22823
22824         * config/i386/i386.h (TARGET_AES): New.
22825         (TARGET_PCLMUL): Likewise.
22826         (TARGET_CPU_CPP_BUILTINS): Handle TARGET_AES and TARGET_PCLMUL.
22827
22828         * config/i386/i386.md (UNSPEC_AESENC): New.
22829         (UNSPEC_AESENCLAST): Likewise.
22830         (UNSPEC_AESDEC): Likewise.
22831         (UNSPEC_AESDECLAST): Likewise.
22832         (UNSPEC_AESIMC): Likewise.
22833         (UNSPEC_AESKEYGENASSIST): Likewise.
22834         (UNSPEC_PCLMUL): Likewise.
22835
22836         * config/i386/i386.opt (maes): New.
22837         (mpclmul): Likewise.
22838
22839         * config/i386/sse.md (aesenc): New pattern.
22840         (aesenclast): Likewise.
22841         (aesdec): Likewise.
22842         (aesdeclast): Likewise.
22843         (aesimc): Likewise.
22844         (aeskeygenassist): Likewise.
22845         (pclmulqdq): Likewise.
22846
22847         * config/i386/wmmintrin.h: New.
22848
22849         * doc/extend.texi: Document AES and PCLMUL built-in function.
22850
22851         * doc/invoke.texi: Document -maes and -mpclmul.
22852
22853 2008-04-04  Paolo Bonzini  <bonzini@gnu.org>
22854
22855         * function.c (free_after_parsing): Replace with
22856         cxx_push_function_context from C++ front-end.
22857         (allocate_struct_function): Don't call langhook.
22858         * langhooks.h (struct lang_hooks_for_functions): Delete.
22859         (struct lang_hooks): Add back missing_noreturn_ok_p here, delete
22860         member "function".
22861         * langhooks-def.h (LANG_HOOKS_MISSING_NORETURN_OK_P): Add.
22862         (LANG_HOOKS_FUNCTION_INIT, LANG_HOOKS_FUNCTION_FINAL,
22863         LANG_HOOKS_FUNCTION_MISSING_NORETURN_OK_P,
22864         LANG_HOOKS_FUNCTION_INITIALIZER): Delete.
22865         (LANG_HOOKS_INITIALIZER): Add LANG_HOOKS_MISSING_NORETURN_OK_P,
22866         remove LANG_HOOKS_FUNCTION_INITIALIZER.
22867         * tree-cfg.c: Adjust call to missing_noreturn_ok_p langhook.
22868
22869         * c-objc-common.h (LANG_HOOKS_FUNCTION_MISSING_NORETURN_OK_P):
22870         Rename to LANG_HOOKS_MISSING_NORETURN_OK_P.
22871
22872 2008-04-04  Jakub Jelinek  <jakub@redhat.com>
22873
22874         PR c/35440
22875         * c-pretty-print.c (pp_c_initializer_list): Handle CONSTRUCTOR
22876         for all types.
22877
22878 2008-04-04  Richard Guenther  <rguenther@suse.de>
22879
22880         PR middle-end/35823
22881         * fold-const.c (optimize_minmax_comparison): Use the correct
22882         type for the constant in the simplified comparison.
22883
22884 2008-04-04  Zuxy Meng <zuxy.meng@gmail.com>
22885
22886         * config/i386/driver-i386.c (describe_cache): Add l2_sizekb argument.
22887         Pass L2 size as "--param l2-cache-size" to the compiler.
22888         (decode_l2_cache): New function to decode L2 cache parameters using
22889         0x8000006 extended cpuid function.
22890         (detect_caches_amd): Determine parameters of L2 cache using
22891         decode_l2_caches function.
22892         (decode_caches_intel): Decode L2 cache parameters.
22893         (detect_caches_intel): Determine L2 cache parameters using
22894         decode_caches_intel and decode_l2_caches functions.
22895
22896 2008-04-03  Bob Wilson  <bob.wilson@acm.org>
22897
22898         * config/xtensa/xtensa.c (xtensa_secondary_reload_class): Use a
22899         secondary input reload for subword loads from the constant pool.
22900
22901 2008-04-03  Janis Johnson  <janis187@us.ibm.com>
22902
22903         PR target/35713
22904         * config/rs6000/rs6000.c (rs6000_gimplify_va_arg): Use integer
22905           constants of the appropriate size for runtime calculations.
22906
22907         PR c/35712
22908         * dfp.c (decimal_from_decnumber): Retain trailing zeroes for
22909           decimal-float literal constant zero.
22910
22911 2008-04-03  Jakub Jelinek  <jakub@redhat.com>
22912
22913         PR c/35738
22914         * c-parser.c (c_parser_omp_atomic): Call
22915         default_function_array_conversion on the RHS.
22916
22917         PR middle-end/35818
22918         * omp-low.c (scan_sharing_clauses) <case OMP_CLAUSE_SHARED>: Don't
22919         call is_variable_sized if decl has incomplete type.
22920
22921 2008-04-03  H.J. Lu  <hongjiu.lu@intel.com>
22922
22923         * config/i386/i386-protos.h (ix86_aligned_p): Removed.
22924
22925 2008-04-03  Adam Nemet  <anemet@caviumnetworks.com>
22926
22927         * config/mips/mips.md (any_gt, any_ge, any_lt, any_le): New code
22928         iterators.
22929         (u): Add attribute values for gt, gtu, ge, geu, lt, ltu, le and leu.
22930         (sgt<u>): Merge sgt and sgtu into new expander.
22931         (sgt, sgtu): Remove expanders.
22932         (*sgt<u>_<mode>): Merge *sgt_<mode> and *sgtu_<mode> into new pattern.
22933         (*sgt_<mode>, *sgtu_<mode>): Remove patterns.
22934         (*sgt<u>_<mode>_mips16): Merge *sgt_<mode>_mips16 and
22935         *sgtu_<mode>_mips16 into new pattern.
22936         (*sgt_<mode>_mips16, *sgtu_<mode>_mips16): Remove patterns.
22937         (sge<u>): Merge sge and sgeu into new expander.
22938         (sge, sgeu): Remove expanders.
22939         (*sge<u>_<mode>): Merge *sge_<mode> and second *sge_<mode> into
22940         new pattern.
22941         (*sge_<mode>, second *sge_<mode>): Remove patterns.
22942         (slt<u>): Merge slt and sltu into new expander.
22943         (slt, sltu): Remove expanders.
22944         (*slt<u>_<mode>): Merge *slt_<mode> and *sltu_<mode> into new pattern.
22945         (*slt_<mode>, *sltu_<mode>): Remove patterns.
22946         (*slt<u>_<mode>_mips16): Merge *slt_<mode>_mips16 and
22947         *sltu_<mode>_mips16 into new pattern.
22948         (*slt_<mode>_mips16, *sltu_<mode>_mips16): Remove patterns.
22949         (sle<u>): Merge sle and sleu into new expander.
22950         (sle, sleu): Remove expanders.
22951         (*sle<u>_<mode>): Merge *sle_<mode> and *sleu_<mode> into new pattern.
22952         (*sle_<mode>, *sleu_<mode>): Remove patterns.
22953         (*sle<u>_<mode>_mips16): Merge *sle_<mode>_mips16 and
22954         *sleu_<mode>_mips16 into new pattern.
22955         (*sle_<mode>_mips16, *sleu_<mode>_mips16): Remove patterns.
22956
22957 2008-04-03  Jan Hubicka  <jh@suse.cz>
22958
22959         PR tree-optimization/35795
22960         * alpha/alpha.c (alpha_output_mi_thunk_osf): Free after compilation.
22961         * sparc/sparc.c (sparc_output_mi_thunk): Likewise.
22962         * ia64/ia64.c (ia64_output_mi_thunk): Likewise.
22963         * m68k/m68k.c (m68k_output_mi_thunk): Likewise.
22964         * score/score3.c (score3_output_mi_thunk): Likewise.
22965         * score/score7.c (score7_output_mi_thunk): Likewise.
22966         * mips/mips.c (mips_output_mi_thunk): Likewise.
22967
22968 2008-04-03  Richard Guenther  <rguenther@suse.de>
22969
22970         * tree-vrp.c (extract_range_from_unary_expr): Handle all
22971         conversions.  Simplify code.
22972
22973 2008-04-03  Kaz Kojima  <kkojima@gcc.gnu.org>
22974
22975         * config/sh/sh.c (sh_output_mi_thunk): Free cfun.
22976
22977 2008-04-03  Tom Tromey  <tromey@redhat.com>
22978             Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
22979
22980         * config/m68k/t-uclinux (generated_files): Add sysroot-suffix.h.
22981         * config/bfin/t-bfin-linux (generated_files): Add
22982         linux-sysroot-suffix.h.
22983         * doc/install.texi (Prerequisites): Require make 3.80.
22984         * doc/sourcebuild.texi (Front End Directory): Document new
22985         variable.
22986         * Makefile.in (generated_files): New variable.
22987         (ALL_HOST_OBJS): New variable.
22988         ($(ALL_HOST_OBJS)): New target.
22989
22990 2008-04-03  Paolo Bonzini  <bonzini@gnu.org>
22991
22992         * tree-inline.c (copy_generic_body, copy_decl_no_change): Export.
22993         (remap_block): Call id->transform_lang_insert_block instead
22994         of langhook.
22995         (optimize_inline_calls, unsave_expr_now, tree_function_versioning):
22996         Set id.transform_lang_insert_block to NULL.
22997         (clone_body): Move to cp/optimize.c
22998         * tree-inline.h (struct copy_body_data): Change
22999         transform_lang_insert_block to function pointer.
23000         (copy_generic_body, copy_decl_no_change): Export.
23001         * langhooks.h (struct lang_hooks_for_decls): Kill insert_block.
23002         * langhooks-def.h (LANG_HOOKS_INSERT_BLOCK): Kill.
23003         (LANG_HOOKS_DECLS): Remove LANG_HOOKS_INSERT_BLOCK.
23004
23005         * c-tree.h (insert_block): Kill.
23006         * c-decl.c (insert_block): Kill.
23007
23008 2008-04-03  Paolo Bonzini  <bonzini@gnu.org>
23009
23010         * c-objc-common.h (LANG_HOOKS_FUNCTION_ENTER_NESTED,
23011         LANG_HOOKS_FUNCTION_LEAVE_NESTED): Delete.
23012         * c-tree.h (c_push_function_context, c_pop_function_context): Remove
23013         argument.
23014         * c-decl.c (c_push_function_context, c_pop_function_context): Remove
23015         argument, call {push,pop}_function_context from here.
23016         * c-parser.c: Use c_{push,pop}_function_context.
23017
23018         * function.c (push_function_context_to): Move meat ...
23019         (push_function_context): ... here.  Simplify.
23020         * function.c (pop_function_context_from): Move meat ...
23021         (pop_function_context): ... here.  Simplify.
23022         * langhooks.h (struct lang_hooks_for_functions): Remove enter_nested,
23023         leave_nested).
23024         * langhooks-def.h (LANG_HOOKS_FUNCTION_ENTER_NESTED,
23025         LANG_HOOKS_FUNCTION_LEAVE_NESTED): Delete.
23026         (LANG_HOOKS_FUNCTION_INITIALIZER): Delete them from here.
23027         * tree.h (push_function_context_to, pop_function_context_from): Remove.
23028
23029 2008-04-03  Ben Elliston  <bje@au.ibm.com>
23030
23031         * expmed.c (extract_force_align_mem_bit_field): Remove.
23032
23033 2008-04-03  Richard Guenther  <rguenther@suse.de>
23034
23035         PR middle-end/35800
23036         * expr.h (try_casesi): Adjust prototype.
23037         * expr.c (try_casesi): Take fallback label as extra parameter.
23038         Use that for gen_casesi if default_label is NULL.
23039         * stmt.c (expand_case): Pass fallback label to try_casesi,
23040         make sure to fill gaps with a fallback label if default_label
23041         is not present.
23042
23043 2008-04-03  Dominique d'Humières <dominiq@lps.ens.fr>
23044
23045         PR target/35801
23046         * config/rs6000/rs6000.c (rs6000_output_mi_thunk): Free cfun.
23047
23048 2008-04-03  Ben Elliston  <bje@au.ibm.com>
23049
23050         * expmed.c (extract_split_bit_field): Remove if (0) code.
23051         * tree-ssa-structalias.c (do_sd_constraint): Likewise.
23052         (do_ds_constraint): Likewise.
23053
23054 2008-04-02  Joseph Myers  <joseph@codesourcery.com>
23055
23056         * doc/cppopts.texi (-dU): Document.
23057         * c-common.h (flag_dump_macros): Update comment.
23058         * c-opts.c (handle_OPT_d): Handle -dU.
23059         * c-ppoutput.c (macro_queue, define_queue, undef_queue,
23060         dump_queued_macros, cb_used_define, cb_used_undef): New.
23061         (init_pp_output): Handle -dU.
23062         (cb_line_change): Call dump_queued_macros.
23063         * toplev.c (decode_d_option): Accept -dU as preprocessor option.
23064
23065 2008-04-02  Anatoly Sokolov <aesok@post.ru>
23066
23067         * config/avr/predicates.md (io_address_operand): New predicate.
23068         * config/avr/avr-protos.h (avr_io_address_p): Remove declaration.
23069         * config/avr/avr.c (avr_io_address_p): Remove function.
23070         (out_movqi_r_mr): Use 'io_address_operand' predicate instead of
23071         'avr_io_address_p' function.
23072         (out_movhi_r_mr): (Ditto.).
23073         (out_movqi_mr_r): (Ditto.).
23074         (out_movhi_mr_r): (Ditto.).
23075         (avr_address_cost): (Ditto.).
23076
23077 2008-04-02  Uros Bizjak  <ubizjak@gmail.com>
23078
23079         * config/i386/i386.md (*float<SSEMODEI24:mode><X87MODEF:mode>2_1):
23080         Emit gen_floatdi<X87MODEF:mode>2_i387_with_xmm for DImode values
23081         in 32bit mode when XMM registers are available to avoid store
23082         forwarding stalls.
23083         (floatdi<X87MODEF:mode>2_i387_with_xmm): New insn pattern and
23084         corresponding post-reload splitters.
23085
23086 2008-04-02  H.J. Lu  <hongjiu.lu@intel.com>
23087
23088         * config/i386/i386.c (bdesc_sse_3arg): Add __builtin_ia32_shufps
23089         and __builtin_ia32_shufpd.  Provide __builtin_ia32_roundsd and
23090         __builtin_ia32_roundss.
23091         (ix86_init_mmx_sse_builtins): Remove __builtin_ia32_shufps,
23092         __builtin_ia32_shufpd, __builtin_ia32_roundsd and
23093         __builtin_ia32_roundss.
23094         (ix86_expand_builtin): Don't handle IX86_BUILTIN_SHUFPS and
23095         IX86_BUILTIN_SHUFPD here.
23096
23097 2008-04-02  H.J. Lu  <hongjiu.lu@intel.com>
23098
23099         * config/i386/i386.md (plogic): New.
23100         (plogicprefix): Likewise.
23101
23102         * config/i386/mmx.md (mmx_<code><mode>3): New.
23103         (mmx_and<mode>3): Removed.
23104         (mmx_ior<mode>3): Likewise.
23105         (mmx_xor<mode>3): Likewise.
23106
23107         * config/i386/sse.md (<code><mode>3): New.
23108         (*<code><mode>3): Likewise.
23109         (*<code><mode>3): Likewise.
23110         (<code><mode>3): Likewise.
23111         (*sse_<code><mode>3): Likewise.
23112         (*sse2_<code><mode>3): Likewise.
23113         (<code>tf3): Likewise.
23114         (*<code>tf3): Likewise.
23115         (and<mode>3): Likewise.
23116         (*and<mode>3): Likewise.
23117         (ior<mode>3): Removed.
23118         (*ior<mode>3): Likewise.
23119         (xor<mode>3): Likewise.
23120         (*xor<mode>3): Likewise.
23121         (*and<mode>3): Likewise.
23122         (*ior<mode>3): Likewise.
23123         (*xor<mode>3): Likewise.
23124         (and<mode>3): Likewise.
23125         (*sse_and<mode>3): Likewise.
23126         (*sse2_and<mode>3): Likewise.
23127         (andtf3): Likewise.
23128         (*andtf3): Likewise.
23129         (ior<mode>3): Likewise.
23130         (*sse_ior<mode>3): Likewise.
23131         (*sse2_ior<mode>3): Likewise.
23132         (iortf3): Likewise.
23133         (*iortf3): Likewise.
23134         (xor<mode>3): Likewise.
23135         (*sse_xor<mode>3): Likewise.
23136         (*sse2_xor<mode>3): Likewise.
23137         (xortf3): Likewise.
23138         (*xortf3): Likewise.
23139
23140 2008-04-02  Richard Guenther  <rguenther@suse.de>
23141
23142         PR tree-optimization/14495
23143         PR tree-optimization/34793
23144         * tree-vrp.c (struct switch_update): New structure.
23145         (to_remove_edges, to_update_switch_stmts): New VECs.
23146         (simplify_switch_using_ranges): New function.  Remove not taken
23147         case labels and edges.
23148         (simplify_stmt_using_ranges): Call it.
23149         (identify_jump_threads): Mark edges we have queued for removal
23150         so we don't thread them.
23151         (execute_vrp): Remove edges queued for removal, update SWITCH_STMT
23152         case label vector.
23153         * tree-cfg.c (group_case_labels): Deal with missing default label.
23154         (tree_verify_flow_info): Allow missing default label.
23155         * stmt.c (emit_case_bit_tests): Deal with NULL default_label.
23156         (emit_case_nodes): Likewise.
23157         (expand_case): Do not rely on the default label to be present.
23158         * expr.c (try_casesi): Deal with NULL default_label.
23159         (do_tablejump): Likewise.
23160
23161 2008-04-02  Richard Guenther  <rguenther@suse.de>
23162
23163         PR tree-optimization/14495
23164         * tree-vrp.c (vrp_visit_cond_stmt): Do not handle
23165         SWITCH_EXPR here ...
23166         (vrp_visit_switch_stmt): ... but here (new function).
23167         (find_case_label_index): New helper function.
23168         (vrp_visit_stmt): Dispatch to vrp_visit_switch_stmt.
23169
23170 2008-04-02  Paolo Bonzini  <bonzini@gnu.org>
23171
23172         * fwprop.c: Fix ISO-C99ism.
23173
23174 2008-04-02  Paolo Bonzini  <bonzini@gnu.org>
23175
23176         PR bootstrap/35752
23177         * Makefile.in (objdir): Set it here.
23178         * configure.ac: Not here.  Find dynamic linker characteristics.
23179         * exec-tool.in: Use them.
23180         * aclocal.m4: Regenerate.
23181         * configure: Regenerate.
23182
23183 2008-04-02  Paolo Bonzini  <bonzini@gnu.org>
23184
23185         * expr.c (expand_var): Delete it.
23186         * expr.h (expand_var): Delete prototype.
23187         * function.c (expand_function_start): Use expand_decl instead.
23188         * cfgexpand.c (expand_one_static_var, expand_one_var): Don't call
23189         langhook.
23190
23191 2008-04-02  Andy Hutchinson <hutchinsonamdy@aim.com>
23192
23193         PR rtl-optimization/35542
23194         * fwprop.c (forward_propagate_and_simplify): Replace
23195         loc_reg_mentioned_in_p with reg_mentioned_p.
23196
23197 2008-04-02  Paolo Bonzini  <bonzini@gnu.org>
23198
23199         PR rtl-optimization/35281
23200         * fwprop.c (PR_CAN_APPEAR, PR_HANDLE_MEM): New.
23201         (propagate_rtx_1): Handle PR_HANDLE_MEM.
23202         (propagate_rtx): Pass PR_HANDLE_MEM if appropriate.
23203         (varying_mem_p): Move above propagate_rtx.
23204         (all_uses_available_at): Do not check MEMs.
23205
23206 2008-04-02  Rafael Espíndola  <espindola@google.com>
23207
23208         * tree-vrp.c (extract_code_and_val_from_cond): Remove.
23209         (register_edge_assert_for_2): Split the cond argument.
23210         (register_edge_assert_for_1): Adjust for the change in
23211         register_edge_assert_for_2.
23212         (register_edge_assert_for): Split the cond argument.
23213         (find_switch_asserts): Adjust for the change in
23214         register_edge_assert_for.
23215
23216 2008-04-02  Kai Tietz  <kai.tietz@onevision.com>
23217
23218         * config.gcc: Add for x86_64-*-mingw* the t-crtfm to tbuild.
23219         * config/i386/cygming.h (ASM_OUTPUT_DWARF_OFFSET): Add 8 byte
23220         offsets for 64-bit mingw.
23221         * config/i386/i386.c (ix86_pass_by_reference): Correct calling
23222         abi for x86_64-pc-mingw.
23223
23224 2008-04-02  Richard Guenther  <rguenther@suse.de>
23225
23226         * tree-vrp.c (extract_range_from_assert): Make sure to not
23227         produce range min/max with TREE_OVERFOW set.
23228         If merging a anti-range and a range keep the anti-range if
23229         the range covers all values of the type.
23230         (register_edge_assert_for_2): Only allow sign-changing
23231         conversions in detecting canonical range checks.  Also
23232         register an assert for the unsigned name if useful.
23233
23234         PR tree-optimization/35787
23235         * tree-vrp.c (vrp_val_max): New function.
23236         (vrp_val_min): Likewise.
23237         (vrp_val_is_max): Move earlier, use vrp_val_{min,max}.
23238         (vrp_val_is_min): Likewise.
23239         (supports_overflow_infinity): Use vrp_val_{min,max}.
23240         (negative_overflow_infinity): Likewise.
23241         (positive_overflow_infinity): Likewise.
23242         (is_negative_overflow_infinity): Use vrp_val_is_{min,max}.
23243         (is_positive_overflow_infinity): Likewise.
23244         (is_overflow_infinity): Likewise.
23245         (avoid_overflow_infinity): Use vrp_val_{min,max} and
23246         vrp_val_is_{min,max}.
23247         (set_and_canonicalize_value_range): Canonicalize anti-ranges
23248         to ranges if possible.  Avoid empty ranges.
23249
23250 2008-04-01  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
23251
23252         PR middle-end/35705
23253         * fold-const.c (get_pointer_modulus_and_residue): Return modulus 1 if
23254         the expression is a function address.
23255
23256 2008-04-01  George Helffrich  <george@gcc.gnu.org>
23257
23258         PR fortran/35154, fortran/23057
23259         * dbxout.c: Emit .stabs debug info for Fortran COMMON block
23260         variables as base symbol name + offset using N_BCOMM/N_ECOMM.
23261         (is_fortran, dbxout_common_name, dbxout_common_check): New functions.
23262         (dbxout_symbol_location): Transform N_LCSYM to N_GSYM for storage
23263         in common.
23264         (dbxout_syms): Check for COMMON-based symbol and wrap in
23265         N_BCOMM/N_ECOMM stab bracket, including as many symbols as possible
23266         in bracket for efficiency.
23267
23268         * dwarf2out.c: Emit DWARF debug info for Fortran COMMON block
23269         using DW_TAG_common_block + member offset.
23270         (add_pubname_string): New function.
23271         (dw_expand_expr): New function to find block name and offset for
23272         COMMON var.
23273         (common_check): New function to check whether symbol in Fortran COMMON.
23274         (gen_variable_die): If COMMON, use DW_TAG_common_block.
23275
23276 2008-04-01  Volker Reichelt  <v.reichelt@netcologne.de>
23277
23278         PR c/35436
23279         * c-format.c (init_dynamic_gfc_info): Ignore invalid locus type.
23280
23281 2008-04-02  Ben Elliston  <bje@au.ibm.com>
23282
23283         * config/v850/v850.md (casesi): Remove if (0) code.
23284         * config/i386/uwin.h (ASM_DECLARE_FUNCTION_NAME): Likewise.
23285         * config/alpha/alpha.c (alpha_initialize_trampoline): Likewise.
23286
23287 2008-04-01  Uros Bizjak  <ubizjak@gmail.com>
23288
23289         * config/i386/i386.md (rex64suffix): New mode attribute.
23290         (floathi<mode>2): Disable expander for SSE math.
23291         (*floathi<mode>2_1): New insn insn_and_split pattern.
23292         (*floathi<mode>2_i387_with_temp): New macroized instruction pattern and
23293         corresponding post-reload splitters.
23294         (*floathi<mode>2_i387): New macroized insn pattern.
23295         (float<SSEMODEI24:mode><X87MODEF:mode>2): New macroized expander.
23296         (*float<SSEMODEI24:mode><X87MODEF:mode>2_1): New macroized
23297         insn_and_split pattern.
23298         (*floatsi<mode>2_vector_mixed_with_temp, *floatsi<mode>2_vector_mixed):
23299         New macroized instruction patterns and corresponding post-reload
23300         splitters.
23301         (*floatsi<mode>2_mixed_with_temp): New macroized instruction pattern
23302         and corresponding post-reload splitters.
23303         (*floatsi<mode>2_mixed_interunit, *floatsi<mode>2_mixed_nointerunit):
23304         New macroized instruction patterns.
23305         (*floatsi<mode>2_vector_sse_with_temp, *floatsi<mode>2_vector_sse): New
23306         macroized instruction patterns and corresponding post-reload splitters.
23307         (*floatsi<mode>2_sse_with_temp): New macroized instruction pattern and
23308         corresponding post-reload splitters.
23309         (*floatsi<mode>2_sse_interunit, *floatsi<mode>2_mixed_nointerunit):
23310         New macroized instruction patterns.
23311         (*floatsi<mode>2_i387_with_temp): New macroized instruction pattern and
23312         corresponding post-reload splitters.
23313         (*floatsi<mode>2_i387): New macroized instruction patterns.
23314
23315 2008-04-01  H.J. Lu  <hongjiu.lu@intel.com>
23316
23317         * config/i386/i386.md (smaxmin): New.
23318         (umaxmin): Likewise.
23319         (maxminiprefix): Likewise.
23320         (maxminfprefix): Likewise.
23321         (<code><mode>3): Likewise.
23322         (smin<mode>3): Removed.
23323         (smax<mode>3): Likewise.
23324
23325         * config/i386/mmx.md (mmx_<code>v2sf3): New.
23326         (mmx_<code>v4hi3): Likewise.
23327         (mmx_<code>v8qi3): Likewise.
23328         (mmx_smaxv2sf3): Removed.
23329         (mmx_sminv2sf3): Likewise.
23330         (mmx_umaxv8qi3): Likewise.
23331         (mmx_smaxv4hi3): Likewise.
23332         (mmx_uminv8qi3): Likewise.
23333         (mmx_sminv4hi3): Likewise.
23334
23335         * config/i386/sse.md (<addsub><mode>3): New.
23336         (*<addsub><mode>3): Likewise.
23337         (<sse>_vm<addsub><mode>3): Likewise.
23338         (<maxmin><mode>3): Likewise.
23339         (*<maxmin><mode>3_finite): Likewise.
23340         (*<maxmin><mode>3): Likewise.
23341         (<sse>_vm<maxmin><mode>3): Likewise.
23342         (sse3_h<addsub>v4sf3): Likewise.
23343         (sse3_h<addsub>v2df3): Likewise.
23344         (<maxmin>v16qi3): Likewise.
23345         (*<maxmin>v16qi3): Likewise.
23346         (<maxmin>v8hi3): Likewise.
23347         (*<maxmin>v8hi3): Likewise.
23348         (*sse4_1_<maxmin><mode>3): Likewise.
23349         (*sse4_1_<maxmin><mode>3): Likewise.
23350         (add<mode>3): Removed.
23351         (*add<mode>3): Likewise.
23352         (<sse>_vmadd<mode>3): Likewise.
23353         (sub<mode>3): Likewise.
23354         (*sub<mode>3): Likewise.
23355         (<sse>_vmsub<mode>3): Likewise.
23356         (smin<mode>3): Likewise.
23357         (*smin<mode>3_finite): Likewise.
23358         (*smin<mode>3): Likewise.
23359         (<sse>_vmsmin<mode>3): Likewise.
23360         (smax<mode>3): Likewise.
23361         (*smax<mode>3_finite): Likewise.
23362         (*smax<mode>3): Likewise.
23363         (<sse>_vmsmax<mode>3): Likewise.
23364         (sse3_haddv4sf3): Likewise.
23365         (sse3_haddv2df3): Likewise.
23366         (sse3_hsubv4sf3): Likewise.
23367         (sse3_hsubv2df3): Likewise.
23368         (umaxv16qi3): Likewise.
23369         (*umaxv16qi3): Likewise.
23370         (smaxv8hi3): Likewise.
23371         (*smaxv8hi3): Likewise.
23372         (*sse4_1_smax<mode>3): Likewise.
23373         (*sse4_1_umax<mode>3): Likewise.
23374         (uminv16qi3): Likewise.
23375         (*uminv16qi3): Likewise.
23376         (sminv8hi3): Likewise.
23377         (*sminv8hi3): Likewise.
23378         (*sse4_1_smin<mode>3): Likewise.
23379         (*sse4_1_umin<mode>3): Likewise.
23380
23381 2008-04-01  Rafael Espíndola  <espindola@google.com>
23382
23383         * tree-cfg.c (verify_expr): remove in_phi.
23384         (verify_stmt): Don't call walk_tree with verify_expr. Use
23385         is_gimple_min_invariant instead of is_gimple_val.
23386
23387 2008-04-01  Joseph Myers  <joseph@codesourcery.com>
23388
23389         * doc/include/gpl_v3.texi: Update for manpage generation.
23390         * doc/gcc.texi, doc/gccint.texi: Include gpl_v3.texi instead of
23391         gpl.texi.
23392         * doc/sourcebuild.texi: Document gpl_v3.texi as well as gpl.texi.
23393         * Makefile.in (TEXI_GCC_FILES, TEXI_GCCINT_FILES): Include
23394         gpl_v3.texi instead of gpl.texi.
23395         (gpl.pod): New.
23396
23397 2008-04-01  Jakub Jelinek  <jakub@redhat.com>
23398
23399         PR pch/13675
23400         * c-pch.c (c_common_read_pch): On error close (fd) resp. fclose (f).
23401
23402 2008-04-01  Rafael Espíndola  <espindola@google.com>
23403
23404         * tree-vrp.c (extract_code_and_val_from_cond_with_ops): New.
23405         (extract_code_and_val_from_cond): Use
23406         extract_code_and_val_from_cond_with_ops.
23407
23408 2008-04-01  Jan Hubicka  <jh@suse.cz>
23409
23410         * function.c (free_after_compilation): Free epilogue_delay_list.
23411         (prepare_function_start): Assert that previous compilation was freed.
23412
23413 2008-04-01  Jan Hubicka  <jh@suse.cz>
23414             Jim Wilson  <wilson@tuliptree.org>
23415             Andreas Tobler <andreast@gcc.gnu.org>
23416
23417         PR middle-end/35781
23418         * m32c/m32.c (m32c_leaf_function_p, m32c_function_needs_enter): Use
23419         rtl.emit instead cfun->emit.
23420         * sparc/sparc.h (INIT_EXPANDERS): Likewise.
23421         * ia64/ia64.h (INIT_EXPANDERS): Likewise.
23422
23423 2008-04-01  Ben Elliston  <bje@au.ibm.com>
23424
23425         * doc/c-tree.texi (Function Basics): Fix grammatical error.
23426
23427 2008-03-31  Seongbae Park <seongbae.park@gmail.com>
23428
23429         * common.opt (fprofile-dir=, fprofile-use=, fprofile-generate=):
23430         New options
23431         (fprofile-use): Add var flag_profile_use
23432         * coverage.c (coverage_begin_output): Do not open a gcno file for
23433         output only if -ftest-coverage is set.
23434         Do not add getpwd() to gcda file path.
23435         (build_gcov_info): Check the new flag
23436         flag_profile_datafile_relative_path.
23437         (coverage_init): Use profile_data_prefix.
23438         Read profile counter only if flag_profile_use is set.
23439         * opts.c (common_handle_option): New option fprofile-use=,
23440         fprofile-dir=, fprofile-generate=.
23441         * toplev.c (profile_data_prefix): New variable definition.
23442         * toplev.h (profile_data_prefix): New declaration.
23443         * doc/invoke.tex (Option Summary, Optimization Options):
23444         Add new options.
23445
23446 2008-03-31  James E. Wilson  <wilson@tuliptree.org>
23447
23448         * varasm.c (output_constant_pool_1): In LABEL_REF check,
23449         use tmp consistently.
23450
23451         PR target/35695
23452         * config/ia64/div.md (recip_approx_rf): Use UNSPEC not DIV.
23453         * config/ia64/ia64.c (rtx_needs_barrier): Handle
23454         UNSPEC_FR_RECIP_APPROX_RES.
23455         * config/ia64/ia64.md (UNSPEC_FR_RECIP_APPROX_RES): Define.
23456
23457 2008-03-31  Volker Reichelt  <v.reichelt@netcologne.de>
23458
23459         PR c/35750
23460         * c-decl.c (store_parm_decls_oldstyle): Skip invalid parameters.
23461
23462 2008-03-31  Andrew Pinski  <andrew_pinski@playstation.sony.com>
23463
23464         PR middle-end/30186
23465         * fold-const.c (fold_indirect_ref_1): Support accessing non first
23466         element of the vector via a pointer.
23467
23468 2008-03-31  Ian Lance Taylor  <iant@google.com>
23469
23470         * tlink.c (scan_linker_output): Look for symbol name in single quotes.
23471
23472 2008-03-31  Jan Hubicka  <jh@suse.cz>
23473
23474         * builtins.c (expand_builtin_setjmp_receiver): Update call of
23475         get_arg_pointer_save_area.
23476         * expr.c (init_expr): Just clear out rtl.expr.
23477         * function.c (free_after_compilation): Clear out whole RTL structure.
23478         (get_func_frame_size): Merge into ...
23479         (get_frame_size): ... this one.
23480         (assign_stack_local_1): Merge into ...
23481         (assign_stack_local): ... this one.
23482         (expand_function_end): Update call of get_arg_pointer_save_area.
23483         (get_art_pointer_save_area): Remove cfun argument.
23484         * function.h (emit_status): regno_pointer_align does not need length
23485         attribute. Move x_regno_reg_rtx to ...
23486         (regno_reg_rtx): ... new global array.
23487         (reg_rtx_no, seq_stack, REGNO_POINTER_ALIGN): Update accestors.
23488         (pending_stack_adjust, inhibit_defer_pop, saveregs_value,
23489         apply_args_value, forced_labels, stack_pointer_delta):
23490         Update accestors.
23491         (struct varasm_status): Move here from varasm.c
23492         (struct rtl_data): New. Move here some fields from struct function.
23493         (return_label, naked_return_label, stack_slot_list, parm_birth_insn,
23494         frame_offset, stack_check_probe_note, arg_pointer_save_area,
23495         used_temp_slots avail_temp_slots, temp_slot_level,
23496         nonlocal_goto_handler_labels): Update accesstors.
23497         (rtl): New global variable.
23498         (struct function): Move some fileds to rtl_data.
23499         (get_arg_pointer_save_area): Update prototype.
23500         * emit-rtl.c (rtl): Declare.
23501         (regno_reg_rtx): Declare.
23502         (first_insn, last_insn, cur_insn_uid, last_location, first_label_num):
23503         Update.
23504         (gen_reg_rtx): Update.
23505         (init_virtual_regs): Do not tate emit_status argument.
23506         (init_emit): Do not allocate emit.
23507         * varasm.c (varasm_statuc): Move to function.h.
23508         (n_deferred_constatns): Update accestor.
23509         (init_varasm_status): Do not allocate varasm_status.
23510         (force_const_mem, get_pool_size, output_constant_pool): Update.
23511         * stmt.c (force_label_rtx): Do not use x_ prefixes.
23512         (expand_nl_goto_receiver): Update get_arg_pointer_save_area.
23513
23514 2008-03-31  Zdenek Dvorak  <ook@ucw.cz>
23515
23516         PR rtl-optimization/35729
23517         * loop-invariant.c (check_maybe_invariant): Disallow volatile memory
23518         references.
23519
23520 2008-03-31  H.J. Lu  <hongjiu.lu@intel.com>
23521
23522         PR target/32000
23523         * config/i386/i386.md (*movti_internal): Emit unaligned SSE
23524         load/store if memory is unaligned.
23525         (*movti_rex64): Likewise.
23526
23527         * config/i386/predicates.md (misaligned_operand): New.
23528
23529 2008-03-31  Andrew Pinski  <pinskia@gmail.com>
23530
23531         PR tree-opt/35431
23532         * tree-ssa-phiopt.c (conditional_replacement): Return early for
23533         complex types.
23534
23535 2008-03-31  Jan Beulich  <jbeulich@novell.com>
23536
23537         * config/ia64/constraints.md: Add 'j' constraint.
23538         * config/ia64/ia64.md (movsi_internal): Add addp4 case.
23539         (movdi_internal): Likewise.
23540
23541 2008-03-30  Volker Reichelt  <v.reichelt@netcologne.de>
23542
23543         PR c/35748
23544         * c-typeck.c (build_c_cast): Skip invalid fields in unions.
23545
23546 2008-03-30  H.J. Lu  <hongjiu.lu@intel.com>
23547
23548         PR target/35757
23549         * config/i386/i386.c (ix86_expand_sse_4_operands_builtin): Issue
23550         proper error message for the third argument on blendpd and
23551         blendps.
23552
23553         * config/i386/sse.md (blendbits): New.
23554         (sse4_1_blendp<ssemodesuffixf2c>): Use it.
23555
23556 2008-03-30  Eric Botcazou  <ebotcazou@adacore.com>
23557
23558         * fold-const.c (fold_binary) <BIT_IOR_EXPR>: Add missing conversions.
23559
23560 2008-03-30  Richard Guenther  <rguenther@suse.de>
23561
23562         PR middle-end/31023
23563         * fold-const.c (fold_sign_changed_comparison): Do leave
23564         conversions to base-types alone.
23565
23566 2008-03-29  Andrew Pinski  <andrew_pinski@playstation.sony.com>
23567
23568         * config/rs6000/rs6000.c (rs6000_stack_info): Don't force saving of
23569         the link register if one altivec register is be saved.
23570
23571 2008-03-30  Ben Elliston  <bje@au.ibm.com>
23572
23573         * final.c (final_scan_insn): Remove if (0) code.
23574
23575 2008-03-28  Volker Reichelt  <v.reichelt@netcologne.de>
23576
23577         * c-parser.c (c_parser_next_token_is_keyword): Simplify.
23578
23579 2008-03-28  H.J. Lu  <hongjiu.lu@intel.com>
23580
23581         * config/i386/sse.md (*and<mode>3): Pass <MODE>mode instead
23582         of V4SFmode to ix86_binary_operator_ok.
23583
23584 2008-03-28  Uros Bizjak  <ubizjak@gmail.com>
23585
23586         * config/i386/i386.c (override_options): Initialize
23587         ix86_veclib_handler to ix86_veclibabi_svml when
23588         -mveclibabi=svml is used.
23589         (ix86_veclibabi_svml): New function for SVML ABI style
23590         vectorization support.
23591         * doc/invoke.texi (-mveclibabi) [svml]: Document new target option.
23592
23593 2008-03-28  Rafael Espíndola  <espindola@google.com>
23594
23595         * fold-const.c (tree_unary_nonnegative_warnv_p): Make it public.
23596         (tree_binary_nonnegative_warnv_p): Make it public.
23597         (tree_single_nonnegative_warnv_p): Make it public.
23598         (tree_invalid_nonnegative_warnv_p): Make it public.
23599         (tree_unary_nonzero_warnv_p): Make it public.
23600         (tree_binary_nonzero_warnv_p): Make it public
23601         (tree_single_nonzero_warnv_p): Make it public.
23602         * tree-vrp.c (vrp_evaluate_conditional_warnv_with_ops): New function.
23603         (extract_range_from_binary_expr): Split the expr argument.
23604         (extract_range_from_unary_expr): Split the expr argument.
23605         (extract_range_from_comparison): Split the expr argument.
23606         (extract_range_from_expr): Use the new aux functions.
23607         (vrp_evaluate_conditional_warnv): Use
23608         vrp_evaluate_conditional_warnv_with_ops.
23609         * tree.h (tree_unary_nonzero_warnv_p): Declare.
23610         (tree_binary_nonzero_warnv_p): Declare.
23611         (tree_single_nonzero_warnv_p): Declare.
23612         (tree_expr_nonzero_warnv_p): Declare.
23613         (tree_unary_nonnegative_warnv_p): Declare.
23614         (tree_binary_nonnegative_warnv_p): Declare.
23615         (tree_single_nonnegative_warnv_p): Declare.
23616         (tree_invalid_nonnegative_warnv_p): Declare.
23617
23618 2008-03-28  Richard Guenther  <rguenther@suse.de>
23619
23620         PR tree-optimization/30317
23621         PR tree-optimization/30911
23622         PR tree-optimization/34793
23623         * tree-vrp.c (set_and_canonicalize_value_range): New function.
23624         (struct assert_locus_d): New member EXPR.
23625         (register_new_assert_for): Add EXPR parameter to support
23626         ASSERT_EXPR <name, expr OP limit>.
23627         (register_edge_assert_for_1): Adjust callers.
23628         (find_assert_locations): Likewise.
23629         (process_assert_insertions_for): Build condition from expression.
23630         (extract_range_from_assert): Handle ASSERT_EXPRs
23631         of the form ASSERT_EXPR <name, expr OP limit>.
23632         (register_edge_assert_for_2): New helper registering
23633         asserts for comparisons.  Recognize range tests of the form
23634         (unsigned)i - CST1 OP CST2.
23635         (register_edge_assert_for_1): Use it.
23636         (register_edge_assert_for): Likewise.
23637         (needs_overflow_infinity): Integer sub-types
23638         do not need overflow infinities.
23639         (vrp_val_is_max): The extreme values of integer sub-types
23640         are those of the base type.
23641         (vrp_val_is_min): Likewise.
23642         * tree.def (ASSERT_EXPR): Document extra allowed conditional
23643         expressions.
23644
23645 2008-03-28  Nick Clifton  <nickc@redhat.com>
23646
23647         PR target/31110
23648         * config/mn10300/mn10300.c (mn10300_secondary_reload_class):
23649         Return GENERAL_REGS for stack adjustment reloads.
23650
23651 2008-03-28  Andrew Pinski  <andrew_pinski@playstation.sony.com>
23652
23653         PR target/31334
23654         * config/rs6000/rs6000.c (rs6000_expand_vector_init): Create a
23655         const_vector when all the vectors are constant.
23656
23657 2008-03-27  Bob Wilson  <bob.wilson@acm.org>
23658
23659         * config/xtensa/xtensa.c (gen_float_relational): Handle unordered
23660         comparisons.
23661         * config/xtensa/xtensa.md (any_cond): Add unordered comparisons.
23662         (any_scc_sf): Add uneq, unlt, unle and unordered operators.
23663         (scc_sf): New.
23664         (s<code>_sf): Use new scc_sf attribute for opcode names.
23665
23666 2008-03-27  Tom Tromey  <tromey@redhat.com>
23667
23668         * doc/sourcebuild.texi, doc/install.texi, configure, aclocal.m4,
23669         configure.ac, Makefile.in, config/t-darwin, config/m32c/t-m32c,
23670         config/spu/t-spu-elf, config/i386/t-interix,
23671         config/i386/t-cygming, config/i386/x-i386, config/i386/t-cygwin,
23672         config/i386/x-darwin, config/i386/x-mingw32,
23673         config/i386/t-netware, config/i386/x-cygwin, config/i386/t-nwld,
23674         config/sh/t-sh, config/sh/t-symbian, config/x-linux,
23675         config/t-sol2, config/x-hpux, config/x-darwin, config/ia64/t-ia64,
23676         config/x-solaris, config/t-vxworks, config/m68k/t-uclinux,
23677         config/rs6000/x-rs6000, config/rs6000/x-darwin64,
23678         config/rs6000/x-darwin, config/rs6000/t-rs6000,
23679         config/score/t-score-elf, config/arm/t-strongarm-pe,
23680         config/arm/t-pe, config/arm/t-arm, config/arm/t-wince-pe,
23681         config/v850/t-v850, config/v850/t-v850e, config/bfin/t-bfin-linux:
23682         Revert automatic dependency patch.
23683
23684 2008-03-27  H.J. Lu  <hongjiu.lu@intel.com>
23685
23686         PR target/35657
23687         * config/i386/i386.c (ix86_function_arg_boundary): Align
23688         decimal floating point to its natural boundary.
23689
23690 2008-03-27  Richard Guenther  <rguenther@suse.de>
23691
23692         PR middle-end/35716
23693         * fold-const.c (fold_comparison): Restrict distinct decl
23694         comparison folding to VAR_DECLs and PARM_DECLs.  Do not
23695         solely rely on operand_equal_p.
23696
23697 2008-03-27  Richard Guenther  <rguenther@suse.de>
23698
23699         PR c/32511
23700         * c-common.c (handle_weak_attribute): Reject combination of
23701         weak and inline.
23702
23703 2008-03-27  Richard Guenther  <rguenther@suse.de>
23704
23705         PR tree-optimization/32810
23706         * tree-ssa-ccp.c (get_symbol_constant_value): Strip useless
23707         conversions from DECL_INITIAL.
23708         (fold_const_aggregate_ref): Likewise from constructor elements.
23709
23710 2008-03-27  Zdenek Dvorak  <ook@ucw.cz>
23711
23712         * tree-affine.h (aff_combination_expand): Declare.
23713         (get_inner_reference_aff): Likewise.
23714         * tree-affine.c (aff_combination_expand): Split out from
23715         tree_to_aff_combination_expand.
23716         (get_inner_reference_aff): New function.
23717         * tree-parloops.c (loop_parallel_p): Free vectorizer info.
23718         * tree-ssa-loop-im.c: Include tree-affine.h and pointer-set.h.
23719         (struct lim_aux_data): sm_done field removed.
23720         (mem_ref_loc_p, mem_ref_locs_p): New types.
23721         (struct mem_ref): Added id, stored, accesses_in_loop,
23722         indep_loop, dep_loop, indep_ref, dep_ref fields.
23723         Removed is_stored, locs and next fields.
23724         (memory_accesses): New variable.
23725         (movement_possibility): Do not allow moving statements
23726         that store to memory.
23727         (outermost_indep_loop, simple_mem_ref_in_stmt, mem_ref_in_stmt):
23728         New functions.
23729         (determine_max_movement): For statements with memory references,
23730         find the outermost loop in that the reference is independent.
23731         (move_computations_stmt): Mark the virtual operands for renaming.
23732         (memref_free, mem_ref_alloc, mem_ref_locs_alloc, mark_ref_stored,
23733         gather_mem_refs_stmt, gather_mem_refs_in_loops, vtoe_hash, vtoe_eq,
23734         vtoe_free, record_vop_access, get_vop_accesses, get_vop_stores,
23735         add_vop_ref_mapping, create_vop_ref_mapping_loop,
23736         create_vop_ref_mapping, analyze_memory_references,
23737         cannot_overlap_p, mem_refs_may_alias_p, rewrite_mem_ref_loc,
23738         get_all_locs_in_loop, ref_always_accessed_p,
23739         refs_independent_p, record_indep_loop, ref_indep_loop_p_1,
23740         ref_indep_loop_p, can_sm_ref_p, find_refs_for_sm,
23741         store_motion_loop, store_motion): New functions.
23742         (struct vop_to_refs_elt): New type.
23743         (record_mem_ref_loc, free_mem_ref_locs, rewrite_mem_refs,
23744         memref_hash, memref_eq, hoist_memory_references): Rewritten.
23745         (schedule_sm): Replaced by...
23746         (execute_sm): ... this.
23747         (determine_lsm_ref, hoist_memory_references,
23748         loop_suitable_for_sm, gather_mem_refs_stmt, gather_mem_refs,
23749         find_more_ref_vops, free_mem_ref, free_mem_refs,
23750         determine_lsm_loop, determine_lsm): Removed.
23751         (tree_ssa_lim_finalize): Free data structures used by store motion.
23752         (tree_ssa_lim): Call analyze_memory_references.  Use
23753         store_motion instead of determine_lsm.
23754
23755 2008-03-27  Paolo Bonzini  <bonzini@gnu.org>
23756
23757         * config.cc (m68hc11, m6811, m68hc12, m6812): Add usegas.h,
23758         rename tmake_file to m68hc11/t-m68hc11.
23759         (mcore): Set inhibit_libc to true.
23760         * config.host (alpha*-dec-*vms*): Set extra_programs.
23761         (interix3*): Don't use host_xmake_file.
23762         * configure.ac: Let config.gcc override inhibit_libc.
23763         * configure: Regenerate.
23764
23765         * config/alpha/x-vms (EXTRA_PROGRAMS): Remove.
23766         * config/t-openbsd-thread: Remove commented out lines.
23767
23768         * config/x-interix: Remove.
23769
23770         * config/m68hc11/t-m68hc11-gas: Rename to...
23771         * config/m68hc11/t-m68hc11: ... this.  Remove T_CPPFLAGS.
23772
23773         * config/mcore/t-mcore: Remove T_CFLAGS.
23774         * config/mcore/t-mcore-pe: Likewise.
23775
23776 2008-03-27  Paolo Bonzini  <bonzini@gnu.org>
23777
23778         * configure.ac: Replace custom __GNU_SOURCE test with
23779         AC_USE_SYSTEM_EXTENSIONS.  Move it earlier.
23780         * aclocal.m4: Regenerate.
23781         * configure: Regenerate.
23782         * config.in: Regenerate.
23783
23784 2008-03-27  Richard Guenther  <rguenther@suse.de>
23785
23786         * fold-const.c (target.h): Include.
23787         (fold_comparison): Fold comparison of addresses of decls
23788         that bind locally or of constants.  Consolidate address folding code.
23789         * tree-vrp.c (operand_less_p): Deal with non-INTEGER_CST
23790         results from fold_binary_to_constant.
23791         (compare_values_warnv): Likewise.
23792
23793 2008-03-27  Andrew Pinski  <pinskia@gmail.com>
23794
23795         PR middle-end/35429
23796         * fold-const.c (fold_truthop): Check for integeral types when folding
23797         a == 0 && b == 0 and a != 0 || b != 0 .
23798
23799 2008-03-26  Eric Botcazou  <ebotcazou@adacore.com>
23800
23801         * tree.c (get_unwidened): Remove code fiddling with COMPONENT_REF.
23802
23803 2008-03-26  Andreas Schwab  <schwab@suse.de>
23804
23805         * doc/invoke.texi: Fix use of @item vs. @itemx.
23806
23807 2008-03-26  Tom Tromey  <tromey@redhat.com>
23808
23809         * Makefile.in (build/gensupport.o, build/print-rtl.o,
23810         build/read-rtl.o, build/rtl.o, build/gencondmd.o, build/genattr.o,
23811         build/genattrtab.o, build/genautomata.o, build/gencheck.o,
23812         build/gencodes.o, build/genconditions.o, build/genconfig.o,
23813         build/genconstants.o, build/genemit.o, build/genextract.o,
23814         build/genflags.o, build/genmddeps.o, build/genopinit.o,
23815         build/genoutput.o, build/genpeep.o, build/genrecog.o): Depend on
23816         options.h.
23817
23818 2008-03-26  Richard Guenther  <rguenther@suse.de>
23819
23820         Revert
23821         2008-03-26  Richard Guenther  <rguenther@suse.de>
23822
23823         * fold-const.c (target.h): Include.
23824         (fold_comparison): Fold comparison of addresses of two decls
23825         that bind locally.  Consolidate address folding code.
23826
23827 2008-03-26  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
23828
23829         * builtins.c (expand_builtin_pow, fold_builtin_cabs,
23830         fold_builtin_sqrt, fold_builtin_cbrt, fold_builtin_logarithm,
23831         fold_builtin_hypot, fold_builtin_pow): Remove uses of dconst3,
23832         dconstsqrt2, dconstthird, dconste and/or dconst10.
23833         * config/i386/i386.c (ix86_emit_swsqrtsf): Likewise.
23834         * emit-rtl.c (dconst3, dconst10, dconstm2, dconstthird,
23835         dconstsqrt2, dconste): Delete.
23836         (init_emit_once): Likewise.  Simplify initializing dconstm1.
23837         Constify variable.
23838         * real.c (get_real_const): New.
23839         * real.h (dconst3, dconst10, dconstm2, dconstthird,
23840         dconstsqrt2, dconste): Delete.
23841         (real_value_const, get_real_const): New.
23842
23843 2008-03-26  H.J. Lu  <hongjiu.lu@intel.com>
23844
23845         * config/i386/cygming.h (BIGGEST_ALIGNMENT): Removed.
23846
23847         * config/i386/i386.c (ix86_function_arg_boundary): Check
23848         BIGGEST_ALIGNMENT instead of 128.
23849         (setup_incoming_varargs_64): Likewise.
23850
23851 2008-03-26  Tom Tromey  <tromey@redhat.com>
23852
23853         * Makefile.in (DEPFILES): Add missing '/'.
23854
23855 2008-03-26  Richard Guenther  <rguenther@suse.de>
23856
23857         * fold-const.c (target.h): Include.
23858         (fold_comparison): Fold comparison of addresses of two decls
23859         that bind locally.  Consolidate address folding code.
23860
23861 2008-03-26  Nick Clifton  <nickc@redhat.com>
23862
23863         PR target/31232
23864         * config/stormy16/stormy16.c (xstormy16_legitimate_address_p): Do
23865         not allow INT+INT as a legitimate addressing mode.
23866
23867 2008-03-26  Richard Guenther  <rguenther@suse.de>
23868
23869         * tree-flow.h (widen_bitfield): Remove declaration.
23870         * tree-ssa-ccp.c (visit_assignment): Remove unneeded code.
23871         (widen_bitfield): Remove function.
23872         * tree-ssa-dom.c (record_equivalences_from_stmt): Remove unneeded
23873         code.
23874
23875 2008-03-25  Andrew Pinski  <andrew_pinski@playstation.sony.com>
23876
23877         PR target/31558
23878         * config/rs6000/rs6000-c.c (rs6000_builtin_type_compatible): Handle
23879         error_mark_node's.
23880
23881 2008-03-25  Richard Sandiford  <rsandifo@nildram.co.uk>
23882
23883         PR rtl-optimization/35232
23884         * reload1.c (reg_reloaded_call_part_clobbered): Clarify comment.
23885         (forget_old_reloads_1, forget_marked_reloads): Don't clear
23886         reg_reloaded_call_part_clobbered here.
23887         (reload_regs_reach_end_p): New function.
23888         (reload_reg_rtx_for_input): New variable.
23889         (reload_reg_rtx_for_output): Likewise.
23890         (emit_input_reload_insns): Use reloadreg rather than rl->reg_rtx
23891         when reassigning a pseudo register.  Load reloadreg from
23892         reload_reg_rtx_for_input, moving the mode and register
23893         calculation to...
23894         (do_input_reload): ...here.  Use the mode-adjusted reg_rtx
23895         instead of the original when deciding whether an input reload
23896         would be a no-op or whether an output reload can be deleted.
23897         (emit_output_reload_insns): Use the mode-adjusted reg_rtx
23898         when setting up new_spill_reg_store.  Load it from
23899         reload_reg_rtx_for_output, moving the mode and register
23900         calculation to...
23901         (do_output_reload): ...here.  Use the mode-adjusted reg_rtx
23902         instead of the original when deciding whether an output reload
23903         would be a no-op.  Do the same when modifying insn notes.
23904         Use rtx_equal_p instead of == to compare the registers.
23905         (inherit_piecemeal_p): Take a mode and two register numbers
23906         as argument.
23907         (emit_reload_insns): Clear new_spill_reg_store for every hard
23908         register in the reload register.  Remove spill registers
23909         from reg_reloaded_valid before considering whether to record
23910         inheritance information for them.  Use reload_reg_rtx_for_output
23911         instead of reg_rtx when recording output reloads.  Use
23912         reload_reg_rtx_for_input instead of reg_rtx when recording
23913         input reloads.  Set or clear reg_reloaded_call_part_clobbered
23914         at the same time as setting reg_reloaded_valid.
23915         (delete_output_reload): Add a new_reload_reg parameter and use it
23916         instead of rld[j].reg_rtx.
23917         (emit_input_reload_insns, do_input_reload, do_output_reload): Adjust
23918         calls accordingly.
23919
23920 2008-03-25  Tom Tromey  <tromey@redhat.com>
23921
23922         * Makefile.in (build/gensupport.o): Depend on insn-modes.h.
23923         (build/genattr.o): Likewise.
23924         (build/genattrtab.o): Likewise.
23925         (build/gencodes.o): Likewise.
23926         (build/genconfig.o): Likewise.
23927         (build/genconstants.o): Likewise.
23928         (build/genemit.o): Likewise.
23929         (build/genextract.o): Likewise.
23930         (build/genflags.o): Likewise.
23931
23932 2008-03-25  Bob Wilson  <bob.wilson@acm.org>
23933
23934         * config/xtensa/xtensa.c (xtensa_va_start): Use build_int_cst
23935         instead of size_int for integer types.
23936         (xtensa_gimplify_va_arg_expr): Likewise.  Convert index to sizetype
23937         to match type of MINUS_EXPR.
23938
23939 2008-03-25  Tom Tromey  <tromey@redhat.com>
23940
23941         * configure: Rebuilt.
23942         * configure.ac (BUILD_DEPMODE): Extract CCDEPMODE from temporary
23943         Makefile.
23944
23945 2008-03-25  Tom Tromey  <tromey@redhat.com>
23946
23947         * config/x-solaris (host-solaris.o): Update.
23948         * config/x-linux (host-linux.o): Update.
23949         * config/x-hpux (host-hpux.o): Update.
23950         * config/x-darwin (host-darwin.o): Update.
23951         * config/v850/t-v850e (v850-c.o): Update.
23952         * config/v850/t-v850 (v850-c.o): Update.
23953         * config/t-vxworks (vxworks.o): Update.
23954         * config/t-sol2 (sol2-c.o, sol2.o): Update.
23955         * config/t-darwin (darwin.o, darwin-c.o, darwin-driver.o): Update.
23956         * config/spu/t-spu-elf (spu-c.o): Update.
23957         (spu.o): Remove.
23958         * config/sh/t-symbian (sh-c.o): Update.
23959         (symbian.o): Update.
23960         * config/sh/t-sh (sh-c.o): Update.
23961         * config/score/t-score-elf (score7.o, score3.o): Update.
23962         * config/rs6000/x-rs6000 (driver-rs6000.o): Update.
23963         * config/rs6000/x-darwin64 (host-ppc64-darwin.o): Update.
23964         * config/rs6000/x-darwin (host-ppc-darwin.o): Update.
23965         * config/rs6000/t-rs6000 (rs6000-c.o): Update.
23966         (rs6000.o): Remove.
23967         * config/m68k/t-uclinux (generated_files): Add sysroot-suffix.h.
23968         * config/m32c/t-m32c (m32c-pragma.o): Update.
23969         * config/ia64/t-ia64 (ia64-c.o): Update.
23970         * config/i386/x-mingw32 (host-mingw32.o): Update.
23971         * config/i386/x-i386 (driver-i386.o): Update.
23972         * config/i386/x-darwin (host-i386-darwin.o): Update.
23973         * config/i386/x-cygwin (host-cygwin.o): Update.
23974         * config/i386/t-nwld (nwld.o): Update.
23975         * config/i386/t-netware (netware.o): Update.
23976         * config/i386/t-interix (winnt.o): Update.
23977         * config/i386/t-cygwin (cygwin1.o, cygwin2.o): Update.
23978         * config/i386/t-cygming (winnt.o, winnt-cxx.o, winnt-stubs.o,
23979         msformat-c.o): Update.
23980         * config/bfin/t-bfin-linux (generated_files): Add
23981         linux-sysroot-suffix.h.
23982         * config/arm/t-wince-pe (pe.o): Update.
23983         * config/arm/t-strongarm-pe (pe.o): Update.
23984         * config/arm/t-pe (pe.o): Update.
23985         * config/arm/t-arm (arm-c.o): Update.
23986         * doc/install.texi (Prerequisites): Require make 3.80.
23987         * Makefile.in: Remove .o targets.
23988         (CCDEPMODE, DEPDIR, depcomp, BUILD_DEPMODE): New variables.
23989         (OBSTACK_H, FIBHEAP_H, PARTITION_H, MD5_H, BCONFIG_H): Remove.
23990         (simple_generated_h, simple_generated_c): Move earlier.
23991         (generated_files): New variable.
23992         (TARGET_H, MACHMODE_H, HOOKS_H, HOSTHOOKS_DEF_H, LANGHOOKS_DEF_H,
23993         TARGET_DEF_H, RTL_BASE_H, RTL_H, PARAMS_H, BUILTINS_DEF, TREE_H,
23994         BASIC_BLOCK_H, GCOV_IO_H, COVERAGE_H, DEMANGLE_H, RECOG_H,
23995         ALIAS_H, EMIT_RTL_H, FLAGS_H, FUNCTION_H, EXPR_H, OPTABS_H,
23996         REGS_H, RA_H, RESOURCE_H, SCHED_INT_H, INTEGRATE_H, CFGLAYOUT_H,
23997         CFGLOOP_H, IPA_UTILS_H, IPA_REFERENCE_H, IPA_TYPE_ESCAPE_H,
23998         CGRAPH_H, DF_H, RESOURCE_H, DDG_H, GCC_H, GGC_H, TIMEVAR_H,
23999         INSN_ATTR_H, C_COMMON_H, C_PRAGMA_H, C_TREE_H, SYSTEM_H,
24000         PREDICT_H, DECNUM_H, MKDEPS_H, SYMTAB_H, TREE_DUMP_H,
24001         TREE_GIMPLE_H, TREE_FLOW_H, TREE_SSA_LIVE_H, PRETTY_PRINT_H,
24002         DIAGNOSTIC_H, C_PRETTY_PRINT_H, SCEV_H, LAMBDA_H, TREE_DATA_REF_H,
24003         VARRAY_H, TREE_INLINE_H, REAL_H, DBGCNT_H, EBIMAP_H): Remove.
24004         (.c.o): Remove.
24005         (COMPILE.base, COMPILE): New variables.
24006         (%.o): New pattern rule.
24007         (ALL_HOST_OBJS): New variable.
24008         (xgcc$(exeext), cpp$(exeext)): Remove extra version.o.
24009         (dummy-checksum.o, cc1-checksum.o): Remove.
24010         (DRIVER_SHLIB): New variable.
24011         (DRIVER_DEFINES): Use it.
24012         (gencondmd.c): Move out of build/.
24013         (s-conditions): Update.
24014         (BUILDCOMPILE.base, BUILDCOMPILE): New variables.
24015         (ALL_BUILD_OBJS): Likewise.
24016         (build/%.o): Use BUILDCOMPILE.
24017         (build/ggc-none.o, build/ggc-none.o, build/min-insn-modes.o,
24018         build/print-rtl.o, build/read-rtl.o, build/rtl.o, build/vec.o,
24019         build/gencondmd.o, build/genattrtab.o, build/genautomata.o,
24020         build/gencheck.o, build/gencodes.o, build/genconditions.o,
24021         build/genconfig.o, build/genconstants.o, build/genemit.o,
24022         build/genextract.o, build/genflags.o, build/genmddeps.o,
24023         build/genopinit.o, build/genoutput.o, build/genpeep.o,
24024         build/genpreds.o, build/genrecog.o, build/gcov-iov.o,
24025         build/gen-protos.o, build/scan.o, build/fix-header.o,
24026         build/scan-decls.o): Simplify.
24027         (collect2.o, c-opts.o, gcc.o, gccspec.o, gcc-options.o,
24028         cppdefault.o, protoize.o, unprotoize.o, intl.o, version.o,
24029         prefix.o, toplev.o): Reduce to variable setting.
24030         (libbackend.o): Use COMPILE.  Remove most dependencies.  Move later.
24031         ($(out_object_file), gcc-options.o): New targets.
24032         ($(ALL_HOST_OBJS)): New target.  Include dependency files.
24033         * configure: Rebuilt.
24034         * configure.ac: Call ZW_CREATE_DEPDIR, ZW_PROG_COMPILER_DEPENDENCIES.
24035         * doc/sourcebuild.texi (Front End Directory): Document new variable.
24036
24037 2008-03-25  Douglas Gregor  <doug.gregor@gmail.com>
24038
24039         * c-common.c (c_sizeof_or_alignof_type): If we're not allowed to
24040         complain when we hit an error, return ERROR_MARK_NODE.
24041
24042 2008-03-25  Naveen.H.S  <naveen.hs@kpitcummins.com>
24043
24044         * config/sh/constraints.md (Pso, Psz): New constraints.
24045         * config/sh/sh.c (print_operand): Add %V and %W operand codes.
24046         * config/sh/sh.md (*andsi3_bclr, *iorsi3_bset): New insns.
24047
24048 2008-03-25  Naveen.H.S  <naveen.hs@kpitcummins.com>
24049
24050         * config/sh/sh.c (sh_expand_t_scc): Emit movrt for SH2A if possible.
24051         * config/sh/sh.md (xorsi3_movrt, movrt): New insns.
24052
24053 2008-03-25  Naveen.H.S  <naveen.hs@kpitcummins.com>
24054
24055         * config/sh/sh.md (prefetch): Add condition for SH2A target.
24056         (prefetch_sh2a): New.
24057
24058 2008-03-25  Jayant Sonar  <Jayant.sonar@kpitcummins.com>
24059             Naveen.H.S  <naveen.hs@kpitcummins.com>
24060
24061         * config/sh/constraints.md (I28): New constraint.
24062         * config/sh/sh.c (broken_move): Add support for movi20s.
24063         * config/sh/sh.md (movsi_ie): Add the alternative for movi20s.
24064
24065 2008-03-25  Anil Paranjape  <anil.paranjape@kpitcummins.com>
24066             Jayant Sonar  <Jayant.sonar@kpitcummins.com>
24067             Naveen.H.S  <naveen.hs@kpitcummins.com>
24068
24069         * config/sh/sh.c (SH_ATTRIBUTES): Define.
24070         (SYMBOL_FLAG_FUNCVEC_FUNCTION): Define.
24071         (print_operand): Handle resbank in %@ operand code.
24072         (sh_encode_section_info): New.
24073         (push_regs): Add conditions for resbank.
24074         (sh_expand_epilogue): Likewise.
24075         (sh_insert_attributes): Likewise.
24076         (sh_attribute_table): Likewise.
24077         (sh_handle_resbank_handler_attribute): New.
24078         (sh2a_handle_function_vector_handler_attribute): New.
24079         (sh2a_is_function_vector_call): New.
24080         (sh2a_get_function_vector_number): New.
24081         (sh2a_function_vector_p): New.
24082         (sh_cfun_resbank_handler_p): New.
24083         * config/sh/sh.md (calli): Emit jsr/n if possible.
24084         (calli_tbr_rel): New.
24085         (calli_pcrel): Emit jsr/n if possible.
24086         (return_i): Emit rts/n if possible.
24087         (call_valuei_tbr_rel): New.
24088         (call_valuei_pcrel): Add condition for SH2A target.
24089         (call_value): Likewise.
24090         * config/sh/sh-protos.h (sh_cfun_resbank_handler_p): Declare.
24091         (sh2a_get_function_vector_number): Likewise.
24092         (sh2a_is_function_vector_call): Likewise.
24093         * doc/extend.texi: Document TBR relative addressing of SH2A.
24094         (resbank): Add description for SH2A.
24095
24096 2008-03-24  Richard Guenther  <rguenther@suse.de>
24097
24098         PR c/22371
24099         * gimplify.c (gimplify_modify_expr): For frontend type-correct
24100         pointer assignments change conversions according to middle-end rules.
24101         (gimplify_modify_expr_rhs): Deal with NULL TARGET_EXPR_INITIAL.
24102         * configure.ac: Include type checking in yes.
24103         * configure: Regenerate.
24104
24105 2008-03-24  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
24106
24107         * diagnostic.c (diagnostic_count_diagnostic): Delete.
24108         (diagnostic_report_diagnostic): Update. Handle ICEs here.
24109
24110 2008-03-24  Nathan Sidwell  <nathan@codesourcery.com>
24111
24112         * gthr-vxworks.h (UNUSED): Define.
24113
24114 2008-03-23  H.J. Lu  <hongjiu.lu@intel.com>
24115
24116         * config/i386/i386.h (STATIC_CHAIN_REGNUM): Use R10_REG and CX_REG.
24117
24118 2008-03-23  Zuxy Meng <zuxy.meng@gmail.com>
24119
24120         * doc/extend.texi (Function Attributes): Add missing comma in the
24121         example of the "alloc_size" attribute.
24122
24123 2008-03-23  Uros Bizjak  <ubizjak@gmail.com>
24124
24125         Revert:
24126         2008-03-05  H.J. Lu  <hongjiu.lu@intel.com>
24127
24128         * config/i386/i386-modes.def: Use 4 byte alignment on DI for
24129         32bit host.
24130
24131         2008-03-19  Uros Bizjak  <ubizjak@gmail.com>
24132
24133         PR target/35496
24134         * stor-layout.c (update_alignment_for_field): Set minimum alignment
24135         of the underlying type of a MS bitfield layout to the natural
24136         alignment of the type.
24137
24138         2008-03-22  Uros Bizjak  <ubizjak@gmail.com>
24139
24140         * config/i386/i386.c (assign_386_stack_local): Align DImode slots
24141         to their natural alignment to avoid store forwarding stalls.
24142
24143 2008-03-22  Richard Guenther  <rguenther@suse.de>
24144
24145         * tree-cfg.c (verify_expr): Recurse again for invariant addresses.
24146         For PHI nodes verify the address is invariant.
24147         * tree-ssa-ccp.c (ccp_decl_initial_min_invariant): Remove.
24148         (get_symbol_constant_value): Use is_gimple_min_invariant.
24149         (maybe_fold_stmt_indirect): Likewise.
24150
24151 2008-03-22  Richard Sandiford  <rsandifo@nildram.co.uk>
24152
24153         PR rtl-optimization/33927
24154         * Makefile.in (dse.o): Depend on $(TM_P_H).
24155         * expr.h (extract_low_bits): Declare.
24156         * expmed.c (extract_low_bits): New function.
24157         * rtlhooks.c (gen_lowpart_general): Generalize SUBREG handling.
24158         * dse.c: Include tm_p.h.
24159         (find_shift_sequence): Remove the read_reg argument and return the
24160         read value.  Emit the instructions instead of returning them.
24161         Iterate on new_mode rather than calculating it each time.
24162         Check MODES_TIEABLE_P.  Use simplify_gen_subreg to convert the
24163         source to NEW_MODE and extract_low_bits to convert the shifted
24164         value to READ_MODE.
24165         (replace_read): Allow the load and store to have different mode
24166         classes.  Use extract_low_bits when SHIFT == 0.  Create the shift
24167         or extraction instructions before trying the replacement.  Update
24168         dump-file code accordingly, avoiding use of REGNO (store_info->rhs).
24169
24170 2008-03-22  Uros Bizjak  <ubizjak@gmail.com>
24171
24172         * config/i386/i386.c (assign_386_stack_local): Align DImode slots
24173         to their natural alignment to avoid store forwarding stalls.
24174
24175 2008-03-21  Andrew Pinski  <andrew_pinski@playstation.sony.com>
24176
24177         PR target/27946
24178         * config/rs6000/rs6000.md (floatdidf2): Discouraging fprs and
24179         encouraging but not allowing gprs for input;
24180         change the input constraint to !f#r.
24181         (fix_truncdfdi2): Discouraging fprs and encouraging but not allowing
24182         gprs for output;
24183         change the output constraint to !f#r.
24184
24185 2008-03-21  Uros Bizjak  <ubizjak@gmail.com>
24186
24187         PR target/13958
24188         * config/i386/i386.md ("*floatunssi<mode2>_1"): New pattern with
24189         corresponding post-reload splitters.
24190         ("floatunssi<mode>2"): Expand to unsigned_float x87 insn pattern
24191         when x87 FP math is selected.
24192         * config/i386/i386-protos.h (ix86_expand_convert_uns_sixf_sse):
24193         New function prototype.
24194         * config/i386/i386.c (ix86_expand_convert_uns_sixf_sse): New
24195         unreachable function to ease macroization of insn patterns.
24196
24197 2008-03-21  Martin Jambor  <mjambor@suse.cz>
24198
24199         * tree-data-ref.c (dump_data_dependence_relation): Avoid data
24200         reference dumps if ddr is NULL or dependence is unknown.
24201
24202 2008-03-20  Kaz Kojima  <kkojima@gcc.gnu.org>
24203
24204         * config/sh/linux-atomic.asm (ATOMIC_TEST_AND_SET): Take
24205         unsigned extension into account.
24206         (ATOMIC_COMPARE_AND_SWAP): Likewise.
24207         (ATOMIC_FETCH_AND_OP, ATOMIC_FETCH_AND_COMBOP): Likewise.
24208         Do computations on a scratch register.
24209
24210 2008-03-21  Richard Guenther  <rguenther@suse.de>
24211
24212         * tree-scalar-evolution.c (chrec_contains_symbols_defined_in_loop):
24213         Use is_gimple_min_invariant instead of TREE_INVARIANT.
24214         * tree-ssa-loop-ivopts.c (force_expr_to_var_cost): Likewise.
24215         * tree-ssa-dom.c (record_equality): Likewise.
24216         * tree-inline.c (copy_body_r): Likewise.
24217         * tree-ssa-pre.c (make_values_for_stmt): Remove test for
24218         TREE_INVARIANT.
24219
24220 2008-03-20  Kaz Kojima  <kkojima@gcc.gnu.org>
24221
24222         * config/sh/sh.c (split_branches): Pass zero to redirect_jump
24223         as 'delete_unused' argument.
24224
24225 2008-03-20  Richard Guenther  <rguenther@suse.de>
24226
24227         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Remove
24228         special casing of constant qualifiers.
24229         * tree-ssa.c (useless_type_conversion_p_1): Instead do not
24230         care about them in general.
24231         * tree-ssa-ccp.c (ccp_fold): Addresses are constant or not
24232         regardless of their type.
24233         (fold_stmt_r): Forcefully fold *& if we end up with that.
24234
24235 2008-03-20  Paul Brook  <paul@codesourcery.com>
24236
24237         * config.gcc (arm*-*-uclinux*): Remove duplicate arm/uclinux-elf.h.
24238         * config/arm/uclinux-eabi.h (SUBTARGET_EXTRA_LINK_SPEC): Add extra
24239         linker flags.
24240         * config/arm/bpabi.h (SUBTARGET_EXTRA_LINK_SPEC): Provide default
24241         definition.
24242         (LINK_SPEC): Use SUBTARGET_EXTRA_LINK_SPEC.
24243         * config/arm/unwind-arm.h (_Unwind_decode_target2): Add uClinux.
24244
24245 2008-03-20  Volker Reichelt  <v.reichelt@netcologne.de>
24246
24247         * common.opt (Wmudflap): New option.
24248         * tree-mudflap.c (mf_xform_derefs_1): Guard warning by OPT_Wmudflap.
24249         (mx_register_decls): Likewise.
24250         (mudflap_finish_file): Likewise.
24251         * doc/invoke.texi: Document -Wno-mudflap.
24252
24253 2008-03-20  Kai Tietz  <kai.tietz@onevision.com>
24254
24255         * c-format.c (replace_format_name_to_system_name): New.
24256         (cmp_attribs): New.
24257         (convert_format_name_to_system_name): New.
24258         (decode_format_attr): Add use of convert_format_name_to_system_name.
24259         (format_types_orig): Add gnu_ prefix to names.
24260         (check_format_info_main): Special treating of \0 escaped names for
24261         supporting multi-character format specifiers as I32, I64.
24262         (TARGET_OVERRIDES_FORMAT_ATTRIBUTES): Use of user defined attributes.
24263         (gnu_target_overrides_format_attributes): New.
24264         * c-format.h: Add structure target_ovr_attr to hold
24265         system specific formatter names.
24266         * config.gcc: Add for x86&x86_64 cygwin and mingw32 targets the
24267         msformat-c.o file to c_target_objs and cxx_target_objs.
24268         * config/i386/mingw32.h (TARGET_OVERRIDES_FORMAT_ATTRIBUTES): New.
24269         (TARGET_OVERRIDES_FORMAT_ATTRIBUTES_COUNT): New.
24270         (TARGET_N_FORMAT_TYPES): New.
24271         * config/i386/msformat-c.c: New.
24272         * config/i386/t-cygming: Add build rule for msformat-c.o.
24273         * doc/extend.texi: Add new format names gnu_* and ms_* and
24274         further details.
24275         * doc/tm.texi: (TARGET_OVERRIDES_FORMAT_ATTRIBUTES): New.
24276
24277 2008-03-20  Ira Rosen  <irar@il.ibm.com>
24278
24279         * doc/invoke.texi (-O3): Add -ftree-vectorize to the list of
24280         optimizations turned on under -O3.
24281         (ftree-vectorize): Add that the flag is turned on with -O3.
24282
24283 2008-03-20  Ben Elliston  <bje@au.ibm.com>
24284
24285         * regmove.c (try_auto_increment): Fix spelling error in comment.
24286         * final.c (final_scan_insn): Likewise.
24287
24288 2008-03-20  Uros Bizjak  <ubizjak@gmail.com>
24289
24290         PR target/14552
24291         * config/i386/mmx.md (*mov<mode>_internal_rex64"): Adjust register
24292         allocator preferences for "y" and "r" class registers.
24293         ("*mov<mode>_internal"): Ditto.
24294         ("*movv2sf_internal_rex64"): Ditto.
24295         ("*movv2sf_internal"): Ditto.
24296
24297 2008-03-19  Michael Matz  <matz@suse.de>
24298
24299         PR middle-end/35616
24300         * calls.c (expand_call): Check overlap of arguments with call
24301         address for sibcalls.
24302
24303 2008-03-19  Uros Bizjak  <ubizjak@gmail.com>
24304
24305         PR target/35496
24306         * stor-layout.c (update_alignment_for_field): Set minimum alignment
24307         of the underlying type of a MS bitfield layout to the natural
24308         alignment of the type.
24309
24310 2008-03-19  Jan Hubicka  <jh@suse.cz>
24311
24312         PR other/35094
24313         * toplev.c (decode_d_option): Handle all CPP flags.
24314         * tree-vrp.c: Update tree_pass descriptors.
24315         * regrename.c: Update tree_pass descriptors.
24316         * fwprop.c: Update tree_pass descriptors.
24317         * doc/invoke.texi: Remove documentation of dropped -d? flags.
24318         * tree-into-ssa.c: Update tree_pass descriptors.
24319         * tree-dump.c: Update tree_pass descriptors.
24320         * tree-complex.c: Update tree_pass descriptors.
24321         * tree-dump.h: Update tree_pass descriptors.
24322         * see.c: Update tree_pass descriptors.
24323         * cgraphbuild.c: Update tree_pass descriptors.
24324         * tracer.c: Update tree_pass descriptors.
24325         * tree-loop-distribution.c: Update tree_pass descriptors.
24326         * cgraph.c: Update tree_pass descriptors.
24327         * postreload-gcse.c: Update tree_pass descriptors.
24328         * postreload.c: Update tree_pass descriptors.
24329         * tree-ssa-loop-ch.c: Update tree_pass descriptors.
24330         * tree-tailcall.c: Update tree_pass descriptors.
24331         * tree-pass.h (tree_opt_pass): Rename to ...
24332         (opt_pass) ... this one; add "type" field and remove letter field.
24333         (gimple_opt_pass, rtl_opt_pass, simple_ipa_opt_pass): New.
24334         (execute_pass_list, execute_ipa_pass_list, all_passes, all_ipa_passes,
24335         all_lowering_passes): Update declaration.
24336         * ipa-cp.c: Update tree_pass descriptors.
24337         * final.c: Update tree_pass descriptors.
24338         * omp-low.c: Update tree_pass descriptors.
24339         * tree-ssa-dse.c: Update tree_pass descriptors.
24340         * ipa-reference.c: Update tree_pass descriptors.
24341         * tree-ssa-uncprop.c: Update tree_pass descriptors.
24342         * auto-inc-dec.c: Update tree_pass descriptors.
24343         * reorg.c: Update tree_pass descriptors.
24344         * cgraphunit.c: Update tree_pass descriptors.
24345         * tree-ssa-copyrename.c: Update tree_pass descriptors.
24346         * tree-ssa-ccp.c: Update tree_pass descriptors.
24347         * df-core.c: Update tree_pass descriptors.
24348         * mode-switching.c: Update tree_pass descriptors.
24349         * tree-nomudflap.c: Update tree_pass descriptors.
24350         * modulo-sched.c: Update tree_pass descriptors.
24351         * ipa-pure-const.c: Update tree_pass descriptors.
24352         * cse.c: Update tree_pass descriptors.
24353         * web.c: Update tree_pass descriptors.
24354         * tree-stdarg.c: Update tree_pass descriptors.
24355         * tree-ssa-math-opts.c: Update tree_pass descriptors.
24356         * tree-ssa-dom.c: Update tree_pass descriptors.
24357         * tree-nrv.c: Update tree_pass descriptors.
24358         * tree-ssa-alias.c: Update tree_pass descriptors.
24359         * loop-init.c: Update tree_pass descriptors.
24360         * gimple-low.c: Update tree_pass descriptors.
24361         * ipa-inline.c: Update tree_pass descriptors.
24362         * tree-ssa-sink.c: Update tree_pass descriptors.
24363         * global.c: Update tree_pass descriptors.
24364         * ifcvt.c: Update tree_pass descriptors.
24365         * jump.c: Update tree_pass descriptors.
24366         * predict.c: Update tree_pass descriptors.
24367         * tree-ssa-loop.c: Update tree_pass descriptors.
24368         * recog.c: Update tree_pass descriptors.
24369         * dse.c: Update tree_pass descriptors.
24370         * tree-ssa-ifcombine.c: Update tree_pass descriptors.
24371         * tree-eh.c: Update tree_pass descriptors.
24372         * regmove.c: Update tree_pass descriptors.
24373         * local-alloc.c
24374         * function.c: Update tree_pass descriptors.
24375         * tree-vectorizer.c: Update tree_pass descriptors.
24376         * gcse.c: Update tree_pass descriptors.
24377         * ipa-type-escape.c: Update tree_pass descriptors.
24378         * tree-if-conv.c: Update tree_pass descriptors.
24379         * init-regs.c: Update tree_pass descriptors.
24380         * ipa.c: Update tree_pass descriptors.
24381         * tree-ssa-phiopt.c: Update tree_pass descriptors.
24382         * rtl-factoring.c: Update tree_pass descriptors.
24383         * lower-subreg.c: Update tree_pass descriptors.
24384         * bt-load.c: Update tree_pass descriptors.
24385         * tree-dfa.c: Update tree_pass descriptors.
24386         * except.c: Update tree_pass descriptors.
24387         * emit-rtl.c: Update tree_pass descriptors.
24388         * cfgexpand.c: Update tree_pass descriptors.
24389         * tree-cfgcleanup.c: Update tree_pass descriptors.
24390         * cfgcleanup.c: Update tree_pass descriptors.
24391         * tree-ssa-pre.c: Update tree_pass descriptors.
24392         * tree-sra.c: Update tree_pass descriptors.
24393         * tree-mudflap.c: Update tree_pass descriptors.
24394         * tree-ssa-copy.c: Update tree_pass descriptors.
24395         * cfglayout.c: Update tree_pass descriptors.
24396         * tree-ssa-forwprop.c: Update tree_pass descriptors.
24397         * tree-ssa-dce.c: Update tree_pass descriptors.
24398         * tree-ssa.c: Update tree_pass descriptors.
24399         * regclass.c: Update tree_pass descriptors.
24400         * integrate.c: Update tree_pass descriptors.
24401         * tree-optimize.c: Update tree_pass descriptors.
24402         * tree-ssa-phiprop.c: Update tree_pass descriptors.
24403         * tree-object-size.c: Update tree_pass descriptors.
24404         * combine.c: Update tree_pass descriptors.
24405         * tree-outof-ssa.c: Update tree_pass descriptors.
24406         * bb-reorder.c: Update tree_pass descriptors.
24407         * stack-ptr-mod.c: Update tree_pass descriptors.
24408         * var-tracking.c: Update tree_pass descriptors.
24409         * tree-profile.c: Update tree_pass descriptors.
24410         * tree-vect-generic.c: Update tree_pass descriptors.
24411         * reg-stack.c: Update tree_pass descriptors.
24412         * sched-rgn.c: Update tree_pass descriptors.
24413         * tree-ssa-structalias.c: Update tree_pass descriptors.
24414         * tree-cfg.c: Update tree_pass descriptors.
24415         * passes.c (current_pass): Update declaration.
24416         (finish_optimization_passes): Update.
24417         (all_passes, all_ipa_passes, all_lowering_passes): Update declaration.
24418         (register_one_dump_file, register_dump_files_1, next_pass_1):
24419         Update arguments.
24420         (init_optimization_passes): Update handling of new types.
24421         (execute_one_pass, execute_pass_list, execute_ipa_pass_list): Update.
24422         * ipa-struct-reorg.c: Update tree_pass descriptors.
24423         * tree-ssa-reassoc.c: Update tree_pass descriptors.
24424         * combine-stack-adj.c: Update tree_pass descriptors.
24425         * cfgrtl.c: Update tree_pass descriptors.
24426         * dce.c: Update tree_pass descriptors.
24427         * tree-ssanames.c: Update tree_pass descriptors.
24428
24429 2008-03-19  Richard Guenther  <rguenther@suse.de>
24430
24431         PR middle-end/35609
24432         * tree-ssa.c (walk_data): New structure.
24433         (warn_uninitialized_var): If not always_executed warn with "maybe"
24434         instead of "is".
24435         (execute_early_warn_uninitialized): Compute post-dominators.
24436         Initialize always_executed before processing each basic block.
24437
24438 2008-03-18  Mikulas Patocka  <mikulas@artax.karlin.mff.cuni.cz>
24439
24440         PR target/35504
24441         * config/i386/i386.c (x86_this_parameter): Calculate correct location
24442         of "this" pointer when "regparm = N" or "fastcall" is in effect.
24443
24444 2008-03-18  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
24445
24446         * doc/include/texinfo.tex: Update to version 2008-03-17.10.
24447
24448 2008-03-18  Paolo Bonzini  <bonzini@gnu.org>
24449
24450         * expr.c (store_expr): Assume lang_hooks.reduce_bit_field_operations
24451         is true.
24452         (expand_expr_real_1) <REDUCE_BIT_FIELD>: Don't look at ignore.
24453         (expand_expr_real_1): Assume lang_hooks.reduce_bit_field_operations
24454         is true.  Add "&& !ignore" condition to reduce_bit_field.  Modify
24455         target after ignore has been set, and move there also the commputation
24456         of subtarget and original_target.
24457         * langhooks-def.h (LANG_HOOKS_REDUCE_BIT_FIELD_OPERATIONS): Delete.
24458         (LANG_HOOKS_INITIALIZER): Remove it.
24459         * langhooks.h (struct lang_hooks): Remove reduce_bit_field_operations.
24460
24461 2008-03-18  Richard Guenther  <rguenther@suse.de>
24462
24463         * tree-ssa-sccvn.c (visit_reference_op_load): If the lookup
24464         found an expression with constants, note that in the VN for the lhs.
24465         * tree-ssa-pre.c (eliminate): Visit COND_EXPR statements and
24466         fold them to constants if possible.  Run cleanup_cfg if done so.
24467         (execute_pre): Return todo.
24468         (do_pre): Likewise.
24469         (execute_fre): Likewise.
24470         * tree-ssa-forwprop.c (can_propagate_from): Allow propagation
24471         of constants.
24472         (get_prop_source_stmt): Look through pointer conversions.
24473
24474 2008-03-18  Jan Hubicka  <jh@suse.cz>
24475
24476         * tree-pretty-print.c: Include predict.h.
24477         (dump_generic_node): Dump predictor.
24478         * tree.h (PREDICT_EXPR_OUTCOME, PREDICT_EXPR_PREDICTION): Update.
24479         * tree-gimple.c (is_gimple_stmt): Add PREDICT_EXPR.
24480         * gimple-low.c (lower_stmt): Likewise.
24481         * expr.c (expand_expr_real): Likewise.
24482         * predict.c (tree_bb_level_predictions): Use PREDICT_EXPRs and remove
24483         them.
24484         (build_predict_expr, build_predict_expr): New.
24485         * predict.h (predictor_name, build_predict_expr): Update.
24486         * c-typeck.c (c_finish_bc_stmt): Add prediction.
24487         * gimplify.c (gimplify_expr): Add PREDICT_EXPR.
24488         * predict.def (PRED_CONTINUE): Update hitrate.
24489         * tree.def (PREDICT_EXPR): Define.
24490         * tree-ssa-dce.c (mark_stmt_if_obviously_necessary): Mark PREDICT_EXPR;
24491         do not handle BIND_EXPR.
24492         * tree-inline.c (estimate_num_insns_1): PREDICT_EXPR is free.
24493         * tree-cfg.c (verify_gimple_stmt): PREDICT_EXPR is valid.
24494         * tree-ssa-operands.c (get_expr_operands): PREDICT_EXPR takes no
24495         operands.
24496
24497 2008-03-18  Michael Matz  <matz@suse.de>
24498
24499         * gcov-io.h (__gcov_merge_ior, __gcov_fork): Mark hidden.
24500
24501 2008-03-18  Richard Guenther  <rguenther@suse.de>
24502
24503         * tree-gimple.h (is_gimple_invariant_address): Declare.
24504         (is_gimple_constant): Likewise.
24505         * tree-gimple.c (is_gimple_constant): New function.
24506         (is_gimple_invariant_address): Likewise.
24507         (is_gimple_min_invariant): Implement in terms of is_gimple_constant
24508         and is_gimple_invariant_address.
24509         * tree-ssa-loop-niter.c (expand_simple_operations): Revert
24510         previous change.
24511         * tree-data-ref.c (get_references_in_stmt): A SSA_NAME is not
24512         an addressable base.
24513
24514 2008-03-18  Jakub Jelinek  <jakub@redhat.com>
24515
24516         PR middle-end/35611
24517         * gimplify.c (gimplify_expr): Gimplify second operand of
24518         OMP_ATOMIC_LOAD.
24519
24520 2008-03-17  Richard Guenther  <rguenther@suse.de>
24521
24522         PR tree-optimization/19637
24523         * fold-const.c (fold_unary): Remove restrictions of removing
24524         intermediate pointer-conversions (P2)(P1)P0.
24525         * tree-ssa-ccp.c (maybe_fold_stmt_addition): Recover from
24526         conversion to void pointer.
24527         (get_maxval_strlen): Handle addresses of the form &(*p)[0].
24528
24529 2008-03-16  James E. Wilson  <wilson@tuliptree.org>
24530
24531         PR debug/31510
24532         * dbxout.c (dbxout_expand_expr, case VAR_DECL): Return NULL for
24533         emulated thread local variables.
24534
24535 2008-03-16  Richard Guenther  <rguenther@suse.de>
24536
24537         PR middle-end/35607
24538         * tree-ssa-loop-niter.c (expand_simple_operations): Do not
24539         expand TREE_INVARIANT operations that are not gimple invariant.
24540
24541 2008-03-16  Hans-Peter Nilsson  <hp@axis.com>
24542
24543         * doc/extend.texi (Alignment): Say that the ABI controls
24544         the __alignof__ for non-strict-alignment targets rather
24545         than being a recommendation.
24546
24547 2008-03-15  Paul Brook  <paul@codesourcery.com>
24548
24549         * config/arm/arm.c (arm_unwind_emit): Suppress unused unwinding
24550         annotations.
24551         (arm_output_fn_unwind): Mark functions that can not be unwound.
24552
24553 2008-03-15  Paul Brook  <paul@codesourcery.com>
24554
24555         * config/arm/arm.c (arm_rtx_costs_1): Add costs for ARMv6 value
24556         extension instructions.
24557
24558 2008-03-15  Richard Guenther  <rguenther@suse.de>
24559
24560         * tree-ssa-ccp.c (ccp_fold): Also read from constant values
24561         and fold constant aggregate refs.
24562         (fold_const_aggregate_ref): Handle string constants
24563         and constructors in ARRAY_REFs.  Handle INDIRECT_REF.
24564         (evaluate_stmt): Simplify now that ccp_fold folds constant
24565         aggregate refs.
24566
24567 2008-03-15  Paul Brook  <paul@codesourcery.com>
24568
24569         * config/arm/arm.md (insv): Use gen_insv_t2 and gen_insv_zero.
24570         (extzv): Use gen_extzv_t2.
24571         (insv_t2, insv_zero, extv, extzv_t2): New patterns.
24572
24573 2008-03-15  Richard Guenther  <rguenther@suse.de>
24574
24575         * tree-ssa-ccp.c (get_symbol_constant_value): Export.
24576         (fold_const_aggregate_ref): Likewise.
24577         (get_value): Return NULL if we don't have any values.
24578         (ccp_finalize): Set const_val to NULL after freeing it.
24579         * tree-flow.h (get_symbol_constant_value): Declare.
24580         (fold_const_aggregate_ref): Likewise.
24581         * tree-ssa-sccvn.c (try_to_simplify): Use them.
24582
24583 2008-03-15  Richard Guenther  <rguenther@suse.de>
24584
24585         PR middle-end/35593
24586         * tree-ssa-ccp.c (maybe_fold_offset_to_array_ref): Make sure
24587         to not produce negative array indices if not allowed.  Add
24588         parameter to indicate that.
24589         (maybe_fold_offset_to_component_ref): Allow negative array
24590         indices only for the first member of a structure.
24591         (maybe_fold_offset_to_reference): Allow negative array indices.
24592         (maybe_fold_stmt_addition): Likewise.
24593
24594 2008-03-15  Bjoern Haase  <bjoern.m.haase@web.de>
24595             Anatoly Sokolov <aesok@post.ru>
24596
24597         * config/avr/avr.c (avr_arch_types): Add avr6 entry.
24598         (avr_arch): Add ARCH_AVR6.
24599         (avr_mcu_types): Add 'atmega2560' and 'atmega2561' entry.
24600         (initial_elimination_offset): Initialize and use 'avr_pc_size'
24601         instead of fixed value 2.
24602         (print_operand_address): Use gs() asm specifier instead of pm().
24603         (avr_assemble_integer): (Ditto.).
24604         (avr_output_addr_vec_elt): (Ditto.).
24605         (print_operand): Handle "!" code.
24606         * config/avr/avr.h (TARGET_CPU_CPP_BUILTINS): Add
24607         __AVR_3_BYTE_PC__, __AVR_2_BYTE_PC__ and __AVR_HAVE_JMP_CALL__.
24608         (AVR_HAVE_EIJMP_EICALL): Define.
24609         (AVR_3_BYTE_PC): Redefine.
24610         (AVR_2_BYTE_PC): (Ditto.).
24611         (PRINT_OPERAND_PUNCT_VALID_P): Add '!' code.
24612         (LINK_SPEC): Add atmega2560 and atmega2561.
24613         (CRT_BINUTILS_SPEC): Add atmega2560 (crtm2560.o) and atmega2561
24614         (crtm2561.o).
24615         * config/avr/avr.md (call_insn): Use eicall instead of icall
24616         for 3 byte PC devices.
24617         (call_value_insn): (Ditto.).
24618         (*tablejump_enh): Use eijmp instead of ijmp for 3 byte PC devices.
24619         (indirect_jump): Use only for for 2 byte PC devices.
24620         (*tablejump): (Ditto.).
24621         (*indirect_jump_avr6): Add insn.
24622         (*tablejump_rjmp): Don't use for 3 byte PC devices.
24623         * config/avr/libgcc.S (__prologue_saves__): Use eijmp
24624         instead of ijmp for 3 byte PC devices.
24625         (__tablejump2__): (Ditto.).
24626         * config/avr/t-avr (MULITLIB_OPTIONS): Add avr6 architecture.
24627         (MULITLIB_DIRNAMES): (Ditto.).
24628         (MULTILIB_MATCHES): Add atmega2560 and atmega2561 to list.
24629
24630 2008-03-15  Uros Bizjak  <ubizjak@gmail.com>
24631
24632         * config/i386/mmx.md ("sse2_umulv1siv2di3"): Rename from
24633         "sse2_umulsidi3".  Use V1DI mode for operand 0.
24634         ("mmx_psadbw"): Use V1DI mode for operand 0.
24635         * config/i386/i386-modes.def (V1SI): New vector mode.
24636         * config/i386/i386.c (struct builtin_description)
24637         [IX86_BUILTIN_PMULUDQ]: Use CODE_FOR_sse2_umulv1siv1di3.
24638         (v1di_ftype_v8qi_v8qi): Rename from di_ftype_v8qi_v8qi.
24639         (v1di_ftype_v2si_v2si): Rename from di_ftype_v2si_v2si.
24640         (ix86_init_mmx_sse_builtins) [__builtin_ia32_psadbw]: Use
24641         v1di_ftype_v8qi_v8qi type.
24642         [__builtin_ia32_pmuludq]: Use v1di_ftype_v2si_v2si type.
24643
24644         * doc/extend.texi (X86 Built-in Functions) [__builtin_ia32_psadbw,
24645         __builtin_ia32_pmuludq]: Fix the mode of return value.
24646
24647 2008-03-15  Richard Guenther  <rguenther@suse.de>
24648
24649         PR middle-end/35595
24650         * tree-ssa-pre.c (bitmap_find_leader): Handle expression
24651         being a PHI_NODE.
24652
24653 2008-03-14  Bob Wilson  <bob.wilson@acm.org>
24654
24655         * doc/invoke.texi (Option Summary, Xtensa Options): Document
24656         -mserialize-volatile and -mno-serialize-volatile Xtensa options.
24657         * config/xtensa/xtensa.c (print_operand): Do not emit MEMW instructions
24658         unless TARGET_SERIALIZE_VOLATILE is enabled.
24659         * config/xtensa/xtensa.md (*lsiu, *ssiu): Likewise.
24660         * config/xtensa/xtensa.h (TARGET_DEFAULT): Add MASK_SERIALIZE_VOLATILE.
24661         * config/xtensa/xtensa.opt (mserialize_volatile): New option.
24662
24663 2008-03-14  Richard Guenther  <rguenther@suse.de>
24664
24665         PR tree-optimization/34172
24666         * tree-flow.h (refs_may_alias_p): Declare.
24667         (get_single_def_stmt): Likewise.
24668         (get_single_def_stmt_from_phi): Likewise.
24669         (get_single_def_stmt_with_phi): Likewise.
24670         * tree-dfa.c (refs_may_alias_p): New function.
24671         (get_single_def_stmt): Likewise.
24672         (get_single_def_stmt_from_phi): Likewise.
24673         (get_single_def_stmt_with_phi): Likewise.
24674         * tree-ssa-sccvn.c (get_def_ref_stmt_vuses): New function.
24675         (vn_reference_lookup_1): New helper function.
24676         (vn_reference_lookup): Walk the virtual use-def chain to
24677         continue searching for a match if the def does not alias the
24678         reference we are looking for.
24679
24680 2008-03-14  David Edelsohn  <edelsohn@gnu.org>
24681
24682         * doc/install.texi (Binaries): Remove UCLA archive.  Add HVCC
24683         archive and Perzl.  Update The Written Word listing.
24684
24685 2008-03-14  Richard Guenther  <rguenther@suse.de>
24686
24687         PR tree-optimization/34043
24688         PR tree-optimization/33989
24689         * tree-ssa-pre.c (execute_pre): Allow SCCVN to do insertion
24690         when doing FRE.
24691         (bitmap_find_leader): Use extra argument to verify dominance
24692         relationship inside a basic-block.
24693         (can_PRE_operation): Add VIEW_CONVERT_EXPR.
24694         (find_leader_in_sets): Adjust.
24695         (create_component_ref_by_pieces): Take extra argument for
24696         dominance check, handle lookup failures.
24697         (find_or_generate_expression): Likewise.
24698         (create_expression_by_pieces): Likewise.
24699         (insert_into_preds_of_block): Adjust.
24700         (create_value_expr_from): If asked for, verify all operands
24701         are in the blocks AVAIL_OUT set.
24702         (make_values_for_stmt): Check for SSA_NAMEs that are life
24703         over an abnormal edge.
24704         (compute_avail): Remove such check.
24705         (do_SCCVN_insertion): New function.
24706         (eliminate): If we do not find a leader suitable for replacement
24707         insert a replacement expression from SCCVN if available.
24708         * tree-ssa-sccvn.h (run_scc_vn): Update prototype.
24709         (struct vn_ssa_aux): Add needs_insertion flag.
24710         * tree-ssa-sccvn.c (may_insert): New global flag.
24711         (copy_reference_ops_from_ref): Value-number union member access
24712         based on its size, not type and member if insertion is allowed.
24713         (visit_reference_op_load): For a weak match from union type
24714         punning lookup a view-converted value and insert a SSA_NAME
24715         for that value if that is not found.
24716         (visit_use): Make dumps shorter.  Do not disallow value numbering
24717         SSA_NAMEs that are life over an abnormal edge to constants.
24718         (free_scc_vn): Release inserted SSA_NAMEs.
24719         (run_scc_vn): New flag to specify whether insertion is allowed.
24720         Process SSA_NAMEs in forward order.
24721         * tree-ssa-loop-im.c (for_each_index): Handle invariant
24722         ADDR_EXPRs inside VIEW_CONVERT_EXPR.
24723         * fold-const.c (fold_unary): Fold VIEW_CONVERT_EXPRs from/to
24724         pointer type to/from integral types that do not change the
24725         precision to regular conversions.
24726
24727 2008-03-13  Uros Bizjak  <ubizjak@gmail.com>
24728
24729         * doc/extend.texi (X86 Built-in Functions) [__builtin_ia32_psll?,
24730         __builtin_ia32_psrl?, __builtin_ia32_psra?, __builtin_ia32_psll?i,
24731         __builtin_ia32_psrl?i, __builtin_ia32_psra?i, __builtin_ia32_psll?128,
24732         __builtin_ia32_psrl?128, __builtin_ia32_psra?128]: Fix the mode of
24733         input arguments and the mode of return value.  Built-in functions
24734         that operate on whole 64-bit MMX register now use V1DI mode.
24735
24736 2008-03-13  Alon Dayan  <alond@il.ibm.com>
24737             Olga Golovanevsky  <olga@il.ibm.com>
24738
24739         PR tree-optimization/35041
24740         * ipa-struct-reorg.c (find_pos_in_stmt_1): Add another option
24741         to locate the right position in a statement.
24742
24743 2008-03-13  Uros Bizjak  <ubizjak@gmail.com>
24744
24745         PR target/34000
24746         PR target/35553
24747         * config/i386/xmmintrin.h:  Change all static inline functions to
24748         extern inline and add __gnu_inline__ attribute.
24749         * config/i386/bmintrin.h: Ditto.
24750         * config/i386/smmintrin.h: Ditto.
24751         * config/i386/tmmintrin.h: Ditto.
24752         * config/i386/mmintrin-common.h: Ditto.
24753         * config/i386/ammintrin.h: Ditto.
24754         * config/i386/emmintrin.h: Ditto.
24755         * config/i386/pmmintrin.h: Ditto.
24756         * config/i386/mmintrin.h: Ditto.
24757         * config/i386/mm3dnow.h: Ditto.
24758
24759 2008-03-13  Jakub Jelinek  <jakub@redhat.com>
24760
24761         PR middle-end/35185
24762         * omp-low.c (lower_regimplify, init_tmp_var, save_tmp_var): Removed.
24763         (lower_omp_2): New function.
24764         (lower_omp_1, lower_omp): Rewritten.
24765
24766 2008-03-13  Danny Smith  <dannysmith@users.sourceforge.net>
24767
24768         PR 35054
24769         * doc/extend.texi (Structure-Packing Pragmas): Replace "Win32"
24770         with the phrase "Microsoft Windows compilers".
24771         (Push/Pop Macro Pragmas): New subsection. Document
24772         #pragma push_macro and pragma pop_macro.
24773
24774 2008-03-12  Paul Brook  <paul@codesourcery.com>
24775
24776         * config/arm/arm.c (output_move_double): Prefer LDRD to LDM.
24777
24778 2008-03-12  Paul Brook  <paul@codesourcery.com>
24779
24780         * config/arm/thumb2.md: Extend peephole to cover 3-arg subs.
24781         (thumb2_alusi3_short): Exclude PLUS and MINUS.
24782         (thumb2_addsi_shortim): Rename ...
24783         (thumb2_addsi_short): ... to this.  Allow register operands.
24784         (thumb2_subsi_short): New pattern.
24785         (thumb2_one_cmplsi2_short,
24786         thumb2_negsi2_short): New patterns and peepholes.
24787
24788 2008-03-12  Paul Brook  <paul@codesourcery.com>
24789
24790         * config/arm/arm.c (arm_size_rtx_costs): Use ARM costs for Thumb-2.
24791
24792 2008-03-12  Uros Bizjak  <ubizjak@gmail.com>
24793
24794         * config/i386/i386.md (int_cond): New code iterator.
24795         (fp_cond): Ditto.
24796         ("s<code>"): Macroize expander from seq, sne, sgt, sgtu, slt, sltu,
24797         sge, sgeu, sle and sleu expanders usign int_cond code iterator.
24798         ("s<code>"): Macroize expander from sunordered, sordered, suneq, sunge,
24799         sungt, sunle, sunlt and sltgt expanders usign fp_cond code iterator.
24800         ("b<code>"): Macroize expander from beq, bne, bgt, bgtu, blt, bltu,
24801         bge, bgeu, ble and bleu expanders usign int_cond code iterator.
24802         ("b<code>"): Macroize expander from bunordered, bordered, buneq, bunge,
24803         bungt, bunle, bunlt and bltgt expanders usign fp_cond code iterator.
24804
24805 2008-03-12  Paul Brook  <paul@codesourcery.com>
24806
24807         * config/arm/arm.c (use_return_insn): Use offsets->saved_regs_mask
24808         instead of {arm,thumb}_compute_save_reg_mask.
24809         (output_return_instruction): Ditto.
24810         (thumb_unexpanded_epilogue): Ditto.
24811         (thumb1_expand_prologue): Ditto.
24812         (thumb1_output_function_prologue): Ditto.
24813         (arm_set_return_address): Ditto.
24814         (thumb_set_return_address): Ditto.
24815         (arm_get_frame_offsets): Set offsets->saved_regs_mask.  Push extra
24816         regs to achieve stack alignment.
24817         (thumb1_compute_save_reg_mask): Fix compiler warning.
24818         (arm_output_epilogue): Use offsets->saved_regs_mask.
24819         Adjust stack pointer by poping call clobered registers.
24820         (arm_expand_prologue): Use offsets->saved_regs_mask.
24821         Adjust stack pointer by pushing extra registers.
24822         * config/arm.h (arm_stack_offsets): Add saved_regs_mask.
24823
24824 2008-03-12  Paolo Bonzini  <bonzini@gnu.org>
24825
24826         PR tree-opt/35422
24827         * fold-const.c (fold_unary) <NOP_EXPR>: Distribute a narrowing
24828         conversion to the operands of a multiplication.
24829
24830 2008-03-12  Richard Guenther  <rguenther@suse.de>
24831
24832         * Makefile.in (OBJS-common): Add tree-ssa-phiprop.o
24833         (tree-ssa-phiprop.o): Copy dependencies from tree-ssa-forwprop.o.
24834         * timevar.def (TV_TREE_PHIPROP): Add.
24835         * tree-ssa-phiprop.c: Split from tree-ssa-forwprop.c, added
24836         pass description.  Use TV_TREE_PHIPROP.
24837         * tree-ssa-forwprop.c: Remove phiprop code.
24838
24839 2008-03-12  Jakub Jelinek  <jakub@redhat.com>
24840
24841         PR middle-end/35549
24842         * omp-low.c (maybe_lookup_decl): Constify first argument.
24843         (use_pointer_for_field): Change last argument from bool to
24844         omp_context *.  Disallow shared copy-in/out in nested
24845         parallel if decl is shared in outer parallel too.
24846         (build_outer_var_ref, scan_sharing_clauses,
24847         lower_rec_input_clauses, lower_copyprivate_clauses,
24848         lower_send_clauses, lower_send_shared_vars): Adjust callers.
24849
24850 2008-03-12  Victor Kaplansky  <victork@il.ibm.com>
24851             Ira Rosen  <irar@il.ibm.com>
24852
24853         * tree-vectorizer.c (free_stmt_vec_info): New function.
24854         (destroy_loop_vec_info): Move code to free_stmt_vec_info().
24855         Call free_stmt_vec_info(). Free LOOP_VINFO_STRIDED_STORES..
24856         * tree-vectorizer.h (free_stmt_vec_info): Declare.
24857         * tree-vect-transform.c (vectorizable_conversion): Free
24858         vec_oprnds0 if it was allocated.
24859         (vect_permute_store_chain): Remove unused VECs.
24860         (vectorizable_store): Free VECs that are allocated in the..
24861         function.
24862         (vect_transform_strided_load, vectorizable_load): Likewise.
24863         (vect_remove_stores): Simplify the code.
24864         (vect_transform_loop): Move code to vect_remove_stores().
24865         Call vect_remove_stores() and free_stmt_vec_info().
24866
24867 2008-03-11  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
24868
24869         * pa.h (TARGET_LONG_PIC_SDIFF_CALL): Conditionalize define on
24870         TARGET_HPUX.  Revise comment.
24871         (TARGET_LONG_PIC_PCREL_CALL): Revise comment.
24872         * pa.c (output_call): Update for revised TARGET_LONG_PIC_SDIFF_CALL.
24873         Use sr4 variant of `be' instruction when not generating PIC code.
24874         (attr_length_call): Adjust for above change.
24875
24876 2008-03-11  Andrew Pinski  <andrew_pinski@playstation.sony.com>
24877
24878         * ipa-reference.c (static_execute): Remove module_statics_const and
24879         associated setting code.
24880
24881 2008-03-11  Uros Bizjak  <ubizjak@gmail.com>
24882
24883         PR target/35540
24884         * config/i386/i386.md (paritysi2, paritydi2): Use register_operand
24885         predicate for operand 1.
24886         (paritysi2_cmp): Use register_operand predicate for operand 2.
24887         Use earlyclobber modifier for operand 1.  Remove support for
24888         memory operands.
24889         (paritydi2_cmp): Use register_operand predicate for operand 3.
24890         Use earlyclobber modifier for operand 1.  Remove support for
24891         memory operands.
24892
24893 2008-03-11  Paul Brook  <paul@codesourcery.com>
24894             Vladimir Prus  <vladimir@codesourcery.com>
24895
24896         * config/arm/arm.c (use_return_insn): Check TARGET_APCS_FRAME.
24897         (arm_compute_save_reg0_reg12_mask): Always
24898         check if register 11 must be saved.  Always safe hard frame pointer
24899         when frame_pointer_needeed.
24900         (arm_compute_save_reg_mask): Save IP and PC
24901         only with apcs frames.
24902         (arm_output_epilogue): Adjust Thumb2 codepath to
24903         be also invoked and work for ARM non-apcs frames.
24904         (arm_expand_prologue): Don't bother saving IP
24905         for non-apcs frame, since it's not clobbered by
24906         prologue code.  Implement non-apcs frame
24907         layout.
24908
24909 2008-03-11  Paolo Bonzini  <bonzini@gnu.org>
24910
24911         PR rtl-optimization/35281
24912         * expr.c (convert_move): Use a new pseudo for the intermediate
24913         from_mode->word_mode result.
24914
24915 2008-03-11  Paolo Bonzini  <bonzini@gnu.org>
24916
24917         * langhooks-def.h (LANG_HOOKS_CLEAR_BINDING_STACK): Delete.
24918         * langhooks.h (struct lang_hooks): Delete clear_binding_stack member.
24919         * toplev.c (compile_file): Don't call it.
24920
24921 2008-03-11  Uros Bizjak  <ubizjak@gmail.com>
24922
24923         PR middle-end/35526
24924         * expr.c (store_expr): Call emit_block_move if the mode
24925         of "temp" RTX is BLKmode.
24926
24927 2008-03-11  Andrew Pinski  <andrew_pinski@playstation.sony.com>
24928             Richard Guenther  <rguenther@suse.de>
24929
24930         PR tree-optimization/31358
24931         * tree-ssa-loop-manip.c (create_iv): Call force_gimple_operand for
24932         the step with a NULL_TREE.
24933         * tree-ssa-loop-ivopts.c (find_bivs): Convert the step
24934         to sizetype if type is a pointer type.
24935         (add_candidate_1): Don't convert the base and step to
24936         the generic type if the orginal type is a pointer type.
24937         (add_iv_value_candidates): Use sizetype for the step
24938         if type is a pointer type.
24939         (cand_value_at): Likewise.
24940         * tree-ssa-address.c (add_to_parts): Use POINTER_PLUS_EXPR
24941         for pointer types.
24942         * tree-affine.c (tree_to_aff_combination <POINTER_PLUS_EXPR>):
24943         Don't convert the tem affine to the type.
24944         (add_elt_to_tree): Use sizetype for the step if a pointer.
24945         Use POINTER_PLUS_EXPR for pointers.
24946         (aff_combination_to_tree): Use sizetype for the step if a
24947         pointer.
24948
24949 2008-03-10  Vladimir Makarov  <vmakarov@redhat.com>
24950
24951         * config/i386/sse.md (ssse3_pmaddubswv8hi3, ssse3_pmaddubswv4hi3):
24952         Remove commutativity hint.
24953
24954 2008-03-10  Jakub Jelinek  <jakub@redhat.com>
24955
24956         PR c/35438
24957         PR c/35439
24958         * c-parser.c (c_parser_omp_threadprivate): Don't add vars with
24959         errorneous type.  Check that v is a VAR_DECL.
24960
24961         PR middle-end/35099
24962         * tree-cfg.c (new_label_mapper): Update cfun->last_label_uid.
24963
24964 2008-03-10  H.J. Lu  <hongjiu.lu@intel.com>
24965
24966         PR tree-optimization/35494
24967         * tree-ssa-ccp.c (get_symbol_constant_value): Check if value
24968         may be overriden at link and run time.
24969
24970 2008-03-10  Richard Guenther  <rguenther@suse.de>
24971
24972         PR tree-optimization/34677
24973         * tree-ssa-pre.c (modify_expr_node_pool): Remove.
24974         (poolify_tree): Likewise.
24975         (modify_expr_template): Likewise.
24976         (poolify_modify_stmt): Likewise.
24977         (insert_fake_stores): Handle all component-ref style stores
24978         in addition to INDIRECT_REF.  Also handle complex types.
24979         Do not poolify the inserted load.
24980         (realify_fake_stores): Do not rebuild the tree but only
24981         make it a SSA_NAME copy.
24982         (init_pre): Remove initialzation of modify_expr_template.
24983         Do not allocate modify_expr_node_pool.
24984         (fini_pre): Do not free modify_expr_node_pool.
24985
24986 2008-03-10  Paul Brook  <paul@codesourcery.com>
24987
24988         * config/arm/arm.md (UNSPEC_STACK_ALIGN, UNSPEC_PIC_OFFSET): Renumber
24989         to avoid conflicts.
24990
24991 2008-03-10  Paul Brook  <paul@codesourcery.com>
24992             Mark Shinwell  <shinwell@codesourcery.com>
24993
24994         * config/arm/cortex-r4.md: New.
24995         * config/arm/thumb2.md (divsi3, udivsi3): Annotate with
24996         insn attributes.
24997         * config/arm/arm.md: Include cortex-r4.md.
24998         (insn): Add smmls, sdiv and udiv values.
24999         (generic_sched): Don't use generic scheduling for Cortex-R4.
25000         (arm_issue_rate): New function.
25001         (TARGET_SCHED_ISSUE_RATE): Define.
25002
25003 2008-03-10  Sebastian Pop  <sebastian.pop@amd.com>
25004
25005         * doc/invoke.texi (-ftree-loop-distribution): Add an example.
25006
25007 2008-03-10  Richard Guenther  <rguenther@suse.de>
25008
25009         * tree-ssa-pre.c (get_sccvn_value): Simplify.
25010         (compute_avail): Do not add stmt uses to AVAIL_OUT.
25011
25012 2008-03-10  Paolo Bonzini  <bonzini@gnu.org>
25013
25014         * langhooks-def.h (LANG_HOOKS_REDUCE_BIT_FIELD_OPERATIONS):
25015         Set default to true.
25016
25017 2008-03-09  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
25018
25019         * c.opt (Wsynth): Deprecate.
25020         * doc/invoke.texi (Option Summary, Warning Options): Document
25021         -Wno-format-contains-nul.
25022
25023 2008-03-09  Uros Bizjak  <ubizjak@gmail.com>
25024
25025         PR target/35496
25026         * config/i386/i386.c (ix86_constant_alignment): Compute alignment using
25027         ALIGN_MODE_128 for VECTOR_CST and INTEGER_CST in addition to REAL_CST.
25028
25029 2008-03-09  Ira Rosen  <irar@il.ibm.com>
25030
25031         * config/rs6000/rs6000.c (builtin_description): Rename vector
25032         left shift operations.
25033         * config/rs6000/altivec.md (UNSPEC_VSL): Remove.
25034         (altivec_vsl<VI_char>): Rename to ...
25035         (ashl<mode>3): ... new name.
25036         (mulv4sf3, mulv4si3, negv4sf2): Replace gen_altivec_vslw with
25037         gen_ashlv4si3.
25038         (absv4sf2): Convert to use ashift:V4SI instead of UNSPEC_VSL.
25039
25040 2008-03-08  Richard Guenther  <rguenther@suse.de>
25041
25042         * coverage.h (tree_coverage_counter_addr): Declare.
25043         * coverage.c (tree_coverage_counter_addr): New function.
25044         * tree-profile.c (tree_gen_edge_profiler): Unshare counter
25045         before using again.
25046         (tree_gen_pow2_profiler): Use tree_coverage_counter_addr.
25047         (tree_gen_one_value_profiler): Likewise.
25048         (tree_gen_ic_profiler): Likewise.
25049         (tree_gen_average_profiler): Likewise.
25050         (tree_gen_ior_profiler): Likewise.
25051
25052 2008-03-08  Richard Guenther  <rguenther@suse.de>
25053
25054         * tree-ssa-sccvn.h (vn_binary_op_lookup): Remove.
25055         (vn_binary_op_insert): Likewise.
25056         (vn_unary_op_lookup): Likewise.
25057         (vn_unary_op_insert): Likewise.
25058         (vn_nary_op_lookup): Declare.
25059         (vn_nary_op_insert): Likewise.
25060         * tree-ssa-sccvn.c (struct vn_tables_s): Merge unary
25061         and binary hashes, use a single obstack for unary_op_pool
25062         and binary_op_pool.
25063         (struct vn_binary_op_s, struct vn_unary_op_s): Replace with
25064         a single struct vn_nary_op_s.  Store tree code length and
25065         a variable number of operands.
25066         (struct vn_reference_op_struct): Remove unused op2.
25067         (vn_reference_op_eq): Do not compare op2.
25068         (vn_reference_op_compute_hash): Do not compute hash of op2.
25069         (vn_unary_op_hash, vn_binary_op_hash): Replace with vn_nary_op_hash.
25070         (vn_unary_op_compute_hash, vn_binary_op_compute_hash): Replace
25071         with vn_nary_op_compute_hash.
25072         (vn_unary_op_eq, vn_binary_op_eq): Replace with vn_nary_op_eq.
25073         (vn_unary_op_lookup, vn_binary_op_lookup): Replace with
25074         vn_nary_op_lookup.
25075         (vn_unary_op_insert, vn_binary_op_insert): Replace with
25076         vn_nary_op_insert.
25077         (visit_unary_op): Call nary functions.
25078         (visit_binary_op): Likewise.
25079         (process_scc): Adjust for struct vn_tables_s changes.
25080         (allocate_vn_table): Likewise.
25081         (free_vn_table): Likewise.
25082         * tree-vn.c (vn_add): Call nary functions.
25083         (vn_lookup): Likewise.
25084
25085 2008-03-08  Jakub Jelinek  <jakub@redhat.com>
25086
25087         PR target/35498
25088         * config/rs6000/rs6000.c (rs6000_expand_compare_and_swapqhi): Shift
25089         wdst back after sync_compare_and_swapqhi_internal.
25090
25091 2008-03-08  Uros Bizjak  <ubizjak@gmail.com>
25092
25093         PR target/22152
25094         * config/i386/i386-modes.def (V1DI): New vector mode.
25095         * config/i386/i386.h (VALID_MMX_REG_MODE): Add V1DImode.
25096         * config/i386/mmx.md (MMXMODEI8): New mode iterator.
25097         (MMXMODE248): Ditto.
25098         (MMXMODE): Add V1DI mode.
25099         (mmxvecsize): Change DI mode to V1DI mode.
25100         ("mov<mode>): Use MMXMODEI8 mode iterator.
25101         ("*mov<mode>_internal_rex64"): Ditto.
25102         ("*mov<mode>_internal"): Ditto.
25103         ("mmx_add<mode>3"): Ditto.  Handle V1DImode for TARGET_SSE2.
25104         ("mmx_sub<mode>3"): Ditto.
25105         ("mmx_adddi3"): Remove insn pattern.
25106         ("mmx_subdi3"): Ditto.
25107         ("mmx_ashr<mode>3"): Use SImode and "yN" constraint for operand 2.
25108         ("mmx_lshr<mode>3"): Ditto. Use MMXMODE248 mode iterator.
25109         ("mmx_ashl<mode>3"): Ditto.
25110         ("mmx_lshrdi3"): Remove insn pattern.
25111         ("mmx_ashldi3"): Ditto.
25112         * config/i386/i386.c (classify_argument): Handle V1DImode.
25113         (function_arg_advance_32): Ditto.
25114         (function_arg_32): Ditto.
25115         (struct builtin_description) [IX86_BUILTIN_PADDQ]: Use
25116         mmx_addv1di3 insn pattern.
25117         [IX86_BUILTIN_PSUBQ]: Use mmx_subv1di3 insn pattern.
25118         [IX86_BUILTIN_PSLL?, IX86_BUILTIN_PSRL?, IX86_BUILTIN_PSRA?,
25119         IX86_BUILTIN_PSLL?I, IX86_BUILTIN_PSRL?I, IX86_BUILTIN_PSRA?I,
25120         IX86_BUILTIN_PSLL?I128, IX86_BUILTIN_PSRL?I128, IX86_BUILTIN_PSRA?I128]:
25121         Remove definitions of built-in functions.
25122         (V1DI_type_node): New node.
25123         (v1di_ftype_v1di_int): Ditto.
25124         (v1di_ftype_v1di_v1di): Ditto.
25125         (v2si_ftype_v2si_si): Ditto.
25126         (v4hi_ftype_v4hi_di): Remove node.
25127         (v2si_ftype_v2si_di): Ditto.
25128         (ix86_init_mmx_sse_builtins): Handle V1DImode.
25129         (__builtin_ia32_psll?, __builtin_ia32_psrl?, __builtin_ia32_psra?):
25130         Redefine builtins using def_builtin_const with *_ftype_*_int node.
25131         (__builtin_ia32_psll?i, __builtin_ia32_psrl?i, __builtin_ia32_psra?i):
25132         Add new builtins using def_builtin_const.
25133         (ix86_expand_builtin) [IX86_BUILTIN_PSLL?, IX86_BUILTIN_PSRL?,
25134         IX86_BUILTIN_PSRA?, IX86_BUILTIN_PSLL?I, IX86_BUILTIN_PSRL?I,
25135         IX86_BUILTIN_PSRA?I]: Handle builtin definitions.
25136         * config/i386/mmintrin.h (__v1di): New typedef.
25137         (_mm_add_si64): Cast arguments to __v1di type.
25138         (_mm_sub_si64): Ditto.
25139         (_mm_sll_pi16): Cast __count to __v4hi type.
25140         (_mm_sll_pi32): Cast __count to __v2si type.
25141         (_mm_sll_si64): Cast arguments to __v1di type.
25142         (_mm_srl_pi16): Cast __count to __v4hi type.
25143         (_mm_srl_pi32): Cast __count to __v2si type.
25144         (_mm_srl_si64): Cast arguments to __v1di type.
25145         (_mm_sra_pi16): Cast __count to __v4hi type.
25146         (_mm_sra_pi32): Cast __count to __v2si type.
25147         (_mm_slli_pi16): Use __builtin_ia32_psllwi.
25148         (_mm_slli_pi32): Use __builtin_ia32_pslldi.
25149         (_mm_slli_si64): Use __builtin_ia32_psllqi. Cast __m to __v1di type.
25150         (_mm_srli_pi16): Use __builtin_ia32_psrlwi.
25151         (_mm_srli_pi32): Use __builtin_ia32_psrldi.
25152         (_mm_srli_si64): Use __builtin_ia32_psrlqi. Cast __m to __v1di type.
25153         (_mm_srai_pi16): Use __builtin_ia32_psrawi.
25154         (_mm_srai_pi32): Use __builtin_ia32_psradi.
25155         * config/i386/i386.md (UNSPEC_NOP): Remove unspec definition.
25156         * doc/extend.texi (X86 Built-in Functions) [__builtin_ia32_psll?,
25157         __builtin_ia32_psrl?, __builtin_ia32_psra?, __builtin_ia32_psll?i,
25158         __builtin_ia32_psrl?i, __builtin_ia32_psra?i]: Add new builtins.
25159
25160 2008-03-07  Joseph Myers  <joseph@codesourcery.com>
25161
25162         * doc/include/texinfo.tex: Update to version 2008-03-07.10.
25163
25164 2008-03-07  Peter Bergner  <bergner@vnet.ibm.com>
25165
25166         PR target/35373
25167         * config/rs6000/rs6000.c (rs6000_legitimize_address): Don't generate
25168         reg+const addressing for Altivec modes.  Don't generate reg+reg
25169         addressing for TFmode or TDmode quantities.
25170
25171 2008-03-07  Paolo Bonzini  <bonzini@gnu.org>
25172
25173         * c-common.c (vector_types_convertible_p): Call langhook
25174         instead of comptypes.
25175
25176 2008-03-06  Andrew Pinski  <andrew_pinski@playstation.sony.com>
25177
25178         PR tree-opt/35402
25179         * tree-ssa-ccp.c (get_symbol_constant_value): Handle
25180         integral and scalar float variables which have a
25181         NULL DECL_INITIAL.
25182
25183 2008-03-06  Nathan Froyd  <froydnj@codesourcery.com>
25184
25185         * dwarf2out.c (dwarf2out_frame_debug_expr): Consult the
25186         dwarf_register_span hook when emitting unwind information for
25187         register-to-memory saves.
25188         * config/rs6000/rs6000.c (spe_synthesize_frame): Delete.
25189         (rs6000_frame_related): Remove call to spe_synthesize_frame.
25190
25191 2008-03-06  Jakub Jelinek  <jakub@redhat.com>
25192
25193         * gimplify.c (goa_lhs_expr_p): Allow different ADDR_EXPR nodes
25194         for the same VAR_DECL.
25195
25196 2008-03-06  Tom Tromey  <tromey@redhat.com>
25197
25198         * treelang: Delete.
25199         * doc/standards.texi (Standards): Don't mention treelang.
25200         * doc/invoke.texi (Overall Options): Don't mention treelang.
25201         * doc/install.texi (Prerequisites): Don't mention bison or
25202         treelang.
25203         (Configuration): Don't mention treelang.
25204         (Building): Likewise.
25205         * doc/frontends.texi (G++ and GCC): Don't mention treelang.
25206
25207 2008-03-06  Paolo Bonzini  <bonzini@gnu.org>
25208
25209         * simplify-rtx.c (simplify_subreg): Remove useless shifts from
25210         word-extractions out of a multi-word object.
25211
25212 2008-03-06  Richard Guenther  <rguenther@suse.de>
25213
25214         * tree.def (BIT_FIELD_REF): Constrain result type and its precision.
25215         * tree-cfg.c (verify_expr): Verify BIT_FIELD_REF constraints on
25216         result type and precision.
25217         * expr.c (get_inner_reference): Set unsignedp based on the result
25218         type of BIT_FIELD_REF.
25219         * tree.h (BIT_FIELD_REF_UNSIGNED): Remove.
25220         * tree-sra.c (instantiate_element): Do not set BIT_FIELD_REF_UNSIGNED.
25221         (try_instantiate_multiple_fields): Likewise.  Use the correct type
25222         for BIT_FIELD_REF.
25223         (sra_build_assignment): Likewise.
25224         (sra_build_elt_assignment): Likewise.
25225         (sra_explode_bitfield_assignment): Likewise.
25226         * print-tree.c (print_node): Do not check BIT_FIELD_REF_UNSIGNED.
25227         * tree-vect-transform.c (vect_create_epilog_for_reduction): Do not
25228         set BIT_FIELD_REF_UNSIGNED.
25229         (vectorizable_load): Likewise.
25230
25231 2008-03-06  Andreas Krebbel  <krebbel1@de.ibm.com>
25232
25233         * cse.c (cse_extended_basic_block): Invalidate artificial defs
25234         at bb start.
25235
25236 2008-03-06  Richard Guenther  <rguenther@suse.de>
25237
25238         * alias.c (struct alias_set_entry): Move has_zero_child field
25239         to pack with alias_set.
25240
25241 2008-03-05  H.J. Lu  <hongjiu.lu@intel.com>
25242
25243         * config/i386/i386-modes.def: Use 4 byte alignment on DI for
25244         32bit host.
25245
25246 2008-03-05  Ian Lance Taylor  <iant@google.com>
25247
25248         * alias.h (alias_set_type): Change from HOST_WIDE_INT to int.
25249
25250 2008-03-05  Kenneth Zadeck  <zadeck@naturalbridge.com>
25251
25252         * fwprop.c (update_df): Support width and offset parameters of
25253         df_ref_create.
25254         * ra-conflict.c (mark_reg_store, clear_reg_in_live,
25255         global_conflicts): Change DF_REF_EXTRACT to either
25256         DF_REF_ZERO_EXTRACT or DF_REF_SIGN_EXTRACT.  Change
25257         DF_REF_STRICT_LOWER_PART to DF_REF_STRICT_LOW_PART.
25258         * df-scan.c (df_ref_record, df_defs_record,
25259         df_ref_create_structure, df_def_record_1, df_uses_record,
25260         df_get_conditional_uses, df_get_call_refs, df_insn_refs_collect,
25261         df_bb_refs_collect, df_entry_block_defs_collect,
25262         df_exit_block_uses_collect): Support new width and offset fields.
25263         (ref_extract_pool): New storage pool.
25264         (df_free_ref): New function.
25265         (df_reg_chain_unlink, df_free_collection_rec,
25266         df_sort_and_compress_refs): Call df_free_ref.
25267         (df_ref_equal_p, df_ref_compare): Compare offset and width fields
25268         of df_ref_extract.
25269         (df_ref_create_structure): Allocate df_ref_extract if offset and
25270         width fields are used.
25271         (df_def_record_1): Get offset and width from ZERO_EXTRACT.
25272         (df_uses_record): Get offset and width from ZERO_EXTRACT
25273         and SIGN_EXTRACT.
25274         * global.c (build_insn_chain): Change DF_REF_EXTRACT to either
25275         DF_REF_ZERO_EXTRACT or DF_REF_SIGN_EXTRACT.  Change
25276         DF_REF_STRICT_LOWER_PART to DF_REF_STRICT_LOW_PART.
25277         * df.h (df_ref_flags): Change DF_REF_EXTRACT to either
25278         DF_REF_ZERO_EXTRACT or DF_REF_SIGN_EXTRACT.  Change
25279         DF_REF_STRICT_LOWER_PART to DF_REF_STRICT_LOW_PART.
25280         (df_ref_extract): New structure.
25281         (DF_REF_WIDTH, DF_REF_OFFSET): New macros.
25282         (df_ref_create): Add width and offset parameters.
25283
25284 2008-03-05  Richard Guenther  <rguenther@suse.de>
25285
25286         * tree-ssa-structalias.c (get_constraint_for_component_ref):
25287         Use ranges_overlap_p.
25288         (offset_overlaps_with_access): Rename
25289         to ranges_overlap_p and move ...
25290         * tree-flow-inline.h (ranges_overlap_p): ... here.
25291
25292         * tree.h (get_inner_reference, handled_component_p): Update
25293         comments.
25294
25295         * tree.h (record_component_aliases, get_alias_set,
25296         alias_sets_conflict_p, alias_sets_must_conflict_p,
25297         objects_must_conflict_p): Move declarations ...
25298         * alias.h (record_component_aliases, get_alias_set,
25299         alias_sets_conflict_p, alias_sets_must_conflict_p,
25300         objects_must_conflict_p): ... here.
25301         Include coretypes.h.
25302         * Makefile.in (ALIAS_H): Add coretypes.h dependency.
25303
25304 2008-03-05  Aldy Hernandez  <aldyh@redhat.com>
25305
25306         * cfg.c: Include tree-flow.h.
25307         (remove_edge_raw): Call redirect_edge_var_map_clear.
25308         (redirect_edge_succ_nodup): Call redirect_edge_var_map_dup.
25309         * tree-flow-inline.h (redirect_edge_var_map_def): New.
25310         (redirect_edge_var_map_result): New.
25311         * tree-cfgcleanup.c (remove_forwarder_block_with_phi): Replace
25312         PENDING_STMT use with redirect_edge_var_map_*.
25313         * tree-ssa.c (edge_var_maps): New definition.
25314         (redirect_edge_var_map_add): New.
25315         (redirect_edge_var_map_clear): New.
25316         (redirect_edge_var_map_dup): New.
25317         (redirect_edge_var_map_vector): New.
25318         (redirect_edge_var_map_destroy): New.
25319         (ssa_redirect_edge): Replace PENDING_STMT use with
25320         redirect_edge_var_map_*.
25321         (flush_pending_stmts): Same.
25322         (delete_tree_ssa): Destroy edge var map.
25323         * tree-flow.h (struct _edge_var_map): New.
25324         Define edge_var_map vector type.
25325         Declare redirect_edge_var_map_* prototypes.
25326         * Makefile.in (cfg.o): Depend on TREE_FLOW_H.
25327         * tree-cfg.c (reinstall_phi_args): Replace
25328         PENDING_STMT use with redirect_edge_var_map_*.
25329
25330 2008-03-05  Richard Guenther  <rguenther@suse.de>
25331
25332         PR tree-optimization/35472
25333         * tree-ssa-dse.c (dse_optimize_stmt): Do not delete a store
25334         whose single use_stmt has a overlapping set of loaded and
25335         stored symbols as that use_stmt might be a noop assignment then.
25336
25337 2008-03-05  Joel Sherrill <joel.sherrill@oarcorp.com>
25338
25339         * gthr-rtems.h: Implement __gthread_mutex_destroy.
25340
25341 2008-03-05  Richard Guenther  <rguenther@suse.de>
25342
25343         PR c++/35336
25344         * tree.def (BIT_FIELD_REF): Document that operands 1 and 2
25345         should be constants.
25346         * tree-cfg.c (verify_expr): Verify it.
25347         * fold-const.c (fold_truthop): Remove code generating
25348         BIT_FIELD_REFs of structure bases.
25349         (fold_binary): Likewise.
25350         (fold_ternary): Position and size of BIT_FIELD_REFs are
25351         always host integers.
25352         (make_bit_field_ref): Remove.
25353         (optimize_bit_field_compare): Remove.
25354         (all_ones_mask_p): Remove.
25355
25356 2008-03-05  Gabor Loki  <loki@gcc.gnu.org>
25357
25358         PR gcc/33009
25359         * rtl-factoring.c (clear_regs_live_in_seq): Fix backward steps.
25360         (split_block_and_df_analyze): New. Split basic block and rebuild
25361         dataflow.
25362         (block_label_after): Use SPLIT_BLOCK_AND_DF_ANALYZE instead of
25363         SPLIT_BLOCK.
25364         (split_pattern_seq): Likewise.
25365         (erase_matching_seqs): Likewise.
25366         (split_pattern_seq): Skip return insn in case of REG_NORETURN note.
25367
25368 2008-03-04  Geoff Keating  <geoffk@apple.com>
25369
25370         * fold-const.c (tree_single_nonnegative_warnv_p): Fix mixed
25371         declaration and code.
25372         (tree_invalid_nonnegative_warnv_p): Likewise.
25373
25374 2008-03-05  Serge Belyshev  <belyshev@depni.sinp.msu.ru>
25375
25376         * doc/install.texi (Testing): Correct quoting for the RUNTESTFLAGS
25377         examples.  Truncate option-names then causing overfull hbox.
25378
25379 2008-03-04  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
25380
25381         PR target/35222
25382         * configure.ac (CONFIG_SJLJ_EXCEPTIONS): Force SJLJ exceptions
25383         on hpux10.
25384         * configure: Rebuilt.
25385
25386 2008-03-04  Rafael Espíndola  <espindola@google.com>
25387
25388         * fold-const.c (tree_simple_nonnegative_warnv_p): New.
25389         (tree_unary_nonnegative_warnv_p): New.
25390         (tree_binary_nonnegative_warnv_p): New.
25391         (tree_single_nonnegative_warnv_p): New.
25392         (tree_invalid_nonnegative_warnv_p): New.
25393         (tree_expr_nonnegative_warnv_p): Redefine in term of the new functions.
25394
25395 2008-03-04  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
25396
25397         PR 28322
25398         * opts.c (handle_option): Postpone 'unknown option' errors only for
25399         warning options.
25400
25401 2008-03-04  H.J. Lu  <hongjiu.lu@intel.com>
25402
25403         PR target/35453
25404         * config/i386/smmintrin.h (SIDD_XXX): Renamed to ...
25405         (_SIDD_XXX): This.
25406
25407 2008-03-04  Rafael Espíndola  <espindola@google.com>
25408
25409         * fold-const.c (tree_unary_nonzero_warnv_p): New.
25410         (tree_binary_nonzero_warnv_p): New.
25411         (tree_single_nonzero_warnv_p): New.
25412         (tree_expr_nonzero_warnv_p): Redefine using the new functions.
25413
25414 2008-03-04  Uros Bizjak  <ubizjak@gmail.com>
25415
25416         PR middle-end/35456
25417         * fold-const.c (fold_cond_expr_with_comparison): Prevent
25418         transformations for modes that have signed zeros.
25419         * ifcvt.c (noce_try_abs): Ditto.
25420
25421 2008-03-04  Joseph Myers  <joseph@codesourcery.com>
25422
25423         * config/i386/i386.c (override_options): Force
25424         -maccumulate-outgoing-args on if TARGET_STACK_PROBE.
25425
25426 2008-03-04  Jan Hubicka  <jh@suse.cz>
25427
25428         PR c++/35262
25429         * ipa-inline.c (cgraph_decide_inlining_of_small_function): Fix typo
25430         in last commit.
25431
25432 2008-03-04  Danny Smith  <dannysmith@users.sourceforge.net>
25433
25434         * config/i386/i386.md (allocate_stack_worker_32): Use  __chkstk
25435         label to probe the stack.
25436
25437 2008-03-04  Danny Smith  <dannysmith@users.sourceforge.net>
25438
25439         * gthr-win32.h [__GTHREAD_HIDE_WIN32API]
25440         (__gthr_win32_mutex_destroy): Declare.
25441         [__GTHREAD_HIDE_WIN32API] (__gthread_mutex_destroy): Use
25442         __gthr_win32_mutex_destroy.
25443         * config/i386/gthr-win32.c  (__gthr_win32_mutex_destroy): Define.
25444
25445 2008-03-03  Jan Hubicka  <jh@suse.cz>
25446
25447         PR c++/35262
25448         * ipa-inline.c (cgraph_decide_inlining_of_small_function): Be more
25449         aggressive on inlining cold calls.
25450
25451 2008-03-03  Richard Guenther  <rguenther@suse.de>
25452
25453         * tree-ssa-sccvn.c (visit_reference_op_store): Do not insert
25454         struct copies into the expression table.
25455         (simplify_unary_expression): Handle VIEW_CONVERT_EXPR.
25456         (try_to_simplify): Likewise.
25457         * fold-const.c (fold_unary): Fold VIEW_CONVERT_EXPR of
25458         integral and pointer arguments which do not change the
25459         precision to NOP_EXPRs.
25460         * tree-ssa-loop-ivopts.c (may_be_nonaddressable_p): Adjust
25461         VIEW_CONVERT_EXPR case.
25462
25463 2008-03-02  Sebastian Pop  <sebastian.pop@amd.com>
25464
25465         * tree-scalar-evolution.c (instantiate_parameters_1): An SSA_NAME
25466         defined in a loop at depth 0 is invariant.
25467         * tree-chrec.c (evolution_function_is_invariant_rec_p): Ditto.
25468         * tree-ssa-loop-ivopts.c (expr_invariant_in_loop_p): Should never
25469         be called at loop depth 0.
25470
25471 2008-03-02  Jakub Jelinek  <jakub@redhat.com>
25472
25473         PR driver/35420
25474         * gcc.c (process_command): Update copyright notice dates.
25475         * gcov.c (print_version): Likewise.
25476         * gcov-dump.c (print_version): Likewise.
25477         * mips-tfile.c (main): Likewise.
25478         * mips-tdump.c (main): Likewise.
25479
25480 2008-03-02  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
25481
25482         PR 24924
25483         * c-common.c (flag_permissive): Delete.
25484         (constant_expression_warnings): Check flags first.
25485         (constant_expression_error): New.
25486         * c-common.h (flag_permissive): Delete.
25487         (constant_expression_error): Declare.
25488         * flags.h (flag_permissive): Declare. Update description.
25489         * diagnostic.c (pedwarn): Update.
25490         (permerror): New.
25491         * diagnostic.h: (pedantic_error_kind): Rename as pedantic_warning_kind.
25492         (permissive_error_kind): New.
25493         * toplev.c (flag_permissive): Define. Update description.
25494         * toplev.h (permissive_error_kind): Declare.
25495         * c-errors.c (pedwarn_c99): Use pedantic_warning_kind.
25496         (pedwarn_c90): Use pedantic_warning_kind.
25497         * c-opts.c (c_common_post_options): flag_permissive does not affect
25498         flag_pedantic_errors.
25499
25500 2008-03-02  Joseph Myers  <joseph@codesourcery.com>
25501
25502         * libgcc2.c (__addvSI3, __addvsi3, __addvDI3, __subvSI3,
25503         __subvsi3, __subvDI3, __negvSI2, __negvsi2, __negvDI2, __absvSI2,
25504         __absvsi2, __absvDI2): Use unsigned arithmetic.
25505
25506 2008-03-02  Andi Kleen  <ak@suse.de>
25507             Richard Guenther  <rguenther@suse.de>
25508
25509         * struct-equiv.c: Remove file.
25510         * cfg_cleanup.c (condjump_equiv_p): Remove.
25511         * Makefile.in (OBJS-common): Remove struct-equiv.o.
25512         (struct-equiv.o): Remove rule.
25513         * basic-block.h (struct_equiv_checkpoint, STRUCT_EQUIV_*,
25514         insns_match_p, struct_equiv_block_eq, struct_equiv_init,
25515         rtx_equiv_p, condjump_equiv_p): Remove prototypes.
25516
25517 2008-03-01  Alexandre Oliva  <aoliva@redhat.com>
25518
25519         * ifcvt.c (noce_process_if_block): Try to handle only the then
25520         block if the else block exists but isn't suitable.
25521
25522 2008-03-01  Janne Blomqvist  <jb@gcc.gnu.org>
25523
25524         PR gcc/35063
25525         * gthr-posix.h (__gthread_mutex_destroy): Remove extra declarations.
25526         * gthr-posix95.h (__gthread_mutex_destroy): Likewise. Note this fixes
25527         regression from previous patch.
25528
25529 2008-03-01  Janne Blomqvist  <jb@gcc.gnu.org>
25530
25531         PR gcc/35063
25532         * gthr.h: Add __gthread_mutex_destroy as a function that must be
25533         implemented.
25534         * gthr-vxworks.h (__gthread_mutex_destroy): Null implementation.
25535         * gthr-single.h (__gthread_mutex_destroy): Likewise.
25536         * gthr-rtems.h (__gthread_mutex_destroy): Likewise.
25537         * gthr-mipssde.h (__gthread_mutex_destroy): Likewise.
25538         * gthr-nks.h (__gthread_mutex_destroy): Likewise.
25539         * gthr-solaris.h (__gthread_mutex_destroy): Call mutex_destroy.
25540         * gthr-win32.h (__GTHREAD_MUTEX_DESTROY_FUNCTION): Remove.
25541         (__gthread_mutex_destroy_function): Rename to
25542         __gthread_mutex_destroy.
25543         * gthr-dce.h (__gthread_mutex_destroy): Call
25544         pthread_mutex_destroy.
25545         * gthr-tpf.h (__gthread_mutex_destroy): Likewise.
25546         * gthr-posix.h (__gthread_mutex_destroy): Likewise.
25547         * gthr-posix95.h (__gthread_mutex_destroy): Likewise.
25548
25549 2008-03-01  Alexandre Oliva  <aoliva@redhat.com>
25550
25551         * df-scan.c (df_ref_chain_change_bb): Simplify.
25552         (df_insn_change_bb): Add new_bb argument.  Simplify.  Call
25553         set_block_for_insn if there's any change.
25554         * df.h ((df_insn_change_bb): Fix prototype.
25555         * cfgrtl.c (update_bb_for_insn_chain): Pass bb to
25556         df_insn_change_bb, don't call set_block_for_insn.
25557         * emit-rtl.c (reorder_insns): Likewise.
25558         * haifa-sched.c (move_insn): Likewise.
25559
25560 2008-03-01  Alexandre Oliva  <aoliva@redhat.com>
25561
25562         * rtlanal.c (loc_mentioned_in_p): Test XVECEXPs correctly.
25563
25564 2008-03-01  Alexandre Oliva  <aoliva@redhat.com>
25565
25566         * tree-flow-inline.h (next_readonly_imm_use): Return
25567         NULL_USE_OPERAND_P after the end.
25568
25569 2008-03-01  Richard Guenther  <rguenther@suse.de>
25570
25571         PR tree-optimization/35411
25572         * tree-sra.c (sra_build_assignment): Split conversion to
25573         final type to a separate statement if we are not assigning
25574         to a register.
25575
25576 2008-02-29  Francois-Xavier Coudert  <coudert@clipper.ens.fr>
25577
25578         * fold-const.c (fold_convertible_p): Correct the logic to follow
25579         that in fold_convert().
25580
25581 2008-02-29  Douglas Gregor  <doug.gregor@gmail.com>
25582
25583         PR c++/35315
25584         * tree-inline.c (build_duplicate_type): When we make a
25585         duplicate type, make it unique in the canonical types system.
25586
25587 2008-02-29  Tom Tromey  <tromey@redhat.com>
25588
25589         * toplev.c (input_file_stack, input_file_stack_tick, fs_p,
25590         input_file_stack_history, input_file_stack_restored): Remove.
25591         (push_srcloc, pop_srcloc, restore_input_file_stack): Likewise.
25592         * input.h (struct file_stack): Remove.
25593         (push_srcloc, pop_srcloc, restore_input_file_stack): Likewise.
25594         (input_file_stack, input_file_stack_tick, INPUT_FILE_STACK_BITS):
25595         Likewise.
25596         * diagnostic.h (struct diagnostic_context) <last_module>: Change
25597         type.
25598         (diagnostic_last_module_changed): Add 'map' argument.
25599         (diagnostic_set_last_function): Likewise.
25600         * diagnostic.c (undiagnostic_report_current_module): Iterate using
25601         line map, not input_file_stack.
25602         * c-lex.c (fe_file_change): Don't use push_srcloc or pop_srcloc.
25603
25604 2008-02-29  Paul Brook  <paul@codesourcery.com>
25605
25606         * config/arm/arm.md (arm_addsi3): Add r/k/n alternative.
25607
25608 2008-02-29  Paul Brook  <paul@codesourcery.com>
25609
25610         * config/arm/ieee754-df.S (muldf3): Use RET macros.
25611
25612 2008-02-29  Richard Guenther  <rguenther@suse.de>
25613
25614         * tree-ssa-pre.c (get_sccvn_value): Create missing VNs via
25615         vn_lookup_or_add.
25616         * tree-ssa-sccnv.c (visit_reference_op_store): Use the rhs
25617         value for comparing for a store match.
25618         (simplify_unary_expression): Do nothing for SSA_NAMEs.
25619         (try_to_simplify): Do not do a full-blown reference lookup.
25620
25621 2008-02-29  Kaz Kojima  <kkojima@gcc.gnu.org>
25622
25623         * config/sh/sh.c (sh_scalar_mode_supported_p): New function.
25624         (TARGET_SCALAR_MODE_SUPPORTED_P): Define.
25625
25626         * config/sh/sh.h (OVERRIDE_OPTIONS): Don't warn for profiling.
25627
25628 2008-02-29  Sebastian Pop  <sebastian.pop@amd.com>
25629
25630         * tree-loop-linear.c (try_interchange_loops): Compare memory access
25631         strides against cache sizes.
25632
25633 2008-02-29  Kaz Kojima  <kkojima@gcc.gnu.org>
25634
25635         * config/sh/sh.c (sh_secondary_reload): Handle loading a float
25636         constant to fpul.
25637
25638 2008-02-28  Richard Sandiford  <rsandifo@nildram.co.uk>
25639
25640         * simplify-rtx.c (simplify_unary_operation_1): Extend the handling
25641         of SUBREG_PROMOTED_VAR_P to cope with cases where the extended value
25642         is smaller than the original promoted value.
25643         (simplify_subreg): If OP is a SUBREG, try to preserve its
25644         SUBREG_PROMOTED_VAR_P information.
25645
25646 2008-02-28  Steven Bosscher  <stevenb.gcc@gmail.com>
25647
25648         * tree-ssa-sccvn (vn_ssa_aux_obstack): New obstack.
25649         (VN_INFO_GET): Allocate new objects on the obstack.
25650         (init_scc_vn): Initialize the obstack.  Use XDELETE instead of free
25651         for rpo_numbers_temp, for consistency.
25652         (free_scc_vn): Free the obstack.
25653
25654 2008-02-28  Sebastian Pop  <sebastian.pop@amd.com>
25655
25656         * doc/invoke.texi: Document -ftree-loop-distribution.
25657         * tree-loop-distribution.c: New.
25658         * tree-pass.h (pass_loop_distribution): New.
25659         * graphds.h (struct graph): Add htab_t indices.
25660         * timevar.def (TV_TREE_LOOP_DISTRIBUTION): New.
25661         * tree-vectorizer.c (rename_variables_in_loop): Extern.
25662         (slpeel_tree_duplicate_loop_to_edge_cfg): Init PENDING_STMT to NULL.
25663         * tree-vectorizer.h (tree_duplicate_loop_on_edge): Declared.
25664         * tree-data-ref.c (debug_data_dependence_relations): New.
25665         (dump_data_dependence_relation): Also print data references.
25666         (free_data_ref): Extern.
25667         (same_access_functions): Moved...
25668         (find_vertex_for_stmt): Renamed rdg_vertex_for_stmt.
25669         (dump_rdg_vertex, debug_rdg_vertex, dump_rdg_component,
25670         debug_rdg_component, dump_rdg, debug_rdg, dot_rdg_1, dot_rdg,
25671         struct rdg_vertex_info, rdg_vertex_for_stmt): New.
25672         (create_rdg_edge_for_ddr, create_rdg_vertices): Cleaned up.
25673         (stmts_from_loop): Skip LABEL_EXPR.
25674         (hash_stmt_vertex_info, eq_stmt_vertex_info, hash_stmt_vertex_del):
25675         New.
25676         (build_rdg): Initialize rdg->indices htab.
25677         (free_rdg, stores_from_loop, ref_base_address,
25678         rdg_defs_used_in_other_loops_p, have_similar_memory_accesses,
25679         have_similar_memory_accesses_1, ref_base_address_1,
25680         remove_similar_memory_refs): New.
25681         * tree-data-ref.h: Depend on tree-chrec.h.
25682         (debug_data_dependence_relations, free_data_ref): Declared.
25683         (same_access_functions): ... here.
25684         (ddr_is_anti_dependent, ddrs_have_anti_deps, ddr_dependence_level):
25685         New.
25686         (struct rdg_vertex): Add has_mem_write and has_mem_reads.
25687         (RDGV_HAS_MEM_WRITE, RDGV_HAS_MEM_READS, RDG_STMT,
25688         RDG_MEM_WRITE_STMT, RDG_MEM_READS_STMT): New.
25689         (dump_rdg_vertex, debug_rdg_vertex, dump_rdg_component,
25690         debug_rdg_component, dump_rdg, debug_rdg, dot_rdg,
25691         rdg_vertex_for_stmt): Declared.
25692         (struct rdg_edge): Add level.
25693         (RDGE_LEVEL): New.
25694         (free_rdg, stores_from_loop, remove_similar_memory_refs,
25695         rdg_defs_used_in_other_loops_p, have_similar_memory_accesses):
25696         Declared.
25697         (rdg_has_similar_memory_accesses): New.
25698         * tree-vect-analyze.c: Remove unused static decls.
25699         * lambda.h (dependence_level): New.
25700         * common.opt (ftree-loop-distribution): New.
25701         * tree-flow.h (mark_virtual_ops_in_bb,
25702         slpeel_tree_duplicate_loop_to_edge_cfg,
25703         rename_variables_in_loop): Declared.
25704         * Makefile.in (TREE_DATA_REF_H): Depend on tree-chrec.h.
25705         (OBJS-common): Add tree-loop-distribution.o.
25706         (tree-loop-distribution.o): New rule.
25707         * tree-cfg.c (mark_virtual_ops_in_bb): New.
25708         (mark_virtual_ops_in_region): Use mark_virtual_ops_in_bb.
25709         * passes.c (init_optimization_passes): Schedule pass_loop_distribution.
25710
25711 2008-02-28  Joseph Myers  <joseph@codesourcery.com>
25712
25713         PR target/33963
25714         * tree.c (handle_dll_attribute): Disallow TYPE_DECLs for types
25715         other than structures and unions.
25716
25717 2008-02-28  Richard Guenther  <rguenther@suse.de>
25718
25719         Revert:
25720         2008-02-26  Richard Guenther  <rguenther@suse.de>
25721
25722         * tree-flow.h (uid_decl_map_hash, uid_decl_map_eq): Move ...
25723         * tree.h (uid_decl_map_hash, uid_decl_map_eq): ... here.
25724         (lookup_decl_from_uid): Declare.
25725         (remove_decl_from_map): Likewise.
25726         * tree-ssa.c (uid_decl_map_eq, uid_decl_map_hash): Move ...
25727         * tree.c (uid_decl_map_eq, uid_decl_map_hash): ... here.
25728         (decl_for_uid_map): New global hashtable mapping DECL_UID
25729         to the decl tree.
25730         (init_ttree): Allocate it.
25731         (insert_decl_to_uid_decl_map): New helper function.
25732         (make_node_stat): Insert new decls into the map.
25733         (copy_node_stat): Likewise.
25734         (lookup_decl_from_uid): New function.
25735         (remove_decl_from_map): Likewise.
25736         (print_decl_for_uid_map_statistics): New helper.
25737         (dump_tree_statistics): Call it.
25738
25739         * tree-flow.h (struct gimple_df): Make referenced_vars a bitmap.
25740         (referenced_var_iterator): Adjust.
25741         (FOR_EACH_REFERENCED_VAR): Adjust.
25742         (FOR_EACH_REFERENCED_VAR_IN_BITMAP): New iterator.
25743         (num_referenced_vars): Adjust.
25744         * tree-flow-inline.h (gimple_referenced_vars): Adjust.
25745         (first_referenced_var): Remove.
25746         (end_referenced_vars_p): Likewise.
25747         (next_referenced_var): Likewise.
25748         (referenced_var_iterator_set): New helper function.
25749         * tree-dfa.c (referenced_var_lookup): Adjust.
25750         (referenced_var_check_and_insert): Likewise.
25751         (remove_referenced_var): Likewise.
25752         * tree-ssa.c (verify_flow_insensitive_alias_info): Use
25753         FOR_EACH_REFERENCED_VAR_IN_BITMAP.
25754         (verify_call_clobbering): Likewise.
25755         (verify_memory_partitions): Likewise.
25756         (init_tree_ssa): Allocate bitmap instead of hashtable for
25757         referenced_vars.
25758         (delete_tree_ssa): Adjust.
25759         * tree-ssa-alias.c (mark_aliases_call_clobbered): Use
25760         FOR_EACH_REFERENCED_VAR_IN_BITMAP.
25761         (compute_tag_properties): Likewise.
25762         (set_initial_properties): Likewise.
25763         (find_partition_for): Likewise.
25764         (update_reference_counts): Likewise.
25765         (dump_may_aliases_for): Likewise.
25766         * tree-ssa-operands.c (add_virtual_operand): Likewise.
25767         (add_call_clobber_ops): Likewise.
25768         (add_call_read_ops): Likewise.
25769         (get_asm_expr_operands): Likewise.
25770         * tree-into-ssa.c (dump_decl_set): Likewise.
25771         (update_ssa): Likewise.
25772         * tree-sra.c (scan_function): Likewise.
25773         (decide_instantiations): Likewise.
25774         (scalarize_parms): Likewise.
25775         * tree-ssa-alias-warnings.c (build_reference_table): Likewise.
25776         (dsa_named_for): Likewise.
25777         * tree-ssa-structalias.c (update_alias_info): Likewise.
25778         (merge_smts_into): Likewise.
25779
25780 2008-02-27  David Daney  <ddaney@avtrex.com>
25781
25782         PR target/34409
25783         * config/mips/iris.h (MIPS_DEBUGGING_INFO): Define.
25784         * config/mips/openbsd.h (MIPS_DEBUGGING_INFO): Same.
25785         * config/mips/sde.h (MIPS_DEBUGGING_INFO): Remove undef.
25786         * config/mips/vxworks.h (MIPS_DEBUGGING_INFO): Same.
25787         * config/mips/mips.h (MIPS_DEBUGGING_INFO): Remove define.
25788
25789 2008-02-27  Uros Bizjak  <ubizjak@gmail.com>
25790
25791         PR target/25477
25792         * config/darwin-ppc-ldouble-patch.def (BUILT_IN_NANL): Add.
25793         (BUILT_IN_NEXTTOWARD): Remove.
25794         (BUILT_IN_NEXTTOWARDF): Ditto.
25795         * config/darwin.c (darwin_patch_builtin): Use ACONCAT instead of
25796         alloca/strcpy/strcat.  Remove commented-out code.  Fix whitespace.
25797
25798 2008-02-27  Tom Tromey  <tromey@redhat.com>
25799
25800         * tree-dump.c (dequeue_and_dump) <FUNCTION_DECL>: Check
25801         DECL_SAVED_TREE, not DECL_LANG_SPECIFIC, when dumping body.
25802
25803 2008-02-27  Jan Beulich  <jbeulich@novell.com>
25804
25805         * c-decl.c (merge_decls): Use DECL_USER_ALIGN() on olddecl to
25806         update the respective field on newdecl.
25807
25808 2008-02-27  Revital Eres  <eres@il.ibm.com>
25809
25810         PR rtl-optimization/34999
25811         * bb-reorder.c (add_labels_and_missing_jumps): Do not handle
25812         crossing edges that ends with a call insn.
25813         (fix_up_fall_thru_edges): Handle crossing edges that ends with a
25814         call insn and clear the EDGE_CROSSING flag of the crossing edge
25815         when fixing fallthru edges.
25816
25817 2008-02-27  Richard Guenther  <rguenther@suse.de>
25818
25819         PR middle-end/35390
25820         * fold-const.c (fold_unary): Return the correct argument,
25821         converted to the result type.
25822
25823 2008-02-27  Richard Guenther  <rguenther@suse.de>
25824
25825         PR middle-end/34971
25826         * expr.c (expand_expr_real_1): Assert on rotates that operate
25827         on partial modes.
25828         * fold-const.c (fold_binary): Use the types precision, not the
25829         bitsize of the mode if folding rotate expressions.  Build rotates
25830         only for full modes.
25831
25832 2008-02-27  Jakub Jelinek  <jakub@redhat.com>
25833
25834         * c-ppoutput.c (scan_translation_unit): Handle CPP_PRAGMA
25835         and CPP_PRAGMA_EOL.
25836         * c-pragma.c (pragma_ns_name): New typedef.
25837         (registered_pp_pragmas): New variable.
25838         (c_pp_lookup_pragma): New function.
25839         (c_register_pragma_1): If flag_preprocess_only, do nothing
25840         for non-expanded pragmas, for expanded ones push pragma's
25841         namespace and name into registered_pp_pragmas vector.
25842         (c_invoke_pragma_handler): Register OpenMP pragmas even when
25843         flag_preprocess_only, don't register GCC pch_preprocess
25844         pragma if flag_preprocess_only.
25845         * c-opts.c (c_common_init): Call init_pragma even if
25846         flag_preprocess_only.
25847         * c-pragma.c (c_pp_lookup_pragma): New prototype.
25848         * config/darwin.h (DARWIN_REGISTER_TARGET_PRAGMAS): Don't call
25849         cpp_register_pragma if flag_preprocess_only.
25850
25851 2008-02-26  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
25852
25853         PR c/28800
25854         * c-parser.c (c_parser_translation_unit): Warn for empty
25855         translation unit, not empty source file.
25856
25857 2008-02-26  Paul Brook  <paul@codesourcery.com>
25858
25859         * config/arm/arm.c (thumb_set_frame_pointer): Ensure SP is first
25860         operand for Thumb-2.
25861         * config/arm/arm.h (reg_class): Add CORE_REGS.
25862         (REG_CLASS_NAMES, REG_CLASS_CONTENTS): Ditto.
25863         (BASE_REG_CLASS): Use CORE_REGS.
25864         (PREFERRED_RELOAD_CLASS): Add STACK_REG.
25865         (REGNO_MODE_OK_FOR_REG_BASE_P): Use REGNO_MODE_OK_FOR_BASE_P.
25866         (REGNO_OK_FOR_INDEX_P): Exclude SP.
25867         (ARM_REG_OK_FOR_INDEX_P): Always define.  Use
25868         ARM_REGNO_OK_FOR_INDEX_P.
25869         (ARM_PRINT_OPERAND_ADDRESS): Swap operands for [reg, sp].
25870         * config/arm/arm.md (arm_addsi3, thumb1_addsi3, arm_subsi3_insn,
25871         arm_movsi_insn, thumb1_movsi_insni, stack_tie): Add "k" alternatives.
25872         (ldm/stm peepholes): Ditto.
25873         * config/arm/thumb2.md (thumb2_movdi): Add "k" alternatives.
25874         * config/arm/vfp.md (arm_movsi_vfp, thumb2_movsi_vfp): Ditto.
25875         * config/arm/iwmmxt.md (iwmmxt_movsi_insn): Ditto.
25876         * config/arm/constraints.md: Enable "k" constraint on ARM.
25877
25878 2008-02-27  Ben Elliston  <bje@au.ibm.com>
25879
25880         * config/rs6000/rs6000.c: Annotate cache line size field in all
25881         instances of struct processor_costs.
25882
25883 2008-02-26  David Edelsohn  <edelsohn@gnu.org>
25884
25885         * dbgcnt.def (cfg_cleanup, cprop1, cprop2, dce_fast, dce_ud, dse1,
25886         dse2, gcse, if_conversion, if_after_combine, if_after_reload,
25887         jump_bypass): New counters.
25888         * cfgcleanup.c (cleanup_cfg): Add dbg_cnt.
25889         * dce.c (gate_ud_dce): Same.
25890         (gate_fast_dce): Same.
25891         * dse.c (gate_dse1): New function.
25892         (gate_dse2): New function.
25893         (gate_dse): Merge results of new gate functions.
25894         * gcse.c (gcse_main): Bracket cprop1 and cprop2 with dbg_cnt.
25895         (gate_handle_jump_bypass): Add dbg_cnt.
25896         (gate_handle_gcse): Add dbg_cnt.
25897         * ifcvt.c (gate_handle_if_conversion): Same.
25898         (gate_handle_if_after_combine): Same.
25899         (gate_handle_if_after_reload): Same.
25900         * Makefile.in: Add DBGCNT_H to cfgcleanup.o and ifcvt.o.
25901
25902 2008-02-26  Edmar Wienskoski  <edmar@freescale.com>
25903
25904         * config/rs6000/rs6000.c (processor_costs): Update e300 cache
25905         line sizes.
25906         * doc/invoke.texi: Add e300c2 and e300c3 to list of cpus.
25907
25908 2008-02-26  Jason Merrill  <jason@redhat.com>
25909
25910         PR c++/35315
25911         * attribs.c (decl_attributes): Leave ATTR_FLAG_TYPE_IN_PLACE
25912         alone if it's the naming decl for the type's main variant.
25913
25914 2008-02-26  Tom Tromey  <tromey@redhat.com>
25915
25916         * system.h (USE_MAPPED_LOCATION): Poison.
25917         * Makefile.in (GTFILES): Put CPP_ID_DATA_H first.
25918         * tree-cfg.c (make_cond_expr_edges): Remove old location code.
25919         (make_goto_expr_edges): Likewise.
25920         (remove_bb): Likewise.
25921         (execute_warn_function_return): Likewise.
25922         * basic-block.h (struct edge_def) <goto_locus>: Change type to
25923         location_t.
25924         * c-common.c (fname_decl): Remove old location code.
25925         * tree-vect-transform.c (vect_finish_stmt_generation): Remove old
25926         location code.
25927         * rtl.h (ASM_OPERANDS_SOURCE_LOCATION): Remove old-location
25928         variant.
25929         (ASM_INPUT_SOURCE_LOCATION): Likewise.
25930         (gen_rtx_ASM_INPUT): Likewise.
25931         (gen_rtx_ASM_INPUT_loc): Likewise.
25932         (get_rtx_asm_OPERANDS): Remove.
25933         * cfglayout.c (insn_locators_alloc): Remove old location code.
25934         (set_curr_insn_source_location): Likewise.
25935         (curr_insn_locator): Likewise.
25936         * print-tree.c (print_node): Remove old location code.
25937         * tree-mudflap.c (mf_varname_tree): Remove old location code.
25938         (mf_file_function_line_tree): Remove test of USE_MAPPED_LOCATION.
25939         * cfgexpand.c (expand_gimple_cond_expr): Don't use
25940         location_from_locus.
25941         (construct_exit_block): Remove old location code.
25942         * emit-rtl.c (force_next_line_note): Remove old location code.
25943         * profile.c (branch_prob): Remove old location code.
25944         * tree-vectorizer.h (LOC, UNKNOWN_LOC, EXPR_LOC, LOC_FILE,
25945         LOC_LINE): Remove old-location variants.
25946         * langhooks.c (lhd_print_error_function): Remove old location
25947         code.
25948         * configure, config.in: Rebuilt.
25949         * configure.ac (--enable-mapped-location): Remove.
25950         * c-decl.c (c_init_decl_processing): Remove old location code.
25951         (finish_function): Likewise.
25952         * recog.c (decode_asm_operands): Remove old location code.
25953         * c-pch.c (c_common_read_pch): Remove old location code.
25954         * rtl.def (ASM_INPUT, ASM_OPERANDS): Remove old location
25955         variants.
25956         * gimple-low.c (lower_function_body): Remove old location code.
25957         * toplev.c (unknown_location): Remove.
25958         (push_srcloc): Remove old-location variant.
25959         (process_options): Remove old location code.
25960         (lang_dependent_init): Likewise.
25961         * input.h (UNKNOWN_LOCATION): Move definition.
25962         (location_t): Undeprecate.
25963         (source_locus): Remove.
25964         (location_from_locus): Remove.
25965         (struct location_s): Remove.
25966         Remove all old-location code.
25967         (input_line, input_filename): Remove.
25968         * final.c (final_scan_insn): Remove old location code.
25969         * diagnostic.c (diagnostic_build_prefix): Remove
25970         USE_MAPPED_LOCATION test.
25971         * tree.h (gimple_stmt) <locus>: Now a location_t.
25972         (tree_exp) <locus>: Likewise.
25973         (DECL_IS_BUILTIN): Remove old-location variant.
25974         (annotate_with_file_line, annotate_with_locus): Likewise.
25975         (expr_locus, set_expr_locus): Update.
25976         * tree.c (build1_stat): Remove old location code.
25977         (last_annotated_node): Remove.
25978         (annotate_with_file_line): Remove old-location variant.
25979         (annotate_with_locus): Likewise.
25980         (expr_location): Remove old location code.
25981         (set_expr_location): Likewise.
25982         (expr_has_location): Likewise.
25983         (expr_locus): Likewise.
25984         (set_expr_locus): Likewise.
25985         (expr_filename): Don't use location_from_locus.
25986         (expr_lineno): Likewise.
25987         * rtl-error.c (location_for_asm): Remove old location code.
25988         * c-lex.c (cb_line_change): Remove old location code.
25989         (fe_file_change): Likewise.
25990         (cb_def_pragma): Likewise.
25991         (c_lex_with_flags): Likewise.
25992         * gengtype.c (do_typedef): Don't special-case location types.
25993         (define_location_structures): Remove.
25994         (main): Don't call define_location_structures.
25995         * tree-pretty-print.c (dump_implicit_edges): Remove old location
25996         code.
25997
25998 2008-02-26  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
25999
26000         PR 26264
26001         * builtins.def (BUILT_IN_STDARG_START): Remove.
26002         * builtins.c (expand_builtin): Remove BUILT_IN_STDARG_START.
26003         * tree-stdarg.c (execute_optimize_stdarg): Likewise.
26004         * tree-inline.c (inline_forbidden_p_1): Likewise.
26005
26006 2008-02-26  Richard Guenther  <rguenther@suse.de>
26007
26008         * tree-flow.h (uid_decl_map_hash, uid_decl_map_eq): Move ...
26009         * tree.h (uid_decl_map_hash, uid_decl_map_eq): ... here.
26010         (lookup_decl_from_uid): Declare.
26011         (remove_decl_from_map): Likewise.
26012         * tree-ssa.c (uid_decl_map_eq, uid_decl_map_hash): Move ...
26013         * tree.c (uid_decl_map_eq, uid_decl_map_hash): ... here.
26014         (decl_for_uid_map): New global hashtable mapping DECL_UID
26015         to the decl tree.
26016         (init_ttree): Allocate it.
26017         (insert_decl_to_uid_decl_map): New helper function.
26018         (make_node_stat): Insert new decls into the map.
26019         (copy_node_stat): Likewise.
26020         (lookup_decl_from_uid): New function.
26021         (remove_decl_from_map): Likewise.
26022         (print_decl_for_uid_map_statistics): New helper.
26023         (dump_tree_statistics): Call it.
26024
26025         * tree-flow.h (struct gimple_df): Make referenced_vars a bitmap.
26026         (referenced_var_iterator): Adjust.
26027         (FOR_EACH_REFERENCED_VAR): Adjust.
26028         (FOR_EACH_REFERENCED_VAR_IN_BITMAP): New iterator.
26029         (num_referenced_vars): Adjust.
26030         * tree-flow-inline.h (gimple_referenced_vars): Adjust.
26031         (first_referenced_var): Remove.
26032         (end_referenced_vars_p): Likewise.
26033         (next_referenced_var): Likewise.
26034         (referenced_var_iterator_set): New helper function.
26035         * tree-dfa.c (referenced_var_lookup): Adjust.
26036         (referenced_var_check_and_insert): Likewise.
26037         (remove_referenced_var): Likewise.
26038         * tree-ssa.c (verify_flow_insensitive_alias_info): Use
26039         FOR_EACH_REFERENCED_VAR_IN_BITMAP.
26040         (verify_call_clobbering): Likewise.
26041         (verify_memory_partitions): Likewise.
26042         (init_tree_ssa): Allocate bitmap instead of hashtable for
26043         referenced_vars.
26044         (delete_tree_ssa): Adjust.
26045         * tree-ssa-alias.c (mark_aliases_call_clobbered): Use
26046         FOR_EACH_REFERENCED_VAR_IN_BITMAP.
26047         (compute_tag_properties): Likewise.
26048         (set_initial_properties): Likewise.
26049         (find_partition_for): Likewise.
26050         (update_reference_counts): Likewise.
26051         (dump_may_aliases_for): Likewise.
26052         * tree-ssa-operands.c (add_virtual_operand): Likewise.
26053         (add_call_clobber_ops): Likewise.
26054         (add_call_read_ops): Likewise.
26055         (get_asm_expr_operands): Likewise.
26056         * tree-into-ssa.c (dump_decl_set): Likewise.
26057         (update_ssa): Likewise.
26058         * tree-sra.c (scan_function): Likewise.
26059         (decide_instantiations): Likewise.
26060         (scalarize_parms): Likewise.
26061         * tree-ssa-alias-warnings.c (build_reference_table): Likewise.
26062         (dsa_named_for): Likewise.
26063         * tree-ssa-structalias.c (update_alias_info): Likewise.
26064         (merge_smts_into): Likewise.
26065
26066 2008-02-26  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
26067
26068         PR 34351
26069         * doc/invoke.texi (-Wall): Add -Wvolatile-register-var.
26070         * c-opts.c (c_common_handle_option): Wall enables
26071         Wvolatile-register-var.
26072         * common.opt: Move Wvolatile-register-var to...
26073         * c.opt: ...here.
26074
26075 2008-02-26  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
26076
26077         * common.opt (Wlarger-than=): New.
26078         * doc/invoke.texi (Warning Options): Replace -Wlarger-than- with
26079         -Wlarger-than=.
26080         * opts.c (common_handle_option): Handle -Wlarger-than=.
26081         * optc-gen.awk: Likewise.
26082         * opth-gen.awk: Likewise.
26083         * stor-layout.c (layout_decl): Use -Wlarger-than= for warning.
26084         * tree-optimize.c (tree_rest_of_compilation): Likewise.
26085
26086 2008-02-26  Manuel Lopez-Ibanez <manu@gcc.gnu.org>
26087
26088         * c-common.c (match_case_to_enum_1): Add appropriate
26089         OPT_W* parameter to warning.
26090         (c_do_switch_warnings): Likewise.
26091         * c-typeck.c (warning_init): Add one more parameter following
26092         'warning' function.
26093         (push_init_level): Update call to warning_init.
26094         (pop_init_level): Likewise.
26095         (add_pending_init): Likewise.
26096         (output_init_element: Likewise.
26097
26098 2008-02-26  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
26099
26100         PR 28322
26101         * toplev.c (toplev_main): If there are warnings or error, print
26102         errors for ignored options.
26103         * opts.c (ignored_options): New static variable.
26104         (postpone_unknown_option_error): New.
26105         (print_ignored_options): New.
26106         (handle_option): Postpone errors for unknown -Wno-* options.
26107         * opts.h (print_ignored_options): Declare.
26108
26109 2008-02-25  Richard Sandiford  <rsandifo@nildram.co.uk>
26110
26111         * config/mips/mips.md (loadgp_blockage, blockage): Change type
26112         to "ghost".
26113
26114 2008-02-25  Richard Guenther  <rguenther@suse.de>
26115
26116         Revert:
26117         2008-02-25  Richard Guenther  <rguenther@suse.de>
26118
26119         * tree-flow.h (uid_decl_map_hash, uid_decl_map_eq): Move ...
26120         * tree.h (uid_decl_map_hash, uid_decl_map_eq): ... here.
26121         (lookup_decl_from_uid): Declare.
26122         * tree-ssa.c (uid_decl_map_eq, uid_decl_map_hash): Move ...
26123         * tree.c (uid_decl_map_eq, uid_decl_map_hash): ... here.
26124         (decl_for_uid_map): New global hashtable mapping DECL_UID
26125         to the decl tree.
26126         (init_ttree): Allocate it.
26127         (insert_decl_to_uid_decl_map): New helper function.
26128         (make_node_stat): Insert new decls into the map.
26129         (copy_node_stat): Likewise.
26130         (lookup_decl_from_uid): New function.
26131         (print_decl_for_uid_map_statistics): New helper.
26132         (dump_tree_statistics): Call it.
26133
26134         * tree-flow.h (struct gimple_df): Make referenced_vars a bitmap.
26135         (referenced_var_iterator): Adjust.
26136         (FOR_EACH_REFERENCED_VAR): Adjust.
26137         (FOR_EACH_REFERENCED_VAR_IN_BITMAP): New iterator.
26138         (num_referenced_vars): Adjust.
26139         * tree-flow-inline.h (gimple_referenced_vars): Adjust.
26140         (first_referenced_var): Remove.
26141         (end_referenced_vars_p): Likewise.
26142         (next_referenced_var): Likewise.
26143         (referenced_var_iterator_set): New helper function.
26144         * tree-dfa.c (referenced_var_lookup): Adjust.
26145         (referenced_var_check_and_insert): Likewise.
26146         (remove_referenced_var): Likewise.
26147         * tree-ssa.c (verify_flow_insensitive_alias_info): Use
26148         FOR_EACH_REFERENCED_VAR_IN_BITMAP.
26149         (verify_call_clobbering): Likewise.
26150         (verify_memory_partitions): Likewise.
26151         (init_tree_ssa): Allocate bitmap instead of hashtable for
26152         referenced_vars.
26153         (delete_tree_ssa): Adjust.
26154         * tree-ssa-alias.c (mark_aliases_call_clobbered): Use
26155         FOR_EACH_REFERENCED_VAR_IN_BITMAP.
26156         (compute_tag_properties): Likewise.
26157         (set_initial_properties): Likewise.
26158         (find_partition_for): Likewise.
26159         (update_reference_counts): Likewise.
26160         (dump_may_aliases_for): Likewise.
26161         * tree-ssa-operands.c (add_virtual_operand): Likewise.
26162         (add_call_clobber_ops): Likewise.
26163         (add_call_read_ops): Likewise.
26164         (get_asm_expr_operands): Likewise.
26165         * tree-into-ssa.c (dump_decl_set): Likewise.
26166         (update_ssa): Likewise.
26167         * tree-sra.c (scan_function): Likewise.
26168         (decide_instantiations): Likewise.
26169         (scalarize_parms): Likewise.
26170         * tree-ssa-alias-warnings.c (build_reference_table): Likewise.
26171         (dsa_named_for): Likewise.
26172         * tree-ssa-structalias.c (update_alias_info): Likewise.
26173         (merge_smts_into): Likewise.
26174
26175 2008-02-25  Janne Blomqvist  <jb@gcc.gnu.org>
26176
26177         PR fortran/29549
26178         * doc/invoke.texi (-fcx-limited-range): Document new option.
26179         * toplev.c (process_options): Handle -fcx-fortran-rules.
26180         * common.opt: Add documentation for -fcx-fortran-rules.
26181
26182 2008-02-25  Janne Blomqvist  <jb@gcc.gnu.org>
26183
26184         PR c/35162
26185         * doc/invoke.texi (-fcx-limited-range): Correct to be in line with
26186         actual behaviour and C99.
26187
26188 2008-02-26  Ben Elliston  <bje@au.ibm.com>
26189
26190         * config/rs6000/rs6000.h (ASM_CPU_POWER5_SPEC): Define.
26191         (ASM_CPU_POWER6_SPEC): Likewise.
26192         (ASM_CPU_SPEC): Pass %(asm_cpu_power5) for -mcpu=power5.
26193         Likewise, pass %(asm_cpu_power6) for -mcpu=power6.
26194         (EXTRA_SPECS): Add asm_cpu_power5, asm_cpu_power6 spec strings.
26195
26196 2008-02-25  Richard Guenther  <rguenther@suse.de>
26197
26198         * tree-flow.h (uid_decl_map_hash, uid_decl_map_eq): Move ...
26199         * tree.h (uid_decl_map_hash, uid_decl_map_eq): ... here.
26200         (lookup_decl_from_uid): Declare.
26201         * tree-ssa.c (uid_decl_map_eq, uid_decl_map_hash): Move ...
26202         * tree.c (uid_decl_map_eq, uid_decl_map_hash): ... here.
26203         (decl_for_uid_map): New global hashtable mapping DECL_UID
26204         to the decl tree.
26205         (init_ttree): Allocate it.
26206         (insert_decl_to_uid_decl_map): New helper function.
26207         (make_node_stat): Insert new decls into the map.
26208         (copy_node_stat): Likewise.
26209         (lookup_decl_from_uid): New function.
26210         (print_decl_for_uid_map_statistics): New helper.
26211         (dump_tree_statistics): Call it.
26212
26213         * tree-flow.h (struct gimple_df): Make referenced_vars a bitmap.
26214         (referenced_var_iterator): Adjust.
26215         (FOR_EACH_REFERENCED_VAR): Adjust.
26216         (FOR_EACH_REFERENCED_VAR_IN_BITMAP): New iterator.
26217         (num_referenced_vars): Adjust.
26218         * tree-flow-inline.h (gimple_referenced_vars): Adjust.
26219         (first_referenced_var): Remove.
26220         (end_referenced_vars_p): Likewise.
26221         (next_referenced_var): Likewise.
26222         (referenced_var_iterator_set): New helper function.
26223         * tree-dfa.c (referenced_var_lookup): Adjust.
26224         (referenced_var_check_and_insert): Likewise.
26225         (remove_referenced_var): Likewise.
26226         * tree-ssa.c (verify_flow_insensitive_alias_info): Use
26227         FOR_EACH_REFERENCED_VAR_IN_BITMAP.
26228         (verify_call_clobbering): Likewise.
26229         (verify_memory_partitions): Likewise.
26230         (init_tree_ssa): Allocate bitmap instead of hashtable for
26231         referenced_vars.
26232         (delete_tree_ssa): Adjust.
26233         * tree-ssa-alias.c (mark_aliases_call_clobbered): Use
26234         FOR_EACH_REFERENCED_VAR_IN_BITMAP.
26235         (compute_tag_properties): Likewise.
26236         (set_initial_properties): Likewise.
26237         (find_partition_for): Likewise.
26238         (update_reference_counts): Likewise.
26239         (dump_may_aliases_for): Likewise.
26240         * tree-ssa-operands.c (add_virtual_operand): Likewise.
26241         (add_call_clobber_ops): Likewise.
26242         (add_call_read_ops): Likewise.
26243         (get_asm_expr_operands): Likewise.
26244         * tree-into-ssa.c (dump_decl_set): Likewise.
26245         (update_ssa): Likewise.
26246         * tree-sra.c (scan_function): Likewise.
26247         (decide_instantiations): Likewise.
26248         (scalarize_parms): Likewise.
26249         * tree-ssa-alias-warnings.c (build_reference_table): Likewise.
26250         (dsa_named_for): Likewise.
26251         * tree-ssa-structalias.c (update_alias_info): Likewise.
26252         (merge_smts_into): Likewise.
26253
26254 2008-02-25  Andreas Krebbel  <krebbel1@de.ibm.com>
26255
26256         PR target/35258
26257         * cse.c (cse_insn): Avoid creation of overlapping MEMs.
26258         * alias.c (nonoverlapping_memrefs_p): Export for use in other modules.
26259         * alias.h (nonoverlapping_memrefs_p): Likewise.
26260
26261 2008-02-25  Jan Beulich  <jbeulich@novell.com>
26262
26263         * Makefile.in: Also prefix uses of crt0.o and mcrt0.o with $(T).
26264         * config/i386/netware-libgcc.exp: Add __bswap?i2,
26265         __emultls_get_address, __emultls_register_common,
26266         __floatundi?f, and _Unwind_GetIPInfo.
26267         * config/i386/netware.c (gen_stdcall_or_fastcall_decoration):
26268         Sync with config/i386/winnt.c:gen_stdcall_or_fastcall_suffix().
26269         (gen_regparm_prefix): Likewise.
26270         (i386_nlm_encode_section_info): Sync with
26271         config/i386/winnt.c:i386_pe_encode_section_info().
26272         (i386_nlm_maybe_mangle_decl_assembler_name): New.
26273         i386_nlm_mangle_decl_assembler_name): New.
26274         (netware_override_options): New.
26275         * config/i386/netware.h (netware_override_options): Declare.
26276         (OVERRIDE_OPTIONS): Re-define to netware_override_options.
26277         (i386_nlm_mangle_decl_assembler_name): Declare.
26278         (TARGET_MANGLE_DECL_ASSEMBLER_NAME): Define.
26279
26280 2008-02-25  Ben Elliston  <bje@au.ibm.com>
26281
26282         PR other/32948
26283         * c-decl.c (grokdeclarator): Remove unused local variables
26284         `typedef_type' and `type_as_written'.
26285         * bb-reorder.c
26286         (find_rarely_executed_basic_blocks_and_crossing_edges): Remove
26287         unused local variable `has_hot_blocks'.
26288         (fix_crossing_conditional_branches): Remove unused local variable
26289         `prev_bb'.
26290
26291 2008-02-25  Uros Bizjak  <ubizjak@gmail.com>
26292
26293         PR middle-end/19984
26294         * builtins.def (BUILT_IN_NAN): Define as c99 builtin
26295         using DEF_C99_BUILTIN.
26296         (BUILT_IN_NANF): Ditto.
26297         (BUILT_IN_NANL): Ditto.
26298
26299 2008-02-25  Ayal Zaks  <zaks@il.ibm.com>
26300             Revital Eres  <eres@il.ibm.com>
26301
26302         * modulo-sched.c (calculate_must_precede_follow): Address TODO
26303         regarding the order of two dependent insns in the same row.
26304
26305 2008-02-25  Eric Botcazou  <ebotcazou@adacore.com>
26306
26307         * stor-layout.c (layout_decl): Do not bump the alignment of a
26308         bit-field to more than byte alignment if it is packed.
26309
26310 2008-02-24  David Edelsohn  <edelsohn@gnu.org>
26311
26312         * config/rs6000/rs6000.c (processor_costs): Add cache costs for
26313         e300c2 and e300c3.
26314
26315 2008-02-24  Diego Novillo  <dnovillo@google.com>
26316
26317         http://gcc.gnu.org/ml/gcc-patches/2008-02/msg01094.html
26318
26319         PR 33738
26320         * tree-vrp.c (vrp_evaluate_conditional): With
26321         -Wtype-limits, emit a warning when comparing against a
26322         constant outside the natural range of OP0's type.
26323         * c.opt (Wtype-limits): Move ...
26324         * common.opt (Wtype-limits): ... here.
26325
26326 2008-02-24  Edmar Wienskoski  <edmar@freescale.com>
26327
26328         * config.gcc (powerpc*-*-*): Add new cores e300c2 and e300c3.
26329         * config/rs6000/e300c2c3.md: New file.
26330         * config/rs6000/rs6000.c (processor_costs): Add new costs for
26331         e300c2 and e300c3.
26332         (rs6000_override_options): Add e300c2 and e300c3 cases to
26333         processor_target_table. Do not allow usage of Altivec or Spe
26334         with e300 cores. Initialize rs6000_cost for e300c2 and e300c3.
26335         (rs6000_issue_rate): Set issue rate for e300c2 and e300c3.
26336         * config/rs6000/rs6000.h (processor_type): Add
26337         PROCESSOR_PPCE300C2 and PROCESSOR_PPCE300C3.
26338         (ASM_CPU_SPEC): Add e300c2 and e300c3.
26339         * config/rs6000/rs6000.md (define_attr "cpu"): Add ppce300c2
26340         and ppce300c3. Include e300c2c3.md.
26341
26342 2008-02-23  David Edelsohn  <edelsohn@gnu.org>
26343
26344         * config/rs6000/rs6000.h (CONSTANT_ALIGNMENT): Use STRICT_ALIGNMENT
26345         instead of TARGET_STRICT_ALIGN.
26346
26347 2008-02-23  Joseph Myers  <joseph@codesourcery.com>
26348
26349         * explow.c (memory_address): Assert that the generated address is
26350         valid.
26351
26352 2008-02-23  Francois-Xavier Coudert  <coudert@clipper.ens.fr>
26353
26354         PR target/25477
26355         * config/darwin-protos.h: Add darwin_patch_builtins prototype.
26356         * config/darwin-ppc-ldouble-patch.def: New file.
26357         * config/rs6000/darwin.h (SUBTARGET_INIT_BUILTINS): New macro.
26358         * config/rs6000/rs6000.c (rs6000_init_builtins): Call
26359         SUBTARGET_INIT_BUILTINS if defined.
26360         * config/darwin.c (darwin_patch_builtin, darwin_patch_builtins):
26361         New functions.
26362
26363 2008-02-23  Andrew Pinski  <andrew_pinski@playstation.sony.com>
26364
26365         PR rtl-opt/33512
26366         * simplify-rtx.c (simplify_binary_operation_1): Add simplification
26367         of (and X (ior (not X) Y) and (and (ior (not X) Y) X).
26368
26369 2008-02-23  Andrew Pinski  <andrew_pinski@playstation.sony.com>
26370
26371         PR pch/35027
26372         * c-pch.c (c_common_valid_pch): Make the "too short to be a PCH
26373         file" warning condtional on -Winvalid-PCH.
26374
26375 2008-02-23  Daniel Jacobowitz  <dan@codesourcery.com>
26376
26377         * expmed.c (extract_bit_field): Always use adjust_address for MEM.
26378
26379 2008-02-23  Uros Bizjak  <ubizjak@gmail.com>
26380
26381         PR target/22076
26382         PR target/34256
26383         * config/i386/mmx.md (*mov<mode>_internal_rex64): Use "!y" to
26384         prevent reload from using MMX registers.
26385         (*mov<mode>_internal): Ditto.
26386         (*movv2sf_internal_rex64): Ditto.
26387         (*movv2sf_internal): Ditto.
26388
26389 2008-02-23  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
26390
26391         PR documentation/31569
26392         * doc/install.texi2html: Use makeinfo --no-number-sections.
26393
26394 2008-02-22  Nathan Froyd  <froydnj@codesourcery.com>
26395
26396         * config/rs6000/rs6000.c (rs6000_legitimize_address): Check to
26397         ensure that we can address an entire entity > 8 bytes.  Don't
26398         generate reg+reg addressing for such data.
26399
26400 2008-02-22  Nathan Froyd  <froydnj@codesourcery.com>
26401
26402         * config/rs6000/rs6000.h (CONSTANT_ALIGNMENT): Don't overalign
26403         strings when optimizing for size, unless the target cares about
26404         alignment.
26405
26406 2008-02-22  Tom Tromey  <tromey@redhat.com>
26407
26408         * regclass.c (current_pass): Remove declaration.
26409
26410 2008-02-22  Anatoly Sokolov <aesok@post.ru>
26411
26412         * config/avr/libgcc.S (__RAMPZ__): Define.
26413         (__do_copy_data): Add for devices with 128KB code memory.
26414
26415 2008-02-22  Nathan Froyd  <froydnj@codesourcery.com>
26416
26417         * config/rs6000/linuxspe.h (SUBSUBTARGET_OVERRIDE_OPTIONS):
26418         Use spe_abi.
26419         * config/rs6000/eabispe.h (SUBSUBTARGET_OVERRIDE_OPTIONS): Likewise.
26420
26421 2008-02-22  Hans-Peter Nilsson  <hp@axis.com>
26422
26423         * config/cris/cris.h (REG_CLASS_FROM_LETTER): Recognize 'b' for
26424         GENNONACR_REGS.
26425
26426 2008-02-22  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
26427
26428         PR c/19999
26429         * c-typeck.c (build_binary_op): Warn about floating point
26430         comparisons if FLOAT_TYPE_P, not only for REAL_TYPE.
26431
26432 2008-02-21  Janis Johnson  <janis187@us.ibm.com>
26433
26434         PR target/34526
26435         * config/rs6000/rs6000.c (rs6000_altivec_abi): Clarify comment.
26436         (rs6000_explicit_options): Split abi into spe_abi and altivec_abi,
26437         add vrsave.
26438         (rs6000_override_options): Set altivec_abi as default, not override,
26439         for 64-bit GNU/Linux; for 32-bit GNU/Linux default to altivec_abi for
26440         TARGET_ALTIVEC; default to TARGET_ALTIVEC_VRSAVE when AltiVec ABI
26441         is used; use new member spe_abi.
26442         (rs6000_handle_option): Set rs6000_explicit_options.vrsave; use
26443         spe_abi and altivec_abi.
26444
26445 2008-02-22  Tomas Bily  <tbily@suse.cz>
26446
26447         * tree-vectorizer.c (vect_is_simple_reduction): Fix comment typo.
26448
26449 2008-02-21  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
26450
26451         PR bootstrap/35273
26452         * config.build (build_file_translate): Set to `CMD //c' only if
26453         it works.
26454         * Makefile.in (build_file_translate): Improve comment.
26455
26456 2008-02-21  Jan Hubicka  <jh@suse.cz>
26457
26458         * predict.def (PRED_TREE_OPCODE_POSITIVE, PRED_TREE_OPCODE_NONEQUAL,
26459         PRED_TREE_OPCODE_POSITIVE, PRED_TREE_OPCODE_NONEQUAL, PRED_CALL,
26460         PRED_TREE_EARLY_RETURN, PRED_NULL_RETURN): Update.
26461
26462 2008-02-21  Michael Matz  <matz@suse.de>
26463
26464         PR target/35264
26465         * config/i386/i386.c (ix86_expand_branch): Add missing breaks.
26466
26467 2008-02-21  Uros Bizjak  <ubizjak@gmail.com>
26468
26469         * config/i386/i386.md (mov<mode>cc): Macroize expander from movsfcc,
26470         movdfcc and movxfcc using X87MODEF mode iterator and SSE_FLOAT_MODE_P
26471         as insn constraint.
26472         * config/i386/sse.md (<sse>_movup<ssemodesuffixf2c>): Macroize insn
26473         from sse_movups adn sse2_movupd using SSEMODEF2P mode iterator and
26474         SSE_VEC_FLOAT_MODE_P as insn constraint.
26475         (<sse>_movmskp<ssemodesuffixf2c>): Ditto from similar patterns.
26476         (sse4a_movnt<mode>): Macroize insn from sse4a_movntsf and
26477         sse4a_movntdf using MODEF mode iterator.
26478         (sse4a_vmmovnt<mode>): Macroize insn form sse4a_vmmovntv2df and
26479         sse4a_vmmovntv4sf using SSEMODEF2P mode iterator.
26480         (sse4_1_blendp<ssemodesuffixf2c>): Ditto from similar patterns.
26481         (sse4_1_blendvp<ssemodesuffixf2c>): Ditto.
26482         (sse4_1_dpp<ssemodesuffixf2c>): Ditto.
26483         (sse4_1_roundp<ssemodesuffixf2c>): Ditto.
26484         (sse4_1_rounds<ssemodesuffixf2c>): Ditto.
26485
26486 2008-02-21  Richard Guenther  <rguenther@suse.de>
26487
26488         * tree.def (PAREN_EXPR): New tree code.
26489         * fold-const.c (fold_unary): Remove PAREN_EXPR around constants
26490         and PAREN_EXPR.
26491         * tree-pretty-print.c (dump_generic_node): Handle PAREN_EXPR.
26492         * expr.c (expand_expr_real_1): Likewise.
26493         * tree-inline.c (estimate_num_insns_1): Likewise.
26494         * tree-complex.c (expand_complex_move): Likewise.
26495         * tree-vectorizer.c (vect_is_simple_use): Treat PAREN_EXPR (x)
26496         as plain x.
26497
26498 2008-02-20  Kaz Kojima  <kkojima@gcc.gnu.org>
26499
26500         PR target/35225
26501         * config/sh/sh.c (find_barrier): Don't go past 'from' argument.
26502
26503 2008-02-20  Kaz Kojima  <kkojima@gcc.gnu.org>
26504
26505         PR target/35190
26506         * config/sh/sh.md (jump_compact): Disable for crossing jumps.
26507
26508         * config/sh/sh.c (find_barrier): Don't go past
26509         NOTE_INSN_SWITCH_TEXT_SECTIONS note.
26510
26511 2008-02-20  DJ Delorie  <dj@redhat.com>
26512
26513         * config/h8300/h8300.md (insv): Force source operand to be a register.
26514
26515         * config/h8300/h8300.c (h8300_expand_epilogue): Emit return insn
26516         as a jump, not as a plain insn.
26517
26518 2008-02-20  Seongbae Park <seongbae.park@gmail.com>
26519
26520         * doc/invoke.texi (Warning Options): Add new option
26521         -Wframe-larger-than=.
26522         (-Wframe-larger-than): Document.
26523
26524         * flags.h (warn_frame_larger_than, frame_larger_than_size):
26525         Add declarations for new option variables.
26526
26527         * final.c (final_start_function): Check the frame size
26528         before emission and issue a Wframe-larger-than warning.
26529
26530         * opts.c (warn_frame_larger_than, frame_larger_than_size):
26531         Add definitions for new option variables.
26532         (common_handle_option): Handle new option OPT_Wframe_larger_than_.
26533
26534         * common.opt (Wframe-larger-than=): New option.
26535
26536 2008-02-20  Uros Bizjak  <ubizjak@gmail.com>
26537
26538         * config/i386/sse.md (<sse>_vmmul<mode>3): Fix typo in asm template.
26539         (<sse>_div<mode>3): Ditto.
26540         (<sse>_vmdiv<mode>3): Ditto.
26541         (<sse>_vmsqrt<mode>2): Ditto.
26542         (*smax<mode>3): Ditto.
26543         (sse5_frcz<mode>2): Ditto.
26544         (sse5_vmfrcz<mode>2): Ditto.  Use TARGET_SSE5 instead of TARGET_ROUND
26545         as insn constraint.
26546
26547 2008-02-20  Richard Guenther  <rguenther@suse.de>
26548
26549         PR middle-end/35265
26550         * builtins.c (validate_arg): If we want an INTEGER_TYPE,
26551         be happy with INTEGRAL_TYPE_P.
26552
26553 2008-02-20  Richard Guenther  <rguenther@suse.de>
26554
26555         * fold-const.c (split_tree): Associate floatig-point expressions
26556         if flag_associative_math is set.
26557
26558 2008-02-20  Richard Guenther  <rguenther@suse.de>
26559
26560         * tree.h (fold_real_zero_addition_p): Declare.
26561         * fold-const.c (fold_real_zero_addition_p): Export.
26562         * tree-ssa-reassoc.c (eliminate_using_constants): Also handle
26563         floating-point operations with zero and one.
26564
26565 2008-02-20  Paolo Bonzini  <bonzini@gnu.org>
26566
26567         * doc/install.texi: Correct references to CFLAGS, replacing them
26568         with BOOT_CFLAGS.  Document flags used during bootstrap for
26569         target libraries.
26570
26571 2008-02-20  Uros Bizjak  <ubizjak@gmail.com>
26572
26573         * config/i386/i386.h (SSE_VEC_FLOAT_MODE_P): New define.
26574         * config/i386/i386.md (*sse_setcc<mode>): Macroize from *sse_setccsf
26575         and *sse_setccdf using MODEF mode iterator and SSE_FLOAT_MODE_P as
26576         insn constraint.
26577         (smin<mode>3): Ditto from similar patterns.
26578         (smax<mode>3): Ditto.
26579         (*ieee_smin<mode>3): Ditto.
26580         (*ieee_smax<mode>3): Ditto.
26581         * config/i386/sse.md (sse): New mode attribute.
26582         (mov<mode>): Macroize expander from movv4sf and movv2df using
26583         SSEMODEF2P mode iterator.
26584         (<sse>_movnt<mode>): Ditto from similar patterns. Use
26585         SSE_VEC_FLOAT_MODE_P as insn constraint.
26586         (storent<mode>): Ditto.
26587         (storent<mode>): Macroize expander from storentsf and storentdf using
26588         MODEF mode iterator.
26589         (neg<mode>2): Macroize from negv4sf2 and negv2df2 using SSEMODEF2P
26590         mode iterator and SSE_VEC_FLOAT_MODE_P as insn constraint.
26591         (abs<mode>2): Ditto from similar patterns.
26592         (add<mode>3, *add<mode>3, <sse>_vmadd<mode>3): Ditto.
26593         (sub<mode>3, *sub<mode>3, <sse>_vmsub<mode>3): Ditto.
26594         (<sse>_div<mode>3, <sse>_vmdiv<mode>3): Ditto.
26595         (<sse>_vmsqrt<mode>2): Ditto.
26596         (smin<mode>3, *smin<mode>3_finite, *smin<mode>3)
26597         (<sse>_vmsmin<mode>3, *ieee_smin<mode>3): Ditto.
26598         (smax<mode>3, *smax<mode>3_finite, *smax<mode>3)
26599         (<sse>_vmsmax<mode>3, *ieee_smax<mode>3): Ditto.
26600         (<sse>_maskcmp<mode>3): Macroize from sse_maskcmpv4sf3,
26601         sse_maskcmpsf3, sse2_maskcmpv2df3 and sse2_maskcmpdf3 using SSEMODEF4
26602         mode iterator. Use SSE_FLOAT_MODE_P with SSE_VEC_FLOAT_MODE_P as
26603         insn constraint.
26604         (<sse>_comi): Macroize from sse_comi and sse2_comi using MODEF mode
26605         iterator and SSE_FLOAT_MODE_P as insn constraint.
26606         (<sse>_ucomi): Ditto from similar patterns.
26607         (<sse>_vmmaskcmp<mode>3): Macroize from sse_vmmaskcmpv4sf3 and
26608         sse2_vmmaskcmpv2df3 using SSEMODEF2P mode iterator and
26609         SSE_VEC_FLOAT_MODE_P as insn constraint.
26610         (vcond<mode>): Ditto from similar patterns.
26611         (and<mode>3, *and<mode>3): Ditto.
26612         (<sse>_nand<mode>3): Ditto.
26613         (ior<mode>3, *ior<mode>3): Ditto.
26614         (xor<mode>3, *xor<mode>3): Ditto.
26615         (*and<mode>3): Macroize from *andsf3 and *anddf3 using MODEF mode
26616         iterator and SSE_FLOAT_MODE_P as insn constraint.
26617         (*nand<mode>3): Ditto from similar patterns.
26618         (*ior<mode>3): Ditto.
26619         (*xor<mode>3): Ditto.
26620
26621 2008-02-20  Ira Rosen  <irar@il.ibm.com>
26622
26623         * config/spu/spu.md (vec_unpacku_hi_v8hi, vec_unpacku_lo_v8hi,
26624         vec_unpacks_hi_v8hi, vec_unpacks_lo_v8hi, vec_unpacku_hi_v16qi,
26625         vec_unpacku_lo_v16qi, vec_unpacks_lo_v16qi): Implement.
26626
26627 2008-02-19  Jan Hubicka  <jh@suse.cz>
26628
26629         * predict.c (tree_bb_level_predictions): Remove variable next
26630         mistakely introduced by previous commit.
26631
26632 2008-02-19  Jan Hubicka  <jh@suse.cz>
26633
26634         * predict.c (predict_paths_leading_to): Rewrite.
26635         (predict_paths_for_bb): New.
26636         (tree_bb_level_predictions): Update call of predict_paths_leading_to.
26637
26638 2008-02-19  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
26639
26640         PR bootstrap/35218
26641         * Makefile.in (build_file_translate): New.
26642         (gcc-vers.texi): Use it for translating $(abs_srcdir).
26643         * config.build (build_file_translate): Set to `CMD //c' on MinGW.
26644         * configure.ac (build_file_translate): Substitute it.
26645         * configure: Regenerate.
26646
26647 2008-02-19  Jan Hubicka  <jh@suse.cz>
26648
26649         PR rtl-optimization/34408
26650         * see.c (see_def_extension_not_merged): Copy subreg so we don't have
26651         invalid sharing.
26652
26653 2008-02-19  Jan Hubicka  <jh@suse.cz>
26654
26655         PR middle-end/28779
26656         * tree-inline.c (estimate_num_insns_1): Fix counting of cost of
26657         call_expr.
26658
26659 2008-02-19  H.J. Lu  <hongjiu.lu@intel.com>
26660
26661         PR Ada/35186
26662         * config/i386/i386-modes.def: Revert the last DI alignment
26663         change until Ada people can look into it.
26664
26665 2008-02-19  Nick Clifton  <nickc@redhat.com>
26666
26667         * opts.c (print_specific_help): Fix typo in --help text.
26668
26669 2008-02-19  Jakub Jelinek  <jakub@redhat.com>
26670
26671         PR target/35239
26672         * config/i386/cpuid.h (__cpuid, __get_cpuid_max): Use special
26673         32-bit inline asm without asm alternatives for host GCC < 3.0.
26674
26675 2008-02-19  Richard Guenther  <rguenther@suse.de>
26676
26677         PR tree-optimization/34989
26678         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Re-structure.
26679         Allow propagation to INDIRECT_REF if we can simplify only.
26680
26681 2008-02-19  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
26682
26683         * c-common.c (warn_for_collisions_1): Use appropriate option when
26684         warning.
26685
26686 2008-02-19  Nick Clifton  <nickc@redhat.com>
26687
26688         PR other/31349
26689         * opts.c (undocumented_msg): Leave blank unless checking is enabled.
26690         (handle_options): Fix indentation.
26691         (print_filtered_help): If no language-specific options were
26692         displayed tell the user how to list all the options supported by
26693         the language's front-end.
26694         (print_specific_help): Fix indentation and remove duplicate line.
26695         (common_handle_option): Handle the -v option.
26696         For --help enable the display of undocumented options if the -v
26697         switch has been included on the command line.
26698         For --help= check for overlaps in the arguments between the option
26699         classes and the language names and issue a warning when they
26700         cannot be disambiguated.
26701         * c.opt (v): Pass on to the common option handler.
26702
26703 2008-02-19  Revital Eres  <eres@il.ibm.com>
26704
26705         * modulo-sched.c (sms_schedule): Change dump message when
26706         create_ddg function fails.
26707         (try_scheduling_node_in_cycle): Rename row to cycle.
26708         (print_partial_schedule): Rename CYCLE to ROW.
26709
26710 2008-02-19  Christian Bruel  <christian.bruel@st.com>
26711             Zdenek Dvorak  <ook@ucw.cz>
26712
26713         * tree-ssa-loop-ivopts.c (may_be_unaligned_p): Check step alignment.
26714
26715 2008-02-19  Uros Bizjak  <ubizjak@gmail.com>
26716
26717         PR target/33555
26718         * config/i386/i386.md (*x86_movsicc_0_m1_se): New insn pattern.
26719         (*x86_movdicc_0_m1_se): Ditto.
26720
26721 2008-02-19  Uros Bizjak  <ubizjak@gmail.com>
26722
26723         * config/i386/sfp-machine.h (__gcc_CMPtype): New typedef.
26724         (CMPtype): Define as __gcc_CMPtype.
26725         * config/rs6000/sfp-machine.h (__gcc_CMPtype): New typedef.
26726         (CMPtype): Define as __gcc_CMPtype.
26727
26728 2008-02-19  Hans-Peter Nilsson  <hp@axis.com>
26729
26730         Support valgrind 3.3 for --enable-checking=valgrind.
26731         * system.h: Consolidate ENABLE_VALGRIND_CHECKING-dependent defines
26732         here.
26733         [!VALGRIND_MAKE_MEM_NOACCESS]: Define as VALGRIND_MAKE_NOACCESS.
26734         [!VALGRIND_MAKE_MEM_DEFINED]: Define as VALGRIND_MAKE_READABLE.
26735         [!VALGRIND_MAKE_MEM_UNDEFINED]: Define as VALGRIND_MAKE_WRITABLE.
26736         * ggc-common.c: Remove ENABLE_VALGRIND_CHECKING-dependent defines.
26737         Replace use of VALGRIND_MAKE_READABLE, VALGRIND_MAKE_WRITABLE, and
26738         VALGRIND_MAKE_NOACCESS with VALGRIND_MAKE_MEM_DEFINED,
26739         VALGRIND_MAKE_MEM_UNDEFINED, and VALGRIND_MAKE_MEM_NOACCESS
26740         respectively.
26741         * ggc-zone.c: Similar.
26742         * ggc-page.c: Similar.
26743
26744 2008-02-19  Paul Brook  <paul@codesourcery.com>
26745
26746         PR target/35071
26747         * config/arm/ieee754-df.S: Fix do_it typo.
26748         * config/arm/ieee754-sf.S: Fix do_it typo.
26749
26750 2008-02-18  H.J. Lu  <hongjiu.lu@intel.com>
26751
26752         PR target/35189
26753         * config/i386/i386.c (OPTION_MASK_ISA_MMX_SET): New.
26754         (OPTION_MASK_ISA_3DNOW_SET): Likewise.
26755         (OPTION_MASK_ISA_SSE_SET): Likewise.
26756         (OPTION_MASK_ISA_SSE2_SET): Likewise.
26757         (OPTION_MASK_ISA_SSE3_SET): Likewise.
26758         (OPTION_MASK_ISA_SSSE3_SET): Likewise.
26759         (OPTION_MASK_ISA_SSE4_1_SET): Likewise.
26760         (OPTION_MASK_ISA_SSE4_2_SET): Likewise.
26761         (OPTION_MASK_ISA_SSE4_SET): Likewise.
26762         (OPTION_MASK_ISA_SSE4A_SET): Likewise.
26763         (OPTION_MASK_ISA_SSE5_SET): Likewise.
26764         (OPTION_MASK_ISA_3DNOW_A_UNSET): Likewise.
26765         (OPTION_MASK_ISA_MMX_UNSET): Updated.
26766         (OPTION_MASK_ISA_3DNOW_UNSET): Updated.
26767         (OPTION_MASK_ISA_SSE_UNSET): Likewise.
26768         (OPTION_MASK_ISA_SSE3_UNSET): Likewise.
26769         (OPTION_MASK_ISA_SSSE3_UNSET): Likewise.
26770         (OPTION_MASK_ISA_SSE4_1_UNSET): Likewise.
26771         (OPTION_MASK_ISA_SSE4_2_UNSET): Likewise.
26772         (OPTION_MASK_ISA_SSE4A_UNSET): Likewise.
26773         (OPTION_MASK_ISA_SSE5_UNSET): Likewise.
26774         (OPTION_MASK_ISA_SSE4): Removed.
26775         (ix86_handle_option): Turn on bits in ix86_isa_flags and
26776         ix86_isa_flags_explicit with OPTION_MASK_ISA_XXX_SET for -mXXX.
26777         (override_options): Don't turn on implied SSE/MMX bits in
26778         ix86_isa_flags.
26779
26780 2008-02-18  H.J. Lu  <hongjiu.lu@intel.com>
26781
26782         * config/i386/i386-modes.def: Use 4 byte alignment on DI for
26783         32bit host.
26784
26785 2008-02-18  Joey Ye  <joey.ye@intel.com>
26786
26787         PR middle-end/34921
26788         * tree-nested.c (insert_field_into_struct): Set type alignment
26789         to field alignment if the former is less than the latter.
26790
26791 2008-02-18  Jakub Jelinek  <jakub@redhat.com>
26792
26793         * BASE-VER: Set to 4.4.0.
26794
26795 2008-02-17 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
26796
26797         * doc/c-tree.texi: Use @dots{} and @enddots{} where appropriate.
26798         * doc/cfg.texi: Likewise.
26799         * doc/extend.texi: Likewise.
26800         * doc/gty.texi: Likewise.
26801         * doc/invoke.texi: Likewise.
26802         * doc/loop.texi: Likewise.
26803         * doc/md.texi: Likewise.
26804         * doc/passes.texi: Likewise.
26805         * doc/rtl.texi: Likewise.
26806         * doc/sourcebuild.texi: Likewise.
26807         * doc/tm.texi: Likewise.
26808         * doc/tree-ssa.texi: Likewise.
26809
26810 2008-02-17  Richard Guenther  <rguenther@suse.de>
26811
26812         PR middle-end/35227
26813         * tree-complex.c (init_parameter_lattice_values): Handle parameters
26814         without default definition.
26815
26816 2008-02-17  Richard Guenther  <rguenther@suse.de>
26817
26818         PR tree-optimization/35231
26819         * tree-vrp.c (register_edge_assert_for): Do not assume A == 0
26820         if A | B != 1.
26821
26822 2008-02-17  Uros Bizjak  <ubizjak@gmail.com>
26823
26824         Revert:
26825         2008-02-15  Uros Bizjak  <ubizjak@gmail.com>
26826         * config/i386/sfp-machine.h (CMPtype): Define as typedef using
26827         libgcc_cmp_return mode.
26828
26829 2008-02-16  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
26830
26831         PR c/28368
26832         * doc/invoke.texi (-std): Clarify description of -std= and -ansi.
26833
26834 2008-02-16  Ralf Corsepius  <ralf.corsepius@rtems.org>
26835
26836         * config/m68k/t-rtems (M68K_MLIB_CPU): Add 5208, 5307, 5407, 5475
26837         multilibs.
26838
26839 2008-02-16  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
26840
26841         * doc/c-tree.texi: Use `@.' where appropriate.
26842         * doc/extend.texi: Likewise.
26843         * doc/install.texi: Likewise.
26844         * doc/invoke.texi: Likewise.
26845         * doc/loop.texi: Likewise.
26846         * doc/makefile.texi: Likewise.
26847         * doc/md.texi: Likewise.
26848         * doc/passes.texi: Likewise.
26849         * doc/standards.texi: Likewise.
26850         * doc/tm.texi: Likewise.
26851
26852 2008-02-15  Jakub Jelinek  <jakub@redhat.com>
26853
26854         PR middle-end/35196
26855         * omp-low.c (expand_omp_for_generic): Don't initialize fd->v
26856         in entry_bb.
26857         (expand_omp_for_static_nochunk): Initialize fd->v in seq_start_bb
26858         rather than in entry_bb.
26859
26860 2008-02-15  Uros Bizjak  <ubizjak@gmail.com>
26861
26862         * config/i386/sfp-machine.h (CMPtype): Define as typedef using
26863         libgcc_cmp_return mode.
26864
26865 2008-02-15  Jakub Jelinek  <jakub@redhat.com>
26866
26867         PR middle-end/35130
26868         * tree-nested.c (convert_call_expr): Put FRAME.* vars into
26869         OMP_CLAUSE_SHARED rather than OMP_CLAUSE_FIRSTPRIVATE clause.
26870
26871 2008-02-15  Richard Guenther  <rguenther@suse.de>
26872             Zdenek Dvorak  <ook@ucw.cz>
26873
26874         PR tree-optimization/35164
26875         * tree-flow.h (stmt_references_abnormal_ssa_name): Declare.
26876         * tree-dfa.c (stmt_references_abnormal_ssa_name): New function.
26877         * tree-ssa-forwprop.c (tree_ssa_forward_propagate_single_use_vars):
26878         Only propagate addresses which do not have abnormal SSA_NAMEs
26879         in their operands.
26880
26881 2008-02-15  Joseph Myers  <joseph@codesourcery.com>
26882
26883         PR target/35088
26884         * config/m68k/m68k.h (DWARF_CIE_DATA_ALIGNMENT): Define.
26885
26886 2008-02-15  Jan Hubicka  <jh@suse.cz>
26887
26888         PR middle-end/35149
26889         * ipa.c (cgraph_remove_unreachable_nodes): Clear local.inlinable flag.
26890
26891 2008-02-15  Uros Bizjak  <ubizjak@gmail.com>
26892
26893         PR middle-end/34621
26894         * function.c (pad_to_arg_alignment): Remove test for STACK_BOUNDARY
26895         when calculating alignment_pad.
26896
26897 2008-02-15  Uros Bizjak  <ubizjak@gmail.com>
26898
26899         * config/i386/i386.h (CLEAR_RATIO): Use MIN macro.
26900         (WIDEST_HARDWARE_FP_SIZE): Use LONG_DOUBLE_TYPE_SIZE define.
26901         * config/i386/darwin.h (PREFERRED_STACK_BOUNDARY): Use MAX macro
26902         and STACK_BOUNDARY define.
26903
26904 2008-02-14  Danny Smith  <dannysmith@users.sourceforge.net>
26905
26906         PR preprocessor/35061
26907         * c-pragma.c (handle_pragma_pop_macro): Check that
26908         pushed_macro_table has been allocated.
26909
26910 2008-02-14  Eric Botcazou  <ebotcazou@adacore.com>
26911
26912         PR middle-end/35136
26913         * gimplify.c (force_gimple_operand_bsi): Revert 2008-02-12 change.
26914         (force_gimple_operand): Likewise.
26915         * tree-ssa-loop-ivopts.c (may_be_nonaddressable_p): Add new cases
26916         for TARGET_MEM_REF and CONVERT_EXPR/NON_LVALUE_EXPR/NOP_EXPR.
26917         Also recurse on the operand for regular VIEW_CONVERT_EXPRs.
26918         (find_interesting_uses_address): Check addressability and alignment
26919         of the base expression only after substituting bases of IVs into it.
26920
26921 2008-02-14  Michael Matz  <matz@suse.de>
26922
26923         PR target/34930
26924         * function.c (instantiate_virtual_regs_in_insn): Reload address
26925         before falling back to reloading the whole operand.
26926
26927 2008-02-14  Andreas Krebbel  <krebbel1@de.ibm.com>
26928
26929         * config/s390/s390.c (s390_mainpool_start): Emit the pool
26930         before the first section switch note.
26931
26932 2008-02-14 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
26933
26934         * doc/bugreport.texi: Update copyright years.
26935         * doc/c-tree.texi: Likewise.
26936         * doc/cfg.texi: Likewise.
26937         * doc/cpp.texi: Likewise.
26938         * doc/cppinternals.texi: Likewise.
26939         * doc/fragments.texi: Likewise.
26940         * doc/frontends.texi: Likewise.
26941         * doc/gcc.texi: Likewise.
26942         * doc/gty.texi: Likewise.
26943         * doc/hostconfig.texi: Likewise.
26944         * doc/implement-c.texi: Likewise.
26945         * doc/libgcc.texi: Likewise.
26946         * doc/loop.texi: Likewise.
26947         * doc/makefile.texi: Likewise.
26948         * doc/options.texi: Likewise.
26949         * doc/passes.texi: Likewise.
26950         * doc/rtl.texi: Likewise.
26951         * doc/sourcebuild.texi: Likewise.
26952         * doc/standards.texi: Likewise.
26953         * doc/tree-ssa.texi: Likewise.
26954         * doc/trouble.texi: Likewise.
26955
26956         * doc/extend.texi: Use @: or add comma where appropriate.
26957         * doc/invoke.texi: Likewise.
26958         * doc/tm.texi: Likewise.
26959
26960 2008-02-14  Alan Modra  <amodra@bigpond.net.au>
26961
26962         PR target/34393
26963         * config/rs6000/rs6000.md (restore_stack_block): Force operands[1]
26964         to a reg.
26965
26966 2008-02-14  Jesper Nilsson  <jesper.nilsson@axis.com>
26967
26968         * doc/md.texi (clz, ctz): Add reference.
26969         * doc/rtl.texi (clz, ctz): Likewise.
26970
26971 2008-02-13  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
26972
26973         PR other/35148
26974         * Makefile.in (gcc-vers.texi): Use abs_srcdir for the value of
26975         srcdir.
26976
26977 2008-02-13  Andreas Krebbel  <krebbel1@de.ibm.com>
26978
26979         * config/s390/s390.c (struct constant_pool): New field
26980         emit_pool_after added.
26981         (s390_mainpool_start): Set the emit_pool_after flag according
26982         to the section switch notes.
26983         (s390_mainpool_finish): Consider emit_pool_after when emitting
26984         the literal pool at the end of the function.
26985         (s390_chunkify_start): Force literal pool splits at section
26986         switch notes.
26987
26988 2008-02-13  Michael Matz  <matz@suse.de>
26989
26990         PR debug/35065
26991         * var-tracking.c (clobber_variable_part): Correctly traverse the
26992         list.
26993
26994 2008-02-13  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
26995
26996         PR 29673
26997         * doc/invoke.texi (Debugging Options): Remove -fdump-tree-inlined.
26998         Add -fdump-ipa-inline.
26999         * tree-dump.c (dump_files): Remove tree-inlined dump.
27000         * tree-pass.h (tree_dump_index): Remove TDI_inlined.
27001
27002 2008-02-12  Richard Guenther  <rguenther@suse.de>
27003
27004         PR tree-optimization/35171
27005         * tree-vect-patterns.c (vect_recog_dot_prod_pattern): Deal with
27006         default defs.
27007
27008 2008-02-12  Richard Guenther  <rguenther@suse.de>
27009
27010         PR middle-end/35163
27011         * fold-const.c (fold_widened_comparison): Use get_unwidened in
27012         value-preserving mode.  Disallow final truncation.
27013
27014 2008-02-12  Eric Botcazou  <ebotcazou@adacore.com>
27015
27016         PR middle-end/35136
27017         * gimplify.c (force_gimple_operand_bsi): Move SSA renaming
27018         code from here to...
27019         (force_gimple_operand): ...here.
27020
27021 2008-02-12  Jakub Jelinek  <jakub@redhat.com>
27022
27023         PR c++/35144
27024         * tree-sra.c (sra_build_assignment): fold_convert SRC if copying
27025         non-compatible pointers.
27026         (generate_element_copy): If SRC and DST are RECORD_TYPEs with
27027         different FIELD_DECLs, try harder by comparing field offsets, sizes
27028         and types.
27029
27030         PR inline-asm/35160
27031         * function.c (match_asm_constraints_1): Don't replace the same input
27032         multiple times.
27033
27034 2008-02-12  Anatoly Sokolov <aesok@post.ru>
27035
27036         * config/avr/avr.h (AVR_HAVE_RAMPZ): Define.
27037         * config/avr/avr.c (expand_prologue): Save RAMPZ register.
27038         (expand_epilogue): Restore RAMPZ register.
27039         * config/avr/avr.md (RAMPZ_ADDR): New constant.
27040
27041 2008-02-11  Kai Tietz  <kai.tietz@onevision.com>
27042
27043         * config/i386/cygwin.asm: (__alloca): Correct calling
27044         convention and alignment.
27045         (__chkstk): Force 8 byte stack alignment.
27046
27047 2008-02-11  Uros Bizjak  <ubizjak@gmail.com>
27048             Richard Guenther  <rguenther@suse.de>
27049
27050         PR tree-optimization/33992
27051         * tree-ssa-loop-im.c (rewrite_bittest): Fixup the type of
27052         the zero we compare against.
27053
27054 2008-02-10  Danny Smith  <dannysmith@users.sourceforge.net>
27055
27056         PR libfortran/35063
27057         * gthr-win32.h (__gthread_mutex_destroy_function): New function
27058         to CloseHandle after unlocking to prevent accumulation of handle
27059         count.
27060
27061 2008-02-09  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
27062
27063         PR middle_end/34150
27064         * pa.c (legitimize_pic_address): Add REG_EQUAL note on sets with a
27065         pic_label_operand source.  Similarly, add a REG_LABEL_OPERAND note
27066         and update LABEL_NUSES during and after reload.
27067
27068 2008-02-08  Steven Bosscher  <stevenb.gcc@gmail.com>
27069
27070         PR middle-end/34627
27071         * combine.c (simplify_if_then_else): Make sure the comparison is
27072         against const0_rtx when simplifying to (abs x) or (neg (abs X)).
27073
27074 2008-02-08  Richard Sandiford  <rsandifo@nildram.co.uk>
27075
27076         PR bootstrap/35051
27077         * double-int.h: Don't include gmp.h for GENERATOR_FILEs.
27078         (mpz_set_double_int, mpz_get_double_int): Hide from GENERATOR_FILEs.
27079         * real.h: Don't include gmp.h or mpfr.h for GENERATOR_FILEs.
27080         (real_from_mpfr, mpfr_from_real): Hide from GENERATOR_FILEs.
27081         * tree.h (get_type_static_bounds): Likewise.
27082
27083 2008-02-08  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
27084
27085         * doc/invoke.texi (Option Summary, C++ Dialect Options)
27086         (Objective-C and Objective-C++ Dialect Options, Warning Options):
27087         Make -Wfoo language annotations match what the compiler outputs.
27088
27089 2008-02-08  Sa Liu  <saliu@de.ibm.com>
27090
27091         * config/spu/spu-builtins.def: Fixed wrong parameter type in spu
27092         intrinsics spu_convts, spu_convtu, spu_convtf.
27093
27094 2008-02-08  Hans-Peter Nilsson  <hp@axis.com>
27095
27096         * doc/extend.texi (Function Attributes) <noinline>: Mention
27097         asm ("") as method to keep calls.
27098
27099 2008-02-07  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
27100
27101         PR other/32754
27102         * doc/options.texi (Options): Replace references to opts.sh with
27103         optc-gen.awk.
27104         * opts-common.c: Likewise.
27105         * optc-gen.awk: Likewise.
27106
27107 2008-02-07  Andreas Krebbel  <krebbel1@de.ibm.com>
27108
27109         * config/s390/s390.h (FUNCTION_ARG_REGNO_P): Fix fprs for 64 bit.
27110
27111 2008-02-07  Richard Henderson  <rth@redhat.com>
27112
27113         PR rtl-opt/33410
27114         * config/alpha/alpha.c (alpha_emit_xfloating_compare): Use an
27115         EXPR_LIST for the REG_EQUAL instead of a comparison with a
27116         funny mode.
27117
27118 2008-02-07  Uros Bizjak  <ubizjak@gmail.com>
27119
27120         PR tree-optimization/35085
27121         * tree-ssa-reassoc.c (rewrite_expr_tree): Enable destructive update
27122         for operand entry oe2 in addition to operand entry oe3 in order to
27123         expose more opportunities for vectorizer sum reduction.
27124
27125 2008-02-06  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
27126
27127         PR other/35107
27128         * Makefile.in (LIBS): Remove $(GMPLIBS).
27129         (cc1-dummy, cc1): Add $(GMPLIBS).
27130
27131 2008-02-06  Jan Hubicka  <jh@suse.cz>
27132
27133         PR target/23322
27134         * i386.md (moddf_integer): Do not produce partial memory stalls for
27135         targets where it hurts.
27136
27137 2008-02-06  Uros Bizjak  <ubizjak@gmail.com>
27138
27139         PR target/35083
27140         * optabs.c (expand_float): Do not check for decimal modes when
27141         expanding unsigned integer through signed conversion.
27142
27143 2008-02-06  Nick Clifton  <nickc@redhat.com>
27144
27145         * config/stormy16/stormy16.md (eqbranchsi): Replace a match_dup
27146         inside the clobber with a match_operand and duplicated operand
27147         number in the constraint.
27148         (ineqbranchsi): Delete redundant comment.
27149
27150 2008-02-06  Ralf Corsepius  <ralf.corsepius@rtems.org>
27151
27152         * config/arm/rtems-elf.h (TARGET_OS_CPP_BUILTINS): Add
27153         builtin_define ("__USE_INIT_FINI__").
27154         * config/h8300/t-rtems (MULTILIB_OPTION,MULTILIB_DIRNAMES): Add
27155         -msx multilibs.
27156         * gthr-rtems.h: Remove __GTHREAD_MUTEX_INIT.
27157
27158 2008-02-06  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
27159
27160         PR documentation/30330
27161         * doc/invoke.texi (C++ Dialect Options)
27162         (Objective-C and Objective-C++ Dialect Options, Warning Options):
27163         For each warning option -Wfoo that allows -Wno-foo, ensure both
27164         -Wfoo and -Wno-foo are listed in the option index.  Fix index
27165         entry of -Wswitch-default, index -Wnormalized= including the
27166         `=', and -Wlarger-than-@var{len} including @var{len}.
27167
27168 2008-02-05  Uros Bizjak  <ubizjak@gmail.com>
27169
27170         * config/i386/i386.md (floatunssisf2): Use
27171         ix86_expand_convert_uns_sisf_sse also for TARGET_SSE.
27172         (floatunssi<mode>2): Rename from floatunssisf2 and floatunssidf2.
27173         Macroize expander using MODEF mode iterator.
27174
27175 2008-02-05  Diego Novillo  <dnovillo@google.com>
27176
27177         http://gcc.gnu.org/ml/gcc-patches/2008-02/msg00140.html
27178
27179         PR 33738
27180         * tree-vrp.c (vrp_evaluate_conditional): Revert fix for PR 33738.
27181
27182 2008-02-05  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
27183
27184         PR other/35070
27185         * toplev.c (print_version): Honor `indent' for GMP/MPFR warnings.
27186
27187 2008-02-05  H.J. Lu  <hongjiu.lu@intel.com>
27188
27189         PR target/35084
27190         * config/i386/i386.c (ix86_function_sseregparm): Add an arg
27191         to indicate if a message should be generated.
27192         (init_cumulative_args): Updated.
27193         (function_value_32): Likewise.
27194
27195 2008-02-05  Joseph Myers  <joseph@codesourcery.com>
27196
27197         * doc/include/texinfo.tex: Update to version 2008-02-04.16.
27198
27199 2008-02-05  Uros Bizjak  <ubizjak@gmail.com>
27200
27201         PR target/35083
27202         * config/i386/i386.md (floatunsisf2): Enable for TARGET_SSE_MATH only.
27203         Call ix86_expand_convert_uns_sisf_sse for TARGET_SSE2.
27204
27205 2008-02-04  Diego Novillo  <dnovillo@google.com>
27206
27207         http://gcc.gnu.org/ml/gcc-patches/2008-02/msg00110.html
27208
27209         PR 33738
27210         * tree-vrp.c (vrp_evaluate_conditional): With
27211         -Wtype-limits, emit a warning when comparing against a
27212         constant outside the natural range of OP0's type.
27213
27214 2008-02-04  Richard Guenther  <rguenther@suse.de>
27215
27216         PR middle-end/33631
27217         * expr.c (count_type_elements): Give for unions instead of
27218         guessing.
27219
27220 2008-02-04  Richard Guenther  <rguenther@suse.de>
27221
27222         PR middle-end/35043
27223         * gimplify.c (gimplify_init_ctor_eval): Convert array indices
27224         to TYPE_DOMAINs base type instead of using bitsizetype here.
27225
27226 2008-02-03  Jason Merrill  <jason@redhat.com>
27227
27228         * print-tree.c (print_node) [CONSTRUCTOR]: Print elements.
27229
27230 2008-02-04  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
27231
27232         PR other/29972
27233         * doc/invoke.texi (C++ Dialect Options, Optimize Options)
27234         (HPPA Options, i386 and x86-64 Options, IA-64 Options)
27235         (RS/6000 and PowerPC Options): Fix typos and markup.
27236         * doc/passes.texi (Tree-SSA passes): Likewise.
27237
27238 2008-02-02  Michael Matz  <matz@suse.de>
27239
27240         PR target/35045
27241         * postreload-gcse.c (record_last_reg_set_info_regno): Renamed
27242         from record_last_reg_set_info.
27243         (record_last_reg_set_info): Take an RTX argument, iterate over all
27244         constituent hardregs.
27245         (record_last_set_info, record_opr_changes): Change calls to
27246         new signature or to record_last_reg_set_info_regno.
27247
27248 2008-02-02  Gerald Pfeifer  <gerald@pfeifer.com>
27249
27250         * doc/extend.texi (X86 Built-in Functions): Fix grammar.
27251
27252 2008-02-01  Hans-Peter Nilsson  <hp@axis.com>
27253
27254         PR rtl-optimization/34773
27255         * reg-notes.def (EQUAL): Mention significance of combination of
27256         REG_EQUAL and REG_RETVAL.
27257         * fwprop.c (try_fwprop_subst): Don't add REG_EQUAL to an
27258         insn that has a REG_RETVAL.
27259
27260 2008-02-01  Roger Sayle  <roger@eyesopen.com>
27261
27262         PR bootstrap/33781
27263         * configure.ac (--enable-fixed-point): Disable unless explicitly
27264         requested on IRIX.
27265         * configure: Regenerate.
27266
27267 2008-02-01  Richard Guenther  <rguenther@suse.de>
27268
27269         PR other/35042
27270         * invoke.texi (-finline-limit): Remove no longer true parts
27271         of the documentation.  Note that there is no default value.
27272
27273 2008-02-01  Andrew Pinski  <pinskia@gmail.com>
27274             Mark Mitchell  <mark@codesourcery.com>
27275             Ben Elliston  <bje@au.ibm.com>
27276
27277         PR c/29326
27278         * doc/extend.texi (Other Builtins): Document.
27279
27280 2008-01-31  Tom Browder <tom.browder@gmail.com>
27281
27282         * doc/c-tree.texi (Types): Fix grammar.
27283         (Expression trees): Ditto.
27284         * doc/passes.texi (Tree-SSA passes): Ditto.
27285
27286         * doc/configterms.texi (Configure Terms): Fix typo.
27287         * doc/cpp.texi (Common Predefined Macros): Ditto.
27288         * doc/md.texi (Machine Constraints): Ditto.
27289
27290         * doc/makefile.texi (Makefile): Add comma.
27291
27292 2008-01-31  Tom Browder  <tom.browder@gmail.com>
27293             Gerald Pfeifer  <gerald@pfeifer.com>
27294
27295         * doc/sourcebuild.texi (Front End): Remove references to CVS
27296         and CVSROOT/modules.
27297         (Texinfo Manuals): Replace reference to CVS by one to SVN.
27298         (Back End): Remove reference to CVS.
27299
27300 2008-01-31  Richard Sandiford  <rsandifo@nildram.co.uk>
27301
27302         PR target/34900
27303         * config/mips/mips.c (gen_load_const_gp): New function, taking a
27304         comment from...
27305         (mips16_gp_pseudo_reg): ...here.
27306         * config/mips/mips.md (load_const_gp): Replace with...
27307         (load_const_gp_<mode>): ...this :P-based insn.
27308
27309 2008-01-31  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
27310
27311         * doc/invoke.texi (-ansi): Mention explicitly corresponding -std=
27312         options. Minor fixes.
27313         (-std): Move reference to standards closer to where language
27314         standards are first mentioned.
27315
27316 2008-01-31  Richard Sandiford  <rsandifo@nildram.co.uk>
27317
27318         PR rtl-optimization/34995
27319         * reload.c (alternative_allows_const_pool_ref): Take an rtx
27320         parameter and return a bool.  If the rtx parameter is nonnull,
27321         check that it satisfies an EXTRA_MEMORY_CONSTRAINT.
27322         (find_reloads): Update call accordingly.  Pass the new operand
27323         if it needed no address reloads, otherwise pass null.
27324
27325 2008-01-30  Richard Henderson  <rth@redhat.com>
27326
27327         PR c/34993
27328         * tree.c (build_type_attribute_qual_variant): Skip TYPE_DOMAIN
27329         for unbounded arrays.
27330
27331 2008-01-30  Silvius Rus  <rus@google.com>
27332
27333         * config/i386/xmmintrin.h (_mm_prefetch): Add const to first arg.
27334
27335 2008-01-30  Jan Hubicka  <jh@suse.cz>
27336
27337         PR target/34982
27338         * i386.c (init_cumulative_args): Use real function declaration when
27339         calling locally.
27340
27341 2008-01-30  Richard Sandiford  <rsandifo@nildram.co.uk>
27342
27343         PR rtl-optimization/34998
27344         * global.c (build_insn_chain): Treat non-subreg_lowpart
27345         SUBREGs of pseudos as clobbering all the words covered by the
27346         SUBREG, not just all the bytes.
27347         * ra-conflict.c (clear_reg_in_live): Likewise.  Take the
27348         original df_ref rather than an extract parameter.
27349         (global_conflicts): Update call accordingly.
27350
27351 2008-01-30  Andreas Krebbel  <krebbel1@de.ibm.com>
27352
27353         * config/s390/fixdfdi.h (__fixunstfdi, __fixtfdi): Rearrange
27354         the overflow check to make it easier to read.
27355         (__fixtfdi): Change the type of the ll member in union
27356         long_double to UDItype_x.
27357
27358 2008-01-30  Jakub Jelinek  <jakub@redhat.com>
27359
27360         PR middle-end/34969
27361         * cgraph.h (cgraph_update_edges_for_call_stmt): New prototype.
27362         * cgraph.c (cgraph_update_edges_for_call_stmt): New function.
27363         * tree-inline.c (fold_marked_statements): Call
27364         cgraph_update_edges_for_call_stmt if folding a call statement.
27365         * cgraphunit.c (verify_cgraph_node): Set cfun to this_cfun for
27366         debug_generic_stmt calls, reset it back afterwards.
27367
27368         PR c/35017
27369         * c-decl.c (start_decl): Don't pedwarn about TREE_READONLY
27370         static decls.
27371         * c-typeck.c (build_external_ref): Don't pedwarn about
27372         static vars in current function's scope.
27373
27374 2008-01-29  Joseph Myers  <joseph@codesourcery.com>
27375
27376         * config.gcc (i[34567]86-*-nto-qnx*): Remove deprecation.
27377
27378 2008-01-29  Bernhard Fischer  <aldot@gcc.gnu.org>
27379
27380         PR c/35002
27381         * ipa-struct-reorg.c: Fix spelling.
27382         * params.def: Ditto.
27383
27384 2008-01-29  Richard Guenther  <rguenther@suse.de>
27385
27386         PR middle-end/35006
27387         * tree-inline.h (struct copy_body_data): Add remapping_type_depth
27388         field.
27389         * tree-inline.c (remap_type): Increment remapping_type_depth
27390         around remapping types.
27391         (copy_body_r): Only add referenced variables if they are referenced
27392         from code, not types.
27393
27394 2008-01-29  Douglas Gregor  <doug.gregor@gmail.com>
27395
27396         PR c++/34055
27397         PR c++/34103
27398         PR c++/34219
27399         PR c++/34606
27400         PR c++/34753
27401         PR c++/34754
27402         PR c++/34755
27403         PR c++/34919
27404         PR c++/34961
27405         * c-pretty-print.c (pp_c_type_qualifier_list): Don't try to print
27406         qualifiers for an ERROR_MARK_NODE or a NULL_TREE.
27407
27408 2008-01-28  Andy Hutchinson   <hutchinsonandy@netscape.net>
27409
27410         PR target/34412
27411         * config/avr/avr.c (expand_prologue): Use correct QI mode frame
27412         pointer for tiny stack.
27413
27414 2008-01-28  Bernhard Fischer  <aldot@gcc.gnu.org>
27415
27416         * doc/tree-ssa.texi: Add cindex PHI nodes and improve wording.
27417
27418 2008-01-28  Bernhard Fischer  <aldot@gcc.gnu.org>
27419
27420         * config/vx-common.h: Fix typo in comment.
27421
27422 2008-01-28  Ian Lance Taylor  <iant@google.com>
27423
27424         PR c++/34862
27425         PR c++/33407
27426         * tree-ssa-copyrename.c (copy_rename_partition_coalesce): Don't
27427         coalesce pointers if they have different DECL_NO_TBAA_P values.
27428         * tree-ssa-copy.c (may_propagate_copy): Don't propagate copies
27429         between variables with different DECL_NO_TBAA_P values.
27430
27431 2008-01-28  Nathan Froyd  <froydnj@codesourcery.com>
27432
27433         PR 31535
27434         * config/rs6000/rs6000.c (small_data_operand): Vectors and floats
27435         are not legitimate small data references on SPE targets.
27436
27437 2008-01-28  David Daney  <ddaney@avtrex.com>
27438
27439         * doc/install.texi (mips-*-*): Recommend binutils 2.18.
27440
27441 2008-01-28  David Daney  <ddaney@avtrex.com>
27442
27443         * doc/install.texi (--disable-libgcj-bc):  Reword documentation.
27444
27445 2008-01-27  Joseph Myers  <joseph@codesourcery.com>
27446
27447         * config.gcc (strongarm*-*, ep9312*-*, xscale*-*, parisc*-*,
27448         m680[012]0-*, *-*-beos*, *-*-kaos*, *-*-linux*aout*,
27449         *-*-linux*libc1*, *-*-solaris2.[0-6], *-*-solaris2.[0-6].*,
27450         *-*-sysv*, *-*-windiss*, alpha*-*-unicosmk*, cris-*-aout,
27451         hppa1.1-*-pro*, hppa1.1-*-osf*, hppa1.1-*-bsd*,
27452         i[34567]86-sequent-ptx4*, i[34567]86-*-nto-qnx*,
27453         i[34567]86-*-sco3.2v5*, i[34567]86-*-uwin*, powerpc-*-chorusos*,
27454         vax-*-bsd*, vax-*-ultrix*): Mark obsolete.
27455
27456 2008-01-27  Bernhard Fischer  <aldot@gcc.gnu.org>
27457
27458         * basic-block.h (condjump_equiv_p): Fix comment.
27459
27460 2008-01-27  Bernhard Fischer  <aldot@gcc.gnu.org>
27461
27462         * tree-pretty-print.c (print_generic_decl, print_generic_stmt,
27463         print_generic_stmt_indented): Fix comment.
27464
27465 2008-01-27  Bernhard Fischer  <aldot@gcc.gnu.org>
27466
27467         * configure.ac (__stack_chk_fail): Add detecion for availability
27468         of SSP in uClibc by checking if __UCLIBC_HAS_SSP__ is defined.
27469         * configure: Regenerate.
27470
27471 2008-01-26  Maxim Kuvyrkov  <maxim@codesourcery.com>
27472
27473         PR middle-end/34688
27474         * final.c (output_addr_const): Handle TRUNCATE.
27475
27476 2008-01-26  Zdenek Dvorak  <ook@ucw.cz>
27477
27478         PR target/34711
27479         * tree-ssa-loop-ivopts.c (comp_cost): New type.
27480         (zero_cost, infinite_cost): New constants.
27481         (struct cost_pair): Change type of cost to comp_cost.
27482         (struct iv_ca): Change type of cand_use_cost and cost to comp_cost.
27483         (new_cost, add_costs, sub_costs, compare_costs, infinite_cost_p):
27484         New functions.
27485         (set_use_iv_cost, force_expr_to_var_cost, force_var_cost,
27486         split_address_cost, ptr_difference_cost, difference_cost,
27487         get_computation_cost_at, get_computation_cost,
27488         determine_use_iv_cost_generic, determine_use_iv_cost_address,
27489         determine_use_iv_cost_condition, determine_use_iv_costs,
27490         cheaper_cost_pair, iv_ca_recount_cost, iv_ca_set_no_cp,
27491         iv_ca_set_cp, iv_ca_cost, iv_ca_new, iv_ca_dump, iv_ca_extend,
27492         iv_ca_narrow, iv_ca_prune, try_improve_iv_set, find_optimal_iv_set):
27493         Change type of cost to comp_cost.
27494         (determine_iv_cost): Increase cost of non-original ivs, instead
27495         of decreasing the cost of original ones.
27496         (get_address_cost): Indicate the complexity of the addressing mode
27497         in comp_cost.
27498         (try_add_cand_for): Prefer using ivs not specific to some object.
27499         * tree-flow.h (force_expr_to_var_cost): Declaration removed.
27500
27501 2008-01-26  Peter Bergner  <bergner@vnet.ibm.com>
27502             Janis Johnson  <janis187@us.ibm.com>
27503
27504         PR target/34814
27505         * doc/tm.texi (TARGET_EXPAND_TO_RTL_HOOK): Document.
27506         (TARGET_INSTANTIATE_DECLS): Likewise.
27507         * target.h (expand_to_rtl_hook): New target hook.
27508         (instantiate_decls): Likewise.
27509         * function.c (instantiate_decl): Make non-static.  Rename to...
27510         (instantiate_decl_rtl): ... this.
27511         (instantiate_expr): Use instantiate_decl_rtl.
27512         (instantiate_decls_1): Likewise.
27513         (instantiate_decls): Likewise.
27514         (instantiate_virtual_regs: Call new instantiate_decls taget hook.
27515         * function.h (instantiate_decl_rtl): Add prototype.
27516         * cfgexpand.c (target.h): New include.
27517         (tree_expand_cfg): Call new expand_to_rtl_hook target hook.
27518         * target-def.h (TARGET_EXPAND_TO_RTL_HOOK): New define.
27519         (TARGET_INSTANTIATE_DECLS): Likewise.
27520         (TARGET_INITIALIZER): New target hooks added.
27521         * config/rs6000/rs6000-protos.h (rs6000_secondary_memory_needed_rtx):
27522         New prototype.
27523         * config/rs6000/rs6000.c (tree-flow.h): New include.
27524         (machine_function): Add sdmode_stack_slot field.
27525         (rs6000_alloc_sdmode_stack_slot): New function.
27526         (rs6000_instantiate_decls): Likewise.
27527         (rs6000_secondary_memory_needed_rtx): Likewise.
27528         (rs6000_check_sdmode): Likewise.
27529         (TARGET_EXPAND_TO_RTL_HOOK): Target macro defined.
27530         (TARGET_INSTANTIATE_DECLS): Likewise.
27531         (rs6000_hard_regno_mode_ok): Allow SDmode.
27532         (num_insns_constant): Likewise.  Handle _Decimal32 constants.
27533         (rs6000_emit_move): Handle SDmode.
27534         (function_arg_advance): Likewise.
27535         (function_arg): Likewise.
27536         (rs6000_gimplify_va_arg): Likewise.  Add special handling of
27537         SDmode var args for 32-bit compiles.
27538         (rs6000_secondary_reload_class): Handle SDmode.
27539         (rs6000_output_function_epilogue): Likewise.
27540         (rs6000_function_value): Simplify if statement.
27541         (rs6000_libcall_value): Likewise.
27542         * config/rs6000/rs6000.h (SLOW_UNALIGNED_ACCESS): Handle SDmode.
27543         (SECONDARY_MEMORY_NEEDED_RTX): Add define.
27544         * config/rs6000/dfp.md (movsd): New define_expand and splitter.
27545         (movsd_hardfloat): New define_insn.
27546         (movsd_softfloat): Likewise.
27547         (movsd_store): Likewise.
27548         (movsd_load): Likewise.
27549         (extendsddd2): Likewise.
27550         (extendsdtd2): Likewise.
27551         (truncddsd2): Likewise.
27552         (movdd_hardfloat64): Fixup comment.
27553         (UNSPEC_MOVSD_LOAD): New constant.
27554         (UNSPEC_MOVSD_STORE): Likewise.
27555
27556 2008-01-26  Jakub Jelinek  <jakub@redhat.com>
27557
27558         PR c++/34965
27559         * c-pretty-print.c (pp_c_exclusive_or_expression): Handle
27560         TRUTH_XOR_EXPR.
27561         (pp_c_logical_and_expression): Handle TRUTH_AND_EXPR.
27562         (pp_c_logical_or_expression): Handle TRUTH_OR_EXPR.
27563         (pp_c_expression): Handle TRUTH_AND_EXPR, TRUTH_OR_EXPR
27564         and TRUTH_XOR_EXPR.
27565
27566 2008-01-26  David Edelsohn  <edelsohn@gnu.org>
27567
27568         PR target/34794
27569         * config.gcc: Separate AIX 5.3 from AIX 6.1.
27570         * config/rs6000/rs6000-c.c (rs6000_cpu_cpp_builtins): Define
27571         __LONGDOUBLE128 too.
27572         * config/rs6000/aix61.h: New file.
27573
27574 2008-01-26  Richard Sandiford  <rsandifo@nildram.co.uk>
27575
27576         PR rtl-optimization/34959
27577         * optabs.c (expand_unop): In libcall notes, give ffs, clz, ctz,
27578         popcount and parity rtxes the same mode as their operand.
27579         Truncate or extend the result to the return value's mode
27580         if necessary.
27581
27582 2008-01-26  Richard Sandiford  <rsandifo@nildram.co.uk>
27583
27584         PR target/34981
27585         * config/mips/mips-protos.h (mips_expand_call): Return an rtx.
27586         * config/mips/mips.h (FIRST_PSEUDO_REGISTER): Rename FAKE_CALL_REGNO
27587         to GOT_VERSION_REGNUM.
27588         (CALL_REALLY_USED_REGISTERS): Set the GOT_VERSION_REGNUM entry to 0.
27589         (EPILOGUE_USES): Include GOT_VERSION_REGNUM if TARGET_USE_GOT.
27590         * config/mips/mips.c (mips_emit_call_insn): New function.
27591         (mips_call_tls_get_addr): Call mips_expand_call directly.
27592         (mips16_copy_fpr_return_value): Use mips_emit_call_insn rather than
27593         emit_call_insn.
27594         (mips16_build_call_stub): Likewise.  Return the call insn or null.
27595         (mips_expand_call): Update the call to mips16_build_call_stub
27596         accordingly and a remove redundant condition.  Assert that MIPS16
27597         stubs do not use lazy binding.  Use mips_emit_call_insn and return
27598         the call insn.
27599         (mips_extra_live_on_entry): Include GOT_VERSION_REGNUM if
27600         TARGET_USE_GOT.
27601         (mips_hard_regno_mode_ok_p): Allow SImode for GOT_VERSION_REGNUM.
27602         (mips_avoid_hazard): Remove hazard_set handling.
27603         * config/mips/mips.md (UNSPEC_EH_RECEIVER): Rename to...
27604         (UNSPEC_RESTORE_GP): ...this.
27605         (UNSPEC_SET_GOT_VERSION, UNSPEC_UPDATE_GOT_VERSION): New constants.
27606         (FAKE_CALL_REGNO): Rename to...
27607         (GOT_VERSION_REGNUM): ...this.
27608         (type): Add "ghost" value.  Add an associated insn reservation.
27609         (hazard_set): Remove.
27610         (exception_receiver): Rename to...
27611         (restore_gp): ...this and update the unspec identifier accordingly.
27612         (exception_receiver, nonlocal_got_receiver): New expanders.
27613         (load_call<mode>): Use GOT_VERSION_REGNUM.  Don't set
27614         FAKE_CALL_REGNO.  Remove hazard_set attribute.
27615         (set_got_version, update_got_version): New patterns.
27616
27617 2008-01-26  Danny Smith  <dannysmith@users.sourceforge.net>
27618
27619         PR target/34970
27620         * config/i386/cygming.h (ASM_OUTPUT_LABELREF): Define.
27621
27622 2008-01-25  Joseph Myers  <joseph@codesourcery.com>
27623
27624         PR other/31955
27625         * doc/install.texi2html: Generate gcc-vers.texi.
27626
27627 2008-01-25  DJ Delorie  <dj@redhat.com>
27628
27629         * config/m32c/m32c.h (ASM_PREFERRED_EH_DATA_FORMAT): Define.
27630
27631 2008-01-25  Joseph Myers  <joseph@codesourcery.com>
27632
27633         * config/c4x: Remove directory.
27634         * config.gcc (crx-*, mt-*): Mark obsolete.
27635         (c4x-*, tic4x-*, c4x-*-rtems*, tic4x-*-rtems*, c4x-*, tic4x-*,
27636         h8300-*-rtemscoff*, ns32k-*-netbsdelf*, ns32k-*-netbsd*,
27637         sh-*-rtemscoff*): Remove cases.
27638         * defaults.h (C4X_FLOAT_FORMAT): Remove.
27639         * real.c (encode_c4x_single, decode_c4x_single,
27640         encode_c4x_extended, decode_c4x_extended, c4x_single_format,
27641         c4x_extended_format): Remove.
27642         * real.h (c4x_single_format, c4x_extended_format): Remove.
27643         * doc/extend.texi (interrupt, naked): Remove mention of attributes
27644         on C4x.
27645         (Pragmas): Remove comment about c4x pragmas.
27646         * doc/install.texi (c4x): Remove target-specific instructions.
27647         * doc/invoke.texi (TMS320C3x/C4x Options): Remove.
27648         * doc/md.texi (Machine Constraints): Remove C4x documentation.
27649         * doc/tm.texi (MEMBER_TYPE_FORCES_BLK, c_register_pragma): Do not
27650         refer to C4x source files as examples.
27651         (C4X_FLOAT_FORMAT): Remove documentation.
27652
27653 2008-01-25  Bernd Schmidt  <bernd.schmidt@analog.com>
27654
27655         * config/bfin/bfin.c (override_options): Reorder tests so that
27656         flag_pic gets enabled for -msep-data.
27657
27658 2008-01-25  Richard Guenther  <rguenther@suse.de>
27659
27660         PR middle-end/32244
27661         * expr.c (expand_expr_real_1): Reduce result of LSHIFT_EXPR
27662         to its bitfield precision if required.
27663
27664 2008-01-25  Jakub Jelinek  <jakub@redhat.com>
27665
27666         PR middle-end/33880
27667         * tree-nested.c (walk_omp_for): New function.
27668         (convert_nonlocal_reference, convert_local_reference): Call
27669         walk_omp_for on OMP_FOR.
27670         (convert_call_expr): Call walk_body on OMP_FOR's
27671         OMP_FOR_PRE_INIT_BODY.
27672
27673 2008-01-25  Richard Guenther  <rguenther@suse.de>
27674
27675         PR tree-optimization/34966
27676         * tree-ssa-math-opts.c (execute_cse_sincos_1): For all but
27677         default defs and PHI_NODEs we have to insert after the
27678         defining statement.
27679
27680 2008-01-24  Nick Clifton  <nickc@redhat.com>
27681
27682         * config/stormy16/stormy16-lib2.c (MIN_UNITS_PER_WORD):
27683         Provide a default definition.
27684         (LIBGCC2_UNITS_PER_WORD): Likewise.
27685
27686         * config/stormy16/stormy16.c: Include df.h for the prototype
27687         for df_regs_ever_live_p.
27688         (xstormy16_expand_builtin_va_start): Convert the stack offset
27689         into a component_ref and then use POINTER_PLUS_EXPR to add it
27690         to the incoming_virtual_args_rtx.
27691         (xstormy16_gimplify_va_arg_expr): Rename to
27692         xstormy16_gimplify_va_arg_expr.
27693         Use POINTER_PLUS_EXPR when performing pointer arithmetic.
27694         (TARGET_GIMPLIFY_VA_ARG_EXPR): Use renamed
27695         xstormy16_gimplify_va_arg_expr.
27696         Fix up some formatting issues.
27697
27698         * config/stormy16/stormy16.c: (xstormy16_carry_plus_operand):
27699         Move to predicates.md.
27700         (xs_hi_general_operand): Likewise.
27701         (xs_hi_nonmemory_operand): Likewise.
27702         * config/stormy16/predicates.md:
27703         (xstormy16_carry_plus_operand): New predicate.
27704         (xs_hi_general_operand): New predicate.
27705         (xs_hi_nonmemory_operand): New predicate.
27706         * config/stormy16/stormy16-protos.h:
27707         (xstormy16_carry_plus_operand): Delete prototype.
27708         (xs_hi_general_operand): Likewise.
27709         (xs_hi_nonmemory_operand): Likewise.
27710
27711         * config/storm16/stormy16.md (addhi3): Remove earlyclobber
27712         modifiers as they are no longer needed and they can trigger
27713         reload spill failures.
27714
27715         * config/storm16/stormy16.md (ineqbranchsi): Replace match_dup
27716         with a match_operand in order to help reload.
27717
27718         * config/storm16/stormy16.md (movhi_internal): Replace 'r'
27719         constraint with 'e' for the 8th alternative as this version of
27720         the mov.w instruction only accepts the lower 8 registers.
27721
27722 2008-01-25  Uros Bizjak  <ubizjak@gmail.com>
27723
27724         PR target/34856
27725         * simplifx-rtx.c (simplify_const_binary_operation) [VEC_CONCAT]:
27726         Consider only CONST_INT, CONST_DOUBLE and CONST_FIXED as constant
27727         vector elements.
27728
27729 2008-01-25  Jakub Jelinek  <jakub@redhat.com>
27730
27731         PR middle-end/33333
27732         * gimplify.c (gimplify_omp_for): Gimplify OMP_FOR_PRE_BODY.
27733
27734 2008-01-25  Golovanevsky Olga  <olga@il.ibm.com>
27735
27736         * ipa-struct-reorg.c (remove_str_allocs_in_func, remove_str_allocs):
27737         New functions.
27738         (remove_structure): Update allocations list before removing structure.
27739
27740 2008-01-25  Golovanevsky Olga  <olga@il.ibm.com>
27741
27742         * ipa-struct-reorg.c (is_safe_cond_expr,
27743         create_new_stmts_for_cond_expr): Use integer_zerop function,
27744         that recognize not only zero-pointer, but zero-integer too.
27745
27746 2008-01-25  Ben Elliston  <bje@au.ibm.com>
27747
27748         PR other/22232
27749         * fixproto: Escape "." in sed expression that strips leading "./".
27750
27751 2008-01-24  H.J. Lu  <hongjiu.lu@intel.com>
27752
27753         PR driver/34904
27754         * gcc.c (SWITCH_OK): Removed.
27755         (SWITCH_LIVE): Changed to bit.
27756         (SWITCH_FALSE): Likewise.
27757         (SWITCH_IGNORE): Likewise.
27758         (switchstr): Change live_cond to unsigned int.
27759         (process_command): Replace SWITCH_OK with 0.
27760         (do_self_spec): Likewise.
27761         (set_collect_gcc_options): Check the SWITCH_IGNORE bit.
27762         (give_switch): Likewise.
27763         (used_arg): Likewise.
27764         (do_spec_1): Set the SWITCH_IGNORE bit.
27765         (check_live_switch): Check both SWITCH_LIVE and SWITCH_FALSE
27766         bits.  Set the SWITCH_LIVE bit.
27767
27768 2008-01-24  Andreas Krebbel  <krebbel1@de.ibm.com>
27769
27770         * config/s390/s390.h (MOVE_RATIO): Define new target macro.
27771
27772 2008-01-24  Richard Sandiford  <rsandifo@nildram.co.uk>
27773
27774         PR tree-optimization/34472
27775         * ipa-struct-reorg.c (safe_cond_expr_check): Change the DATA
27776         parameter to a "bool *" and set *DATA to false if there is
27777         an unsafe access.  Do not delete the structure here.
27778         (check_cond_exprs): Delete it here instead.
27779         (check_cond_exprs, exclude_cold_structs): Do not increase
27780         I when removing a structure.
27781
27782 2008-01-24  Uros Bizjak  <ubizjak@gmail.com>
27783
27784         PR target/34856
27785         * config/i386/i386.c (ix86_expand_vector_init): Consider only
27786         CONST_INT, CONST_DOUBLE and CONST_FIXED as constant vector elements.
27787
27788 2008-01-24  Jakub Jakub Jelinek  <jakub@redhat.com>
27789
27790         PR middle-end/34934
27791         * tree-stdarg.c (reachable_at_most_once): Use VEC vector instead of
27792         a fixed vector for stack.
27793
27794 2008-01-24  Ben Elliston  <bje@au.ibm.com>
27795
27796         PR c++/25701
27797         * doc/gcc.texi (Software development): Add a direntry for g++.
27798
27799 2008-01-23  Hans-Peter Nilsson  <hp@axis.com>
27800
27801         * config/cris/cris.h (CC1PLUS_SPEC, OPTIMIZATION_OPTIONS): Drop
27802         stale and straggling -fforce-addr comments above.
27803
27804         * config/cris/cris.h (CRIS_SUBTARGET_VERSION, TARGET_VERSION): Don't
27805         define.
27806         * config/cris/linux.h (CRIS_SUBTARGET_VERSION): Don't define.
27807         * config/cris/aout.h (CRIS_SUBTARGET_VERSION): Don't define.
27808
27809 2008-01-23  Michael Matz  <matz@suse.de>
27810
27811         PR debug/34895
27812         * dwarf2out.c (force_type_die): Use modified_type_die instead of
27813         gen_type_die.
27814
27815 2008-01-23  Andreas Krebbel  <krebbel1@de.ibm.com>
27816
27817         * ipa-struct-reorg.c (create_new_malloc): Use pointer type as
27818         malloc result type.
27819
27820 2008-01-23 Anatoly Sokolov <aesok@post.ru>
27821
27822         * config/avr/avr.c (avr_current_arch): New variable.
27823         (avr_arch_types): Add 'avr31' and 'avr51' entries.
27824         (avr_arch): Add 'ARCH_AVR31' and 'ARCH_AVR51'.
27825         (avr_mcu_types): Add 'avr31' and 'avr51' architectures.
27826         (avr_override_options): Init 'avr_current_arch'.
27827         (base_arch_s): Move from here...
27828         * config/avr/avr.h (base_arch_s): ... here. Add new members
27829         'have_elpm', 'have_elpmx', 'have_eijmp_eicall', 'reserved'. Rename
27830         'mega' to 'have_jmp_call'.
27831         (TARGET_CPU_CPP_BUILTINS): Define "__AVR_HAVE_JMP_CALL__",
27832         "__AVR_HAVE_RAMPZ__", "__AVR_HAVE_ELPM__" and "__AVR_HAVE_ELPMX__"
27833         macros.
27834         (LINK_SPEC, CRT_BINUTILS_SPECS, ASM_SPEC): Add 'avr31' and 'avr51'
27835         architectures.
27836         * config/avr/t-avr (MULTILIB_OPTIONS, MULTILIB_DIRNAMES,
27837         MULTILIB_MATCHES): Ditto.
27838
27839 2008-01-23  Richard Guenther  <rguenther@suse.de>
27840
27841         PR middle-end/31529
27842         * cgraphunit.c (cgraph_reset_node): Always mark the node
27843         not reachable if it is not queued already.
27844
27845 2008-01-23  Bernd Schmidt  <bernd.schmidt@analog.com>
27846
27847         * config/bfin/bfin-protos.h (WA_RETS, ENABLE_WA_RETS): New macros.
27848         * config/bfin/bfin.c (bfin_cpus): Add WA_RETS everywhere.
27849         (cputype_selected): New static variable.
27850         (bfin_handle_option): Set it if -mcpu is used.
27851         (override_option): Select default set of workarounds if no cpu type
27852         selected on the command line.
27853         (workaround_rts_anomaly): Only run if ENABLE_WA_RETS.
27854
27855         From  Michael Frysinger  <michael.frysinger@analog.com>
27856         * config/bfin/bfin-protos.h (enum bfin_cpu_type): Add
27857         BFIN_CPU_BF547, BFIN_CPU_BF523, BFIN_CPU_BF524, and BFIN_CPU_BF526.
27858
27859         * config/bfin/elf.h (LIB_SPEC): Use proper linker script
27860         for bf547, bf523, bf524, and bf526.
27861         * config/bfin/bfin.c (bfin_cpus[]): Add bf547,  bf523, bf524, and
27862         bf526.
27863         * config/bfin/bfin.h (TARGET_CPU_CPP_BUILTINS): Define
27864         __ADSPBF523__ for bf523, __ADSPBF524__ for bf524,
27865         __ADSPBF526__ for bf526, __ADSPBF52x__ for all three, as well as
27866         __ADSPBF547__ and __ADSPBF54x__ for bf547.
27867         * doc/invoke.texi (Blackfin Options): Document that
27868         -mcpu now accept bf547, bf523, bf524, and bf526.
27869
27870 2008-01-22  Eric Botcazou  <ebotcazou@adacore.com>
27871
27872         PR rtl-optimization/34628
27873         * combine.c (try_combine): Stop and undo after the first combination
27874         if an autoincrement side-effect on the first insn has effectively
27875         been lost.
27876
27877 2008-01-22  David Edelsohn  <edelsohn@gnu.org>
27878
27879         PR target/34529
27880         * config/rs6000/rs6000.c (rs6000_legitimate_offset_address_p):
27881         Offset addresses are not valid for Altivec or paired float modes.
27882
27883 2008-01-22  Jakub Jelinek  <jakub@redhat.com>
27884
27885         PR c++/34607
27886         * c-parser.c (c_parser_omp_for_loop): Don't call c_finish_omp_for
27887         if DECL_INITIAL (decl) is error_mark_node.
27888
27889         PR c++/34914
27890         * c-common.c (handle_vector_size_attribute): Only allow
27891         integral, scalar float and fixed point types.  Handle OFFSET_TYPE
27892         the same way as pointer, array etc. types.
27893         * tree.c (reconstruct_complex_type): Handle OFFSET_TYPE.
27894
27895         PR c++/34917
27896         * tree.c (build_type_attribute_qual_variant): Call
27897         build_qualified_type if attributes are equal, but quals are not.
27898
27899 2008-01-22  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
27900
27901         PR 32102
27902         * doc/invoke.texi (-Wall): -Wall enables -Wstrict-overflow=1.
27903         * flags.h (warn_strict_aliasing): Remove.
27904         (warn_strict_overflow): Remove.
27905         * opts.c (warn_strict_aliasing): Remove.
27906         (warn_strict_overflow): Remove.
27907         * c-opts.c (c_common_handle_option): -Wall only sets
27908         -Wstrict-aliasing or -Wstrict-overflow if they are uninitialized.
27909         (c_common_post_options): Give default values to -Wstrict-aliasing
27910         and -Wstrict-overflow if they are uninitialized.
27911         * common.opt (Wstrict-aliasing): Specify Var and Init.
27912         (Wstrict-overflow): Likewise.
27913
27914 2008-01-22  Kenneth Zadeck  <zadeck@naturalbridge.com>
27915
27916         PR rtl-optimization/26854
27917         PR rtl-optimization/34400
27918         PR rtl-optimization/34884
27919         * ddg.c (create_ddg_dep_from_intra_loop_link): Use
27920         DF_RD->gen.
27921         * df.h (df_changeable_flags.DF_RD_NO_TRIM): Deleted
27922         (df_rd_bb_info.expanded_lr_out): Deleted
27923         * loop_invariant.c (find_defs): Deleted DF_RD_NO_TRIM flag.
27924         * loop_iv.c (iv_analysis_loop_init): Ditto.  * df-problems.c
27925         (df_rd_free_bb_info, df_rd_alloc, df_rd_confluence_n,
27926         df_rd_bb_local_compute, df_rd_transfer_function, df_rd_free):
27927         Removed code to allocate, initialize or free expanded_lr_out.
27928         (df_rd_bb_local_compute_process_def): Restructured to make more
27929         understandable.
27930         (df_rd_confluence_n): Removed code to no apply invalidate_by_call
27931         sets if the sets are being trimmed.
27932
27933 2008-01-22  H.J. Lu  <hongjiu.lu@intel.com>
27934
27935         PR bootstrap/32287
27936         * configure.ac (ld_vers): Support GNU linker version xx.xx.*
27937         (as_vers): Likewise.
27938         * configure: Regenerated.
27939
27940 2008-01-22  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
27941
27942         PR middle-end/33092
27943         * tree-pass.h (pass_build_alias): New pass.
27944         * tree-ssa-alias.c (gate_build_alias): New.
27945         (pass_build_alias): New.
27946         * passes.c (init_optimization_passes): Add pass_build_alias after
27947         pass_create_structure_vars.
27948
27949 2008-01-22  Wolfgang Gellerich  <gellerich@de.ibm.com>
27950
27951         * config/s390/s390.h (S390_TDC_POSITIVE_NORMALIZED_NUMBER):
27952         Renamed to S390_TDC_POSITIVE_NORMALIZED_BFP_NUMBER.
27953         (S390_TDC_NEGATIVE_NORMALIZED_NUMBER): Renamed to
27954         S390_TDC_NEGATIVE_NORMALIZED_BFP_NUMBER.
27955         (S390_TDC_POSITIVE_DENORMALIZED_NUMBER): Renamed to
27956         S390_TDC_POSITIVE_DENORMALIZED_BFP_NUMBER.
27957         (S390_TDC_NEGATIVE_DENORMALIZED_NUMBER): Renamed to
27958         S390_TDC_NEGATIVE_DENORMALIZED_BFP_NUMBER.
27959         (S390_TDC_POSITIVE_NORMALIZED_BFP_NUMBER): New constant.
27960         (S390_TDC_NEGATIVE_NORMALIZED_BFP_NUMBER): New constant.
27961         (S390_TDC_POSITIVE_DENORMALIZED_BFP_NUMBER): New constant.
27962         (S390_TDC_NEGATIVE_DENORMALIZED_BFP_NUMBER): New constant.
27963         * config/s390/s390.md (FP_ALL): New mode iterator.
27964         (_d): New mode attribute.
27965         ("*signbit<mode>2>"): Changed mode of first operand.
27966         ("isinf<mode>2"): Changed mode of first operand.
27967         ("*TDC_insn"): Adaptation for DFP modes.
27968
27969 2008-01-22  Ben Elliston  <bje@au.ibm.com>
27970
27971         * tree.c (check_qualified_type): Improve function description.
27972
27973 2008-01-21  Jason Merrill  <jason@redhat.com>
27974
27975         PR c++/34196
27976         * tree.h (TRY_CATCH_IS_CLEANUP): New macro.
27977         * tree-eh.c (honor_protect_cleanup_actions): Strip TRY_CATCH_EXPR
27978         if it is set.
27979
27980 2008-01-21  DJ Delorie  <dj@redhat.com>
27981
27982         * doc/tm.texi (HARD_REGNO_NREGS): Note that this macro must not
27983         return zero.
27984
27985 2008-01-21  Richard Guenther  <rguenther@suse.de>
27986
27987         PR middle-end/34856
27988         * tree-cfg.c (verify_expr): Allow all invariant expressions
27989         instead of just constant class ones as reference argument.
27990         * tree-ssa-loop-im.c (for_each_index): Handle CONSTRUCTOR
27991         like any other constant.
27992         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Likewise.
27993
27994 2008-01-21  H.J. Lu  <hongjiu.lu@intel.com>
27995
27996         * regmove.c (fixup_match_1): Update call crossed frequencies.
27997
27998 2008-01-21  Richard Guenther  <rguenther@suse.de>
27999
28000         PR c/34885
28001         * tree-inline.c (setup_one_parameter): Deal with mismatched
28002         types using a VIEW_CONVERT_EXPR.
28003
28004 2008-01-21  Alon Dayan  <alond@il.ibm.com>
28005             Olga Golovanevsky  <olga@il.ibm.com>
28006
28007         PR tree-optimization/34701
28008         * ipa-struct-reorg.c (gen_size): Fix the malloc parameter calculation
28009         when the structure size is not a power of 2.
28010
28011 2008-01-20  Kenneth Zadeck  <zadeck@naturalbridge.com>
28012
28013         * doc/install.texi: Add doc for --enable-checking=df.
28014
28015 2008-01-20  Kaz Kojima  <kkojima@gcc.gnu.org>
28016
28017         PR rtl-optimization/34808
28018         * emit-rtl.c (try_split): Handle REG_RETVAL notes.
28019
28020 2008-01-20  Richard Sandiford  <rsandifo@nildram.co.uk>
28021
28022         * global.c (find_reg): Only compute EH_RETURN_DATA_REGNO once per
28023         input.
28024
28025 2008-01-19  Kenneth Zadeck  <zadeck@naturalbridge.com>
28026
28027         PR rtl-optimization/26854
28028         PR rtl-optimization/34400
28029         * ddg.c (create_ddg_dep_from_intra_loop_link): Do not use
28030         DF_RD->gen.
28031         * df.h (df_changeable_flags.DF_RD_NO_TRIM): New.
28032         (df_rd_bb_info.expanded_lr_out): New.
28033         * loop_invariant.c (find_defs): Added DF_RD_NO_TRIM flag.
28034         * loop_iv.c (iv_analysis_loop_init): Ditto.
28035         * df-problems.c (df_rd_free_bb_info, df_rd_alloc, df_rd_confluence_n,
28036         df_rd_bb_local_compute, df_rd_transfer_function, df_rd_free):
28037         Added code to allocate, initialize or free expanded_lr_out.
28038         (df_rd_bb_local_compute_process_def): Restructured to make
28039         more understandable.
28040         (df_rd_confluence_n): Add code to do nothing with fake edges and
28041         code to no apply invalidate_by_call sets if the sets are being trimmed.
28042         (df_lr_local_finalize): Renamed to df_lr_finalize.
28043         (df_live_local_finalize): Renamed to df_live_finalize.
28044
28045 2008-01-20  Richard Sandiford  <rsandifo@nildram.co.uk>
28046
28047         PR target/34831
28048         * config/mips/mips.md (div<mode>3): Use <recip_condition> when
28049         deciding whether to use reciprocal instructions.
28050
28051 2008-01-19  Uros Bizjak  <ubizjak@gmail.com>
28052
28053         * dwarf2out.c (dwarf2out_switch_text_section): Do not call
28054         dwarf2out_note_section_used if cold_text_section is NULL.
28055
28056 2008-01-19  Jakub Jelinek  <jakub@redhat.com>
28057
28058         PR gcov-profile/34610
28059         * tree-cfg.c (make_edges): Mark both outgoing edges from
28060         OMP_CONTINUE and from OMP_FOR as EDGE_ABNORMAL.
28061         * omp-low.c (expand_omp_for): Clear EDGE_ABNORMAL bits
28062         from OMP_FOR and OMP_CONTINUE outgoing edges.
28063
28064         * tree-profile.c (tree_profiling): Return early if
28065         cfun->after_tree_profile != 0.  Set cfun->after_tree_profile
28066         at the end.
28067         * omp-low.c (expand_omp_parallel): Copy after_tree_profile
28068         from cfun to child_cfun.
28069         * function.h (struct function): Add after_tree_profile bit.
28070
28071 2008-01-19 Anatoly Sokolov <aesok@post.ru>
28072
28073         * config/avr/avr.S (_exit): Disable interrupt.
28074
28075 2008-01-18  Kenneth Zadeck  <zadeck@naturalbridge.com>
28076             Steven Bosscher  <stevenb.gcc@gmail.com>
28077
28078         PR rtl-optimization/26854
28079         PR rtl-optimization/34400
28080         * df-problems.c (df_live_scratch): New scratch bitmap.
28081         (df_live_alloc): Allocate df_live_scratch when doing df_live.
28082         (df_live_reset): Clear the proper bitmaps.
28083         (df_live_bb_local_compute): Only process the artificial defs once
28084         since the order is not important.
28085         (df_live_init): Init the df_live sets only with the variables
28086         found live by df_lr.
28087         (df_live_transfer_function): Use the df_lr sets to prune the
28088         df_live sets as they are being computed.
28089         (df_live_free): Free df_live_scratch.
28090
28091 2008-01-18  Ian Lance Taylor  <iant@google.com>
28092
28093         * common.opt: Add fmerge-debug-strings.
28094         * dwarf2out.c (DEBUG_STR_SECTION_FLAGS): Test
28095         flag_merge_debug_strings rather than flag_merge_constants.
28096         * doc/invoke.texi (Option Summary): Mention
28097         -fmerge-debug-strings.
28098         (Debugging Options): Document -fmerge-debug-strings.
28099
28100 2008-01-18  Ian Lance Taylor  <iant@google.com>
28101
28102         PR c++/33407
28103         * tree.h (DECL_IS_OPERATOR_NEW): Define.
28104         (struct tree_function_decl): Add new field operator_new_flag.
28105         * tree-inline.c (expand_call_inline): When inlining a call to
28106         operator new, force the return value to go into a variable, and
28107         set DECL_NO_TBAA_P on that variable.
28108         * c-decl.c (merge_decls): Merge DECL_IS_OPERATOR_NEW flag.
28109
28110 2008-01-18  Uros Bizjak  <ubizjak@gmail.com>
28111
28112         PR debug/34484
28113         * dwarf2out.c (dwarf2out_switch_text_section): Do not guard with
28114         DWARF2_DEBUGGING_INFO.
28115         (dwarf2out_note_section_used): Ditto.  Add prototype.
28116         (have_multiple_function_sections, text_section_used,
28117         cold_text_section_used, *cold_text_sections): Move declarations
28118         before their uses.
28119
28120 2008-01-17  Bob Wilson  <bob.wilson@acm.org>
28121
28122         * config/xtensa/unwind-dw2-xtensa.h (_Unwind_FrameState): Remove pc
28123         field and add signal_ra.
28124         * config/xtensa/unwind-dw2-xtensa.c (uw_frame_state_for): Remove
28125         assignments to frame state pc.  Move end of stack check after
28126         MD_FALLBACK_FRAME_STATE_FOR.
28127         (uw_update_context_1): Use frame state signal_regs if set, instead
28128         of checking signal_frame flag.
28129         (uw_update_context): Use frame state signal_ra if set.
28130         * config/xtensa/linux.h (MD_UNWIND_SUPPORT): Define.
28131         * config/xtensa/linux-unwind.h: New file.
28132
28133 2008-01-18  Bernhard Fischer  <aldot@gcc.gnu.org>
28134
28135         * modulo-sched.c (get_sched_window): Fix comment typo.
28136
28137 2008-01-17  Andrew MacLeod  <amacleod@redhat.com>
28138
28139         PR tree-optimization/34648
28140         * tree-ssa-sccvn.c (visit_use): Expressions which can throw are varying.
28141
28142 2008-01-17  Anatoly Sokolov <aesok@post.ru>
28143
28144         * config/avr/avr.h (LINK_SPEC): Support -mrelax and -mpmem-wrap-around.
28145         * config/avr/avr.opt (mrelax, mpmem-wrap-around): Add.
28146
28147 2008-01-17  Seongbae Park  <seongbae.park@gmail.com>
28148
28149         PR rtl-optimization/34400
28150         * df-core.c (df_worklist_dataflow_overeager,
28151         df_worklist_dataflow_doublequeue): New functions.
28152         (df_worklist_dataflow): Two different worklist solvers.
28153         * params.def (PARAM_DF_DOUBLE_QUEUE_THRESHOLD_FACTOR):
28154         New param.
28155
28156 2008-01-16  Sebastian Pop  <sebastian.pop@amd.com>
28157
28158         PR testsuite/34821
28159         * doc/invoke.texi: Document the dependence on pthread for fopenmp
28160         and ftree-parallelize-loops.
28161
28162 2008-01-17  Mircea Namolaru  <namolaru@il.ibm.com>
28163
28164         PR rtl-optimization/34826
28165         * loop-doloop (doloop_modify): Update the REG_BR_PROB note.
28166
28167 2008-01-17  Andreas Krebbel  <krebbel1@de.ibm.com>
28168
28169         * global.c (find_reg): Mark the eh regs as used if necessary.
28170         * ra-conflict.c (global_conflicts): Set no_eh_reg flag.
28171         * ra.h (struct allocno): no_eh_reg field added.  Changed
28172         no_stack_reg type to bitfield.
28173
28174 2008-01-17  Eric Botcazou  <ebotcazou@adacore.com>
28175
28176         * tree.c (substitute_in_expr): Add missing 'break'.
28177
28178 2008-01-17  Richard Guenther  <rguenther@suse.de>
28179
28180         PR tree-optimization/34825
28181         * tree-ssa-math-opts.c (is_division_by): Do not recognize
28182         x / x as division to handle.
28183
28184 2008-01-16  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
28185
28186         * pa64-hpux.h (LIB_SPEC): Add "-lpthread" in shared links if "-mt" or
28187         "-pthread" is specified.
28188         * pa-hpux11.h (LIB_SPEC): Likewise.
28189
28190 2008-01-16  Janis Johnson  <janis187@us.ibm.com>
28191             Peter Bergner  <bergner@vnet.ibm.com>
28192
28193         PR rtl-optimization/33796
28194         * sparseset.c (sparseset_alloc): Use xcalloc rather than xmalloc.
28195
28196 2008-01-16  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
28197
28198         PR libgfortran/34699
28199         * pa-hpux.h (LINK_SPEC): Only search /lib/pa1.1 and /usr/lib/pa1.1 on
28200         static links.
28201         * pa-hpux10.h (LINK_SPEC): Likewise.
28202         * pa-hpux11.h (LINK_SPEC): Don't search /lib/pa1.1 and /usr/lib/pa1.1.
28203
28204 2008-01-16  Richard Guenther  <rguenther@suse.de>
28205
28206         PR middle-end/32628
28207         * fold-const.c (fold_convert_const_int_from_int): Do not
28208         set overflow if that occured only because of a sign extension
28209         change when converting from/to a sizetype with the same
28210         precision and signedness.
28211
28212 2008-01-16  Uros Bizjak  <ubizjak@gmail.com>
28213
28214         PR debug/34249
28215         * dwarf2out.c (output_call_frame_info): Move output of FDE initial
28216         location address to the correct place.  Update copyright year.
28217
28218 2008-01-16  Sebastian Pop  <sebastian.pop@amd.com>
28219
28220         * lambda-code.c (lambda_transform_legal_p): Handle the case of
28221         no dependences in the dependence_relations vector.
28222
28223 2008-01-16  Jan Hubicka  <jh@suse.cz>
28224
28225         PR rtl-optimization/31396
28226         * regstat.c (regstat_bb_compute_ri): Compute FREQ_CALLS_CROSSED.
28227         * cfg.c (dump_reg_info): Print it.
28228         * regs.h (struct reg_info_t): add freq_calls_crossed.
28229         (REG_FREQ_CALLS_CROSSED): New macro.
28230         * global.c (global_alloc): Compute freq_calls_crossed for allocno.
28231         (find_reg): Update call of CALLER_SAVE_PROFITABLE.
28232         * regmove.c (optimize_reg_copy_1, optimize_reg_copy_2, fixup_match_2,
28233         regmove_optimize): Update call crossed frequencies.
28234         * local-alloc.c (struct qty): Add freq_calls_crossed.
28235         (alloc_qty): Copute freq_calls_crossed.
28236         (update_equiv_regs, combine_regs): Update REG_FREQ_CALLS_CROSSED.
28237         (find_free_reg): Update call of CALLER_SAVE_PROFITABLE.
28238         * ra.h (struct allocno): Add freq_calls_crossed.
28239
28240 2008-01-16  Sebastian Pop  <sebastian.pop@amd.com>
28241
28242         * gcc.c (LINK_COMMAND_SPEC): Add includes and link options for
28243         libgomp when compiling with ftree-parallelize-loops.
28244         (GOMP_SELF_SPECS): Add -pthread for ftree-parallelize-loops.
28245
28246 2008-01-16  Richard Guenther  <rguenther@suse.de>
28247
28248         PR tree-optimization/34769
28249         * tree-data-ref.c (initialize_matrix_A): Revert fix for PR34458.
28250         * tree.c (int_cst_value): Instead make this function more
28251         permissive in what it accepts as valid input.  Document this
28252         function always sign-extends the value.
28253
28254 2008-01-16  Jakub Jelinek  <jakub@redhat.com>
28255             Richard Guenther  <rguenther@suse.de>
28256
28257         PR c/34668
28258         * gimplify.c (fold_indirect_ref_rhs): Rename to ...
28259         (gimple_fold_indirect_ref_rhs): ... this.
28260         (gimple_fold_indirect_ref): New function with foldings
28261         that preserve lvalueness.
28262         (gimplify_modify_expr_rhs): Call gimple_fold_indirect_ref_rhs.
28263         * tree-flow.h (gimple_fold_indirect_ref): Declare.
28264         * tree-inline.c (copy_body_r): Use gimple_fold_indirect_ref
28265         to fold an INDIRECT_REF, fall back to the old use of
28266         fold_indirect_ref_1.
28267
28268 2008-01-16  Sebastian Pop  <sebastian.pop@amd.com>
28269
28270         * tree-data-ref.c (subscript_dependence_tester_1): Call
28271         free_conflict_function.
28272         (compute_self_dependence): Same.
28273
28274 2008-01-16  Uros Bizjak  <ubizjak@gmail.com>
28275
28276         PR debug/34249
28277         * debug.h (dwarf2out_switch_text_section): Move declaration from ...
28278         * dwarf2out.c (dwarf2out_switch_text_section): ... here.  Make
28279         function global.
28280         * final.c (final_scan_insn) [NOTE_INSN_SWITCH_TEXT_SECTIONS]:
28281         Depending on dwarf2out_do_frame, call dwarf2out_switch_text_section
28282         for DWARF2_UNWIND_INFO targets.
28283
28284 2008-01-16  Richard Guenther  <rguenther@suse.de>
28285
28286         PR c/34768
28287         * c-typeck.c (common_pointer_type): Do not merge inconsistent
28288         type qualifiers for function types.
28289
28290 2008-01-15  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
28291
28292         * tree-parloops.c (gen_parallel_loop): Fix ommision of declaration for
28293         loop_iterator li from previous commit.
28294
28295 2008-01-15  Sebastian Pop  <sebastian.pop@amd.com>
28296
28297         * tree-parloops.c (gen_parallel_loop): Free loop bound estimations.
28298
28299 2008-01-12  Sebastian Pop  <sebastian.pop@amd.com>
28300
28301         * tree-parloops.c (loop_has_blocks_with_irreducible_flag): New.
28302         (parallelize_loops): Don't parallelize irreducible components.
28303
28304 2008-01-14  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
28305
28306         PR c++/24924
28307         * c-opts (c_common_post_options): Do not enable CPP
28308         flag_pedantic_errors by default.
28309
28310 2008-01-14  Eric Botcazou  <ebotcazou@adacore.com>
28311
28312         PR rtl-optimization/31944
28313         * cse.c (remove_pseudo_from_table): New function.
28314         (merge_equiv_classes): Use above function to remove pseudo-registers.
28315         (invalidate): Likewise.
28316
28317 2008-01-13  Richard Guenther  <rguenther@suse.de>
28318
28319         PR middle-end/34601
28320         * emit-rtl.c (set_reg_attrs_for_decl_rtl): Use DECL_MODE
28321         instead of TYPE_MODE to deal with calls from expand_one_error_var.
28322
28323 2008-01-13  Uros Bizjak  <ubizjak@gmail.com>
28324
28325         * gcse.c (cprop_jump): Call validate_unshare_change instead of
28326         validate_change to unshare the source of the PC set.
28327
28328 2008-01-12  Jan Hubicka  <jh@suse.cz>
28329
28330         PR middle-end/32135
28331         * tree-ssa-ccp.c (maybe_fold_offset_to_array_ref): Do not construct
28332         references above array bounds.  This might trigger bounds checks for
28333         pointers to arrays.
28334
28335 2008-01-12  Sebastian Pop  <sebastian.pop@amd.com>
28336
28337         * tree-ssa-ter.c (free_temp_expr_table): Free num_in_part and
28338         new_replaceable_dependencies.
28339
28340 2008-01-12  Doug Kwan  <dougkwan@google.com>
28341
28342         * c-decl.c: (grokdeclarator): Use OPT_Wignored_qualifiers
28343         instead of OPT_Wreturn_type in warning due to ignored return type
28344         qualifiers.
28345         * c-opt.c (c_common_post_option): Add -Wignored-qualifiers to
28346         options included in -Wextra.
28347         * c.opt: New option -Wignored_qualifiers.
28348         * doc/invoke.texi (Warning Options, -Wextra): Add new option
28349         -Wignore_qualifiers.
28350         (-Wignored-qualifiers): Document.
28351         (-Wreturn-type): Remove description of functionality now handled
28352         by -Wignored-qualifiers.
28353
28354 2008-01-12  Eric Botcazou  <ebotcazou@adacore.com>
28355
28356         PR ada/33788
28357         * fold-const.c (fold_unary) <VIEW_CONVERT_EXPR>: Fold an existing
28358         NOP_EXPR if it is between integral types with the same precision.
28359
28360 2008-01-12  Jan Hubicka  <jh@suse.cz>
28361
28362         PR other/28023
28363         * invoke.texi (max-inline-recursive-depth): Fix default value.
28364
28365 2008-01-12  Zdenek Dvorak  <ook@ucw.cz>
28366
28367         * tree-parloops.c (transform_to_exit_first_loop): Cast nit to the
28368         correct type.
28369
28370 2008-01-11  Bob Wilson  <bob.wilson@acm.org>
28371
28372         * config/xtensa/xtensa.c (override_options): Set flag_shlib.
28373
28374 2008-01-11  James E. Wilson  <wilson@specifix.com>
28375
28376         PR target/26015
28377         * config/vax/elf.h (FRAME_POINTER_CFA_OFFSET): Define.
28378
28379 2008-01-11  Anatoly Sokolov <aesok@post.ru>
28380
28381         * config/avr/avr.c (expand_prologue, expand_epilogue): Don't
28382         save/restore frame pointer register and don't use 'call-prologues'
28383         optimization in function with "OS_task" attribute.
28384
28385 2008-01-11  Eric Botcazou  <ebotcazou@adacore.com>
28386
28387         PR middle-end/31309
28388         * expr.c (copy_blkmode_from_reg): Use a mode suited to the size
28389         when copying to memory.
28390
28391 2008-01-11  Steven Bosscher  <stevenb.gcc@gmail.com>
28392
28393         PR rtl-optimization/30905
28394         * cfgcleanup.c: Include dce.h
28395         (crossjumps_occured): New global variable.
28396         (try_crossjump_bb): Exit loop after finding a fallthru edge.
28397         If something changed, set crossjumps_occured to true.
28398         (try_optimize_cfg): Clear crossjumps_occured at the beginning.
28399         Don't add/remove fake edges to exit here...
28400         (cleanup_cfg): ...but do it here, when crossjumping.
28401         Run a fast DCE when successful crossjumps occured in the latest
28402         iteration of try_optimize_cfg.
28403
28404 2008-01-11  Richard Guenther  <rguenther@suse.de>
28405
28406         * tree-ssa-sccvn.c (struct vn_binary_op_s): Move hashcode near opcode.
28407         (struct vn_unary_op_s): Likewise.
28408         (vn_reference_insert): Free old reference on hash collision.
28409
28410 2008-01-10  Raksit Ashok  <raksit@google.com>
28411
28412         PR rtl-optimization/27971
28413         * combine.c (find_split_point): Split PLUS expressions which are
28414         inside a MEM rtx, and whose first operand is complex.
28415
28416 2008-01-10  DJ Delorie  <dj@redhat.com>
28417
28418         * config/m32c/m32c.c (m32c_hard_regno_nregs_1): Renamed from...
28419         (m32c_hard_regno_nregs): ...this, which is now a wrapper.
28420         (m32c_hard_regno_ok): Call the underlying function.
28421
28422 2008-01-10  Richard Guenther  <rguenther@suse.de>
28423
28424         PR middle-end/34683
28425         * tree-cfg.c (tree_merge_blocks): Do not go through the
28426         full-blown folding and stmt updating path if we just deal
28427         with virtual operands.
28428         * tree-ssa-copy.c (may_propagate_copy): Do not short-cut
28429         test for abnormal SSA_NAMEs.
28430
28431 2008-01-10  Andreas Krebbel  <krebbel1@de.ibm.com>
28432
28433         PR middle-end/34641
28434         * reload.c (push_reload): Add assertions.  All constants from
28435         reg_equiv_constant should have been used for replacing the respective
28436         pseudo earlier.
28437         (find_reloads_address): Invoke find_reloads_address_part for
28438         constant taken from the reg_equiv_constant array.
28439
28440 2008-01-10  Steven Bosscher  <stevenb.gcc@gmail.com>
28441
28442         * tree-ssa-sccvn.h (struct vn_ssa_aux): Make the most accessed
28443         field (valnum) the first in the struct.  Replace bools with
28444         unit bit fields.
28445
28446 2008-01-10  Richard Guenther  <rguenther@suse.de>
28447
28448         PR tree-optimization/34651
28449         * tree-sra.c (sra_build_assignment): Sanitize.  Use the correct
28450         types and ordering for masking and converting.
28451
28452 2008-01-09  Sebastian Pop  <sebastian.pop@amd.com>
28453
28454         PR tree-optimization/34017
28455         * lambda-code.c (lambda_loopnest_to_gcc_loopnest): Generate code
28456         also for PHI_NODE expressions.
28457
28458 2008-01-09  Jan Hubicka  <jh@suse.cz>
28459
28460         PR tree-optimization/34708
28461         * tree-inline.c (estimate_num_insns_1): Compute cost of SWITCH_EXPR
28462         based on number of case labels.
28463         (init_inline_once): Remove switch_cost.
28464         * tree-inline.h (eni_weights_d): Remove switch_cost.
28465
28466 2008-01-09  Richard Guenther  <rguenther@suse.de>
28467         Andrew Pinski  <andrew_pinski@playstation.sony.com>
28468
28469         PR middle-end/30132
28470         * gimplify.c (gimplify_cond_expr): Do not create an addressable
28471         temporary if an rvalue is ok or an lvalue is not required.
28472
28473 2008-01-09  Richard Guenther  <rguenther@suse.de>
28474
28475         PR middle-end/34458
28476         * tree-data-ref.c (initialize_matrix_A): Use tree_low_cst,
28477         adjust return type.
28478
28479 2008-01-09  Richard Guenther  <rguenther@suse.de>
28480
28481         PR middle-end/34679
28482         * tree.c (host_integerp): Check for sizetype only if the
28483         type is an integer type.
28484
28485 2008-01-09  Steven Bosscher  <stevenb.gcc@gmail.com>
28486
28487         PR debug/26364
28488         * opts.c (decode_options): Disable inlining of functions called
28489         once if not in unit-at-a-time mode.
28490
28491 2008-01-09  Alexandre Oliva  <aoliva@redhat.com>
28492
28493         * Makefile.in (dse.o): Remove duplicate $(RECOG_H) dependency.
28494
28495 2008-01-08  Richard Guenther  <rguenther@suse.de>
28496
28497         PR middle-end/31863
28498         * tree-ssa-structalias.c (push_fields_onto_fieldstack): Bail
28499         out early if the result will be unused.
28500
28501 2008-01-08  Uros Bizjak  <ubizjak@gmail.com>
28502
28503         PR target/34709
28504         Revert:
28505
28506         2008-01-05  Uros Bizjak  <ubizjak@gmail.com>
28507         * config/i386/i386.c (ix86_builtin_reciprocal): Remove check
28508         for TARGET_RECIP.
28509
28510 2008-01-08  Jan Sjodin  <jan.sjodin@amd.com>
28511
28512         * config/i386/i386.c (k8_cost, amdfam10_cost): Branch costs
28513         for vectorization tuned.
28514
28515 2008-01-08  Richard Guenther  <rguenther@suse.de>
28516
28517         PR tree-optimization/34683
28518         * tree-ssa-operands.c (operand_build_cmp): Export.
28519         * tree-ssa-operands.h (operand_build_cmp): Declare.
28520         * tree-vn.c (vuses_compare): Remove.
28521         (sort_vuses): Use operand_build_cmp.
28522         (sort_vuses_heap): Likewise.
28523         * tree-ssa-sccvn.c (vuses_to_vec): Use VEC_reserve, not VEC_alloc
28524         to re-use old VEC if available.  Do not sort already sorted VUSEs.
28525         (vdefs_to_vec): Do not sort already sorted VDEFs.
28526
28527 2008-01-08  Jakub Jelinek  <jakub@redhat.com>
28528
28529         PR middle-end/34694
28530         * omp-low.c (copy_var_decl): Copy also DECL_SOURCE_LOCATION.
28531
28532 2008-01-08  Uros Bizjak  <ubizjak@gmail.com>
28533
28534         PR target/34702
28535         * doc/invoke.texi (i386 and x86-64 Options) [mrecip]: Document
28536         limitations of reciprocal sequences on x86 targets.
28537
28538 2008-01-08  Richard Guenther  <rguenther@suse.de>
28539
28540         PR tree-optimization/34683
28541         * tree-flow-inline.h (var_ann): Remove overzealous asserts.
28542
28543 2008-01-07  Jakub Jelinek  <jakub@redhat.com>
28544
28545         PR target/34622
28546         * config/darwin.c (darwin_mergeable_string_section): Don't use
28547         .cstring if int_size_in_bytes != TREE_STRING_LENGTH.
28548
28549 2008-01-07  Uros Bizjak  <ubizjak@gmail.com>
28550
28551         PR target/34682
28552         * config/i386/i386.md (neg<mode>2): Rename from negsf2, negdf2 and
28553         negxf2.  Macroize expander using X87MODEF mode iterator.  Change
28554         predicates of op0 and op1 to register_operand.
28555         (abs<mode>2): Rename from abssf2, absdf2 and negxf2.  Macroize
28556         expander using X87MODEF mode iterator.  Change predicates of
28557         op0 and op1 to register_operand.
28558         ("*absneg<mode>2_mixed", "*absneg<mode>2_sse"): Rename from
28559         corresponding patterns and macroize using MODEF macro.  Change
28560         predicates of op0 and op1 to register_operand and remove
28561         "m" constraint. Disparage "r" alternative with "!".
28562         ("*absneg<mode>2_i387"): Rename from corresponding patterns and
28563         macroize using X87MODEF macro.  Change predicates of op0 and op1
28564         to register_operand and remove "m" constraint.  Disparage "r"
28565         alternative with "!".
28566         (absneg splitter with memory operands): Remove.
28567         ("*neg<mode>2_1", "*abs<mode>2_1"): Rename from corresponding
28568         patterns and macroize using X87MODEF mode iterator.
28569         * config/i386/sse.md (negv4sf2, absv4sf2, neg2vdf2, absv2df2):
28570         Change predicate of op1 to register_operand.
28571         * config/i386/i386.c (ix86_expand_fp_absneg_operator): Remove support
28572         for memory operands.
28573
28574 2008-01-07  Nathan Froyd  <froydnj@codesourcery.com>
28575
28576         * config/rs6000/rs6000.h (ASM_CPU_SPEC): Add clause for mcpu=8548.
28577
28578 2008-01-07  Richard Guenther  <rguenther@suse.de>
28579
28580         * basic-block.h (struct edge_def): Pair dest_idx with goto_locus
28581         fields.
28582
28583 2008-01-07  Richard Guenther  <rguenther@suse.de>
28584
28585         PR tree-optimization/34683
28586         * tree-ssa-sccvn.c (vuses_to_vec): Pre-allocate the vector of
28587         VOPs of the needed size to save memory.  Use VEC_quick_push
28588         to save compile-time.
28589         (vdefs_to_vec): Likewise.
28590
28591 2008-01-07  Sa Liu  <saliu@de.ibm.com>
28592
28593         * config/spu/spu.md (divdf3): Genetate inline code for double
28594         division.  The implementation doesn't handle INF or NAN, therefore it
28595         only applies when -ffinite-math-only is given.
28596
28597 2008-01-06  Paolo Carlini  <pcarlini@suse.de>
28598
28599         PR libstdc++/34680
28600         * c-cppbuiltin.c (c_cpp_builtins): Define __GXX_RTTI, if appropriate.
28601         * doc/cpp.texi ([Common Predefined Macros]): Document.
28602
28603 2008-01-06  Uros Bizjak  <ubizjak@gmail.com>
28604
28605         * config/i386/i386.c (ix86_emit_swsqrtsf): Use negative constants in
28606         order to use commutative addition instead of subtraction.
28607
28608 2008-01-06  Andrew Pinski  <andrew_pinski@playstation.sony.com>
28609             Mircea Namolaru  <namolaru@il.ibm.com>
28610             Vladimir Yanovsky  <yanov@il.ibm.com>
28611             Revital Eres  <eres@il.ibm.com>
28612
28613         PR tree-optimization/34263
28614         * tree-outof-ssa.c (process_single_block_loop_latch,
28615         contains_tree_r): New functions.
28616         (analyze_edges_for_bb): Call process_single_block_loop_latch
28617         function to empty single-basic-block latch block if possible.
28618
28619 2008-01-05  Uros Bizjak  <ubizjak@gmail.com>
28620
28621         * config/i386/i386.c (ix86_builtin_reciprocal): Remove check
28622         for TARGET_RECIP.
28623         (ix86_emit_swsqrtsf): Do not filter out infinity for rsqrt expansion.
28624
28625 2008-01-05  Richard Sandiford  <rsandifo@nildram.co.uk>
28626
28627         * c-omp.c (check_omp_for_incr_expr): Handle CONVERT_EXPR.
28628
28629 2008-01-05  Richard Sandiford  <rsandifo@nildram.co.uk>
28630
28631         * config/mips/mips.c (mips_in_small_data_p): Reinstate size > 0 check.
28632
28633 2008-01-05  Jakub Jelinek  <jakub@redhat.com>
28634
28635         PR tree-optimization/34618
28636         * tree-outof-ssa.c (create_temp): Copy over DECL_GIMPLE_REG_P
28637         flag from T.
28638
28639 2008-01-05  Uros Bizjak  <ubizjak@gmail.com>
28640
28641         PR target/34673
28642         * config/i386/i386.c (ix86_emit_swsqrtsf): Swap input operands
28643         in the call to gen_rtx_NE.  Remove unneeded VECTOR_MODE_P check.
28644         Update copyright year.
28645
28646         * config/i386/i386.md (rsqrtsf2): Enable for TARGET_SSE_MATH.
28647         Update copyright year.
28648         * config/i386/sse.md (rsqrtv4sf2): Ditto. Unconditionally expand
28649         using NR fixup.
28650
28651 2008-01-05  Zhouyi Zhou  <zhouzhouyi@FreeBSD.org>
28652
28653         * tree-vrp.c (find_conditional_asserts): Remove redundant check that
28654         edge does not point to current bb before changing need_assert.
28655
28656 2008-01-04  Richard Guenther  <rguenther@suse.de>
28657
28658         PR middle-end/34029
28659         * tree-cfg.c (verify_expr): Do not look inside ADDR_EXPRs
28660         for verifying purposes if they are is_gimple_min_invariant.
28661
28662 2008-01-04  Aldy Hernandez  <aldyh@redhat.com>
28663
28664         PR tree-optimization/34448
28665         PR tree-optimization/34465
28666         * gimplify.c (gimplify_init_constructor): Add new parameter
28667         notify_temp_creation.  Use it.
28668         (gimplify_modify_expr_rhs): Take volatiles into account when
28669         optimizing constructors.
28670         Do not optimize constructors if gimplify_init_constructor will dump to
28671         memory.
28672         * gcc.dg/tree-ssa/pr32901.c: Tests const volatiles.
28673         * gcc.c-torture/compile/pr34448.c: New.
28674
28675 2008-01-04  Jakub Jelinek  <jakub@redhat.com>
28676
28677         PR gcov-profile/34609
28678         * tree-inline.c (declare_return_variable): Set TREE_ADDRESSABLE on
28679         return_slot if result is TREE_ADDRESSABLE.
28680
28681 2008-01-04  Richard Sandiford  <rsandifo@nildram.co.uk>
28682
28683         * config/mips/mips.md (sqrt_condition): Tweak comment.
28684         (recip_condition): Likewise.  Require TARGET_FLOAT64 for DFmode.
28685
28686 2008-01-03  Tom Tromey  <tromey@redhat.com>
28687
28688         PR c/34457
28689         * c-common.c (c_type_hash): Handle VLAs.
28690
28691 2008-01-03  Jan Hubicka  <jh@suse.cz>
28692
28693         PR tree-optimization/31081
28694         * tree-inline.c (remap_ssa_name): Initialize uninitialized SSA vars to
28695         0 when inlining and not inlining to first basic block.
28696         (remap_decl): When var is initialized to 0, don't set default_def.
28697         (expand_call_inline): Set entry_bb.
28698         * tree-inline.h (copy_body_data): Add entry_bb.
28699
28700 2008-01-03  Jakub Jelinek  <jakub@redhat.com>
28701
28702         PR c++/34619
28703         * cgraphunit.c (cgraph_build_static_cdtor): set_cfun back to NULL
28704         before returning.
28705
28706         PR tree-optimization/29484
28707         * tree-inline.c (inline_forbidden_p_2): New function.
28708         (inline_forbidden_p): Disallow inlining if some static var
28709         has an address of a local LABEL_DECL in its initializer.
28710         * doc/extend.texi (Labels as Values): Document &&foo behaviour
28711         vs. inlining.
28712
28713 2008-01-03  Sebastian Pop  <sebastian.pop@amd.com>
28714
28715         PR tree-optimization/34635
28716         * tree-data-ref.c (add_other_self_distances): Make sure that the
28717         evolution step is constant.
28718
28719 2008-01-03  Jakub Jelinek  <jakub@redhat.com>
28720
28721         PR middle-end/34608
28722         * omp-low.c (expand_omp_parallel): Purge dead EH edges in the child fn.
28723
28724 2008-01-02  Richard Sandiford  <rsandifo@nildram.co.uk>
28725
28726         * tree-sra.c (scalarize_init): Insert the generate_element_init
28727         statements after the generate_element_zero statements.
28728
28729 2008-01-02  Richard Guenther  <rguenther@suse.de>
28730
28731         PR middle-end/34093
28732         PR middle-end/31976
28733         * tree-ssa-operands.c (ssa_operand_alloc): Also allocate a buffer
28734         for very large number of operands instead of ICEing.
28735
28736 2008-01-02  Arthur Norman <acn1@cam.ac.uk>
28737
28738         PR target/34013
28739         * config/i386/i386.c (ix86_expand_prologue): Save red-zone
28740         while stack probing.
28741
28742 2008-01-01  Douglas Gregor  <doug.gregor@gmail.com>
28743
28744         * c-opts.c (sanitize_cpp_opts): Don't warn about "long long" when
28745         in C++0x mode.
28746
28747 2008-01-01  Volker Reichelt  <v.reichelt@netcologne.de>
28748
28749         PR libmudflap/26442
28750         * tree-mudflap.c (mx_register_decls): Guard warning by
28751         !DECL_ARTIFICIAL check.
28752
28753 2008-01-01  Jakub Jelinek  <jakub@redhat.com>
28754
28755         * config/i386/sse.md (sse5_pperm, sse5_pperm_pack_v2di_v4si,
28756         sse5_pperm_pack_v4si_v8hi, sse5_pperm_pack_v8hi_v16qi,
28757         sse5_perm<mode>): Fix constraints.