OSDN Git Service

6c45e497f727fdffb77a088bafcca05ddfdf4217
[pf3gnuchains/gcc-fork.git] / gcc / ChangeLog
1 2008-11-14  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
2
3         * config/spu/spu-elf.h (STANDARD_STARTFILE_PREFIX_2): Disable default.
4         (STANDARD_INCLUDE_DIR): Redefine to "/include".
5         (LOCAL_INCLUDE_DIR): Undefine.
6         * config/spu/t-spu-elf (NATIVE_SYSTEM_HEADER_DIR): Define.
7
8 2008-11-14  Vladimir Makarov  <vmakarov@redhat.com>
9
10         PR rtl-optimization/37397
11         * ira-int.h (struct ira_allocno): New member bad_spill_p.
12         (ALLOCNO_BAD_SPILL_P): New macro.
13
14         * ira-color.c (push_allocnos_to_stack): Check ALLOCNO_BAD_SPILL_P.
15
16         * ira-build.c (ira_create_allocno): Initialize
17         ALLOCNO_BAD_SPILL_P.
18         (create_cap_allocno, propagate_allocno_info,
19         remove_unnecessary_allocnos): Set up or update
20         ALLOCNO_BAD_SPILL_P.
21         (update_bad_spill_attribute): New function.
22         (ira_build): Call it.
23
24         * ira-costs.c (record_reg_classes): Set up ALLOCNO_BAD_SPILL_P.
25         
26 2008-11-14  Jakub Jelinek  <jakub@redhat.com>
27
28         PR tree-optimization/38104
29         * gimplify.c (gimple_regimplify_operands): Add referenced vars
30         before calling mark_symbols_for_renaming, not after it.
31
32 2008-11-14  Kaz Kojima  <kkojima@gcc.gnu.org>
33
34         * config/sh/sh.h (OPTIMIZATION_OPTIONS): Revert last change.
35         (OVERRIDE_OPTIONS): Likewise.
36
37 2008-11-14  Maxim Kuvyrkov  <maxim@codesourcery.com>
38             Andrew Stubbs  <ams@codesourcery.com>
39             Gunnar Von Boehn  <gunnar@genesi-usa.com>
40
41         PR target/36134
42         * config/m68k/m68k.md (addsi3_5200): Add a new alternative preferring
43         the shorter LEA insn over ADD.L where possible.
44
45 2008-11-14  Thomas Schwinge  <tschwinge@gnu.org>
46
47         * configure.ac (gcc_cv_libc_provides_ssp): Also consider GNU/Hurd
48         systems, which are assumend to always provide SSP-support in glibc.
49         * configure: Regenerate.
50
51         * configure.ac (gcc_cv_libc_provides_ssp): Also consider GNU/kFreeBSD,
52         GNU/kNetBSD systems in the `*-*-linux*' case.
53         * configure: Regenerate.
54
55 2008-11-14  Jakub Jelinek  <jakub@redhat.com>
56
57         PR middle-end/36125
58         * function.c (gimplify_parameters): For callee copies parameters,
59         move TREE_ADDRESSABLE flag from the PARM_DECL to the local copy.
60
61 2008-11-13  Thomas Schwinge  <tschwinge@gnu.org>
62
63         PR target/28102
64         * config.gcc (*-*-gnu*): Move Alpha parts into the `alpha*-*-gnu*', x86
65         parts into the `i[34567]86-*-linux*' and parts that are independent of
66         the processor architecture into the `*-*-linux*' cases.
67         (*-*-linux*): Consider `linux.opt' only for Linux-based configurations.
68         * config/i386/gnu.h (GLIBC_DYNAMIC_LINKER): Redefine.
69         (TARGET_OS_CPP_BUILTINS, LINK_SPEC): Don't redefine.
70         [TARGET_LIBC_PROVIDES_SSP] (TARGET_THREAD_SSP_OFFSET): Undefine.
71         * config/gnu.h (NO_IMPLICIT_EXTERN_C): Don't redefine.
72         (HURD_TARGET_OS_CPP_BUILTINS): Don't define, but instead...
73         (LINUX_TARGET_OS_CPP_BUILTINS): Redefine.
74
75 2008-11-13  Ruan Beihong  <ruanbeihong@gmail.com>
76
77         * config/mips/loongson.md (<u>div<mode>3, <u>mod<mode>3): New patterns.
78         * config/mips/loongson2ef.md (ls2_imult): Handle imul3nc.
79         (ls2_idiv): Likewise idiv3.
80         (ls2_prefetch): New reservation.
81         * config/mips/mips.h (ISA_HAS_PREFETCH): Add TARGET_LOONGSON_2EF.
82         * config/mips/mips.md (type): Add imul3nc and idiv3.
83         (length): Handle idiv3.
84         (any_mod): New code_iterator.
85         (u): Handle MOD and UMOD.
86         (mul<mode>3): Generate mul<mode>3_mul3_ls2ef on Loongson targets.
87         (prefetch): Handle TARGET_LOONGSON_2EF.
88
89 2008-11-13  Jakub Jelinek  <jakub@redhat.com>
90
91         PR c++/27017
92         * dwarf2out.c (prune_unused_types_walk_local_classes): New function.
93         (prune_unused_types_walk): Call it for non-perennial local classes.
94         Set die_mark to 2 if recursing on children.  If die_mark is 1 on
95         entry, just set it to 2 and recurse on children, don't walk attributes
96         again.
97
98 2008-11-13  Martin Michlmayr  <tbm@cyrius.com>
99
100         * c-common.c (warn_about_parentheses): Add missing whitespace
101         in warning.
102
103 2008-11-13  Paul Brook  <paul@codesourcery.com>
104
105         * doc/invoke.texi: Document --fix-cortex-m3.
106         * config/arm/arm.c (arm_override_options): Set fix_cm3_ldrd if
107         Cortex-M3 cpu is selected.
108         (output_move_double): Avoid overlapping base register and first
109         destination register when fix_cm3_ldrd.
110         * config/arm/arm.opt: Add mfix-cortex-m3-ldrd.
111
112 2008-11-13  Jakub Jelinek  <jakub@redhat.com>
113
114         PR bootstrap/38100
115         * gimple.h (gimple_range_check_failed): Remove prototype.
116         * gimple.c (gimple_check_failed): Don't check GCC_VERSION
117         in guarding #if.
118         (gimple_range_check_failed): Removed.
119
120 2008-11-13  Andrew Haley  <aph@redhat.com>
121
122         PR bootstrap/38088
123         * mcf.c (CAP_INFINITY): Use HOST_WIDEST_INT maximum, not GCC specific
124         __LONG_LONG_MAX__.
125
126 2008-11-12  Jakub Jelinek  <jakub@redhat.com>
127
128         PR c++/36478
129         Revert:
130         2007-05-07  Mike Stump  <mrs@apple.com>
131         * doc/invoke.texi (Warning Options): Document that -Wempty-body
132         also checks for and while statements in C++.
133
134 2008-11-12  Dodji Seketeli  <dodji@redhat.com>
135
136         PR debug/27574
137         * cgraph.h: New abstract_and_needed member to struct cgraph_node.
138         * cgraphunit.c (cgraph_analyze_functions): Flag abstract functions
139         - which clones are reachable - as "abstract and needed".
140         * cgraph.c (cgraph_release_function_body):  If a node is
141         "abstract and needed", do not release its DECL_INITIAL() content
142         that will be needed to emit debug info.
143
144 2008-11-12  Steve Ellcey  <sje@cup.hp.com>
145
146         PR target/27880
147         * configure.ac (GCC_CHECK_UNWIND_GETIPINFO): Use this macro
148         to set HAVE_GETIPINFO.
149         * aclocal.m4: Include ../config/unwind_ipinfo.m4.
150         * configure: Regenerate.
151         * config.in: Regenerate.
152
153 2008-11-12  Jack Howarth  <howarth@bromo.med.uc.edu>
154
155         PR bootstrap/38010
156         * gcc/config.gcc: Use darwin9.h on darwin10 as well.
157
158 2008-11-12  Jakub Jelinek  <jakub@redhat.com>
159
160         Revert:
161         2008-10-21  Jakub Jelinek  <jakub@redhat.com>
162         * gimplify.c (gimplify_expr): Drop TREE_OVERFLOW from INTEGER_CSTs.
163
164 2008-11-12  Jason Merrill  <jason@redhat.com>
165
166         PR c++/38007
167         * c-common.c (c_common_signed_or_unsigned_type): Remove C++
168         special casing.
169
170 2008-11-12  Anatoly Sokolov  <aesok@post.ru>
171
172         * config/avr/avr.c (avr_mcu_t): Add atmega16hvb, atmega32hvb,
173         atmega4hvd, atmega8hvd, atmega64c1, atmega64m1, atmega16u4 and
174         atmega32u6 devices.
175         * config/avr/avr.h (LINK_SPEC, CRT_BINUTILS_SPECS): (Ditto.).
176         * config/avr/t-avr (MULTILIB_MATCHES): (Ditto.).
177
178 2008-11-12  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
179
180         * gcc/config/s390/s390.h (INITIAL_FRAME_ADDRESS_RTX): Remove
181         packed-stack special handling.
182         (FRAME_ADDR_RTX): Add definition.
183
184 2008-11-12  Jakub Jelinek  <jakub@redhat.com>
185
186         PR target/35366
187         * fold-const.c (native_encode_string): New function.
188         (native_encode_expr): Use it for STRING_CST.
189
190 2008-11-12  DJ Delorie  <dj@redhat.com>
191
192         * config/m32c/cond.md (cond_to_int peephole2): Don't eliminate the
193         insns if the intermediate value will be used later.
194
195 2008-11-12  Andreas Schwab  <schwab@suse.de>
196
197         * config/m68k/m68k.c (print_operand): Mask off extra extension
198         bits when writing out the representation of real values.
199
200 2008-11-12  Ira Rosen  <irar@il.ibm.com>
201
202         PR tree-optimization/38079
203         * tree-vect-analyze.c (vect_analyze_data_refs): Replace dump_file
204         with vect_dump.
205
206 2008-11-12  Jakub Jelinek  <jakub@redhat.com>
207
208         PR c++/35334
209         * c-pretty-print.c (pp_c_complex_expr): New function.
210         (pp_c_postfix_expression) <case COMPLEX_EXPR>: Call it.
211
212         PR target/35366
213         * expr.c (expand_expr_addr_expr_1): If EXP needs bigger alignment
214         than INNER and INNER is a constant, forcibly align INNER as much
215         as needed.
216
217 2008-11-11  Richard Sandiford  <rdsandiford@googlemail.com>
218
219         * cse.c (fold_rtx): Remove redundant gen_rtx_CONST.
220
221 2008-11-11  Richard Sandiford  <rdsandiford@googlemail.com>
222
223         PR rtl-optimization/37363
224         * simplify-rtx.c (simplify_plus_minus): Don't create (const (minus ...))
225         expresisons.
226
227 2008-11-11  Eric Botcazou  <ebotcazou@adacore.com>
228
229         * ira-lives.c (process_bb_node_lives): Restore EH_RETURN_DATA_REGNO
230         handling.
231
232 2008-11-10  Catherine Moore  <clm@codesourcery.com>
233
234         * config.gcc (mips64vrel-*-elf*): Include the tm_file
235         prior to vr.h.
236         * config/mips/linux.h (LINUX_DRIVER_SELF_SPECS): New.
237         (BASE_DRIVER_SELF_SPECS): Remove.
238         (DRIVER_SELF_SPECS): New definition.
239         * config/mips/elfoabi.h: (DRIVER_SELF_SPECS): Include
240         BASE_DRIVER_SELF_SPECS.
241         * config/mips/sde.h: Likewise.
242         * config/mips/iris6.h: Likewise.
243         * config/mips/vr.h: Likewise.
244         * config/mips/mips.h (BASE_DRIVER_SELF_SPECS): New. 
245
246 2008-11-10  Vladimir Makarov  <vmakarov@redhat.com>
247
248         PR rtl-optimizations/37948
249         * ira-int.h (struct ira_allocno_copy): New member constraint_p.
250         (ira_create_copy, ira_add_allocno_copy): New parameter.
251
252         * ira-conflicts.c (process_regs_for_copy): New parameter.  Pass it
253         to ira_add_allocno_copy.
254         (process_reg_shuffles, add_insn_allocno_copies): Pass a new
255         parameter to process_regs_for_copy.
256         (propagate_copies): Pass a new parameter to ira_add_allocno_copy.
257         Fix typo in passing second allocno to ira_add_allocno_copy.
258
259         * ira-color.c (update_conflict_hard_regno_costs): Use head of
260         coalesced allocnos list.
261         (assign_hard_reg): Ditto.  Check that assigned allocnos are not in
262         the graph.
263         (add_ira_allocno_to_bucket): Rename to add_allocno_to_bucket.
264         (add_ira_allocno_to_ordered_bucket): Rename to
265         add_allocno_to_ordered_bucket.
266         (push_ira_allocno_to_stack): Rename to push_allocno_to_stack.  Use
267         head of coalesced allocnos list.
268         (push_allocnos_to_stack): Remove calculation of ALLOCNO_TEMP.
269         Check that it is aready calculated.
270         (push_ira_allocno_to_spill): Rename to push_ira_allocno_to_spill.
271         (setup_allocno_left_conflicts_num): Use head of coalesced allocnos
272         list.
273         (coalesce_allocnos): Do extended coalescing too.
274
275         * ira-emit.c (add_range_and_copies_from_move_list): Pass a new
276         parameter to ira_add_allocno_copy.
277
278         * ira-build.c (ira_create_copy, ira_add_allocno_copy): Add a new
279         parameter.
280         (print_copy): Print copy origination too.
281
282         * ira-costs.c (scan_one_insn): Use alloc_pref for load from
283         equivalent memory.
284         
285 2008-11-10  Kaz Kojima  <kkojima@gcc.gnu.org>
286
287         PR rtl-optimization/37514
288         * config/sh/sh.h (OPTIMIZATION_OPTIONS): Set
289         flag_ira_share_spill_slots to 2 if it's already non-zero.
290         (OVERRIDE_OPTIONS): Clear flag_ira_share_spill_slots if
291         flag_ira_share_spill_slots is 2.
292
293 2008-11-10  Kevin Buettner  <kevinb@redhat.com>
294
295         * config/m32c/prologue.md (prologue_enter_16): Set FB to SP - 2.
296         (prologue_enter_32): Set FB to SP - 4.
297
298 2008-11-10  DJ Delorie  <dj@redhat.com>
299
300         * config/m32c/m32c.c (m32c_const_ok_for_constraint_p): Add ImB
301         constraint for single-bit-clear in lower byte of HI constant, vs
302         Imb which just ignores the upper byte.
303         * config/m32c/predicates.md (m32c_1mask8_operand): Use it.
304         * config/m32c/bitops.md (andhi3_16, andhi3_24): Use it.
305         (iorhi3_16): Check for single bit set, not single bit clear.
306
307 2008-11-10  Janis Johnson  <janis187@us.ibm.com>
308
309         * doc/sourcebuild.texi (Torture Tests): Fix formatting for bullets.
310
311         * doc/sourcebuild.texi (Torture Tests): Fix formatting in example.
312
313 2008-11-10  Eric Botcazou  <ebotcazou@adacore.com>
314
315         * calls.c (store_unaligned_arguments_into_pseudos): Deal only with
316         values living in memory and use more precise alignment information.
317
318 2008-11-10  Jakub Jelinek  <jakub@redhat.com>
319
320         PR middle-end/35314
321         * tree-mudflap.c (mf_build_check_statement_for): Split then_block
322         after __mf_check call if the call must end a bb.
323
324 2008-11-10  Ralph Loader  <suckfish@ihug.co.nz>
325
326         PR middle-end/37807
327         PR middle-end/37809
328         * combine.c (force_to_mode): Do not process vector types.
329
330         * rtlanal.c (nonzero_bits1): Do not process vector types.
331         (num_sign_bit_copies1): Likewise.
332
333 2008-11-09  Thomas Schwinge  <tschwinge@gnu.org>
334
335         * config/i386/gnu.h: Add copyright and licensing header.
336         * config/gnu.h: Likewise.
337
338 2008-11-07  Andrew Pinski  <andrew_pinski@playstation.sony.com>
339
340         * fwprop.c (fwprop_done): Call df_remove_problem.
341
342 2008-11-07  Sebastian Pop  <sebastian.pop@amd.com>
343
344         PR middle-end/37379
345         * tree-scalar-evolution.c (instantiate_scev_1): Return
346         chrec_dont_know for VL_EXP_CLASS_P.
347         
348 2008-11-06  Uros Bizjak  <ubizjak@gmail.com>
349
350         * reg-stack.c (reg_to_stack): Add missing braces in memset
351         size calculation.
352
353 2008-11-06  Andrew Stubbs  <ams@codesourcery.com>
354
355         * config/arm/bpabi.h (PROFILE_HOOK): New undef.
356         (NO_PROFILE_COUNTERS): New define.
357
358 2008-11-06  David Edelsohn  <edelsohn@gnu.org>
359
360         PR target/26397
361         * config/rs6000/aix.h (LIBSTDCXX_STATIC): Define.
362         
363 2008-11-06  Kazu Hirata  <kazu@codesourcery.com>
364
365         PR target/35574
366         * config/sparc/constraints.md (D): New.
367         * config/sparc/predicates.md (const_double_or_vector_operand): New.
368         * config/sparc/sparc.c (sparc_extra_constraint_check): Handle the
369         'D' constraint.
370         * config/sparc/sparc.md (*movdf_insn_sp32_v9, *movdf_insn_sp64):
371         Use the 'D' constraint in addition to 'F' in some alternatives.
372         (DF splitter): Generalize for V64mode.
373         * doc/md.texi (SPARC): Document the 'D' constraint.
374
375 2008-11-06  Uros Bizjak  <ubizjak@gmail.com>
376
377         * reg-stack.c (reg_to_stack): Generate +QNaN using real_nan.
378
379 2008-11-06  Ben Elliston  <bje@au.ibm.com>
380
381         * gcc.c: Remove ancient comment about a bug in Sun cc.
382
383 2008-11-05  Janis Johnson  <janis187@us.ibm.com>
384
385         * doc/sourcebuild.texi (Torture Tests): Add ADDITIONAL_TORTURE_OPTIONS.
386
387 2008-11-06  Ben Elliston  <bje@au.ibm.com>      
388
389         * config/rs6000/rs6000.c (rs6000_override_options): Comment fix.
390
391 2008-11-06  Ben Elliston  <bje@au.ibm.com>
392
393         * config/rs6000/rs6000.opt (mwarn-cell-microcode): Improve option
394         description.
395
396 2008-11-05  Hans-Peter Nilsson  <hp@axis.com>
397
398         PR target/38016
399         * config/cris/cris.c (cris_order_for_addsi3): Test for !REG_P, not
400         just MEM_P.
401
402 2008-11-05  Martin Jambor  <mjambor@suse.cz>
403
404         PR middle-end/37861
405         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Don't turn
406         pointer arithmetics into array_ref if the array is accessed
407         through an indirect_ref.
408
409 2008-11-05  Richard Guenther  <rguenther@suse.de>
410
411         PR middle-end/37742
412         * tree-ssa.c (useless_type_conversion_p_1): Check different restrict
413         qualified pointer conversion before stripping qualifiers.
414         * gimplify.c (create_tmp_from_val): Use correctly qualified type.
415         * tree-flow.h (may_propagate_address_into_dereference): Declare.
416         * tree-ssa-ccp.c (may_propagate_address_into_dereference): New
417         function.
418         (ccp_fold): Use it.
419         * tree-ssa-forwprop.c (rhs_to_tree): Remove useless conversions,
420         properly canonicalize binary ops.
421         (forward_propagate_addr_expr_1): Use
422         may_propagate_address_into_dereference.
423
424 2008-11-05  Uros Bizjak  <ubizjak@gmail.com>
425
426         PR middle-end/37286
427         * reg-stack.c (subst_stack_regs_pat) [MINUS, DIV, MULT, PLUS]:
428         Initialize uninitialized input registers with a NaN.
429
430 2008-11-05  Tobias Grosser  <grosser@fim.uni-passau.de>
431
432         PR middle-end/37833
433
434         * graphite.c (scan_tree_for_params): Add POINTER_PLUS_EXPR.
435
436 2008-11-05  Tobias Grosser  <grosser@fim.uni-passau.de>
437
438         PR middle-end/37943
439
440         * graphite.c (scopdet_basic_block_info): Fix loops with multiple
441         exits and conditions.
442         * testsuite/gcc.dg/graphite/pr37943.c: New.
443
444 2008-11-04  Jakub Jelinek  <jakub@redhat.com>
445             Andrew Pinski  <andrew_pinski@playstation.sony.com>
446
447         PR c/35430
448         * c-common.c (warn_for_sign_compare): For complex result_type
449         use component's type.
450
451 2008-11-04  Jakub Jelinek  <jakuB@redhat.com>
452
453         * print-tree.c (print_node): Use code instead of TREE_CODE (node).
454
455         * print-tree.c (print_node): Don't print DECL_INITIAL
456         for PARM_DECL.
457
458         PR c/37106
459         * c-common.c (parse_optimize_options): Save and restore
460         flag_strict_aliasing around decode_options call.
461
462 2008-11-04  Uros Bizjak  <ubizjak@gmail.com>
463
464         * config/i386/driver-i386.c (enum vendor_signatures): New enum.
465         (host_detect_local_cpu): Use it instead of casted strings to
466         compare vendor signatures.
467
468 2008-11-03  Mikael Pettersson  <mikpe@it.uu.se>
469
470         PR target/37989
471         * config/i386/mingw32.h (REAL_LIBGCC_SPEC): Only add libgcc_s.a
472         or libgcc_eh.a to spec if ENABLE_SHARED_LIBGCC.
473
474 2008-11-03  Catherine Moore  <clm@codesourcery.com>
475
476         * config/mips.c (mips_conditional_register_usage):  Handle the
477         DSP control register.
478         * doc/extend.texi: Document the DSP control register.
479
480 2008-11-03  Steve Ellcey <sje@cup.hp.com>
481             Jakub Jelinek  <jakub@redhat.com>
482
483         * omp-low.c (expand_omp_for_generic): If iter_type has different
484         precision than type and type is a pointer type, cast n1 and n2
485         first to an integer type with the same precision as pointers
486         and only afterwards to iter_type.
487
488 2008-11-03  Richard Sandiford  <rdsandiford@googlemail.com>
489
490         * config/arm/arm.md (UNSPEC_PIC_BASE): Update documentation.
491         (UNSPEC_GOTSYM_OFF): New unspec.
492         (pic_add_dot_plus_four): Simplify the UNSPEC_PIC_BASE operands.
493         (pic_add_dot_plus_eight): Likewise.
494         (tls_load_dot_plus_eight): Likewise.  Update peephole2.
495         * config/arm/thumb2.md (pic_load_dot_plus_four): Simplify the
496         UNSPEC_PIC_BASE operands.
497         * config/arm/arm.c (arm_load_pic_register): Use UNSPEC_GOTSYM_OFF.
498         (arm_output_addr_const_extra): Handle it.
499
500 2008-11-03  Eric Botcazou  <ebotcazou@adacore.com>
501
502         * config/i386/i386.c (classify_argument) <ARRAY_TYPE>: Promote partial
503         integer class to full integer class if the offset is not word-aligned.
504
505 2008-11-03  Andrew Pinski  <andrew_pinski@playstation.sony.com>
506
507         PR rtl-opt/37782
508         * loop-doloop.c (doloop_modify): Add from_mode argument that says what
509         mode count is in.
510         (doloop_optimize): Update call to doloop_modify.
511
512 2008-11-03  Eric Botcazou  <ebotcazou@adacore.com>
513
514         * tree-sra.c (bitfield_overlaps_p): Fix oversight.
515
516 2008-11-03  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
517
518         PR other/37463
519         * configure.ac (gcc_cv_ld_ro_rw_mix): Move before
520         gcc_cv_as_cfi_directive.
521         (gcc_cv_as_cfi_directive) [*-*-solaris*]: Check if linker supports
522         merging read-only and read-write sections or assembler emits
523         read-write .eh_frame sections.
524         * configure: Regenerate.
525         
526 2008-11-03  Nathan Froyd  <froydnj@codesourcery.com>
527
528         Revert:
529         2008-10-31  Nathan Froyd  <froydnj@codesourcery.com>
530
531         * config/rs6000/rs6000.c (no_global_regs_above): Fix precedence
532         problem.
533         (rs6000_emit_prologue): Invert logic.
534         * config/rs6000/rs6000.md (*save_gpregs_<mode>): Use explicit
535         (reg:P 11) instead of match_operand.
536         (*save_fpregs_<mode>): Likewise.
537         (*restore_gpregs_<mode>): Likewise.
538         (*return_and_restore_gpregs_<mode>): Likewise.
539         (*return_and_restore_fpregs_<mode>): Likewise.
540         * config/rs6000/spe.md (*save_gpregs_spe): Use explicit
541         (reg:P 11) insted of match_operand.
542         (*restore_gpregs_spe): Likewise.
543         (*return_and_restore_gpregs_spe): Likewise.
544
545 2008-11-03  Harsha Jagasia  <harsha.jagasia@amd.com>
546
547         PR tree-optimization/37684
548         * gcc.dg/graphite/pr37684.c: New.
549         * graphite.c (exclude_component_ref): New.
550         (is_simple_operand): Call exclude_component_ref.
551
552 2008-11-03  Sebastian Pop  <sebastian.pop@amd.com>
553
554         PR tree-optimization/36908
555         * testsuite/gcc.dg/tree-ssa/pr36908.c: New.
556         * tree-loop-distribution.c (number_of_rw_in_rdg): New.
557         (number_of_rw_in_partition): New.
558         (partition_contains_all_rw): New.
559         (ldist_gen): Do not distribute when one of the partitions
560         contains all the memory operations.
561
562 2008-11-03  Sebastian Pop  <sebastian.pop@amd.com>
563
564         * cfghooks.c (split_block): Set BB_IRREDUCIBLE_LOOP and
565         EDGE_IRREDUCIBLE_LOOP.
566
567 2008-11-03  Bernd Schmidt  <bernd.schmidt@analog.com>
568
569         * config/bfin/bfin.c (bfin_optimize_loop): Properly handle case
570         where we have one entry point in the loop which isn't the head.
571
572 2008-11-03  Richard Guenther  <rguenther@suse.de>
573
574         PR middle-end/37573
575         * tree-data-ref.c (split_constant_offset_1): Fix tuplification.
576
577 2008-11-03  Jakub Jelinek  <jakub@redhat.com>
578
579         PR middle-end/37858
580         * passes.c (execute_one_pass): Don't look at cfun->curr_properties
581         for ipa and simple ipa passes.
582
583 2008-11-02  Richard Guenther  <rguenther@suse.de>
584
585         PR tree-optimization/37542
586         * tree-ssa-pre.c (fully_constant_expression): Handle more cases.
587         * tree-ssa-sccvn.c (vn_get_expr_for): Fix typo.
588         (vn_nary_op_lookup_stmt): Adjust for unary reference trees.
589         (vn_nary_op_insert_stmt): Likewise.
590         (visit_use): Likewise.
591
592 2008-11-02  Anatoly Sokolov  <aesok@post.ru>
593
594         * config/avr/avr.md (UNSPEC_SWAP): Remove constants.
595         (*swap): Remove.
596         (rotlqi3, *rotlqi3_4, rotlhi3, *rotlhi3_8,
597         rotlsi3, *rotlsi3_8, *rotlsi3_16, *rotlsi3_24): New patterns.
598         (ashlqi3_const4, ashlqi3_const5, ashlqi3_const6, ashlqi3_l_const4,
599         ashlqi3_l_const5, ashlqi3_l_const6, lshrqi3_const4, lshrqi3_const5,
600         lshrqi3_const6, lshrqi3_l_const4, lshrqi3_l_const4, lshrqi3_l_const6
601         peephole2's): Replace unspec with rotate.
602         * config/avr/avr.c (avr_rtx_costs): Add ROTATE.
603
604 2008-11-02  Richard Guenther  <rguenther@suse.de>
605
606         PR tree-optimization/37991
607         * tree-ssa-sccvn.h (copy_vuses_from_stmt): Remove.
608         * tree-ssa-sccvn.c (copy_vuses_from_stmt): Make static.
609         (set_ssa_val_to): Print if the value changed.
610         (simplify_binary_expression): Strip useless conversions.
611
612 2008-11-01  Hans-Peter Nilsson  <hp@axis.com>
613
614         PR target/37939
615         * config/cris/cris.c (cris_rtx_costs) <MULT>: Return 0 for an ADDI
616         operand.
617
618 2008-11-01  Richard Guenther  <rguenther@suse.de>
619
620         PR middle-end/37976
621         * builtins.c (fold_builtin_strspn): Return a size_t.
622         (fold_builtin_strcspn): Likewise.
623
624 2008-10-31  Nathan Froyd  <froydnj@codesourcery.com>
625
626         * config/rs6000/rs6000.c (rs6000_file_start): Output gnu
627         attribute for struct return convention.
628
629 2008-10-31  Nathan Froyd  <froydnj@codesourcery.com>
630
631         * config/rs6000/crtsavres.asm: Really, really delete.
632
633 2008-10-31  Nathan Froyd  <froydnj@codesourcery.com>
634
635         * config/rs6000/rs6000.c (no_global_regs_above): Fix precedence
636         problem.
637         (rs6000_emit_prologue): Invert logic.
638         * config/rs6000/rs6000.md (*save_gpregs_<mode>): Use explicit
639         (reg:P 11) instead of match_operand.
640         (*save_fpregs_<mode>): Likewise.
641         (*restore_gpregs_<mode>): Likewise.
642         (*return_and_restore_gpregs_<mode>): Likewise.
643         (*return_and_restore_fpregs_<mode>): Likewise.
644         * config/rs6000/spe.md (*save_gpregs_spe): Use explicit
645         (reg:P 11) insted of match_operand.
646         (*restore_gpregs_spe): Likewise.
647         (*return_and_restore_gpregs_spe): Likewise.
648
649 2008-10-28  Luis Machado  <luisgpm@br.ibm.com>
650
651         * gcc.h (DEFAULT_WORD_SWITCH_TAKES_ARG): Add "dumpbase" to the
652         list of word switches that take args.
653
654 2008-10-30  Jakub Jelinek  <jakub@redhat.com>
655
656         * config/s390/s390.c (s390_mark_symbol_ref_as_used): New function.
657         (s390_output_pool_entry): Call it through for_each_rtx.
658
659         PR middle-end/37730
660         * expr.c (store_constructor): For vectors, if target is a MEM, use
661         target's MEM_ALIAS_SET instead of elttype alias set.
662
663 2008-10-29  Kaz Kojima  <kkojima@gcc.gnu.org>
664
665         PR target/37909
666         * config/sh/sh.c (untangle_mova): Return -1 when NEW_MOVA has
667         no address.
668
669 2008-10-29  David Edelsohn  <edelsohn@gnu.org>
670
671         PR target/37878
672         * config/rs6000/predicates.md (word_offset_memref_operand):
673         Restructure code and look inside auto-inc/dec addresses.
674         
675 2008-10-29  Steve Ellcey  <sje@cup.hp.com>
676
677         PR target/32277
678         * libgcov.c ( __gcov_indirect_call_profiler): Check
679         TARGET_VTABLE_USES_DESCRIPTORS.
680
681 2008-10-29  Stefan Schulze Frielinghaus  <xxschulz@de.ibm.com>
682
683         * config/spu/spu.h (FRAME_GROWS_DOWNWARD): Define.
684         (INITIAL_FRAME_POINTER_OFFSET): Remove.
685         * config/spu/spu.c (spu_initial_elimination_offset): Calculate new
686         offset if eliminating soft frame pointer.
687         * config/spu/spu.md (stack_protect_set, stack_protect_test)
688         (stack_protect_test_si): Add initial machine description
689         for Stack Smashing Protector
690
691 2008-10-29  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
692
693         PR 11492
694         * c-common.c (min_precision): Move to...
695         * tree.c (tree_int_cst_min_precision): ... to here. Renamed.
696         * tree.h (tree_int_cst_min_precision): Declare.
697         * c-common.h (min_precision): Delete declaration.
698         * fold-const.c (tree_binary_nonnegative_warnv_p): Handle
699         multiplication of non-negative integer constants.
700         * c-decl.c (check_bitfield_type_and_width): Rename min_precision to
701         tree_int_cst_min_precision.
702         (finish_enum): Likewise.
703
704 2008-10-29  Joseph Myers  <joseph@codesourcery.com>
705
706         PR middle-end/36578
707         * convert.c (convert_to_real): Do not optimize conversions of
708         binary arithmetic operations between binary and decimal
709         floating-point types.  Consider mode of target type in determining
710         decimal type for arithmetic.  Unless
711         flag_unsafe_math_optimizations, do not optimize binary conversions
712         where this may change rounding behavior.
713         * real.c (real_can_shorten_arithmetic): New.
714         * real.h (real_can_shorten_arithmetic): Declare.
715
716 2008-10-29  Bernd Schmidt  <bernd.schmidt@analog.com>
717         
718         * config/bfin/bfin-protos.h (WA_05000257, WA_05000283, WA_05000315,
719         ENABLE_WA_05000257, ENABLE_WA_05000283, ENABLE_WA_05000315): New.
720         * config/bfin/bfin.c (bfin_cpus): Add these workaround bits as
721         appropriate.
722         (must_save_p): For some workarounds, interrupts need to clobber a
723         P register.
724         (expand_prologue_reg_save, expand_epilogue_reg_restore): Save LC0
725         and LC1 for WA_05000257.
726         (expand_interrupt_handler_prologue): Add dummy read of CHIPID for
727         WA_05000283 and WA_05000315.
728         * config/bfin/bfin.md (UNSPEC_VOLATILE_DUMMY): New constant.
729         (movbi): Add alternative to set CC to 1; improve code for setting
730         CC to 0.
731         (dummy_load): New pattern.
732
733 2008-10-29  Jakub Jelinek  <jakub@redhat.com>
734
735         PR middle-end/37870
736         * expmed.c (extract_bit_field_1): If int_mode_for_mode returns
737         BLKmode for non-memory, convert using a wider MODE_INT mode
738         or through memory.
739
740         PR middle-end/37913
741         * tree-cfgcleanup.c (split_bbs_on_noreturn_calls): Only split bbs
742         that haven't been removed yet.
743
744 2008-10-29  Bernd Schmidt  <bernd.schmidt@analog.com>
745
746         * config/bfin/bfin.c (struct machine_function): New member
747         has_loopreg_clobber.
748         (bfin_expand_movmem): Set it when generating memcpy insns.
749         (n_regs_saved_by_prologue, expand_prologue_reg_save,
750         expand_epilogue_reg_restore): If we have hardware loops,
751         memcpy insns (indicated by has_loopreg_clobber) or function
752         calls, we need to save the loop registers.
753
754 2008-10-28  H.J. Lu  <hongjiu.lu@intel.com>
755
756         * config/i386/i386.c (core2_cost): Fix typos in comments.
757
758 2008-10-28  Jakub Jelinek  <jakub@redhat.com>
759
760         PR c/37924
761         * combine.c (make_compound_operation): Don't call make_extraction with
762         non-positive length.
763         (simplify_shift_const_1): Canonicalize count even if complement_p.
764
765 2008-10-28  Joseph Myers  <joseph@codesourcery.com>
766
767         * convert.c (strip_float_extensions): Do not remove or introduce
768         conversions between binary and decimal floating-point types.
769
770 2008-10-28  Jakub Jelinek  <jakub@redhat.com>
771
772         PR middle-end/37931
773         * fold-const.c (distribute_bit_expr): Convert common, left and
774         right arguments to type.
775
776 2008-10-28  Nick Clifton  <nickc@redhat.com>
777
778         * config/mn10300/mn10300.h (CALL_REALLY_USED_REGISTERS): Define.
779         * config/mn10300/mn10300.c (fp_regs_to_save): Test the
780         call_really_used_regs array rather than the call_used_regs array.
781         (mn10300_get_live_callee_saved_regs, expand_prologue,
782         expand_epilogue, output_tst): Likewise.
783
784 2008-10-27  Jakub Jelinek  <jakub@redhat.com>
785
786         PR target/37378
787         * df-scan.c (df_bb_refs_collect): Don't handle EH_USES here.
788         (df_get_entry_block_def_set): Neither here.
789         (df_get_regular_block_artificial_uses): Add EH_USES registers.
790
791         PR tree-optimization/37879
792         * predict.c (tree_estimate_probability): Check if last_stmt is
793         non-NULL before dereferencing it.
794
795 2008-10-27  Vladimir Makarov  <vmakarov@redhat.com>
796
797         * ira-int.h (ira_allocno): Add member updated_cover_class_cost.
798         (ALLOCNO_UPDATED_COVER_CLASS_COST): New.
799         (ira_fast_allocation): Remove the prototype.
800         
801         * ira-color.c (update_copy_costs, allocno_cost_compare_func,
802         assign_hard_reg, calculate_allocno_spill_cost): Use updated costs.
803         (color_pass): Modify the updated costs.
804         (ira_color): Rename to color.  Make it static.
805         (ira_fast_allocation): Rename to fast_allocation.  Make it static.
806         (ira_color): New function.
807         
808         * ira-conflicts.c (process_regs_for_copy): Propagate hard reg cost
809         change.
810
811         * ira-lives.c (last_call_num, allocno_saved_at_call): New
812         variables.
813         (set_allocno_live, clear_allocno_live, mark_ref_live,
814         mark_ref_dead): Invalidate corresponding element of
815         allocno_saved_at_call.
816         (process_bb_node_lives): Increment last_call_num.  Setup
817         allocno_saved_at_call.  Don't increase ALLOCNO_CALL_FREQ if the
818         allocno was already saved.
819         (ira_create_allocno_live_ranges): Initiate last_call_num and
820         allocno_saved_at_call.
821
822         * ira-build.c (ira_create_allocno): Initiate
823         ALLOCNO_UPDATED_COVER_CLASS_COST.
824         (create_cap_allocno, propagate_allocno_info,
825         remove_unnecessary_allocnos): Remove setting updated costs.
826         (ira_flattening): Set up ALLOCNO_UPDATED_COVER_CLASS_COST.
827
828         * ira.c (ira):  Don't call ira_fast_allocation.
829
830         * ira-costs.c (setup_allocno_cover_class_and_costs): Don't set up
831         updated costs.
832         
833 2008-10-27  Vladimir Makarov  <vmakarov@redhat.com>
834
835         PR middle-end/37813
836         * ira-conflicts.c (process_regs_for_copy): Remove class subset check.
837
838         * ira-int.h (ira_hard_regno_cover_class): New.
839
840         * ira-lives.c (mark_reg_live, mark_reg_dead,
841         process_bb_node_lives): Use ira_hard_regno_cover_class.
842
843         * ira.c (reg_class ira_hard_regno_cover_class): New global variable.
844         (setup_hard_regno_cover_class): New function.
845         (ira_init): Call setup_hard_regno_cover_class.
846
847         * ira-costs.c (cost_class_nums): Add comment.
848         (find_allocno_class_costs): Initiate cost_class_nums.
849         (setup_allocno_cover_class_and_costs): Check cost_class_nums.
850
851 2008-10-27  Vladimir Makarov  <vmakarov@redhat.com>
852
853         PR middle-end/37884
854         * ira-build.c (copy_live_ranges_to_removed_store_destinations):
855         Rename to copy_info_to_removed_store_destinations.  Propagate
856         conflict hard regs and register stack attribute.
857
858 2008-10-26  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
859
860         PR middle-end/37316
861         * pa.c (function_arg_padding):  Pad complex and vector types
862         upward in 64-bit runtime.
863         (function_arg): Use BLKmode for PARALLEL in 64-bit runtime.
864
865 2008-10-26  Matthias Klose  <doko@ubuntu.com>
866
867         * doc/install.texi: Document requirements on antlr.
868
869 2008-10-25  Richard Sandiford  <rdsandiford@googlemail.com>
870
871         * config/mips/mips.h (REG_ALLOC_ORDER): Put call-clobbered registers
872         first.
873
874 2008-10-24  Michael Meissner  <meissner@linux.vnet.ibm.com>
875
876         PR target/37841
877         * function.c (locate_and_pad_parm): If FUNCTION_ARG_ADJUST_OFFSET
878         is defined, use it to modify the constant offset.
879
880         * doc/tm.texi (FUNCTION_ARG_OFFSET): Document new macro.
881
882         * config/spu/spu.h (FUNCTION_ARG_OFFSET): New macro to move char
883         and short arguments to the correct location as mandated by the ABI.
884
885 2008-10-24  Kaz Kojima  <kkojima@gcc.gnu.org>
886
887         PR rtl-optimization/37769
888         * regmove.c (optimize_reg_copy_2): Update REG_INC note if needed.
889
890 2008-10-24  Kaz Kojima  <kkojima@gcc.gnu.org>
891
892         * config/sh/t-sh: Use $(MULTILIB_CFLAGS) when compiling to
893         unwind-dw2-Os-4-200.o.
894
895 2008-10-24  Joseph Myers  <joseph@codesourcery.com>
896
897         * c-typeck.c (enum impl_conv): Remove ic_argpass_nonproto.
898         (convert_for_assignment): Remove ic_argpass_nonproto cases.
899
900 2008-10-24  Jakub Jelinek  <jakub@redhat.com>
901
902         PR tree-optimization/36038
903         * tree-ssa-loop-ivopts.c (add_old_iv_candidates): For pointer bases
904         add sizetype IV with initial value zero instead of pointer type.
905
906 2008-10-24  Manuel López-Ibáñez  <manu@gcc.gnu.org>
907
908         PR c/7543
909         * value-prof.c (gimple_stringop_fixed_value): Use parentheses
910         around bit operation.
911         * profile.c (is_edge_inconsistent): Likewise.
912         * fold-const.c (truth_value_p): Move from here...
913         * tree.h (truth_value_p): ... to here.
914         * c-tree.h (c_expr): Update description of original_code.
915         * c-typeck.c (parser_build_unary_op): Set original_code.
916         (parser_build_binary_op): Update call to warn_about_parentheses.
917         * c-common.c (warn_about_parentheses): Take two additional
918         arguments of the operands. Use a switch. Quote operators
919         appropriately. Define macro APPEARS_TO_BE_BOOLEAN_EXPR_P.
920         Add warning about !x | y and !x & y.
921         * c-common.h (warn_about_parentheses): Update declaration.
922
923 2008-10-24  Jakub Jelinek  <jakub@redhat.com>
924
925         * Makefile.in (lang_checks_parallelized, check_gcc_parallelize,
926         check_p_tool, check_p_vars, check_p_subno, check_p_comma,
927         check_p_subwork, check_p_numbers, check_p_subdir, check_p_subdirs):
928         New variables.
929         (check-subtargets, check-%-subtargets, check-parallel-%): New targets.
930         (check-%): For test targets listed in lang_checks_parallelized
931         if -j is used and RUNTESTFLAGS doesn't specify tests to execute,
932         run the testing in multiple make goals, possibly parallel, and
933         afterwards run dg-extract-results.sh to merge the sum and log files.
934
935 2008-10-24  Richard Sandiford  <rdsandiford@googlemail.com>
936
937         * config/mips/mips.c (mips_canonicalize_move_class): New function.
938         (mips_move_to_gpr_cost): Likewise.
939         (mips_move_from_gpr_cost): Likewise.
940         (mips_register_move_cost): Make more fine-grained.
941
942 2008-10-23  Tobias Grosser  <grosser@fim.uni-passau.de>
943
944         * graphite.c (graphite_apply_transformations): Check for
945         -fgraphite-identity.
946         * toplev.c (process_options): Add graphite_identity.
947         * tree-ssa-loop.c (gate_graphite_transforms): Add graphite_identity.
948
949 2008-10-23  Bernd Schmidt  <bernd.schmidt@analog.com>
950
951         * config/bfin/bfin.c (bdesc_2arg): Add mulhisill, mulhisilh,
952         mulhisihl and mulhisihh builtins.
953
954         From Jie Zhang  <jie.zhang@analog.com>
955         * config/bfin/bfin.md (composev2hi): Put operands into vector
956         with correct order.
957         
958 2008-10-22  Chao-ying Fu  <fu@mips.com>
959
960         * config/mips/mips.opt (msmartmips): Accept -mno-smartmips.
961
962 2008-10-22  Bernd Schmidt  <bernd.schmidt@analog.com>
963
964         From Mike Frysinger  <michael.frysinger@analog.com>
965         * config/bfin/bfin-protos.h (bfin_cpu_type): Add BFIN_CPU_BF512,
966         BFIN_CPU_BF514, BFIN_CPU_BF516, and BFIN_CPU_BF518.
967         * config/bfin/bfin.c (bfin_cpus[]): Add 0.0 for bf512, bf514, bf516,
968         and bf518.  Add 0.2 for bf522, bf523, bf524, bf526, and bf527.
969         Add 0.6 for bf533, bf532, and bf531.  Add 0.5 for bf538 and bf539.
970         Add 0.2 for bf542, bf544, bf547, bf548, and bf549.
971         * config/bfin/bfin.h (TARGET_CPU_CPP_BUILTINS): Define __ADSPBF512__
972         for BFIN_CPU_BF512, __ADSPBF514__ for BFIN_CPU_BF514, __ADSPBF516__
973         for BFIN_CPU_BF516, and __ADSPBF518__ for BFIN_CPU_BF518.  Define
974         __ADSPBF51x__ for all of them.
975         * config/bfin/elf.h (LIB_SPEC): Select proper linker scripts for
976         -mcpu bf512, bf514, bf516, and bf518.
977         * config/bfin/t-bfin-elf (MULTILIB_MATCHES): Select bf532-none for
978         bf512-none, bf514-none, bf516-none, and bf518-none.
979         * config/bfin/t-bfin-linux (MULTILIB_MATCHES): Likewise.
980         * config/bfin/t-bfin-uclinux (MULTILIB_MATCHES): Likewise.
981         * doc/invoke.texi (Blackfin Options): Document that
982         -mcpu now accepts bf512, bf514, bf516, and bf518.
983
984 2008-10-22  Jakub Jelinek  <jakub@redhat.com>
985
986         PR middle-end/37882
987         * fold-const.c (build_range_type): For 1 .. signed_max
988         range call build_nonstandard_inter_type if signed_type_for
989         returned a type with bigger precision.
990
991 2008-10-22  Richard Guenther  <rguenther@suse.de>
992
993         * tree.def (COMPLEX_TYPE): Constrain element type.
994         * tree.c (build_complex_type): Assert that.
995         * tree-ssa-structalias.c (could_have_pointers): Complex types
996         cannot have pointers.
997
998 2008-10-22  Manuel López-Ibáñez  <manu@gcc.gnu.org>
999
1000         PR c/30949
1001         * c-typeck.c (convert_for_assignment): Do not give declaration's
1002         location for builtins. Spell out which type was expected and which
1003         was given.
1004
1005 2008-10-22  Nick Clifton  <nickc@redhat.com>
1006
1007         * config/frv/frv.h (HARD_REGNO_RENAME_OK): Define.  Do not allow
1008         the fdpic register to be a target when running in fdpic mode.
1009
1010 2008-10-22 Rafael Espindola  <espindola@google.com>
1011
1012         * ipa-struct-reorg.c (create_new_alloc_sites): Properly insert the
1013         newly created statements.
1014
1015 2008-10-22  Kaz Kojima  <kkojima@gcc.gnu.org>
1016
1017         PR target/37633
1018         * config/sh/sh.c (sh_hard_regno_mode_ok): New function.
1019         * config/sh/sh.h (HARD_REGNO_MODE_OK): Use it.
1020         * config/sh/sh-protos.h (sh_hard_regno_mode_ok): Declare.
1021
1022 2008-10-22  Jakub Jelinek  <jakub@redhat.com>
1023
1024         PR target/37880
1025         * doc/invoke.texi: Fix spelling of -mlarge-data-threshold option.
1026         Adjust -mcmodel=medium description for 2005-07-31 changes.
1027
1028 2008-10-22  Jan Hubicka  <jh@suse.cz>
1029             Jakub Jelinek  <jakub@redhat.com>
1030
1031         PR middle-end/35853
1032         * doc/invoke.texi: Remove references to obsoleted -d dumps.
1033
1034 2008-10-21  Richard Henderson  <rth@redhat.com>
1035
1036         PR 37815
1037         * emit-rtl.c (get_spill_slot_decl): Export.
1038         * emit-rtl.h (get_spill_slot_decl): Declare.
1039         * var-tracking.c (vt_add_function_parameters): Relax assertion
1040         on the contents of MEM_EXPR in a PARM_DECL to include a spill slot.
1041
1042 2008-10-21  Bob Wilson  <bob.wilson@acm.org>
1043
1044         * var-tracking.c (insn_stack_adjust_offset_pre_post): If insn has a
1045         REG_FRAME_RELATED_EXPR note, examine the pattern from the note instead
1046         of from insn.
1047
1048 2008-10-21  Adam Nemet  <anemet@caviumnetworks.com>
1049
1050         PR middle-end/37669
1051         * tree-ssa-ccp.c (ccp_fold_builtin): Only allow one argument to be
1052         processed by get_maxval_strlen.
1053
1054 2008-10-21  David Edelsohn  <edelsohn@gnu.org>
1055
1056         PR target/35485
1057         * tree.c (get_file_function_name): Copy first_global_object_name.
1058         Centralize call to clean_symbol_name.
1059
1060 2008-10-21  Sandra Loosemore  <sandra@codesourcery.com>
1061
1062         * config.gcc (powerpc-*): Make t-ppcgas imply usegas.h.
1063         * config/svr4.h (SVR4_ASM_SPEC): New.
1064         (ASM_SPEC): Inherit from SVR4_ASM_SPEC.
1065         * config/rs6000/sysv4.h (ASM_SPEC): Inherit from SVR4_ASM_SPEC.
1066
1067         * doc/invoke.texi (Option Summary): Add -T to linker options.
1068         (Link Options): Document -T.
1069         
1070 2008-10-21  Jakub Jelinek  <jakub@redhat.com>
1071
1072         * tree-inline.c (tree_inlinable_function_p): Remove tuples
1073         debugging hack.
1074
1075         * gimplify.c (gimplify_expr): Drop TREE_OVERFLOW from INTEGER_CSTs.
1076
1077         PR debug/37020
1078         * c-decl.c (merge_decls): Don't call outlining_inline_function hook.
1079
1080 2008-10-20  Daniel Berlin  <dberlin@dberlin.org>
1081
1082         * tree-ssa-pre.c (insert_into_preds_of_block): Don't rewrite constant
1083         part of expression.
1084
1085 2008-10-20  Tobias Schlüter  <tobi@gcc.gnu.org>
1086
1087         * doc/install.texi: Fix typos in previous patch.
1088
1089 2008-10-19  Tobias Schlüter  <tobi@gcc.gnu.org>
1090
1091         * doc/install.texi: Document in-tree building of gcc and mpfr.
1092
1093 2008-10-19  Richard Guenther  <rguenther@suse.de>
1094
1095         * tree-ssa-alias.c (may_alias_p): Remove bogus shortcut.
1096
1097 2008-10-19  Manuel López-Ibáñez  <manu@gcc.gnu.org>
1098
1099         PR c/30260
1100         * c-decl.c (finish_enum): Convert non-integer enumerators to enum type.
1101         (build_enumerator): Convert enumerators that fit in integer to
1102         integer type.
1103
1104 2008-10-18  Uros Bizjak  <ubizjak@gmail.com>
1105
1106         * config/i386/i386.md (unnamed peephole2): Do not force memory
1107         operands of arith or logical instructions into registers for
1108         non-TARGET_READ_MODIFY targets.
1109
1110         (ffs_cmove): Change operand 0 predicate to register_operand.
1111         Change operand 1 predicate to nonimmediate_operand.
1112         (ffsdi2): Ditto.
1113         (*ffs_no_cmove): Change operand 0 predicate to register_operand.
1114
1115 2008-10-18  Richard Guenther  <rguenther@suse.de>
1116
1117         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Guard
1118         VIEW_CONVERT_EXPR case against invalid gimple.
1119
1120 2008-10-17  Andreas Krebbel  <krebbel1@de.ibm.com>
1121
1122         * c-parser.c (c_parser_binary_expression): Silence the
1123         uninitialized variable warning emitted for binary_loc.
1124
1125 2008-10-16  Daniel Berlin  <dberlin@dberlin.org>
1126
1127         * tree-ssa-pre.c (phi_translate_set): Add constants to phi
1128         translation cache.
1129
1130 2008-10-16  Joseph Myers  <joseph@codesourcery.com>
1131
1132         PR c/33192
1133         * c-typeck.c (build_unary_op): Use omit_one_operand for
1134         IMAGPART_EXPR of real argument.
1135
1136 2008-10-16  Jakub Jelinek  <jakub@redhat.com>
1137
1138         PR tree-optimization/37664
1139         * fold-const.c (fold_binary): When optimizing comparison with
1140         highest or lowest type's value, don't consider TREE_OVERFLOW.
1141
1142 2008-10-16  David Edelsohn  <edelsohn@gnu.org>
1143
1144         PR target/35483
1145         * Makefile.in (coverage.o): Depend on $(TM_P_H).
1146         * coverage.c: Include tm_p.h.
1147         * config/rs6000/x-aix (jc1): Override LDFLAGS.
1148         * config/rs6000/xcoff.h (ASM_GENERATE_INTERNAL_LABEL): Strip
1149         dollar signs from PREFIX.
1150         * config/rs6000/rs6000.c (output_toc): Use RS6000_OUTPUT_BASENAME
1151         instead of manual strip_name_encoding.
1152
1153 2008-10-16  Richard Guenther  <rguenther@suse.de>
1154
1155         PR middle-end/37418
1156         * tree-ssa.c (useless_type_conversion_p_1): Do not treat
1157         volatile qualified functions or methods as relevant.
1158
1159 2008-10-16  Jakub Jelinek  <jakub@redhat.com>
1160
1161         PR tree-optimization/37525
1162         * tree.c (int_fits_type_p): Rewrite using double_int.  Zero extend
1163         sizetype unsigned constants, both in the case of C and bounds.
1164
1165 2008-10-15  Jan Hubicka  <jh@suse.cz>
1166
1167         * ira-emit.c (change_regs): Return false when replacing reg by itself.
1168
1169 2008-10-14  Vladimir Makarov  <vmakarov@redhat.com>
1170
1171         PR target/37633
1172         * ira-costs.c (ira_tune_allocno_costs_and_cover_classes): Check
1173         HARD_REGNO_CALL_PART_CLOBBERED.
1174
1175 2008-10-15  Vladimir Makarov  <vmakarov@redhat.com>
1176
1177         PR middle-end/37535
1178         * ira-lives.c (mark_early_clobbers): Remove.
1179         (make_pseudo_conflict, check_and_make_def_use_conflicts,
1180         check_and_make_def_conflicts,
1181         make_early_clobber_and_input_conflicts,
1182         mark_hard_reg_early_clobbers): New functions.
1183         (process_bb_node_lives): Call
1184         make_early_clobber_and_input_conflicts and
1185         mark_hard_reg_early_clobbers.  Make hard register inputs live again.
1186
1187         * doc/rtl.texi (clobber): Change descriotion of RA behaviour for
1188         early clobbers of pseudo-registers.
1189         
1190 2008-10-15  Vladimir Makarov  <vmakarov@redhat.com>
1191
1192         PR middle-end/37674
1193         * ira-build.c (ira_flattening): Recalculate
1194         ALLOCNO_TOTAL_NO_STACK_REG_P and ALLOCNO_TOTAL_CONFLICT_HARD_REGS
1195         from the scratch instead of the propagation.
1196         
1197 2008-10-15  Richard Sandiford  <rdsandiford@googlemail.com>
1198
1199         * doc/rtl.texi (const_double): Remove the "addr" operand.
1200         Describe CONST_DOUBLE_* macros under const_double rather
1201         than const_vector.
1202         (const_fixed): Fix the operand description.
1203         (const): Add an @findex directive.
1204         (CONST0_RTX, CONST1_RTX, CONST2_RTX): Move description
1205         after the constant rtl table.
1206         (fix): Combine floating-point and fixed-point descriptions.
1207         Fix hyphenation.
1208         * sched-deps.c (sched_analyze_2): Remove reference to
1209         CONST_DOUBLE_CHAIN.
1210
1211 2008-10-15  Richard Sandiford  <rdsandiford@googlemail.com>
1212
1213         * config/mn10300/mn10300.h (OUTPUT_ADDR_CONST_EXTRA): Handle
1214         UNSPEC_GOTSYM_OFFs.
1215         * config/mn10300/mn10300.c (legitimate_pic_operand_p): Return true
1216         for UNSPEC_GOTSYM_OFFs.
1217         * config/mn10300/mn10300.md (UNSPEC_GOTSYM_OFF): New unspec.
1218         (add_GOT_to_pic_reg): Use it.
1219         * config/mn10300/constraints.md (S): Allow UNSPEC_GOTSYM_OFF.
1220
1221 2008-10-15  Jan Sjodin  <jan.sjodin@amd.com>
1222             Harsha Jagasia  <harsha.jagasia@amd.com>
1223
1224         PR tree-optimization/37485
1225         * graphite.c (gmp_cst_to_tree): Moved.
1226         (iv_stack_entry_is_constant): New.
1227         (iv_stack_entry_is_iv): New.
1228         (loop_iv_stack_push): Renamed to loop_iv_stack_push_iv.
1229         (loop_iv_stack_insert_constant): New.
1230         (loop_iv_stack_pop): Use new datatpype.
1231         (loop_iv_stack_get_iv): Same.
1232         (loop_iv_stack_get_iv_from_name): Same.
1233         (loop_iv_stack_debug): Renamed to debug_loop_iv_stack.
1234         (loop_iv_stack_patch_for_consts): New.
1235         (loop_iv_stack_remove_constants): New.
1236         (graphite_create_new_loop): Use loop_iv_stack_push_iv.
1237         (translate_clast): Call loop_iv_stack_patch_for_consts and
1238         loop_iv_stack_remove_constants.
1239         (gloog): Use new datatype.  Redirect construction edge to end
1240         block to avoid accidental deletion.
1241         * graphite.h (enum iv_stack_entry_kind): New.  Tag for data in
1242         iv stack entry.
1243         (union iv_stack_entry_data): New.  Data in iv stack entry.
1244         (struct iv_stack_entry): New.  Datatype for iv stack entries.
1245
1246 2008-10-15  Sebastian Pop  <sebastian.pop@amd.com>
1247
1248         * tree-data-ref.c (stmt_simple_memref_p): Fix memleak.
1249         * graphite.c (free_scop): Same.
1250         (build_scops): Same.
1251         (free_scattering): New.
1252         (build_cloog_prog): Call free_scattering.
1253         (patch_phis_for_virtual_defs): Fix memleak.
1254         (graphite_trans_bb_strip_mine): Same.
1255         (limit_scops): Same.
1256
1257 2008-10-15  Sebastian Pop  <sebastian.pop@amd.com>
1258             Harsha Jagasia  <harsha.jagasia@amd.com>
1259
1260         PR tree-optimization/37828
1261         * graphite.c (graphite_trans_loop_block): Do not loop block
1262         single nested loops.
1263
1264 2008-10-15  Sebastian Pop  <sebastian.pop@amd.com>
1265
1266         PR tree-optimization/37686
1267         * tree-loop-linear.c (linear_transform_loops): Build a
1268         loop nest vector.  Pass it to lambda_compute_access_matrices.
1269         * tree-data-ref.h (struct access_matrix): Store the loop nest
1270         relative to which it encodes the information.
1271         (AM_LOOP_NEST_NUM): Renamed AM_LOOP_NEST.
1272         (am_vector_index_for_loop): Reimplemented: iterate over the
1273         loop nest for finding the loop index in the access matrix.
1274         (lambda_compute_access_matrices): Update declaration.
1275         * lambda-code.c (build_access_matrix): Pass the loop nest and
1276         record it.
1277         (lambda_compute_access_matrices): Same.
1278
1279 2008-10-15  Andreas Krebbel  <krebbel1@de.ibm.com>
1280
1281         * config/s390/s390.h: (TARGET_DFP): This requires TARGET_HARD_FLOAT.
1282         * config/s390/s390.md: Replace "TARGET_HARD_FLOAT &&
1283         TARGET_(HARD_)DFP" with only TARGET_(HARD_)DFP since this
1284         already implies hard float.  Also fix several insn condition
1285         with TARGET_DFP which shall require TARGET_HARD_DFP instead.
1286
1287 2008-10-15  David Edelsohn  <edelsohn@gnu.org>
1288
1289         PR target/35483
1290         Based on patches by Laurent Vivier.
1291         * xcoffout.h (DBX_FINISH_STABS): Translate dollar sign to underscore.
1292         * config/rs6000/rs6000-protos.h (rs6000_xcoff_strip_dollar): Declare.
1293         * config/rs6000/xcoff.h (ASM_DECLARE_FUNCTION_NAME): Translate
1294         dollar sign to underscore.
1295         (ASM_OUTPUT_EXTERNAL): Same.
1296         (ASM_OUTPUT_LABELREF): New.
1297         * config/rs6000/rs6000.c (rs6000_xcoff_strip_dollar): New.
1298
1299         * config/rs6000/aix51.h (TARGET_USE_JCR_SECTION): Define.
1300         * config/rs6000/aix52.h (TARGET_USE_JCR_SECTION): Define.
1301         * config/rs6000/aix53.h (TARGET_USE_JCR_SECTION): Define.
1302         * config/rs6000/aix61.h (TARGET_USE_JCR_SECTION): Define.
1303
1304 2008-10-15  Jakub Jelinek  <jakub@redhat.com>
1305
1306         PR tree-optimization/36881
1307         * tree-switch-conversion.c (check_final_bb): For flag_pic, check
1308         that each value doesn't need runtime relocations, for !flag_pic
1309         check that each value is just a valid initializer constant.
1310
1311 2008-10-14  Richard Sandiford  <rdsandiford@googlemail.com>
1312
1313         * config/mips/mips.h (reg_class): Remove HI_AND_GR_REGS,
1314         LO_AND_GR_REGS, HI_AND_FP_REGS, COP0_AND_GR_REGS, COP2_AND_GR_REGS,
1315         COP3_AND_GR_REGS, ALL_COP_REGS and ALL_COP_AND_GR_REGS.
1316         Add GR_AND_MD0_REGS, GR_AND_MD1_REGS, GR_AND_MD_REGS and
1317         GR_AND_ACC_REGS.
1318         (REG_CLASS_NAMES): Update accordingly.
1319         (REG_CLASS_CONTENTS): Likewise.  Use the class name in the comments,
1320         rather than an unpredictable descriptive string.
1321         * config/mips/mips.c (mips_register_move_cost): Remove comment.
1322         (mips_register_move_cost): Check for specific COP*_REGS classes,
1323         instead of ALL_COP_AND_GR_REGS.
1324         (mips_ira_cover_classes): New function.
1325         (mips_secondary_reload_class): Remove MTLO and MTHI workarounds.
1326         (TARGET_IRA_COVER_CLASSES): Define.
1327
1328 2008-10-14  Douglas Gregor  <doug.gregor@gmail.com>
1329
1330         PR c++/37553
1331         * tree.c (build_type_attribute_qual_variant): Hash on the
1332         unqualified type, and don't overwrite an existing
1333         (type_hash_eq): Make the TYPE_NAME of the types significant, to
1334         allow distinguishing between wchar_t and its underlying type. This
1335         also means that we'll retain a little more typedef information.
1336
1337 2008-10-14  Andrey Belevantsev  <abel@ispras.ru>
1338             Dmitry Melnik  <dm@ispras.ru>
1339             Dmitry Zhurikhin  <zhur@ispras.ru>
1340             Alexander Monakov  <amonakov@ispras.ru>
1341             Maxim Kuvyrkov  <maxim@codesourcery.com>
1342
1343         * target.h (struct gcc_target): Update prototypes of needs_block_p
1344         and gen_spec_check.
1345         * haifa-sched.c (create_check_block_twin): Update calls to the above.
1346         * sel-sched.c (create_speculation_check): Likewise.
1347         * doc/tm.texi: Provide documentation for new target hooks.
1348                 
1349         * config/ia64/ia64.c: Include sel-sched.h.  Rewrite speculation hooks.
1350         (ia64_gen_spec_insn): Removed.
1351         (get_spec_check_gen_function, insn_can_be_in_speculative_p,
1352         ia64_gen_spec_check): New static functions.
1353         (ia64_alloc_sched_context, ia64_init_sched_context,
1354         ia64_set_sched_context, ia64_clear_sched_context,
1355         ia64_free_sched_context, ia64_get_insn_spec_ds,
1356         ia64_get_insn_checked_ds, ia64_skip_rtx_p): Declare functions.
1357         (ia64_needs_block_p): Change prototype.
1358         (ia64_gen_check): Rename to ia64_gen_spec_check.
1359         (ia64_adjust_cost): Rename to ia64_adjust_cost_2.  Add new parameter
1360         into declaration, add special memory dependencies handling.
1361         (TARGET_SCHED_ALLOC_SCHED_CONTEXT, TARGET_SCHED_INIT_SCHED_CONTEXT,
1362         TARGET_SCHED_SET_SCHED_CONTEXT, TARGET_SCHED_CLEAR_SCHED_CONTEXT,
1363         TARGET_SCHED_FREE_SCHED_CONTEXT, TARGET_SCHED_GET_INSN_SPEC_DS,
1364         TARGET_SCHED_GET_INSN_CHECKED_DS, TARGET_SCHED_SKIP_RTX_P):
1365         Define new target hooks.
1366         (TARGET_SCHED_GEN_CHECK): Rename to TARGET_SCHED_GEN_SPEC_CHECK.
1367         (ia64_optimization_options): Turn on selective scheduling with -O3,
1368         disable -fauto-inc-dec. Set mflag_sched_control_spec to true by
1369         default with selective scheduling.
1370         (ia64_override_options): Initialize align_loops and align_functions
1371         to 32 and 64, respectively.  Set global selective scheduling flags
1372         according to target-dependent flags.
1373         (rtx_needs_barrier): Support UNSPEC_LDS_A.
1374         (group_barrier_needed): Use new mstop-bit-before-check flag.
1375         Add heuristic.
1376         (dfa_state_size): Make global.
1377         (spec_check_no, max_uid): Remove.
1378         (mem_ops_in_group, current_cycle): New variables.
1379         (ia64_sched_init): Disable checks for !SCHED_GROUP_P after reload.
1380         Initialize new variables.
1381         (is_load_p, record_memory_reference): New functions.
1382         (ia64_dfa_sched_reorder): Lower priority of loads when limit is
1383         reached.
1384         (ia64_variable_issue): Change use of current_sched_info to
1385         sched_deps_info.  Update comment.  Note if a load or a store is issued.
1386         (ia64_first_cycle_multipass_dfa_lookahead_guard_spec): Require a cycle
1387         advance if maximal number of loads or stores was issued on current
1388         cycle.
1389         (scheduled_good_insn): New static helper function.
1390         (ia64_dfa_new_cycle): Assert that last_scheduled_insn is set when
1391         a group barrier is needed.  Fix vertical spacing.  Guard the code
1392         doing state transition with last_scheduled_insn check.
1393         Mark that a stop bit should be before current insn if there was a 
1394         cycle advance.  Update current_cycle and mem_ops_in_group.
1395         (ia64_h_i_d_extended): Change use of current_sched_info to
1396         sched_deps_info. Reallocate stops_p by larger chunks.
1397         (struct _ia64_sched_context): New structure.
1398         (ia64_sched_context_t): New typedef.
1399         (ia64_alloc_sched_context, ia64_init_sched_context,
1400         ia64_set_sched_context, ia64_clear_sched_context,
1401         ia64_free_sched_context): New static functions.
1402         (gen_func_t): New typedef.
1403         (get_spec_load_gen_function): New function.
1404         (SPEC_GEN_EXTEND_OFFSET): Declare.      
1405         (ia64_set_sched_flags): Check common_sched_info instead of *flags.
1406         (get_mode_no_for_insn): Change the condition that prevents use of
1407         special hardware registers so it can now handle pseudos.
1408         (get_spec_unspec_code): New function.
1409         (ia64_skip_rtx_p, get_insn_spec_code, ia64_get_insn_spec_ds,
1410         ia64_get_insn_checked_ds, ia64_gen_spec_load): New static functions.
1411         (ia64_speculate_insn, ia64_needs_block_p): Support branchy checks
1412         during selective scheduling.
1413         (ia64_speculate_insn): Use ds_get_speculation_types when
1414         determining whether we need to change the pattern.
1415         (SPEC_GEN_LD_MAP, SPEC_GEN_CHECK_OFFSET): Declare.
1416         (ia64_spec_check_src_p): Support new speculation/check codes.
1417         (struct bundle_state): New field.
1418         (issue_nops_and_insn): Initialize it.
1419         (insert_bundle_state): Minimize mid-bundle stop bits.
1420         (important_for_bundling_p): New function.
1421         (get_next_important_insn): Use important_for_bundling_p.
1422         (bundling): When shifting TImode from unimportant insns, ignore
1423         also group barriers.  Assert that best state is found before
1424         the backward bundling pass.  Print number of mid-bundle stop bits.
1425         Minimize mid-bundle stop bits.  Check correct calculation of
1426         mid-bundle stop bits.
1427         (ia64_sched_finish, final_emit_insn_group_barriers): Fix formatting.
1428         (final_emit_insn_group_barriers): Emit stop bits before insns starting
1429         a new cycle.
1430         (sel2_run): New variable.
1431         (ia64_reorg): When flag_selective_scheduling2 is set, run the
1432         selective scheduling pass instead of schedule_ebbs.
1433         
1434         * config/ia64/ia64.md (speculable1, speculable2): New attributes.
1435         (UNSPEC_LDS_A): New UNSPEC.
1436         (movqi_internal, movhi_internal, movsi_internal, movdi_internal,
1437         movti_internal, movsf_internal, movdf_internal,
1438         movxf_internal): Make visible.  Add speculable* attributes.
1439         (output_c_nc): New mode attribute.
1440         (mov<mode>_speculative_a, zero_extend<mode>di2_speculative_a,
1441         mov<mode>_nc, zero_extend<mode>di2_nc,
1442         advanced_load_check_nc_<mode>): New insns.
1443         (zero_extend*): Add speculable* attributes.
1444
1445         * config/ia64/ia64.opt (msched_fp_mem_deps_zero_cost): New option.
1446         (msched-stop-bits-after-every-cycle): Likewise.
1447         (msched-max-memory-insns, msched-max-memory-insns-hard-limit):
1448         Likewise.
1449         (msched-spec-verbose): Remove.
1450         (msched-prefer-non-data-spec-insns,
1451         msched-prefer-non-control-spec-insns,
1452         msched-count-spec-in-critical-path,
1453         msel-sched-dont-check-control-spec): Use Target  Report Var
1454         instead of Common Report Var.
1455
1456         * config/ia64/itanium2.md: Remove incorrect bypass.
1457         
1458         * config/ia64/t-ia64 (ia64.o): Add dependency on sel-sched.h.
1459
1460 2008-10-14  Jakub Jelinek  <jakub@redhat.com>
1461
1462         PR middle-end/37805
1463         * opts.c (common_handle_option): Don't ICE on -fhelp=joined
1464         and -fhelp=separate.
1465
1466 2008-10-14  Ben Elliston  <bje@au.ibm.com>
1467
1468         * config/rs6000/rs6000.md (cell_micro): Fix formatting.
1469
1470 2008-10-13  Joseph Myers  <joseph@codesourcery.com>
1471
1472         * combine.c (simplify_set): Avoid calling LOAD_EXTEND_OP on
1473         non-integer modes.
1474
1475 2008-10-13  Matthias Klose  <doko@ubuntu.com>
1476
1477         * config/pa/linux-atomic.c: Work around missing header file
1478         for hppa64-linux-gnu targets.
1479
1480 2008-10-13  Andrew Pinski  <andrew_pinski@playstation.sony.com>
1481             Kaushal Kantawala <Kaushal_Kantawala@playstation.sony.com>
1482             Trevor Smigiel  <Trevor_Smigiel@playstation.sony.com>
1483             Grace Cao  <grace_cao@playstation.sony.com>
1484
1485         * doc/invoke.texi (-mgen-cell-microcode): Document.
1486         (-mwarn-cell-microcode): Document.
1487         * cfglayout.c (locator_location): Export.
1488         * rtl.h (locator_location): Define prototype.
1489         * config/rs6000/predicates.md (cc_reg_not_micro_cr0_operand):
1490         New predicate.
1491         * rs6000/rs6000-protos.h (rs6000_final_prescan_insn): Define prototype.
1492         * config/rs6000/rs6000.opt (mgen-cell-microcode): New option.
1493         (mwarn-cell-microcode): New option.
1494         * rs6000/rs6000.c (rs6000_cell_dont_microcode): Delete unused variable.
1495         (rs6000_override_options): Set rs6000_gen_cell_microcode if tuning for
1496         cell and not already set.
1497         Turn off string instructions if not generating cell microcode.
1498         (rs6000_final_prescan_insn): New function that warns about microcoded
1499         instructions.
1500         * config/rs6000/rs6000.h (FINAL_PRESCAN_INSN): Define.
1501         * config/rs6000/rs6000.md
1502         Replace cc_reg_not_cr0_operand with cc_reg_not_micro_cr0_operand if
1503         the instruction would have been microcoded on the Cell.  Set
1504         cell_micro to always on unnamed patterns for the string instructions.
1505         (cell_micro): Update definition, remove load/store conditional
1506         microcoded.
1507         (sign_extend:DI): Define new pattern for non microcoded version.
1508         (sign_extend:SI): Likewise.
1509         (compare (div:P)): Set cell_micro to not.
1510         (andsi3): Define as an expand.
1511         (andsi3_mc): New pattern.
1512         (andsi3_nomc): New pattern.
1513         (andsi3_internal0_nomc): New pattern.
1514         (andsi3_internal2): Rename to ...
1515         (andsi3_internal2_mc): this and enable iff generating microcode.
1516         (andsi3_internal3): Rename to ...
1517         (andsi3_internal3_mc): this and enable iff generating microcode.
1518         (andsi3_internal4): Enable iif generating microcode.
1519         (andsi3_internal5): Rename to ..
1520         (andsi3_internal5_mc): this and enable iff generating microcode.
1521         (andsi3_internal5_nomc): New pattern.
1522         (extzvdi_internal1): Enable iff generating microcode.
1523         (extzvdi_internal2): Likewise.
1524         (rotlsi3_internal7): Set cell_micro to always if non immediate form.
1525         (anddi3): Change to expand.
1526         (anddi3_mc): Rename from anddi3.
1527         (anddi3_no_mc): New pattern.
1528         (anddi3_internal2): Rename to ..
1529         (anddi3_internal2_mc): this and enable iff generating microcode.
1530         (anddi3_internal2_nomc): New pattern.
1531         (anddi3_internal3): Rename to ..
1532         (anddi3_internal3_mc): this and enable iff generating microcode.
1533         (anddi3_internal3_nomc): New pattern.
1534         (movti_string): Set cell_micro to always if TARGET_STRING.
1535         (stmsi8): Set cell_micro to always.
1536         (stmsi7): Likewise.
1537         (stmsi6): Likewise.
1538         (stmsi5): Likewise.
1539         (stmsi4): Likewise.
1540         (stmsi3): Likewise.
1541         (stmsi8_power): Likewise.
1542         (stmsi7_power): Likewise.
1543         (stmsi6_power): Likewise.
1544         (stmsi5_power): Likewise.
1545         (stmsi4_power): Likewise.
1546         (stmsi3_power): Likewise.
1547         (movsi_update2): Enable iff generating microcode.
1548         (movhi_update3): Likewise.
1549         (lmw): Set cell_micro to always.
1550
1551 2008-10-13  Richard Sandiford  <rdsandiford@googlemail.com>
1552
1553         * config/s390/s390.md (UNSPEC_POOL_OFFSET): New constant.
1554         * config/s390/s390.c (machine_function): Remove
1555         decomposed_literal_pool_addresses_ok_p.
1556         (s390_decompose_address): Check for UNSPEC_POOL_OFFSET instead of
1557         the difference of two labels.
1558         (s390_output_addr_const_extra): Handle UNSPEC_POOL_OFFSET.
1559         (s390_pool_offset): New function.
1560         (s390_find_constant, s390_find_execute, s390_dump_pool): Use it.
1561         (s390_reorg): Don't set decomposed_literal_pool_addresses_ok_p.
1562
1563 2008-10-13  Nathan Froyd  <froydnj@codesourcery.com>
1564
1565         * doc/install.texi (powerpc-*-*): Require binutils 2.15.
1566         (powerpc*-*-linux-gnu*): Describe.
1567         * config/rs6000/ppc-asm.h (HIDDEN_FUNC): New macro.
1568         * config/rs6000/crtresfpr.asm, config/rs6000/crtresgpr.asm,
1569         config/rs6000/crtresxfpr.asm, config/rs6000/crtresxgpr.asm,
1570         config/rs6000/crtsavfpr.asm, config/rs6000/crtsavgpr.asm,
1571         config/rs6000/e500crtres32gpr.asm,
1572         config/rs6000/e500crtres64gpr.asm,
1573         config/rs6000/e500crtres64gprctr.asm,
1574         config/rs6000/e500crtrest32gpr.asm,
1575         config/rs6000/e500crtrest64gpr.asm,
1576         config/rs6000/e500crtresx32gpr.asm,
1577         config/rs6000/e500crtresx64gpr.asm,
1578         config/rs6000/e500crtsav32gpr.asm,
1579         config/rs6000/e500crtsav64gpr.asm,
1580         config/rs6000/e500crtsav64gprctr.asm,
1581         config/rs6000/e500crtsavg32gpr.asm,
1582         config/rs6000/e500crtsavg64gpr.asm,
1583         config/rs6000/e500crtsavg64gprctr.asm: Use it.
1584         * config/rs6000/crtsavres.asm: Really remove.
1585
1586 2008-10-13  Kai Tietz  <kai.tietz@onevision.com>
1587
1588         Fix PR/25502
1589         * c-format.c (convert_format_name_to_system_name): Use
1590         TARGET_OVERRIDES_FORMAT_INIT.
1591         * config.gcc (extra_options): Add for mingw targets mingw.opt.
1592         * config/i386/mingw.opt: New.
1593         * config/i386/mingw32.h (TARGET_OVERRIDES_FORMAT_INIT): New.
1594         * config/i386/msformat-c.c (TARGET_OVERRIDES_FORMAT_INIT): New.
1595         (ms_printf_length_specs): Removed const specifier.
1596         * doc/tm.texi (TARGET_OVERRIDES_FORMAT_INIT): New.
1597         * doc/invoke.texi (Wno-pedantic-ms-format): New.
1598
1599 2008-10-13  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
1600
1601         * builtins.c: Remove MPFR_VERSION_NUM(2,3,0) conditionals.
1602         * doc/install.texi: Bump recommended MPFR to 2.3.2.
1603
1604 2008-10-12  Kenneth Zadeck <zadeck@naturalbridge.com>
1605
1606         PR middle-end/37808
1607         * df-scan.c (df_ref_change_reg_with_loc_1): Added test to make
1608         sure that ref has valid bb.
1609         
1610 2008-10-12  Richard Henderson  <rth@redhat.com>
1611
1612         PR middle-end/37447
1613         * Makefile.in (reload1.o): Depend on EMIT_RTL_H.
1614         * alias.c (value_addr_p, stack_addr_p): Remove.
1615         (nonoverlapping_memrefs_p): Remove IRA special case.
1616         * emit-rtl.c (get_spill_slot_decl, set_mem_attrs_for_spill): New.
1617         * emit-rtl.h (set_mem_attrs_for_spill): Declare.
1618         * reload1.c (alter_reg): Use it.
1619
1620 2008-10-12  Uros Bizjak  <ubizjak@gmail.com>
1621
1622         * config/i386/driver-i386.c (detect_caches_cpuid2): Use array
1623         of registers instead of eax, ebx, ecx and edx.  Use for loop
1624         and check register for non-zero value before the call
1625         to decode_caches_intel.
1626
1627 2008-10-11  Kenneth Zadeck <zadeck@naturalbridge.com>
1628
1629         PR rtl-optimization/37448
1630         * df.h: (df_ref_class): New enum.
1631         (DF_REF_TYPE_NAMES, df_ref_extract): Removed.
1632         (struct df_ref): Replaced with union df_ref_d.
1633         (df_base_ref, df_artificial_ref, df_regular_ref, df_extract_ref):
1634         New members of df_ref_d union.
1635         (DF_REF_REAL_REG, DF_REF_REGNO, DF_REF_REAL_LOC, DF_REF_REG,
1636         DF_REF_LOC, DF_REF_BB, DF_REF_INSN_INFO, DF_REF_INSN,
1637         DF_REF_CLASS, DF_REF_TYPE, DF_REF_CHAIN, DF_REF_ID, DF_REF_FLAGS,
1638         DF_REF_ORDER, DF_REF_IS_ARTIFICIAL, DF_REF_NEXT_REG,
1639         DF_REF_PREV_REG, DF_REF_EXTRACT_WIDTH, DF_REF_EXTRACT_OFFSET,
1640         DF_REF_EXTRACT_MODE): Replaced definition to access union df_ref_d.
1641         (DF_MWS_REG_DEF_P, DF_MWS_REG_USE_P, DF_MWS_TYPE): New macros.
1642         (df_scan_bb_info, df_bb_regno_first_def_find,
1643         df_bb_regno_last_def_find, df_find_def, df_find_use,
1644         df_refs_chain_dump, df_regs_chain_dump, df_ref_debug,
1645         debug_df_ref, df_chain_create, df_chain_unlink, df_chain_copy,
1646         df_ref_create, df_ref_remove, df_compute_accessed_bytes,
1647         df_get_artificial_defs, df_get_artificial_uses, union_defs)
1648         Replaced struct df_ref * with df_ref.
1649         * df-scan.c (df_collection_rec, df_null_ref_rec,
1650         df_ref_chain_delete_du_chain, df_ref_chain_delete, df_install_ref,
1651         df_grow_ref_info, df_ref_create, df_reg_chain_unlink,
1652         df_ref_compress_rec, df_ref_remove, df_ref_chain_delete_du_chain,
1653         df_ref_chain_delete, df_free_collection_rec, df_insn_rescan,
1654         df_reorganize_refs_by_reg_by_reg,
1655         df_reorganize_refs_by_reg_by_insn, df_reorganize_refs_by_reg,
1656         df_ref_change_reg_with_loc_1, df_notes_rescan, df_swap_refs,
1657         df_sort_and_compress_refs, df_install_ref, df_install_refs,
1658         df_ref_record, df_get_conditional_uses, df_get_call_refs,
1659         df_bb_refs_record, df_exit_block_uses_collect,
1660         df_record_exit_block_uses, df_reg_chain_mark,
1661         df_reg_chain_verify_unmarked, df_refs_verify): Replaced struct
1662         df_ref * with df_ref.
1663         (df_ref_record, df_uses_record, df_ref_create_structure): Added
1664         df_ref_class parameter.
1665         (df_scan_problem_data): Added new pools for different types of refs.
1666         (df_scan_free_internal, df_scan_alloc, df_free_ref,
1667         df_ref_create_structure): Processed new ref pools.
1668         (df_scan_start_dump): Added counts of refs and insns.
1669         (df_ref_create, df_notes_rescan, df_def_record_1, df_uses_record,
1670         df_get_call_refs, df_insn_refs_collect, df_bb_refs_collect,
1671         df_entry_block_defs_collect, df_exit_block_uses_collect): Added
1672         code to pass df_ref_class down to ref creation functions.
1673         (df_reg_chain_unlink, df_ref_remove, df_ref_change_reg_with_loc_1,
1674         df_reg_chain_mark): Use macros to hide references to df_refs.
1675         (df_ref_chain_change_bb): Removed.
1676         (df_insn_change_bb): Remove calls to df_ref_insn_change_bb.
1677         (df_ref_equal_p, df_ref_compare, df_ref_create_structure):
1678         Enhanced to understand df_ref union structure.
1679         * fwprop.c (local_ref_killed_between_p, use_killed_between,
1680         all_uses_available_at, update_df, try_fwprop_subst,
1681         forward_propagate_subreg, forward_propagate_and_simplify,
1682         forward_propagate_into, fwprop, fwprop_addr): Replaced struct
1683         df_ref * with df_ref.
1684         (use_killed_between, all_uses_available_at): Use macros to hide
1685         references to df_refs.
1686         * regstat.c (regstat_bb_compute_ri,
1687         regstat_bb_compute_calls_crossed): Replaced struct df_ref * with
1688         df_ref.
1689         * see.c (see_handle_relevant_defs, see_handle_relevant_uses,
1690         see_handle_relevant_refs, see_analyze_one_def,
1691         see_update_relevancy, see_propagate_extensions_to_uses): Replaced
1692         struct df_ref * with df_ref.
1693         * ra-conflict.c (record_one_conflict, clear_reg_in_live,
1694         global_conflicts): Replaced struct df_ref * with df_ref.
1695         * ddg.c (create_ddg_dep_from_intra_loop_link,
1696         add_cross_iteration_register_deps, build_inter_loop_deps):
1697         Replaced struct df_ref * with df_ref.
1698         (create_ddg_dep_from_intra_loop_link,
1699         add_cross_iteration_register_deps): Use macros to hide references
1700         to df_refs.
1701         * auto-inc-dec.c (find_inc, merge_in_block): Replaced struct
1702         df_ref * with df_ref.
1703         * df-core.c (df_bb_regno_first_def_find,
1704         df_bb_regno_last_def_find, df_find_def, df_find_use,
1705         df_refs_chain_dump, df_regs_chain_dump, df_ref_debug,
1706         debug_df_ref): Replaced struct df_ref * with df_ref.
1707         (df_mws_dump, df_ref_debug): Use macros to hide references to df_refs.
1708         * cse.c (cse_extended_basic_block): Replaced struct df_ref * with
1709         df_ref.
1710         * web.c (union_defs, entry_register, replace_ref, web_main):
1711         Replaced struct df_ref * with df_ref.
1712         (union_defs, replace_ref): Use macros to hide references to df_refs.
1713         * global.c (compute_regs_asm_clobbered, build_insn_chain):
1714         Replaced struct df_ref * with df_ref.
1715         * ifcvt.c (dead_or_predicable): Replaced struct df_ref * with df_ref.
1716         * sel-sched-ir.c (maybe_downgrade_id_to_use, setup_id_reg_sets, ):
1717         Replaced struct df_ref * with df_ref.
1718         * ira-lives.c (mark_ref_live, def_conflicts_with_inputs_p,
1719         mark_ref_dead, process_bb_node_lives): Replaced struct df_ref *
1720         with df_ref.
1721         * local-alloc.c (block_alloc): Replaced struct df_ref * with df_ref.
1722         * df-byte-scan.c (df_compute_accessed_bytes_extract,
1723         df_compute_accessed_bytes_strict_low_part,
1724         df_compute_accessed_bytes_subreg, df_compute_accessed_bytes):
1725         Replaced struct df_ref * with df_ref.
1726         (df_compute_accessed_bytes): Use macros to hide references to df_refs.
1727         * init-regs.c (initialize_uninitialized_regs): Replaced struct
1728         df_ref * with df_ref.
1729         * loop-invariant.c (invariant_for_use, hash_invariant_expr_1,
1730         check_dependency, check_dependencies, record_uses): Replaced
1731         struct df_ref * with df_ref.
1732         (invariant_for_use, check_dependency): Use macros to hide
1733         references to df_refs.
1734         * loop-iv.c (iv_analysis_loop_init, iv_get_reaching_def,
1735         get_biv_step_1, get_biv_step, record_iv, iv_analyze_def,
1736         iv_analyze, biv_p): Replaced struct df_ref * with df_ref.
1737         (iv_analysis_loop_init, iv_get_reaching_def): Use macros to hide
1738         references to df_refs.
1739         * ira.c (compute_regs_asm_clobbered): Replaced struct df_ref *
1740         with df_ref.
1741         * combine.c (create_log_links): Replaced struct df_ref * with df_ref.
1742         * df-problems.c (df_rd_bb_local_compute_process_def,
1743         df_lr_bb_local_compute, df_live_bb_local_compute, df_chain_create,
1744         df_chain_unlink_1, df_chain_unlink, df_chain_copy,
1745         df_chain_remove_problem, df_chain_create_bb_process_use,
1746         df_chain_create_bb, df_chain_top_dump, df_chain_bottom_dump,
1747         df_byte_lr_check_regs, df_byte_lr_bb_local_compute,
1748         df_byte_lr_simulate_defs, df_byte_lr_simulate_uses,
1749         df_byte_lr_simulate_artificial_refs_at_top,
1750         df_byte_lr_simulate_artificial_refs_at_end, df_create_unused_note,
1751         df_note_bb_compute, df_note_add_problem, df_simulate_defs,
1752         df_simulate_uses, df_simulate_artificial_refs_at_end,
1753         df_simulate_artificial_refs_at_top): Replaced struct df_ref * with
1754         df_ref.
1755         (df_chain_dump): Use macros to hide references to df_refs.
1756         * config/mips/mips.c (r10k_simplify_address): Replaced struct
1757         df_ref * with df_ref.
1758         * dce.c (mark_nonreg_stores, delete_corresponding_reg_eq_notes,
1759         mark_artificial_uses, mark_reg_dependencies,
1760         byte_dce_process_block): Replaced struct df_ref * with df_ref.
1761
1762 2008-10-11  Eric Botcazou  <ebotcazou@adacore.com>
1763
1764         * tree.h (contains_packed_reference): Mention ARRAY_RANGE_REF in
1765         head comment.
1766         (array_ref_element_size): Likewise.
1767         (array_ref_low_bound): Likewise.
1768         (array_ref_up_bound): Likewise.
1769         * expr.c (contains_packed_reference): Likewise.
1770         (array_ref_element_size): Likewise.
1771         (array_ref_low_bound): Likewise.
1772         (array_ref_up_bound): Likewise.
1773         * tree-ssa-loop-ivopts.c (idx_contains_abnormal_ssa_name_p): Deal
1774         with ARRAY_RANGE_REF.
1775         (idx_find_step): Likewise.
1776         (idx_record_use): Likewise.
1777         (strip_offset_1): Likewise.
1778         (idx_remove_ssa_names): Likewise.
1779
1780 2008-10-11  Uros Bizjak  <ubizjak@gmail.com>
1781             Andi Kleen  <ak@linux.intel.com>
1782
1783         * config/i386/cpuid.h (__cpuid_count): New defines.
1784         * config/i386/driver-i386.c (struct cache_desc): New structure.
1785         (describe_cache): Use struct cache_desc to pass cache descriptions.
1786         (detect_l2_cache): Ditto. Rename from decode_l2_cache.
1787         (detect_caches_amd): Use struct cache_desc to describe caches.
1788         (decode_caches_intel): Use struct cache_desc to pass cache
1789         descriptions.  Update descriptions to match latest (rev -032,
1790         December 2007) CPUID documentation.  Do not check valid bit here.
1791         Check for Xeon MP value 0x49 problems.
1792         (detect_caches_cpuid2): New function, split from detect_caches_intel.
1793         Check valid bit before calling decode_caches_intel.  Detect number
1794         of times to repeat CPUID instruction.
1795         (detect_caches_cpuid4): New function.
1796         (detect_caches_intel): Depending on max_level, call
1797         detect_caches_cpuid2 or detect_caches_cpuid4.  Call detect_l2_cache
1798         only when other methods fail to provide valid L2 cache description.
1799
1800 2008-10-11  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
1801
1802         PR middle-end/37608
1803         * pa.md (call, call_value): Generate an rtx for register r4 and pass
1804         it to PIC call patterns.
1805         (call_symref_pic): Revise pattern to expose PIC register save.  Remove
1806         code generation and attributes from pattern.  Change peephole2 to
1807         split for noreturn case.  Revise split pattern for non noreturn case.
1808         (call_symref_64bit, call_reg_pic, call_reg_64bit, call_val_symref_pic,
1809         call_val_symref_64bit, call_val_reg_pic, call_val_reg_64bit): Likewise.
1810         * pa.c (attr_length_call): Simplify extraction of call rtx.  Add some
1811         asserts.
1812
1813 2008-10-11  David Edelsohn  <edelsohn@gnu.org>
1814
1815         * config/rs6000/rs6000.md (aux_truncdfsf2): Remove TARGET_SINGLE_FLOAT.
1816         (addsf3, subsf3, mulsf3 ! TARGET_POWERPC): Remove TARGET_SINGLE_FLOAT
1817         and fp_type.
1818         (divdf3): Reformat long line.
1819
1820 2008-10-11  Michael J. Eager  <eager@eagercon.com>
1821
1822         * config/rs6000/rs6000.c (rs6000_parse_fpu_option): Interpret
1823         -mfpu options.
1824         (rs6000_handle_option): Process -mfpu options.
1825         * config/rs6000/rs6000.h: (TARGET_XILINX_FPU): New.
1826         (enum fpu_type_t): New.
1827         * config/rs6000/rs6000.md (attr fp_type): New.  Include xfpu.md.
1828         (addsf3, subsf3, mulsf3, adddf3, subdf3, muldf3, trunctfdf2): Set
1829         fp_type.
1830         (floatsisf2): Remove TARGET_SINGLE_FPU condition.
1831         (floatdidf2): Add TARGET_SINGLE_FPU condition.
1832         * config/rs6000/rs6000.opt (-mfpu): New.
1833         (-mxilinx-fpu): New.
1834         * config/rs6000/sysv4.h: (DRIVER_SELF_SPECS): New.
1835         * config/rs6000/xfpu.h: New. Define TARGET_XILINX_FPU.
1836         * config/rs6000/xfpu.md: New. Define Xilinx pipeline.
1837         * gcc/config.gcc: powerpc-xilinx-eabi target: New.
1838         * gcc/doc/invoke.texi (RS/6000 and PowerPC Options): Add -mfpu option.
1839
1840 2008-10-11  Jakub Jelinek  <jakub@redhat.com>
1841
1842         PR target/35760
1843         * config/rs6000/rs6000.c (rs6000_legitimize_address): Only create
1844         LO_SUM on Darwin if mode has just one unit.
1845
1846 2008-10-10  H.J. Lu  <hongjiu.lu@intel.com>
1847
1848         PR debug/37002
1849         * dwarf2out.c (mem_loc_descriptor): Use DRAP for vDRAP which
1850         has been optimized out.
1851
1852 2008-10-10  Richard Sandiford  <rdsandiford@googlemail.com>
1853
1854         * config/sh/sh.h (PREFERRED_RELOAD_CLASS): Test PIC_ADDR_P
1855         instead of PIC_DIRECT_ADDR_P.
1856         (SECONDARY_INPUT_RELOAD_CLASS): Likewise.
1857         (IS_LITERAL_OR_SYMBOLIC_S16_P, IS_LITERAL_OR_SYMBOLIC_U16_P): Delete.
1858         (IS_NON_EXPLICIT_CONSTANT_P): Don't test PIC_OFFSET_P.
1859         (PIC_OFFSET_P): Rename to...
1860         (PCREL_SYMOFF_P): ...this.
1861         (PIC_DIRECT_ADDR_P): Delete.
1862         (MOVI_SHORI_BASE_OPERAND_P): Check PCREL_SYMOFF_P instead of
1863         PIC_OFFSET_P.
1864         (OUTPUT_ADDR_CONST_EXTRA): Don't require unspecs to have a
1865         single argument.  Handle UNSPEC_EXTRACT_S16, UNSPEC_EXTRACT_U16,
1866         UNSPEC_SYMOFF and UNSPEC_PCREL_SYMOFF.
1867         * config/sh/sh.c (print_operand): Remove CONST handling.
1868         (unspec_caller_rtx_p): Rewrite to use split_const and check
1869         the operands of UNSPEC bases.
1870         (fixup_mova): Replace (unspec [(minus A B)] UNSPEC_PIC)
1871         with (unspec [A B] UNSPEC_SYMOFF).
1872         (nonpic_symbol_mentioned_p): Check for UNSPEC_SYMOFF and
1873         UNSPEC_PCREL_SYMOFF.
1874         (sh_secondary_reload): Test PIC_ADDR_P instead of PIC_DIRECT_ADDR_P.
1875         * config/sh/sh.md (UNSPEC_EXTRACT_S16): New unspec.
1876         (UNSPEC_EXTRACT_U16): Likewise.
1877         (UNSPEC_SYMOFF): Likewise.
1878         (UNSPEC_PCREL_SYMOFF): Likewise.
1879         (movsi_const): Use UNSPEC_EXTRACT_*16s to extract 16-bit portions
1880         of constants.
1881         (movsi_const_16bit): Likewise.
1882         (movdi_const, movdi_const_32bit, movdi_const_16bit): Likewise.
1883         (GOTaddr2picreg): Replace (unspec [(minus A (minus B pc))] UNSPEC_PIC)
1884         with (unspec [A B] UNSPEC_PCREL_SYMOFF).
1885         (sym_label2reg): Replace (minus (const (unspec [A] UNSPEC_PIC)) B)
1886         with (unspec [A B] UNSPEC_SYMOFF).
1887         (symPLT_label2reg): Replace (minus A (minus B pc)) with
1888          (unspec [A B] PCREL_UNSPEC_SYMOFF).
1889         * config/sh/constraints.md (Css): Check for an UNSPEC_EXTRACT_S16.
1890         (Csu): Likewise UNSPEC_EXTRACT_U16.
1891         (Csy): Test PIC_ADDR_P instead of PIC_DIRECT_ADDR_P.
1892         (Cpg): Update after changes to IS_NON_EXPLICIT_CONSTANT_P.
1893
1894 2008-10-10  Stepan Kasal  <skasal@redhat.com>
1895
1896         * gcc/doc/invoke.texi (Optimize Options): Fix typo in examples
1897         for loop strip mining and loop blocking.
1898
1899 2008-10-10  Alexandre Oliva  <aoliva@redhat.com>
1900
1901         * fortran/trans-types.c (gfc_get_nodesc_array_type): Don't
1902         vary types depending on debug info.
1903
1904 2008-10-10  Alexandre Oliva  <aoliva@redhat.com>
1905
1906         * c-gimplify.c (c_genericize): Don't refer to DECL_ASSEMBLER_NAME
1907         before ensuring it's already computed.
1908
1909 2008-10-09  Jakub Jelinek  <jakub@redhat.com>
1910
1911         * rtl.h (locator_eq): New decl.
1912         * cfglayout.c (locator_scope): New function.
1913         (insn_scope): Use it.
1914         (locator_eq): New function.
1915         (fixup_reorder_chain): Search for last insn in src bb
1916         that has locator set or first insn in dest bb.  Use
1917         locator_eq instead of == to compare locators.
1918         * cfgrtl.c (cfg_layout_merge_blocks): Likewise.
1919         * cfgcleanup.c (try_forward_edges): Use locator_eq instead of
1920         == to compare locators.
1921
1922         * tree-ssa-live.c (remove_unused_locals): Mark all edge's goto_block
1923         as used.
1924         * gimple-low.c (lower_function_body, lower_gimple_return,
1925         lower_builtin_setjmp): Set gimple_block on the newly created stmts.
1926         * tree-cfg.c (make_cond_expr_edges, make_goto_expr_edges): Only set
1927         goto_block on edges if goto_locus is known.
1928
1929         PR middle-end/37774
1930         * tree.h (get_object_alignment): Declare.
1931         * emit-rtl.c (set_mem_attributes_minus_bitpos): Call
1932         get_object_alignment if needed.
1933         * builtins.c (get_pointer_alignment): Move ADDR_EXPR operand
1934         handling to ...
1935         (get_object_alignment): ... here.  New function.  Try harder to
1936         determine alignment from get_inner_reference returned offset.
1937
1938 2008-10-08  Jakub Jelinek  <jakub@redhat.com>
1939
1940         * graphite.c (gloog): Don't call find_unreachable_blocks
1941         before delte_unreachable_blocks.
1942
1943         * cfgexpand.c (expand_gimple_cond): Convert also goto_block and
1944         goto_locus of true_edge into RTL locator.
1945
1946 2008-10-08  Uros Bizjak  <ubizjak@gmail.com>
1947
1948         * config/i386/i386.md (*jcc_btdi_rex64): Clobber FLAGS_REG.
1949         (*jcc_btdi_mask_rex64): Ditto.
1950         (*jcc_btsi): Ditto.
1951         (*jcc_btsi_mask): Ditto.
1952         (*jcc_btsi_1): Ditto.
1953         (*jcc_btsi_mask_1): Ditto.
1954
1955 2008-10-08  Paul Brook  <paul@codesourcery.com>
1956
1957         * config/arm/bpabi.h (ARM_FUNCTION_PROFILER): Define new EABI
1958         compatible profiler (__gnu_mcount_nc).
1959         (SUBTARGET_FRAME_POINTER_REQUIRED): Define.
1960
1961 2008-10-08  H.J. Lu  <hongjiu.lu@intel.com>
1962
1963         * config/i386/i386.c (initial_ix86_tune_features): Add
1964         X86_TUNE_USE_VECTOR_FP_CONVERTS.
1965         * config/i386/i386.h (ix86_tune_indices): Likewise.
1966         (TARGET_USE_VECTOR_FP_CONVERTS): New.
1967
1968         * config/i386/i386.md: Check TARGET_USE_VECTOR_FP_CONVERTS
1969         instead of (TARGET_USE_VECTOR_CONVERTS || TARGET_GENERIC)
1970         for FP to FP splitters.
1971
1972 2008-10-08  H.J. Lu  <hongjiu.lu@intel.com>
1973
1974         * config/i386/i386.md: Add missing gen_sse2_cvtdq2p to convert
1975         splitter.
1976
1977 2008-10-08  Jakub Jelinek  <jakub@redhat.com>
1978
1979         PR target/36635
1980         PR target/37290
1981         PR rtl-optimization/37341
1982         * cse.c (cse_cc_succs): Add ORIG_BB argument, don't follow edges
1983         to ORIG_BB, pass through ORIG_BB recursively.
1984         (cse_condition_code_reg): Adjust caller.
1985
1986 2008-10-08  Kai Tietz  <kai.tietz@onevision.com>
1987
1988         * sdbout.c (sdbout_one_type): Treat the value type
1989         CONST_DECL for enumerals.
1990
1991 2008-10-07  H.J. Lu  <hongjiu.lu@intel.com>
1992
1993         * config/i386/i386.md: Remove trailing white spaces.
1994
1995 2008-10-07  Kenneth Zadeck <zadeck@naturalbridge.com>
1996
1997         PR rtl-optimization/37448
1998         * alloc-pool.c (struct alloc_pool_descriptor) [elt_size]: New field.
1999         (stuct alloc_pool_descriptor) [created, allocated, current, peak]:
2000         Make unsigned long.
2001         (struct output_info) [count]: Renamed total_created and made
2002         unsigned long.
2003         (struct output_info) [size]: Renamed total_allocated and made
2004         unsigned long.
2005         (create_alloc_pool, empty_alloc_pool, pool_alloc, pool_free):
2006         Properly keep track of desc->size.
2007         (print_statistics, dump_alloc_pool_statistics): Enhance the
2008         printing of statistics to print the number of elements and to use
2009         unsigned longs.
2010         
2011 2008-10-07  Jakub Jelinek  <jakub@redhat.com>
2012
2013         PR middle-end/37576
2014         * opts.h (CL_SAVE): Move up to flags range.
2015         (CL_PARAMS, CL_WARNING, CL_OPTIMIZATION, CL_TARGET,
2016         CL_COMMON): Renumber.
2017         (CL_MIN_OPTION_CLASS): Set to CL_PARAMS.
2018         * opts.c (common_handle_option): Revert last change.
2019
2020 2008-10-07  H.J. Lu  <hongjiu.lu@intel.com>
2021
2022         * config/i386/i386-protos.h (ix86_schedule): New.
2023
2024         * config/i386/i386.c (ix86_schedule): New.
2025         (override_options): Add schedule to processor_alias_table.  Set
2026         ix86_schedule from the schedule field in processor_alias_table.
2027         (ix86_function_specific_save): Save ix86_schedule.
2028         (ix86_function_specific_restore): Restore ix86_schedule.
2029
2030         * config/i386/i386.md (cpu): Map to ix86_schedule instead of
2031         ix86_tune.  Add none and remove i386, i486, pentium4, nocona
2032         and generic32.
2033
2034         * config/i386/i386.opt: Add schedule.
2035
2036         * config/i386/ppro.md: Remove generic32.
2037
2038 2008-10-07  Simon Martin  <simartin@users.sourceforge.net>
2039
2040         PR c/35437
2041         * expr.c (count_type_elements): Handle ERROR_MARK.
2042
2043 2008-10-07  Jakub Jelinek  <jakub@redhat.com>
2044
2045         PR debug/29609
2046         PR debug/36690
2047         PR debug/37616
2048         * basic-block.h (struct edge_def): Add goto_block field.
2049         * cfglayout.c (fixup_reorder_chain): Ensure that there is at least
2050         one insn with locus corresponding to edge's goto_locus if !optimize.
2051         * profile.c (branch_prob): Copy edge's goto_block.
2052         * cfgrtl.c (force_nonfallthru_and_redirect): Use goto_locus for
2053         emitted jumps.
2054         (cfg_layout_merge_blocks): Emit a nop with edge's goto_locus
2055         locator in between the merged basic blocks if !optimize and needed.
2056         * cfgexpand.c (expand_gimple_cond): Convert goto_block and
2057         goto_locus into RTL locator.  For unconditional jump use that
2058         locator for the jump insn.
2059         (expand_gimple_cond): Convert goto_block and goto_locus into
2060         RTL locator for all remaining edges.  For unconditional jump
2061         use that locator for the jump insn.
2062         * cfgcleanup.c (try_forward_edges): Avoid the optimization if
2063         there is more than one edge or insn locator along the forwarding
2064         edges and !optimize.  If there is just one, set e->goto_locus.
2065         * tree-cfg.c (make_cond_expr_edges, make_goto_expr_edges): Set also
2066         edge's goto_block.
2067         (move_block_to_fn): Adjust edge's goto_block.
2068
2069 2008-10-07  H.J. Lu  <hongjiu.lu@intel.com>
2070
2071         PR middle-end/37731
2072         * expmed.c (expand_mult): Properly check DImode constant in
2073         CONST_DOUBLE.
2074
2075 2008-10-07  Jakub Jelinek  <jakub@redhat.com>
2076
2077         PR debug/37738
2078         * dwarf2out.c (common_block_die_table): New variable.
2079         (common_block_die_table_hash, common_block_die_table_eq): New
2080         functions.
2081         (gen_variable_die): Look up a DW_TAG_common_block die for a particular
2082         COMMON block in the current scope rather than globally.  Optimize
2083         DW_OP_addr SYMBOL_REF DW_OP_plus_uconst off into
2084         DW_OP_addr SYMBOL_REF+off.
2085
2086 2008-10-07  Eric Botcazou  <ebotcazou@adacore.com>
2087
2088         * tree-ssa-loop-ivopts.c (may_be_nonaddressable_p) <VIEW_CONVERT_EXPR>:
2089         Return true for non-addressable GIMPLE operands.
2090
2091 2008-10-07  H.J. Lu  <hongjiu.lu@intel.com>
2092
2093         PR target/24765
2094         * config/i386/i386.c (initial_ix86_tune_features): Remove
2095         X86_TUNE_USE_BIT_TEST.
2096         * config/i386/i386.h (ix86_tune_indices): Likewise.
2097         (TARGET_USE_BIT_TEST): Removed.
2098
2099 2008-10-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
2100
2101         * config.gcc (arm*-*-*): Add aapcs-linux to supported ABIs.
2102
2103 2008-10-06  Adam Nemet  <anemet@caviumnetworks.com>
2104
2105         * config/mips/mips.md (mulsi3_mul3, muldi3_mul3): Merge these ...
2106         (mul<mode>3_mul3): ... into this new template.
2107
2108 2008-10-06  Aldy Hernandez  <aldyh@redhat.com>
2109
2110         * gimplify.c (gimplify_arg): Add location argument.  Use it.
2111         (gimplify_call_expr): Pass location to gimplify_arg.
2112         (gimplify_modify_expr_to_memcpy): Same.
2113         (gimplify_modify_expr_to_memset): Same.
2114
2115 2008-10-06  Andrew Pinski  <andrew_pinski@playstation.sony.com>
2116
2117         * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin):
2118         Update calls to build_unary_op and build_indirect_ref for location
2119         changes.
2120
2121 2008-10-06  Aldy Hernandez  <aldyh@redhat.com>
2122
2123         build_modify_expr.
2124         * c-decl.c (finish_decl): Pass input_location to build_unary_op.
2125         * c-typeck.c (array_to_pointer_conversion): Pass location to
2126         build_unary_op.
2127         (function_to_pointer_conversion): Use error_at and warning_at.
2128         (build_indirect_ref): Same.
2129         (build_array_ref): Pass location to build_binary_op.
2130         (parser_build_unary_op): Do not set location after calling
2131         build_unary_op.
2132         (build_unary_op): Add location argument.  Use it throughout.  Set
2133         EXPR_LOCATION before returning new tree.
2134         (build_modify_expr): Same.
2135         (build_binary_op): Use location throughout.  Set EXPR_LOCATION before
2136         returning node.
2137         * c-omp.c (c_finish_omp_atomic): Pass location to build_unary_op,
2138         build_indirect_ref, build_modify_expr.
2139         (c_finish_omp_for): Same.  Use error_at instead of error.
2140         * c-common.c (c_common_truthvalue_conversion): Pass location to
2141         build_unary_op.
2142         (warn_for_div_by_zero): Add location argument.
2143         * c-common.h: Add argument to build_modify_expr, build_indirect_ref,
2144         build_unary_op, warn_for_div_by_zero.
2145         * c-parser.c (c_parser_typeof_specifier): Use
2146         protected_set_expr_location.
2147         (c_parser_statement_after_labels): Same.
2148         (c_parser_condition): Same.
2149         (c_parser_expr_no_commas): Pass correct location to build_modify_expr.
2150         (c_parser_conditional_expression): Use protected_set_expr_location.
2151         (c_parser_unary_expression): Pass location to build_indirect_ref.
2152         (c_parser_postfix_expression_after_primary): Pass location to
2153         build_indirect_ref, build_unary_op.
2154         (c_parser_omp_for_loop): Set the increment expression's EXPR_LOCATION.
2155
2156 2008-10-06  Joshua Kinard  <kumba@gentoo.org>
2157
2158         * doc/invoke.texi: List r1x000 family under the -march MIPS option.
2159         * config/mips/mips.h (PROCESSOR_R10000): New processor_type.
2160         * config/mips/mips.c (mips_cpu_info_table): Add r10000, r12000,
2161         r14000 and r16000.
2162         (mips_rtx_cost_data): Add a PROCESSOR_R10000 entry.
2163         (mips_issue_rate): Handle PROCESSOR_R10000.
2164         * config/mips/mips.md (cpu): Add r10000.
2165         Include r10000.md.
2166         * config/mips/10000.md: New file.
2167
2168 2008-10-06  Richard Sandiford  <rdsandiford@googlemail.com>
2169
2170         * config/rs6000/rs6000-protos.h (rs6000_find_base_term): Declare.
2171         * config/rs6000/rs6000.h (FIND_BASE_TERM): New macro.
2172         * config/rs6000/rs6000.c (rs6000_find_base_term): New function.
2173
2174 2008-10-06  Richard Sandiford  <rdsandiford@googlemail.com>
2175
2176         * config/darwin-protos.h (machopic_function_base_name): Delete.
2177         (machopic_function_base_sym): Likewise.
2178         (machopic_gen_offset): Declare.
2179         * config/darwin.h (MACHOPIC_FUNCTION_BASE_NAME): New macro.
2180         (ASM_OUTPUT_LABELREF): Use it instead of a hard-coded string constant.
2181         * config/darwin.c (machopic_function_base_name): Delete.
2182         (machopic_function_base_sym): Likewise.
2183         (gen_pic_offset): Rename to...
2184         (machopic_gen_offset): ...this and remove the pic_base argument.
2185         Instead use MACHO_DYNAMIC_NO_PIC_P to decide whether a PIC offset
2186         is needed.  Create an UNSPEC_MACHOPIC_OFFSET if so, and set
2187         crtl->uses_pic_offset_table.
2188         (machopic_indirect_data_reference): Use new machopic_gen_offset
2189         interface.
2190         (machopic_legitimize_pic_address): Likewise.
2191         (machopic_operand_p): Check for UNSPEC_MACHOPIC_OFFSET.
2192
2193         * config/i386/darwin.h (GOT_SYMBOL_NAME): Use
2194         MACHOPIC_FUNCTION_BASE_NAME instead of machopic_function_base_name.
2195         * config/i386/i386.c (output_set_got): Likewise.
2196         (darwin_local_data_pic): Check for an UNSPEC_MACHOPIC_OFFSET
2197         instead of a MINUS.
2198         (legitimate_pic_operand_p): Handle UNSPEC_MACHOPIC_OFFSET.
2199         (legitimate_address_p): Likewise.
2200         (output_pic_addr_const): Likewise.
2201         (output_addr_const_extra): Likewise.
2202         (ix86_delegitimize_address): Expect darwin_local_data_pic to
2203         match an UNSPEC rather than a MINUS.
2204         * config/i386/i386.md (UNSPEC_MACHOPIC_OFFSET): Define.
2205         (builtin_setjmp_receiver): Use machopic_gen_offset.
2206         * config/i386/predicates.md (pic_symbolic_operand): Handle
2207         UNSPEC_MACHOPIC_OFFSET.
2208
2209         * config/rs6000/rs6000.c (rs6000_legitimize_reload_address):
2210         Use machopic_gen_offset and machopic_operand_p.
2211         (rs6000_output_addr_const_extra): Handle UNSPEC_MACHOPIC_OFFSET.
2212         (rs6000_emit_prologue): Use MACHOPIC_FUNCTION_BASE_NAME.
2213         * config/rs6000/rs6000.md (UNSPEC_MACHOPIC_OFFSET): Define.
2214         (builtin_setjmp_receiver): Use MACHOPIC_FUNCTION_BASE_NAME.
2215         Set crtl->uses_pic_offset_table.
2216
2217 2008-10-06  Richard Sandiford  <rdsandiford@googlemail.com>
2218
2219         * config/rs6000/rs6000-protos.h (rs6000_output_addr_const_extra):
2220         Declare.
2221         * config/rs6000/rs6000.h (OUTPUT_ADDR_CONST_EXTRA): New macro.
2222         * config/rs6000/rs6000.md (UNSPEC_TOCREL): New constant.
2223         * config/rs6000/rs6000.c (constant_pool_expr_1): Delete.
2224         (constant_pool_expr_p): Use split_const and check the base.
2225         (toc_relative_expr_p): Likewise, checking for an UNSPEC_TOCREL
2226         instead of a MINUS.
2227         (legitimate_constant_pool_address_p): Check toc_relative_p
2228         instead of constant_pool_expr_p.
2229         (print_operand_address): Always use output_addr_const for
2230         constant pool addresses.
2231         (rs6000_output_addr_const_extra): New function.
2232         (create_TOC_reference): Create an UNSPEC_TOCREL instead of a MINUS.
2233
2234 2008-10-06  Vladimir Makarov  <vmakarov@redhat.com>
2235
2236         PR middle-end/37535
2237
2238         * ira-lives.c (mark_reg_live, mark_reg_dead): New functions.
2239         (mark_ref_live, mark_ref_dead): Use them.
2240         (def_conflicts_with_inputs_p): Remove.
2241         (mark_early_clobbers): New function.
2242         (process_bb_node_lives): Call preprocess_constraints and
2243         mark_early_clobbers.
2244
2245         * doc/rtx.texi (clobber): Change how RA deals with clobbers.
2246
2247 2008-10-06  Danny Smith  <dannysmith@users.sourceforge.net>
2248
2249         * config/i386/mingw32.h (REAL_LIBGCC_SPEC): Add thread cleanup
2250         lib with -mthread switch.
2251
2252 2008-10-05  Dodji Seketeli  <dodji@redhat.com>
2253
2254         PR c++/37410
2255         * dwarf2out.c (dwarf2out_imported_module_or_decl): Split this
2256         function in two, making it call a new and reusable
2257         dwarf2out_imported_module_or_decl() that takes the containing
2258         BLOCK of the declaration in argument.
2259         (dwarf2out_imported_module_or_decl_real): New function.
2260         (decls_for_scope, gen_decl_die, dwarf2out_decl): Take
2261         IMPORTED_DECL in account.
2262         * tree.def: Added IMPORTED_DECL node type.
2263         * tree.h: Added accessors for IMPORTED_DECL nodes.
2264         * tree.c (init_ttree): Initialise IMPORTED_DECL node type.
2265
2266 2008-10-05  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
2267
2268         * doc/gimple.texi: Fix some typos, wrap some long lines,
2269         fix some broken wraps with continuations.
2270         * tree-ssa-reassoc.c: Fix comment typos.
2271
2272 2000-10-04  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
2273
2274         PR target/37603
2275         * pa.c (legitimize_pic_address): Force function labels to memory in
2276         word mode.
2277
2278 2008-10-04  Anton Blanchard  <anton@samba.org>
2279
2280         * config/rs6000/rs6000.c (rs6000_emit_sync): Use gen_lwsync().
2281         (rs6000_split_atomic_op): Same.
2282         (rs6000_split_compare_and_swap): Same.
2283         (rs6000_split_compare_and_swapqhi): Same.
2284
2285 2008-10-04  Richard Guenther  <rguenther@suse.de>
2286
2287         * tree-ssa-sccvn.c (vn_reference_op_eq): Use types_compatible_p
2288         instead of pointer equality.
2289         (vn_nary_op_eq): Likewise.
2290
2291 2008-10-03  Andrew Pinski  <andrew_pinski@playstation.sony.com>
2292
2293         * config/rs6000/rs6000.md (fseldfsf4): Add TARGET_SINGLE_FLOAT 
2294         condition.
2295         (fselsfdf4): Make condition on "TARGET_HARD_FLOAT && TARGET_FPRS &&
2296         TARGET_DOUBLE_FLOAT && TARGET_SINGLE_FLOAT".
2297
2298 2008-10-03  Danny Smith  <dannysmith@users.sourceforge.net>
2299
2300         * config/i386/winnt.c (i386_pe_strip_name_encoding_full):
2301         Revert previous change.
2302
2303 2008-10-03  Tom Tromey  <tromey@redhat.com>
2304
2305         * stringpool.c (ggc_alloc_string): Terminate string.
2306
2307 2008-10-03  Jakub Jelinek  <jakub@redhat.com>
2308
2309         * gimplify.c (gimplify_function_tree): For -finstrument-functions
2310         use gimple_bind_{,set_}block instead of gimple_{,set_}block.
2311         * gimple.h (gimple_bind_set_block): Allow second argument to be NULL.
2312
2313         PR debug/37726
2314         * gimplify.c (declare_vars): Use gimple_bind_block instead of
2315         gimple_block.
2316
2317 2008-10-03  Pascal Obry  <obry@adacore.com>
2318
2319         * gcov.c (create_file_names): Properly handle UNIX and DOS
2320         directory separators.
2321         (make_gcov_file_name): Likewise + convert the ':' DOS drive
2322         separator to '~' to ensure clean filenames on Windows.
2323
2324 2008-10-02  Danny Smith  <dannysmith@users.sourceforge.net>
2325
2326         * config/i386/winnt.c (i386_pe_strip_name_encoding_full):
2327         Add a null terminator to the stripped name.
2328
2329 2008-10-02  David Edelsohn  <edelsohn@gnu.org>
2330
2331         * config/rs6000/rs6000.c (USE_FP_FOR_ARG_P): Revert
2332         TARGET_DOUBLE_FLOAT, TARGET_SINGLE_FLOAT.
2333         (function_arg_advance): Condition on TARGET_DOUBLE_FLOAT,
2334         TARGET_SINGLE_FLOAT.  Revert SCALAR_FLOAT_MODE_P condition.
2335         (function_arg): Condition on TARGET_DOUBLE_FLOAT, TARGET_SINGLE_FLOAT.
2336         (rs6000_function_value): Revert TARGET_DOUBLE_FLOAT,
2337         TARGET_SINGLE_FLOAT.
2338
2339 2008-10-02  Daniel Jacobowitz  <dan@codesourcery.com>
2340
2341         * builtins.c (fold_builtin_pow): Check for 0 ** NEGATIVE.
2342
2343 2008-10-02  Richard Guenther  <rguenther@suse.de>
2344
2345         PR middle-end/37713
2346         * tree-ssa.c (useless_type_conversion_p_1): For COMPLEX_TYPE
2347         and VECTOR_TYPE recurse with useless_type_conversion_p which
2348         properly handles void pointer conversion.
2349
2350 2008-10-02  Danny Smith  <dannysmith@users.sourceforge.net>  
2351
2352         PR target/37528
2353         * config/i386/mingw32.h (LIBGCC_SPEC) : Replace with ..
2354         (REAL_LIBGCC_SPEC): New.  Always include -lgcc.
2355
2356 2008-10-01  Andrew Pinski  <andrew_pinski@playstation.sony.com>
2357
2358         * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin):
2359         Handle ALTIVEC_BUILTIN_VEC_SPLATS, ALTIVEC_BUILTIN_VEC_PROMOTE,
2360         ALTIVEC_BUILTIN_VEC_EXTRACT, and ALTIVEC_BUILTIN_VEC_INSERT specially,
2361         they translate to non builtins.
2362         * config/rs6000/rs6000.c (altivec_init_builtins): Add new variable
2363         opaque_ftype_opaque.  Define builtins __builtin_vec_splats,
2364         __builtin_vec_promote, __builtin_vec_extract, and
2365         __builtin_vec_insert.
2366         * config/rs6000/rs6000.h (enum rs6000_builtins): Add
2367         ALTIVEC_BUILTIN_VEC_EXTRACT, ALTIVEC_BUILTIN_VEC_PROMOTE,
2368         ALTIVEC_BUILTIN_VEC_INSERT, and ALTIVEC_BUILTIN_VEC_SPLATS.
2369         * config/rs6000/altivec.h (vec_extract): Define
2370         (vec_insert): Define.
2371         (vec_splats): Define.
2372         (vec_promote): Define.
2373
2374 2008-10-01  Andrew Pinski  <andrew_pinski@playstation.sony.com>
2375             Yukishige Shibata  <shibata@rd.scei.sony.co.jp>
2376             Trevor Smigiel  <Trevor_Smigiel@playstation.sony.com>
2377
2378         * config/rs6000/rs6000-c.c (altivec_overloaded_builtins): Add Cell
2379         Altivec intrinsics.
2380         * config/rs6000/rs6000.c (altivec_expand_lv_builtin): Delete
2381         prototype.  Add new parameter, blk.
2382         Use BLKmode for the MEM if blk is true.
2383         (altivec_expand_builtin): Handle ALTIVEC_BUILTIN_STVLX,
2384         ALTIVEC_BUILTIN_STVLXL, ALTIVEC_BUILTIN_STVRX, and
2385         ALTIVEC_BUILTIN_STVRXL.
2386         Update usage of altivec_expand_lv_builtin.
2387         Handle ALTIVEC_BUILTIN_LVLX, ALTIVEC_BUILTIN_LVLXL,
2388         ALTIVEC_BUILTIN_LVRX, and ALTIVEC_BUILTIN_LVRXL.
2389         (altivec_init_builtins): If compiling for the Cell, also define the
2390         cell VMX builtins.
2391         * config/rs6000/rs6000.h (rs6000_builtins): Define
2392         ALTIVEC_BUILTIN_LVLX, ALTIVEC_BUILTIN_LVLXL, ALTIVEC_BUILTIN_LVRX,
2393         ALTIVEC_BUILTIN_LVRXL, ALTIVEC_BUILTIN_STVLX, ALTIVEC_BUILTIN_STVLXL,
2394         ALTIVEC_BUILTIN_STVRX, ALTIVEC_BUILTIN_STVRXL,
2395         ALTIVEC_BUILTIN_VEC_LVLX, ALTIVEC_BUILTIN_VEC_LVLXL,
2396         ALTIVEC_BUILTIN_VEC_LVRX, ALTIVEC_BUILTIN_VEC_LVRXL,
2397         ALTIVEC_BUILTIN_VEC_STVLX, ALTIVEC_BUILTIN_VEC_STVLXL,
2398         ALTIVEC_BUILTIN_VEC_STVRX, and ALTIVEC_BUILTIN_VEC_STVRXL.
2399         * config/rs6000/altivec.md (define_constants): Define UNSPEC_LVLX,
2400         UNSPEC_LVLXL, UNSPEC_LVRX, UNSPEC_LVRXL, UNSPEC_STVLX, UNSPEC_STVLXL,
2401         UNSPEC_STVRX, and UNSPEC_STVRXL.
2402         (altivec_lvlx): New pattern.
2403         (altivec_lvlxl): New pattern.
2404         (altivec_lvrx): New pattern.
2405         (altivec_lvrxl): New pattern.
2406         (altivec_stvlx): New pattern.
2407         (altivec_stvlxl): New pattern.
2408         (altivec_stvrx): New pattern.
2409         (altivec_stvrxl): New pattern.
2410         * config/rs6000/altivec.h (vec_lvlx): Define if PPU is defined.
2411         (vec_lvlxl): Likewise.
2412         (vec_lvrx): Define if PPU is defined.
2413         (vec_lvrxl): Likewise.
2414         (vec_stvlx): Define if PPU is defined.
2415         (vec_stvlxl): Likewise.
2416         (vec_stvrx): Define if PPU is defined.
2417         (vec_stvrxl): Likewise.
2418
2419 2008-10-01  Geert Bosch  <bosch@adacore.com>
2420
2421         * tree.c (contains_placeholder_p): Return 0 for a SAVE_EXPR.
2422
2423 2008-10-01  Richard Guenther  <rguenther@suse.de>
2424
2425         PR tree-optimization/37617
2426         * tree-ssa-pre.c (create_expression_by_pieces): During FRE
2427         do not add to the NEW_SETS.
2428
2429 2008-10-01  Richard Guenther  <rguenther@suse.de>
2430
2431         PR middle-end/37285
2432         * tree-vrp.c (execute_vrp): If we optimized away the default
2433         case make sure to promote the label that got in place of it
2434         to a default case label.
2435
2436 2008-10-01  Richard Henderson  <rth@redhat.com>
2437
2438         PR tree-opt/35737
2439         * tree-complex.c (set_component_ssa_name): Don't optimize
2440         is_gimple_min_invariant values with ssa_names in abnormal phis.
2441
2442 2008-09-30  Paolo Bonzini  <bonzini@gnu.org>
2443
2444         PR tree-optimization/37662
2445         * tree-ssa-ccp.c (fold_gimple_assign): Invert the operands of a
2446         commutative binary operation if they are in the wrong order and
2447         fold_build2 produces non-GIMPLE.
2448
2449 2008-09-30  Jakub Jelinek  <jakub@redhat.com>
2450
2451         PR tree-optimization/37662
2452         PR tree-optimization/37663
2453         * tree-vrp.c (simplify_truth_ops_using_ranges): Don't call
2454         get_value_range with non-SSA_NAME.  Don't assert operands have been
2455         folded, instead just bail out.
2456
2457 2008-09-30  Andrew Pinski  <andrew_pinski@playstation.sony.com>
2458
2459         * config/rs6000/rs6000.md (fnmadds combiner): Revert typo.
2460
2461 2008-09-30  Richard Guenther  <rguenther@suse.de>
2462
2463         PR middle-end/37491
2464         * tree-vect-transform.c (vect_create_data_ref_ptr): Properly
2465         build restrict-qualified pointers.
2466         (vectorizable_store): Move alias check later.
2467         (vectorizable_load): Likewise.
2468
2469 2008-09-30  Paolo Bonzini  <bonzini@gnu.org>
2470
2471         * c-common.c (empty_if_body_warning): Remove.
2472         * c-common.h (empty_if_body_warning): Remove.
2473         * c-parser.c (c_parser_if_body, c_parser_else_body): Implement
2474         here the -Wempty-body warning for `if' and `else' statements.
2475         * c-typeck.c (c_finish_if_stmt): Do not call empty_body_warning.
2476
2477 2008-09-29  H.J. Lu  <hongjiu.lu@intel.com>
2478
2479         * config/i386/i386.opt: Add msse2avx.
2480
2481         * config/i386/linux.h (ASM_SPEC): New.  Support -msse2avx.
2482         * config/i386/linux64.h (ASM_SPEC): Likewise.
2483
2484         * doc/invoke.texi: Document -msse2avx.
2485
2486 2008-09-29  Eric Botcazou  <ebotcazou@adacore.com>
2487
2488         * dwarf2out.c (constant_size): Use HOST_WIDE_INT in parameter type.
2489
2490 2008-09-29  Joseph Myers  <joseph@codesourcery.com>
2491
2492         * ifcvt.c (noce_emit_store_flag): If using condition from original
2493         jump, reverse it if if_info->cond was reversed.
2494
2495 2008-09-29  Eric Botcazou  <ebotcazou@adacore.com>
2496
2497         * expr.c (expand_expr_real_1) <normal_inner_ref>: Force op0 to
2498         non-constant memory if it cannot be forced to constant memory.
2499         Overhaul surrounding code and factor out common condition.
2500
2501 2008-09-29  Jeff Law <law@redhat.com>
2502
2503         * reload1.c (alter_reg): Add missing curly braces.
2504
2505 2008-09-29  Michael J. Eager  <eager@eagercon.com>
2506
2507         * config/rs6000/predicates.md (easy_fp_constant): Single FP consts
2508         are easy.
2509         * config/rs6000/rs6000.c (rs6000_override_options): Move
2510         rs6000_init_hard_regno_mode_ok after all options changed.
2511         Set rs6000_single_float, rs6000_double_float if TARGET_HARD_FLOAT.
2512         (rs6000_handle_option): Process -msingle-float, -mdouble-float,
2513         -msimple-fpu flags.  Add warning messages if single FP not configured.
2514         (rs6000_file_start): Output gnu_attribute for single-float.
2515         (legitimate_lo_sum_address_p): Condition on TARGET_DOUBLE_FLOAT.
2516         (rs6000_legitimize_address): Likewise.
2517         (rs6000_legitimize_reload_address): Likewise.
2518         (rs6000_emit_move): Condition on TARGET_DOUBLE_FLOAT,
2519         TARGET_SINGLE_FLOAT.
2520         (function_arg_advance): Likewise (partial conversion).
2521         (setup_incoming_varargs): Condition on TARGET_DOUBLE_FLOAT.
2522         (rs6000_gimplify_va_arg): Condition on TARGET_DOUBLE_FLOAT,
2523         TARGET_SINGLE_FLOAT.
2524         (rs6000_split_multireg_move): Condition on TARGET_DOUBLE_FLOAT.
2525         (rs6000_emit_prologue): Likewise.
2526         (rs6000_function_value): Condition on TARGET_DOUBLE_FLOAT,
2527         TARGET_SINGLE_FLOAT.
2528         (rs6000_libcall_value): Likewise.
2529         * config/rs6000/rs6000.h (TARGET_SINGLE_FLOAT): New default to 1.
2530         (TARGET_DOUBLE_FLOAT): New default to 1
2531         (TARGET_SIMPLE_FPU): New default to 0
2532         (TARGET_SINGLE_FPU): New default to 0
2533         (TARGET_SINGLE_FLOAT_MODE): New.
2534         (TARGET_DOUBLE_FLOAT_MODE): New.
2535         * config/rs6000/singlefp.h: New; redefine TARGET_SINGLE_FLOAT,
2536         TARGET_DOUBLE_FLOAT, TARGET_SIMPLE_FPU, TARGET_SINGLE_FPU,
2537         UNITS_PER_FP_WORD
2538         * config/rs6000/rs6000.md (define_mode_iterator): Condition on
2539         TARGET_DOUBLE_FLOAT, TARGET_SINGLE_FLOAT.
2540         (extendsfdf2, extendsfdf2_fpr, truncdfsf2, truncdfsf2_fpr,
2541         copysigndf3,fseldfsf4, negdf2, negdf2_fpr, absdf2, absdf2_fpr,
2542         nabsdf2_fpr, adddf3, adddf3_fpr, subdf3, subdf3_fpr, muldf3,
2543         muldf3_fpr, divdf3, divdf3_fpr, sqrtdf2, smaxdf3, smindf3,
2544         movdfcc, *fseldfdf4, floatsidf2, *floatsidf2_internal,
2545         floatunssidf2, *floatunssidf2_internal, fix_truncdfsi2,
2546         *fix_truncdfsi2_internal, fix_truncdfsi2_internal_gfxopt,
2547         fix_truncdfsi2_mfpgpr, fctiwz, btruncdf2, ceildf2, floordf2,
2548         rounddf2, floatdidf2, floatsidf_ppc64_mfpgpr, floatsidf_ppc64,
2549         floatunssidf_ppc64, fix_truncdfdi2, movdf_hardfloat32,
2550         movdf_hardfloat64_mfpgpr, movdf_hardfloat64, extenddftf2_fprs,
2551         extenddftf2_internal, trunctfdf2_internal2, fix_trunc_helper,
2552         abstf2_internal, movdf_update1, movdf_update2, cmpdf_internal1,
2553         cmptf_internal1, *cmptf_internal2): Condition on
2554         TARGET_DOUBLE_FLOAT.
2555         (aux_truncdfsf2, negsf2, *negsf2, abssf2, *abssf2, addsf3, subsf3,
2556         mulsf3, divsf3, sqrtsf2, copysignsf3, smaxsf3, sminsf3, movsfcc,
2557         *fselsfsf4, fixuns_truncsfsi2, fix_truncsfsi2, floatunssisf2,
2558         btruncsf2, ceilsf2, floorsf2, roundsf2, floatdisf2_internal1,
2559         floatdisf2_internal2, *movsf_hardfloat, trunctfsf2_fprs,
2560         *movsf_update1, *movsf_update2, *cmpsf_internal1): Condition on
2561         TARGET_SINGLE_FLOAT.
2562         (divsf3, sqrtsf2, divdf3, divdf3_fpr): Condition on TARGET_SIMPLE_FPU.
2563         * config/rs6000/rs6000.opt (-msingle-float): New.
2564         (-mdouble-float): New.
2565         (-msimple-fpu): New.
2566         * doc/invoke.texi (RS/6000 and PowerPC Options): Add
2567         -msingle-float, -mdouble-float, -msimple-fpu options.
2568         * config/rs6000/rs6000-c.c (rs6000_cpu_cpp_builtins): Set
2569         _SOFT_DOUBLE for -msingle-float.
2570         * config.gcc: New config for target=powerpc-xilinx-eabi.
2571
2572 2008-09-29  Tobias Grosser  <grosser@fim.uni-passau.de>
2573
2574         * graphite.c (dot_all_scops_1): Remove unused checks. SCoPs always
2575         have exit and entry.
2576         (new_scop): Take entry and exit edge to define new SCoP.
2577         (sd_region_p): New structure used during SCoP detection.
2578         (move_scops): Delete.
2579         (move_sd_regions): New.
2580         (scopdet_info): Change the definition from edges back to basic_blocks.
2581         (scopdet_edge_info):  Work on basic_blocks and rename to
2582         scopdet_basic_block_info.
2583         (split_difficult_bb): At the moment removed. We should later
2584         add it at another place.
2585         (build_scops_1): Work on basic_blocks.
2586         (bb_in_sd_region): New.
2587         (find_single_entry_edge): New.
2588         (find_single_exit_edge): New.
2589         (create_single_entry_edge): New.
2590         (sd_region_without_exit): New.
2591         (create_single_exit_edge): New.
2592         (unmark_exit_edges): New.
2593         (mark_exit_edges): New.
2594         (create_sese_edges): New.
2595         (build_graphite_scops): New.
2596         (build_scops): Make SCoPs SESE.
2597         (limit_scops): Use the new functions.
2598
2599 2008-09-29  Hans-Peter Nilsson  <hp@axis.com>
2600
2601         * config/cris/cris.h (IRA_COVER_CLASSES): Define.
2602
2603 2008-09-28  Andrew Pinski  <andrew_pinski@playstation.sony.com>
2604
2605         PR target/37640
2606         * config/rs6000/rs6000.c (rs6000_expand_compare_and_swapqhi): Force
2607         address to a register before taking the lower part.
2608
2609 2008-09-28  Kaz Kojima  <kkojima@gcc.gnu.org>
2610
2611         * config/sh/sh.h (OVERRIDE_OPTIONS): Unset flag_dwarf2_cfi_asm
2612         for SHmedia.
2613
2614 2008-09-28  Andrew Pinski  <andrew_pinski@playstation.sony.com>
2615             Kaushal Kantawala  <kaushal_kantawala@playstation.sony.com>
2616
2617         PR tree-opt/36891
2618         * tree-ssa-loop-im.c (rewrite_reciprocal): Set DECL_GIMPLE_REG_P on
2619         the newly created variable.
2620         Create a VECTOR_CST of all 1s for vector types.
2621
2622 2008-09-28  Eric Botcazou  <ebotcazou@adacore.com>
2623
2624         PR middle-end/36575
2625         * fold-const.c (div_and_round_double) <ROUND_DIV_EXPR>: Fix typo.
2626
2627 2008-09-28  Eric Botcazou  <ebotcazou@adacore.com>
2628
2629         * expmed.c (store_fixed_bit_field): Always use convert_to_mode in
2630         order to convert between modes.
2631         (extract_bit_field_1): Test TRULY_NOOP_TRUNCATION on the right mode.
2632
2633 2008-09-27  Kaz Kojima  <kkojima@gcc.gnu.org>
2634
2635         * config/sh/sh.c (sh_gimplify_va_arg_expr): Use VIEW_CONVERT_EXPR
2636         if needed.
2637
2638 2008-09-26  Vladimir Makarov  <vmakarov@redhat.com>
2639
2640         Revert:
2641         2008-09-25  Vladimir Makarov  <vmakarov@redhat.com>
2642         * ira-lives.c:...
2643         * doc/rtl.texi:...
2644
2645 2008-09-26  Adam Nemet  <anemet@caviumnetworks.com>
2646
2647         * config/mips/mips.h (ISA_HAS_DMUL3, ISA_HAS_BADDU, ISA_HAS_BBIT,
2648         ISA_HAS_CINS, ISA_HAS_EXTS, ISA_HAS_SEQ_SNE, ISA_HAS_POP): Change
2649         them to yield false with MIPS16.
2650
2651 2008-09-26  Jakub Jelinek  <jakub@redhat.com>
2652
2653         PR middle-end/37275
2654         * dwarf2out.c (tls_mem_loc_descriptor): New function.
2655         (mem_loc_descriptor): Use it for MEM.  For PLUS fail if second
2656         mem_loc_descriptor failed.  Accept UNSPEC.
2657         (loc_descriptor): Use tls_mem_loc_descriptor for MEM.  For PARALLEL
2658         fail if one of the loc_descriptor calls for pieces failed.
2659         (loc_descriptor_from_tree_1): Handle even DECL_EXTERNAL __thread vars,
2660         as long as they bind locally.  For COMPONENT_REF, ARRAY_REF etc. fail
2661         if loc_descriptor_from_tree_1 on offset failed.
2662
2663         PR middle-end/37576
2664         * opts.c (common_handle_option): Don't call print_specific_help with
2665         CL_SAVE as first argument.
2666
2667 2008-09-26  Peter O'Gorman  <pogma@thewrittenword.com>
2668             Steve Ellcey  <sje@cup.hp.com>
2669
2670         * configure: Regenerate for new libtool.
2671         * aclocal.m4: Ditto.
2672
2673 2008-09-26  Pat Haugen  <pthaugen@us.ibm.com>
2674
2675         * config/rs6000/rs6000.c (rs6000_emit_allocate_stack): Use correct
2676         alias set on MEM when saving stack pointer.
2677         * config/rs6000/rs6000.md (allocate_stack): Likewise
2678
2679 2008-09-26  Dorit Nuzman  <dorit@il.ibm.com>
2680
2681         PR tree-optimization/37574
2682         * tree-vectorizer.c (vect_is_simple_use): Fix indentation.
2683         * tree-vect-transform.c (vect_get_constant_vectors): Use vectype
2684         instead of vector_type for constants. Take computation out of loop.
2685         (vect_get_vec_def_for_operand): Use only vectype for constant case,
2686         and use only vector_type for invariant case.
2687         (get_initial_def_for_reduction): Use vectype instead of vector_type.
2688
2689 2008-09-25  Jakub Jelinek  <jakub@redhat.com>
2690
2691         PR c/37645
2692         * c-common.c (handle_weakref_attribute): Ignore the attribute unless
2693         the decl is a VAR_DECL or FUNCTION_DECL.
2694
2695 2008-09-25  Vladimir Makarov  <vmakarov@redhat.com>
2696
2697         PR middle-end/37535
2698         * ira-lives.c (mark_reg_live, mark_reg_dead): New functions.
2699         (mark_ref_live, mark_ref_dead): Use them.
2700         (def_conflicts_with_inputs_p): Remove.
2701         (mark_early_clobbers): New function.
2702         (process_bb_node_lives): Call preprocess_constraints and
2703         mark_early_clobbers.
2704
2705         * doc/rtl.texi (clobber): Change how RA deals with clobbers.
2706
2707 2008-09-25  Vladimir Makarov  <vmakarov@redhat.com>
2708
2709         PR middle-end/37448
2710         * ira-int.h (IRA_ALLOCNO_TEMP): Rename to ALLOCNO_TEMP.
2711         (ira_compress_allocno_live_ranges): New prototype.
2712
2713         * ira-color.c: Rename IRA_ALLOCNO_TEMP to ALLOCNO_TEMP.
2714         (coalesced_allocnos_living_at_program_points): New.
2715         (coalesced_allocnos_live_at_points_p,
2716         set_coalesced_allocnos_live_points): New functions.
2717         (coalesce_spill_slots): Rewrite.
2718         
2719         * ira-lives.c (remove_some_program_points_and_update_live_ranges,
2720         ira_compress_allocno_live_ranges): New functions.
2721
2722         * ira-build.c (ira_flattening): Call
2723         ira_compress_allocno_live_ranges.
2724         (ira_build): Ditto.
2725
2726 2008-09-25  H.J. Lu  <hongjiu.lu@intel.com>
2727
2728         * config/i386/i386.md: Check cmp/branch fuse for cmp peephole
2729         optimization.
2730
2731 2008-09-25  Richard Sandiford  <rdsandiford@googlemail.com>
2732
2733         * combine.c (make_compound_operation): Handle the 'E' format.
2734         (count_rtxs): Likewise.
2735         (update_table_tick): Likewise.
2736         (get_last_value_validate): Likewise.
2737
2738 2008-09-25  Eric Botcazou  <ebotcazou@adacore.com>
2739
2740         * dbxout.c (dbxout_parms): Fetch the inner REG inside a PARALLEL.
2741
2742 2008-09-25 Sergei Dyshel <sergeid@il.ibm.com>
2743
2744         * matrix-reorg.c (transform_allocation_sites): Initializers 
2745         added to avoid the warning.
2746
2747 2008-09-25  Martin Jambor  <mjambor@suse.cz>
2748
2749         * cgraph.c (free_nodes): New variable.
2750         (NEXT_FREE_NODE): New macro.
2751         (cgraph_create_node): Reuse nodes from the free list.  Do not
2752         update uid if doing so.
2753         (cgraph_remove_node): Add the node to the free list.
2754
2755 2008-09-25  Gerald Pfeifer  <gerald@pfeifer.com>
2756
2757         * config/freebsd.h (HANDLE_PRAGMA_PACK_PUSH_POP): Define.
2758
2759 2008-09-24  Richard Henderson  <rth@redhat.com>
2760
2761         * dwarf2.h (DW_OP_GNU_encoded_addr): New.
2762         * unwind-dw2.c (execute_stack_op): Handle it.
2763
2764 2008-09-24  David Edelsohn  <edelsohn@gnu.org>
2765
2766         Revert:
2767         2008-09-24  Michael J. Eager  <eager@eagercon.com>
2768
2769 2008-09-24  Aldy Hernandez  <aldyh@redhat.com>
2770
2771         * c-common.c (fname_decl): New location argument.
2772         * c-common.h (fname_decl): Same.
2773         * c-parser.c (c_lex_one_token): Use {warning,error}_at instead of
2774         {warning,error}.
2775         (c_parser_typeof_specifier): Same.
2776         (c_parser_parms_list_declarator): Same.
2777         (c_parser_asm_string_literal): Same.
2778         (c_parser_compound_statement_nostart): Same.
2779         (c_parser_label): Same.
2780         (c_parser_do_statement): Same.
2781         (c_parser_asm_statement): Same.
2782         (c_parser_unary_expression): Same.
2783         (c_parser_sizeof_expression): Same.
2784         (c_parser_postfix_expression): Same.
2785         (c_parser_pragma): Same.
2786         (c_parser_omp_clause_collapse): Same.
2787         (c_parser_omp_clause_num_threads): Same.
2788         (c_parser_omp_clause_schedule): Same.
2789         (c_parser_omp_all_clauses): Same.
2790         (c_parser_omp_sections_scope): Same.
2791         (c_parser_omp_for_loop): Same.  Pass condition's location to
2792         c_objc_common_truthvalue_conversion.
2793         (c_parser_enum_specifier): Remove comment.
2794
2795 2008-09-24  Michael J. Eager  <eager@eagercon.com>
2796
2797         * config/rs6000/predicates.md (easy_fp_constant): Single FP consts
2798         are easy.
2799         * config/rs6000/rs6000.c (rs6000_override_options): Move
2800         rs6000_init_hard_regno_mode_ok after all options changed.
2801         Set rs6000_single_float, rs6000_double_float if TARGET_HARD_FLOAT.
2802         (rs6000_handle_option): Process -msingle-float, -mdouble-float,
2803         -msimple-fpu flags.  Add warning messages if single FP not configured.
2804         (rs6000_file_start): Output gnu_attribute for single-float.
2805         (legitimate_lo_sum_address_p): Condition on TARGET_DOUBLE_FLOAT.
2806         (rs6000_legitimize_address): Likewise.
2807         (rs6000_legitimize_reload_address): Likewise.
2808         (rs6000_emit_move): Condition on TARGET_DOUBLE_FLOAT,
2809         TARGET_SINGLE_FLOAT.
2810         (function_arg_advance): Likewise.
2811         (function_arg): Likewise.
2812         (setup_incoming_varargs): Condition on TARGET_DOUBLE_FLOAT.
2813         (rs6000_gimplify_va_arg): Condition on TARGET_DOUBLE_FLOAT,
2814         TARGET_SINGLE_FLOAT.
2815         (rs6000_split_multireg_move): Condition on TARGET_DOUBLE_FLOAT.
2816         (rs6000_emit_prologue): Likewise.
2817         (rs6000_function_value): Condition on TARGET_DOUBLE_FLOAT,
2818         TARGET_SINGLE_FLOAT.
2819         (rs6000_libcall_value): Likewise.
2820         * config/rs6000/rs6000.h (TARGET_SINGLE_FLOAT): New default to 1.
2821         (TARGET_DOUBLE_FLOAT): New default to 1
2822         (TARGET_SIMPLE_FPU): New default to 0
2823         (TARGET_SINGLE_FPU): New default to 0
2824         (TARGET_SINGLE_FLOAT_MODE): New.
2825         (TARGET_DOUBLE_FLOAT_MODE): New.
2826         * config/rs6000/singlefp.h: New; redefine TARGET_SINGLE_FLOAT,
2827         TARGET_DOUBLE_FLOAT, TARGET_SIMPLE_FPU, TARGET_SINGLE_FPU,
2828         UNITS_PER_FP_WORD
2829         * config/rs6000/rs6000.md (define_mode_iterator): Condition on
2830         TARGET_DOUBLE_FLOAT, TARGET_SINGLE_FLOAT.
2831         (extendsfdf2, extendsfdf2_fpr, truncdfsf2, truncdfsf2_fpr,
2832         copysigndf3,fseldfsf4, negdf2, negdf2_fpr, absdf2, absdf2_fpr,
2833         nabsdf2_fpr, adddf3, adddf3_fpr, subdf3, subdf3_fpr, muldf3,
2834         muldf3_fpr, divdf3, divdf3_fpr, sqrtdf2, smaxdf3, smindf3,
2835         movdfcc, *fseldfdf4, floatsidf2, *floatsidf2_internal,
2836         floatunssidf2, *floatunssidf2_internal, fix_truncdfsi2,
2837         *fix_truncdfsi2_internal, fix_truncdfsi2_internal_gfxopt,
2838         fix_truncdfsi2_mfpgpr, fctiwz, btruncdf2, ceildf2, floordf2,
2839         rounddf2, floatdidf2, floatsidf_ppc64_mfpgpr, floatsidf_ppc64,
2840         floatunssidf_ppc64, fix_truncdfdi2, movdf_hardfloat32,
2841         movdf_hardfloat64_mfpgpr, movdf_hardfloat64, extenddftf2_fprs,
2842         extenddftf2_internal, trunctfdf2_internal2, fix_trunc_helper,
2843         abstf2_internal, movdf_update1, movdf_update2, cmpdf_internal1,
2844         cmptf_internal1, *cmptf_internal2): Condition on
2845         TARGET_DOUBLE_FLOAT.
2846         (aux_truncdfsf2, negsf2, *negsf2, abssf2, *abssf2, addsf3, subsf3,
2847         mulsf3, divsf3, sqrtsf2, copysignsf3, smaxsf3, sminsf3, movsfcc,
2848         *fselsfsf4, fixuns_truncsfsi2, fix_truncsfsi2, floatunssisf2,
2849         btruncsf2, ceilsf2, floorsf2, roundsf2, floatdisf2_internal1,
2850         floatdisf2_internal2, *movsf_hardfloat, trunctfsf2_fprs,
2851         *movsf_update1, *movsf_update2, *cmpsf_internal1): Condition on
2852         TARGET_SINGLE_FLOAT.
2853         (divsf3, sqrtsf2, divdf3, divdf3_fpr): Condition on TARGET_SIMPLE_FPU.
2854         * config/rs6000/rs6000.opt (-msingle-float): New.
2855         (-mdouble-float): New.
2856         (-msimple-fpu): New.
2857         * doc/invoke.texi (RS/6000 and PowerPC Options): Add
2858         -msingle-float, -mdouble-float, -msimple-fpu options.
2859         * config/rs6000/rs6000-c.c (rs6000_cpu_cpp_builtins): Set
2860         _SOFT_DOUBLE for -msingle-float.
2861         * config.gcc: New config for target=powerpc-xilinx-eabi.
2862
2863 2008-09-23  Eric Botcazou  <ebotcazou@adacore.com>
2864
2865         * config/sparc/constraints.md: New file.
2866         * config/sparc/sparc.md: Include it.
2867         * config/sparc/sparc-protos.h (memory_ok_for_ldd): Declare.
2868         (sparc_extra_constraint_check): Delete.
2869         * config/sparc/sparc.c (register_ok_for_ldd): Minor tweaks.
2870         (memory_ok_for_ldd): New predicate.
2871         (sparc_extra_constraint_check): Delete.
2872         * config/sparc/sparc.h (REG_CLASS_FROM_LETTER): Likewise.
2873         (CONST_OK_FOR_LETTER_P): Likewise.
2874         (CONST_DOUBLE_OK_FOR_LETTER_P): Likewise.
2875         (EXTRA_CONSTRAINT): Likewise.
2876
2877 2008-08-23  Steve Ellcey  <sje@cup.hp.com>
2878
2879         * regrename.c (do_replace): Copy REG_POINTER value to new reg.
2880
2881 2008-09-23  Richard Sandiford  <rdsandiford@googlemail.com>
2882
2883         * alias.c (find_base_value): Use FIND_BASE_TERM.
2884         * doc/tm.texi (FIND_BASE_TERM): Update documentation.
2885
2886 2008-09-23  Richard Sandiford  <rdsandiford@googlemail.com>
2887
2888         * config/i386/i386.c: Include cselib.h.
2889         (ix86_pic_register_p): New function.
2890         (ix86_delegitimize_address): Use it to check for the PIC register.
2891
2892 2008-09-23  Richard Sandiford  <rdsandiford@googlemail.com>
2893
2894         * doc/tm.texi (FIND_BASE_TERM): Expand documentation.
2895         * config/i386/i386.c (ix86_find_base_term): Don't check for
2896         SYMBOL_REF and LABEL_REF.
2897
2898 2008-09-23  Richard Sandiford  <rdsandiford@googlemail.com>
2899
2900         * config/i386/i386.c (ix86_delegitimize_address): Wrap the
2901         constant PLUS in a CONST.
2902
2903 2008-09-23  Kai Tietz  <kai.tietz@onevision.com>
2904
2905         * config/i386/i386.c (ix86_function_ok_for_sibcall): Correct
2906         check for sibcall support for w64.
2907
2908 2008-09-23  Eric Botcazou  <ebotcazou@adacore.com>
2909
2910         * c-ppoutput.c (cb_used_define): Do nothing for a builtin node.
2911
2912 2008-09-23  Aldy Hernandez  <aldyh@redhat.com>
2913
2914         * c-tree.h: Add argument to c_objc_common_truthvalue_conversion,
2915         parser_build_binary_op.
2916         * c-decl.c (build_enumerator): Pass location to build_binary_op.
2917         * c-typeck.c (build_array_ref): Same.
2918         (parser_build_unary_op): New location argument.
2919         (pointer_diff): Pass location to build_binary_op,
2920         c_objc_common_truthvalue_conversion.
2921         (build_modify_expr): Same.
2922         (build_unary_op): New location argument.
2923         (build_binary_op): New location argument.
2924         (c_objc_common_truthvalue_conversion): Pass location to
2925         c_*common_truthvalue_conversion.
2926         * c-convert.c (convert): Same.
2927         * c-common.c (binary_op_error): New location argument.
2928         (pointer_int_sum): Pass location to build_binary_op.
2929         (c_common_truthvalue_conversion): New location argument.
2930         (warn_for_sign_compare): Same.
2931         * c-common.h: Add location argument to c_common_truthvalue_conversion,
2932         binary_op_error, build_binary_op, warn_for_sign_compare.
2933         * c-parser.c (c_parser_condition): Pass location to
2934         c_*common_truthvalue_conversion.
2935         (c_parser_conditional_expression): Save condition's location and pass
2936         it on down.
2937         (c_parser_binary_expression): Same, but for the binary operator's
2938         location.
2939         (c_parser_omp_for_loop): Pass location to
2940         c_objc_common_truthvalue_conversion.
2941
2942 2008-09-23  Martin Jambor  <mjambor@suse.cz>
2943
2944         * cgraph.c (cgraph_free_edge): Use sizeof(*e).
2945         (cgraph_node_remove_callees): New temporary f.  Hold the next item
2946         in f when looping.
2947         (cgraph_node_remove_callers): Likewise.
2948
2949         * ipa-prop.c (ipa_edge_removal_hook): Use ATTRIBUTE_UNUSED.
2950         (ipa_node_removal_hook): Likewise.
2951
2952         * doc/gimple.texi (gimple_copy_call_skip_args): Changed to
2953         gimple_call_copy_skip_args and moved to the gimple_call section.
2954         * gimple.c (gimple_copy_call_skip_args): Renamed to
2955         gimple_call_copy_skip_args.  Changed al users.
2956
2957 2008-09-22  Vladimir Makarov  <vmakarov@redhat.com>
2958
2959         * ira-color.c (start_allocno_priorities): Rename to
2960         setup_allocno_priorities.  Use costs and
2961         ALLOCNO_EXCESS_PRESSURE_POINTS_NUM instead of frequencies and
2962         range lengths.  Get rid off doubles.
2963         (ira_fast_allocations): Call start_allocno_priorities.
2964         
2965 2008-09-22  David Daney  <ddaney@avtrex.com>
2966
2967         PR target/37593
2968         * config/mips/mips.h (FUNCTION_PROFILER): Call _mcount via a
2969         register if TARGET_LONG_CALLS.
2970
2971 2008-09-22  Richard Guenther  <rguenther@suse.de>
2972
2973         PR tree-optimization/37145
2974         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Re-enable
2975         value-numbering union accesses with their offset and size only.
2976         (visit_reference_op_load): Fix simplification of inserted conversions.
2977         * tree-ssa-pre.c (find_or_generate_expression): Do not
2978         recursively generate expressions if running FRE.
2979
2980 2008-09-22  Adam Nemet  <anemet@caviumnetworks.com>
2981
2982         * config/mips/mips.h (ISA_HAS_BADDU): New macro.
2983         * config/mips/mips.md (*baddu_si_eb, *baddu_si_el, *baddu_di<mode>):
2984         New patterns.
2985
2986 2008-09-22  Richard Guenther  <rguenther@suse.de>
2987
2988         PR tree-optimization/37145
2989         * tree-ssa-pre.c (fully_constant_expression): Simplify builtin calls.
2990         (phi_translate_1): Constant fold references.
2991
2992 2008-09-22  Ira Rosen  <irar@il.ibm.com>
2993
2994         PR tree-optimization/37482
2995         * tree-vectorizer.h (struct _slp_instance): Add new field.
2996         (SLP_INSTANCE_FIRST_LOAD_STMT): New.
2997         (get_earlier_stmt): New function.
2998         * tree-vect-analyze.c (vect_find_first_load_in_slp_instance): New
2999         function.
3000         (vect_analyze_slp_instance): Set SLP_INSTANCE_FIRST_LOAD_STMT.
3001         * tree-vect-transform.c (vect_finish_stmt_generation): Remove the
3002         asserts that GSI points to the scalar statement being vectorized.
3003         Set new statement location according to GSI.
3004         (vect_schedule_slp_instance): Use GSI of
3005         SLP_INSTANCE_FIRST_LOAD_STMT when vectorizing loads.
3006
3007 2008-09-21  Jan Hubicka  <jh@suse.cz>
3008
3009         * ipa-cp.c (ipcp_estimate_growth): Check recursive calls.
3010         (ipcp_insert_stage): Update dead_nodes bitmap.
3011
3012 2008-09-22  Danny Smith  <dannysmith@users.sourceforge.net>
3013
3014         PR target/37528 
3015         * config/i386/t-cygming (SHLIB_LC): Remove.
3016         (SHLIB_LINK): Don't add static objects to SHLIB_IMPLIB
3017         * config/i386/t-cygwin (SHLIB_LC): Specify all required libraries.
3018
3019 2008-09-22  Hans-Peter Nilsson  <hp@axis.com>
3020
3021         PR middle-end/37170
3022         PR middle-end/37280
3023         * final.c (mark_symbol_ref_as_used): New helper function.
3024         (output_operand): Instead of just looking inside MEMs for
3025         SYMBOL_REFs, use new helper function and for_each_rtx.
3026         * varasm.c (assemble_external): Move #ifndef ASM_OUTPUT_EXTERNAL
3027         to after weak-handling.  Don't mark decls with TREE_STATIC as weak.
3028         Make head comment more general.
3029         * config/darwin.c (machopic_output_indirection): Handle weak
3030         references here, like in assemble_external.
3031
3032 2008-09-21  Eric Botcazou  <ebotcazou@adacore.com>
3033
3034         * config/sparc/sparc-protos.h (gen_compare_operator): Declare.
3035         (sparc_emit_float_lib_cmp): Change return type.
3036         * config/sparc/sparc.c (gen_compare_reg): Add comment about TFmode.
3037         (gen_compare_operator): New function.
3038         (sparc_emit_float_lib_cmp): Return the new operator to be used in
3039         the comparison sequence.  Minor tweaks.
3040         * config/sparc/sparc.md (seq, sne, sgt, slt, sge, sle): Assert
3041         that the final operator and the result of sparc_emit_float_lib_cmp
3042         match for software TFmode; use emit_insn in lieu of emit_jump_insn.
3043         (beq, bne, bgt, blt, bge, ble, bunordered, bordered, bungt, bunlt,
3044         buneq, bunge, bunle, bltgt): Assert that the final operator and the
3045         result of sparc_emit_float_lib_cmp match for software TFmode.
3046         (movqicc, movhicc, movsicc, movdicc): Merge into...
3047         (mov<I:mode>cc): ...this.
3048         (movsfcc, movdfcc, movtfcc): Merge into...
3049         (mov<F:mode>cc): ...this.
3050         (movqi_cc_sp64, movhi_cc_sp64, movsi_cc_sp64, movdi_cc_sp64): Merge
3051         into...
3052         (mov<I:mode>_cc_v9): ...this.
3053         (movdi_cc_sp64_trunc): Delete.
3054         (movqi_cc_reg_sp64, movhi_cc_reg_sp64, movsi_cc_reg_sp64,
3055         movdi_cc_reg_sp64): Merge into...
3056         (mov<I:mode>_cc_reg_sp64): ...this.
3057         (movsf_cc_sp64): Rename into...
3058         (movsf_cc_v9): ...this.
3059         (movdf_cc_sp64): Rename into...
3060         (movdf_cc_v9): ...this.
3061         (movtf_cc_hq_sp64): Rename into...
3062         (movtf_cc_hq_v9): ...this.
3063         (movtf_cc_sp64): Rename into...
3064         (movtf_cc_v9): ...this.  Adjust for renaming of movdf_cc_sp64.
3065
3066 2008-09-21  Diego Novillo  <dnovillo@google.com>
3067
3068         * doc/gccint.texi: Include generic.texi and gimple.texi.
3069         Re-order index.
3070         * doc/tree-ssa.texi (GENERIC): Move to generic.texi.
3071         (GIMPLE): Move to gimple.texi.
3072         (Annotations): Remove references to to stmt_ann_t and
3073         ssa_name_ann_t.
3074         (SSA Operands): Rename from 'Statement Operands'.
3075         * doc/generic.texi: New.
3076         * doc/gimple.texi: New.
3077         * Makefile.in (TEXI_GCCINT_FILES): Add generic.texi and gimple.texi.
3078         * Makefile.in (TEXI_GCCINT_FILES):
3079         * gimple.c (gimple_copy_call_skip_args): Rename from
3080         giple_copy_call_skip_args.  Update all users.
3081         * doc/gimple.texi (gimple_copy_call_skip_args): Document.
3082
3083 2008-09-21  Ira Rosen  <irar@il.ibm.com>
3084
3085         PR tree-optimization/37539
3086         * tree-vect-transform.c (vect_transform_strided_load): Save vector
3087         statement in related statement field only for the first load of the
3088         group of loads with the same data reference.
3089
3090 2008-09-20  Adam Nemet  <anemet@caviumnetworks.com>
3091
3092         * config/mips/mips.h (TUNE_OCTEON): New macro.
3093         * config/mips/mips.c (mips_issue_rate): Return 2 for Octeon.
3094         (mips_multipass_dfa_lookahead): Return 2 for Octeon.
3095         * config/mips/octeon.md: New file.
3096         * config/mips/mips.md: Include octeon.md.  Restore
3097         semi-alphabetical order of include files.
3098
3099 2008-09-20  H.J. Lu  <hongjiu.lu@intel.com>
3100
3101         PR target/37571
3102         * config/i386/i386.md (*jcc_fused_1): Removed.
3103         (*jcc_fused_2): Likewise.
3104         (*jcc_fused_3): Likewise.
3105         (*jcc_fused_4): Likewise.
3106
3107 2008-09-20  Richard Sandiford  <rdsandiford@googlemail.com>
3108
3109         * doc/tm.texi (TARGET_IRA_COVER_CLASSES): Define.
3110         (IRA_COVER_CLASSES): Refer to TARGET_IRA_COVER_CLASSES.
3111         * target.h (gcc_target): Add ira_cover_classes.
3112         * ira.c: Remove IRA_COVER_CLASSES guards.
3113         (setup_cover_and_important_classes): Use targetm.ira_cover_classes
3114         instead of IRA_COVER_CLASSES.
3115         (setup_cover_and_important_classes): Remove IRA_COVER_CLASSES guard.
3116         (setup_class_translate): Likewise.
3117         (setup_reg_class_intersect_union): Likewise.
3118         (find_reg_class_closure): Replace IRA_COVER_CLASSES guard with a
3119         test of targetm.ira_cover_classes.
3120         * opts.c (decode_options): Use targetm.ira_cover_classes instead
3121         of IRA_COVER_CLASSES.
3122         * target-def.h (TARGET_IRA_COVER_CLASSES): Define.
3123         (TARGET_INITIALIZER): Include it.
3124         * targhooks.h (default_ira_cover_classes): Declare.
3125         * targhooks.c (default_ira_cover_classes): New function.
3126
3127 2008-09-19  Bob Wilson  <bob.wilson@acm.org>
3128         
3129         * config/xtensa/xtensa.md (reload<mode>_literal): Handle MEM operands.
3130         
3131 2008-09-19  Ian Lance Taylor  <iant@google.com>
3132
3133         * varasm.c (narrowing_initializer_constant_valid_p): Return
3134         NULL_TREE if ENDTYPE is not an integer.
3135
3136 2008-09-19  Andrew Pinski  <andrew_pinski@playstation.sony.com>
3137
3138         PR tree-opt/30930
3139         * tree-ssa.c (execute_update_addresses_taken): Also update
3140         DECL_GIMPLE_REG_P for vector and complex types.
3141
3142 2008-09-19  Andrew MacLeod  <amacleod@redhat.com>
3143             Jan Hubicka  <jh@suse.cz>
3144
3145         PR middle-end/37567
3146         * tree-ssa-ter.c (free_temp_expr_table): Make sure fields are actually
3147         empty before freeing them.
3148         (find_replaceable_exprs): Move asserts to free_temp_expr_table.
3149
3150 2008-09-18  Bob Wilson  <bob.wilson@acm.org>
3151
3152         * configure.ac: Add HAVE_AS_TLS check for Xtensa.
3153         * config/xtensa/predicates.md (tls_symbol_operand): New.
3154         * config/xtensa/xtensa.c (TARGET_HAVE_TLS): Define.
3155         (TARGET_CANNOT_FORCE_MEM): Define.
3156         (xtensa_tls_symbol_p): New.
3157         (xtensa_emit_move_sequence): Check for and legitimize TLS addresses.
3158         (xtensa_legitimate_address_p): Disallow constant pool TLS references.
3159         (xtensa_tls_module_base): New.
3160         (xtensa_call_tls_desc): New.
3161         (xtensa_legitimize_tls_address): New.
3162         (xtensa_legitimize_address): Handle TLS symbols.
3163         (xtensa_tls_referenced_p_1): New.
3164         (xtensa_tls_referenced_p): New.
3165         (xtensa_output_addr_const_extra): Handle UNSPEC_TPOFF and
3166         UNSPEC_DTPOFF.
3167         (XTENSA_BUILTIN_THREAD_POINTER): New.
3168         (XTENSA_BUILTIN_SET_THREAD_POINTER): New.
3169         (xtensa_init_builtins): Set NOTHROW and READONLY for umulsidi3
3170         builtin.  Add declarations for __builtin_thread_pointer and
3171         __builtin_set_thread_pointer.
3172         (xtensa_fold_builtin): Recognize new builtins.
3173         (xtensa_expand_builtin): Expand new builtins.
3174         * config/xtensa/xtensa.h (XCHAL_HAVE_THREADPTR): Define default value.
3175         (TARGET_THREADPTR): Define.
3176         (HAVE_AS_TLS): Define default value.
3177         (LEGITIMATE_CONSTANT_P): Disallow TLS references.
3178         * config/xtensa/xtensa.md (UNSPEC_TPOFF, UNSPEC_DTPOFF): New.
3179         (UNSPEC_TLS_FUNC, UNSPEC_TLS_ARG, UNSPEC_TLS_CALL, UNSPEC_TP): New.
3180         (UNSPECV_SET_TP): New.
3181         (sym_TPOFF, sym_DTPOFF): New.
3182         (load_tp, set_tp, tls_func, tls_arg, tls_call): New.
3183         * config/xtensa/xtensa-protos.h (xtensa_tls_referenced_p): Declare.
3184         * configure: Regenerated.
3185         
3186 2008-09-18  H.J. Lu  <hongjiu.lu@intel.com>
3187
3188         PR target/37394
3189         * config/ia64/ia64.c (ia64_optimization_options): Move
3190         checking and setting flag_schedule_insns_after_reload and
3191         ia64_flag_schedule_insns2 back to ...
3192         (ia64_override_options): Here.
3193
3194 2008-09-18  Andrew Pinski  <andrew_pinski@playstation.sony.com>
3195
3196         PR rtl-opt/37451
3197         * loop-doloop.c (doloop_modify): New argument zero_extend_p and
3198         zero extend count after the correction to it is done.
3199         (doloop_optimize): Update call to doloop_modify, don't zero extend
3200         count before call.
3201
3202 2008-09-18  Martin Jambor  <mjambor@suse.cz>
3203
3204         * ipa-cp.c (ipcp_estimate_growth): Return 0 instead of false.
3205
3206         * ipa-prop.c: Correct comments.
3207         * ipa-prop.h: Likewise.
3208
3209 2008-09-18  Jan Hubicka  <jh@suse.cz>
3210
3211         PR middle-end/37448
3212         * ipa-reference.c (ipa_reference_local_vars_info_d,
3213         ipa_reference_global_vars_info_d,
3214         ipa_reference_local_vars_info_t, ipa_reference_global_vars_info_t,
3215         ipa_reference_vars_info_t): Move here from ipa-reference.h
3216         (node_duplication_hook_holder, node_removal_hook_holder): New.
3217         (get_reference_vars_info_from_cgraph): Rename to ...
3218         (get_reference_vars_info): ... this one, use cgraph uids.
3219         (get_local_reference_vars_info, get_global_reference_vars_info):
3220         Use cgraph instead of decl.
3221         (ipa_reference_get_read_local, ipa_reference_get_written_local):
3222         Remove.
3223         (ipa_reference_get_read_global, ipa_reference_get_not_read_global
3224         ipa_reference_get_written_global,
3225         ipa_reference_get_not_written_global): Use cgraph argument.
3226         (check_call): Simplify avail check.
3227         (scan_stmt_for_static_refs): Update.
3228         (propagate_bits): Update.
3229         (merge_callee_local_info): Remove.
3230         (init_function_info): Use cgraph nodes.
3231         (clean_function_local_data): Break out from ...
3232         (clean_function): ... here.
3233         (copy_local_bitmap, copy_global_bitmap): New functions.
3234         (duplicate_node_data, remove_node_data): New functions.
3235         (generate_summary): Register hooks; use visibility instead of
3236         master clones.
3237         (propafate): Use cgraph nodes; copy bitmap to each node in cycle.
3238         * ipa-reference.h (ipa_reference_local_vars_info_d,
3239         ipa_reference_global_vars_info_d,
3240         ipa_reference_local_vars_info_t, ipa_reference_global_vars_info_t,
3241         ipa_reference_vars_info_t): Move to ipa-reference.c
3242         (ipa_reference_get_read_local, ipa_reference_get_written_local):
3243         Remove.
3244         (ipa_reference_get_read_global, ipa_reference_get_written_global,
3245         ipa_reference_get_not_read_global,
3246         ipa_reference_get_not_written_global): Update prototype.
3247         * ipa-pure-const.c (funct_state_vec): Turn into VECtor.
3248         (init_state): Remove.
3249         (node_duplication_hook_holder, node_removal_hook_holder): New.
3250         (get_function_state, set_function_state): Use VECtor.
3251         (analyze_function): Check body availability.
3252         (add_new_function): Likewise.
3253         (duplicate_node_data, remove_node_data): New.
3254         (generate_summary): Register hooks; do not care about clones.
3255         (propafate): Do not care about clones; recursive functions are
3256         not looping.
3257         * ipa-utils.c (searchc, ipa_utils_reduced_inorder): Do not skip clones.
3258         * ipa-prop.c (edge_removal_hook_holder, node_removal_hook_holder,
3259         * edge_duplication_hook_holder, node_duplication_hook_holder): Make
3260         static.
3261         * tree-flow.h (function_ann_d): Remove reference_vars_info.
3262         * tree-ssa-opreands.c (add_call_clobber_ops, add_call_read_ops):
3263         Update call of ipa-reference accesors.
3264
3265 2008-09-18  Simon Baldwin  <simonb@google.com>
3266
3267         * c-opts.c (c_common_handle_option): Add handling for
3268         -Wbuiltin-macro-redefined command line option.
3269         * c.opt: Added builtin-macro-redefined option.
3270         * doc/invoke.texi (Warning Options): Add -Wbuiltin-macro-redefined
3271         documentation.
3272
3273 2008-09-18  Richard Guenther  <rguenther@suse.de>
3274
3275         PR tree-optimization/37258
3276         * tree-ssa-sccvn.c (vn_phi_compute_hash): Include the precision
3277         and signedness for integral types.
3278         (vn_phi_eq): Require compatible types.
3279
3280 2008-09-18  Jakub Jelinek  <jakub@redhat.com>
3281
3282         PR debug/34037
3283         * gimplify.c (gimplify_type_sizes): When not optimizing, ensure
3284         TYPE_MIN_VALUE and TYPE_MAX_VALUE is not is not DECL_IGNORED_P
3285         VAR_DECL.
3286         * cfgexpand.c (expand_used_vars): Keep DECL_ARTIFICIAL
3287         !DECL_IGNORED_P vars in local_decls list for instantiate_decls,
3288         ggc_free other TREE_LIST nodes from that chain.
3289         * function.c (instantiate_decls): Instantiate also DECL_RTL
3290         of vars in cfun->local_decls, free that list afterwards.
3291
3292 2008-09-18  Eric Botcazou  <ebotcazou@adacore.com>
3293
3294         * config/sparc/sol2.h (WIDEST_HARDWARE_FP_SIZE): Move to...
3295         * config/sparc/sparc.h (WIDEST_HARDWARE_FP_SIZE): ...here.
3296
3297 2008-09-18  Andrew MacLeod  <amacleod@redhat.com>
3298
3299         * tree-outof-ssa.c (eliminate_useless_phis): Fix formatting.
3300         * tree-flow-.h (struct immediate_use_iterator_d): Fix comment.
3301
3302 2008-09-18  Andrew MacLeod  <amacleod@redhat.com>
3303
3304         PR tree-optimization/37102
3305         * tree-outof-ssa.c (remove_gimple_phi_args): Remove all the PHI args
3306         from a node. Check to see if another PHI is dead.
3307         (eliminate_useless_phis): Rename from eliminate_virtual_phis and 
3308         remove real PHIs which have no uses.
3309         (rewrite_out_of_ssa): Call eliminate_useless_phis.
3310
3311 2008-09-18  Richard Guenther  <rguenther@suse.de>
3312
3313         PR middle-end/37284
3314         * tree-cfg.c (remove_useless_stmts_1): Remove
3315         GIMPLE_CHANGE_DYNAMIC_TYPE if not optimizing.
3316
3317 2008-09-18  Nick Clifton  <nickc@redhat.com>
3318
3319         * config/frv/frv.h (IRA_COVER_CLASSES): Define.
3320         (SECONDARY_INPUT_RELOAD_CLASS): Omit unused argument in call
3321         to frv_secondary_reload_class.
3322         (SECONDARY_OUTPUT_RELOAD_CLASS): Likewise.
3323         * config/frv/frv.c (TARGET_SECONDARY_RELOAD): Define.
3324         (frv_secondary_reload_class): Omit unused parameter.
3325         (frv_secondary_reload): New function.  Handle the case when
3326         secondary_reload_class() is called before the reload_(in|out)
3327         _optabs have been initialised.
3328         * config/frv/frv-protos.h (frv_secondary_reload_class): Omit
3329         unused parameter.
3330         * config/frv/frv.md: Define an exclusion set between fr550_m0
3331         and fr550_f0.
3332
3333 2008-09-18  Richard Guenther  <rguenther@suse.de>
3334
3335         PR tree-optimization/37456
3336         * tree-ssa-reassoc.c (build_and_add_sum): If the stmt we
3337         want to insert after ends a BB insert on the single fallthru
3338         outgoing edge.
3339
3340 2008-09-18  Andreas Krebbel  <krebbel1@de.ibm.com>
3341
3342         * doc/invoke.texi: Document -mhard-dfp, -mno-hard-dfp.
3343         Mention -march=z9-109, z9-ec and z10.
3344
3345 2008-09-18  Uros Bizjak  <ubizjak@gmail.com>
3346
3347         PR rtl-optimization/37544
3348         * regrename.c (maybe_mode_change): Exit early when copy_mode
3349         is narrower than orig_mode and narrower than new_mode.
3350
3351 2008-09-18  Alexander Monakov  <amonakov@ispras.ru>
3352
3353         PR middle-end/37499
3354         * sched-int.h (struct _haifa_insn_data): Remove unused field ref_count.
3355
3356         * sched-rgn.c (ref_counts): Remove.
3357         (insn_referenced): New static variable.
3358         (INSN_REF_COUNT): Remove.
3359         (sched_run_compute_dependencies): Use insn_referenced instead of
3360         INSN_REF_COUNT.
3361         (add_branch_dependences): Likewise.  Delete dead assignment.
3362
3363 2008-09-17  Adam Nemet  <anemet@caviumnetworks.com>
3364
3365         * haifa-sched.c (dep_cost_1): Recognize the producer even if the
3366         consumer is an asm.  Add comment why this is important.
3367         (choose_ready): Add comment to the "INSN_CODE (insn) >= 0 ||
3368         recog_memoized (insn) < 0" assert.  Put ENABLE_CHECKING around it.
3369
3370 2008-09-17  Joseph Myers  <joseph@codesourcery.com>
3371
3372         * expr.c (emit_group_store): Do not shift before moving via a
3373         stack slot.
3374
3375 2008-09-17  Eric Botcazou  <ebotcazou@adacore.com>
3376
3377         * varasm.c (initializer_constant_valid_p): Forbid view-conversions
3378         from aggregate to non-aggregate type if the bit pattern is not fully
3379         preserved afterwards.
3380
3381 2008-09-17  Richard Guenther  <rguenther@suse.de>
3382
3383         * tree-cfg.c (verify_types_in_gimple_assign): Rename to ...
3384         (verify_gimple_assign): ... this.  Split into ...
3385         (verify_gimple_assign_unary): ... this,
3386         (verify_gimple_assign_binary): ... that,
3387         (verify_gimple_assign_single): ... and this.
3388         (verify_types_in_gimple_stmt): Call verify_gimple_assign.
3389         Fix GIMPLE_CHANGE_DYNAMIC_TYPE handling.
3390         (verify_types_in_gimple_min_lval): Handle TARGET_MEM_REF.
3391         (verify_types_in_gimple_reference): Be forgiving with
3392         VIEW_CONVERT_EXPRs.
3393         (verify_gimple_phi): Deal with virtual operands.
3394
3395         * tree.def (PREDICT_EXPR): Change to tcc_expression.
3396
3397 2008-09-17  Andrew Pinski  <andrew_pinski@playstation.sony.com>
3398
3399         * tree.c (get_callee_fndecl): Don't call the language hook.
3400         * langhooks.h (lang_hooks): Remove lang_get_callee_fndecl.
3401         * langhooks-def.h (LANG_HOOKS_GET_CALLEE_FNDECL): Kill.
3402         (LANG_HOOKS_INITIALIZER): Remove LANG_HOOKS_GET_CALLEE_FNDECL.
3403
3404 2008-09-17  Jakub Jelinek  <jakub@redhat.com>
3405
3406         * tree.c (protected_set_expr_location): Don't unnecessarily
3407         check for error_mark_node.
3408
3409 2008-09-17  Art Haas  <ahaas@impactweather.com>
3410
3411         * ipa-reference.c (analyze_function): Declare step only if
3412         ENABLE_CHECKING is defined.
3413
3414 2008-09-17  Jan Hubicka  <jh@suse.cz>
3415
3416         PR c++/18071
3417         * tree.h (DECL_INLINE): remove.
3418         (DECL_DECLARED_INLINE_P): Update docs.
3419         (DECL_NO_INLINE_WARNING_P): new.
3420         (tree_function_decl): Replace inline_flag by no_inline_warning_flag.
3421         * tree-inline.c (inlinable_function_p): Set DECL_NO_INLINE_WARNING_P.
3422
3423 2008-09-17  Jakub Jelinek  <jakub@redhat.com>
3424             Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
3425
3426         PR bootstrap/37441
3427         * dwarf2out.c (dwarf2out_do_cfi_asm) [MIPS_DEBUGGING_INFO]: Return
3428         false.
3429
3430 2008-09-17  Jan Hubicka  <jh@suse.cz>
3431
3432         * ipa-reference.c (ipa_obstack): Remove.
3433         (local_info_obstack, global_info_obstack): New.
3434         (add_static_var): We now handle variables only.
3435         (mark_address_taken, mark_load, mark_store): New functions based on ...
3436         (check_operand): ... remove.
3437         (get_asm_stmt_operands): Rename to ...
3438         (check_asm_memory_clobber): ... this. Look only for memory clobber.
3439         (scan_stmt_for_static_refs): Rewrite.
3440         (scan_op_for_static_refs): Rename to ...
3441         (scan_initializer_for_static_refs): do not look for VAR_DECL
3442         initializers; stop recursion on types and decls.
3443         (ipa_init): Use proper obstacks.
3444         (analyze_variable): Use scan_initializer_for_static_refs.
3445         (init_function_info): Use local obstack.
3446         (analyze_function): Simplify.
3447         (add_new_function): We don't need visited_nodes obstack.
3448         (generate_summary): Use proper obstacks; cleanup after propagation.
3449
3450 2008-09-17  Richard Guenther  <rguenther@suse.de>
3451
3452         PR middle-end/37385
3453         PR tree-optimization/37491
3454         * alias.c (get_alias_set): Use the canonical type.
3455         * tree-vect-transform.c (vectorizable_store): Use the type of
3456         the lhs for the vector type.  Adjust checking.
3457         (vectorizable_load): Adjust checking.
3458
3459 2008-09-16  Jakub Jelinek  <jakub@redhat.com>
3460             Adam Nemet  <anemet@caviumnetworks.com>
3461
3462         PR rtl-optimization/37483
3463         * ifcvt.c (noce_try_sign_mask): Use if_info->test_bb instead of
3464         if_info->insn_b's bb as argument to optimize_bb_for_speed_p.
3465         Rearrange code to better match the original comment.  Check
3466         t_unconditional first.  Improve comment.
3467
3468 2008-09-16  Jakub Jelinek  <jakub@redhat.com>
3469
3470         PR c/37529
3471         * gimplify.c (gimplify_expr) <case GOTO_EXPR>: If gimplification of
3472         GOTO_DESTINATION failed, don't create GIMPLE_GOTO.
3473
3474         PR c++/37530
3475         * gimplify.c (gimplify_expr) <case TRY_CATCH_EXPR>: Don't create
3476         GIMPLE_TRY if cleanup sequence is empty.
3477
3478 2008-09-16  Andrew Pinski  <andrew_pinski@playstation.sony.com>
3479
3480         PR middle-end/37263
3481         * tree-ssa-loop-ivopts.c (determine_use_iv_cost_condition): Prefer the
3482         eliminate IV if the cost are the same.
3483
3484 2008-09-16  Richard Guenther  <rguenther@suse.de>
3485
3486         PR middle-end/37380
3487         * tree-sra.c (sra_build_assignment): Do not call the gimplifier
3488         if not necessary.
3489
3490 2008-09-16  Richard Guenther  <rguenther@suse.de>
3491
3492         PR tree-optimization/37508
3493         * tree-vrp.c (simplify_truth_ops_using_ranges): Also allow -1.
3494
3495 2008-09-15  Kaz Kojima  <kkojima@gcc.gnu.org>
3496
3497         * config/sh/sh.md (movsf_ie): Fix length for TARGET_SH2A.
3498
3499 2008-09-15  Andrew Pinski  <andrew_pinski@playstation.sony.com>
3500
3501         * config/rs6000/rs6000.md (floatsidf2): Rewrite PowerPC64 case to
3502         use gen_floatdidf2 directly.
3503         (floatunssidf2): Likewise.
3504         (floatsidf_ppc64_mfpgpr): Remove.
3505         (floatsidf_ppc64): Remove.
3506         (floatunssidf_ppc64): Remove.
3507
3508 2008-09-15  Jakub Jelinek  <jakub@redhat.com>
3509
3510         * ira-color.c (finish_cost_update): Free update_cost_queue_elems
3511         rather than update_cost_queue.
3512
3513         * tree-ssa-alias.c (init_alias_info): Call bitmap_obstack_release
3514         in every call starting with the second one, instead of only when
3515         alias_bitmap_obstack.elements != NULL.
3516
3517         * tree-predcom.c (filter_suitable_components): Free all refs in
3518         act->refs vector before calling release_component.
3519         (add_ref_to_chain): Free ref if not adding it to chain->refs.
3520
3521         * tree-data-ref.c (free_subscripts): Free all subscript objects.
3522
3523         * tree-loop-linear.c (linear_transform_loops): Initialize
3524         lambda_obstack only after calling perfect_loop_nest_depth.
3525         Goto free_and_continue instead of just continue for later failures.
3526
3527         PR middle-end/37479
3528         * doc/invoke.texi: Document -fno-dwarf2-cfi-asm.
3529
3530         PR libmudflap/36397
3531         * tree-mudflap.c (mf_xform_derefs_1): Handle VIEW_CONVERT_EXPR.
3532
3533 2008-09-14  Andreas Schwab  <schwab@suse.de>
3534
3535         * tree-call-cdce.c (check_target_format): Accept Motorola formats.
3536
3537 2008-09-14  Jan Hubicka  <jh@suse.cz>
3538
3539         * invoke.texi (-fconserve-stack): Document.
3540         * opts.c (decode_options): Handle conserve_stack.
3541         * common.opt (fconvserve_stack): New.
3542
3543 2008-09-14  David Edelsohn  <edelsohn@gnu.org>
3544
3545         * config.host: Add x-aix to host_xmake_file.
3546         * config/rs6000/t-aix52: Do not override LDFLAGS.
3547         * config/rs6000/x-aix: New file.
3548
3549 2008-09-14  Andy Hutchinson  <hutchinsonandy@aim.com>
3550
3551         PR target/19636
3552         PR target/24894
3553         PR target/31644
3554         PR target/31786
3555         * config/avr/avr.c (legitimate_address_p): Fix problem where subreg
3556         is not recognized as a valid register usage. Allow REG_X to be used
3557         as a base pointer.
3558         * config/avr/avr.h (LEGITIMIZE_RELOAD_ADDRESS): Remove code that
3559         forces a reload when using a base register.
3560
3561 2008-09-14  Danny Smith  <dannysmith@users.sourceforge.net>
3562
3563         * config/i386/cygming-crtend.c (register_frame_ctor): If
3564         DEFAULT_USE_CXA_ATEXIT, register __gcc_deregister_frame
3565         directly with atexit.
3566         (deregister_frame_ctor): Rename to ...
3567         (deregister_frame_dtor): Use to call __gcc_deregister_frame
3568         if !DEFAULT_USE_CXA_ATEXIT.
3569
3570 2008-09-13  Jan Hubicka  <jh@suse.cz>
3571
3572         * cgraph.c: Include value-prof.h
3573         * Makefile.in (cgraph.o): Add value-prof.h dependency.
3574
3575 2008-09-13  Jan Hubicka  <jh@suse.cz>
3576
3577         PR middle-end/32581
3578         * tree-profile.c (add_abnormal_goto_call_edges): New function.
3579         (tree_gen_interval_profiler, tree_gen_pow2_profiler,
3580         tree_gen_one_value_profiler, tree_gen_average_profiler,
3581         tree_gen_ic_func_profiler, tree_gen_ior_profiler): Use it.
3582
3583 2008-09-13  Jan Hubicka  <jh@suse.cz>
3584
3585         * i386.c (ix86_expand_movmem, ix86_expand_movstr): Avoid processing
3586         too many bytes on misalligned blocks.
3587
3588 2008-09-13  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
3589
3590         * doc/cfg.texi: Fix some typos.
3591         * doc/extend.texi: Likewise.
3592         * doc/install.texi: Likewise.
3593         * doc/invoke.texi: Likewise.
3594         * doc/rtl.texi: Likewise.
3595         * doc/tree-ssa.texi: Likewise.
3596
3597 2008-09-13  Richard Guenther  <rguenther@suse.de>
3598
3599         PR middle-end/30141
3600         * tree-nested.c (finalize_nesting_tree_1): Generate valid
3601         gimple stores for memory rhs.
3602
3603 2008-09-13  H.J. Lu  <hongjiu.lu@intel.com>
3604
3605         PR rtl-optimization/37489
3606         * cse.c (fold_rtx): Don't return const_true_rtx for float
3607         compare if FLOAT_STORE_FLAG_VALUE is undefined.
3608
3609 2008-09-13  Jan Hubicka  <jh@suse.cz>
3610
3611         PR tree-optimization/37392
3612         * tree-inline.c (remap_gimple_stmt): Do not remap return value.
3613
3614 2008-09-13  Martin Jambor  <mjambor@suse.cz>
3615             Jan Hubicka  <jh@suse.cz>
3616
3617         * cgraph.c (free_edges): New variable.
3618         (NEXT_FREE_EDGE): New macro.
3619         (cgraph_free_edge): New function.
3620         (cgraph_remove_edge): Call cgraph_remove_edge_1.
3621         (cgraph_node_remove_callees): Likewise.
3622         (cgraph_node_remove_callers): Likewise.
3623         (cgraph_create_edge): Reuse edges from the free list.  Do not
3624         update uid if doing so.
3625         (cgraph_remove_*_hook): Add free call.
3626
3627 2008-09-13  Richard Sandiford  <rdsandiford@googlemail.com>
3628
3629         * ira-color.c (conflict_allocno_vec): Delete.
3630         (update_cost_queue_elem): New structure.
3631         (update_cost_queue): New variable.
3632         (update_cost_queue_tail): Likewise.
3633         (update_cost_queue_elems): Likewise.
3634         (allocno_update_cost_check): Delete.
3635         (initiate_cost_update): Allocate update_cost_queue_elems
3636         instead of allocno_update_cost_check.
3637         (finish_cost_update): Update the free()s accordingly.
3638         (start_update_cost): New function.
3639         (queue_update_cost): Likewise.
3640         (get_next_update_cost): Likewise.
3641         (update_copy_costs_1): Inline into...
3642         (update_copy_costs): ...here.  Use a queue instead of recursive calls.
3643         Use cover_class instead of ALLOCNO_COVER_CLASS (another_allocno),
3644         once we've established they are equal.  Don't allocate update
3645         costs if there is nothing to add to them.
3646         (update_conflict_hard_regno_costs): Remove ALLOCNO and
3647         DIVISOR arguments.  Use a queue instead of recursive calls;
3648         process all the allocnos in the initial queue, rather than
3649         a single allocno.
3650         (assign_hard_reg): Use queue_update_cost instead of
3651         conflict_allocno_vec.  Queue coalesced allocnos instead
3652         of calling update_conflict_hard_regno_costs for each one.
3653         Just call update_conflict_hard_regno_costs once for the
3654         entire queue.
3655         (ira_color): Remove conflict_allocno_vec handling.
3656
3657 2008-09-12  Sebastian Pop  <sebastian.pop@amd.com>
3658
3659         PR tree-optimization/37484
3660         * graphite.c (scop_record_loop): Use snprintf instead of sprintf.
3661         (save_var_name): Same.
3662         (initialize_cloog_names): Same.
3663         (initialize_cloog_names): Same.
3664
3665 2008-09-12  Sebastian Pop  <sebastian.pop@amd.com>
3666
3667         * tree-scalar-evolution.c (set_instantiated_value): Set
3668         instantiated_below.
3669
3670 2008-09-12  Vladimir Makarov  <vmakarov@redhat.com>
3671
3672         PR rtl-opt/37377
3673
3674         * ira-build.c (common_loop_tree_node_dominator): Remove.
3675         (copy_live_ranges_to_removed_store_destinations): New function.
3676         (regno_top_level_allocno_map): Move to top level from ...
3677         (ira_flattening): ... here.  Use
3678         copy_live_ranges_to_removed_store_destinations.
3679
3680         * ira-emit.c (generate_edge_moves): Fix a comment.
3681
3682 2008-09-12  Anatoly Sokolov  <aesok@post.ru>
3683
3684         PR target/37466
3685         * config/avr/avr.md (movsi_lreg_const peephole2): Add match_dup for
3686         scratch register after 'set' pattern.
3687
3688 2008-09-12  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
3689
3690         * emit-rtl.c (set_reg_attrs_from_value): Fix invalid alignment
3691         information passed to mark_reg_pointer.
3692         * explow.c (force_reg): Likewise.
3693
3694 2008-09-12  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
3695
3696         * config/spu/spu.c (spu_override_options): Default to -mno-safe-hints
3697         when building for the celledp architecture.
3698
3699 2008-09-12  Richard Guenther  <rguenther@suse.de>
3700
3701         * tree-vrp.c (simplify_truth_ops_using_ranges): Fix types.
3702
3703 2008-09-12  Eric Botcazou  <ebotcazou@adacore.com>
3704
3705         PR rtl-optimization/37424
3706         * ira-color.c (coalesced_pseudo_reg_slot_compare): Untie by comparing
3707         the regnos instead of the addresses.
3708
3709 2008-09-11  Janis Johnson  <janis187@us.ibm.com>
3710
3711         * ginclude/float.h (DEC_EVAL_METHOD): Correct the macro name.
3712
3713 2008-09-11  Richard Guenther  <rguenther@suse.de>
3714
3715         * tree-ssa-uncprop.c (associate_equivalences_with_edges): Avoid
3716         entering the weaker equivalence recording.
3717
3718         * tree-ssa-phiprop.c (propagate_with_phi): Fix tuplification.
3719
3720 2008-09-11  Jeff Law <law@redhat.com>
3721
3722         * reload1.c (alter_reg): Undo the BYTE_BIG_ENDIAN correction performed
3723         by assign_stack_local on the IRA path for stack slot sharing
3724         as well as the non-IRA path.
3725
3726 2008-09-11  Uros Bizjak  <ubizjak@gmail.com>
3727
3728         * config/i386/i386.h: Fix whitespace issues.
3729
3730 2008-09-11  Martin Jambor  <mjambor@suse.cz>
3731
3732         * ipa-prop.h (struct ipa_param_flags): Removed.
3733         (struct ipa_param_descriptor): New structure.
3734         (struct ipa_node_params): ipcp_lattices, param_decls and
3735         param_flags moved to ipa_param_description.
3736         (ipa_get_ith_param): Renamed to ipa_get_param, changed to access
3737         descriptors.  Renamed all users.
3738         (ipa_is_ith_param_modified): Renamed to ipa_is_param_modified,
3739         changed to access descriptors.  Renamed all users.
3740         (ipa_is_ith_param_called): Renamed to ipa_is_param_called, changed
3741         to access descriptors. Renamed all users.
3742         * ipa-cp.c (ipcp_init_cloned_node): Call
3743         ipa_initialize_node_params instead of ipa_count_formal_params and
3744         ipa_create_param_decls_array.
3745         (ipcp_analyze_node): Likewise.
3746         (ipcp_get_ith_lattice): Renamed to ipcp_get_lattice, changed to access
3747         descriptors.  Renamed all users.
3748         (ipcp_initialize_node_lattices): Remove allocation.
3749         * ipa-inline.c (inline_indirect_intraprocedural_analysis): Call
3750         ipa_initialize_node_params instead of ipa_count_formal_params and
3751         ipa_create_param_decls_array.
3752         * ipa-prop.c (ipa_create_param_decls_array): Renamed to
3753         ipa_populate_param_decls, made static, added parameter info,
3754         renamed mt to node, removed allocation, changed to use
3755         descriptors.
3756         (ipa_count_formal_params): Made static, added parameter info,
3757         renamed mt to node.
3758         (ipa_initialize_node_params): New function.
3759         (ipa_check_stmt_modifications): Changed to use descriptors.
3760         (ipa_detect_param_modifications): Removed allocation, changed to
3761         use descriptors.
3762         (ipa_note_param_call): Changed to use descriptors.
3763         (ipa_analyze_params_uses): Removed allocation.
3764         (ipa_free_node_params_substructures): Changed to use descriptors.
3765         (ipa_edge_duplication_hook): Use the unused attribute.
3766         (ipa_node_duplication_hook): Use the unused attribute, changed to
3767         use descriptors, changed to duplicate descriptors.
3768
3769         * ipa-inline.c (cgraph_mark_inline_edge): New parameter new_edges,
3770         changed all callers.  Call ipa_propagate_indirect_call_infos if doing
3771         indirect inlining.  Made static.
3772         (cgraph_decide_inlining): Freeing ipa-prop structures after inlining
3773         functions called only once.
3774         (cgraph_decide_recursive_inlining): Don't call
3775         ipa_propagate_indirect_call_infos, pass new_edges to
3776         cgraph_mark_inline_edge instead.
3777         (cgraph_decide_inlining_of_small_functions): Don't call
3778         ipa_propagate_indirect_call_infos, pass new_edges to
3779         cgraph_mark_inline_edge instead.
3780         (cgraph_decide_inlining): Don't call
3781         ipa_propagate_indirect_call_infos.
3782         * ipa-prop.c: Check that vectors are allocated.
3783
3784         * ipa-inline.c (cgraph_mark_inline_edge): Returns boolean, true
3785         iff a new cgraph edges have been created.
3786         (cgraph_decide_inlining): New variable redo_always_inline.
3787         Flattening and always_inlining loop until callgraph stabilizes.
3788         * ipa-prop.c (update_call_notes_after_inlining): Returns boolean,
3789         true iff new cgraph edges have been created.
3790         (propagate_info_to_inlined_callees): Likewise.
3791         (ipa_propagate_indirect_call_infos): Likewise.
3792
3793 2008-09-11  Richard Guenther  <rguenther@suse.de>
3794
3795         * tree-vectorizer.c (slpeel_add_loop_guard): Fix types.
3796         (set_prologue_iterations): Likewise.
3797         * tree-vect-transform.c (vect_create_addr_base_for_vector_ref):
3798         Likewise.
3799         (vect_update_init_of_dr): Likewise.
3800         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Fix
3801         type verification.
3802         * fold-const.c (fold_unary): Do not generate calculations
3803         in sub-types.
3804
3805 2008-09-11  Paolo Bonzini  <bonzini@gnu.org>
3806
3807         * dojump.c (do_jump) [BIT_AND_EXPR]: Move below.  Fall through to
3808         TRUTH_AND_EXPR for boolean (1-bit precision) expressions.
3809         (do_jump) [BIT_IOR_EXPR]: Compile as TRUTH_OR_EXPR.
3810
3811         * tree-flow.h (simplify_stmt_using_ranges): Accept a GSI, return
3812         a bool.
3813         * tree-ssa-propagate.c (substitute_and_fold): Pass a GSI to
3814         VRP's simplify_stmt_using_ranges.  Do simplify_stmt_using_ranges
3815         before finalizing the changes.
3816         * tree-vrp.c (extract_range_from_binary_expr): Add limited support
3817         for BIT_IOR_EXPR.
3818         (simplify_truth_ops_using_ranges): New.
3819         (simplify_div_or_mod_using_ranges, simplify_abs_using_ranges,
3820         simplify_cond_using_ranges, simplify_switch_using_ranges): Return
3821         whether a simplification was made.
3822         (simplify_stmt_using_ranges): Ditto, and accept a GSI.  For GS_ASSIGN,
3823         use a switch statement and also call simplify_truth_ops_using_ranges.
3824
3825 2008-09-11  Jan Hubicka  <jh@suse.cz>
3826
3827         * ggc-common.c (loc_array): Make static.
3828         * dce.c (rest_of_handle_ud_dce): Free worklist.
3829
3830 2008-09-11  Jan Hubicka  <jh@suse.cz>
3831
3832         * cgraph.c (cgraph_release_function_body): Plug memory leak on
3833         ipa_transforms_to_apply and CFG; ggc_free gimple df and struct
3834         function so we are sure we do not dangle it forever.
3835         * function.c (outer_function_chain, find_function_data): Remove.
3836         (function_context_stack): New.
3837         (push_function_context, pop_function_context): Update.
3838         * function.h (struct function): Remove pointer outer.
3839         (outer_function_chain, find_function_data): Remove.
3840         * stmt.c (force_label_rtx): Remove dead call of find_function_data.
3841
3842 2008-09-11  Jan Hubicka  <jh@suse.cz>
3843
3844         PR middle-end/37448
3845         * cgraph.c (cgraph_create_edge): Use !cgraph_edge for sanity check.
3846
3847 2008-09-11  Jan Hubicka  <jh@suse.cz>
3848
3849         * tree-ssa-pre.c (phi_translate_1): Fix memory leak
3850
3851 2008-09-11  Jan Hubicka  <jh@suse.cz>
3852
3853         * tree-ssa.c (redirect_edge_var_map_clear): Fix formatting.
3854         (free_var_map_entry): New function.
3855         (redirect_edge_var_map_destroy): Use it.
3856
3857 2008-09-11  Jan Hubicka  <jh@suse.cz>
3858
3859         PR middle-end/37448
3860         * tree-inline.c (add_lexical_block): Replace with ...
3861         (prepend_lexical_block): ... prepend at begginig.
3862         (remap_blocks): Use it and reverse later.
3863         (expand_call_inline): Use prepend_lexical_block.
3864
3865 2008-09-11  Jan Hubicka  <jh@suse.cz>
3866
3867         * gimplify.c (pop_gimplify_context): Free bind_expr_stack.
3868
3869 2008-09-11  Jan Hubicka  <jh@suse.cz>
3870
3871         * function.c (free_after_compilation): Call insn_locators_free.
3872         * cfglayout.c (insn_locators_free): New function.
3873         * rtl.h (insn_locators_free): Declare.
3874
3875 2008-09-11  Jan Hubicka  <jh@suse.cz>
3876
3877         * ifcvt.c (check_cond_move_block): Make regs argument pointer to
3878         vector pointer.
3879         (cond_move_process_if_block): Update call.
3880
3881 2008-09-11  Jan Hubicka  <jh@suse.cz>
3882
3883         * toplev.c (dump_memory_report): Call dump_vec_loc_statistics.
3884         * vec.c: Include hashtab.h
3885         (vec_descriptor, ptr_hash_entry): New structures.
3886         (vec_desc_hash, vec_ptr_map): New static variables.
3887         (hash_descriptor, eq_descriptor, hash_ptr, eq_ptr, vec_descriptor,
3888         register_overhead, free_overhead, vec_heap_free): New functions.
3889         (vec_gc_o_reserve_1): ggc_free when resizing to 0.
3890         (vec_heap_o_reserve_1): free when resizing to 0; add statistics.
3891         (cmp_statistic, add_statistics, dump_vec_loc_statistics):
3892         New functions.
3893
3894 2008-09-11  Ira Rosen  <irar@il.ibm.com>
3895
3896         PR tree-optimization/37474
3897         * tree-vect-analyze.c (vect_supported_load_permutation_p): Check the
3898         length of load permutation.
3899
3900 2008-09-11  Andreas Schwab  <schwab@suse.de>
3901
3902         * config/m68k/m68k.h (IRA_COVER_CLASSES): Define.
3903
3904 2008-09-11  Jakub Jelinek  <jakub@redhat.com>
3905
3906         PR target/37382
3907         * expmed.c (extract_low_bits): Avoid creating invalid subregs.
3908         * dse.c (find_shift_sequence): Use extract_low_bits instead of
3909         simplify_gen_subreg.
3910
3911 2008-09-11  Ira Rosen  <irar@il.ibm.com>
3912
3913         * tree-vect-transform.c (vectorizable_store): Use the rhs vector type
3914         for alias check.
3915
3916 2008-09-10  Jakub Jelinek  <jakub@redhat.com>
3917
3918         PR middle-end/37338
3919         * gimplify.c (gimplify_body): Call default_rtl_profile.
3920
3921         PR target/36904
3922         * config/rs6000/rs6000-c.c (rs6000_macro_to_expand): Return NULL
3923         instead of tok->val.node if not expanding to something else.  Handle
3924         intervening CPP_PADDING tokens.
3925         (altivec_categorize_keyword): Remove unneeded comparisons.
3926
3927 2008-09-10  Richard Guenther  <rguenther@suse.de>
3928
3929         * tree-ssa-pre.c (phi_translate_1): Fix memory leak.
3930
3931 2008-09-10  Richard Guenther  <rguenther@suse.de>
3932
3933         PR middle-end/37432
3934         * tree-inline.c (insert_init_stmt): Make sure to not
3935         insert invalid gimple stores.
3936
3937 2008-09-10  Sebastian Pop  <sebastian.pop@amd.com>
3938
3939         PR tree-optimization/37388
3940         * toplev.c (process_options): Fail and warn when graphite
3941         flags are used, but the compiler has not been configured
3942         with graphite libraries.
3943         * graphite.c (graphite_transform_loops): Remove printfs
3944         to dump_file for the case when graphite is not available.
3945
3946 2008-09-10  H.J. Lu  <hongjiu.lu@intel.com>
3947
3948         PR target/37434:
3949         * config/i386/i386.c (ix86_expand_vector_init_interleave): Force
3950         the even element into register.
3951         (ix86_expand_vector_init_general): Don't use
3952         ix86_expand_vector_init_interleave on V16QImode and V8HImode
3953         if we can't move from GPR to SSE register directly.
3954
3955 2008-09-10  Bernd Schmidt  <bernd.schmidt@analog.com>
3956
3957         * config/bfin/bfin.c (workaround_speculation): Correct algorithm to
3958         not lose track of the number of NOPs needed.  Number of NOPs needed
3959         for sync vs. loads workaround was switched; corrected.  Run second
3960         pass for all workarounds.  No NOPs needed after call insns.  Change
3961         second pass to use find_next_insn_start and find_load helpers in order
3962         to properly detect parallel insns.
3963         * config/bfin/bfin.md (cbranch_with_nops): Increase length.
3964
3965 2008-09-10  Jan Hubicka  <jh@suse.cz>
3966
3967         * value-prof.c (gimple_ic): Fix tuplification bug.
3968         * sched-deps.c (sched_insns_conditions_mutex_p): Silence unitialized
3969         var warning.
3970
3971 2008-09-10  Jakub Jelinek  <jakub@redhat.com>
3972
3973         PR tree-optimization/37353
3974         * tree-call-cdce.c (cond_dead_built_in_calls): Remove.
3975         (shrink_wrap_conditional_dead_built_in_calls): Add calls argument, use
3976         calls instead of cond_dead_built_in_calls.
3977         (tree_call_cdce): Add cond_dead_built_in_calls automatic variable,
3978         initalize the vector only before adding first entry.  Use VEC_safe_push
3979         instead of VEC_quick_push.  Pass cond_dead_built_in_calls to
3980         shrink_wrap_conditional_dead_built_in_calls call.
3981
3982 2008-09-10  Ira Rosen  <irar@il.ibm.com>
3983
3984         PR tree-optimization/37385
3985         * tree-vect-transform.c (vect_create_data_ref_ptr): Add a new
3986         argument, and use it as a vector type if not NULL.
3987         (vectorizable_store): Call vect_create_data_ref_ptr with the type of
3988         vectorized rhs.
3989         (vect_setup_realignment): Call vect_create_data_ref_ptr with
3990         additional argument.
3991         (vectorizable_load): Likewise.
3992
3993 2008-09-10  Jakub Jelinek  <jakub@redhat.com>
3994
3995         * config/i386/i386.md (SWI32): New mode iterator.
3996         (jcc_fused_1, jcc_fused_2, jcc_fused_3, jcc_fused_4): Use it instead
3997         of SWI.
3998
3999 2008-09-09  Vladimir Makarov  <vmakarov@redhat.com>
4000
4001         PR rtl-optimization/37435
4002         * caller-save.c (insert_restore, insert_save): Check the mode by
4003         reg_save_code.
4004
4005 2008-09-09  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
4006
4007         PR other/37265
4008         * dwarf2asm.c (dw2_force_const_mem): Use unstripped symbol name for
4009         splay tree lookup.
4010         (dw2_output_indirect_constant_1): Use unstripped name in symbol
4011         reference.
4012
4013 2008-09-09  Sandra Loosemore  <sandra@codesourcery.com>
4014
4015         * doc/invoke.texi (ARM Options): Correct errors in discussion
4016         of -mfloat-abi, -mhard-float, and -msoft-float.
4017
4018 2008-09-09  Jakub Jelinek  <jakub@redhat.com>
4019             Jan Hubicka  <jh@suse.cz>
4020
4021         PR middle-end/37356
4022         * tree-inline.c (copy_bb): Insert stmt into copy_basic_block before
4023         calling gimple_regimplify_operands on it.  Iterate over all newly
4024         added statements, not just the last one.
4025         (insert_init_stmt): Insert stmt into seq first, then call
4026         gimple_regimplify_operands on it.  Don't create new gimplification
4027         context, nor find referenced vars.
4028
4029 2008-09-09  Jakub Jelinek  <jakub@redhat.com>
4030
4031         PR other/37419
4032         * ipa-prop.h (ipa_propagate_indirect_call_infos): Change last argument
4033         to pointer to vector pointer.
4034         * ipa-prop.c (ipa_propagate_indirect_call_infos,
4035         propagate_info_to_inlined_callees): Likewise.
4036         (update_call_notes_after_inlining): Likewise.  Push new indirect edge
4037         to *new_edges instead of new_edges.  Reread IPA_EDGE_REF after
4038         ipa_check_create_edge_args.
4039         * ipa-inline.c (cgraph_decide_recursive_inlining): Change last
4040         argument to pointer to vector pointer.
4041         (cgraph_decide_inlining_of_small_function): Adjust
4042         cgraph_decide_recursive_inlining and ipa_propagate_indirect_call_infos
4043         calls.
4044
4045         PR target/37438
4046         * config/i386/i386.md (zero_extendqihi2_movzbl): Enable when
4047         optimizing for size, not speed.
4048
4049         PR rtl-optimization/37408
4050         * function.c (assign_parm_find_stack_rtl): Set correct MEM_SIZE
4051         if parm is promoted.
4052
4053 2008-09-09  Sebastian Pop  <sebastian.pop@amd.com>
4054
4055         PR tree-optimization/37375
4056         * tree-scalar-evolution.c (scev_info_str): Add field
4057         instantiated_below.
4058         (new_scev_info_str, eq_scev_info, find_var_scev_info,
4059         set_scalar_evolution, get_scalar_evolution, get_instantiated_value,
4060         set_instantiated_value): Pass instantiated_below.
4061         (analyze_scalar_evolution_1, analyze_scalar_evolution): Update calls
4062         to above functions.
4063         (instantiate_scev_1, instantiate_scev): Pass a basic block above which
4064         the definitions are not instantiated.
4065
4066         * tree-scalar-evolution.h (instantiate_scev): Update declaration.
4067         (block_before_loop): New.
4068         * tree-data-ref.c (dr_analyze_indices): Update uses of
4069         instantiate_scev.
4070         * graphite.c (block_before_scop): New.
4071         (loop_affine_expr, stmt_simple_for_scop_p, harmful_stmt_in_bb): Pass a
4072         basic block, not a loop for determining the parameters.
4073         (scopdet_edge_info, build_scops_1): Do not pass outermost loop in the
4074         scop.
4075         (idx_record_params, find_params_in_bb, find_scop_parameters,
4076         build_loop_iteration_domains, add_conditions_to_domain): Update calls
4077         to instantiate_scev.
4078
4079         * Makefile.in (cfgloopmanip.o): Add missing dependency on TREE_FLOW_H.
4080
4081 2008-09-09  Vladimir Makarov  <vmakarov@redhat.com>
4082
4083         PR rtl-opt/37333
4084
4085         * ira-build.c (ira_create_allocno): Setup frequency to 0.
4086
4087         * ira-color.c (update_conflict_hard_regno_costs): Remove assert.
4088         Check zero freq and increase if necessary.
4089
4090 2008-09-09  Vladimir Makarov  <vmakarov@redhat.com>
4091
4092         * ira-conflicts.c (process_regs_for_copy): Check that the hard
4093         regno is in the right range.  Add comments.
4094
4095 2008-09-09  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
4096
4097         * Makefile.in (mips-tfile.o-warn): Don't error out on mips-tfile.c
4098         warnings.
4099         * mips-tfile.c (copy_object): Cast alloca result to int *.
4100         * mips-tdump.c (print_symbol): Cast xmalloc return values to
4101         proper types.
4102         Rename class to sclass.
4103         (read_tfile): Cast read_seek return values to proper types.
4104         Cast xcalloc return value to proper type.
4105
4106 2008-09-09  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
4107
4108         * config/sol2.h (REGISTER_TARGET_PRAGMAS): Move ...
4109         * config/i386/sol2.h (REGISTER_SUBTARGET_PRAGMAS): ... here.
4110         * config/sparc/sol2.h (REGISTER_TARGET_PRAGMAS): ... and here.
4111
4112 2008-09-09  Jan Hubicka  <jh@suse.cz>
4113
4114         * profile.c (is_edge_inconsistent): Add debug output; ignore
4115         negative count on fake edges.
4116         (is_inconsistent): Add debug output.
4117
4118 2008-09-09  Andrey Belevantsev  <abel@ispras.ru>
4119
4120         * haifa-sched.c (advance_one_cycle): Do not print '\n' before printing
4121         dump message.
4122         (choose_ready): When first insn is chosen from the ready list, also
4123         dump it.
4124
4125 2008-09-09  Andrey Belevantsev  <abel@ispras.ru>
4126
4127         PR rtl-optimization/37360
4128         * haifa-sched.c (max_issue): Do not assert that we never issue more
4129         insns than issue_rate.  Add comment.
4130
4131 2008-09-09  Richard Guenther  <rguenther@suse.de>
4132
4133         * tree-cfg.c (verify_types_in_gimple_op): Remove.
4134         (verify_types_in_gimple_call): Rename to ...
4135         (verify_gimple_call): ... this.  Enhance.
4136         (verify_types_in_gimple_cond): Remove.
4137         (verify_gimple_comparison): New function ...
4138         (verify_types_in_gimple_assign): ... split out from here.
4139         (verify_types_in_gimple_return): Rename to ...
4140         (verify_gimple_return): ... this.  Enhance.
4141         (verify_types_in_gimple_switch): Rename to ...
4142         (verify_gimple_switch): ... this.  Enhance.
4143         (verify_gimple_goto): New function.
4144         (verify_types_in_gimple_phi): Rename to ...
4145         (verify_gimple_phi): ... this.  Enhance.
4146         (verify_types_in_gimple_stmt): Adjust calls to helper functions.
4147         Fold in single-statement cases from verify_types_in_gimple_seq_2.
4148         (verify_types_in_gimple_seq_2): Remove cases handled in
4149         verify_types_in_gimple_stmt.
4150
4151 2008-09-09  Bernd Schmidt  <bernd.schmidt@analog.com>
4152
4153         * config/bfin/bfin.c (n_regs_to_save): New static variable.
4154         (push_multiple_operation, pop_multiple_operation): Set it.
4155         (workaround_rts_anomaly): New function.
4156         (workaround_speculation): New function, broken out of bfin_reorg.
4157         (bfin_reorg): Call the new functions.
4158
4159 2008-09-09  Richard Guenther  <rguenther@suse.de>
4160
4161         PR middle-end/37354
4162         PR middle-end/30165
4163         * gimplify.c (gimplify_conversion): Change conversions of
4164         non-register type to VIEW_CONVERT_EXPRs.
4165         (gimplify_addr_expr): If we need to make the operand
4166         addressable make sure to use a properly initialized
4167         temporary for that so it gets a valid gimple store.
4168
4169 2008-09-09  Aldy Hernandez  <aldyh@redhat.com>
4170
4171         * function.h (struct function): Add function_start_locus.
4172         * cfgexpand.c (gimple_expand_cfg): Use it.
4173         * c-parser.c (c_parser_declaration_or_fndef): Set it.
4174
4175 2008-09-09  Richard Guenther  <rguenther@suse.de>
4176
4177         PR tree-optimization/37433
4178         * tree-ssa-ccp.c (ccp_fold): Properly guard folding of
4179         function calls.
4180
4181 2008-09-09  Richard Guenther  <rguenther@suse.de>
4182
4183         PR tree-optimization/37387
4184         * tree-ssa-ifcombine.c (ifcombine_iforif): Convert the name
4185         and bits to a common type.
4186
4187 2008-09-09  Nick Clifton  <nickc@redhat.com>
4188
4189         * config/v850/v850.md (return): Restore frame size restriction.
4190
4191 2008-09-09  Paolo Bonzini  <bonzini@gnu.org>
4192
4193         * c-common.c (c_expand_decl): Remove.
4194         * c-common.h (anon_aggr_type_p): Remove prototype.
4195         (DECL_ANON_UNION_ELEMS): Remove.
4196         * c-objc-common.h (LANG_HOOKS_EXPAND_DECL): Remove.
4197         * c-decl.c (anon_aggr_type_p): Remove.
4198         * langhooks-def.h (LANG_HOOKS_EXPAND_DECL): Remove.
4199         (LANG_HOOKS_INITIALIZER): Remove LANG_HOOKS_EXPAND_DECL.
4200         * langhooks.h (struct lang_hooks): Remove expand_decl.
4201         * langhooks.c (lhd_expand_decl): Remove.
4202         * stmt.c (expand_anon_union_decl): Remove.
4203         * tree.h (expand_anon_union_decl): Remove prototype.
4204
4205 2008-08-09  Andy Hutchinson  <hutchinsonandy@aim.com>
4206
4207         PR target/36609
4208         * config/avr/avr.c (avr_reorg): Create RTL for reversed compare with
4209         zero.
4210         * config/avr/avr.md  (QISI) : Define mode iterator.
4211         (negated_tst<mode>) : Redefine as split using mode macro.
4212         (reversed_tstqi): Define insn as reversed compare with zero.
4213         (reversed_tsthi): Ditto.
4214         (reversed_tstsi): Ditto.
4215
4216 2008-09-08  Jakub Jelinek  <jakub@redhat.com>
4217
4218         PR middle-end/37393
4219         * tree-inline.c (copy_bb): When replacing a gimple_call_va_arg_pack_p
4220         call stmt by new_call, clear gimple_bb on stmt after gsi_replace.
4221
4222         PR middle-end/37414
4223         * predict.c (optimize_function_for_size_p): Don't segfault if
4224         FUN is NULL.
4225         * fold-const.c (LOGICAL_OP_NON_SHORT_CIRCUIT, fold_truthop,
4226         tree_swap_operands_p): Don't test cfun != NULL before calling
4227         optimize_function_for_s*_p.
4228
4229 2008-09-08  Eric Botcazou  <ebotcazou@adacore.com>
4230
4231         * ira-color.c (ira_reuse_stack_slot): Set slot_num on success at the
4232         end of the search.
4233
4234 2008-09-08  M R Swami Reddy <MR.Swami.Reddy@nsc.com>
4235
4236         * crx/crx.h (IRA_COVER_CLASSES): Define.
4237
4238 2008-09-08  Jakub Jelinek  <jakub@redhat.com>
4239
4240         PR middle-end/37337
4241         * tree-ssa-dom.c (optimize_stmt): Call maybe_clean_or_replace_eh_stmt
4242         even when a stmt has been gimple_modified_p, but after fold_stmt is
4243         not any longer.  Remove unneeded may_have_exposed_new_symbols
4244         initializations.
4245
4246 2008-09-08  Richard Guenther  <rguenther@suse.de>
4247
4248         PR tree-optimization/37421
4249         * tree-ssa-sccvn.c (visit_copy): Make sure to fully
4250         valueize the RHS.
4251
4252 2008-09-08  Jakub Jelinek  <jakub@redhat.com>
4253
4254         PR middle-end/37415
4255         * opts.c (common_handle_option): Handle OPT_ftree_store_ccp.
4256
4257 2008-09-08  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
4258
4259         PR driver/37409
4260         * pa-hpux.h (LINK_SPEC): Strip -fwhole-program.
4261         * pa-hpux10.h (LINK_SPEC): Likewise.
4262         * pa-hpux11.h (LINK_SPEC): Likewise.
4263
4264 2008-09-07  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
4265
4266         * pa32-regs.h (IRA_COVER_CLASSES): Define.
4267         * pa64-regs.h (IRA_COVER_CLASSES): Define.
4268
4269 2008-09-07  Helge Deller  <deller@gmx.de>
4270
4271         * pa/linux-atomic.c: New file.
4272         * pa/t-linux (LIB2FUNCS_STATIC_EXTRA): Define.
4273         * pa/t-linux64 (LIB2FUNCS_STATIC_EXTRA): Define.
4274
4275 2008-09-07  Richard Guenther  <rguenther@suse.de>
4276             Ira Rosen  <irar@il.ibm.com>
4277
4278         PR tree-optimization/36630
4279         * tree-vect-transform.c (vect_update_ivs_after_vectorizer):
4280         Call STRIP_NOPS before calling evolution_part_in_loop_num.
4281
4282 2008-09-07  Dorit Nuzman  <dorit@il.ibm.com>
4283             Ira Rosen  <irar@il.ibm.com>
4284
4285         PR tree-optimization/35642
4286         * config/rs6000/altivec.md (mulv8hi3): Implement.
4287
4288 2008-09-06  Jeff Law <law@redhat.com>
4289
4290         * h8300/h8300.h (IRA_COVER_CLASSES): Define.
4291
4292 2008-09-06  Jan Hubicka  <jh@suse.cz>
4293
4294         PR tree-optimization/14703
4295         * tree-ssa-live.c (remove_unused_scope_block_p): Remove ignored
4296         declarations.
4297         * passes.c (init_optimization_passes): Recompute inline parameters.
4298
4299 2008-09-06  Richard Sandiford  <rdsandiford@googlemail.com>
4300
4301         * config/mips/mips.c (mips_function_ok_for_sibcall): Check for
4302         DECL being null.
4303
4304 2008-09-06  Richard Sandiford  <rdsandiford@goolemail.com>
4305             Peter Fuerst  <post@pfrst.de>
4306
4307         * doc/invoke.texi: Document -mr10k-cache-barrier=.
4308         * doc/extend.texi: Document __builtin_mips_cache.
4309         * config/mips/mips-ftypes.def: Add a (VOID, SI, CVPOINTER) entry.
4310         * config/mips/mips.opt (mr10k-cache-barrier=): New option.
4311         * config/mips/mips.h (TARGET_CPU_CPP_BUILTINS): Define
4312         __GCC_HAVE_BUILTIN_MIPS_CACHE.
4313         (TARGET_CACHE_BUILTIN, ISA_HAS_CACHE): New macros.
4314         * config/mips/mips.c (mips_r10k_cache_barrier_setting): New enum.
4315         (set_push_mips_isas): New variable.
4316         (mips_r10k_cache_barrier): New variable.
4317         (cache): New availability predicate.
4318         (mips_builtins): Add an entry for __builtin_mips_cache.
4319         (mips_build_cvpointer_type): New function.
4320         (MIPS_ATYPE_CVPOINTER): New macro.
4321         (mips_prepare_builtin_arg): Only use the insn's mode if the rtx's
4322         mode is VOIDmode.
4323         (r10k_simplified_address_p, r10k_simplify_address)
4324         (r10k_uncached_address_p, r10k_safe_address_p)
4325         (r10k_needs_protection_p_1, r10k_needs_protection_p_store)
4326         (r10k_needs_protection_p_call, r10k_needs_protection_p)
4327         (r10k_insert_cache_barriers): New functions.
4328         (mips_reorg_process_insns): Delete cache barriers after a
4329         branch-likely instruction.
4330         (mips_reorg): Call r10k_insert_cache_barriers.
4331         (mips_handle_option): Handle OPT_mr10k_cache_barrier_.
4332         * config/mips/mips.md (UNSPEC_MIPS_CACHE): New constant.
4333         (UNSPEC_R10K_CACHE_BARRIER): Likewise.
4334         (mips_cache, r10k_cache_barrier): New define_insns.
4335
4336 2008-09-06  Richard Sandiford  <rdsandiford@googlemail.com>
4337
4338         * ira-int.h (ira_zero_hard_reg_set, ira_one_hard_reg_set): Delete.
4339         * ira-color.c (setup_allocno_left_conflicts_num): Use
4340         hard_reg_set_equal_p instead of a comparison with
4341         ira_zero_hard_reg_set.
4342         * ira.c (setup_reg_subclasses): Likewise.
4343         (setup_cover_and_important_classes): Likewise.
4344         (setup_class_translate): Likewise.
4345         (setup_reg_class_intersect_union): Likewise.
4346         (ira_zero_hard_reg_set, ira_one_hard_reg_set): Delete.
4347         (ira_init_once): Don't initialize them.
4348
4349 2008-09-05  Vladimir Makarov  <vmakarov@redhat.com>
4350
4351         * doc/tm.texi (IRA_COVER_CLASSES): Fix a typo.
4352
4353 2008-09-05  Vladimir Makarov  <vmakarov@redhat.com>
4354
4355         * ira-color.c (ira_fast_allocation): Permit global allocno allocation.
4356
4357 2008-09-05  Trevor Smigiel <Trevor_Smigiel@playstation.sony.com>
4358
4359         Improved branch hints, safe hints, and scheduling.
4360
4361         * haifa-sched.c (sched_emit_insn) : Define.
4362         * sched-int.h (sched_emit_insn) : Add prototype.
4363         * doc/invoke.texi (-mdual-nops, -mhint-max-nops,
4364         -mhint-max-distance -msafe-hints) : Document.
4365         * config/spu/spu.c (spu_flag_var_tracking): New.
4366         (TARGET_SCHED_INIT_GLOBAL, TARGET_SCHED_INIT,
4367         TARGET_SCHED_REORDER, TARGET_SCHED_REORDER2,
4368         TARGET_ASM_FILE_START): Define.
4369         (TARGET_SCHED_ADJUST_PRIORITY): Remove.
4370         (STOP_HINT_P, HINTED_P, SCHED_ON_EVEN_P): Define.
4371         (spu_emit_branch_hint): Add blocks argument.
4372         (insert_branch_hints, insert_nops): Remove.
4373         (pad_bb, insert_hbrp_for_ilb_runout, insert_hbrp, in_spu_reorg,
4374         uses_ls_unit, spu_sched_init_global, spu_sched_init,
4375         spu_sched_reorder, asm_file_start): New functions.
4376         (clock_var, spu_sched_length, pipe0_clock,
4377         pipe1_clock, prev_clock_var, prev_priority,
4378         spu_ls_first, prev_ls_clock): New static variables.
4379         * config/spu/spu.h (TARGET_DEFAULT): Add MASK_SAFE_HINTS.
4380         * config/spu.md (iprefetch): Add operand, make it clobber MEM.
4381         (nopn_nv): Add a non-volatile version of nop.
4382         * config/spu/spu.opt (-mdual-nops, -mhint-max-nops,
4383         -mhint-max-distance, -msafe-hints): New options.
4384
4385 2008-09-05  Janis Johnson  <janis187@us.ibm.com>
4386             Samuel Tardieu  <sam@rfc1149.net>
4387
4388         * opts.c (decode_options): Combine nested if statements.
4389
4390         PR target/37283
4391         * opts.c (decode_options): Handle more relationships among
4392         unit-at-a-time, toplevel-reorder, and section-anchors.
4393
4394 2008-09-05  David Daney  <ddaney@avtrex.com>
4395
4396         * doc/install.texi (--enable-reduced-reflection): Document new option.
4397
4398 2008-09-05  Bob Wilson  <bob.wilson@acm.org>
4399
4400         * config/xtensa/predicates.md (nonimmed_operand, mem_operand): Use
4401         constantpool_mem_p.
4402         (constantpool_operand): New.
4403         (move_operand): Disallow sub-word modes for the constant pool.
4404         * config/xtensa/xtensa.c (TARGET_SECONDARY_RELOAD): Define.
4405         (xtensa_secondary_reload_class): Replace with....
4406         (xtensa_secondary_reload): this function.  Remove SIGN_EXTEND check.
4407         Set icode for sub-word reloads from the constant pool.
4408         * config/xtensa/xtensa.h (SECONDARY_INPUT_RELOAD_CLASS): Delete.
4409         (SECONDARY_OUTPUT_RELOAD_CLASS): Delete.
4410         * config/xtensa/xtensa.md (reload<mode>_literal): New.
4411         * config/xtensa/xtensa-protos.h: Update prototypes.
4412
4413 2008-09-05  Joseph Myers  <joseph@codesourcery.com>
4414
4415         * config/mips/mips.h (enum reg_class): Add FRAME_REGS.
4416         (REG_CLASS_NAMES): Update.
4417         (REG_CLASS_CONTENTS): Update.
4418         * config/mips/mips.c (mips_regno_to_class): Use FRAME_REGS instead
4419         of ALL_REGS for regs 77 and 78.
4420         * function.c (instantiate_virtual_regs_in_insn): Assert that
4421         return value of simplify_gen_subreg is not NULL.
4422
4423 2008-09-05  Paolo Bonzini  <bonzini@gnu.org>
4424
4425         * emit-rtl.c (gen_rtvec): Rewrite not using gen_rtvec_v.
4426         (gen_rtvec_v): Fix coding standards.
4427
4428 2008-09-04  Jan Hubicka  <jh@suse.cz>
4429
4430         * i386.c (decide_alg): Be more conservative about optimizing for size.
4431
4432 2008-09-04  Ian Lance Taylor  <iant@google.com>
4433
4434         * varasm.c (narrowing_initializer_constant_valid_p): New
4435         static function.
4436         (initializer_constant_valid_p): Call it.
4437
4438 2008-09-04  Jeff Law  <law@redhat.com>
4439
4440         * fold-const.c (native_encode_real): Fix computation of WORDS.
4441         (native_interpret_real): Likewise.
4442
4443 2008-09-04  Janis Johnson  <janis187@us.ibm.com>
4444
4445         * config/rs6000/t-rs6000: Remove target gt-rs6000.h.
4446
4447 2008-09-04  Vladimir Makarov  <vmakarov@redhat.com>
4448
4449         * ira-conflicts.c (process_regs_for_copy): Check insn to check
4450         that the cost is already taken into account in ira-costs.c
4451
4452         * ira-int.h (ira_debug_copy, ira_debug_copies): New.
4453
4454         * ira-build.c (print_copy, print_copies, ira_debug_copy,
4455         ira_debug_copies): New.
4456         (ira_bulid): Call print_copies.
4457
4458         * doc/tm.texi (IRA_COVER_CLASSES): Fix the description.
4459
4460 2008-09-04  Samuel Tardieu  <sam@rfc1149.net>
4461
4462         PR target/32783
4463         * config/rs6000/rs6000.c (optimization_options): Remove check of
4464         flag_toplevel_order.
4465
4466 2008-09-04  Adam Nemet  <anemet@caviumnetworks.com>
4467
4468         * config/mips/mips.h (ISA_HAS_SEQ_SNE): New macro.
4469         * config/mips/mips.c (mips_expand_scc): Also expand seq and sne if
4470         second operand is a reg_imm10_operand.
4471         * config/mips/mips.md (*seq_<GPR:mode><GPR2:mode>_seq,
4472         *sne_<GPR:mode><GPR2:mode>_sne): New patterns.
4473         (*seq_<GPR:mode><GPR2:mode>): Rename to
4474         *seq_zero_<GPR:mode><GPR2:mode>.  Don't match if
4475         ISA_HAS_SEQ_SNE.
4476         (*seq_<GPR:mode><GPR2:mode>_mips16): Rename to
4477         *seq_zero_<GPR:mode><GPR2:mode>_mip16.  Don't match if
4478         ISA_HAS_SEQ_SNE.
4479         (*sne_<GPR:mode><GPR2:mode>): Rename to
4480         *sne_zero_<GPR:mode><GPR2:mode>.  Don't match if
4481         ISA_HAS_SEQ_SNE.
4482
4483 2008-09-04  Adam Nemet  <anemet@caviumnetworks.com>
4484
4485         * config/mips/mips.h (ISA_HAS_EXTS): New macro.
4486         * config/mips/mips.md (*ashr_trunc<mode>): Name the pattern
4487         combining an arithmetic right shift by more than 31 and a
4488         trunction.  Don't match for out-of-range shift amounts.  Set
4489         attribute mode to <MODE>.
4490         (*lshr32_trunc<mode>): Name the pattern combining a logical right
4491         shift by 32 and and a truncation.  Set attribute mode to <MODE>.
4492         (*<optab>_trunc<mode>_exts): New pattern for truncated right
4493         shifts by less than 32.
4494         (extv): Change predicate on first operand to accept registers.
4495         Change predicate of the other operands from immediate_operand to
4496         const_int_operand.  Expand exts when source is a register.
4497         (extzv): Change predicate of the constant operands from
4498         immediate_operand to const_int_operand.
4499         (extzv<mode>): Change predicate of the constant operands from
4500         immediate_operand to const_int_operand and no constraint. Also
4501         remove mode.
4502         (*extzv_trunc<mode>_exts): New pattern.
4503
4504 2008-09-04  Adam Nemet  <anemet@caviumnetworks.com>
4505
4506         * config/mips/mips.h (ISA_HAS_CINS): New macro.
4507         * config/mips/mips-protos.h (mask_low_and_shift_p,
4508         mask_low_and_shift_len): Declare.
4509         * config/mips/mips.c (mask_low_and_shift_p,
4510         mask_low_and_shift_len): New functions.
4511         (mips_print_operand): Handle new operand prefix "m".
4512         * config/mips/mips.md (*cins<mode>): New pattern.
4513
4514 2008-09-04  Bernd Schmidt  <bernd.schmidt@analog.com>
4515
4516         * config/bfin/bfin.c (gen_one_bundle): Don't create new nops when
4517         optimizing for size.
4518
4519 2008-09-04  Richard Sandiford  <rdsandiford@googlemail.com>
4520
4521         * df-scan.c (df_get_entry_block_def_set): Add STACK_POINTER_REGNUM
4522         regardless of epilogue_completed.
4523
4524 2008-09-04  Vladimir Makarov  <vmakarov@redhat.com>
4525
4526         PR middle-end/37359
4527         * ira-lives.c (process_bb_node_lives): Check setjmp.
4528
4529 2008-09-04  Richard Sandiford  <rdsandiford@googlemail.com>
4530
4531         PR middle-end/37243
4532         * ira-build.c (form_loop_tree): Reverse BB walk.
4533         (create_bb_allocnos): Likewise.
4534         * ira-lives.c (make_regno_born_and_dead, regs_set): Delete.
4535         (mark_reg_store): Rename to...
4536         (mark_ref_live): ...this and take a df_ref argument instead of
4537         note_stores arguments.  Assert that we have a register.
4538         (mark_reg_clobber): Delete.
4539         (def_conflicts_with_inputs_p): New function.
4540         (mark_reg_conflicts): Delete.
4541         (mark_reg_death): Rename to...
4542         (mark_ref_dead): ...this and take a df_ref argument instead of
4543         a register.  Assert that we have a register.
4544         (process_bb_node_lives): Hoist frequency calculation out of
4545         instruction walk.  Convert from a forwards scan to a backwards scan.
4546         Use DF_REF_USES and DF_REF_DEFS instead of register notes and
4547         note_stores.  Remove EH_RETURN_DATA_REGNO and regs_set handling.
4548         (create_allocno_live_ranges): Don't create regs_set.
4549
4550 2008-09-04  Ian Lance Taylor  <iant@google.com>
4551
4552         * rtl.h (LABEL_REF_NONLOCAL_P): Don't check for REG_LABEL_OPERAND
4553         or REG_LABEL_TARGET.
4554         * calls.c (emit_library_call_value_1): Use MEM_P rather than
4555         comparing MODE with MEM.
4556         * gimple.c (gimple_build_predict): Cast END_PREDICTORS before
4557         comparing with GF_PREDICT_TAKEN.
4558         (gimple_get_lhs): Change code to enum gimple_code.
4559         (gimple_set_lhs): Likewise.
4560         * ifcvt.c (noce_process_if_block): Correct GET_MODE to GET_CODE.
4561         * omp-low.c (find_omp_clause): Change kind parameter to enum
4562         omp_clause_code.
4563         * tree-flow.h (find_omp_clause): Update declaration.
4564         * regrename.c (clear_dead_regs): Change kind parameter to enum
4565         reg_note.
4566         * reload1.c (eliminate_regs_1): Use REG_NOTE_KIND rather than
4567         GET_MODE.
4568         * see.c (see_get_extension_data): Change return type to enum
4569         entry_type.  Change UNKNOWN to NOT_RELEVANT, SIGN_EXTEND to
4570         SIGNED_EXTENDED_DEF, ZERO_EXTEND to ZERO_EXTENDED_DEF.
4571         (see_gen_normalized_extension): Change extension_code parameter to
4572         enum entry_type.
4573         (see_seek_pre_extension_expr): Change extension_code to enum
4574         entry_type.
4575         (see_merge_one_def_extension): Likewise.
4576         (see_handle_relevant_defs): Likewise.
4577         (see_handle_relevant_uses): Likewise.
4578         (see_analyze_one_def): Likewise.
4579         * tree-cfg.c (need_fake_edge_p): Compare gimple code with
4580         GIMPLE_ASM rather than ASM_EXPR.
4581         * tree-ssa-alias.c (is_escape_site): Compare gimple code with
4582         GIMPLE_RETURN rather than RETURN_EXPR.
4583         * tree-ssa-ccp.c (likely_value): Change code to enum gimple_code.
4584         (evaluate_stmt): Likewise.
4585         * tree-vect-analyze.c (vect_analyze_operations): Change relevance
4586         to enum vect_relevant.
4587         (vect_mark_stmts_to_be_vectorized): Change assertion to not
4588         compare gimple codes with tree codes.
4589
4590 2008-09-04  Paul Brook  <paul@codesourcery.com>
4591
4592         * config/arm/arm.c (arm_size_rtx_costs): Call cost function.
4593
4594 2008-09-04  Bernd Schmidt  <bernd.schmidt@analog.com>
4595
4596         * config/bfin/bfin.c (bfin_function_ok_for_sibcall): Restore a null
4597         pointer check lost in the recent no-unit-at-a-time patch.
4598
4599 2008-09-04  Jan Hubicka  <jh@suse.cz>
4600
4601         PR middle-end/37343
4602         * tree-switch-conversion.c (check_final_bb): Accept only IP
4603         invariants.
4604
4605 2008-09-04  Jan Hubicka  <jh@suse.cz>
4606
4607         * tree-vrp.c (vrp_evaluate_conditional_warnv_with_ops_using_ranges):
4608         Break out from ...
4609         (vrp_evaluate_conditional_warnv_with_ops): ... this one.  Add
4610         using_ranges argument.
4611         (vrp_evaluate_conditional): Avoid bogus warning for type range.
4612         (vrp_visit_cond_stmt): Update call of
4613         vrp_evaluate_conditional_warnv_with_ops
4614
4615 2008-09-04  Jan Hubicka  <jh@suse.cz>
4616
4617         PR tree-optimization/37345
4618         PR tree-optimization/37358
4619         PR tree-optimization/37357
4620         * tree.c (build_function_type_skip_args): Build distinct type copy;
4621         set TYPE_CONTEXT.
4622         (build_function_decl_skip_args): Set type of new decl not orig decl;
4623         clear DECL_VINDEX for methods turned into functions.
4624
4625 2008-09-04  Nick Clifton  <nickc@redhat.com>
4626
4627         * configure.ac (HAVE_GAS_LCOMM_WITH_ALIGNMENT): New assembler check.
4628         * configure: Regenerate.
4629         * config.in: Regenerate.
4630         * config/i386/bsd.h (ASM_OUTPUT_ALIGNED_LOCAL): Use .lcomm with an
4631         alignment field, if it is supported.
4632
4633 2008-09-04  Kai Tietz  <kai.tietz@onevision.com>
4634
4635         * config/i386/t-mingw32 (SHLIB_LC): Change order of import
4636         libraries.
4637
4638 2008-09-03  David Edelsohn  <edelsohn@gnu.org>
4639
4640         * config/rs6000/rs6000.c (processor_target_table): Do not
4641         enable VMX for POWER6.
4642
4643 2008-09-03  Anton Blanchard  <anton@samba.org>
4644
4645         * config/rs6000/rs6000.c (rs6000_split_lock_test_and_set): Do not
4646         emit memory barrier before operation.
4647
4648 2008-09-03  John David Anglin  <dave.anglin@nrc.cnrc.gc.ca>
4649
4650         PR testsuite/37325
4651         * config/pa/pa64-hpux.h (ASM_OUTPUT_EXTERNAL_REAL): Call
4652         default_elf_asm_output_external.
4653
4654 2008-09-03  Jeff Law  <law@redhat.com>
4655
4656         * h8300.c (expand_a_shift): Avoid invalid RTL sharing.
4657
4658 2008-09-03  Richard Henderson  <rth@redhat.com>
4659
4660         * config/alpha/alpha.c (alpha_split_lock_test_and_set): Move
4661         memory barrier to below the test-and-set.
4662         (alpha_split_lock_test_and_set_12): Likewise.
4663
4664 2008-09-03  Vladimir Makarov  <vmakarov@redhat.com>
4665
4666         PR rtl-opt/37243
4667
4668         * ira-int.h (ira_loop_tree_node): Rename mentioned_allocnos to
4669         all_allocnos.
4670
4671         * ira-color.c (print_loop_title): Use all_allocnos.
4672         (color_pass): Ditto.  Don't add border_allocnos.  Check that
4673         subloop allocno in the correspdoning bitmap all_allocnos.
4674
4675         * ira-emit.c (change_loop): Use all_allocnos.
4676
4677         * ira-build.c (create_loop_tree_nodes, finish_loop_tree_node): Ditto.
4678         (ira_create_allocno): Set up all_allocnos bit for the created allocno.
4679         (create_cap_allocno): Remove setting mentioned_allocnos.
4680         (create_insn_allocnos): Ditto.
4681         (remove_unnecessary_allocnos): Use all_allocnos.
4682         (check_allocno_creation): Check that allocnos are in the
4683         corresponding bitmap all_allocnos.
4684
4685 2008-09-03  Vladimir Makarov  <vmakarov@redhat.com>
4686
4687         PR rtl-opt/37243
4688
4689         * ira-conflicts.c (REG_SUBREG_P, go_through_subreg): New.
4690         (process_regs_for_copy): Process subregs.  Refine check when cost
4691         is taken into account in ira-costs.c.
4692         (process_reg_shuffles): Use REG_SUBREG_P.
4693         (add_insn_allocno_copies): Ditto.  Ignore modes.
4694
4695         * ira-color.c (conflict_allocno_vec): New.
4696         (COST_HOP_DIVISOR): New macro.
4697         (update_copy_costs_1): Use it.
4698         (update_conflict_hard_regno_costs): New function.
4699         (assign_hard_reg): Use it.
4700         (ira_color): Allocate and free conflict_allocno_vec.
4701
4702 2008-09-03  Vladimir Makarov  <vmakarov@redhat.com>
4703
4704         PR rtl-opt/37296
4705
4706         * ira-int.h (ira_sort_insn_chain): Remove.
4707
4708         * ira.c (basic_block_order_nums, chain_insn_order,
4709         chain_freq_compare, chain_bb_compare, ira_sort_insn_chain): Remove.
4710         (ira): Don't call ira_sort_insn_chain.
4711
4712         * reload1.c (reload): Don't call ira_sort_insn_chain.
4713
4714 2008-09-03  Andrew Pinski  <andrew_pinski@playstation.sony.com>
4715
4716         PR middle-end/37293
4717         * cgraphunit.c (update_call_expr): Remove eh regions from statements
4718         which become non throw.
4719         (cgraph_function_versioning): Also clear DECL_WEAK.  Call
4720         update_call_expr after updating the flags on the decl.
4721
4722 2008-09-03  Jan Hubicka  <jh@suse.cz>
4723
4724         PR tree-optimization/37315
4725         * cgraph.c (cgraph_create_edge): Use gimple_has_body_p.
4726         * cgraphunit.c (verify_cgraph_node): drop gimple_body check.
4727         (cgraph_analyze_functions): Use node->analyzed
4728         (cgraph_mark_functions_to_output): Likewise.
4729         (cgraph_expand_function): All functions can be released after
4730         expanding.
4731         (cgraph_optimize): Use gimple_has_body_p.
4732         * ipa-inline.c (cgraph_clone_inlined_nodes): Use analyzed flag.
4733         (cgraph_decide_inlining_incrementally): Likewise.
4734         (inline_transform): Inline transform.
4735         * tree-inline.c (initialize_cfun): Do now shallow copy structure;
4736         copy fields needed.
4737         (inlinable_function_p): Drop gimple_body check.
4738         (expand_call_inline): Use gimple_has_body_p.
4739         * gimple.c (gimple_has_body_p): New.
4740         * gimple.h (gimple_has_body_p): Add prototype.
4741         * tree-cfg.c (execute_build_cfg): Remove gimple_body.
4742         (dump_function_to_file): Use gimple_has_body_p check.
4743
4744 2008-09-03  Jakub Jelinek  <jakub@redhat.com>
4745
4746         PR c++/37346
4747         * gimple.h (gimple_has_substatements): GIMPLE_OMP_CRITICAL has
4748         substatements.
4749         * tree-inline.c (remap_gimple_stmt): Handle GIMPLE_OMP_CRITICAL.
4750
4751 2008-09-03  Bernd Schmidt  <bernd.schmidt@analog.com>
4752
4753         From Michael Frysinger  <michael.frysinger@analog.com>
4754         * config/bfin/bfin.c (bfin_cpus[]): Add 0.1 for bf522, bf523, bf524,
4755         bf525, bf526, bf527, bf542, bf544, bf547, bf548, and bf549.  Add 0.2
4756         for bf538.
4757
4758 2008-09-03  Hari Sandanagobalane  <hariharan@picochip.com>
4759
4760         Add picoChip port.
4761         * doc/extend.texi: Document picoChip builtin functions.
4762         * doc/invoke.texi: Document picoChip options.
4763         * doc/contrib.texi: Add picoChip contribution.
4764         * doc/md.texi: Document picoChip constraints.
4765         * config.gcc: Add picochip-*-*.
4766         * config/picochip/: Add new port.
4767
4768 2008-09-03  Richard Guenther  <rguenther@suse.de>
4769
4770         PR tree-optimization/37328
4771         * tree-sra.c (sra_build_assignment): Gimplify properly.
4772         (generate_copy_inout): Take the correct stmt as definition,
4773         remove bogus assert.
4774
4775 2008-09-03  Bernd Schmidt  <bernd.schmidt@analog.com>
4776
4777         * config/bfin/bfin.c (bfin_expand_prologue): Honour no_stack_limit
4778         attributes.
4779
4780         From Michael Frysinger  <michael.frysinger@analog.com>
4781         * config/bfin/bfin.c (bfin_handle_option): Remove BF561 warning.
4782
4783 2008-09-03 Danny Smith  <dannysmith@usrs.sourceforge.net>
4784
4785         * gthr-win32.h (CONST_CAST2): Really make sure CONST_CAST2 is defined.
4786         (__gthread_setspecific): Revert 2008-08-31 change to
4787         __GTHREAD_HIDE_W32API case.  Apply it to !__GTHREAD_HIDE_W32API case.
4788
4789 2008-09-02  Aldy Hernandez  <aldyh@redhat.com>
4790
4791         * diagnostic.c (error_at): New.
4792         * toplev.h (error_at): New prototype.
4793         * c-typeck.c (build_array_ref): Call error_at instead of error.
4794         Pass location to pedwarn.
4795
4796 2008-09-02  Adam Nemet  <anemet@caviumnetworks.com>
4797
4798         * sel-sched.c (sel_hard_regno_rename_ok): Mark arguments unused.
4799
4800 2008-09-02  Jakub Jelinek  <jakub@redhat.com>
4801
4802         * dwarf2out.c (tree_add_const_value_attribute): Only handle
4803         VAR_DECL and CONST_DECL.
4804
4805 2008-09-02  H.J. Lu  <hongjiu.lu@intel.com>
4806             Jakub Jelinek  <jakub@redhat.com>
4807
4808         * config/i386/i386.c (X86_64_VARARGS_SIZE): Removed.
4809         (setup_incoming_varargs_64): Assume cum != NULL. Set/check
4810         ix86_varargs_gpr_size and ix86_varargs_fpr_size.  Use
4811         ix86_varargs_gpr_size instead of X86_64_REGPARM_MAX.
4812         Don't set ix86_save_varrargs_registers.
4813         (ix86_setup_incoming_varargs): Assume cum != NULL.
4814         (ix86_va_start): Check ix86_varargs_gpr_size and
4815         ix86_varargs_fpr_size instead of cfun->va_list_gpr_size and
4816         cfun->va_list_fpr_size, respectively.  Subtract 8*X86_64_REGPARM_MAX
4817         from frame pointer if ix86_varargs_gpr_size == 0.
4818         (ix86_compute_frame_layout): Updated.
4819         * config/i386/i386.h (ix86_save_varrargs_registers): Removed.
4820         (ix86_varargs_gpr_size): Define.
4821         (ix86_varargs_fpr_size): Likewise.
4822         (machine_function): Remove save_varrargs_registers.
4823         Add varargs_gpr_size and varargs_fpr_size.
4824
4825 2008-09-02  Jakub Jelinek  <jakub@redhat.com>
4826
4827         * config/alpha/alpha.c (va_list_skip_additions,
4828         alpha_stdarg_optimize_hook, alpha_gimplify_va_arg_1): Tuplify.
4829         (alpha_gimplify_va_arg): Call unshare_expr on second use of
4830         offset_field.
4831
4832         PR tree-optimization/36766
4833         * tree-cfg.c (gimple_purge_all_dead_eh_edges): Do nothing
4834         for already removed basic blocks.
4835
4836         PR target/36332
4837         * real.c (real_maxval): Clear a lower bit to make real_maxval
4838         match get_max_float for IBM long double format.
4839
4840 2008-09-02  Andreas Schwab  <schwab@suse.de>
4841
4842         * configure.ac: Use m4_quote to quote the expansion of m4_do.
4843         * configure: Regenerate.
4844
4845 2008-09-02  Richard Sandiford  <rdsandiford@googlemail.com>
4846
4847         * simplify-rtx.c (simplify_binary_operation_1): Check for CONST,
4848         SYMBOL_REF and LABEL_REF when applying plus_constant, instead of
4849         checking for a non-VOID CONSTANT_P.
4850
4851 2008-09-02  Jan Hubicka  <jh@suse.cz>
4852
4853         * predict.c (pass_strip_predict_hints): Avoid bugs dump file.
4854         * expmed.c (expand_divmod): Fix test of smod_pow2_cheap and
4855         sdiv_pow2_cheap
4856
4857 2008-09-02  H.J. Lu  <hongjiu.lu@intel.com>
4858
4859         * expr.c (emit_group_store): Don't assert stack temp mode size.
4860
4861 2008-09-02  Sebastian Pop  <sebastian.pop@amd.com>
4862             Tobias Grosser  <grosser@fim.uni-passau.de>
4863             Jan Sjodin  <jan.sjodin@amd.com>
4864             Harsha Jagasia  <harsha.jagasia@amd.com>
4865             Dwarakanath Rajagopal  <dwarak.rajagopal@amd.com>
4866             Konrad Trifunovic  <konrad.trifunovic@inria.fr>
4867             Adrien Eliche  <aeliche@isty.uvsq.fr>
4868
4869         Merge from graphite branch.
4870         * graphite.c: New.
4871         * graphite.h: New.
4872         * tree-loop-linear.c (perfect_loop_nest_depth): Export.
4873         * doc/invoke.texi (-floop-block, -floop-interchange,
4874         -floop-strip-mine): Document new flags.
4875         * tree-into-ssa.c (gimple_vec): Moved...
4876         * tree-loop-distribution.c (rdg_component): Moved...
4877         * cfgloopmanip.c: Include tree-flow.h.
4878         (update_dominators_in_loop): New.
4879         (create_empty_if_region_on_edge): New.
4880         (create_empty_loop_on_edge): New.
4881         (loopify): Use update_dominators_in_loop.
4882         * tree-pass.h (pass_graphite_transforms): Declared.
4883         * configure: Regenerate.
4884         * tree-phinodes.c (make_phi_node): Export.
4885         (add_phi_node_to_bb): New, split from create_phi_node.
4886         * tree-chrec.c (for_each_scev_op): New.
4887         * tree-chrec.h (for_each_scev_op): Declared.
4888         * tree-ssa-loop-ivopts.c (get_phi_with_result): New.
4889         (remove_statement): Call get_phi_with_result.
4890         * config.in (HAVE_cloog): Undef.
4891         * gdbinit.in (pgg): New.
4892         * timevar.def (TV_GRAPHITE_TRANSFORMS): New.
4893         * tree-ssa-loop.c (graphite_transforms): New.
4894         (gate_graphite_transforms): New.
4895         (pass_graphite_transforms): New.
4896         * configure.ac (PPLLIBS, PPLINC, CLOOGLIBS, CLOOGINC,
4897         HAVE_cloog): Defined.
4898         * tree-vectorizer.c (rename_variables_in_bb): Export.
4899         * tree-data-ref.c (dr_may_alias_p): Export.
4900         (stmt_simple_memref_p): New.
4901         (find_data_references_in_stmt): Export.
4902         (find_data_references_in_loop): Export.
4903         (create_rdg_edge_for_ddr): Initialize RDGE_RELATION.
4904         (create_rdg_edges_for_scalar): Initialize RDGE_RELATION.
4905         (create_rdg_vertices): Export.
4906         (build_empty_rdg): New.
4907         (build_rdg): Call build_empty_rdg.  Free dependence_relations.
4908         * tree-data-ref.h (rdg_component): ... here.
4909         (scop_p): New.
4910         (struct data_reference): Add a field scop.
4911         (DR_SCOP): New.
4912         (find_data_references_in_loop): Declared.
4913         (find_data_references_in_stmt): Declared.
4914         (create_rdg_vertices): Declared.
4915         (dr_may_alias_p): Declared.
4916         (stmt_simple_memref_p): Declared.
4917         (struct rdg_edge): Add a field ddr_p relation.
4918         (build_empty_rdg): Declared.
4919         * lambda.h (lambda_matrix): Declare a VEC of.
4920         (find_induction_var_from_exit_cond): Declared.
4921         (lambda_vector_compare): New.
4922         * common.opt (fgraphite, floop-strip-mine,
4923         floop-interchange, floop-block): New flags.
4924         * lambda-code.c (find_induction_var_from_exit_cond): Export.
4925         * cfgloop.c (is_loop_exit): New.
4926         * cfgloop.h (is_loop_exit): Declared.
4927         (create_empty_if_region_on_edge): Declared.
4928         (create_empty_loop_on_edge): Declared.
4929         * tree-flow.h (add_phi_node_to_bb): Declared.
4930         (make_phi_node): Declared.
4931         (rename_variables_in_bb): Declared.
4932         (perfect_loop_nest_depth): Declared.
4933         (graphite_transform_loops): Declared.
4934         * Makefile.in (cfgloopmanip.o): Depend on TREE_FLOW_H.
4935         (graphite.o-warn): Add -Wno-error.
4936         (PPLLIBS, PPLINC, CLOOGLIBS, CLOOGINC): Declared.
4937         (LIBS): Add GMPLIBS, CLOOGLIBS, PPLLIBS.
4938         (INCLUDES): Add PPLINC, CLOOGINC.
4939         (OBJS-common): Add graphite.o.
4940         (graphite.o): Add rule.
4941         * gimple.h (gimple_vec): ... here.
4942         * tree-cfg.c (print_loops): Start printing at ENTRY_BLOCK_PTR.
4943         * passes.c (init_optimization_passes): Schedule
4944         pass_graphite_transforms.
4945
4946 2008-09-02  Samuel Tardieu  <sam@rfc1149.net>
4947
4948         PR target/37283
4949         * opts.c (decode_options): Move processing of -fno-unit-at-a-time
4950         and -fno-toplevel-reorder after handle_options.
4951
4952 2008-09-02  Paul Brook  <paul@codesourcery.com>
4953
4954         * config/arm/arm.c (arm_tune_cortex_a9): Define.
4955         (arm_override_options): Set arm_tune_cortex_a9.
4956         (arm_rtx_costs_1): Make register shifts more expensive on Cortex-A9.
4957         (arm_issue_rate): Handle cortexa9.
4958         * config/arm/arm.h (arm_tune_cortex_a9): Declare.
4959         * config/arm/arm-cores.def: Add cortex-a9.
4960         * config/arm/arm-tune.md: Regenerate.
4961         * config/arm/arm.md: Include cortex-a9.md.
4962         (generic_sched, generic_vfp): Add cortexa9.
4963         * config/arm/cortex-a9.md: New file.
4964
4965 2008-09-02  Richard Guenther  <rguenther@suse.de>
4966
4967         PR tree-optimization/37327
4968         * tree-vrp.c (register_new_assert_for): Make sure to not have
4969         TREE_OVERFLOW set on the bound.
4970
4971 2008-09-02  Alexander Monakov  <amonakov@ispras.ru>
4972
4973         Fixed typo in date of the 2008-09-01 MOVE_RATIO commit.
4974
4975         * config/ia64/ia64.opt (msched-ar-data-spec): Default to 1.
4976         * config/ia64/ia64.c (ia64_set_sched_flags): Always initialize
4977         spec_info->mask.
4978
4979 2008-09-02  Victor Kaplansky  <victork@il.ibm.com>
4980
4981         * gcc/config/spu/spu.md (divdf3): Removed.
4982
4983 2008-09-02  Jakub Jelinek  <jakub@redhat.com>
4984
4985         PR tree-optimization/37095
4986         * cgraph.c (cgraph_node): When creating new cgraph node after
4987         assembler_name_hash has been populated, record it in the hash
4988         table.
4989
4990 2008-09-01  Paul Brook  <paul@codesourcery.com>
4991
4992         * doc/invoke.texi: Document -mword-relocations.
4993         * config/arm/uclinux-elf.h (TARGET_DEFAULT_WORD_RELOCATIONS): Define.
4994         * config/arm/symbian.h (TARGET_DEFAULT_WORD_RELOCATIONS): Define.
4995         * config/arm/vxworks.h (TARGET_DEFAULT_WORD_RELOCATIONS): Define.
4996         * config/arm/arm.c (arm_split_constant): Use arm_emit_movpair.
4997         (arm_rtx_costs_1, arm_size_rtx_costs): Handle HIGH and LO_SUM.
4998         (arm_emit_movpair): New function.
4999         (arm_print_operand <c>): Handle sybolic addresses.
5000         * config/arm/arm.h (TARGET_USE_MOVT): Define.
5001         (TARGET_DEFAULT_WORD_RELOCATIONS): Define.
5002         * config/arm/arm-protos.h (arm_emit_movpair): Add prototype.
5003         * config/arm/arm.opt: Add -mword-relocations.
5004         * config/arm/arm.md (movsi): Use arm_emit_movpair.
5005         (arm_movt, arm_movw): New.
5006
5007 2008-09-01  Paul Brook  <paul@codesourcery.com>
5008
5009         * config/arm/arm.c (arm_override_options): Set arm_abi earlier.
5010         Allow Interworking on ARMv4 EABI based targets.
5011         * config/arm/bpabi.h (TARGET_FIX_V4BX_SPEC): Define.
5012         (SUBTARGET_EXTRA_ASM_SPEC, LINK_SPEC): Add TARGET_FIX_V4BX_SPEC.
5013
5014 2008-09-01  Paul Brook  <paul@codesourcery.com>
5015
5016         * config/arm/thumb2.md (thumb2_negscc): Match the correct operand for
5017         optimized LT0 test.  Remove optimization for GT.
5018
5019 2008-09-01  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
5020
5021         * pa64-hpux.h (LIB_SPEC): Link against librt when building static
5022         openmp applications.
5023         * pa-hpux11.h (LIB_SPEC): Likewise.
5024
5025         * ira.c (setup_eliminable_regset): Only declare i if ELIMINABLE_REGS
5026         is defined.
5027
5028 2008-09-01  Jan Hubicka  <jh@suse.cz>
5029
5030         * predict.c (maybe_hot_count_p, maybe_hot_edge_p): When profile is
5031         present, use only counts; when guessed use only frequencies.
5032         (estimate_bb_frequencies): Use function_frequency.
5033         * profile.c (compute_branch_probabilities): Exit early when
5034         profile reading failed. Set profile_status.
5035         (branch_prob): Do not set profile_status.
5036
5037 2008-09-01  Aldy Hernandez  <aldyh@redhat.com>
5038
5039         * tree.c (protected_set_expr_location): New.
5040         * tree.h (protected_set_expr_location): New prototype.
5041         * c-tree.h (build_array_ref): Add argument.
5042         (parser_build_unary_op): Same.
5043         * c-typeck.c (build_indirect_ref): Handle new location argument.
5044         (build_array_ref): Same.
5045         (parser_build_unary_op): Same.
5046         * gimplify.c (gimplify_asm_expr): Set input_location before calling
5047         error.
5048         * c-omp.c (c_finish_omp_atomic): Pass location when calling
5049         build_indirect_ref.
5050         * c-common.c (finish_label_address_expr): Handle new location argument.
5051         * c-common.h (build_indirect_ref): Add argument.
5052         (finish_label_address_expr): Same.
5053         * c-parser.c (c_parser_unary_expression): Pass location to build
5054         functions.
5055         (c_parser_postfix_expression): Same.
5056
5057 2008-09-01  Paul Brook  <paul@codesourcery.com>
5058
5059         * config/arm/arm.md: Include cortex-r4f.md.
5060         (attr fpu): Update type list.
5061         (attr type): Add fcpys, ffariths, ffarithd, fadds, faddd, fconsts,
5062         fconstd, fcmps and fcmpd.
5063         (attr tune_cortexr4): Define.
5064         (attr generic_sched, attr generic_vfp): Use tune_cortexr4.
5065         * config/arm/vfp.md: Document fcpys, ffariths, ffarithd, fadds, faddd,
5066         fconsts, fconstd, fcmps and fcmpd.  Use them in insn patterns.
5067         * config/arm/arm.c (arm_issue_rate): Add cortexr4f.
5068         * config/arm/arm1020e.md (v10_ffarith, v10_farith): Use new insn types.
5069         * config/arm/cortex-a8-neon.md (cortex_a8_vfp_add_sub,
5070         cortex_a8_vfp_farith: Ditto.
5071         * config/arm/vfp11.md (vfp_ffarith, vfp_farith): Ditto.
5072         * config/arm/cortex-r4.md: Use tune_cortexr4.
5073         * config/arm/cortex-r4f.md: New file.
5074
5075 2008-09-01  Richard Guenther  <rguenther@suse.de>
5076
5077         PR tree-optimization/37305
5078         * tree-ssa-ccp.c (ccp_fold): Do not set TREE_OVERFLOW on
5079         the result of constant conversions.
5080         (fold_gimple_assign): Likewise.
5081
5082 2008-09-01  Andrey Belevantsev  <abel@ispras.ru>
5083
5084         * sel-sched-ir.c (cmp_v_in_regset_pool): Surround with
5085         #ifdef ENABLE_CHECKING.
5086
5087 2008-09-01  Andrey Belevantsev  <abel@ispras.ru>
5088
5089         * sel-sched-dump.c: Surround with #ifdef INSN_SCHEDULING.
5090         * sched-int.h (print_insn, print_pattern, print_value): Declare also
5091         when !INSN_SCHEDULING.
5092
5093 2008-09-01  Andreas Schwab  <schwab@suse.de>
5094
5095         * config/ia64/ia64.c (TARGET_ADDRESS_COST): Update.
5096
5097 2008-09-01  Paul Brook  <paul@codesourcery.com>
5098
5099         * config/arm/arm.c (arm_no_early_mul_dep): Handle multiply-subtract.
5100
5101 2008-09-01  Jan Hubicka  <jh@suse.cz>
5102
5103         * config/spu/spu.c (spu_expand_block_move) Update call of MOVE_RATIO.
5104
5105         * expr.c (MOVE_BY_PIECES_P, CLEAR_BY_PIECES_P, SET_BY_PIECES_P):
5106         Pass speed operand.
5107         * expr.h (MOVE_RATIO, CLEAR_RATIO, SET_RATIO): Update.
5108         * gimplify.c (gimplify_init_constructor): Add speed operand.
5109         * tree-sra.c (decide_block_copy): Likewise.
5110         * tree-inline.c (estimate_move_cost): Likewise.
5111         * config/alpha/alpha.h (MOVE_RATIO): Update.
5112         * config/frv/frv.c (MOVE_RATIO): Update.
5113         * config/spu/spu.h (MOVE_RATIO): Update.
5114         * config/sparc/sparc.h (MOVE_RATIO): Update.
5115         * config/i386/i386.h (MOVE_RATIO, CLEAR_RATIO): Update.
5116         * config/m68hc11/m68hc11.h (MOVE_RATIO): Update.
5117         * config/cris/cris.h (MOVE_RATIO): Update.
5118         * config/mn10300/mn10300.h (MOVE_RATIO): Update.
5119         * config/arm/arm.h (MOVE_RATIO): Update.
5120         * config/pa/pa.md: Update uses of MOVE_RATIO
5121         * config/pa/pa.h (MOVE_RATIO): Update.
5122         * config/mips/mips.h (MOVE_RATIO, MOVE_BY_PIECES,
5123         CLEAR_RATIO, SET_RATIO): Update.
5124         * config/h8300/h8300.h (MOVE_RATIO): Update.
5125         * config/v850/v850.h (MOVE_RATIO): Update.
5126         * config/bfin/bfin.h (MOVE_RATIO): Update.
5127
5128 2008-08-31  Andrey Belevantsev  <abel@ispras.ru>
5129             Dmitry Melnik  <dm@ispras.ru>
5130             Dmitry Zhurikhin  <zhur@ispras.ru>
5131             Alexander Monakov  <amonakov@ispras.ru>
5132             Maxim Kuvyrkov  <maxim@codesourcery.com>
5133
5134         * sel-sched.h, sel-sched-dump.h, sel-sched-ir.h, sel-sched.c,
5135         sel-sched-dump.c, sel-sched-ir.c: New files.
5136         * Makefile.in (OBJS-common): Add selective scheduling object files.
5137         (sel-sched.o, sel-sched-dump.o, sel-sched-ir.o): New entries.
5138         (SEL_SCHED_IR_H, SEL_SCHED_DUMP_H): New entries.
5139         (sched-vis.o): Add dependency on $(INSN_ATTR_H).
5140         * cfghooks.h (get_cfg_hooks, set_cfg_hooks): New prototypes.
5141         * cfghooks.c (get_cfg_hooks, set_cfg_hooks): New functions.
5142         (make_forwarder_block): Update loop latch if we have redirected
5143         the loop latch edge.
5144         * cfgloop.c (get_loop_body_in_custom_order): New function.
5145         * cfgloop.h (LOOPS_HAVE_FALLTHRU_PREHEADERS): New enum field.
5146         (CP_FALLTHRU_PREHEADERS): Likewise.
5147         (get_loop_body_in_custom_order): Declare.
5148         * cfgloopmanip.c (has_preds_from_loop): New.
5149         (create_preheader): Honor CP_FALLTHRU_PREHEADERS.
5150         Assert that the preheader edge will be fall thru when it is set.
5151         * common.opt (fsel-sched-bookkeeping, fsel-sched-pipelining,
5152         fsel-sched-pipelining-outer-loops, fsel-sched-renaming,
5153         fsel-sched-substitution, fselective-scheduling): New flags.
5154         * cse.c (hash_rtx_cb): New.
5155         (hash_rtx): Use it.
5156         * dbgcnt.def (sel_sched_cnt, sel_sched_region_cnt,
5157         sel_sched_insn_cnt): New counters.
5158         * final.c (compute_alignments): Export.  Free dominance
5159         info after loop_optimizer_finalize.
5160         * genattr.c (main): Output maximal_insn_latency prototype.
5161         * genautomata.c (output_default_latencies): New.
5162         Factor its code from ...
5163         (output_internal_insn_latency_func): ... here.
5164         (output_internal_maximal_insn_latency_func): New.
5165         (output_maximal_insn_latency_func): New.
5166         * hard-reg-set.h (UHOST_BITS_PER_WIDE_INT): Define unconditionally.
5167         (struct hard_reg_set_iterator): New.
5168         (hard_reg_set_iter_init, hard_reg_set_iter_set,
5169         hard_reg_set_iter_next): New functions.
5170         (EXECUTE_IF_SET_IN_HARD_REG_SET): New macro.
5171         * lists.c (remove_free_INSN_LIST_node,
5172         remove_free_EXPR_LIST_node): New functions.
5173         * loop-init.c (loop_optimizer_init): When
5174         LOOPS_HAVE_FALLTHRU_PREHEADERS, set CP_FALLTHRU_PREHEADERS when
5175         calling create_preheaders.
5176         (loop_optimizer_finalize): Do not verify flow info after reload.
5177         * recog.c (validate_replace_rtx_1): New parameter simplify.
5178         Default it to true.  Update all uses.  Factor out simplifying
5179         code to ...
5180         (simplify_while_replacing): ... this new function.
5181         (validate_replace_rtx_part,
5182         validate_replace_rtx_part_nosimplify): New.
5183         * recog.h (validate_replace_rtx_part,
5184         validate_replace_rtx_part_nosimplify): Declare.
5185         * rtl.c (rtx_equal_p_cb): New.
5186         (rtx_equal_p): Use it.
5187         * rtl.h (rtx_equal_p_cb, hash_rtx_cb): Declare.
5188         (remove_free_INSN_LIST_NODE, remove_free_EXPR_LIST_node,
5189         debug_bb_n_slim, debug_bb_slim,    print_rtl_slim): Likewise.
5190         * vecprim.h: Add a vector type for unsigned int.
5191         * haifa-sched.c: Include vecprim.h and cfgloop.h.
5192         (issue_rate, sched_verbose_param, note_list, dfa_state_size,
5193         ready_try, cycle_issued_insns, spec_info): Make global.
5194         (readyp): Initialize.
5195         (dfa_lookahead): New global variable.
5196         (old_max_uid, old_last_basic_block): Remove.
5197         (h_i_d): Make it a vector.
5198         (INSN_TICK, INTER_TICK, QUEUE_INDEX, INSN_COST): Make them work
5199         through HID macro.
5200         (after_recovery, adding_bb_to_current_region_p):
5201         New variables to handle correct insertion of the recovery code.
5202         (struct ready_list): Move declaration to sched-int.h.
5203         (rgn_n_insns): Removed.
5204         (rtx_vec_t): Move to sched-int.h.
5205         (find_insn_reg_weight): Remove.
5206         (find_insn_reg_weight1): Rename to find_insn_reg_weight.
5207         (haifa_init_h_i_d, haifa_finish_h_i_d):
5208         New functions to initialize / finalize haifa instruction data.
5209         (extend_h_i_d, init_h_i_d): Rewrite.
5210         (unlink_other_notes): Move logic to add_to_note_list.  Handle
5211         selective scheduler.
5212         (ready_lastpos, ready_element, ready_sort, reemit_notes,
5213         find_fallthru_edge): Make global, remove static prototypes.
5214         (max_issue): Make global.  Add privileged_n and state parameters.  Use
5215         them.
5216         (extend_global, extend_all): Removed.
5217         (init_before_recovery): Add new param.  Fix the handling of the case
5218         when we insert a recovery code before the EXIT which has a predecessor
5219         with a fallthrough edge to it.
5220         (create_recovery_block): Make global.  Rename to
5221         sched_create_recovery_block.  Update.
5222         (change_pattern): Rename to sched_change_pattern.  Make global.
5223         (speculate_insn): Rename to sched_speculate_insn.  Make global.
5224         Split haifa-specific functionality into ...
5225         (haifa_change_pattern): New static function.
5226         (sched_extend_bb): New static function.
5227         (sched_init_bbs): New function.
5228         (current_sched_info): Change type to struct haifa_sched_info.
5229         (insn_cost): Adjust for selective scheduling.
5230         (dep_cost_1): New function.  Move logic from ...
5231         (dep_cost): ... here.
5232         (dep_cost): Use dep_cost_1.
5233         (contributes_to_priority_p): Use sched_deps_info instead of
5234         current_sched_info.
5235         (priority): Adjust to work with selective scheduling.  Process the
5236         corner case when all dependencies don't contribute to priority.
5237         (rank_for_schedule): Use ds_weak instead of dep_weak.
5238         (advance_state): New function.  Move logic from ...
5239         (advance_one_cycle): ... here.
5240         (add_to_note_list, concat_note_lists): New functions.
5241         (rm_other_notes): Make static.  Adjust for selective scheduling.
5242         (remove_notes, restore_other_notes): New functions.
5243         (move_insn): Add two arguments.  Update assert.  Don't call
5244         reemit_notes.
5245         (choose_ready): Remove lookahead variable, use dfa_lookahead.
5246         Remove more_issue, max_points.  Move the code to initialize
5247         max_lookahead_tries to max_issue.
5248         (schedule_block): Remove rgn_n_insns1 parameter.  Don't allocate
5249         ready.  Adjust use of move_insn.  Call restore_other_notes.
5250         (luid): Remove.
5251         (sched_init, sched_finish): Move Haifa-specific initialization/
5252         finalization to ...
5253         (haifa_sched_init, haifa_sched_finish): ... respectively.
5254         New functions.
5255         (setup_sched_dump): New function.
5256         (haifa_init_only_bb): New static function.
5257         (haifa_speculate_insn): New static function.
5258         (try_ready): Use haifa_* instead of speculate_insn and change_pattern.
5259         (extend_ready, extend_all): Remove.
5260         (sched_extend_ready_list, sched_finish_ready_list): New functions.
5261         (create_check_block_twin, add_to_speculative_block): Use
5262         haifa_insns_init instead of extend_global.  Update to use new
5263         initialization functions.  Change parameter.  Factor out code from
5264         create_check_block_twin to ...
5265         (sched_create_recovery_edges) ... this new function.
5266         (add_block): Remove.
5267         (sched_scan_info): New.
5268         (extend_bb): Use sched_scan_info.
5269         (init_bb, extend_insn, init_insn, init_insns_in_bb, sched_scan): New
5270         static functions for walking through scheduling region.
5271         (sched_luids): New vector variable to replace uid_to_luid.
5272         (luids_extend_insn): New function.
5273         (sched_max_luid): New variable.
5274         (luids_init_insn): New function.
5275         (sched_init_luids, sched_finish_luids): New functions.
5276         (insn_luid): New debug function.
5277         (sched_extend_target): New function.
5278         (haifa_init_insn): New static function.
5279         (sched_init_only_bb): New hook.
5280         (sched_split_block): New hook.
5281         (sched_split_block_1): New function.
5282         (sched_create_empty_bb): New hook.
5283         (sched_create_empty_bb_1): New function.
5284         (common_sched_info, ready): New global variables.
5285         (current_sched_info_var): Remove.
5286         (move_block_after_check): Use common_sched_info.
5287         (haifa_luid_for_non_insn): New static function.
5288         (init_before_recovery): Use haifa_init_only_bb instead of add_block.
5289         (increase_insn_priority): New.
5290         * modulo-sched.c: (issue_rate): Remove static declaration.
5291         (sms_sched_info): Change type to haifa_sched_info.
5292         (sms_sched_deps_info, sms_common_sched_info): New variables.
5293         (setup_sched_infos): New.
5294         (sms_schedule): Initialize them.  Call haifa_sched_init/finish.
5295         Do not call regstat_free_calls_crossed.
5296         (sms_print_insn): Use const_rtx.
5297         * params.def (PARAM_MAX_PIPELINE_REGION_BLOCKS,
5298         PARAM_MAX_PIPELINE_REGION_INSNS, PARAM_SELSCHED_MAX_LOOKAHEAD,
5299         PARAM_SELSCHED_MAX_SCHED_TIMES, PARAM_SELSCHED_INSNS_TO_RENAME,
5300         PARAM_SCHED_MEM_TRUE_DEP_COST): New.
5301         * sched-deps.c (sched_deps_info): New.  Update all relevant uses of
5302         current_sched_info to use it.
5303         (enum reg_pending_barrier_mode): Move to sched-int.h.
5304         (h_d_i_d): New variable. Initialize to NULL.
5305         ({true, output, anti, spec, forward}_dependency_cache): Initialize
5306         to NULL.
5307         (estimate_dep_weak): Remove static declaration.
5308         (sched_has_condition_p): New function.  Adjust users of
5309         sched_get_condition to use it instead.
5310         (conditions_mutex_p): Add arguments indicating which conditions are
5311         reversed.  Use them.
5312         (sched_get_condition_with_rev): Rename from sched_get_condition.  Add
5313         argument to indicate whether returned condition is reversed.  Do not
5314         generate new rtx when condition should be reversed; indicate it by
5315         setting new argument instead.
5316         (add_dependence_list_and_free): Add deps parameter.
5317         Update all users.  Do not free dependence list when
5318         deps context is readonly.
5319         (add_insn_mem_dependence, flush_pending_lists): Adjust for readonly
5320         contexts.
5321         (remove_from_dependence_list, remove_from_both_dependence_lists): New.
5322         (remove_from_deps): New. Use the above functions.
5323         (cur_insn, can_start_lhs_rhs_p): New static variables.
5324         (add_or_update_back_dep_1): Initialize present_dep_type.
5325         (haifa_start_insn, haifa_finish_insn, haifa_note_reg_set,
5326         haifa_note_reg_clobber, haifa_note_reg_use, haifa_note_mem_dep,
5327         haifa_note_dep): New functions implementing dependence hooks for
5328         the Haifa scheduler.
5329         (note_reg_use, note_reg_set, note_reg_clobber, note_mem_dep,
5330         note_dep): New functions.
5331         (ds_to_dt, extend_deps_reg_info, maybe_extend_reg_info_p): New
5332         functions.
5333         (init_deps): Initialize last_reg_pending_barrier and deps->readonly.
5334         (free_deps): Initialize deps->reg_last.
5335         (sched_analyze_reg, sched_analyze_1, sched_analyze_2,
5336         sched_analyze_insn): Update to use dependency hooks infrastructure
5337         and readonly contexts.
5338         (deps_analyze_insn): New function.  Move part of logic from ...
5339         (sched_analyze): ... here.  Also move some logic to ...
5340         (deps_start_bb): ... here.  New function.
5341         (add_forw_dep, delete_forw_dep): Guard use of INSN_DEP_COUNT with
5342         sel_sched_p.
5343         (sched_deps_init): New function.  Move code from ...
5344         (init_dependency_caches): ... here.  Remove.
5345         (init_deps_data_vector): New.
5346         (sched_deps_finish): New function.  Move code from ...
5347         (free_dependency_caches): ... here.  Remove.
5348         (init_deps_global, finish_deps_global): Adjust for use with
5349         selective scheduling.
5350         (get_dep_weak): Move logic to ...
5351         (get_dep_weak_1): New function.
5352         (ds_merge): Move logic to ...
5353         (ds_merge_1): New static function.
5354         (ds_full_merge, ds_max_merge, ds_get_speculation_types): New functions.
5355         (ds_get_max_dep_weak): New function.
5356         * sched-ebb.c (sched_n_insns): Rename to sched_rgn_n_insns.
5357         (n_insns): Rename to rgn_n_insns.
5358         (debug_ebb_dependencies): New function.
5359         (init_ready_list): Use it.
5360         (begin_schedule_ready): Use sched_init_only_bb.
5361         (ebb_print_insn): Indicate when an insn starts a new cycle.
5362         (contributes_to_priority, compute_jump_reg_dependencies,
5363         add_remove_insn, fix_recovery_cfg): Add ebb_ prefix to function names.
5364         (add_block1): Remove to ebb_add_block.
5365         (ebb_sched_deps_info, ebb_common_sched_info): New variables.
5366         (schedule_ebb): Initialize them.  Use remove_notes instead of
5367         rm_other_notes.  Use haifa_local_init/finish.
5368         (schedule_ebbs): Use haifa_sched_init/finish.
5369         * sched-int.h: Include vecprim.h, remove rtl.h.
5370         (struct ready_list): Delete declaration.
5371         (sched_verbose_param, enum sched_pass_id_t,
5372         bb_vec_t, insn_vec_t, rtx_vec_t): New.
5373         (struct sched_scan_info_def): New structure.
5374         (sched_scan_info, sched_scan, sched_init_bbs,
5375         sched_init_luids, sched_finish_luids, sched_extend_target,
5376         haifa_init_h_i_d, haifa_finish_h_i_d): Declare.
5377         (struct common_sched_info_def): New.
5378         (common_sched_info, haifa_common_sched_info,
5379         sched_emulate_haifa_p): Declare.
5380         (sel_sched_p): New.
5381         (sched_luids): Declare.
5382         (INSN_LUID, LUID_BY_UID, SET_INSN_LUID): Declare.
5383         (sched_max_luid, insn_luid): Declare.
5384         (note_list, remove_notes, restore_other_notes, bb_note): Declare.
5385         (sched_insns_init, sched_insns_finish, xrecalloc, reemit_notes,
5386         print_insn, print_pattern, print_value, haifa_classify_insn,
5387         sel_find_rgns, sel_mark_hard_insn, dfa_state_size, advance_state,
5388         setup_sched_dump, sched_init, sched_finish,
5389         sel_insn_is_speculation_check): Export.
5390         (struct ready_list): Move from haifa-sched.c.
5391         (ready_try, ready, max_issue): Export.
5392         (ebb_compute_jump_reg_dependencies, find_fallthru_edge,
5393         sched_init_only_bb, sched_split_block, sched_split_block_1,
5394         sched_create_empty_bb, sched_create_empty_bb_1,
5395         sched_create_recovery_block, sched_create_recovery_edges): Export.
5396         (enum reg_pending_barrier_mode): Export.
5397         (struct deps): New fields `last_reg_pending_barrier' and `readonly'.
5398         (deps_t): New.
5399         (struct sched_info): Rename to haifa_sched_info.  Use const_rtx for
5400         print_insn field.  Move add_block and fix_recovery_cfg to
5401         common_sched_info_def.  Move compute_jump_reg_dependencies,
5402         use_cselib  ...
5403         (struct sched_deps_info_def): ... this new structure.
5404         (sched_deps_info): Declare.
5405         (struct spec_info_def): Remove weakness_cutoff, add
5406         data_weakness_cutoff and control_weakness_cutoff.
5407         (spec_info): Declare.
5408         (struct _haifa_deps_insn_data): Split from haifa_insn_data.  Add
5409         dep_count field.
5410         (struct haifa_insn_data): Rename to struct _haifa_insn_data.
5411         (haifa_insn_data_def, haifa_insn_data_t): New typedefs.
5412         (current_sched_info): Change type to struct haifa_sched_info.
5413         (haifa_deps_insn_data_def, haifa_deps_insn_data_t): New typedefs.
5414         (h_d_i_d): New variable.
5415         (HDID): New accessor macro.
5416         (h_i_d): Change type to VEC (haifa_insn_data_def, heap) *.
5417         (HID): New accessor macro.  Rewrite h_i_d accessor macros through HID
5418         and HDID.
5419         (IS_SPECULATION_CHECK_P): Update for selective scheduler.
5420         (enum SCHED_FLAGS): Update for selective scheduler.
5421         (enum SPEC_SCHED_FLAGS): New flag SEL_SCHED_SPEC_DONT_CHECK_CONTROL.
5422         (init_dependency_caches, free_dependency_caches): Delete declarations.
5423         (deps_analyze_insn, remove_from_deps, get_dep_weak_1,
5424         estimate_dep_weak, ds_full_merge, ds_max_merge, ds_weak,
5425         ds_get_speculation_types, ds_get_max_dep_weak, sched_deps_init,
5426         sched_deps_finish, haifa_note_reg_set, haifa_note_reg_use,
5427         haifa_note_reg_clobber, maybe_extend_reg_info_p, deps_start_bb,
5428         ds_to_dt): Export.
5429         (rm_other_notes): Delete declaration.
5430         (schedule_block): Remove one argument.
5431         (cycle_issued_insns, issue_rate, dfa_lookahead, ready_sort,
5432         ready_element, ready_lastpos, sched_extend_ready_list,
5433         sched_finish_ready_list, sched_change_pattern, sched_speculate_insn,
5434         concat_note_lists): Export.
5435         (struct region): Move from sched-rgn.h.
5436         (nr_regions, rgn_table, rgn_bb_table, block_to_bb, containing_rgn,
5437         RGN_NR_BLOCKS, RGN_BLOCKS, RGN_DONT_CALC_DEPS, RGN_HAS_REAL_EBB,
5438         BLOCK_TO_BB, CONTAINING_RGN): Export.
5439         (ebb_head, BB_TO_BLOCK, EBB_FIRST_BB, EBB_LAST_BB, INSN_BB): Likewise.
5440         (current_nr_blocks, current_blocks, target_bb): Likewise.
5441         (dep_cost_1, sched_is_disabled_for_current_region_p, sched_rgn_init,
5442         sched_rgn_finish, rgn_setup_region, sched_rgn_compute_dependencies,
5443         sched_rgn_local_init, extend_regions,
5444         rgn_make_new_region_out_of_new_block, compute_priorities,
5445         debug_rgn_dependencies, free_rgn_deps, contributes_to_priority,
5446         extend_rgns, deps_join rgn_setup_common_sched_info,
5447         rgn_setup_sched_infos, debug_regions, debug_region, dump_region_dot,
5448         dump_region_dot_file, haifa_sched_init, haifa_sched_finish): Export.
5449         (get_rgn_sched_max_insns_priority, sel_add_to_insn_priority,
5450         increase_insn_priority): Likewise.
5451         * sched-rgn.c: Include sel-sched.h.
5452         (ref_counts): New static variable.  Use it ...
5453         (INSN_REF_COUNT): ... here.  Rewrite and move closer to uses.
5454         (FED_BY_SPEC_LOAD, IS_LOAD_INSN): Rewrite to use HID accessor macro.
5455         (sched_is_disabled_for_current_region_p): Delete static declaration.
5456         (struct region): Move to sched-int.h.
5457         (nr_regions, rgn_table, rgn_bb_table, block_to_bb, containing_rgn,
5458         ebb_head): Define and initialize.
5459         (RGN_NR_BLOCKS, RGN_BLOCKS, RGN_DONT_CALC_DEPS, RGN_HAS_REAL_EBB,
5460         BLOCK_TO_BB, CONTAINING_RGN, debug_regions, extend_regions,
5461         BB_TO_BLOCK, EBB_FIRST_BB, EBB_LAST_BB): Move to
5462         sched-int.h.
5463         (find_single_block_region): Add new argument to indicate that EBB
5464         regions should be constructed.
5465         (debug_live): Delete declaration.
5466         (current_nr_blocks, current_blocks, target_bb):
5467         Remove static qualifiers.
5468         (compute_dom_prob_ps, check_live, update_live, set_spec_fed): Delete
5469         declaration.
5470         (init_regions): Delete declaration.
5471         (debug_region, bb_in_region_p, dump_region_dot_file, dump_region_dot,
5472         rgn_estimate_number_of_insns): New.
5473         (too_large): Use estimate_number_of_insns.
5474         (haifa_find_rgns): New. Move the code from ...
5475         (find_rgns): ... here.  Call either sel_find_rgns or haifa_find_rgns.
5476         (free_trg_info): New.
5477         (compute_trg_info): Allocate candidate tables here instead of ...
5478         (init_ready_list): ... here.
5479         (rgn_print_insn): Use const_rtx.
5480         (contributes_to_priority, extend_regions): Delete static declaration.
5481         (add_remove_insn, fix_recovery_cfg): Add rgn_ to function names.
5482         (add_block1): Rename to rgn_add_block.
5483         (debug_rgn_dependencies): Delete static qualifier.
5484         (new_ready): Use sched_deps_info.  Simplify.
5485         (rgn_common_sched_info, rgn_const_sched_deps_info,
5486         rgn_const_sel_sched_deps_info, rgn_sched_deps_info, rgn_sched_info):
5487         New.
5488         (region_sched_info): Rename to rgn_const_sched_info.
5489         (deps_join): New, extracted from ...
5490         (propagate_deps): ... here.
5491         (compute_block_dependences, debug_dependencies): Update for selective
5492         scheduling.
5493         (free_rgn_deps, compute_priorities): New functions.
5494         (sched_rgn_init, sched_rgn_finish, rgn_setup_region,
5495         sched_rgn_compute_dependencies): New functions.
5496         (schedule_region): Use them.
5497         (sched_rgn_local_init, sched_rgn_local_free, sched_rgn_local_finish,
5498         rgn_setup_common_sched_info, rgn_setup_sched_infos):
5499         New functions.
5500         (schedule_insns): Call new functions that were split out.
5501         (rgn_make_new_region_out_of_new_block): New.
5502         (get_rgn_sched_max_insns_priority): New.
5503         (rest_of_handle_sched, rest_of_handle_sched2): Call selective
5504         scheduling when appropriate.
5505         * sched-vis.c: Include insn-attr.h.
5506         (print_value, print_pattern): Make global.
5507         (print_rtl_slim, debug_bb_slim, debug_bb_n_slim): New functions.
5508         * target-def.h (TARGET_SCHED_ADJUST_COST_2,
5509         TARGET_SCHED_ALLOC_SCHED_CONTEXT, TARGET_SCHED_INIT_SCHED_CONTEXT,
5510         TARGET_SCHED_SET_SCHED_CONTEXT, TARGET_SCHED_CLEAR_SCHED_CONTEXT,
5511         TARGET_SCHED_FREE_SCHED_CONTEXT, TARGET_SCHED_GET_INSN_CHECKED_DS,
5512         TARGET_SCHED_GET_INSN_SPEC_DS, TARGET_SCHED_SKIP_RTX_P): New target
5513         hooks.  Initialize them to 0.
5514         (TARGET_SCHED_GEN_CHECK): Rename to TARGET_SCHED_GEN_SPEC_CHECK.
5515         * target.h (struct gcc_target): Add them.  Rename gen_check field to
5516         gen_spec_check.
5517         * flags.h (sel_sched_switch_set): Declare.
5518         * opts.c (sel_sched_switch_set): New variable.
5519         (decode_options): Unset flag_sel_sched_pipelining_outer_loops if
5520         pipelining is disabled from command line.
5521         (common_handle_option): Record whether selective scheduling is
5522         requested from command line.
5523         * doc/invoke.texi: Document new flags and parameters.
5524         * doc/tm.texi: Document new target hooks.
5525         * config/ia64/ia64.c (TARGET_SCHED_GEN_SPEC_CHECK): Define to
5526         ia64_gen_check.
5527         (dfa_state_size): Do not declare locally.
5528         * config/ia64/ia64.opt (msched-ar-data-spec): Default to 0.
5529         * config/rs6000/rs6000.c (rs6000_init_sched_context,
5530         rs6000_alloc_sched_context, rs6000_set_sched_context,
5531         rs6000_free_sched_context): New functions.
5532         (struct _rs6000_sched_context): New.
5533         (rs6000_sched_reorder2): Do not modify INSN_PRIORITY for selective
5534         scheduling.
5535         (rs6000_sched_finish): Do not run for selective scheduling.
5536
5537 2008-08-31  Jan Hubicka  <jh@suse.cz>
5538
5539         * frv.c (frv_rtx_costs): Update forward declaration.
5540         * spu.c (spu_rtx_costs): Likewise.
5541         * pdp11.c: Include df.h
5542         (pdp11_output_function_epilogue): Use df_set_regs_ever_live.
5543         * m68hc11.c (m68hc11_gen_highpart): Fix call of gen_rtx_SUBREG.
5544         (m68hc11_rtx_costs_1): Fix call of rtx_cost.
5545         * iq2000.c (iq2000_address_cost): Add speed argument.
5546         (iq2000_rtx_costs): Likewise.
5547         * mn10300.c (mn10300_address_cost_1): Remove speed argument;
5548         update call of mn10300_address_cost.
5549         * mcore.c: Include df.h
5550         (mcore_rtx_costs): Update prototype.
5551         * score3.c: Include df.h
5552         (score3_rtx_costs): Remove speed argument.
5553         * score7.c: Include df.h
5554         (score7_address_cost): Remove speed argument.
5555         * score-protos.h (score_address_cost): Update prototype.
5556         * score.c: Include df.h
5557         (score_rtx_costs): Update call of costs functions.
5558         * v850.c (v850_rtx_costs): Add bool argument.
5559
5560 2008-08-31  Hans-Peter Nilsson  <hp@axis.com>
5561
5562         * config/cris/cris.c (cris_rtx_costs): Correct call to rtx_costs.
5563
5564 2008-08-31  Aaron W. LaFramboise  <aaronavay62@aaronwl.com>
5565
5566         * gthr-win32.h (__gthread_setspecific): Use CONST_CAST2.
5567         * config/i386/gthr-win32.c (__gthread_setspecific): Same.
5568
5569 2008-08-31  Aaron W. LaFramboise  <aaronavay62@aaronwl.com>
5570
5571         * mkmap-flat.awk: Add option pe_dll.
5572         * config/i386/t-cygming (SHLIB_LINK): Support building libgcc_s.
5573         * config/i386/t-cygwin (SHLIB_LC): Add.
5574         * config/i386/t-mingw32 (SHLIB_LC): Add.
5575         * config/i386/mingw32.h (SHARED_LIBGCC_UNDEFS_SPEC): New.
5576         (SUBTARGET_EXTRA_SPECS): Use SHARED_LIBGCC_UNDEFS_SPEC.
5577         (LINK_SPEC): Support libgcc_s.
5578         (LIBGCC_SPEC): Support libgcc_s.
5579         (LIBGCC_SONAME): New.
5580
5581 2008-08-31  Jan Hubicka  <jh@suse.cz>
5582
5583         * predict.c (maybe_hot_bb_p, maybe_hot_edge_p): Previous commit
5584         mistakely had old version of patch.
5585
5586         * ipa-cp.c (ipcp_need_original_clone_p): Remove.
5587         (ipcp_estimate_growth): New.
5588         (ipcp_insert_stage): Use ipcp_estimate_growth.
5589         * profile.c (branch_prob): When reading failed, do not consider
5590         profile as read.
5591
5592 2008-08-31  Jan Hubicka  <jh@suse.cz>
5593
5594         * tree-ssa-loop-unswitch.c (tree_unswitch_single_loop): Check that
5595         loop is optimized for speed.
5596
5597 2008-08-31  Richard Guenther  <rguenther@suse.de>
5598
5599         PR middle-end/37289
5600         * fold-const.c (fold_binary): Retain conversions in folding
5601         ~A + 1 to -A.
5602
5603 2008-08-31  Jan Hubicka  <jh@suse.cz>
5604
5605         * postreload-gcse.c (eliminate_partially_redundant_loads):
5606         Use optimize_bb_for_size_p.
5607         * predict.c (maybe_hot_frequency_p): Make inline.
5608         (maybe_hot_count_p): Break out from ...
5609         (maybe_hot_bb_p): ... this one.
5610         (maybe_hot_edge_p): Simplify.
5611         * basic-block.h (probably_cold_bb_p): Remove.
5612
5613 2008-08-31  Jakub Jelinek  <jakub@redhat.com>
5614
5615         PR target/37168
5616         * config/rs6000/rs6000-protos.h (const_vector_elt_as_int): Add
5617         prototype.
5618         * config/rs6000/rs6000.c (const_vector_elt_as_int): No longer static.
5619         * config/rs6000/altivec.md (easy_vector_constant_add_self splitter):
5620         Also split V4SFmode.
5621         * config/rs6000/predicates.md (easy_vector_constant_add_self): Handle
5622         vector float modes.
5623
5624 2008-08-31  Jan Hubicka  <jh@suse.cz>
5625
5626         * predict.c (PROB_VERY_LIKELY): Make small enough so things
5627         become cold.
5628         * predict.def (PRED_NORETURN_CALL, PRED_COLD_CALL): Use it.
5629
5630 2008-08-31  Jakub Jelinek  <jakub@redhat.com>
5631
5632         PR debug/37287
5633         * dwarf2out.c (gen_namespace_die): For DECL_EXTERNAL modules don't
5634         add source coords.
5635
5636         * dwarf2out.c (native_encode_initializer): Subtract min_index for
5637         non-range array index.  Handle VIEW_CONVERT_EXPR and NON_LVALUE_EXPR.
5638
5639 2008-08-31  Jan Hubicka  <jh@suse.cz>
5640
5641         * sparc.h (BRANCH_COST): Fix macro definition.
5642         * avr.c (avr_operand_rtx_cost): Add speed argument.
5643         (avr_rtx_costs): Update calls of avr_operand_rtx_cost.
5644
5645 2008-08-31  Richard Guenther  <rguenther@suse.de>
5646
5647         * tree-cfg.c (verify_types_in_gimple_assign): Dump mismatched
5648         types instead of operands.  Re-instantiate verifying of
5649         binary expression operands.
5650
5651 2008-08-30  Jan Hubicka  <jh@suse.cz>
5652
5653         * fwprop.c (should_replace_address): Add speed attribute.
5654         (PR_OPTIMIZE_FOR_SPEED): New flag.
5655         (propagate_rtx_1): Use it.
5656         (propagate_rtx): Set it.
5657         (try_fwprop_subst): Update call of rtx_costs.
5658         (forward_propagate_and_simplify): LIkewise.
5659         * hooks.c (hook_int_rtx_bool_0): New
5660         (hook_bool_rtx_int_int_intp_false): Replace by ...
5661         (hook_bool_rtx_int_int_intp_bool_false): .. thisone.
5662         * hooks.h (hook_int_rtx_bool_0): New
5663         (hook_bool_rtx_int_int_intp_false): Replace by ...
5664         (hook_bool_rtx_int_int_intp_bool_false): .. thisone.
5665         * optabs.c (avoid_expensive_constant): UPdate call of rtx_cost.
5666         (prepare_cmp_insn): UPdate call of rtx_cost.
5667         * postreload.c (reload_cse_simplify_set): Update call of rtx_cost.
5668         (reload_cse_simplify_operands): Update call of rtx_cost.
5669         (reload_cse_move2add): call of rtx_cost.
5670         * target.h (struct gcc_target): Update rtx_costs and address_costs.
5671         * rtlanal.c (rtx_cost): Add speed argument.
5672         (address_cost): Add speed argument
5673         (default_address_cost): Likewise.
5674         (insn_rtx_cost): Likewise.
5675         * cfgloopanal.c (seq_cost): Add speed argument.
5676         (target_reg_cost, target_spill_cost): Turn to array.
5677         (init_set_costs): Update for speed.
5678         (estimate_reg_pressure_cost): Add speed argument.
5679         * auto-inc-dec.c (attempt_change): Update call of rtx_cost.
5680         * dojump.c (prefer_and_bit_test): UPdate call of rtx_cost.
5681         * tree-ssa-loop-ivopts.c (struct ivopts_data): New field speed.
5682         (seq_cost): Add speed argument.
5683         (computation_cost): Add speed arugment.
5684         (add_cost, multiply_by_const, get_address_cost): add speed argument.
5685         (force_expr_to_var_cost): Update for profile info.
5686         (force_var_cost): Likewise.
5687         (split_address_cost): Likewise.
5688         (ptr_difference_cost): Likewise.
5689         (difference_cost): Likewise.
5690         (get_computation_cost_at): Likewise.
5691         (determine_iv_cost): Likewise.
5692         (ivopts_global_cost_for_size): Likewise.
5693         (rewrite_use_address): Likewise.
5694         (tree_ssa_iv_optimize_loop): Initialize speed field.
5695         * cse.c (optimize_this_for_speed_p): New static var.
5696         (notreg_cost): Update call of rtx_cost.
5697         (cse_extended_basic_block): set optimize_this_for_speed_p.
5698         * ifcvt.c (cheap_bb_rtx_cost_p): Update call of rtx_cost.
5699         (noce_try_cmove_arith): Likewise.
5700         (noce_try_sign_mask): LIkewise.
5701         * expr.c (compress_float_constant): Update rtx_cost calls.
5702         * tree-ssa-address.c (most_expensive_mult_to_index): Add speed
5703         argument.
5704         (addr_to_parts): Likewise.
5705         (create_mem_ref): Likewise.
5706         * dse.c (find_shift_sequence): Add speed argument.
5707         (replace_read): Update call.
5708         * calls.c (precompute_register_parameters): Update call of rtx_cost.
5709         * expmed.c (sdiv_pow2_cheap, smod_pow2_cheap, zero_cost, add_cost,
5710         * neg_cost, shift_cost, shiftadd_cost,
5711         shiftsub_cost, mul_cost, sdiv_cost, udiv_cost ,mul_widen_cost,
5712         mul_highpart_cost): Increase dimension.
5713         (init_expmed): Initialize for both size and speed.
5714         (expand_shift): Use profile.
5715         (synth_mult): Use profile.
5716         (choose_mult_variant): Use profile.
5717         (expand_mult): Use profile.
5718         (expand_mult_highpart_optab): Use profile.
5719         (expand_mult_highpart): Use profile.
5720         (expand_smod_pow2): Use profile.
5721         (expand_divmod): Use profile.
5722         * simplify-rtx.c (simplify_binary_operation_1): Update call of
5723         rtx_cost.
5724         * loop-invariant.c (create_new_invariant): Use profile.
5725         (gain_for_invariant): Add speed parameter.
5726         (best_gain_for_invariant): Likewise.
5727         (find_invariants_to_move): Likewise.
5728         (move_single_loop_invariants): Set it.
5729         * target-def.h (TARGET_RTX_COSTS): Use hook.
5730         * rtl.h (rtx_cost, address_cost, insn_rtx_cost): Update prototpe.
5731         (optimize_insn_for_size_p, optimize_insn_for_speed_p): Declare.
5732         * output.h (default_address_cost): Update prototype.
5733         * combine.c (optimize_this_for_speed_p): New static var.
5734         (combine_validate_cost): Update call of rtx_cost.
5735         (combine_instructions): Set optimize_this_for_speed_p.
5736         (expand_compound_operation): Update call of rtx_cost.
5737         (make_extraction):Update call of rtx_cost.
5738         (force_to_mode):Update call of rtx_cost.
5739         (distribute_and_simplify_rtx):Update call of rtx_cost.
5740         * cfgloop.h (target_reg_cost, target_spill_cost): Turn to array.
5741         (estimate_reg_pressure_cost): Update prototype.
5742         * tree-flow.h (multiply_by_cost, create_mem_ref): Update prototype.
5743         * basic-block.h (optimize_insn_for_size_p, optimize_insn_for_speed_p):
5744         Remove.
5745         * config/alpha/alpha.c (alpha_rtx_costs): Update.
5746         (alpha_rtx_costs): Update.
5747         * config/frv/frv.c (frv_rtx_costs): Update.
5748         * config/s390/s390.c (s390_rtx_costs): Update.
5749         * config/m32c/m32c.c (m32c_memory_move_cost): Update.
5750         (m32c_rtx_costs): Update.
5751         * config/spu/spu.c (TARGET_ADDRESS_COST): Upate.
5752         (spu_rtx_costs): Update.
5753         * config/sparc/sparc.c (sparc_rtx_costs): Update.
5754         * config/m32r/m32r.c (m32r_rtx_costs): Update.
5755         * config/i386/i386.c (:ix86_address_cost): Update.
5756         (ix86_rtx_costs): Update.
5757         * config/sh/sh.c (sh_rtx_costs, sh_address_cost): Update.
5758         * config/pdp11/pdp11.c (pdp11_rtx_costs): Update.
5759         * config/avr/avr.c (avr_rtx_costs, avr_address_cost): Update.
5760         * config/crx/crx.c (crx_address_cost): Update.
5761         * config/xtensa/xtensa.c (xtensa_rtx_costs): Update.
5762         * config/stormy16/stormy16.c
5763         (xstormy16_address_cost, xstormy16_rtx_costs): Update.
5764         * config/m68hc11/m68hc11.c
5765         (m68hc11_address_cost, m68hc11_rtx_costs): Update.
5766         * config/cris/cris.c (cris_rtx_costs, cris_address_cost): Update.
5767         * config/iq2000/iq2000.c (iq2000_rtx_costs, iq2000_address_cost):
5768         Update.
5769         * config/mn10300/mn10300.c (mn10300_address_cost, mn10300_rtx_costs):
5770         Update
5771         * config/ia64/ia64.c (ia64_rtx_costs): Update.
5772         * config/m68k/m68k.c (m68k_rtx_costs): Update.
5773         * config/rs6000/rs6000.c (rs6000_rtx_costs): Update.
5774         * config/arc/arc.c (arc_rtx_costs, arc_address_cost): Update.
5775         * config/mcore/mcore.c (TARGET_ADDRESS_COST): Update.
5776         (mcore_rtx_costs): update.
5777         * config/score/score3.c (score3_rtx_costs): Update.
5778         * config/score/score7.c (score7_rtx_costs): Update.
5779         * config/score/score3.h (score3_rtx_costs):Update.
5780         * config/score/score7.h (score7_rtx_costs): Update.
5781         * config/score/score.c (score_rtx_costs): Update.
5782         * config/arm/arm.c (arm_address_cost): Update.
5783         (arm_rtx_costs_1): Update.
5784         (arm_rtx_costs_1): Update.
5785         (arm_size_rtx_costs): Update.
5786         (arm_size_rtx_costs): Update.
5787         (arm_size_rtx_costs): Update.
5788         (arm_xscale_rtx_costs): Update.
5789         (arm_thumb_address_cost): Update.
5790         * config/pa/pa.c (hppa_address_cost): Update.
5791         * config/mips/mips.c (mips_rtx_costs): Update.
5792         * config/vax/vax.c (vax_address_cost): Update.
5793         * config/h8300/h8300.c (h8300_shift_costs): Update.
5794         (h8300_rtx_costs): Update.
5795         * config/v850/v850.c (TARGET_ADDRESS_COST): Update.
5796         (v850_rtx_costs): Update.
5797         * config/mmix/mmix.c (mmix_rtx_costs, mmix_rtx_costs): Update.
5798         * config/bfin/bfin.c
5799         (bfin_address_cost): Update.
5800         (bfin_rtx_costs): Update.
5801         * stmt.c (lshift_cheap_p): Update.
5802
5803 2008-08-30  Andrew Pinski  <andrew_pinski@playstation.sony.com>
5804
5805         PR middle-end/36444
5806         * expmed.c (extract_bit_field_1): Check the mode size to make
5807         sure the vector modes have the same size.
5808
5809 2008-08-29  Michael Meissner  <gnu@the-meissners.org>
5810
5811         * dojump.c (top level): Include basic-block.h to declare
5812         optimize_insn_for_speed_p
5813
5814         * Makefile.in (dodump.h): Add $(BASIC_BLOCK_H) dependency.
5815
5816         * opts.h (CL_SAVE): New option class for marking options that are
5817         target specific options usable in the target attribute.
5818         (CL_MIN_OPTION_CLASS): CL_SAVE is now the minimum option.
5819
5820         * opt-functions.awk (switch_flags): Add CL_SAVE flag so backends
5821         can easily find the target specific options that are safe to use
5822         in the attribute or pragma.
5823
5824         * attribs.c (decl_attributes): Change #pragma GCC option to
5825         #pragma GCC target, and attribute((option(...))) to
5826         attribute((target(...))).
5827
5828         * doc/extend.texi (target attribute): Change from option
5829         attribute.  Delete push/pop/reset.
5830         (#pragma GCC target): Change from #pragma GCC option.  Delete
5831         push/pop/reset.
5832         (#pragma GCC push_options): Document new pragma.
5833         (#pragma GCC pop_options): Document new pragma.
5834         (#pragma GCC reset_options): Document new pragma.
5835
5836         * targhooks.c (default_target_option_valid_attribute_p): Add
5837         warning about port not supporting target attributes.
5838         (default_target_option_pragma_parse): New function, warn about
5839         #pragma GCC target not being supported.
5840
5841         * targhooks.h (default_target_option_pragma_parse): Add
5842         declaration.
5843
5844         * tree.h (TI_CURRENT_TARGET_PRAGMA): Rename from
5845         TI_CURRENT_OPTION_PRAGMA.
5846         (current_target_pragma): Rename from current_option_pragma.
5847
5848         * target.h: (struct target_option): Delete booleans for changing
5849         the optimization level on hot/cold functions.  Change signature of
5850         pragma_parse hook to take a second tree.
5851
5852         * c-tree.h (c_builtin_function_ext_scope): Add declaration.
5853
5854         * c-decl.c (c_builtin_function_ext_scope): New function, guarantee
5855         that the declaration is done at global scope.
5856
5857         * langhooks.c (add_builtin_function_common): Move most of the code
5858         from add_builtin_function here, calling the hook passed in.
5859         (add_builtin_function): Call add_builtin_function_common with
5860         standard builtin hook.
5861         (add_builtin_function_ext_scope): New function to add builtins to
5862         global scope.
5863
5864         * langhooks.h (struct lang_hooks): Add builtin_function_ext_scope
5865         hook.
5866         (add_builtin_function_ext_scope): Add declaration.
5867
5868         * c-pragma.c (handle_pragma_target): Rename from
5869         handle_pragma_option, #pragma GCC option is now #pragma GCC
5870         target.  Move warning about port not supporting target options to
5871         default pragma parse hook.  Remove push/pop/reset from this
5872         pragma.
5873         (handle_pragma_optimize): Remove push/pop/reset from this pragma.
5874         (option_stack): Delete static variable.
5875         (optimize_stack): Ditto.
5876         (optons_stack): New stack of saved target and optimization
5877         options.
5878         (handle_pragma_push_options): New function to handle pushing both
5879         target and optimization options.
5880         (handle_pragma_pop_options): New function to handle popping both
5881         target and optimization options.
5882         (handle_pragma_reset_options): New function to handle resetting
5883         both target and optimization options to their initial state.
5884         (init_pragma): Rename handle_pragma_option to
5885         handle_pragma_target.  Add support for push_options, pop_options,
5886         and reset_options pragmas.
5887
5888         * target-def.h (TARGET_OPTION_PRAGMA_PARSE): Change default to
5889         default_target_option_pragma_parse.
5890         (TARGET_OPTION_VALID_ATTRIBUTE_P): Change default to
5891         default_target_option_valid_attribute_p.
5892         (TARGET_OPTION_COLD_ATTRIBUTE_SETS_OPTIMIZATION): Delete.
5893         (TARGET_OPTION_HOT_ATTRIBUTE_SETS_OPTIMIZATION): Ditto.
5894         (TARGET_OPTION_HOOKS): Delete the fields for whether to change
5895         optimization level on hot/cold functions.
5896
5897         * tree-inline.c (tree_can_inline_p): Disable suppressing inlining
5898         if the caller and callee have different optimization levels.
5899
5900         * c-common.c (handle_target_attribute): Rename from
5901         handle_option_attribute, attribute((option(...))) is now
5902         attribute((target(...))).  Move warning if the port does not
5903         support target attributes to the default hook.
5904         (handle_hot_attribute): Delete code to change the optimization
5905         level of hot functions.
5906         (handle_cold_attribute): Ditto.
5907
5908         * config/i386/i386-c.c (ix86_pragma_target_parse): Take a second
5909         argument that is the binary tree options to use if there are no
5910         arguments.  Call ix86_valid_target_attribute_tree instead of
5911         ix86_valid_option_attribute_tree.
5912         (ix86_pragma_target_parse): Rename from ix86_pragma_option_parse.
5913         (ix86_register_pragmas): Use ix86_pragma_target_parse instead of
5914         ix86_pragma_option_parse.
5915
5916         * config/i386/i386-protos.h (ix86_valid_target_attribute_tree):
5917         Rename from ix86_valid_option_attribute_tree.
5918
5919         * config/i386/i386.c (ix86_add_new_builtins): New function to add
5920         new builtins when the ISA changes.
5921         (ix86_valid_target_attribute_tree): Rename from
5922         ix86_valid_option_attribute_tree.  Change callers.  If the
5923         function specified optimization options, use those as the starting
5924         point before setting up the target attributes.  If the
5925         optimization options were changed in the course of setting the
5926         target attributes, record the new optimization options.
5927         (ix86_valid_target_attribute_tree_inner_p): Rename from
5928         ix86_valid_option_attribute_tree_inner_p.  Change callers.  Call
5929         ix86_add_new_builtins if the ISA changed.
5930         (ix86_valid_target_attribute_p): Rename from
5931         ix86_valid_option_attribute_p.  Change callers.
5932         (enum ix86_builtins): Add IX86_BUILTIN_PCMOV to allow both
5933         __builtin_ia32_pcmov and __builtin_ia32_pcmov_v2di to be declared
5934         as delayed builtin functions.
5935         (struct builtin_isa): New structure to record builtin functions
5936         that should be delayed until the ISA for that function is used.
5937         (ix86_builtins_isa): Change from int to struct to track builtin
5938         functions we want to declare at some point.
5939         (def_builtin): If the front end can delay defining the builtin
5940         functions, don't create builtins for ISAs not part of the default
5941         options.
5942         (def_builtin_const): Ditto.
5943         (bdesc_multi_arg): Declare __builtin_ia32_pcmov and
5944         __builtin_ia32_pcmov_v2di to be different builtin functions.
5945         (ix86_expand_builtin): Changes due to ix86_builtins_isa now being
5946         a structure instead of an int.
5947         (TARGET_OPTION_VALID_ATTRIBUTE_P): Use
5948         ix86_valid_target_attribute_p, not ix86_valid_option_attribute_p.
5949         (TARGET_OPTION_COLD_ATTRIBUTE_SETS_OPTIMIZATION): Delete.
5950         (TARGET_OPTION_HOT_ATTRIBUTE_SETS_OPTIMIZATION): Ditto.
5951
5952         * config/ia64/ia64.h
5953         (TARGET_OPTION_COLD_ATTRIBUTE_SETS_OPTIMIZATION): Delete.
5954         (TARGET_OPTION_HOT_ATTRIBUTE_SETS_OPTIMIZATION): Ditto.
5955
5956         * langhooks-def.h (LANG_HOOKS_BUILTIN_FUNCTION_EXT_SCOPE): New
5957         hook, default to being the same as LANG_HOOKS_BUILTIN_FUNCTION.
5958         (LANG_HOOKS_INITIALIZER): Add
5959         LANG_HOOKS_BUILTIN_FUNCTION_EXT_SCOPE hook.
5960
5961 2008-08-30  Kaz Kojima  <kkojima@gcc.gnu.org>
5962
5963         PR target/37270
5964         * config/sh/sh.h (LEGITIMIZE_RELOAD_ADDRESS): Generate
5965         the reload address with the index register for SFmode
5966         access with a displacement.
5967
5968 2008-08-30  Jan Hubicka  <jh@suse.cz>
5969
5970         * optabs.c (expand_abs_nojump): Update BRANCH_COST call.
5971         * fold-cost.c (LOGICAL_OP_NON_SHORT_CIRCUIT, fold_truthop): Likewise.
5972         * dojump.c (do_jump): Likewise.
5973         * ifcvt.c (MAX_CONDITIONAL_EXECUTE): Likewise.
5974         (note-if_info): Add BRANCH_COST.
5975         (noce_try_store_flag_constants, noce_try_addcc,
5976         noce_try_store_flag_mask, noce_try_cmove_arith, noce_try_cmove_arith,
5977         noce_try_cmove_arith, noce_find_if_block, find_if_case_1,
5978         find_if_case_2): Use computed branch cost.
5979         * expr.h (BRANCH_COST): Update default.
5980         * predict.c (predictable_edge_p): New function.
5981         * expmed.c (expand_smod_pow2, expand_sdiv_pow2, emit_store_flag):
5982         Update BRANCH_COST call.
5983         * basic-block.h (predictable_edge_p): Declare.
5984         * config/alpha/alpha.h (BRANCH_COST): Update.
5985         * config/frv/frv.h (BRANCH_COST): Update.
5986         * config/s390/s390.h (BRANCH_COST): Update.
5987         * config/spu/spu.h (BRANCH_COST): Update.
5988         * config/sparc/sparc.h (BRANCH_COST): Update.
5989         * config/m32r/m32r.h (BRANCH_COST): Update.
5990         * config/i386/i386.h (BRANCH_COST): Update.
5991         * config/i386/i386.c (ix86_expand_int_movcc): Update use of
5992         BRANCH_COST.
5993         * config/sh/sh.h (BRANCH_COST): Update.
5994         * config/pdp11/pdp11.h (BRANCH_COST): Update.
5995         * config/avr/avr.h (BRANCH_COST): Update.
5996         * config/crx/crx.h (BRANCH_COST): Update.
5997         * config/xtensa/xtensa.h (BRANCH_COST): Update.
5998         * config/stormy16/stormy16.h (BRANCH_COST): Update.
5999         * config/m68hc11/m68hc11.h (BRANCH_COST): Update.
6000         * config/iq2000/iq2000.h (BRANCH_COST): Update.
6001         * config/ia64/ia64.h (BRANCH_COST): Update.
6002         * config/rs6000/rs6000.h (BRANCH_COST): Update.
6003         * config/arc/arc.h (BRANCH_COST): Update.
6004         * config/score/score.h (BRANCH_COST): Update.
6005         * config/arm/arm.h (BRANCH_COST): Update.
6006         * config/pa/pa.h (BRANCH_COST): Update.
6007         * config/mips/mips.h (BRANCH_COST): Update.
6008         * config/vax/vax.h (BRANCH_COST): Update.
6009         * config/h8300/h8300.h (BRANCH_COST): Update.
6010         * params.def (PARAM_PREDICTABLE_BRANCH_OUTCOME): New.
6011         * doc/invoke.texi (predictable-branch-cost-outcome): Document.
6012         * doc/tm.texi (BRANCH_COST): Update.
6013
6014 2008-08-30  Samuel Tardieu  <sam@rfc1149.net>
6015
6016         PR target/37283
6017         * config/arm/arm.c (arm_optimization_options): Set
6018         flag_section_anchors to 2 instead of 1 to distinguish it from
6019         -fsection-anchors given explicitely on the command line.
6020
6021 2008-08-30  Richard Sandiford  <rdsandiford@googlemail.com>
6022
6023         * recog.c (split_insn): Consider attaching a REG_EQUAL note to the
6024         final insn of a split.
6025
6026 2008-08-30  Jan Hubicka  <jh@suse.cz>
6027
6028         * postreload-gcse.c (gate_handle_gcse2): Disable for functions
6029         optimized for speed.
6030         * final.c (compute_alignments): Use optimize_bb_for_size_p.
6031         * tree-call-cdce.c (gate_call_cdce): Use optimize_function_for_speed_p.
6032         * opts.c (flag_predictive_commoning_set, flag_unswitch_loops_set,
6033         flag_gcse_after_reload_set): New static vars.
6034         (common_handle_option): Enable those flags for profile-use.
6035         (decode_options): Remove optimize_size flags that are handled
6036         on higher granuality.
6037         * tree-vectorizer.c (vectorize_loops): Use
6038         optimize_loop_nest_for_speed_p.
6039         * tree-ssa-pre.c (do_pre): Use optimize_function_for_speed_p.
6040         * tree-predcom.c (tree_predictive_commoning): Use
6041         optimize_loop_for_speed_p.
6042         * varasm.c (assemble_start_function): Use
6043         optimize_function_for_speed_p.
6044         * bb-reorder.c (rest_of_handle_reorder_blocks): Likewise.
6045         * predict.c (optimize_loop_for_speed_p): Fix walk.
6046
6047 2008-08-30  Jan Hubicka  <jh@suse.cz>
6048
6049         * ipa-inline.c (cgraph_estimate_growth): Discover self recursive
6050         functions.
6051         (cgraph_decide_inlining_of_small_function): Use edge->count to detect
6052         profile presence locally.
6053
6054 2008-08-29  Joseph Myers  <joseph@codesourcery.com>
6055
6056         PR bootstrap/37086
6057         * tree-vrp.c (find_switch_asserts): Make idx volatile for GCC
6058         versions before 4.0.
6059
6060 2008-08-29  Jan Hubicka  <jh@suse.cz>
6061
6062         * tree-inline.c (insert_init_stmt): Insert sequence even when
6063         not in SSA form.
6064
6065 2008-08-29  Jeff Law  <law@redhat.com>
6066
6067         * mn10300.c (mn10300_secondary_reload_class): We need secondary
6068         reloads for AM33-2 if IN is a pseudo with an equivalent memory
6069         location and class is an FP register.
6070
6071 2008-08-29  Jan Hubicka  <jh@suse.cz>
6072
6073         * see.c (see_merge_one_def_extension): Silence used uninitialized
6074         warning.
6075         * matrix-reorg.c (check_allocation_function): Likewise.
6076         * config/i386/driver-i386.c (detect_caches_amd): Likewise.
6077
6078 2008-08-29  Jakub Jelinek  <jakub@redhat.com>
6079
6080         PR c/37261
6081         * fold-const.c (fold_binary): In (X | C1) & C2 canonicalization
6082         compute new & and | in type rather than TREE_TYPE (arg0).
6083
6084         * dwarf2out.c (fortran_common): Update comment.
6085         (gen_variable_die): Swap com_die and var_die variables in Fortran
6086         COMMON block handling code.
6087
6088         * dwarf2out.c (descr_info_loc): Handle VAR_DECL.
6089
6090         * dwarf2out.c (gen_const_die): New function.
6091         (size_of_die, value_format, output_die): Output larger
6092         dw_val_class_vec using DW_FORM_block2 or DW_FORM_block4.
6093         (native_encode_initializer): New function.
6094         (tree_add_const_value_attribute): Call it.
6095         (gen_decl_die, dwarf2out_decl): Handle CONST_DECLs if is_fortran ().
6096
6097         * dwarf2out.c (gen_formal_parameter_die, gen_variable_die): For
6098         DECL_BY_REFERENCE decls don't pass TREE_READONLY and
6099         TREE_THIS_VOLATILE to add_type_attribute.
6100
6101         * dwarf2out.c (add_subscript_info): Stop on Fortran TYPE_STRING_FLAG
6102         types.
6103         (gen_array_type_die): Emit DW_TAG_string_type for Fortran character
6104         types.
6105
6106         * dwarf2out.c (loc_by_reference): New function.
6107         (add_location_or_const_value_attribute): Use it.
6108
6109         PR fortran/23057
6110         * dwarf2out.c (gen_variable_die): Represent Fortran COMMON vars
6111         as DW_TAG_variable children of DW_TAG_common_block rather than
6112         DW_TAG_member children.  Put DW_AT_external to individual
6113         DW_TAG_variable DIEs, not to DW_TAG_common_block.
6114
6115         * dwarf2out.c (add_bound_info): If lookup_decl_die failed, try
6116         loc_descriptor_from_tree_1.
6117
6118         PR fortran/29635
6119         PR fortran/23057
6120         * debug.h (struct gcc_debug_hooks): Add NAME and CHILD
6121         arguments to imported_module_or_decl.
6122         (debug_nothing_tree_tree): Removed.
6123         (debug_nothing_tree_tree_tree_bool): New prototype.
6124         * debug.c (do_nothing_debug_hooks): Adjust.
6125         (debug_nothing_tree_tree): Removed.
6126         (debug_nothing_tree_tree_tree_bool): New function.
6127         * dwarf2out.c (is_symbol_die): Handle DW_TAG_module.
6128         (gen_variable_die): Put all common vars for the
6129         same COMMON block under one DW_TAG_common_block.
6130         (declare_in_namespace): Return new context_die, for Fortran
6131         return the module DIE instead of adding extra declarations into
6132         the namespace.
6133         (gen_type_die_with_usage): Adjust declare_in_namespace caller.
6134         (gen_namespace_die): If is_fortran (), generate DW_TAG_module
6135         instead of DW_TAG_namespace.  If DECL_EXTERNAL is set, add
6136         DW_AT_declaration.
6137         (dwarf2out_global_decl): Don't skip Fortran global vars.
6138         (gen_decl_die): Likewise.  Adjust declare_in_namespace callers.
6139         (dwarf2out_imported_module_or_decl): Add NAME and CHILD arguments.
6140         If NAME is non-NULL, add DW_AT_name.  If CHILD is non-NULL, put
6141         DW_TAG_imported_declaration as child of previous
6142         DW_TAG_imported_module.
6143         * dbxout.c (dbx_debug_hooks, xcoff_debug_hooks): Adjust.
6144         * sdbout.c (sdb_debug_hooks): Likewise.
6145         * vmsdbgout.c (vmsdbg_debug_hooks): Likewise.
6146
6147 2008-08-29  Jan Hubicka  <jh@suse.cz>
6148
6149         * cgraph.c (cgraph_remove_node): Do not remove nested nodes.
6150
6151         * cgraph.h (cgraph_maybe_hot_edge_p): Declare.
6152         * ipa-cp.c (n_cloning_candidates): New static variable.
6153         (ipcp_print_profile_data, ipcp_function_scale_print): Forward declare.
6154         (ipcp_print_all_lattices): Improve debug output.
6155         (ipcp_cloning_candidate_p): New function.
6156         (ipcp_initialize_node_lattices): Use it.
6157         (ipcp_init_stage): Do only analyzis here; prettier debug output.
6158         (ipcp_propagate_stage): Prettier debug output.
6159         (ipcp_iterate_stage): Initialize latices here; prettier debug output.
6160         (ipcp_print_all_structures): Remove.
6161         (ipcp_need_redirect_p): Test !n_cloning_candidates.
6162         (ipcp_insert_stage): Prettier debug output; call
6163         cgraph_remove_unreachable_nodes before propagating.
6164         (pass_ipa_cp): Schedule function removal pass.
6165         * ipa-inline.c (inline_indirect_intraprocedural_analysis): Better
6166         debug output.
6167         (cgraph_maybe_hot_edge_p): Move to ...
6168         * predict.c (cgraph_maybe_hot_edge_p) ... here.
6169         * opts.c (flag_ipa_cp_set, flag_ipa_cp_clone_set): New.
6170         (common_handle_option): Set them; enable ipa-cp when profiling.
6171         * ipa-prop.c (ipa_print_node_jump_functions): Prettier output.
6172         (ipa_print_all_jump_functions): Likewise.
6173         (ipa_print_all_tree_maps, ipa_print_node_param_flags): Remove.
6174         (ipa_print_node_params, ipa_print_all_params): New.
6175         * ipa-prop.h (ipa_print_all_tree_maps, ipa_print_node_param_flags,
6176         ipa_print_all_param_flags): Remove.
6177         (ipa_print_node_params, ipa_print_all_params): New.
6178
6179 2008-08-29  Bob Wilson  <bob.wilson@acm.org>
6180
6181         * config/xtensa/xtensa.c (xtensa_secondary_reload_class): Revert
6182         change from 2008-04-03.
6183         * config/xtensa/xtensa.h (IRA_COVER_CLASSES): Define.
6184
6185 2008-08-29  Vladimir Makarov  <vmakarov@redhat.com>
6186
6187         PR rtl-opt/37251
6188         * ira-color.c (push_allocnos_to_stack): Truncate
6189         removed_splay_allocno_vec.
6190
6191 2008-08-29  Vladimir Makarov  <vmakarov@redhat.com>
6192
6193         PR rtl-opt/37243
6194         * ira-color (ira_fast_allocation): Don't assign hard registers to
6195         global allocnos.
6196
6197 2008-08-29  Jan Hubicka  <jh@suse.cz>
6198
6199         PR middle-end/37278
6200         * predict.c (optimize_loop_nest_for_speed_p): Do not ICE
6201         for cold internal loops.
6202
6203 2008-08-29  Richard Guenther  <rguenther@suse.de>
6204
6205         * tree-ssa-structalias.c (create_variable_info_for): Do not
6206         create fields for heap vars or vars with a noalias state.
6207         For NO_ALIAS_ANYTHING variables add a self-constraint, not one
6208         from ESCAPED.
6209
6210 2008-08-29  Richard Guenther  <rguenther@suse.de>
6211
6212         * common.opt (ftree-store-ccp): Mark as preserved for
6213         backward compatibility.
6214         * doc/invoke.texi (-ftree-store-ccp): Remove documentation.
6215         * tree-pass.h (pass_store_ccp): Remove.
6216         * tree-ssa-propagate.h (struct prop_value_d): Remove mem_ref field.
6217         (first_vdef): Remove declaration.
6218         (get_value_loaded_by): Likewise.
6219         * tree-ssa-ccp.c (do_store_ccp): Remove.
6220         (get_default_value): Simplify as do_store_ccp is always false
6221         now.  Do not initialize mem_ref.
6222         (set_value_varying): Likewise.
6223         (canonicalize_float_value): Likewise.
6224         (set_lattice_value): Likewise.
6225         (likely_value): Likewise.
6226         (surely_varying_stmt_p): Likewise.
6227         (ccp_initialize): Likewise.
6228         (ccp_lattice_meet): Likewise.
6229         (ccp_visit_phi_node): Likewise.
6230         (ccp_fold): Likewise.
6231         (evaluate_stmt): Likewise.
6232         (visit_assignment): Likewise.
6233         (ccp_visit_stmt): Likewise.
6234         (execute_ssa_ccp): Fold into ...
6235         (do_ssa_ccp): ... this.
6236         (do_ssa_store_ccp): Remove.
6237         (gate_store_ccp): Likewise.
6238         (pass_store_ccp): Likewise.
6239         * tree-ssa-copy.c (copy_prop_visit_phi_node): Do not
6240         initialize mem_ref.
6241         * tree-ssa-propagate.c (first_vdef): Remove.
6242         (get_value_loaded_by): Likewise.
6243         (replace_vuses_in): Likewise.
6244         (substitute_and_fold): Do not call replace_vuses_in.
6245         * opts.c (decode_options): Do not set flag_tree_store_ccp.
6246
6247 2008-08-29  Richard Guenther  <rguenther@suse.de>
6248
6249         PR middle-end/37236
6250         * tree-ssa-structalias.c (intra_create_variable_infos): Mark
6251         PARAM_NOALIAS tags with is_heapvar.
6252         * tree-ssa-operands.c (access_can_touch_variable): Offset
6253         based tests do not apply for heapvars.  Fix offset test.
6254
6255 2008-08-29  Jan Hubicka  <jh@suse.cz>
6256
6257         * doc/invoke.texi (-fipa-cp): Enabled by default at -O2/-Os/-O3
6258         (-fipa-cp-clone): Enabled by default at -O3.
6259         * opts.c (decode_options): Enable ipa-cp at -O2, ipa-cp-clone at -O3;
6260         make ipa-cp-clone to imply ipa-cp; disable cloning at -Os.
6261
6262 2008-08-29  Jan Hubicka  <jh@suse.cz>
6263
6264         * tree.c (build_function_type_skip_args,
6265         build_function_decl_skip_args): New functions.
6266         * tree.h (build_function_type_skip_args,
6267         build_function_decl_skip_args): Declare.
6268         * gimple.c (giple_copy_call_skip_args): New function.
6269         (giple_copy_call_skip_args): Declare.
6270
6271         * cgraph.h (cgraph_function_versioning): Add skip_args arugmnet
6272         * ipa-cp.c (ipcp_node_not_modifiable_p): Rename to ...
6273         (ipcp_node_modifiable_p): ... this one; use
6274         tree_versionable_function_p.
6275         (ipcp_create_replace_map): Improve debug output.
6276         (ipcp_need_redirect_p): Return false when not clonning.
6277         (ipcp_update_callgraph): Skip args.
6278         (ipcp_insert_stage): UPdate call of !ipcp_node_modifiable_p;
6279         skip args.
6280         * cgraphunit.c (cgraph_function_versioning): Add skip_args argument.
6281         (save_inline_function_body): Update call of tree_function_versioning.
6282         * ipa-prop.c (ipa_edge_removal_hook): Do not ICE on unanalyzed nodes.
6283         * tree-inline.c (copy_arguments_for_versioning): Add skip_args
6284         argument.
6285         (tree_function_versioning): Likewise.
6286         * tree-inline.h (tree_function_versioning): Update prototype.
6287
6288 2008-08-29  Jan Hubicka  <jh@suse.cz>
6289
6290         * loop-unswitch.c (unswitch_single_loop): Use
6291         optimize_loop_for_speed_p.
6292         * tree-ssa-threadupdate.c (mark_threaded_blocks):
6293         Use optimize_function_for_size_p.
6294         * tracer.c (ignore_bb_p): Use optimize_bb_for_size_p.
6295         * postreload-gcse.c (eliminate_partially_redundant_load):
6296         Use optimize_bb_for_size_p.
6297         * value-prof.c (gimple_divmod_fixed_value_transform,
6298         gimple_mod_pow2_value_transform, gimple_mod_subtract_transform,
6299         gimple_stringops_transform): Use optimize_bb_for_size_p.
6300         * ipa-cp.c (ipcp_insert_stage): Use optimize_function_for_size_p.
6301         * final.c (compute_alignments): Use optimize_function_for_size_p.
6302         * builtins.c (fold_builtin_cabs): Use optimize_function_for_speed_p.
6303         (fold_builtin_strcpy, fold_builtin_fputs): Use
6304         optimize_function_for_size_p.
6305         * fold-const.c (tree_swap_operands_p): Use
6306         optimize_function_for_size_p.
6307         * recog.c (relax_delay_slots): Likewise.
6308         * tree-ssa-math-opts.c (replace_reciprocal):
6309         Use optimize_bb_for_speed_p.
6310         (execute_cse_reciprocals): Use optimize_bb_for_size_p.
6311         * ipa-inline.c (cgraph_decide_recursive_inlining): Use
6312         optimize_function_for_size_p.
6313         (cgraph_decide_inlining_of_small_function): Use
6314         optimize_function_for_size_p.
6315         * global.c (find_reg): Use optimize_function_for_size_p.
6316         * opts.c (decode_options): Do not clear flag_tree_ch,
6317         flag_inline_functions, flag_unswitch_loops, flag_unroll_loops,
6318         flag_unroll_all_loops and flag_prefetch_loop_arrays. Those can
6319         work it out from profile.
6320         * tree-ssa-loop-ivcanon.c (tree_unroll_loops_completely): Use
6321         optimize_loop_for_speed_p.
6322         * predict.c (optimize_bb_for_size_p, optimize_bb_for_speed_p):
6323         Constify argument.
6324         (optimize_loop_nest_for_size_p, optimize_loop_nest_for_speed_p): New.
6325         * tree-parloops.c (parallelize_loops): Use optimize_loop_for_size_p.
6326         * tree-eh.c (decide_copy_try_finally): Use
6327         optimize_function_for_size_p.
6328         * local-alloc.c (block_alloc): Pass BB pointer.
6329         (find_free_reg): Add BB pointer, use optimize_bb_for_size_p.
6330         * gcse.c (gcse_main): Use optimize_function_for_size_p.
6331         * loop-unroll.c (decide_unrolling_and_peeling):
6332         Use optimize_loop_for_size_p.
6333         (decide_peel_completely): Likewise.
6334         * tree-vect-analyze.c (vect_mark_for_runtime_alias_test): Use
6335         optimize_loop_for_size_p.
6336         (vect_enhance_data_refs_alignment): Likewise.
6337         * tree-ssa-coalesce.c (coalesce_cost): Add optimize_for_size argument.
6338         (coalesce_cost_bb, coalesce_cost_edge, create_outofssa_var_map):
6339         Update call.
6340         * cfgcleanup.c (outgoing_edges_match): Use optimize_bb_for_speed_p.
6341         (try_crossjump_bb): Use optimize_bb_for_size_p.
6342         * tree-ssa-loop-prefetch.c (loop_prefetch_arrays): Use
6343         optimize_loop_for_speed_p.
6344         * bb-reorder.c (find_traces_1_round): Likewise.
6345         (copy_bb): Use optimize_bb_for_speed_p.
6346         (duplicate_computed_gotos): Likewise.
6347         * basic-block.h (optimize_loop_nest_for_size_p,
6348         optimize_loop_nest_for_speed_p): New.
6349         * stmt.c (expand_case): Use optimize_insn_for_size_p.
6350
6351 2008-08-29  Tristan Gingold  <gingold@adacore.com>
6352
6353         * gcov.c (main): Call expandargv.
6354
6355 2008-08-29  Jan Hubicka  <jh@suse.cz>
6356
6357         * tree-ssa-loop-ch.c (should_duplicate_loop_header_p): Check that loop
6358         is not cold.
6359         * predict.c (optimize_bb_for_size_p, optimize_bb_for_speed_p):
6360         Constify arguments.
6361         (optimize_loop_for_size_p, optimize_loop_for_speed_p): New functions.
6362         * basic-block.h (optimize_bb_for_size_p, optimize_bb_for_speed_p):
6363         Constify.
6364         (optimize_loop_for_size_p, optimize_loop_for_speed_p): Declare.
6365
6366 2008-08-29  Jan Hubicka  <jh@suse.cz>
6367
6368         * tree-pass.h (pass_strip_predict_hints): Declare.
6369         * predict.c (strip_builtin_expect): Rename to ...
6370         (strip_predict_hints): ... this one; strip also GIMPLE_PREDICT.
6371         (tree_bb_level_predictions): Do not remove GIMPLE_PREDICT.
6372         (tree_estimate_probability): Do not strip builtin_expect.
6373         (pass_strip_predict_hints): New pass.
6374         * tree-inline.c (expand_call_inline): When inlining cold function,
6375         predict it as unlikely.
6376         * passes.c (init_optimization_passes): Add pass_strip_predict_hints.
6377
6378 2008-08-29  Richard Guenther  <rguenther@suse.de>
6379
6380         PR tree-optimization/37207
6381         * tree-vrp.c (extract_range_from_binary_expr): Also try
6382         to constant fold if only one of the operands is a constant.
6383
6384 2008-08-29  Nick Clifton  <nickc@redhat.com>
6385
6386         * config/m32r/m32r.h (LEGITIMATE_CONSTANT_P): Treat LABEL_REFs in
6387         the same way as SYMBOL_REFs.
6388
6389 2008-08-28  Bob Wilson  <bob.wilson@acm.org>
6390
6391         * config/xtensa/xtensa.md (<u>mulsidi3): Use a temporary register.
6392
6393 2008-08-28  Adam Nemet  <anemet@caviumnetworks.com>
6394
6395         * config/mips/mips.h (ISA_HAS_BBIT): New macro.
6396         * config/mips/mips.md (branch_likely): Remove const.  Fix
6397         comment formatting.
6398         (define_delay for type "branch"): Change to only apply for branch
6399         with likely variant.
6400         (define_delay for type "branch" and "branch_likely" no).  New delay
6401         definition.
6402         (equality_op): New code iterator.
6403         (bbv, bbinv): New code attributes.
6404         (*branch_bit<bbv><mode>, *branch_bit<bbv><mode>_inverted): New
6405         patterns.
6406
6407 2008-08-28  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
6408             Andrew Pinski  <pinskia@gcc.gnu.org>
6409
6410         PR 18050
6411         * c-common.c (verify_tree): Fix handling of ADDR_EXPR.
6412
6413 2008-08-28  Paolo Carlini  <paolo.carlini@oracle.com>
6414
6415         * gtrh-posix.h: Fix uses of _POSIX_TIMEOUTS per the normal Posix
6416         rule that a symbolic constant must be defined and >= 0 for the
6417         corresponding facility to be present at compile-time.
6418         * gthr-posix.c: Likewise.
6419
6420 2008-08-28  Adam Nemet  <anemet@caviumnetworks.com>
6421
6422         * config/mips/mips.h (ISA_HAS_DMUL3): New macro.
6423         * config/mips/mips.md (D): New mode attribute.
6424         (mulsi3, muldi3): Merge it into ...
6425         (mul<mode>3): ... new template.  Use _mul3 ending for 3-op patterns.
6426         (muldi3_mul3): New pattern.
6427         (mulsi3_mult3): Rename to mulsi3_mul3.
6428
6429 2008-08-28  Jan Hubicka  <jh@suse.cz>
6430
6431         * expmed.c (store_bit_field_1): Be prepared for movstrict expander
6432         to fail.
6433         * predict.c (always_optimize_for_size_p): Rename to ...
6434         (optimize_function_for_size): ... this one; make extern.
6435         (optimize_function_for_speed_p): New.
6436         (optimize_bb_for_size_p, optimize_bb_for_size_p,
6437         optimize_edge_for_size_p,optimize_edge_for_size_p,
6438         optimize_insn_for_size_p, optimize_insn_for_size_p): Update.
6439         * basic-block.h (optimize_function_for_size_p,
6440         optimize_function_for_speed_p): Declare.
6441         * i386.md (optimize_size checks): Replace them by appropriate
6442         predicate.
6443         (standard_80387_constant_p, ix86_compute_frame_layout,
6444         ix86_expand_epilogue, ix86_decompose_address,
6445         print_operand, emit_i387_cw_initialization,
6446         inline_memory_move_cost, ix86_pad_returns,
6447         ix86_reorg): Replace optimize_size checks.
6448
6449 2008-08-28  Richard Sandiford  <rdsandiford@googlemail.com>
6450
6451         * rtl.h (simplify_subreg_regno): Declare.
6452         * rtlanal.c (simplify_subreg_regno): New function, split out from...
6453         * simplify-rtx.c (simplify_subreg): ...here.
6454         * reload.c (find_reloads): Use simplify_subreg_regno instead of
6455         subreg_offset_representable_p.
6456
6457 2008-08-28  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
6458
6459         PR c/30949
6460         * c-typeck.c (convert_for_assignment): Give a note describing what
6461         was passed and what was expected.
6462
6463 2008-08-28  Joey Ye  <joey.ye@intel.com>
6464
6465         * doc/extend.texi: Document AVX built-in functions.
6466         * doc/invoke.texi: Document -mavx.
6467
6468 2008-08-28  H.J. Lu  <hongjiu.lu@intel.com>
6469             Joey Ye  <joey.ye@intel.com>
6470             Xuepeng Guo  <xuepeng.guo@intel.com>
6471
6472         * config.gcc (extra_headers): Add gmmintrin.h for x86 and x86-64.
6473
6474         * config/i386/cpuid.h (bit_FMA): New.
6475         (bit_XSAVE): Likewise.
6476         (bit_OSXSAVE): Likewise.
6477         (bit_AVX): Likewise.
6478
6479         * config/i386/gas.h (ASM_OUTPUT_OPCODE): Undefine before
6480         define.  Use ASM_OUTPUT_AVX_PREFIX.
6481
6482         * config/i386/gmmintrin.h: New.
6483
6484         * config/i386/i386.c (x86_64_reg_class): Add X86_64_AVX_CLASS.
6485         (OPTION_MASK_ISA_AVX_SET): New.
6486         (OPTION_MASK_ISA_FMA_SET): Likewise.
6487         (OPTION_MASK_ISA_AVX_UNSET): Likewise.
6488         (OPTION_MASK_ISA_FMA_SET): Likewise.
6489         (OPTION_MASK_ISA_SSE4_2_UNSET): Updated.
6490         (ix86_handle_option): Handle OPT_mavx and OPT_mfma.
6491         (pta_flags): Add PTA_AVX and PTA_FMA.
6492         (override_options): Handle PTA_AVX and PTA_FMA.
6493         (init_cumulative_args): Handle warn_avx.
6494         (classify_argument): Return 0 for COImode and OImode.  Return
6495         1 and X86_64_AVX_CLASS for 256bit vector types.
6496         (examine_argument): Handle X86_64_AVX_CLASS.
6497         (construct_container): Likewise.
6498         (function_arg_advance_32): Pass OImode and 256bit vector types
6499         in AVX register.
6500         (function_arg_advance_64): Take a new argument to indicate if a
6501         parameter is named.  Handle 256bit vector types.  Return
6502         immediately for unnamed 256bit vector mode parameters.
6503         (function_arg_advance): Updated.
6504         (function_arg_32): Add comments for TImode.  Handle OImode
6505         and 256bit vector types.
6506         (function_arg_64): Take a new argument to indicate if a
6507         parameter is named.  Handle 256bit vector types.  Return NULL
6508         for unnamed 256bit vector mode parameters.
6509         (function_arg): Updated.
6510         (setup_incoming_varargs_64): Support
6511         AVX encoding for *sse_prologue_save_insn.
6512         (ix86_gimplify_va_arg): Handle 256bit vector mode parameters.
6513         (standard_sse_constant_p): Return -2 for all 1s if SSE2 isn't
6514         enabled.  For all 1s in 256bit vector modes, return 3 if AVX is
6515         enabled, otherwise return -3.
6516         (standard_sse_constant_opcode): Handle AVX and 256bit vector
6517         modes.
6518         (print_reg): Support AVX registers.  Handle 'x' and 't'.
6519         Handle 'd' to duplicate the operand.
6520         (print_operand): Likewise.  Also support AVX vector compare
6521         instructions.
6522         (output_387_binary_op): Support AVX.
6523         (output_fp_compare): Likewise.
6524         (ix86_expand_vector_move_misalign): Likewise.
6525         (ix86_attr_length_vex_default): New.
6526         (ix86_builtins): Add IX86_BUILTIN_ADDPD256,
6527         IX86_BUILTIN_ADDPS256, IX86_BUILTIN_ADDSUBPD256,
6528         IX86_BUILTIN_ADDSUBPS256, IX86_BUILTIN_ANDPD256,
6529         IX86_BUILTIN_ANDPS256, IX86_BUILTIN_ANDNPD256,
6530         IX86_BUILTIN_ANDNPS256, IX86_BUILTIN_BLENDPD256,
6531         IX86_BUILTIN_BLENDPS256, IX86_BUILTIN_BLENDVPD256,
6532         IX86_BUILTIN_BLENDVPS256, IX86_BUILTIN_DIVPD256,
6533         IX86_BUILTIN_DIVPS256, IX86_BUILTIN_DPPS256,
6534         IX86_BUILTIN_HADDPD256, IX86_BUILTIN_HADDPS256,
6535         IX86_BUILTIN_HSUBPD256, IX86_BUILTIN_HSUBPS256,
6536         IX86_BUILTIN_MAXPD256, IX86_BUILTIN_MAXPS256,
6537         IX86_BUILTIN_MINPD256, IX86_BUILTIN_MINPS256,
6538         IX86_BUILTIN_MULPD256, IX86_BUILTIN_MULPS256,
6539         IX86_BUILTIN_ORPD256, IX86_BUILTIN_ORPS256,
6540         IX86_BUILTIN_SHUFPD256, IX86_BUILTIN_SHUFPS256,
6541         IX86_BUILTIN_SUBPD256, IX86_BUILTIN_SUBPS256,
6542         IX86_BUILTIN_XORPD256, IX86_BUILTIN_XORPS256,
6543         IX86_BUILTIN_CMPSD, IX86_BUILTIN_CMPSS, IX86_BUILTIN_CMPPD,
6544         IX86_BUILTIN_CMPPS, IX86_BUILTIN_CMPPD256,
6545         IX86_BUILTIN_CMPPS256, IX86_BUILTIN_CVTDQ2PD256,
6546         IX86_BUILTIN_CVTDQ2PS256, IX86_BUILTIN_CVTPD2PS256,
6547         IX86_BUILTIN_CVTPS2DQ256, IX86_BUILTIN_CVTPS2PD256,
6548         IX86_BUILTIN_CVTTPD2DQ256, IX86_BUILTIN_CVTPD2DQ256,
6549         IX86_BUILTIN_CVTTPS2DQ256, IX86_BUILTIN_EXTRACTF128PD256,
6550         IX86_BUILTIN_EXTRACTF128PS256, IX86_BUILTIN_EXTRACTF128SI256,
6551         IX86_BUILTIN_VZEROALL, IX86_BUILTIN_VZEROUPPER,
6552         IX86_BUILTIN_VZEROUPPER_REX64, IX86_BUILTIN_VPERMILVARPD,
6553         IX86_BUILTIN_VPERMILVARPS, IX86_BUILTIN_VPERMILVARPD256,
6554         IX86_BUILTIN_VPERMILVARPS256, IX86_BUILTIN_VPERMILPD,
6555         IX86_BUILTIN_VPERMILPS, IX86_BUILTIN_VPERMILPD256,
6556         IX86_BUILTIN_VPERMILPS256, IX86_BUILTIN_VPERMIL2PD,
6557         IX86_BUILTIN_VPERMIL2PS, IX86_BUILTIN_VPERMIL2PD256,
6558         IX86_BUILTIN_VPERMIL2PS256, IX86_BUILTIN_VPERM2F128PD256,
6559         IX86_BUILTIN_VPERM2F128PS256, IX86_BUILTIN_VPERM2F128SI256,
6560         IX86_BUILTIN_VBROADCASTSS, IX86_BUILTIN_VBROADCASTSD256,
6561         IX86_BUILTIN_VBROADCASTSS256, IX86_BUILTIN_VBROADCASTPD256,
6562         IX86_BUILTIN_VBROADCASTPS256, IX86_BUILTIN_VINSERTF128PD256,
6563         IX86_BUILTIN_VINSERTF128PS256, IX86_BUILTIN_VINSERTF128SI256,
6564         IX86_BUILTIN_LOADUPD256, IX86_BUILTIN_LOADUPS256,
6565         IX86_BUILTIN_STOREUPD256, IX86_BUILTIN_STOREUPS256,
6566         IX86_BUILTIN_LDDQU256, IX86_BUILTIN_LOADDQU256,
6567         IX86_BUILTIN_STOREDQU256, IX86_BUILTIN_MASKLOADPD,
6568         IX86_BUILTIN_MASKLOADPS, IX86_BUILTIN_MASKSTOREPD,
6569         IX86_BUILTIN_MASKSTOREPS, IX86_BUILTIN_MASKLOADPD256,
6570         IX86_BUILTIN_MASKLOADPS256, IX86_BUILTIN_MASKSTOREPD256,
6571         IX86_BUILTIN_MASKSTOREPS256, IX86_BUILTIN_MOVSHDUP256,
6572         IX86_BUILTIN_MOVSLDUP256, IX86_BUILTIN_MOVDDUP256,
6573         IX86_BUILTIN_SQRTPD256, IX86_BUILTIN_SQRTPS256,
6574         IX86_BUILTIN_SQRTPS_NR256, IX86_BUILTIN_RSQRTPS256,
6575         IX86_BUILTIN_RSQRTPS_NR256, IX86_BUILTIN_RCPPS256,
6576         IX86_BUILTIN_ROUNDPD256, IX86_BUILTIN_ROUNDPS256,
6577         IX86_BUILTIN_UNPCKHPD256, IX86_BUILTIN_UNPCKLPD256,
6578         IX86_BUILTIN_UNPCKHPS256, IX86_BUILTIN_UNPCKLPS256,
6579         IX86_BUILTIN_SI256_SI, IX86_BUILTIN_PS256_PS,
6580         IX86_BUILTIN_PD256_PD, IX86_BUILTIN_SI_SI256,
6581         IX86_BUILTIN_PS_PS256, IX86_BUILTIN_PD_PD256,
6582         IX86_BUILTIN_VTESTZPD, IX86_BUILTIN_VTESTCPD,
6583         IX86_BUILTIN_VTESTNZCPD, IX86_BUILTIN_VTESTZPS,
6584         IX86_BUILTIN_VTESTCPS, IX86_BUILTIN_VTESTNZCPS,
6585         IX86_BUILTIN_VTESTZPD256, IX86_BUILTIN_VTESTCPD256,
6586         IX86_BUILTIN_VTESTNZCPD256, IX86_BUILTIN_VTESTZPS256,
6587         IX86_BUILTIN_VTESTCPS256, IX86_BUILTIN_VTESTNZCPS256,
6588         IX86_BUILTIN_PTESTZ256, IX86_BUILTIN_PTESTC256,
6589         IX86_BUILTIN_PTESTNZC256, IX86_BUILTIN_MOVMSKPD256
6590         and IX86_BUILTIN_MOVMSKPS256,
6591         (ix86_special_builtin_type): Add V32QI_FTYPE_PCCHAR,
6592         V8SF_FTYPE_PCV4SF, V8SF_FTYPE_PCFLOAT, V4DF_FTYPE_PCV2DF,
6593         V4DF_FTYPE_PCDOUBLE, V8SF_FTYPE_PCV8SF_V8SF,
6594         V4DF_FTYPE_PCV4DF_V4DF, V4SF_FTYPE_PCV4SF_V4SF,
6595         V2DF_FTYPE_PCV2DF_V2DF, VOID_FTYPE_PCHAR_V32QI,
6596         VOID_FTYPE_PFLOAT_V8SF, VOID_FTYPE_PDOUBLE_V4DF,
6597         VOID_FTYPE_PV8SF_V8SF_V8SF, VOID_FTYPE_PV4DF_V4DF_V4DF,
6598         VOID_FTYPE_PV4SF_V4SF_V4SF and VOID_FTYPE_PV2DF_V2DF_V2DF,
6599         (ix86_builtin_type): Add INT_FTYPE_V8SF_V8SF_PTEST,
6600         INT_FTYPE_V4DI_V4DI_PTEST, INT_FTYPE_V4DF_V4DF_PTEST,
6601         INT_FTYPE_V4SF_V4SF_PTEST, INT_FTYPE_V2DF_V2DF_PTEST,
6602         INT_FTYPE_V8SF, INT_FTYPE_V4DF, V8SI_FTYPE_V8SF, V8SI_FTYPE_V4SI,
6603         V8SF_FTYPE_V8SF, V8SF_FTYPE_V8SI, V8SF_FTYPE_V4SF,
6604         V4SI_FTYPE_V8SI, V4SI_FTYPE_V4DF, V4DF_FTYPE_V4DF,
6605         V4DF_FTYPE_V4SI, V4DF_FTYPE_V4SF, V4DF_FTYPE_V2DF,
6606         V4SF_FTYPE_V4DF, V4SF_FTYPE_V8SF, V2DF_FTYPE_V4DF,
6607         V8SF_FTYPE_V8SF_V8SF, V8SF_FTYPE_V8SF_V8SI,
6608         V4DF_FTYPE_V4DF_V4DF, V4DF_FTYPE_V4DF_V4DI,
6609         V4SF_FTYPE_V4SF_V4SI, V2DF_FTYPE_V2DF_V2DI,
6610         V8SF_FTYPE_V8SF_INT, V4SI_FTYPE_V8SI_INT, V4SF_FTYPE_V8SF_INT,
6611         V2DF_FTYPE_V4DF_INT, V4DF_FTYPE_V4DF_INT,
6612         V8SF_FTYPE_V8SF_V8SF_V8SF, V4DF_FTYPE_V4DF_V4DF_V4DF,
6613         V8SI_FTYPE_V8SI_V8SI_INT, V8SF_FTYPE_V8SF_V8SF_INT,
6614         V4DF_FTYPE_V4DF_V4DF_INT, V4DF_FTYPE_V4DF_V2DF_INT,
6615         V8SF_FTYPE_V8SF_V8SF_V8SI_INT, V4DF_FTYPE_V4DF_V4DF_V4DI_INT,
6616         V4SF_FTYPE_V4SF_V4SF_V4SI_INT and V2DF_FTYPE_V2DF_V2DF_V2DI_INT.
6617         (bdesc_special_args): Add IX86_BUILTIN_VZEROALL,
6618         IX86_BUILTIN_VZEROUPPER. IX86_BUILTIN_VZEROUPPER_REX64,
6619         IX86_BUILTIN_VBROADCASTSS, IX86_BUILTIN_VBROADCASTSD256,
6620         IX86_BUILTIN_VBROADCASTSS256, IX86_BUILTIN_VBROADCASTPD256,
6621         IX86_BUILTIN_VBROADCASTPS256, IX86_BUILTIN_LOADUPD256,
6622         IX86_BUILTIN_LOADUPS256, IX86_BUILTIN_STOREUPD256,
6623         IX86_BUILTIN_STOREUPS256, IX86_BUILTIN_LOADDQU256,
6624         IX86_BUILTIN_STOREDQU256, IX86_BUILTIN_LDDQU256,
6625         IX86_BUILTIN_MASKLOADPD, IX86_BUILTIN_MASKLOADPS,
6626         IX86_BUILTIN_MASKLOADPD256, IX86_BUILTIN_MASKLOADPS256,
6627         IX86_BUILTIN_MASKSTOREPD, IX86_BUILTIN_MASKSTOREPS,
6628         IX86_BUILTIN_MASKSTOREPD256 and IX86_BUILTIN_MASKSTOREPS256.
6629         (ix86_builtins): Add IX86_BUILTIN_ADDPD256,
6630         IX86_BUILTIN_ADDPS256, IX86_BUILTIN_ADDSUBPD256,
6631         IX86_BUILTIN_ADDSUBPS256, IX86_BUILTIN_ANDPD256,
6632         IX86_BUILTIN_ANDPS256, IX86_BUILTIN_ANDNPD256,
6633         IX86_BUILTIN_ANDNPS256, IX86_BUILTIN_DIVPD256,
6634         IX86_BUILTIN_DIVPS256, IX86_BUILTIN_HADDPD256,
6635         IX86_BUILTIN_HSUBPS256, IX86_BUILTIN_HSUBPD256,
6636         IX86_BUILTIN_HADDPS256, IX86_BUILTIN_MAXPD256,
6637         IX86_BUILTIN_MAXPS256, IX86_BUILTIN_MINPD256,
6638         IX86_BUILTIN_MINPS256, IX86_BUILTIN_MULPD256,
6639         IX86_BUILTIN_MULPS256, IX86_BUILTIN_ORPD256,
6640         IX86_BUILTIN_ORPS256, IX86_BUILTIN_SUBPD256,
6641         IX86_BUILTIN_SUBPS256, IX86_BUILTIN_XORPD256,
6642         IX86_BUILTIN_XORPS256, IX86_BUILTIN_VPERMILVARPD,
6643         IX86_BUILTIN_VPERMILVARPS, IX86_BUILTIN_VPERMILVARPD256,
6644         IX86_BUILTIN_VPERMILVARPS256, IX86_BUILTIN_BLENDPD256,
6645         IX86_BUILTIN_BLENDPS256, IX86_BUILTIN_BLENDVPD256,
6646         IX86_BUILTIN_BLENDVPS256, IX86_BUILTIN_DPPS256,
6647         IX86_BUILTIN_SHUFPD256, IX86_BUILTIN_SHUFPS256,
6648         IX86_BUILTIN_CMPSD, IX86_BUILTIN_CMPSS, IX86_BUILTIN_CMPPD,
6649         IX86_BUILTIN_CMPPS,
6650         IX86_BUILTIN_CMPPD256,IX86_BUILTIN_CMPPS256,
6651         IX86_BUILTIN_EXTRACTF128PD256, IX86_BUILTIN_EXTRACTF128PS256,
6652         IX86_BUILTIN_EXTRACTF128SI256, IX86_BUILTIN_CVTDQ2PD256,
6653         IX86_BUILTIN_CVTDQ2PS256, IX86_BUILTIN_CVTPD2PS256,
6654         IX86_BUILTIN_CVTPS2DQ256, IX86_BUILTIN_CVTPS2PD256,
6655         IX86_BUILTIN_CVTTPD2DQ256, IX86_BUILTIN_CVTPD2DQ256,
6656         IX86_BUILTIN_CVTTPS2DQ256, IX86_BUILTIN_VPERM2F128PD256,
6657         IX86_BUILTIN_VPERM2F128PS256, IX86_BUILTIN_VPERM2F128SI256,
6658         IX86_BUILTIN_VPERMILPD, IX86_BUILTIN_VPERMILPS,
6659         IX86_BUILTIN_VPERMILPD256, IX86_BUILTIN_VPERMILPS256,
6660         IX86_BUILTIN_VPERMIL2PD, IX86_BUILTIN_VPERMILPS,
6661         IX86_BUILTIN_VPERMILPD256, IX86_BUILTIN_VPERMILPS256,
6662         IX86_BUILTIN_VPERMIL2PD, IX86_BUILTIN_VPERMIL2PS,
6663         IX86_BUILTIN_VPERMIL2PD256, IX86_BUILTIN_VPERMIL2PS256,
6664         IX86_BUILTIN_VINSERTF128PD256, IX86_BUILTIN_VINSERTF128PS256,
6665         IX86_BUILTIN_VINSERTF128SI256, IX86_BUILTIN_MOVSHDUP256,
6666         IX86_BUILTIN_MOVSLDUP256, IX86_BUILTIN_MOVDDUP256,
6667         IX86_BUILTIN_SQRTPD256, IX86_BUILTIN_SQRTPS256,
6668         IX86_BUILTIN_SQRTPS_NR256, IX86_BUILTIN_RSQRTPS256,
6669         IX86_BUILTIN_RSQRTPS_NR256, IX86_BUILTIN_RCPPS256,
6670         IX86_BUILTIN_ROUNDPD256, IX86_BUILTIN_ROUNDPS256,
6671         IX86_BUILTIN_UNPCKHPD256, IX86_BUILTIN_UNPCKLPD256,
6672         IX86_BUILTIN_UNPCKHPS256, IX86_BUILTIN_UNPCKLPS256,
6673         IX86_BUILTIN_SI256_SI, IX86_BUILTIN_PS256_PS,
6674         IX86_BUILTIN_PD256_PD, IX86_BUILTIN_SI_SI256,
6675         IX86_BUILTIN_PS_PS256, IX86_BUILTIN_PD_PD256,
6676         IX86_BUILTIN_VTESTZPD, IX86_BUILTIN_VTESTCPD,
6677         IX86_BUILTIN_VTESTNZCPD, IX86_BUILTIN_VTESTZPS,
6678         IX86_BUILTIN_VTESTCPS, IX86_BUILTIN_VTESTNZCPS,
6679         IX86_BUILTIN_VTESTZPD256, IX86_BUILTIN_VTESTCPD256,
6680         IX86_BUILTIN_VTESTNZCPD256, IX86_BUILTIN_VTESTZPS256,
6681         IX86_BUILTIN_VTESTCPS256, IX86_BUILTIN_VTESTNZCPS256,
6682         IX86_BUILTIN_PTESTZ256, IX86_BUILTIN_PTESTC256,
6683         IX86_BUILTIN_PTESTNZC256, IX86_BUILTIN_MOVMSKPD256 and
6684         IX86_BUILTIN_MOVMSKPS256.
6685         (ix86_init_mmx_sse_builtins): Support AVX builtins.
6686         (ix86_expand_args_builtin): Likewise.
6687         (ix86_expand_special_args_builtin): Likewise.
6688         (ix86_hard_regno_mode_ok): Handle AVX modes.
6689         (ix86_expand_vector_init_duplicate): Likewise.
6690         (ix86_expand_vector_init_one_nonzero): Likewise.
6691         (ix86_expand_vector_init_one_var): Likewise.
6692         (ix86_expand_vector_init_concat): Likewise.
6693         (ix86_expand_vector_init_general): Likewise.
6694         (ix86_expand_vector_set): Likewise.
6695         (ix86_vector_mode_supported_p): Likewise.
6696         (x86_extended_reg_mentioned_p): Check INSN_P before using
6697         PATTERN.
6698
6699         * config/i386/i386-c.c (ix86_target_macros_internal): Handle
6700         OPTION_MASK_ISA_AVX and OPTION_MASK_ISA_FMA.
6701
6702         * config/i386/i386.h (TARGET_AVX): New.
6703         (TARGET_FMA): Likewise.
6704         (TARGET_CPU_CPP_BUILTINS): Handle TARGET_AVX and TARGET_FMA.
6705         (BIGGEST_ALIGNMENT): Set to 256 for TARGET_AVX.
6706         (VALID_AVX256_REG_MODE): New.
6707         (AVX256_VEC_FLOAT_MODE_P): Likewise.
6708         (AVX_FLOAT_MODE_P): Likewise.
6709         (AVX128_VEC_FLOAT_MODE_P): Likewise.
6710         (AVX256_VEC_FLOAT_MODE_P): Likewise.
6711         (AVX_VEC_FLOAT_MODE_P): Likewise.
6712         (ASM_OUTPUT_AVX_PREFIX): Likewise.
6713         (ASM_OUTPUT_OPCODE): Likewise.
6714         (UNITS_PER_SIMD_WORD): Add a FIXME for 32byte vectorizer
6715         support.
6716         (SSE_REG_MODE_P): Allow 256bit vector modes.
6717         (ix86_args): Add a warn_avx field.
6718
6719         * config/i386/i386.md (UNSPEC_PCMP): New.
6720         (UNSPEC_VPERMIL): Likewise.
6721         (UNSPEC_VPERMIL2): Likewise.
6722         (UNSPEC_VPERMIL2F128): Likewise.
6723         (UNSPEC_MASKLOAD): Likewise.
6724         (UNSPEC_MASKSTORE): Likewise.
6725         (UNSPEC_CAST): Likewise.
6726         (UNSPEC_VTESTP): Likewise.
6727         (UNSPECV_VZEROALL): Likewise.
6728         (UNSPECV_VZEROUPPER): Likewise.
6729         (XMM0_REG): Likewise.
6730         (XMM1_REG): Likewise.
6731         (XMM2_REG): Likewise.
6732         (XMM3_REG): Likewise.
6733         (XMM4_REG): Likewise.
6734         (XMM5_REG): Likewise.
6735         (XMM6_REG): Likewise.
6736         (XMM8_REG): Likewise.
6737         (XMM9_REG): Likewise.
6738         (XMM10_REG): Likewise.
6739         (XMM11_REG): Likewise.
6740         (XMM12_REG): Likewise.
6741         (XMM13_REG): Likewise.
6742         (XMM14_REG): Likewise.
6743         (XMM15_REG): Likewise.
6744         (prefix): Likewise.
6745         (prefix_vex_imm8): Likewise.
6746         (prefix_vex_w): Likewise.
6747         (length_vex): Likewise.
6748         (maxmin): Likewise.
6749         (movoi): Likewise.
6750         (*avx_ashlti3): Likewise.
6751         (*avx_lshrti3): Likewise.
6752         (*avx_setcc<mode>): Likewise.
6753         (*fop_<mode>_comm_mixed_avx): Likewise.
6754         (*fop_<mode>_comm_avx): Likewise.
6755         (*fop_<mode>_1_mixed_avx): Likewise.
6756         (*fop_<mode>_1_avx): Likewise.
6757         (*avx_<code><mode>3): Likewise.
6758         (*avx_ieee_smin<mode>3): Likewise.
6759         (*avx_ieee_smax<mode>3): Likewise.
6760         (mode): Add OI, V8SF and V4DF.
6761         (length): Support VEX prefix.
6762         (*cmpfp_i_mixed): Set prefix attribute.
6763         (*cmpfp_i_sse): Likewise.
6764         (*cmpfp_iu_mixed): Likewise.
6765         (*cmpfp_iu_sse): Likewise.
6766         (*movsi_1): Support AVX.
6767         (*movdi_2): Likewise.
6768         (*movdi_1_rex64): Likewise.
6769         (*movti_internal): Likewise.
6770         (*movti_rex64): Likewise.
6771         (*movsf_1): Likewise.
6772         (*movdf_nointeger): Likewise.
6773         (*movdf_integer_rex64): Likewise.
6774         (*movtf_internal): Likewise.
6775         (zero_extendsidi2_32): Likewise.
6776         (zero_extendsidi2_rex64): Likewise.
6777         (*extendsfdf2_mixed): Likewise.
6778         (*extendsfdf2_sse): Likewise.
6779         (*truncdfsf_fast_mixed): Likewise.
6780         (*truncdfsf_fast_sse): Likewise.
6781         (*truncdfsf_mixed): Likewise.
6782         (fix_trunc<mode>di_sse): Likewise.
6783         (fix_trunc<mode>si_sse): Likewise.
6784         (*float<SSEMODEI24:mode><MODEF:mode>2_mixed_interunit): Likewise.
6785         (*float<SSEMODEI24:mode><MODEF:mode>2_mixed_nointerunit): Likewise.
6786         (*float<SSEMODEI24:mode><MODEF:mode>2_sse_interunit): Likewise.
6787         (*float<SSEMODEI24:mode><MODEF:mode>2_sse_nointerunit): Likewise.
6788         (*rcpsf2_sse): Likewise.
6789         (*rsqrtsf2_sse): Likewise.
6790         (*sqrt<mode>2_sse): Likewise.
6791         (sse4_1_round<mode>2): Likewise.
6792         (*sse_prologue_save_insn): Disallow REX prefix for AVX.
6793         Support AVX.  Set length attribute properly for AVX.
6794
6795         * config/i386/i386-modes.def (VECTOR_MODES (INT, 32)): New.
6796         (VECTOR_MODES (FLOAT, 32)): Likewise.
6797         (VECTOR_MODE (INT, DI, 8)): Likewise.
6798         (VECTOR_MODE (INT, HI, 32)): Likewise.
6799         (VECTOR_MODE (INT, QI, 64)): Likewise.
6800         (VECTOR_MODE (FLOAT, DF, 8)): Likewise.
6801         (VECTOR_MODE (FLOAT, SF, 16)): Likewise.
6802         (VECTOR_MODE (INT, DI, 4)): Removed.
6803         (VECTOR_MODE (INT, SI, 8)): Likewise.
6804         (VECTOR_MODE (INT, HI, 16)): Likewise.
6805         (VECTOR_MODE (INT, QI, 32)): Likewise.
6806         (VECTOR_MODE (FLOAT, SF, 8)): Likewise.
6807         (INT_MODE (OI, 32)): Likewise.
6808
6809         * config/i386/i386.opt (mavx): New.
6810         (mfma): Likewise.
6811
6812         * config/i386/i386-protos.h (ix86_attr_length_vex_default): New.
6813
6814         * config/i386/mmx.md (*mov<mode>_internal_rex64): Support AVX.
6815         (*mov<mode>_internal_avx): New.
6816         (*movv2sf_internal_rex64_avx): Likewise.
6817         (*movv2sf_internal_avx): Likewise.
6818
6819         * config/i386/predicates.md (const_4_to_5_operand): New.
6820         (const_6_to_7_operand): Likewise.
6821         (const_8_to_11_operand): Likewise.
6822         (const_12_to_15_operand): Likewise.
6823         (avx_comparison_float_operator): Likewise.
6824
6825         * config/i386/sse.md (AVX256MODEI): New.
6826         (AVX256MODE): Likewise.
6827         (AVXMODEQI): Likewise.
6828         (AVXMODE): Likewise.
6829         (AVX256MODEF2P): Likewise.
6830         (AVX256MODE2P): Likewise.
6831         (AVX256MODE4P): Likewise.
6832         (AVX256MODE8P): Likewise.
6833         (AVXMODEF2P): Likewise.
6834         (AVXMODEF4P): Likewise.
6835         (AVXMODEDCVTDQ2PS): Likewise.
6836         (AVXMODEDCVTPS2DQ): Likewise.
6837         (avxvecmode): Likewise.
6838         (avxvecpsmode): Likewise.
6839         (avxhalfvecmode): Likewise.
6840         (avxscalarmode): Likewise.
6841         (avxcvtvecmode): Likewise.
6842         (avxpermvecmode): Likewise.
6843         (avxmodesuffixf2c): Likewise.
6844         (avxmodesuffixp): Likewise.
6845         (avxmodesuffixs): Likewise.
6846         (avxmodesuffix): Likewise.
6847         (vpermilbits): Likewise.
6848         (pinsrbits): Likewise.
6849         (mov<mode>): Likewise.
6850         (*mov<mode>_internal): Likewise.
6851         (push<mode>1): Likewise.
6852         (movmisalign<mode>): Likewise.
6853         (avx_movup<avxmodesuffixf2c><avxmodesuffix>): Likewise.
6854         (avx_movdqu<avxmodesuffix>): Likewise.
6855         (avx_lddqu<avxmodesuffix>): Likewise.
6856         (<plusminus_insn><mode>3): Likewise.
6857         (*avx_<plusminus_insn><mode>3): Likewise.
6858         (*avx_vm<plusminus_insn><mode>3): Likewise.
6859         (mul<mode>3): Likewise.
6860         (*avx_mul<mode>3): Likewise.
6861         (*avx_vmmul<mode>3): Likewise.
6862         (divv8sf3): Likewise.
6863         (divv4df3): Likewise.
6864         (avx_div<mode>3): Likewise.
6865         (*avx_div<mode>3): Likewise.
6866         (*avx_vmdiv<mode>3): Likewise.
6867         (avx_rcpv8sf2): Likewise.
6868         (*avx_vmrcpv4sf2): Likewise.
6869         (sqrtv8sf2): Likewise.
6870         (avx_sqrtv8sf2): Likewise.
6871         (*avx_vmsqrt<mode>2): Likewise.
6872         (rsqrtv8sf2): Likewise.
6873         (avx_rsqrtv8sf2): Likewise.
6874         (*avx_vmrsqrtv4sf2): Likewise.
6875         (<code><mode>3): Likewise.
6876         (*avx_<code><mode>3_finite): Likewise.
6877         (*avx_<code><mode>3): Likewise.
6878         (*avx_vm<code><mode>3): Likewise.
6879         (*avx_ieee_smin<mode>3): Likewise.
6880         (*avx_ieee_smax<mode>3): Likewise.
6881         (avx_addsubv8sf3): Likewise.
6882         (avx_addsubv4df3): Likewise.
6883         (*avx_addsubv4sf3): Likewise.
6884         (*avx_addsubv2df3): Likewise.
6885         (avx_h<plusminus_insn>v4df3): Likewise.
6886         (avx_h<plusminus_insn>v8sf3): Likewise.
6887         (*avx_h<plusminus_insn>v4sf3): Likewise.
6888         (*avx_h<plusminus_insn>v2df3): Likewise.
6889         (avx_cmpp<avxmodesuffixf2c><mode>3): Likewise.
6890         (avx_cmps<ssemodesuffixf2c><mode>3): Likewise.
6891         (*avx_maskcmp<mode>3): Likewise.
6892         (avx_nand<mode>3): Likewise.
6893         (*avx_<code><mode>3): Likewise.
6894         (*avx_nand<mode>3): Likewise.
6895         (*avx_<code><mode>3): Likewise.
6896         (*avx_cvtsi2ss): Likewise.
6897         (*avx_cvtsi2ssq): Likewise.
6898         (*avx_cvtsi2sd): Likewise.
6899         (*avx_cvtsi2sdq): Likewise.
6900         (*avx_cvtsd2ss): Likewise.
6901         (avx_cvtss2sd): Likewise.
6902         (avx_cvtdq2ps<avxmodesuffix>): Likewise.
6903         (avx_cvtps2dq<avxmodesuffix>): Likewise.
6904         (avx_cvttps2dq<avxmodesuffix>): Likewise.
6905         (*avx_cvtsi2sd): Likewise.
6906         (*avx_cvtsi2sdq): Likewise.
6907         (avx_cvtdq2pd256): Likewise.
6908         (avx_cvtpd2dq256): Likewise.
6909         (avx_cvttpd2dq256): Likewise.
6910         (*avx_cvtsd2ss): Likewise.
6911         (*avx_cvtss2sd): Likewise.
6912         (avx_cvtpd2ps256): Likewise.
6913         (avx_cvtps2pd256): Likewise.
6914         (*avx_movhlps): Likewise.
6915         (*avx_movlhps): Likewise.
6916         (avx_unpckhps256): Likewise.
6917         (*avx_unpckhps): Likewise.
6918         (avx_unpcklps256): Likewise.
6919         (*avx_unpcklps): Likewise.
6920         (avx_movshdup256): Likewise.
6921         (avx_movsldup256): Likewise.
6922         (avx_shufps256): Likewise.
6923         (avx_shufps256_1): Likewise.
6924         (*avx_shufps_<mode>): Likewise.
6925         (*avx_loadhps): Likewise.
6926         (*avx_storelps): Likewise.
6927         (*avx_loadlps): Likewise.
6928         (*avx_movss): Likewise.
6929         (*vec_dupv4sf_avx): Likewise.
6930         (*vec_concatv2sf_avx): Likewise.
6931         (*vec_concatv4sf_avx): Likewise.
6932         (*vec_setv4sf_0_avx): Likewise.
6933         (*vec_setv4sf_avx): Likewise.
6934         (*avx_insertps): Likewise.
6935         (avx_vextractf128<mode>): Likewise.
6936         (vec_extract_lo_<mode>): Likewise.
6937         (vec_extract_hi_<mode>): Likewise.
6938         (vec_extract_lo_<mode>): Likewise.
6939         (vec_extract_hi_<mode>): Likewise.
6940         (vec_extract_lo_v16hi): Likewise.
6941         (vec_extract_hi_v16hi): Likewise.
6942         (vec_extract_lo_v32qi): Likewise.
6943         (vec_extract_hi_v32qi): Likewise.
6944         (avx_unpckhpd256): Likewise.
6945         (*avx_unpckhpd): Likewise.
6946         (avx_movddup256): Likewise.
6947         (*avx_movddup): Likewise.
6948         (avx_unpcklpd256): Likewise.
6949         (*avx_unpcklpd): Likewise.
6950         (avx_shufpd256): Likewise.
6951         (avx_shufpd256_1): Likewise.
6952         (*avx_punpckhqdq): Likewise.
6953         (*avx_punpcklqdq): Likewise.
6954         (*avx_shufpd_<mode>): Likewise.
6955         (*avx_storehpd): Likewise.
6956         (*avx_loadhpd): Likewise.
6957         (*avx_loadlpd): Likewise.
6958         (*avx_movsd): Likewise.
6959         (*vec_concatv2df_avx): Likewise.
6960         (*avx_<plusminus_insn><mode>3): Likewise.
6961         (*avx_<plusminus_insn><mode>3): Likewise.
6962         (*avx_mulv8hi3): Likewise.
6963         (*avxv8hi3_highpart): Likewise.
6964         (*avx_umulv8hi3_highpart): Likewise.
6965         (*avx_umulv2siv2di3): Likewise.
6966         (*avx_mulv2siv2di3): Likewise.
6967         (*avx_pmaddwd): Likewise.
6968         (*avx_mulv4si3): Likewise.
6969         (*avx_ashr<mode>3): Likewise.
6970         (*avx_lshr<mode>3): Likewise.
6971         (*avx_ashl<mode>3): Likewise.
6972         (*avx_<code><mode>3): Likewise.
6973         (*avx_eq<mode>3): Likewise.
6974         (*avx_gt<mode>3): Likewise.
6975         (*avx_nand<mode>3): Likewise.
6976         (*avx_nand<mode>3): Likewise.
6977         (*avx_<code><mode>3): Likewise.
6978         (*avx_<code><mode>3): Likewise.
6979         (*avx_packsswb): Likewise.
6980         (*avx_packssdw): Likewise.
6981         (*avx_packuswb): Likewise.
6982         (*avx_punpckhbw): Likewise.
6983         (*avx_punpcklbw): Likewise.
6984         (*avx_punpckhwd): Likewise.
6985         (*avx_punpcklwd): Likewise.
6986         (*avx_punpckhdq): Likewise.
6987         (*avx_punpckldq): Likewise.
6988         (*avx_pinsr<avxmodesuffixs>): Likewise.
6989         (*avx_pinsrq): Likewise.
6990         (*avx_loadld): Likewise.
6991         (*vec_extractv2di_1_rex64_avx): Likewise.
6992         (*vec_extractv2di_1_avx): Likewise.
6993         (*vec_dupv2di_avx): Likewise.
6994         (*vec_concatv2si_avx): Likewise.
6995         (*vec_concatv4si_1_avx): Likewise.
6996         (*vec_concatv2di_avx): Likewise.
6997         (*vec_concatv2di_rex64_avx): Likewise.
6998         (*avx_uavgv16qi3): Likewise.
6999         (*avx_uavgv8hi3): Likewise.
7000         (*avx_psadbw): Likewise.
7001         (avx_movmskp<avxmodesuffixf2c>256): Likewise.
7002         (*avx_phaddwv8hi3): Likewise.
7003         (*avx_phadddv4si3): Likewise.
7004         (*avx_phaddswv8hi3): Likewise.
7005         (*avx_phsubwv8hi3): Likewise.
7006         (*avx_phsubdv4si3): Likewise.
7007         (*avx_phsubswv8hi3): Likewise.
7008         (*avx_pmaddubsw128): Likewise.
7009         (*avx_pmulhrswv8hi3): Likewise.
7010         (*avx_pshufbv16qi3): Likewise.
7011         (*avx_psign<mode>3): Likewise.
7012         (*avx_palignrti): Likewise.
7013         (avx_blendp<avxmodesuffixf2c><avxmodesuffix>): Likewise.
7014         (avx_blendvp<avxmodesuffixf2c><avxmodesuffix>): Likewise.
7015         (avx_dpp<avxmodesuffixf2c><avxmodesuffix>): Likewise.
7016         (*avx_mpsadbw): Likewise.
7017         (*avx_packusdw): Likewise.
7018         (*avx_pblendvb): Likewise.
7019         (*avx_pblendw): Likewise.
7020         (avx_vtestp<avxmodesuffixf2c><avxmodesuffix>): Likewise.
7021         (avx_ptest256): Likewise.
7022         (avx_roundp<avxmodesuffixf2c>256): Likewise.
7023         (*avx_rounds<ssemodesuffixf2c>): Likewise.
7024         (*avx_aesenc): Likewise.
7025         (*avx_aesenclast): Likewise.
7026         (*avx_aesdec): Likewise.
7027         (*avx_aesdeclast): Likewise.
7028         (avx_vzeroupper): Likewise.
7029         (avx_vzeroupper_rex64): Likewise.
7030         (avx_vpermil<mode>): Likewise.
7031         (avx_vpermilvar<mode>3): Likewise.
7032         (avx_vpermil2<mode>3): Likewise.
7033         (avx_vperm2f128<mode>3): Likewise.
7034         (avx_vbroadcasts<avxmodesuffixf2c><avxmodesuffix>): Likewise.
7035         (avx_vbroadcastss256): Likewise.
7036         (avx_vbroadcastf128_p<avxmodesuffixf2c>256): Likewise.
7037         (avx_vinsertf128<mode>): Likewise.
7038         (vec_set_lo_<mode>): Likewise.
7039         (vec_set_hi_<mode>): Likewise.
7040         (vec_set_lo_<mode>): Likewise.
7041         (vec_set_hi_<mode>): Likewise.
7042         (vec_set_lo_v16hi): Likewise.
7043         (vec_set_hi_v16hi): Likewise.
7044         (vec_set_lo_v32qi): Likewise.
7045         (vec_set_hi_v32qi): Likewise.
7046         (avx_maskloadp<avxmodesuffixf2c><avxmodesuffix>): Likewise.
7047         (avx_maskstorep<avxmodesuffixf2c><avxmodesuffix>): Likewise.
7048         (avx_<avxmodesuffixp><avxmodesuffix>_<avxmodesuffixp>): Likewise.
7049         (avx_<avxmodesuffixp>_<avxmodesuffixp><avxmodesuffix>): Likewise.
7050         (vec_init<mode>): Likewise.
7051         (*vec_concat<mode>_avx): Likewise.
7052         (blendbits): Support V8SF and V4DF.
7053         (sse2_movq128): Support AVX.
7054         (<sse>_movnt<mode>): Likewise.
7055         (sse2_movntv2di): Likewise.
7056         (sse_rcpv4sf2): Likewise.
7057         (sse_sqrtv4sf2): Likewise.
7058         (sse_rsqrtv4sf2): Likewise.
7059         (<sse>_comi): Likewise.
7060         (<sse>_ucomi): Likewise.
7061         (sse_cvtss2si): Likewise.
7062         (sse_cvtss2si_2): Likewise.
7063         (sse_cvtss2siq): Likewise.
7064         (sse_cvtss2siq_2): Likewise.
7065         (sse_cvttss2si): Likewise.
7066         (sse_cvttss2siq): Likewise.
7067         (sse2_cvtsd2si): Likewise.
7068         (sse2_cvtsd2si_2): Likewise.
7069         (sse2_cvtsd2siq): Likewise.
7070         (sse2_cvtsd2siq_2): Likewise.
7071         (sse2_cvttsd2si): Likewise.
7072         (sse2_cvttsd2siq): Likewise.
7073         (sse2_cvtdq2pd): Likewise.
7074         (*sse2_cvtpd2dq): Likewise.
7075         (*sse2_cvttpd2dq): Likewise.
7076         (*sse2_cvtpd2ps): Likewise.
7077         (sse2_cvtps2pd): Likewise.
7078         (sse3_movshdup): Likewise.
7079         (sse3_movsldup): Likewise.
7080         (sse_storehps): Likewise.
7081         (*sse4_1_extractps): Likewise.
7082         (sse2_storelpd): Likewise.
7083         (vec_dupv2df_sse3): Likewise.
7084         (*vec_concatv2df_sse3): Likewise.
7085         (*sse4_1_pextrb): Likewise.
7086         (*sse4_1_pextrb_memory): Likewise.
7087         (*sse2_pextrw): Likewise.
7088         (*sse4_1_pextrw_memory): Likewise.
7089         (*sse4_1_pextrd): Likewise.
7090         (*sse4_1_pextrq): Likewise.
7091         (sse2_pshufd_1): Likewise.
7092         (sse2_pshuflw_1): Likewise.
7093         (sse2_pshufhw_1): Likewise.
7094         (*sse2_storeq_rex64): Likewise.
7095         (*vec_dupv4si): Likewise.
7096         (<sse>_movmskp<ssemodesuffixf2c>): Likewise.
7097         (sse2_pmovmskb): Likewise.
7098         (*sse2_maskmovdqu): Likewise.
7099         (*sse2_maskmovdqu_rex64): Likewise.
7100         (sse_ldmxcsr): Likewise.
7101         (sse_stmxcsr): Likewise.
7102         (abs<mode>2): Likewise.
7103         (sse4_1_movntdqa): Likewise.
7104         (sse4_1_phminposuw): Likewise.
7105         (sse4_1_extendv8qiv8hi2): Likewise.
7106         (*sse4_1_extendv8qiv8hi2): Likewise.
7107         (sse4_1_extendv4qiv4si2): Likewise.
7108         (*sse4_1_extendv4qiv4si2): Likewise.
7109         (sse4_1_extendv2qiv2di2): Likewise.
7110         (*sse4_1_extendv2qiv2di2): Likewise.
7111         (sse4_1_extendv4hiv4si2): Likewise.
7112         (*sse4_1_extendv4hiv4si2): Likewise.
7113         (sse4_1_extendv2hiv2di2): Likewise.
7114         (*sse4_1_extendv2hiv2di2): Likewise.
7115         (sse4_1_extendv2siv2di2): Likewise.
7116         (*sse4_1_extendv2siv2di2): Likewise.
7117         (sse4_1_zero_extendv8qiv8hi2): Likewise.
7118         (*sse4_1_zero_extendv8qiv8hi2): Likewise.
7119         (sse4_1_zero_extendv4qiv4si2): Likewise.
7120         (*sse4_1_zero_extendv4qiv4si2): Likewise.
7121         (sse4_1_zero_extendv2qiv2di2): Likewise.
7122         (*sse4_1_zero_extendv2qiv2di2): Likewise.
7123         (sse4_1_zero_extendv4hiv4si2): Likewise.
7124         (*sse4_1_zero_extendv4hiv4si2): Likewise.
7125         (sse4_1_zero_extendv2hiv2di2): Likewise.
7126         (*sse4_1_zero_extendv2hiv2di2): Likewise.
7127         (sse4_1_zero_extendv2siv2di2): Likewise.
7128         (*sse4_1_zero_extendv2siv2di2): Likewise.
7129         (sse4_1_ptest): Likewise.
7130         (sse4_1_roundp<ssemodesuffixf2c>): Likewise.
7131         (sse4_2_pcmpestri): Likewise.
7132         (sse4_2_pcmpestrm): Likewise.
7133         (sse4_2_pcmpistri): Likewise.
7134         (sse4_2_pcmpistrm): Likewise.
7135         (aesimc): Likewise.
7136         (aeskeygenassist): Likewise.
7137
7138 2008-08-28  Uros Bizjak  <ubizjak@gmail.com>
7139
7140         * config/i386/predicates.md (vzeroall_operation): New.
7141
7142         * config/i386/sse.md (avx_vzeroall): New.
7143         (*avx_vzeroall): Likewise.
7144
7145 2008-08-28  Paul Brook  <paul@codesourcery.com>
7146             Mark Shinwell  <shinwell@codesourcery.com>
7147             Richard Earnshaw  <richard.earnshaw@arm.com>
7148
7149         * config/arm/arm.c (TARGET_MAX_ANCHOR_OFFSET): New.
7150         (TARGET_MIN_ANCHOR_OFFSET): New.
7151         (arm_override_options): Set correct anchor ranges for Thumb-1
7152         and Thumb-2 if required.
7153         (legitimize_pic_address): Handle case involving a TLS symbol
7154         reference with an addend.
7155         (arm_optimization_options): Enable section anchors at -O1 and
7156         above.
7157         * config/arm/arm.h (OPTIMIZATION_OPTIONS): New.
7158         * config/arm/arm-protos.h (arm_optimization_options): New.
7159
7160 2008-08-28  Nick Clifton  <nickc@redhat.com>
7161
7162         * config/stormy16/stormy16.h (IRA_COVER_CLASSES): Define.
7163         * config/stormy16/stormy16.md (zero_extendqihi2): Fix length
7164         attribute.
7165
7166         * config/v850/v850.h (IRA_COVER_CLASSES): Define.
7167         * config/v850/v850.md (return): Remove frame size restriction.
7168
7169         * config/mcore/mcore.h (IRA_COVER_CLASSES): Define.
7170
7171         * config/iq2000/iq2000.h (IRA_COVER_CLASSES): Define.
7172
7173         * config/fr30/fr30.h (IRA_COVER_CLASSES): Define.
7174
7175         * config/m32r/m32r.h (IRA_COVER_CLASSES): Define.
7176
7177 2008-08-28  Paul Brook  <paul@codesourcery.com>
7178
7179         * config/arm/vfp11.md: Update license notice.
7180         * config/arm/cortex-r4.md: Ditto.
7181
7182 2008-08-28  Richard Guenther  <rguenther@suse.de>
7183
7184         PR tree-optimization/37207
7185         * tree-ssa-ifcombine.c (recognize_single_bit_test): Fix
7186         tuplification bug.
7187
7188 2008-08-28  Dodji Seketeli  <dodji@redhat.com>
7189
7190         PR c++/36741
7191         * tree.c (int_fits_type_p): Don't forget unsigned integers
7192           of type sizetype which higher end word equals -1.
7193
7194 2008-08-28  Ira Rosen  <irar@il.ibm.com>
7195
7196         * target.h (struct vectorize): Add new target builtin.
7197         * tree-vectorizer.c (destroy_loop_vec_info): Call
7198         vect_free_slp_instance instead of vect_free_slp_node.
7199         * tree-vectorizer.h (enum slp_load_perm_type): New.
7200         (struct _slp_instance): Add new fields.
7201         (SLP_INSTANCE_LOAD_PERMUTATION): New.
7202         (SLP_INSTANCE_LOADS): New.
7203         (vect_free_slp_tree): Remove.
7204         (vect_free_slp_instance): Declare.
7205         (SLP_TREE_LOADS_PERM_TYPE, TARG_VEC_PERMUTE_COST): New.
7206         (vectorizable_load): Add argument.
7207         (vect_transform_slp_perm_load): New.
7208         * tree-vect-analyze.c (vect_analyze_operations): Add an argument to
7209         vectorizable_load.
7210         (vect_get_place_in_interleaving_chain): New function.
7211         (vect_free_slp_tree): Make static.
7212         (vect_free_slp_instance): New function.
7213         (vect_build_slp_tree): Add new arguments. Allow load permutations and
7214         collect the load location in the interleaving chain.
7215         (vect_supported_slp_permutation_p): New function.
7216         (vect_supported_load_permutation_p): Likewise.
7217         (vect_analyze_slp_instance): In case of loads permutation, call
7218         vect_supported_load_permutation_p to check that the permutation is
7219         supported.
7220         * target-def.h (TARGET_VECTORIZE_BUILTIN_VEC_PERM): New.
7221         * tree-vect-transform.c (vect_transform_stmt): Add new argument.
7222         (vect_create_mask_and_perm): New function.
7223         (vect_get_mask_element, vect_transform_slp_perm_load): Likewise.
7224         (vectorizable_load): Add an argument. Don't keep the created vectors
7225         statements in the node if permutation is required. Call
7226         vect_transform_slp_perm_load to generate the permutation.
7227         (vect_transform_stmt): Add new argument. Call vectorizable_load with
7228         additional argument.
7229         (vect_schedule_slp_instance): In case of loads permutation, allocate
7230         vectorized statements structure for all the related SLP nodes. Call
7231         vect_transform_stmt with addditional argument.
7232         (vect_transform_loop): Call vect_transform_stmt with correct arguments.
7233         * config/spu/spu.c (spu_builtin_vec_perm): New.
7234         (TARGET_VECTORIZE_BUILTIN_VEC_PERM): Redefine.
7235         * config/spu/spu.h (TARG_VEC_PERMUTE_COS): Define.
7236         * config/rs6000/rs6000.c (rs6000_builtin_vec_perm): New.
7237         (TARGET_VECTORIZE_BUILTIN_VEC_PERM): Redefine.
7238
7239 2008-08-28  Chris Fairles  <chris.fairles@gmail.com>
7240
7241         * gthr-posix.h (__gthread_create,  __gthread_join, __gthread_detach,
7242         __gthread_mutex_timed_lock, __gthread_recursive_mutex_timed_lock,
7243         __gthread_cond_signal, __gthread_cond_timedwait,
7244         __gthread_cond_timedwait_recursive): New functions.
7245         * gthr-posix.c (pthread_mutex_timedlock, pthread_cond_timedwait):
7246         Likewise.
7247         * gthr.h: Comment on defining __GTHREADS_CXX0X macro in conforming
7248         thread interfaces.
7249
7250 2008-08-28  Richard Guenther  <rguenther@suse.de>
7251
7252         PR middle-end/37005
7253         * fold-const.c (maybe_canonicalize_comparison_1): Require
7254         undefined overflow only for canonicalizing A +- CST cmp CST.
7255         Make sure to not generate new constants that are not inside
7256         their TYPE_MIN/MAX_VALUE range.
7257         (maybe_canonicalize_comparison): Remove undefined overflow
7258         checking from here.
7259         (fold_binary): Remove now duplicate folding.
7260
7261 2008-08-27  Paolo Carlini  <paolo.carlini@oracle.com>
7262
7263         * c-typeck.c (convert_for_assignment): Adjust WARN_FOR_ASSIGNMENT
7264         use not updated in the last change.
7265
7266 2008-08-27  Kaz Kojima  <kkojima@gcc.gnu.org>
7267
7268         * config/sh/sh.h (REG_CLASS_CONTENTS): Drop fr32 from FPUL_REGS.
7269         (IRA_COVER_CLASSES): Add FPUL_REGS.
7270
7271 2008-08-27  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
7272
7273         PR 37217
7274         * c-common.c (conversion_warning): Check for null operands.
7275
7276 2008-08-27  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
7277
7278         PR c/31673
7279         * c-decl.c (check_for_loop_decls): Improve error message. Give
7280         hint.
7281
7282 2008-08-27  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
7283
7284         PR c/37186
7285         * c-typeck.c (WARN_FOR_ASSIGNMENT): Add OPT parameter.
7286         (convert_for_assignment): Pass corrent OPT_W* parameter to
7287         WARN_FOR_ASSIGNMENT.
7288
7289 2008-08-27  Paolo Carlini  <paolo.carlini@oracle.com>
7290
7291         PR c++/35321
7292         * c-common.c (fold_offsetof_1): Handle TARGET_EXPR like CALL_EXPR.
7293
7294 2008-08-27  Paul Brook  <paul@codesourcery.com>
7295
7296         * config.gcc: Loosen checks for arm uclinux eabi targets.
7297
7298 2008-08-27  Paul Brook  <paul@codesourcery.com>
7299
7300         * config/arm/t-arm-coff (LIB1ASMFUNCS): Add missing undescrore on
7301         _clzsi2.
7302         * config/arm/t-linux (LIB1ASMFUNCS): Ditto.
7303
7304 2008-08-26  Douglas Gregor  <doug.gregor@gmail.com>
7305
7306         * c-common.c (do_switch_warnings): Look through the CONST_DECLs in
7307         the enumerators of an ENUMERAL_TYPE.
7308         * dbxout.c (dbxout_type): Ditto.
7309
7310 2008-08-26  Andrew Pinski  <andrew_pinski@playstation.sony.com>
7311
7312         PR rtl-opt/37219
7313         * fwprop.c (fwprop): Check that the loop_father is the outer loop.
7314         (fwprop_addr): Check that the loop_father is not the outer loop.
7315
7316 2008-08-26  Paul Brook  <paul@codesourcery.com>
7317
7318         * config/arm/vfp.md: Document fmul{s,d} and fmac{s,d} types.
7319         Remove documentation entry for fmul type.
7320         Use fmuls to annotate single-precision multiplication patterns,
7321         fmuld to annotate double-precision multiplication patterns,
7322         fmacs to annotate single-precision multiply-accumulate patterns
7323         and fmacd to annotate double-precision multiply-accumulate patterns.
7324         * config/arm/vfp11.md: Update reservations accordingly.
7325         * config/arm/arm.md: Note that certain values of the "type"
7326         attribute are documented in vfp.md.
7327         * config/arm/arm1020e.md: Remove out of date duplicate comment.
7328         (v10_cvt): Use new fmul types.
7329
7330 2008-08-26  Paul Brook  <paul@codesourcery.com>
7331
7332         * config/arm/vfp.md: Move pipeline description for VFP11 to...
7333         * config/arm/vfp11.md: ...here.  New.
7334         * config/arm/arm.md: Include vfp11.md.
7335
7336 2008-08-26  Hans-Peter Nilsson  <hp@axis.com>
7337
7338         * opts.c (decode_options) [!IRA_COVER_CLASSES]: Add missing
7339         parameter to inform call.
7340
7341 2008-08-26  Jeff Law  <law@redhat.com>
7342
7343         * mn10300.md (movqi, movhi): Split i->d*a case into two cases to
7344         avoid the possibility of getting DATA_OR_ADDRESS_REGS as the
7345         preferred class when copying a constant into a partial word register.
7346
7347 2008-08-26  Ben Elliston  <bje@au.ibm.com>
7348
7349         * rtlanal.c: Fix uses of "it's" with "its" where appropriate.
7350         * cp/typeck.c: Likewise.
7351         * cp/tree.c: Likewise.
7352         * gimple-low.c: Likewise.
7353         * jump.c: Likewise.
7354
7355 2008-08-26  Vladimir Makarov  <vmakarov@redhat.com>
7356
7357         * ira-build.c, ira-color.c, ira-costs.c, ira.h, ira-lives.c,
7358         ira.c, ira-conflicts.c, ira-emit.c, ira-int.h: New files.
7359
7360         * doc/passes.texi: Describe IRA.
7361
7362         * doc/tm.texi (IRA_COVER_CLASSES,
7363         IRA_HARD_REGNO_ADD_COST_MULTIPLIER): Describe the new macros.
7364
7365         * doc/invoke.texi (ira-max-loops-num): Describe the new parameter.
7366         (-fira, -fira-algorithm, -fira-coalesce, -fno-ira-move-spills,
7367         -fira-propagate-cost, -fno-ira-share-save-slots,
7368         -fno-ira-share-spill-slots, -fira-verbose): Describe new options.
7369
7370         * flags.h (ira_algorithm): New enumeration.
7371         (flag_ira_algorithm, flag_ira_verbose): New external variable
7372         declarations.
7373
7374         * postreload.c (gate_handle_postreload): Don't do post reload
7375         optimizations unless the reload is completed.
7376
7377         * reload.c (push_reload, find_dummy_reload): Use DF_LR_OUT for
7378         IRA.
7379
7380         * tree-pass.h (pass_ira): New external variable declaration.
7381
7382         * reload.h: Add 2008 to the Copyright.
7383
7384         * cfgloopanal.c: Include params.h.
7385         (estimate_reg_pressure_cost): Decrease cost for IRA optimization
7386         mode.
7387
7388         * params.h (IRA_MAX_LOOPS_NUM): New macro.
7389
7390         * toplev.c (ira.h): New include.
7391         (flag_ira_algorithm, flag_ira_verbose): New external variables.
7392         (backend_init_target): Call ira_init.
7393         (backend_init): Call ira_init_once.
7394         (finalize): Call finish_ira_once.
7395
7396         * toplev.h (flag_ira, flag_ira_coalesce, flag_ira_move_spills,
7397         flag_ira_share_save_slots, flag_ira_share_spill_slots): New
7398         external variables.
7399
7400         * regs.h (contains_reg_of_mode, move_cost, may_move_in_cost,
7401         may_move_out_cost): New external variable declarations.
7402         (move_table): New typedef.
7403
7404         * caller-save.c: Include headers output.h and ira.h.
7405         (no_caller_save_reg_set): New global variable.
7406         (save_slots_num, save_slots): New variables.
7407         (reg_save_code, reg_restore_code, add_stored_regs): Add
7408         prototypes.
7409         (init_caller_save): Set up no_caller_save_reg_set.
7410         (init_save_areas): Reset save_slots_num.
7411         (saved_hard_reg): New structure.
7412         (hard_reg_map, saved_regs_num, all_saved_regs): New variables.
7413         (initiate_saved_hard_regs, new_saved_hard_reg,
7414         finish_saved_hard_regs, saved_hard_reg_compare_func): New
7415         functions.
7416         (setup_save_areas): Add code for sharing stack slots.
7417         (all_blocks): New variable.
7418         (save_call_clobbered_regs): Process pseudo-register too.
7419         (mark_set_regs): Process pseudo-register too.
7420         (insert_one_insn): Put the insn after bb note in a empty basic
7421         block.  Add insn check.
7422
7423         * global.c (eliminable_regset): Make it external.
7424         (mark_elimination): Use DF_LR_IN for IRA.
7425         (pseudo_for_reload_consideration_p): New.
7426         (build_insn_chain): Make it external.  Don't ignore spilled
7427         pseudos for IRA.  Use pseudo_for_reload_consideration_p.
7428         (gate_handle_global_alloc): New function.
7429         (pass_global_alloc): Add the gate function.
7430
7431         * opts.c (decode_options): Set up flag_ira.  Print the warning for
7432         -fira.
7433         (common_handle_option): Process -fira-algorithm and -fira-verbose.
7434
7435         * timevar.def (TV_IRA, TV_RELOAD): New passes.
7436
7437         * regmove.c (regmove_optimize): Don't do replacement of output for
7438         IRA.
7439
7440         * hard-reg-set.h (no_caller_save_reg_set, reg_class_subclasses):
7441         New external variable declarations.
7442
7443         * local-alloc.c (update_equiv_regs): Make it external.  Return
7444         true if jump label rebuilding should be done.  Rescan new_insn for
7445         notes.
7446         (gate_handle_local_alloc): New function.
7447         (pass_local_alloc): Add the gate function.
7448
7449         * alias.c (value_addr_p, stack_addr_p): New functions.
7450         (nonoverlapping_memrefs_p): Use them for IRA.
7451
7452         * common.opt (fira, fira-algorithm, fira-coalesce,
7453         fira-move-spills, fira-share-save-slots, fira-share-spill-slots,
7454         fira-verbose): New options.
7455
7456         * regclass.c (reg_class_subclasses, contains_reg_of_mode,
7457         move_cost, may_move_in_cost, may_move_out_cost): Make the
7458         variables external.
7459         (move_table): Remove typedef.
7460         (init_move_cost): Make it external.
7461         (allocate_reg_info, resize_reg_info, setup_reg_classes): New
7462         functions.
7463
7464         * rtl.h (init_move_cost, allocate_reg_info, resize_reg_info,
7465         setup_reg_classes): New function prototypes.
7466         (eliminable_regset): New external variable declaration.
7467         (build_insn_chain, update_equiv_regs): New function prototypes.
7468
7469         * Makefile.in (IRA_INT_H): New definition.
7470         (OBJS-common): Add ira.o, ira-build.o, ira-costs.o,
7471         ira-conflicts.o, ira-color.o, ira-emit.o, and ira-lives.o.
7472         (reload1.o, toplev.o): Add dependence on ira.h.
7473         (cfgloopanal.o): Add PARAMS_H.
7474         (caller-save.o): Add dependence on output.h and ira.h.
7475         (ira.o, ira-build.o, ira-costs.o, ira-conflicts.o, ira-color.o,
7476         ira-emit.o, ira-lives.o): New entries.
7477
7478         * passes.c (pass_ira): New pass.
7479
7480         * params.def (PARAM_IRA_MAX_LOOPS_NUM): New parameter.
7481
7482         * reload1.c (ira.h): Include the header.
7483         (changed_allocation_pseudos): New bitmap.
7484         (init_reload): Initiate the bitmap.
7485         (compute_use_by_pseudos): Permits spilled registers in FROM.
7486         (temp_pseudo_reg_arr): New variable.
7487         (reload): Allocate and free temp_pseudo_reg_arr.  Sort pseudos for
7488         IRA.  Call alter_reg with the additional parameter.  Don't clear
7489         spilled_pseudos for IRA.  Restore original insn chain for IRA.
7490         Clear changed_allocation_pseudos at the end of reload.
7491         (calculate_needs_all_insns): Call IRA's mark_memory_move_deletion.
7492         (hard_regno_to_pseudo_regno): New variable.
7493         (count_pseudo): Check spilled pseudos.  Set up
7494         hard_regno_to_pseudo_regno.
7495         (count_spilled_pseudo): Check spilled pseudos. Update
7496         hard_regno_to_pseudo_regno.
7497         (find_reg): Use better_spill_reload_regno_p.  Check
7498         hard_regno_to_pseudo_regno.
7499         (alter_reg): Set up spilled_pseudos.  Add a new parameter.  Add
7500         code for IRA.
7501         (eliminate_regs_1): Use additional parameter for alter_reg.
7502         (finish_spills): Set up pseudo_previous_regs only for spilled
7503         pseudos.  Call reassign_pseudos once for all spilled pseudos, pass
7504         more arguments.  Don't clear live_throughout and dead_or_set for
7505         spilled pseudos.  Use additional parameter for alter_reg.  Call
7506         mark_allocation_change.  Set up changed_allocation_pseudos.
7507         Remove sanity check.
7508         (emit_input_reload_insns, delete_output_reload): Use additional
7509         parameter for alter_reg.  Call mark_allocation_change.
7510         (substitute, gen_reload_chain_without_interm_reg_p): New
7511         functions.
7512         (reloads_conflict): Use gen_reload_chain_without_interm_reg_p.
7513
7514         * testsuite/gcc.dg/20080410-1.c: New file.
7515
7516         * config/s390/s390.h (IRA_COVER_CLASSES,
7517         IRA_HARD_REGNO_ADD_COST_MULTIPLIER): Define.
7518
7519         * config/sparc/sparc.h (IRA_COVER_CLASSES): New macro.
7520
7521         * config/i386/i386.h (IRA_COVER_CLASSES): Ditto.
7522
7523         * config/ia64/ia64.h (IRA_COVER_CLASSES): Ditto.
7524
7525         * config/rs6000/rs6000.h (IRA_COVER_CLASSES): Ditto.
7526
7527         * config/arm/arm.h (IRA_COVER_CLASSES): Ditto.
7528
7529         * config/alpha/alpha.h (IRA_COVER_CLASSES): Ditto.
7530
7531         2008-08-24  Jeff Law  <law@redhat.com>
7532         * ira.c (setup_reg_class_intersect_union): Prefer smallest class
7533         when ignoring unavailable registers.
7534
7535         2008-08-24  Jeff Law  <law@redhat.com>
7536         * ira-color.c (coalesced_pseudo_reg_slot_compare): Check
7537         FRAME_GROWS_DOWNWARD and STACK_GROWS_DOWNWARD.
7538         * ira.c (setup_eliminable_regset): Check stack_realign_needed.
7539         * config/mn10300/mn10300.h (IRA_COVER_CLASSES): New macro.
7540
7541         2008-06-03 Steve Chamberlain <steve.chamberlain@gmail.com>
7542         * ira-build.c (allocno_range_compare_func): Stabilize sort.
7543
7544         2008-05-29 Andy Hutchinson <hutchinsonandy@aim.com>
7545         * config/avr/avr.h (IRA_COVER_CLASSES): New macro.
7546         * reload1.c (find_reg): Process registers in register allocation order.
7547
7548         2008-05-10 Richard Sandiford <rsandifo@nildram.co.uk>
7549         * toplev.c (backend_init_target): Move ira_init call from
7550         here...
7551         (lang_dependent_init_target): ...to here.
7552
7553         2008-05-10 Richard Sandiford <rsandifo@nildram.co.uk>
7554         * ira.c (setup_class_subset_and_memory_move_costs): Don't
7555         calculate memory move costs for NO_REGS.
7556
7557         2008-05-05 Kaz Kojima <kkojima@gcc.gnu.org>
7558         * ira-color.c (ira_fast_allocation): Use no_stack_reg_p only if
7559         STACK_REGS is defined.
7560
7561         2008-04-08 Andrew Pinski <andrew_pinski@playstation.sony.com>
7562         * config/spu/spu.h (IRA_COVER_CLASSES): New macro.
7563
7564         2008-04-04 Bernd Schmidt <bernd.schmidt@analog.com>
7565         * config/bfin/bfin.h (IRA_COVER_CLASSES): New macro.
7566
7567         2008-04-04 Kaz Kojima <kkojima@gcc.gnu.org>
7568         * config/sh/sh.h (IRA_COVER_CLASSES): Define.
7569         * config/sh/sh.md (movsicc_true+3): Check if emit returns a
7570         barrier.
7571
7572 2008-08-26  Victor Kaplansky  <victork@il.ibm.com>
7573             Dorit Nuzman  <dorit@il.ibm.com>
7574
7575         * gcc/config/spu/spu.md (vec_extract_evenv4si,
7576         vec_extract_evenv4sf, vec_extract_evenv8hi,
7577         vec_extract_evenv16qi, vec_extract_oddv4si,
7578         vec_extract_oddv4sf, vec_extract_oddv8hi, vec_extract_oddv16qi,
7579         vec_interleave_highv4sf, vec_interleave_lowv4sf,
7580         vec_interleave_highv4si, vec_interleave_lowv4si,
7581         vec_interleave_highv8hi, vec_interleave_lowv8hi,
7582         vec_interleave_highv16qi, vec_interleave_lowv16qi,
7583         vec_pack_trunc_v8hi, vec_pack_trunc_v4si): Implement.S
7584
7585 2008-08-25  Janis Johnson  <janis187@us.ibm.com>
7586
7587         PR target/36756
7588         * config/rs6000/rs6000.c (optimization_options): Don't default to
7589         section anchors without toplevel reorder.
7590
7591 2008-08-25  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
7592
7593         * config/spu/spu_mfcio.h (mfc_begin_critical_section): New function.
7594         (mfc_end_critical_section): Likewise.
7595
7596 2008-08-25  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
7597
7598         * config/rs6000/rs6000.c (rs6000_handle_altivec_attribute): Propagate
7599         all type qualifiers from element type to vector type.
7600
7601 2008-08-25  David Daney  <ddaney@avtrex.com>
7602
7603         * config/mips/mips.md (immediate_insn): Move up in file, fix
7604         comment typo, reformat.
7605         (fetchop_bit, atomic_hiqi_op memory_barrier,
7606         sync_compare_and_swap<mode>, compare_and_swap_12, sync_add<mode>,
7607         sync_<optab><mode>, sync_<optab>_12, sync_old_<optab><mode>,
7608         sync_old_<optab>_12, sync_new_<optab><mode>, sync_new_<optab>_12,
7609         sync_nand<mode>, sync_nand_12, sync_old_nand<mode>,
7610         sync_old_nand_12, sync_new_nand<mode>, sync_new_nand_12,
7611         sync_sub<mode>, sync_old_add<mode>, sync_old_sub<mode>,
7612         sync_new_add<mode>, sync_new_sub<mode>, sync_<optab><mode>,
7613         sync_old_<optab><mode>, sync_new_<optab><mode>, sync_nand<mode>,
7614         sync_old_nand<mode>, sync_new_nand<mode>,
7615         sync_lock_test_and_set<mode>, sync_lock_test_and_set<mode>,
7616         test_and_set_12): Moved to sync.md.
7617         (sync.md): Include.
7618         * config/mips/sync.md: New file.
7619
7620 2008-08-25  Richard Henderson  <rth@redhat.com>
7621
7622         * dwarf2out.c (def_cfa_1): Don't scale by DWARF_CIE_DATA_ALIGNMENT.
7623         (regsave): Likewise.
7624         (lookup_cfa_1): Don't rescale by DWARF_CIE_DATA_ALIGNMENT.
7625         (output_cfi_directive): Likewise.
7626         (div_data_align): New.
7627         (output_cfi): Use it.
7628
7629 2008-08-24  Adam Nemet  <anemet@caviumnetworks.com>
7630
7631         * config.gcc (mips64*-*-linux*): Handle mips64octeon*-*-linux*.
7632         * config/mips/mips.h (enum processor_type): Add PROCESSOR_OCTEON.
7633         (TARGET_OCTEON): New macro.
7634         (TARGET_CPU_CPP_BUILTINS): Define __OCTEON__ for Octeon.
7635         (MIPS_ISA_LEVEL_SPEC, MIPS_ARCH_FLOAT_SPEC): Handle -march=octeon.
7636         (ISA_HAS_POP): New macro.
7637         * config/mips/driver-native.c (host_detect_local_cpu): Handle
7638         Octeon.
7639         * config/mips/mips.c (mips_cpu_info_table, mips_rtx_cost_data):
7640         Handle Octeon.
7641         * config/mips/mips.md (cpu): Add octeon.
7642         (type): Add pop attribute value.
7643         (popcount<mode>2): New pattern.
7644         * doc/invoke.texi (-march=@var{arch}): Add octeon.
7645
7646 2008-08-24  Jan Hubicka  <jh@suse.cz>
7647
7648         * doc/invoke.texi (-fipa-cp-clone): New option.
7649         (-fipa-cp): Update docs.
7650         (--param ipcp-unit-growth):New.
7651         * ipa-cp.c: Include fibheap.h, params.h
7652         (ipcp_initialize_node_lattices): When not cloning, all externally
7653         visible functions are bottom.
7654         (ipcp_need_redirect_p): Accept clones.
7655         (ipcp_insert_stage): Use cost driven heuristics.
7656         (max_count, dead_nodes): New static vars.
7657         (ipcp_need_original_clone_p, ipcp_estimate_cloning_cost,
7658         ipcp_const_param_count): New functions.
7659         * common.opt (ipa-cp-clone): New command line option.
7660         * params.def (ipcp-unit-growth): New.
7661
7662 2008-08-24  Jan Hubicka  <jh@suse.cz>
7663
7664         * tree-inline.c (tree_function_versioning): Look harder
7665         for referenced vars.
7666
7667 2008-08-24  Razya Ladelsky  <razya@il.ibm.com>
7668
7669         PR tree-optimization/37185
7670         * matrix-reorg.c (transform_access_sites): Update changed stmt.
7671
7672 2008-08-23  Jan Hubicka  <jh@suse.cz>
7673
7674         * ipa-cp.c (ipcp_analyze_node): New function.
7675         (ipcp_update_cloned_node): Use it.
7676         (ipcp_init_stage): Likewise.
7677         * ipa-inline.c (function_insertion_hook_holder): New static var.
7678         (analyze_function): Break out from ....
7679         (inline_generate_summary): Here; register insertion hook.
7680         (cgraph_decide_inlining): Remove hook.
7681         (add_new_function): New function.
7682
7683 2008-08-23  Jan Hubicka  <jh@suse.cz>
7684
7685         * opts.c (decode_options): Revert accidental change enabling ipa-cp.
7686
7687 2008-08-23  Jan Hubicka  <jh@suse.cz>
7688
7689         * ipa-cp.c (constant_val_insert): Remove.
7690         (ipcp_propagate_one_const): Remove.
7691         (ipcp_create_replace_map): Always insert replacements to the map.
7692         (ipcp_insert_stage): Do not try to insert statements by hand.
7693         * tree-inline.c (insert_init_stmt): Break out from ...
7694         (setup_one_parameter): ... here; allow NULL BB pointer.
7695         (tree_function_versioning): Use setup_one_parameter to process
7696         replacement map.
7697
7698 2008-08-23  Jan Hubicka  <jh@suse.cz>
7699
7700         * tree.c (decl_address_ip_invariant_p): New function.
7701         * tree.h (decl_address_ip_invariant_p): Declare.
7702         * gimple.c (strip_invariant_refs): Break out from ...
7703         (is_gimple_invariant_address): ... here
7704         (is_gimple_ip_invariant_address): New function.
7705         (is_gimple_ip_invariant): New function.
7706         * gimple.h (is_gimple_ip_invariant_address, is_gimple_ip_invariant):
7707         Declare.
7708
7709         * ipa-cp.c (ipcp_lat_is_const): Remove handling of IPA_CONST_VALUE_REF.
7710         (ipcp_lat_is_insertable): All constants are insertable.
7711         (ipcp_lattice_from_jfunc, ipcp_print_all_lattices): Remove handling of
7712         IPA_CONST_VALUE_REF.
7713         (ipcp_initialize_node_lattices): Propagate all types of operands.
7714         (build_const_val): Do not handle IPA_CONST_VALUE_REF.
7715         (ipcp_create_replace_map): Reformat.
7716         (ipcp_need_redirect_p): Simplify.
7717         (ipcp_insert_stage): Check that argument is used before clonning.
7718         * ipa-prop.c (ipa_print_node_jump_functions): Do not handle
7719         IPA_CONST_REF.
7720         (compute_scalar_jump_functions): Simplify using is_gimple_ip_invariat.
7721         (determine_cst_member_ptr): Keep wrapping ADDR_EXPR of members.
7722         (update_call_notes_after_inlining): Expect ADDR_EXPR in operand.
7723         * ipa-prop.h (jump_func_type): Remove IPA_CONST_REF.
7724         (jump_func_type): Remove IPA_CONST_VALUE_REF.
7725         * tree-inline.c (tree_function_versioning): Add variables referenced
7726         by replacing trees.
7727
7728 2008-08-23  Jan Hubicka  <jh@suse.cz>
7729
7730         PR target/37094
7731         * i386.c (standard_80387_constant_p): Use optimize_size.
7732
7733 2008-08-23  Ira Rosen  <irar@il.ibm.com>
7734
7735         PR tree-optimization/37161
7736         * tree-vectorizer.h (vect_get_smallest_scalar_type): Declare.
7737         * tree-vect-analyze.c (vect_get_smallest_scalar_type): New function.
7738         (vect_determine_vectorization_factor): Move the scalar type
7739         retrieval to vect_get_smallest_scalar_type.
7740         (vect_build_slp_tree): Call vect_get_smallest_scalar_type to get
7741         scalar type. Remove redundant computation.
7742         * tree-vect-transform.c (vect_get_constant_vectors): Add argument.
7743         (vect_get_slp_defs): Take the type of RHS into account if
7744         necessary by calling vect_get_smallest_scalar_type. Call
7745         vect_get_constant_vectors with additional argument.
7746
7747 2008-08-23  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
7748
7749         PR 35648
7750         * doc/invoke.texi (Wwrite-strings): Clarify description.
7751
7752 2008-08-23  Ira Rosen  <irar@il.ibm.com>
7753
7754         PR tree-optimization/37174
7755         * tree-vect-analyze.c (vect_get_and_check_slp_defs): Check that the
7756         def stmt is a part of the loop before accessing its stmt_vec_info.
7757
7758 2008-08-22  Anatoly Sokolov  <aesok@post.ru>
7759
7760         PR target/11259
7761         * config/avr/avr.md (UNSPEC_SWAP): New constants.
7762         (*swap): New insn pattern.
7763         (*ashlqi3): Rename from ashlqi3 insn pattern.
7764         (ashlqi3): New expanders.
7765         (*lshrqi3): Rename from lshrqi3 insn pattern.
7766         (lshrqi3): New expanders.
7767         (ashlqi3_const4, ashlqi3_const5, ashlqi3_const6, lshrqi3_const4,
7768         lshrqi3_const5, lshrqi3_const6): New splitters.
7769         (andi, ashlqi3_l_const4, ashlqi3_l_const5, ashlqi3_l_const6,
7770         lshrqi3_l_const4, lshrqi3_l_const5, lshrqi3_l_const6): Define
7771         peephole2 patterns.
7772
7773 2008-08-22  Richard Guenther  <rguenther@suse.de>
7774
7775         PR tree-optimization/37078
7776         * tree-vrp.c (extract_range_from_unary_expr): Avoid generating
7777         [+INF, +INF] ranges.
7778
7779 2008-08-22  Richard Guenther  <rguenther@suse.de>
7780
7781         PR tree-optimization/37143
7782         * tree-vect-transform.c (vect_create_cond_for_align_checks): Build
7783         a conversion statement instead of a copy.
7784
7785 2008-08-22  Uros Bizjak  <ubizjak@gmail.com>
7786
7787         PR target/37184
7788         * config/i386/i386.c (ix86_match_ccmode): Handle CCAmode,
7789         CCCmode, CCOmode and CCSmode destination modes.
7790
7791         PR target/37191
7792         * config/i386/mmx.md (*vec_extractv2sf_0): Avoid combining registers
7793         from different units in a single alternative.
7794         (*vec_extractv2sf_1): Ditto.
7795         (*vec_extractv2si_0): Ditto.
7796         (*vec_extractv2si_1): Ditto.
7797         * config/i386/sse.md (sse2_storehpd): Ditto.
7798         (sse2_storelpd): Ditto.
7799         (sse2_loadhpd): Ditto.
7800         (sse2_loadlpd): Ditto.
7801
7802         PR target/37197
7803         * config/i386/i386.md (clzsi2_abm): Fix operand 1 constraints.
7804         (popcountsi2): Ditto.
7805         (clzdi2_abm): Ditto.
7806         (popcountdi2): Ditto.
7807         (clzhi2_abm): Ditto.
7808         (popcounthi2): Ditto.
7809
7810 2008-08-22  Richard Guenther  <rguenther@suse.de>
7811
7812         PR middle-end/36548
7813         PR middle-end/37125
7814         * fold-const.c (extract_muldiv_1): Optimize (X * C1) % C2 only
7815         if the multiplication does not overflow.
7816
7817 2008-08-21  Nathan Sidwell  <nathan@codesourcery.com>
7818
7819         * c-ppoutput.c (init_pp_output): Initialize src_line to 1.
7820
7821 2008-08-21  Richard Henderson  <rth@redhat.com>
7822
7823         * configure.ac (HAVE_GAS_CFI_PERSONALITY_DIRECTIVE): Remove
7824         spurrious comma from test.
7825         * configure: Rebuild.
7826
7827 2008-08-21  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
7828
7829         PR 30457
7830         * builtins.c (fold_builtin_next_arg): Add warning about undefined
7831         behaviour.
7832
7833 2008-08-21  Aldy Hernandez  <aldyh@redhat.com>
7834
7835         * c-tree.h (grokfield): New argument.
7836         * c-decl.c (grokfield): Handle new location argument.
7837         * c-parser.c (c_parser_struct_declaration): Pass location to grokfield.
7838
7839 2008-08-21  Richard Guenther  <rguenther@suse.de>
7840
7841         * tree-ssa-ccp.c (ccp_fold): Fold VIEW_CONVERT_EXPRs of constants.
7842
7843 2008-08-21  Jan Hubicka  <jh@suse.cz>
7844
7845         * cgraph.c (first_cgraph_function_insertion_hook): New variable.
7846         (cgraph_add_function_insertion_hook,
7847         cgraph_remove_function_insertion_hook,
7848         cgraph_call_function_insertion_hooks): New functions.
7849         * cgraph.h (cgraph_add_function_insertion_hook,
7850         cgraph_remove_function_insertion_hook,
7851         cgraph_call_function_insertion_hooks): Declare.
7852         * ipa-reference.c (function_insertion_hook_holder): New variable.
7853         (check_operand, look_for_address_of): When checking late, do not care
7854         about module bitmaps.
7855         (add_new_function): New function.
7856         (generate_summary): Register hooks; zero module bitmaps.
7857         (propagate): Unregister hooks.
7858         * ipa-pure-const.c (function_insertion_hook_holder): New variable.
7859         (add_new_function): New function.
7860         (generate_summary): Register hook.
7861         (propagate): Remove hook.
7862
7863         * ipa-cp.c (ipcp_need_redirect_p): Fix to not be constant 0.
7864
7865         * tree-pass.h (pass_ipa_cp): Make ipa_opt_pass.
7866         * ipa-cp.c (ipcp_update_cloned_node): New function.
7867         (build_const_val): Handle functions correctly; bring type logic
7868         into sync with tree-inline.c
7869         (ipcp_init_stage):  Take care of computing stuff needed by
7870         indirect inlining; update clones.
7871         (ipcp_generate_summary): Break out of ipcp_driver.
7872         (ipcp_driver): Do only execution and transformation.
7873         (pass_ipa_cp): Make IPA_PASS.
7874         * tree-ssa-ccp.c (fold_stmt_r): Check type before trying to fold
7875         offset to address.
7876         * ipa-inline.c (inline_indirect_intraprocedural_analysis): When doing
7877         ipcp, some info is already available.
7878         * ipa-prop.c (ipa_count_arguments): Grow edge lists as needed.
7879         * tree-inline.c (remap_ssa_name): Unshare expression.
7880
7881 2008-08-21  Richard Guenther  <rguenther@suse.de>
7882
7883         * tree-ssa-pre.c (insert_into_preds_of_block): Before inserting
7884         a PHI ask VN if it is already available.
7885         * tree-ssa-sccvn.h (vn_phi_lookup): Declare.
7886         * tree-ssa-sccvn.c (vn_phi_lookup): Export.
7887
7888 2008-08-21  Richard Guenther  <rguenther@suse.de>
7889
7890         PR middle-end/36817
7891         * tree-chrec.c (chrec_apply): Always call chrec_fold_plus which
7892         makes sure to produce a result of the correct type.
7893
7894 2008-08-21  Jan Hubicka  <jh@suse.cz>
7895         Backport from LTO branch:
7896
7897         2008-05-05  Kenneth Zadeck <zadeck@naturalbridge.com>
7898                     Jan Hubicka  <jh@suse.cz>
7899
7900         * ipa-pure-const.c
7901         (init_state, finish_state, set_function_state, generate_summary):
7902         New functions.
7903         (scan_stmt): Renamed from scan_function.  Changed to keep state in
7904         local static vars rather than cgraph aux field.
7905         (propagate): Renamed from static_execute. Changed to keep state in
7906         local static vars rather than cgraph aux field.
7907         (pass_ipa_pure_const): Changed from SIMPLE_IPA_PASS to IPA_PASS.
7908         * tree-pass.h (pass_ipa_pure_const): Turn into IPA_PASS.
7909
7910         2008-07-15  Kenneth Zadeck <zadeck@naturalbridge.com>
7911
7912         * tree-pass.h (pass_ipa_reference): Make into ipa_opt_pass.
7913         * ipa-reference.c (init_function_info, generate_summary,
7914         propagate): New functions.
7915         (analyze_function):  Call init_function_info.
7916         (static_execute): Stripped into generate_summary and propagate.
7917         (pass_ipa_reference): Made into ipa_opt_pass.
7918
7919 2008-08-21  Richard Guenther  <rguenther@suse.de>
7920
7921         PR tree-optimization/37181
7922         * tree-vrp.c (extract_range_from_binary_expr): Check for NULL
7923         folding result.
7924         (extract_range_from_unary_expr): Likewise.
7925
7926 2008-08-21  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
7927
7928         * diagnostic.c (pedwarn_at): Rename as pedwarn.
7929         (pedwarn): Delete.
7930         * toplev.h (pedwarn_at): Likewise.
7931         * builtins.c: Update all calls to pedwarn.
7932         * c-lex.c: Likewise.
7933         * toplev.c: Likewise.
7934         * c-tree.h: Likewise.
7935         * c-decl.c: Likewise.
7936         * c-errors.c: Likewise.
7937         * c-typeck.c: Likewise.
7938         * c-common.c: Likewise.
7939         * c-parser.c: Likewise.
7940
7941 2008-08-20  Joseph Myers  <joseph@codesourcery.com>
7942
7943         PR target/31070
7944         * config/sparc/sparc.c (function_arg_slotno): Handle structure
7945         with MODE_VECTOR_INT mode.
7946
7947 2008-08-21  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
7948
7949         PR middle-end/179
7950         * tree-ssa.c (warn_uninit): Do not warn for variables that can be
7951         initialized outside the current module.
7952         (warn_uninitialized_var): Ignore left-hand side when walking the
7953         trees. Ignore address expressions. Examine VUSE operands in gimple
7954         statements with a variable declaration on the right-hand side.
7955
7956 2008-08-20  Richard Sandiford  <rdsandiford@googlemail.com>
7957
7958         PR bootstrap/37155
7959         * rtlanal.c (subreg_offset_representable_p): Revert last change.
7960
7961 2008-08-20  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
7962
7963         PR 35701
7964         * c-common.c (conversion_warning): Do not warn if applying bit-and
7965         operator to unsigned constant that fits in the target type.
7966
7967 2008-08-20  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
7968
7969         PR c++/35602
7970         * c-common.c (conversion_warning): Do not warn for artificial
7971         expressions.
7972
7973 2008-08-20  Richard Guenther  <rguenther@suse.de>
7974
7975         * tree-vrp.c (op_with_constant_singleton_value_range): New function.
7976         (extract_range_from_binary_expr): Fall back to constant propagation.
7977         (extract_range_from_unary_expr): Likewise.
7978
7979 2008-08-20  Richard Guenther  <rguenther@suse.de>
7980
7981         * tree-ssa-ccp.c (maybe_fold_stmt_indirect): Do not mess
7982         with TREE_THIS_VOLATILE on shared nodes.
7983         (fold_stmt_r): Likewise.
7984
7985 2008-08-20  Jakub Jelinek  <jakub@redhat.com>
7986
7987         PR c/37171
7988         * c-parser.c (c_parser_attributes): For keywords use canonical
7989         spelling for attr_name.
7990
7991 2008-08-20  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
7992
7993         * value-prof.c (check_counter): Revert wrong call to error.
7994
7995 2008-08-20  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
7996
7997         * profile.c: Update calls to inform.
7998         * value-prof.c: Update calls to inform.
7999
8000 2008-08-20  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
8001
8002         * diagnostic.c (inform): Add an explicit location_t parameter.
8003         * toplev.h (inform): Update declaration.
8004         * builtins.c: Update all calls to inform.
8005         * c-common.c: Likewise.
8006         * c-decl.c: Likewise.
8007         * c-opts.c: Likewise.
8008         * c-pch.c: Likewise.
8009         * c-pragma.c: Likewise.
8010         * c-typeck.c: Likewise.
8011         * coverage.c: Likewise.
8012         * opts.c: Likewise.
8013         * toplev.c: Likewise.
8014         * tree-cfg.c: Likewise.
8015         * tree-ssa.c: Likewise.
8016
8017 2008-08-20  H.J. Lu  <hongjiu.lu@intel.com>
8018
8019         PR target/37169
8020         * config/i386/i386.c (ix86_expand_vector_init_one_nonzero): In
8021         V2DI mode, for SSE4.1, use movq instead of vector set if the
8022         second element is zero and inter-unit moves are OK.
8023
8024 2008-08-20  Richard Guenther  <rguenther@suse.de>
8025
8026         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): More
8027         properly handle conversion/copy chains after tuplification.
8028
8029 2008-08-20  Richard Guenther  <rguenther@suse.de>
8030
8031         * passes.c (init_optimization_passes): Move the second
8032         forwprop pass before alias computation.  Remove the second
8033         DCE pass.  Remove the first dominator and phi copy/const
8034         prop passes.
8035
8036 2008-08-20  Nick Clifton  <nickc@redhat.com>
8037
8038         * configure.ac (HAVE_GAS_CFI_DIRECTIVE): Always test for assembler
8039         support of this feature.  Do not assume that a sufficiently new
8040         assembler will support the feature regardless of the target type.
8041         (HAVE_GAS_CFI_PERSONALITY_DIRECTIVE): Likewise.
8042         * configure: Regenerate.
8043
8044 2008-08-20  Richard Guenther  <rguenther@suse.de>
8045
8046         * tree-vrp.c (found_in_subgraph): Remove.
8047         (live): New global static.
8048         (live_on_edge): New function.
8049         (blocks_visited): Remove.
8050         (register_edge_assert_for_2): Use live_on_edge.
8051         (find_conditional_asserts): Remove code dealing with
8052         found_in_subgraph.  Do not walk the CFG.
8053         (find_switch_asserts): Likewise.
8054         (find_assert_locations_1): Renamed from find_assert_locations.
8055         Move finding assert locations for conditional and switch
8056         statements first.  Update live bitmap.  Do not walk the CFG.
8057         (find_assert_locations): New function.
8058         (insert_range_assertions): Remove entry of CFG walk.
8059         Adjust call to find_assert_locations.
8060         * tree-ssa-pre.c (do_regular_insertion): Ignore critical edges
8061         that only can appear because of fake exit edges but assert we
8062         never try to insert on those.
8063         (fini_pre): Do not remove fake exit edges here...
8064         (execute_pre): ...but here, before committing edge inserts.
8065
8066 2008-08-19  Richard Guenther  <rguenther@suse.de>
8067
8068         * passes.c (init_optimization_passes): Exchange store-ccp
8069         with a ccp pass.
8070
8071 2008-08-19  Rafael Espíndola  <espindola@google.com>
8072
8073         * varasm.c (weak_decls): Move earlier in the file.
8074         (assemble_external): Add weak decls to the weak_decls list.
8075         (declare_weak): Don't add decls to the weak_decls list.
8076
8077 2008-08-19  H.J. Lu  <hongjiu.lu@intel.com>
8078
8079         PR target/37157
8080         * config/i386/sse.md (sse2_punpckhqdq, sse2_punpcklqdq): Moved
8081         before (sse2_shufpd_<mode>).
8082
8083 2008-08-19  Jakub Jelinek  <jakub@redhat.com>
8084
8085         PR debug/37156
8086         * pretty-print.c (pp_base_format): Deal with recursive BLOCK trees.
8087         * tree.c (block_nonartificial_location): Likewise.
8088
8089 2008-08-19  Richard Guenther  <rguenther@suse.de>
8090
8091         PR tree-optimization/35972
8092         PR tree-optimization/23094
8093         * tree-ssa-sccvn.h (vn_reference_lookup_pieces): Add maywalk
8094         parameter.
8095         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Properly
8096         handle MISALIGNED_INDIRECT_REF.
8097         (get_ref_from_reference_ops): New helper.
8098         (vn_reference_lookup_pieces): Walk the use-def chain using the
8099         alias-oracle if requested.
8100         * tree-ssa-pre.c (phi_translate_1): Do reference lookup with
8101         walking the use-def chain.
8102         (compute_avail): But not here.
8103         (create_component_ref_by_pieces_1): Properly handle
8104         MISALIGNED_INDIRECT_REF.
8105         (do_regular_insertion): Handle fully redundant
8106         expressions after PHI-translation also for SSA_NAME values, not
8107         only constants.  Correctly use edoubleprime for that.
8108
8109 2008-08-19  Ira Rosen  <irar@il.ibm.com>
8110
8111         * tree-vectorizer.c (supportable_widening_operation): Support
8112         multi-step conversion, return the number of steps in such conversion
8113         and the required intermediate types.
8114         (supportable_narrowing_operation): Likewise.
8115         * tree-vectorizer.h (vect_pow2): New function.
8116         (supportable_widening_operation): Change argument types.
8117         (supportable_narrowing_operation): Likewise.
8118         (vectorizable_type_promotion): Add an argument.
8119         (vectorizable_type_demotion): Likewise.
8120         * tree-vect-analyze.c (vect_analyze_operations): Call
8121         vectorizable_type_promotion and vectorizable_type_demotion with
8122         additional argument.
8123         (vect_get_and_check_slp_defs): Detect patterns.
8124         (vect_build_slp_tree): Add an argument, don't fail in case of multiple
8125         types.
8126         (vect_analyze_slp_instance): Don't fail in case of multiple types.
8127         Call vect_build_slp_tree with correct arguments. Calculate unrolling
8128         factor according to the smallest type in the loop.
8129         (vect_detect_hybrid_slp_stmts): Include statements from patterns.
8130         * tree-vect-patterns.c (vect_recog_widen_mult_pattern): Call
8131         supportable_widening_operation with correct arguments.
8132         * tree-vect-transform.c (vect_get_slp_defs): Allocate output vector
8133         operands lists according to the number of vector statements in left
8134         or right node, if exists.
8135         (vect_gen_widened_results_half): Remove unused argument.
8136         (vectorizable_conversion): Call supportable_widening_operation,
8137         supportable_narrowing_operation, and vect_gen_widened_results_half
8138         with correct arguments.
8139         (vectorizable_assignment): Change documentation, support multiple
8140         types in SLP.
8141         (vectorizable_operation): Likewise.
8142         (vect_get_loop_based_defs): New function.
8143         (vect_create_vectorized_demotion_stmts): Likewise.
8144         (vectorizable_type_demotion): Support loop-aware SLP and general
8145         multi-step conversion. Call vect_get_loop_based_defs and
8146         vect_create_vectorized_demotion_stmts for transformation.
8147         (vect_create_vectorized_promotion_stmts): New function.
8148         (vectorizable_type_promotion): Support loop-aware SLP and general
8149         multi-step conversion. Call vect_create_vectorized_promotion_stmts
8150         for transformation.
8151         (vectorizable_store): Change documentation, support multiple
8152         types in SLP.
8153         (vectorizable_load): Likewise.
8154         (vect_transform_stmt): Pass SLP_NODE to
8155         vectorizable_type_promotion and vectorizable_type_demotion.
8156         (vect_schedule_slp_instance): Move here the calculation of number
8157         of vectorized statements for each node from...
8158         (vect_schedule_slp): ... here.
8159         (vect_transform_loop): Call vect_schedule_slp without the last
8160         argument.
8161
8162 2008-08-19  Dorit Nuzman  <dorit@il.ibm.com>
8163
8164         PR bootstrap/37152
8165         * tree-vect-transform.c (vect_create_epilog_for_reduction): Change =
8166         to == in assert statement.
8167         (vectorizable_reduction): Fix typo.
8168
8169 2008-08-18  H.J. Lu  <hongjiu.lu@intel.com>
8170
8171         PR bootstrap/37153
8172         * value-prof.c (check_counter): Dereference pointer to overall
8173         count when printing it.
8174
8175 2008-08-18  H.J. Lu  <hongjiu.lu@intel.com>
8176
8177         * profile.h: Really add it.
8178
8179 2008-08-18  H.J. Lu  <hongjiu.lu@intel.com>
8180
8181         * mcf.c: Really add it.
8182
8183 2008-08-18  Paul Yuan  <yingbo.com@gmail.com>
8184             Vinodha Ramasamy  <vinodha@google.com>
8185
8186         * cgraph.c (cgraph_edge): Handle inconsistent counts when setting
8187         count_scale.
8188         * value-prof.c (check_counter): Fix the counter if
8189         flag_profile_correction is true.
8190         (tree_divmod_fixed_value_transform, tree_mod_pow2_value_transform,
8191         tree_mod_subtract_transform):
8192         Follow check_counter parameter change.
8193         * common.opt (fprofile-correction): New option.
8194         * mcf.c: New file.
8195         * profile.h: Likewise.
8196         * profile.c (edge_info, EDGE_INFO): Moved to new file profile.h.
8197         (sum_edge_counts, is_edge_inconsistent, correct_negative_edge_counts,
8198         is_inconsistent, set_bb_counts, read_profile_edge_counts): New
8199         functions.
8200         (compute_branch_probabilities): Refactored. Invokes mcf_smooth_cfg if
8201         flag_profile_correction is set.
8202
8203 2008-08-18  Richard Sandiford  <rdsandiford@googlemail.com>
8204
8205         * rtlanal.c (subreg_offset_representable_p): Check HARD_REGNO_MODE_OK.
8206
8207 2008-08-18  Tomas Bily  <tbily@suse.cz>
8208
8209         * tree.h (IS_CONVERT_EXPR_CODE_P): Renamed to CONVERT_EXPR_CODE_P.
8210         * tree-ssa-threadedge.c (simplify_control_stmt_condition): Use
8211         CONVERT_EXPR_P.
8212         * tree-data-ref.c (split_constant_offset_1): Likewise.
8213         * tree-inline.c (estimate_operator_cost): Use CASE_CONVERT.
8214         * tree-sra.c (sra_walk_expr): Likewise.
8215         * matrix-reorg.c (ssa_accessed_in_assign_rhs): Likewise.
8216         * tree-ssa-loop-niter.c (expand_simple_operations): Likewise.
8217         * gimple.h (gimple_assign_cast_p): Use CONVERT_EXPR_CODE_P.
8218         * tree-ssa-structalias.c (find_func_aliases, find_func_aliases):
8219         Likewise.
8220         * gimple.c (gimple_assign_unary_nop_p): Likewise.
8221         * tree-vect-transform.c (vectorizable_type_demotion)
8222         (vectorizable_type_promotion): Likewise.
8223         * tree-inline.c (expand_call_inline):
8224         * tree-ssa-forwprop.c (get_prop_source_stmt, can_propagate_from)
8225         (forward_propagate_addr_expr_1, forward_propagate_comparison)
8226         (tree_ssa_forward_propagate_single_use_vars): Likewise.
8227         * expr.c (expand_expr_real_1): Likewise.
8228         * tree-ssa-dom.c (hashable_expr_equal_p, iterative_hash_hashable_expr)
8229         (gimple_assign_unary_useless_conversion_p): Likewise.
8230         * tree-stdarg.c (execute_optimize_stdarg): Likewise.
8231         * tree-ssa-ccp.c (ccp_fold, fold_gimple_assign): Likewise.
8232         * fold-const.c (fold_unary): Likewise.
8233         * tree.h (CONVERT_EXPR_P): Likewise.
8234         * tree.c (simple_cst_equal, iterative_hash_expr): Likewise.
8235         * tree-ssa-loop-im.c (rewrite_bittest): Likewise.
8236         * tree-vrp.c:
8237         (register_edge_assert_for_2, extract_range_from_unary_expr)
8238         (register_edge_assert_for_1): Likewise.
8239
8240 2008-08-18  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
8241
8242         * real.h (dconst_e, dconst_third, dconst_sqrt2, dconst_e_ptr,
8243         dconst_third_ptr, dconst_sqrt2_ptr): Declare.
8244         (enum real_value_const): Delete.
8245         (get_real_const): Delete.
8246         * real.c (get_real_const): Delete.
8247         (dconst_e_ptr): Define.
8248         (dconst_third_ptr): Define.
8249         (dconst_sqrt2_ptr): Define.
8250         * builtins.c: Update all callers.
8251
8252 2008-08-18  Richard Guenther  <rguenther@suse.de>
8253
8254         * tree-ssa-reassoc.c (reassociate_bb): Properly reset the
8255         statement iterator after statement removal.
8256
8257 2008-08-18  Andreas Tobler  <a.tobler@schweiz.org>
8258
8259         * config/rs6000/driver-rs6000.c (detect_caches_freebsd): New function.
8260         (detect_processor_freebsd): Likewise.
8261         (host_detect_local_cpu): Call newly added functions for FreeBSD.
8262
8263 2008-08-18  Richard Guenther  <rguenther@suse.de>
8264
8265         * tree-cfg.c (verify_types_in_gimple_assign): Verify copies
8266         and loads have the correct types.
8267
8268 2008-08-18  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
8269
8270         PR cpp/7263
8271         * c-opts.c (cpp_opts): Remove static.
8272         * c-parser.c (cpp_opts): Declare it extern.
8273         (disable_extension_diagnostics): Handle cpp options.
8274         (enable_extension_diagnostics): Likewise.
8275
8276 2008-08-18  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
8277
8278         * diagnostics.c (permerror_at): Rename as permerror.
8279         (permerror): Delete.
8280         * toplev.h: Likewise.
8281
8282 2008-08-18  Richard Guenther  <rguenther@suse.de>
8283
8284         * passes.c (init_optimization_passes): Remove cleanup_cfg1,
8285         sdse1 and addressables2 passes.  Replace dce1 with cddce1.
8286         Move call_cdce before build_alias.  Move copyrename2,
8287         cunrolli and ccp2 beafore build_alias.  Re-add addressable2
8288         right after final inlining.
8289         * tree-cfg.c (build_gimple_cfg): Do not dump function here.
8290         (pass_build_cfg): But instead via TODO_dump_func.
8291
8292 2008-08-18  Richard Guenther  <rguenther@suse.de>
8293
8294         * tree-sra.c (generate_element_init_1): Deal with NULL constructor
8295         element index.
8296         (scalarize_init): If we failed to generate some initializers
8297         do not generate zeros for not instantiated members.  Instead
8298         rely on the copy out.
8299         * tree-ssa-operands.c (get_addr_dereference_operands): Warn
8300         about missing flow-sensitive alias info only if we have
8301         aliases computed.
8302
8303 2008-08-17  Nick Clifton  <nickc@redhat.com>
8304
8305         * doc/extend.texi (Function Attributes): Fix typo in description
8306         if hot function attribute.
8307
8308 2008-08-17  Daniel Jacobowitz  <dan@codesourcery.com>
8309             Richard Sandiford  <rdsandiford@googlemail.com>
8310
8311         * doc/install.texi (--with-mips-plt): Document.
8312         * doc/invoke.texi (-mplt, -mno-plt): Document.
8313         * config.gcc (mips*-*-*): Add mips-plt to supported_defaults
8314         and handle ${with_mips_plt}.
8315         * config/mips/mips.opt (mplt): New option.
8316         * config/mips/mips.h (TARGET_ABICALLS_PIC0): New macro.
8317         (TARGET_ABICALLS_PIC2): Likewise.
8318         (TARGET_GPWORD): Return false for TARGET_ABSOLUTE_ABICALLS.
8319         (OPTION_DEFAULT_SPECS): Add a mips-plt entry.
8320         (ASM_SPEC): Use !mabi=* instead of !mabi*.
8321         (MIPS_CALL): Use TARGET_ABICALLS_PIC2 instead of TARGET_ABICALLS
8322         to decide whether to output ".option picX" directives.
8323         * config/mips/linux.h (SUBTARGET_ASM_SPEC): Remove -mabi=64 handling.
8324         Pass -call_nonpic rather than -KPIC for -mplt.
8325         (BASE_DRIVER_SELF_SPECS): Remove -mplt if -mno-shared is not present
8326         on the command line.  Also remove it when -mabi=64 is used without
8327         -msym32.
8328         * config/mips/linux64.h (SUBTARGET_ASM_SPEC): Delete.
8329         * config/mips/mips.c (mips_use_pic_fn_addr_reg_p): Handle
8330         TARGET_ABICALLS_PIC0.
8331         (mips_classify_symbol): Use TARGET_ABICALLS_PIC2 instead of
8332         TARGET_ABICALLS.
8333         (mips16_build_function_stub): Only output ".option pic" directives
8334         and PIC stubs if TARGET_ABICALLS_PIC2.  Call through $25 instead of $1.
8335         (mips16_build_call_stub): Fix comment and remove redundant
8336         ".set at"/"set .noat" directives.
8337         (mips_function_rodata_section): Use the default behaviour for
8338         TARGET_ABSOLUTE_ABICALLS.
8339         (mips_file_start): Emit ".option pic0" for TARGET_ABICALLS_PIC0.
8340         (mips_global_pointer): Handle TARGET_ABICALLS_PIC0.
8341         (mips_restore_gp): Do nothing if the current function doesn't use
8342         a global pointer.
8343         (mips_expand_prologue): Only save $gp if the current function uses it.
8344         Use a normal move for TARGET_ABICALLS_PIC0.
8345         (mips_override_options): Only set flag_pic if TARGET_ABICALLS_PIC2.
8346
8347 2008-08-17  Richard Sandiford  <rdsandiford@googlemail.com>
8348
8349         * config/mips/mips.c (mips_save_reg_p): Don't short-circuit rest
8350         of function when handling GLOBAL_POINTER_REGNUM.
8351
8352 2008-08-16  Eric Botcazou  <ebotcazou@adacore.com>
8353
8354         PR ada/20548
8355         * common.opt (-fstack-check): Do not declare the variable here.
8356         (-fstack-check=): New option variant.
8357         * doc/invoke.texi (Code Gen Options): Document it.
8358         * expr.h (STACK_OLD_CHECK_PROTECT): New macro.
8359         (STACK_CHECK_PROTECT): Bump to 3 pages if DWARF-2 EH is used.
8360         (STACK_CHECK_STATIC_BUILTIN): New macro.
8361         * doc/tm.texi (Stack Checking): Document STACK_CHECK_STATIC_BUILTIN.
8362         * opts.c: Include expr.h.
8363         (common_handle_option) <OPT_fold_stack_check_>: New case.
8364         <OPT_fstack_check>: Likewise.
8365         * calls.c (initialize_argument_information): Use TYPE_SIZE_UNIT
8366         consistently in the test for variable-sized types.  Adjust for
8367         new behaviour of flag_stack_check.
8368         * explow.c: Include except.h.
8369         (allocate_dynamic_stack_space): Do not take into account
8370         STACK_CHECK_MAX_FRAME_SIZE for static builtin stack checking.
8371         * function.c (gimplify_parameters): Use DECL_SIZE_UNIT in the test
8372         for variable-sized parameters.  Treat all parameters whose size is
8373         greater than STACK_CHECK_MAX_VAR_SIZE as variable-sized if generic
8374         stack checking is enabled.
8375         * gimplify.c (gimplify_decl_expr): Treat non-static objects whose
8376         size is greater than STACK_CHECK_MAX_VAR_SIZE as variable-sized
8377         if generic stack checking is enabled.
8378         (expand_function_end): Adjust for new behaviour of flag_stack_check.
8379         * reload1.c (reload): Likewise.
8380         * stmt.c (expand_decl): Assert that all automatic variables have
8381         fixed size at this point and remove dead code.
8382         * flags.h (stack_check_type): New enumeration type.
8383         (flag_stack_check): Declare.
8384         * toplev.c (flag_stack_check): New global variable.
8385         * Makefile.in (opts.o): Add dependency on EXPR_H.
8386         (explow.o): Add dependency on except.h.
8387
8388 2008-08-16  Andy Hutchinson  <hutchinsonandy@aim.com>
8389
8390         * config/avr/avr.c (avr_override_options): Reduce value of
8391         PARAM_INLINE_CALL_COST.
8392
8393 2008-08-15  Eric Botcazou  <ebotcazou@adacore.com>
8394
8395         * expr.c (expand_expr_real_1) <VIEW_CONVERT_EXPR>: When converting
8396         to BLKmode, try to fetch an inner memory reference.  Use 'mode' in
8397         lieu of TYPE_MODE (type) throughout.
8398
8399 2008-08-15  Joseph Myers  <joseph@codesourcery.com>
8400
8401         * config/arm/arm.c (add_minipool_backward_ref): Check for
8402         8-byte-aligned entries in second case of forcing insertion after a
8403         particular entry.  Change third case to avoid inserting
8404         non-8-byte-aligned entries before 8-byte-aligned ones.
8405
8406 2008-08-15  Richard Guenther  <rguenther@suse.de>
8407
8408         * tree-ssa-ccp.c (maybe_fold_offset_to_reference): Do not
8409         strip components for unknown size accesses.
8410
8411 2008-08-15  Wolfgang Gellerich  <gellerich@de.ibm.com>
8412
8413         * config/s390/2097.md New file.
8414         * config/s390/s390.md ("z10prop" attribute): Define none,
8415         z10_super, z10_super_E1, z10_super_A1, z10_super_c,
8416         z10_super_c_E1, z10_fwd, z10_fwd_A1, z10_fwd_A3, z10_fwd_E1,
8417         z10_rec, z10_fr, z10_fr_A3, z10_fr_E1, z10_c, and z10_cobra as
8418         possible values and apply them to insns as appropriate.
8419         ("type" attribute): Removed itof and added ftrunctf,ftruncdf,
8420         ftruncsd, ftruncdd, itoftf, itofdf, itofsf, itofdd, itoftd,
8421         fdivdd, fdivtd, floaddd, floadsd, fmuldd, fmultd, fsimpdd,
8422         fsimpsd, fsimptd, fstoredd, fstoresd, ftoidfp as possible values.
8423         ("bfp" mode attribute): Removed.  Every occurence replaced
8424         with <mode>.
8425         * config/s390/s390.c (struct "z10_cost"): Updated entries.
8426         * config/s390/2084.md (insn_reservation "x_itof"): Updated
8427         type attribute.
8428
8429 2008-08-14  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
8430
8431         PR c/28152
8432         * c-parser.c (c_lex_one_token): Do not store the canonical spelling
8433         for keywords.
8434
8435 2008-08-14  Dorit Nuzman  <dorit@il.ibm.com>
8436
8437         * tree-vect-transform.c (vect_create_epilog_for_reduction): Takes an
8438         additional argument. Support reduction when duplication is needed due
8439         to data-types of different sizes in the loop.
8440         (get_initial_def_for_induction): Fix printout.
8441         (vect_get_vec_def_for_stmt_copy): Support case where the
8442         vec_stmt_for_operand is a phi node.
8443         (vectorizable_reduction): Support reduction when duplication is needed
8444         due to data-types of different sizes in the loop.
8445         (vectorizable_call): Remove restriction to not vectorize in case we
8446         have data-types of different sizes in the loop.
8447         (vectorizable_conversion): Likewise.
8448         (vectorizable_operation): Likewise.
8449         (vectorizable_type_demotion): Likewise.
8450         (vectorizable_type_promotion): Likewise.
8451         (vectorizable_induction): Add restriction to not vectorize in case
8452         we have data-types of different sizes in the loop.
8453
8454 2008-08-14  Christophe Saout  <christophe@saout.de>
8455             Uros Bizjak  <ubizjak@gmail.com>
8456
8457         PR target/37101
8458         * config/i386/sse.md (vec_concatv2di): Remove movlps alternative.
8459         (*vec_concatv2di_rex64_sse4_1): Ditto.
8460         (*vec_concatv2di_rex64_sse): Ditto.
8461
8462 2008-08-14  Jakub Jelinek  <jakub@redhat.com>
8463
8464         PR middle-end/37103
8465         * fold-const.c (fold_widened_comparison): Do not allow
8466         sign changes that change the result even if shorter type
8467         is wider than arg1_unw's type.
8468
8469 2008-08-13  Kazu Hirata  <kazu@codesourcery.com>
8470
8471         * gcc.dg/arm-g2.c, gcc.dg/arm-mmx-1.c, gcc.dg/arm-scd42-2.c:
8472         Skip if the multilib testing specifies -march that does not
8473         agree with the one specified in the testcase.
8474
8475 2008-08-13  Joseph Myers  <joseph@codesourcery.com>
8476
8477         * config/sparc/sparc.c (emit_soft_tfmode_cvt): Explicitly sign or
8478         zero extend SImode values being converted to TFmode before passing
8479         to libcalls.
8480
8481 2008-08-13  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
8482
8483         * config/rs6000/rs6000-c.c (rs6000_cpu_cpp_builtins): Predefine
8484         __PPU__ when targeting the Cell/B.E. PPU processor.
8485
8486 2008-08-13  Eric Botcazou  <ebotcazou@adacore.com>
8487
8488         * gimple.h (gimple_call_set_chain): Accept SSA variables.
8489         * tree-ssa-pre.c (create_component_ref_by_pieces_1) <CALL_EXPR>:
8490         Rematerialize the static chain, if any.
8491         * tree-ssa-sccvn.c (copy_reference_ops_from_call): Also copy the
8492         static chain.
8493
8494 2008-08-13  H.J. Lu  <hongjiu.lu@intel.com>
8495
8496         * dwarf2out.c (dwarf_stack_op_name): Remove prototype.
8497         (new_loc_descr): Likewise.
8498         (add_loc_descr): Likewise.
8499         (size_of_loc_descr): Likewise.
8500         (size_of_locs): Likewise.
8501         (output_loc_operands): Likewise.
8502         (output_loc_sequence): Likewise.
8503         (new_reg_loc_descr): New.
8504         (build_cfa_loc): Use it.
8505         (build_cfa_aligned_loc): Likewise.
8506         (one_reg_loc_descriptor): Likewise.
8507         (based_loc_descr): Likewise.
8508
8509 2008-08-13  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
8510
8511         PR 30551
8512         * doc/invoke.texi (Wmain): Update.
8513         * c-decl.c (start_decl): warn_main is only 0 or 1.
8514         (start_function): Likewise. Fix formatting.
8515         (finish_function): Delete redundant warning.
8516         * c.opt (Wmain): Add Var(warn_main) and Init(-1).
8517         * c-opts (c_common_handle_option): -Wall only has effect if
8518         warn_main is uninitialized. OPT_Wmain is automatically
8519         handled. -pedantic also enables Wmain.
8520         (c_common_post_options): Handle all logic for Wmain here.
8521         * c-common.c (warn_main): Delete.
8522         (check_main_parameter_types): Make pedwarns conditional on OPT_Wmain.
8523         * c-common.h (warn_main): Delete.
8524
8525 2008-08-13  H.J. Lu  <hongjiu.lu@intel.com>
8526
8527         PR middle-end/36701
8528         * expr.c (emit_group_store): Allocate stack temp with the
8529         largest alignment when copying from register to stack.
8530
8531 2008-08-13  Richard Guenther  <rguenther@suse.de>
8532
8533         * tree.h (maybe_fold_offset_to_address): Declare.
8534         * tree-ssa-ccp.c (surely_varying_stmt_p): Fix typo in last commit.
8535         (ccp_fold): Handle pointer conversions the same as fold_stmt.
8536         Likewise for POINTER_PLUS_EXPR.
8537         (maybe_fold_offset_to_reference): Enable disabled code.
8538         (maybe_fold_offset_to_address): New function.
8539         (fold_stmt_r): Use it.
8540         (fold_gimple_assign): Likewise.
8541         * gimplify.c (gimplify_conversion): Use maybe_fold_offset_to_address.
8542         (gimplify_expr): Likewise.
8543
8544 2008-08-13  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
8545
8546         * toplev.h (pedwarn_at): Fix declaration.
8547
8548 2008-08-13  Joseph Myers  <joseph@codesourcery.com>
8549
8550         * config/sparc/linux64.h (LINK_ARCH32_SPEC, LINK_ARCH64_SPEC,
8551         LINK_SPEC): Use %R in -Y P argument.
8552
8553 2008-08-13  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
8554
8555         PR c/15236
8556         * diagnostic.c (pedwarn_at): New.
8557         * toplev.h (pedwarn_at): Declare.
8558         * c-tree.h (build_enumerator): Update declaration.
8559         * c-decl.c (finish_enum): Update comment.
8560         (build_enumerator): Take a location parameter. Give a pedwarn but do
8561         not perform any conversion.
8562         * c-parser.c (c_parser_enum_specifier): Set correct location for
8563         enumerator.
8564
8565 2008-08-13  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
8566
8567         PR 35635
8568         * c-common.c (conversion_warning): Use a switch. Ignore boolean
8569         expressions except for conversions to signed:1 bitfields. Handle
8570         COND_EXPR with constant operands.
8571
8572 2008-08-13  Richard Guenther  <rguenther@suse.de>
8573
8574         PR tree-optimization/15255
8575         * tree-ssa-reassoc.c (linearize_expr_tree): Declare.
8576         (struct oecount_s): New struct and VEC types.
8577         (cvec): New global.
8578         (oecount_hash): New function.
8579         (oecount_eq): Likewise.
8580         (oecount_cmp): Likewise.
8581         (zero_one_operation): New function.
8582         (build_and_add_sum): Likewise.
8583         (undistribute_ops_list): Perform un-distribution of multiplication
8584         and division on the chain of summands.
8585         (should_break_up_subtract): Also break up subtracts for factors.
8586         (reassociate_bb): Delete dead visited statements.
8587         Call undistribute_ops_list.  Re-sort and optimize if it did something.
8588         * passes.c (init_optimization_passes): Move DSE before
8589         reassociation.
8590         * tree-ssa-loop-niter.c (stmt_dominates_stmt_p): Correctly handle
8591         PHI nodes.
8592
8593 2008-08-12  Janis Johnson  <janis187@us.ibm.com>
8594
8595         * doc/invoke.texi (-fipa-pta): Say the option is experimental.
8596
8597         * doc/invoke.texi: Revert unintended checkin.
8598
8599 2008-08-12  Nathan Froyd  <froydnj@codesourcery.com>
8600
8601         PR libgomp/26165
8602         * gcc.c (include_spec_function): Tweak call to find_a_file.
8603
8604 2008-08-12  Jakub Jelinek  <jakub@redhat.com>
8605
8606         PR middle-end/37014
8607         * expr.c (expand_expr_real_1): Handle TRUTH_ANDIF_EXPR
8608         and TRUTH_ORIF_EXPR.
8609         * dojump.c (do_jump): Likewise.
8610
8611         PR tree-optimization/37084
8612         * tree-inline.c (copy_bb): Call gimple_regimplify_operands
8613         if id->regimplify, don't assume stmt is a cast assignment.
8614
8615 2008-08-12  Anatoly Sokolov  <aesok@post.ru>
8616
8617         * final.c (final_scan_insn): Use app_enable/app_disable functions.
8618
8619 2008-08-12  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
8620
8621         PR bootstrap/37097
8622         * builtins.c (do_mpfr_bessel_n): Fix copy-and-paste bug introduced
8623         by last change.
8624
8625 2008-08-12  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
8626
8627         * defaults.h (TARGET_FLOAT_FORMAT): Remove.
8628         (UNKNOWN_FLOAT_FORMAT, IEEE_FLOAT_FORMAT, VAX_FLOAT_FORMAT): Remove.
8629
8630         * config/alpha/alpha.h (TARGET_FLOAT_FORMAT): Remove.
8631         * config/iq2000/iq2000.h (TARGET_FLOAT_FORMAT): Remove.
8632         * config/pdp11/pdp11.h (TARGET_FLOAT_FORMAT): Remove.
8633         * config/score/score.h (TARGET_FLOAT_FORMAT): Remove.
8634         * config/vax/vax.h (TARGET_FLOAT_FORMAT): Remove.
8635
8636         * doc/tm.texi (Storage Layout): Remove documentation for
8637         TARGET_FLOAT_FORMAT.
8638
8639         * simplify-rtx.c (simplify_binary_operation_1): Replace
8640         TARGET_FLOAT_FORMAT check by appropriate HONOR_... checks.
8641
8642 2008-08-12  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
8643
8644         * real.h (struct real_format): New member has_sign_dependent_rounding.
8645         * real.c (ieee_single_format, mips_single_format, motorola_single_format,
8646         spu_single_format, ieee_double_format, mips_double_format,
8647         motorola_double_format, ieee_extended_motorola_format,
8648         ieee_extended_intel_96_format, ieee_extended_intel_128_format,
8649         ieee_extended_intel_96_round_53_format, ibm_extended_format,
8650         mips_extended_format, ieee_quad_format, mips_quad_format,
8651         vax_f_format, vax_d_format, vax_g_format): Initialize it.
8652         * config/pdp11/pdp11.c (pdp11_f_format, pdp11_d_format): Likewise.
8653
8654         * defaults.h (MODE_HAS_NANS, MODE_HAS_INFINITIES,
8655         MODE_HAS_SIGNED_ZEROS, MODE_HAS_SIGN_DEPENDENT_ROUNDING): Remove.
8656         * config/spu/spu.h (MODE_HAS_NANS, MODE_HAS_INFINITIES,
8657         MODE_HAS_SIGN_DEPENDENT_ROUNDING): Remove.
8658         (ROUND_TOWARDS_ZERO): Likewise.
8659
8660         * real.h (REAL_MODE_FORMAT): Protect MODE against macro expansion.
8661         (FLOAT_MODE_FORMAT): New macro.
8662         (REAL_MODE_FORMAT_COMPOSITE_P): Remove, replace by ...
8663         (MODE_COMPOSITE_P): ... this new macro.
8664         (MODE_HAS_NANS, MODE_HAS_INFINITIES, MODE_HAS_SIGNED_ZEROS,
8665         MODE_HAS_SIGN_DEPENDENT_ROUNDING): New macros.
8666         * machmode.h (GET_MODE_INNER): Cast result to enum machine_mode.
8667
8668         * flags.h: Include "real.h".
8669
8670         * fold-const.c (const_binop): Use MODE_COMPOSITE_P instead of
8671         REAL_MODE_FORMAT_COMPOSITE_P.
8672         * simplify-rtx.c (simplify_const_binary_operation): Likewise.
8673
8674         * doc/tm.texi (Storage Layout): Remove documentation of
8675         MODE_HAS_NANS, MODE_HAS_INFINITIES, MODE_HAS_SIGNED_ZEROS,
8676         MODE_HAS_SIGN_DEPENDENT_ROUNDING.  Update documentation of
8677         ROUND_TOWARDS_ZERO and LARGEST_EXPONENT_IS_NORMAL to clarify
8678         they only apply to libgcc2.a.
8679
8680 2008-08-12  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
8681
8682         * config/spu/float_disf.c: New file.
8683         * config/spu/float_unsdisf.c: New file.
8684         * config/spu/t-elf (LIB2FUNCS_STATIC_EXTRA): Add them.
8685         (LIB2FUNCS_EXCLUDE): Define.
8686
8687 2008-08-12  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
8688             Trevor Smigiel  <trevor_smigiel@playstation.sony.com>
8689
8690         * real.h (struct real_format): New member round_towards_zero.
8691         * real.c (round_for_format): Respect fmt->round_towards_zero.
8692         (ieee_single_format, mips_single_format, motorola_single_format,
8693         spu_single_format, ieee_double_format, mips_double_format,
8694         motorola_double_format, ieee_extended_motorola_format,
8695         ieee_extended_intel_96_format, ieee_extended_intel_128_format,
8696         ieee_extended_intel_96_round_53_format, ibm_extended_format,
8697         mips_extended_format, ieee_quad_format, mips_quad_format,
8698         vax_f_format, vax_d_format, vax_g_format): Initialize it.
8699         * config/pdp11/pdp11.c (pdp11_f_format, pdp11_d_format): Likewise.
8700
8701         * builtins.s (do_mpfr_arg1): Consider round_towards_zero member of
8702         real_format to choose rounding mode when calling MPFR functions.
8703         (do_mpfr_arg2, do_mpfr_arg3, do_mpfr_sincos): Likewise.
8704         (do_mpfr_bessel_n, do_mpfr_remquo, do_mpfr_lgamma_r): Likewise.
8705
8706         * real.h (real_to_decimal_for_mode): Add prototype.
8707         * real.c (real_to_decimal_for_mode): Renames old real_to_decimal.
8708         Respect target rounding mode when generating decimal representation.
8709         (real_to_decimal): New stub for backwards compatibility.
8710         * c-cppbuiltin.c (builtin_define_with_hex_fp_value): Use
8711         real_to_decimal_for_mode instead of real_to_decimal.
8712
8713         * config/spu/spu.md ("floatdisf2", "floatunsdisf2"): New.
8714
8715 2008-08-12  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
8716             Trevor Smigiel  <trevor_smigiel@playstation.sony.com>
8717
8718         * real.c (spu_single_format): New variable.
8719         * real.h (spu_single_format): Declare.
8720
8721         * config/spu/spu.c (spu_override_options): Install SFmode format.
8722         (spu_split_immediate): Use integer mode to operate on pieces of
8723         floating-point values in all cases.
8724
8725         * config/spu/spu.md (UNSPEC_FLOAT_EXTEND, UNSPEC_FLOAT_TRUNCATE): New.
8726         ("extendsfdf2"): Use UNSPEC_FLOAT_EXTEND instead of FLOAT_EXTEND.
8727         ("truncdfsf2"): Use UNSPEC_FLOAT_TRUNCATE instead of FLOAT_TRUNCATE.
8728
8729 2008-08-12  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
8730
8731         * config/spu/spu.c (spu_safe_dma): Respect TARGET_SAFE_DMA.
8732
8733 2008-08-12  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
8734
8735         * config/spu/spu.h (DWARF_FRAME_RETURN_COLUMN): Define.
8736
8737 2008-08-12  Jakub Jelinek  <jakub@redhat.com>
8738
8739         PR c++/36688
8740         * gimplify.c (gimplify_modify_expr_rhs): Test TREE_READONLY
8741         on the VAR_DECL instead of TYPE_READONLY on its type.
8742
8743 2008-08-12  Ira Rosen  <irar@il.ibm.com>
8744
8745         * tree-vectorizer.c: Depend on langhooks.h.
8746         (supportable_widening_operation): Add two arguments. Support double
8747         type conversions.
8748         (supportable_narrowing_operation): Likewise.
8749         * tree-vectorizer.h (supportable_widening_operation): Add two
8750         arguments.
8751         (supportable_narrowing_operation): Likewise.
8752         * tree-vect-patterns.c (vect_recog_widen_mult_pattern) : Call
8753         supportable_widening_operation with correct arguments.
8754         * tree-vect-transform.c (vectorizable_conversion): Likewise.
8755         (vectorizable_type_demotion): Support double type conversions.
8756         (vectorizable_type_promotion): Likewise.
8757         * Makefile.in (tree-vectorizer.o): Depend on langhooks.h.
8758
8759 2008-08-11  Michael Matz  <matz@suse.de>
8760
8761         * i386/i386.c (override_options): Move initialisation from
8762         flag_schedule_insns_after_reload to here from ...
8763         (optimization_options): ... here.
8764
8765 2008-08-11  Jakub Jelinek  <jakub@redhat.com>
8766
8767         PR rtl-optimization/36998
8768         * dwarf2out.c (compute_barrier_args_size_1,
8769         compute_barrier_args_size): Temporarily remove assertions.
8770
8771 2008-08-10  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
8772
8773         PR middle-end/20644
8774         * tree-ssa.c (struct walk_data): Add new flag
8775         warn_possibly_uninitialized.
8776         (warn_uninitialized_var): Use it.
8777         (warn_uninitialized_vars): New.
8778         (execute_early_warn_uninitialized): Call it.
8779         (execute_late_warn_uninitialized): Likewise.
8780
8781 2008-08-09  Andrew Pinski  <andrew_pinski@playstation.sony.com>
8782
8783         PR middle-end/36238
8784         * reload1.c (gen_reload): Guard calls to get_secondary_mem
8785         for memory subregs.
8786
8787 2008-08-09  Jan Hubicka  <jh@suse.cz>
8788
8789         PR target/37055
8790         * optabs.c (maybe_emit_unop_insn): Remove produced code if
8791         expansion failed.
8792         (expand_fix): Be prepared for expansion to fail.
8793         (expand_sfix_optab): Remove instructions if expansion failed.
8794
8795 2008-08-09  Anatoly Sokolov  <aesok@post.ru>
8796
8797         * config/avr/avr.c (avr_mcu_types): Move the AT43USB320 device to
8798         avr31 architecture.
8799         * config/avr/avr.h (CRT_BINUTILS_SPECS): (Ditto.).
8800         * config/avr/t-avr (MULTILIB_MATCHES): (Ditto.).
8801
8802 2008-08-09  Richard Sandiford  <rdsandiford@googlemail.com>
8803
8804         * config.gcc (mips*-*-linux*, mips64*-*-linux*): Add
8805         mips/t-libgcc-mips16 to tmake_file.
8806         * config/mips/mips-protos.h (mips_call_type): New enum.
8807         (mips_pic_base_register, mips_got_load): Declare.
8808         (mips_restore_gp): Take an rtx argument.
8809         (mips_use_pic_fn_addr_reg_p): Declare.
8810         (mips_expand_call): Replace the sibcall_p argument with
8811         a mips_call_type argument.  Add a lazy_p parameter.
8812         (mips_split_call): Declare.
8813         * config/mips/mips.h (MIPS16_PIC_TEMP_REGNUM): New macro.
8814         (MIPS16_PIC_TEMP): Likewise.
8815         (reg_class): Delete M16_NA_REGS.
8816         (REG_CLASS_NAMES, REG_CLASS_CONTENTS): Update accordingly.
8817         (SYMBOL_FLAG_BIND_NOW, SYMBOL_REF_BIND_NOW_P): New macros.
8818         (mips_split_hi_p): Declare.
8819         * config/mips/mips.c (mips_split_hi_p): New array.
8820         (mips_regno_to_class): Change M16_NA_REGS entries to M16_REGS.
8821         (mips_got_symbol_type_p): New function.
8822         (mips_global_symbol_p): Check SYMBOL_REF_EXTERNAL_P.
8823         (mips16_stub_function_p): New function.
8824         (mips16_local_function_p): Likewise.
8825         (mips_use_pic_fn_addr_reg_p): Likewise.
8826         (mips_cannot_force_const_mem): Return false for HIGHs.
8827         Extend CONST_INT and symbolic handling to MIPS16, using
8828         mips_symbol_insns to check that the base symbol type is a
8829         legitimate constant.  Reject GOT-based constants if
8830         TARGET_MIPS16_PCREL_LOADS.
8831         (mips_const_insns): Check targetm.cannot_force_const_mem when
8832         decomposing a symbolic base and a large offset.
8833         (mips_emit_call_insn): Add ORIG_ADDR and ADDR parameters.
8834         When calling a function that needs $25 from MIPS16 code,
8835         move the target address into $25 separately and add a USE
8836         to the call insn.
8837         (mips16_gp_pseudo_reg): Insert the initializer immediately
8838         before the first real insn.
8839         (mips_pic_base_register, mips_got_load): New functions.
8840         (mips_split_symbol): Generalize the name of the LO_SUM_OUT
8841         parameter to LOW_OUT.  Say that it can be any valid SET_SRC
8842         when splitting a load-address operation.  Split SYMBOL_GOT_DISP
8843         constants and highs of SYMBOL_GOT_PAGE_OFST constants.
8844         (mips_call_tls_get_addr): Update the call to mips_expand_call,
8845         also passing NULL_RTX rather than const0_rtx as the aux argument.
8846         (mips_rewrite_small_data_p): Check mips_lo_relocs and mips_split_p
8847         instead of TARGET_EXPLICIT_RELOCS.
8848         (mips_ok_for_lazy_binding_p): Check SYMBOL_REF_BIND_NOW_P.
8849         (mips_load_call_address): Replace the sibcall_p argument with
8850         a mips_call_type argument.  Use mips_got_load.
8851         (mips16_local_alias): New structure.
8852         (mips16_local_aliases): New variable.
8853         (mips16_local_aliases_hash): New function.
8854         (mips16_local_aliases_eq): Likewise.
8855         (mips16_local_alias): Likewise.
8856         (mips16_stub_function): Likewise.
8857         (mips16_build_function_stub): Create a local alias for the target
8858         function.  Handle TARGET_ABICALLS.  For PIC abicalls, emit a
8859         .cpload directive and an R_MIPS_NONE relocation for the target
8860         function, then load the alias rather than the function itself.
8861         Wrap the non-PIC abicalls version in ".option pic0/.option pic2".
8862         (mips16_copy_fpr_return_value): Use mips16_stub_function and
8863         mips_expand_call.  Set SYMBOL_REF_BIND_NOW on the symbol.
8864         (mips16_build_call_stub): Replace the FN parameter with an
8865         FN_PTR parameter.  Force the address into a register if it
8866         isn't a call_insn_operand; don't rely on the caller to do this.
8867         If a call to a locally-defined and locally-binding MIPS16
8868         function must be made indirectly, redirect the call to the
8869         function's local alias.  Use mips16_stub_function_p,
8870         mips16_stub_function, mips_expand_call and use_reg.
8871         Set SYMBOL_FLAG_BIND_NOW on __mips_call_* symbols.
8872         Use explicit %hi and %lo accesses where possible.
8873         Use MIPS_CALL to generate the correct code form of a
8874         jal instruction.  Add clobbers of $18 instead of uses.
8875         Update the call to mips_emit_call_insn.
8876         (mips_expand_call): Replace the SIBCALL_P argument with a
8877         mips_call_type argument and handle the new MIPS_CALL_EPILOGUE value.
8878         Take a LAZY_P parameter.  Call mips16_build_call_stub first,
8879         allowing it to modify the call address.  Update the calls to
8880         mips_load_call_address and mips_emit_call_insn.
8881         (mips_split_call): New function.
8882         (mips_init_relocs): Clear mips_split_hi_p.  Only use %gp_rel if
8883         !TARGET_MIPS16.  Split SYMBOL_GOT_DISP, and the high parts of
8884         SYMBOL_GOT_PAGE_OFST, for MIPS16 code.
8885         (mips_global_pointer): Check mips16_cfun_returns_in_fpr_p.
8886         (mips_extra_live_on_entry): Include MIPS16_PIC_TEMP_REGNUM
8887         if TARGET_MIPS16.
8888         (mips_cprestore_slot): New function.
8889         (mips_restore_gp): Take a TEMP parameter.  Handle TARGET_MIPS16
8890         and use mips_cprestore_slot.
8891         (mips_output_function_prologue): Handle TARGET_MIPS16 for
8892         LOADGP_OLDABI.
8893         (mips_emit_loadgp): Move into MIPS16_PIC_TEMP for MIPS16,
8894         then use a copygp_mips16 instruction to set up $28.
8895         (mips_expand_prologue): Initialize the cprestore slot for MIPS16 too.
8896         (mips16_lay_out_constants): Call split_all_insns_noflow.
8897         (mips_reorg_process_insns): Explicitly set all_noreorder_p to
8898         false if TARGET_MIPS16.
8899         (mips_reorg): Don't call vr4130_align_insns if TARGET_MIPS16.
8900         (mips_output_mi_thunk): Use mips_got_symbol_type_p.  Use the
8901         mips_dangerous_for_la25_p approach for MIPS16 PIC calls too.
8902         (mips_set_mips16_mode): Always set MASK_EXPLICIT_RELOCS for
8903         MIPS16 code.  Allow MIPS16 o32 PIC.
8904         (mips_override_options): Allow MIPS16 o32 PIC.
8905         * config/mips/mips.md: Lower CONST_GP_P moves into register moves
8906         after reload if TARGET_USE_GOT.
8907         (UNSPEC_COPYGP): New constant.
8908         (length): Use a default length of 8 for MIPS16 GOT loads.
8909         (*got_disp<mode>): Check mips_split_p instead of TARGET_XGOT.
8910         (*got_page<mode>): Check mips_split_hi_p.
8911         (*got_disp<mode>, *got_page<mode>): Use mips_got_load.
8912         (unspec_got<mode>, unspec_call<mode>): New expanders.
8913         (load_got<mode>, load_call<mode>): Remove the length attributes.
8914         Use a got attribute instead of a type attribute.
8915         (copygp_mips16): New insn.
8916         (restore_gp): Add a scratch clobber and pass it to mips_restore_gp.
8917         (load_call<mode>): Use a "d" constraint instead of an "r" constraint.
8918         (sibcall, sibcall_value, call, call_value): Update the calls
8919         to mips_expand_call.
8920         (call_internal, call_value_internal): Use mips_split_call.
8921         (call_value_multiple_internal): Likewise.
8922         (call_split): Move after call_internal (the insn it is split from).
8923         (call_internal_direct, call_value_internal_direct): Turn into
8924         define_insn_and_splits.  Split if TARGET_SPLIT_CALLS.
8925         (call_direct_split, call_value_direct_split): New patterns.
8926         * config/mips/constraints.md (c): Handle TARGET_MIPS16 first
8927         and use M16_REGS instead of M16_NA_REGS.
8928         * config/mips/predicates.md (const_call_insn_operand): Replace
8929         the TARGET_ABSOLUTE_ABICALLS-based check with a more general
8930         mips_use_pic_fn_addr_reg_p check.
8931         (move_operand): Reject HIGHs if mips_split_hi_p.
8932         * config/mips/mips16.S: Assembly as empty if the ABI is not suitable.
8933         (__mips16_floatunsisf): Inline __mips16_floatsisf.
8934         (CALL_STUB_NO_RET, CALL_STUB_REG): Copy the target register to $25.
8935         * config/mips/libgcc-mips16.ver: New file.
8936         * config/mips/t-libgcc-mips16 (SHLIB_MAPFILES): Add
8937         $(srcdir)/config/mips/libgcc-mips16.ver.
8938
8939 2008-08-09  Richard Sandiford  <rdsandiford@googlemail.com>
8940
8941         * config/mips/mips.c (mips_unspec_address_offset): Move earlier
8942         in file.
8943         (mips_unspec_address, mips_unspec_offset_high): Likewise.
8944         (mips_ok_for_lazy_binding_p, mips_load_call_address): Likewise.
8945         (mips16_cfun_returns_in_fpr_p): Likewise.
8946
8947 2008-08-09  Richard Sandiford  <rdsandiford@googlemail.com>
8948
8949         * config/mips/mips.h (MASK_RETURN_ADDR): Expand commentary.
8950         * config/mips/linux-unwind.h (mips_fallback_frame_state): Add 2
8951         rather than 4 to PC.
8952
8953 2008-08-09  Richard Sandiford  <rdsandiford@googlemail.com>
8954
8955         * config/mips/mips.h (STATIC_CHAIN_REGNUM): Remap to $15.
8956         (FUNCTION_PROFILER): Save the static chain pointer into $2
8957         beforehand and restore it aftewards.
8958         (TRAMPOLINE_TEMPLATE): Adjust accordingly.  Load the target
8959         address directly into $25 and call the function through $25;
8960         do not clobber $3.  Pad the DImode version to cover the space
8961         left by the deleted $25 <- $3 move.
8962         (TRAMPOLINE_SIZE): Adjust the size of the SImode version after
8963         the removal of the $25 <- $3 move.
8964         (INITIALIZE_TRAMPOLINE): Update offsets accordingly.
8965         * config/mips/sdemtk.h (FUNCTION_PROFILER): As for mips.h.
8966
8967 2008-08-09  Richard Sandiford  <rdsandiford@googlemail.com>
8968             Daniel Jacobowitz  <dan@codesourcery.com>
8969
8970         * config/mips/mips.h (FUNCTION_NAME_ALREADY_DECLARED): Delete.
8971         * config/mips/linux.h (ASM_DECLARE_FUNCTION_NAME): Delete.
8972         (ASM_DECLARE_FUNCTION_SIZE, FUNCTION_NAME_ALREADY_DECLARED): Delete.
8973         * config/mips/mips.c (mips_start_function_definition): New function.
8974         (mips_end_function_definition): Likewise.
8975         (mips_output_function_prologue): Use mips_start_function_definition.
8976         (mips_output_function_epilogue): Use mips_end_function_definition.
8977         (build_mips16_function_stub): Use mips_start_function_definition
8978         and mips_end_function_definition.
8979         (build_mips16_call_stub): Likewise.
8980
8981 2008-08-09  Richard Guenther  <rguenther@suse.de>
8982
8983         * gimple.c (gimple_build_call_1): Deal with FUNCTION_DECL fn.
8984         * gimple.h (gimple_call_fn): Adjust comment.
8985         (gimple_call_set_fndecl): New function.
8986         (gimple_call_fndecl): Adjust for GIMPLE_CALL no
8987         longer having bare FUNCTION_DECL operand.
8988         (gimple_call_return_type): Likewise.
8989         * tree-cfg.c (verify_stmt): Verify function operand of a GIMPLE_CALL.
8990
8991         * value-prof.c (gimple_divmod_fixed_value): Do not emit labels.
8992         (gimple_mod_pow2): Likewise.
8993         (gimple_mod_subtract): Likewise.
8994         (gimple_ic): Likewise.
8995         (gimple_stringop_fixed_value): Likewise.
8996         (gimple_indirect_call_to_profile): Fix for GIMPLE_CALL no
8997         longer having bare FUNCTION_DECL operand.
8998         * ipa-cp.c (ipcp_update_callgraph): Use gimple_call_set_fndecl.
8999         * omp-low.c (optimize_omp_library_calls): Likewise.
9000         * cgraphunit.c (update_call_expr): Likewise.
9001         * tree-ssa-math-opts.c (execute_cse_reciprocals): Likewise.
9002         (execute_convert_to_rsqrt): Likewise.
9003         * cfgexpand.c (gimple_to_tree): Simplify.
9004         (release_stmt_tree): Fix for GIMPLE_CALL no longer having
9005         bare FUNCTION_DECL operand.
9006         * tree-nested.c (init_tmp_var_with_call): Use gimple_call_return_type.
9007         (convert_gimple_call): Use gimple_call_fndecl.
9008         * c-common.c (c_warn_unused_result): Likewise.
9009
9010 2008-08-09  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
9011
9012         PR c/17880
9013         * c-typeck.c (digest_init): Call verify_sequence_points from here.
9014         (c_finish_return): Likewise.
9015         (c_start_case): Likewise.
9016         * c-common.c (warn_for_collisions_1): Use explicit location in warning.
9017         * c-parser.c (c_parser_condition): New. Call
9018         verify_sequence_points.
9019         (c_parser_paren_condition): Call c_parser_condition.
9020         (c_parser_for_statement): Call c_parser_condition.
9021
9022 2008-08-09  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
9023
9024         PR 36901
9025         * diagnostic.def (DK_PEDWARN, DK_PERMERROR): New.
9026         * diagnostic.c (pedantic_warning_kind, permissive_error_kind):
9027         Moved from diagnostic.h
9028         (diagnostic_report_diagnostic): Return bool. Handle DK_PEDWARN and
9029         DK_PERMERROR.
9030         (emit_diagnostic): New.
9031         (warning0, pedwarn0): Delete.
9032         (warning, warning_at, pedwarn, permerror): Return bool.
9033         * diagnostic.h (pedantic_warning_kind, permissive_error_kind):
9034         Moved to diagnostic.c.
9035         (struct diagnostic_context): Use correct type for
9036         classify_diagnostic.
9037         (diagnostic_report_diagnostic): Update declaration.
9038         (emit_diagnostic): Declare.
9039         * errors.c (warning): Return bool.
9040         * errors.h (warning): Update declaration.
9041         * toplev.h (warning0, pedwarn0): Delete.
9042         (warning, warning_at, pedwarn, permerror): Return bool.
9043         * c-errors.c (pedwarn_c99, pedwarn_c90): Use DK_PEDWARN.
9044         * c-decl.c (locate_old_decl): Delete 'diag' argument. Always use
9045         inform. Update all calls.
9046         (diagnose_mismatched_decls): Check return value of warning/pedwarn
9047         before giving informative note.
9048         (implicit_decl_warning): Likewise.
9049         * c-typeck.c (build_function_call): Likewise.
9050         * tree-sssa.c (warn_uninit): Likewise.
9051         * builtins.c (gimplify_va_arg_expr): Likewise.
9052
9053 2008-08-09  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
9054
9055         PR 7651
9056         * doc/invoke.texi (-Wextra): Move warning from here...
9057         (-Wuninitialized): ... to here.
9058
9059 2008-08-08  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
9060
9061         PR 28875
9062         * flags.h (set_Wunused): Delete
9063         * toplev.c (process_options): Handle Wunused flags here.
9064         * opts.c (maybe_warn_unused_parameter): Delete.
9065         (common_handle_option): Replace set_Wunused by warn_unused.
9066         (set_Wextra): Do not handle Wunused-parameter here.
9067         (set_Wunused): Delete.
9068         * c-opts.c (c_common_handle_option): Replace set_Wunused by
9069         warn_unused.
9070         * common.opt (Wunused): Add Var and Init.
9071         (Wunused-function): Likewise.
9072         (Wunused-label): Likewise.
9073         (Wunused-parameter): Likewise.
9074         (Wunused-value): Likewise.
9075         (Wunused-variable): Likewise.
9076
9077 2008-08-08  Peter Bergner  <bergner@vnet.ibm.com>
9078
9079         * doc/invoke.texi: Add cpu_type power7.
9080         * config.in (HAVE_AS_VSX): New.
9081         * config.gcc: Add cpu_type power7.
9082         * configure.ac (HAVE_AS_VSX): Check for assembler support of the
9083         VSX instructions.
9084         * configure: Regenerate.
9085         * config/rs6000/rs6000.c (rs6000_override_options): Alias power7 to
9086         power5.
9087         * config/rs6000/rs6000.h (ASM_CPU_POWER7_SPEC): Define.
9088         (ASM_CPU_SPEC): Pass %(asm_cpu_power7) for -mcpu=power7.
9089         (EXTRA_SPECS): Add asm_cpu_power7 spec string.
9090
9091 2008-08-08  Dorit Nuzman  <dorit@il.ibm.com>
9092
9093         * tree-vect-transform.c (vectorizable_conversion): Pass the integral
9094         type to vectorize.builtin_conversion.
9095         (vectorizable_conversion): Likewise.
9096         * config/i386/i386.c (ix86_vectorize_builtin_conversion): Always takes
9097         integral type as input.
9098         * config/rs6000/rs6000.c (rs6000_builtin_conversion): Add case for
9099         FIX_TRUNC_EXPR.
9100         (rs6000_expand_builtin): Add case for ALTIVEC_BUILTIN_VCTUXS
9101         and ALTIVEC_BUILTIN_VCTSXS.
9102         (rs6000_builtin_mul_widen_even. rs6000_builtin_mul_widen_odd): Fix
9103         formatting.
9104
9105 2008-08-08  Richard Guenther  <rguenther@suse.de>
9106
9107         * tree-ssa-ccp.c (likely_value): Calls are not all varying.
9108         (surely_varying_stmt_p): Calls are varying only if they are
9109         non-builtin and not indirect or have no result.
9110         (ccp_fold): Re-instantiate code before the tuples merge.
9111
9112 2008-08-08  Richard Guenther  <rguenther@suse.de>
9113
9114         PR tree-optimization/37056
9115         * gimple.h (gimple_assign_rhs_class): New helper function.
9116         * tree-ssa-loop-niter.c (get_val_for): Fix tuplification, handle
9117         unary operations properly.
9118
9119 2008-08-07  Jan Hubicka  <jh@suse.cz>
9120
9121         * i386.h (ix86_size_cost): Declare.
9122         (ix86_cur_cost): New function macro.
9123         * i386.md (peepholes expanding size and splitters): Predicate by
9124         optimize_insn_for_speed_p.
9125         (peepholes reduce size and splitters): Predicate by
9126         optimize_insn_for_size_p.
9127         * i386.c (ix86_size_cost): Rename from ...
9128         (size_cost): This one.
9129         (override_options): Update.
9130         (decide_alg): Likewise.
9131         (ix86_expand_clear): Use RTL profile.
9132         (ix86_pad_returns): Use RTL profile.
9133
9134 2008-08-07  Jan Hubicka  <jh@suse.cz>
9135
9136         * recog.c (split_all_insns): Set RTL profile
9137         (peephole2_optimize): Likewise.
9138         * function.c (thread_prologue_and_epilogue_insns): Likewise.
9139         * combine.c (combine_instructions): Likewise.
9140
9141 2008-08-07  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
9142
9143         * c-common.c (c_common_reswords): Also warn about keyword "bool".
9144
9145 2008-08-07  Bob Wilson  <bob.wilson@acm.org>
9146
9147         * config/xtensa/xtensa.c (xtensa_copy_incoming_a7): Copy incoming
9148         value in a6 after the set_frame_ptr insn.
9149
9150 2008-08-07  Richard Henderson  <rth@redhat.com>
9151
9152         PR debug/37033
9153         * gcc.c (cpp_options): Pass along -g*.
9154
9155 2008-08-07  Joseph Myers  <joseph@codesourcery.com>
9156
9157         * config/arm/arm.c (output_move_neon): Update comment describing
9158         big-endian vector layout.
9159         (arm_assemble_integer): Do not handle big-endian NEON vectors
9160         specially.
9161         * config/arm/neon.md (vec_set<mode>_internal, vec_extract<mode>,
9162         neon_vget_lane<mode>_sext_internal,
9163         neon_vget_lane<mode>_zext_internal, neon_vget_lane<mode>): Adjust
9164         element indices for big-endian.
9165
9166 2008-08-07  Richard Henderson  <rth@redhat.com>
9167
9168         * configure.ac (HAVE_GAS_CFI_PERSONALITY_DIRECTIVE): New.
9169         * configure, config.in: Rebuild.
9170         * debug.h (dwarf2out_do_cfi_asm): Declare.
9171         * c-cppbuiltin.c (c_cpp_builtins): Use it.
9172         * dwarf2out.c (dwarf2out_do_cfi_asm): New.
9173         (dwarf2out_cfi_label, add_fde_cfi, output_call_frame_info,
9174         dwarf2out_begin_prologue, dwarf2out_end_epilogue): Use it.
9175
9176 2008-08-07  Joseph Myers  <joseph@codesourcery.com>
9177
9178         * config/arm/iwmmxt.md (movv8qi_internal, movv4hi_internal,
9179         movv2si_internal): Combine into mov<mode>_internal.
9180         (movv2si_internal_2): Remove.
9181
9182 2008-08-07  Jan Hubicka  <jh@suse.cz>
9183
9184         PR target/37048
9185         * i386.md (single stringop patterns): Enable unconditionally.
9186
9187 2008-08-07  H.J. Lu  <hongjiu.lu@intel.com>
9188
9189         PR target/36992
9190         * config/i386/emmintrin.h (_mm_move_epi64): Use __builtin_ia32_movq128.
9191
9192         * config/i386/i386.c (ix86_builtins): Add IX86_BUILTIN_MOVQ128.
9193         (bdesc_args): Add IX86_BUILTIN_MOVQ128.
9194
9195         * config/i386/sse.md (sse2_movq128): New.
9196
9197         * doc/extend.texi: Document __builtin_ia32_movq128.
9198
9199 2008-08-07  Richard Guenther  <rguenther@suse.de>
9200
9201         PR middle-end/37042
9202         * tree-ssa-alias-warnings.c (nonstandard_alias_p): Ref-all
9203         pointers can access anything.
9204
9205 2008-08-06  Jan Hubicka  <jh@suse.cz>
9206
9207         * optabs.c (emit_unop_insn): Break out to ...
9208         (maybe_emit_unop_insn): ... this one.
9209         (expand_sfix_optab): Use maybe variant.
9210         * optabs.h (maybe_emit_unop_insn): Declare.
9211
9212         * i386.md (mov0 patterns): Enable by default.
9213         (FP conversion expanders): Disable expansion of code expanding
9214         sequences when instruction should be optimized for size.
9215         (single strinop patterns): Enable when optimizing for size.
9216         (string expanders): Disable expanding of code expanding sequences
9217         when optimizning instruction for size.
9218         * i386.c (ix86_expand_vector_move_misalign): Do code size optimization
9219         per BB basis.
9220         (ix86_fp_comparison_sahf_cost): Likewise.
9221         (ix86_expand_branch): Likewise.
9222         (ix86_expand_ashl_const): Likewise.
9223         (ix86_split_ashl): Likewise.
9224         (ix86_expand_strlen): Likewise.
9225         (ix86_emit_fp_unordered_jump): Likewie.
9226
9227 2008-08-06  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
9228
9229         * c-common.c: Fix typo.
9230         (c_common_reswords): Activate more C++ keyword warnings.
9231
9232         * matrix-reorg.c (compute_offset): Avoid C++ keywords.
9233
9234 2008-08-06  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
9235
9236         PR 26785
9237         * diagnostic.c (permerror_at): New.
9238         * toplev.h (permerror_at): Declare.
9239
9240 2008-08-06  Victor Kaplansky  <victork@il.ibm.com>
9241             Ira Rosen  <irar@il.ibm.com>
9242
9243         * tree-vect-transform.c (vect_model_simple_cost): Return
9244         immediately if stmt is pure SLP.
9245         (vect_model_store_cost): Ditto.
9246         (vect_model_load_cost): Ditto.
9247         (vectorizable_store): Remove PURE_SLP check before call
9248         to vect_model_store_cost.
9249         (vect_model_store_cost): When checking whether stmt describe
9250         strided access, add a check that it is not slp_node.
9251
9252 2008-08-06  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
9253
9254         PR 8715
9255         * c-common.c (warn_for_sign_compare): New. Handle separately the
9256         case that 'constant' is zero.
9257         * c-typeck.c (build_binary_op): Move code to c-common.c
9258
9259 2008-08-06  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
9260
9261         * config/alpha/alpha.c (alpha_preferred_reload_class,
9262         alpha_secondary_reload, alpha_emit_set_const_1, function_value,
9263         alpha_output_mi_thunk_osf): Avoid C++ keywords.
9264         * config/arm/arm.c (output_move_vfp, output_move_neon): Likewise.
9265         * config/arm/arm.md: Likewise.
9266         * config/avr/avr-protos.h (preferred_reload_class,
9267         test_hard_reg_class, avr_simplify_comparison_p,
9268         out_shift_with_cnt, class_max_nregs): Likewise.
9269         * config/avr/avr.c (class_max_nregs, avr_simplify_comparison_p,
9270         output_movqi, output_movhi, output_movsisf, out_shift_with_cnt,
9271         preferred_reload_class, test_hard_reg_class): Likewise.
9272         * config/bfin/bfin.c (legitimize_pic_address, hard_regno_mode_ok,
9273         bfin_memory_move_cost, bfin_secondary_reload,
9274         bfin_output_mi_thunk): Likewise.
9275         * config/crx/crx.c (crx_secondary_reload_class,
9276         crx_memory_move_cost): Likewise.
9277         * config/frv/frv-protos.h (frv_secondary_reload_class,
9278         frv_class_likely_spilled_p, frv_class_max_nregs): Likewise.
9279         * config/frv/frv.c (frv_override_options, frv_alloc_temp_reg,
9280         frv_secondary_reload_class, frv_class_likely_spilled_p,
9281         frv_class_max_nregs): Likewise.
9282         * config/h8300/h8300.c (h8300_classify_operand,
9283         h8300_unary_length, h8300_bitfield_length, h8300_asm_insn_count):
9284         Likewise.
9285         * config/i386/winnt.c (i386_pe_declare_function_type): Likewise.
9286         * config/ia64/ia64.c (ia64_preferred_reload_class,
9287         ia64_secondary_reload_class, ia64_output_mi_thunk): Likewise.
9288         * config/iq2000/iq2000.c (gen_int_relational): Likewise.
9289         * config/m32c/m32c.c (class_can_hold_mode, m32c_output_compare):
9290         Likewise.
9291         * config/m68hc11/m68hc11.c (preferred_reload_class,
9292         m68hc11_memory_move_cost): Likewise.
9293         * config/mcore/mcore.c (mcore_secondary_reload_class,
9294         mcore_reload_class): Likewise.
9295         * config/mips/mips.c (mips_hard_regno_mode_ok_p,
9296         mips_class_max_nregs, mips_cannot_change_mode_class,
9297         mips_preferred_reload_class, mips_secondary_reload_class,
9298         mips_output_mi_thunk): Likewise.
9299         * config/mmix/mmix.c (mmix_preferred_reload_class,
9300         mmix_preferred_output_reload_class, mmix_secondary_reload_class):
9301         Likewise.
9302         * config/mn10300/mn10300.c (mn10300_secondary_reload_class):
9303         Likewise.
9304         * config/pa/pa.c (pa_secondary_reload, pa_combine_instructions,
9305         pa_can_combine_p, pa_cannot_change_mode_class): Likewise.
9306         * config/pa/pa.h (LEGITIMIZE_RELOAD_ADDRESS): Likewise.
9307         * config/rs6000/rs6000.c (paired_expand_vector_init,
9308         rs6000_secondary_reload_class, rs6000_output_mi_thunk,
9309         compare_section_name, rs6000_memory_move_cost): Likewise.
9310         * config/s390/s390.c (s390_emit_compare_and_swap,
9311         s390_preferred_reload_class, s390_secondary_reload,
9312         legitimize_pic_address, legitimize_tls_address,
9313         legitimize_reload_address, s390_expand_cs_hqi, s390_expand_atomic,
9314         s390_class_max_nregs): Likewise.
9315         * config/s390/s390.h (LEGITIMIZE_RELOAD_ADDRESS): Likewise.
9316         * config/s390/s390.md: Likewise.
9317         * config/score/score-protos.h (score_secondary_reload_class,
9318         score_preferred_reload_class): Likewise.
9319         * config/score/score.c (score_preferred_reload_class,
9320         score_secondary_reload_class): Likewise.
9321         * config/score/score3.c (score3_output_mi_thunk,
9322         score3_preferred_reload_class, score3_secondary_reload_class,
9323         score3_hard_regno_mode_ok): Likewise.
9324         * config/score/score3.h (score3_preferred_reload_class,
9325         score3_secondary_reload_class): Likewise.
9326         * config/score/score7.c (score7_output_mi_thunk,
9327         score7_preferred_reload_class, score7_secondary_reload_class,
9328         score7_hard_regno_mode_ok): Likewise.
9329         * config/score/score7.h (score7_preferred_reload_class,
9330         score7_secondary_reload_class): Likewise.
9331         * config/sh/sh.c (prepare_move_operands, output_far_jump,
9332         output_branchy_insn, add_constant, gen_block_redirect,
9333         sh_insn_length_adjustment, sh_cannot_change_mode_class,
9334         sh_output_mi_thunk, replace_n_hard_rtx, sh_secondary_reload): Likewise.
9335         * config/sparc/sparc.c (sparc_output_mi_thunk): Likewise.
9336         * config/stormy16/stormy16.c (xstormy16_output_cbranch_hi,
9337         xstormy16_output_cbranch_si, xstormy16_secondary_reload_class,
9338         xstormy16_preferred_reload_class): Likewise.
9339         * config/xtensa/xtensa.c (xtensa_expand_compare_and_swap,
9340         xtensa_expand_atomic, override_options,
9341         xtensa_preferred_reload_class, xtensa_secondary_reload_class):
9342         Likewise.
9343         * reorg.c (try_merge_delay_insns): Likewise.
9344         * tree.c (merge_dllimport_decl_attributes): Likewise.
9345
9346         * config/frv/frv.c (frv_print_operand): Change isalpha to ISALPHA.
9347
9348 2008-08-06  Michael Matz  <matz@suse.de>
9349
9350         * Makefile.in (write_entries_to_file): Quote words.
9351         * gengtype.c: (read_input_line): Skip over leading white-space.
9352
9353 2008-08-06  Marc Gauthier  <marc@tensilica.com>
9354
9355         * config.gcc: Match more processor names for Xtensa.
9356         * configure.ac: Likewise.
9357         * doc/install.texi (Specific): Likewise.
9358         * configure: Regenerate.
9359
9360 2008-08-06  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
9361
9362         * builtins.c (expand_builtin_profile_func): Avoid C++ keywords.
9363         * calls.c (avoid_likely_spilled_reg): Likewise.
9364         * cfgexpand.c (gimple_assign_rhs_to_tree): Likewise.
9365         * cgraph.c (cgraph_clone_edge, cgraph_clone_node): Likewise.
9366         * config/i386/i386.c (ix86_expand_special_args_builtin,
9367         ix86_secondary_reload): Likewise.
9368         * except.c (struct eh_region, gen_eh_region_catch,
9369         remove_unreachable_regions, duplicate_eh_regions,
9370         assign_filter_values, build_post_landing_pads,
9371         sjlj_find_directly_reachable_regions, remove_eh_handler,
9372         reachable_next_level, foreach_reachable_handler,
9373         can_throw_internal_1, can_throw_external_1,
9374         collect_one_action_chain): Likewise.
9375         * expr.c (expand_expr_real_1, vector_mode_valid_p): Likewise.
9376         * fold-const.c (twoval_comparison_p, eval_subst): Likewise.
9377         * function.c (update_temp_slot_address, instantiate_new_reg,
9378         instantiate_virtual_regs_in_rtx,
9379         instantiate_virtual_regs_in_insn): Likewise.
9380         * gimple.c (extract_ops_from_tree, gimple_seq_copy): Likewise.
9381         * gimplify.c (gimplify_call_expr, gimplify_init_constructor,
9382         gimplify_cleanup_point_expr): Likewise.
9383         * ipa-cp.c (ipcp_lattice_changed): Likewise.
9384         * passes.c (next_pass_1): Likewise.
9385         * print-tree.c (print_node_brief, print_node): Likewise.
9386         * profile.c (branch_prob): Likewise.
9387         * tree-dump.c (dump_register): Likewise.
9388         * tree-eh.c (replace_goto_queue_cond_clause, lower_catch):
9389         Likewise.
9390         * tree-inline.c (remap_ssa_name, remap_type_1, remap_blocks,
9391         copy_statement_list, remap_gimple_op_r, copy_tree_body_r,
9392         copy_edges_for_bb, copy_cfg_body, copy_tree_r,
9393         copy_arguments_for_versioning, copy_static_chain): Likewise.
9394         * tree-into-ssa.c (names_replaced_by, add_to_repl_tbl,
9395         add_new_name_mapping, register_new_name_mapping): Likewise.
9396         * tree-mudflap.c (mf_xform_derefs): Likewise.
9397         * tree-predcom.c (struct chain, dump_chain, replace_ref_with,
9398         get_init_expr, combine_chains): Likewise.
9399         * tree-pretty-print.c (dump_generic_node): Likewise.
9400         * tree-ssa-structalias.c (create_variable_info_for): Likewise.
9401         * tree-vrp.c (simplify_cond_using_ranges): Likewise.
9402         * tree.c (substitute_in_expr, iterative_hash_expr): Likewise.
9403         * value-prof.c (gimple_duplicate_stmt_histograms): Likewise.
9404
9405 2008-08-06  H.J. Lu  <hongjiu.lu@intel.com>
9406
9407         PR middle-end/37010
9408         * calls.c (expand_call): Use the biggest preferred stack
9409         boundary.
9410
9411 2008-08-06  Michael Matz  <matz@suse.de>
9412
9413         PR target/36613
9414         * reload.c (push_reload): Merge in,out,in_reg,out_reg members
9415         for reused reload, instead of overwriting them.
9416
9417 2008-08-06  H.J. Lu  <hongjiu.lu@intel.com>
9418
9419         PR middle-end/37009
9420         * cfgexpand.c (expand_stack_alignment): Check parm_stack_boundary
9421         for incoming stack boundary.
9422
9423         * function.c (assign_parm_find_entry_rtl): Update
9424         parm_stack_boundary.
9425
9426         * function.h (rtl_data): Add parm_stack_boundary.
9427
9428         * config/i386/i386.c (ix86_finalize_stack_realign_flags): Check
9429         parm_stack_boundary for incoming stack boundary.
9430
9431 2008-08-06  Joseph Myers  <joseph@codesourcery.com>
9432
9433         * jump.c (rtx_renumbered_equal_p): Do not call subreg_regno_offset
9434         for unrepresentable subregs or treat them as equal to other regs
9435         or subregs with the same register number.
9436
9437 2008-08-06  Aldy Hernandez  <aldyh@redhat.com>
9438
9439         PR middle-end/35432
9440         * gimplify.c (gimplify_modify_expr): Do not optimize zero-sized types
9441         if want_value.
9442
9443 2008-08-06  Jan Hubicka  <jh@suse.cz>
9444
9445         * predict.c (maybe_hot_frequency_p): When profile is absent, all
9446         frequencies might be hot.
9447
9448 2008-08-06  Andreas Krebbel  <krebbel1@de.ibm.com>
9449
9450         * reload.c (find_reloads): Force constants into literal pool
9451         also if they are wrapped in a SUBREG.
9452
9453 2008-08-06  Maxim Kuvyrkov  <maxim@codesourcery.com>
9454
9455         PR target/35659
9456         * haifa-sched.c (sched_insn_is_legitimate_for_speculation_p): Move ...
9457         * sched-deps.c (sched_insn_is_legitimate_for_speculation_p): ... here.
9458         Don't allow predicated instructions for data speculation.
9459         * sched-int.h (sched_insn_is_legitimate_for_speculation_p): Move
9460         declaration.
9461
9462 2008-08-06  Maxim Kuvyrkov  <maxim@codesourcery.com>
9463
9464         * haifa-sched.c (extend_global): Split to extend_global_data and
9465         extend_region_data.  Update all uses.
9466         (extend_all): Rename to extend_block_data.
9467
9468 2008-08-06  Maxim Kuvyrkov  <maxim@codesourcery.com>
9469
9470         * sched-rgn.c (new_ready): Check if instruction can be
9471         speculatively scheduled before attempting speculation.
9472         (debug_rgn_dependencies): Remove wrongful assert.
9473
9474 2008-08-05  Bob Wilson  <bob.wilson@acm.org>
9475
9476         * config/xtensa/t-xtensa: Remove dependency for gt-xtensa.h.
9477
9478 2008-08-05  Bob Wilson  <bob.wilson@acm.org>
9479
9480         * config/xtensa/xtensa.c (xtensa_va_start): Unshare valist.
9481         (xtensa_gimplify_va_arg_expr): Unshare valist, orig_ndx, ndx, array,
9482         va_size, and type_size.
9483
9484 2008-08-04  Jason Merrill  <jason@redhat.com>
9485
9486         PR c++/37016
9487         * tree-ssa.c (useless_type_conversion_p_1): Call langhook
9488         if TYPE_STRUCTURAL_EQUALITY_P is true for both types.
9489
9490 2008-08-05  Richard Henderson  <rth@redhat.com>
9491
9492         * configure.ac (HAVE_GAS_CFI_DIRECTIVE): Check .cfi_personality.
9493         * configure: Rebuild.
9494
9495 2008-08-05  Andrew Pinski  <andrew_pinski@playstation.sony.com>
9496
9497         PR tree-opt/37024
9498         * tree-tailcall.c (process_assignment): Use gimple_assign_cast_p
9499         instead of IS_CONVERT_EXPR_CODE_P for seeing if the assignment
9500         is a conversion.
9501
9502 2008-08-05  Richard Henderson  <rth@redhat.com>
9503
9504         * Makefile.in (c-cppbuiltin.o): Depend on debug.h.
9505         * c-cppbuiltin.c (c_cpp_builtins): Define __GCC_HAVE_DWARF2_CFI_ASM.
9506         * doc/cpp.texi (__GCC_HAVE_DWARF2_CFI_ASM): Document it.
9507         * common.opt (fdwarf2-cfi-asm): New.
9508         * configure.ac (HAVE_GAS_CFI_DIRECTIVE): New.
9509         * config.in, configure: Rebuild.
9510         * dwarf2asm.c (dw2_asm_output_data_raw): New.
9511         (dw2_asm_output_data_uleb128_raw, dw2_asm_output_data_sleb128_raw):
9512         New.
9513         (dw2_force_const_mem): Externalize.
9514         * dwarf2asm.h: Update.
9515         * dwarf2out.c (dwarf2out_cfi_label): If flag_dwarf2_cfi_asm, don't
9516         generate a real label.
9517         (output_cfi_directive): New.
9518         (add_fde_cfi): If flag_dwarf2_cfi_asm, use it.
9519         (output_call_frame_info): Do nothing if flag_dwarf2_cfi_asm.
9520         (dwarf2out_begin_prologue): Emit .cfi_startproc, .cfi_personality,
9521         and .cfi_lsda.
9522         (dwarf2out_end_epilogue): Emit .cfi_endproc.
9523         (output_loc_operands_raw, output_loc_sequence_raw): New.
9524         (output_cfa_loc_raw): New.
9525
9526 2008-08-05  Paul Brook  <paul@codesourcery.com>
9527
9528         * doc/invoke.texi: Document new ARM -mfpu= and -mcpu= options.
9529         * config/arm/arm.c (all_fpus): Add vfpv3 and vfpv3-d16.
9530         (fp_model_for_fpu): Add entry for FPUTYPE_VFP3D16.
9531         (arm_file_start): Add FPUTYPE_VFP3D16.  Rename vfp3 to vfpv3.
9532         * config/arm/arm.h (TARGET_VFPD32): Define.
9533         (TARGET_VFP3): Use TARGET_VFPD32.
9534         (fputype): Add FPUTYPE_VFP3D16.
9535         (LAST_VFP_REGNUM): Use TARGET_VFPD32.
9536         * config/arm/constraints.md ("w"): Use TARGET_VFPD32.
9537         * config/arm/arm-cores.def: Add cortex-r4f.
9538         * config/arm/arm-tune.md: Regenerate.
9539
9540 2008-08-05  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
9541
9542         * config/spu_spu_mfcio.h: Wrap in extern "C" if __cplusplus.
9543         Reword some comments throughout the file.
9544
9545         (MFC_MIN_DMA_LIST_ELEMENTS): New define.
9546         (MFC_MAX_DMA_LIST_ELEMENTS): Likewise.
9547         (MFC_MIN_DMA_LIST_SIZE): Redefine in terms of
9548         MFC_MIN_DMA_LIST_ELEMENTS.
9549         (MFC_MAX_DMA_LIST_SIZE): Redefine in terms of
9550         MFC_MAX_DMA_LIST_ELEMENTS.
9551
9552         (MFC_START_ENABLE): Remove PPU-only define.
9553         (MFC_PUTS_CMD, MFC_PUTFS_CMD, MFC_PUTBS_CMD): Likewise.
9554         (MFC_GETS_CMD, MFC_GETFS_CMD, MFC_GETBS_CMD): Likewise.
9555
9556         (MFC_PUTB_CMD, MFC_PUTF_CMD): Reimplement using symbolic constants.
9557         (MFC_PUTL_CMD, MFC_PUTLB_CMD, MFC_PUTLF_CMD): Likewise.
9558         (MFC_PUTR_CMD, MFC_PUTRB_CMD, MFC_PUTRF_CMD): Likewise.
9559         (MFC_PUTRL_CMD, MFC_PUTRLB_CMD, MFC_PUTRLF_CMD): Likewise.
9560         (MFC_GETB_CMD, MFC_GETF_CMD): Likewise.
9561         (MFC_GETL_CMD, MFC_GETLB_CMD, MFC_GETLF_CMD): Likewise.
9562         (MFC_SNDSIGB_CMD, MFC_SNDSIGF_CMD): Likewise.
9563
9564         (MFC_SDCRT_CMD, MFC_SDCRTST_CMD): New defines.
9565         (MFC_SDCRZ_CMD, MFC_SDCRST_CMD, MFC_SDCRF_CMD): Likewise.
9566         (mfc_sdcrt, mfc_sdcrtst): Likewise.
9567         (mfc_sdcrz, mfc_sdcrst, mfc_sdcrf): Likewise.
9568
9569         (spu_read_machine_status): Fix typo.
9570
9571 2008-08-05  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
9572
9573         * config/spu/spu.h (CANNOT_CHANGE_MODE_CLASS): Allow (multi)word-sized
9574         SUBREG of multi-word hard register.
9575         * config/spu/spu.c (valid_subreg): Likewise.
9576         (adjust_operand): Handle SUBREGs of multi-word hard registers.
9577
9578 2008-08-04  Richard Guenther  <rguenther@suse.de>
9579
9580         * tree-ssa-loop-ivopts.c (add_iv_value_candidates): Also add
9581         the candidate with the stripped base if that base is different
9582         from the original base even for offset zero.
9583
9584 2008-08-04  Richard Guenther  <rguenther@suse.de>
9585
9586         PR middle-end/36691
9587         * tree-ssa-loop-niter.c (number_of_iterations_lt_to_ne): Correctly
9588         check for no_overflow.
9589
9590 2008-08-04  Richard Guenther  <rguenther@suse.de>
9591
9592         * tree-vect-transform.c (vectorizable_call): Fix tuplification.
9593
9594 2008-08-04  Paul Brook  <paul@codesourcery.com>
9595
9596         * cofig/arm/arm.c (thumb_core_reg_alloc_order): New.
9597         (arm_order_regs_for_local_alloc): New function.
9598         * config/arm/arm-protos.h (arm_order_regs_for_local_alloc): Add
9599         prototype.
9600         * config/arm/arm.h (ORDER_REGS_FOR_LOCAL_ALLOC): Define.
9601
9602 2008-08-04  H.J. Lu  <hongjiu.lu@intel.com>
9603
9604         PR target/37012
9605         * config/i386/i386.c (ix86_expand_prologue): Use UNITS_PER_WORD
9606         instead of STACK_BOUNDARY / BITS_PER_UNIT to align stack.
9607         (ix86_expand_epilogue): Likewise.
9608
9609 2008-08-04  H.J. Lu  <hongjiu.lu@intel.com>
9610
9611         * config/i386/i386.c (ix86_compute_frame_layout): Fix a typo
9612         in comments.
9613
9614 2008-08-03  Uros Bizjak  <ubizjak@gmail.com>
9615
9616         * config/i386/mmx.md (*mov<mode>_internal_rex64): Use Yi instead of x
9617         to avoid inter-unit moves for !TARGET_INTER_UNIT_MOVES.
9618         (*movv2sf_internal_rex64): Ditto.
9619
9620 2008-08-03  Jan Hubicka  <jh@suse.cz>
9621
9622         * optabs.c (expand_binop, expand_builtin_pow, expand_builtin_powi,
9623         expand_builtin_strcat): Upse optimize_insn_for_speed predicate.
9624         * expmed.c (expand_smod_pow2): Likewise.
9625
9626 2008-08-03  Uros Bizjak  <ubizjak@gmail.com>
9627
9628         PR target/36992
9629         * config/i386/sse.md (vec_concatv2di): Add Y2 constraint to
9630         alternative 0 of operand 1.
9631         (*vec_concatv2di_rex64_sse): Ditto.
9632         (*vec_concatv2di_rex64_sse4_1): Add x constraint to alternative 0
9633         of operand 1.
9634         (*sse2_storeq_rex64): Penalize allocation of "r" registers.
9635         * config/i386/mmx.md (*mov<mode>_internal_rex64): Penalize allocation
9636         of "Y2" registers to avoid SSE <-> MMX conversions for DImode moves.
9637         (*movv2sf_internal_rex64): Ditto.
9638
9639 2008-08-02  Richard Guenther  <rguenther@suse.de>
9640
9641         PR target/35252
9642         * config/i386/sse.md (SSEMODE4S, SSEMODE2D): New mode iterators.
9643         (ssedoublesizemode): New mode attribute.
9644         (sse_shufps): Call gen_sse_shufps_v4sf.
9645         (sse_shufps_1): Macroize.
9646         (sse2_shufpd): Call gen_Sse_shufpd_v2df.
9647         (sse2_shufpd_1): Macroize.
9648         (vec_extract_odd, vec_extract_even): New expanders.
9649         (vec_interleave_highv4sf, vec_interleave_lowv4sf,
9650         vec_interleave_highv2df, vec_interleave_lowv2df): Likewise.
9651         * i386.c (ix86_expand_vector_init_one_nonzero): Call
9652         gen_sse_shufps_v4sf instead of gen_sse_shufps_1.
9653         (ix86_expand_vector_set): Likewise.
9654         (ix86_expand_reduc_v4sf): Likewise.
9655
9656 2008-08-01  Doug Kwan  <dougkwan@google.com>
9657
9658         * matrix-reorg.c: Re-enable all code.
9659         (struct malloc_call_data): Change CALL_STMT to gimple type.
9660         (collect_data_for_malloc_call): Tuplify.
9661         (struct access_site_info): Change STMT to gimple type.
9662         (struct matrix_info): Change MIN_INDIRECT_LEVEL_ESCAPE_STMT,
9663         and MALLOC_FOR_LEVEL to gimple and gimple pointer type.
9664         (struct free_info): Change STMT to gimple type.
9665         (struct matrix_access_phi_node):  Change PHI to gimple type.
9666         (get_inner_of_cast_expr): Remove.
9667         (may_flatten_matrices_1): Tuplify.
9668         (may_flatten_matrices): Ditto.
9669         (mark_min_matrix_escape_level): Ditto.
9670         (ssa_accessed_in_tree): Refactor statement RHS related code into ...
9671         (ssa_accessed_in_call_rhs): New
9672         (ssa_accessed_in_assign_rhs): New
9673         (record_access_alloc_site_info): Tuplify.
9674         (add_allocation_site): Ditto.
9675         (analyze_matrix_allocation_site): Ditto.
9676         (analyze_transpose): Ditto.
9677         (get_index_from_offset): Ditto.
9678         (update_type_size): Ditto.
9679         (analyze_accesses_for_call_expr): Tuplify and renamed into ...
9680         (analyze_accesses_for_call_stmt): New. Also handle LHS of a call.
9681         (analyze_accesses_for_phi_node): Tuplify.
9682         (analyze_accesses_for_modify_stmt): Tuplify and renamed into ...
9683         (analyze_accesses_for_assign_stmt): Remove code for handling call LHS.
9684         (analyze_matrix_accesses): Tuplify.
9685         (check_var_data): New call-back type for check_var_notmodified_p.
9686         (check_var_notmodified_p): Tuplify and use call-back struct to
9687         return statement found.
9688         (can_calculate_expr_before_stmt): Factor out statement related code
9689         into ...
9690         (can_calculate_stmt_before_stmt): New.
9691         (check_allocation_function): Tuplify.
9692         (find_sites_in_func): Ditto.
9693         (record_all_accesses_in_func): Ditto.
9694         (transform_access_sites): Ditto.
9695         (transform_allocation_sites): Ditto.
9696         (matrix_reorg): Re-enable.
9697         (gate_matrix_reorg): Re-enable.
9698
9699 2008-08-01  Jakub Jelinek  <jakub@redhat.com>
9700
9701         * dwarf2out.c (compute_barrier_args_size): Set barrier_args_size
9702         for labels for which it hasn't been set yet.  If it has been set,
9703         stop walking insns and continue with next worklist item.
9704         (dwarf2out_stack_adjust): Don't call compute_barrier_args_size
9705         if the only BARRIER is at the very end of a function.
9706
9707 2008-08-01  H.J. Lu  <hongjiu.lu@intel.com>
9708
9709         * cfgexpand.c (expand_stack_alignment): Assert that
9710         stack_realign_drap and drap_rtx must match.
9711
9712         * function.c (instantiate_new_reg): If DRAP is used to realign
9713         stack, replace virtual_incoming_args_rtx with internal arg
9714         pointer.
9715
9716 2008-08-01  Richard Guenther  <rguenther@suse.de>
9717
9718         * tree-ssa-pre.c (fini_pre): Take in_fre parameter.  Free
9719         loop information only if we initialized it.
9720         (execute_pre): Call fini_pre with in_fre.
9721         * tree-ssa-loop-ivcanon (try_unroll_loop_completely): Dump
9722         if we do not unroll because we hit max-completely-peeled-insns.
9723         Use our estimation for consistency, do allow shrinking.
9724
9725 2008-08-01  H.J. Lu  <hongjiu.lu@intel.com>
9726
9727         * config/i386/i386.c (override_options): Replace ABI_STACK_BOUNDARY
9728         with MIN_STACK_BOUNDARY.
9729         (ix86_update_stack_boundary): Likewise.
9730         (ix86_expand_prologue): Assert MIN_STACK_BOUNDARY instead of
9731         STACK_BOUNDARY.
9732
9733         * config/i386/i386.h (ABI_STACK_BOUNDARY): Renamed to ...
9734         (MIN_STACK_BOUNDARY): This.
9735
9736 2008-08-01  Richard Guenther  <rguenther@suse.de>
9737
9738         PR middle-end/36997
9739         * gimplify.c (gimplify_call_expr): Set error_mark_node on GS_ERROR.
9740
9741 2008-08-01  Richard Guenther  <rguenther@suse.de>
9742
9743         PR tree-optimization/36988
9744         * tree-ssa-ccp.c (ccp_fold): Conversions of constants only
9745         do not matter if that doesn't change volatile qualification.
9746
9747 2008-08-01  Paolo Bonzini  <bonzini@gnu.org>
9748
9749         * configure.ac: Do not generate libada-mk.  Do not subst
9750         host_cc_for_libada.
9751         * libada-mk.in: Remove.
9752         * Makefile.in: Pass TARGET_LIBGCC2_CFLAGS to libgcc.mvars.
9753         * configure: Regenerate.
9754
9755 2008-08-01  Basile Starynkevitch  <basile@starynkevitch.net>
9756
9757         * tree-pass.h: Added comment about not dumping passes with name
9758         starting with star in struct opt_pass.
9759         * passes.c (register_dump_files_1): Don't do dump for a pass with
9760         name starting with star.
9761         * doc/passes.texi (Pass manager): Mention pass names and special
9762         meaning of star prefix to avoid dump.
9763
9764 2008-07-31  Adam Nemet  <anemet@caviumnetworks.com>
9765
9766         * config.gcc (mipsisa64r2*-*-linux*): New configuration.  Set ISA
9767         to MIPS64r2.
9768         * config/mips/mips.h (GENERATE_MIPS16E): Update comment.
9769         (ISA_MIPS64R2): New macro.
9770         (TARGET_CPU_CPP_BUILTINS, MULTILIB_ISA_DEFAULT): Handle it.
9771         (ISA_HAS_64BIT_REGS, ISA_HAS_MUL3, ISA_HAS_FP_CONDMOVE,
9772         ISA_HAS_8CC, ISA_HAS_FP4, ISA_HAS_PAIRED_SINGLE,
9773         ISA_HAS_MADD_MSUB, ISA_HAS_NMADD4_NMSUB4, ISA_HAS_CLZ_CLO,
9774         ISA_HAS_ROR, ISA_HAS_PREFETCH, ISA_HAS_PREFETCHX, ISA_HAS_SEB_SEH,
9775         ISA_HAS_EXT_INS, ISA_HAS_MXHC1, ISA_HAS_HILO_INTERLOCKS,
9776         ISA_HAS_SYNCI, MIN_FPRS_PER_FMT): Return true for ISA_MIPS64R2.
9777         (MIPS_ISA_LEVEL_SPEC, ASM_SPEC, LINK_SPEC): Handle -mips64r2.
9778         (TARGET_LOONGSON_2E, TARGET_LOONGSON_2F, TARGET_LOONGSON_2EF):
9779         Move up to keep list alphabetically sorted.
9780         (TUNE_20KC, TUNE_24K, TUNE_74K, TUNE_LOONGSON_2EF): Likewise.
9781         * config/mips/mips.c (mips_cpu_info_table): Add default MIPS64r2
9782         processor.
9783         * doc/invoke.texi (MIPS Options): Add -mips64r2.
9784         (-march=@var{arch}): Add mips64r2.
9785
9786 2008-07-31  H.J. Lu  <hongjiu.lu@intel.com>
9787
9788         * config/i386/darwin.h (MAIN_STACK_BOUNDARY): Define to 128.
9789
9790 2008-07-31  Steve Ellcey  <sje@cup.hp.com>
9791
9792         * expr.c (expand_assignment): Check for complete type.
9793
9794 2008-07-31  H.J. Lu  <hongjiu.lu@intel.com>
9795
9796         PR debug/36977
9797         * cfgexpand.c (expand_stack_alignment): Set stack_realign_tried.
9798
9799         * dwarf2out.c (based_loc_descr): Check crtl->stack_realign_tried
9800         for stack alignment.
9801
9802         * function.h (rtl_data): Add stack_realign_tried.  Update comments.
9803
9804 2008-07-31  Kaz Kojima  <kkojima@gcc.gnu.org>
9805
9806         * config/sh/sh.c (sh_canonical_va_list_type): Remove.
9807         (TARGET_CANONICAL_VA_LIST_TYPE): Remove.
9808
9809 2008-07-31  Jakub Jelinek  <jakub@redhat.com>
9810
9811         PR rtl-optimization/36419
9812         * dwarf2out.c (barrier_args_size): New variable.
9813         (compute_barrier_args_size, compute_barrier_args_size_1): New
9814         functions.
9815         (dwarf2out_stack_adjust): For BARRIERs call compute_barrier_args_size
9816         if not called yet in the current function, use barrier_args_size
9817         array to find the new args_size value.
9818         (dwarf2out_frame_debug): Free and clear barrier_args_size.
9819
9820 2008-07-31  H.J. Lu  <hongjiu.lu@intel.com>
9821
9822         PR debug/36980
9823         * dwarf2out.c (dwarf2out_frame_debug_expr): Move rule 17 before
9824         rule 19.
9825
9826 2008-07-31  H.J. Lu  <hongjiu.lu@intel.com>
9827
9828         PR debug/36976
9829         * dwarf2out.c (dwarf2out_args_size_adjust): New.
9830         (dwarf2out_stack_adjust): Use it.
9831         (dwarf2out_frame_debug_expr): Likewise.
9832
9833 2008-07-31  Richard Guenther  <rguenther@suse.de>
9834
9835         PR tree-optimization/36978
9836         * tree-ssa-loop-unswitch.c (tree_may_unswitch_on): Do not fold
9837         the generated condition.
9838
9839 2008-07-31  Richard Guenther  <rguenther@suse.de>
9840
9841         * passes.c (init_optimization_passes): Always call
9842         pass_early_warn_uninitialized.
9843         * opts.c (decode_options): Do not warn about -Wuninitialized at -O0.
9844         * doc/invoke.texi (-Wuninitialized): Correct for enabling at -O0.
9845         * doc/passes.texi (Warn for uninitialized variables): Adjust.
9846
9847 2008-07-31  Jakub Jelinek  <jakub@redhat.com>
9848
9849         PR c/36970
9850         * builtins.c (maybe_emit_free_warning): New function.
9851         (expand_builtin): Process BUILT_IN_FREE even at -O0.  Call
9852         maybe_emit_free_warning for BUILT_IN_FREE.
9853
9854         PR debug/36278
9855         * dwarf2out.c (get_context_die): New function.
9856         (force_decl_die, force_type_die): Use it.
9857         (dwarf2out_imported_module_or_decl): Likewise.  If base_type_die
9858         returns NULL, force generation of DW_TAG_typedef and put that into
9859         DW_AT_import.
9860
9861         PR preprocessor/36649
9862         * c-pch.c (c_common_read_pch): Save and restore
9863         line_table->trace_includes across PCH restore.
9864
9865 2008-07-30  Eric Botcazou  <ebotcazou@adacore.com>
9866
9867         PR ada/36554
9868         * dwarf2out.c (is_subrange_type): Deal with BOOLEAN_TYPE.
9869
9870 2008-07-30  Rafael Ávila de Espíndola  <espindola@google.com>
9871
9872         PR 36974
9873         * final.c (call_from_call_insn): Handle COND_EXEC.
9874
9875 2008-07-30  H.J. Lu  <hongjiu.lu@intel.com>
9876
9877         * builtins.c (std_gimplify_va_arg_expr): Replace
9878         PREFERRED_STACK_BOUNDARY with MAX_SUPPORTED_STACK_ALIGNMENT.
9879         * config/i386/i386.c (ix86_gimplify_va_arg): Likewise.
9880
9881 2008-07-30  Joey Ye  <joey.ye@intel.com>
9882             H.J. Lu  <hongjiu.lu@intel.com>
9883
9884         * builtins.c (expand_builtin_setjmp_receiver): Replace
9885         virtual_incoming_args_rtx with crtl->args.internal_arg_pointer.
9886         (expand_builtin_apply_args_1): Likewise.
9887         (expand_builtin_longjmp): Need DRAP for stack alignment.
9888         (expand_builtin_apply): Likewise.
9889
9890         * caller-save.c (setup_save_areas): Call assign_stack_local_1
9891         instead of assign_stack_local to allow alignment reduction.
9892
9893         * calls.c (emit_call_1): Need DRAP for stack alignment if
9894         return pops.
9895         (expand_call): Replace virtual_incoming_args_rtx with
9896         crtl->args.internal_arg_pointer.
9897         * stmt.c (expand_nl_goto_receiver): Likewise.
9898
9899         * cfgexpand.c (get_decl_align_unit): Estimate stack variable
9900         alignment and store to stack_alignment_estimated and
9901         max_used_stack_slot_alignment.
9902         (expand_one_var): Likewise.
9903         (expand_stack_alignment): New function.
9904         (tree_expand_cfg): Initialize max_used_stack_slot_alignment
9905         and stack_alignment_estimated fields in rtl_data.  Call
9906         expand_stack_alignment at end.
9907
9908         * defaults.h (INCOMING_STACK_BOUNDARY): New.
9909         (MAX_STACK_ALIGNMENT): Likewise.
9910         (MAX_SUPPORTED_STACK_ALIGNMENT): Likewise.
9911         (SUPPORTS_STACK_ALIGNMENT): Likewise.
9912
9913         * emit-rtl.c (gen_reg_rtx): Estimate stack alignment for
9914         stack alignment when generating virtual registers.
9915
9916         * function.c (assign_stack_local): Renamed to ...
9917         (assign_stack_local_1): This.  Add a parameter to indicate
9918         if it is OK to reduce alignment.
9919         (assign_stack_local): Use it.
9920         (instantiate_new_reg): Instantiate virtual incoming args rtx
9921         to vDRAP if stack realignment and DRAP is needed.
9922         (assign_parms): Collect parameter/return type alignment and
9923         contribute to stack_alignment_estimated.
9924         (locate_and_pad_parm): Likewise.
9925         (get_arg_pointer_save_area): Replace virtual_incoming_args_rtx
9926         with crtl->args.internal_arg_pointer.
9927
9928         * function.h (rtl_data): Add new field drap_reg,
9929         max_used_stack_slot_alignment, stack_alignment_estimated,
9930         stack_realign_needed, need_drap, stack_realign_processed and
9931         stack_realign_finalized.
9932         (stack_realign_fp): New macro.
9933         (stack_realign_drap): Likewise.
9934
9935         * global.c (compute_regsets): Frame pointer is needed when
9936         stack is realigned.  Can eliminate frame pointer when stack is
9937         realigned and dynamic realigned argument pointer isn't used.
9938
9939         * reload1.c (update_eliminables):  Frame pointer is needed
9940         when stack is realigned.
9941         (init_elim_table): Can eliminate frame pointer when stack is
9942         realigned and dynamic realigned argument pointer isn't used.
9943
9944         * rtl.h (assign_stack_local_1): Declare new funtion.
9945
9946         * target-def.h (TARGET_UPDATE_STACK_BOUNDARY): New.
9947         (TARGET_GET_DRAP_RTX): Likewise.
9948         (TARGET_CALLS): Add TARGET_UPDATE_STACK_BOUNDARY and
9949         TARGET_GET_DRAP_RTX.
9950
9951         * target.h (gcc_target): Add update_stack_boundary and get_drap_rtx.
9952
9953         * tree-vectorizer.c (vect_can_force_dr_alignment_p): Replace
9954         STACK_BOUNDARY with MAX_STACK_ALIGNMENT.
9955
9956 2008-07-30  Xuepeng Guo  <xuepeng.guo@intel.com>
9957             H.J. Lu  <hongjiu.lu@intel.com>
9958
9959         * dwarf2out.c (dw_fde_struct): Add stack_realignment, drap_reg,
9960         vdrap_reg, stack_realign and drap_reg_saved.
9961         (add_cfi): Don't allow redefining CFA when DRAP is used.
9962         (reg_save): Handle stack alignment.
9963         (dwarf2out_frame_debug_expr): Add rules 16-20 to handle stack
9964         alignment.  Don't generate DWARF information for (set fp sp)
9965         when DRAP is used.
9966         (dwarf2out_begin_prologue): Initialize drap_reg and vdrap_reg
9967         to INVALID_REGNUM.
9968         (int_loc_descriptor): Move prototype forward.  Also define if
9969         DWARF2_UNWIND_INFO is true.
9970         (output_cfa_loc): Handle DW_CFA_expression.
9971         (build_cfa_aligned_loc): New.
9972         (based_loc_descr): Update assert for stack realign.  For local
9973         variables, use sp+offset when stack is aligned without drap and
9974         fp+offset when stack is aligned with drap.  For arguments, use
9975         cfa+offset when drap is used to align stack.
9976
9977 2008-07-30  Joey Ye  <joey.ye@intel.com>
9978             H.J. Lu  <hongjiu.lu@intel.com>
9979
9980         * config/i386/i386.c (ix86_force_align_arg_pointer_string):
9981         Break long line.
9982         (ix86_gen_andsp): New.
9983         (ix86_user_incoming_stack_boundary): Likewise.
9984         (ix86_default_incoming_stack_boundary): Likewise.
9985         (ix86_incoming_stack_boundary): Likewise.
9986         (ix86_can_eliminate): Likewise.
9987         (find_drap_reg): Likewise.
9988         (ix86_update_stack_boundary): Likewise.
9989         (ix86_get_drap_rtx): Likewise.
9990         (ix86_finalize_stack_realign_flags): Likewise.
9991         (TARGET_UPDATE_STACK_BOUNDARY): Likewise.
9992         (TARGET_GET_DRAP_RTX): Likewise.
9993         (override_options): Overide option value for new options.
9994         (ix86_function_ok_for_sibcall): Remove check for
9995         force_align_arg_pointer.
9996         (ix86_handle_cconv_attribute): Likewise.
9997         (ix86_function_regparm): Likewise.
9998         (setup_incoming_varargs_64): Don't set stack_alignment_needed here.
9999         (ix86_va_start): Replace virtual_incoming_args_rtx with
10000         crtl->args.internal_arg_pointer.
10001         (ix86_select_alt_pic_regnum): Check DRAP register.
10002         (ix86_save_reg): Replace force_align_arg_pointer with drap_reg.
10003         (ix86_compute_frame_layout): Compute frame layout wrt stack
10004         realignment.
10005         (ix86_internal_arg_pointer): Just return virtual_incoming_args_rtx.
10006         (ix86_expand_prologue): Decide if stack realignment is needed
10007         and generate prologue code accordingly.
10008         (ix86_expand_epilogue): Generate epilogue code wrt stack
10009         realignment is really needed or not.
10010
10011         * config/i386/i386.h (MAIN_STACK_BOUNDARY): New.
10012         (ABI_STACK_BOUNDARY): Likewise.
10013         (PREFERRED_STACK_BOUNDARY_DEFAULT): Likewise.
10014         (STACK_REALIGN_DEFAULT): Likewise.
10015         (INCOMING_STACK_BOUNDARY): Likewise.
10016         (MAX_STACK_ALIGNMENT): Likewise.
10017         (ix86_incoming_stack_boundary): Likewise.
10018         (FORCE_PREFERRED_STACK_BOUNDARY_IN_MAIN): Removed.
10019         (REAL_PIC_OFFSET_TABLE_REGNUM): Updated to use BX_REG.
10020         (CAN_ELIMINATE): Defined with ix86_can_eliminate.
10021         (machine_function): Remove force_align_arg_pointer.
10022
10023         * config/i386/i386.md (BX_REG): New.
10024         (R13_REG): Likewise.
10025
10026         * config/i386/i386.opt (mforce_drap): New.
10027         (mincoming-stack-boundary): Likewise.
10028         (mstackrealign): Add Init(-1).
10029
10030         * config/i386/i386-protos.h (ix86_can_eliminate): New
10031
10032 2008-07-30  H.J. Lu  <hongjiu.lu@intel.com>
10033
10034         * doc/extend.texi: Update force_align_arg_pointer.
10035
10036         * doc/invoke.texi: Document -mincoming-stack-boundary.  Update
10037         -mstackrealign.
10038
10039         * doc/tm.texi (MAX_STACK_ALIGNMENT): Add macro.
10040         (INCOMING_STACK_BOUNDARY): Likewise.
10041         (TARGET_UPDATE_STACK_BOUNDARY): New target hook.
10042         (TARGET_GET_DRAP_RTX): Likewise.
10043
10044 2008-07-30  Andreas Schwab  <schwab@suse.de>
10045
10046         PR rtl-optimization/36929
10047         * dse.c (replace_inc_dec): Use emit_insn_before instead of
10048         add_insn_before and fix argument order.
10049         (replace_inc_dec_mem): Handle NULL rtx.
10050
10051 2008-07-30  Andrew Jenner  <andrew@codesourcery.com>
10052
10053         * config/arm/arm.c (arm_compute_static_chain_stack_bytes): New
10054         function.
10055         (arm_compute_initial_elimination_offset): Use it.
10056         (arm_compute_save_reg_mask): Include static chain save slot when
10057         calculating alignment.
10058         (arm_get_frame_offsets): Ditto.
10059         (thumb1_compute_save_reg_mask): Ensure we have a low register saved
10060         that we can use to decrement the stack when the stack decrement
10061         could be too big for an immediate value in a single insn.
10062         (thumb1_expand_prologue): Avoid using r12 for stack decrement.
10063
10064 2008-07-30  Richard Guenther  <rguenther@suse.de>
10065
10066         PR tree-optimization/36967
10067         * tree-predcom.c (remove_stmt): Use gimple_assign_ssa_name_copy_p.
10068         Release defs of statements we remove.
10069
10070 2008-07-30  Nathan Froyd  <froydnj@codesourcery.com>
10071
10072         * config/arm/arm.c (arm_expand_prologue): Use 0-length rtvec
10073         instead of NULL_RTVEC.
10074
10075 2008-07-30  Nathan Froyd  <froydnj@codesourcery.com>
10076
10077         PR target/35866
10078
10079         * config/rs6000/rs6000.h (SLOW_UNALIGNED_ACCESS): Add clause for
10080         vector modes.
10081
10082 2008-07-30  Rafael Ávila de Espíndola  <espindola@google.com>
10083
10084         * final.c (call_from_call_insn): New.
10085         (final_scan_insn): Call assemble_external on FUNCTION_DECLs.
10086
10087 2008-07-30  Paolo Bonzini  <bonzini@gnu.org>
10088
10089         * configure.ac: Substitute ADA_CFLAGS.
10090         * configure: Regenerate.
10091         * config.host: Remove mention of pa/x-ada and pa/x-ada-hpux10 files.
10092         * Makefile.in: Remove mention of X_* variables.
10093         * config/pa/x-ada-hpux10: Remove.
10094         * config/pa/x-ada: Remove.
10095
10096         * doc/fragments.texi: Update.
10097
10098 2008-07-30  Olivier Hainque  <hainque@adacore.com>
10099
10100         * config/mips/irix-crti.asm: .hide __gcc_init and __gcc_fini.
10101         * config/mips/iris6.h (IRIX_SUBTARGET_LINK_SPEC, irix ld): Hide
10102         __dso_handle explicitly here.
10103
10104 2008-07-30  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
10105
10106         PR 34389
10107         * c-typeck.c (build_binary_op): Encapsulate code into...
10108         * c-common.c (shorten_binary_op): ...this new function.
10109         (conversion_warning): Use the new function. Handle non-negative
10110         constant in bitwise-and.
10111         * c-common.h (shorten_binary_op): Declare.
10112
10113 2008-07-30  Olivier Hainque  <hainque@adacore.com>
10114
10115         * scan.c (make_sstring_space): Add explicit conversions of
10116         allocator's return value.
10117         * fix-header.c (recognized_function): Likewise.
10118
10119 2008-07-30  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
10120
10121         * doc/cpp.texi: Update to GFDL 1.2.
10122         * doc/gcc.texi: Do not list GPL as Invariant Section.
10123         * doc/gccint.texi: Likewise.  Update copyright years.
10124         * doc/install.texi: Update copyright years.
10125
10126 2008-07-30  Alan Modra  <amodra@bigpond.net.au>
10127
10128         PR target/36955
10129         * config/rs6000/rs6000.c (rs6000_legitimize_tls_address): Add
10130         a use of pic_offset_table_rtx for -msecure-plt __tls_get_addr calls.
10131
10132 2008-07-29  Jan Hubicka  <jh@suse.cz>
10133
10134         * c-decl.c (merge_decls): Do not handle DECL_INLINE.
10135         (grokdeclarator): Likewise.
10136         * langhooks.c (lhd_warn_unused_global_decl): Use
10137         DECL_DECLARED_INLINE_P.
10138         * print-tree.c (print_node): Remove DECL_INLINE check.
10139
10140 2008-07-29  Richard Guenther  <rguenther@suse.de>
10141
10142         PR tree-optimization/36945
10143         * tree-ssa-sccvn.h (copy_reference_ops_from_ref): Declare.
10144         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Export.
10145         Record invariant addresses un-decomposed.
10146         (copy_reference_ops_from_call): Record reference call
10147         arguments properly.  Simplify.
10148         * tree-ssa-pre.c (create_component_ref_by_pieces_1): New
10149         helper split out from ...
10150         (create_component_ref_by_pieces): ... here.  Simplify.
10151         Prepare for recursive invocation for call arguments.
10152         (create_expression_by_pieces): Adjust call to
10153         create_component_ref_by_pieces.
10154         (compute_avail): Process operand 2 of reference ops.
10155
10156 2008-07-29  Richard Guenther  <rguenther@suse.de>
10157
10158         * gimplify.c (gimplify_expr): Clear TREE_SIDE_EFFECTS for OBJ_TYPE_REF.
10159
10160 2008-07-29  Jakub Jelinek  <jakub@redhat.com>
10161
10162         * c-format.c (check_format_types): Revert unwanted checkin.
10163
10164 2008-07-29  Jan Hubicka  <jh@suse.cz>
10165
10166         * flags.h (flag_really_no_inline): Remove.
10167         * cgraph.c (cgraph_function_possibly_inlined_p): Simplify.
10168         * toplev.c (flag_really_no_inline): Remove.
10169         * c-cppbuiltin.c (c_cpp_builtins): Use flag_no_inline.
10170         * ipa-inline.c (cgraph_decide_inlining): Do not check flag_no_inline.
10171         (cgraph_decide_inlining_incrementally): Likewise.
10172         (compute_inline_parameters): Likewise.
10173         * opts.c (decode_options): Simplify.
10174         * c-opts.c (c_common_post_options): Do not set flag_no_inline.
10175         * common.opt (finline): Initialize to 1.
10176         * tree-inline.c (inlinable_function_p): Check flag_no_inline.
10177
10178 2008-07-29  Jan Hubicka  <jh@suse.cz>
10179
10180         * predict.c (always_optimize_for_size_p): New function.
10181         (optimize_bb_for_size_p, optimize_bb_for_speed_p,
10182         optimize_edge_for_size_p, optimize_edge_for_speed_p,
10183         optimize_insn_for_size_p, optimize_insn_for_speed_p): New global
10184         functions.
10185         (rtl_profile_for_bb, rtl_profile_for_edge, rtl_default_profile): New.
10186         * function.c (prepare_function_start): Set default profile.
10187         * function.h (rtl_data): Add maybe_hot_insn_p.
10188         * cfgexpand.c (expand_gimple_basic_block): Set RTL profile.
10189         (construct_exit_block): Likewise.
10190         (tree_expand_cfg): Likewise.
10191         * basic-block.h
10192         (optimize_bb_for_size_p, optimize_bb_for_speed_p,
10193         optimize_edge_for_size_p, optimize_edge_for_speed_p,
10194         optimize_insn_for_size_p, optimize_insn_for_speed_p): Declare.
10195         (rtl_profile_for_bb, rtl_profile_for_edge, default_rtl_profile):
10196         Declare.
10197
10198 2008-07-29  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
10199
10200         PR 34985
10201         * c-decl.c (merge_decls): Merge USED flags.
10202
10203 2008-07-29  Kaz Kojima  <kkojima@gcc.gnu.org>
10204
10205         * config/sh/sh.c (sh_gimplify_va_arg_expr): Unshare the addr,
10206         valist, next_fp, next_fp_tmp, next_fp_limit, next_o, next_o_limit,
10207         next_stack, lab_false and lab_over trees.
10208
10209 2008-07-28  Richard Guenther  <rguenther@suse.de>
10210
10211         PR tree-optimization/36957
10212         * tree-flow.h (tree_ssa_useless_type_conversion): Remove.
10213         (useless_type_conversion_p): Remove.
10214         (types_compatible_p): Remove.
10215         * gimple.h (tree_ssa_useless_type_conversion): Declare.
10216         (useless_type_conversion_p): Declare.
10217         (types_compatible_p): Declare.
10218         (gimple_expr_type): Return the base type only if it is
10219         trivially convertible to the subtype.
10220
10221 2008-07-28  Andreas Tobler  <a.tobler@schweiz.org>
10222
10223         * configure.ac: Use the m4_do macro to concatenate the warnings into
10224         one string in ACX_PROG_CC_WARNING_OPTS,
10225         ACX_PROG_CC_WARNING_ALMOST_PEDANTIC and
10226         ACX_PROG_CC_WARNINGS_ARE_ERRORS.
10227         * configure: Regenerate.
10228
10229 2008-07-28  Richard Guenther  <rguenther@suse.de>
10230
10231         * tree-ssa-pre.c (insert_into_preds_of_block): Remove dead code.
10232         (insert_fake_stores): Remove.
10233         (realify_fake_stores): Likewise.
10234         (execute_pre): Remove dead code.
10235         * tree-ssa-structalias.c (get_constraint_for_1): Remove tcc_unary case.
10236         (find_func_aliases): Deal with it here instead.
10237         Re-enable gcc_unreachable call.
10238
10239 2008-07-28  Richard Guenther  <rguenther@suse.de>
10240
10241         Merge from gimple-tuples-branch.
10242
10243         * ChangeLog.tuples: ChangeLog from gimple-tuples-branch.
10244         * gimple.def: New file.
10245         * gsstruct.def: Likewise.
10246         * gimple-iterator.c: Likewise.
10247         * gimple-pretty-print.c: Likewise.
10248         * tree-gimple.c: Removed.  Merged into ...
10249         * gimple.c: ... here.  New file.
10250         * tree-gimple.h: Removed.  Merged into ...
10251         * gimple.h: ... here.  New file.
10252
10253         * Makefile.in: Add dependencies on GIMPLE_H and tree-iterator.h.
10254         * configure.ac: Added support for ENABLE_GIMPLE_CHECKING and the
10255         --enable-checking=gimple flag.
10256         * config.in: Likewise.
10257         * configure: Regenerated.
10258
10259         * tree-ssa-operands.h: Tuplified.
10260         * tree-vrp.c: Likewise.
10261         * tree-loop-linear.c: Likewise.
10262         * tree-into-ssa.c: Likewise.
10263         * tree-ssa-loop-im.c: Likewise.
10264         * tree-dump.c: Likewise.
10265         * tree-complex.c: Likewise.
10266         * cgraphbuild.c: Likewise.
10267         * tree-ssa-threadupdate.c: Likewise.
10268         * tree-ssa-loop-niter.c: Likewise.
10269         * tree-pretty-print.c: Likewise.
10270         * tracer.c: Likewise.
10271         * gengtype.c: Likewise.
10272         * tree-loop-distribution.c: Likewise.
10273         * tree-ssa-loop-unswitch.c: Likewise.
10274         * cgraph.c: Likewise.
10275         * cgraph.h: Likewise.
10276         * tree-ssa-loop-manip.c: Likewise.
10277         * value-prof.c: Likewise.
10278         * tree-ssa-loop-ch.c: Likewise.
10279         * tree-tailcall.c: Likewise.
10280         * value-prof.h: Likewise.
10281         * tree.c: Likewise.
10282         * tree.h: Likewise.
10283         * tree-pass.h: Likewise.
10284         * ipa-cp.c: Likewise.
10285         * tree-scalar-evolution.c: Likewise.
10286         * tree-scalar-evolution.h: Likewise.
10287         * target.h: Likewise.
10288         * lambda-mat.c: Likewise.
10289         * tree-phinodes.c: Likewise.
10290         * diagnostic.h: Likewise.
10291         * builtins.c: Likewise.
10292         * tree-ssa-alias-warnings.c: Likewise.
10293         * cfghooks.c: Likewise.
10294         * fold-const.c: Likewise.
10295         * cfghooks.h: Likewise.
10296         * omp-low.c: Likewise.
10297         * tree-ssa-dse.c: Likewise.
10298         * ipa-reference.c: Likewise.
10299         * tree-ssa-uncprop.c: Likewise.
10300         * toplev.c: Likewise.
10301         * tree-gimple.c: Likewise.
10302         * tree-gimple.h: Likewise.
10303         * tree-chrec.c: Likewise.
10304         * tree-chrec.h: Likewise.
10305         * tree-ssa-sccvn.c: Likewise.
10306         * tree-ssa-sccvn.h: Likewise.
10307         * cgraphunit.c: Likewise.
10308         * tree-ssa-copyrename.c: Likewise.
10309         * tree-ssa-ccp.c: Likewise.
10310         * tree-ssa-loop-ivopts.c: Likewise.
10311         * tree-nomudflap.c: Likewise.
10312         * tree-call-cdce.c: Likewise.
10313         * ipa-pure-const.c: Likewise.
10314         * c-format.c: Likewise.
10315         * tree-stdarg.c: Likewise.
10316         * tree-ssa-math-opts.c: Likewise.
10317         * tree-ssa-dom.c: Likewise.
10318         * tree-nrv.c: Likewise.
10319         * tree-ssa-propagate.c: Likewise.
10320         * ipa-utils.c: Likewise.
10321         * tree-ssa-propagate.h: Likewise.
10322         * tree-ssa-alias.c: Likewise.
10323         * gimple-low.c: Likewise.
10324         * tree-ssa-sink.c: Likewise.
10325         * ipa-inline.c: Likewise.
10326         * c-semantics.c: Likewise.
10327         * dwarf2out.c: Likewise.
10328         * expr.c: Likewise.
10329         * tree-ssa-loop-ivcanon.c: Likewise.
10330         * predict.c: Likewise.
10331         * tree-ssa-loop.c: Likewise.
10332         * tree-parloops.c: Likewise.
10333         * tree-ssa-address.c: Likewise.
10334         * tree-ssa-ifcombine.c: Likewise.
10335         * matrix-reorg.c: Likewise.
10336         * c-decl.c: Likewise.
10337         * tree-eh.c: Likewise.
10338         * c-pretty-print.c: Likewise.
10339         * lambda-trans.c: Likewise.
10340         * function.c: Likewise.
10341         * langhooks.c: Likewise.
10342         * ebitmap.h: Likewise.
10343         * tree-vectorizer.c: Likewise.
10344         * function.h: Likewise.
10345         * langhooks.h: Likewise.
10346         * tree-vectorizer.h: Likewise.
10347         * ipa-type-escape.c: Likewise.
10348         * ipa-type-escape.h: Likewise.
10349         * domwalk.c: Likewise.
10350         * tree-if-conv.c: Likewise.
10351         * profile.c: Likewise.
10352         * domwalk.h: Likewise.
10353         * tree-data-ref.c: Likewise.
10354         * tree-data-ref.h: Likewise.
10355         * tree-flow-inline.h: Likewise.
10356         * tree-affine.c: Likewise.
10357         * tree-vect-analyze.c: Likewise.
10358         * c-typeck.c: Likewise.
10359         * gimplify.c: Likewise.
10360         * coretypes.h: Likewise.
10361         * tree-ssa-phiopt.c: Likewise.
10362         * calls.c: Likewise.
10363         * tree-ssa-coalesce.c: Likewise.
10364         * tree.def: Likewise.
10365         * tree-dfa.c: Likewise.
10366         * except.c: Likewise.
10367         * except.h: Likewise.
10368         * cfgexpand.c: Likewise.
10369         * tree-cfgcleanup.c: Likewise.
10370         * tree-ssa-pre.c: Likewise.
10371         * tree-ssa-live.c: Likewise.
10372         * tree-sra.c: Likewise.
10373         * tree-ssa-live.h: Likewise.
10374         * tree-predcom.c: Likewise.
10375         * lambda.h: Likewise.
10376         * tree-mudflap.c: Likewise.
10377         * ipa-prop.c: Likewise.
10378         * print-tree.c: Likewise.
10379         * tree-ssa-copy.c: Likewise.
10380         * ipa-prop.h: Likewise.
10381         * tree-ssa-forwprop.c: Likewise.
10382         * ggc-page.c: Likewise.
10383         * c-omp.c: Likewise.
10384         * tree-ssa-dce.c: Likewise.
10385         * tree-vect-patterns.c: Likewise.
10386         * tree-ssa-ter.c: Likewise.
10387         * tree-nested.c: Likewise.
10388         * tree-ssa.c: Likewise.
10389         * lambda-code.c: Likewise.
10390         * tree-ssa-loop-prefetch.c: Likewise.
10391         * tree-inline.c: Likewise.
10392         * tree-inline.h: Likewise.
10393         * tree-iterator.c: Likewise.
10394         * tree-optimize.c: Likewise.
10395         * tree-ssa-phiprop.c: Likewise.
10396         * tree-vect-transform.c: Likewise.
10397         * tree-object-size.c: Likewise.
10398         * tree-outof-ssa.c: Likewise.
10399         * cfgloop.c: Likewise.
10400         * system.h: Likewise.
10401         * tree-profile.c: Likewise.
10402         * cfgloop.h: Likewise.
10403         * c-gimplify.c: Likewise.
10404         * c-common.c: Likewise.
10405         * tree-vect-generic.c: Likewise.
10406         * tree-flow.h: Likewise.
10407         * c-common.h: Likewise.
10408         * basic-block.h: Likewise.
10409         * tree-ssa-structalias.c: Likewise.
10410         * tree-switch-conversion.c: Likewise.
10411         * tree-ssa-structalias.h: Likewise.
10412         * tree-cfg.c: Likewise.
10413         * passes.c: Likewise.
10414         * ipa-struct-reorg.c: Likewise.
10415         * ipa-struct-reorg.h: Likewise.
10416         * tree-ssa-reassoc.c: Likewise.
10417         * cfgrtl.c: Likewise.
10418         * varpool.c: Likewise.
10419         * stmt.c: Likewise.
10420         * tree-ssanames.c: Likewise.
10421         * tree-ssa-threadedge.c: Likewise.
10422         * langhooks-def.h: Likewise.
10423         * tree-ssa-operands.c: Likewise.
10424         * config/alpha/alpha.c: Likewise.
10425         * config/frv/frv.c: Likewise.
10426         * config/s390/s390.c: Likewise.
10427         * config/m32c/m32c.c: Likewise.
10428         * config/m32c/m32c-protos.h: Likewise.
10429         * config/spu/spu.c: Likewise.
10430         * config/sparc/sparc.c: Likewise.
10431         * config/i386/i386.c: Likewise.
10432         * config/sh/sh.c: Likewise.
10433         * config/xtensa/xtensa.c: Likewise.
10434         * config/stormy16/stormy16.c: Likewise.
10435         * config/ia64/ia64.c: Likewise.
10436         * config/rs6000/rs6000.c: Likewise.
10437         * config/pa/pa.c: Likewise.
10438         * config/mips/mips.c: Likewise.
10439
10440 2008-07-28  Simon Baldwin  <simonb@google.com>
10441
10442         * c-pragma.c (handle_pragma_message): New function.
10443         (init_pragma): Register handle_pragma_message.
10444         * doc/extend.texi (Diagnostic Pragmas): Added #pragma message
10445         documentation.
10446
10447 2008-07-27  Victor Kaplansky  <victork@il.ibm.com>
10448
10449         PR tree-optimization/35252
10450         * tree-vect-analyze.c (vect_build_slp_tree): Make IMAGPART_EXPR and
10451         REALPART_EXPR to be considered as same load operation.
10452
10453 2008-07-27  Eric Botcazou  <ebotcazou@adacore.com>
10454
10455         PR tree-optimization/36830
10456         * tree-ssa-sccvn.c (vn_reference_op_compute_hash): Hash operand #2.
10457         (expressions_equal_p): Return false if only one operand is null.
10458
10459 2008-07-26  Gerald Pfeifer  <gerald@pfeifer.com>
10460
10461         * doc/install.texi (powerpc-*-netbsd*): Remove redundant texinfo
10462         version requirements.
10463
10464 2008-07-26  Olivier Hainque  <hainque@adacore.com>
10465
10466         * collect2.c (symkind): New enum.  Symbol kinds we care about.
10467         (is_ctor_dtor): Return symkind instead of int.  Adjust prototype,
10468         code and head comment accordingly.
10469         (scan_prog_file): Use symkind names instead of bare integers.
10470
10471 2008-07-25  Jan Hubicka  <jh@suse.cz>
10472
10473         * cgraph.c (cgraph_function_possibly_inlined_p): Do not rely on
10474         DECL_INLINE.
10475         * cgraphunit.c (record_cdtor_fn): Do not initialize DECL_INLINE
10476         (cgraph_preserve_function_body_p): Do not rely on DECL_INLINE.
10477         * dojump.c (clear_pending_stack_adjust): Likewise.
10478         * print-tree.c (print_node): Ignore DECL_INLINE.
10479         * tree-inline.c (inlinable_function_p): Likewise.
10480
10481 2008-07-25  Michael Meissner  <gnu@the-meissners.org>
10482
10483         * doc/extend.texi (hot attribute): Document that the hot attribute
10484         turns on -O3 for some ports.
10485         (cold attribute): Document that the cold attribute turns on -Os
10486         for some ports
10487
10488         * doc/tm.texi (OPTIMIZATION_OPTIONS): Update documentation to
10489         reflect function specific option support.
10490
10491         * target.h (struct target_option_hooks): Add fields to say whether
10492         the cold attribute implies -Os and the hot attribute implies -O3.
10493
10494         * target-def.h (TARGET_OPTION_COLD_ATTRIBUTE_SETS_OPTIMIZATION):
10495         By default, do not turn on -Os for cold functions.
10496         (TARGET_OPTION_COLD_ATTRIBUTE_SETS_OPTIMIZATION): By default, do
10497         not turn on -O3 for hot functions.
10498
10499         * c-common.c (handle_hot_attribute): Use target hook to determine
10500         if hot functions should enable -O3.
10501         (handle_cold_attribute): Use target hook to determine if cold
10502         functions should enable -Os.
10503
10504         * config/i386/i386.c (ix86_target_string): Add -m3dnowa support.
10505         (override_options): Move disable scheduling to
10506         optimization_options.
10507         (optimization_options): Disable scheduling here, not
10508         override_options.
10509         (TARGET_OPTION_COLD_ATTRIBUTE_SETS_OPTIMIZATION): Define.
10510         (TARGET_OPTION_HOT_ATTRIBUTE_SETS_OPTIMIZATION): Define.
10511
10512         * config/ia64/ia64.c (ia64_override_options): Move setting
10513         scheduling flags to ia64_optimization_options.
10514         (ia64_optimization_options): Disable scheduling options here, and
10515         not in ia64_override_options.
10516         (TARGET_OPTION_COLD_ATTRIBUTE_SETS_OPTIMIZATION): Define.
10517         (TARGET_OPTION_HOT_ATTRIBUTE_SETS_OPTIMIZATION): Define.
10518
10519 2008-07-25  H.J. Lu  <hongjiu.lu@intel.com>
10520
10521         PR target/36936
10522         * config/i386/i386.c (override_options): Don't clear TARGET_CMOVE.
10523
10524 2008-07-25  Martin Jambor  <mjambor@suse.cz>
10525
10526         PR tree-optimization/36926
10527         * ipa-prop.c (ipa_analyze_call_uses): Call
10528         ipa_is_ssa_with_stmt_def instead of SSA_NAME_IS_DEFAULT_DEF.
10529
10530 2008-07-25  Joseph Myers  <joseph@codesourcery.com>
10531
10532         * config/arm/iwmmxt.md (movv8qi_internal, movv4hi_internal,
10533         movv2si_internal): Add mem = reg alternative.
10534
10535 2008-07-25  Andreas Tobler  <a.tobler@schweiz.org>
10536
10537         PR bootstrap/36918
10538         * config/sparc/sparc.h (DEFAULT_PCC_STRUCT_RETURN): Define
10539         DEFAULT_PCC_STRUCT_RETURN to 127.
10540
10541 2008-07-24  Jan Hubicka  <jh@suse.cz>
10542
10543         * cgraphbuild.c (record_reference): Drop non-unit-at-a-time code.
10544         (build_cgraph_edges): Likewise.
10545         * cgraph.c (cgraph_node): Do not update assembler hash.
10546         (cgraph_remove_node): Drop non-unit-at-a-time code.
10547         * tree-pass.h (pass_O0_always_inline): Remove.
10548         * ipa-reference.c (gate_reference): Remove unit-at-a-time check.
10549         * toplev.c (process_options): Flag unit-at-a-time does not imply
10550         no section anchors.
10551         * cgraphunit.c: Update comments.
10552         (decide_is_function_needed): Drop non-unit-at-a-time mode.
10553         (cgraph_assemble_pending_functions): Remove.
10554         (cgraph_reset_node): Drop non-unit-at-a-time code.
10555         (cgraph_finalize_function): Likewise.
10556         (cgraph_analyze_function): Likewise.
10557         (cgraph_finalize_compilation_unit): Likewise.
10558         (cgraph_expand_function): Likewise.
10559         (cgraph_optimize): Likesise.
10560         (save_inline_function_body): Likewise.
10561         * ipa-pure-const.c (gate_pure_const): Drop flag_unit_at_a_time check.
10562         * tree-ssa-alias.c (maybe_be_aliased): Likewise.
10563         * ipa-inline.c: Update comments.
10564         (enum inlining_mode): remove INLINE_SPEED.
10565         (cgraph_clone_inlined_nodes): Drop unit-at-a-time check.
10566         (cgraph_mark_inline_edge): Likewise.
10567         (try_inline): Likewise.
10568         (cgraph_decide_inlining_incrementally): Likewise.
10569         (cgraph_gate_inlining): Remove.
10570         (cgraph_early_inlining): Remove flag_unit_at_a_time checks.
10571         (cgraph_gate_early_inlining): Likewise.
10572         (gate_inline_passes): Remove.
10573         (pass_inline_parameters, pass_ipa_inline): Remove gates.
10574         (cgraph_gate_O0_always_inline, cgraph_O0_always_inline,
10575         pass_O0_always_inline): Remove.
10576         * c-pch.c (c_pch_matching): Remove -funit-at-a-time.
10577         * dwarf2out.c (reference_to_unused): Remove flag_unit_at_a_time check.
10578         * opts.c (no_unit_at_a_time_default): Remove.
10579         (decode_options): Remove flag_unit_at_a_time reset and warning.
10580         * opts.h (no_unit_at_a_time_default): Remove.
10581         * c-decl.c (diagnose_mismatched_decls): Do not require inline keyword
10582         early in GNU dialect.
10583         (merge_decls): Update comment; drop unit-at-a-time check.
10584         (finish_decl): Likewise.
10585         (grok_declaration): Remove flag_inline_trees code.
10586         (finish_functions): Return on function returning non-void on all
10587         statics.
10588         * ipa-tye-escape.c (gate_type_escape_vars): Remove.
10589         * cfgexpand.c (expand_one_static_var): Remove.
10590         (expand_one_var): Remove expand_one_static_var call.
10591         (expand_used_vars_for_block): Remove flag_unit_a_time check.
10592         * c-opts.c (c_common_post_options): Remove flag_inline_trees code
10593         and flag_unit_at_a-time compatibility checks.
10594         * varasm.c (assemble_alias): Remove flag_unit_at_a_time check.
10595         * tree-inline.c (flag_inline_trees): Remove.
10596         (inlinable_function_p): Don't check it.
10597         (expand_call_inline): Remove non-unit-at-a-time code.
10598         * tree-inline.h (flag_inline_trees): Remove.
10599         * tree-optimize.c (execute_early_local_optimizations): Remove
10600         unit-at-a-time checks.
10601         (tree_rest_of_compilation): Likewise.
10602         * combine.c (setup_incoming_promotions): Likewise.
10603         * tree-profile.c (tree_gen_ic_func_profiler): Likewise.
10604         * tree-ssa-structalias.c (delete_points_to_sets): Likewise.
10605         * passes.c (pass_inline_parameters): Update comments; remove
10606         O0_alwaysinline pass.
10607         (execute_one_ipa_transform_pass): Do not reset in_gimple_form.
10608         (execute_one_pass): Likewise.
10609         * i386.c (ix86_function_regparm): Remove unit-at-a-time check.
10610         (ix86_function_sseregparm): Likewise.
10611         * arm.c (arm_function_in_section_p): Likewise.
10612         * bfin.c (bfin_load_pic_reg, bfin_function_ok_for_sibcall): Likewise.
10613         * varpool.c: Update comments.
10614         (decide_is_variable_needed): Remove unit-at-a-time checks.
10615         (varpool_finalize_decl): Likewise.
10616
10617 2008-07-24  Kaz Kojima  <kkojima@gcc.gnu.org>
10618
10619         * config/sh/sh.h (OPTIMIZATION_OPTIONS): Set flag_omit_frame_pointer
10620         to 2 instead of -1.
10621         (OVERRIDE_OPTIONS): Check if flag_omit_frame_pointer is equal to 2.
10622
10623 2008-07-24  Kai Tietz  <kai.tietz@onevision.com>
10624
10625         * config/i386/i386.c (get_dllimport_decl): Treat user_label_prefix for
10626         imp symbol extension.
10627
10628         2008-07-23  Ian Lance Taylor  <iant@google.com>
10629
10630         * tree-vrp.c (infer_value_range): Ignore asm statements when
10631         looking for memory accesses for -fdelete-null-pointer-checks.
10632
10633 2008-07-24  Ben Elliston  <bje@au.ibm.com>
10634
10635         * config/spu/spu-c.c (__vector_keyword): New variable.
10636         (vector_keyword): Likewise.
10637         (spu_categorize_keyword): New function.
10638         (spu_macro_to_expand): Likewise.
10639         (spu_cpu_cpp_builtins): Enable context-sensitive macros if not
10640         compiling an ISO C dialect.
10641
10642 2008-07-24  Ben Elliston  <bje@au.ibm.com>
10643
10644         * config/rs6000/rs6000-c.c: Move GTY(()) markers to match
10645         conventional usage.
10646
10647 2008-07-23  Aaron W. LaFramboise  <aaronavay62@aaronwl.com>
10648
10649         * configure: Regenerate.
10650         * configure.ac: Require texinfo 4.7.
10651         * doc/install.texi: Document texinfo 4.7 requirement.
10652
10653 2008-07-23  Martin Jambor  <mjambor@suse.cz>
10654
10655         * ipa-cp.c (ipcp_print_edge_profiles): Test for node->analyzed
10656         rather than for DECL_SAVED_TREE.
10657         * ipa-prop.c: Include diagnostic.h.
10658         (ipa_check_stmt_modifications): Check LHS of GIMPLE_MODIFY_EXPRs
10659         thoroughly.
10660         (ipa_detect_param_modifications): Function rewritten from scratch.
10661         (ipa_compute_jump_functions): Changed accesses to modification flags.
10662         (ipa_free_node_params_substructures): Update flags destruction.
10663         (ipa_node_duplication_hook): Update flags duplication.
10664         (ipa_print_all_params_modified): Updated flag access.
10665         * ipa-prop.h (struct ipa_param_flags): New structure.
10666         (struct ipa_node_params): New field modification_analysis_done,
10667         modified_flags changed into param_flags.
10668         (ipa_is_ith_param_modified): Changed to use new flags.
10669         * Makefile.in (ipa-prop.o): Add $(DIAGNOSTIC_H) to dependencies.
10670
10671         * ipa-prop.c (ipa_print_all_jump_functions): Moved here from
10672         ipa-cp.c and split into two functions.
10673         (ipa_print_node_jump_functions): New function.
10674         (compute_scalar_jump_functions): New function.
10675         (type_like_member_ptr_p): New function.
10676         (compute_pass_through_member_ptrs): New function.
10677         (fill_member_ptr_cst_jump_function): New function.
10678         (determine_cst_member_ptr): New function.
10679         (compute_cst_member_ptr_arguments): New function.
10680         (ipa_compute_jump_functions): Complete rewrite.
10681         * ipa-prop.h (enum jump_func_type): Make explicit that we depend
10682         on IPA_UNKNOWN being zero. Added value IPA_CONST_MEMBER_PTR.
10683         (struct ipa_member_ptr_cst): New structure.
10684         (union jump_func_value): New field member_cst.
10685         * ipa-cp.c (ipcp_lat_is_insertable): New function.
10686         (ipcp_lattice_from_jfunc): Produces bottom lattices for unhandled
10687         jump function types.
10688         (ipcp_print_all_lattices): Slight fprintf rearrangement.
10689         (ipcp_print_all_structures): Call ipa_print_all_jump_functions
10690         instead of ipcp_print_all_jump_functions.
10691         (ipcp_insert_stage): Use ipcp_lat_is_insertable, create replace maps
10692         only for replacable scalars.
10693
10694         * doc/invoke.texi (Optimize options): Add description of
10695         -findirect-inlining.
10696         * common.opt (flag_indirect_inlining): New flag.
10697         * opts.c (decode_options): Set flag_indirect_inlining when
10698         optimize >= 3.
10699
10700         * ipa-inline.c: Include ipa-prop.h.
10701         (inline_indirect_intraprocedural_analysis): New function.
10702         (inline_generate_summary): Allocate parameter and argument info
10703         structures, call inline_indirect_intraprocedural_analysis on each
10704         node when doing indirect inlining and deallocate indirect inlining
10705         data structures in the end.
10706         * ipa-prop.c (ipa_create_param_decls_array): Return if already done.
10707         (free_all_ipa_structures_after_iinln): New function.
10708         (free_all_ipa_structures_after_ipa_cp): Checks whether iinln will be
10709         done.
10710         * Makefile.in (ipa-inline.o): Added $(IPA_PROP_H) to dependencies.
10711
10712         * cgraphbuild.c (compute_call_stmt_bb_frequency): New function.
10713         (build_cgraph_edges): Call compute_call_stmt_bb_frequency instead
10714         of computing the frequency separately.
10715         (rebuild_cgraph_edges): Call compute_call_stmt_bb_frequency instead
10716         of computing the frequency separately.
10717         * ipa-cp.c (ipcp_print_all_structures): Replace a call to
10718         ipa_print_all_param_modified with a call to ipa_print_all_param_flags.
10719         * ipa-prop.c (ipa_get_member_ptr_load_param): New function.
10720         (ipa_get_stmt_member_ptr_load_param): New function.
10721         (ipa_is_ssa_with_stmt_def): New function.
10722         (ipa_note_param_call): New function.
10723         (ipa_analyze_call_uses): New function.
10724         (ipa_analyze_stmt_uses): New function.
10725         (ipa_analyze_params_uses): New function.
10726         (ipa_free_node_params_substructures): Also free the param_calls linked
10727         list.
10728         (ipa_node_duplication_hook): Also duplicate the param_calls
10729         linked list.
10730         (ipa_print_node_param_flags): New function.
10731         (ipa_print_all_params_modified): Renamed to ipa_print_all_param_flags.
10732         (ipa_print_all_param_flags): Calls ipa_print_node_param_flags.
10733         * ipa-prop.h (struct ipa_param_flags): New field called.
10734         (struct ipa_param_call_note): New structure.
10735         (struct ipa_node_params): New fields param_calls and
10736         uses_analysis_done.
10737         (ipa_is_ith_param_called): New function.
10738         * ipa-inline.c (inline_indirect_intraprocedural_analysis): Call
10739         ipa_analyze_params_uses and dump parameter flags.
10740
10741         * ipa-inline.c (cgraph_decide_recursive_inlining): Call
10742         ipa_propagate_indirect_call_infos if performing indirect inlining,
10743         pass a new parameter new_edges to it.
10744         (add_new_edges_to_heap): New fucntion.
10745         (cgraph_decide_inlining_of_small_functions): New vector
10746         new_indirect_edges for newly found indirect edges , call
10747         ipa_propagate_indirect_call_infos after inlining.
10748         (cgraph_decide_inlining): Call ipa_propagate_indirect_call_infos after
10749         inlining if performing indirect inlining.  Call
10750         free_all_ipa_structures_after_iinln when doing so too.
10751         (inline_generate_summary): Do not call
10752         free_all_ipa_structures_after_iinln here.
10753         * ipa-prop.c (update_jump_functions_after_inlining): New function.
10754         (print_edge_addition_message): New function.
10755         (update_call_notes_after_inlining): New function.
10756         (propagate_info_to_inlined_callees): New function.
10757         (ipa_propagate_indirect_call_infos): New function.
10758         * ipa-prop.h: Include cgraph.h
10759         (struct ipa_param_call_note): Fields reordered, new field processed.
10760         * cgraph.h (cgraph_edge): Shrink loop_nest field to 31 bits, add a new
10761         flag indirect_call.
10762         * cgraphunit.c (verify_cgraph_node): Allow indirect edges not to have
10763         rediscovered call statements.
10764         * cgraph.c (cgraph_create_edge): Initialize indirect_call to zero.
10765         (dump_cgraph_node): Dump also the indirect_call flag.
10766         (cgraph_clone_edge): Copy also the indirect_call flag.
10767         * tree-inline.c (copy_bb): Do not check for fndecls from call
10768         expressions, check for edge availability when moving clones.
10769         (get_indirect_callee_fndecl): New function.
10770         (expand_call_inline): If callee declaration is not apprent from
10771         the statement, try calling get_indirect_callee_fndecl.  Do not
10772         issue warnings or call sorry when not inlinings an indirect edge.
10773         * Makefile.in (IPA_PROP_H): Added $(CGRAPH_H) to dependencies.
10774
10775         * ipa-prop.c (ipa_print_node_param_flags): Make the dump format a
10776         bit more frandly to matching.
10777         * testsuite/g++.dg/ipa/iinline-1.C: New testcase.
10778         * testsuite/gcc.dg/ipa/iinline-1.c: New testcase.
10779         * testsuite/gcc.dg/ipa/modif-1.c: New testcase.
10780
10781 2008-07-23  Michael Meissner  <gnu@the-meissners.org>
10782
10783         PR 36907
10784         * opth-gen.awk: Suppress function specific features when building
10785         target libraries.
10786         * optc-gen.awk: Ditto.
10787
10788 2008-07-23  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
10789
10790         PR 35058
10791         * diagnostic.c (pedwarn): Add opt parameter.
10792         (pedwarn0): New.
10793         * c-tree.h (pedwarn_init): Add opt parameter.
10794         (pedwarn_c90): Likewise.
10795         (pedwarn_c99): Likewise.
10796         * c-errors.c (pedwarn_c99): Likewise.
10797         (pedwarn_c90): Likewise.
10798         * toplev.h (pedwarn): Update declaration.
10799         (pedwarn0): Declare.
10800         * c-lex.c: All calls to pedwarn changed.
10801         * builtins.c: All calls to pedwarn changed.
10802         * toplev.c: All calls to pedwarn changed.
10803         * c-decl.c: All calls to pedwarn changed.
10804         * c-typeck.c: All calls to pedwarn changed.
10805         * c-common.c: All calls to pedwarn changed.
10806         * c-parser.c: All calls to pedwarn changed.
10807
10808 2008-07-23  Michael Meissner  <gnu@the-meissners.org>
10809             Karthik Kumar  <karthikkumar@gmail.com>
10810
10811         * attribs.c (file scope): Include c-common.h.
10812         (decl_attributes): Add support for #pragma GCC optimize and
10813         #pragma GCC option.
10814
10815         * targhooks.c (default_can_inline_p): New function that is the
10816         default for the TARGET_CAN_INLINE_P target hook.
10817
10818         * targhooks.h (default_can_inline_p): Add declaration.
10819
10820         * tree.c (cl_optimization_node): New static tree for building
10821         OPTIMIZATION_NODE tree.
10822         (cl_target_option_node): New static tree for building
10823         TARGET_OPTION_NODE tree.
10824         (cl_option_hash_table): New hash table for hashing
10825         OPTIMIZATION_NODE and TARGET_OPTION_NODE trees.
10826         (cl_option_hash_hash): New function to provide the hash value for
10827         OPTIMIZATION_NODE and TARGET_OPTION_NODE trees.
10828         (cl_option_hash_eq): New function to provide an equality test for
10829         OPTIMIZATION_NODE and TARGET_OPTION_NODE trees.
10830         (tree_code_size): Add support for OPTIMIZATION_NODE and
10831         TARGET_OPTION_NODE trees.
10832         (tree_code_structure): Add support for OPTIMIZATION_NODE and
10833         TARGET_OPTION_NODE trees.
10834         (build_optimization_node): Build a tree that has all of the
10835         current optimization options.
10836         (build_target_option_node): Build a tree that has the target
10837         options that might be changed on a per function basis.
10838
10839         * tree.h (file scope): Include options.h.
10840         (DECL_FUNCTION_SPECIFIC_TARGET): New accessor macro.
10841         (DECL_FUNCTION_SPECIFIC_OPTIMIZATION): Ditto.
10842         (TREE_OPTIMIZATION): Ditto.
10843         (TREE_TARGET_SPECIFIC): Ditto.
10844         (struct tree_function_decl): Add fields for remembering the
10845         current optimization options and target specific options.
10846         (struct tree_optimization_option): New tree variant that remembers
10847         the optimization options.
10848         (struct tree_target_option): New tree variant that remembers the
10849         target specific flags that might change for compiling a particular
10850         function.
10851         (union tree_node): Include tree_optimization_option and
10852         tree_target_option fields.
10853         (enum tree_index): Add TI_OPTIMIZATION_DEFAULT,
10854         TI_OPTIMIZATION_CURRENT, TI_OPTIMIZATION_COLD,
10855         TI_OPTIMIZATION_HOT, TI_TARGET_OPTION_DEFAULT,
10856         TI_TARGET_OPTION_CURRENT, TI_CURRENT_OPTION_PRAGMA,
10857         TI_CURRENT_OPTIMIZE_PRAGMA entries for saving function specific
10858         optimization and target options.
10859         (optimization_default_node): New macro to refer to global_trees
10860         field.
10861         (optimization_current_node): Ditto.
10862         (optimization_cold_node): Ditto.
10863         (optimization_hot_node): Ditto.
10864         (target_option_default_node): Ditto.
10865         (target_option_current_node): Ditto.
10866         (current_option_pragma): Ditto.
10867         (current_optimize_pragma): Ditto.
10868
10869         * target.h (struct gcc_target): Add valid_option_attribute_p,
10870         target_option_save, target_option_restore, target_option_print,
10871         target_option_pragma_parse, and can_inline_p hooks.
10872
10873         * toplev.h (parse_optimize_options): Add declaration.
10874         (fast_math_flags_struct_set_p): Ditto.
10875
10876         * c-cppbuiltin.c (c_cpp_builtins_optimize_pragma): New function to
10877         adjust the current __OPTIMIZE__, etc. macros when #pragma GCC
10878         optimize is used.
10879
10880         * ipa-inline.c (cgraph_decide_inlining_of_small_function): Call
10881         tree_can_inline_p hook to see if one function can inline another.
10882         (cgraph_decide_inlining): Ditto.
10883         (cgraph_decide_inlining_incrementally): Ditto.
10884
10885         * opts.c (decode_options): Add support for running multiple times
10886         to allow functions with different target or optimization options
10887         than was specified on the command line.
10888         (fast_math_flags_struct_set_p): New function that is similar to
10889         fast_math_flags_set_p, except it uses the values in the
10890         cl_optimization structure instead of global variables.
10891
10892         * optc-gen.awk: Add support for TargetSave to allow a back end to
10893         declare new fields that need to be saved when using function
10894         specific options.  Include flags.h and target.h in the options.c
10895         source.  Add support for Save to indicate which options can be set
10896         for individual functions.  Generate cl_optimize_save,
10897         cl_optimize_restore, cl_optimize_print, cl_target_option_save,
10898         cl_target_option_restore, cl_target_option_print functions to
10899         allow functions to use different optimization or target options.
10900
10901         * opt-functions.awk (var_type_struct): Return the type used for
10902         storing the field in a structure.
10903
10904         * opth-gen.awk: Add support for TargetSave to allow a back end to
10905         declare new fields that need to be saved when using function
10906         specific options.  Add support for Save to indicate which options
10907         can be set for individual functions.  Only generate one extern for
10908         Mask fields.  Generate cl_optimization and cl_target_option
10909         structures to remember optimization and target options.
10910
10911         * treestruct.def (TS_OPTIMIZATION): Add support for garbage
10912         collecting new tree nodes.
10913         (TS_TARGET_OPTION): Ditto.
10914
10915         * c-decl.c (merge_decls): Merge function specific target and
10916         optimization options.
10917
10918         * function.c (invoke_set_current_function_hook): If the function
10919         uses different optimization options, change the global variables
10920         to reflect this.
10921
10922         * coretypes.h (struct cl_optimization): Add forward reference.
10923         (struct cl_target_option): Ditto.
10924
10925         * c-pragma.c (option_stack): New static vector to remember the
10926         current #pragma GCC option stack.
10927         (handle_pragma_option): New function to support #pragma GCC option
10928         to change target options.
10929         (optimize_stack): New static vector to remember the current
10930         #pragma GCC optimize stack.
10931         (handle_pragma_optimize): New function to support #pragma GCC
10932         optimize to change optimization options.
10933         (init_pragma): Add support for #pragma GCC optimize and #pragma
10934         GCC option.
10935
10936         * tree.def (OPTIMIZATION_NODE): New tree code for remembering
10937         optimization options.
10938         (TARGET_OPTION_NODE): New tree code for remembering certain target
10939         options.
10940
10941         * print-tree.c (print_node): Add support for OPTIMIZATION_NODE and
10942         TARGET_OPTION_NODE trees.
10943
10944         * common.opt (-O): Add Optimization flag.
10945         (-Os): Ditto.
10946         (-fmath-errno): Ditto.
10947         (-falign-functions): Add UInteger flag to make sure flag gets full
10948         int in cl_optimization structure.
10949         (-falign-jumps): Ditto.
10950         (-falign-labels): Ditto.
10951         (-falign-loops): Ditto.
10952         (-fsched-stalled-insns): Ditto.
10953         (-fsched-stalled-insns-dep): Ditto.
10954
10955         * target-def.h (TARGET_VALID_OPTION_ATTRIBUTE_P): Add default
10956         definition.
10957         (TARGET_OPTION_SAVE): Ditto.
10958         (TARGET_OPTION_RESTORE): Ditto.
10959         (TARGET_OPTION_PRINT): Ditto.
10960         (TARGET_OPTION_PRAGMA_PARSE): Ditto.
10961         (TARGET_CAN_INLINE_P): Ditto.
10962         (TARGET_INITIALIZER): Add new hooks.
10963
10964         * tree-inline.c (tree_can_inline_p): New function to determine
10965         whether one function can inline another.  Check if the functions
10966         use compatible optimization options, and also call the backend
10967         can_inline_p hook.
10968
10969         * tree-inline.h (tree_can_inline_p): Add declaration.
10970
10971         * c-common.c (c_common_attribute): Add support for option and
10972         optimize attributes.
10973         (handle_option_attribute): Add support for the option attribute to
10974         allow the user to specify different target options for compiling a
10975         specific function.
10976         (handle_optimize_attribute): Add support for the optimize
10977         attribute to allow the user to specify different optimization
10978         options for compiling a specific function.
10979         (handle_hot_attribute): Turn on -O3 optimization for this one
10980         function if it isn't the default optimization level.
10981         (handle_cold_attribute): Turn on -Os optimization for this one
10982         function if it insn't the default optimization.
10983         (const_char_p): New const char * typedef.
10984         (optimize_args): New static vector to remember the optimization
10985         arguments.
10986         (parse_optimize_options): New function to set up the optimization
10987         arguments from either the optimize attribute or #pragma GCC optimize.
10988
10989         * c-common.h (c_cpp_builtins_optimize_pragma): Add declaration.
10990         (builtin_define_std): Ditto.
10991
10992         * config.gcc (i[3467]86-*-*): Add i386-c.o to C/C++ languages.
10993         Add t-i386 Makefile fragment to add i386-c.o and i386.o dependencies.
10994         (x86_64-*-*): Ditto.
10995
10996         * Makefile.in (TREE_H): Add options.h.
10997         (options.o): Add $(TARGET_H) $(FLAGS_H) dependencies.
10998
10999         * doc/extend.texi (option attribute): Document new attribute.
11000         (optimize attribute): Ditto.
11001         (hot attribute): Document hot attribute sets -O3.
11002         (cold attribute): Document cold attribute sets -Os.
11003         (#pragma GCC option): Document new pragma.
11004         (#pragma GCC optimize): Ditto.
11005
11006         * doc/options.texi (TargetSave): Document TargetSave syntax.
11007         (UInteger): Document UInteger must be used for certain flags.
11008         (Save): Document Save option to create target specific options
11009         that can be saved/restored on a function specific context.
11010
11011         * doc/c-tree.texi (DECL_FUNCTION_SPECIFIC_TARGET): Document new macro.
11012         (DECL_FUNCTION_SPECIFIC_OPTIMIZATION): Ditto.
11013
11014         * doc/tm.texi (TARGET_VALID_OPTION_ATTRIBUTE_P): Document new hook.
11015         (TARGET_OPTION_SAVE): Ditto.
11016         (TARGET_OPTION_RESTORE): Ditto.
11017         (TARGET_OPTION_PRINT): Ditto.
11018         (TARGET_OPTION_PRAGMA_PARSE): Ditto.
11019         (TARGET_CAN_INLINE_P): Ditto.
11020
11021         * doc/invoke.texi (-mfpmath=sse+387): Document as an alias for
11022         -mfpmath=sse,387.
11023         (-mfpmath=both): Ditto.
11024
11025 2008-07-23  Michael Meissner  <gnu@the-meissners.org>
11026             Karthik Kumar  <karthikkumar@gmail.com>
11027
11028         * config/i386/i386.h (TARGET_ABM): Move switch into ix86_isa_flags.
11029         (TARGET_POPCNT): Ditto.
11030         (TARGET_SAHF): Ditto.
11031         (TARGET_AES): Ditto.
11032         (TARGET_PCLMUL): Ditto.
11033         (TARGET_CMPXCHG16B): Ditto.
11034         (TARGET_RECIP): Move switch into target_flags.
11035         (TARGET_FUSED_MADD): Ditto.
11036         (ix86_arch_features): Make an unsigned char type.
11037         (ix86_tune_features): Ditto.
11038         (OVERRIDE_OPTIONS): Add bool argument to override_options call.
11039         (TARGET_CPU_CPP_BUILTINS): Move into ix86_target_macros.
11040         (REGISTER_TARGET_PRAGMAS): Define, call ix86_register_pragmas.
11041
11042         * config/i386/i386.opt (arch): New TargetSave field to define
11043         fields that need to be saved for function specific option support.
11044         (tune): Ditto.
11045         (fpmath): Ditto.
11046         (branch_cost): Ditto.
11047         (ix86_isa_flags_explicit): Ditto.
11048         (tune_defaulted): Ditto.
11049         (arch_specified): Ditto.
11050         (-m128-long-double): Add Save flag to save option for target
11051         specific option support.
11052         (-m80387): Ditto.
11053         (-maccumulate-outgoing-args): Ditto.
11054         (-malign-double): Ditto.
11055         (-malign-stringops): Ditto.
11056         (-mfancy-math-387): Ditto.
11057         (-mhard-float): Ditto.
11058         (-mieee-fp): Ditto.
11059         (-minline-all-stringops): Ditto.
11060         (-minline-stringops-dynamically): Ditto.
11061         (-mms-bitfields): Ditto.
11062         (-mno-align-stringops): Ditto.
11063         (-mno-fancy-math-387): Ditto.
11064         (-mno-push-args): Ditto.
11065         (-mno-red-zone): Ditto.
11066         (-mpush-args): Ditto.
11067         (-mred-zone): Ditto.
11068         (-mrtd): Ditto.
11069         (-msseregparm): Ditto.
11070         (-mstack-arg-probe): Ditto.
11071         (-m32): Ditto.
11072         (-m64): Ditto.
11073         (-mmmx): Ditto.
11074         (-m3dnow): Ditto.
11075         (-m3dnowa): Ditto.
11076         (-msse): Ditto.
11077         (-msse2): Ditto.
11078         (-msse3): Ditto.
11079         (-msse4.1): Ditto.
11080         (-msse4.2): Ditto.
11081         (-msse4): Ditto.
11082         (-mno-sse4): Ditto.
11083         (-msse4a): Ditto.
11084         (-msse5): Ditto.
11085         (-mrecip): Move flag into target_flags.
11086         (-mcld): Ditto.
11087         (-mno-fused-madd): Ditto.
11088         (-mfused-madd): Ditto.
11089         (-mabm): Move flag into ix86_isa_flags.
11090         (-mcx16): Ditto.
11091         (-mpopcnt): Ditto.
11092         (-msahf): Ditto.
11093         (-maes): Ditto.
11094         (-mpclmul): Ditto.
11095
11096         * config/i386/i386-c.c: New file for #pragma support.
11097         (ix86_target_macros_internal): New function to #define or #undef
11098         target macros based when the user uses the #pragma GCC option to
11099         change target options.
11100         (ix86_pragma_option_parse): New function to add #pragma GCC option
11101         support.
11102         (ix86_target_macros): Move defining the target macros here from
11103         TARGET_CPU_CPP_BUILTINS in i386.h.
11104         (ix86_register_pragmas): Register the #pragma GCC option hook.  If
11105         defined, initialize any subtarget #pragmas.
11106
11107         * config/i386/darwin.h (REGISTER_SUBTARGET_PRAGMAS): Rename from
11108         REGISTER_TARGET_PRAGMAS.
11109
11110         * config/i386/t-i386: New file for x86 dependencies.
11111         (i386.o): Make dependencies mirror the include files used.
11112         (i386-c.o): New file, add dependencies.
11113
11114         * config/i386/i386-protos.h (override_options): Add bool argument.
11115         (ix86_valid_option_attribute_tree): Add declaration.
11116         (ix86_target_macros): Ditto.
11117         (ix86_register_macros): Ditto.
11118
11119         * config/i386/i386.c (ix86_tune_features): Move initialization of
11120         the target masks to initial_ix86_tune_features to allow functions
11121         to have different target options.  Make type unsigned char,
11122         instead of unsigned int.
11123         (initial_ix86_tune_features): New static vector to hold processor
11124         masks for the tune variables.
11125         (ix86_arch_features): Move initialization of the target masks to
11126         initial_ix86_arch_features to allow functions to have different
11127         target options.  Make type unsigned char, instead of unsigned int.
11128         (initial_ix86_arch_features): New static vector to hold processor
11129         masks for the arch variables.
11130         (enum ix86_function_specific_strings): New enum to describe the
11131         string options used for attribute((option(...))).
11132         (ix86_target_string): New function to return a string that
11133         describes the target options.
11134         (ix86_debug_options): New function to print the current options in
11135         the debugger.
11136         (ix86_function_specific_save): New function hook to save the
11137         function specific global variables in the cl_target_option structure.
11138         (ix86_function_specific_restore): New function hook to restore the
11139         function specific variables from the cl_target_option structure to
11140         the global variables.
11141         (ix86_function_specific_print): New function hook to print the
11142         target specific options in the cl_target_option structure.
11143         (ix86_valid_option_attribute_p): New function hook to validate
11144         attribute((option(...))) arguments.
11145         (ix86_valid_option_attribute_tree): New function that is common
11146         code between attribute((option(...))) and #pragma GCC option
11147         support that parses the options and returns a tree holding the options.
11148         (ix86_valid_option_attribute_inner_p): New helper function for
11149         ix86_valid_option_attribute_tree.
11150         (ix86_can_inline_p): New function hook to decide if one function
11151         can inline another on a target specific basis.
11152         (ix86_set_current_function); New function hook to switch target
11153         options if the user used attribute((option(...))) or #pragma GCC
11154         option.
11155         (ix86_tune_defaulted): Move to static file scope from
11156         override_options.
11157         (ix86_arch_specified): Ditto.
11158         (OPTION_MASK_ISA_AES_SET): New macro for moving switches into
11159         ix86_isa_flags.
11160         (OPTION_MASK_ISA_PCLMUL_SET): Ditto.
11161         (OPTION_MASK_ISA_ABM_SET): Ditto.
11162         (OPTION_MASK_ISA_POPCNT_SET): Ditto.
11163         (OPTION_MASK_ISA_CX16_SET): Ditto.
11164         (OPTION_MASK_ISA_SAHF_SET): Ditto.
11165         (OPTION_MASK_ISA_AES_UNSET): Ditto.
11166         (OPTION_MASK_ISA_PCLMUL_UNSET): Ditto.
11167         (OPTION_MASK_ISA_ABM_UNSET): Ditto.
11168         (OPTION_MASK_ISA_POPCNT_UNSET): Ditto.
11169         (OPTION_MASK_ISA_CX16_UNSET): Ditto.
11170         (OPTION_MASK_ISA_SAHF_UNSET): Ditto.
11171         (struct ptt): Move to static file scope from override_options.
11172         (processor_target_table): Ditto.
11173         (cpu_names): Ditto.
11174         (ix86_handle_option): Add support for options that are now isa options.
11175         (override_options): Add support for declaring functions that
11176         support different target options than were specified on the
11177         command line.  Move struct ptt, processor_target_table, cpu_names,
11178         ix86_tune_defaulted, ix86_arch_specified to static file scope.
11179         Add bool argument.  Fix up error messages so the appropriate error
11180         is given for either command line or attribute.
11181         (ix86_previous_fndecl): New static to remember previous function
11182         declaration to see if we need to change target options.
11183         (ix86_builtins_isa): New array to record the ISA of each builtin
11184         function.
11185         (def_builtin): Always create the builtin function, even if the
11186         current ISA doesn't support it.
11187         (ix86_init_mmx_sse_builtins): Remove TARGET_AES and TARGET_PCLMUL
11188         tests for those builtins.
11189         (ix86_init_builtins): Remove TARGET_MMX test for calling
11190         ix86_init_mmx_sse_builtins.
11191         (ix86_expand_builtin): If the current ISA doesn't support a given
11192         builtin, signal an error.
11193         (TARGET_VALID_OPTION_ATTRIBUTE_P): Set target hook.
11194         (TARGET_SET_CURRENT_FUNCTION): Ditto.
11195         (TARGET_OPTION_SAVE): Ditto.
11196         (TARGET_OPTION_RESTORE): Ditto.
11197         (TARGET_OPTION_PRINT): Ditto.
11198         (TARGET_CAN_INLINE_P): Ditto.
11199
11200 2008-07-22  Rafael Ávila de Espíndola  <espindola@google.com>
11201
11202         * c-typeck.c (build_external_ref): Don't call assemble_external.
11203         * final.c (output_operand): Call assemble_external.
11204
11205 2008-07-21  DJ Delorie  <dj@redhat.com>
11206
11207         * config/h8300/h8300.c (h8300_hard_regno_scratch_ok): New.
11208         (TARGET_HARD_REGNO_SCRATCH_OK): Define.
11209
11210 2008-07-21  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
11211
11212         * config/spu/spu.md ("div<mode>3"): Convert into expander, move
11213         original insn and splitter contents into ...
11214         ("*div<mode>3_fast"): ... this new pattern.  Enable only if
11215         flag_unsafe_math_optimizations.  Add dummy scratch register.
11216         ("*div<mode>3_adjusted"): New insn and splitter.  Enable only if
11217         !flag_unsafe_math_optimizations.  Returns number with next
11218         highest magnitude if this is still less or equal to the true
11219         quotient in magnitude.
11220
11221 2008-07-21  Rafael Ávila de Espíndola  <espindola@google.com>
11222
11223         * Makefile.in: Replace toplev.h with TOPLEV_H.
11224         * c-decl.c (merge_decls): Don't set DECL_IN_SYSTEM_HEADER.
11225         * c-lex.c (fe_file_change): Don't set in_system_header.
11226         * c-parser.c (c_token): Remove in_system_header.
11227         (c_lex_one_token): Don't set in_system_header.
11228         (c_parser_set_source_position_from_token): Don't set in_system_header.
11229         * diagnostic.c (diagnostic_report_diagnostic): Use location from
11230         diagnostic_info.
11231         (warning_at): New.
11232         * diagnostic.h (diagnostic_report_warnings_p): Add LOC argument.
11233         * flags.h (in_system_header): Remove.
11234         * function.c (saved_in_system_header): Remove.
11235         (push_cfun): Don't set in_system_header.
11236         (pop_cfun): Don't set in_system_header.
11237         (push_struct_function): Don't set in_system_header.
11238         * input.h (expanded_location): Add sysp.
11239         (in_system_header_at): New.
11240         (in_system_header): New.
11241         * toplev.c (in_system_header): Remove.
11242         * toplev.h: Include input.h
11243         (warning_at): New.
11244         * tree-cfg.c (execute_warn_function_return): Call warning_at.
11245         * tree-ssa.c (warn_uninit): Call warning_at.
11246         (warn_uninitialized_var): Update calls to warn_uninit.
11247         (warn_uninitialized_phi): Update calls to warn_uninit.
11248         * tree.c (make_node_stat): Don't set DECL_IN_SYSTEM_HEADER.
11249         (expand_location): Initialize xloc.sysp.
11250         * tree.h (DECL_IN_SYSTEM_HEADER): Use in_system_header_at.
11251         (tree_decl_with_vis): Remove in_system_header_flag.
11252
11253 2008-07-21  Andreas Krebbel  <krebbel1@de.ibm.com>
11254
11255         PR target/36822
11256         * recog.c (asm_operand_ok): Change the order of the extra
11257         memory constraint checks.
11258
11259 2008-07-20  Andrew Pinski  <andrew_pinski@playstation.sony.com>
11260
11261         PR tree-opt/36879
11262         * tree-switch-conversion.c (build_one_array): Call
11263         varpool_mark_needed_node and varpool_finalize_decl
11264         instead of assemble_variable.
11265
11266 2008-07-19  Jan Hubicka  <jh@suse.cz>
11267
11268         * cgraph.c (cgraph_add_new_function): Do early local passes.
11269         * tree-nrv.c (gate_pass_return_slot): New gate.
11270         (pass_nrv): Add the gate.
11271         * tree-ssa-coalese.c (hash_ssa_name_by_var, eq_ssa_name_by_var): New
11272         functions.
11273         (coalesce_ssa_name): Coalesce SSA names.
11274         * tree-ssa-live.c (remove_unused_locals): Be more conservative when
11275         not optimizing so unused user vars remains visible.
11276         * common.opt (flag_tree_ter): Always enable by default.
11277         * tree-ssa-ter.c: Include flags.h
11278         (is_replaceable_p): Check that locations match; when aliasing
11279         is missing be conservative about loads.
11280         * tree-optimize.c (gate_init_datastructures): Remove.
11281         (pass_init_datastructures): New.
11282         * passes.c: Reorder passes so we always go into SSA.
11283
11284 2008-07-19  Jan Hubicka  <jh@suse.cz>
11285
11286         * doc/extend.texi (flatten attribute): Remove note about
11287         unit-at-a-time.
11288         * doc/invoke.texi (--combine): Likewise.
11289         (-finline-functions-called-once): Update levels when enabled.
11290         (-funit-at-a-time): Document new behaviour.
11291         (-ftoplevel-reorder): Document that it is enabled -O0 and imply
11292         -fno-section-anchors when disabled explicitly.
11293         (inline params): They are not ignored now.
11294         (precompiled headers): Remove unit-at-a-time as being incompatible.
11295         * opts.c (decode_options): Handle unit-at-a-time as alias;
11296         imply -fno-section-anchors when toplevel reorder is disabled
11297         explicitly.
11298         * common.opt (ftoplevel-reorder): Set default value to 2.
11299         (funit-at-a-time): Set default value to 1.
11300         * config/rs6000/rs6000.c (optimization_options): Set section anchors
11301         to 2.
11302
11303 2008-07-19  Jan Hubicka  <jh@suse.cz>
11304
11305         * builtins.c (expand_builtin_int_roundingfn,
11306         expand_builtin_int_roundingfn_2): Do not take subtarget argument;
11307         it is not useful.
11308
11309 2008-07-19  Richard Guenther  <rguenther@suse.de>
11310
11311         PR bootstrap/36864
11312         * tree-ssa-sccvn.h (get_constant_value_id): Declare.
11313         * tree-ssa-sccvn.c (get_constant_value_id): New function.
11314         * tree-ssa-pre.c (get_expr_value_id): For newly created
11315         constant value-ids make sure to add the expression to its
11316         expression-set.
11317
11318 2008-07-19  Jakub Jelinek  <jakub@redhat.com>
11319
11320         PR middle-end/36877
11321         * omp-low.c (expand_omp_atomic_fetch_op): Make sure the
11322         return value of the builtin is ignored.
11323
11324 2008-07-19  Olivier Hainque  <hainque@adacore.com>
11325
11326         * doc/tm.texi (MALLOC_ABI_ALIGNMENT): New macro. Alignment, in
11327         bits, a C conformant malloc implementation has to provide.
11328         * defaults.h (MALLOC_ABI_ALIGNMENT): Default to BITS_PER_WORD.
11329
11330 2008-07-19  Joseph Myers  <joseph@codesourcery.com>
11331
11332         PR target/36780
11333         PR target/36827
11334         * reload.c (find_reloads_subreg_address): Only reload address if
11335         reloaded == 0, not for reloaded != 1.
11336
11337         Revert:
11338         2008-07-16  Joseph Myers  <joseph@codesourcery.com>
11339         * config/m32c/m32c.c (BIG_FB_ADJ): Move definition earlier.
11340         (m32c_legitimate_address_p): Handle "++rii" addresses created by
11341         m32c_legitimize_reload_address.
11342
11343         2008-07-15  Kaz Kojima  <kkojima@gcc.gnu.org>
11344         * config/sh/sh.h (GO_IF_LEGITIMATE_ADDRESS): Allow
11345         (plus (plus (reg) (const_int)) (const_int)) when reload_in_progress.
11346
11347 2008-07-19  Olivier Hainque  <hainque@adacore.com>
11348
11349         * dwarf2out.c (add_subscript_info): New explicit COLLAPSE_P
11350         argument, saying whether nested array are to be collapsed
11351         into a single array type DIE with multiple subscripts.
11352         (gen_array_type_die): Factorize comments about the MIPS_DEBUG_INFO
11353         issues, centralize the nested array types collapsing control and
11354         disable the transformation for Ada.
11355
11356 2008-07-18  Uros Bizjak  <ubizjak@gmail.com>
11357
11358         PR target/36786
11359         * config/i386/i386.md (x86_64_shift_adj_1): Rename from
11360         x86_64_shift_adj.
11361         (x86_64_shift_adj_2): New expander.
11362         (x86_64_shift_adj_3): Ditto.
11363         * config/i386/i386.c (ix86_split_ashr): Use gen_x86_64_shift_adj_3
11364         to split TImode operands.
11365         (ix86_split_ashl): Use gen_x86_64_shift_adj_2 to split TImode operands.
11366         (ix86_split_lshr): Ditto.
11367
11368 2008-07-18  Kris Van Hees  <kris.van.hees@oracle.com>
11369
11370         * c-common.c (c_stddef_cpp_builtins): Define __CHAR16_TYPE__
11371         and __CHAR32_TYPE__.
11372         * c-typeck.c (digest_init): Support char16_t and char32_t.
11373         (set_nonincremental_init_from_string): Idem.
11374
11375 2008-07-18  H.J. Lu  <hongjiu.lu@intel.com>
11376
11377         PR middle-end/36859
11378         * builtins.c (std_gimplify_va_arg_expr): Limit alignment to
11379         PREFERRED_STACK_BOUNDARY.
11380         * config/i386/i386.c (ix86_gimplify_va_arg): Likewise.
11381
11382 2008-07-18  H.J. Lu  <hongjiu.lu@intel.com>
11383
11384         PR middle-end/36858
11385         * function.c (locate_and_pad_parm): Cap boundary earlier.
11386
11387 2008-07-17  Julian Brown  <julian@codesourcery.com>
11388
11389         * config/arm/arm.c (arm_cxx_determine_class_data_visibility): Make
11390         no-op for targets which don't use DLLs.
11391
11392 2008-07-17  Martin Jambor  <mjambor@suse.cz>
11393
11394         * ipa-cp.c (ipcp_print_all_lattices): New variable info, check
11395         that nodes are relevant by examining the node->analyzed flag.
11396         (ipcp_init_stage): Check which nodes are relevant, assert that the
11397         relevant ones are also required.
11398         (ipcp_propagate_stage): Check on the side arrays are properly
11399         allocated.
11400         (ipcp_print_all_jump_functions): Make sure not to touch any node
11401         that is not analyzed or an edge that does not have a corresponding
11402         entry in the on-the-side vectors.
11403         (ipcp_function_scale_print): Likewise.
11404         (ipcp_update_callgraph): Check that the node is relevant.
11405         (ipcp_insert_stage): Check that the node is relevant.  Check there is
11406         an info for every node and edge.
11407         * ipa-prop.c (ipa_init_func_list): Check the nodes are relevant.
11408         (ipa_print_all_tree_maps): Likewise and a new variable info.
11409         (ipa_print_all_params_modified): Likewise.
11410         * ipa-prop.h (ipa_edge_args_info_available_for_edge_p): New function.
11411
11412 2008-07-17  Roman Zippel <zippel@linux-m68k.org>
11413
11414         PR target/25343
11415         * config/host-linux.c (TRY_EMPTY_VM_SPACE): Define for __mc68000__.
11416
11417 2008-07-17  Paolo Bonzini  <bonzini@gnu.org>
11418
11419         PR rtl-optimization/36753
11420         * fwprop.c (use_killed_between): Don't shortcut
11421         single-definition global registers.
11422
11423 2008-07-16  Jan Hubicka  <jh@suse.cz>
11424
11425         * cgraph.h (varpool_empty_needed_queue): Declare.
11426         * cgraphunit.c (output_in_order): Mark all variables as needed;
11427         empty the queue.
11428         * varpool.c (varpool_assemble_node): Update debug queue.
11429         (varpool_assemble_pending_decls): Don't do it here.
11430         (varpool_empty_needed_queue):  New function.
11431
11432 2008-07-16  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
11433
11434         * recog.c (peephole2_optimize): Fix formatting.
11435
11436 2008-07-16  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
11437
11438         * c-pch.c (get_ident): Avoid C++ keywords.
11439         * combine-stack-adj.c (single_set_for_csa): Likewise.
11440         * final.c (asm_insn_count, final_scan_insn, alter_subreg,
11441         output_asm_insn): Likewise.
11442         * reload.c (push_secondary_reload, find_reusable_reload,
11443         push_reload, combine_reloads, find_reloads,
11444         debug_reload_to_stream): Likewise.
11445         * reload.h (struct reload): Likewise.
11446         * reload1.c (reload_reg_class_lower, find_reg, find_reload_regs,
11447         allocate_reload_reg, choose_reload_regs, emit_input_reload_insns,
11448         emit_output_reload_insns): Likewise.
11449         * targhooks.c (default_secondary_reload): Likewise.
11450         * varasm.c (section_entry_eq, object_block_entry_eq): Likewise.
11451
11452 2008-07-16  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
11453
11454         * recog.c (validate_change_1, validate_change,
11455         validate_unshare_change, validate_replace_rtx_1, struct
11456         funny_match, constrain_operands, peephole2_optimize): Avoid C++
11457         keywords.
11458         * reload.c (push_secondary_reload, secondary_reload_class,
11459         scratch_reload_class, find_valid_class, find_reusable_reload,
11460         push_reload, find_dummy_reload, find_reloads_address_1,
11461         find_reloads_address_part, find_equiv_reg): Likewise.
11462         * reload1.c (spill_failure, eliminate_regs_1, allocate_reload_reg,
11463         choose_reload_regs): Likewise.
11464         * rtlanal.c (replace_rtx, nonzero_bits1, num_sign_bit_copies1):
11465         Likewise.
11466         * rtlhooks.c (gen_lowpart_if_possible): Likewise.
11467         * sched-ebb.c (add_deps_for_risky_insns): Likewise.
11468         * sched-rgn.c (concat_INSN_LIST): Likewise.
11469         * stor-layout.c (mode_for_size, mode_for_size_tree,
11470         smallest_mode_for_size): Likewise.
11471
11472 2008-07-16  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
11473
11474         * cfg.c (dump_reg_info): Avoid C++ keywords.
11475         * dwarf2asm.c (dw2_force_const_mem,
11476         dw2_asm_output_encoded_addr_rtx): Likewise.
11477         * except.c (gen_eh_region, add_action_record, output_ttype): Likewise.
11478         * expmed.c (expand_shift): Likewise.
11479         * global.c (find_reg): Likewise.
11480         * graph.c (draw_edge): Likewise.
11481         * local-alloc.c (reg_meets_class_p, find_free_reg): Likewise.
11482         * optabs.c (expand_binop, expand_twoval_unop, expand_twoval_binop,
11483         widen_clz, widen_bswap, expand_parity, expand_unop,
11484         emit_cmp_and_jump_insn_1): Likewise.
11485         * postreload.c (reload_cse_simplify_operands): Likewise.
11486         * ra.h (add_neighbor): Likewise.
11487         * reg-stack.c (remove_regno_note, change_stack): Likewise.
11488         * regclass.c (memory_move_secondary_cost, dump_regclass, regclass,
11489         record_reg_classes, copy_cost, record_address_regs,
11490         invalid_mode_change_p): Likewise.
11491         * regrename.c (regrename_optimize, scan_rtx_reg,
11492         dump_def_use_chain, find_oldest_value_reg,
11493         replace_oldest_value_reg, copyprop_hardreg_forward_1): Likewise.
11494
11495 2008-07-16  David Edelsohn  <edelsohn@gnu.org>
11496
11497         * config/rs6000/rs6000.c (processor_target_table): Remove duplicate
11498         MASK_POWERPC64 for power4 in previous commit.
11499
11500 2008-07-16  Olivier Hainque  <hainque@adacore.com>
11501
11502         * collect2.c (scan_prog_file, COFF version): Use CONST_CAST
11503         instead of bare conversion to cast const-ness away.
11504
11505 2008-07-16  Anatoly Sokolov  <aesok@post.ru>
11506
11507         * config/xtensa/xtensa.h (FUNCTION_OUTGOING_VALUE,
11508         XTENSA_FUNCTION_VALUE, XTENSA_FUNCTION_VALUE): Remove.
11509         * config/xtensa/xtensa.c (xtensa_function_value): New function.
11510         (TARGET_FUNCTION_VALUE): Define.
11511
11512 2008-07-16  David Edelsohn  <edelsohn@gnu.org>
11513
11514         * config/rs6000/rs6000.c (processor_target_table): Add
11515         MASK_PPC_GPOPT for power4, power5, power5+, power6, and power6x.
11516
11517 2008-07-16  Joseph Myers  <joseph@codesourcery.com>
11518
11519         PR target/36827
11520         * config/m32c/m32c.c (BIG_FB_ADJ): Move definition earlier.
11521         (m32c_legitimate_address_p): Handle "++rii" addresses created by
11522         m32c_legitimize_reload_address.
11523
11524 2007-07-16  Rafael Ávila de Espíndola  <espindola@google.com>
11525
11526         * c-decl.c (merge_decls): Keep DECL_SOURCE_LOCATION and
11527         DECL_IN_SYSTEM_HEADER in sync.
11528
11529 2008-07-15  Daniel Berlin  <dberlin@dberlin.org>
11530
11531         * tree-ssa-sccvn.c (expressions_equal_p): Check type equality.
11532         * tree-ssa-pre.c (pre_expr_eq): Ditto
11533         (get_constant_for_value_id): Take a type as an argument.
11534         (fully_constant_expression): Pass in type.
11535         (find_or_generate_expression): Short circuit constant case.
11536         (create_expression_by_pieces): Remove special casing of
11537         pointer_plus.
11538         (do_regular_insertion): Short circuit constant case.
11539         (do_partial_partial_insertion): Ditto.
11540
11541 2008-07-15  Kaz Kojima  <kkojima@gcc.gnu.org>
11542
11543         PR target/36782
11544         * config/sh/sh.md (symGOT_load): Don't add REG_EQUAL note.
11545
11546 2008-07-15  Bob Wilson  <bob.wilson@acm.org>
11547
11548         * config/xtensa/libgcc-xtensa.ver: New file.
11549         * config/xtensa/t-linux (SHLIB_MAPFILES): Append libgcc-xtensa.ver.
11550
11551 2008-07-15  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
11552
11553         * df-problems.c (df_set_note): Avoid C++ keywords.
11554         * df-scan.c (df_ref_change_reg_with_loc_1): Likewise.
11555         * dse.c (record_store, remove_useless_values): Likewise.
11556         * emit-rtl.c (gen_reg_rtx, update_reg_offset, gen_rtx_REG_offset,
11557         gen_reg_rtx_offset, operand_subword, change_address_1,
11558         change_address, adjust_address_1, offset_address,
11559         widen_memory_access, emit_copy_of_insn_after): Likewise.
11560         * explow.c (round_push, allocate_dynamic_stack_space): Likewise.
11561         * fwprop.c (should_replace_address, propagate_rtx_1,
11562         propagate_rtx, try_fwprop_subst, forward_propagate_and_simplify):
11563         Likewise.
11564         * gcse.c (cprop_jump, find_implicit_sets, bypass_block,
11565         gcse_emit_move_after, update_ld_motion_stores): Likewise.
11566         * lcm.c (compute_insert_delete, pre_edge_lcm,
11567         compute_rev_insert_delete, pre_edge_rev_lcm): Likewise.
11568         * lower-subreg.c (resolve_reg_notes): Likewise.
11569         * mode-switching.c (optimize_mode_switching): Likewise.
11570
11571 2008-07-15  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
11572
11573         * bt-load.c (add_btr_def, migrate_btr_def,
11574         branch_target_load_optimize): Avoid C++ keywords.
11575         * caller-save.c (insert_restore, insert_save, insert_one_insn):
11576         Likewise.
11577         * combine.c (subst, simplify_set, make_extraction,
11578         make_compound_operation, known_cond, simplify_shift_const_1): Likewise.
11579         * cse.c (make_regs_eqv, merge_equiv_classes, validate_canon_reg,
11580         fold_rtx, equiv_constant, cse_insn, cse_process_notes_1): Likewise.
11581
11582 2008-07-15  Richard Guenther  <rguenther@suse.de>
11583
11584         PR middle-end/36369
11585         * c-common.c (strict_aliasing_warning): Do not warn for
11586         TYPE_REF_CAN_ALIAS_ALL pointers.
11587         (c_common_get_alias_set): may_alias types are not special.
11588         * tree.c (build_pointer_type_for_mode): Look up the may_alias
11589         attribute and set can_ref_all accordingly.
11590         (build_reference_type_for_mode): Likewise.
11591         * doc/extend.texi (may_alias): Clarify.
11592
11593 2008-07-15  Kaz Kojima  <kkojima@gcc.gnu.org>
11594
11595         PR target/36780
11596         * config/sh/sh.h (GO_IF_LEGITIMATE_ADDRESS): Allow
11597         (plus (plus (reg) (const_int)) (const_int)) when reload_in_progress.
11598
11599 2008-07-15  Andrew Pinski  <andrew_pinski@playstation.sony.com>
11600
11601         PR target/31568
11602         * config/rs6000/rs6000.c (print_operand <case 'y'>): Don't use
11603         gcc_assert, instead call output_operand_lossage.
11604
11605 2008-07-15  Kai Tietz  <kai.tietz@onevision.com>
11606
11607         * builtins.c (std_canonical_va_list): Treat structure based
11608         va_list types.
11609
11610 2008-07-15  Ben Elliston  <bje@au.ibm.com>
11611
11612         * emit-rtl.c (set_mem_attributes_minus_bitpos): Improve comment.
11613
11614 2007-07-14  Rafael Ávila de Espíndola  <espindola@google.com>
11615
11616         * c-decl.c (diagnose_mismatched_decls): Don't warn if TREE_NO_WARNING
11617         is set.
11618
11619 2008-07-14  Jan Hubicka  <jh@suse.cz>
11620
11621         * i386.md (sse5 cmov pattern): Update call of ix86_sse5_valid_op_p
11622         * sse.md (sse5 patterns): Update call of ix86_sse5_valid_op_p;
11623         fix predicates and constraints.
11624         * i386.c (ix86_sse5_valid_op_p): Add commutative parameter.
11625         * i386-protos.h (ix86_sse5_valid_op_p): Update declaration.
11626
11627 2008-07-14  Doug Kwan  <dougkwan@google.com>
11628
11629         * config.gcc (arm*-*-eabi*): Include arm/eabi.h and use
11630         additional option file arm/eabi.opt.
11631         * config/arm/eabi.h (File): New configuration file for EABI targets.
11632         * config/arm/elf.h (SUBTARGET_EXTRA_SPECS): Add
11633         SUBSUBTARGET_EXTRA_SPECS.
11634         (SUBSUBTARGET_EXTRA_SPECS): Provide empty default.
11635         * config/arm/unknown-elf.h (UNKNOWN_ELF_STARTFILE_SPEC): Renamed
11636         from STARTFILE_SPEC so that it can be referenced in an override.
11637         (STARTFILE_SPEC): Use UNKNOWN_ELF_STARTFILE_SPEC.
11638         (UNKNOWN_ELF_ENDFILE_SPEC): Renamed from ENDFILE_SPEC so that it
11639         can be referenced in an override.
11640         (ENDFILE_SPEC): Use UNKNOWN_ELF_ENDFILE_SPEC.
11641         * config/arm/bpabi.h (BPABI_LINK_SPEC): Renamed from LINK_SPEC
11642         so that it can be referenced in an override.
11643         (LINK_SPEC): Use BPABI_LINK_SPEC.
11644         * config/arm/eabi.opt (File): New.
11645
11646 2008-07-14  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
11647
11648         * Makefile.in (TARGET_DEF_H): Add targhooks.h.
11649         (FIXED_VALUE_H): New variable.
11650         (RTL_BASE_H): Use $(INPUT_H) and $(FIXED_VALUE_H) instead of
11651         input.h, fixed-value.h.
11652         (TREE_H): Use $(INPUT_H), add $(SYMTAB_H).
11653         (BASIC_BLOCK_H): Use $(BITMAP_H).
11654         (FUNCTION_H): Add varray.h.
11655         (IPA_REFERENCE_H): Use $(BITMAP_H).
11656         (CGRAPH_H): Add $(BASIC_BLOCK_H).
11657         (DF_H): Use $(BITMAP_H).
11658         (GGC_H): Add statistics.h.
11659         (INSN_ADDR_H): New.
11660         (INSN_ATTR_H): Use it.
11661         (SYSTEM_H): Add safe-ctype.h, filenames.h.
11662         (INPUT_H): New.
11663         (SYMTAB_H): Add $(OBSTACK_H).
11664         (CPP_INTERNAL_H): New.
11665         (TREE_DUMP_H): Add tree-pass.h.
11666         (TREE_FLOW_H): Use $(BITMAP_H)
11667         (PRETTY_PRINT_H): Use $(INPUT_H).
11668         (EBITMAP_H): Rename from typo-ed EBIMAP_H.
11669         (GSTAB_H): New.
11670         (BITMAP_H): New.
11671         (many object files): Fix lots of header dependencies throughout.
11672
11673 2008-07-14  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
11674
11675         * Makefile.in (write_entries_to_file, write_entries_to_file_split):
11676         New macros.
11677         (s-gtyp-input): Use them to write tmp-gi.list.
11678         (echo_to_gi.list): Remove.
11679
11680 2008-07-14  Richard Guenther  <rguenther@suse.de>
11681
11682         * tree-ssa-sccvn.c (pre_info): Remove.
11683         (switch_to_PRE_table): Likewise.
11684         (free_scc_vn): Do not clear SSA_NAME_VALUE.  Do not free pre_info.
11685         (set_hashtable_value_ids): Do not create value-ids for the
11686         optimistic tables.
11687         (run_scc_vn): Remove double test.  Remove bogus special-case
11688         in value-number printing.
11689         * tree-ssa-sccvn.h (switch_to_PRE_table): Remove.
11690         * tree-ssa-ccp.c (get_symbol_constant_value): Do not look at
11691         SSA_NAME_VALUE.
11692         * tree-flow-inline.h (get_value_handle): Remove.
11693         * tree-flow.h (get_value_handle): Remove.
11694
11695 2008-07-14  Martin Jambor  <mjambor@suse.cz>
11696
11697         * tree-switch-conversion.c (gen_inbound_check): Make sure the type
11698         in which we generate arithmetics is not a subrange.
11699
11700 2008-07-14  Martin Jambor  <mjambor@suse.cz>
11701
11702         * Makefile.in (IPA_PROP_H): Added ipa-prop.h to IPA_PROP_H variable.
11703
11704 2008-07-14  Richard Guenther  <rguenther@suse.de>
11705
11706         * tree-ssa-pre.c (insert_into_preds_of_block): Do not call convert.
11707
11708 2008-07-14  Andreas Krebbel  <krebbel1@de.ibm.com>
11709
11710         PR target/36745
11711         * config/s390/s390.c: (s390_secondary_reload): Add a secondary
11712         reload for symbol refs moved to r0 with -fPIC.
11713         (legitimize_pic_address): Use the target register as temporary
11714         reg if possible.
11715         (emit_symbolic_move): Adjust comment.
11716         * config/s390/s390.md (reloadsi_PIC_addr, reloaddi_PIC_addr):
11717         New expanders.
11718
11719 2008-07-14  Ben Elliston  <bje@au.ibm.com>
11720
11721         * c-common.h (C_CPP_HASHNODE): New macro.
11722         * coretypes.h (struct cpp_token): Forward declare.
11723         * doc/extend.texi (PowerPC AltiVec Built-in Functions): Document
11724         the context-sensitive keyword method.
11725         * config/rs6000/rs6000-c.c (__vector_keyword, vector_keyword,
11726         __pixel_keyword, pixel_keyword, __bool_keyword, bool_keyword,
11727         expand_bool_pixel): New.
11728         (altivec_categorize_keyword): New function.
11729         (init_vector_keywords): New function.
11730         (rs6000_macro_to_expand): Likewise.
11731         (rs6000_cpu_cpp_builtins): Enable context-sensitive macros if not
11732         compiling an ISO C dialect.
11733
11734 2008-07-13  Daniel Berlin  <dberlin@dberlin.org>
11735
11736         * tree-ssa-pre.c (fully_constant_expression): Add fold_convert calls.
11737         (create_expression_by_pieces): Fix typo.
11738         (do_regular_insertion): Use debug counter here too.
11739
11740 2008-07-14  Hans-Peter Nilsson  <hp@axis.com>
11741
11742         PR target/35492.
11743         * config/cris/cris.h (CRIS_CONST_OK_FOR_LETTER_P): Renamed from
11744         CONST_OK_FOR_LETTER_P.  All port-local users changed.
11745         (CONST_OK_FOR_CONSTRAINT_P): Define; implement Kc as old K,
11746         implement Kp matching power-of-two.
11747         (CONSTRAINT_LEN): Define to match.
11748         * config/cris/cris.md: Replace all use of constraint K with Kc.
11749         ("*btst*): Use Kp for operand 0 of last alternative.
11750
11751 2008-07-13  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
11752
11753         PR testsuite/36440
11754         * tree-call-cdce.c (check_target_format): Accept MIPS single, double
11755         and quad formats.
11756
11757 2008-07-13  Jan Hubicka  <jh@suse.cz>
11758
11759         * tree.c (decl_assembler_name_equal): Expect assembler name of decl
11760         to be mangled too.
11761
11762 2008-07-13  Richard Guenther  <rguenther@suse.de>
11763
11764         PR middle-end/36811
11765         * langhooks.c (lhd_print_error_function): Deal with recursive
11766         BLOCK trees.
11767
11768 2008-07-12  Jan Hubicka  <jh@suse.cz>
11769
11770         * cgraph.c (assembler_name_hash): New static var.
11771         (hash_node_by_assembler_name, eq_assembler_name): New.
11772         (cgraph_node_for_asm): Use hashtable.
11773         (cgraph_remove_node): Maintain hashtable.
11774         (change_decl_assembler_name): Sanity check that names are not changing
11775         after aliasing was processed.
11776         * cgraph.h (varpoon_node): Add next GGC marker.
11777         * tree.c (decl_assembler_name_equal): Constify.
11778         (decl_assembler_name_hash): New.
11779         * tree.h (decl_assembler_name_equal): Constify.
11780         (decl_assembler_name_hash): Update.
11781
11782 2008-07-12  David Daney  <ddaney@avtrex.com>
11783
11784         * config/mips/driver-native.c (host_detect_local_cpu): Handle
11785         sb1 and r5000 cpus.
11786
11787 2008-07-12  Richard Sandiford  <rdsandiford@googlemail.com>
11788
11789         * doc/md.texi: Document the MIPS "v" constraint.
11790         * config/mips/mips.h (reg_class): Revert last change.
11791         (REG_CLASS_NAMES): Likewise.
11792         (REG_CLASS_CONTENTS): Likewise.
11793         * config/mips/mips.c (mips_regno_to_class): Likewise.
11794         * config/mips/constraints.md (v): Likewise, but add documentation.
11795         Add a comment to say that this constraint should not be used in
11796         gcc code.
11797
11798 2008-07-11  DJ Delorie  <dj@redhat.com>
11799
11800         * config/h8300/h8300.md (length): Fix branch offset limit.
11801
11802 2008-07-11  Anatoly Sokolov  <aesok@post.ru>
11803
11804         * config/avr/avr-protos.h (avr_peep2_scratch_safe): Remove prototype.
11805         * config/avr/avr.c (avr_peep2_scratch_safe): Remove.
11806         (avr_hard_regno_scratch_ok): New function.
11807         (TARGET_HARD_REGNO_SCRATCH_OK): Define.
11808         * config/avr/avr.md (all peepholes that request a scratch register):
11809         Remove avr_peep2_scratch_safe use.
11810
11811 2008-07-11  Tom Tromey  <tromey@redhat.com>
11812             Ian Lance Taylor  <iant@google.com>
11813
11814         * c-common.h (enum rid): Add RID_CXX_COMPAT_WARN.
11815         (struct c_common_resword): Define.
11816         (D_CONLY, D_CXXONLY, D_C99, D_CXX0X, D_EXT, D_EXT89): Define.
11817         (D_ASM, D_OBJC, D_CXX_OBJC, D_CXXWARN): Define.
11818         (c_common_reswords, num_c_common_reswords): Declare.
11819         * c-common.c (c_common_reswords): New global const array.
11820         (num_c_common_reswords): New const int.
11821         * c-parser.c (struct resword, reswords): Don't define.
11822         (D_C89, D_EXT, D_EXT89, D_OBJC): Don't define.
11823         (c_parse_init): Clarify mask code.  Use c_common_reswords rather
11824         than reswords.  If warning about C++ keywords, give them a special
11825         RID code.
11826         (c_lex_one_token): Warn about C++ keywords.  Call
11827         objc_is_reserved_word rather than OBJC_IS_AT_KEYWORD.
11828         (c_parser_external_declaration): Look for RID_xxx rather than
11829         RID_AT_xxx, for ObjC++ keywords which are also C++ keywords.
11830         (c_parser_statement_after_labels): Likewise.
11831         (c_parser_objc_class_instance_variables): Likewise.
11832         (c_parser_objc_class_declaration): Likewise.
11833         (c_parser_objc_try_catch_statement): Likewise.
11834         * c-decl.c (c_print_identifier): Ignore RID_CXX_COMPAT_WARN.
11835         (declspecs_add_type): Likewise.
11836
11837 2008-07-11  Angelo Graziosi  <angelo.graziosi@alice.it>
11838
11839         * ggc-page.c (alloc_page):
11840         Substituting xmalloc, xcalloc with
11841         XNEWVEC and XCNEWVAR macros which add the
11842         needed casts.
11843
11844 2008-07-11  Richard Guenther  <rguenther@suse.de>
11845
11846         PR tree-optimization/36765
11847         * tree-ssa-alias.c (compute_flow_insensitive_aliasing): Add
11848         aliases from HEAP vars to SMTs.
11849
11850 2008-07-10  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
11851
11852         * Makefile.in (LOOSE_WARN, STRICT_WARN): Update comments.
11853         * configure.ac (loose_warn): Move -Wc++-compat from here...
11854         (strict_warn): ...to here.
11855         * configure: Regenerate.
11856
11857 2008-07-10  Joseph Myers  <joseph@codesourcery.com>
11858
11859         * config.gcc (arm-*-coff*, armel-*-coff*, h8300-*-*,
11860         i[34567]86-*-aout*, i[34567]86-*-coff*, m68k-*-aout*,
11861         m68k-*-coff*, sh-*-*, mips-sgi-irix[56]*, pdp11-*-bsd,
11862         rs6000-ibm-aix4.[12]*, powerpc-ibm-aix4.[12]*): Deprecate targets,
11863         excluding more specific h8300-*-* and sh-*-* targets.
11864
11865 2008-07-10  Daniel Berlin  <dberlin@dberlin.org>
11866
11867         * tree-ssa-pre.c (create_expression_by_pieces): Add fold_convert calls.
11868         (eliminate): Ditto.
11869         (execute_pre): Call loop_optimizer_finalize in early exit.
11870
11871 2008-07-10  Jakub Jelinek  <jakub@redhat.com>
11872
11873         PR middle-end/36790
11874         * omp-low.c (lower_omp_2): If task_shared_vars, test all DECL_P
11875         uids in the bitmap, not just VAR_DECL uids.
11876
11877         PR rtl-optimization/36419
11878         * combine-stack-adj.c (adjust_frame_related_expr): New function.
11879         (combine_stack_adjustments_for_block): Call it if needed.  Delete
11880         correct insn.
11881         * dwarf2out.c (dwarf2out_frame_debug_expr): Adjust
11882         DW_CFA_GNU_args_size if CSA pass merged some adjustments into
11883         prologue sp adjustment.
11884
11885 2008-07-10  Peter Maydell  <pmaydell@chiark.greenend.org.uk>
11886
11887         PR other/28322
11888         * opts.c (print_ignored_options): Report postponed diagnostics for
11889         unknown -Wno-* options as warnings, not errors.
11890         (postpone_unknown_option_error): Renamed to...
11891         (postpone_unknown_option_warning): ... this.
11892
11893 2008-07-09  Doug Kwan  <dougkwan@google.com>
11894
11895         Revert:
11896         2008-07-08  Doug Kwan  <dougkwan@google.com>
11897
11898         * config/arm/arm.opt (mandroid): New option.
11899         * config/arm/bpabi.h (ANDROID_LINK_SPEC): New macro.
11900         (LINK_SPEC): Enable Android specific behaviour when -mandroid is used.
11901         (CC1_SPEC): Same.
11902         (CC1PLUS_SPEC): Same.
11903         (LIB_SPEC): Same.
11904         (STARTFILE_SPEC): Same.
11905         (ENDFILE_SPEC): Same.
11906         (TARGET_BPABI_CPP_BUILTINS): Define __ANDROID__ when -mandroid is
11907         used.
11908
11909 2008-07-09  Richard Sandiford  <rdsandiford@googlemail.com>
11910
11911         PR target/35802
11912         * config/mips/mips.h (reg_class): Remove V1_REG.
11913         (REG_CLASS_NAMES, REG_CLASS_CONTENTS): Update accordingly.
11914         * config/mips/mips.c (mips_regno_to_class): Map $3 to M16_NA_REGS
11915         instead of V1_REGS.
11916         (mips_get_tp): New function.
11917         (mips_legitimize_tls_address): Use it.
11918         * config/mips/constraints.md (v): Delete.
11919         * config/mips/mips.md (TLS_GET_TP_REGNUM): New constant.
11920         (tls_get_tp_<mode>): Allow any GPR destination and clobber $3.
11921         After reload, split into a move and ...
11922         (*tls_get_tp_<mode>_split): ...this new instruction.
11923
11924 2008-07-09  David Daney  <ddaney@avtrex.com>
11925
11926         * config/mips/driver-native.c: Include coretypes.h and tm.h.
11927
11928 2008-07-09  Jakub Jelinek  <jakub@redhat.com>
11929
11930         * gimplify.c (struct gimplify_ctx): Move to tree-gimple.h.
11931         (push_gimplify_context): Don't allocate temp_htab nor c itself here.
11932         Add c argument.
11933         (pop_gimplify_context): Check c->temp_htab instead of optimize whether
11934         htab_delete should be called.  Don't free c.
11935         (lookup_tmp_var): Create temp_htab lazily.
11936         (gimplify_scan_omp_clauses, gimplify_omp_parallel, gimplify_omp_task,
11937         gimplify_body, force_gimple_operand): Adjust push_gimplify_context
11938         callers.
11939         * omp-low.c (lower_omp_sections, lower_omp_single, lower_omp_master,
11940         lower_omp_ordered, lower_omp_critical, lower_omp_for,
11941         create_task_copyfn, lower_omp_taskreg, execute_lower_omp):
11942         * tree-ssa-ccp.c (convert_to_gimple_builtin): Likewise.
11943         * tree-sra.c (generate_element_init): Likewise.
11944         * tree-mudflap.c (execute_mudflap_function_ops,
11945         execute_mudflap_function_decls): Likewise.
11946         * tree-inline.c (setup_one_parameter, optimize_inline_calls): Likewise.
11947         * tree-gimple.h (struct gimplify_ctx): New type.
11948         (push_gimplify_context): Adjust prototype.
11949
11950 2008-07-09  Daniel Berlin  <dberlin@dberlin.org>
11951
11952         * tree-ssa-pre.c (phi_translate_1): Update placement of
11953         add_to_value calls.
11954
11955 2008-07-09  Anatoly Sokolov  <aesok@post.ru>
11956
11957         * target.h (struct gcc_target): Add hard_regno_scratch_ok field.
11958         * target-def.h (TARGET_HARD_REGNO_SCRATCH_OK): New.
11959         (TARGET_INITIALIZER): Use TARGET_HARD_REGNO_SCRATCH_OK.
11960         * targhooks.c (default_hard_regno_scratch_ok): New function.
11961         * targhooks.h (default_hard_regno_scratch_ok): Declare function.
11962         * doc/tm.texi: Document TARGET_HARD_REGNO_SCRATCH_OK hook.
11963         * recog.c:  Include "target.h".
11964         (peep2_find_free_register): Add check for global regs. Add target
11965         specific check.
11966         * Makefile.in (recog.o): Depend on target.h.
11967
11968 2008-07-09  Kaz Kojima  <kkojima@gcc.gnu.org>
11969
11970         * config/sh/sh.c (sh_canonical_va_list_type): New.
11971         (TARGET_CANONICAL_VA_LIST_TYPE): Define.
11972
11973 2008-07-09  Raksit Ashok <raksit@google.com>
11974
11975         * doc/invoke.texi (Option Summary): Mention new option
11976         -Wdisallowed-function-list=...
11977         (Warning Options): Document -Wdisallowed-function-list=...
11978         * common.opt (Wdisallowed-function-list=): New flag.
11979         * flags.h (warn_disallowed_functions): External definition of new
11980         boolean warning flag.
11981         (warn_if_disallowed_function_p): Declare new function.
11982         * opts.c (warning_disallowed_functions): New static variable.
11983         (warn_disallowed_functions): New boolean warning flag.
11984         (warn_if_disallowed_function_p): New function.
11985         (add_comma_separated_to_vector): Rename
11986         add_instrument_functions_exclude_list to this.
11987         (common_handle_option): Handle new option. Rename calls to
11988         add_instrument_functions_exclude_list into calls to
11989         add_comma_separated_to_vector.
11990         * c-parser.c (c_parser_postfix_expression_after_primary): New warning
11991         based on flag warn_disallowed_functions.
11992
11993 2008-07-09  Christian Bruel  <christian.bruel@st.com>
11994
11995         * final.c (get_attr_length_1): Call get_attr_length_1 with fallback_fn
11996          instead of get_attr_length.
11997
11998 2008-07-09  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
11999
12000         * genattrtab.c (insert_right_side, evaluate_eq_attr): Avoid C++
12001         keywords.
12002         * genemit.c (gen_insn): Likewise.
12003         * gengtype.c (note_def_vec): Likewise.
12004         * gengtype.h (note_def_vec): Likewise.
12005         * genoutput.c (struct data, output_insn_data, process_template,
12006         gen_expand, gen_split, note_constraint): Likewise.
12007         * genrecog.c (new_decision, add_to_sequence, factor_tests,
12008         make_insn_sequence): Likewise.
12009         * gensupport.c (record_insn_name): Likewise.
12010
12011 2008-07-08  Doug Kwan  <dougkwan@google.com>
12012
12013         * config/arm/arm.opt (mandroid): New option.
12014         * config/arm/bpabi.h (ANDROID_LINK_SPEC): New macro.
12015         (LINK_SPEC): Enable Android specific behaviour when -mandroid is used.
12016         (CC1_SPEC): Same.
12017         (CC1PLUS_SPEC): Same.
12018         (LIB_SPEC): Same.
12019         (STARTFILE_SPEC): Same.
12020         (ENDFILE_SPEC): Same.
12021         (TARGET_BPABI_CPP_BUILTINS): Define __ANDROID__ when -mandroid is
12022         used.
12023
12024 2008-07-08  Raksit Ashok  <raksit@google.com>
12025
12026         * expr.c (emit_block_move_via_movmem): Fix expected_align parameter.
12027         (set_storage_via_setmem): Fix expected_align parameter.
12028         * doc/invoke.texi (i386 and x86-64 Options): Add a couple of options
12029         missing from the list.
12030         * doc/md.texi (movmem): Explicitly state that expected alignment is
12031         to be expressed in bytes.
12032         (setmem): Explicitly state that expected alignment is to be expressed
12033         in bytes.
12034
12035 2008-07-08  Joseph Myers  <joseph@codesourcery.com>
12036
12037         * reload.c (find_reloads_subreg_address): Do not require validity
12038         of address in original mode before reloading address.
12039
12040 2008-07-07  Tianwei Sheng  <tianweis@google.com>
12041
12042         * df-core.c (df_remove_problem): Adjust the access to avoid out of
12043         bounds array access.
12044
12045 2008-07-08  Jakub Jelinek  <jakub@redhat.com>
12046
12047         * tree-sra.c (sra_build_assignment): Handle CONVERT_EXPR_P dst.
12048
12049 2008-07-05  Daniel Berlin  <dberlin@dberlin.org>
12050
12051         Fix PR tree-optimization/23455
12052         Fix PR tree-optimization/35286
12053         Fix PR tree-optimization/35287
12054         * Makefile.in (OBJS-common): Remove tree-vn.o.
12055         (tree-vn.o): Remove.
12056         * dbgcnt.def: Add treepre_insert debug counter.
12057         * gcc/tree-flow.h (add_to_value): Updated for other changes.
12058         (debug_value_expressions): Ditto.
12059         (print_value_expressions): Ditto.
12060         * tree-pretty-print.c (dump_generic_node): Updated for
12061         VALUE_HANDLE removal.
12062         * tree-ssa-dom.c (record_equality): Ditto.
12063         (cprop_operand): Ditto.
12064         (lookup_avail_expr): Ditto.
12065         * tree-ssa-threadedge.c
12066         (record_temporary_equivalences_from_stmts_at_dest): Ditto.
12067         (simplify_control_stmt_condition): Ditto.
12068         * tree.c (tree_code_size): Ditto.
12069         (tree_node_structure): Ditto.
12070         (iterative_hash_expr): Ditto.
12071         * tree.def: Ditto.
12072         * tree.h (VALUE_HANDLE_ID): Ditto.
12073         (VALUE_HANDLE_EXPR_SET): Ditto.
12074         (struct tree_value_handle): Ditto.
12075         (union tree_node): Ditto.
12076         * treestruct.def: Ditto.
12077         * tree-vn.c: Removed.
12078         * tree-ssa-pre.c: Rewritten entirely.
12079         * tree-ssa-sccvn.c (constant_to_value_id): New hashtable.
12080         (constant_value_ids): Ditto.
12081         (vn_nary_op_t): Moved to header.
12082         (vn_phi_t): Ditto.
12083         (vn_reference_op_t): Ditto
12084         (vn_reference_t): Ditto.
12085         (next_value_id): New variable.
12086         (VN_INFO): Add an assert.
12087         (vn_constant_eq): New function.
12088         (vn_constant_hash): Ditto.
12089         (get_or_alloc_constant_value_id): Ditto.
12090         (value_id_constant_p): Ditto.
12091         (vn_reference_compute_hash): De-staticify.
12092         (copy_reference_ops_from_ref): Don't use get_callee_fndecl.
12093         Disable some code with a FIXME.  Remove VALUE_HANDLE use.
12094         (valueize_refs): Update opcode if it changes from ssa name to constant.
12095         (vn_reference_lookup_1): Add new argument.
12096         (vn_reference_lookup):  Ditto.
12097         (vn_reference_lookup_pieces): New function.
12098         (vn_reference_insert): Add return type. Modify to deal with value ids.
12099         (vn_reference_insert_pieces):  New function.
12100         (vn_nary_op_compute_hash): De-staticify.
12101         (vn_nary_op_eq): Ditto.
12102         (vn_nary_op_lookup_pieces): New function.
12103         (vn_nary_op_lookup): Add new argument.
12104         (vn_nary_op_insert_pieces): New function.
12105         (vn_nary_op_insert): Add return type. Modify to deal with value ids.
12106         (vn_phi_insert): Ditto.
12107         (visit_unary_op): Update for callee changes.
12108         (visit_binary_op): Ditto.
12109         (visit_reference_op_load): Ditto.
12110         (visit_reference_op_store): Ditto.
12111         (init_scc_vn): Init next_value_id, constant_to_value_id and
12112         constant_value_ids.
12113         (free_scc_vn): Free them.
12114         (set_hashtable_value_ids): New function.
12115         (run_scc_vn): Use it.
12116         (get_max_value_id): New function.
12117         (get_next_value_id): Ditto.
12118         (expressions_equal_p): Moved from tree-vn.c
12119         (sort_vuses): Ditto.
12120         (sort_vuses_heap): Ditto.
12121         * tree-ssa-sccvn.h: Structures moved from tree-ssa-sccvn.c (noted
12122         above).
12123         * tree.c (iterative_hash_hashval_t): Made non-static
12124         * tree.h (iterative_hash_hashval_t): Declare it.
12125
12126 2008-07-08  Martin Jambor  <mjambor@suse.cz>
12127
12128         * ipa-cp.c (ipcp_init_cloned_node): Call ipa_check_create_node_params
12129         instead of ipa_create_node_params.
12130         (ipcp_driver): Allocate infos with ipa_check_create_node_params and
12131         ipa_check_create_edge_args, free them with
12132         free_all_ipa_structures_after_ipa_cp, call ipa_register_cgraph_hooks.
12133
12134         * ipa-prop.c: Include flags.h and tree-inline.h.
12135         (ipa_node_params_vector): New variable.
12136         (ipa_edge_args_vector): New variable.
12137         (edge_removal_hook_holder): New variable.
12138         (node_removal_hook_holder): New variable.
12139         (edge_duplication_hook_holder): New variable.
12140         (node_duplication_hook_holder): New variable.
12141         (ipa_detect_param_modifications): Check for presence of modified flags.
12142         (ipa_compute_jump_functions): Check for presence of jump functions.
12143         (ipa_free_edge_args_substructures): New function.
12144         (ipa_create_node_params): Removed.
12145         (ipa_free_all_edge_args): Changed to deallocate the on-the-side vector.
12146         (ipa_free_node_params_substructures): New function.
12147         (ipa_free_all_node_params): Changed to deallocate the on-the-side
12148         vector.
12149         (ipa_edge_removal_hook): New function.
12150         (ipa_node_removal_hook): New function.
12151         (duplicate_array): New function.
12152         (ipa_edge_duplication_hook): New function.
12153         (ipa_node_duplication_hook): New function.
12154         (ipa_register_cgraph_hooks): New function.
12155         (ipa_unregister_cgraph_hooks): New function.
12156         (free_all_ipa_structures_after_ipa_cp): New function.
12157
12158         * ipa-prop.h: Include vec.h.
12159         (ipa_node_params_t): New typedef with vector types for it.
12160         (ipa_edge_args_t):  New typedef with vector types for it.
12161         (IPA_NODE_REF): Changed to access an on-the-side vector.
12162         (IPA_EDGE_REF): Changed to access an on-the-side vector.
12163         (ipa_check_create_node_params): New function.
12164         (ipa_check_create_edge_args): New function.
12165
12166         * Makefile.in (IPA_PROP_H): New variable for ipa-prop.h.  Converted
12167         all users.
12168
12169 2008-07-07  Tom Tromey  <tromey@redhat.com>
12170
12171         * configure, config.in: Rebuilt.
12172         * configure.ac: Don't check for scandir or alphasort.
12173
12174 2008-07-07  Joseph Myers  <joseph@codesourcery.com>
12175
12176         * config/arm/arm.c (arm_init_neon_builtins): Register built-in
12177         types immediately after creating them.
12178
12179 2008-07-07  Joseph Myers  <joseph@codesourcery.com>
12180
12181         * config/arm/aout.h (DOLLARS_IN_IDENTIFIERS): Remove.
12182
12183 2008-07-07  Fernando Pereira <fernando@cs.ucla.edu>
12184
12185         * tree-ssa-structalias.c (compute_points_to_sets): Add call to
12186         dump_constraint_graph.
12187         (dump_constraint_edge): New function.
12188         (dump_constraint_graph): New function.
12189         (debug_constraint_graph): New function.
12190         (dump_constraint): Removed useless comparison.
12191         * tree-ssa-structalias.h (dump_constraint_edge): Declare.
12192         (dump_constraint_graph): Declare.
12193         (debug_constraint_graph): Declare.
12194         * tree-dump.c (struct dump_option_value_info): Declare TDF_GRAPH.
12195
12196 2008-07-07  Kai Tietz  <kai.tietz@onevision.com>
12197
12198         * config/i386/i386.c (is_va_list_char_pointer): New.
12199         (ix86_va_start): Replace compare with ms_va_list_type_node
12200         by is_va_list_char_pointer.
12201         (ix86_gimplify_va_arg): Likewise.
12202
12203 2008-07-07  Martin Jambor  <mjambor@suse.cz>
12204
12205         * cgraph.c (cgraph_edge_max_uid): New variable.
12206         (struct cgraph_edge_hook_list): New type.
12207         (struct cgraph_node_hook_list): New type.
12208         (struct cgraph_2edge_hook_list): New type.
12209         (struct cgraph_2node_hook_list): New type.
12210         (first_cgraph_edge_removal_hook): New variable.
12211         (first_cgraph_node_removal_hook): New variable.
12212         (first_cgraph_edge_duplicated_hook): New variable.
12213         (first_cgraph_node_duplicated_hook): New variable.
12214         (cgraph_add_edge_removal_hook): New function.
12215         (cgraph_remove_edge_removal_hook): New function.
12216         (cgraph_call_edge_removal_hooks):  New function.
12217         (cgraph_add_node_removal_hook):  New function.
12218         (cgraph_remove_node_removal_hook):  New function.
12219         (cgraph_call_node_removal_hooks):  New function.
12220         (cgraph_add_edge_duplication_hook):  New function.
12221         (cgraph_remove_edge_duplication_hook):  New function.
12222         (cgraph_call_edge_duplication_hooks):  New function.
12223         (cgraph_add_node_duplication_hook):  New function.
12224         (cgraph_remove_node_duplication_hook):  New function.
12225         (cgraph_call_node_duplication_hooks):  New function.
12226         (cgraph_create_edge): Assign to edge uid.
12227         (cgraph_remove_edge): Call edge removal hooks.
12228         (cgraph_node_remove_callees): Call edge removal hooks.
12229         (cgraph_node_remove_callers): Call edge removal hooks.
12230         (cgraph_remove_node): Call node removal hooks.
12231         (cgraph_clone_edge): Call edge duplication hooks.
12232         (cgraph_clone_node): Call node duplication hooks.
12233
12234         * cgraph.h (cgraph_edge): New field uid.
12235         (cgraph_edge_hook): New type.
12236         (cgraph_node_hook): New type.
12237         (cgraph_2edge_hook): New type.
12238         (cgraph_2node_hook): New type.
12239
12240 2008-07-07  Andreas Tobler  <a.tobler@schweiz.org>
12241
12242         * config.in: Regenerate.
12243
12244 2008-07-07  Vladimir Prus  <vladimir@codesourcery.com>
12245
12246         * gcc.c (print_sysroot): New.
12247         (option_map, display_help, process_command): Handle the
12248         -print-sysroot option.
12249         (main): Print the sysroot if requested.
12250         * doc/invoke.texi (Debugging Options): Document -print-sysroot.
12251
12252 2008-07-07  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
12253
12254         PR target/34780
12255         * unwind-pe.h (size_of_encoded_value): add attribute unused.
12256
12257 2008-07-07  Daniel Jacobowitz  <dan@codesourcery.com>
12258
12259         * function.c (assign_parm_remove_parallels): Check mode of entry_parm.
12260         (assign_parm_setup_block_p): Also check mode of entry_parm.
12261
12262 2008-07-07  Richard Guenther  <rguenther@suse.de>
12263
12264         * tree-ssa-structalias.h (set_used_smts): Remove.
12265         * tree-ssa-structalias.c (used_smts): Likewise.
12266         (set_used_smts): Likewise.
12267         * tree-ssa-alias.c (compute_flow_sensitive_aliasing): Remove
12268         call to set_used_smts.
12269
12270 2008-07-07  Richard Guenther  <rguenther@suse.de>
12271
12272         * tree-ssa-structalias.c (struct variable_info): Add is_full_var flag.
12273         (new_var_info): Set it to false.
12274         (solution_set_add): Correctly handle pointers outside a var and
12275         inside a field.
12276         (type_safe): Treat variables with is_full_var properly.
12277         (do_sd_constraint): Likewise.
12278         (do_ds_constraint): Likewise.
12279         (process_constraint): Remove zeroing offset for !use_field_sensitive.
12280         (get_constraint_for_ptr_offset): New function.
12281         (get_constraint_for_component_ref): For addresses at least include
12282         the last field of the variable.  Handle is_full_vars properly.
12283         (get_constraint_for_1): Factor common code, handle POINTER_PLUS_EXPR.
12284         (handle_ptr_arith): Remove.
12285         (find_func_aliases): Simplify assignment handling.
12286         (create_function_info_for): For parameter and result varinfos set
12287         is_full_var flag.
12288         (create_variable_info_for): Set is_full_var flag whenever we
12289         just created a single varinfo for a decl.
12290         (init_alias_vars): Initialize use_field_sensitive from
12291         max-fields-for-field-sensitive parameter.
12292
12293 2008-07-07  Richard Guenther  <rguenther@suse.de>
12294
12295         PR tree-optimization/36713
12296         * tree-flow-inline.h (is_call_used): New function.
12297         * tree-nrv.c (dest_safe_for_nrv_p): Use it.
12298         * tree-tailcall.c (suitable_for_tail_opt_p): Likewise.
12299         * tree-outof-ssa.c (create_temp): Set call-used flag if required.
12300
12301 2008-07-07  Maxim Kuvyrkov  <maxim@codesourcery.com>
12302
12303         * config/m68k/m68k.c (m68k_return_in_memory): Fix arguments types.
12304
12305 2008-07-07  Mark Shinwell  <shinwell@codesourcery.com>
12306
12307         * config/m68k/lb1sf68.asm: Add PIC macros for Linux targets.
12308
12309 2008-07-07  Maxim Kuvyrkov  <maxim@codesourcery.com>
12310             Nathan Sidwell  <nathan@codesourcery.com>
12311
12312         * config.gcc (m68k-*-linux*): Add with_arch.  Add sysroot-suffix.h
12313         to tm_file.  Add m68k/t-floatlib, m68k/t-linux & m68k/t-mlibs to
12314         tmake_file.
12315         * config/m68k/t-linux: New.
12316         * doc/install.texi: Document m68k-*-linux is now multilibbed by
12317         default.
12318
12319 2008-07-07  Nathan Sidwell  <nathan@codesourcery.com>
12320
12321         * config/m68k/t-cf (MULTILIB_EXTRA_OPTS): Add no-mac.
12322         * config/m68k/m68k-devices.def: Remove multilibs that only differ
12323         by MAC/EMAC.
12324
12325 2008-07-06  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
12326
12327         * gcc.c (execute): Fix -Wc++-compat warning.
12328
12329 2008-07-06  H.J. Lu  <hongjiu.lu@intel.com>
12330
12331         PR target/36720
12332         * config/ia64/ia64.c (ia64_split_tmode): Fix typo in TImode
12333         constant for little endian.
12334
12335 2008-07-06  Richard Sandiford  <rdsandiford@googlemail.com>
12336
12337         * config/mips/mips.h (TARGET_CPU_CPP_BUILTINS): Check
12338         mips_base_mips16 instead of TARGET_MIPS16.
12339         (mips_base_mips16): Declare.
12340         * config/mips/mips.c (mips_base_mips16): Make global.
12341         (was_mips16_p): Remove GTY marker.
12342         (was_mips16_pch_p): New variable.
12343         (mips_set_mips16_mode): Check both was_mips16_p and was_mips16_pch_p.
12344         (mips_override_options): Force to non-MIPS16 mode initially.
12345         Do not complain about MIPS16 PIC incompatibilities here.
12346         Only allow -mgpopt if -mexplicit-relocs is in force for
12347         non-MIPS16 code.
12348
12349 2008-07-06  Andreas Tobler  <a.tobler@schweiz.org>
12350
12351         * configure.ac: Check for caddr_t, define to char * if not defined.
12352         * configure: Regenerate.
12353         * ggc-common.c (mmap_gt_pch_get_address): Fix -Wc++-compat warnings.
12354         (mmap_gt_pch_use_address): Likewise.
12355         * config/host-solaris.c (sol_gt_pch_use_address): Likewise.
12356
12357 2008-07-06  Richard Guenther  <rguenther@suse.de>
12358
12359         * tree-ssa-structalias.c (struct variable_info): Remove has_union.
12360         (new_var_info): Deal with it.
12361         (solution_set_add): Likewise.
12362         (bitpos_of_field): Make signed, fix.
12363         (struct fieldoff): Remove type and decl fields.  Make size field
12364         unsigned HOST_WIDE_INT.  Add has_unknown_size and may_have_pointers
12365         flags.
12366         (fieldoff_compare): Deal with it.
12367         (push_fields_onto_fieldstack): Remove has_union argument, glob
12368         adjacent non-pointer fields together.
12369         (create_function_info_for): Do not set has_union.
12370         (create_variable_info_for): Simplify.
12371
12372 2008-07-06  Kai Tietz  <kai.tietz@onevision.com>
12373
12374         * config.gcc (extra_headers): Add cross-stdarg.h for target
12375         x86_64-*-* and i?86-*-*.
12376         * config/i386/cross-stdarg.h: New.
12377         * builtins.c (std_fn_abi_va_list): New.
12378         (std_canonical_va_list_type): New.
12379         (stabilize_va_list): Replace va_list_type_node use by
12380         mtarget.canonical_va_list_type.
12381         (gimplify_va_arg_expr): Likewise.
12382         (expand_builtin_va_copy): Replace va_list_type_node use by
12383         mtarget.fn_abi_va_list.
12384         * tree-sra.c (is_va_list_type): New helper.
12385         (decl_can_be_decomposed_p): Replace
12386         va_list_type_node use by is_va_list_type.
12387         * tree-ssa-ccp.c (optimize_stdarg_builtin): Likewise.
12388         * tree-stdarg.c (execute_optimize_stdarg): Likewise.
12389         * c-common.c (c_common_nodes_and_builtins): Use TARGET_ENUM_VA_LIST.
12390         * config/i386/i386-protos.h (ix86_get_valist_type): New.
12391         (ix86_enum_va_list): New.
12392         * config/i386/i386.c (sysv_va_list_type_node): New.
12393         (ms_va_list_type_node): New.
12394         (ix86_function_type_abi): Remove sorry.
12395         (ix86_build_builtin_va_list_abi): New.
12396         (ix86_build_builtin_va_list): Call ix86_build_builtin_va_list_abi
12397         for 64-bit targets.
12398         (ix86_va_start): Replace va_list_type_node by sysv_va_list_type_node.
12399         (ix86_init_builtins_va_builtins_abi): New.
12400         (ix86_init_builtins): Use ix86_init_builtins_va_builtins_abi
12401         for 64-bit targets.
12402         (ix86_handle_abi_attribute): New.
12403         (attribute_spec): Add sysv_abi and ms_abi.
12404         (ix86_fn_abi_va_list): New.
12405         (ix86_canonical_va_list_type): New.
12406         (ix86_enum_va_list): New.
12407         (TARGET_FN_ABI_VA_LIST): New.
12408         (TARGET_CANONICAL_VA_LIST_TYPE): New.
12409         * config/i386/i386.h (TARGET_ENUM_VA_LIST): New.
12410         * doc/tm.texi (TARGET_FN_ABI_VA_LIST): New.
12411         (TARGET_CANONICAL_VA_LIST_TYPE): New.
12412         (TARGET_ENUM_VA_LIST): New.
12413         * expr.h (std_fn_abi_va_list): New.
12414         (std_canonical_va_list_type): New.
12415         * target-def.h (TARGET_FN_ABI_VA_LIST): New.
12416         (TARGET_CANONICAL_VA_LIST_TYPE): New.
12417         (TARGET_INITIALIZER): Add TARGET_FN_ABI_VA_LIST and
12418         TARGET_CANONICAL_VA_LIST_TYPE.
12419         * target.h (struct gcc_target): Add fn_abi_va_list hook
12420         and canonical_va_list_type hook.
12421
12422 2008-07-05  Andrew Pinski  <andrew_pinski@playstation.sony.com>
12423
12424         * fold-const.c (fold_convert_const): Treat OFFSET_TYPE the same as
12425         integral and pointer types.
12426
12427 2008-07-04  Roger Sayle  <roger@eyesopen.com>
12428
12429         * config/rs6000/host-darwin.c (darwin_rs6000_extra_signals): Cast
12430         the "void*" result of xmalloc to "char*" to fix bootstrap breakage.
12431
12432 2008-07-04  Kaz Kojima  <kkojima@gcc.gnu.org>
12433
12434         PR target/36684
12435         * config/sh/sh.h (OVERRIDE_OPTIONS): Disable -fschedule-insns for PIC.
12436
12437 2008-07-04  Jakub Jelinek  <jakub@redhat.com>
12438
12439         * tree-switch-conversion.c (build_one_array, gen_def_assigns): Use
12440         build_gimple_modify_stmt.
12441         (build_arrays, gen_inbound_check): Likewise.  Force RHS to be
12442         gimple operand.  Use fold_build* instead of build*.
12443
12444 2008-07-04  Richard Guenther  <rguenther@suse.de>
12445
12446         * tree-ssa-structalias.c (lookup_vi_for_tree): Declare.
12447         (do_sd_constraint): Handle a dereference of ESCAPED and CALLUSED
12448         properly to compute the reachability set if we do field-sensitive PTA.
12449         * invoke.texi (max-fields-for-field-sensitive): Document default.
12450         * opts.c (decode_options): Set max-fields-for-field-sensitive to
12451         100 for optimize >= 2.
12452
12453 2008-07-04  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
12454
12455         * ggc-zone.c (lookup_page_table_if_allocated,
12456         set_page_table_entry, zone_find_object_size, alloc_small_page,
12457         alloc_large_page, ggc_free, gt_ggc_m_S, ggc_marked_p, init_ggc,
12458         new_ggc_zone, init_ggc_pch, ggc_pch_this_base, ggc_pch_read): Fix
12459         -Wc++-compat and/or -Wcast-qual warnings.
12460
12461 2008-07-04  Alan Modra  <amodra@bigpond.net.au>
12462
12463         PR target/36634
12464         * config/rs6000/rs6000.md (call, call_value): Don't arrange for
12465         pic_offset_table_rtx to be marked as used here.
12466         (call_nonlocal_sysv, call_value_nonlocal_sysv): Add split for
12467         TARGET_SECURE_PLT to "use" pic_offset_table_rtx.
12468         (call_nonlocal_sysv_secure, call_value_nonlocal_sysv_secure): New insn.
12469         (sibcall_nonlocal_sysv, sibcall_value_nonlocal_sysv): Assert
12470         !TARGET_SECURE_PLT.
12471
12472 2008-07-03  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
12473
12474         * alloc-pool.c (hash_descriptor, eq_descriptor,
12475         alloc_pool_descriptor): Fix -Wc++-compat warnings.
12476         * bitmap.c (hash_descriptor, eq_descriptor, bitmap_descriptor):
12477         Likewise.
12478         * ggc-common.c (hash_descriptor, eq_descriptor, hash_ptr, eq_ptr,
12479         loc_descriptor, ggc_prune_ptr, ggc_free_overhead,
12480         final_cmp_statistic, cmp_statistic, dump_ggc_loc_statistics): Likewise.
12481         * varray.c (hash_descriptor, eq_descriptor, varray_descriptor):
12482         Likewise.
12483
12484 2008-07-03  Eric Botcazou  <ebotcazou@adacore.com>
12485
12486         * tree-flow.h (loop_only_exit_p): Declare.
12487         * tree-ssa-loop-niter.c (loop_only_exit_p): Make public.
12488         * tree-ssa-loop-ivopts.c (may_eliminate_iv): Reinstate direct check on
12489         the number of iterations if it is constant.  Otherwise, if this is the
12490         only possible exit of the loop, use the conservative estimate on the
12491         number of iterations of the entire loop if available.
12492
12493 2008-07-03  Richard Sandiford  <rdsandiford@googlemail.com>
12494
12495         * Makefile.in (libgcc.mvars): Add LIBGCC_SYNC and LIBGCC_SYNC_CFLAGS.
12496         * libgcc-std.ver (GCC_4.4.0): New version, inherited from GCC_4.3.0.
12497         Add synchronization functions.
12498         * config/sync.c: New file.
12499         * config/mips/t-libgcc-mips16 (LIBGCC_SYNC): Define.
12500         (LIBGCC_SYNC_CFLAGS): Likewise.
12501
12502 2008-07-03  Uros Bizjak  <ubizjak@gmail.com>
12503
12504         PR target/36710
12505         * config/i386/i386.md (mode): Add TF to "mode" attribute.
12506         (*pushtf_sse): New insn pattern.
12507         (pushtf splitters): New splitters.
12508
12509 2008-07-03  Michael Meissner  <gnu@the-meissners.org>
12510
12511         PR middle-end/35736
12512         * predict.c (build_predict_expr): Use void_type_node for the tree
12513         type, instead of NULL_TREE.
12514
12515 2008-07-03  H.J. Lu  <hongjiu.lu@intel.com>
12516
12517         * config/i386/i386.c (contains_aligned_value_p): Return true
12518         for TCmode.
12519         (ix86_data_alignment): Align TCmode to 128bits.
12520         (ix86_local_alignment): Likewise.
12521
12522 2008-07-03  Andrew Haley  <aph@redhat.com>
12523
12524         PR bootstrap/33304
12525         * vec.h (VEC_TA): New.
12526         (DEF_VEC_I, DEF_VEC_P, DEF_VEC_ALLOC_I, DEF_VEC_ALLOC_P,
12527         DEF_VEC_O, DEF_VEC_ALLOC_O: Use VEC_TA.
12528         * c-common.c (C_COMMON_FIXED_TYPES_SAT): New macro.
12529         (C_COMMON_FIXED_MODE_TYPES_SAT): New macro.
12530         (C_COMMON_FIXED_TYPES): Remove first arg.
12531         (C_COMMON_FIXED_MODE_TYPES): Likewise.
12532         * tree.c (MAKE_FIXED_TYPE_NODE): Break into two macros,
12533         MAKE_FIXED_TYPE_NODE and MAKE_FIXED_TYPE_NODE_WIDTH in order
12534         not to use empty macro arguments.
12535
12536 2008-07-02  Joseph Myers  <joseph@codesourcery.com>
12537
12538         * config/alpha/vms_tramp.asm, config/arm/crti.asm,
12539         config/arm/crtn.asm, config/bfin/crti.s, config/bfin/crtlibid.s,
12540         config/bfin/crtn.s, config/fr30/crti.asm, config/fr30/crtn.asm,
12541         config/frv/lib1funcs.asm, config/i386/sol2-c1.asm,
12542         config/i386/sol2-ci.asm, config/i386/sol2-cn.asm,
12543         config/i386/sol2-gc1.asm, config/ia64/crti.asm,
12544         config/ia64/crtn.asm, config/m68hc11/larith.asm,
12545         config/m68hc11/m68hc11-crt0.S, config/m68k/crti.s,
12546         config/m68k/crtn.s, config/mcore/crti.asm, config/mcore/crtn.asm,
12547         config/rs6000/crtresfpr.asm, config/rs6000/crtresgpr.asm,
12548         config/rs6000/crtresxfpr.asm, config/rs6000/crtresxgpr.asm,
12549         config/rs6000/crtsavfpr.asm, config/rs6000/crtsavgpr.asm,
12550         config/rs6000/crtsavres.asm, config/rs6000/e500crtres32gpr.asm,
12551         config/rs6000/e500crtres64gpr.asm,
12552         config/rs6000/e500crtres64gprctr.asm,
12553         config/rs6000/e500crtrest32gpr.asm,
12554         config/rs6000/e500crtrest64gpr.asm,
12555         config/rs6000/e500crtresx32gpr.asm,
12556         config/rs6000/e500crtresx64gpr.asm,
12557         config/rs6000/e500crtsav32gpr.asm,
12558         config/rs6000/e500crtsav64gpr.asm,
12559         config/rs6000/e500crtsav64gprctr.asm,
12560         config/rs6000/e500crtsavg32gpr.asm,
12561         config/rs6000/e500crtsavg64gpr.asm,
12562         config/rs6000/e500crtsavg64gprctr.asm, config/rs6000/eabi-ci.asm,
12563         config/rs6000/eabi-cn.asm, config/rs6000/eabi.asm,
12564         config/rs6000/sol-ci.asm, config/rs6000/sol-cn.asm,
12565         config/rs6000/tramp.asm, config/sparc/sol2-ci.asm,
12566         config/sparc/sol2-cn.asm: Remove .file directives.
12567
12568 2008-07-02  Richard Sandiford  <rdsandiford@googlemail.com>
12569
12570         * resource.c (mark_referenced_resources): Look inside
12571         UNSPEC_VOLATILEs and ASM_INPUTs.
12572
12573 2008-07-02  Ian Lance Taylor  <iant@google.com>
12574
12575         * rtlanal.c (add_reg_note): New function.
12576         * rtl.h (add_reg_note): Declare.
12577         * auto-inc-dec.c (attempt_change): Use add_reg_note.
12578         * bb-reorder.c (add_reg_crossing_jump_notes): Likewise.
12579         * builtins.c (expand_builtin_longjmp): Likewise.
12580         (expand_builtin_nonlocal_goto): Likewise.
12581         * calls.c (emit_call_1, expand_call): Likewise.
12582         * cfgexpand.c (add_reg_br_prob_note): Likewise.
12583         * cfglayout.c (fixup_reorder_chain): Likewise.
12584         * cfgrtl.c (force_nonfallthru_and_redirect): Likewise.
12585         (commit_one_edge_insertion): Likewise.
12586         * combine.c (move_deaths, distribute_notes): Likewise.
12587         * df-problems.c (df_set_note): Likewise.
12588         * emit-rtl.c (link_cc0_insns, try_split): Likewise.
12589         (set_unique_reg_note): Likewise.
12590         (emit_copy_of_insn_after): Likewise.
12591         * expr.c (expand_expr_real): Likewise.
12592         * gcse.c (add_label_notes): Likewise.
12593         * haifa-sched.c (create_check_block_twin): Likewise.
12594         * jump.c (mark_jump_label_1): Likewise.
12595         * loop-doloop.c (add_test, doloop_modify): Likewise.
12596         * loop-unswitch.c (compare_and_jump_seq): Likewise.
12597         * lower-subreg.c (move_eh_region_note): Likewise.
12598         * optabs.c (emit_libcall_block): Likewise.
12599         * predict.c (predict_insn): Likewise.
12600         (combine_predictions_for_insn): Likewise.
12601         * recog.c (peephole2_optimize): Likewise.
12602         * regmove.c (try_auto_increment): Likewise.
12603         * reg-stack.c (emit_pop_insn, move_for_stack_reg): Likewise.
12604         * reload.c (find_reloads): Likewise.
12605         * reload1.c (fixup_eh_region_note): Likewise.
12606         (reload_as_needed, add_auto_inc_notes, copy_eh_notes): Likewise.
12607         * reorg.c (delete_prior_computation): Likewise.
12608         (delete_computation, dbr_schedule): Likewise.
12609         * config/pa/pa.c (legitimize_pic_address): Likewise.
12610         * config/sh/sh.c (sh_reorg): Likewise.
12611
12612 2008-07-02  H.J. Lu  <hongjiu.lu@intel.com>
12613
12614         PR target/36669
12615         * config/libgcc-glibc.ver: Add %exclude.
12616         * config/m32r/libgcc-glibc.ver: Likwise.
12617         * config/s390/libgcc-glibc.ver: Likwise.
12618         * config/sh/libgcc-glibc.ver: Likwise.
12619         * config/sparc/libgcc-sparc-glibc.ver: Likwise.
12620
12621         * config/i386/libgcc-glibc.ver: New.
12622
12623         * config/i386/libgcc-x86_64-glibc.ver: Removed.
12624
12625 2008-07-02  H.J. Lu  <hongjiu.lu@intel.com>
12626
12627         * config.gcc: Remove i386/t-fprules-softfp64 soft-fp/t-softfp
12628         from tmake_file from i[34567]86-*-darwin*, x86_64-*-darwin*,
12629         i[34567]86-*-linux*, x86_64-*-linux*.  Add
12630         i386/t-fprules-softfp and soft-fp/t-softfp to tmake_file for
12631         i[34567]86-*-darwin*, x86_64-*-darwin*, i[34567]86-*-linux*,
12632         x86_64-*-linux*.  Add i386/t-linux to tmake_file for
12633         i[34567]86-*-linux*, x86_64-*-linux*.
12634
12635         * libgcc-std.ver: Add empty GCC_4.4.0.
12636
12637         * mkmap-symver.awk: Support multiple versions per symbol.
12638
12639         * config/i386/i386.c (ix86_init_builtins): Always define
12640         __builtin_fabsq and __builtin_copysignq with fallbacks.
12641         (ix86_expand_builtin): Emit normal call for __builtin_fabsq
12642         and __builtin_copysignq if SSE2 isn't available.
12643
12644         * config/i386/linux.h (LIBGCC2_HAS_TF_MODE): Defined.
12645         (LIBGCC2_TF_CEXT): Likwise.
12646         (TF_SIZE): Likwise.
12647
12648         * config/i386/linux64.h (LIBGCC2_HAS_TF_MODE): Defined as 1.
12649
12650         * config/i386/sfp-machine.h: Moved to libgcc.
12651
12652         * config/i386/sfp-machine.h: New.
12653         * config/i386/t-linux: Likwise.
12654
12655         * config/i386/t-darwin: Remove softfp_wrap_start and
12656         softfp_wrap_end.
12657         * config/i386/t-darwin64: Likewise.
12658
12659         * config/i386/t-fprules-softfp64: Renamed to ...
12660         * config/i386/t-fprules-softfp: This.
12661
12662         * config/i386/t-linux64: Remove SHLIB_MAPFILES, softfp_wrap_start
12663         and softfp_wrap_end.
12664
12665 2008-07-02  Jason Merrill  <jason@redhat.com>
12666
12667         * tree.c (ctor_to_list): Use FOR_EACH_CONSTRUCTOR_ELT.
12668
12669         * tree.c (ctor_to_list): New fn.
12670         * tree.h: Declare it.
12671         (CONSTRUCTOR_ELT): New macro.
12672         (CONSTRUCTOR_NELTS): New macro.
12673
12674 2008-07-02  Richard Guenther  <rguenther@suse.de>
12675
12676         * tree-ssa-structalias.c (struct variable_info): Reorder
12677         to fill padding on 64bit hosts.  Make collapsed_to an int.
12678         (get_varinfo_fc): Deal with that.
12679         (new_var_info): Likewise.
12680         (collapse_rest_of_var): Likewise.
12681
12682 2008-07-02  Joshua Sumali  <jsumali@redhat.com>
12683
12684         * doc/install.texi (--enable-java-home): Document.
12685         (--enable-aot-compile-rpm): Likewise.
12686         (--with-arch-directory): Likewise.
12687         (--with-os-directory): Likewise.
12688         (--with-origin-name): Likewise.
12689         (--with-arch-suffix): Likewise.
12690         (--with-jvm-root-dir): Likewise.
12691         (--with-jvm-jar-dir): Likewise.
12692         (--with-python-dir): Likewise.
12693
12694 2008-07-02  Richard Guenther  <rguenther@suse.de>
12695
12696         * tree-ssa-forwprop.c (can_propagate_from): Exclude loads
12697         from decls explicitly.  Merge operand checking from tuples.
12698
12699 2008-07-02  Martin Jambor  <mjambor@suse.cz>
12700
12701         * tree-switch-conversion.c: Included timevar.h which I forgot before.
12702
12703 2008-07-02  Martin Jambor  <mjambor@suse.cz>
12704
12705         * tree-switch-conversion.c: Included timevar.h
12706         (pass_convert_switch): Added a timevar id (TV_TREE_SWITCH_CONVERSION).
12707
12708         * timevar.def: Added TV_TREE_SWITCH_CONVERSION.
12709
12710 2008-07-02  Martin Jambor  <mjambor@suse.cz>
12711
12712         * tree-switch-conversion.c: Corrected various comments and
12713         whitespace issues
12714         (build_constructors): Fixed minor formatting mistakes.
12715
12716         * invoke.texi (Optimize Options): Corrected the
12717         switch-conversion-max-branch-ratio parameter.
12718
12719 2008-07-02  Mark Shinwell  <shinwell@codesourcery.com>
12720
12721         * final.c (asm_insn_count): Return zero for an empty asm body.
12722
12723 2008-07-02  Richard Guenther  <rguenther@suse.de>
12724
12725         * bitmap.h (bitmap_set_bit): Return bool.
12726         (bitmap_clear_bit): Likewise.
12727         * bitmap.c (bitmap_set_bit): Return if the bit changed.  Only
12728         write to the bitmap if it would.
12729         (bitmap_clear_bit): Likewise.
12730         * tree-ssa-structalias.c (add_implicit_graph_edge): Use
12731         bitmap_set_bit return value.
12732         (add_pred_graph_edge): Likewise.
12733         (add_graph_edge): Likewise.
12734         (do_sd_constraint): Likewise.
12735         (do_ds_constraint): Likewise.
12736
12737 2008-07-02  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
12738
12739         * config/alpha/alpha.c (alpha_need_linkage, alpha_use_linkage):
12740         Fix -Wc++-compat and/or -Wcast-qual warnings.
12741         * config/i386/netware.c (gen_stdcall_or_fastcall_decoration,
12742         gen_regparm_prefix): Likewise.
12743         * vmsdbgout.c (write_modbeg, lookup_filename,
12744         vmsdbgout_source_line, vmsdbgout_init): Likewise.
12745
12746 2008-07-02  Danny Smith  <dannysmith@users.sourceforge.net>
12747
12748         * config/i386/mingw32.h (TARGET_USE_JCR_SECTION): Undef to let
12749         defaults.h definition apply.
12750
12751 2008-07-01  Daniel Jacobowitz  <dan@codesourcery.com>
12752
12753         * function.c (assign_parm_remove_parallels): New.
12754         (assign_parm_setup_block_p): Do not return true for non-BLKmode
12755         PARALLELs.
12756         (assign_parm_setup_block): Do not handle them.
12757         (assign_parm_setup_reg, assign_parm_setup_stack): Call
12758         assign_parm_remove_parallels.
12759
12760 2008-07-01  Daniel Jacobowitz  <dan@codesourcery.com>
12761
12762         * c-typeck.c (convert_for_assignment): Use
12763         vector_targets_convertible_p.
12764         * c-common.c (vector_targets_convertible_p): New.
12765         * c-common.h (vector_targets_convertible_p): New prototype.
12766         * config/rs6000/rs6000.c (rs6000_is_opaque_type): Do not check
12767         opaque_p_V2SI_type_node.
12768
12769 2008-07-01  Steve Ellcey  <sje@cup.hp.com>
12770
12771         * config/ia64/ia64.c (ia64_cannot_force_const_mem): Do not allow
12772         RFmode constants.
12773
12774 2008-07-01  Uros Bizjak  <ubizjak@gmail.com>
12775
12776         * config/i386/i386.c (ix86_build_signbit_mask): Generate TImode and
12777         TFmode constants via two element DImode vector for hosts with
12778         HOST_BITS_PER_WIDE_INT < 64.
12779         (ix86_init_builtins): Define __builtin_fabsq and __builtin_copysignq
12780         also for HOST_BITS_PER_WIDE_INT < 64.
12781
12782 2008-07-01  Richard Guenther  <rguenther@suse.de>
12783
12784         PR tree-optimization/36666
12785         * tree-ssa-structalias.c (get_constraint_for_1): Declare.
12786         (get_constraint_exp_from_ssa_var): Split into ...
12787         (get_constraint_exp_for_temp): ... this ...
12788         (get_constraint_for_ssa_var): ... and that.
12789         Return constraint expressions for all touched sub-fields
12790         if the results address is not taken.
12791         (process_constraint): Remove assertion that aggregate
12792         assignments do not happen at this place.
12793         (get_constraint_for_component_ref): Add address_p argument.
12794         Return constraint expressions for all touched sub-fields
12795         if the results address is not taken.
12796         (do_deref): Use get_constraint_exp_for_temp.
12797         (get_constraint_for_1): Rename from ...
12798         (get_constraint_for): ... this.  Add the old function as wrapper.
12799         (do_structure_copy): Use get_constraint_for_1.
12800
12801 2008-07-01  Martin Jambor  <mjambor@suse.cz>
12802
12803         * Makefile.in (tree-switch-conversion.o): Add.
12804         (OBJS-common): Add tree-swtch-conversion.o.
12805         * passes.c (init_optimization_passes): Add pass_convert_switch.
12806         * tree-pass.h: (pass_convert_switch): Add.
12807         * tree-switch-conversion.c: New file.
12808         * gcc.dg/tree-ssa/cswtch.c: New testcase.
12809         * common.opt (ftree-cswtch): New option.
12810         * params.h (PARAM_SWITCH_CONVERSION_BRANCH_RATIO): New parameter.
12811         * params.def (PARAM_SWITCH_CONVERSION_BRANCH_RATIO): New parameter.
12812         * opts.c (decode_options): Set flag_tree_switch_conversion when
12813         optimization level is >= 2.
12814         * doc/invoke.texi (Optimize Options): Added description of
12815         -ftree-swtch-conversion and switch-conversion-max-branch-ratio.
12816
12817 2008-06-30  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
12818
12819         * config/darwin-driver.c (darwin_default_min_version): Fix
12820         -Wc++-compat warnings.
12821
12822 2008-06-30  Uros Bizjak  <ubizjak@gmail.com>
12823
12824         * config/i386/i386.md (*movti_rex64): Add "!" to "r" constraint
12825         of operand 0.
12826
12827 2008-06-30  Kenneth Zadeck <zadeck@naturalbridge.com>
12828
12829         * ifcvt.c (cond_move_process_if_block): Free vectors on false return.
12830
12831 2008-06-30  Kenneth Zadeck <zadeck@naturalbridge.com>
12832
12833         PR rtl-optimization/34744
12834         * df-scan.c (df_scan_free_ref_vec, df_scan_free_mws_vec): New macros.
12835         (df_scan_free_internal): Free data structures not
12836         allocated in storage pools.
12837         (df_mw_hardreg_chain_delete_eq_uses): Use df_scan_free_mws_vec.
12838         (df_refs_add_to_chains): Use df_scan_free_ref_vec and
12839         df_scan_free_mws_vec.
12840         * dse.c (dse_step6): Free offset_map_p and offset_map_n
12841         unconditionally.
12842
12843 2008-06-30  H.J. Lu  <hongjiu.lu@intel.com>
12844
12845         * config/i386/i386.c (contains_aligned_value_p): Return true
12846         for __float128.
12847         (ix86_function_arg_boundary): Return its natural boundary
12848         for __float128.
12849         (return_in_memory_32): Don't check TDmode.
12850         (ix86_split_to_parts): Support splitting into 4 parts and
12851         support TFmode for 32bit target.
12852         (ix86_split_long_move): Support splitting into 4 parts.
12853         (bdesc_args): Enable IX86_BUILTIN_FABSQ and IX86_BUILTIN_COPYSIGNQ
12854         for SSE2.
12855         (ix86_init_mmx_sse_builtins): Move __float80 and __float128 to ...
12856         (ix86_init_builtins): Here.
12857         (ix86_scalar_mode_supported_p): Always return true for TFmode.
12858         (ix86_c_mode_for_suffix): Always return TFmode and XFmode for
12859         'q' and 'w', respectively.
12860
12861         * config/i386/i386.md (movtf): Check TARGET_SSE2 instead of
12862         TARGET_64BIT.
12863         (movtf_internal): Likewise.
12864         (<code>tf2): Likewise.
12865         (*absnegtf2_sse): Likewise.
12866         (copysign<mode>3): Likewise.
12867         (copysign<mode>3_const): Likewise.
12868         (copysign<mode>3_var): Likewise.
12869         (define_split UNSPEC_COPYSIGN): Likewise.
12870         * config/i386/sse.md (*nandtf3): Likewise.
12871         (<code>tf3): Likewise.
12872         (*<code>tf3): Likewise.
12873
12874 2008-06-30  Joey Ye  <joey.ye@intel.com>
12875             H.J. Lu  <hongjiu.lu@intel.com>
12876
12877         * global.c (compute_regsets): Set frame_pointer_needed here.
12878         * reload1.c (init_elim_table): Don't set frame_pointer_needed here.
12879
12880 2008-06-30  Aaron W. LaFramboise  <aaronavay62@aaronwl.com>
12881
12882         * doc/install.texi (specific): Expand Windows build notes.
12883
12884 2008-06-30  Ira Rosen  <irar@il.ibm.com>
12885
12886         PR tree-optimization/36648
12887         * tree-vect-transform.c (vect_do_peeling_for_loop_bound): Divide
12888         number of prolog iterations by step. Fix the comment.
12889
12890 2008-06-30  Richard Guenther  <rguenther@suse.de>
12891
12892         PR middle-end/36671
12893         * tree-ssa-structalias.c (handle_lhs_call): Add flags argument,
12894         handle calls from ECF_MALLOC functions.
12895         (handle_pure_call): ECF_MALLOC functions do not return
12896         call-used memory.
12897         (find_func_aliases): Handle all calls, adjust calls to handle_lhs_call.
12898
12899 2008-06-29  Andreas Schwab  <schwab@suse.de>
12900
12901         * config/m68k/m68k.c (print_operand): Always print a float
12902         constant in hex.
12903         * config/m68k/m68k.h (ASM_OUTPUT_FLOAT_OPERAND)
12904         (ASM_OUTPUT_DOUBLE_OPERAND, ASM_OUTPUT_LONG_DOUBLE_OPERAND):
12905         Remove macros.
12906
12907         * config/rs6000/x-linux64: Remove never used file.
12908
12909 2008-06-29  Richard Guenther  <rguenther@suse.de>
12910
12911         * tree-ssa-structalias.h (compute_points_to_sets): Adjust
12912         prototype.
12913         (struct alias_info): Move ...
12914         * tree-ssa-alias.c: ... here.
12915         (update_alias_info): Declare.
12916         (compute_may_aliases): Call it.
12917         (update_alias_info): New function.
12918         * tree-ssa-structalias.c (update_alias_info): Move ...
12919         * tree-ssa-alias.c (update_alias_info_1): ... here.
12920         * tree-ssa-structalias.c (process_constraint_1): Remove
12921         unused from_call argument.  Rename to ...
12922         (process_constraint): ... this.  Delete old wrapper.
12923         (make_constraint_to): Adjust callers.
12924         (handle_const_call): Likewise.
12925         (handle_pure_call): Likewise.
12926         (init_base_vars): Likewise.
12927         (handle_lhs_call): Likewise.  Remove unnecessary constraint.
12928         (find_func_aliases): We don't need structure copies for
12929         complex types.
12930         (make_constraint_from_anything): Remove.
12931         (create_variable_info_for): For globals make constraints
12932         from escaped, not from anything.
12933         (compute_points_to_sets): Do not call update_alias_info.
12934         (ipa_pta_execute): Use make_constraint_from.
12935
12936 2008-06-29  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
12937
12938         * Makefile.in (CXX_COMPAT_WARN, cxx_compat_warn): Delete.
12939         (bitmap.o-warn, dominance.o-warn): New.
12940         * configure.ac (cxx_compat_warn): Delete.
12941         (loose_warn): Add -Wcast-qual and -Wc++-compat.
12942         * system.h: Remove #pragma diagnostic for -Wcast-qual and
12943         -Wc++-compat.
12944         * configure: Regenerate.
12945
12946         * optabs.c (libfunc_decl_hash, libfunc_decl_eq): Fix -Wcast-qual
12947         warnings.
12948
12949 2008-06-29  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
12950
12951         * alloc-pool.c (create_alloc_pool): Fix -Wc++-compat warnings.
12952         * df-scan.c (df_notes_rescan): Likewise.
12953         * ggc-page.c (set_page_table_entry): Likewise.
12954         * intl.c (gcc_gettext_width): Likewise.
12955         * varasm.c (get_unnamed_section, get_noswitch_section,
12956         get_section): Likewise.
12957
12958 2008-06-28  Andrew Jenner  <andrew@codesourcery.com>
12959
12960         * regrename.c (build_def_use): Don't copy RTX.
12961
12962 2008-06-28  Sandra Loosemore  <sandra@codesourcery.com>
12963
12964         * doc/extend.texi (Variable Attributes): Use @ref instead of @xref.
12965         (Type Attributes): Fix nesting of @table and @subsection.  Adjust
12966         punctuation.  Use @ref instead of @xref.
12967         (Function Names): Remove stray @display/@end display.
12968         (C++ Attributes): Use @ref instead of @xref.
12969         (Deprecated Features): Fix punctuation around @xref.
12970         (Backwards Compatibility): Likewise.
12971         * doc/rtl.texi (Incdec): Remove stray @table/@end table.
12972
12973 2008-06-28  Joseph Myers  <joseph@codesourcery.com>
12974
12975         * config/rs6000/predicates.md (easy_fp_constant): Reject TFmode
12976         constants for E500 double.
12977
12978 2008-06-28  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
12979
12980         * doc/rtl.texi (const_vector): Document const_fixed as legitimate
12981         element type of const_vector.
12982
12983 2008-06-28  Uros Bizjak  <ubizjak@gmail.com>
12984
12985         * config/i386/i386.md (addti3, adddi3, addsi3, addhi3, addqi3):
12986         Remove FLAGS_REG clobber from expander pattern.
12987         (subti3, subdi3, subsi3, subhi3, subqi3): Ditto.
12988         (anddi3, andsi3, andhi3, andqi3): Ditto.
12989         (iordi3, iorsi3, iorhi3, iorqi3): Ditto.
12990         (xordi3, xorsi3, xorhi3, xorqi3): Ditto.
12991         (negti2, negdi2, negsi2, neghi2, negqi2): Ditto.
12992         (ashlsi3, ashlhi3, ashlqi3): Ditto.
12993         (ashrsi3, ashrhi3, ashrqi3): Ditto.
12994         (lshrsi3, lshrhi3, lshrqi3): Ditto.
12995         (rotldi3, rotlsi3, rotlhi3, rotlqi3): Ditto.
12996         (rotrdi3, rotrsi3, rotrhi3, rotrqi3): Ditto.
12997
12998 2008-06-28  Richard Guenther  <rguenther@suse.de>
12999
13000         * tree-ssa-structalias.c (callused_id, var_callused,
13001         callused_tree): Add.
13002         (handle_pure_call): New function.
13003         (find_func_aliases): Call it.
13004         (find_what_p_points_to): Handle the call-used set.
13005         (clobber_what_escaped): Likewise.
13006         (compute_call_used_vars): New function.
13007         (init_base_vars): Init the call-used variable.
13008         (do_sd_constraint): Do not propagate the solution from CALLUSED
13009         but use CALLUSED as a placeholder.
13010         (solve_graph): Likewise.
13011         * tree-flow-inline.h (gimple_call_used_vars): New function.
13012         * tree-flow.h (struct gimple_df): Add call_used_vars bitmap.
13013         (compute_call_used_vars): Declare.
13014         * tree-ssa-alias.c (set_initial_properties): Call
13015         compute_call_used_vars.
13016         (reset_alias_info): Clear call-used variables.
13017         (add_call_clobber_ops): Assert we are not called for const/pure
13018         functions.  Remove handling of them.
13019         (add_call_read_ops): Handle pure functions by adding the
13020         call-used set of variables as VUSEs.
13021         * tree-ssa.c (init_tree_ssa): Allocate call-used bitmap.
13022         (delete_tree_ssa): Free it.
13023         * tree-dfa.c (remove_referenced_var): Clear the var from the
13024         call-used bitmap.
13025
13026 2008-06-28  Kai Tietz  <kai.tietz@onevision.com>
13027
13028         * tree.c (build_varargs_function_type_list): New.
13029         (build_function_type_list_1): New.
13030         (build_function_type_list): Use build_function_type_list_1.
13031         * tree.h (build_varargs_function_type_list): New.
13032
13033 2008-06-28  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
13034
13035         PR target/34856
13036         * config/spu/spu.c (spu_builtin_splats): Do not generate
13037         invalid CONST_VECTOR expressions.
13038         (spu_expand_vector_init): Likewise.
13039
13040 2008-06-28  Richard Sandiford  <rdsandiford@googlemail.com>
13041
13042         * optabs.c (libfunc_decls): New variable.
13043         (libfunc_decl_hash, libfunc_decl_eq): New functions.
13044         (init_one_libfunc): Reuse decls and SYMBOL_REFs when asked
13045         for the same function twice.
13046
13047 2008-06-27  Uros Bizjak  <ubizjak@gmail.com>
13048
13049         * config/i386/i386.md (ashlti3, ashrti3, lshrti3): Expand using
13050         ix86_expand_binary_operator directly.
13051         (*ashlti3_1): Rename from ashlti3_1.  Use nonmemory_operand predicate
13052         for operand 2.
13053         (*ashrti3_1): Ditto.
13054         (*lshrti3_1): Ditto.
13055         (*ashlti3_2, *ashrti3_2, *lshrti3_2): Remove insn patterns.
13056         (ashlti, ashrti and lshrti splitters): Handle nonmemory operand 2
13057         using only one splitter.  Conditionaly execute splitter before or
13058         after peephole2 pass.
13059         (ashlti, ashrti and lshrti peephole2): Define peephole2 patterns.
13060         (x86_shld): Rename from x86_shld_1.  Compress operand 2 constraints.
13061         Use only one alternative in asm template.
13062         (x86_64_shld): Compress operand 2 constraints. Use only one alternative
13063         in asm template.
13064         (*ashldi3_cmp_rex64): Use const_1_to_63_operand operand predicate and
13065         "J" operand constraint for operand 2.
13066         (*ashldi3_cconly_rex64): Ditto.
13067         (*ashrdi3_cmp_rex64): Ditto.
13068         (*ashrdi3_cconly_rex64): Ditto.
13069         (*lshrdi3_cmp_rex64): Ditto.
13070         (*lshrdi3_cconly_rex64): Ditto.
13071         * config/i386/predicates.md (const_1_to_63_operand): New predicate.
13072         * config/i386/i386.md (print_operand) ['s']: Print ", " using fputs.
13073         (split_ashr, split_ashl, split_lshr): Use gen_x86_shrd instead of
13074         gen_x86_shrd_1.
13075
13076 2008-06-27  Jakub Jelinek  <jakub@redhat.com>
13077
13078         * gimplify.c (omp_is_private): Don't return true if decl is not
13079         already private on #pragma omp for or #pragma omp parallel for.
13080
13081         PR debug/36617
13082         * tree-cfg.c (struct move_stmt_d): Replace block field with
13083         orig_block and new_block fields.
13084         (move_stmt_r): Only set TREE_BLOCK to p->new_block if
13085         if it used to be NULL, p->orig_block or if p->orig_block is NULL.
13086         (move_block_to_fn): Replace vars_map and new_label_map arguments
13087         with struct move_stmt_d pointer.
13088         (replace_block_vars_by_duplicates): New function.
13089         (move_sese_region_to_fn): Add ORIG_BLOCK argument.  Adjust
13090         move_block_to_fn caller.  If ORIG_BLOCK is non-NULL, move over
13091         all subblocks of ORIG_BLOCK to the new function.  Call
13092         replace_block_vars_by_duplicates.
13093         * tree-flow.h (move_sese_region_to_fn): Adjust prototype.
13094         * omp-low.c (expand_omp_taskreg): Set TREE_USED on DECL_INITIAL
13095         BLOCK of the new function.  Adjust move_sese_region_to_fn caller.
13096         Prune vars with original DECL_CONTEXT from child_cfun->local_decls.
13097         (expand_omp): Temporarily set input_location to the location of
13098         region's controlling stmt.
13099         (lower_omp_sections, lower_omp_for): Add a BLOCK into outermost
13100         BIND_EXPR, push ctx->block_vars and gimplification vars into
13101         the BIND_EXPR and its block's BLOCK_VARS instead of directly
13102         into dest function.
13103         (lower_omp_single): Set TREE_USED on the BIND_EXPR's BLOCK if
13104         there are any BLOCK_VARS.
13105         (lower_omp_taskreg): Set BLOCK on a BIND_EXPR containing the
13106         OMP_PARALLEL or OMP_TASK stmt.
13107         (lower_omp): Save and restore input_location around the lower_omp_1
13108         call.
13109
13110 2008-06-27  Richard Guenther  <rguenther@suse.de>
13111
13112         PR tree-optimization/36400
13113         PR tree-optimization/36373
13114         PR tree-optimization/36344
13115         * tree-ssa-structalias.c (var_escaped, escaped_tree, escaped_id,
13116         var_nonlocal, nonlocal_tree, nonlocal_id): New globals
13117         (update_alias_info): Remove call clobbering code.
13118         (make_constraint_to): New helper function.
13119         (make_escape_constraint): Likewise.
13120         (handle_rhs_call): Use it on all pointer containing arguments.
13121         Also mark the static chain escaped.
13122         (handle_lhs_call): Make constraints from NONLOCAL and ESCAPED
13123         instead of ANYTHING.
13124         (make_constraint_from): New helper split out from ...
13125         (make_constraint_from_anything): ... here.
13126         (find_func_aliases): Add constraints for escape sites.
13127         (intra_create_variable_infos): Make constraints from NONLOCAL
13128         for parameters.
13129         (find_what_p_points_to): Interpret NONLOCAL and ESCAPED the same
13130         as ANYTHING.
13131         (clobber_what_p_points_to): Remove.
13132         (clobber_what_escaped): New function.
13133         (init_base_vars): Init NONLOCAL and ESCAPED.
13134         (do_sd_constraint): Do not propagate the solution from ESCAPED
13135         but use ESCAPED as a placeholder.
13136         (solve_graph): Likewise.
13137         * tree-flow.h (clobber_what_p_points_to): Remove.
13138         (clobber_what_escaped): Declare.
13139         * tree-ssa-alias.c (set_initial_properties): Call it.
13140         Remove code clobbering escaped pointers.
13141
13142 2008-06-27  Richard Sandiford  <rdsandiford@googlemail.com>
13143
13144         * function.c (allocate_struct_function): Only allocate a unique
13145         funcdef_no if the decl is nonzero.
13146
13147 2008-06-27  Richard Sandiford  <rdsandiford@googlemail.com>
13148
13149         * config/mips/mips-protos.h (mips_split_const_insns): Declare.
13150         * config/mips/mips.c (mips_split_const_insns): New function.
13151         * config/mips/mips.md (move_type): New attribute.
13152         (mode): Move attribute definition earlier in file.  Add "TI" and "TF".
13153         (dword_mode): New attribute.
13154         (type): Avoid long line.  Map "move_type"s to "type"s,
13155         choosing "multi" for doubleword moves if appropriate.
13156         Swap MTC/MFC comments to match their declaration order.
13157         (extended_mips16): Default to "yes" if "move_type" is "sll0",
13158         "type" is "branch" or "jal" is "direct".
13159         (length): Handle "extended_mips16" first.  Make the default
13160         "0" for "ghost" instructions.  Set the length from "move_type".
13161         (truncdisi2, truncdihi2, truncdiqi2): Use "move_type" instead
13162         of "type", with "sll0" for the register alternative.  Remove the
13163         "extended_mips16" attribute.
13164         (zero_extendsidi2, *clear_upper32): Use "move_type" instead
13165         of "type", with "shift_shift" for the register alternative.
13166         Remove the "length" attribute.
13167         (*extend<SHORT:mode><GPR:mode>2, *extendqihi2): Likewise.
13168         (*zero_extend<SHORT:mode><GPR:mode>2): Use "move_type" instead
13169         of "type", with "andi" for the register alternative.
13170         (*zero_extendqihi2): Likewise.
13171         (*zero_extend<SHORT:mode><GPR:mode>2_mips16e): Use a "move_type"
13172         of "andi" instead of a "type" of "arith".
13173         (*zero_extend<SHORT:mode><GPR:mode>2_mips16): Use "move_type"
13174         instead of "type".
13175         (*zero_extendqihi2_mips16, mov_<load>l, mov_<load>r, mov_<store>l)
13176         (mov_<store>r, *mov<mode>_ra): Likewise.
13177         (extendsidi2): Use "move_type" instead of "type", with "move"
13178         for the register alternative.
13179         (*extend<SHORT:mode><GPR:mode>2_mips16e): Use "move_type" instead
13180         of "type", with "signext" for the register alternative.
13181         (*extend<SHORT:mode><GPR:mode>2_se<SHORT:size>): Likewise.
13182         (*extendqihi2_mips16e, *extendqihi2_seb): Likewise.
13183         (fix_truncdfsi2_insn, fix_truncsfsi2_insn, fix_truncdfdi2)
13184         (fix_truncsfdi2, floatsidf2, floatdidf2, floatsisf2, floatdisf2)
13185         (floatdisf2, *branch_equality<mode>_mips16): Likewise.
13186         (unnamed branch insn): Likewise.
13187         (*movdi_gp32_fp64): Fold into...
13188         (*movdi_32bit): ...here.
13189         (*movdf_hardfloat_64bit, *movdf_hardfloat_32bit): Combine into...
13190         (*movdf_hardfloat): ...this new pattern.
13191         (*movdf_softfloat): Remove redundant FPR alternatives.
13192         (*movti, *movti_mips16, *movtf, *movtf_mips16): Add "mode" attributes.
13193         (*movv2sf_hardfloat_64bit, *movv2sf_hardfloat_32bit): Combine into...
13194         (*movv2sf): ...this new pattern.  Use "DF" rather than "SF" for
13195         the "move" attribute.
13196         (*movdi_32bit): Use "move_type" instead of "type" and remove the
13197         "length" attribute.  Use "fpload" and "fpstore" instead of "load"
13198         and "store" for COP loads and stores.
13199         (*movdi_32bit_mips16, *movdi_64bit, *movsi_internal, movcc)
13200         (*movhi_internal, *movhi_mips16, *movqi_internal, *movqi_mips16)
13201         (*movsf_hardfloat, *movsf_softfloat, *movsi_mips16, *movdf_hardfloat)
13202         (*movdf_softfloat, *movdf_mips16, *movti, *movti_mips16, *movtf)
13203         (*movtf_mips16, *movv2sf): Likewise.
13204         (mfhi<GPR:mode>_<HILO:mode>, mflo<GPR:mode>_<HILO:mode>)
13205         (load_low<mode>, load_high<mode>, store_word<mode>, mthc1<mode>)
13206         (mfhc1<mode>): Use "move_type" instead of "move".
13207         (*low<mode>_mips16): Use "extended_mips16" instead of "length".
13208         (loadgp_blockage): Remove the "length" attribute.
13209         (blockage, set_got_version, update_got_version): Likewise.
13210         (call_internal): Remove the "extended_mips16" attribute.
13211         (call_value_internal, call_value_multiple_internal): Likewise.
13212         * config/mips/loongson.md (mov<mode>_internal): Use "move_type"
13213         instead of "move".
13214         * config/mips/mips-dsp.md (mips_lbux, mips_lhx, mips_lwx): Remove
13215         the "length" attribute.
13216
13217 2008-06-27  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
13218
13219         * c-format.c (handle_format_attribute): Fix -Wc++-compat and/or
13220         -Wcast-qual warnings.
13221         * c-pragma.c (dpm_eq, handle_pragma_push_macro,
13222         handle_pragma_pop_macro): Likewise.
13223         * collect2.c (resolve_lib_name): Likewise.
13224         * config/arc/arc.c (arc_init): Likewise.
13225         * config/arm/arm.c (neon_builtin_compare,
13226         locate_neon_builtin_icode): Likewise.
13227         * config/arm/pe.c (arm_mark_dllexport, arm_pe_unique_section): Likewise.
13228         * config/bfin/bfin.c (bfin_init_machine_status,
13229         bfin_optimize_loop): Likewise.
13230         * config/bfin/bfin.h (TARGET_CPU_CPP_BUILTINS): Likewise.
13231         * config/cris/cris.c (cris_init_expanders): Likewise.
13232         * config/darwin-c.c (frameworks_in_use, add_framework): Likewise.
13233         * config/darwin.c (machopic_indirection_eq,
13234         machopic_indirection_name, machopic_output_indirection): Likewise.
13235         * config/frv/frv.c (frv_init_machine_status, frv_compare_insns,
13236         frv_io_check_address, frv_io_handle_set, frv_io_handle_use_1,
13237         frv_optimize_membar): Likewise.
13238         * config/i386/cygwin.h (mingw_scan,
13239         GCC_DRIVER_HOST_INITIALIZATION): Likewise.
13240         * config/i386/cygwin1.c (mingw_scan): Likewise.
13241         * config/i386/i386.c (machopic_output_stub): Likewise.
13242         * config/i386/winnt.c (gen_stdcall_or_fastcall_suffix,
13243         i386_pe_unique_section): Likewise.
13244         * config/ia64/ia64.c (ia64_init_machine_status,
13245         ia64_h_i_d_extended, get_free_bundle_state, bundling, ia64_reorg):
13246         Likewise.
13247         * config/iq2000/iq2000.c, iq2000_init_machine_status): Likewise.
13248         * config/m68hc11/m68hc11.c (m68hc11_encode_label): Likewise.
13249         * config/m68k/m68k.c (m68k_handle_option,
13250         m68k_sched_md_init_global): Likewise.
13251         * config/mcore/mcore.c (mcore_mark_dllexport, mcore_mark_dllimport,
13252         mcore_unique_section): Likewise.
13253         * config/mips/mips.c (mips_block_move_straight,
13254         mips16_rewrite_pool_refs, mips_sim_wait_regs_2, mips_sim_record_set):
13255         Likewise.
13256         * config/mmix/mmix.c (mmix_init_machine_status,
13257         mmix_encode_section_info): Likewise.
13258         * config/pa/pa.c (pa_init_machine_status, hppa_encode_label): Likewise.
13259         * config/rs6000/rs6000.c (rs6000_init_machine_status,
13260         print_operand_address, output_toc, redefine_groups,
13261         rs6000_elf_encode_section_info, machopic_output_stub): Likewise.
13262         * config/s390/s390.c (s390_init_machine_status): Likewise.
13263         * config/score/score.c (score_block_move_straight,
13264         score_block_move_loop_body): Likewise.
13265         * config/sparc/sparc.c (sparc_init_machine_status): Likewise.
13266         * config/xtensa/xtensa.c (xtensa_init_machine_status): Likewise.
13267         * emit-rtl.c (find_auto_inc): Likewise.
13268         * gcc.c (translate_options, process_command): Likewise.
13269         * reorg.c (dbr_schedule): Likewise.
13270         * sdbout.c (sdbout_start_source_file, sdbout_init): Likewise.
13271         * xcoffout.c (xcoffout_declare_function): Likewise.
13272
13273 2008-06-27  Daniel Berlin  <dberlin@dberlin.org>
13274
13275         * tree-ssa-structalias.c (find_func_aliases): Trivial fix to get
13276         ipa-pta working again.
13277
13278 2008-06-27  David Edelsohn  <edelsohn@gnu.org>
13279
13280         * config/rs6000/t-aix52: Append large data option to LDFLAGS for
13281         genautomata.
13282
13283 2008-06-27  Edmar Wienskoski  <edmar@freescale.com>
13284
13285         * config.gcc (powerpc*-*-*): Add new core e500mc.
13286         * config/rs6000/e500mc.md: New file.
13287         * config/rs6000/rs6000.c (processor_costs): Add new costs for
13288         e500mc.
13289         (rs6000_override_options): Add e500mc case to
13290         processor_target_table. Altivec and Spe options not allowed
13291         with e500mc. Add isel instruction to e500mc by
13292         default. Initialize rs6000_cost for e500mc.
13293         (rs6000_issue_rate): Set issue rate for e500mc.
13294         * config/rs6000/rs6000.h (processor_type): Add
13295         PROCESSOR_PPCE500MC.
13296         (ASM_CPU_SPEC): Add e500mc.
13297         Set TARGET_ISEL to rs6000_isel.
13298         * config/rs6000/e500.h: Remove redefinition of TARGET_ISEL.
13299         (CHECK_E500_OPTIONS): Remove TARGET_ISEL.
13300         * config/rs6000/rs6000.md (define_attr "cpu"): Add ppce500mc.
13301         Include e500mc.md.
13302         * doc/invoke.texi: Add e500mc to list of cpus.
13303
13304 2008-06-27  Laurynas Biveinis  <laurynas.biveinis@gmail.com>
13305
13306         PR c/34867
13307         * c-lex.c (lex_charconst): Initialize unsignedp.
13308
13309 2008-06-27  Olivier Hainque  <hainque@adacore.com>
13310
13311         * gimplify.c (gimplify_modify_expr_to_memset): Assert our
13312         documented assumptions.
13313
13314 2008-06-26  H.J. Lu  <hongjiu.lu@intel.com>
13315
13316         * dwarf2out.c: Remove trailing white spaces.  Break long line
13317         in comments.
13318
13319 2008-06-26  Richard Sandiford  <rdsandiford@googlemail.com>
13320
13321         * libfuncs.h (LTI_synchronize): New libfunc_index.
13322         (synchronize_libfunc): Declare.
13323         * builtins.c (expand_builtin_synchronize): Consider using
13324         synchronize_libfunc before falling back on an asm blockage.
13325         * config/mips/mips.c: Include libfuncs.h
13326         (mips_init_libfuncs): Initialize synchronize_libfunc for TARGET_MIPS16.
13327
13328 2008-06-26  Nathan Froyd  <froydnj@codesourcery.com>
13329
13330         * config/rs6000/rs6000.c (emit_allocate_stack): Add copy_r11
13331         parameter.  Copy stack_reg to r11 where appropriate.
13332         (no_global_regs_above): Add gpr parameter.
13333         (rs6000_stack_info): Only add padding for SPE save area if we
13334         are saving SPE GPRs and CR.
13335         (saveres_routine_syms): New variable.
13336         (FIRST_SAVRES_REGISTER, LAST_SAVRES_REGISTER, N_SAVRES_REGISTERS):
13337         Define.
13338         (rs6000_savres_routine_sym): New function.
13339         (rs6000_emit_stack_reset, rs6000_restore_saved_cr): New functions,
13340         split out of...
13341         (rs6000_emit_epilogue): ...here.  Use rs6000_use_multiple_p and
13342         rs6000_savres_strategy.  Restore GPRs out-of-line if appropriate.
13343         Tweak FPR out-of-line saving.
13344         (rs6000_make_savres_rtx): New function.
13345         (rs6000_use_multiple_p): New function.
13346         (rs6000_savres_strategy): New function.
13347         (rs6000_emit_prologue): Use rs6000_savres_strategy.  Save GPRs
13348         out-of-line if appropriate.
13349         * config/rs6000/sysv4.h (FP_SAVE_INLINE): Save FPRs out-of-line
13350         if we are optimizing for size.
13351         (GP_SAVE_INLINE): Define.
13352         (SAVE_FP_SUFFIX, RESTORE_FP_SUFFIX): Only use _l on 64-bit targets.
13353         * config/rs6000/darwin.h (GP_SAVE_INLINE): Define.
13354         * config/rs6000/aix.h (GP_SAVE_INLINE): Define.
13355         * config/rs6000/rs6000.md (*save_gpregs_<mode>): New insn.
13356         (*save_fpregs_<mode>): Add use of r11.
13357         (*restore_gpregs_<mode>): New insn.
13358         (*return_and_restore_gpregs_<mode>): New insn.
13359         (*return_and_restore_fpregs_<mode>): Adjust to clobber LR and
13360         use r11.
13361         * config/rs6000/spe.md (*save_gpregs_spe): New insn.
13362         (*restore_gpregs_spe): New insn.
13363         (*return_and_restore_gpregs_spe): New insn.
13364         * config/rs6000/predicates.md (save_world_operation): Fix check.
13365
13366 2008-06-26  Steven Bosscher  <steven@gcc.gnu.org>
13367
13368         * tree-into-ssa (insert_phi_nodes_for): 'var' must be a DECL at
13369         this point, so assert that.
13370
13371 2008-06-26  Steven Bosscher  <steven@gcc.gnu.org>
13372
13373         * cfganal.c: Include vec.h and vecprim.h.
13374         (compute_idf): Import from...
13375         * tree-into-ssa (compute_idf): ...here.
13376         * basic-block.h (compute_idf): Export.
13377
13378 2008-06-26  Joseph Myers  <joseph@codesourcery.com>
13379
13380         * c-decl.c (merge_decls): Use !current_function_decl to check for
13381         extern declaration of C99 inline function being at file scope.
13382
13383 2008-06-25  John David Anglin  <dave.anglin@gcc-cnrc.gc.ca>
13384
13385         * config.gcc (hppa[12]*-*-hpux10*): Don't use fixproto.
13386
13387 2008-06-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
13388
13389         * alias.c (record_alias_subset, init_alias_analysis): Fix
13390         -Wc++-compat and/or -Wcast-qual warnings.
13391         * attribs.c (lookup_attribute_spec): Likewise.
13392         * bb-reorder.c (find_traces, rotate_loop, find_traces_1_round,
13393         copy_bb, connect_traces,
13394         find_rarely_executed_basic_blocks_and_cr): Likewise.
13395         * bt-load.c (find_btr_def_group, add_btr_def, new_btr_user,
13396         note_btr_set, migrate_btr_defs): Likewise.
13397         * builtins.c (result_vector, expand_builtin_memcpy,
13398         expand_builtin_mempcpy_args, expand_builtin_strncpy,
13399         builtin_memset_read_str, expand_builtin_printf,
13400         fold_builtin_memchr, rewrite_call_expr, fold_builtin_printf):
13401         Likewise.
13402         * caller-save.c (mark_set_regs): Likewise.
13403         * calls.c (expand_call, emit_library_call_value_1): Likewise.
13404         * cgraph.c (cgraph_edge): Likewise.
13405         * combine.c (likely_spilled_retval_1): Likewise.
13406         * coverage.c (htab_counts_entry_hash, htab_counts_entry_eq,
13407         htab_counts_entry_del, get_coverage_counts): Likewise.
13408         * cselib.c (new_elt_list, new_elt_loc_list, entry_and_rtx_equal_p,
13409         new_cselib_val): Likewise.
13410         * dbgcnt.c (dbg_cnt_process_opt): Likewise.
13411         * dbxout.c (dbxout_init, dbxout_type, output_used_types_helper):
13412         Likewise.
13413         * df-core.c (df_compact_blocks): Likewise.
13414         * df-problems.c (df_grow_bb_info, df_chain_create): Likewise.
13415         * df-scan.c (df_grow_reg_info, df_ref_create,
13416         df_insn_create_insn_record, df_insn_rescan, df_notes_rescan,
13417         df_ref_compare, df_ref_create_structure, df_bb_refs_record,
13418         df_record_entry_block_defs, df_record_exit_block_uses,
13419         df_bb_verify): Likewise.
13420         * df.h (DF_REF_EXTRACT_WIDTH_CONST, DF_REF_EXTRACT_OFFSET_CONST,
13421         DF_REF_EXTRACT_MODE_CONST): New.
13422         * dominance.c (get_immediate_dominator, get_dominated_by,
13423         nearest_common_dominator, root_of_dom_tree,
13424         iterate_fix_dominators, first_dom_son, next_dom_son): Fix
13425         -Wc++-compat and/or -Wcast-qual warnings.
13426         * dse.c (clear_alias_set_lookup, get_group_info, gen_rtx_MEM,
13427         record_store, replace_read, check_mem_read_rtx, scan_insn,
13428         dse_step1, dse_record_singleton_alias_set): Likewise.
13429         * dwarf2asm.c (dw2_force_const_mem): Likewise.
13430
13431 2008-06-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
13432
13433         * dwarf2out.c (new_cfi, queue_reg_save, dwarf2out_begin_prologue,
13434         dwarf2out_frame_init, new_loc_descr, new_die, lookup_decl_die,
13435         lookup_decl_loc, add_var_loc_to_decl, compute_section_prefix,
13436         assign_symbol_names, htab_cu_hash, htab_cu_eq, htab_cu_del,
13437         build_abbrev_table, new_loc_list, output_comp_unit, add_arange,
13438         add_ranges_num, add_ranges_by_labels, file_info_cmp,
13439         file_name_acquire, output_file_names, add_const_value_attribute,
13440         premark_used_types_helper, file_table_eq, file_table_hash,
13441         lookup_filename, dwarf2out_var_location, dwarf2out_source_line,
13442         dwarf2out_init, file_table_relative_p): Fix -Wc++-compat and/or
13443         -Wcast-qual warnings.
13444         * ebitmap.c (ebitmap_array_grow, ebitmap_array_init,
13445         ebitmap_alloc, ebitmap_ior, ebitmap_and_compl): Likewise.
13446         * emit-rtl.c (get_mem_attrs, get_reg_attrs, gen_rtvec,
13447         gen_reg_rtx, start_sequence, init_emit): Likewise.
13448         * et-forest.c (et_new_occ, et_new_tree): Likewise.
13449         * except.c (init_eh_for_function, gen_eh_region,
13450         remove_unreachable_regions, add_ehl_entry, duplicate_eh_regions_1,
13451         arh_to_landing_pad, arh_to_label, add_action_record,
13452         add_call_site, switch_to_exception_section): Likewise.
13453         * expmed.c (synth_mult): Likewise.
13454         * expr.c (gen_group_rtx, emit_group_load, emit_group_store,
13455         store_expr): Likewise.
13456         * final.c (shorten_branches, final_scan_insn, debug_queue_symbol):
13457         Likewise.
13458         * function.c (assign_stack_temp_for_type,
13459         allocate_struct_function, match_asm_constraints_1): Likewise.
13460         * gcov-io.c (gcov_allocate): Likewise.
13461         * gcse.c (GNEW, GCNEW, GNEWVEC, GCNEWVEC, GRESIZEVEC, GNEWVAR,
13462         GCNEWVAR, GRESIZEVAR, GOBNEW, GOBNEWVAR): New.
13463         (gcse_main, alloc_gcse_mem, alloc_gcse_mem, alloc_reg_set_mem,
13464         record_one_set, insert_expr_in_table, insert_set_in_table,
13465         dump_hash_table, compute_hash_table_work, alloc_hash_table,
13466         pre_ldst_expr_hash, pre_ldst_expr_eq, find_rtx_in_ldst,
13467         reg_set_info, reg_clear_last_set): Fix -Wc++-compat and/or
13468         -Wcast-qual warnings.
13469
13470 2008-06-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
13471
13472         * cse.c (approx_reg_cost_1, cse_insn): Fix -Wc++-compat and/or
13473         -Wcast-qual warnings.
13474         * gcc.c (process_command): Likewise.
13475         * genattrtab.c (oballoc): Use XOBNEW.
13476         (oballocvec): Define.
13477         (attr_hash_add_rtx, attr_hash_add_string, attr_string,
13478         get_attr_value, fill_attr, make_length_attrs, gen_attr, gen_insn,
13479         gen_delay, find_attr, gen_insn_reserv, gen_bypass_1): Fix
13480         -Wc++-compat and/or -Wcast-qual warnings.
13481         * genautomata.c (XCREATENODE, XCREATENODEVEC, XCREATENODEVAR,
13482         XCOPYNODE, XCOPYNODEVEC, XCOPYNODEVAR): New.
13483         (gen_cpu_unit, gen_query_cpu_unit, gen_bypass, gen_excl_set,
13484         gen_presence_absence_set, gen_automaton, gen_regexp_el,
13485         gen_regexp_repeat, gen_regexp_allof, gen_regexp_oneof,
13486         gen_regexp_sequence, gen_reserv, gen_insn_reserv, process_excls,
13487         add_excls, process_presence_absence_names,
13488         process_presence_absence_patterns, add_presence_absence,
13489         process_regexp, add_advance_cycle_insn_decl, get_free_alt_state,
13490         get_free_state, add_arc, get_free_automata_list_el,
13491         form_reserv_sets_list, copy_insn_regexp, transform_1, transform_2,
13492         transform_3, cache_presence, create_ainsns, create_automata,
13493         create_state_ainsn_table, dfa_insn_code_enlarge,
13494         output_trans_func, output_min_issue_delay_func,
13495         output_dead_lock_func, output_reset_func,
13496         output_get_cpu_unit_code_func, output_dfa_start_func,
13497         expand_automata): Likewise.
13498         * genextract.c (gen_insn): Likewise.
13499         * gengtype-lex.l: Likewise.
13500         * gengtype.c (read_input_list, adjust_field_type,
13501         process_gc_options): Likewise.
13502         * genoutput.c (note_constraint): Likewise.
13503         * genpreds.c (mangle, add_constraint): Likewise.
13504         * genrecog.c (process_define_predicate, new_decision,
13505         add_to_sequence): Likewise.
13506         * gensupport.c (record_insn_name): Likewise.
13507
13508 2008-06-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
13509
13510         * config/i386/driver-i386.c (detect_caches_amd,
13511         detect_caches_intel, host_detect_local_cpu): Fix -Wc++-compat
13512         and/or -Wcast-qual warnings.
13513         *ggc-common.c (ggc_mark_roots, gt_pch_note_object,
13514         gt_pch_note_reorder, relocate_ptrs, write_pch_globals,
13515         gt_pch_save): Likewise.
13516         * ggc-page.c (push_depth, push_by_depth, alloc_anon, alloc_page,
13517         gt_ggc_m_S, clear_marks, ggc_pch_read): Likewise.
13518         * global.c (compute_regsets): Likewise.
13519         * graph.c (print_rtl_graph_with_bb, clean_graph_dump_file,
13520         finish_graph_dump_file): Likewise.
13521         * haifa-sched.c (schedule_block, extend_h_i_d, extend_ready,
13522         unlink_bb_notes): Likewise.
13523         * integrate.c (get_hard_reg_initial_val): Likewise.
13524         * ipa-prop.c (ipa_push_func_to_list): Likewise.
13525         * ipa-struct-reorg.c (gen_var_name, gen_cluster_name): Likewise.
13526         * local-alloc.c (update_equiv_regs): Likewise.
13527         * loop-invariant.c (check_invariant_table_size,
13528         hash_invariant_expr, eq_invariant_expr, find_or_insert_inv):
13529         Likewise.
13530         * loop-iv.c (check_iv_ref_table_size, analyzed_for_bivness_p,
13531         altered_reg_used, mark_altered): Likewise.
13532         * loop-unroll.c (si_info_eq, ve_info_eq, allocate_basic_variable,
13533         insert_var_expansion_initialization,
13534         combine_var_copies_in_loop_exit, apply_opt_in_copies,
13535         release_var_copies): Likewise.
13536         * matrix-reorg.c (mat_acc_phi_hash, mat_acc_phi_eq, mtt_info_eq,
13537         analyze_matrix_decl, add_allocation_site, analyze_transpose,
13538         analyze_accesses_for_phi_node, check_var_notmodified_p,
13539         check_allocation_function, find_sites_in_func,
13540         record_all_accesses_in_func, transform_access_sites,
13541         transform_allocation_sites): Likewise.
13542         * omp-low.c (new_omp_region, create_omp_child_function_name,
13543         check_omp_nesting_restrictions, check_combined_parallel,
13544         lower_omp_2, diagnose_sb_1, diagnose_sb_2): Likewise.
13545         * optabs.c (no_conflict_move_test, gen_libfunc, gen_fp_libfunc,
13546         gen_intv_fp_libfunc, gen_interclass_conv_libfunc,
13547         gen_intraclass_conv_libfunc, set_optab_libfunc, set_conv_libfunc):
13548         Likewise.
13549         * opts-common.c (prune_options): Likewise.
13550         * opts.c (add_input_filename, print_filtered_help,
13551         get_option_state): Likewise.
13552         * params.c (add_params): Likewise.
13553         * passes.c (set_pass_for_id, next_pass_1,
13554         do_per_function_toporder, pass_fini_dump_file): Likewise.
13555         * postreload.c (reload_cse_simplify_operands): Likewise.
13556         * predict.c (tree_predicted_by_p, tree_predict_edge,
13557         clear_bb_predictions, combine_predictions_for_bb): Likewise.
13558
13559 2008-06-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
13560
13561         * ra.h (add_neighbor): Fix -Wc++-compat and/or -Wcast-qual
13562         warnings.
13563         * recog.c (check_asm_operands, validate_change_1): Likewise.
13564         * reg-stack.c (check_asm_stack_operands, subst_asm_stack_regs,
13565         subst_asm_stack_regs): Likewise.
13566         * regclass.c (regclass, som_hash, som_eq, record_subregs_of_mode,
13567         cannot_change_mode_set_regs, invalid_mode_change_p): Likewise.
13568         * regmove.c (reg_is_remote_constant_p): Likewise.
13569         * regrename.c (regrename_optimize, scan_rtx_reg,
13570         kill_clobbered_value, kill_set_value, kill_autoinc_value):
13571         Likewise.
13572         * regstat.c (regstat_init_n_sets_and_refs, regstat_compute_ri,
13573         regstat_compute_calls_crossed): Likewise.
13574         * reload1.c (init_reload, new_insn_chain,
13575         has_nonexceptional_receiver, reload, copy_reloads,
13576         calculate_needs_all_insns, init_elim_table): Likewise.
13577         * rtl-factoring.c (compute_rtx_cost, fill_hash_bucket): Likewise.
13578         * rtl.c (shallow_copy_rtx_stat): Likewise.
13579         * rtlanal.c (parms_set): Likewise.
13580         * sbitmap.c (sbitmap_alloc, sbitmap_alloc_with_popcount,
13581         sbitmap_resize, sbitmap_vector_alloc): Likewise.
13582         * sched-ebb.c (earliest_block_with_similiar_load,
13583         add_deps_for_risky_insns): Likewise.
13584         * sched-rgn.c (find_rgns, gather_region_statistics, extend_rgns,
13585         schedule_region): Likewise.
13586         * see.c (eq_descriptor_pre_extension,
13587         hash_descriptor_pre_extension, hash_del_pre_extension,
13588         eq_descriptor_properties, hash_descriptor_properties,
13589         hash_del_properties, see_seek_pre_extension_expr,
13590         see_initialize_data_structures, see_print_register_properties,
13591         see_print_pre_extension_expr, see_delete_merged_def_extension,
13592         see_delete_unmerged_def_extension, see_emit_use_extension,
13593         see_pre_delete_extension, see_map_extension, see_commit_changes,
13594         see_analyze_merged_def_local_prop,
13595         see_analyze_merged_def_local_prop,
13596         see_analyze_unmerged_def_local_prop, see_analyze_use_local_prop,
13597         see_set_prop_merged_def, see_set_prop_unmerged_def,
13598         see_set_prop_unmerged_use, see_print_one_extension,
13599         see_merge_one_use_extension, see_merge_one_def_extension,
13600         see_store_reference_and_extension, see_update_uses_relevancy,
13601         see_update_defs_relevancy): Likewise.
13602         * statistics.c (hash_statistics_hash, hash_statistics_eq,
13603         hash_statistics_free, curr_statistics_hash): Likewise.
13604         * stmt.c (parse_output_constraint, decl_overlaps_hard_reg_set_p,
13605         expand_asm_operands, expand_return, case_bit_test_cmp,
13606         expand_case): Likewise.
13607         * stor-layout.c (start_record_layout): Likewise.
13608         * stringpool.c (ggc_alloc_string, gt_pch_n_S,
13609         gt_pch_save_stringpool): Likewise.
13610         * tree-data-ref.c (hash_stmt_vertex_info,
13611         have_similar_memory_accesses_1, ref_base_address_1): Likewise.
13612         * tree-ssa-phiopt.c (name_to_bb_hash): Likewise.
13613
13614 2008-06-25  Uros Bizjak  <ubizjak@gmail.com>
13615
13616         PR target/36627
13617         * config/i386/i386.md : Change constraints of HImode and QImode
13618         immediate operands from "i" to "n".  Change SImode "ni" constraint to
13619         "i" and SImode "rmi" constraint to "g".  Remove all constraints
13620         from const0_operand and const1_operand predicated operands.
13621         (i): Change QImode and HImode attribute from "i" to "n".
13622         (*subqi_2): Change HImode operands to QImode.
13623         (*subqi_3): Ditto.
13624
13625 2008-06-25  Olivier Hainque  <hainque@adacore.com>
13626
13627         * Makefile.in (GTFILES_H): Use | instead of ; as separator in
13628         sed substitutions.
13629
13630 2008-06-25  Richard Guenther  <rguenther@suse.de>
13631
13632         * tree-ssa-structalias.c (fieldoff_compare): Make sure to
13633         not overflow the result type.
13634
13635 2008-06-25  Richard Guenther  <rguenther@suse.de>
13636
13637         * tree-vn.c (vn_add): Handle TRUTH_*_EXPR.
13638         (vn_lookup): Likewise.
13639
13640 2008-06-25  Richard Guenther  <rguenther@suse.de>
13641
13642         PR tree-optimization/35518
13643         * fold-const.c (fold_ternary): Strip trivial BIT_FIELD_REFs.
13644         * tree-sra.c (instantiate_element): Use fold_build3 to build
13645         BIT_FIELD_REFs.
13646         (try_instantiate_multiple_fields): Likewise.
13647
13648 2008-06-24  Andrew Pinski  <andrew_pinski@playstation.sony.com>
13649
13650         * config/rs6000/rs6000.md: Change all string instruction's clobber to
13651         be early clobbers.
13652
13653 2008-06-24  Andrew Pinski  <andrew_pinski@playstation.sony.com>
13654
13655         * config/rs6000/rs6000.c (rs6000_emit_epilogue): Set
13656         use_backchain_to_restore_sp to true
13657         if the offset of the link register save area would go over the 32k - 1
13658         offset limit of the load
13659         instructions.
13660
13661 2008-06-25  Hans-Peter Nilsson  <hp@axis.com>
13662
13663         * doc/invoke.texi (Optimize Options) <fstrict-aliasing>: Add
13664         anchor for the type-punning blurb.  Cross-reference "Structures
13665         unions enumerations and bit-fields implementation".  Provide a
13666         cast-through-pointer example.  Make final sentence self-contained.
13667         * doc/implement-c.texi (Structures unions enumerations and
13668         bit-fields implementation): Cross-reference the type-punning blurb
13669         in the -fstrict-aliasing documentation.
13670
13671 2008-06-24  Andrew Pinski  <andrew_pinski@playstation.sony.com>
13672
13673         PR middle-end/36594
13674         * builtins.c (expand_builtin_nonlocal_goto): Stabilize the address of
13675         the memory instead of the memory itself for the save area.
13676
13677 2008-06-24  Olivier Hainque  <hainque@adacore.com>
13678             Nicolas Roche  <roche@adacore.com>
13679
13680         * gengtype.c (srcdir_len): size_t instead of int.
13681         (get_file_realbasename): New function.  For F a filename, the real
13682         basename of F, with all the path components stripped.
13683         (get_file_srcdir_relative_path): New function.  For F a filename, the
13684         relative path to F from $(srcdir).
13685         (get_file_basename): Rewrite using get_file_srcdir_relative_path and
13686         get_file_realbasename.  Adjust the head comment.
13687         (get_prefix_langdir_index): New function. For F a filename, return the
13688         lang_dir_names[] relative index of the language directory that is
13689         a prefix in F.
13690         (get_file_langdir): For F a filename, return the name of the language
13691         directory where F is located.
13692         (get_file_gtfilename): New function. The gt- output file name for an
13693         input filename F.
13694         (get_output_file_with_visibility): Replace in-line computations with
13695         uses of get_file_gtfilename and get_prefix_langdir_index.
13696         * Makefile.in (GTFILES_H): Adjust to match what gengtype generates.
13697
13698 2008-06-24  Jakub Jelinek  <jakub@redhat.com>
13699
13700         PR tree-optimization/36504
13701         * tree-ssa-loop-prefetch.c (gather_memory_references_ref): Skip
13702         references without base address.
13703
13704 2008-06-23  Uros Bizjak  <ubizjak@gmail.com>
13705
13706         PR middle-end/36584
13707         * calls.c (expand_call): Increase alignment for recursive functions.
13708
13709 2008-06-23  Anatoly Sokolov  <aesok@post.ru>
13710
13711         * config/avr/avr.c (avr_function_value): Add new 'outgoing' argument.
13712         (TARGET_FUNCTION_VALUE): New define.
13713         * config/avr/avr-protos.h (avr_function_value): Remove declaration.
13714         * config/avr/avr.h (FUNCTION_VALUE): Remove.
13715
13716 2008-06-23  Uros Bizjak  <ubizjak@gmail.com>
13717
13718         * config/i386/i386.md (fmodxf3): Change sequence of move instructions.
13719         (fmod<mode>3): Ditto.
13720         (remainderxf3): Ditto.
13721         (remainder<mode>3): Ditto.
13722
13723 2008-06-23  Jakub Jelinek  <jakub@redhat.com>
13724
13725         PR target/36533
13726         * emit-rtl.c (set_reg_attrs_from_value): Do nothing if
13727         REG is a hard register.
13728
13729         PR tree-optimization/36508
13730         * tree-ssa-pre.c (compute_antic): Allow num_iterations up to
13731         499, don't check it at all in release compilers.
13732
13733 2008-06-23  Uros Bizjak  <ubizjak@gmail.com>
13734
13735         * config/i386/i386.md (*fop_<mode>_1_i387): Use SSE_FLOAT_MODE_P
13736         together with SSE_TARGET_MATH to disable insn pattern.
13737         (*fop_<MODEF:mode>_2_i387): Ditto.
13738         (*fop_<MODEF:mode>_3_i387): Ditto.
13739
13740 2008-06-22  Andy Hutchinson  <hutchinsonandy@aim.com>
13741
13742         * config/avr/avr.h (SUPPORTS_INIT_PRIORITY): Define.
13743
13744 2008-06-22  Laurynas Biveinis  <laurynas.biveinis@gmail.com>
13745
13746         PR middle-end/34906
13747         * gimplify.c (gimplify_asm_expr): Check the return code of
13748         parse_output_constraint call, set function return and is_inout
13749         value if it failed.
13750
13751 2008-06-22  Ian Lance Taylor  <iant@google.com>
13752
13753         * c-lex.c (narrowest_unsigned_type): Change itk to int.
13754         (narrowest_signed_type): Likewise.
13755         * c-typeck.c (c_common_type): Change local variable mclass to enum
13756         mode_class, twice.
13757         (parser_build_binary_op): Compare the TREE_CODE_CLASS with
13758         tcc_comparison, not the tree code itself.
13759         * c-common.c (def_fn_type): Pass int, not an enum, to va_arg.
13760         (c_expand_expr): Cast modifier to enum expand_modifier.
13761         * c-common.h (C_RID_CODE): Add casts.
13762         (C_SET_RID_CODE): Define.
13763         * c-parser.c (c_parse_init): Use C_SET_RID_CODE.
13764         (c_lex_one_token): Add cast to avoid warning.
13765         (c_parser_objc_type_name): Rename local typename to type_name.
13766         (check_no_duplicate_clause): Change code parameter to enum
13767         omp_clause_code.
13768         (c_parser_omp_var_list_parens): Change kind parameter to enum
13769         omp_clause_code.
13770         (c_parser_omp_flush): Pass OMP_CLAUSE_ERROR, not 0, to
13771         c_parser_omp_list_var_parens.
13772         (c_parser_omp_threadprivate): Likewise.
13773         * cp/lex.c (init_reswords): Use C_SET_RID_CODE.
13774         * cp/parser.c (cp_lexer_get_preprocessor_token): Likewise.
13775         * c-format.c (NO_FMT): Define.
13776         (printf_length_specs): Use NO_FMT.
13777         (asm_fprintf_length_specs): Likewise.
13778         (gcc_diag_length_specs): Likewise.
13779         (scanf_length_specs): Likewise.
13780         (strfmon_length_specs): Likewise.
13781         (gcc_gfc_length_specs): Likewise.
13782         (printf_flag_specs): Change 0 to STD_C89.
13783         (asm_fprintf_flag_specs): Likewise.
13784         (gcc_diag_flag_specs): Likewise.
13785         (gcc_cxxdiag_flag_specs): Likewise.
13786         (scanf_flag_specs): Likewise.
13787         (strftime_flag_specs): Likewise.
13788         (strfmon_flag_specs): Likewise.
13789         (print_char_table): Likewise.
13790         (asm_fprintf_char_table): Likewise.
13791         (gcc_diag_char_table): Likewise.
13792         (gcc_tdiag_char_table): Likewise.
13793         (gcc_cdiag_char_table): Likewise.
13794         (gcc_cxxdiag_char_table): Likewise.
13795         (gcc_gfc_char_table): Likewise.
13796         (scan_char_table): Likewise.
13797         (time_char_table): Likewis.
13798         (monetary_char_table): Likewise.
13799         * c-format.h (BADLEN): Likewise.
13800
13801 2008-06-21  Ian Lance Taylor  <iant@google.com>
13802
13803         * tree.h (enum tree_code): Include all-tree.def, not tree.def.
13804         Define END_OF_BASE_TREE_CODES around inclusion.
13805         * tree.c (tree_code_type): New global array.
13806         (tree_code_length, tree_code_name): Likewise.
13807         * Makefile.in (TREE_H): Add all-tree.def, c-common.def, and
13808         $(lang_tree_files).
13809         (all-tree.def, s-alltree): New targets.
13810         (gencheck.h, s-gencheck): Remove.
13811         (tree.o): Depend upon all-tree.def.
13812         (build/gencheck.o): Remove gencheck.h dependency.
13813         (mostlyclean): Don't remove gencheck.h.
13814         * c-common.h (enum c_tree_code): Remove.
13815         * c-lang.c (tree_code_type): Remove.
13816         (tree_code_length, tree_code_name): Remove.
13817         * gencheck.c (tree_codes): Include all-tree.def, rather than
13818         tree.def, c-common.def, and gencheck.h.  Undefined DEFTREECODE
13819         after it is used.
13820         * tree-browser.c (tb_tree_codes): Include all-tree.def, rather
13821         than tree.def.
13822         * cp/cp-tree.h (enum cplus_tree_code): Remove.
13823         (operator_name_info): Size to MAX_TREE_CODES.
13824         (assignment_operator_name_info): Likewise.
13825         * cp/cp-lang.c (tree_code_type): Remove.
13826         (tree_code_length, tree_code_name): Remove.
13827         * cp/lex.c (operator_name_info): Size to MAX_TREE_CODES.
13828         (assignment_operator_name_info): Likewise.
13829         * cp/decl.c (grok_op_properties): Change LAST_CPLUS_TREE_CODE to
13830         MAX_TREE_CODES.
13831         * cp/mangle.c (write_expression): Likewise.
13832         * cp/Make-lang.in (CXX_TREE_H): Remove cp/cp-tree.def.
13833         * fortran/f95-lang.c (tree_code_type): Remove.
13834         (tree_code_length, tree_code_name): Remove.
13835         * java/java-tree.h (enum java_tree_code): Remove.
13836         * java/lang.c (tree_code_type): Remove.
13837         (tree_code_length, tree_code_name): Remove.
13838         * java/Make-lang.in (JAVA_TREE_H): Remove java/java-tree.def.
13839         * objc/objc-act.h (enum objc_tree_code): Remove.
13840         * objc/objc-lang.c (tree_code_type): Remove.
13841         (tree_code_length, tree_code_name): Remove.
13842         * objcp/objcp-lang.c (tree_code_type): Remove.
13843         (tree_code_length, tree_code_name): Remove.
13844         * ada/ada-tree.h (enum gnat_tree_code): Remove.
13845         * ada/Make-lang.in (ADA_TREE_H): Remove ada/ada-tre.def.
13846         * ada/misc.c (tree_code_type): Remove.
13847         (tree_code_length, tree_code_name): Remove.
13848
13849 2008-06-21  Bernhard Fischer  <aldot@gcc.gnu.org>
13850
13851         * tree-ssa-pre.c (fini_antic): Bitmap_sets have to be freed before
13852         the grand_bitmap_obstack.
13853
13854 2008-06-20  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
13855
13856         * ggc.h (GGC_RESIZEVAR): New, reorder macros.
13857         * tracer.c (tail_duplicate): Fix for -Wc++-compat.
13858         * tree-affine.c (aff_combination_expand, free_name_expansion): Likewise.
13859         * tree-cfg.c (replace_by_duplicate_decl, replace_ssa_name,
13860         move_stmt_r, new_label_mapper): Likewise.
13861         * tree-complex.c (cvc_lookup): Likewise.
13862         * tree-dfa.c (create_function_ann): Likewise.
13863         * tree-dump.c (dump_register): Likewise.
13864         * tree-if-conv.c (tree_if_conversion, add_to_predicate_list,
13865         find_phi_replacement_condition): Likewise.
13866         * tree-inline.c (copy_phis_for_bb, estimate_num_insns_1,
13867         tree_function_versioning): Likewise.
13868         * tree-into-ssa.c (cmp_dfsnum): Likewise.
13869         * tree-iterator.c (tsi_link_before, tsi_link_after): Likewise.
13870         * tree-nested.c (lookup_field_for_decl, lookup_tramp_for_decl,
13871         get_nonlocal_debug_decl, convert_nonlocal_reference,
13872         convert_nonlocal_omp_clauses, get_local_debug_decl,
13873         convert_local_reference, convert_local_omp_clauses,
13874         convert_nl_goto_reference, convert_nl_goto_receiver,
13875         convert_tramp_reference, convert_call_expr): Likewise.
13876         * tree-outof-ssa.c (contains_tree_r): Likewise.
13877         * tree-parloops.c (reduction_phi, initialize_reductions,
13878         eliminate_local_variables_1, add_field_for_reduction,
13879         add_field_for_name, create_phi_for_local_result,
13880         create_call_for_reduction_1, create_loads_for_reductions,
13881         create_stores_for_reduction, create_loads_and_stores_for_name):
13882         Likewise.
13883         * tree-phinodes.c (allocate_phi_node): Likewise.
13884         * tree-predcom.c (order_drefs, execute_pred_commoning_cbck): Likewise.
13885         * tree-sra.c (sra_elt_hash, sra_elt_eq, lookup_element): Likewise.
13886         * tree-ssa-alias.c (get_mem_sym_stats_for): Likewise.
13887         * tree-ssa-coalesce.c (compare_pairs): Likewise.
13888         * tree-ssa-loop-im.c (mem_ref_in_stmt, memref_hash, memref_eq,
13889         memref_free, gather_mem_refs_stmt, vtoe_hash, vtoe_eq, vtoe_free,
13890         record_vop_access, get_vop_accesses, get_vop_stores): Likewise.
13891         * tree-ssa-loop-prefetch.c (determine_loop_nest_reuse): Likewise.
13892         * tree-ssa-sccvn.c (VN_INFO_GET, free_phi, free_reference,
13893         vn_nary_op_insert): Likewise.
13894         * tree-ssa.c (redirect_edge_var_map_add,
13895         redirect_edge_var_map_clear, redirect_edge_var_map_dup): Likewise.
13896         * tree-vectorizer.c (vectorize_loops): Likewise.
13897         * tree.c (make_node_stat, copy_node_stat, build_int_cst_wide,
13898         build_fixed, build_real, make_tree_binfo_stat, make_tree_vec_stat,
13899         tree_cons_stat, build1_stat, build_variant_type_copy,
13900         decl_init_priority_lookup, decl_fini_priority_lookup,
13901         decl_priority_info, decl_restrict_base_lookup,
13902         decl_restrict_base_insert, decl_debug_expr_lookup,
13903         decl_debug_expr_insert, decl_value_expr_lookup,
13904         decl_value_expr_insert, type_hash_eq, type_hash_lookup,
13905         type_hash_add, get_file_function_name, tree_check_failed,
13906         tree_not_check_failed, tree_range_check_failed,
13907         omp_clause_range_check_failed, build_omp_clause,
13908         build_vl_exp_stat): Likewise.
13909         * value-prof.c (gimple_histogram_value,
13910         gimple_duplicate_stmt_histograms): Likewise.
13911         * var-tracking.c (attrs_list_insert, attrs_list_copy,
13912         unshare_variable, variable_union_info_cmp_pos, variable_union,
13913         dataflow_set_different_1, dataflow_set_different_2,
13914         vt_find_locations, variable_was_changed, set_variable_part,
13915         emit_notes_for_differences_1, emit_notes_for_differences_2): Likewise.
13916         * varasm.c (prefix_name, emutls_decl, section_entry_eq,
13917         section_entry_hash, object_block_entry_eq,
13918         object_block_entry_hash, create_block_symbol,
13919         initialize_cold_section_name, default_function_rodata_section,
13920         strip_reg_name, set_user_assembler_name, const_desc_eq,
13921         build_constant_desc, output_constant_def, lookup_constant_def,
13922         const_desc_rtx_hash, const_desc_rtx_eq, const_rtx_hash_1,
13923         create_constant_pool, force_const_mem, compute_reloc_for_rtx_1,
13924         default_internal_label): Likewise.
13925         * varray.c (varray_init, varray_grow): Likewise.
13926         * vec.c (vec_gc_o_reserve_1, vec_heap_o_reserve_1): Likewise.
13927
13928 2008-06-20  Uros Bizjak  <ubizjak@gmail.com>
13929
13930         * config/i386/i386.md (*jcc_fused_1): Handle all valid compare
13931         operators for "test" insn.  Macroize insn using SWI mode macro.
13932         (*jcc_fused_2): Ditto.
13933         (*jcc_fused_3): Macroize insn using SWI mode macro.
13934         (*jcc_fused_4): Ditto.
13935
13936 2008-06-20  Bernhard Fischer  <aldot@gcc.gnu.org>
13937
13938         * tree-ssa-pre.c: Fix typo in comment.
13939         (init_antic, fini_antic): Add explicit funtions for
13940         initializing and deinitializing ANTIC and AVAIL sets.
13941         (create_expression_by_pieces): Fix typo in comment.
13942         Remove redundant set of new_stuff and use NULL_TREE instead of NULL.
13943         (execute_pre): Eventually dump details about ANTIC_IN.
13944
13945 2008-06-19  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
13946
13947         * collect2.c (main, add_to_list): Fix for -Wc++-compat.
13948         * gcc.c (translate_options, init_spec, store_arg, read_specs,
13949         add_to_obstack, file_at_path, find_a_file, execute,
13950         add_preprocessor_option, add_assembler_option, add_linker_option,
13951         process_command, insert_wrapper, do_option_spec, do_self_spec,
13952         spec_path, do_spec_1, is_directory, main, used_arg,
13953         getenv_spec_function): Likewise.
13954         * tlink.c (symbol_hash_lookup, file_hash_lookup,
13955         demangled_hash_lookup, symbol_push, file_push, frob_extension):
13956         Likewise.
13957
13958 2008-06-19  Kenneth Zadeck <zadeck@naturalbridge.com>
13959
13960         * doc/rtl.texi: Updated subreg section.
13961
13962 2008-06-19  Jakub Jelinek  <jakub@redhat.com>
13963
13964         PR c++/36523
13965         * cgraphunit.c (cgraph_process_new_functions): Don't clear
13966         node->needed and node->reachable.
13967         * cgraphbuild.c (record_reference): Handle OMP_PARALLEL and OMP_TASK.
13968         * omp-low.c (delete_omp_context): Call finalize_task_copyfn.
13969         (expand_task_call): Don't call expand_task_copyfn.
13970         (expand_task_copyfn): Renamed to...
13971         (finalize_task_copyfn): ... this.
13972
13973 2008-06-19  Jan Hubicka  <jh@suse.cz>
13974
13975         * builtins.c (expand_builtin_nonlocal_goto): Stabilize r_sp before
13976         clobbering framepointer.
13977
13978 2008-06-19  Jan Hubicka  <jh@suse.cz>
13979
13980         * tree-optimize.c (execute_early_local_optimizations): Set
13981         cgraph_state only at first invocation.
13982
13983 2008-06-19  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
13984
13985         * system.h (-Wc++-compat): Activate as a warning, no an error.
13986
13987 2008-06-19  Uros Bizjak  <ubizjak@gmail.com>
13988
13989         * config/i386/i386.md (*jcc_fused_1): Use ASM_COMMENT_START
13990         instead of "#" in insn asm template.
13991         (*jcc_fused_2): Ditto.
13992
13993 2008-06-19  Uros Bizjak  <ubizjak@gmail.com>
13994
13995         * config/i386/i386.h (ix86_tune_indices)
13996         [X86_TUNE_FUSE_CMP_AND_BRANCH]: New.
13997         (TARGET_FUSE_CMP_AND_BRANCH): New define.
13998         * config/i386/i386.md (*jcc_fused_1): New insn pattern
13999         (*jcc_fused_2): Ditto.
14000         * config/i386/i386.c (ix86_tune_features): Add m_CORE2 to
14001         X86_TUNE_FUSE_CMP_AND_BRANCH targets.
14002         (print operand): Handle 'E' and 'e' code.
14003
14004 2008-06-19  Anatoly Sokolov  <aesok@post.ru>
14005
14006         * config/avr/avr.c (avr_mcu_t): Add attiny13a.
14007         * config/avr/avr.h (LINK_SPEC, CRT_BINUTILS_SPECS): (Ditto.).
14008         * config/avr/t-avr (MULTILIB_MATCHES): (Ditto.).
14009
14010 2008-06-19  Bernhard Fischer  <aldot@gcc.gnu.org>
14011
14012         * cgraphunit.c (cgraph_finalize_function): Remove redundant setting of
14013         node->decl.
14014         (cgraph_expand_function): Use local copy of decl.
14015         (cgraph_expand_all_functions): Remove redundant initialization of
14016         order_pos.
14017         (cgraph_optimize): Reword internal_error message.
14018
14019 2008-06-19  Chung-Lin Tang  <ctang@marvell.com>
14020
14021         * arm-protos.h (arm_return_in_memory): Remove public
14022         arm_return_in_memory() prototype.
14023         * arm.c (arm_return_in_memory): Add static prototype, add target
14024         hook macro, change definition and comments.
14025         * arm.h (TARGET_RETURN_IN_MEMORY): Remove.
14026
14027 2008-06-19  Ben Elliston  <bje@au.ibm.com>
14028
14029         * dfp.h, dfp.c, config/dfp-bit.h, config/dfp-bit.c, real.h,
14030         real.c: Remove references to IEEE 754R.
14031         * doc/install.texi (Configuration): IEEE 754R -> IEEE 754-2008.
14032         * doc/libgcc.texi (Decimal float library routines): Likewise.
14033
14034 2008-06-18  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
14035
14036         * targhooks.h (struct gcc_target): New member unwind_word_mode.
14037         (default_unwind_word_mode): Add prototype.
14038         * targhooks.c (default_unwind_word_mode): New function.
14039         (default_eh_return_filter_mode): Return targetm.unwind_word_mode ()
14040         instead of word_mode.
14041         * target-def.h (TARGET_UNWIND_WORD_MODE): New macro.
14042         (TARGET_INITIALIZER): Use it.
14043
14044         * c-common.c (handle_mode_attribute): Support "unwind_word"
14045         mode attribute.
14046         * unwind-generic.h (_Unwind_Word, _Unwind_Sword): Use it.
14047
14048         * except.c (init_eh): Use targetm.unwind_word_mode () instead of
14049         word_mode to access SjLj_Function_Context member "data".
14050         (sjlj_emit_dispatch_table): Likewise.  Also, perform type
14051         conversion from targetm.eh_return_filter_mode () to
14052         targetm.unwind_word_mode () if they differ.
14053
14054         * builtin-types.def (BT_UNWINDWORD): New primitive type.
14055         (BT_FN_UNWINDWORD_PTR): New function type.
14056         (BT_FN_WORD_PTR): Remove.
14057         * builtins.def (BUILT_IN_EXTEND_POINTER): Use BT_FN_UNWINDWORD_PTR.
14058         * except.c (expand_builtin_extend_pointer): Convert pointer to
14059         targetm.unwind_word_mode () instead of word_mode.
14060
14061         * config/spu/spu-protos.h (spu_eh_return_filter_mode): Remove.
14062         * config/spu/spu.c (spu_eh_return_filter_mode): Remove.
14063         (spu_unwind_word_mode): New function.
14064         (TARGET_EH_RETURN_FILTER_MODE): Do not define.
14065         (TARGET_UNWIND_WORD_MODE): Define.
14066         * config/spu/t-spu-elf (TARGET_LIBGCC2_CFLAGS): Remove -D__word__=SI.
14067
14068 2008-06-18  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
14069
14070         * config/spu/spu.c (reg_align): Remove.
14071         (regno_aligned_for_load): Also accept ARG_POINTER_REGNUM.
14072         (spu_split_load): Use regno_aligned_for_load instead of reg_align.
14073         (spu_split_store): Likewise.
14074
14075 2008-06-18  Bernhard Fischer  <aldot@gcc.gnu.org>
14076
14077         * gcc/tree-vn.c: Fix typo in comment.
14078
14079 2008-06-18  Jan Hubicka  <jh@suse.cz>
14080
14081         * cgraphunit.c (cgraph_optimize): Output debug info when doing
14082         toplevel reorder too.
14083
14084 2008-06-18  Jan Hubicka  <jh@suse.cz>
14085
14086         * c-opts.c (c_common_post_options): PCH is not compatible with
14087         no-unit-at-a-time.
14088         * opts.c (handle_options): Enable unit-at-a-time at O0 along with
14089         -fno-toplevel-reorder by default now.
14090
14091 2008-06-18  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
14092
14093         PR documentation/30739
14094         * doc/install.texi (Prerequisites): Document dependency on awk.
14095
14096 2008-06-18  Uros Bizjak  <ubizjak@gmail.com>
14097             Ian Lance Taylor  <iant@google.com>
14098
14099         PR rtl-optimization/35604
14100         * jump.c (redirect_exp_1): Skip the condition of an IF_THEN_ELSE. We
14101         only want to change jump destinations, not eventual label comparisons.
14102
14103 2008-06-16  Jan Hubicka  <jh@suse.cz>
14104
14105         * cgraphunit.c (cgraph_expand_pending_functions): Give up at
14106         syntax errors.
14107         (cgraph_analyze_function): Likewise.
14108
14109 2008-06-16  Jan Hubicka  <jh@suse.cz>
14110
14111         * cgraph.h (cgraph_mark_if_needed): New function.
14112         * cgraphunit.c (cgraph_mark_if_needed): New function.
14113         * c-decl.c (duplicate_decl): Use it.
14114
14115 2008-06-16  Jan Hubicka  <jh@suse.cz>
14116
14117         * cgraph.c (cgraph_add_new_function): When in expansion state, do
14118         lowering.
14119
14120 2008-06-16  Jan Hubicka  <jh@suse.cz>
14121
14122         * tree-outof-ssa.c (pass_out_of_ssa): Do not depend on PROP_alias.
14123
14124 2008-06-16  Daniel Jacobowitz  <dan@codesourcery.com>
14125             Kazu Hirata  <kazu@codesourcery.com>
14126             Maxim Kuvyrkov  <maxim@codesourcery.com
14127
14128         * config.gcc (mips64el-st-linux-gnu): Use mips/st.h and mips/t-st.
14129         * config.host: Use driver-native.o and mips/x-native for mips*-linux*.
14130         * config/mips/linux.h (host_detect_local_cpu): Declare, add to
14131         EXTRA_SPEC_FUNCTIONS.
14132         (MARCH_MTUNE_NATIVE_SPECS, BASE_DRIVER_SELF_SPECS): New macros.
14133         (DRIVER_SELF_SPECS): Adjust.
14134         * config/mips/linux64.h (DRIVER_SELF_SPECS): Update.
14135         * config/mips/st.h, config/mips/t-st: New.
14136         * config/mips/driver-native.c, config/mips/x-native: New.
14137         * doc/invoke.texi (MIPS): Document 'native' value for -march and
14138         -mtune options.
14139
14140 2008-06-18  Maxim Kuvyrkov  <maxim@codesourcery.com>
14141
14142         * config/mips/mips.h (ISA_HAS_CONDMOVE): Slice ISA_HAS_FP_CONDMOVE
14143         from it.
14144         (ISA_HAS_FP_CONDMOVE): New macro.
14145         (ISA_HAS_FP_MADD4_MSUB4, ISA_HAS_FP_MADD3_MSUB3): New macros.
14146         (ISA_HAS_NMADD_NMSUB): Rename to ISA_HAS_NMADD4_NMSUB4.
14147         (ISA_HAS_NMADD3_NMSUB3): New macro.
14148         * config/mips/mips.c (mips_rtx_costs): Update.
14149         * config/mips/mips.md (MOVECC): Don't use FP conditional moves when
14150         compiling for ST Loongson 2E/2F.
14151         (madd<mode>): Rename to madd4<mode>.  Update.
14152         (madd3<mode>): New pattern.
14153         (msub<mode>): Rename to msub4<mode>.  Update.
14154         (msub3<mode>): New pattern.
14155         (nmadd<mode>): Rename to nmadd4<mode>.  Update.
14156         (nmadd3<mode>): New pattern.
14157         (nmadd<mode>_fastmath): Rename to nmadd4<mode>_fastmath.  Update.
14158         (nmadd3<mode>_fastmath): New pattern.
14159         (nmsub<mode>): Rename to nmsub4<mode>.  Update.
14160         (nmsub3<mode>): New pattern.
14161         (nmsub<mode>_fastmath): Rename to nmsub4<mode>_fastmath.  Update.
14162         (nmsub3<mode>_fastmath): New pattern.
14163         (mov<SCALARF:mode>_on_<MOVECC:mode>, mov<mode>cc): Update.
14164
14165 2008-06-18  Steven Bosscher  <steven@gcc.gnu.org>
14166
14167         * df.h (struct df_ref): Replace 'insn' field with 'insn_info' field.
14168         (DF_REF_INSN_INFO): New.
14169         (DF_REF_INSN, DF_REF_INSN_UID): Rewrite macros using DF_REF_INSN_INFO.
14170         (DF_REF_IS_ARTIFICIAL): Artificial refs are now identified as refs
14171         with a NULL DF_REF_INSN_INFO.
14172         (DF_INSN_INFO_GET, DF_INSN_INFO_SET): Renamed from DF_INSN_GET and
14173         DF_INSN_SET.
14174         (DF_INSN_INFO_LUID, DF_INSN_INFO_DEFS, DF_INSN_INFO_USES,
14175         DF_INSN_INFO_EQ_USES): New.
14176         (DF_INSN_LUID, DF_INSN_DEFS, DF_INSN_USES, DF_INSN_EQ_USES,
14177         DF_INSN_UID_LUID, DF_INSN_UID_DEFS, DF_INSN_UID_USES,
14178         DF_INSN_UID_EQ_USES): Rewrite using DF_INSN_INFO_* macros.
14179         * df-core.c: Update comment for above changes.
14180         (df_insn_debug_regno): Use DF_INSN_INFO_GET instead of INSN_UID and
14181         DF_INSN_UID_* macros.
14182         (df_ref_debug): Check for NULL DF_REF_INSN_INFO.
14183         * df-scan.c (df_ref_record): Take a df_insn_info instead of an
14184         insn rtx.  Update all callers.
14185         (df_def_record_1, df_defs_record, df_uses_record, df_get_call_refs,
14186         df_ref_create_structure, df_insn_refs_collect): Likewise.
14187         (df_ref_equal_p): Compare DF_REF_INSN_INFO pointers for the refs.
14188         * df-problems.c (df_chain_dump): Test for non-NULL DF_REF_INSN_INFO.
14189         (df_live_bb_local_compute): Retrieve DF_INSN_INFO, use DF_INSN_INFO_*
14190         macros to access the insn refs.
14191         (df_chain_top_dump, df_chain_bottom_dump, df_byte_lr_alloc): Likewise.
14192         * fwprop.c (use_killed_between): Use DF_REF_INSN accessor macro.
14193         (all_uses_available): Retrieve DF_INSN_INFO for def_insn, and use it
14194         for accessing the refs.
14195         (try_fwprop_subst): Likewise.
14196         * ddg.c (add_cross_iteration_register_deps): Use DF_REF_INSN macro.
14197         * web.c (union_defs): Retrieve DF_INSN_INFO for def_insn, and use it
14198         for accessing the refs.
14199         * loop-invariant.c (invariant_for_use): Use DF_REF_BB macro.
14200         (check_dependencies): Use DF_INSN_INFO_GET, use DF_INSN_INFO_* macros
14201         to look at the insn refs.
14202         (record_uses): Likewise.
14203         * dce.c (deletable_insn_p): Don't tolerate artificial DEFs in this
14204         function anymore.
14205         (mark_artificial_uses): Don't mark_insn for artificial refs.
14206         (mark_reg_rependencies): Likewise.
14207
14208         * doc/rtl.texi: Remove documentation of ADDRESSOF.
14209
14210 2008-06-17  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
14211
14212         * configure: Regenerate.
14213
14214 2008-06-17  Eric B. Weddington  <eric.weddington@atmel.com>
14215
14216         * config/avr/avr.c (avr_mcu_t): Remove atmega32hvb.
14217         * config/avr/avr.h (LINK_SPEC, CRT_BINUTILS_SPECS): Likewise.
14218         * config/avr/t-avr (MULTILIB_MATCHES): Likewise.
14219
14220 2008-06-17  Eric B. Weddington  <eric.weddington@atmel.com>
14221
14222         * config/avr/avr.c (avr_mcu_t): Add attiny167.
14223         * config/avr/avr.h (LINK_SPEC, CRT_BINUTILS_SPECS): Likewise.
14224         * gcc/config/avr/t-avr (MULTILIB_MATCHES): Likewise.
14225
14226 2008-06-17  Eric B. Weddington  <eric.weddington@atmel.com>
14227
14228         * config/avr/avr.c (avr_mcu_t): Add atmega32u4.
14229         * config/avr/avr.h (LINK_SPEC, CRT_BINUTILS_SPECS): Likewise.
14230         * config/avr/t-avr (MULTILIB_MATCHES): Likewise.
14231
14232 2008-06-17  Bernhard Fischer  <aldot@gcc.gnu.org>
14233
14234         * tree-ssa-sccvn.c: Fix format of comments.
14235
14236 2008-06-17  Bernhard Fischer  <aldot@gcc.gnu.org>
14237
14238         * cgraph.c: Remove unneeded forward declarations of eq_node()
14239         and hash_node().
14240
14241 2008-06-17  Steven Bosscher  <steven@gcc.gnu.org>
14242
14243         * see.c (see_analyse_one_def): Do not look for REG_LIBCALL and
14244         REG_RETVAL notes.
14245         (see_update_relevancy): Likewise.
14246         * fwprop.c (try_fwprop_subst): Likewise.
14247         * rtlanal.c (noop_move_p): Likewise.
14248         * builtins.c (expand_buitlin_mathfn): Don't try to add REG_EQUAL
14249         notes to non-existing libcall blocks.
14250         * cse.c (cse_insn): Change prototype.  Don't update libcall notes.
14251         Remove orig_set.
14252         (cse_extended_basic_block): Don't track libcall and no-conflict notes.
14253         (dead_libcall_p): Remove.
14254         (delete_trivially_dead_insns): Don't use it.
14255         * web.c (union_defs): Remove comment about keeping nops.
14256         * gcse.c (hash_scan_insn): Don't take libcall pointers.
14257         (compute_hash_table_work): Don't track libcall notes.
14258         (do_local_cprop): Don't take libcall pointers.  Don't update
14259         libcall notes.
14260         (adjust_libcall_notes): Deleted.
14261         (local_cprop_pass): Remove stack for nested libcalls (which shouldn't
14262         ever have existed in the first place).
14263         (replace_store_insn): Don't try to remove libcall notes.
14264         * lower-subreg.c (move_libcall_note, move_retval_note): Deleted.
14265         (resolve_reg_notes): Don't call them.
14266         (resolve_simple_move): Likewise.
14267         (decompose_multiword_subregs): Remove block handling REG_RETVAL notes.
14268         Don't remove REG_RETVAL notes.
14269         * emit-rtl.c (try_split): Don't update libcall notes.
14270         (emit_copy_of_insn_after): Dito.
14271         * cselib.c (cselib_current_insn_in_libcall): Remove.
14272         (cselib_process_insn): Don't set/clear it.
14273         (new_elt_loc_list): Don't record it.
14274         (cselib_init): Don't initialize it.
14275         * cselib.c (struct elt_loc_list): Remove in_libcall field.
14276         * loop-invariant.c (find_invariant_insn): Don't look for libcall
14277         notes.
14278         * sched-deps.c (sched_analyze_insn): Don't group libcall blocks.
14279         (sched_analyze): Don't set up deps->libcall_block_tail_insn.
14280         (init_deps): Don't initialize it.
14281         * sched-int.h (struct deps): Rremove libcall_block_tail_insn field.
14282         * combine.c (delete_noop_moves): Don't update libcall notes.
14283         (can_combine_p): Remove now pointless #if 0 block.
14284         (try_combine): Remove another obsolete #if 0 block.
14285         (distribute_notes): Don't distribute libcall notes.
14286         * reg-notes.def (REG_LIBCALL, REG_RETVAL): Remove.
14287         * dce.c (libcall_dead_p): Remove.
14288         (delete_unmarked_insns): Don't handle libcall blocks.
14289         (preserve_libcall_for_dce): Remove.
14290         (prescan_insns_for_dce): Don't special-case libcall block insns.
14291         * reload1 (reload): Don't handle libcall notes.
14292         * doc/rtl.texi (REG_LIBCALL, REG_RETVAL, REG_LIBCALL_ID): Remove
14293         documentation.
14294
14295 2008-06-16  Eric B. Weddington  <eric.weddington@atmel.com>
14296
14297         * config/avr/avr.c (avr_mcu_t): Add atmega32c1.
14298         * config/avr/avr.h (LINK_SPEC, CRT_BINUTILS_SPECS): Likewise.
14299         * config/avr/t-avr (MULTILIB_MATCHES): Likewise.
14300
14301 2008-06-16  Eric B. Weddington  <eric.weddington@atmel.com>
14302
14303         * config/avr/avr.c (avr_mcu_t): Add atmega32m1.
14304         * config/avr/avr.h (LINK_SPEC, CRT_BINUTILS_SPECS): Likewise.
14305         * config/avr/t-avr (MULTILIB_MATCHES): Likewise.
14306
14307 2008-06-16  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
14308
14309         * Makefile.in (FLAGS_TO_PASS): Add $(datarootdir).
14310
14311 2008-06-16  Ira Rosen  <irar@il.ibm.com>
14312
14313         PR tree-optimization/36493
14314         * tree-vect-transform.c (vect_create_data_ref_ptr): Remove TYPE from
14315         the arguments list. Use VECTYPE to create vector pointer.
14316         (vectorizable_store): Fail if accesses through a pointer to vectype
14317         do not alias the original memory reference operands.
14318         Call vect_create_data_ref_ptr without the removed argument.
14319         (vectorizable_load): Likewise.
14320         (vect_setup_realignment): Call vect_create_data_ref_ptr without the
14321         removed argument.
14322
14323 2008-06-015  Andy Hutchinson  <hutchinsonandy@aim.com>
14324
14325         PR target/36336
14326         * config/avr/avr.h (LEGITIMIZE_RELOAD_ADDRESS): Add check for
14327         reg_equiv_constant.
14328
14329 2008-06-15  Maxim Kuvyrkov  <maxim@codesourcery.com>
14330
14331         * config/mips/loongson2ef.md: New file.
14332         * config/mips/mips.md (UNSPEC_LOONGSON_ALU1_TURN_ENABLED_INSN)
14333         (UNSPEC_LOONGSON_ALU2_TURN_ENABLED_INSN)
14334         (UNSPEC_LOONGSON_FALU1_TURN_ENABLED_INSN)
14335         (UNSPEC_LOONGSON_FALU2_TURN_ENABLED_INSN): New constants.
14336         (define_attr "cpu"): Rename loongson2e and loongson2f to loongson_2e
14337         and loongson_2f.
14338         (loongson2ef.md): New include.
14339         * config/mips/loongson.md (vec_pack_ssat_<mode>, vec_pack_usat_<mode>)
14340         (add<mode>3, paddd, ssadd<mode>3, usadd<mode>3)
14341         (loongson_and_not_<mode>, loongson_average_<mode>, loongson_eq_<mode>)
14342         (loongson_gt_<mode>, loongson_extract_halfword)
14343         (loongson_insert_halfword_0, loongson_insert_halfword_2)
14344         (loongson_insert_halfword_3, loongson_mult_add, smax<mode>3)
14345         (umax<mode>3, smin<mode>3, umin<mode>3, loongson_move_byte_mask)
14346         (umul<mode>3_highpart, smul<mode>3_highpart, loongson_smul_lowpart)
14347         (loongson_umul_word, loongson_pasubub, reduc_uplus_<mode>)
14348         (loongson_psadbh, loongson_pshufh, loongson_psll<mode>)
14349         (loongson_psra<mode>, loongson_psrl<mode>, sub<mode>3, psubd)
14350         (sssub<mode>3, ussub<mode>3, vec_interleave_high<mode>)
14351         (vec_interleave_low<mode>): Define type attribute.
14352         * config/mips/mips.c (mips_ls2): New static variable.
14353         (mips_issue_rate): Update to handle tuning for Loongson 2E/2F.
14354         (mips_ls2_init_dfa_post_cycle_insn, mips_init_dfa_post_cycle_insn)
14355         (sched_ls2_dfa_post_advance_cycle, mips_dfa_post_advance_cycle):
14356         Implement target scheduling hooks.
14357         (mips_multipass_dfa_lookahead): Update to handle tuning for
14358         Loongson 2E/2F.
14359         (mips_sched_init): Initialize data for Loongson scheduling.
14360         (mips_ls2_variable_issue): New static function.
14361         (mips_variable_issue): Update to handle tuning for Loongson 2E/2F.
14362         Add sanity check.
14363         (TARGET_SCHED_INIT_DFA_POST_CYCLE_INSN)
14364         (TARGET_SCHED_DFA_POST_ADVANCE_CYCLE): Override target hooks.
14365         * config/mips/mips.h (TUNE_LOONGSON_2EF): New macros.
14366         (ISA_HAS_XFER_DELAY, ISA_HAS_FCMP_DELAY, ISA_HAS_HILO_INTERLOCKS):
14367         Handle ST Loongson 2E/2F cores.
14368         (CPU_UNITS_QUERY): Define macro to enable querying of DFA units.
14369
14370 2008-06-15  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
14371
14372         * omp-low.c (extract_omp_for_data): Fix comment typo.
14373         * c.opt: Fix typo.
14374
14375 2008-06-15  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
14376
14377         * doc/sourcebuild.texi (Config Fragments): Remove obsolete
14378         FIXME note about gcc/config.guess.
14379         * doc/options.texi (Option file format): Remove non-ASCII bytes.
14380         * doc/cpp.texi: Expand TABs, drop indentation outside examples.
14381         * doc/cppopts.texi: Likewise.
14382         * doc/extend.texi: Likewise.
14383         * doc/gcc.texi: Likewise.
14384         * doc/gccint.texi: Likewise.
14385         * doc/gcov.texi: Likewise.
14386         * doc/gty.texi: Likewise.
14387         * doc/hostconfig.texi: Likewise.
14388         * doc/install.texi: Likewise.
14389         * doc/invoke.texi: Likewise.
14390         * doc/loop.texi: Likewise.
14391         * doc/makefile.texi: Likewise.
14392         * doc/md.texi: Likewise.
14393         * doc/passes.texi: Likewise.
14394         * doc/tm.texi: Likewise.
14395         * doc/tree-ssa.texi: Likewise.
14396         * doc/trouble.texi: Likewise.
14397
14398 2008-06-15  Mark Shinwell  <shinwell@codesourcery.com>
14399             Nathan Sidwell  <nathan@codesourcery.com>
14400             Maxim Kuvyrkov  <maxim@codesourcery.com>
14401             Richard Sandiford  <rdsandiford@googlemail.com>
14402
14403         * config/mips/mips-modes.def: Add V8QI, V4HI and V2SI modes.
14404         * config/mips/mips-protos.h (mips_expand_vector_init): New.
14405         * config/mips/mips-ftypes.def: Add function types for Loongson-2E/2F
14406         builtins.
14407         * config/mips/mips.c (mips_split_doubleword_move): Handle new modes.
14408         (mips_hard_regno_mode_ok_p): Allow 64-bit vector modes for Loongson.
14409         (mips_vector_mode_supported_p): Add V2SImode, V4HImode and
14410         V8QImode cases.
14411         (LOONGSON_BUILTIN, LOONGSON_BUILTIN_ALIAS): New.
14412         (CODE_FOR_loongson_packsswh, CODE_FOR_loongson_packsshb,
14413         (CODE_FOR_loongson_packushb, CODE_FOR_loongson_paddw,
14414         (CODE_FOR_loongson_paddh, CODE_FOR_loongson_paddb,
14415         (CODE_FOR_loongson_paddsh, CODE_FOR_loongson_paddsb)
14416         (CODE_FOR_loongson_paddush, CODE_FOR_loongson_paddusb)
14417         (CODE_FOR_loongson_pmaxsh, CODE_FOR_loongson_pmaxub)
14418         (CODE_FOR_loongson_pminsh, CODE_FOR_loongson_pminub)
14419         (CODE_FOR_loongson_pmulhuh, CODE_FOR_loongson_pmulhh)
14420         (CODE_FOR_loongson_biadd, CODE_FOR_loongson_psubw)
14421         (CODE_FOR_loongson_psubh, CODE_FOR_loongson_psubb)
14422         (CODE_FOR_loongson_psubsh, CODE_FOR_loongson_psubsb)
14423         (CODE_FOR_loongson_psubush, CODE_FOR_loongson_psubusb)
14424         (CODE_FOR_loongson_punpckhbh, CODE_FOR_loongson_punpckhhw)
14425         (CODE_FOR_loongson_punpckhwd, CODE_FOR_loongson_punpcklbh)
14426         (CODE_FOR_loongson_punpcklhw, CODE_FOR_loongson_punpcklwd): New.
14427         (mips_builtins): Add Loongson builtins.
14428         (mips_loongson_2ef_bdesc): New.
14429         (mips_bdesc_arrays): Add mips_loongson_2ef_bdesc.
14430         (mips_builtin_vector_type): Handle unsigned versions of vector modes.
14431         (MIPS_ATYPE_UQI, MIPS_ATYPE_UDI, MIPS_ATYPE_V2SI, MIPS_ATYPE_UV2SI)
14432         (MIPS_ATYPE_V4HI, MIPS_ATYPE_UV4HI, MIPS_ATYPE_V8QI, MIPS_ATYPE_UV8QI):
14433         New.
14434         (mips_expand_vector_init): New.
14435         * config/mips/mips.h (HAVE_LOONGSON_VECTOR_MODES): New.
14436         (TARGET_CPU_CPP_BUILTINS): Define __mips_loongson_vector_rev
14437         if appropriate.
14438         * config/mips/mips.md: Add unspec numbers for Loongson
14439         builtins.  Include loongson.md.
14440         (MOVE64): Include Loongson vector modes.
14441         (SPLITF): Include Loongson vector modes.
14442         (HALFMODE): Handle Loongson vector modes.
14443         * config/mips/loongson.md: New.
14444         * config/mips/loongson.h: New.
14445         * config.gcc: Add loongson.h header for mips*-*-* targets.
14446         * doc/extend.texi (MIPS Loongson Built-in Functions): New.
14447
14448 2008-06-14  Joseph Myers  <joseph@codesourcery.com>
14449
14450         * config.gcc (arc-*-elf*, avr-*-*, fr30-*-elf, frv-*-elf,
14451         h8300-*-elf*, h8300-*-*, i[34567]86-*-elf*, x86_64-*-elf*,
14452         i[34567]86-*-aout*, i[34567]86-*-coff*, ia64*-*-elf*,
14453         iq2000*-*-elf*, m32r-*-elf*, m32rle-*-elf*, m32r-*-linux*,
14454         m32rle-*-linux*, m68hc11-*-*|m6811-*-*, m68hc12-*-*|m6812-*-*,
14455         m68k-*-coff*, mcore-*-elf, mcore-*-pe*, mipsisa64sr71k-*-elf*,
14456         mipsisa64sb1-*-elf* | mipsisa64sb1el-*-elf*, mips-*-elf* |
14457         mipsel-*-elf*, mips64-*-elf* | mips64el-*-elf*, mips64vr-*-elf* |
14458         mips64vrel-*-elf*, mips64orion-*-elf* | mips64orionel-*-elf*,
14459         mipstx39-*-elf* | mipstx39el-*-elf*, mn10300-*-*, pdp11-*-,
14460         powerpc-*-elf*, powerpcle-*-elf*, sh-*-elf* | sh[12346l]*-*-elf* |
14461         sh-*-symbianelf* | sh[12346l]*-*-symbianelf* | sh-*-linux* |
14462         sh[2346lbe]*-*-linux* | sh-*-netbsdelf* | shl*-*-netbsdelf* |
14463         sh5-*-netbsd* | sh5l*-*-netbsd* | sh64-*-netbsd* |
14464         sh64l*-*-netbsd*, sh-*-*, sparc-*-elf*, sparc64-*-elf*,
14465         v850e1-*-*, v850e-*-*, v850-*-*, xstormy16-*-elf, m32c-*-elf*):
14466         Remove use_fixproto=yes.
14467         (ia64*-*-hpux*): Remove comment about using fixproto.
14468         (m68k-*-uclinuxoldabi*, m68k-*-uclinux*): Remove use_fixproto=no.
14469
14470 2008-06-14  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
14471
14472         * configure.ac: Update gthr-default.h lazily, to avoid unneeded
14473         library rebuilds.
14474         * configure: Regenerate.
14475
14476 2008-06-13  Eric Botcazou  <ebotcazou@adacore.com>
14477
14478         PR middle-end/36520
14479         * builtins.c (get_memory_rtx): Test for the presence of DECL_SIZE_UNIT
14480         before evaluating it.
14481
14482 2008-06-13  Jakub Jelinek  <jakub@redhat.com>
14483
14484         PR c/36507
14485         * c-decl.c (merge_decls): Don't clear DECL_EXTERNAL for
14486         nested inline functions.
14487         (start_decl, start_function): Don't invert DECL_EXTERNAL
14488         for nested inline functions.
14489
14490 2008-06-13  Richard Sandiford  <rdsandiford@googlemail.com>
14491
14492         * config/mips/mips.md: Remove TARGET_DEBUG_D_MODE conditions from
14493         splits that must be made for correctness.
14494
14495 2008-06-13  Richard Sandiford  <rdsandiford@googlemail.com>
14496
14497         * config/mips/mips.c (BUILTIN_AVAIL_NON_MIPS16): New macro.
14498         (AVAIL_NON_MIPS16): Likewise.
14499         (mips_builtin_description): Replace target_flags with a predicate.
14500         (paired_single, sb1_paired_single, mips3d, dsp, dspr2, dsp_32)
14501         (dspr2_32): New availability predicates.
14502         (MIPS_BUILTIN): New macro.
14503         (DIRECT_BUILTIN, CMP_SCALAR_BUILTINS, CMP_PS_BUILTINS)
14504         (CMP_4S_BUILTINS, MOVTF_BUILTINS, CMP_BUILTINS)
14505         (DIRECT_NO_TARGET_BUILTIN, BPOSGE_BUILTIN): Use it.
14506         Replace the TARGET_FLAGS parameters with AVAIL parameters.
14507         (mips_ps_bdesc, mips_sb1_bdesc, mips_dsp_bdesc)
14508         (mips_dsp_32only_bdesc): Merge into...
14509         (mips_builtins): ...this new array.
14510         (mips_bdesc_map, mips_bdesc_arrays): Delete.
14511         (mips_init_builtins): Update after above changes.
14512         (mips_expand_builtin_1): Merge into...
14513         (mips_expand_builtin): ...here and update after above changes.
14514
14515 2008-06-12  Paul Brook  <paul@codesourcery.com>
14516
14517         * longlong.h (__arm__): Define count_leading_zeros.
14518         * config/arm/lib1funcs.asm (xxh, xxl, yyh, yyl): Define.
14519         (clzsi2, clzdi2): New functions.
14520         * config/arm/bpabi-v6m.S (xxh, xxl, yyh, yyl): Remove.
14521         * config/arm/bpabi.S (xxh, xxl, yyh, yyl): Remove.
14522         * config/arm/t-strongarm-elf (LIB1ASMFUNCS): Ditto.
14523         * config/arm/t-vxworks (LIB1ASMFUNCS): Ditto.
14524         * config/arm/t-pe (LIB1ASMFUNCS): Ditto.
14525         * config/arm/t-arm-elf (LIB1ASMFUNCS): Ditto.
14526         * config/arm/t-arm-coff (LIB1ASMFUNCS): Ditto.
14527         * config/arm/t-linux (LIB1ASMFUNCS): Ditto.
14528         * config/arm/t-symbian (LIB1ASMFUNCS): Ditto.
14529         * config/arm/t-wince-pe (LIB1ASMFUNCS): Ditto.
14530
14531 2008-06-12  Kazu Hirata  <kazu@codesourcery.com>
14532
14533         * config/m68k/m68k.c (m68k_tune_flags): New.
14534         (override_options): Compute m68k_tune_flags.
14535         (MULL_COST, MULW_COST): Update for various variants of CFV2.
14536         * config/m68k/m68k.h (TUNE_MAC, TUNE_EMAC): New.
14537
14538 2008-06-12  Jakub Jelinek  <jakub@redhat.com>
14539
14540         PR middle-end/36506
14541         * omp-low.c (expand_omp_sections): Initialize l2 to avoid bogus warning.
14542
14543 2008-06-12  Eric Botcazou  <ebotcazou@adacore.com>
14544
14545         * tree-inline.c (copy_body_r): Copy TREE_SIDE_EFFECTS along with
14546         TREE_THIS_VOLATILE on INDIRECT_REF nodes.
14547
14548 2008-06-12  Eric Botcazou  <ebotcazou@adacore.com>
14549
14550         * expr.c (store_field): Do a block copy from BLKmode to BLKmode-like.
14551         (get_inner_reference): Use BLKmode for byte-aligned BLKmode bitfields.
14552
14553 2008-06-12  Jakub Jelinek  <jakub@redhat.com>
14554
14555         PR middle-end/36506
14556         * omp-low.c (expand_omp_sections): Handle #pragma omp sections with
14557         reductions.
14558
14559 2008-06-12  Richard Guenther  <rguenther@suse.de>
14560
14561         PR tree-optimization/36345
14562         * tree-flow.h (struct ptr_info_def): Align escape_mask,
14563         add memory_tag_needed flag.
14564         (may_alias_p): Declare.
14565         * tree-ssa-alias.c (may_alias_p): Export.
14566         (set_initial_properties): Use memory_tag_needed flag.
14567         (update_reference_counts): Likewise.
14568         (reset_alias_info): Reset memory_tag_needed flag.
14569         (create_name_tags): Check memory_tag_needed flag.
14570         (dump_points_to_info_for): Dump it.
14571         * tree-ssa-structalias.c (struct variable_info): Remove
14572         directly_dereferenced flag.
14573         (new_var_info): Do not initialize it.
14574         (process_constraint_1): Do not set it.
14575         (update_alias_info): Set is_dereferenced flag.
14576         (set_uids_in_ptset): Use may_alias_p.
14577         (set_used_smts): Check memory_tag_needed flag.
14578         (find_what_p_points_to): Likewise.  Pass is_dereferenced flag.
14579         * tree-ssa-alias.c (verify_flow_sensitive_alias_info): Check
14580         memory_tag_needed flag.
14581         * tree-ssa-alias-warnings.c (dsa_named_for): Try to recover
14582         from broken design.
14583
14584 2008-06-12  Kai Tietz  <kai.tietz@onevision.com>
14585
14586         * config/i386/i386.c (ix86_compute_frame_layout): Disable
14587         red zone for w64 abi.
14588         (ix86_expand_prologue): Likewise.
14589         (ix86_force_to_memory): Likewise.
14590         (ix86_free_from_memory): Likewise.
14591
14592 2008-06-11  Edmar Wienskoski  <edmar@freescale.com>
14593
14594         PR target/36425
14595         * config/rs6000/rs6000.c (rs6000_override_options): Set
14596         rs6000_isel conditionally to the absence of comand line override.
14597         * config/rs6000/linuxspe.h (SUBSUBTARGET_OVERRIDE_OPTIONS):
14598         Remove duplicate rs6000_isel setting.
14599         * config/rs6000/eabispe.h: Ditto.
14600
14601 2008-06-11  Richard Guenther  <rguenther@suse.de>
14602
14603         * alias.c (get_alias_set): Use the element alias-set for arrays.
14604         (record_component_aliases): For arrays and vectors do nothing.
14605         * c-common.c (strict_aliasing_warning): Handle the cases
14606         of alias set zero explicitly.
14607         * Makefile.in (dfp.o-warn): Add -Wno-error.
14608
14609 2008-06-11  Joseph Myers  <joseph@codesourcery.com>
14610
14611         * config.gcc (all_defaults): Add arch_32 arch_64 cpu_32 cpu_64
14612         tune_32 tune_64.
14613         (i[34567]86-*-* | x86_64-*-*): Add arch_32 arch_64 cpu_32 cpu_64
14614         tune_32 tune_64 to supported_defaults.  Allow values not
14615         supporting 64-bit mode for arch_32, cpu_32 and tune_32 for
14616         x86_64.  Do not override cpu_32 or cpu_64 values from target name.
14617         (i[34567]86-*-linux*, i[34567]86-*-solaris2.1[0-9]*): Only default
14618         with_cpu_64 to generic for 64-bit-supporting configurations, not
14619         with_cpu.  Remove FIXMEs.
14620         * doc/install.texi (--with-cpu-32, --with-cpu-64, --with-arch-32,
14621         --with-arch-64, --with-tune-32, --with-tune-64): Document.
14622         * config/i386/i386.h (OPT_ARCH32, OPT_ARCH64): Define.
14623         (OPTION_DEFAULT_SPECS): Add tune_32, tune_64, cpu_32, cpu_64,
14624         arch_32 and arch_64.
14625
14626 2008-06-11  Eric Botcazou  <ebotcazou@adacore.com>
14627             Olivier Hainque  <hainque@adacore.com>
14628
14629         * builtins.c (get_memory_rtx): Accept byte-addressable bitfields.
14630         Use DECL_SIZE_UNIT to retrieve the size of the field.
14631
14632 2008-06-11  Joseph Myers  <joseph@codesourcery.com>
14633
14634         * config/arm/arm.c (arm_init_neon_builtins): Move initialization
14635         with function calls after declarations.  Lay out
14636         neon_float_type_node before further use.
14637
14638 2008-06-11  Richard Guenther  <rguenther@suse.de>
14639
14640         * tree-flow.h (may_point_to_global_var): Declare.
14641         * tree-ssa-alias.c (may_point_to_global_var): New function.
14642         * tree-ssa-sink.c (is_hidden_global_store): Use it.
14643
14644 2008-06-10  Kazu Hirata  <kazu@codesourcery.com>
14645
14646         * configure.ac: Teach that fido supports .debug_line.
14647         * configure: Regenerate.
14648
14649 2008-06-10  Tom Tromey  <tromey@redhat.com>
14650
14651         * c-lex.c (fe_file_change): Pass SOURCE_LINE to start_source_file
14652         debug hook.
14653
14654 2008-06-10  Joseph Myers  <joseph@codesourcery.com>
14655
14656         * dfp.c (WORDS_BIGENDIAN): Define to 0 if not defined.
14657         (encode_decimal64, decode_decimal64, encode_decimal128,
14658         decode_decimal128): Reverse order of 32-bit parts of value if host
14659         and target endianness differ.
14660
14661 2008-06-10  Vinodha Ramasamy  <vinodha@google.com>
14662
14663         * value_prob.c (tree_divmod_fixed_value_transform): Use gcov_type.
14664         Avoid division by 0.
14665         (tree_mod_pow2_value_transform): Likewise.
14666         (tree_ic_transform): Likewise.
14667         (tree_stringops_transform): Likewise.
14668         (tree_mod_subtract_transform): Likewise.
14669         * tree-inline-c (copy_bb): Corrected int type to gcov_type.
14670         (copy_edges_for_bb): Likewise.
14671         (initialize_cfun): Likewise.
14672
14673 2008-06-10  Uros Bizjak  <ubizjak@gmail.com>
14674
14675         * config/i386/i386.md (*btdi_rex64): Change operand 1 predicate to
14676         nonmemory_operand. Add "N" operand constraint.
14677         (*btsi): Ditto.
14678         (*jcc_btdi_mask_rex64): New instruction and split pattern.
14679         (*jcc_btsi_mask): Ditto.
14680         (*jcc_btsi_mask_1): Ditto.
14681
14682 2008-06-10  Joseph Myers  <joseph@codesourcery.com>
14683
14684         * config/rs6000/rs6000.c (build_opaque_vector_type): Set
14685         TYPE_CANONICAL for copied element type.
14686
14687 2008-06-10  Uros Bizjak  <ubizjak@gmail.com>
14688
14689         PR target/36473
14690         * config/i386/i386.c (ix86_tune_features) [TUNE_USE_BT]:
14691         Add m_CORE2 and m_GENERIC.
14692         * config/i386/predicates.md (bt_comparison_operator): New predicate.
14693         * config/i386/i386.md (*btdi_rex64): New instruction pattern.
14694         (*btsi): Ditto.
14695         (*jcc_btdi_rex64): New instruction and split pattern.
14696         (*jcc_btsi): Ditto.
14697         (*jcc_btsi_1): Ditto.
14698         (*btsq): Fix Intel asm dialect operand order.
14699         (*btrq): Ditto.
14700         (*btcq): Ditto.
14701
14702 2008-06-09  Andy Hutchinson  <hutchinsonandy@aim.com>
14703
14704         PR middle-end/36447
14705         * simplify-rtx.c (simplify_subreg): Add check for shift count
14706         greater than size.
14707
14708 2008-06-09  Richard Sandiford  <rdsandiford@googlemail.com>
14709
14710         * doc/md.texi: Synchronize with later constraints.md change.
14711         * longlong.h (umul_ppmm): Replace the MIPS asm implementation
14712         with a C implementation.
14713         * config/mips/mips.c (mips_legitimize_move): Remove MFHI and
14714         MFLO handling.
14715         (mips_subword): Assume TImode for CONST_INTs if TARGET_64BIT.
14716         (mips_split_doubleword_move): Use special MTHI and MFHI instructions
14717         when moving to and from MD_REGNUM.
14718         (mips_output_move): Don't handle moves from GPRs to HI_REGNUM.
14719         Handle moves from LO_REGNUM to GPRs using MFLO, MACC or DMACC.
14720         Handle byte and halfword moves.
14721         (mips_hard_regno_mode_ok_p): Handle MD_REGS and DSP_ACC_REGS
14722         separately.
14723         * config/mips/constraints.md (h): Turn into NO_REGS.
14724         (l, x): Update documentation.
14725         * config/mips/mips.md (UNSPEC_MFHILO): Delete.
14726         (UNSPEC_MFHI, UNSPEC_MTHI, UNSPEC_SET_HILO): New.
14727         (UNSPEC_TLS_LDM, UNSPEC_TLS_GET_TP): Renumber.
14728         (HILO): New mode iterator.
14729         (MOVE128): Add TI.
14730         (any_div): New code iterator.
14731         (u): Extend code attribute to div and udiv.
14732         (*add<mode>3_mips16, *movdi_64bit_mips16, *movsi_mips16): Use
14733         d_operand in the splitters.  Remove redundant CONST_INT checks.
14734         (mulsi3_mult3, mul<mode>3_internal, mul<mode>3_r4000, *mul_acc_si)
14735         (*macc, *msac, *msac_using_macc, *macc2, *msac2, *mul_sub_si)
14736         (*muls): Remove "=h" clobbers.  Adjust peephole2s and define_splits
14737         accordingly, using normal moves instead of unspecs to move LO into
14738         a GPR.  Use d_operand and lo_operand instead of *_REG_P checks.
14739         (<u>mulsidi3): Handle expansion in C code.
14740         (<u>mulsidi3_32bit_internal): Rename to...
14741         (<u>mulsidi3_32bit): ...this.
14742         (<u>mulsidi3_32bit_r4000): Fix insn separator.
14743         (*<u>mulsidi3_64bit): Rename to...
14744         (<u>mulsidi3_64bit): ...this.  Combine DImode "=h" and "=l" clobbers
14745         into a TImode "=x" clobber.  In the split, use an UNSPEC_SET_HILO
14746         to set LO and HI to the multiplication result.  Use a normal move
14747         for MFLO and an unspec for MFHI.
14748         (*<u>mulsidi3_64bit_parts): Replace with...
14749         (<u>mulsidi3_64bit_hilo): ...this new instruction.
14750         (<su>mulsi3_highpart): Extend to TARGET_FIX_R4000.
14751         (<su>mulsi3_highpart_internal): Turn into a define_insn_and_split
14752         and extend it to TARGET_FIX_R4000.  Store the destination in a GPR
14753         instead of HI.  Split the instruction into a separate multiplication
14754         and MFHI if !TARGET_FIX_R4000.
14755         (<su>muldi3_highpart): Likewise.
14756         (<su>mulsi3_highpart_mulhi_internal): Remove the first alternative
14757         and the "=h" clobber.
14758         (*<su>mulsi3_highpart_neg_mulhi_internal): Likewise.
14759         (<u>mulditi3): New expander.
14760         (<u>mulditi3_internal, <u>mulditi3_r4000): New patterns.
14761         (madsi): Remove "=h" clobber.
14762         (divmod<mode>4, udivmod<mode>4): Turn into define_insn_and_splits.
14763         Force the modulus result to be a GPR and split the instruction into
14764         a division followed by an MFHI after reload.
14765         (<u>divmod<GPR:mode>4_hilo_<HILO:mode>): New instruction.
14766         (*lea_high64): Use d_operand in the define_peephole2.  Likewise
14767         the MIPS16 HIGH define_split.
14768         (*movdi_32bit, *movdi_gp32_fp64, *movdi_32bit_mips16): Change type
14769         of acc<->gpr moves to "multi".
14770         (*movdi_64bit): Replace the single "x" alternative with
14771         alternatives for moving into and out of "a".
14772         (*movhi_internal, *movqi_internal): Likewise.  Use mips_output_move.
14773         (*movsi_internal): Extend the "d<-A" alternative to "d<-a".
14774         (*movdi_64bit_mips16, *movsi_mips16): Add d<-a alternatives.
14775         Use d_operand in the splitters.  Remove redundant CONST_INT checks.
14776         (*movhi_mips16, *movqi_mips16): Likewise.  Use mips_output_move.
14777         (movti): New expander.
14778         (*movti, *movti_mips16): New insns.
14779         (mfhilo_<mode>, *mfhilo_<mode>, *mfhilo_<mode>_macc): Delete.
14780         (mfhi<GPR:mode>_<HILO:mode>): New pattern.
14781         (mthi<GPR:mode>_<HILO:mode>): Likewise.
14782         * config/mips/predicates.md (fpr_operand): Delete.
14783         (d_operand): New predicate.
14784
14785 2008-06-09  Michael Meissner  <michael.meissner@amd.com>
14786
14787         * config.gcc (i[34567]86-*-*): Put test in quotes to prevent
14788         failure on some Bourne shells.
14789         (x86_64-*-*): Ditto.
14790
14791 2008-06-09  Kai Tietz  <kai.tietz@onevision.com>
14792
14793         * config/i386/cygming.h (TARGET_SUBTARGET64_DEFAULT): New.
14794
14795 2008-06-09  Eric Botcazou  <ebotcazou@libertysurf.fr>
14796
14797         * doc/install.texi (*-*-solaris2*): Remove obsolete contents.
14798         (sparc-sun-solaris2*): Likewise.
14799
14800 2008-06-09  Arnaud Charlet  <charlet@adacore.com
14801
14802         * doc/install.texi: Update requirements to build the Ada compiler.
14803
14804 2008-06-08  Steven Bosscher  <stevenb.gcc@gmail.com>
14805
14806         * df-scan.c (struct df_scan_problem_data): Remove the
14807         mw_link_pool alloc pool.
14808         (df_scan_free_internal): Don't free it.
14809         (df_scan_alloc): Don't allocate it.
14810         * df.h (struct df_link): Update comment.
14811
14812 2008-06-08  Nathan Sidwell  <nathan@codesourcery.com>
14813
14814         * except.h: Correct checks for when SJLJ exceptions must be used.
14815
14816 2008-06-08  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
14817
14818         * doc/invoke.texi (Wenum-compare): Mention that it is enabled by
14819         default.
14820
14821 2008-06-08  Joseph Myers  <joseph@codesourcery.com>
14822
14823         PR tree-optimization/36218
14824         * configure.ac: Use LDFLAGS="${LDFLAGS_FOR_BUILD}" when running
14825         configure for the build system.
14826         (BUILD_LDFLAGS): Define.
14827         * configure: Regenerate.
14828         * Makefile.in (BUILD_LDFLAGS): Define to @BUILD_LDFLAGS@.
14829
14830 2008-07-08  Anatoly Sokolov  <aesok@post.ru>
14831
14832         PR target/36424
14833         * config/avr/avr.h (HARD_REGNO_RENAME_OK): Define.
14834         * config/avr/avr.c (avr_hard_regno_rename_ok): New function.
14835         * config/avr/avr-protos.h (avr_hard_regno_rename_ok): New prototype.
14836
14837 2008-06-07  Danny Smith  <dannysmith@users.sourceforge.net>
14838
14839         * config/i386/cygming.h (MAYBE_UWIN_CPP_BUILTINS): Remove.
14840
14841 2008-06-07  Joseph Myers  <joseph@codesourcery.com>
14842
14843         * config.gcc (Obsolete configurations): Remove list of
14844         configurations.
14845         (Unsupported targets list): Add *-*-linux*aout*, *-*-linux*libc1*,
14846         *-*-solaris2.[0-6], *-*-solaris2.[0-6].*, *-*-sysv*.  Remove other
14847         targets matched by those patterns.
14848         (strongarm*-*-*, ep9312*-*-*, xscale-*-*, parisc*-*-*,
14849         m680[012]0-*-*, *-*-linux*libc1*, *-*-linux*aout*,
14850         alpha*-*-unicosmk*, strongarm*-*-freebsd*, ep9312-*-elf,
14851         arm*-*-kaos*, cris-*-aout, parisc*64*-*-linux*, parisc*-*-linux*,
14852         hppa1.1-*-pro*, hppa1.1-*-osf*, hppa1.1-*-bsd*,
14853         i[34567]86-sequent-ptx4*, i[34567]86-sequent-sysv4*,
14854         i[34567]86-*-beoself*, i[34567]86-*-beos*, i[34567]86-*-sco3.2v5*,
14855         i[34567]86-*-sysv5*, i[34567]86-*-sysv4*, i[34567]86-*-uwin*,
14856         i[34567]86-*-kaos*, m68020-*-elf*, m68010-*-netbsdelf*,
14857         mips-wrs-windiss, mt-*-elf, powerpc-*-beos*, powerpc-*-chorusos*,
14858         powerpc-wrs-windiss*, powerpcle-*-sysv*, powerpc-*-kaos*,
14859         powerpcle-*-kaos*, sh*-*-kaos*, sparc-*-sysv4*, strongarm-*-elf*,
14860         strongarm-*-pe, strongarm-*-kaos*, vax-*-bsd*, vax-*-sysv*,
14861         vax-*-ultrix*, xscale-*-elf, xscale-*-coff,
14862         i[34567]86-*-linux*aout*, i[34567]86-*-linux*libc1): Remove.
14863         Make code for Solaris 7 and greater unconditional for Solaris.
14864         (ep9312-*-*, parisc1*, m680[012]0-*-*, parisc*-*-*, mt-*-*):
14865         Remove --with-* handling.
14866         * config/rs6000/sysv4.h (-mwindiss): Remove from all specs.
14867         (LIB_WINDISS_SPEC, CPP_OS_WINDISS_SPEC, STARTFILE_WINDISS_SPEC,
14868         ENDFILE_WINDISS_SPEC, LINK_START_WINDISS_SPEC,
14869         LINK_OS_WINDISS_SPEC): Remove.
14870         * config/rs6000/sysv4.opt (mwindiss): Remove.
14871         * configure.ac (strongarm*-*-*, xscale*-*-*): Remove.
14872         * configure: Regenerate.
14873         * doc/cpp.texi: Don't mention BeOS.
14874         * doc/extend.texi (interrupt): Don't mention MS1.
14875         * doc/install.texi: (i386-@var{any}-sysv, m68k-bull-sysv,
14876         m68k-hp-hpux, m68000-hp-hpux, m68000-att-sysv,
14877         alphaev5-cray-unicosmk*, xscale-*-*, i?86-*-linux*aout,
14878         i?86-*-sco3.2v5*, i?86-*-udk, m68k-hp-hpux, powerpc-*-sysv4,
14879         powerpc-*-sysv4, powerpcle-*-sysv4, *-*-sysv*, vax-dec-ultrix):
14880         Remove.
14881         * doc/invoke.texi (MT Options): Remove.
14882         (-mwindiss): Remove.
14883         (CRIS Options): Remove cris-axis-aout references.
14884         (HPPA Options): Don't mention hppa1.1-*-pro.
14885         * doc/md.texi: (MorphoTech family): Remove.
14886         * libgcc2.c: Don't handle UWIN.
14887         * config/alpha/t-unicosmk: Remove.
14888         * config/alpha/unicosmk.h: Remove.
14889         * config/arm/kaos-arm.h: Remove.
14890         * config/arm/kaos-strongarm.h: Remove.
14891         * config/arm/strongarm-coff.h: Remove.
14892         * config/arm/strongarm-elf.h: Remove.
14893         * config/arm/strongarm-pe.h: Remove.
14894         * config/arm/t-strongarm-pe: Remove.
14895         * config/arm/t-xscale-coff: Remove.
14896         * config/arm/t-xscale-elf: Remove.
14897         * config/arm/xscale-coff.h: Remove.
14898         * config/arm/xscale-elf.h: Remove.
14899         * config/chorus.h: Remove.
14900         * config/cris/aout.h: Remove.
14901         * config/cris/aout.opt: Remove.
14902         * config/cris/t-aout: Remove.
14903         * config/i386/beos-elf.h: Remove.
14904         * config/i386/kaos-i386.h: Remove.
14905         * config/i386/ptx4-i.h: Remove.
14906         * config/i386/sco5.h: Remove.
14907         * config/i386/sco5.opt: Remove.
14908         * config/i386/sysv4-cpp.h: Remove.
14909         * config/i386/sysv5.h: Remove.
14910         * config/i386/t-beos: Remove.
14911         * config/i386/t-sco5: Remove.
14912         * config/i386/t-uwin: Remove.
14913         * config/i386/uwin.asm: Remove.
14914         * config/i386/uwin.h: Remove.
14915         * config/kaos.h: Remove.
14916         * config/mips/windiss.h: Remove.
14917         * config/mt: Remove directory.
14918         * config/pa/pa-osf.h: Remove.
14919         * config/pa/pa-pro-end.h: Remove.
14920         * config/pa/t-pro: Remove.
14921         * config/ptx4.h: Remove.
14922         * config/rs6000/beos.h: Remove.
14923         * config/rs6000/kaos-ppc.h: Remove.
14924         * config/rs6000/t-beos: Remove.
14925         * config/rs6000/windiss.h: Remove.
14926         * config/sh/kaos-sh.h: Remove.
14927         * config/sol2-6.h: Remove.
14928         * config/sparc/sol26-sld.h: Remove.
14929         * config/sparc/sysv4-only.h: Remove.
14930         * config/vax/bsd.h: Remove.
14931         * config/vax/t-memfuncs: Remove.
14932         * config/vax/ultrix.h: Remove.
14933         * config/vax/vaxv.h: Remove.
14934         * config/windiss.h: Remove.
14935
14936 2008-06-06  Uros Bizjak <ubizjak@gmail.com>
14937
14938         PR rtl-optimization/36438
14939         * cse.c (fold_rtx) [ASHIFT, LSHIFTRT, ASHIFTRT]: Break out early
14940         for vector shifts with constant scalar shift operands.
14941
14942 2008-06-06  Sandip Matte  <sandip@rmicorp.com>
14943
14944         * doc/invoke.texi: Document -march=xlr.
14945         * config/mips/xlr.md: New file.
14946         * config/mips/mips.md: Include it.
14947         (cpu): Add "xlr".
14948         * config/mips/mips.h (PROCESSOR_XLR): New processor_type.
14949         * config/mips/mips.c (mips_cpu_info_table): Add an XLR entry.
14950         (mips_rtx_cost_data): Likewise.
14951
14952 2008-06-06  Nathan Froyd  <froydnj@codesourcery.com>
14953
14954         * config/rs6000/rs6000.c (rs6000_mode_dependent_address): Remove
14955         PRE_INC and PRE_DEC cases.
14956
14957 2008-06-06  Jakub Jelinek  <jakub@redhat.com>
14958
14959         PR rtl-optimization/36419
14960         * except.c (expand_resx_expr): Call do_pending_stack_adjust () before
14961         the emitting jump insn.
14962
14963         PR target/36362
14964         * gimplify.c (gimplify_expr) <case TRUTH_NOT_EXPR>: If *expr_p type
14965         is not bool, boolify the whole *expr_p and convert to the desired type.
14966
14967 2008-06-06  Jakub Jelinek  <jakub@redhat.com>
14968
14969         * c-cppbuiltin.c (c_cpp_builtins): Change _OPENMP value to 200805.
14970         * langhooks.h (struct lang_hooks_for_decls): Add omp_finish_clause.
14971         Add omp_private_outer_ref hook, add another argument to
14972         omp_clause_default_ctor hook.
14973         * langhooks-def.h (LANG_HOOKS_OMP_FINISH_CLAUSE): Define.
14974         (LANG_HOOKS_OMP_PRIVATE_OUTER_REF): Define.
14975         (LANG_HOOKS_OMP_CLAUSE_DEFAULT_CTOR): Change to
14976         hook_tree_tree_tree_tree_null.
14977         (LANG_HOOKS_DECLS): Add LANG_HOOKS_OMP_FINISH_CLAUSE and
14978         LANG_HOOKS_OMP_PRIVATE_OUTER_REF.
14979         * hooks.c (hook_tree_tree_tree_tree_null): New function.
14980         * hooks.h (hook_tree_tree_tree_tree_null): New prototype.
14981         * tree.def (OMP_TASK): New tree code.
14982         * tree.h (OMP_TASK_COPYFN, OMP_TASK_ARG_SIZE, OMP_TASK_ARG_ALIGN,
14983         OMP_CLAUSE_PRIVATE_OUTER_REF, OMP_CLAUSE_LASTPRIVATE_STMT,
14984         OMP_CLAUSE_COLLAPSE_ITERVAR, OMP_CLAUSE_COLLAPSE_COUNT,
14985         OMP_TASKREG_CHECK, OMP_TASKREG_BODY, OMP_TASKREG_CLAUSES,
14986         OMP_TASKREG_FN, OMP_TASKREG_DATA_ARG, OMP_TASK_BODY,
14987         OMP_TASK_CLAUSES, OMP_TASK_FN, OMP_TASK_DATA_ARG,
14988         OMP_CLAUSE_COLLAPSE_EXPR): Define.
14989         (enum omp_clause_default_kind): Add OMP_CLAUSE_DEFAULT_FIRSTPRIVATE.
14990         (OMP_DIRECTIVE_P): Add OMP_TASK.
14991         (OMP_CLAUSE_COLLAPSE, OMP_CLAUSE_UNTIED): New clause codes.
14992         (OMP_CLAUSE_SCHEDULE_AUTO): New schedule kind.
14993         * tree.c (omp_clause_code_name): Add OMP_CLAUSE_COLLAPSE
14994         and OMP_CLAUSE_UNTIED entries.
14995         (omp_clause_num_ops): Likewise.  Increase OMP_CLAUSE_LASTPRIVATE
14996         num_ops to 2.
14997         (walk_tree_1): Handle OMP_CLAUSE_COLLAPSE and OMP_CLAUSE_UNTIED.
14998         Walk OMP_CLAUSE_LASTPRIVATE_STMT.
14999         * tree-pretty-print.c (dump_omp_clause): Handle
15000         OMP_CLAUSE_SCHEDULE_AUTO, OMP_CLAUSE_UNTIED, OMP_CLAUSE_COLLAPSE,
15001         OMP_CLAUSE_DEFAULT_FIRSTPRIVATE.
15002         (dump_generic_node): Handle OMP_TASK and collapsed OMP_FOR loops.
15003         * c-omp.c (c_finish_omp_for): Allow pointer iterators.  Remove
15004         warning about unsigned iterators.  Change decl/init/cond/incr
15005         arguments to TREE_VECs, check arguments for all collapsed loops.
15006         (c_finish_omp_taskwait): New function.
15007         (c_split_parallel_clauses): Put OMP_CLAUSE_COLLAPSE clause to
15008         ws_clauses.
15009         * c-parser.c (c_parser_omp_for_loop): Parse collapsed loops.  Call
15010         default_function_array_conversion on init.  Add par_clauses argument.
15011         If decl is present in parallel's lastprivate clause, change it to
15012         shared and add lastprivate clause for decl to OMP_FOR_CLAUSES.
15013         Add clauses argument, on success set OMP_FOR_CLAUSES to it.  Look up
15014         collapse count in clauses.
15015         (c_parser_omp_for, c_parser_omp_parallel): Adjust
15016         c_parser_omp_for_loop callers.
15017         (OMP_FOR_CLAUSE_MASK): Add 1 << PRAGMA_OMP_CLAUSE_COLLAPSE.
15018         (c_parser_pragma): Handle PRAGMA_OMP_TASKWAIT.
15019         (c_parser_omp_clause_name): Handle collapse and untied clauses.
15020         (c_parser_omp_clause_collapse, c_parser_omp_clause_untied): New
15021         functions.
15022         (c_parser_omp_clause_schedule): Handle schedule(auto).
15023         Include correct location in the error message.
15024         (c_parser_omp_all_clauses): Handle PRAGMA_OMP_CLAUSE_COLLAPSE
15025         and PRAGMA_OMP_CLAUSE_UNTIED.
15026         (OMP_TASK_CLAUSE_MASK): Define.
15027         (c_parser_omp_task, c_parser_omp_taskwait): New functions.
15028         (c_parser_omp_construct): Handle PRAGMA_OMP_TASK.
15029         * tree-nested.c (convert_nonlocal_omp_clauses,
15030         convert_local_omp_clauses): Handle OMP_CLAUSE_LASTPRIVATE_STMT,
15031         OMP_CLAUSE_REDUCTION_INIT, OMP_CLAUSE_REDUCTION_MERGE,
15032         OMP_CLAUSE_COLLAPSE and OMP_CLAUSE_UNTIED.
15033         Don't handle TREE_STATIC or DECL_EXTERNAL VAR_DECLs in
15034         OMP_CLAUSE_DECL.
15035         (conver_nonlocal_reference, convert_local_reference,
15036         convert_call_expr): Handle OMP_TASK the same as OMP_PARALLEL.  Use
15037         OMP_TASKREG_* macros rather than OMP_PARALLEL_*.
15038         (walk_omp_for): Adjust for OMP_FOR_{INIT,COND,INCR} changes.
15039         * tree-gimple.c (is_gimple_stmt): Handle OMP_TASK.
15040         * c-tree.h (c_begin_omp_task, c_finish_omp_task): New prototypes.
15041         * c-pragma.h (PRAGMA_OMP_TASK, PRAGMA_OMP_TASKWAIT): New.
15042         (PRAGMA_OMP_CLAUSE_COLLAPSE, PRAGMA_OMP_CLAUSE_UNTIED): New.
15043         * c-typeck.c (c_begin_omp_task, c_finish_omp_task): New functions.
15044         (c_finish_omp_clauses): Handle OMP_CLAUSE_COLLAPSE and
15045         OMP_CLAUSE_UNTIED.
15046         * c-pragma.c (init_pragma): Init omp task and omp taskwait pragmas.
15047         * c-common.h (c_finish_omp_taskwait): New prototype.
15048         * gimple-low.c (lower_stmt): Handle OMP_TASK.
15049         * tree-parloops.c (create_parallel_loop): Create 1 entry
15050         vectors for OMP_FOR_{INIT,COND,INCR}.
15051         * tree-cfg.c (remove_useless_stmts_1): Handle OMP_* containers.
15052         (make_edges): Handle OMP_TASK.
15053         * tree-ssa-operands.c (get_expr_operands): Handle collapsed OMP_FOR
15054         loops, adjust for OMP_FOR_{INIT,COND,INCR} changes.
15055         * tree-inline.c (estimate_num_insns_1): Handle OMP_TASK.
15056         * builtin-types.def (BT_PTR_ULONGLONG, BT_PTR_FN_VOID_PTR_PTR,
15057         BT_FN_BOOL_ULONGLONGPTR_ULONGLONGPTR,
15058         BT_FN_BOOL_BOOL_ULL_ULL_ULL_ULLPTR_ULLPTR,
15059         BT_FN_BOOL_BOOL_ULL_ULL_ULL_ULL_ULLPTR_ULLPTR,
15060         BT_FN_VOID_OMPFN_PTR_OMPCPYFN_LONG_LONG_BOOL_UINT): New.
15061         * omp-builtins.def (BUILT_IN_GOMP_TASK, BUILT_IN_GOMP_TASKWAIT,
15062         BUILT_IN_GOMP_LOOP_ULL_STATIC_START,
15063         BUILT_IN_GOMP_LOOP_ULL_DYNAMIC_START,
15064         BUILT_IN_GOMP_LOOP_ULL_GUIDED_START,
15065         BUILT_IN_GOMP_LOOP_ULL_RUNTIME_START,
15066         BUILT_IN_GOMP_LOOP_ULL_ORDERED_STATIC_START,
15067         BUILT_IN_GOMP_LOOP_ULL_ORDERED_DYNAMIC_START,
15068         BUILT_IN_GOMP_LOOP_ULL_ORDERED_GUIDED_START,
15069         BUILT_IN_GOMP_LOOP_ULL_ORDERED_RUNTIME_START,
15070         BUILT_IN_GOMP_LOOP_ULL_STATIC_NEXT,
15071         BUILT_IN_GOMP_LOOP_ULL_DYNAMIC_NEXT,
15072         BUILT_IN_GOMP_LOOP_ULL_GUIDED_NEXT,
15073         BUILT_IN_GOMP_LOOP_ULL_RUNTIME_NEXT,
15074         BUILT_IN_GOMP_LOOP_ULL_ORDERED_STATIC_NEXT,
15075         BUILT_IN_GOMP_LOOP_ULL_ORDERED_DYNAMIC_NEXT,
15076         BUILT_IN_GOMP_LOOP_ULL_ORDERED_GUIDED_NEXT,
15077         BUILT_IN_GOMP_LOOP_ULL_ORDERED_RUNTIME_NEXT): New builtins.
15078         * gimplify.c (gimplify_omp_for): Allow pointer type for decl,
15079         handle POINTER_PLUS_EXPR.  If loop counter has been replaced and
15080         original iterator is present in lastprivate clause or if
15081         collapse > 1, set OMP_CLAUSE_LASTPRIVATE_STMT.  Handle collapsed
15082         OMP_FOR loops, adjust for OMP_FOR_{INIT,COND,INCR} changes.
15083         (gimplify_expr): Handle OMP_SECTIONS_SWITCH and OMP_TASK.
15084         (enum gimplify_omp_var_data): Add GOVD_PRIVATE_OUTER_REF.
15085         (omp_notice_variable): Set GOVD_PRIVATE_OUTER_REF if needed,
15086         if it is set, lookup var in outer contexts too.  Handle
15087         OMP_CLAUSE_DEFAULT_FIRSTPRIVATE.  Handle vars that are supposed
15088         to be implicitly determined firstprivate for task regions.
15089         (gimplify_scan_omp_clauses): Set GOVD_PRIVATE_OUTER_REF if needed,
15090         if it is set, lookup var in outer contexts too.  Set
15091         OMP_CLAUSE_PRIVATE_OUTER_REF if GOVD_PRIVATE_OUTER_REF is set.
15092         Handle OMP_CLAUSE_LASTPRIVATE_STMT, OMP_CLAUSE_COLLAPSE and
15093         OMP_CLAUSE_UNTIED.  Take region_type as last argument
15094         instead of in_parallel and in_combined_parallel.
15095         (gimplify_omp_parallel, gimplify_omp_for, gimplify_omp_workshare):
15096         Adjust callers.
15097         (gimplify_adjust_omp_clauses_1): Set OMP_CLAUSE_PRIVATE_OUTER_REF if
15098         GOVD_PRIVATE_OUTER_REF is set.  Call omp_finish_clause langhook.
15099         (new_omp_context): Set default_kind to
15100         OMP_CLAUSE_DEFAULT_UNSPECIFIED for OMP_TASK regions.
15101         (omp_region_type): New enum.
15102         (struct gimplify_omp_ctx): Remove is_parallel and is_combined_parallel
15103         fields, add region_type.
15104         (new_omp_context): Take region_type as argument instead of is_parallel
15105         and is_combined_parallel.
15106         (gimple_add_tmp_var, omp_firstprivatize_variable, omp_notice_variable,
15107         omp_is_private, omp_check_private): Adjust ctx->is_parallel and
15108         ctx->is_combined_parallel checks.
15109         (gimplify_omp_task): New function.
15110         (gimplify_adjust_omp_clauses): Handle OMP_CLAUSE_COLLAPSE and
15111         OMP_CLAUSE_UNTIED.
15112         * omp-low.c (extract_omp_for_data): Use schedule(static)
15113         for schedule(auto).  Handle pointer and unsigned iterators.
15114         Compute fd->iter_type.  Handle POINTER_PLUS_EXPR increments.
15115         Add loops argument.  Extract data for collapsed OMP_FOR loops.
15116         (expand_parallel_call): Assert sched_kind isn't auto,
15117         map runtime schedule to index 3.
15118         (struct omp_for_data_loop): New type.
15119         (struct omp_for_data): Remove v, n1, n2, step, cond_code fields.
15120         Add loop, loops, collapse and iter_type fields.
15121         (workshare_safe_to_combine_p): Disallow combined for if
15122         iter_type is unsigned long long.  Don't combine collapse > 1 loops
15123         unless all bounds and steps are constant.  Adjust extract_omp_for_data
15124         caller.
15125         (expand_omp_for_generic): Handle pointer, unsigned and long long
15126         iterators.  Handle collapsed OMP_FOR loops.  Adjust
15127         for struct omp_for_data changes.  If libgomp function doesn't return
15128         boolean_type_node, add comparison of the return value with 0.
15129         (expand_omp_for_static_nochunk, expand_omp_for_static_chunk): Handle
15130         pointer, unsigned and long long iterators.  Adjust for struct
15131         omp_for_data changes.
15132         (expand_omp_for): Assert sched_kind isn't auto, map runtime schedule
15133         to index 3.  Use GOMP_loop_ull*{start,next} if iter_type is
15134         unsigned long long.  Allocate loops array, pass it to
15135         extract_omp_for_data.  For collapse > 1 loops use always
15136         expand_omp_for_generic.
15137         (omp_context): Add sfield_map and srecord_type fields.
15138         (is_task_ctx, lookup_sfield): New functions.
15139         (use_pointer_for_field): Use is_task_ctx helper.  Change first
15140         argument's type from const_tree to tree.  Clarify comment.
15141         In OMP_TASK disallow copy-in/out sharing.
15142         (build_sender_ref): Call lookup_sfield instead of lookup_field.
15143         (install_var_field): Add mask argument.  Populate both record_type
15144         and srecord_type if needed.
15145         (delete_omp_context): Destroy sfield_map, clear DECL_ABSTRACT_ORIGIN
15146         in srecord_type.
15147         (fixup_child_record_type): Also remap FIELD_DECL's DECL_SIZE{,_UNIT}
15148         and DECL_FIELD_OFFSET.
15149         (scan_sharing_clauses): Adjust install_var_field callers.  For
15150         firstprivate clauses on explicit tasks allocate the var by value in
15151         record_type unconditionally, rather than by reference.
15152         Handle OMP_CLAUSE_PRIVATE_OUTER_REF.  Scan OMP_CLAUSE_LASTPRIVATE_STMT.
15153         Use is_taskreg_ctx instead of is_parallel_ctx.
15154         Handle OMP_CLAUSE_COLLAPSE and OMP_CLAUSE_UNTIED.
15155         (create_omp_child_function_name): Add task_copy argument, use
15156         *_omp_cpyfn* names if it is true.
15157         (create_omp_child_function): Add task_copy argument, if true create
15158         *_omp_cpyfn* helper function.
15159         (scan_omp_parallel): Adjust create_omp_child_function callers.
15160         Rename parallel_nesting_level to taskreg_nesting_level.
15161         (scan_omp_task): New function.
15162         (lower_rec_input_clauses): Don't run constructors for firstprivate
15163         explicit task vars which are initialized by *_omp_cpyfn*.
15164         Pass outer var ref to omp_clause_default_ctor hook if
15165         OMP_CLAUSE_PRIVATE_OUTER_REF or OMP_CLAUSE_LASTPRIVATE.
15166         Replace OMP_CLAUSE_REDUCTION_PLACEHOLDER decls in
15167         OMP_CLAUSE_REDUCTION_INIT.
15168         (lower_send_clauses): Clear DECL_ABSTRACT_ORIGIN if in task to
15169         avoid duplicate setting of fields.  Handle
15170         OMP_CLAUSE_PRIVATE_OUTER_REF.
15171         (lower_send_shared_vars): Use srecord_type if non-NULL.  Don't
15172         copy-out if TREE_READONLY, only copy-in.
15173         (expand_task_copyfn): New function.
15174         (expand_task_call): New function.
15175         (struct omp_taskcopy_context): New type.
15176         (task_copyfn_copy_decl, task_copyfn_remap_type, create_task_copyfn):
15177         New functions.
15178         (lower_omp_parallel): Rename to...
15179         (lower_omp_taskreg): ... this.  Use OMP_TASKREG_* macros where needed.
15180         Call create_task_copyfn if srecord_type is needed.  Adjust
15181         sender_decl type.
15182         (task_shared_vars): New variable.
15183         (check_omp_nesting_restrictions): Warn if work-sharing,
15184         barrier, master or ordered region is closely nested inside OMP_TASK.
15185         Add warnings for barrier if closely nested inside of work-sharing,
15186         ordered, or master region.
15187         (scan_omp_1): Call check_omp_nesting_restrictions even for
15188         GOMP_barrier calls.  Rename parallel_nesting_level to
15189         taskreg_nesting_level.  Handle OMP_TASK.
15190         (lower_lastprivate_clauses): Even if some lastprivate is found on a
15191         work-sharing construct, continue looking for them on parent parallel
15192         construct.
15193         (lower_omp_for_lastprivate): Add lastprivate clauses
15194         to the beginning of dlist rather than end.  Adjust for struct
15195         omp_for_data changes.
15196         (lower_omp_for): Add rec input clauses before OMP_FOR_PRE_BODY,
15197         not after it.  Handle collapsed OMP_FOR loops, adjust for
15198         OMP_FOR_{INIT,COND,INCR} changes, adjust extract_omp_for_data caller.
15199         (get_ws_args_for): Adjust extract_omp_for_data caller.
15200         (scan_omp_for): Handle collapsed OMP_FOR
15201         loops, adjust for OMP_FOR_{INIT,COND,INCR} changes.
15202         (lower_omp_single_simple): If libgomp function doesn't return
15203         boolean_type_node, add comparison of the return value with 0.
15204         (diagnose_sb_1, diagnose_sb_2): Handle collapsed OMP_FOR
15205         loops, adjust for OMP_FOR_{INIT,COND,INCR} changes.  Handle OMP_TASK.
15206         (parallel_nesting_level): Rename to...
15207         (taskreg_nesting_level): ... this.
15208         (is_taskreg_ctx): New function.
15209         (build_outer_var_ref, omp_copy_decl): Use is_taskreg_ctx instead
15210         of is_parallel_ctx.
15211         (execute_lower_omp): Rename parallel_nesting_level to
15212         taskreg_nesting_level.
15213         (expand_omp_parallel): Rename to...
15214         (expand_omp_taskreg): ... this.  Use OMP_TASKREG_* macros where needed.
15215         Call omp_task_call for OMP_TASK regions.
15216         (expand_omp): Adjust caller, handle OMP_TASK.
15217         (lower_omp_1): Adjust lower_omp_taskreg caller, handle OMP_TASK.
15218
15219         * bitmap.c (bitmap_default_obstack_depth): New variable.
15220         (bitmap_obstack_initialize, bitmap_obstack_release): Do nothing
15221         if argument is NULL and bitmap_default_obstack is already initialized.
15222         * ipa-struct-reorg.c (do_reorg_1): Call bitmap_obstack_release
15223         at the end.
15224         * matrix-reorg.c (matrix_reorg): Likewise.
15225
15226 2008-06-06  Uros Bizjak  <ubizjak@gmail.com>
15227
15228         * config/i386/i386.md (*indirect_jump): Macroize using P
15229         mode iterator.  Remove !TARGET_64BIT from insn constraints.
15230         (*tablejump_1): Ditto.
15231         (*indirect_jump_rex64): Remove insn pattern.
15232         (*tablejump_1_rex64): Ditto.
15233         (eh_return_<mode>): Macroize using P mode iterator from eh_return_di
15234         and eh_return_si insn patterns.
15235
15236 2008-06-06  Richard Guenther  <rguenther@suse.de>
15237
15238         * tree-ssa-structalias.c (merge_smts_into): Remove.
15239         (find_what_p_points_to): Do not bother to compute the
15240         points-to set for pt_anything pointers.
15241         * tree-ssa-operands.c (get_addr_dereference_operands): No NMT
15242         for pt_anything pointers is ok.
15243
15244 2008-06-06  Jan Hubicka  <jh@suse.cz>
15245
15246         * passes.c (execute_ipa_pass_list): Do not regenerate summaries.
15247
15248 2008-06-06  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
15249
15250         * cgraph.c: Fix typos in comments.
15251         (cgraph_availability_names): Fix string typo.
15252         * fold-const.c: Fix typos in comments.
15253         (fold_binary): Fix typo in warning.
15254         * genautomata.c: Fix typos in comments.
15255         (check_presence_pattern_sets): Fix typo in local variable.
15256         (output_description): Fix typo in output.
15257         * ggc-zone.c (ggc_pch_finish): Fix typo in error message.
15258         * hwint.h: Likewise.
15259         * matrix-reorg.c (check_allocation_function): Likewise.
15260         * omega.c (smooth_weird_equations): Likewise.
15261         * auto-inc-dec.c: Fix typos in comments.
15262         * bb-reorder.c: Likewise.
15263         * builtins.c: Likewise.
15264         * c-common.c: Likewise.
15265         * c-cppbuiltin.c: Likewise.
15266         * c-parser.c: Likewise.
15267         * c-pretty-print.c: Likewise.
15268         * cfgcleanup.c: Likewise.
15269         * cfgexpand.c: Likewise.
15270         * cfghooks.c: Likewise.
15271         * cfglayout.c: Likewise.
15272         * cfgloopmanip.c: Likewise.
15273         * cgraphunit.c: Likewise.
15274         * coverage.c: Likewise.
15275         * dbxout.c: Likewise.
15276         * df-byte-scan.c: Likewise.
15277         * df-core.c: Likewise.
15278         * df-problems.c: Likewise.
15279         * df-scan.c: Likewise.
15280         * dfp.c: Likewise.
15281         * dominance.c: Likewise.
15282         * domwalk.c: Likewise.
15283         * dse.c: Likewise.
15284         * dwarf2out.c: Likewise.
15285         * emit-rtl.c: Likewise.
15286         * et-forest.c: Likewise.
15287         * function.c: Likewise.
15288         * function.h: Likewise.
15289         * gcc.c: Likewise.
15290         * gcov-io.c: Likewise.
15291         * gcov.c: Likewise.
15292         * gcse.c: Likewise.
15293         * genattrtab.c: Likewise.
15294         * ggc-page.c: Likewise.
15295         * gimplify.c: Likewise.
15296         * gthr-lynx.h: Likewise.
15297         * haifa-sched.c: Likewise.
15298         * ipa-cp.c: Likewise.
15299         * ipa-inline.c: Likewise.
15300         * ipa-prop.h: Likewise.
15301         * ipa-pure-const.c: Likewise.
15302         * ipa-struct-reorg.c: Likewise.
15303         * ipa-struct-reorg.h: Likewise.
15304         * ipa-type-escape.c: Likewise.
15305         * ipa.c: Likewise.
15306         * loop-doloop.c: Likewise.
15307         * mips-tfile.c: Likewise.
15308         * mkmap-flat.awk: Likewise.
15309         * mkmap-symver.awk: Likewise.
15310         * modulo-sched.c: Likewise.
15311         * omp-low.c: Likewise.
15312         * optabs.c: Likewise.
15313         * optabs.h: Likewise.
15314         * opts.c: Likewise.
15315         * passes.c: Likewise.
15316         * postreload-gcse.c: Likewise.
15317         * postreload.c: Likewise.
15318         * predict.c: Likewise.
15319         * pretty-print.h: Likewise.
15320         * profile.c: Likewise.
15321         * protoize.c: Likewise.
15322         * ra-conflict.c: Likewise.
15323         * real.c: Likewise.
15324         * recog.c: Likewise.
15325         * regclass.c: Likewise.
15326         * regs.h: Likewise.
15327         * reload.c: Likewise.
15328         * rtl-error.c: Likewise.
15329         * rtlanal.c: Likewise.
15330         * scan.h: Likewise.
15331         * sched-rgn.c: Likewise.
15332         * see.c: Likewise.
15333         * stmt.c: Likewise.
15334         * target.h: Likewise.
15335         * tree-dfa.c: Likewise.
15336         * tree-eh.c: Likewise.
15337         * tree-flow-inline.h: Likewise.
15338         * tree-inline.c: Likewise.
15339         * tree-into-ssa.c: Likewise.
15340         * tree-loop-distribution.c: Likewise.
15341         * tree-nested.c: Likewise.
15342         * tree-parloops.c: Likewise.
15343         * tree-pass.h: Likewise.
15344         * tree-pretty-print.c: Likewise.
15345         * tree-profile.c: Likewise.
15346         * tree-scalar-evolution.c: Likewise.
15347         * tree-sra.c: Likewise.
15348         * tree-ssa-alias-warnings.c: Likewise.
15349         * tree-ssa-ccp.c: Likewise.
15350         * tree-ssa-coalesce.c: Likewise.
15351         * tree-ssa-dom.c: Likewise.
15352         * tree-ssa-dse.c: Likewise.
15353         * tree-ssa-forwprop.c: Likewise.
15354         * tree-ssa-live.c: Likewise.
15355         * tree-ssa-live.h: Likewise.
15356         * tree-ssa-loop-im.c: Likewise.
15357         * tree-ssa-loop-ivopts.c: Likewise.
15358         * tree-ssa-loop-niter.c: Likewise.
15359         * tree-ssa-loop-prefetch.c: Likewise.
15360         * tree-ssa-phiopt.c: Likewise.
15361         * tree-ssa-phiprop.c: Likewise.
15362         * tree-ssa-sccvn.c: Likewise.
15363         * tree-ssa-ter.c: Likewise.
15364         * tree-ssa-threadupdate.c: Likewise.
15365         * tree-ssa.c: Likewise.
15366         * tree-vect-analyze.c: Likewise.
15367         * tree-vect-transform.c: Likewise.
15368         * tree-vectorizer.c: Likewise.
15369         * tree-vn.c: Likewise.
15370         * tree-vrp.c: Likewise.
15371         * tree.c: Likewise.
15372         * tree.def: Likewise.
15373         * tree.h: Likewise.
15374         * unwind-dw2-fde.c: Likewise.
15375         * unwind.inc: Likewise.
15376         * value-prof.c: Likewise.
15377         * vmsdbgout.c: Likewise.
15378
15379 2008-06-05  David Edelsohn  <edelsohn@gnu.org>
15380
15381         * config/rs6000/xcoff.h (ASM_OUTPUT_SPECIAL_POOL_ENTRY_P): Do not
15382         always place FP constants in the TOC for TARGET_POWERPC64.
15383         * config/rs6000/linux64.h (ASM_OUTPUT_SPECIAL_POOL_ENTRY_P): Same.
15384
15385 2008-06-05  Joseph Myers  <joseph@codesourcery.com>
15386
15387         * config.gcc (powerpc-*-linux*spe*): Use t-dfprules.
15388         * config/rs6000/dfp.md (negdd2, absdd2, negtd2, abstd2): Do not
15389         enable for TARGET_E500_DOUBLE.
15390         (*movdd_softfloat32): Also enable for !TARGET_FPRS.
15391         * config/rs6000/rs6000.c (invalid_e500_subreg): Treat decimal
15392         floating-point modes like integer modes for E500 double.
15393         (rs6000_legitimate_offset_address_p): Likewise.
15394         (rs6000_legitimize_address): Likewise.  Do not allow REG+REG
15395         addressing for DDmode for E500 double.
15396         (rs6000_hard_regno_nregs): Do not treat decimal floating-point
15397         modes as using 64-bits of registers for E500 double.
15398         (spe_build_register_parallel): Do not handle DDmode or TDmode.
15399         (rs6000_spe_function_arg): Do not handle DDmode or TDmode
15400         specially for E500 double.
15401         (function_arg): Do not call rs6000_spe_function_arg for DDmode or
15402         TDmode for E500 double.
15403         (rs6000_gimplify_va_arg): Only handle SDmode in registers
15404         specially if TARGET_HARD_FLOAT && TARGET_FPRS.
15405         (rs6000_split_multireg_move): Do not handle TDmode specially for
15406         E500 double.
15407         (spe_func_has_64bit_regs_p): Do not treat DDmode or TDmode as
15408         using 64-bit registers for E500 double.
15409         (emit_frame_save): Do not handle DDmode specially for E500 double.
15410         (gen_frame_mem_offset): Likewise.
15411         (rs6000_function_value): Do not call spe_build_register_parallel
15412         for DDmode or TDmode.
15413         (rs6000_libcall_value): Likewise.
15414         * config/rs6000/rs6000.h (LOCAL_ALIGNMENT, MEMBER_TYPE_FORCES_BLK,
15415         DATA_ALIGNMENT, CLASS_MAX_NREGS): Do not handle DDmode specially
15416         for E500 double.
15417
15418 2008-06-04  H.J. Lu  <hongjiu.lu@intel.com>
15419
15420         * config/i386/i386.c (setup_incoming_varargs_64): Fix a typo
15421         in comments.
15422
15423 2008-06-04  Junjie Gu <jgu@tensilica.com>
15424
15425         * config/xtensa/lib2funcs.S (__xtensa_nonlocal_goto): Use unsigned
15426         comparison for frame pointers.
15427
15428 2008-06-04  Andy Hutchinson  <hutchinsonandy@aim.com>
15429
15430         PR target/27386
15431         * config/avr/avr.h (PUSH_ROUNDING): Remove.
15432
15433 2008-06-04  Andy Hutchinson  <hutchinsonandy@aim.com>
15434
15435         PR target/30243
15436         * builtins.c (expand_builtin_signbit): Don't take lowpart when
15437         register is already smaller or equal to required mode.
15438
15439 2008-06-04  Xinliang David Li  <davidxl@google.com>
15440
15441         * tree-call-cdce.c: New file.
15442         (cond_dead_built_in_calls): New static variable.
15443         (input_domain): New struct.
15444         (check_pow): New function.
15445         (check_builtin_call): Ditto.
15446         (check_target_format): Ditto.
15447         (is_call_dce_candidate): Ditto.
15448         (gen_one_condition): Ditto.
15449         (gen_conditions_for_domain): Ditto.
15450         (get_domain): Ditto.
15451         (gen_conditions_for_pow_cst_base): Ditto.
15452         (gen_conditions_for_pow_int_base): Ditto.
15453         (gen_conditions_for_pow): Ditto.
15454         (get_no_error_domain): Ditto.
15455         (gen_shrink_wrap_conditions): Ditto.
15456         (shrink_wrap_one_built_in_call): Ditto.
15457         (shink_wrap_conditional_dead_built_in_calls): Ditto.
15458         (tree_call_cdce): Ditto.
15459         (gate_call_cdce): Ditto.
15460         (pass_call_cdce): New gimple pass.
15461         * passes.c: (init_optimization_passes): New pass.
15462         * tree-pass.h: New pass declaration.
15463         * opts.c (decode_options): New flag setting.
15464         * common.opt: Add -ftree-builtin-call-dce flag.
15465         * Makefile.in: Add new source file.
15466         * tempvar.def: New tv_id.
15467         * doc/invoke.texi (-ftree-builtin-call-dce): New flag.
15468
15469 2008-06-04  Richard Guenther  <rguenther@suse.de>
15470
15471         * tree-flow-inline.h (is_global_var): Do not check TREE_STATIC on MTAGs.
15472         (is_call_clobbered): Always check var_ann->call_clobbered.
15473         (mark_call_clobbered): Always set var_ann->call_clobbered.
15474         (clear_call_clobbered): Always clear var_ann->call_clobbered.
15475         * tree-ssa-alias.c (mark_non_addressable): Use clear_call_clobbered.
15476         (reset_alias_info): Clear call clobbering info on MTAGs and
15477         globals as well.
15478         (set_pt_anything): Set pt_global_mem.
15479         (create_tag_raw): Adjust comment.
15480         (may_be_aliased): Do not check TREE_PUBLIC on MTAGs.
15481
15482 2008-06-04  Joseph Myers  <joseph@codesourcery.com>
15483             Maxim Kuvyrkov  <maxim@codesourcery.com>
15484
15485         * config/m68k/m68k.opt (mxgot): New option.
15486         * config/m68k/m68k.c (legitimize_pic_address): Handle -mxgot.
15487         (m68k_output_addr_const_extra): New.
15488         * config/m68k/m68k.h (OUTPUT_ADDR_CONST_EXTRA): New.
15489         * config/m68k/m68k-protos.h (m68k_output_addr_const_extra): Declare.
15490         * config/m68k/m68k.md (UNSPEC_GOTOFF): Define.
15491         * doc/invoke.texi (M680x0 Options): Document -mxgot.
15492
15493 2008-06-04  Richard Guenther  <rguenther@suse.de>
15494
15495         * tree-ssa-structalias.c (handle_ptr_arith): Correctly handle
15496         negative or non-representable offsets.
15497
15498 2008-06-03  H.J. Lu  <hongjiu.lu@intel.com>
15499
15500         * config/i386/i386.c (ix86_gen_leave): New.
15501         (ix86_gen_pop1): Likewise.
15502         (ix86_gen_add3): Likewise.
15503         (ix86_gen_sub3): Likewise.
15504         (ix86_gen_sub3_carry): Likewise.
15505         (ix86_gen_one_cmpl2): Likewise.
15506         (ix86_gen_monitor): Likewise.
15507         (override_options): Initialize ix86_gen_leave, ix86_gen_pop1,
15508         ix86_gen_add3, ix86_gen_sub3, ix86_gen_sub3_carry,
15509         ix86_gen_one_cmpl2 and ix86_gen_monitor.
15510         (ix86_file_end): Use mov%z0 instead of mov{q}/mov{l}.
15511         (output_set_got): Use mov%z0, pop%z0 and add%z0 instead of
15512         mov{q}/mov{l}, pop{q}/pop{l} and add{q}/add{l}.
15513         (ix86_expand_epilogue): Updated.
15514         (print_operand): Handle integer register operand for 'z'.
15515         (ix86_expand_strlensi_unroll_1): Likewise.
15516         (ix86_expand_strlen): Likewise.
15517         (ix86_expand_builtin): Likewise.
15518         (x86_output_mi_thunk): Use mov%z1 and add%z1 instead of
15519         mov{q}/mov{l} and add{q}/add{l}.
15520
15521 2008-06-03  Kai Tietz  <kai.tietz@onevision.com>
15522
15523         * config/i386/i386.md (P): New mode iterator.
15524         (SFmode push_operand splitter): Macroize DImode and SImode pushes
15525         using P mode iterator.
15526         (DFmode push_operand splitter): Ditto.
15527         (XFmode push_operand splitter): Ditto.
15528         (DFmode float_extend SFmode push_operand splitter): Ditto.
15529         (XFmode float_extend SFmode push_operand splitter): Do not generate
15530         SImode pushes for 64bit target.  Macroize Dimode and SImode
15531         pushes using P mode iterator.
15532         (XFmode float_extend DFmode push_operand splitter): Ditto.
15533
15534 2008-06-03  Kai Tietz  <kai.tietz@onevision.com>
15535
15536         * config/i386/i386-protos.h (ix86_reg_parm_stack_space): New.
15537         * config/i386/i386.h (ix86_reg_parm_stack_space): Removed prototype.
15538         * config/i386/i386.c (ix86_reg_parm_stack_space): Changed
15539         return type to int.
15540         (ix86_call_abi_override): Remove check for call_used_regs.
15541
15542 2008-06-03  Richard Guenther  <rguenther@suse.de>
15543
15544         * tree-ssa-structalias.c (find_func_aliases): Add constraints
15545         for the lhs of calls if the return type contains pointers.
15546
15547 2008-06-03  Kai Tietz  <kai.tietz@onevision.com>
15548
15549         * doc/tm.texi (OVERRIDE_ABI_FORMAT): New.
15550         * doc/extend.texi (ms_abi,sysv_abi): New attribute description.
15551         * function.c (allocate_struct_function): Use of OVERRIDE_ABI_FORMAT.
15552         * config/i386/cygming.h (TARGET_64BIT_MS_ABI): Make use
15553         of cfun and DEFAULT_ABI to deceide abi mode.
15554         (DEFAULT_ABI): New.
15555         (REG_PARM_STACK_SPACE): Removed.
15556         (OUTGOING_REG_PARM_STACK_SPACE): Removed.
15557         (STACK_BOUNDARY): Use default target to deceide stack boundary.
15558         * config/i386/i386-protos.h (ix86_cfun_abi): New.
15559         (ix86_function_abi): Likewise.
15560         (ix86_function_type_abi): Likewise.
15561         (ix86_call_abi_override): Likewise.
15562         * confid/i386/i386.md (SSE_REGPARM_MAX): Replaced by abi
15563         specific define X86_64_SSE_REGPARM_MAX/X64_SSE_REGPARM_MAX.
15564         * config/i386/i386.c (override_options): Replace TARGET_64BIT_MS_ABI.
15565         (X86_64_VARARGS_SIZE): Replace REGPARM_MAX and SSE_REGPARM_MAX by abi
15566         specific defines.
15567         (X86_64_REGPARM_MAX): New.
15568         (X86_64_SSE_REGPARM_MAX): New.
15569         (X64_REGPARM_MAX): New.
15570         (X64_SSE_REGPARM_MAX): New.
15571         (X86_32_REGPARM_MAX): New.
15572         (X86_32_SSE_REGPARM_MAX): New.
15573         (ix86_handle_cconv_attribute): Replace TARGET_64BIT_MS_ABI.
15574         (ix86_function_regparm): Handle user calling abi.
15575         (ix86_function_arg_regno_p): Replace TARGET_64BIT_MS_ABI
15576         by DEFAULT_ABI versus SYSV_ABI check.
15577         (ix86_reg_parm_stack_space): New.
15578         (ix86_function_type_abi): New.
15579         (ix86_call_abi_override): New.
15580         (ix86_function_abi): New.
15581         (ix86_cfun_abi): New.
15582         (init_cumulative_args): Call abi specific initialization.
15583         (function_arg_advance): Remove TARGET_64BIT_MS_ABI.
15584         (function_arg_64): Extend SSE_REGPARM_MAX check.
15585         (function_arg (): Remove TARGET_64BIT_MS_ABI.
15586         (ix86_pass_by_reference): Likewise.
15587         (ix86_function_value_regno_p): Likewise.
15588         (function_value_64): Replace REGPARM_MAX, and SSE_REGPARM_MAX.
15589         (ix86_function_value_1): Replace TARGET_64BIT_MS_ABI.
15590         (return_in_memory_ms_64): Replace TARGET_64BIT_MS_ABI.
15591         (ix86_build_builtin_va_list): Replace TARGET_64BIT_MS_ABI.
15592         (setup_incoming_varargs_64): Adjust regparm for call abi.
15593         (ix86_setup_incoming_varargs): Replace TARGET_64BIT_MS_ABI.
15594         (ix86_va_start): Likewise.
15595         (ix86_gimplify_va_arg): Likewise.
15596         (ix86_expand_prologue): Likewise.
15597         (output_pic_addr_const): Likewise.
15598         (ix86_init_machine_status): Initialize call_abi by DEFAULT_ABI.
15599         (x86_this_parameter): Replace TARGET_64BIT_MS_ABI.
15600         (x86_output_mi_thunk): Likewise.
15601         (x86_function_profiler): Likewise.
15602         * config/i386/i386.h (TARGET_64BIT_MS_ABI): Use ix64_cfun_abi.
15603         (SYSV_ABI, MS_ABI): New constants.
15604         (DEFAULT_ABI): New.
15605         (init_regs): Add prototype of function in regclass.c file.
15606         (OVERRIDE_ABI_FORMAT): New.
15607         (CONDITIONAL_REGISTER_USAGE): Remove TARGET_64BIT_MS_ABI part.
15608         (REG_PARM_STACK_SPACE): Use ix86_reg_parm_stack_space.
15609         (OUTGOING_REG_PARM_STACK_SPACE): New.
15610         (ix86_reg_parm_stack_space): New prototype.
15611         (CUMULATIVE_ARGS): Add call_abi member.
15612         (machine_function): Add call_abi member.
15613         * config/i386/mingw32.h (EXTRA_OS_CPP_BUILTINS): Replace
15614         TARGET_64BIT_MS_ABI by DEFAULT_ABI compare to MS_ABI.
15615
15616 2008-06-02  Andy Hutchinson  <hutchinsonandy@aim.com>
15617
15618         PR target/34879
15619         * config/avr/avr.c (TARGET_BUILTIN_SETJMP_FRAME_VALUE): Redefine.
15620         (avr_builtin_setjmp_frame_value): New function.
15621         * config/avr/avr.md (nonlocal_goto_receiver): Define.
15622         (nonlocal_goto): Define.
15623
15624 2008-06-02  Richard Sandiford  <rdsandiford@googlemail.com>
15625
15626         * config/mips/mips.c (mips_emit_loadgp): Return early if
15627         there is nothing do to, otherwise emit a blockage if
15628         !TARGET_EXPLICIT_RELOCS || crtl->profile.
15629         * config/mips/mips.md (loadgp_blockage): Use SI rather than DI.
15630
15631 2008-06-02  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
15632
15633         * configure.ac: Drop unneeded backslash ending up in config.in.
15634         * acinclude.m4: Likewise.
15635         * config.in: Regenerate.
15636
15637 2008-05-26  Jan Hubicka  <jh@suse.cz>
15638
15639         * predict.c (maybe_hot_frequency_p): Break out of...
15640         (maybe_hot_bb_p): ... here.
15641         (maybe_hot_edge_p): New.
15642         * tree-ssa-coalesce.c (coalesce_cost_edge): Compute cost based on edge.
15643         * basic-block.h (maybe_hot_edge_p): Declare.
15644
15645 2008-05-31  Uros Bizjak  <ubizjak@gmail.com>
15646
15647         * config/i386/i386.md (*cmpfp_<mode>): Enable for optimize_size.
15648         (*cmpfp_<mode>_cc): Ditto.
15649         (*fp_jcc_8<mode>_387): Ditto.
15650         (*fop_<MODEF:mode>_2_i387): Ditto.
15651         (*fop_<MODEF:mode>_3_i387): Ditto.
15652         (*fop_xf_2_i387): Ditto.
15653         (*fop_xf_3_i387): Ditto.
15654
15655 2008-06-02  Tomas Bily  <tbily@suse.cz>
15656
15657         * tree-ssa-ifcombine.c (get_name_for_bit_test): Use CONVERT_EXPR_P.
15658
15659 2008-06-01  Richard Sandiford  <rdsandiford@googlemail.com>
15660
15661         * config/mips/mips.c (mips_valid_offset_p): New function.
15662         (mips_valid_lo_sum_p): Likewise.
15663         (mips_classify_address): Use them.
15664         (mips_force_address): New function.
15665         (mips_legitimize_address): Use it.
15666         * config/mips/mips.md (MOVE128): New mode iterator.
15667         (movtf): Require TARGET_64BIT.  Remove empty strings.
15668         (*movtf_internal): Rename to...
15669         (*movtf): ...this and require !TARGET_MIPS16.  Use "m" instead
15670         of "R" and use {,fp}{load,store} attributes instead of "multi".
15671         Use a separate define_split.
15672         (*movtf_mips16): New pattern.
15673
15674 2008-06-01  Richard Sandiford  <rdsandiford@googlemail.com>
15675
15676         * config/mips/mips-protos.h (mips_expand_before_return): Declare.
15677         * config/mips/mips.c (mips_expand_before_return): New function.
15678         (mips_expand_epilogue): Call it.
15679         * config/mips/mips.md (return): Turn into a define_expand.
15680         (*return): New insn.
15681
15682 2008-06-01  Richard Sandiford  <rdsandiford@googlemail.com>
15683
15684         * rtl.h (emit_clobber, gen_clobber, emit_use, gen_use): Declare.
15685         * emit-rtl.c (emit_clobber, gen_clobber, emit_use, gen_use): New
15686         functions.  Do not emit uses and clobbers of CONCATs; individually
15687         use and clobber their operands.
15688         * builtins.c (expand_builtin_setjmp_receiver): Use emit_clobber,
15689         gen_clobber, emit_use and gen_use.
15690         (expand_builtin_longjmp, expand_builtin_nonlocal_goto): Likewise.
15691         (expand_builtin_return): Likewise.
15692         * cfgbuild.c (count_basic_blocks): Likewise.
15693         * cfgrtl.c (rtl_flow_call_edges_add): Likewise.
15694         * explow.c (emit_stack_restore): Likewise.
15695         * expmed.c (extract_bit_field_1): Likewise.
15696         * expr.c (convert_move, emit_move_complex_parts): Likewise.
15697         (emit_move_multi_word, store_constructor): Likewise.
15698         * function.c (do_clobber_return_reg, do_use_return_reg): Likewise.
15699         (thread_prologue_and_epilogue_insns): Likewise.
15700         * lower-subreg.c (resolve_simple_move): Likewise.
15701         * optabs.c (widen_operand, expand_binop): Likewise.
15702         (expand_doubleword_bswap, emit_no_conflict_block): Likewise.
15703         * reload.c (find_reloads): Likewise.
15704         * reload1.c (eliminate_regs_in_insn): Likewise.
15705         * stmt.c (expand_nl_goto_receiver): Likewise.
15706         * config/alpha/alpha.md (builtin_longjmp): Likewise.
15707         * config/arc/arc.md (*movdi_insn, *movdf_insn): Likewise.
15708         * config/arm/arm.c (arm_load_pic_register): Likewise.
15709         (thumb1_expand_epilogue, thumb_set_return_address): Likewise.
15710         * config/arm/arm.md (untyped_return): Likewise.
15711         * config/arm/linux-elf.h (PROFILE_HOOK): Likewise.
15712         * config/avr/avr.c (expand_prologue): Likewise.
15713         * config/bfin/bfin.c (do_unlink): Likewise.
15714         * config/bfin/bfin.md (<optab>di3, adddi3, subdi3): Likewise.
15715         * config/cris/cris.c (cris_expand_prologue): Likewise.
15716         * config/darwin.c (machopic_indirect_data_reference): Likewise.
15717         (machopic_legitimize_pic_address): Likewise.
15718         * config/frv/frv.c (frv_frame_access, frv_expand_epilogue): Likewise.
15719         (frv_ifcvt_modify_insn, frv_expand_mdpackh_builtin): Likewise.
15720         * config/i386/i386.c (ix86_expand_vector_move_misalign): Likewise.
15721         (ix86_expand_convert_uns_didf_sse): Likewise.
15722         (ix86_expand_vector_init_general): Likewise.
15723         * config/ia64/ia64.md (eh_epilogue): Likewise.
15724         * config/iq2000/iq2000.c (iq2000_expand_epilogue): Likewise.
15725         * config/m32c/m32c.c (m32c_emit_eh_epilogue): Likewise.
15726         * config/m32r/m32r.c (m32r_reload_lr): Likewise.
15727         (config/iq2000/iq2000.c): Likewise.
15728         * config/mips/mips.md (fixuns_truncdfsi2): Likewise.
15729         (fixuns_truncdfdi2, fixuns_truncsfsi2, fixuns_truncsfdi2): Likewise.
15730         (builtin_longjmp): Likewise.
15731         * config/mn10300/mn10300.md (call, call_value): Likewise.
15732         * config/pa/pa.md (nonlocal_goto, nonlocal_longjmp): Likewise.
15733         * config/pdp11/pdp11.md (abshi2): Likewise.
15734         * config/rs6000/rs6000.c (rs6000_emit_move): Likewise.
15735         * config/s390/s390.c (s390_emit_prologue): Likewise.
15736         * config/s390/s390.md (movmem_long, setmem_long): Likewise.
15737         (cmpmem_long, extendsidi2, zero_extendsidi2, udivmoddi4): Likewise.
15738         (builtin_setjmp_receiver, restore_stack_nonlocal): Likewise.
15739         * config/sh/sh.c (prepare_move_operands): Likewise.
15740         (output_stack_adjust, sh_expand_epilogue): Likewise.
15741         (sh_set_return_address, sh_expand_t_scc): Likewise.
15742         * config/sparc/sparc.c (load_pic_register): Likewise.
15743         * config/sparc/sparc.md (untyped_return, nonlocal_goto): Likewise.
15744         * config/spu/spu.c (spu_expand_epilogue): Likewise.
15745         * config/v850/v850.c (expand_epilogue): Likewise.
15746
15747 2008-05-31  Anatoly Sokolov  <aesok@post.ru>
15748
15749         * config/avr/avr.md (UNSPECV_WRITE_SP_IRQ_ON): New constants.
15750         (UNSPECV_WRITE_SP_IRQ_OFF): (Ditto.).
15751         (movhi_sp_r_irq_off, movhi_sp_r_irq_on): New insn.
15752         * config/avr/avr.c (expand_prologue, expand_epilogue): Use
15753         movhi_sp_r_irq_off and movhi_sp_r_irq_on insns for writing to the
15754         stack pointer register.
15755         (output_movhi): Remove code for interrupt specific writing to the
15756         stack pointer register.
15757
15758 2008-05-31  Richard Guenther  <rguenther@suse.de>
15759
15760         PR tree-optimization/34244
15761         * fold-const.c (tree_expr_nonnegative_warnv_p): Do not ask VRP.
15762         (tree_expr_nonzero_warnv_p): Likewise.
15763         * tree-vrp.c (vrp_expr_computes_nonnegative): Call
15764         ssa_name_nonnegative_p.
15765         (vrp_expr_computes_nonzero): Call ssa_name_nonzero_p.
15766         (extract_range_from_unary_expr): Use vrp_expr_computes_nonzero,
15767         not tree_expr_nonzero_warnv_p.
15768
15769         PR tree-optimization/36262
15770         Revert
15771         2007-11-29  Zdenek Dvorak  <ook@ucw.cz>
15772
15773         PR tree-optimization/34244
15774         * tree-vrp.c (adjust_range_with_scev): Clear scev cache.
15775         (record_numbers_of_iterations): New function.
15776         (execute_vrp): Cache the numbers of iterations of loops.
15777         * tree-scalar-evolution.c (scev_reset_except_niters):
15778         New function.
15779         (scev_reset): Use scev_reset_except_niters.
15780         * tree-scalar-evolution.h (scev_reset_except_niters): Declare.
15781
15782 2008-05-31  Bernd Schmidt  <bernd.schmidt@analog.com>
15783
15784         * config/bfin/bfin.h (TARGET_CPU_CPP_BUILTINS): Define
15785         __WORKAROUND_RETS when appropriate.
15786
15787 2008-05-31  Uros Bizjak  <ubizjak@gmail.com>
15788
15789         * config/i386/i386.md (*fop_<mode>_comm_mixed): Macroize from
15790         *fop_sf_comm_mixed and *fop_df_comm_mixed insn patterns using MODEF
15791         mode iterator.
15792         (*fop_<mode>_comm_sse): Macroize from *fop_sf_comm_sse and
15793         *fop_df_comm_sse insn patterns using MODEF mode iterator.
15794         (*fop_<mode>_comm_i387): Macroize from *fop_sf_comm_i387 and
15795         *fop_df_comm_i387 insn patterns using MODEF mode iterator.
15796         (*fop_<mode>_1_mixed): Macroize from *fop_sf_1_mixed and
15797         *fop_df_1_mixed insn patterns using MODEF mode iterator.
15798         (*fop_<mode>_1_sse): Macroize from *fop_sf_1_sse and
15799         *fop_df_1_sse insn patterns using MODEF mode iterator.
15800         (*fop_<mode>_1_i387): Macroize from *fop_sf_1_i387 and
15801         *fop_df_1_i387 insn patterns using MODEF mode iterator.
15802         (*fop_<MODEF:mode>_2_i387): Macroize from *fop_sf_2<mode>_i387 and
15803         *fop_df_2<mode>_i387 insn patterns using MODEF mode iterator.
15804         (*fop_<MODEF:mode>_3_i387): Macroize from *fop_sf_3<mode>_i387 and
15805         *fop_df_3<mode>_i387 insn patterns using MODEF mode iterator.
15806         (*fop_xf_2_i387): Rename from *fop_xf_2<mode>_i387.
15807         (*fop_xf_3_i387): Rename from *fop_xf_3<mode>_i387.
15808         (*fop_xf_4_i387): Use <MODE> for mode attribute.
15809         (*fop_xf_5_i387): Ditto.
15810         (*fop_xf_6_i387): Ditto.
15811
15812 2008-05-30  Richard Guenther  <rguenther@suse.de>
15813
15814         * builtins.c (build_string_literal): Avoid generating
15815         a non-gimple_val result.
15816
15817 2008-05-30  DJ Delorie  <dj@redhat.com>
15818
15819         * exec-tool.in: Use an environment variable (private) instead of a
15820         file (shared) as a semaphore, so as to not break parallel builds.
15821
15822 2008-05-30  Steven Bosscher  <stevenb.gcc@gmail.com>
15823
15824         * optabs.c (maybe_encapsulate_block): Remove.
15825         (emit_libcall_block): Adjust accordingly.
15826         * optabs.h (maybe_encapsulate_block): Remove prototype.
15827
15828         * config/rs6000/rs6000.c (rs6000_legitimize_tls_address):
15829         Don't use maybe_encapsulate_block.
15830
15831 2008-05-30  Steven Bosscher  <stevenb.gcc@gmail.com>
15832
15833         * config/rs6000/rs6000.c (rs6000_legitimize_address,
15834         rs6000_legitimize_reload_address, rs6000_emit_move): Make sure an
15835         rtx is a SYMBOL_REF before calling get_pool_constant.
15836
15837 2008-05-30  Eric Botcazou  <ebotcazou@adacore.com>
15838
15839         * fold-const.c (fold_unary) <CASE_CONVERT>: Add ??? comment.
15840
15841 2008-05-30  Danny Smith  <dannysmith@users.sourceforge.net>
15842
15843         * incpath.c: Use HOST_LACKS_INODE_NUMBERS conditional
15844         rather than OS names to choose INO_T_EQ definition.
15845         (DIRS_EQ) [!INO_T_EQ]: Don't worry about case in comparison.
15846         (add_path) [!INO_T_EQ]: Use lrealpath to fill canonical_name field.
15847
15848 2008-05-29  Daniel Franke  <franke.daniel@gmail.com>
15849
15850         PR target/36348
15851         * config/darwin-f.c: New.
15852         * config/t-darwin: Added rule to build darwin-f.o.
15853         * config.gcc: Defined new variable, fortran_target_objs.
15854         (*-*-darwin*): Set fortran_target_objs.
15855         * Makefile.in: Defined new variable FORTRAN_TARGET_OBJS.
15856         * configure.ac: Substitute fortran_target_objs, set FORTRAN_TARGET_OBJS.
15857         * configure: Regenerated.
15858
15859 2008-05-29  H.J. Lu  <hongjiu.lu@intel.com>
15860
15861         PR target/35771
15862         * config/i386/i386.c (ix86_function_arg_boundary): Convert to
15863         canonical type if needed.
15864
15865 2008-05-29  Eric Botcazou  <ebotcazou@adacore.com>
15866
15867         * tree-nested.c (check_for_nested_with_variably_modified): Fix typo.
15868
15869 2008-05-29  Richard Guenther  <rguenther@suse.de>
15870
15871         PR tree-optimization/36343
15872         PR tree-optimization/36346
15873         PR tree-optimization/36347
15874         * tree-flow.h (clobber_what_p_points_to): Declare.
15875         * tree-ssa-structalias.c (set_uids_in_ptset): Whether the
15876         pointed-to variable is dereferenced is irrelevant to whether
15877         the pointer can access the pointed-to variable.
15878         (clobber_what_p_points_to): New function.
15879         * tree-ssa-alias.c (set_initial_properties): Use it.
15880         * tree-ssa.c (verify_flow_sensitive_alias_info): Adjust
15881         call clobber check for NMTs.
15882
15883 2008-05-28  Seongbae Park  <seongbae.park@gmail.com>
15884
15885         * value-prof.c (tree_ic_transform): Use HOST_WIDEST_INT_PRINT_DEC
15886         for printing gcov_type.
15887
15888 2008-05-28  Seongbae Park  <seongbae.park@gmail.com>
15889
15890         * tree-ssa-propagate.c (set_rhs): Preserve the histogram
15891         and the eh region information.
15892         * value-prof.c (gimple_move_stmt_histograms): New function.
15893         * value-prof.h (gimple_move_stmt_histograms): New function declaration.
15894
15895 2008-05-28  Andreas Tobler  <a.tobler@schweiz.org>
15896
15897         * config/pa/pa.md: Remove extern frame_pointer_needed declaration.
15898
15899 2008-05-28  Seongbae Park <seongbae.park@gmail.com>
15900
15901         * value-prof.c (tree_ic_transform): Print counts.
15902         * tree-profile.c (tree_gen_ic_func_profiler):
15903         Clear __gcov_indreict_call_callee variable to avoid misattribution
15904         of the profile.
15905
15906 2008-05-28  Rafael Espíndola  <espindola@google.com>
15907
15908         * see.c (see_def_extension_not_merged): Use copy_rtx_if_shared to avoid
15909         invalid sharing.
15910
15911 2008-05-28  Richard Guenther  <rguenther@suse.de>
15912
15913         PR tree-optimization/36339
15914         * tree-ssa-alias.c (set_initial_properties): Move pt_anything
15915         and clobbering code out of the loop.
15916
15917 2008-05-28  Andreas Krebbel  <krebbel1@de.ibm.com>
15918
15919         * config/s390/constraints.md ('b', 'C', 'D', 'e'): New constraint
15920         letters defined.
15921
15922         * config/s390/s390.c (s390_compare_and_branch_condition_mask,
15923         s390_contiguous_bitmask_p, s390_symref_operand_p,
15924         s390_check_symref_alignment, s390_reload_larl_operand,
15925         s390_reload_symref_address): New functions.
15926         (s390_branch_condition_mnemonic): Support compare and branch
15927         instructions.
15928         (s390_mem_constraint): Avoid symrefs to accepted by the 'T'
15929         and 'W' constraints.
15930         (s390_secondary_reload): Add secondary reloads for unaligned
15931         symbol refs or symbol refs to floating point or QI/TI mode
15932         integer values.
15933         (legitimate_address_p): Accept symbol references as addresses.
15934         (s390_expand_insv): Use rotate and insert selected bits
15935         instruction for insv when building for z10.
15936         (print_operand_address): Handle symbol ref addresses.
15937         (print_operand): Output modifier 'c' added for signed byte values.
15938         (s390_encode_section_info): Mark symbol refs with
15939         SYMBOL_FLAG_NOT_NATURALLY_ALIGNED if appropriate.
15940
15941         * config/s390/s390.md (SIL,RRS,RIS): New instruction formats added.
15942         (length attribute): RRF, RRR have 4 byte length.
15943         (FPALL, INTALL): New mode iterators added.
15944         (*tstdi_sign, *cmpdi_ccs_sign, *cmpsi_ccs_sign,
15945         *cmp<mode>_ccs, *cmpdi_ccu_zero, *cmpdi_ccu, *cmpsi_ccu, *cmphi_ccu,
15946         *movdi_64, *movsi_zarch, *movhi, movmem<mode>, *movmem_short,
15947         *extendsidi2, *extendhidi2_extimm, *extendhisi2_extimm,
15948         *zero_extendsidi2, adddi3, *adddi3_31z, *adddi3_31, addsi3,
15949         *add<mode>3, *add<mode>3_carry1_cc, *add<mode>3_carry2_cc,
15950         *add<mode>3_cc, *add<mode>3_imm_cc, *muldi3_sign, muldi3,
15951         *mulsi3_sign, mulsi3, mulsidi3): Patterns enhanced with z10
15952         instructions.
15953         (*cmphi_ccs_z10, *cmpdi_ccs_signhi_rl, *cmpsi_ccu_zerohi_rlsi,
15954         *cmp<GPR:mode>_ccu_zerohi_rldi, *cmp_and_br_signed_<mode>,
15955         *cmp_and_br_unsigned_<mode>, reload<INTALL:mode><P:mode>_tomem_z10,
15956         reload<INTALL:mode><P:mode>_toreg_z10,
15957         reload<FPALL:mode><P:mode>_tomem_z10,
15958         reload<FPALL:mode><P:mode>_toreg_z10,
15959         reload<P:mode>_larl_odd_addend_z10, *execute_rl, *insv<mode>_z10,
15960         *insv<mode>_z10_noshift, *insv<mode>_or_z10_noshift,
15961         *zero_extendhi<mode>2_z10, *cmp_and_trap_signed_int<mode>,
15962         *cmp_and_trap_unsigned_int<mode>, prefetch): New pattern or expander
15963         definition.
15964         (movmem, clrmem, cmpmem): New splitters added.
15965
15966         * config/s390/predicates.md (larl_operand): Use
15967         SYMBOL_REF_FLAGS (op) & SYMBOL_FLAG_ALIGN1 replaced with
15968         SYMBOL_REF_ALIGN1_P.
15969         (s390_signed_integer_comparison,
15970         s390_unsigned_integer_comparison): New predicates.
15971
15972         * config/s390/s390-protos.h (s390_check_symref_alignment,
15973         s390_contiguous_bitmask_p, s390_reload_larl_operand,
15974         s390_reload_symref_address,
15975         s390_compare_and_branch_condition_mask): Prototypes added.
15976
15977         * config/s390/s390.h (TARGET_MEM_CONSTRAINT,
15978         SYMBOL_REF_ALIGN1_P, SYMBOL_FLAG_NOT_NATURALLY_ALIGNED,
15979         SYMBOL_REF_NOT_NATURALLY_ALIGNED_P): Macro definition added.
15980
15981 2008-05-28  Andreas Krebbel  <krebbel1@de.ibm.com>
15982
15983         * config/s390/s390.c (z10_cost): New cost function for z10.
15984         (s390_handle_arch_option, override_options): Support -march=z10 switch.
15985         (s390_issue_rate): Adjust issue rate for z10.
15986         * config/s390/s390.h (processor_type): Add PROCESSOR_2097_Z10.
15987         (processor_flags): Add PF_Z10.
15988         (TARGET_CPU_Z10, TARGET_Z10): New macro definitions.
15989         * config/s390/s390.md (cpu, cpu_facility attributes): Add z10.
15990         * gcc/config.gcc: Add z10.
15991
15992 2008-05-28  Richard Guenther  <rguenther@suse.de>
15993
15994         PR tree-optimization/36291
15995         * tree-flow. h (struct gimple_df): Remove var_anns member.
15996         * tree-flow-inline.h (gimple_var_anns): Remove.
15997         (var_ann): Simplify.
15998         * tree-dfa.c (create_var_ann): Simplify.
15999         (remove_referenced_var): Clear alias info from var_anns of globals.
16000         * tree-ssa.c (init_tree_ssa): Do not allocate var_anns.
16001         (delete_tree_ssa): Clear alias info from var_anns of globals.
16002         Do not free var_anns.
16003         (var_ann_eq): Remove.
16004         (var_ann_hash): Likewise.
16005
16006 2008-05-28  Mark Shinwell  <shinwell@codesourcery.com>
16007
16008         * config/mips/mips.c (mips_cpu_info_table): Add loongson2e
16009         and loongson2f entries.
16010         (mips_rtx_cost_data): Add entries for Loongson-2E/2F.
16011         * config/mips/mips.h (processor_type): Add Loongson-2E
16012         and Loongson-2F entries.
16013         (TARGET_LOONGSON_2E, TARGET_LOONGSON_2F, TARGET_LOONGSON_2EF): New.
16014         (MIPS_ISA_LEVEL_SPEC): Handle Loongson-2E/2F.
16015         * config/mips/mips.md (define_attr cpu): Add loongson2e and loongson2f.
16016         * doc/invoke.texi (MIPS Options): Document loongson2e
16017         and loongson2f processor names.
16018
16019 2008-05-27  H.J. Lu  <hongjiu.lu@intel.com>
16020
16021         PR target/35767
16022         PR target/35771
16023         * config/i386/i386.c (ix86_function_arg_boundary): Use
16024         alignment of canonical type.
16025         (ix86_expand_vector_move): Check unaligned memory access for
16026         all SSE modes.
16027
16028 2008-05-27  H.J. Lu  <hongjiu.lu@intel.com>
16029
16030         * dwarf2out.c (current_fde): Change return type to dw_fde_ref.
16031         Moved to the front of file.
16032
16033 2008-05-27  Xuepeng Guo  <xuepeng.guo@intel.com>
16034             H.J. Lu  <hongjiu.lu@intel.com>
16035
16036         * dwarf2out.c (current_fde): New.
16037         (add_cfi): Use it.
16038         (lookup_cfa:): Likewise.
16039         (dwarf2out_end_epilogue): Likewise.
16040         (dwarf2out_note_section_used): Likewise.
16041
16042 2008-05-27  Michael Matz  <matz@suse.de>
16043
16044         PR c++/27975
16045         * c.opt (Wenum-compare): New warning option.
16046         * doc/invoke.texi  (Warning Options): Document -Wenum-compare.
16047
16048 2008-05-27  Michael Matz  <matz@suse.de>
16049
16050         PR middle-end/36326
16051         * tree-gimple.c (is_gimple_mem_rhs): Remove work-around for
16052         non-BLKmode types.
16053         * tree-tailcall.c (find_tail_calls): Don't mark calls storing
16054         into memory as tail calls.
16055
16056 2008-05-27  Richard Guenther  <rguenther@suse.de>
16057
16058         PR tree-optimization/36339
16059         * tree-ssa-alias.c (set_initial_properties): Escaped pt_anything
16060         pointers cause all addressable variables to be call clobbered.
16061
16062 2008-05-27  Richard Guenther  <rguenther@suse.de>
16063
16064         PR tree-optimization/36245
16065         * tree-ssa-address.c (add_to_parts): Deal with non-pointer bases.
16066
16067 2008-05-27  Andreas Krebbel  <krebbel1@de.ibm.com>
16068
16069         * config/s390/s390.md: Replace all occurences of the 'm'
16070         constraint with 'RT'.
16071
16072 2008-05-27  Andreas Krebbel  <krebbel1@de.ibm.com>
16073
16074         * config/s390/s390.md ("cpu_facility", "enabled"): Attribute
16075         definitions added.
16076         ("*movdi_64dfp", "*movdi_64extimm", "*movdi_64"): Merged into
16077         "*movdi_64".
16078         ("*anddi3_extimm", "*anddi3"): Merged into "*anddi3".
16079         ("*iordi3_extimm", "*iordi3"): Merged into "*iordi3".
16080         ("*xordi3_extimm", "*xordi3"): Merged into "*xordi3".
16081
16082 2008-05-27  Andreas Krebbel  <krebbel1@de.ibm.com>
16083
16084         * reload.c: (find_reloads): Skip alternatives according to the
16085         "enabled" attribute. Constify the constraint variable.
16086         * recog.c (get_attr_enabled): Add default implementation.
16087         (extract_insn): Set the alternative_enabled_p array
16088         in the recog_data struct.
16089         (preprocess_constraints, constrain_operands): Skip
16090         alternatives according to the "enabled" attribute
16091         * recog.h (struct recog_data): New field alternative_enabled_p.
16092         (skip_alternative): New inline function.
16093         * regclass.c: (record_operand_costs): Check the "enabled" attribute.
16094         (record_reg_classes): Skip alternative according to the
16095         "enabled" attribute.
16096
16097         * doc/md.texi: Add documention for the "enabled" attribute.
16098
16099 2008-05-27  Andreas Krebbel  <krebbel1@de.ibm.com>
16100
16101         * defaults.h (TARGET_MEM_CONSTRAINT): New target macro added.
16102         * postreload.c (reload_cse_simplify_operands): Replace 'm'
16103         constraint with TARGET_MEM_CONSTRAINT.
16104         * recog.c (asm_operand_ok, preprocess_constraints,
16105         constrain_operands): Likewise.
16106         * regclass.c (record_reg_classes): Likewise.
16107         * reload.c (find_reloads, alternative_allows_const_pool_ref): Likewise.
16108         * reload1.c (maybe_fix_stack_asms): Likewise.
16109         * stmt.c (parse_output_constraint, parse_input_constraint): Likewise.
16110         * recog.h: Adjust comment.
16111         * genpreds.c (generic_constraint_letters): Remove 'm' constraint.
16112         * genoutput.c (note_constraint): Don't emit error for 'm' constraint.
16113         * doc/md.texi: Add a note to description of 'm' constraint.
16114         * doc/tm.texi: Document the new TARGET_MEM_CONSTRAINT macro.
16115
16116 2008-05-27  Eric Botcazou  <ebotcazou@adacore.com>
16117
16118         * tree-sra.c (sra_type_can_be_decomposed_p) <RECORD_TYPE>: Make sure
16119         that the bitfield is of integral type before testing its precision.
16120
16121 2008-05-27  Trevor Smigiel  <trevor_smigiel@playstation.sony.com>
16122             Sa Liu  <saliu@de.ibm.com>
16123
16124         * config/spu/spu.c (spu_init_libfuncs): Add __multi3, __divti3,
16125         __modti3, __udivti3, __umodti3 and __udivmodti4.
16126         * config/spu/t-spu-elf (LIB2FUNCS_STATIC_EXTRA): Add files
16127         that implement TImode mul and div functions.
16128         * config/spu/multi3.c: New. Implement __multi3.
16129         * config/spu/divmodti4.c: New. Implement _udivmodti4 and others.
16130         * testsuite/gcc.target/spu/muldivti3.c: New. Test TImode mul and div
16131         functions on SPU.
16132
16133 2008-05-26  Steven Bosscher  <stevenb.gcc@gmail.com>
16134
16135         * config/rs6000/rs6000.c (rs6000_legitimize_tls_address): Generate
16136         new tls_gd_* and tls_ld_* insns instead of an insn sequence.
16137         * config/rs6000/rs6000.md (TLSmode, tls_abi_suffix, tls_insn_suffix,
16138         tls_sysv_suffix): New mode and mode attribute iterators.
16139         (tls_gd_32, tls_gd_64, tls_ld_32, tls_ld_64): Remove.
16140         (lts_gd_aix*, tls_gd_sysv*, tls_ld_aix*, tls_ld_sysv*): New patterns.
16141         (tls_dtprel_*, tls_dtprel_ha_*, tls_dtprel_lo_*, tls_got_dtprel_*,
16142         tls_tprel_*, tls_tprel_ha_*, tls_tprel_lo_*, tls_got_tprel_*,
16143         tls_tls_*): Merge 32 bit and 64 bit variants using aforementioned
16144         iterators.
16145
16146 2008-05-26  Eric Botcazou  <ebotcazou@adacore.com>
16147
16148         PR tree-optimization/36329
16149         * tree.h (CALL_CANNOT_INLINE_P): Add access check.
16150         * tree-gimple.h (CALL_STMT_CANNOT_INLINE_P): New macro.
16151         * cgraphbuild.c (initialize_inline_failed): Use the latter
16152         macro in lieu of the former.
16153         * ipa-inline.c (cgraph_mark_inline): Likewise.
16154         (cgraph_decide_inlining_of_small_function): Likewise.
16155         (cgraph_decide_inlining): Likewise.
16156         (cgraph_decide_inlining_incrementally): Likewise.
16157
16158 2008-05-26  Tristan Gingold  <gingold@adacore.com>
16159             Anatoly Sokolov  <aesok@post.ru>
16160
16161         * config/avr/avr.md ("call_prologue_saves"): Use hi8(gs())/lo8(gs())
16162         instead of pm_lo8/pm_hi8 to makes this call working on avr6.
16163         * config/avr/avr.c (expand_prologue): Tune "call_prologue"
16164         optimization for 'avr6' architecture.
16165
16166 2008-05-26  Andy Hutchinson  <hutchinsonandy@aim.com>
16167
16168         PR target/34932
16169         * config/avr/avr.md (*addhi3_zero_extend2): Remove.
16170
16171 2008-05-26  Richard Guenther  <rguenther@suse.de>
16172
16173         * tree-ssa-sccvn.c (expr_has_constants): Declare.
16174         (visit_reference_op_load): Initialize VN_INFO->has_constants properly.
16175
16176 2008-05-26  H.J. Lu  <hongjiu.lu@intel.com>
16177
16178         PR middle-end/36253
16179         * caller-save.c (insert_restore): Verify alignment of spill space.
16180         (insert_save): Likewise.
16181         * cfgexpand.c (LOCAL_ALIGNMENT): Removed.
16182         * defaults.h (LOCAL_ALIGNMENT): New. Provide default.
16183         (STACK_SLOT_ALIGNMENT): Likewise.
16184         * function.c (LOCAL_ALIGNMENT): Removed.
16185         (get_stack_local_alignment): New.
16186         (assign_stack_local): Use it.  Set alignment on stack slot.
16187         (assign_stack_temp_for_type): Use get_stack_local_alignment.
16188         * config/i386/i386.h (LOCAL_ALIGNMENT): Updated.
16189         (STACK_SLOT_ALIGNMENT): New.
16190         * config/i386/i386.c (ix86_local_alignment): Handle caller-save
16191         stack slot in XFmode.
16192
16193         * doc/tm.texi (STACK_SLOT_ALIGNMENT): New.
16194
16195 2008-05-26  Kai Tietz  <kai.tietz@onevision.com>
16196
16197         PR/36321
16198         * config/i386/i386.md (allocate_stack_worker_64): Make sure
16199         argument operand in rax isn't removed.
16200
16201 2008-05-26  Richard Guenther  <rguenther@suse.de>
16202
16203         PR middle-end/36300
16204         * fold-const.c (extract_muldiv_1): Use TYPE_OVERFLOW_WRAPS,
16205         not TYPE_UNSIGNED.  Use TYPE_PRECISION instead of GET_MODE_SIZE.
16206
16207 2008-05-26  Daniel Franke  <franke.daniel@gmail.com>
16208
16209         PR bootstrap/36331
16210         * c-cppbuiltin.c (define__GNUC__): Re-add definition of __GNUG__.
16211
16212 2008-05-26  Dominique Dhumieres  <dominiq@lps.ens.fr>
16213
16214         * config/darwin-c.c: Include "incpath.h" instead of "c-incpath.h".
16215         * config/t-darwin: Use "incpath.h" instead of "c-incpath.h".
16216
16217 2008-05-25  Eric Botcazou  <ebotcazou@adacore.com>
16218
16219         * tree-nested.c (convert_tramp_reference) <ADDR_EXPR>: Do not
16220         build a trampoline if we don't want one.
16221         * varasm.c (initializer_constant_valid_p) <ADDR_EXPR>: Do not
16222         return zero for nested functions if we don't want a trampoline.
16223
16224 2008-05-26  Daniel Franke  <franke.daniel@gmail.com>
16225
16226         * doc/invoke.texi: Added f77, f77-cpp-input to list of file types.
16227
16228 2008-05-26  Daniel Franke  <franke.daniel@gmail.com>
16229
16230         PR fortran/18428
16231         * c.opt: Removed undocumented option '-lang-fortran'.
16232         * c-common.h: Removed global variable 'lang_fortran'.
16233         * c-opts.c (c_common_handle_option): Removed code to handle
16234         option '-lang-fortran'. Updated includes.
16235         * c-cppbuiltin.c (c_cpp_builtins): Removed conditional
16236         definition of '__GFORTRAN__'.
16237         (define__GNUC__): Reimplemented to use BASEVER and
16238         cpp_define_formatted.
16239         (builtin_define_with_value_n): Removed.
16240         * c-incpath.h: Renamed to ...
16241         * incpath.h: ... this.
16242         * c-incpath.c: Renamed to ...
16243         * incpath.c: ... this. Updated includes.
16244         * fix-header.c: Updated includes.
16245         * Makefile.in: Replaced c-incpath.[ch] by incpath.[ch].
16246         (c-cppbuiltin.o): Added dependency on and definition of BASEVER.
16247         (OBJ-archive): Added cppdefault.o, incpath.o and prefix.o.
16248
16249 2008-05-25  Eric Botcazou  <ebotcazou@adacore.com>
16250
16251         * tree.h: Update the table of flags used on tree nodes.
16252         (TREE_NO_TRAMPOLINE): New accessor for static_flag.
16253         (SAVE_EXPR_RESOLVED_P): Use automatically-built access check.
16254         (FORCED_LABEL): Add access check.
16255         (CALL_EXPR_RETURN_SLOT_OPT): Likewise.
16256         (ASM_INPUT_P): Likewise.
16257         (ASM_VOLATILE_P): Likewise.
16258         (EH_FILTER_MUST_NOT_THROW): Access static_flag directly.
16259         (OMP_SECTION_LAST): Access private_flag directly.
16260         (OMP_RETURN_NOWAIT): Likewise.
16261         (OMP_PARALLEL_COMBINED): Likewise.
16262         (OMP_CLAUSE_PRIVATE_DEBUG): Access public_flag directly.
16263         (OMP_CLAUSE_LASTPRIVATE_FIRSTPRIVATE): Likewise.
16264         * tree-ssa-propagate.c (STMT_IN_SSA_EDGE_WORKLIST): Access
16265         deprecated_flag directly.
16266
16267 2008-05-25  H.J. Lu  <hongjiu.lu@intel.com>
16268
16269         * final.c (frame_pointer_needed): Removed.
16270         * flags.h (frame_pointer_needed): Likewise.
16271
16272         * function.h (rtl_data): Add frame_pointer_needed.
16273         (frame_pointer_needed): New.
16274
16275 2008-05-25  Arthur Loiret  <arthur.loiret@u-psud.fr>
16276
16277         * config.gcc (sh2[lbe]*-*-linux*): Allow target.
16278
16279 2008-05-25  Steven Bosscher  <stevenb.gcc@gmail.com>
16280
16281         * gcse.c (hash_scan_set): Do not pick up a REG_EQUAL value if
16282         SRC is a REG.
16283
16284 2008-05-25  Alan Modra  <amodra@bigpond.net.au>
16285
16286         * c-common.c (strip_array_types): Move function to..
16287         * tree.c: ..here.
16288         (get_inner_array_type): Delete.
16289         * c-common.h (strip_array_types): Move declaration to..
16290         * tree.h: ..here.
16291         (get_inner_array_type): Delete.
16292         * config/i386/i386.c (x86_field_alignment): Use strip_array_types.
16293         * config/rs6000/aix.h (ADJUST_FIELD_ALIGN): Likewise.
16294         * config/rs6000/linux64.h (ADJUST_FIELD_ALIGN): Likewise.
16295         * config/pa/pa.c (emit_move_sequence): Likewise.
16296
16297 2008-05-24  H.J. Lu  <hongjiu.lu@intel.com>
16298
16299         * config/i386/i386.md (*sse_prologue_save_insn): Set length
16300         attribute to 34.
16301
16302 2008-05-24  Andy Hutchinson  <hutchinsonandy@aim.com>
16303
16304         * function.c: Include target hook for nonlocal_goto frame value.
16305
16306 2008-05-24  Richard Guenther  <rguenther@suse.de>
16307
16308         * tree-dfa.c (refs_may_alias_p): Re-instantiate case that a scalar
16309         variable can be only accessed through a pointer or a union.
16310
16311 2008-05-24  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
16312
16313         * builtins.c (fold_builtin_fpclassify): Fix spelling of FP_INFINITE.
16314         * doc/extend.texi: Likewise.
16315
16316 2008-05-23  DJ Delorie  <dj@redhat.com>
16317
16318         * config/m32c/jump.md (untyped_call): Add.
16319
16320         * config/m32c/m32c.c (m32c_return_addr_rtx): Change pointer type
16321         for A24 to PSImode.
16322         (m32c_address_cost): Detail costs for indirect offsets.
16323
16324 2008-05-23  Rafael Espíndola  <espindola@google.com>
16325
16326         * see.c (see_get_extension_data): Don't use SUBREG_REG to test
16327         if a node is a SUBREG.
16328         (see_analyze_one_def): Don't use SUBREG_REG to test if a node
16329         is a SUBREG.
16330
16331 2008-05-23  Paul Brook  <paul@codesourcery.com>
16332             Carlos O'Donell  <carlos@codesourcery.com>
16333
16334         * doc/extend.texi: Clarify use of __attribute__((naked)).
16335         * doc/tm.texi: Document TARGET_ALLOCATE_STACK_SLOTS_FOR_ARGS.
16336         * target.h (gcc_target): Add allocate_stack_slots_for_args.
16337         * function.c (use_register_for_decl): Use
16338         targetm.calls.allocate_stack_slots_for_args.
16339         * target-def.h (TARGET_CALLS): Add TARGET_ALLOCATE_STACK_SLOTS_FOR_ARGS.
16340         * config/arm/arm.c (arm_allocate_stack_slots_for_args): New function.
16341         (TARGET_ALLOCATE_STACK_SLOTS_FOR_ARGS): Define.
16342
16343 2008-05-23  Eric Botcazou  <ebotcazou@adacore.com>
16344
16345         * expr.c (highest_pow2_factor) <BIT_AND_EXPR>: New case.
16346
16347 2008-05-23  Steven Munroe  <sjmunroe@us.ibm.com>
16348
16349         * config/rs6000/darwin-ldouble.c (fmsub): Eliminate the full
16350         PACK/UNPACK between FP_SUB_Q and FD_TRUNC so that the result
16351         is only rounded once.
16352
16353 2008-05-23  Richard Guenther  <rguenther@suse.de>
16354
16355         * tree-ssa-operands.c (mark_difference_for_renaming): Use bitmap_xor.
16356
16357 2008-05-23  Uros Bizjak  <ubizjak@gmail.com>
16358             Jakub Jelinek  <jakub@redhat.com>
16359
16360         PR target/36079
16361         * configure.ac: Handle --enable-cld.
16362         * configure: Regenerated.
16363         * config.gcc: Add USE_IX86_CLD to tm_defines for x86 targets.
16364         * config/i386/i386.h (struct machine_function): Add needs_cld field.
16365         (ix86_current_function_needs_cld): New define.
16366         * config/i386/i386.md (UNSPEC_CLD): New unspec volatile constant.
16367         (cld): New isns pattern.
16368         (strmov_singleop, rep_mov, strset_singleop, rep_stos, cmpstrnqi_nz_1,
16369         cmpstrnqi_1, strlenqi_1): Set ix86_current_function_needs_cld flag.
16370         * config/i386/i386.opt (mcld): New option.
16371         * config/i386/i386.c (ix86_expand_prologue): Emit cld insn if
16372         TARGET_CLD and ix86_current_function_needs_cld.
16373         (override_options): Use -mcld by default for 32-bit code if
16374         USE_IX86_CLD.
16375
16376         * doc/install.texi (Options specification): Document --enable-cld.
16377         * doc/invoke.texi (Machine Dependent Options)
16378         [i386 and x86-64 Options]: Add -mcld option.
16379         (Intel 386 and AMD x86-64 Options): Document -mcld option.
16380
16381 2008-05-23  Kai Tietz  <kai.tietz@onevison.com>
16382         * config/i386/i386.c (return_in_memory_32): Add ATTRIBUTE_UNUSED.
16383         (return_in_memory_64): Likewise.
16384         (return_in_memory_ms_64): Likewise.
16385
16386 2008-05-23  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
16387
16388         * builtin-types.def (BT_FN_INT_INT_INT_INT_INT_INT_VAR): New.
16389         * builtins.c (fold_builtin_fpclassify): New.
16390         (fold_builtin_varargs): Handle BUILT_IN_FPCLASSIFY.
16391         * builtins.def (BUILT_IN_FPCLASSIFY): New.
16392         * c-common.c (handle_type_generic_attribute): Adjust to accept
16393         fixed arguments before an elipsis.
16394         (check_builtin_function_arguments): Handle BUILT_IN_FPCLASSIFY.
16395         * doc/extend.texi: Document __builtin_fpclassify.
16396
16397 2008-05-22  Aldy Hernandez  <aldyh@redhat.com>
16398
16399         * omp-low.c (gate_expand_omp_ssa): Remove.
16400         (pass_expand_omp_ssa): Remove.
16401         (gate_expand_omp): Do not check for flag_openmp_ssa.
16402         * common.opt (-fopenmp-ssa): Remove.
16403         * passes.c (init_optimization_passes): Remove pass_expand_omp_ssa.
16404
16405 2008-05-22  Kaz Kojima  <kkojima@gcc.gnu.org>
16406
16407         * config/sh/sh.opt (mfixed-range): New option.
16408         * config/sh/sh-protos.h (sh_fix_range): Declare.
16409         * config/sh/sh.c (sh_fix_range): New function.
16410         * config/sh/sh.h (sh_fixed_range_str): Declare.
16411         (OVERRIDE_OPTIONS): Call sh_fix_range if sh_fixed_range_str
16412         is not empty.
16413         * doc/invoke.texi (SH Options): Document -mfixed-range.
16414
16415 2008-05-22  Kai Tietz  <kai.tietz@onevision.com>
16416
16417         * config/i386/sol2-10.h (SUBTARGET_RETURN_IN_MEMORY): Undefine
16418         it before the redeclaration.
16419
16420 2008-05-22  Anatoly Sokolov <aesok@post.ru>
16421
16422         * config/avr/avr.c (get_sequence_length): Add new function.
16423         (expand_prologue, expand_epilogue): Remove duplicate code.
16424
16425 2008-05-22  Rafael Espíndola  <espindola@google.com>
16426
16427         * see.c (see_pre_insert_extensions): Use copy_rtx to avoid invalid rtx
16428         sharing.
16429
16430 2008-05-22  H.J. Lu  <hongjiu.lu@intel.com>
16431
16432         * defaults.h (UNITS_PER_SIMD_WORD): Add scalar mode as argument.
16433         * doc/tm.texi (UNITS_PER_SIMD_WORD): Likewise.
16434
16435         * tree-vect-analyze.c (vect_compute_data_ref_alignment): Replace
16436         UNITS_PER_SIMD_WORD with GET_MODE_SIZE (TYPE_MODE (vectype)).
16437         (vect_update_misalignment_for_peel): Likewise.
16438         (vector_alignment_reachable_p): Likewise.
16439         * tree-vect-transform.c (vectorizable_load): Likewise.
16440         * tree-vectorizer.c (vect_supportable_dr_alignment): Likewise.
16441         (get_vectype_for_scalar_type): Pass mode of scalar_type
16442         to UNITS_PER_SIMD_WORD.
16443
16444         * config/arm/arm.h (UNITS_PER_SIMD_WORD): Updated.
16445         * config/i386/i386.h (UNITS_PER_SIMD_WORD): Likewise.
16446         * config/mips/mips.h (UNITS_PER_SIMD_WORD): Likewise.
16447         * config/rs6000/rs6000.h (UNITS_PER_SIMD_WORD): Likewise.
16448         * config/sparc/sparc.h (UNITS_PER_SIMD_WORD): Likewise.
16449
16450 2008-05-22  Ira Rosen  <irar@il.ibm.com>
16451
16452         PR tree-optimization/36293
16453         * tree-vect-transform.c (vect_transform_strided_load): Don't check
16454         if the first load must be skipped because of a gap.
16455
16456 2008-05-22  Richard Guenther  <rguenther@suse.de>
16457
16458         * tree-dfa.c (refs_may_alias_p): Exit early if possible.  Handle
16459         more cases of offset disambiguation that is possible if
16460         strict-aliasing rules apply.
16461         * tree-ssa-loop-im.c (mem_refs_may_alias_p): Use refs_may_alias_p
16462         for basic offset and type-based disambiguation.
16463
16464 2008-05-21  H.J. Lu  <hongjiu.lu@intel.com>
16465
16466         * config/i386/i386.c (ix86_expand_vector_init_one_var): Use
16467         ix86_expand_vector_set on V16QImode for SSE4.1.
16468
16469 2008-05-21  Tom Tromey  <tromey@redhat.com>
16470
16471         * c.opt (Wimport): Mark as undocumented.
16472         * doc/invoke.texi (Option Summary): Don't mention -Wimport or
16473         -Wno-import.
16474         (Warning Options): Likewise.
16475         * doc/cppopts.texi: Don't mention -Wimport.
16476
16477 2008-05-21  Sebastian Pop  <sebastian.pop@amd.com>
16478
16479         PR tree-optimization/36287
16480         PR tree-optimization/36286
16481         * lambda-code.c (build_access_matrix): Do not use the loop->num
16482         for computing the number of induction variables: use the loop depth
16483         instead.
16484
16485 2008-05-21  Kai Tietz  <kai.tietz@onevision.com>
16486
16487         PR/36280
16488         * config/i386/cygming.h (ASM_OUTPUT_LABELREF): Honor
16489         option -f(no-)leading-underscore.
16490
16491 2008-05-21  H.J. Lu  <hongjiu.lu@intel.com>
16492
16493         * config/i386/i386.c (ix86_expand_vector_init_general): Use
16494         GET_MODE_NUNITS (mode).
16495
16496 2008-05-21  Peter Bergner  <bergner@vnet.ibm.com>
16497
16498         * doc/invoke.texi: Add cpu_type's 464 and 464fp.
16499         (-mmulhw): Add 464 to description.
16500         (-mdlmzb): Likewise.
16501         * config.gcc: Handle --with-cpu=464 and --with-cpu=464fp.
16502         * config/rs6000/rs6000.c (processor_target_table): Add 464 and
16503         464fp entries.
16504         * config/rs6000/rs6000.h (ASM_CPU_SPEC): Add 464 and 464fp support.
16505         * config/rs6000/t-fprules (MULTILIB_MATCHES_FLOAT): Include -mcpu=464.
16506         * config/rs6000/rs6000.md: Update comments for 464.
16507
16508 2008-05-21  Janis Johnson  <janis187@us.ibm.com>
16509
16510         * doc/sourcebuild.texi (Test Directives): Add dg-xfail-run-if.
16511
16512 2008-05-21  H.J. Lu  <hongjiu.lu@intel.com>
16513
16514         * config/i386/sse.md (vec_extractv4sf): Removed.
16515         (vec_extractv2df): Likewise.
16516         (vec_extractv2di): Likewise.
16517         (vec_extractv4si): Likewise.
16518         (vec_extractv8hi): Likewise.
16519         (vec_extractv16qi): Likewise.
16520         (vec_extract<mode>): New.
16521
16522 2008-05-21  H.J. Lu  <hongjiu.lu@intel.com>
16523
16524         * config/i386/sse.md (vec_setv4sf): Removed.
16525         (vec_setv2df): Likewise.
16526         (vec_setv2di): Likewise.
16527         (vec_setv4si): Likewise.
16528         (vec_setv8hi): Likewise.
16529         (vec_setv16qi): Likewise.
16530         (vec_set<mode>): New.
16531
16532 2008-05-21  H.J. Lu  <hongjiu.lu@intel.com>
16533
16534         * config/i386/i386.c (ix86_expand_vector_init_general): Remove
16535         goto for vec_concat and vec_interleave.
16536
16537 2008-05-21  H.J. Lu  <hongjiu.lu@intel.com>
16538
16539         * config/i386/sse.md (vec_initv4sf): Removed.
16540         (vec_initv2df): Likewise.
16541         (vec_initv2di): Likewise.
16542         (vec_initv4si): Likewise.
16543         (vec_initv8hi): Likewise.
16544         (vec_initv16qi): Likewise.
16545         (vec_init<mode>): New.
16546
16547 2008-05-21  Joseph Myers  <joseph@codesourcery.com>
16548
16549         * collect2.c (find_a_file): Use IS_ABSOLUTE_PATH.
16550
16551 2008-05-21  Tom Tromey  <tromey@redhat.com>
16552
16553         * ggc-zone.c (lookup_page_table_if_allocated): New function.
16554         (zone_find_object_offset): Likewise.
16555         (gt_ggc_m_S): Likewise.
16556         (highest_bit): Likewise.
16557         * ggc-page.c (gt_ggc_m_S): New function.
16558         * stringpool.c (string_stack): Remove.
16559         (init_stringpool): Update.
16560         (ggc_alloc_string): Use ggc_alloc.
16561         (maybe_delete_ident): New function.
16562         (ggc_purge_stringpool): Likewise.
16563         (gt_ggc_m_S): Remove.
16564         * ggc-common.c (ggc_protect_identifiers): New global.
16565         (ggc_mark_roots): Call ggc_purge_stringpool.  Use
16566         ggc_protect_identifiers.
16567         * ggc.h (ggc_protect_identifiers): Declare.
16568         (gt_ggc_m_S): Update.
16569         (ggc_purge_stringpool): Declare.
16570         * toplev.c (compile_file): Set and reset ggc_protect_identifiers.
16571         * gengtype.c (write_types_process_field) <TYPE_STRING>: Remove
16572         special case.
16573         (write_root): Cast gt_ggc_m_S to gt_pointer_walker.
16574
16575 2008-05-21  David S. Miller  <davem@davemloft.net>
16576
16577         * config.gcc (sparc-*-linux*): Always include sparc/t-linux in
16578         tmake_file.
16579
16580 2008-05-21  Eric Botcazou  <ebotcazou@adacore.com>
16581
16582         * cfgexpand.c (tree_expand_cfg): Zap the EH throw statement table
16583         once finished.
16584
16585 2008-05-20  David Daney  <ddaney@avtrex.com>
16586
16587         * config/mips/mips.md (UNSPEC_SYNC_NEW_OP_12,
16588         UNSPEC_SYNC_OLD_OP_12, UNSPEC_SYNC_EXCHANGE_12): New define_constants.
16589         (UNSPEC_SYNC_EXCHANGE, UNSPEC_MEMORY_BARRIER, UNSPEC_SET_GOT_VERSION,
16590         UNSPEC_UPDATE_GOT_VERSION): Renumber.
16591         (optab, insn): Add 'plus' and 'minus' to define_code_attr.
16592         (atomic_hiqi_op): New define_code_iterator.
16593         (sync_compare_and_swap<mode>): Call mips_expand_atomic_qihi instead of
16594         mips_expand_compare_and_swap_12.
16595         (compare_and_swap_12): Use MIPS_COMPARE_AND_SWAP_12 instead of
16596         MIPS_COMPARE_AND_SWAP_12_0.  Pass argument to MIPS_COMPARE_AND_SWAP_12.
16597         (sync_<optab><mode>, sync_old_<optab><mode>,
16598         sync_new_<optab><mode>, sync_nand<mode>, sync_old_nand<mode>,
16599         sync_new_nand<mode>): New define_expands for HI and QI mode operands.
16600         (sync_<optab>_12, sync_old_<optab>_12, sync_new_<optab>_12,
16601         sync_nand_12, sync_old_nand_12, sync_new_nand_12): New insns.
16602         (sync_lock_test_and_set<mode>): New define_expand for HI and QI modes.
16603         (test_and_set_12): New insn.
16604         (sync_old_add<mode>, sync_new_add<mode>, sync_old_<optab><mode>,
16605         sync_new_<optab><mode>, sync_old_nand<mode>,
16606         sync_new_nand<mode>, sync_lock_test_and_set<mode>):  Add early
16607         clobber to operand 0 for SI and DI mode insns.
16608         * config/mips/mips-protos.h (mips_gen_fn_6, mips_gen_fn_5,
16609         mips_gen_fn_4): New typedefs.
16610         (mips_gen_fn_ptrs): Define new union type.
16611         (mips_expand_compare_and_swap_12): Remove declaration.
16612         (mips_expand_atomic_qihi): Declare function.
16613         * config/mips/mips.c (mips_expand_compare_and_swap_12): Rename to...
16614         (mips_expand_atomic_qihi): ... this.  Use new generator function
16615         parameter.
16616         * config/mips/mips.h (MIPS_COMPARE_AND_SWAP_12): Add OPS parameter.
16617         (MIPS_COMPARE_AND_SWAP_12_0): Delete macro.
16618         (MIPS_COMPARE_AND_SWAP_12_ZERO_OP, MIPS_COMPARE_AND_SWAP_12_NONZERO_OP,
16619         MIPS_SYNC_OP_12, MIPS_SYNC_OP_12_NOT_NOP,
16620         MIPS_SYNC_OP_12_NOT_NOT, MIPS_SYNC_OLD_OP_12,
16621         MIPS_SYNC_OLD_OP_12_NOT_NOP, MIPS_SYNC_OLD_OP_12_NOT_NOP_REG,
16622         MIPS_SYNC_OLD_OP_12_NOT_NOT, MIPS_SYNC_OLD_OP_12_NOT_NOT_REG,
16623         MIPS_SYNC_NEW_OP_12, MIPS_SYNC_NEW_OP_12_NOT_NOP,
16624         MIPS_SYNC_NEW_OP_12_NOT_NOT, MIPS_SYNC_EXCHANGE_12,
16625         MIPS_SYNC_EXCHANGE_12_ZERO_OP, MIPS_SYNC_EXCHANGE_12_NONZERO_OP):
16626         New macros.
16627
16628 2008-05-20  H.J. Lu  <hongjiu.lu@intel.com>
16629
16630         * config/i386/i386.c (ix86_expand_vector_init_one_nonzero): Add
16631         the missing break.
16632
16633 2008-05-20  Anatoly Sokolov <aesok@post.ru>
16634
16635         * config/avr/avr.h (machine_function): Add 'is_OS_main' field.
16636         * config/avr/avr.c (avr_OS_main_function_p): Add new function.
16637         (avr_attribute_table): Add 'OS_main' function attribute.
16638         (avr_regs_to_save, expand_prologue, expand_epilogue): Handle
16639         functions with 'OS_main' attribute.
16640
16641 2008-05-20  Richard Guenther  <rguenther@suse.de>
16642
16643         PR tree-optimization/35204
16644         * tree-ssa-sccvn.c (extract_and_process_scc_for_name): New
16645         helper, split out from ...
16646         (DFS): ... here.  Make the DFS walk non-recursive.
16647
16648 2008-05-20  Sebastian Pop  <sebastian.pop@amd.com>
16649             Jan Sjodin  <jan.sjodin@amd.com>
16650
16651         PR tree-optimization/36181
16652         * tree-parloops.c (loop_has_vector_phi_nodes): New.
16653         (parallelize_loops): Don't parallelize when the loop has vector
16654         phi nodes.
16655
16656 2008-05-20  Jan Sjodin  <jan.sjodin@amd.com>
16657             Sebastian Pop  <sebastian.pop@amd.com>
16658
16659         * tree-loop-linear.c (gather_interchange_stats): Look in the access
16660         matrix, and never look at the tree representation of the memory
16661         accesses.
16662         (linear_transform_loops): Computes parameters and access matrices.
16663         * tree-data-ref.c (compute_data_dependences_for_loop): Returns false
16664         when fails.
16665         (access_matrix_get_index_for_parameter): New.
16666         * tree-data-ref.h (struct access_matrix): New.
16667         (AM_LOOP_NEST_NUM, AM_NB_INDUCTION_VARS, AM_PARAMETERS, AM_MATRIX,
16668         AM_NB_PARAMETERS, AM_CONST_COLUMN_INDEX, AM_NB_COLUMNS,
16669         AM_GET_SUBSCRIPT_ACCESS_VECTOR, AM_GET_ACCESS_MATRIX_ELEMENT,
16670         am_vector_index_for_loop): New.
16671         (struct data_reference): Add field access_matrix.
16672         (DR_ACCESS_MATRIX): New.
16673         (compute_data_dependences_for_loop): Update declaration.
16674         (lambda_collect_parameters, lambda_compute_access_matrices): Declared.
16675         * lambda.h (lambda_vector_vec_p): Declared.
16676         * lambda-code.c: Depend on pointer-set.h.
16677         (lambda_collect_parameters_from_af, lambda_collect_parameters,
16678         av_for_af_base, av_for_af, build_access_matrix,
16679         lambda_compute_access_matrices): New.
16680         * Makefile.in (lambda-code.o): Depend on pointer-set.h.
16681
16682 2008-05-20  Joseph Myers  <joseph@codesourcery.com>
16683
16684         * doc/install.texi2html: Generate gcc-vers.texi in $DESTDIR not
16685         $SOURCEDIR/include.
16686
16687 2008-05-20  Jan Sjodin  <jan.sjodin@amd.com>
16688             Sebastian Pop  <sebastian.pop@amd.com>
16689
16690         PR tree-optimization/36206
16691         * tree-scalar-evolution.c: Remove enum INSERT_SUPERLOOP_CHRECS,
16692         FOLD_CONVERSIONS.
16693         (instantiate_scev_1): Rename flags to fold_conversions.
16694         Do not check for INSERT_SUPERLOOP_CHRECS, keep SSA_NAMEs defined
16695         outeside instantiation_loop.
16696         * tree-chrec.h (evolution_function_is_affine_in_loop): New.
16697         (evolution_function_is_affine_or_constant_p): Removed.
16698         * tree-data-ref.c (dr_analyze_indices): Replace resolve_mixers with
16699         instantiate_scev.
16700         (analyze_siv_subscript): Pass in the loop nest number.
16701         Call evolution_function_is_affine_in_loop instead of
16702         evolution_function_is_affine_p.
16703         (analyze_overlapping_iterations): Pass in the loop nest number.
16704
16705 2008-05-20  Jan Sjodin  <jan.sjodin@amd.com>
16706             Sebastian Pop  <sebastian.pop@amd.com>
16707
16708         PR tree-optimization/36206
16709         * tree-chrec.h (chrec_fold_op): New.
16710         * tree-data-ref.c (initialize_matrix_A): Traverse NOP_EXPR, PLUS_EXPR,
16711         and other trees.
16712
16713 2008-05-20  Nathan Sidwell  <nathan@codesourcery.com>
16714
16715         * c-incpath.c (INO_T_EQ): Do not define on non-inode systems.
16716         (DIRS_EQ): New.
16717         (remove_duplicates): Do not set inode on non-inode systems.
16718         Use DIRS_EQ.
16719
16720 2008-05-20  Sandra Loosemore  <sandra@codesourcery.com>
16721
16722         * config.gcc (tm_file): Update comments about relative pathnames.
16723
16724 2008-05-20  Richard Guenther  <rguenther@suse.de>
16725
16726         * tree-ssa-reassoc.c (fini_reassoc): Use the statistics infrastructure.
16727         * tree-ssa-sccvn.c (process_scc): Likewise.
16728         * tree-ssa-sink.c (execute_sink_code): Likewise.
16729         * tree-ssa-threadupdate.c (thread_through_all_blocks): Likewise.
16730         * tree-vrp.c (process_assert_insertions): Likewise.
16731         * tree-ssa-dce.c (eliminate_unnecessary_stmts): Likewise.
16732         (perform_tree_ssa_dce): Likewise.
16733         * tree-ssa-dom.c (tree_ssa_dominator_optimize): Likewise.
16734         (dump_dominator_optimization_stats): Likewise.
16735         * tree-vectorizer.c (vectorize_loops): Likewise.
16736
16737 2008-05-20  Richard Guenther  <rguenther@suse.de>
16738
16739         * tree-vn.c (vn_lookup_with_vuses): Do not use the alias oracle.
16740
16741 2008-05-20  Kai Tietz  <kai.tietz@onevision.com>
16742
16743         * config/i386/i386-protos.h (ix86_return_in_memory): Removed.
16744         (ix86_i386elf_return_in_memory): Likewise.
16745         (ix86_i386interix_return_in_memory): Likewise.
16746         * config/i386/i386-interix.h (TARGET_RETURN_IN_MEMORY): Removed.
16747         (SUBTARGET_RETURN_IN_MEMORY): New.
16748         * config/i386/i386elf.h: Likewise.
16749         * config/i386/ptx4-i.h: Likewise.
16750         * config/i386/sol2-10.h: Likewise.
16751         * config/i386/sysv4.h: Likewise.
16752         * config/i386/vx-common.h: Likewise.
16753         * config/i386/i386.h (TARGET_RETURN_IN_MEMORY): Removed.
16754         * config/i386/i386.c (ix86_return_in_memory): Made static and
16755         make use of optional SUBTARGET_RETURN_IN_MEMORY macro.
16756         (ix86_i386elf_return_in_memory): Removed.
16757         (ix86_i386interix_return_in_memory): Removed.
16758         (TARGET_RETURN_IN_MEMORY): Declared within i386.c only.
16759         * target-def.h (TARGET_RETURN_IN_MEMORY): Remove protection #ifdef.
16760
16761 2008-05-20  Alexandre Oliva  <aoliva@redhat.com>
16762
16763         * cselib.c (cselib_record_sets): Use correct mode for IF_THEN_ELSE.
16764
16765 2008-05-19  Xinliang David Li  <davidxl@google.com>
16766
16767         * tree-ssa-dce.c: Revert patches of 2008-05-17 and 2008-05-18.
16768         * opts.c: Ditto.
16769         * common.opt: Ditto.
16770         * doc/invoke.texi: Ditto.
16771
16772 2008-05-19  Eric Botcazou  <ebotcazou@adacore.com>
16773
16774         * tree.c (substitute_in_expr) <tcc_vl_exp>: Fix thinko.
16775         (substitute_placeholder_in_expr) <tcc_vl_exp>: Minor tweak.
16776
16777 2008-05-19  H.J. Lu  <hongjiu.lu@intel.com>
16778
16779         * config/i386/i386.c (ix86_expand_vector_init_concat): Change
16780         sizes of operand array from 8/4 to 4/2.
16781         (ix86_expand_vector_init_general): Change size of operand array
16782         from 32 to 16.  Remove op0, op1 and half_mode.
16783
16784 2008-05-19  H.J. Lu  <hongjiu.lu@intel.com>
16785
16786         * config/i386/i386.c (ix86_expand_vector_init_concat): New.
16787         (ix86_expand_vector_init_interleave): Likewise.
16788         (ix86_expand_vector_init_general): Use them.  Assert
16789         word_mode == SImode when n_words == 4.
16790
16791 2008-05-19  Uros Bizjak  <ubizjak@gmail.com>
16792
16793         * config/i386/i386.c (ix86_secondary_reload): New static function.
16794         (TARGET_SECONDARY_RELOAD): New define.
16795         * config/i386/i386.h (SECONDARY_OUTPUT_RELOAD_CLASS): Remove.
16796         * config/i386/i386.md (reload_outqi): Remove.
16797
16798 2008-05-18  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
16799
16800         PR middle-end/35509
16801         * builtins.c (mathfn_built_in_1): Renamed from mathfn_built_in.
16802         Add `implicit' parameter.  Handle BUILT_IN_SIGNBIT.
16803         (mathfn_built_in): Rewrite in terms of mathfn_built_in_1.
16804         (fold_builtin_classify): Handle BUILT_IN_ISINF_SIGN.
16805         (fold_builtin_1): Likewise.
16806         * builtins.def (BUILT_IN_ISINF_SIGN): New.
16807         c-common.c (check_builtin_function_arguments): Handle
16808         BUILT_IN_ISINF_SIGN.
16809         * doc/extend.texi: Document __builtin_isinf_sign.
16810         * fold-const.c (operand_equal_p): Handle COND_EXPR.
16811
16812 2008-05-18  Eric Botcazou  <ebotcazou@adacore.com>
16813
16814         * tree-ssa-dom.c (tree_ssa_dominator_optimize): If some blocks need
16815         EH cleanup at the end of the pass, search for those that have been
16816         turned into forwarder blocks and do the cleanup on their successor.
16817
16818 2008-05-18  Richard Guenther  <rguenther@suse.de>
16819
16820         * tree-cfg.c (verify_gimple_expr): Allow conversions from
16821         pointers to sizetype and vice versa.
16822
16823 2008-05-18 Xinliang David Li   <davidxl@google.com>
16824
16825         * gcc/tree-ssa-dce.c: Coding style fix.
16826         (check_pow): Documentation comment.
16827         (check_log): Documenation comment. Coding style fix.
16828         (is_unnecessary_except_errno_call): Ditto.
16829         (gen_conditions_for_pow): Ditto.
16830         (gen_conditions_for_log): Ditto.
16831         (gen_shrink_wrap_conditions): Ditto.
16832         (shrink_wrap_one_built_in_calls): Ditto.
16833         * gcc/doc/invoke.texi: Better documentation string.
16834         * ChangeLog: Fix wrong change log entries from
16835         May 17 checkin on function call DCE.
16836
16837 2008-05-17  Kaz Kojima  <kkojima@gcc.gnu.org>
16838
16839         * config/sh/sh.c (sh_output_mi_thunk): Update the use of init_flow.
16840
16841 2008-05-17  Kenneth Zadeck <zadeck@naturalbridge.com>
16842
16843         * doc/rtl.texi (RTL_CONST_CALL_P, RTL_PURE_CALL_P): Fixed typos.
16844         * df-problems.c (simulation routines): Fixed block comment to
16845         properly say how to add forwards scanning functions.
16846
16847 2008-05-17  Eric Botcazou  <ebotcazou@adacore.com>
16848
16849         * tree-inline.c (setup_one_parameter): Remove dead code.
16850
16851 2008-05-17  Eric Botcazou  <ebotcazou@adacore.com>
16852
16853         * fold-const.c (fold_unary) <CASE_CONVERT>: Fold the cast into
16854         a BIT_AND_EXPR only for an INTEGER_TYPE.
16855
16856 2008-05-17 Xinliang David Li   <davidxl@google.com>
16857
16858         * gcc/tree-ssa-dce.c (cond_dead_built_in_calls): New static variable.
16859         (check_pow, check_log, is_unnecessary_except_errno_call): New
16860         functions to check for eliminating math functions that are pure
16861         except for setting errno.
16862         (gen_conditions_for_pow, gen_conditionas_for_log): New functions to
16863         general condition expressions for shrink-wrapping pow/log calls.
16864         (gen_shrink_wrap_conditions): Ditto.
16865         (shrink_wrap_one_built_in_call): Ditto.
16866         (shrink_wrap_conditional_dead_built_in_calls): Ditto.
16867         (mark_operand_necessary): If debugging, output if OP is necessary.
16868         (eliminate_unnecessary_stmts): Eliminate pow, log calls that are
16869         unnecessary.
16870         * gcc/opts.c (decode_options): set flag_tree_builtin_dce to 1 when
16871         opt level >= 2.
16872         * gcc/common.opt: New user flag -ftree-builtin-dce.
16873         * gcc/doc/invoke.texi (-ftree-builtin-dce): New option.
16874
16875 2008-05-16  David S. Miller  <davem@davemloft.net>
16876
16877         * config/sparc/linux.h (NO_PROFILE_COUNTERS): Undef before overriding.
16878         * config/sparc/linux64.h (NO_PROFILE_COUNTERS): Likewise.
16879
16880 2008-05-16  Uros Bizjak  <ubizjak@gmail.com>
16881
16882         PR target/36246
16883         * config/i386/i386.h (SECONDARY_MEMORY_NEEDED_MODE): New define.
16884
16885 2008-05-16  Kenneth Zadeck <zadeck@naturalbridge.com>
16886
16887         * ifcvt.c (dead_or_predicable): Rename
16888         df_simulate_one_insn_backwards to df_simulate_one_insn.
16889         * recog.c (peephole2_optimize): Ditto.
16890         * rtl-factoring.c (collect_pattern_seqs, clear_regs_live_in_seq):
16891         Ditto.
16892         * df.h: Rename df_simulate_one_insn_backwards to
16893         df_simulate_one_insn.  and delete df_simulate_one_insn_forwards.
16894         * df-problems.c (df_simulate_artificial_refs_at_top) Reversed
16895         scanning of defs and uses.
16896         (df_simulate_one_insn_backwards): Renamed to df_simulate_one_insn.
16897         (df_simulate_one_insn_forwards): Removed.
16898
16899 2008-05-16  Doug Kwan  <dougkwan@google.com>
16900
16901         * real.c (real_to_decimal, real_to_hexadecimal): Distinguish
16902         QNaN & SNaN.
16903         (real_from_string): Handle NaNs and Inf as approriate.
16904
16905 2008-05-16  Nathan Froyd  <froydnj@codesourcery.com>
16906
16907         * doc/gty.texi (Source Files Containing Type Information): Note
16908         that headers should appear first in the gtfiles list.
16909
16910 2008-05-16  Kenneth Zadeck <zadeck@naturalbridge.com>
16911
16912         * tree.def (COND_EXEC): Properly documented this code.
16913
16914 2008-05-16  Diego Novillo  <dnovillo@google.com>
16915
16916         * dwarf2asm.c (dw2_assemble_integer): Clarify comment.
16917         * tree-nested.c (get_trampoline_type): Set DECL_CONTEXT for
16918         the new field.
16919
16920 2008-05-16  Kenneth Zadeck <zadeck@naturalbridge.com>
16921
16922         * tree-ssa-dse (max_stmt_uid): Removed.
16923         (get_stmt_uid, dse_possible_dead_store_p, dse_optimize_stmt,
16924         tree_ssa_dse): Encapsulate all uses of stmt_ann->uid.
16925         * tree-ssa-sccvn.c (compare_ops, init_scc_vn): Ditto.
16926         * function.h (cfun.last_stmt_uid): New field.
16927         * tree-flow-inline.h (set_gimple_stmt_uid, gimple_stmt_uid,
16928         gimple_stmt_max_uid, set_gimple_stmt_max_uid, inc_gimple_stmt_max_uid):
16929         New functions.
16930         * tree-dfa.c (renumber_gimple_stmt_uids): New function.
16931         (create_stmt_ann): Initialize the ann->uid field.
16932         * tree-ssa-pre.c (compute_avail): Encapsulate the stmt_ann->uid
16933         with new calls.
16934         * tree-flow.h (renumber_gimple_stmt_uids): New function.
16935
16936 2008-05-16  Nathan Froyd  <froydnj@codesourcery.com>
16937
16938         * tree-flow.h (init_empty_tree_cfg_for_function): Declare.
16939         * tree-cfg.c (init_empty_tree_cfg_for_function): Define.
16940         (init_empty_tree_cfg): Call it.
16941
16942 2008-05-16  Kenneth Zadeck <zadeck@naturalbridge.com>
16943
16944         * cfg.c (init_flow): Add argument THE_FUN.  Use it instead of cfun.
16945         Update all users.
16946
16947 2008-05-16  Kenneth Zadeck <zadeck@naturalbridge.com>
16948
16949         * doc/invoke.text (-fdump-tree-*-verbose): New option.
16950         * tree-dump.c (dump_options): New verbose option.
16951         * tree-pretty-print.c (dump_phi_nodes, dump_generic_bb_buff):
16952         Add verbose dump.
16953         * tree-pass.h (TDF_VERBOSE): New dump flag.
16954         * print-tree.c (print_node): Added code to be able to print PHI_NODES.
16955         (tree-flow.h): Added include.
16956         * Makefile.in (print-tree.o):  Added TREE_FLOW_H.
16957
16958 2008-05-16  Bernd Schmidt  <bernd.schmidt@analog.com>
16959
16960         * config/bfin/bfin.c (bfin_discover_loops): Delete empty loops.
16961
16962         From Jie Zhang  <jie.zhang@analog.com>
16963         * config/bfin/t-bfin-elf (MULTILIB_OPTIONS, MULTILIB_DIRNAMES,
16964         MULTILIB_MATCHES, MULTILIB_EXCEPTIONS): Remove mcpu=bf532-0.3,
16965         mcpu=bf561-none and mcpu=bf561-0.2.
16966         * config/bfin/t-bfin-uclinux (MULTILIB_OPTIONS, MULTILIB_DIRNAMES,
16967         MULTILIB_MATCHES, MULTILIB_EXCEPTIONS): Likewise.
16968         * config/bfin/t-bfin-linux (MULTILIB_OPTIONS, MULTILIB_DIRNAMES,
16969         MULTILIB_MATCHES, MULTILIB_EXCEPTIONS): Likewise.
16970         * config/bfin/bfin-protos.h (enum bfin_cpu_type): Add BFIN_CPU_UNKNOWN.
16971         * config/bfin/elf.h (STARTFILE_SPEC): Use specific CRT for BF561.
16972         (LIB_SPEC): Use proper linker script for bf561.  Error if no mcpu
16973         option.
16974         * config/bfin/bfin.c (bfin_cpu_type): Set to BFIN_CPU_UNKNOWN.
16975         (cputype_selected): Remove.
16976         (bfin_handle_option): Don't use cputype_selected.
16977         (override_options): When no mcpu option, enable all workarounds.
16978         Don't use bfin_workarounds.
16979         * config/bfin/bfin.h (DRIVER_SELF_SPECS): Don't set default
16980         processor type.
16981         (DEFAULT_CPU_TYPE): Don't define.
16982
16983 2008-05-16  Richard Guenther  <rguenther@suse.de>
16984
16985         * tree-ssa-propagate.c (substitute_and_fold): Fix stmt walking
16986         on deletion of the last stmt.
16987
16988 2008-05-15  H.J. Lu  <hongjiu.lu@intel.com>
16989
16990         * config/i386/i386.c (ix86_expand_vector_init_general): Optimize
16991         V8HImode for SSE2 and V16QImode for SSE4.1.
16992
16993 2008-05-15  Kenneth Zadeck <zadeck@naturalbridge.com>
16994
16995         * cgraph.h (compute_inline_parameters): Made public.
16996         * tree-pass.h (ipa_opt_pass): Removed function_generate_summary,
16997         variable_generate_summary, function_write_summary,
16998         variable_write_summary, variable_read_summary.  Added generate_summary,
16999         write_summary, read_summary.
17000         * cgraphunit.c (cgraph_process_new_functions): Changed call from
17001         pass_ipa_inline.function_generate_summary, to
17002         compute_inline_parameters.
17003         * ipa-inline.c (compute_inline_parameters): Made public and added
17004         node parameter.
17005         (compute_inline_parameters_for_current): New function.
17006         (pass_inline_param): Now calls compute_inline_parameters_for_current.
17007         (inline_generate_summary): Removed parameter and made to loop over
17008         all cgraph nodes.
17009         (pass_ipa_inline): Updated for new IPA_PASS structure.
17010         * passes.c (execute_ipa_summary_passes): Now is called once per
17011         pass rather than once per node*pass.
17012
17013 2008-05-15  Anatoly Sokolov <aesok@post.ru>
17014
17015         * config/avr/avr.c (avr_base_arch_macro, avr_have_movw_lpmx_p,
17016         avr_have_mul_p, avr_asm_only_p): Remove variables.
17017         (avr_override_options): Remove initialization of removed variables.
17018         (avr_file_start):  Convert removed variables to fields of
17019         'struct base_arch_s *avr_current_arch'.
17020         * config/avr/avr.h (TARGET_CPU_CPP_BUILTINS): (Ditto.).
17021         (AVR_HAVE_MUL): (Ditto.).
17022         (AVR_HAVE_MOVW): (Ditto.).
17023         (AVR_HAVE_LPMX): (Ditto.).
17024         (avr_base_arch_macro, avr_have_movw_lpmx_p, avr_have_mul_p,
17025         avr_asm_only_p): Remove declaration.
17026
17027 2008-05-15  Diego Novillo  <dnovillo@google.com>
17028
17029         * config/arm/arm.c (arm_return_in_memory): Fix return type.
17030         * config/arm/arm-protos.h (arm_return_in_memory): Likewise.
17031
17032 2008-05-15  Adam Nemet  <anemet@caviumnetworks.com>
17033
17034         PR middle-end/36194
17035         * combine.c (check_conversion): Rename back to check_promoted_subreg.
17036         Don't call record_truncated_value from here.
17037         (record_truncated_value): Turn it into a for_each_rtx callback.
17038         (record_truncated_values): New function.
17039         (combine_instructions): Call note_uses with record_truncated_values.
17040         Change name of check_conversion to check_promoted_subreg.
17041
17042 2008-05-15  Janis Johnson  <janis187@us.ibm.com>
17043
17044         * doc/sourcebuild.texi: Document support for torture tests.
17045
17046 2008-05-15  Uros Bizjak  <ubizjak@gmail.com>
17047
17048         * config/i386/sse.md (*vec_concatv2sf_sse4_1): Add "m" constraint
17049         to alternative 4 of operand 2.
17050
17051 2008-05-15  Richard Guenther  <rguenther@suse.de>
17052
17053         * tree-pass.h (current_pass): Declare.
17054         (get_pass_for_id): Likewise.
17055         * passes.c (passes_by_id, passes_by_id_size): New globals.
17056         (set_pass_for_id): New function.
17057         (get_pass_for_id): Likewise.
17058         (register_one_dump_file): Use set_pass_for_id to populate passes_by_id.
17059         (execute_function_todo): Flush per function statistics.
17060         * toplev.c (compile_file): Init statistics.
17061         (general_init): Do early statistics initialization.
17062         (finalize): Finish statistics.
17063         * statistics.h (statistics_early_init): Declare.
17064         (statistics_init): Likewise.
17065         (statistics_fini): Likewise.
17066         (statistics_fini_pass): Likewise.
17067         (statistics_counter_event): Likewise.
17068         (statistics_histogram_event): Likewise.
17069         * statistics.c: New file.
17070         * Makefile.in (OBJS-common): Add statistics.o.
17071         (statistics.o): Add dependencies.
17072         * doc/invoke.texi (-fdump-statistics): Document.
17073
17074         * tree-ssa-pre.c (compute_antic): Use statistics_histogram_event.
17075         (insert): Likewise.
17076         (execute_pre): Use statistics_counter_event.
17077         * tree-ssa-propagate.c (struct prop_stats_d): Add num_dce field.
17078         (substitute_and_fold): Increment it.  Use statistics_counter_event.
17079
17080 2008-05-15  Diego Novillo  <dnovillo@google.com>
17081
17082         http://gcc.gnu.org/ml/gcc-patches/2008-05/msg00893.html
17083
17084         * treestruct.def (TS_STRUCT_FIELD_TAG): Remove.
17085         * tree-ssa-alias.c (new_type_alias): Remove references to
17086         sub-variables from comment.
17087         * tree-ssa-operands.c (swap_tree_operands): Likewise.
17088
17089 2008-05-15  H.J. Lu  <hongjiu.lu@intel.com>
17090
17091         * config/i386/sse.md (*vec_concatv2sf_sse4_1): Set prefix_extra
17092         attribute to 1 only for insertps alternative.
17093
17094 2008-05-15  Bernd Schmidt  <bernd.schmidt@analog.com>
17095
17096         * config/bfin/bfin.md (loadbytes): New pattern.
17097         * config/bfin/bfin.c (enum bfin_builtins): Add BFIN_BUILTIN_LOADBYTES.
17098         (bfin_init_builtins): Initialize it.
17099         (bdesc_1arg): Add it.
17100
17101 2008-05-15  Sa Liu  <saliu@de.ibm.com>
17102
17103         * testsuite/gfortran.dg/c_kind_int128_test1.f03: New.
17104         * testsuite/gfortran.dg/c_kind_int128_test2.f03: New.
17105         * testsuite/lib/target-supports.exp: Add
17106         check_effective_target_fortran_integer_16.
17107
17108 2008-05-15  Bernd Schmidt  <bernd.schmidt@analog.com>
17109
17110         * config/bfin/bfin.h (TARGET_RETURN_IN_MEMORY): Don't define here.
17111         * config/bfin/bfin-protos.h (bfin_return_in_memory): Don't declare.
17112         * config/bfin/bfin.c (bfin_return_in_memory): Now static.  Return bool.
17113         (TARGET_RETURN_IN_MEMORY): Define.
17114
17115 2008-05-15  Richard Guenther  <rguenther@suse.de>
17116
17117         PR middle-end/36244
17118         * tree-ssa-alias.c (new_type_alias): Do not set TREE_READONLY.
17119         * tree-flow-inline.h (unmodifiable_var_p): Memory tags never
17120         represent unmodifiable vars.
17121
17122 2008-05-15  Richard Guenther  <rguenther@suse.de>
17123
17124         * tree-dfa.c (refs_may_alias_p): Allow all kinds of
17125         INDIRECT_REF and TARGET_MEM_REF.
17126         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Handle
17127         TARGET_MEM_REF.
17128
17129 2008-05-15  Uros Bizjak  <ubizjak@gmail.com>
17130             H.J. Lu  <hongjiu.lu@intel.com>
17131
17132         * config/i386/sse.md (*vec_concatv2sf_sse4_1): New insn pattern.
17133         (*vec_concatv2si_sse4_1): Use vector_move_operand predicate
17134         for operand 2.  Remove pinsr{q,d} with 0x0 immediate operand from
17135         insn alternatives.  Add missing alternatives.
17136         (*vec_concatv2di_rex64_sse4_1): Likewise.
17137         (*vec_concatv2si_sse2): Use "x" register constraint instead of "Y2".
17138         (*vec_concatv2di_rex64_sse): Rename from *vec_concatv2di_rex64.
17139         Require TARGET_SSE.
17140
17141 2008-05-15  Richard Guenther  <rguenther@suse.de>
17142
17143         PR tree-optimization/36009
17144         PR tree-optimization/36204
17145         * tree-ssa-loop-im.c (tree-ssa-propagate.h): Include.
17146         (determine_invariantness_stmt): Record the loop a store is
17147         always executed in.
17148         * Makefile.in (tree-ssa-loop-im.o): Add tree-ssa-propagate.h
17149         dependency.
17150
17151 2008-05-15  Richard Guenther  <rguenther@suse.de>
17152
17153         PR tree-optimization/34330
17154         * tree-ssa-alias.c (get_smt_for): Only assert that accesses
17155         through the pointer will alias the SMT.
17156
17157 2008-05-14  Andreas Tobler  <a.tobler@schweiz.org>
17158
17159         * config/sparc/sparc.h (NO_PROFILE_COUNTERS): Define as 0.
17160
17161 2008-05-14  H.J. Lu  <hongjiu.lu@intel.com>
17162
17163         * config/i386/sse.md (*sse4_1_pinsrq): Make it 64bit only.
17164
17165 2008-05-14  Michael Meissner  <michael.meissner@amd.com>
17166             Dwarakanath Rajagopal  <dwarak.rajagopal@amd.com>
17167
17168         * optabs.h (optab_index): Add OTI_vashl, OTI_vlshr, OTI_vashr,
17169         OTI_vrotl, OTI_vrotr to support vector/vector shifts.
17170         (vashl_optab): New optab for vector/vector shifts.
17171         (vashr_optab): Ditto.
17172         (vlshr_optab): Ditto.
17173         (vrotl_optab): Ditto.
17174         (vrotr_optab): Ditto.
17175         (optab_subtype): New enum for optab_for_tree_code call.
17176         (optab_for_tree_code): Add enum optab_subtype argument.
17177
17178         * optabs.c (optab_for_tree_code): Take an additional argument to
17179         distinguish between a vector shift by a scalar and vector shift by
17180         a vector.  Make lshr/ashr/ashl/rotl/rotr optabs just vector
17181         shifted by a scalar.  Use vlshr/vashr/vashl/vrotl/vrotr for the
17182         vector shift by a vector.
17183         (expand_widen_pattern_expr): Pass additional argument to
17184         optab_for_tree_code.
17185
17186         * genopinit.c (optabs): Add vashr_optab, vashl_optab, vlshr_optab,
17187         vrotl_optab, vrotr_optab.
17188
17189         * expr.c (expand_expr_real_1): Update calls to
17190         optab_for_tree_code to distinguish between vector shifted by a
17191         scalar and vector shifted by a vector.
17192         * tree-vectorizer.c (supportable_widening_operation): Ditto.
17193         (supportable_narrowing_operation): Ditto.
17194         * tree-vect-analyze.c (vect_build_slp_tree): Ditto.
17195         * tree-vect-patterns.c (vect_pattern_recog_1): Ditto.
17196         * tree-vect-transform.c (vect_model_reduction_cost): Ditto.
17197         (vect_create_epilog_for_reduction): Ditto.
17198         (vectorizable_reduction): Ditto.
17199         (vectorizable_operation): Ditto.
17200         (vect_strided_store_supported): Ditto.
17201         (vect_strided_load_supported): Ditto.
17202         * tree-vect-generic.c (expand_vector_operations_1): Ditto.
17203         * expmed.c (expand_shift): Ditto.
17204
17205         * doc/md.texi (ashl@var{m}3): Document that operand 2 is always a
17206         scalar type.
17207         (ashr@var{m}3): Ditto.
17208         (vashl@var{m}3): Document new vector/vector shift standard name.
17209         (vashr@var{m}3): Ditto.
17210         (vlshr@var{m}3): Ditto.
17211         (vrotl@var{m}3): Ditto.
17212         (vrotr@var{m}3): Ditto.
17213
17214         * config/i386/i386.md (PPERM_SRC): Move PPERM masks here from i386.c.
17215         (PPERM_INVERT): Ditto.
17216         (PPERM_REVERSE): Ditto.
17217         (PPERM_REV_INV): Ditto.
17218         (PPERM_ZERO): Ditto.
17219         (PPERM_ONES): Ditto.
17220         (PPERM_SIGN): Ditto.
17221         (PPERM_INV_SIGN): Ditto.
17222         (PPERM_SRC1): Ditto.
17223         (PPERM_SRC2): Ditto.
17224
17225         * config/i386/sse.md (mulv2di3): Add SSE5 support.
17226         (sse5_pmacsdql_mem): New SSE5 define_and_split that temporarily
17227         allows a memory operand to be the value being added, and split it
17228         to improve vectorization.
17229         (sse5_pmacsdqh_mem): Ditto.
17230         (sse5_mulv2div2di3_low): SSE5 32-bit multiply and extend function.
17231         (sse5_mulv2div2di3_high): Ditto.
17232         (vec_pack_trunc_v8hi): Add SSE5 pperm support.
17233         (vec_pack_trunc_v4si): Ditto.
17234         (vec_pack_trunc_v2di): Ditto.
17235         (sse5_pcmov_<mode>): Remove code that tried to use use
17236         andps/andnps instead of pcmov.
17237         (vec_widen_smult_hi_v4si): If we have SSE5, use the pmacsdql and
17238         pmacsdqh instructions.
17239         (vec_widen_smult_lo_v4si): Ditto.
17240
17241         * config/i386/i386.c (PPERM_SRC): Move PPERM masks to i386.md.
17242         (PPERM_INVERT): Ditto.
17243         (PPERM_REVERSE): Ditto.
17244         (PPERM_REV_INV): Ditto.
17245         (PPERM_ZERO): Ditto.
17246         (PPERM_ONES): Ditto.
17247         (PPERM_SIGN): Ditto.
17248         (PPERM_INV_SIGN): Ditto.
17249         (PPERM_SRC1): Ditto.
17250         (PPERM_SRC2): Ditto.
17251         (ix86_expand_sse_movcc): Move the SSE5 test after the if
17252         true/false tests.
17253         (ix86_expand_int_vcond): If SSE5 generate all possible integer
17254         comparisons.
17255         (ix86_sse5_valid_op_p): Allow num_memory to be negative, which
17256         says ignore whether the last reference is a memory operand.
17257
17258 2008-05-14  Michael Meissner  <michael.meissner@amd.com>
17259             Paolo Bonzini <bonzini at gnu dot org>
17260
17261         * config/rs6000/rs6000.c (bdesc_2arg): Change the names of vector
17262         shift patterns.
17263
17264         * config/rs6000/altivec.md (vashl<mode>3): Rename from ashl<mode>3.
17265         (vlshr<mode>3): Rename from vlshr<mode>3.
17266         (vashr<mode>3): Rename from vashr<mode>3.
17267         (mulv4sf3): Change the names of vector shift patterns.
17268         (mulv4si3): Ditto.
17269         (negv4sf2): Ditt.
17270
17271         * config/spu/spu.c (spu_initialize_trampoline): Rename vector
17272         shift insns.
17273
17274         * config/spu/spu-builtins.def (SI_SHLH): Rename vector shift insns.
17275         (SI_SHLHI): Ditto.
17276         (SI_SHL): Ditto.
17277         (SI_SHLI): Ditto.
17278         (SI_ROTH): Ditto.
17279         (SI_ROTHI): Ditto.
17280         (SI_ROT): Ditto.
17281         (SI_ROTI): Ditto.
17282         (SPU_RL_0): Ditto.
17283         (SPU_RL_1): Ditto.
17284         (SPU_RL_2): Ditto.
17285         (SPU_RL_3): Ditto.
17286         (SPU_RL_4): Ditto.
17287         (SPU_RL_5): Ditto.
17288         (SPU_RL_6): Ditto.
17289         (SPU_RL_7): Ditto.
17290         (SPU_SL_0): Ditto.
17291         (SPU_SL_1): Ditto.
17292         (SPU_SL_2): Ditto.
17293         (SPU_SL_3): Ditto.
17294         (SPU_SL_4): Ditto.
17295         (SPU_SL_5): Ditto.
17296         (SPU_SL_6): Ditto.
17297         (SPU_SL_7): Ditto.
17298
17299         * config/spu/spu.md (v): New iterator macro to add v for vector types.
17300         (floatunssidf2_internal): Change vector/vector shift names.
17301         (floatunsdidf2_internal): Ditto.
17302         (mulv8hi3): Ditto.
17303         (ashrdi3): Ditto.
17304         (ashrti3): Ditto.
17305         (cgt_df): Ditto.
17306         (cgt_v2df): Ditto.
17307         (dftsv): Ditto.
17308         (vashl<mode>3): Rename from ashl<mode>3.
17309         (vashr<mode>3): Rename from ashr<mode>3.
17310         (vlshr<mode>3): Rename from lshr<mode>3.
17311         (vrotl<mode>3): Rename from rotl<mode>3.
17312
17313 2008-05-14  Michael Meissner  <michael.meissner@amd.com>
17314
17315         PR target/36224
17316         * config/i386/sse.md (vec_widen_smult_hi_v4si): Delete, using unsigned
17317         multiply gives the wrong value when doing widening multiplies.
17318         (vec_widen_smult_lo_v4si): Ditto.
17319
17320 2008-05-14  Kenneth Zadeck <zadeck@naturalbridge.com>
17321
17322         * optabs.c (prepare_cmp_insn): Changed LCT_PURE_MAKE_BLOCK to
17323         LCT_PURE and LCT_CONST_MAKE_BLOCK to LCT_CONST in calls to
17324         emit_library_call_value.
17325         * builtins.c (expand_builtin_powi, expand_builtin_memcmp): Ditto.
17326         * tree.h (ECF_LIBCALL_BLOCK): Removed.
17327         * calls.c (initialize_argument_information, precompute_arguments,
17328         expand_call, emit_library_call_value_1): Remove ECF_LIBCALL_BLOCK.
17329         (precompute_arguments): Removed flags parameter.
17330         * rtl.h (LCT_CONST_MAKE_BLOCK, LCT_PURE_MAKE_BLOCK): Removed.
17331
17332 2008-05-14  Richard Guenther  <rguenther@suse.de>
17333
17334         * tree-ssa-dse.c (dse_possible_dead_store_p): Remove dead code.
17335         Make sure to register the store if the use is a PHI_NODE.
17336
17337 2008-05-14  Olivier Hainque  <hainque@adacore.com>
17338
17339         * expr.c (expand_expr_real_1) <normal_inner_ref>: Force op0 to
17340         memory if the component is to be referenced in BLKmode according
17341         to get_inner_reference.
17342
17343 2008-05-14  Adam Nemet  <anemet@caviumnetworks.com>
17344
17345         * calls.c (emit_library_call_value_1): Restore code clearing
17346         ECF_LIBCALL_BLOCK to ensure that we only call end_sequence once.
17347
17348 2008-05-14  Olivier Hainque  <hainque@adacore.com>
17349             Nicolas Roche  <roche@adacore.com>
17350
17351         * configure.ac: Add support for a "gcc_subdir" variable in
17352         config-lang.in, to denote a subdirectory where the language/GCC
17353         integration files are to be found.
17354         * configure: Regenerate.
17355
17356 2008-05-14  Ira Rosen  <irar@il.ibm.com>
17357
17358         PR tree-optimization/36098
17359         * tree-vect-analyze.c (vect_analyze_group_access): Set the gap
17360         value for the first load in the group in case of a gap.
17361         (vect_build_slp_tree): Check that there are no gaps in loads.
17362
17363 2008-05-14  Kenneth Zadeck <zadeck@naturalbridge.com>
17364
17365         * doc/rtl.texi: Removed reference to REG_NO_CONFLICT notes.
17366         * optabs.c (expand_binop, expand_absneg_bit, expand_unop,
17367         expand_copysign_bit, ): Change call to emit_no_conflict_block to
17368         emit_insn and remove unneeded code to construct extra args.
17369         (emit_no_conflict_block): Removed.
17370         * optabls.h: (emit_no_conflict_block): Removed.
17371         * cse.c (cse_extended_basic_block): Remove search for
17372         REG_NO_CONFLICT note.
17373         * global.c: Removed incorrect comment added in revision 117.
17374         * expr.c (convert_move): Change call to emit_no_conflict_block to
17375         emit_insn.
17376         * recog.c: Change comments so that they do not mention
17377         REG_NO_CONFLICT.
17378         * local_alloc.c (combine_regs): Removed last parameter.
17379         (no_conflict_p): Removed.
17380         (block_alloc): Removed note, no_conflict_combined_regno and set
17381         local vars. Removed all code to process REG_NO_CONFLICT blocks.
17382         (combine_regs): Removed already_dead and code to look for
17383         REG_NO_CONFLICT notes.
17384         * lower_subreg (remove_retval_note): Removed code to look for
17385         REG_NO_CONFLICT block.
17386         (resolve_reg_notes): Removed REG_NO_CONFLICT case.
17387         (resolve_clobber): Remove code to process libcalls that have
17388         REG_NO_CONFLICT notes.
17389         * loop_invariant.c (find_invariant_insn): Removed REG_NO_CONFLICT
17390         case.
17391         * combine.c (can_combine_p, distribute_notes):  Removed
17392         REG_NO_CONFLICT case.
17393         * config/cris/cris.md (movdi pattern): Changed emit_no_conflict_block
17394         to emit_insns.
17395         * config/mn10300/mn10300.md (absdf2, negdf2 patterns): Ditto.
17396         * config/m68k/m68k.md (negdf2, negxf2, absdf2, absxf2 patterns):
17397         Ditto.
17398         * reg-notes.def (NO_CONFLICT): Removed.
17399
17400 2008-05-14  David S. Miller  <davem@davemloft.net>
17401
17402         * config/sparc/sparc.c (sparc_profile_hook): If
17403         NO_PROFILE_COUNTERS, don't generate and pass a label into mcount.
17404         * config/sparc/linux.h (NO_PROFILE_COUNTERS): Define as 1.
17405         * config/sparc/linux64.h (NO_PROFILE_COUNTERS): Likewise.
17406
17407 2008-05-14  Andreas Krebbel  <krebbel1@de.ibm.com>
17408
17409         * cse.c (cse_cc_succs): Invoke delete_insn_and_edges.
17410
17411 2008-05-13  Uros Bizjak  <ubizjak@gmail.com>
17412
17413         PR target/36222
17414         * config/i386/i386.c (ix86_expand_vector_init_general): Rearrange op0
17415         and op1 expansion before vector concat to have less live pseudos.
17416
17417 2008-05-13  H.J. Lu  <hongjiu.lu@intel.com>
17418
17419         * config/i386/i386.c (ix86_expand_vector_init_one_nonzero): Use
17420         ix86_expand_vector_set if supported.
17421
17422 2008-05-13  Diego Novillo  <dnovillo@google.com>
17423             Kenneth Zadeck  <zadeck@naturalbridge.com>
17424
17425         http://gcc.gnu.org/ml/gcc-patches/2008-05/msg00748.html
17426
17427         * tree.h (init_phinodes, fini_phinodes, release_phi_node,
17428         phinodes_print_statistics, init_ssanames, fini_ssanames,
17429         make_ssa_name, duplicate_ssa_name, duplicate_ssa_name_ptr_info,
17430         release_ssa_name, release_defs, replace_ssa_name_symbol,
17431         ssanames_print_statistics): Move ...
17432         * tree-flow.h: ... here.
17433         * tree-ssanames.c (init_ssanames): Add arguments FN and SIZE.
17434         Use FN instead of cfun.
17435         (make_ssa_name_fn): Rename from make_ssa_name.
17436         (pass_release_ssa_names): Add TODO_dump_func to finish flags.
17437         * tree-flow-inline.h (make_ssa_name): Move from
17438         tree-ssanames.c.  Convert to static inline.  Call make_ssa_name_fn.
17439         * omp-low.c (expand_omp_parallel):
17440         * tree-flow-inline.h (redirect_edge_var_map_result):
17441         * tree-ssa.c (init_tree_ssa): Add argument FN.
17442         Use it instead of cfun.  Update all users.
17443
17444 2008-05-13  Tom Tromey  <tromey@redhat.com>
17445
17446         PR preprocessor/22168:
17447         * doc/cpp.texi (Top): Update menu.
17448         (Alternatives to Wrapper #ifndef): New node.
17449         (Other Directives): Document deprecation.
17450         (Obsolete Features): Remove menu.
17451         (Assertions): Merge node into Obsolete Features.
17452         (Obsolete once-only headers): Move earlier; rename to Alternatives
17453         to Wrapper #ifndef.
17454         * doc/cppopts.texi: Update.
17455         * c.opt (Wdeprecated): Enable for C and ObjC.
17456         * doc/invoke.texi (Option Summary): Move -Wno-deprecated.
17457         (C++ Dialect Options): Move -Wno-deprecated from here to...
17458         (Warning Options): ... here.
17459
17460 2008-05-13  Richard Guenther  <rguenther@suse.de>
17461
17462         PR middle-end/36227
17463         * fold-const.c (fold_sign_changed_comparison): Do not allow
17464         changes in pointer-ness.
17465
17466 2008-05-12  Kaz Kojima  <kkojima@gcc.gnu.org>
17467
17468         PR target/24713
17469         * config/sh/sh.c (sh_expand_prologue): Don't clear
17470         RTX_FRAME_RELATED_P for push insns.
17471
17472 2008-05-12  Andy Hutchinson  <hutchinsonandy@aim.com>
17473
17474         * config/avr/avr.h (MAX_OFILE_ALIGNMENT): Define.
17475
17476 2008-05-12  Anatoly Sokolov <aesok@post.ru>
17477
17478         * config/avr/avr.h (machine_function): Add 'is_leaf' field.
17479         * config/avr/avr.c (avr_regs_to_save): Compute 'machine->is_leaf'.
17480         Use 'machine->is_leaf' instead of 'leaf_func_p'.
17481
17482 2008-05-12  H.J. Lu  <hongjiu.lu@intel.com>
17483
17484         * config/i386/sse.md (*sse_concatv4sf): Renamed to ...
17485         (*vec_concatv4sf_sse): This.
17486         (*sse2_concatv2si): Renamed to ...
17487         (*vec_concatv2si_sse2): This.
17488         (*sse1_concatv2si): Renamed to ...
17489         (*vec_concatv2si_sse): This.
17490         (*vec_concatv2di_rex): Renamed to ...
17491         (*vec_concatv2di_rex64): This.
17492         (*vec_concatv2si_sse4_1): New.
17493         (*vec_concatv2di_rex64_sse4_1): Likewise.
17494
17495 2008-05-12  Uros Bizjak  <ubizjak@gmail.com>
17496
17497         PR rtl-optimization/36111
17498         * recog.c (validate_replace_rtx_1): Unshare new RTL expression
17499         that was created for swappable operands.
17500
17501 2008-05-12  Samuel Tardieu  <sam@rfc1149.net>
17502
17503         PR ada/36001
17504         * Makefile.in: Substitute GNATMAKE and GNATBIND.
17505         * configure.ac: Add call to ACX_PROG_GNAT.
17506
17507 2008-05-11  Volker Reichelt  <v.reichelt@netcologne.de>
17508
17509         * optc-gen.awk: Fix comment typo.
17510
17511 2008-05-11  Aaron W. LaFramboise  <aaronavay62@aaronwl.com>
17512
17513         * pretty-print.c (pp_integer_with_precision): Use
17514         HOST_LONG_LONG_FORMAT.
17515
17516 2008-05-10  Kenneth Zadeck  <zadeck@naturalbridge.com>
17517
17518         * gcse.c (store_killed_in_insn): Negated call to RTL_CONST_CALL_P.
17519
17520 2008-05-10  H.J. Lu  <hongjiu.lu@intel.com>
17521
17522         * config/i386/i386.c (bdesc_ptest): Removed.
17523         (ix86_builtin_type): Add INT_FTYPE_V2DI_V2DI_PTEST.
17524         (bdesc_args): Add __builtin_ia32_ptestz128,
17525         __builtin_ia32_ptestc128 and __builtin_ia32_ptestnzc128.
17526         (ix86_init_mmx_sse_builtins): Updated.
17527         (ix86_expand_args_builtin): Handle INT_FTYPE_V2DI_V2DI_PTEST.
17528         (ix86_expand_builtin): Updated.
17529
17530 2008-05-10  Richard Sandiford  <rdsandiford@googlemail.com>
17531
17532         * tree-cfg.c (valid_fixed_convert_types_p): New function.
17533         (verify_gimple_expr): Handle FIXED_CONVERT_EXPR.
17534
17535 2008-05-10  Uros Bizjak  <ubizjak@gmail.com>
17536
17537         * value-prof.c (interesting_stringop_to_profile): Do not
17538         return early for BUILT_IN_MEMPCPY.
17539
17540 2008-05-09  H.J. Lu  <hongjiu.lu@intel.com>
17541
17542         * calls.c (expand_call): Don't use callgraph to increase
17543         preferred_stack_boundary.
17544
17545         * cgraph.h (cgraph_rtl_info): Use unsigned on
17546         preferred_incoming_stack_boundary.
17547
17548         * final.c (rest_of_clean_state): Use unsigned on
17549         preferred_stack_boundary.
17550
17551 2008-05-09  Tom Tromey  <tromey@redhat.com>
17552
17553         PR preprocessor/22231:
17554         * c-opts.c (sanitize_cpp_opts): Disallow -MG if compilation is
17555         proceeding.
17556
17557 2008-05-09  Uros Bizjak  <ubizjak@gmail.com>
17558
17559         PR tree-optimization/36129
17560         * tree-ssa-ccp.c: Include value-prof.h.
17561         (execute_fold_all_builtins): Call gimple_remove_stmt_histograms if
17562         built-in function was folded to a constant.
17563         * Makefile.in (tree-ssa-ccp.c): Depend on value-prof.h
17564
17565 2008-05-09  Jan Sjodin  <jan.sjodin@amd.com>
17566             Sebastian Pop  <sebastian.pop@amd.com>
17567
17568         * tree-scalar-evolution.c: Document instantiate_scev.
17569         (instantiate_parameters_1): Renamed instantiate_scev_1.
17570         Don't use the same loop for instantiation_loop and evolution_loop.
17571         (instantiate_scev): New.
17572         (instantiate_parameters): Moved...
17573         (resolve_mixers): Update call to instantiate_scev_1 to pass the
17574         same loop twice.  Maintains the semantics for this function.
17575         * tree-scalar-evolution.h (instantiate_scev): Declare.
17576         (instantiate_parameters): ...here.  Now static inline.
17577         * tree-data-ref.c (dr_analyze_indices): Call instantiate_scev
17578         instead of resolve_mixers.
17579
17580 2008-05-09  Maxim Kuvyrkov  <maxim@codesourcery.com>
17581
17582         * rtl-factoring.c (collect_pattern_seqs): Fix typo.
17583
17584 2008-05-09  Tomas Bily  <tbily@suse.cz>
17585
17586         * config/pa/pa.c (reloc_needed): Use CASE_CONVERT.
17587         * tree-cfg.c (verify_expr, verify_gimple_expr): Likewise.
17588         * tree-ssa-structalias.c (get_constraint_for): Likewise.
17589         * c-common.c (c_common_truthvalue_conversion): Likewise.
17590         * tree-object-size.c (compute_object_offset): Likewise.
17591         * tree-inline.c (estimate_num_insns_1): Likewise.
17592         * varasm.c (const_hash_1, compare_constant, copy_constant)
17593         (compute_reloc_for_constant, output_addressed_constants)
17594         (initializer_constant_valid_p): Likewise.
17595         * c-omp.c (check_omp_for_incr_expr): Likewise.
17596         * gimplify.c (gimplify_expr): Likewise.
17597         * c-typeck.c (c_finish_return): Likewise.
17598         * tree-vectorizer.c (supportable_widening_operation)
17599         (supportable_narrowing_operation): Likewise.
17600         * c-pretty-print.c (pp_c_cast_expression, pp_c_expression): Likewise.
17601         * matrix-reorg.c (can_calculate_expr_before_stmt): Likewise.
17602         * expr.c (highest_pow2_factor, expand_expr_real_1): Likewise.
17603         * dwarf2out.c (loc_descriptor_from_tree_1, add_bound_info)
17604         (descr_info_loc): Likewise.
17605         * tree-ssa-loop-ivopts.c (may_be_nonaddressable_p): Likewise.
17606         * fold-const.c (operand_equal_p, make_range, extract_muldiv_1)
17607         (fold_unary): Likewise.
17608         * builtins.c (get_pointer_alignment): Likewise.
17609         * tree-scalar-evolution.c (interpret_rhs_modify_stmt)
17610         (instantiate_parameters_1): Likewise.
17611         * tree.c (expr_align, stabilize_reference): Likewise.
17612         * tree-pretty-print.c (dump_generic_node, op_prio): Likewise.
17613         * tree-ssa-loop-niter.c (derive_constant_upper_bound): Likewise.
17614         * convert.c (strip_float_extensions): Use CONVERT_EXPR_P.
17615         * tree-ssa-threadedge.c (simplify_control_stmt_condition): Likewise.
17616         * config/alpha/alpha.c (va_list_skip_additions): Likewise.
17617         * c-common.c (c_alignof_expr, check_function_arguments_recurse):
17618         Likewise.
17619         * tree-ssa.c (tree_ssa_useless_type_conversion): Likewise.
17620         * varasm.c (initializer_constant_valid_p, output_constant): Likewise.
17621         * tree-ssa-forwprop.c (get_prop_source_stmt, can_propagate_from)
17622         (forward_propagate_addr_expr_1, forward_propagate_addr_expr)
17623         (forward_propagate_comparison)
17624         (tree_ssa_forward_propagate_single_use_vars): Likewise.
17625         * cfgexpand.c (discover_nonconstant_array_refs_r): Likewise.
17626         * emit-rtl.c (component_ref_for_mem_expr)
17627         (set_mem_attributes_minus_bitpos): Likewise.
17628         * tree-ssa-phiopt.c (conditional_replacement): Likewise.
17629         * gimplify.c (gimplify_conversion, goa_lhs_expr_p, gimplify_expr):
17630         Likewise.
17631         * c-typeck.c (default_function_array_conversion, build_indirect_ref)
17632         (build_function_call, pointer_diff, build_compound_expr)
17633         (c_finish_return): Likewise.
17634         * tree-vect-analyze.c (vect_determine_vectorization_factor): Likewise.
17635         * matrix-reorg.c (get_inner_of_cast_expr, may_flatten_matrices_1):
17636         Likewise.
17637         * tree-ssa-ifcombine.c (recognize_single_bit_test): Likewise.
17638         * expr.c (is_aligning_offset): Likewise.
17639         * tree-ssa-alias.c (is_escape_site): Likewise.
17640         * tree-stdarg.c (va_list_counter_bump, check_va_list_escapes)
17641         (check_all_va_list_escapes): Likewise.
17642         * tree-ssa-loop-ivopts.c (determine_base_object)
17643         (determine_common_wider_type): Likewise.
17644         * dojump.c (do_jump): Likewise.
17645         * tree-ssa-sccvn.c (simplify_unary_expression): Likewise.
17646         * tree-gimple.c (is_gimple_cast): Likewise.
17647         * fold-const.c (decode_field_reference, )
17648         (fold_sign_changed_comparison, fold_unary, fold_comparison)
17649         (fold_binary): Likewise.
17650         * tree-ssa-alias-warnings.c (find_alias_site_helper)
17651         (already_warned_in_frontend_p): Likewise.
17652         * builtins.c (get_memory_rtx, fold_builtin_next_arg): Likewise.
17653         * tree.c (really_constant_p, get_unwidened): Likewise.
17654         * tree-ssa-loop-niter.c (expand_simple_operations): Likewise.
17655         * tree-ssa-loop-im.c (rewrite_bittest): Likewise.
17656         * tree-vrp.c (register_edge_assert_for_2, register_edge_assert_for_1):
17657         Likewise.
17658         * tree.h (STRIP_NOPS, STRIP_SIGN_NOPS, STRIP_TYPE_NOPS): Use
17659         CONVERT_EXPR_P.
17660         (CONVERT_EXPR_P): Define.
17661         (CASE_CONVERT): Define.
17662
17663 2008-05-08  Kenneth Zadeck  <zadeck@naturalbridge.com>
17664
17665         PR middle-end/36117
17666         * dce.c (deletable_insn_p): Do not delete calls if df_in_progress.
17667         (delete_unmarked_insns): When deleting a call, call
17668         delete_unreachable_blocks.
17669         * rtl.texi (RTL_CONST_CALL_P, RTL_PURE_CALL_P,
17670         RTL_CONST_OR_PURE_CALL_P, RTL_LOOPING_CONST_OR_PURE_CALL_P): Fixed doc.
17671
17672 2008-05-08  Richard Guenther  <rguenther@suse.de>
17673
17674         * doc/invoke.texi (-fdump-tree-salias): Remove documentation.
17675         (-ftree-salias): Likewise.
17676         (salias-max-implicit-fields): Remove param documentation.
17677         (salias-max-array-elements): Likewise.
17678         * tree-pass.h (pass_create_structure_vars): Remove.
17679         * params.h (SALIAS_MAX_IMPLICIT_FIELDS): Remove.
17680         (SALIAS_MAX_ARRAY_ELEMENTS): Likewise.
17681         * tree-ssa-alias.c (create_structure_vars): Remove.
17682         (gate_structure_vars): Likewise.
17683         (pass_create_structure_vars): Likewise.
17684         (gate_build_alias): Likewise.
17685         (pass_build_alias): Adjust to run always and dump the function.
17686         * common.opt (ftree-salias): Hide.
17687         * passes.c (init_optimization_passes): Remove
17688         pass_create_structure_vars, adjust comment.
17689         * params.def (PARAM_SALIAS_MAX_IMPLICIT_FIELDS): Remove.
17690         (PARAM_SALIAS_MAX_ARRAY_ELEMENTS): Likewise.
17691         * opts.c (decode_options): Do not set flag_tree_salias.
17692         (common_handle_option): Add OPT_ftree_salias to the backward
17693         compatibility section.
17694
17695 2008-05-08  Richard Guenther  <rguenther@suse.de>
17696
17697         * tree-flow-inline.h (var_can_have_subvars): Move ...
17698         * tree-ssa-structalias.c (var_can_have_subvars): ... here.
17699         * tree-flow.h (var_can_have_subvars): Remove.
17700         (push_fields_onto_fieldstack): Remove.
17701         (sort_fieldstack): Likewise.
17702         (struct fieldoff): Move ...
17703         * tree-ssa-structalias.c (struct fieldoff): ... here.  Remove
17704         alias_set and base_for_components fields.
17705         (sort_fieldstack): Make static.
17706         (push_fields_onto_fieldstack): Likewise.  Remove code that
17707         handles anything but RECORD_TYPEs.  Remove alias_set and
17708         base_for_components handling.
17709         (create_variable_info_for): Adjust.
17710
17711 2008-05-08  Seongbae Park  <seongbae.park@gmail.com>
17712
17713         * common.opt (Wframe-larger-than=): Shorten the help message
17714         to one line.
17715         * doc/invoke.texi (Wframe-larger-than=): Add more description.
17716
17717 2008-05-08  Rafael Espíndola  <espindola@google.com>
17718
17719         * tree-complex.c (expand_complex_div_wide): Don't create CONDs that
17720         trap.
17721         * tree-gimple.c (is_gimple_condexpr): Check that the expression doesn't
17722         trap and that both operands are gimple values.
17723         (canonicalize_cond_expr_cond): Use is_gimple_condexpr.
17724         * gcc/tree-eh.c (tree_could_trap_p): Correctly detect if a comparison
17725         is a fp operation.
17726
17727 2008-05-08  Richard Sandiford  <rsandifo@nildram.co.uk>
17728
17729         * read-rtl.c (join_c_conditions): Return the first string if the
17730         two strings are equal.
17731
17732 2008-05-08  Richard Sandiford  <rsandifo@nildram.co.uk>
17733
17734         * gensupport.h (pred_data): Add a "num_codes" field.
17735         (add_predicate_code): Declare.
17736         * gensupport.c (add_predicate_code): New function.
17737         (std_pred_table): Add an "allows_const_p" field.
17738         (std_preds): Set this field for predicates that allow RTX_CONST_OBJs.
17739         Remove the (incomplete) list of such codes from the codes field.
17740         (init_predicate_table): Use add_predicate_code.  Add all
17741         RTX_CONST_OBJs if allows_const_p is true.
17742         * genrecog.c (process_define_predicate): Use add_predicate_code.
17743
17744 2008-05-08  David Daney  <ddaney@avtrex.com>
17745             Richard Sandiford  <rsandifo@nildram.co.uk>
17746
17747         * config/mips/mips.md (mips_expand_compare_and_swap_12): Handle
17748         special case of constant zero operands.
17749         * config/mips/mips.c (mips_expand_compare_and_swap_12): Zero extend
17750         old and new values.  Special case constant zero values.
17751         * config/mips/mips.h (MIPS_COMPARE_AND_SWAP): Skip 'sync' if compare
17752         fails.
17753         (MIPS_COMPARE_AND_SWAP_12): Handle constant zero operands.
17754         (MIPS_COMPARE_AND_SWAP_12_0): New macro.
17755
17756 2008-05-08  Paolo Bonzini  <bonzini@gnu.org>
17757
17758         PR target/36090
17759         * simplify-rtx.c (simplify_plus_minus): Create CONST of
17760         similar RTX_CONST_OBJ before CONST_INT.
17761
17762 2008-05-08  Steve Ellcey  <sje@cup.hp.com>
17763
17764         * stmt.c (expand_stack_restore): Change sa mode if needed.
17765
17766 2008-05-08  Richard Guenther  <rguenther@suse.de>
17767
17768         * config/i386/i386-protos.h (ix86_return_in_memory): Adjust
17769         return type to bool.
17770         (ix86_sol10_return_in_memory): Likewise.
17771         (ix86_i386elf_return_in_memory): Likewise.
17772         (ix86_i386interix_return_in_memory): Likewise.
17773         * config/i386/i386.c (ix86_return_in_memory): Likewise.
17774         (ix86_sol10_return_in_memory): Likewise.
17775         (ix86_i386elf_return_in_memory): Likewise.
17776         (ix86_i386interix_return_in_memory): Likewise.
17777
17778 2008-05-08  Kai Tietz  <kai.tietz@onevision.com>
17779
17780         PR bootstrap/36180
17781         * calls.c (compute_argument_block_size ): Add ATTRIBUTE_UNUSED to
17782         fndecl argument.
17783         (emit_library_call_value_1): Add ATTRIBUTE_UNUSED to variable fndecl.
17784         * target-def.h: Check that TARGET_RETURN_IN_MEMORY isn't
17785         declared in front.
17786
17787 2008-05-08  Richard Guenther  <rguenther@suse.de>
17788
17789         * tree-data-ref.c (dr_analyze_alias): Do not set DR_SUBVARS.
17790         * tree-data-ref.h (struct dr_alias): Remove subvars field.
17791         (DR_SUBVARS): Remove.
17792         * tree-dfa.c (dump_subvars_for): Remove.
17793         (debug_subvars_for): Likewise.
17794         (dump_variable): Do not dump subvars.
17795         (remove_referenced_var): Do not remove subvars.
17796         * tree-flow-inline.h (clear_call_clobbered): SFTs no longer exist.
17797         (lookup_subvars_for_var): Remove.
17798         (get_subvars_for_var): Likewise.
17799         (get_subvars_at): Likewise.
17800         (get_first_overlapping_subvar): Likewise.
17801         (overlap_subvar): Likewise.
17802         * tree-flow.h (subvar_t): Remove.
17803         (struct var_ann_d): Remove subvars field.
17804         * tree-ssa-alias.c (mark_aliases_call_clobbered): Remove queued
17805         argument.  Remove special handling of SFTs.
17806         (compute_tag_properties): Likewise.
17807         (set_initial_properties): Likewise.
17808         (compute_call_clobbered): Likewise.
17809         (count_mem_refs): Likewise.
17810         (compute_memory_partitions): Likewise.
17811         (compute_flow_insensitive_aliasing): Likewise.
17812         (setup_pointers_and_addressables): Likewise.
17813         (new_type_alias): Likewise.
17814         (struct used_part): Remove.
17815         (used_portions): Likewise.
17816         (struct used_part_map): Likewise.
17817         (used_part_map_eq): Likewise.
17818         (used_part_map_hash): Likewise.
17819         (free_used_part_map): Likewise.
17820         (up_lookup): Likewise.
17821         (up_insert): Likewise.
17822         (get_or_create_used_part_for): Likewise.
17823         (create_sft): Likewise.
17824         (create_overlap_variables_for): Likewise.
17825         (find_used_portions): Likewise.
17826         (create_structure_vars): Likewise.
17827         * tree.def (STRUCT_FIELD_TAG): Remove.
17828         * tree.h (MTAG_P): Adjust.
17829         (struct tree_memory_tag): Remove base_for_components and
17830         unpartitionable flags.
17831         (struct tree_struct_field_tag): Remove.
17832         (SFT_PARENT_VAR): Likewise.
17833         (SFT_OFFSET): Likewise.
17834         (SFT_SIZE): Likewise.
17835         (SFT_NONADDRESSABLE_P): Likewise.
17836         (SFT_ALIAS_SET): Likewise.
17837         (SFT_UNPARTITIONABLE_P): Likewise.
17838         (SFT_BASE_FOR_COMPONENTS_P): Likewise.
17839         (union tree_node): Remove sft field.
17840         * alias.c (get_alias_set): Remove special handling of SFTs.
17841         * print-tree.c (print_node): Remove handling of SFTs.
17842         * tree-dump.c (dequeue_and_dump): Likewise.
17843         * tree-into-ssa.c (mark_sym_for_renaming): Likewise.
17844         * tree-nrv.c (dest_safe_for_nrv_p): Remove special handling of SFTs.
17845         * tree-predcom.c (set_alias_info): Do not set subvars.
17846         * tree-pretty-print.c (dump_generic_node): Do not handle SFTs.
17847         * tree-ssa-loop-ivopts.c (get_ref_tag): Likewise.
17848         * tree-ssa-operands.c (access_can_touch_variable): Likewise.
17849         (add_vars_for_offset): Remove.
17850         (add_virtual_operand): Remove special handling of SFTs.
17851         (add_call_clobber_ops): Likewise.
17852         (add_call_read_ops): Likewise.
17853         (get_asm_expr_operands): Likewise.
17854         (get_modify_stmt_operands): Likewise.
17855         (get_expr_operands): Likewise.
17856         (add_to_addressable_set): Likewise.
17857         * tree-ssa.c (verify_ssa_name): Do not handle SFTs.
17858         * tree-tailcall.c (suitable_for_tail_opt_p): Likewise.
17859         * tree-vect-transform.c (vect_create_data_ref_ptr): Do not set subvars.
17860         * tree.c (init_ttree): Remove STRUCT_FIELD_TAG initialization.
17861         (tree_code_size): Remove STRUCT_FIELD_TAG handling.
17862         (tree_node_structure): Likewise.
17863         * tree-ssa-structalias.c (set_uids_in_ptset): Remove special
17864         handling of SFTs.
17865         (find_what_p_points_to): Likewise.
17866
17867 2008-05-08  Sa Liu  <saliu@de.ibm.com>
17868
17869         * config/spu/spu.md: Fixed subti3 pattern.
17870
17871 2008-05-08  Richard Guenther  <rguenther@suse.de>
17872
17873         PR middle-end/36154
17874         * tree-ssa-structalias.c (push_fields_onto_fieldstack): Make
17875         sure to create a representative for trailing arrays for PTA.
17876
17877 2008-05-08  Richard Guenther  <rguenther@suse.de>
17878
17879         PR middle-end/36172
17880         * fold-const.c (operand_equal_p): Two objects which types
17881         differ in pointerness are not equal.
17882
17883 2008-05-08  Kai Tietz  <kai.tietz@onevision.com>
17884
17885         * calls.c (compute_argument_block_size): Add argument tree fndecl.
17886         (OUTGOING_REG_PARM_STACK_SPACE): Add function type argument.
17887         (emit_library_call_value_1): Add new variable fndecl initialized by
17888         NULL_TREE. It should be the decl type of orgfun, but this information
17889         seems not to be available here, so it uses the default calling abi.
17890         * config/arm/arm.c (arm_return_in_memory): Add fntype argumen.
17891         * config/arm/arm.h (RETURN_IN_MEMORY): Replace RETURN_IN_MEMORY
17892         by TARGET_RETURN_IN_MEMORY.
17893         * config/i386/i386-interix.h: Likewise.
17894         * config/i386/i386.h: Likewise.
17895         * config/i386/i386elf.h: Likewise.
17896         * config/i386/ptx4-i.h: Likewise.
17897         * config/i386/sol2-10.h: Likewise.
17898         * config/i386/sysv4.h: Likewise.
17899         * config/i386/vx-common.h: Likewise.
17900         * config/cris/cris.h: Removed #if 0 clause.
17901         * config/arm/arm-protos.h (arm_return_in_memory): Add fntype argument.
17902         * config/i386/i386-protos.h (ix86_return_in_memory): Add fntype
17903         argument.
17904         (ix86_sol10_return_in_memory): Likewise.
17905         (ix86_i386elf_return_in_memory): New.
17906         (ix86_i386interix_return_in_memory): New.
17907         * config/mt/mt-protos.h (mt_return_in_memory): New.
17908         * config/mt/mt.c: Likewise.
17909         * config/mt/mt.h (OUTGOING_REG_PARM_STACK_SPACE): Add FNTYPE argument.
17910         (RETURN_IN_MEMORY):  Replace by TARGET_RETURN_IN_MEMORY.
17911         * config/bfin/bfin.h: Likewise.
17912         * config/bfin/bfin-protos.h (bfin_return_in_memory): Add fntype
17913         argument.
17914         * config/bfin/bfin.c: Likewise.
17915         * config/pa/pa.h (OUTGOING_REG_PARM_STACK_SPACE): Add FNTYPE argument.
17916         * config/alpha/unicosmk.h: Likewise.
17917         * config/i386/cygming.h: Likewise.
17918         * config/iq2000/iq2000.h: Likewise.
17919         * config/mips/mips.h: Likewise.
17920         * config/mn10300/mn10300.h: Likewise.
17921         * config/rs6000/rs6000.h: Likewise.
17922         * config/score/score.h: Likewise.
17923         * config/spu/spu.h: Likewise.
17924         * config/v850/v850.h: Likewise.
17925         * defaults.h: Likewise.
17926         * doc/tm.texi (OUTGOING_REG_PARM_STACK_SPACE): Adjust documentation.
17927         * expr.c (emit_block_move): Adjust use of
17928         OUTGOING_REG_PARM_STACK_SPACE.
17929         * function.c (STACK_DYNAMIC_OFFSET): Adjust use of
17930         OUTGOING_REG_PARM_STACK_SPACE.
17931         * targhooks.c (default_return_in_memory): Remove RETURN_IN_MEMORY.
17932
17933 2008-05-08  Jakub Jelinek  <jakub@redhat.com>
17934
17935         * tree-parloops.c (create_parallel_loop): Set OMP_RETURN_NOWAIT
17936         on OMP_RETURN for OMP_FOR.
17937
17938         PR debug/35896
17939         * dwarf2out.c (dw_expand_expr, common_check): Removed.
17940         (fortran_common): New function.
17941         (gen_variable_die): Call fortran_common instead of common_check,
17942         adjust for it returning tree instead of rtx.  Formatting.
17943
17944 2008-05-07  Kenneth Zadeck  <zadeck@naturalbridge.com>
17945
17946         PR rtl/7335
17947         PR rtl/33826
17948         * see.c (see_copy_insn): Copy new pure const attributes for new call.
17949         * c-decl.c (merge_decls): Ditto.
17950         * postreload.c (record_opr_changes): Change CONST_OR_PURE_CALL_P
17951         to RTL_CONST_OR_PURE_CALL_P.
17952         * tree.c (define_local_buitin): Rename DECL_IS_PURE to DECL_PURE_P.
17953         Initialized DECL_LOOPING_CONST_PURE.
17954         (process_call_operands): Set tree_side_effects properly.
17955         * tree.h (TREE_READONLY_DECL_P): Removed.
17956         (DECL_IS_PURE): Renamed to DECL_PURE_P.
17957         (DECL_LOOPING_OR_CONST_P): New macro.
17958         (struct tree_function_decl): Added looping_const_or_pure_p.
17959         (ECF_*) Renumbered.
17960         (ECF_LOOPING_OR_CONST_P): New macro.
17961         * rtlanal.c (pure_const_p): Removed.
17962         * builtins.c (expand_builtin): Rename DECL_IS_PURE to DECL_PURE_P.
17963         * reorg.c (delete_prior_computation) Changed CONST_OR_PURE_CALL_P
17964         to RTL_CONST_CALL_P.
17965         * ipa-pure-const.c (pure_const_state_e): Added looping field.
17966         (check_decl, check_tree, check_call, scan_function): Initialize
17967         looping.
17968         (analyze_function): Rename DECL_IS_PURE to DECL_PURE_P.
17969         (static_execute): Set looping true for recursive functions.
17970         Undo setting state to IPA_NEITHER for recursive functions.
17971         * cse.c (cse_insn):
17972         * ifcvt.c (noce_can_store_speculate_p): Changed
17973         CONST_OR_PURE_CALL_P and pure_call_p to RTL_CONST_CALL_P or
17974         RTL_CONST_OR_PURE_CALL_P.
17975         * dse.c (scan_insn): Ditto.
17976         * local-alloc.c (validate_equiv_mem, memref_used_between_p): Ditto.
17977         * gcse.c (oprs_not_seen_p) Changed CONST_OR_PURE_CALL_P to
17978         RTL_CONST_OR_PURE_CALL_P.
17979         (store_killed_in_insn): Changed CONST_OR_PURE_CALL_P and
17980         pure_call_p to RTL_CONST_CALL_P.
17981         * gimplify.c (gimplify_call_expr): Clear side effects for
17982         non-looping pure and constant calls.
17983         * calls.c (emit_call_1): Set rtl flags from ecf flags.
17984         (flags_from_decl_or_type): Set ecf flags from decl flags.
17985         (initialize_argument_information): Turn off
17986         ECF_LOOPING_CONST_OR_PURE when turning off ECF_CONST.
17987         Change const to pure if callee_copies is true rather than just
17988         turning off const.
17989         (expand_call): Turn off ECF_LOOPING_PURE_CONST_CALL and remove old
17990         way of marking pure calls.
17991         (emit_library_call_value_1): Turn off ECF_LOOPING_PURE_CONST_CALL.
17992         Remove hack that was supposed to fix pr7335 and remove old
17993         way of marking pure calls.
17994         * emit-rtl.c (emit_copy_of_insn_after): Copy RTL_CONST_CALL_P,
17995         RTL_PURE_CALL_P, RTL_LOOPING_CONST_OR_PURE_CALL_P.
17996         * cselib.c (cselib_process_insn): Changed CONST_OR_PURE_CALL_P to
17997         RTL_CONST_OR_PURE_CALL_P.
17998         * tree-ssa-pre.c (can_value_number_call): Fixed spacing.
17999         * loop-invariant.c (find_exits, find_invariant_bb): Changed
18000         CONST_OR_PURE_CALL_P to RTL_CONST_OR_PURE_CALL_P.
18001         * sched-deps.c (schedule_analyze): Ditto.
18002         * rtl.h (struct rtx_def): Use call field, unchanging field, and
18003         return_val field of calls to represent pure and const function info.
18004         (CONST_OR_PURE_CALL_P): Deleted macro.
18005         (RTL_CONST_CALL_P, RTL_PURE_CALL_P,
18006         RTL_LOOPING_CONST_OR_PURE_CALL_P, RTL_CONST_OR_PURE_P): New macros.
18007         * tree-inline.c (copy_body_r): Changed TREE_READONLY_DECL_P to
18008         TREE_READONLY.
18009         * tree-optimize.c (execute_fixup_cfg): Added test for
18010         ECF_LOOPING_CONST_OR_PURE.
18011         * c-common.c (handle_pure_attribute): Changed DECL_IS_PURE to
18012         DECL_PURE_P.
18013         * tree-cfg.c (update_call_expr_flags): Do not clear tree side
18014         effects for looping pure or const calls.
18015         (verify_gimple_expr): Added verification code.
18016         * config/alpha/alpha.c (alpha_legitimize_address,
18017         alpha_emit_xfloating_libcall): Changed CONST_OR_PURE_CALL_P to
18018         RTL_CONST_CALL_P.
18019         * config/s390/s390.c (s390_emit_tls_call_insn): Ditto.
18020         * config/rs6000/rs6000.c (rs6000_legitimize_tls_address): Ditto.
18021         * config/mips/mips.c (mips_call_tls_get_addr): Ditto.
18022         * cfgrtl.c (need_fake_edge_p): Changed CONST_OR_PURE_CALL_P to
18023         RTL_CONST_OR_PURE_CALL_P.
18024         * dce.c (deletable_insn_p): Allow non looping, non sibling, pure
18025         and const calls to be deleted.
18026
18027 2008-05-07  Uros Bizjak  <ubizjak@gmail.com>
18028
18029         PR target/35714
18030         * config/i386/mmx.md (mmx_subv2sf3): New expander.
18031         (*mmx_subv2sf3): Rename from mmx_subv2sf3 insn pattern.
18032         (*mmx_eqv2sf3): Rename from mmx_eqv2sf3 insn pattern.
18033         (mmx_eqv2sf3): New expander.  Use ix86_fixup_binary_operands_no_copy
18034         to handle nonimmediate operands.
18035         (*mmx_paddwd): Rename from mmx_paddwd insn pattern.
18036         (mmx_paddwd): New expander.  Use ix86_fixup_binary_operands_no_copy
18037         to handle nonimmediate operands.
18038         (*mmx_pmulhrwv4hi3): Rename from mmx_pmulhrwv4hi3 insn pattern.
18039         (mmx_pmulhrwv4hi3): New expander.  Use
18040         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
18041         (*sse2_umulv1siv1di3): Rename from sse2_umulv1siv1di3 insn pattern.
18042         (sse2_umulv1siv1di3): New expander.  Use
18043         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
18044         (*mmx_eq<mode>3): Rename from mmx_eq<mode>3 insn pattern.
18045         (mmx_eq<mode>3): New expander.  Use
18046         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
18047         (*mmx_uavgv8qi3): Rename from mmx_uavgv8qi3 insn pattern.
18048         (mmx_uavgv8qi3): New expander.  Use
18049         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
18050         (*mmx_uavgv4hi3): Rename from mmx_uavgv4hi3 insn pattern.
18051         (mmx_uavgv4hi3): New expander.  Use
18052         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
18053
18054         * config/i386/sse.md
18055         (sse_movhlps_exp): New expander.  Use ix86_fixup_binary_operands
18056         to handle nonimmediate operands.
18057         (sse_movlhps_exp): New expander.  Use ix86_fixup_binary_operands
18058         to handle nonimmediate operands.
18059         (sse_loadhps_exp): New expander.  Use ix86_fixup_binary_operands
18060         to handle nonimmediate operands.
18061         (sse_loadlps_exp): New expander.  Use ix86_fixup_binary_operands
18062         to handle nonimmediate operands.
18063         (sse2_unpckhpd_exp): New expander.  Use
18064         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
18065         (sse2_unpcklpd_exp): New expander.  Use
18066         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
18067         (sse_loadhpd_exp): New expander.  Use ix86_fixup_binary_operands
18068         to handle nonimmediate operands.
18069         (sse_loadlpd): New expander.  Use ix86_fixup_binary_operands
18070         to handle nonimmediate operands.
18071         (*sse2_<plusminus_insn><mode>3): Rename from
18072         sse2_<plusminus_insn><mode>3 insn pattern.
18073         (sse2_<plusminus_insn><mode>3): New expander.  Use
18074         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
18075         (*sse2_umulv2siv2di3): Rename from sse2_umulv2siv2di3 insn pattern.
18076         (sse2_umulv2siv2di3): New expander.  Use
18077         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
18078         (*sse4_1_mulv2siv2di3): Rename from sse4_1_mulv2siv2di3 insn pattern.
18079         (sse4_1_mulv2siv2di3): New expander.  Use
18080         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
18081         (*sse2_pmaddwd): Rename from sse2_pmaddwd insn pattern.
18082         (sse2_pmaddwd): New expander.  Use
18083         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
18084         (*sse2_eq<mode>3): Rename from sse2_eq<mode>3 insn pattern.
18085         (sse2_eq<mode>3): New expander.  Use
18086         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
18087         (*sse4_1_eqv2di3): Rename from sse4_1_eqv2di3 insn pattern.
18088         (sse4_1_eqv2di3): New expander.  Use
18089         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
18090         (*sse2_uavgv16qi3): Rename from sse2_uavgv16qi3 insn pattern.
18091         (sse2_uavgv16qi3): New expander.  Use
18092         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
18093         (*sse2_uavgv16qi3): Rename from sse2_uavgv16qi3 insn pattern.
18094         (sse2_uavgv16qi3): New expander.  Use
18095         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
18096         (*sse2_uavgv8hi3): Rename from sse2_uavgv8hi3 insn pattern.
18097         (sse2_uavgv8hi3): New expander.  Use
18098         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
18099         (*ssse3_pmulhrswv8hi3): Rename from ssse3_pmulhrswv8hi3 insn pattern.
18100         (ssse3_pmulhrswv8hi3): New expander.  Use
18101         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
18102         (*ssse3_pmulhrswv4hi3): Rename from ssse3_pmulhrswv4hi3 insn pattern.
18103         (ssse3_pmulhrswv4hi3): New expander.  Use
18104         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
18105
18106         (<sse>_vm<plusminus_insn><mode>3): Do not use ix86_binary_operator_ok.
18107         (<sse>_vmmul<mode>3): Ditto.
18108         (divv4sf3): Do not use ix86_fixup_binary_operands_no_copy.
18109         (divv2df3): Ditto.
18110         (ssse3_pmaddubsw128): Use register_operand for operand 1.
18111         (ssse3_pmaddubsw): Ditto.
18112
18113         * config/i386/i386.c (struct_builtin_description)
18114         [IX86_BUILTIN_LOADHPS]: Use CODE_FOR_sse_loadhps_exp.
18115         [IX86_BUILTIN_STOREHPS]: Use CODE_FOR_sse_loadlps_exp.
18116         [IX86_BUILTIN_LOADHPD]: Use CODE_FOR_sse2_loadhpd_exp.
18117         [IX86_BUILTIN_LOADLPD]: Use CODE_FOR_sse2_loadlpd_exp.
18118         [IX86_BUILTIN_MOVHLPS]: Use CODE_FOR_sse_movhlps_exp.
18119         [IX86_BUILTIN_MOVLHPS]: Use CODE_FOR_sse_movlhps_exp.
18120         [IX86_BUILTIN_UNPCKHPD]: Use FOR_sse2_unpckhpd_exp.
18121         [IX86_BUILTIN_UNPCKLPD]: Use FOR_sse2_unpcklpd_exp.
18122         (ix86_fixup_binary_operands): Assert that src1
18123         and src2 must have the same mode when swapped.
18124         (ix86_expand_binop_builtin): Do not use ix86_fixup_binary_operands
18125         and ix86_binary_operator_ok.  Do not force operands in registers
18126         when optimizing.
18127
18128 2008-05-07  Jan Hubicka  <jh@suse.cz>
18129
18130         * cgraph.c (dump_cgraph_node): Update.
18131         * cgraph.h (cgraph_local_info): Break out inline summary.
18132         * cgraphunit.c (cgraph_process_new_functions): Use inliner analysis
18133         hook.
18134         * ipa-inline (inline_summary): New accestor function.
18135         (cgraph_clone_inlined_nodes, cgraph_check_inline_limits,
18136         cgraph_decide_inlining, compute_inline_parameters): Update.
18137         * ipa.c (cgraph_remove_unreachable_nodes): Remove statistics.
18138
18139 2008-05-07  Maxim Kuvyrkov  <maxim@codesourcery.com>
18140
18141         Cleanup ColdFire scheduling support and add V4 pipeline model.
18142
18143         * config/m68k/m68k.md (UNSPEC_TIE): New constant.
18144         (define_attr cpu): Add cfv4 value.
18145         (define_attr type, define_attr type1): Merge into a single 'type'
18146         attribute.  Update all uses.
18147         (define_attr opx_type, define_attr opy_type, define_attr opx_access):
18148         Rearrange and update.  Rename value 'reg' to 'Rn', add value 'FPn'.
18149         Update all uses.
18150         (define_attr opx_mem, define_attr opy_mem): Remove.
18151         (define_attr op_mem): Clean up, update comment.
18152         (define_attr size): Use specific values instead of general int.
18153         (define_attr guess, define_attr split): Remove.  Update all uses.
18154         (movdf_internal, tstsi_internal, tsthi_internal, tstqi_internal,
18155         tst<mode>_68881, pushexthisi_const, movsi_const0_68000_10,
18156         movsi_const0_68040_60, movsi_const0, movsi_cf, movstrictqi_cf,
18157         zero_extendhisi2_cf, zero_extendqisi2_cfv4, cfv4_extendhisi2,
18158         68k_extendhisi2, extendqihi2, cfv4_extendqisi2, 68k_extendqisi2,
18159         floatsi<mode>2_68881, ftrunc<mode>2_68881, ftrunc<mode>2_cf,
18160         fix<mode>qi2_68881, fix<mode>hi2_68881, fix<mode>si2_68881,
18161         adddi_dishl32, addsi3_5200, add<mode>3_floatsi_68881,
18162         add<mode>3_floathi_68881, add<mode>3_floatqi_68881,
18163         add<mode>3_68881, add<mode>3_cf, subdi_dishl32, subsi3,
18164         sub<mode>3_floatsi_68881, sub<mode>3_floathi_68881,
18165         sub<mode>3_floatqi_68881, sub<mode>3_68881, sub<mode>3_cf,
18166         mulhi3, mulhisi3, mulhisisi3_s, mulsi3_68020, mulsi3_cf,
18167         umulhisi3, mulhisisi3_z, mul<mode>3_floatsi_68881,
18168         mul<mode>3_floathi_68881, mul<mode>3_floatqi_68881, fmul<mode>3_cf,
18169         div<mode>3_cf, sqrt<mode>2_cf, abs<mode>2_cf, clzsi2,
18170         one_cmplsi2_5200, subreghi1ashrdi_const32, ashrsi3, lshrsi3,
18171         bsetmemqi, bsetmemqi_ext, bclrmemqi, bclrmemqi_ext,
18172         beq, bne, bgt, blt, bordered, bunordered, buneq, bunge, bungt, bunle,
18173         bunlt, bltgt, tablejump_internal, call, non_symbolic_call_value,
18174         symbolic_call_value_jsr, symbolic_call_value_bsr, link):
18175         Update or set attributes.
18176         (stack_tie): New fake instruction.
18177
18178         * config/m68k/m68k.h (TUNE_CFV4): New macro.
18179         (m68k_sched_attr_size): Update declaration.
18180         (m68k_sched_attr_type2): Remove.
18181         (m68k_sched_address_bypass_p, m68k_sched_indexed_address_bypass_p):
18182         Declare new bypass predicates.
18183
18184         * config/m68k/m68k.c (m68k_sched_issue_rate,
18185         m68k_sched_first_cycle_multipass_dfa_lookahead): Declare hook
18186         implementations.
18187         (TARGET_SCHED_ISSUE_RATE,
18188         TARGET_SCHED_FIRST_CYCLE_MULTIPASS_DFA_LOOKAHEAD): Override hooks.
18189         (override_options): Handle scheduling for ColdFire V4 core.
18190         (m68k_expand_prologue): Emit stack_tie.
18191         (enum attr_op_type): Split value 'OP_TYPE_REG' to 'OP_TYPE_RN' and
18192         'OP_TYPE_FPN'.  Update all uses.
18193         (sched_guess_p): Remove.
18194         (sched_address_type): Handle symbolic addresses.
18195         (sched_get_operand): New static function.
18196         (sched_operand_type): Merge into sched_attr_op_type.
18197         (sched_attr_op_type): Handle FP registers, handle quick constants,
18198         update.
18199         (m68k_sched_attr_opx_type, m68k_sched_attr_opy_type): Update.
18200         (m68k_sched_attr_size): Update.  Move logic to ...
18201         (sched_get_attr_size_int): New static function.
18202         (sched_get_opxy_mem_type): New static function.
18203         (m68k_sched_attr_op_mem): Update.
18204         (m68k_sched_attr_type2): Remove.
18205         (sched_cfv4_bypass_data): New static variable.
18206         (m68k_sched_adjust_cost): Handle ColdFire V4 bypass.
18207         (m68k_sched_issue_rate): Implement scheduler hook.
18208         (struct _sched_ib: enabled_p): New field.
18209         (m68k_sched_variable_issue): Update.  Handle V4.
18210         (SCHED_DUMP_TODO, SCHED_DUMP_DONE, SCHED_DUMP_NOTHING,
18211         sched_dump_class_func_t, sched_dump_split_class,
18212         sched_dump_dfa_guess_unit_code, sched_dump_dfa_state,
18213         sched_dump_dfa_class, m68k_sched_dump): Remove.
18214         (m68k_sched_first_cycle_multipass_dfa_lookahead): Implement scheduler
18215         hook.
18216         (m68k_sched_init_global): Remove statisctics dumping, introduce
18217         sanity check that all instructions have pipeline reservations.  Handle
18218         ColdFire V4 core.
18219         (m68k_sched_dfa_pre_advance_cycle, m68k_sched_dfa_post_advance_cycle):
18220         Handle ColdFire V4 core.
18221         (sched_mem_operand_p, sched_get_reg_operand, sched_get_mem_operand):
18222         New static functions.
18223         (m68k_sched_address_bypass_p): New bypass predicate.
18224         (sched_get_indexed_address_scale): New static function.
18225         (m68k_sched_indexed_address_bypass_p): New bypass predicate.
18226
18227         * cf.md: Update comments.
18228         (define_attr type2): Remove.  Use 'type' attribute instead.
18229         Update all uses.
18230         (cf_ib): Rename to cfv123_ib.  Update all uses.
18231         (cf_oep): Rename to cfv123_oep.  Update all uses.
18232         (cf_chr): Rename to cfv123_chr.  Update all uses.
18233         (cf_mem): Rename to cfv123_mem.  Update all uses.
18234         (cf_mac): Move to more appropriate place.
18235         (cfv123_guess): New automaton and cpu_unit.
18236         (cfv123_*, cfv12_*, cfv1_*, cfv2_*, cfv3_*): Use type attribute.
18237         Update uses of 'size' attribute.  Handle before reload scheduling.
18238         (cfv123_guess): New dummy reservation for unhandled instructions.
18239         (cfv4_*): Pipeline description of ColdFire V4 core.
18240         (ignore): New reservation to handle 'ignore' type.
18241
18242 2008-05-07  Ian Lance Taylor  <iant@google.com>
18243
18244         PR middle-end/36013
18245         * gimplify.c (find_single_pointer_decl_1): Don't look through
18246         indirections.
18247         (find_single_pointer_decl): Adjust comments.
18248
18249 2008-05-07  Jakub Jelinek  <jakub@redhat.com>
18250
18251         PR middle-end/36137
18252         * fold-const.c (fold_binary): Use STRIP_SIGN_NOPS instead of
18253         STRIP_NOPS on arguments even for MIN_EXPR and MAX_EXPR.
18254
18255         PR middle-end/36106
18256         * omp-low.c (expand_omp_atomic_pipeline): Load value using the
18257         integral type rather than floating point, then VIEW_CONVERT_EXPR
18258         to the floating point type.
18259
18260 2008-05-07  Uros Bizjak  <ubizjak@gmail.com>
18261
18262         * config/i386/i386.c (ix86_expand_copysign): Force non-zero constant
18263         TFmode op0 to register.
18264
18265 2008-05-07  Alan Modra  <amodra@bigpond.net.au>
18266
18267         * c-decl.c (grokdeclarator): Comment typo.
18268
18269 2008-05-06  Aldy Hernandez  <aldyh@redhat.com>
18270
18271         * tree-flow.h: Remove prototype for computed_goto_p.
18272         * tree-cfg.c (computed_goto_p): Make static.
18273
18274 2008-05-06  H.J. Lu  <hongjiu.lu@intel.com>
18275
18276         PR target/35657
18277         * config/i386/i386.c (contains_128bit_aligned_vector_p): Renamed to ...
18278         (contains_aligned_value_p): This.  Handle _Decimal128.
18279         (ix86_function_arg_boundary): Only align _Decimal128 to its
18280         natural boundary and handle it properly.
18281
18282 2008-05-06  Martin Jambor  <mjambor@suse.cz>
18283
18284         * ipa-cp.c (ipcp_method_orig_node): Renamed to ipcp_get_orig_node.
18285         (ipcp_method_is_cloned): Renamed to ipcp_node_is_clone
18286         (ipcp_method_set_orig_node): Removed.
18287         (ipcp_cval_get_cvalue_type): Removed.
18288         (ipcp_method_get_scale): Renamed to ipcp_get_node_scale.
18289         (ipcp_method_set_scale): Renamed to ipcp_set_node_scale.
18290         (ipcp_cval_set_cvalue_type): Removed.
18291         (ipcp_cval_get_cvalue): Removed.
18292         (ipcp_cval_set_cvalue): Removed.
18293         (ipcp_type_is_const): Renamed to ipcp_lat_is_const.
18294         (ipcp_cval_equal_cvalues): Renamed to ipcp_lats_are_equal
18295         (ipcp_lats_are_equal): Changed parameters to two ipcp_lattice's
18296         (ipcp_cval_meet): Renamed to ipa_lattice_meet
18297         (ipcp_cval_changed): Changed to use ipcp_lat_is_const
18298         (ipcp_method_cval): Renamed to ipcp_get_ith_lattice
18299         (ipcp_get_ith_lattice): Changed parameters.
18300         (ipcp_cval_compute): Renamed to ipcp_lattice_from_jfunc
18301         (ipcp_lattice_from_jfunc): Changed parameters.
18302         (ipcp_redirect): Local lattice pointer instead of lattice type variable.
18303         (ipcp_method_cval_print): Added temporary variable info.
18304         (ipcp_redirect): Removed already unused local variable caller.
18305         (ipcp_redirect): New temporary variable orig_callee_info
18306         (ipcp_redirect): Removed newly unused local variable callee.
18307         (ipcp_redirect): Removed (a bit confusing) local variable type.
18308         (ipcp_insert_stage): Added local variable info.
18309         (ipcp_cval_changed): Renamed to ipcp_lattice_changed, parameters
18310         renamed too
18311         (ipcp_formal_create): Removed.
18312         (ipcp_method_cval_set): Removed.
18313         (ipcp_propagate_stage): Renamed lattice variables.
18314         (ipcp_method_cval_set_cvalue_type): Removed.
18315         (ipcp_method_cval_print): Renamed to ipcp_print_all_lattices
18316         (ipcp_print_all_lattices): Changed printed strings to refer to
18317         lattices rather than cvals.
18318         (ipcp_method_cval_init): Renamed to ipcp_initialize_node_lattices
18319         (ipcp_propagate_const): Changed formal parameters.
18320         (build_const_val): Changed formal parameters.
18321         (ipcp_insert_stage): Removed useless variable cvalue
18322         (build_const_val): Changed formal parameters.
18323         (ipcp_method_compute_scale): Renamed to ipcp_compute_node_scale
18324         (ipcp_after_propagate): Renamed to ipcp_change_tops_to_bottom
18325         (ipcp_callsite_param_print): Renamed to ipcp_print_all_jump_functions
18326         (ipcp_profile_mt_count_print): Renamed to ipcp_print_func_profile_counts
18327         (ipcp_print_func_profile_counts): Changed string from "method" to
18328         "function"
18329         (ipcp_profile_cs_count_print): Renamed to ipcp_print_call_profile_counts
18330         (ipcp_profile_edge_print): Renamed to ipcp_print_edge_profiles
18331         (ipcp_profile_bb_print): Renamed to ipcp_print_bb_profiles
18332         (ipcp_structures_print): Renamed to ipcp_print_all_structures
18333         (ipcp_profile_print): Renamed to ipcp_print_profile_data
18334         (ipcp_lat_is_const): Changed parameters and made inline.
18335         (ipcp_replace_map_create): Renamed to ipcp_create_replace_map
18336         (ipcp_redirect): Renamed to ipcp_need_redirect_p
18337         (ipcp_need_redirect_p): Calls ipcp_lat_is_const instead of using
18338         the predicate condition directly
18339         (ipcp_propagate_stage): Added local variable args. Removed local
18340         variable callee.  (Both are mere code simplifications.)
18341         (ipcp_method_dont_insert_const): Renamed to
18342         ipcp_node_not_modifiable_p.
18343         (ipcp_node_not_modifiable_p): Made inline.
18344         (ipcp_cloned_create): Renamed to ipcp_init_cloned_node
18345         (ipcp_propagate_const): Renamed to ipcp_propagate_one_const
18346         (ipcp_print_all_lattices): Removed variable cvalue
18347         (ipcp_method_scale_print): Renamed to ipcp_function_scale_print
18348         Updated comments.
18349
18350 2008-05-06  Olivier Hainque  <hainque@adacore.com>
18351
18352         * tree-sra.c (try_instantiate_multiple_fields): Early return
18353         if field has POINTER_TYPE.
18354
18355 2008-05-06  Kai Tietz  <kai.tietz@onevision.com>
18356
18357         * config/i386/i386.c (output_set_got): Fix for x86_64 output_emit_asm
18358         by using 'q' specifier for instruction.
18359         (ix86_file_end): Replaced case TARGET_64BIT_MS_ABI by TARGET_64BIT.
18360
18361 2008-05-06  Anatoly Sokolov <aesok@post.ru>
18362
18363         * config/avr/avr.md (*sbrx_branch, *sbix_branch, *sbix_branch_tmp):
18364         Change mode of zero_extract from QImode to HImode.
18365         (sign bit tests peepholes): (Ditto.).
18366
18367 2008-05-06  Uros Bizjak  <ubizjak@gmail.com>
18368
18369         * config/i386/mmx.md: Remove double backslashes from asm templates.
18370         (*mmx_addv2sf3): Rename from mmx_addv2sf3 insn pattern.
18371         (mmx_addv2sf3): New expander.  Use ix86_fixup_binary_operands_no_copy
18372         to handle nonimmediate operands.
18373         (*mmx_mulv2sf3): Rename from mmx_mulv2sf3 insn pattern.
18374         (mmx_mulv2sf3): New expander.  Use ix86_fixup_binary_operands_no_copy
18375         to handle nonimmediate operands.
18376         (*mmx_<code>v2sf3_finite): New insn pattern.
18377         (*mmx_<code>v2sf3): Rename from mmx_<code>v2sf3 insn pattern.
18378         (mmx_<code>v2sf3): New expander.  Use
18379         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
18380         (mmx_<plusminus_insn><mode>3): New expander.  Use
18381         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
18382         (*mmx_<plusminus_insn><mode>3): New insn pattern.
18383         (mmx_add<mode>3): Removed.
18384         (mmx_ssadd<mode>3): Ditto.
18385         (mmx_usadd<mode>3): Ditto.
18386         (mmx_sub<mode>3): Ditto.
18387         (mmx_sssub<mode>3): Ditto.
18388         (mmx_ussub<mode>3): Ditto.
18389         (*mmx_mulv4hi3): Rename from mmx_mulv4hi3 insn pattern.
18390         (mmx_mulv4hi3): New expander.  Use ix86_fixup_binary_operands_no_copy
18391         to handle nonimmediate operands.
18392         (*mmx_smulv4hi3_highpart): Rename from mmx_smulv4hi3_highpart
18393         insn pattern.
18394         (mmx_smulv4hi3_highpart): New expander.  Use
18395         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
18396         (*mmx_umulv4hi3_highpart): Rename from mmx_umulv4hi3_highpart
18397         insn pattern.
18398         (mmx_umulv4hi3_highpart): New expander.  Use
18399         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
18400         (*mmx_<code>v4hi3): Rename from mmx_<code>v4hi3 insn pattern.
18401         (mmx_<code>v4hi3): New expander.  Use
18402         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
18403         (*mmx_<code>v8qi3): Rename from mmx_<code>v8qi3 insn pattern.
18404         (mmx_<code>v8qi3): New expander.  Use
18405         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
18406         (*mmx_<code><mode>3): Rename from mmx_<code><mode>3 insn pattern.
18407         (mmx_<code><mode>3): New expander.  Use
18408         ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
18409
18410 2008-05-05  Jan Hubicka  <jh@suse.cz>
18411
18412         PR tree-optimization/36118
18413         * passes.c (pass_init_dump_file): Fix dump header.
18414
18415 2008-05-05  Andrew Pinski  <andrew_pinski@playstation.sony.com>
18416
18417         PR middle-end/36141
18418         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Don't create
18419         VCE for function decls.
18420
18421 2008-05-05  H.J. Lu  <hongjiu.lu@intel.com>
18422
18423         * config/i386/sse.md (sse2_<plusminus_insn><mode>3): Fix a typo.
18424
18425 2008-05-05  H.J. Lu  <hongjiu.lu@intel.com>
18426
18427         * config/i386/i386.md (sat_plusminus): New.
18428         (plusminus_insn): Likewise.
18429         (plusminus_mnemonic): Likewise.
18430         (addsub): Removed.
18431         (comm): Add ss_plus, us_plus, ss_minus and us_minus.
18432         (*<addsub><mode>3_cc_overflow): Renamed to ...
18433         (*<plusminus_insn><mode>3_cc_overflow): This.
18434         (*<addsub>si3_zext_cc_overflow): Renamed to ...
18435         (*<plusminus_insn>si3_zext_cc_overflow): This.
18436
18437         * config/i386/sse.md (<addsub><mode>3): Renamed to ...
18438         (<plusminus_insn><mode>3): This.
18439         (*<addsub><mode>3): Renamed to ...
18440         (*<plusminus_insn><mode>3): This.
18441         (<sse>_vm<addsub><mode>3): Renamed to ...
18442         (<sse>_vm<plusminus_insn><mode>3): This.
18443         (sse3_h<addsub>v4sf3): Renamed to ...
18444         (sse3_h<plusminus_insn>v4sf3): This.
18445         (sse3_h<addsub>v2df3): Renamed to ...
18446         (sse3_h<plusminus_insn>v2df3): This.
18447         (<plusminus_insn><mode>3): New.
18448         (*<plusminus_insn><mode>3): Likewise.
18449         (sse2_<plusminus_insn><mode>3): Likewise.
18450         (add<mode>): Removed.
18451         (*add<mode>3): Likewise.
18452         (sse2_ssadd<mode>3): Likewise.
18453         (sse2_usadd<mode>3): Likewise.
18454         (sub<mode>3): Likewise.
18455         (*sub<mode>3): Likewise.
18456         (sse2_sssub<mode>3): Likewise.
18457         (sse2_ussub<mode>3): Likewise.
18458
18459 2008-05-05  Benjamin Kosnik  <bkoz@redhat.com>
18460
18461         * gthr-single.h: Add in required interface elements as per gthr.h.
18462         Add stub types for __gthread_key_t, __gthread_once_t. Add defines
18463         for __GTHREAD_ONCE_INIT, __GTHREAD_RECURSIVE_MUTEX_INIT.
18464         Generalize UNUSED macro.
18465         (__gthread_once): Add.
18466         (__gthread_key_create): Add.
18467         (__gthread_key_delete): Add.
18468         (__gthread_getspecific): Add.
18469         (__gthread_setspecific): Add.
18470
18471 2008-05-05  Andrew Pinski  <Andrew.Pinski@playstation.sony.com>
18472
18473         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): If we have
18474         the same size types for the indirect reference on the rhs, then
18475         create a VCE.
18476
18477 2008-05-05  Uros Bizjak  <ubizjak@gmail.com>
18478
18479         * config/i386/i386.md
18480         (*float<SSEMODEI24:mode><MODEF:mode>2_sse_interunit): Use only
18481         one insn template instead of template series.
18482         (*xordi_1_rex64): Ditto.
18483         (*xordi_2_rex64): Ditto.
18484
18485 2008-05-05  Ira Rosen  <irar@il.ibm.com>
18486
18487         PR tree-optimization/36119
18488         * tree-vect-transform.c (vectorizable_assignment): Set NCOPIES to 1
18489         in case of SLP.
18490
18491 2008-06-04  Jan Hubicka  <jh@suse.cz>
18492
18493         tree-optimization/36100
18494         * tree-pass.h (pass_O0_always_inline): Declare.
18495         * ipa-inline.c (inline_transform): Remove dead code.
18496         (cgraph_gate_O0_always_inline, cgraph_O0_always_inline,
18497         pass_O0_always_inline): New.
18498         * passes.c (init_optimization_passes): Add pass_O0_always_inline.
18499
18500 2008-05-04  Kai Tietz  <kai.tietz@onevision.com>
18501
18502         * config/i386/i386.c (x86_output_mi_thunk): Use movq alternative
18503         mnemonic in this_param move for TARGET_64BIT.
18504
18505 2008-05-04  Uros Bizjak  <ubizjak@gmail.com>
18506
18507         * config/i386/i386.md (*strmovsi_1): Simplify asm alternatives.
18508         (*strmovsi_rex_1): Ditto.
18509         (*strsetsi_1): Ditto.
18510         (*strsetsi_rex_1): Ditto.
18511
18512         (add<mode>cc): Macroize expander from addqicc, addhicc, addsicc and
18513         adddicc expanders using SWI mode iterator.
18514
18515 2008-05-04  H.J. Lu  <hongjiu.lu@intel.com>
18516
18517         PR target/36121
18518         * config/i386/i386.c (ix86_expand_special_args_builtin): Remove three
18519         argument handling.
18520
18521 2008-05-04  David S. Miller  <davem@davemloft.net>
18522
18523         * config.gcc (sparc*-*-*): Always set need_64bit_hwint to yes.
18524         (sparc*-*-linux*): Use linux.h in tm_file.
18525         (sparc-*-linux*): If 'enabled_targets' is 'all', build a bi-arch
18526         compiler defaulting to 32-bit.
18527         (sparc*-*-*): Remove explicit target settings of need_64bit_hwint,
18528         no longer needed.
18529         * config/sparc/linux.h: Remove definitions now obtained
18530         properly from linux.h
18531         * config/sparc/linux64.h: Likewise.
18532         (ASM_CPU_DEFAULT_SPEC): Change this to ASM_CPU64_DEFAULT_SPEC, we
18533         don't want this setting for 32-bit builds in a biarch compiler.
18534         * doc/install.texi: Add sparc-linux to list of targets
18535         supporting --enable-targets=all.
18536
18537 2008-05-03  Andrew Pinski  <pinskia@gmail.com>
18538
18539         * Makefile.in (tree-ssa-phiprop.o): Fix dependencies.
18540
18541 2008-05-03  H.J. Lu  <hongjiu.lu@intel.com>
18542
18543         * config/i386/i386.c (ix86_builtin_type): Move V4SI_FTYPE_V4SF
18544         after V4SI_FTYPE_V8HI.
18545         (ix86_init_mmx_sse_builtins): Move case V4HI_FTYPE_V4HI after
18546         case V4SI_FTYPE_V2DF.
18547
18548 2008-05-03  Kenneth Zadeck  <zadeck@naturalbridge.com>
18549
18550         * doc/invoke.texi (max-flow-memory-locations): Removed.
18551         * params.def (PARAM_MAX_FLOW_MEMORY_LOCATIONS): Removed.
18552
18553 2008-05-03  Richard Guenther  <rguenther@suse.de>
18554
18555         PR middle-end/34973
18556         * opts.c (set_Wstrict_aliasing): Handle the turn-off case.
18557
18558 2008-05-02  David S. Miller  <davem@davemloft.net>
18559
18560         * config.gcc (need_64bit_hwint): Document libcpp dependency.
18561
18562 2008-05-02  Simon Baldwin <simonb@google.com>
18563
18564         PR bootstrap/36108
18565         * c-common.h (warn_array_subscript_range): Removed.
18566         * c-common.c (warn_array_subscript_range): Ditto.
18567         * tree-vrp.c (check_array_ref): Revert to ignoring arrays with size 2.
18568         * c-typeck.c (build_array_ref): Remove warn_array_subscript_range.
18569
18570 2008-05-02  H.J. Lu  <hongjiu.lu@intel.com>
18571
18572         * config/i386/i386.c (ix86_special_builtin_type): New.
18573         (bdesc_special_args): Likewise.
18574         (ix86_expand_special_args_builtin): Likewise.
18575         (ix86_init_mmx_sse_builtins): Updated.
18576         (ix86_expand_builtin): Updated.
18577         (ix86_expand_store_builtin): Removed.
18578         (ix86_expand_unop_builtin): Likewise.
18579
18580         * config/i386/mm3dnow.h (__v2sf): Moved to ...
18581         * config/i386/mmintrin.h (__v2sf): Here.
18582
18583         * config/i386/xmmintrin.h (_mm_loadh_pi): Replace __v2si with
18584         const __v2sf.
18585         (_mm_loadl_pi): Likewise.
18586         (_mm_storeh_pi): Replace __v2si with __v2sf.
18587         (_mm_storel_pi): Likewise.
18588
18589         * doc/extend.texi: Correct __builtin_ia32_loadhps,
18590         __builtin_ia32_loadlps, __builtin_ia32_storehps,
18591         __builtin_ia32_storelps, __builtin_ia32_loadhpd and
18592         __builtin_ia32_loadlpd.
18593
18594 2008-05-02  H.J. Lu  <hongjiu.lu@intel.com>
18595
18596         * config/i386/i386.c (ix86_builtin_type): Add FLOAT_FTYPE_FLOAT,
18597         V4SF_FTYPE_V4SF_VEC_MERGE and V2DF_FTYPE_V2DF_VEC_MERGE.
18598         (bdesc_args): Updated.  Add scalar SSE builtins with vec_merge.
18599         (ix86_init_mmx_sse_builtins): Updated.
18600         (ix86_expand_args_builtin): Likewise.
18601         (ix86_expand_builtin): Likewise.
18602         (ix86_expand_unop1_builtin): Renamed to ...
18603         (ix86_expand_unop_vec_merge_builtin): This.
18604
18605 2008-05-01  Jan Hubicka  <jh@suse.cz>
18606
18607         PR bootstrap/36100
18608         * ipa-inline.c (inline_generate_summary): Make static.
18609         (inline_transform): Do not call inlining at -O0; make static.
18610         * passes.c (execute_todo): Add sanity check.
18611         (execute_one_ipa_transform_pass): Execute proper flags.
18612
18613 2008-05-01  Eric Botcazou  <ebotcazou@adacore.com>
18614
18615         * tree.h (TYPE_NONALIASED_COMPONENT): Expand comment.
18616         (DECL_NONADDRESSABLE_P): Likewise.
18617         * alias.c (record_component_aliases): Fix comment.
18618
18619 2008-05-01  Simon Baldwin <simonb@google.com>
18620
18621         * c-common.h (warn_array_subscript_range): New function.
18622         * c-common.c (warn_array_subscript_range): Ditto.
18623         * tree-vrp.c (check_array_ref): Corrected code to agree with
18624         comment, ignoring only arrays of size 0 or size 1.
18625         * c-typeck.c (build_array_ref): Call warn_array_subscript_range.
18626
18627 2008-05-01  H.J. Lu  <hongjiu.lu@intel.com>
18628
18629         * config/i386/i386.c (ix86_builtin_type): Replace
18630         DI_FTYPE_DI_DI_INT with V1DI2DI_FTYPE_V1DI_V1DI_INT.
18631         (bdesc_args): Updated.
18632         (ix86_init_mmx_sse_builtins): Likewise.
18633         (ix86_expand_args_builtin): Likewise.
18634
18635         * config/i386/tmmintrin.h (_mm_alignr_pi8): Replace long long
18636         with __v1di.
18637
18638         * doc/extend.texi: Correct __builtin_ia32_palignr.
18639
18640 2008-05-01  H.J. Lu  <hongjiu.lu@intel.com>
18641
18642         PR target/36095
18643         * config/i386/i386.c (bdesc_crc32): Removed.
18644         (ix86_expand_crc32): Likewise.
18645         (ix86_builtin_type): Replace V2DI2TI_FTYPE_V2DI2TI_INT with
18646         V2DI2TI_FTYPE_V2DI_INT, V2DI2TI_FTYPE_V2DI2TI_V2DI2TI_INT with
18647         V2DI2TI_FTYPE_V2DI_V2DI_INT.  Add UINT64_FTYPE_UINT64_UINT64,
18648         UINT_FTYPE_UINT_UINT, UINT_FTYPE_UINT_USHORT and
18649         UINT_FTYPE_UINT_UCHAR.
18650         (bdesc_args): Updated. Add crc32 builtins.
18651         (ix86_init_mmx_sse_builtins): Updated.
18652         (ix86_expand_args_builtin): Updated to support subreg.
18653
18654         * doc/extend.texi: Correct __builtin_ia32_crc32di.
18655
18656 2008-05-01  Jan Hubicka  <jh@suse.cz>
18657
18658         * tree-pass.h (opt_pass): Add IPA_PASS.
18659         (varpool_node, cgraph_node): Forward declare.
18660         (ipa_opt_pass): Define.
18661         (pass_ipa_inline): Turn into ipa_opt_pass.
18662         (pass_apply_inline): Remove.
18663         * ipa-inline.c (pass_ipa_inline): Turn into ipa_opt_pass.
18664         (apply_inline): Turn into ....
18665         (inline_transform): ... this one.
18666         (inline_generate_summary): New function.
18667         (pass_apply_inline): Remove.
18668         * function.h (ipa_opt_pass): Forward declare structure; typedef;
18669         vector.
18670         (struct function): Add ipa_transforms_to_apply.
18671         * passes.c (register_one_dump_file): Work on IPA_PASS.
18672         (init_optimization_passes): Remove pass_inline_parameters and
18673         pass_apply_inline.
18674         (pass_init_dump_file, pass_fini_dump_file): Break out from ....
18675         (execute_one_pass) ... here; apply transforms when possible.
18676         (add_ipa_transform_pass, execute_ipa_summary_asses,
18677         execute_one_ipa_transform_pass): New.
18678         (execute_ipa_pass_list): Update for IPA_PASS type.
18679
18680 2008-05-01  H.J. Lu  <hongjiu.lu@intel.com>
18681
18682         * config/i386/i386.c (ix86_builtin_type): Add
18683         V2DI_FTYPE_V2DI_V16QI, V2DI_FTYPE_V2DI_UINT_UINT and
18684         V2DI_FTYPE_V2DI_V2DI_UINT_UINT.
18685         (bdesc_args): Add SSE4a builtins.
18686         (ix86_init_mmx_sse_builtins): Updated.
18687         (ix86_expand_args_builtin): Likewise.
18688         (ix86_expand_builtin): Likewise.
18689
18690 2008-05-01  H.J. Lu  <hongjiu.lu@intel.com>
18691
18692         * config/i386/i386.c (ix86_builtin_type): Add
18693         V8HI_FTYPE_V8HI_V8HI_COUNT, V8HI_FTYPE_V8HI_SI_COUNT,
18694         V4SI_FTYPE_V4SI_V4SI_COUNT, V4SI_FTYPE_V4SI_SI_COUNT,
18695         V4HI_FTYPE_V4HI_V4HI_COUNT, V4HI_FTYPE_V4HI_SI_COUNT,
18696         V2DI_FTYPE_V2DI_V2DI_COUNT, V2DI_FTYPE_V2DI_SI_COUNT,
18697         V2SI_FTYPE_V2SI_V2SI_COUNT, V2SI_FTYPE_V2SI_SI_COUNT,
18698         V1DI_FTYPE_V1DI_V1DI_COUNT, V1DI_FTYPE_V1DI_SI_COUNT,
18699         V8HI_FTYPE_V8HI_INT, V4SI_FTYPE_V4SI_INT, V4HI_FTYPE_V4HI_INT,
18700         V2DI2TI_FTYPE_V2DI2TI_INT, V2DI2TI_FTYPE_V2DI2TI_V2DI2TI_INT
18701         and DI_FTYPE_DI_DI_INT.
18702         (bdesc_args): Add MMX/SSE shift, shuffle and palignr builtins.
18703         (ix86_init_mmx_sse_builtins): Updated.
18704         (ix86_expand_args_builtin): Likewise.
18705         (ix86_expand_builtin): Likewise.
18706         (ix86_expand_binop_imm_builtin): Removed.
18707
18708         * doc/extend.texi: Correct __builtin_ia32_palignr128.
18709
18710 2008-04-30  Richard Guenther  <rguenther@suse.de>
18711
18712         PR tree-optimization/32921
18713         * tree-ssa-loop-im.c (mem_refs_may_alias_p): Disambiguate with TBAA.
18714
18715 2008-04-30  Richard Sandiford  <rsandifo@nildram.co.uk>
18716
18717         * config/arm/arm.c (arm_unwind_emit): Use
18718         crtl->all_throwers_are_sibcalls instead of
18719         cfun->all_throwers_are_sibcalls.
18720         (arm_output_fn_unwind): Likewise.
18721         * config/frv/frv.c (frv_stack_info): Use crtl->uses_pic_offset_table
18722         instead of cfun->uses_pic_offset_table.
18723         (frv_expand_prologue): Likewise.
18724         (frv_frame_pointer_required): Likewise.
18725         (frv_expand_fdpic_call): Likewise.
18726         (frv_emit_movsi): Likewise.
18727         * config/iq2000/iq2000.c (iq2000_expand_prologue): Use
18728         cfun->returns_pcc_struct instead of
18729         current_function_returns_pcc_struct.
18730         * config/m32c/m32c.c (need_to_save): Use crtl->calls_eh_return
18731         instead of cfun->calls_eh_return.
18732         (m32c_pushm_popm): Likewise.
18733         * config/xtensa/xtensa.h (cfun->calls_alloca): Remove bogus
18734         "extern" declaration.
18735
18736 2008-04-30  Richard Guenther  <rguenther@suse.de>
18737
18738         PR tree-optimization/21636
18739         * tree-ssa-ccp.c (ccp_fold): Handle &p->x with p being a
18740         constant address.
18741         (evaluate_stmt): Print the likely value.
18742         (ccp_visit_stmt): Avoid excessive vertical spacing.
18743
18744 2008-04-30  Rafael Espíndola  <espindola@google.com>
18745
18746         * builtins.c (fold_call_expr): Return realret.
18747         * tree-ssa-threadedge.c
18748         (record_temporary_equivalences_from_stmts_at_dest): Ignore calls to
18749         __builtin_object_size.
18750
18751 2008-04-30  Seongbae Park  <seongbae.park@gmail.com>
18752
18753         * gcc.c (wrapper_string): New variable.
18754         (insert_wrapper): New function.
18755         (execute): New option -wrapper.
18756         * doc/invoke.texi (Overall Options): New driver option -wrapper.
18757
18758 2008-04-30  Nathan Froyd  <froydnj@codesourcery.com>
18759
18760         * config/rs6000/crtresgpr.asm, config/rs6000/crtresxgpr.asm,
18761         config/rs6000/crtsavgpr.asm, config/rs6000/crtresfpr.asm,
18762         config/rs6000/crtresxfpr.asm, config/rs6000/crtsavfpr.asm: Break out
18763         from...
18764         * config/rs6000/crtsavres.asm: ...here.  Remove unneeded file.
18765         * config/rs6000/e500crtres32gpr.asm, config/rs6000/e500crtres64gpr.asm,
18766         config/rs6000/e500crtres64gprctr.asm,
18767         config/rs6000/e500crtrest32gpr.asm, config/rs6000/e500crtrest64gpr.asm,
18768         config/rs6000/e500crtresx32gpr.asm, config/rs6000/e500crtresx64gpr.asm,
18769         config/rs6000/e500crtsav32gpr.asm, config/rs6000/e500crtsav64gpr.asm,
18770         config/rs6000/e500crtsav64gprctr.asm,
18771         config/rs6000/e500crtsavg32gpr.asm, config/rs6000/e500crtsavg64gpr.asm,
18772         config/rs6000/e500crtsavg64gprctr.asm: New files.
18773         * config/rs6000/t-ppccomm: Add build rules for new files.
18774         (LIB2FUNCS_STATIC_EXTRA): Add new files.
18775         * config/rs6000/t-netbsd: Add build rules for new files.
18776         (LIB2FUNCS_STATIC_EXTRA): New variable.
18777         * config/rs6000/sysv4.h (ENDFILE_SPEC): Don't include crtsavres.o
18778         (CRTSAVRES_DEFAULT_SPEC): Likewise.
18779         * config/rs6000/netbsd.h (ENDFILE_SPEC): Likewise.
18780
18781 2008-04-30  H.J. Lu  <hongjiu.lu@intel.com>
18782
18783         * config/i386/i386.c (ix86_builtin_type): Add
18784         FLOAT128_FTYPE_FLOAT128_FLOAT128, V16QI_FTYPE_V16QI_V16QI,
18785         V16QI_FTYPE_V8HI_V8HI, V8QI_FTYPE_V8QI_V8QI,
18786         V8QI_FTYPE_V4HI_V4HI, V8HI_FTYPE_V8HI_V8HI,
18787         V8HI_FTYPE_V16QI_V16QI, V8HI_FTYPE_V4SI_V4SI,
18788         V4SI_FTYPE_V4SI_V4SI, V4SI_FTYPE_V8HI_V8HI,
18789         V4SI_FTYPE_V4SF_V4SF, V4SI_FTYPE_V2DF_V2DF,
18790         V4HI_FTYPE_V4HI_V4HI, V4HI_FTYPE_V8QI_V8QI,
18791         V4HI_FTYPE_V2SI_V2SI, V4SF_FTYPE_V4SF_V4SF,
18792         V4SF_FTYPE_V4SF_V4SF_SWAP, V4SF_FTYPE_V4SF_V2SI,
18793         V4SF_FTYPE_V4SF_V2DF, V4SF_FTYPE_V4SF_DI,
18794         V4SF_FTYPE_V4SF_SI, V2DI_FTYPE_V2DI_V2DI,
18795         V2DI_FTYPE_V16QI_V16QI, V2DI_FTYPE_V4SI_V4SI,
18796         V2DI_FTYPE_V2DF_V2DF, V2SI_FTYPE_V2SI_V2SI,
18797         V2SI_FTYPE_V4HI_V4HI, V2SI_FTYPE_V2SF_V2SF,
18798         V2DF_FTYPE_V2DF_V2DF, V2DF_FTYPE_V2DF_V2DF_SWAP,
18799         V2DF_FTYPE_V2DF_V4SF, V2DF_FTYPE_V2DF_DI,
18800         V2DF_FTYPE_V2DF_SI, V2SF_FTYPE_V2SF_V2SF,
18801         V1DI_FTYPE_V1DI_V1DI, V1DI_FTYPE_V8QI_V8QI and
18802         V1DI_FTYPE_V2SI_V2SI.
18803         (bdesc_2arg): Moved to ...
18804         (bdesc_args): Here.
18805         (ix86_init_mmx_sse_builtins): Updated.
18806         (ix86_expand_args_builtin): Updated.  Take a pointer
18807         to const struct builtin_description.  Handle comparison
18808         builtin functions.
18809         (ix86_expand_sse_compare): Take a new argument for swapping operands.
18810         (ix86_expand_builtin): Updated.
18811
18812         * config/i386/sse.md (ssse3_pmaddubswv8hi3): Renamed to ...
18813         (ssse3_pmaddubsw128): This.
18814         (ssse3_pmaddubswv4hi3): Renamed to ...
18815         (ssse3_pmaddubsw): This.
18816
18817         * doc/extend.texi (__builtin_ia32_packsswb128): Correct prototype.
18818         (__builtin_ia32_packssdw128): Likewise.
18819         (__builtin_ia32_packuswb128): Likewise.
18820         (__builtin_ia32_pmaddubsw): Likewise.
18821         (__builtin_ia32_pmaddubsw128): Likewise.
18822
18823 2008-04-30  Richard Guenther  <rguenther@suse.de>
18824
18825         PR tree-optimization/14847
18826         * tree-ssa-ifcombine.c (get_name_for_bit_test): New helper function.
18827         (recognize_bits_test): Use it.
18828         (recognize_single_bit_test): Likewise.
18829
18830 2008-04-30  Martin Jambor  <mjambor@suse.cz>
18831
18832         * ipa-cp.c (ipcp_init_stage): Calls ipa_set_called_with_variable_arg
18833         instead of setting number of formal parameters to zero.
18834         (ipcp_init_stage): Do not set the number of actual parameters to zero
18835         either.
18836         (ipcp_propagate_stage): Explicitly skipping all calls to nodes
18837         which are called with variable number of arguments.
18838         (ipcp_insert_stage): Explicitely skipping all nodes which are
18839         called with variable number of arguments.
18840         (ipcp_callsite_param_print): Skipps callsites to nodes with varaible
18841         number of parameters.
18842
18843         * ipa-prop.h (struct ipa_node_params): Added flag
18844         called_with_var_arguments
18845         (ipa_set_param_count): Added.  Changed sole setter to use it.
18846         (ipa_get_param_count): Added.  All readers of param_count
18847         converted to use it instead.
18848         (ipa_set_called_with_variable_arg): Added.
18849         (ipa_is_called_with_var_arguments): Added.
18850         (ipa_get_ith_param): Added.  All readers of param_decls converted
18851         to use it instead.
18852         (ipa_set_cs_argument_count): Added, sole writer to argument_count
18853         changed to use it.
18854         (ipa_get_cs_argument_count): Added, all readers of argument_count
18855         changed to cal it.
18856         (ipa_get_ith_jump_func): Added. Accessors of jump values changed
18857         to use it.
18858
18859         * ipa-prop.h (struct ipcp_formal): Renamed to ipcp_lattice
18860         (struct ipcp_lattice): Renamed cval_type to type
18861         (struct ipa_node_params): ipcp_cval renamed to ipcp_lattices
18862
18863         * ipa-cp.c (ipcp_cval_get_cvalue): Changed return value to tree
18864         (ipcp_cval_set_cvalue): Changed type of parameter value to tree
18865         (ipcp_insert_stage): Changed the type of variable cvalue to tree
18866         (ipcp_replace_map_create): Changed the type of parameter cvalue to tree
18867         (build_const_val): Changed the type of parameter cvalue to tree
18868         (ipcp_propagate_const): Changed the type of parameter cvalue to tree
18869         (ipcp_method_cval_set_cvalue_type): Renamed parameter cval_type1 to type
18870
18871         * ipa-prop.h (struct ipcp_formal): Replaced cvalue with tree called
18872         constant
18873
18874         * ipa-prop.c (ipa_methodlist_init): Renamed to ipa_init_func_list
18875         (ipa_methodlist_not_empty): Removed, the sole user now checks directly
18876         (ipa_add_method): Renamed to ipa_push_func_to_list
18877         (ipa_remove_method): Renamed to ipa_pop_func_from_list
18878         (ipa_callsite_param_count): Removed.
18879         (ipa_callsite_param_count_set): Removed.
18880         (ipa_callsite_param): Removed.
18881         (ipa_callsite_callee): Removed.
18882         (ipa_callsite_compute_param): Renamed to ipa_compute_jump_functions
18883         (ipa_callsite_compute_count): Renamed to ipa_count_arguments
18884         (ipa_method_formal_count): Removed.
18885         (ipa_method_formal_count_set): Removed.
18886         (ipa_method_get_tree): Removed.
18887         (ipa_method_tree_map_create): Removed.
18888         (ipa_method_compute_tree_map): Renamed to ipa_create_param_decls_array
18889         (ipa_create_param_decls_array): Creates the array itself
18890         (ipa_create_param_decls_array): Temporary variable info instead of
18891         a few dereferences.
18892         (ipa_method_formal_compute_count): Renamed to ipa_count_formal_params
18893         (ipa_method_compute_modify): Renamed to ipa_detect_param_modifications
18894         (get_type): Removed.
18895         (ipa_jf_get_info_type): Removed.
18896         (ipa_node_create): Renamed to ipa_create_node_params
18897         (ipa_free): Renamed to ipa_free_all_node_params
18898         (ipa_nodes_create): Renamed to ipa_create_all_node_params
18899         (ipa_edges_create): Renamed to ipa_create_all_edge_args
18900         (ipa_edges_free): Renamed to ipa_free_all_edge_args
18901         (ipa_nodes_free): Integrated into ipa_free_all_node_params and removed
18902         (ipa_free_all_node_params): Deallocation to jump_functions moved to
18903         ipa_free_all_edge_args
18904         (ipa_method_tree_print): Renamed to ipa_print_all_tree_maps
18905         (ipa_method_modify_print): Renamed to ipa_print_all_params_modified
18906         (ipa_create_methodlist_node): Removed.
18907         (ipa_methodlist_method): Removed.
18908         (ipa_methodlist_method_set): Removed.
18909         (ipa_methodlist_next_method): Removed.
18910         (ipa_methodlist_next_method_set): Removed.
18911         (ipa_method_is_modified): Removed.
18912         (ipa_method_modify_create): Removed.
18913         (ipa_method_modify_init): Temporary variable info instead of a few
18914         dereferences.
18915         (ipa_detect_param_modifications): Temporary variable info instead of
18916         a few dereferences.
18917         (ipa_compute_jump_functions): Temporary variable info instead of
18918         a few dereferences.
18919         (ipa_method_modify_set): Removed.
18920         (ipa_method_tree_map): Renamed to ipa_get_param_decl_index
18921         (ipa_get_param_decl_index): Now accepts struct ipa_node_params rather
18922         than craph_node as the first parameter.
18923         (ipa_method_modify_stmt): Renamed to ipa_check_stmt_modifications
18924         (ipa_method_modify_init): Removed.
18925         (ipa_compute_jump_functions): Added a temp variable instead of
18926         repeatadly dereferencing the cgraph_edge.aux pointer
18927         (ipa_callsite_param_set_type): Removed.
18928         (ipa_compute_jump_functions): i renamed to index and moved to
18929         an inner block
18930         (ipa_callsite_param_set_info_type_formal): Removed.
18931         (ipa_callsite_param_set_info_type): Removed.
18932         (ipa_callsite_param_map_create): Removed.
18933         (ipa_callsite_tree): Removed.
18934         (ipa_callsite_caller): Removed.
18935         (ipa_pop_func_from_list): return_method removed to return_func
18936
18937         * ipa-prop.h (enum cvalue_type): Renamed to ipa_lattice_type,
18938         prefixed all values with IPA_. Changed all users.
18939         (enum jump_func_type): Rnamed UNKNOWN_IPATYPE to IPA_UNKNOWN,
18940         CONST_IPATYPE to IPA_CONST, CONST_IPATYPE_REF to IPA_CONST_REF
18941         and FORMAL_IPATYPE IPA_PASS_THROUGH.
18942         (union parameter_info): Renamed to jump_func_value.
18943         (union jump_func_value): Renamed value to constant
18944         (struct ipa_jump_func): Renamed info_type to value
18945         (struct ipa_node): Renamed to ipa_node_params
18946         (struct ipa_node_params): Renamed ipa_arg_num to param_count
18947         (struct ipa_node_params): Renamed ipa_param_tree to param_decls
18948         (struct ipa_node_params): Renamed ipa_mod to modified_flags
18949         (struct ipa_edge): Renamed to ipa_edge_args
18950         (struct ipa_edge_args): Renamed ipa_param_num to argument_count
18951         (struct ipa_edge_args): Renamed ipa_param_map to jump_functions
18952         (struct ipa_methodlist): Renamed to ipa_func_list
18953         (struct ipa_func_list): method_p renamed to node, next_method
18954         renamed to next
18955         (ipa_methodlist_p): Removed, switched all users to struct pointer
18956         (IS_VALID_TREE_MAP_INDEX): Renamed to IS_VALID_JUMP_FUNC_INDEX
18957
18958 2008-04-30  Alan Modra  <amodra@bigpond.net.au>
18959
18960         * config/rs6000/rs6000.c (ALWAYS_RESTORE_ALTIVEC_BEFORE_POP): Define.
18961         (rs6000_emit_epilogue): Use backchain to restore only when we
18962         have a large frame.  Make use of frame pointer to restore if we
18963         have one.  Handle ALWAYS_RESTORE_ALTIVEC_BEFORE_POP.
18964
18965 2008-04-29  Paolo Bonzini  <bonzini@gnu.org>
18966
18967         * config/avr/avr.md (*sbrx_branch, *sbix_branch, *sbix_branch_tmp):
18968         Add mode to zero_extract.
18969         (sign bit tests peepholes): (Ditto.).
18970
18971 2008-04-29  H.J. Lu  <hongjiu.lu@intel.com>
18972
18973         * config/i386/i386.c (ix86_builtins): Replace Prescott New
18974         Instructions in comments with SSE3.
18975         (ix86_builtin_type): This.  Add FLOAT128_FTYPE_FLOAT128,
18976         INT64_FTYPE_V4SF, INT64_FTYPE_V2DF, INT_FTYPE_V16QI,
18977         INT_FTYPE_V8QI, INT_FTYPE_V4SF, INT_FTYPE_V2DF,
18978         V16QI_FTYPE_V16QI, V8HI_FTYPE_V8HI, V8HI_FTYPE_V16QI,
18979         V8QI_FTYPE_V8QI, V4SI_FTYPE_V4SI, V4SI_FTYPE_V16QI,
18980         V4SI_FTYPE_V4SF, V4SI_FTYPE_V8HI, V4SI_FTYPE_V2DF,
18981         V4HI_FTYPE_V4HI, V4SF_FTYPE_V4SF, V4SF_FTYPE_V4SI,
18982         V4SF_FTYPE_V2DF, V2DI_FTYPE_V2DI, V2DI_FTYPE_V16QI,
18983         V2DI_FTYPE_V8HI, V2DI_FTYPE_V4SI, V2DF_FTYPE_V2DF,
18984         V2DF_FTYPE_V4SI, V2DF_FTYPE_V4SF, V2DF_FTYPE_V2SI,
18985         V2SI_FTYPE_V2SI, V2SI_FTYPE_V4SF, V2SI_FTYPE_V2SF,
18986         V2SI_FTYPE_V2DF, V2SF_FTYPE_V2SF and V2SF_FTYPE_V2SI.
18987         (bdesc_sse_args): Renamed to ...
18988         (bdesc_args): This.  Add IX86_BUILTIN_PF2ID, IX86_BUILTIN_PFRCP,
18989         IX86_BUILTIN_PFRSQRT, IX86_BUILTIN_PI2FD, IX86_BUILTIN_PF2IW,
18990         IX86_BUILTIN_PSWAPDSI, IX86_BUILTIN_PSWAPDSF and
18991         IX86_BUILTIN_FABSQ.
18992         (bdesc_1arg): Moved to ...
18993         (bdesc_args): Here.
18994         (ix86_init_mmx_sse_builtins): Updated.  Replace Prescott New
18995         Instructions in comments with SSE3.
18996         (ix86_expand_sse_operands_builtin): Renamed to ...
18997         (ix86_expand_args_builtin): This.  Updated.
18998         (ix86_expand_unop1_builtin): Update comments.
18999         (ix86_expand_builtin): Updated.
19000
19001 2008-04-29  Richard Guenther  <rguenther@suse.de>
19002
19003         PR tree-optimization/36078
19004         * tree-ssa-loop-ivcanon.c (tree_unroll_loops_completely):
19005         Update virtual SSA form after cleaning up the CFG.
19006
19007 2008-04-29  Richard Guenther  <rguenther@suse.de>
19008
19009         PR middle-end/15255
19010         * fold-const.c (fold_binary): Fold (A + A) * C to A * 2*C.
19011
19012 2008-04-29  Richard Guenther  <rguenther@suse.de>
19013
19014         * tree-ssa-alias.c (finalize_ref_all_pointers): Remove.
19015         (compute_may_aliases): Do not call finalize_ref_all_pointers.
19016         (compute_flow_insensitive_aliasing): Do not treat
19017         PTR_IS_REF_ALL pointers special.
19018         (get_smt_for): Likewise.
19019         (may_alias_p): Re-structure.
19020         (is_escape_site): A ref-all pointer conversion is not an escape site.
19021         * tree-ssa-structalias.c (find_what_p_points_to): Do not treat
19022         PTR_IS_REF_ALL pointers special.
19023         * tree-ssa-structalias.h (struct alias_info): Remove
19024         ref_all_symbol_mem_tag field.
19025         (PTR_IS_REF_ALL): Remove.
19026
19027 2008-04-29  Richard Guenther  <rguenther@suse.de>
19028
19029         PR middle-end/36077
19030         * fold-const.c (extract_muldiv_1): In combining division constants
19031         make sure to never overflow.
19032
19033 2008-04-29  Nick Clifton  <nickc@redhat.com>
19034
19035         * doc/tm.texi (RETURN_ADDR_RTX): Fix typo.
19036
19037 2008-04-28  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
19038
19039         PR bootstrap/35169
19040         * optc-gen.awk: Work around HP-UX/IA awk bug.
19041
19042 2008-04-28  Danny Smith  <dannysmith@users.sourceforge.net>
19043
19044         * config/i386/cygming-crtend.c (register_frame_ctor): Revert my
19045         2008-04-25 commit.
19046
19047 2008-04-28  Uros Bizjak  <ubizjak@gmail.com>
19048
19049         PR target/36073
19050         * config/i386/i386.md
19051         (*float<SSEMODEI24:mode><MODEF:mode>2_mixed_interunit):
19052         Change operand 1 predicate to nonimmediate_operand.
19053
19054 2008-04-28  Jakub Jelinek  <jakub@redhat.com>
19055
19056         PR debug/36060
19057         * dwarf2out.c (struct die_struct): Mark as chain_circular through
19058         die_sub field.
19059         * gengtype.c (walk_type, write_func_for_structure): Handle
19060         chain_circular.
19061         * doc/gty.texi: Document chain_circular.
19062
19063 2008-04-28  Richard Guenther  <rguenther@suse.de>
19064
19065         PR tree-optimization/36066
19066         * tree-vrp.c (execute_vrp): Cleanup the CFG only after finalizing
19067         SCEV and loop.
19068
19069 2008-04-28  Uros Bizjak  <ubizjak@gmail.com>
19070
19071         PR target/36064
19072         * config/i386/i386.md
19073         (floatdi<X87MODEF:mode>2_i387_with_xmm splitters):
19074         Use match_scratch instead of match_operand for operands 3 and 4.
19075
19076 2008-04-27  Richard Guenther  <rguenther@suse.de>
19077
19078         PR tree-optimization/18754
19079         PR tree-optimization/34223
19080         * tree-pass.h (pass_complete_unrolli): Declare.
19081         * tree-ssa-loop-ivcanon.c (try_unroll_loop_completely): Print
19082         loop size before and after unconditionally of UL_NO_GROWTH in effect.
19083         Rewrite loop into loop closed SSA form if it is not already.
19084         (tree_unroll_loops_completely): Re-structure to iterate over
19085         innermost loops with intermediate CFG cleanups.
19086         Unroll outermost loops only if requested or the code does not grow
19087         doing so.
19088         * tree-ssa-loop.c (gate_tree_vectorize): Don't shortcut if no
19089         loops are available.
19090         (tree_vectorize): Instead do so here.
19091         (tree_complete_unroll): Also unroll outermost loops.
19092         (tree_complete_unroll_inner): New function.
19093         (gate_tree_complete_unroll_inner): Likewise.
19094         (pass_complete_unrolli): New pass.
19095         * tree-ssa-loop-manip.c (find_uses_to_rename_use): Only record
19096         uses outside of the loop.
19097         (tree_duplicate_loop_to_header_edge): Only verify loop-closed SSA
19098         form if it is available.
19099         * tree-flow.h (tree_unroll_loops_completely): Add extra parameter.
19100         * passes.c (init_optimization_passes): Schedule complete inner
19101         loop unrolling pass before the first CCP pass after final inlining.
19102
19103 2008-04-27  Nathan Sidwell  <nathan@codesourcery.com>
19104
19105         * targhooks.h (default_emutls_var_fields,
19106         default_emutls_var_init): Declare.
19107         * tree.h (DECL_THREAD_LOCAL): Compare against TLS_MODEL_REAL.
19108         * target.h (struct gcc_target): Add struct emutls member.
19109         * target-def.h (TARGET_EMUTLS_GET_ADDRESS,
19110         TARGET_EMUTLS_REGISTER_COMMON, TARGET_EMUTLS_VAR_SECTION,
19111         TARGET_EMUTLS_TMPL_SECTION, TARGET_EMUTLS_VAR_PREFIX,
19112         TARGET_EMUTLS_TMPL_PREFIX, TARGET_EMUTLS_VAR_FIELDS,
19113         TARGET_EMUTLS_VAR_INIT, TARGET_EMUTLS_DEBUG_FORM_TLS_ADDRESS,
19114         TARGET_EMUTLS_VAR_ALIGN_FIXED, TARGET_EMUTLS): New.
19115         (TARGET_INITIALIZER): Add TARGET_EMUTLS.
19116         * builtins.def (BUILT_IN_EMUTLS_GET_ADDRESS,
19117         BUILT_IN_EMUTLS_REGISTER_COMMON): Get name from targetm structure.
19118         * dwarf2out.c (loc_descriptor_from_tree_1): Check if emutls can
19119         emit debug information.
19120         * coretypes.h (tls_model): Add TLS_MODEL_EMULATED, TLS_MODEL_REAL.
19121         * varasm.c: Include targhooks.h.
19122         (emutls_object_section, emutls_tmpl_section): New.
19123         (EMUTLS_VAR_PREFIX, EMUTLS_TMPL_PREFIX): Remove.
19124         (EMUTLS_SEPARATOR): New.
19125         (prefix_name): New.
19126         (get_emutls_object_name): New.
19127         (default_emutls_var_fields): New, broken out of ...
19128         (get_emutls_object_type): ... here.  Adjust to use target hooks.
19129         (get_emutls_init_templ_addr): Adjust to use target hooks.
19130         (emutls_decl): Adjust to use target hooks.
19131         (emutls_finish): Likewise.
19132         (default_emutls_var_init): New, broken out of ...
19133         (assemble_variable): ... here.  Adjust to use target hooks.
19134         * output.h (enum section_category): Add SECCAT_EMUTLS_VAR,
19135         SECCAT_EMUTLS_TMPL.
19136         * c-common.c (handle_section_attribute): Prevent overriding
19137         sections for emulated tls with special sections.
19138         * config/i386/i386.c (x86_64_elf_select_section): Add
19139         SECCAT_EMUTLS_VAR and SECCAT_EMUTLS_TMPL.
19140         (x86_64_elf_unique_section): Likewise.
19141         * config/vxworks.c: Include tree.h.
19142         (vxworks_emutls_var_fields, vxworks_emutls_var_init): New.
19143         (vxworks_override_options): Set TLS scheme.
19144         * doc/tm.texi (Emulated TLS): New node.
19145
19146 2008-04-26  Simon Baldwin <simonb@google.com>
19147
19148         PR c/35652
19149         * builtins.c (c_strlen): Suppressed multiple warnings that can occur
19150         with propagated string constants.
19151
19152 2008-04-26  Uros Bizjak  <ubizjak@gmail.com>
19153
19154         * config/i386/i386.md (fix_trunc<mode>_i387_fisttp_with_temp): Use 'X'
19155         constraint for operand 2 when operand 0 is memory operand.
19156         (fix_truncdi_i387_with_temp): : Use 'X' constraint for operand 4 when
19157         operand 0 is memory operand.
19158         (fix_trunc<mode>_i387_with_temp): Ditto.
19159         (*floatsi<mode>2_vector_mixed_with_temp): Use 'X' constraint for
19160         operand 2 when operand 1 is memory operand.
19161         (*float<SSEMODEI24:mode><MODEF:mode>2_mixed_with_temp): Ditto.
19162         (*floatsi<mode>2_vector_sse_with_temp): Ditto.
19163         (*float<SSEMODEI24:mode><MODEF:mode>2_sse_with_temp): Ditto.
19164         (*float<SSEMODEI24:mode><X87MODEF:mode>2_i387_with_temp): Ditto.
19165         (floatdi<X87MODEF:mode>2_i387_with_xmm): Use 'X' constraint for
19166         operands 2,3 and 4 when operand 1 is memory operand.
19167         (fistdi2_with_temp): Use 'X' constraint for operand 2 when operand 0
19168         is memory operand.
19169         (fistdi2_floor_with_temp): Ditto.
19170         (fist<mode>2_floor_with_temp): Ditto.
19171         (fistdi2_ceil_with_temp): Ditto.
19172         (fist<mode>2_ceil_with_temp): Ditto.
19173         (*truncdfsf_fast_mixed): Merge alternatives 0 and 1.
19174
19175 2008-04-26  David Daney  <ddaney@avtrex.com>
19176
19177         * config/mips/mips.md (UNSPEC_COMPARE_AND_SWAP_12): New
19178         unspec_volitile.
19179         (UNSPEC_SYNC_OLD_OP, UNSPEC_SYNC_NEW_OP, UNSPEC_SYNC_EXCHANGE,
19180         UNSPEC_MEMORY_BARRIER, UNSPEC_SET_GOT_VERSION,
19181         UNSPEC_UPDATE_GOT_VERSION): Renumber.
19182         (sync_compare_and_swap<mode>): New expand for QI and HI modes.
19183         (compare_and_swap_12): New insn.
19184         * config/mips/mips-protos.h (mips_expand_compare_and_swap_12): Declare.
19185         * config/mips/mips.c (mips_force_binary): New function.
19186         (mips_emit_int_order_test, mips_expand_synci_loop): Use it.
19187         (mips_expand_compare_and_swap_12): New function.
19188         * config/mips/mips.h (MIPS_COMPARE_AND_SWAP_12): New macro.
19189
19190 2008-04-25  Jan Hubicka  <jh@suse.cz>
19191
19192         PR testsuite/35843
19193         * cfgexpand.c (pass_expand): Turn into RTL pass.
19194         * passes.c (execute_one_pass): Do pass typechecking after execution.
19195         * tree-pass.h (pass_expand): Turn into RTL pass.
19196
19197         * function.h (struct rtl_data): Move here fields
19198         accesses_prior_frames, calls_eh_return, saves_all_registers,
19199         has_nonlocal_goto, has_asm_statement, is_thunk,
19200         all_throwers_are_sibcalls, limit_stack, profile, uses_const_pool,
19201         uses_pic_offset_table, uses_eh_lsda, tail_call_emit,
19202         arg_pointer_save_area_init from struct function; turn into bool.
19203         (struct function): Move
19204         calls_eh_return, saves_all_registers, has_nonlocal_goto,
19205         has_asm_statement, is_thunk, all_throwers_are_sibcalls, limit_stack,
19206         profile, uses_const_pool, uses_pic_offset_table, uses_eh_lsda,
19207         tail_call_emit, arg_pointer_save_area_init
19208         into struct rtl_data.  Remove recursive_call_emit and gimplified flags.
19209         (current_function_returns_struct, current_function_returns_pcc_struct,
19210         current_function_calls_setjmp, current_function_calls_alloca,
19211         current_function_accesses_prior_frames,
19212         current_function_calls_eh_return, current_function_is_thunk,
19213         current_function_stdarg, current_function_profile,
19214         current_function_limit_stack, current_function_uses_pic_offset_table,
19215         current_function_uses_const_pool, current_function_has_nonlocal_label,
19216         current_function_saves_all_registers,
19217         current_function_has_nonlocal_goto,
19218         current_function_has_asm_statement): Remove accesor macros.
19219         * ra-conflict.c (global_conflicts): Update.
19220         * tree-tailcall.c (suitable_for_tail_opt_p): Update.
19221         (suitable_for_tail_call_opt_p): Update.
19222         * builtins.c (expand_builtin_return_addr): Update.
19223         (expand_builtin_setjmp_setup): Update.
19224         (expand_builtin_nonlocal_goto): Update.
19225         * final.c (final_start_function): Update.
19226         (profile_function): Update.
19227         (leaf_function_p): Update.
19228         (only_leaf_regs_used): Update.
19229         * df-scan.c (df_get_exit_block_use_set): Update.
19230         * dojump.c (clear_pending_stack_adjust): Update.
19231         * tree-stdarg.c (gate_optimize_stdarg): Update.
19232         * gimple-low.c (lower_function_body): Update.
19233         * global.c (compute_regsets): Update.
19234         (global_alloc): Update.
19235         * dwarf2out.c (dwarf2out_begin_prologue): Update.
19236         * expr.c (expand_assignment): Update.
19237         * dse.c (dse_step0): Update.
19238         (dse_step1): Update.
19239         * c-decl.c (store_parm_decls): Update.
19240         * local-alloc.c (combine_regs): Update.
19241         (find_free_reg): Update.
19242         * function.c (assign_parms_augmented_arg_list): Update.
19243         (assign_parm_find_data_types): Update.
19244         (assign_parms): Update.
19245         (allocate_struct_function): Update.
19246         (expand_function_start): Update.
19247         (expand_function_end): Update.
19248         (get_arg_pointer_save_area): Update.
19249         (thread_prologue_and_epilogue_insns): Update.
19250         (rest_of_match_asm_constraints): Update.
19251         * stor-layout.c (variable_size): Update.
19252         * gcse.c (gcse_main): Update.
19253         (bypass_jumps): Update.
19254         * gimplify.c (gimplify_function_tree): Update.
19255         * calls.c (emit_call_1): Update.
19256         (expand_call): Update.
19257         * bt-load.c (compute_defs_uses_and_gen): Update.
19258         * except.c (sjlj_assign_call_site_values): Update.
19259         (sjlj_emit_function_enter): Update.
19260         (can_throw_external): Update.
19261         (set_nothrow_function_flags): Update.
19262         (expand_builtin_unwind_init): Update.
19263         (expand_eh_return): Update.
19264         (convert_to_eh_region_ranges): Update.
19265         (output_function_exception_table): Update.
19266         * emit-rtl.c (gen_tmp_stack_mem): Update.
19267         * cfgexpand.c (expand_used_vars): Update.
19268         (tree_expand_cfg): Update.
19269         * cfgcleanup.c (rest_of_handle_jump): Update.
19270         * explow.c (allocate_dynamic_stack_space): Update.
19271         * varasm.c (assemble_start_function): Update.
19272         (force_const_mem): Update.
19273         (mark_constant_pool): Update.
19274         * tree-optimize.c (tree_rest_of_compilation): Update.
19275         * stack-ptr-mod.c (notice_stack_pointer_modification): Update.
19276         * tree-cfg.c (notice_special_calls): Update.
19277         (is_ctrl_altering_stmt): Update.
19278         (tree_can_make_abnormal_goto): Update.
19279         (tree_purge_dead_abnormal_call_edges): Update.
19280         * config/alpha/predicates.md: Update.
19281         * config/alpha/alpha.c (alpha_sa_mask): Update.
19282         (alpha_sa_size): Update.
19283         (alpha_does_function_need_gp): Update.
19284         (alpha_expand_prologue): Update.
19285         (alpha_start_function): Update.
19286         (alpha_output_function_end_prologue): Update.
19287         (alpha_expand_epilogue): Update.
19288         * config/frv/frv.c (frv_stack_info): Update.
19289         (frv_expand_epilogue): Update.
19290         * config/s390/s390.c (s390_regs_ever_clobbered): Update.
19291         (s390_register_info): Update.
19292         (s390_frame_info): Update.
19293         (s390_init_frame_layout): Update.
19294         (s390_can_eliminate): Update.
19295         (save_gprs): Update.
19296         * config/spu/spu.c (spu_split_immediate): Update.
19297         (need_to_save_reg): Update.
19298         (spu_expand_prologue): Update.
19299         (spu_expand_epilogue): Update.
19300         * config/sparc/sparc.md: Update.
19301         * config/sparc/sparc.c (eligible_for_return_delay): Update.
19302         (sparc_tls_got): Update.
19303         (legitimize_pic_address): Update.
19304         (sparc_emit_call_insn): Update.
19305         (sparc_expand_prologue): Update.
19306         (output_return): Update.
19307         (print_operand): Update.
19308         (sparc_function_ok_for_sibcall): Update.
19309         * config/sparc/sparc.h (EXIT_IGNORE_STACK): Update.
19310         * config/m32r/m32r.md: Update.
19311         * config/m32r/m32r.c (MUST_SAVE_RETURN_ADDR): Update.
19312         (m32r_compute_frame_size): Update.
19313         (m32r_expand_prologue): Update.
19314         (m32r_expand_epilogue): Update.
19315         (m32r_legitimize_pic_address): Update.
19316         * config/m32r/m32r.h (FRAME_POINTER_REQUIRED): Update.
19317         * config/i386/linux.h (SUBTARGET_FRAME_POINTER_REQUIRED): Update.
19318         * config/i386/i386.c (ix86_frame_pointer_required): Update.
19319         (gen_push): Update.
19320         (ix86_save_reg): Update.
19321         (ix86_compute_frame_layout): Update.
19322         (ix86_expand_prologue): Update.
19323         (ix86_expand_epilogue): Update.
19324         * config/sh/sh.c (output_stack_adjust): Update.
19325         (calc_live_regs): Update.
19326         (sh5_schedule_saves): Update.
19327         (sh_expand_prologue): Update.
19328         (sh_expand_epilogue): Update.
19329         (sh_setup_incoming_varargs): Update.
19330         (sh_allocate_initial_value): Update.
19331         (sh_get_pr_initial_val): Update.
19332         * config/sh/sh.h (SHMEDIA_REGS_STACK_ADJUST): Update.
19333         * config/sh/sh.md (label:): Update.
19334         * config/avr/avr.c (out_movhi_mr_r): Update.
19335         * config/crx/crx.h (enum): Update.
19336         * config/xtensa/xtensa.h (along): Update.
19337         * config/stormy16/stormy16.c Update.
19338         (xstormy16_compute_stack_layout): Update.
19339         * config/fr30/fr30.c (MUST_SAVE_RETURN_POINTER): Update.
19340         (fr30_expand_prologue): Update.
19341         * config/cris/cris.c (cris_conditional_register_usage): Update.
19342         (cris_reg_saved_in_regsave_area): Update.
19343         (cris_initial_frame_pointer_offset): Update.
19344         (cris_simple_epilogue): Update.
19345         (cris_expand_prologue): Update.
19346         (cris_expand_epilogue): Update.
19347         (cris_expand_pic_call_address): Update.
19348         (cris_asm_output_symbol_ref): Update.
19349         (cris_asm_output_label_ref): Update.
19350         * config/cris/cris.md Update.
19351         * config/iq2000/iq2000.c (compute_frame_size): Update.
19352         (iq2000_expand_epilogue): Update.
19353         * config/mt/mt.h (save_direction): Update.
19354         * config/mn10300/mn10300.c (mn10300_function_value): Update.
19355         * config/ia64/ia64.c (ia64_compute_frame_size): Update.
19356         (ia64_secondary_reload_class): Update.
19357         * config/m68k/m68k.c (m68k_save_reg): Update.
19358         (m68k_expand_prologue): Update.
19359         (m68k_expand_epilogue): Update.
19360         (legitimize_pic_address): Update.
19361         * config/rs6000/rs6000.c (rs6000_got_register): Update.
19362         (first_reg_to_save): Update.
19363         (first_altivec_reg_to_save): Update.
19364         (compute_vrsave_mask): Update.
19365         (compute_save_world_info): Update.
19366         (rs6000_stack_info): Update.
19367         (spe_func_has_64bit_regs_p): Update.
19368         (rs6000_ra_ever_killed): Update.
19369         (rs6000_emit_eh_reg_restore): Update.
19370         (rs6000_emit_allocate_stack): Update.
19371         (rs6000_emit_prologue): Update.
19372         (rs6000_emit_epilogue): Update.
19373         (rs6000_output_function_epilogue): Update.
19374         (output_profile_hook): Update.
19375         (rs6000_elf_declare_function_name): Update.
19376         * config/rs6000/rs6000.h (rs6000_args): Update.
19377         * config/rs6000/rs6000.md: Update.
19378         * config/mcore/mcore.c (mcore_expand_prolog): Update.
19379         * config/arc/arc.c (arc_output_function_epilogue): Update.
19380         * config/arc/arc.h (FRAME_POINTER_REQUIRED): Update.
19381         * config/darwin.c (machopic_function_base_name): Update.
19382         * config/score/score3.c (score3_compute_frame_size): Update.
19383         (rpush): Update.
19384         (rpop): Update.
19385         (score3_epilogue): Update.
19386         * config/score/score7.c (score7_compute_frame_size): Update.
19387         (score7_prologue): Update.
19388         (score7_epilogue): Update.
19389         * config/score/score.h (FRAME_POINTER_REQUIRED): Update.
19390         * config/arm/linux-elf.h (SUBTARGET_FRAME_POINTER_REQUIRED): Update.
19391         * config/arm/arm.c (use_return_insn): Update.
19392         (require_pic_register): Update.
19393         (arm_load_pic_register): Update.
19394         (arm_compute_save_reg0_reg12_mask): Update.
19395         (arm_compute_save_reg_mask): Update.
19396         (thumb1_compute_save_reg_mask): Update.
19397         (output_return_instruction): Update.
19398         (arm_output_function_prologue): Update.
19399         (arm_output_epilogue): Update.
19400         (arm_get_frame_offsets): Update.
19401         (arm_expand_prologue): Update.
19402         (thumb_pushpop): Update.
19403         (thumb_exit): Update.
19404         (thumb1_expand_prologue): Update.
19405         (thumb1_expand_epilogue): Update.
19406         (arm_unwind_emit): Update.
19407         (arm_output_fn_unwind): Update.
19408         * config/arm/arm.h (FRAME_POINTER_REQUIRED): Update.
19409         * config/arm/arm.md: Update.
19410         * config/pa/pa.md: Update.
19411         * config/pa/pa.c (legitimize_pic_address): Update.
19412         (compute_frame_size): Update.
19413         (hppa_expand_prologue): Update.
19414         (hppa_expand_epilogue): Update.
19415         (borx_reg_operand): Update.
19416         * config/pa/pa.h (FRAME_POINTER_REQUIRED): Update.
19417         (HARD_REGNO_RENAME_OK): Update.
19418         * config/mips/mips.c (mips_global_pointer): Update.
19419         (mips_save_reg_p): Update.
19420         (mips_compute_frame_info): Update.
19421         (mips_frame_pointer_required): Update.
19422         (mips_expand_prologue): Update.
19423         (mips_expand_epilogue): Update.
19424         (mips_can_use_return_insn): Update.
19425         (mips_reorg_process_insns): Update.
19426         * config/v850/v850.c (compute_register_save_size): Update.
19427         * config/mmix/mmix.h (FRAME_POINTER_REQUIRED): Update.
19428         * config/mmix/mmix.c (along): Update.
19429         (mmix_expand_epilogue): Update.
19430         * config/bfin/bfin.c (legitimize_pic_address): Update.
19431         (must_save_p): Update.
19432         (stack_frame_needed_p): Update.
19433         (add_to_reg): Update.
19434         (bfin_expand_prologue): Update.
19435         * stmt.c (expand_asm_operands): Update.
19436         * reload1.c (reload): Update.
19437         (init_elim_table): Update.
19438
19439 2008-04-25  Bob Wilson  <bob.wilson@acm.org>
19440
19441         * optabs.c (expand_float): Fix REG_EQUAL for UNSIGNED_FLOAT libcall.
19442
19443 2008-04-25  H.J. Lu  <hongjiu.lu@intel.com>
19444
19445         * config/i386/sse.md (mov<mode>): Replace SSEMODEI with SSEMODE.
19446         (*mov<mode>_internal): Likewise.  Support V4SF and V2DF.
19447         (mov<mode>): Removed.
19448         (*movv4sf_internal): Likewise.
19449         (*movv2df_internal): Likewise.
19450
19451 2008-04-25  Pompapathi V Gadad <Pompapathi.V.Gadad@nsc.com>
19452
19453         * config.gcc (crx-*-elf): Remove deprecation.
19454
19455 2008-04-25  Danny Smith  <dannysmith@users.sourceforge.net>
19456
19457         * config/i386/cygming-crtend.c (register_frame_ctor): Register
19458         __gcc_deregister_frame with atexit.
19459         (deregister_frame_dtor): Remove.
19460
19461 2008-04-24  Nathan Froyd  <froydnj@codesourcery.com>
19462             Nathan Sidwell  <nathan@codesourcery.com>
19463
19464         * config/rs6000/rs6000.opt (mspe): Remove Var property.
19465         (misel): Likewise.
19466         * config/rs6000/rs6000.h (rs6000_spe): Declare.
19467         (rs6000_isel): Likewise.
19468         * config/rs6000/rs6000.c (rs6000_spe): New variable.
19469         (rs6000_isel): New variable.
19470         (rs6000_handle_option): Handle OPT_mspe and OPT_misel.
19471
19472 2008-04-24  Jakub Jelinek  <jakub@redhat.com>
19473
19474         PR c++/35758
19475         * c-common.c (handle_vector_size_attribute): Call
19476         lang_hooks.types.reconstruct_complex_type instead of
19477         reconstruct_complex_type.
19478         * config/rs6000/rs6000.c (rs6000_handle_altivec_attribute): Likewise.
19479         * config/spu/spu.c (spu_handle_vector_attribute): Likewise.
19480         * langhooks.h (struct lang_hooks_for_types): Add
19481         reconstruct_complex_type hook.
19482         * langhooks-def.h (LANG_HOOKS_RECONSTRUCT_COMPLEX_TYPE): Define.
19483         (LANG_HOOKS_FOR_TYPES_INITIALIZER): Add it.
19484
19485 2008-04-24  Richard Guenther  <rguenther@suse.de>
19486
19487         * c-common.h (check_builtin_function_arguments): Declare.
19488         * c-common.c (validate_nargs): New function.
19489         (check_builtin_function_arguments): Likewise.
19490         * c-typeck.c (build_function_call): Call
19491         check_builtin_function_arguments.
19492         * builtins.c (fold_builtin_classify): Remove error reporting code.
19493         (fold_builtin_unordered_cmp): Likewise.
19494         (fold_builtin_1): Likewise.
19495         (fold_builtin_n): Likewise.
19496
19497 2008-04-24  Jakub Jelinek  <jakub@redhat.com>
19498
19499         PR tree-optimization/36008
19500         * fold-const.c (try_move_mult_to_index): If s == NULL, divide
19501         the original op1, rather than delta by step.
19502
19503 2008-04-22  Antoniu Pop  <antoniu.pop@gmail.com>
19504             Sebastian Pop  <sebastian.pop@amd.com>
19505
19506         * tree-parloops.c (take_address_of, eliminate_local_variables_1,
19507         eliminate_local_variables_stmt, eliminate_local_variables,
19508         separate_decls_in_loop_name, separate_decls_in_loop_stmt,
19509         separate_decls_in_loop, gen_parallel_loop): Make them work on a region
19510         of code delimited by two edges in the CFG.
19511         (separate_decls_in_loop_name): Renamed separate_decls_in_region_name.
19512         (separate_decls_in_loop_stmt): Renamed separate_decls_in_region_stmt.
19513         (separate_decls_in_loop): Renamed separate_decls_in_region.  Isolate
19514         the case of parallelisation of reductions.
19515         (expr_invariant_in_region_p): New.
19516
19517         * tree-flow.h (gather_blocks_in_sese_region): Declared.
19518         * tree-cfg.c (gather_blocks_in_sese_region): Extern.
19519
19520 2008-04-24  Ira Rosen  <irar@il.ibm.com>
19521             Richard Guenther  <rguenther@suse.de>
19522
19523         PR tree-optimization/36034
19524         * tree-vect-analyze.c (vect_analyze_group_access): SLP is
19525         incapable of dealing with loads with gaps.
19526
19527 2008-04-24  Rafael Espíndola  <espindola@google.com>
19528
19529         * tree-flow.h (vrp_evaluate_conditional): Change signature.
19530         * tree-ssa-propagate.c (fold_predicate_in): Update call to
19531         vrp_evaluate_conditional.
19532         * tree-vrp.c (vrp_evaluate_conditional_warnv): Remove.
19533         (vrp_evaluate_conditional): Split the cond argument.
19534         (vrp_visit_cond_stmt): Use vrp_evaluate_conditional_warnv_with_ops.
19535         (simplify_stmt_for_jump_threading): Update call to
19536         vrp_evaluate_conditional.
19537
19538 2008-04-24  Ira Rosen  <irar@il.ibm.com>
19539
19540         PR tree-optimization/35982
19541         * tree-vect-analyze.c (vect_check_interleaving): Check that the
19542         interleaved data-refs are of the same type.
19543
19544 2008-04-24  Danny Smith  <dannysmith@users.net>
19545
19546         * c-format.c (check_format_info_main): Use strncmp rather than a
19547         magic prefix to handle multichar length specs.
19548         * config/i386/msformat-c.c (format_length_info ms_printf_length_specs):
19549         Don't prefix "I64" and "I32" with '\0'.
19550
19551 2008-04-24  Jakub Jelinek  <jakub@redhat.com>
19552
19553         PR target/36015
19554         * config/i386/i386.c (init_cumulative_args): Don't pass anything
19555         in registers for -m32 only if stdarg_p (fntype).
19556
19557 2008-04-24  Uros Bizjak  <ubizjak@gmail.com>
19558
19559         PR rtl-optimization/36006
19560         * expmed.c (store_fixed_bit_field): Copy op0 rtx before moving
19561         temp to op0 in order to avoid invalid rtx sharing.
19562
19563 2008-04-23  Paolo Bonzini  <bonzini@gnu.org>
19564
19565         * tree-cfg.c (verify_expr): Check with is_gimple_address.  Don't
19566         check TREE_INVARIANT.
19567         * tree-gimple.c (is_gimple_address): New.
19568         (is_gimple_invariant_address): Simplify using decl_address_invariant_p.
19569         * tree-gimple.h (is_gimple_address): New.
19570         * tree.h (decl_address_invariant_p): New.
19571         * tree.c (make_node_stat): Don't set TREE_INVARIANT.
19572         (build_string): Likewise.
19573         (decl_address_invariant_p): New, from is_gimple_invariant_address.
19574         (tree_invariant_p_1): Likewise.
19575         (save_expr): Use it.
19576         (tree_invariant_p): New.
19577         (skip_simple_arithmetic): Use it.
19578         (stabilize_reference_1): Use it.
19579         (recompute_tree_invariant_for_addr_expr): Don't update TREE_INVARIANT,
19580         simplify.
19581         (build1_stat): Drop code to compute TREE_INVARIANT.
19582         (build2_stat): Drop code to compute TREE_INVARIANT.
19583         (build3_stat): Drop code to compute TREE_INVARIANT.
19584         (build4_stat): Drop code to compute TREE_INVARIANT.
19585         (build5_stat): Drop code to compute TREE_INVARIANT.
19586         (build7_stat): Drop code to compute TREE_INVARIANT.
19587         (merge_dllimport_decl_attributes): Don't mention TREE_INVARIANT.
19588         * tree.h (struct tree_base): Remove invariant_flag.
19589         (TREE_INVARIANT): Remove.
19590         * builtins.c (build_string_literal): Don't set TREE_INVARIANT.
19591         (fold_builtin_expect): Check TREE_CONSTANT.
19592         * tree-ssa-ccp.c (fold_stmt_r): Adjust comment.
19593         * c-tree.h (c_expr_to_decl): Drop third parameter.
19594         * c-typeck.c (build_external_ref): Don't set TREE_INVARIANT.
19595         (build_c_cast): Don't set TREE_INVARIANT.
19596         (pop_init_level): Don't set TREE_INVARIANT.
19597         (c_objc_common_truthvalue_conversion): Don't set TREE_INVARIANT.
19598         * gimplify.c (gimplify_init_ctor_preeval): Add assertion, test
19599         TREE_CONSTANT.
19600         (gimplify_init_constructor): Don't set TREE_INVARIANT.
19601         (gimplify_addr_expr): Adjust comment.
19602         * tree-mudflap.c (mf_build_string):
19603         * print-tree.c (print_node): Don't print TREE_INVARIANT.
19604         * tree-nested.c (convert_nonlocal_reference): Adjust comment.
19605         * c-common.c (fix_string_type): Don't set TREE_INVARIANT.
19606         * langhooks-def.h (lhd_expr_to_decl): Drop third parameter.
19607         * langhooks.c (lhd_expr_to_decl): Drop third parameter.
19608         * langhooks.h (struct lang_hooks): Drop third parameter from
19609         expr_to_decl.
19610
19611 2008-04-23  Richard Guenther  <rguenther@suse.de>
19612
19613         PR tree-optimization/27799
19614         PR tree-optimization/32921
19615         PR tree-optimization/32624
19616         * tree-ssa-structalias.c (merge_smts_into): Only merge the
19617         SMTs aliases and the tag itself into the solution.
19618         * tree-ssa-alias.c (compute_flow_sensitive_aliasing): Do not
19619         merge the points-to solution back into the SMT aliases.
19620         (may_alias_p): Use alias_set_subset_of instead of
19621         aliases_conflict_p.  A pointer which points to
19622         memory with alias set zero may access any variable.
19623
19624 2008-04-23  Richard Guenther  <rguenther@suse.de>
19625
19626         * alias.c (alias_set_subset_of): Correctly handle asking
19627         if zero is a subset of an alias set with zero child.
19628         * tree-ssa-alias.c (have_common_aliases_p): Simplify logic.
19629         (compute_flow_insensitive_aliasing): Correctly walk all
19630         pointers.  Do not unnecessarily union sets.
19631
19632 2008-04-23  Richard Guenther  <rguenther@suse.de>
19633
19634         PR middle-end/36021
19635         * c-common.c (handle_alloc_size_attribute): Use type_num_arguments.
19636
19637 2008-04-22  Tomas Bily  <tbily@suse.cz>
19638
19639         * tree-cfg.c (verify_expr): Check for NON_LVALUE_EXPR as
19640         unreachable case.
19641         * tree-vrp.c (extract_range_from_unary_expr): Removed unused
19642         NON_LVALUE_EXPR.
19643         * tree-ssa-threadedge.c (simplify_control_stmt_condition): Likewise.
19644         * tree-ssa-structalias.c (get_constraint_for): Likewise.
19645         * tree-inline.c (estimate_num_insns_1): Likewise.
19646         * varasm.c (const_hash_1, compare_constant, copy_constant)
19647         (compute_reloc_for_constant, output_addressed_constants): Likewise.
19648         * emit-rtl.c (component_ref_for_mem_expr)
19649         (set_mem_attributes_minus_bitpos): Likewise.
19650         * expr.c (highest_pow2_factor, expand_expr_real_1, )
19651         (is_aligning_offset): Likewise.
19652         * dwarf2out.c (loc_descriptor_from_tree_1, add_bound_info): Likewise.
19653         * tree-ssa-loop-ivopts.c (may_be_nonaddressable_p): Likewise.
19654         * dojump.c (do_jump): Likewise.
19655         * builtins.c (get_pointer_alignment, get_memory_rtx)
19656         (integer_valued_real_p, fold_builtin_next_arg): Likewise.
19657         * tree-scalar-evolution.c (instantiate_parameters_1): Likewise.
19658
19659 2008-04-23  Jakub Jelinek  <jakub@redhat.com>
19660
19661         PR rtl-optimization/36017
19662         * builtins.c (expand_errno_check): Clear CALL_EXPR_TAILCALL before
19663         expanding the library call.
19664
19665 2008-04-22  Ian Lance Taylor  <iant@google.com>
19666
19667         * fold-const.c (pointer_may_wrap_p): Call int_size_in_bytes rather
19668         than size_in_bytes.
19669
19670 2008-04-22  Pat Haugen  <pthaugen@us.ibm.com>
19671
19672         * config/rs6000/rs6000.c (rs6000_register_move_cost): Increase cost
19673         of LR/CTR moves for Power6.
19674
19675 2008-04-22  Kenneth Zadeck  <zadeck@naturalbridge.com>
19676
19677         PR middle-end/36003
19678         * passes.c (init_optimization_passes): Remove
19679         pass_fast_rtl_byte_dce.
19680
19681 2008-04-22  Uros Bizjak  <ubizjak@gmail.com>
19682
19683         PR target/29096
19684         * config/i386/xmmintrin.h (_mm_cvtpi16_ps): Rearrange calls to
19685         builtin functions to generate faster code.
19686         (_mm_cvtpu16_ps): Ditto.
19687         (_mm_cvtpi32x2_ps): Ditto.
19688
19689 2008-04-22  Nick Clifton  <nickc@redhat.com>
19690
19691         * common.opt (ftree-loop-distribution): Add Optimization
19692         attribute.
19693
19694         * config/frv/frv.c (frv_stack_info): Use crtl instead of cfun.
19695         (frv_expand_builtin_va_start): Likewise.
19696
19697         * config/arm/arm.c (thumb_find_work_register): Fix location of
19698         argument register count.
19699
19700 2008-04-22  Maxim Kuvyrkov  <maxim@codesourcery.com>
19701
19702         Support scheduling for ColdFire V1 and V3 microarchitecture.
19703         Improve scheduling of multiplication instructions.
19704
19705         * config/m68k/m68k.md (cpu): Add cfv1 and cfv3.  Rename cf_v2 to cfv1.
19706         (mac): New instruction attribute.
19707         * config/m68k/m68k.c (override_options): Handle cfv1, cfv3 and mac.
19708         (m68k_sched_mac): New variable.
19709         (m68k_sched_attr_type2, m68k_sched_md_init_global): Update.
19710         Handle cfv1 and cfv3.
19711         (max_insn_size): New static variable.
19712         (struct _sched_ib): New type.
19713         (sched_ib): New static variable.
19714         (sched_ib_size, sched_ib_filled, sched_ib_insn): Convert variables
19715         to fields of 'struct _sched_ib sched_ib'.  Update all uses.
19716         (m68k_sched_variable_issue): Add modeling of cfv3 instruction buffer.
19717         Update.
19718         (m68k_sched_md_init_global, m68k_sched_md_finish_global,
19719         m68k_sched_md_init, m68k_sched_md_finish): Handle cfv1 and cfv3.  Init
19720         new variables.  Update.
19721         (m68k_sched_dfa_pre_advance_cycle, m68k_sched_dfa_post_advance_cycle):
19722         Add modeling of cfv3 instruction buffer.  Update.
19723         * config/m68k/m68k-protos.h (m68k_sched_mac): Declare.
19724         * config/m68k/m68k.h (TUNE_CFV3): New macro.
19725         * config/m68k/cf.md: Change substrings 'cf_v2' to 'cfv12' or 'cfv123'.
19726         (cf_* reservations): Rename to cfv12 or cfv123 to indicate cores
19727         a particular reservation applies to.
19728         (type2): Reorganize attribute values.  Rename alu to alu_reg,
19729         alu_l to alu, move_l to omove.  Join move to alu.  Split mul
19730         to mul_l and mul_w.
19731         (cf_ib_*): Simplify description of instruction buffer.
19732         (cf_ib_w0, cf_ib_w4, cf_ib_w5, cf_ib_w6): Remove.
19733         (cf_mem): Split into cf_mem1 and cf_mem2.
19734         (cf_v2_move_??): Rename to cfv12_alu_??.
19735         (cf_v2_move_l_??): Rename to cfv12_omove_??.
19736         (cf_v2_mul_??): Remove reservations.
19737         (cfv12_mul_l_??, cfv12_mul_w_??, cfv12_mac_w_??, cfv12_mac_l_??,
19738         cfv12_emac_??, cfv12_emac_w_i0): New reservations.
19739         (cfv12_rts, cfv12_call, cfv12_bcc, cfv12_bra, cfv12_jmp): Move to
19740         appropriate place.
19741         (cfv3_alu_10, cfv3_omove_10, cfv3_alu_i0, cfv3_omove_i0, cfv3_alu_01,
19742         cfv3_alu_0i, cfv3_alu_11, cfv3_omove_11, cfv3_alu_i1, cfv3_omove_i1,
19743         cfv3_alu_1i, cfv3_omove_1i, cfv3_pea_11, cfv3_pea_i1, cfv3_mul_w_10,
19744         cfv3_mul_l_10, cfv3_mul_w_i0, cfv3_mac_w_10, cfv3_mac_l_10,
19745         cfv3_mac_w_i0, cfv3_emac_10, cfv3_emac_w_i0, cfv3_rts, cfv3_call,
19746         cfv3_bcc, cfv3_bra, cfv3_jmp): New reservations.
19747         (cfv3_*_1, cfv3_*_2, cfv3_*_3): New instruction reservations that are
19748         expansions of the above reservations for instructions of sizes
19749         1, 2 and 3 words.
19750
19751 2008-04-22  Maxim Kuvyrkov  <maxim@codesourcery.com>
19752
19753         * rtl-factoring.c (collect_patterns_seqs): Handle CC0 targets.
19754
19755 2008-04-21  Adam Nemet  <anemet@caviumnetworks.com>
19756
19757         * coverage.c: Include tree-pass.h.
19758         (coverage_counter_alloc): Print da_file_name to the dump file.
19759
19760 2008-04-21  Kenneth Zadeck  <zadeck@naturalbridge.com>
19761
19762         * sbitmap.c (sbitmap_range_empty_p): New function.
19763         * sbitmap.h (sbitmap_range_empty_p): New function.
19764         * bitmap.h: Now includes obstack.h.
19765
19766 2008-04-21  Richard Sandiford  <rsandifo@nildram.co.uk>
19767             Kenneth Zadeck  <zadeck@naturalbridge.com>
19768
19769         * dbgcnt.def (ra_byte_scan): Added.
19770         * dbgcnt.c (dbg_cnt): Added code to print message to dump_file
19771         when the last hit happens for a counter.
19772         * timevar.def (TV_DF_BYTE_LR): New variable.
19773         * tree-pass.h (pass_fast_rtl_byte_dce): New pass.
19774         * passes.c (pass_fast_rtl_byte_dce): New pass.
19775         * fwprop.c (update_df): Added mode to call df_ref_create.
19776         Renamed DF_REF_WIDTH and DF_REF_OFFSET to DF_REF_EXTRACT_WIDTH and
19777         DF_REF_EXTRACT_OFFSET.
19778         * df.h (DF_BYTE_LR, DF_BYTE_LR_BB_INFO, DF_BYTE_LR_IN,
19779         DF_BYTE_LR_OUT, df_byte_lr): New macro.
19780         (df_mm): New enum.
19781         (df_ref_extract): Added mode field.
19782         (DF_REF_WIDTH, DF_REF_OFFSET) Renamed to DF_REF_EXTRACT_WIDTH and
19783         DF_REF_EXTRACT_OFFSET.
19784         (DF_REF_EXTRACT_MODE): New macro.
19785         (df_byte_lr_bb_info): New structure.
19786         (df_print_byte_regset, df_compute_accessed_bytes,
19787         df_byte_lr_add_problem, df_byte_lr_get_regno_start,
19788         df_byte_lr_get_regno_len, df_byte_lr_simulate_defs,
19789         df_byte_lr_simulate_uses,
19790         df_byte_lr_simulate_artificial_refs_at_top,
19791         df_byte_lr_simulate_artificial_refs_at_end,
19792         df_compute_accessed_bytes): New function.
19793         (df_ref_create): Add parameter.
19794         (df_byte_lr_get_bb_info): New inline function.
19795         * df-scan.c (df_ref_record, df_uses_record,
19796         df_ref_create_structure): Added mode parameter.
19797         (df_ref_create, df_notes_rescan, df_ref_record, df_def_record_1,
19798         df_defs_record, df_uses_record, df_get_conditional_uses,
19799         df_get_call_refs, df_insn_refs_collect, df_bb_refs_collect,
19800         df_entry_block_defs_collect, df_exit_block_uses_collect):
19801         Added mode parameter to calls to df_ref_record, df_uses_record,
19802         df_ref_create_structure.
19803         (df_ref_equal_p, df_ref_compare): Added test for modes.
19804         (df_ref_create_structure): Added code to set mode.  Renamed
19805         DF_REF_WIDTH and DF_REF_OFFSET to DF_REF_EXTRACT_WIDTH and
19806         DF_REF_EXTRACT_OFFSET.
19807         * df-core.c (df_print_byte_regset): New function.
19808         * df-byte-scan.c: New file.
19809         * df-problems.c (df_rd_transfer_function): Removed unnecessary
19810         calls to BITMAP_FREE.
19811         (df_byte_lr_problem_data, df_problem problem_BYTE_LR): New structure.
19812         (df_byte_lr_get_regno_start, df_byte_lr_get_regno_len,
19813         df_byte_lr_set_bb_info, df_byte_lr_free_bb_info,
19814         df_byte_lr_check_regs, df_byte_lr_expand_bitmap,
19815         df_byte_lr_alloc, df_byte_lr_reset, df_byte_lr_bb_local_compute,
19816         df_byte_lr_local_compute, df_byte_lr_init,
19817         df_byte_lr_confluence_0, df_byte_lr_confluence_n,
19818         df_byte_lr_transfer_function, df_byte_lr_free,
19819         df_byte_lr_top_dump, df_byte_lr_bottom_dump,
19820         df_byte_lr_add_problem, df_byte_lr_simulate_defs,
19821         df_byte_lr_simulate_uses,
19822         df_byte_lr_simulate_artificial_refs_at_top,
19823         df_byte_lr_simulate_artificial_refs_at_end): New function.
19824         * dce.c (byte_dce_process_block): New function.
19825         (dce_process_block): au is now passed in rather than computed
19826         locally.  Changed loops that look at artificial defs to not look
19827         for conditional or partial ones, because there never are any.
19828         (fast_dce): Now is able to drive byte_dce_process_block or
19829         dce_process_block depending on the kind of dce being done.
19830         (rest_of_handle_fast_dce): Add parameter to fast_dce.
19831         (rest_of_handle_fast_byte_dce): New function.
19832         (rtl_opt_pass pass_fast_rtl_byte_dce): New pass.
19833         * Makefile.in (df-byte-scan.o, debugcnt.o): Added dependencies.
19834
19835 2008-04-21  Daniel Franke  <franke.daniel@gmail.com>
19836
19837         PR fortran/35019
19838         * gcc.h: Added fortran options that take arguments to
19839         DEFAULT_SWITCH_TAKES_ARG and DEFAULT_WORD_SWITCH_TAKES_ARG
19840         macros.
19841
19842 2008-04-20  Eric Botcazou  <ebotcazou@adacore.com>
19843
19844         * tree-sra.c (sra_walk_expr) <VIEW_CONVERT_EXPR>: Disable
19845         scalarization if on the LHS and not a full access.
19846
19847 2008-04-20  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
19848
19849         * Makefile.in (s-gtyp-input): Remove tmp-gi.list before writing it.
19850
19851 2008-04-18  Rafael Espíndola  <espindola@google.com>
19852
19853         * tree-vrp.c (find_case_label_index): Fix the binary search.
19854         (find_case_label_range): New.
19855         (vrp_visit_switch_stmt): Use find_case_label_range.
19856         (simplify_switch_using_ranges): Use find_case_label_range.
19857
19858 2008-04-18  Eric Botcazou  <ebotcazou@adacore.com>
19859
19860         * gimplify.c (gimplify_modify_expr_rhs) <COND_EXPR>: Gimplify the LHS
19861         using the is_gimple_lvalue predicate instead of is_gimple_min_lval.
19862
19863 2008-04-18  Tom Tromey  <tromey@redhat.com>
19864
19865         PR libcpp/15500:
19866         * doc/cpp.texi (Implementation-defined behavior): Mention
19867         -finput-charset.
19868
19869 2008-04-18  Ian Lance Taylor  <iant@google.com>
19870
19871         * fold-const.c (pointer_may_wrap_p): New static function.
19872         (fold_comparison): Add another test for pointer overflow.  Use
19873         pointer_may_wrap_p to disable some false positives.
19874
19875 2008-04-18  Kris Van Hees <kris.van.hees@oracle.com>
19876
19877         * c-common.c (CHAR16_TYPE, CHAR32_TYPE): New macros.
19878         (fname_as_string): Match updated cpp_interpret_string prototype.
19879         (fix_string_type): Support char16_t* and char32_t*.
19880         (c_common_nodes_and_builtins): Add char16_t and char32_t (and
19881         derivative) nodes.  Register as builtin if C++0x.
19882         (c_parse_error): Support CPP_CHAR{16,32}.
19883         * c-common.h (RID_CHAR16, RID_CHAR32): New elements.
19884         (enum c_tree_index) <CTI_CHAR16_TYPE, CTI_SIGNED_CHAR16_TYPE,
19885         CTI_UNSIGNED_CHAR16_TYPE, CTI_CHAR32_TYPE, CTI_SIGNED_CHAR32_TYPE,
19886         CTI_UNSIGNED_CHAR32_TYPE, CTI_CHAR16_ARRAY_TYPE,
19887         CTI_CHAR32_ARRAY_TYPE>: New elements.
19888         (char16_type_node, signed_char16_type_node, unsigned_char16_type_node,
19889         char32_type_node, signed_char32_type_node, char16_array_type_node,
19890         char32_array_type_node): New defines.
19891         * c-lex.c (cb_ident): Match updated cpp_interpret_string prototype.
19892         (c_lex_with_flags): Support CPP_CHAR{16,32} and CPP_STRING{16,32}.
19893         (lex_string): Support CPP_STRING{16,32}, match updated
19894         cpp_interpret_string and cpp_interpret_string_notranslate prototypes.
19895         (lex_charconst): Support CPP_CHAR{16,32}.
19896         * c-parser.c (c_parser_postfix_expression): Support CPP_CHAR{16,32}
19897         and CPP_STRING{16,32}.
19898
19899 2008-04-18  Paolo Bonzini  <bonzini@gnu.org>
19900
19901         PR bootstrap/35457
19902         * aclocal.m4: Regenerate.
19903         * configure: Regenerate.
19904
19905 2008-04-18  Jan Hubicka  <jh@suse.cz>
19906
19907         * except.c (dw2_size_of_call_site_table,
19908         sjlj_size_of_call_site_table): Use vector API for call_site_record.
19909
19910         * cgraphbuild.c (build_cgraph_edges): Update.
19911         * tree-pass.h: Update comment.
19912         * final.c (leaf_function_p): Update.
19913         (leaf_renumber_regs): Update.
19914         (rest_of_clean_state): Update.
19915         * omp-low.c (expand_omp_parallel): Update.
19916         * ipa-reference.c (analyze_function): Update.
19917         * reorg.c (find_end_label): Update.
19918         (optimize_skip): Update.
19919         (fill_simple_delay_slots): Update.
19920         (fill_simple_delay_slots): Update.
19921         (make_return_insns): Update.
19922         (dbr_schedule): Update.
19923         * gimple-low.c (record_vars_into): Update.
19924         * cfgbuild.c (make_edges): Update.
19925         * function.c (assign_stack_local): Update.
19926         (assign_parm_adjust_stack_rtl): Update.
19927         (locate_and_pad_parm): Update.
19928         (allocate_struct_function): Do not initialize stack_alignment_needed
19929         and preferred_stack_boundary here.
19930         (stack_protect_prologue): Update.
19931         (stack_protect_epilogue): Update.
19932         (expand_function_start): Initialize stack_alignment_needed,
19933         preferred_stack_boundary and max_jumptable_ents.
19934         (expand_function_end): Update.
19935         (free_after_compilation): Do not NULLify epilogue_delay_list.
19936         * function.h (struct rtl_data): Add stack_protect_guard,
19937         stack_alignment_needed,
19938         preferred_stack_boundary, epilogue_delay_list.
19939         (struct function): Remove value_histograms, stack_alignment_needed,
19940         preferred_stack_boundary, epilogue_delay_list, max_jumptable_ents,
19941         last_label_uid,
19942         unexpanded_var_list, stack_protect_guard.
19943         (current_function_epilogue_delay_list): Remove.
19944         * ipa-type-escape.c (analyze_function): Update.
19945         * gimplify.c (pop_gimplify_context): Update comment.
19946         * calls.c (expand_call): Update.
19947         (emit_library_call_value_1): Update.
19948         * except.c (set_nothrow_function_flags): Update.
19949         * cfgexpand.c (get_decl_align_unit): Update.
19950         (create_stack_guard): Update.
19951         (estimated_stack_frame_size): Update.
19952         (expand_used_vars): Update.
19953         (tree_expand_cfg): Free histogram earliers, init expansion variables.
19954         * explow.c (allocate_dynamic_stack_space): Update.
19955         * tree-ssa-live.c (remove_unused_locals): Update.
19956         * varasm.c (mark_constant_pool): Update.
19957         * tree-inline.c (remap_decls): Update.
19958         (initialize_cfun): Update.
19959         (declare_return_variable): Update.
19960         (inline_forbidden_p): Update.
19961         (expand_call_inline): Update.
19962         (declare_inline_vars): Update.
19963         (tree_function_versioning): Update.
19964         * tree-flow.h (value_histograms): New.
19965         (VALUE_HISTOGRAMS): New macro.
19966         * basic-block.h (control_flow_graph): Add max_jumptable_ents,
19967         last_label_uid.
19968         * tree-cfg.c (set_bb_for_stmt): Update.
19969         (replace_by_duplicate_decl): Update.
19970         (move_block_to_fn): Update.
19971         (new_label_mapper): Update.
19972         (dump_function_to_file): Update.
19973         * ipa-struct-reorg.c (build_data_structure): Update.
19974         * cfgrtl.c (print_rtl_with_bb): Update.
19975         * reload1.c (reload): Update.
19976         (reload): Update.
19977         * config/i386/i386.c (setup_incoming_varargs_64,
19978         ix86_compute_frame_layout): Update.
19979         * config/arc/arc.c (arc_output_function_epilogue): Update.
19980
19981 2008-04-18  Marius Strobl <marius@FreeBSD.org>
19982
19983         * gthr-posix.h (__gthread_active_p): Use the Solaris implementation
19984         for FreeBSD as well.
19985         * gthr-posix95.h: Likewise.
19986
19987 2008-04-17  Richard Sandiford  <rsandifo@nildram.co.uk>
19988
19989         PR rtl-optimization/35838
19990         * dse.c (find_shift_sequence): Use subreg_lowpart_offset to work
19991         out the byte offset of the first subreg.
19992
19993 2008-04-17  Uros Bizjak  <ubizjak@gmail.com>
19994
19995         * config/i386/i386.md (addti3 splitter): Pass arrays of 3 operands
19996         to split_ti instead of three separate calls with single member arrays.
19997         (subti3 splitter): Ditto.
19998         (adddi3 splitter): Ditto with split_di.
19999         (subdi3 splitter): Ditto.
20000         (negti2 splitter): Pass arrays of 2 operands to split_ti instead of
20001         two separate calls with single member arrays.  Swap match_dup
20002         operands 1 and 2 to better fit into the array.
20003         (negdi2 splitter): Ditto with split_di.
20004         (movdfcc splitter):  Pass arrays of 2 operands to split_di instead of
20005         two separate calls with single member arrays.  Swap match_dup operands
20006         6 and 7 to better fit into the array.
20007
20008 2008-04-17  H.J. Lu  <hongjiu.lu@intel.com>
20009
20010         * config/i386/i386.c (sse_builtin_type): New.
20011         (bdesc_sse_args): Likewise.
20012         (bdesc_sse_3arg): Removed.
20013         (bdesc_2arg): Remove IX86_BUILTIN_AESKEYGENASSIST128.
20014         (bdesc_1arg): Remove IX86_BUILTIN_ROUNDPD and
20015         IX86_BUILTIN_ROUNDPS.
20016         (ix86_init_mmx_sse_builtins): Handle bdesc_sse_args.  Remove
20017         bdesc_sse_3arg.  Remove IX86_BUILTIN_ROUNDPD and
20018         IX86_BUILTIN_ROUNDPS.
20019         (ix86_expand_sse_4_operands_builtin): Removed.
20020         (ix86_expand_sse_operands_builtin): New.
20021         (ix86_expand_unop_builtin): Remove CODE_FOR_sse4_1_roundpd
20022         and CODE_FOR_sse4_1_roundps.
20023         (ix86_expand_builtin): Remove IX86_BUILTIN_AESKEYGENASSIST128.
20024         Handle bdesc_sse_args.  Remove bdesc_sse_3arg.
20025
20026 2008-04-17  Alan Modra  <amodra@bigpond.net.au>
20027
20028         PR target/35907
20029         * config/rs6000/rs6000.c (rs6000_emit_epilogue): Restore vr and vrsave
20030         regs before frame pop when needed.  If use_backchain_to_restore_sp
20031         then load backchain into a temp reg to restore vr and vrsave.  Add
20032         code to restore vr after frame pop if possible.
20033
20034 2008-04-17  Richard Guenther  <rguenther@suse.de>
20035
20036         * tree-vn.c (expressions_equal_p): Do not check type
20037         equality or compatibility before calling operand_equal_p.
20038         * fold-const.c (operand_equal_p): Check equivalence of
20039         integer constants before bailing out due to signedness or
20040         precision differences.
20041         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Ignore
20042         spurious differences in type qualification.  Ignore types
20043         for COMPONENT_REFs at all.
20044
20045 2008-04-17  Christian Bruel  <christian.bruel@st.com>
20046
20047         * config/sh/sh.c (expand_cbranchdi4): Use original operands for
20048         msw_skip comparison.
20049
20050 2008-04-16  Jakub Jelinek  <jakub@redhat.com>
20051
20052         PR c/35739
20053         * tree-nrv.c (tree_nrv): Don't optimize if result_type is GIMPLE
20054         reg type.
20055
20056         PR tree-optimization/35899
20057         * tree-inline.c (expand_call_inline): Use GIMPLE_STMT_OPERAND
20058         rather than TREE_OPERAND.
20059
20060 2008-04-16  Uros Bizjak  <ubizjak@gmail.com>
20061
20062         PR target/35944
20063         * config/i386/i386.md (fmodxf3): Copy operand 1 and operand 2 into
20064         temporary registers.  Change operand predicate to general_operand.
20065         (remainderxf3): Ditto.
20066
20067 2008-04-16  Richard Guenther  <rguenther@suse.de>
20068
20069         * Makefile.in (tree-affine.o): Add $(FLAGS_H) dependency.
20070         * tree-affine.c (aff_combination_expand): Look through some
20071         conversions.
20072
20073 2008-04-15  Doug Kwan  <dougkwan@google.com>
20074
20075         * dwarf2asm.c (dw2_assemble_integer): Cast to unsigned HOST_WIDE_INT
20076         for hex printing.
20077         * tree-pretty-print.c (dump_generic_node): Ditto.
20078         * final.c (output_addr_const): Ditto.
20079         * dwarf2out.c (output_cfi): Ditto.
20080         * c-pretty-print.c (pp_c_integer_constant): Ditto.
20081         * print-rtl.c (print_rtx): Ditto.
20082         * print-tree.c (print_node_brief, print_node): Ditto.
20083         * c-common.c (match_case_to_enum_1): Ditto.
20084         * sched-vis.c (print_value): Ditto.
20085         * config/i386/i386.c (print_operand): Cast to long unsigned int
20086         for hex printing.
20087
20088 2008-04-15  Danny Smith  <dannysmith@users.sourceforge.net>
20089         * libgcc2.c [L_trampoline]: Remove  unnecessary prototype for
20090         MS Windows VirtualProtect function.
20091
20092 2008-04-15  Jan Hubicka  <jh@suse.cz>
20093
20094         * gengtype.c (write_root): Param_is argument is OK.
20095         * expr.c (expand_expr_real_1): Update call of get_exception_*.
20096         * function.h: Include varray.h
20097         (rtl_eh): New stucture based on except.c one.
20098         (call_site_record): New forward declaration and vector type.
20099         * calls.c (emit_call_1): Do not call
20100         note_current_region_may_contain_throw.
20101         * except.c (eh_status): Remove cur_region, try_region since they are
20102         unused.
20103         Move filter, exc_ptr, ttype_data, ehspec_data, action_record_data and
20104         exception_handler_label_map, ehr_stackadj, ehr_handler, ehr_label,
20105         sjlj_fc, sjlj_exit_after to rth_eh in function.h.
20106         Remove call_site_data_used, call_site_data_size.
20107         Turn call_site_record into vector in function.h.
20108         (note_current_region_may_contain_throw): Remove.
20109         (get_exception_pointer, get_exception_filter): Do not take struct
20110         function argument; update.
20111         (add_ehl_entry, find_exception_handler_labels, ehspec_filter_hash,
20112         add_ttypes_entry, add_ehspec_entry, assign_filter_values,
20113         build_post_landing_pads, dw2_build_landing_pads,
20114         sjlj_assign_call_site_values, sjlj_mark_call_sites,
20115         sjlj_emit_function_enter, sjlj_emit_function_enter,
20116         sjlj_emit_function_exit, sjlj_emit_dispatch_table,
20117         sjlj_build_landing_pads, finish_eh_generation,
20118         remove_exception_handler_label, remove_eh_handler,
20119         maybe_remove_eh_handler, add_reachable_handler,
20120         reachable_handlers, expand_builtin_eh_return, expand_eh_return,
20121         add_action_record, collect_one_action_chain, add_call_site,
20122         convert_to_eh_region_ranges, sjlj_size_of_call_site_table,
20123         sjlj_output_call_site_table, output_function_exception_table,
20124         * except.h (note_current_region_may_contain_throw): Remove
20125         (get_exception_pointer, get_exception_filter): Do not take struct
20126         function argument.
20127         * Makefile.in (GTFILES): Put varargs before struct function.
20128
20129 2008-04-15  Eric Botcazou  <ebotcazou@adacore.com>
20130
20131         * tree-ssa-structalias.c (get_constraint_for_component_ref): Do not
20132         punt for STRING_CST.
20133         (get_constraint_for): Deal with STRING_CST here instead.
20134
20135 2008-04-15  Richard Guenther  <rguenther@suse.de>
20136
20137         * tree-ssa-propagate.c (substitute_and_fold): Substitute
20138         statements in a basic-block with a backward walk.  Do not
20139         substitute into dead statements but instead remove those.
20140
20141 2008-04-15  Richard Guenther  <rguenther@suse.de>
20142
20143         * params.def (PARAM_MAX_FIELDS_FOR_FIELD_SENSITIVE): Set default
20144         to zero, thus disable creation of SFTs.
20145
20146 2008-04-15  Eric Botcazou  <ebotcazou@adacore.com>
20147
20148         * tree-predcom.c (suitable_reference_p): Return false if the
20149         reference can throw.
20150
20151 2008-04-15  Jakub Jelinek  <jakub@redhat.com>
20152
20153         PR c/35751
20154         * c-decl.c (finish_decl): If extern or static var has variable
20155         size, set TREE_TYPE (decl) to error_mark_node.
20156
20157 2008-04-15  Rafael Espíndola  <espindola@google.com>
20158
20159         * fold-const.c (tree_call_nonnegative_warnv_p): Remove local
20160         variable arg1.
20161
20162 2008-04-15  Richard Guenther  <rguenther@suse.de>
20163
20164         * tree-ssa-sccvn.h (vn_reference_lookup): Adjust prototype.
20165         * tree-ssa-sccvn.c (vn_reference_lookup): New parameter maywalk.
20166         (visit_reference_op_load): Do walk vuse-vdef chains on
20167         vn_reference_lookup.
20168         (visit_reference_op_store): But do not here.
20169         * tree-vn.c (vn_lookup): Do not walk vuse-vdef chains on
20170         vn_reference_lookup.
20171         (vn_lookup_with_vuses): But do so here.
20172
20173 2008-04-14  Ian Lance Taylor  <iant@google.com>
20174
20175         * fold-const.c (fold_overflow_warning): Remove assertion.
20176
20177 2008-04-15  Ben Elliston  <bje@au.ibm.com>
20178
20179         * config/alpha/alpha.c (alpha_initialize_trampoline): Remove temp,
20180         temp1 local variables.
20181
20182 2008-04-15  Zuxy Meng  <zuxy.meng@gmail.com>
20183
20184         PR target/35661
20185         * config/i386/winnt.c (i386_pe_section_type_flags): Mark
20186         ".text.unlikely" section as executable.
20187
20188 2008-04-14  James E. Wilson  <wilson@tuliptree.org>
20189
20190         * config/ia64/ia64.c (rtx_needs_barrier): Handle
20191         UNSPEC_FR_SQRT_RECIP_APPROX_RES.
20192         * config/ia64/ia64.c (UNSPEC_FR_SQRT_RECIP_APPROX_RES): Define.
20193         (divsi3_internal, divdi3_internal_lat, divdi3_internal_thr,
20194         divsf3_internal_lat, sqrt_approx, sqrtsf2_internal_thr,
20195         divdf3_internal_lat, sqrtdf2_internal_thr, divxf3_internal_lat,
20196         divxf3_internal_thr, sqrtxf2_internal_thr, recip_approx): Use it.
20197
20198 2008-04-14  Ian Lance Taylor  <iant@google.com>
20199
20200         * flags.h (POINTER_TYPE_OVERFLOW_UNDEFINED): Define.
20201         * fold-const.c (fold_comparison): If appropriate, test
20202         POINTER_TYPE_OVERFLOW_UNDEFINED, and issue an overflow warning.
20203         (fold_binary): Test POINTER_TYPE_OVERFLOW_UNDEFINED when
20204         reassociating a pointer type.
20205         * doc/invoke.texi (Optimize Options): Document that
20206         -fstrict-overflow applies to pointer wraparound.
20207
20208 2008-04-13  Jan Hubicka  <jh@suse.cz>
20209
20210         * m32.c (m32c_pushm_popm): Use crtl->retrun_rtx.
20211
20212 2008-04-12  Andrew Pinski  <pinskia@gmail.com>
20213
20214         * config/rs6000/rs6000.c (compute_save_world_info): Set lr_save_p if
20215         we are going to "save the world".
20216
20217 2008-04-13  Hans-Peter Nilsson  <hp@axis.com>
20218
20219         * config/cris/cris.md ("*andhi_lowpart_non_v32", "*andhi_lowpart_v32")
20220         ("*andqi_lowpart_non_v32", "*andqi_lowpart_v32"): Use "+" for the
20221         operand 0 constraint, not "=".
20222
20223 2008-04-11  James E. Wilson  <wilson@tuliptree.org>
20224
20225         * system.h: Change ASSERT_CHECKING to ENABLE_ASSERT_CHECKING.
20226
20227 2008-04-11  H.J. Lu  <hongjiu.lu@intel.com>
20228
20229         * dse.c (record_store): Use HOST_BITS_PER_WIDE_INT instead
20230         of size of positions_needed * CHAR_BIT.
20231
20232 2008-04-11  H.J. Lu  <hongjiu.lu@intel.com>
20233
20234         PR middle-end/35897
20235         * dse.c (store_info): Change positions_needed to unsigned
20236         HOST_WIDE_INT.
20237         (lowpart_bitmask): New.
20238         (record_store): Cast to unsigned HOST_WIDE_INT for
20239         positions_needed.  Assert width <= size of positions_needed *
20240         CHAR_BIT.  Call lowpart_bitmask to initialize positions_needed.
20241         (check_mem_read_rtx): Use unsigned HOST_WIDE_INT on mask.  Call
20242         lowpart_bitmask to set mask.
20243
20244 2008-04-11  Bernd Schmidt  <bernd.schmidt@analog.com>
20245
20246         * config/bfin/constraints.md: New file.
20247         * config/bfin/bfin.md: Include it.
20248         (adddi3): Use satisfies_constraint functions instead of the old macros.
20249         * config/bfin/bfin.h (REG_CLASS_FROM_LETTER, CONSTRAINT_LEN,
20250         CONST_18UBIT_IMM_P, CONST_16BIT_IMM_P, CONST_16UBIT_IMM_P,
20251         CONST_7BIT_IMM_P, CONST_7NBIT_IMM_P, CONST_5UBIT_IMM_P,
20252         CONST_4BIT_IMM_P, CONST_4UBIT_IMM_P, CONST_3BIT_IMM_P,
20253         CONST_3UBIT_IMM_P, CONST_OK_FOR_K, CONST_OK_FOR_P, CONST_OK_FOR_M,
20254         CONST_OK_FOR_CONSTRAINT_P, CONST_DOUBLE_OK_FOR_LETTER,
20255         EXTRA_CONSTRAINT): Delete.
20256         * config/bfin/predicates.md (highbits_operand, reg_or_7bit_operand,
20257         reg_or_neg7bit_operand): Use satisfies_constraint functions instead
20258         of the old macros.
20259         * config/bfin/bfin.c: Include "tm-constrs.h".
20260         (bfin_secondary_reload, split_load_immediate, bfin_rtx_costs):
20261         Use satisfies_constraint functions instead of the old macros.
20262         * doc/md.texi (Blackfin Constraints): Update file name reference.
20263
20264 2008-04-11  Richard Guenther  <rguenther@suse.de>
20265
20266         PR tree-optimization/35869
20267         * tree-vrp.c (execute_vrp): Move switch statement update after
20268         jump threading.  Schedule another cfg cleanup run.
20269
20270 2008-04-11  Volker Reichelt  <v.reichelt@netcologne.de>
20271
20272         PR c/35744
20273         * attribs.c (decl_attributes): Return early on errorneous node.
20274
20275 2008-04-10  Oleg Ryjkov  <olegr@google.com>
20276
20277         * tree.h (struct tree_base): Added a new flag default_def_flag.
20278         (SSA_NAME_IS_DEFAULT_DEF): Changed to use the new flag.
20279
20280 2008-04-11  Kaz Kojima  <kkojima@gcc.gnu.org>
20281
20282         * config.gcc (need_64bit_hwint): Need 64bit hwint for sh-*-*.
20283
20284 2008-04-10  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
20285
20286         PR target/35768
20287         * pa.md: Define mode iterator P.  Define mode attribute dwc.
20288         (dcacheflush): Update pattern to use iterator P and attribute dwc.
20289         (icacheflush): Likewise.
20290         * pa.h (INITIALIZE_TRAMPOLINE): Use dcacheflushsi/icacheflushsi if
20291         !TARGET_64BIT, and dcacheflushdi/icacheflushdi if TARGET_64BIT.
20292
20293 2008-04-11  Ben Elliston  <bje@au.ibm.com>
20294
20295         * config/spu/spu.c (spu_init_builtins): Mark builtins as nothrow.
20296
20297 2008-04-10  Rafael Espíndola  <espindola@google.com>
20298
20299         * tree-vrp.c (extract_range_from_binary_expr): Don't handle
20300         TRUTH_ANDIF_EXPR or TRUTH_ORIF_EXPR.
20301         (extract_range_from_expr): The same.
20302
20303 2008-04-10  Adam Nemet  <anemet@caviumnetworks.com>
20304
20305         * config/mips/mips.md (GPR2): New mode iterator.
20306         (seq): Add comment.
20307         (*seq_<mode>, *seq_<mode>_mips16, *sne_<mode>, *sgt<u>_<mode>,
20308         *sgt<u>_<mode>_mips16, *sge<u>_<mode>, *slt<u>_<mode>,
20309         *slt<u>_<mode>_mips16 *sle<u>_<mode>, *sle<u>_<mode>_mips16):
20310         Rewrite these to take two modes, the mode of comparison and the
20311         mode of the destination.
20312         * config/mips/mips.c (mips_expand_scc): Instead of having
20313         paradoxical subreg as destination, expand "narrowing" scc if mode
20314         of comparison is SI and target is requested in DI mode.
20315         (mips_emit_int_order_test): Update comment.  Make mode of
20316         comparison match CMP0 rather than TARGET.  When creating inverse
20317         target use mode of TARGET.
20318
20319 2008-04-10  Adam Nemet  <anemet@caviumnetworks.com>
20320
20321         * gcov-dump.c (tag_summary): Only print summaries for the first
20322         GCOV_COUNTERS_SUMMABLE counters.
20323
20324 2008-04-10  Uros Bizjak  <ubizjak@gmail.com>
20325
20326         * config/i386/i386.md (absneg): New code iterator.
20327         (absnegprefix): New code attribute.
20328         (<code><mode>2): Macroize expander from abs<mode>2 and neg<mode>2
20329         patterns using absneg code iterator.
20330         (<code>tf2): Macroize expander from abstf2 and negtf2 patterns
20331         using absneg code iterator.
20332         (*<code><mode>2_1): Macroize insn pattern from *abs<mode>2_1 and
20333         *neg<mode>2 patterns using absneg code iterator.
20334         (*<code>extendsfdf2): Macroize insn pattern from *absextendsfdf2 and
20335         *negextendsfdf2 patterns using absneg code iterator.
20336         (*<code>extendsfxf2): Macroize insn pattern from *absextendsfxf2 and
20337         *negextendsfxf2 patterns using absneg code iterator.
20338         (*<code>extendsfdf2): Macroize insn pattern from *absextendsfdf2 and
20339         *negextendsfdf2 patterns using absneg code iterator.
20340         * config/i386/sse.md (<code><mode>2): Macroize expander from
20341         abs<mode>2 and neg<mode>2 patterns using absneg code iterator.
20342
20343 2008-04-10  Andreas Krebbel  <krebbel1@de.ibm.com>
20344
20345         * config/s390/s390.h: Remove the remains of the recent search
20346         & replace action of current_function_outgoing_args_size.
20347
20348 2008-04-10  Ira Rosen  <irar@il.ibm.com>
20349
20350         PR tree-optimization/35821
20351         * tree-vect-transform.c (vect_create_data_ref_ptr): Add check that
20352         NEW_STMT_LIST is not NULL.
20353
20354 2008-04-09  David Edelsohn  <edelsohn@gnu.org>
20355
20356         PR libstdc++/35597
20357         * toplev.c (process_options): Remove -ffunction-sections debugging
20358         warning.
20359
20360 2008-04-09  Peter Bergner  <bergner@vnet.ibm.com>
20361
20362         PR middle-end/PR28690
20363         * explow.c (break_out_memory_refs): Use simplify_gen_binary rather
20364         than gen_rtx_fmt_ee to perform more canonicalizations.
20365
20366 2008-04-08  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
20367
20368         PR driver/35665
20369         * collect2.c (write_c_file): Don't wrap in "#ifdef __cplusplus".
20370
20371 2008-04-09  Richard Guenther  <rguenther@suse.de>
20372
20373         * tree-cfg.c (verify_stmt): Print complete bogus stmt.
20374         (dump_function_to_file): Dump function arguments with types.
20375
20376 2008-04-08  Richard Guenther  <rguenther@suse.de>
20377
20378         * fold-const.c (fold_widened_comparison): Do not allow
20379         sign-changes that change the result.
20380
20381 2008-04-08  Janis Johnson  <janis187@us.ibm.com>
20382
20383         PR target/35839
20384         * config/rs6000/rs6000.c (rs6000_check_sdmode): Handle additional
20385         kinds of indirect references.
20386
20387 2008-04-08  David Edelsohn  <edelsohn@gnu.org>
20388
20389         * config/rs6000/rs6000.c (rs6000_output_function_epilogue): Update
20390         GNU Fortran language string.
20391
20392 2008-04-08  Rafael Espíndola  <espindola@google.com>
20393
20394         * fold-canst.c (tree_call_nonnegative_warnv_p): New.
20395         (tree_invalid_nonnegative_warnv_p): Use tree_call_nonnegative_warnv_p.
20396         * tree.h (tree_call_nonnegative_warnv_p): New.
20397
20398 2008-04-08  Jan Hubicka  <jh@suse.cz>
20399
20400         * function.c (free_after_compilation): Clear out regno_reg_rtx
20401         pointer.
20402
20403 2008-04-08  Peter Bergner  <bergner@vnet.ibm.com>
20404
20405         Revert
20406         2008-04-07  Peter Bergner  <bergner@vnet.ibm.com>
20407
20408         PR middle-end/PR28690
20409         * rtlanal.c: (commutative_operand_precedence): Give SYMBOL_REF's the
20410         same precedence as REG_POINTER and MEM_POINTER operands.
20411
20412 2008-04-08  Richard Guenther  <rguenther@suse.de>
20413
20414         PR middle-end/35834
20415         * tree-ssa-address.c (create_mem_ref): Use POINTER_PLUS_EXPR
20416         for adding index to base.
20417
20418 2008-04-08  Kai Tietz  <kai.tietz@onevision.com>
20419
20420         * config/i386/mingw32.h (ENABLE_EXECUTE_STACK): New.
20421         (MINGW_ENABLE_EXECUTE_STACK): New.
20422         (IN_LIBGCC2): For libgcc include windows.h file for
20423         function declarations.
20424
20425 2008-04-08  Hans-Peter Nilsson  <hp@axis.com>
20426
20427         * config/cris/cris.c (cris_address_cost): For a PLUS, swap tem1
20428         and tem2 if tem1 is not a REG or MULT.
20429
20430 2008-04-08  Jan Hubicka  <jh@suse.cz>
20431
20432         * function.h (incomming_args): Break out of struct function.
20433         (function_subsections): Break out of struct function.
20434         (rtl_data): Add args, subsections fields. Break out outgoing_args_size,
20435         return_rtx and hard_reg_initial_vals from struct function.
20436         Kill inl_max_label_num.
20437         (current_function_pops_args, current_function_args_info,
20438         current_function_args_size, current_function_args_size,
20439         current_function_pretend_args_size,
20440         current_function_outgoing_args_size,
20441         current_function_internal_arg_pointer, current_function_return_rtx):
20442         Kill compatibility accestor macros.
20443         * builtins.c (expand_builtin_apply_args_1): Update.
20444         (expand_builtin_next_arg): Update.
20445         * df-scan.c (df_get_call_refs): Update.
20446         * dbxout.c (dbxout_function_end): Update.
20447         * dwarf2out.c (dwarf2out_switch_text_section): Update.
20448         (output_line_info): Update.
20449         (secname_for_decl): Update.
20450         (dwarf2out_var_location): Update.
20451         * function.c (free_after_compilation): Update.
20452         (assign_parm_find_stack_rtl): Update.
20453         (assign_parms): Update.
20454         (expand_dummy_function_end): Update.
20455         (expand_function_end): Update.
20456         * calls.c (mem_overlaps_already_clobbered_arg_p): Update.
20457         (expand_call): Update.
20458         (emit_library_call_value_1): Update.
20459         (store_one_arg): Update.
20460         * varasm.c (initialize_cold_section_name): Update.
20461         (unlikely_text_section): Update.
20462         (unlikely_text_section_p): Update.
20463         (assemble_start_function): Update.
20464         (assemble_end_function): Update.
20465         (default_section_type_flags): Update.
20466         (switch_to_section): Update.
20467         * integrate.c (set_decl_abstract_flags): Update.
20468         (get_hard_reg_initial_val): Update.
20469         (has_hard_reg_initial_val): Update.
20470         (allocate_initial_values): Update.
20471         * resource.c (init_resource_info): Update.
20472         * config/alpha/alpha.c (NUM_ARGS): Update.
20473         (direct_return): Update.
20474         (alpha_va_start): Update.
20475         (alpha_sa_size): Update.
20476         (alpha_initial_elimination_offset): Update.
20477         (alpha_expand_prologue): Update.
20478         (alpha_start_function): Update.
20479         (alpha_expand_epilogue): Update.
20480         (unicosmk_initial_elimination_offset):
20481         * config/alpha/alpha.md (call expander): Update.
20482         * config/s390/s390.c (s390_register_info): Update.
20483         (s390_register_info): Update.
20484         (s390_frame_info): Update.
20485         (s390_initial_elimination_offset): Update.
20486         (s390_build_builtin_va_list): Update.
20487         (s390_va_start): Update.
20488         * config/spu/spu.c (direct_return): Update.
20489         (spu_expand_prologue): Update.
20490         (spu_initial_elimination_offset): Update.
20491         (spu_build_builtin_va_list): Update.
20492         (spu_va_start): Update.
20493         * config/sparc/sparc.c (sparc_init_modes): Update.
20494         (sparc_compute_frame_size): Update.
20495         (function_value): Update.
20496         * config/m32r/m32r.c (m32r_compute_frame_size): Update.
20497         * config/i386/i386.md (return expander): Update.
20498         * config/i386/i386.c (ix86_va_start): Update.
20499         (ix86_can_use_return_insn_p): Update.
20500         (ix86_compute_frame_layout): Update.
20501         (ix86_expand_epilogue): Update.
20502         * config/sh/sh.c (output_stack_adjust): Update.
20503         (calc_live_regs): Update.
20504         (sh_expand_prologue): Update.
20505         (sh_builtin_saveregs): Update.
20506         (sh_va_start): Update.
20507         (initial_elimination_offset): Update.
20508         (sh_allocate_initial_value): Update.
20509         (sh_function_ok_for_sibcall): Update.
20510         (sh_get_pr_initial_val): Update.
20511         * config/sh/sh.md (return expander): Update.
20512         * config/avr/avr.c (frame_pointer_required_p): UPdate.
20513         * config/crx/crx.c (crx_compute_frame): UPdate.
20514         (crx_initial_elimination_offset): UPdate.
20515         * config/xtensa/xtensa.c (compute_frame_size): Update
20516         (xtensa_builtin_saveregs): Update.
20517         (xtensa_va_start): Update.
20518         (order_regs_for_local_alloc): Update.
20519         * config/stormy16/stormy16.c (xstormy16_compute_stack_layout): Update.
20520         (xstormy16_expand_builtin_va_start): Update.
20521         * config/fr30/fr30.c (fr30_compute_frame_size): Update.
20522         * config/m68hc11/m68hc11.md (return expanders): Update.
20523         * config/m68hc11/m68hc11.c (expand_prologue): Update.
20524         (expand_epilogue): Update.
20525         * config/cris/cris.c (cris_initial_frame_pointer_offset): Update.
20526         (cris_simple_epilogue): Update.
20527         (cris_expand_prologue): Update.
20528         (cris_expand_epilogue): Update.
20529         * config/iq2000/iq2000.c (iq2000_va_start): Update.
20530         (compute_frame_size): Update.
20531         * config/mt/mt.c (mt_compute_frame_size): Update.
20532         * config/mn10300/mn10300.c (expand_prologue): Update.
20533         (expand_epilogue): Update.
20534         (initial_offset): Update.
20535         (mn10300_builtin_saveregs):
20536         * config/mn10300/mn10300.md (return expander): Update.
20537         * config/ia64/ia64.c (ia64_compute_frame_size): Update.
20538         (ia64_initial_elimination_offset): Update.
20539         (ia64_initial_elimination_offset): Update.
20540         (ia64_expand_prologue): Update.
20541         * config/m68k/m68k.md (return expander): Update.
20542         * config/rs6000/rs6000.c (rs6000_va_start): Update.
20543         (rs6000_stack_info): Update.
20544         * config/mcore/mcore.c (layout_mcore_frame): Update.
20545         (mcore_expand_prolog): Update.
20546         * config/arc/arc.c (arc_compute_frame_size): Update.
20547         * config/score/score3.c (score3_compute_frame_size): Update.
20548         * config/score/score7.c (score7_compute_frame_size): Update.
20549         * config/arm/arm.c (use_return_insn): Update.
20550         (thumb_find_work_register): Update.
20551         (arm_compute_save_reg_mask): Update.
20552         (arm_output_function_prologue): Update.
20553         (arm_output_epilogue): Update.
20554         (arm_size_return_regs): Update.
20555         (arm_get_frame_offsets): Update.
20556         (arm_expand_prologue): Update.
20557         (thumb_exit): Update.
20558         (thumb_unexpanded_epilogue): Update.
20559         (thumb1_output_function_prologue): Update.
20560         * config/pa/pa.md (return expander): Update.
20561         * config/pa/pa.c (compute_frame_size): Update.
20562         (hppa_builtin_saveregs): Update.
20563         * config/mips/mips.c (mips_va_start): Update.
20564         (mips16_build_function_stub): Update.
20565         (mips_compute_frame_info): Update.
20566         (mips_restore_gp): Update.
20567         (mips_output_function_prologue): Update.
20568         (mips_expand_prologue): Update.
20569         * config/v850/v850.c (compute_frame_size): Update.
20570         (expand_prologue): * config/mmix/mmix.c (along): update.
20571         (mmix_initial_elimination_offset): update.
20572         (mmix_reorg): update.
20573         (mmix_use_simple_return): update.
20574         (mmix_expand_prologue): update.
20575         (mmix_expand_epilogue): Update.
20576         * config/bfin/bfin.c (bfin_initial_elimination_offset): Update.
20577         (emit_link_insn): Update.
20578
20579 2008-04-08  Anatoly Sokolov <aesok@post.ru>
20580
20581         * config/avr/avr.h (TARGET_CPU_CPP_BUILTINS): Define
20582         __AVR_HAVE_EIJMP_EICALL__ macro if device have EIJMP and EICALL
20583         instructions.
20584         * config/avr/avr.c (avr_mcu_types): Set AVR31 architecture for
20585         atmega103 device.
20586
20587 2008-04-07  Jan Hubicka  <jh@suse.cz>
20588
20589         * function.h (rtl): Rename to x_rtl.
20590         (crtl): New define.
20591         (return_label, naked_return_label, stack_slot_list, parm_birth_insn,
20592         frame_offset, stack_check_probe_note, arg_pointer_save_area,
20593         used_temp_slots avail_temp_slots, temp_slot_level,
20594         nonlocal_goto_handler_labels): Update accesstors.
20595         (rtl): New global variable.
20596         (struct function): Move some fileds to rtl_data.
20597         (get_arg_pointer_save_area): Update prototype.
20598         * builtins.c (expand_builtin_setjmp_receiver): Update call of
20599         get_arg_pointer_save_area.
20600         * expr.c (init_expr): Update
20601         * function.c (get_frame_size): Update
20602         (assign_stack_local): Update
20603         (expand_function_end): Update.
20604         (get_art_pointer_save_area): Update
20605         * function.h
20606         * emit-rtl.c (rtl): Declare.
20607         (regno_reg_rtx): Declare.
20608         (first_insn, last_insn, cur_insn_uid, last_location, first_label_num):
20609         Update.
20610         (gen_reg_rtx): Update.
20611         * varasm.c (n_deferred_constatns): Update accestor.
20612         (init_varasm_status): Do not allocate varasm_status.
20613         (force_const_mem, get_pool_size, output_constant_pool): Update.
20614         * stmt.c (force_label_rtx): Do not use x_ prefixes.
20615         (expand_nl_goto_receiver): Update get_arg_pointer_save_area.
20616         * m32c/m32.c (m32c_leaf_function_p, m32c_function_needs_enter): Update.
20617         * sparc/sparc.h (INIT_EXPANDERS): Update.
20618         * ia64/ia64.h (INIT_EXPANDERS): Update.
20619
20620 2008-04-07  James E. Wilson  <wilson@tuliptree.org>
20621
20622         * reload.c (push_secondary_reload): Add missing break to for loop.
20623
20624 2008-04-07  Peter Bergner  <bergner@vnet.ibm.com>
20625
20626         PR middle-end/PR28690
20627         * rtlanal.c: Update copyright years.
20628         (commutative_operand_precedence): Give SYMBOL_REF's the same precedence
20629         as REG_POINTER and MEM_POINTER operands.
20630         * emit-rtl.c (gen_reg_rtx_and_attrs): New function.
20631         (set_reg_attrs_from_value): Call mark_reg_pointer as appropriate.
20632         * rtl.h (gen_reg_rtx_and_attrs): Add prototype for new function.
20633         * gcse.c: Update copyright years.
20634         (pre_delete): Call gen_reg_rtx_and_attrs.
20635         (hoist_code): Likewise.
20636         (build_store_vectors): Likewise.
20637         (delete_store): Likewise.
20638         * loop-invariant.c (move_invariant_reg): Likewise.
20639         Update copyright years.
20640
20641 2008-04-07  Uros Bizjak  <ubizjak@gmail.com>
20642
20643         * config/i386/i386.md ("*sse_prologue_save_insn"): Use braced output
20644         control string instead of quoted.
20645
20646 2008-04-07  Kenneth Zadeck  <zadeck@naturalbridge.com>
20647
20648         * doc/rtl.texi: Rewrite of subreg section.
20649
20650 2008-04-07  Kai Tietz  <kai.tietz@onevision.com>
20651
20652         PR/35842
20653         * config/i386/i386.c (legitimize_pic_address): Add treating
20654         of dllimport SYM_REF's.
20655         (legitimize_dllimport_symbol): Add prototype.
20656
20657 2008-04-07  Eric Botcazou  <ebotcazou@adacore.com>
20658
20659         * fold-const.c (fold) <ARRAY_REF>: New case.  Try to fold constant
20660         reference in constructor with non self-referential type.
20661
20662 2008-04-07  Eric Botcazou  <ebotcazou@adacore.com>
20663
20664         Removal of Return with Depressed Stack Pointer support
20665         * tree.h (TYPE_RETURNS_STACK_DEPRESSED): Delete.
20666         (ECF_SP_DEPRESSED): Likewise.
20667         (ECF_LIBCALL_BLOCK, ECF_NOVOPS): Adjust.
20668         * calls.c (emit_call_1): Do not test ECF_SP_DEPRESSED.
20669         (flags_from_decl_or_type): Do not test TYPE_RETURNS_STACK_DEPRESSED.
20670         (expand_call): Do not test ECF_SP_DEPRESSED.
20671         * dse.c (dse_step0): Do not test TYPE_RETURNS_STACK_DEPRESSED.
20672         * function.c (keep_stack_depressed): Delete.
20673         (handle_epilogue_set): Likewise.
20674         (update_epilogue_consts): Likewise.
20675         (emit_equiv_load): Likewise.
20676         (thread_prologue_and_epilogue_insns): Remove support for Return with
20677         Depressed Stack Pointer.
20678         * print-tree.c (print_node): Do not test TYPE_RETURNS_STACK_DEPRESSED.
20679
20680 2008-04-06  Richard Guenther  <rguenther@suse.de>
20681
20682         PR tree-optimization/35400
20683         * tree-vrp.c (vrp_evaluate_conditional): Only query value-range
20684         information from SSA_NAMEs.
20685
20686 2008-04-06  Anatoly Sokolov <aesok@post.ru>
20687
20688         * config/avr/avr.h (avr_mega_p): Remove declaration.
20689         (AVR_MEGA): Remove macro.
20690         * config/avr/avr.c (avr_mega_p): Remove variable.
20691         (avr_override_options): Remove inicializion of avr_mega_p.
20692         Use AVR_HAVE_JMP_CALL instead of AVR_MEGA.
20693         (print_operand): Use AVR_HAVE_JMP_CALL instead of AVR_MEGA.
20694         (avr_jump_mode): (Ditto.).
20695         (avr_output_progmem_section_asm_op): (Ditto.).
20696         (avr_asm_init_sections): (Ditto.).
20697         (avr_asm_init_sections): (Ditto.).
20698         (avr_rtx_costs): (Ditto.).
20699         * config/avr/avr.md: (Ditto.).
20700         * config/avr/avr.h: Use '__AVR_HAVE_JMP_CALL__' instead of
20701         '__AVR_MEGA__'.
20702
20703 2008-04-06  Richard Guenther  <rguenther@suse.de>
20704
20705         PR tree-optimization/35842
20706         * tree-ssa-address.c (fixed_address_object_p): Adjust to match
20707         is_gimple_invariant_address.
20708
20709 2008-04-06  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
20710
20711         * gcc.c (default_compilers): Sync Fortran extensions list with
20712         that in fortran/lang-specs.h.
20713         * doc/invoke.texi: Likewise.
20714         * dbxout.c (get_lang_number): Use "GNU Fortran" in "GNU F95".
20715         * dwarf2out.c (gen_compile_unit_die): Likewise.
20716
20717 2008-04-06  Tom G. Christensen  <tgc@jupiterrise.com>
20718
20719         * gthr-posix95.h (__gthread_cond_wait_recursive): Add missing &.
20720
20721 2008-04-05  Uros Bizjak  <ubizjak@gmail.com>
20722
20723         PR target/12329
20724         * config/i386/i386.c (ix86_function_regparm): Error if regparm(3)
20725         attribute is used for nested functions.
20726
20727 2008-04-05  Jan Hubicka  <jh@suse.cz>
20728
20729         * emit-rtl.c (init_emit): xcalloc regno_pointer_align.
20730
20731         * tree-dump.c (dump_enable_all): Remove prototype; do not accept
20732         letter argument.
20733         (dump_files): Update.
20734         (enable_rtl_dump_file): Do not accept letter argument.
20735         * tree-pass.h (dump_file_info): Remove letter argument.
20736         * toplev.c (decode_d_option): Update -da handling.
20737         * toplev.h (enable_rtl_dump_file): Update prototype.
20738         * passes.c (register_one_dump_file): Do not accept IPA argument; work
20739         it out based on pass type.
20740         (register_dump_files_1): Likewise.
20741         (init_optimization_passes): Update register_one_dump_file calls.
20742         (execute_one_pass): Sanity check that IPA passes are called at IPA
20743         level and RTL passes at RTL level.
20744         (execute_pass_list): IPA pass can not be after or subpass of
20745         GIMPLE/RTL pass.
20746         (execute_ipa_pass_list): Handle IPA subpasses of IPA subpasses and
20747         disallov RTL subpasses of IPA subpasses.
20748
20749 2008-04-05  Ben Elliston  <bje@au.ibm.com>
20750
20751         * tree-cfg.c (need_fake_edge_p): Return false for calls to
20752         builtins that return exactly once and do not throw. Cache call to
20753         call_expr_flags.
20754
20755 2008-04-04 Andy Hutchinson <hutchinsonandy@aim.com>
20756
20757         PR rtl-optimization/34916
20758         PR middle-end/35519
20759         * combine.c (create_log_links): Do not create duplicate LOG_LINKS
20760         between instruction pairs.
20761
20762 2008-04-04  Naveen.H.S  <naveen.hs@kpitcummins.com>
20763
20764         * doc/invoke.texi: Document -mbitops for SH.
20765         * config/sh/constraints.md (K03, K12, Sbv, Sbw): New constraints.
20766         * config/sh/predicates.md (bitwise_memory_operand): New predicate.
20767         * config/sh/sh.c (print_operand): Add %t operand code.
20768         * config/sh/sh.h (GO_IF_LEGITIMATE_INDEX): Add condition for SH2A.
20769         * config/sh/sh.md (*iorsi3_compact): Fix condition for SH2A.
20770         (extendqisi2_compact): Add the alternative for SH2A 4-byte mov.b.
20771         (extendqihi2): Likewise.
20772         (movqi_i): Likewise.
20773         (insv): Use bset, bclr and bst instructions for SH2A if possible.
20774         (extv): Use bld instruction for SH2A if possible.
20775         (extzv): Likewise.
20776         (bclr_m2a, bclrmem_m2a, bset_m2a, bsetmem_m2a, bst_m2a, bld_m2a,
20777         bldsign_m2a, bld_reg, *bld_regqi, band_m2a, bandreg_m2a,
20778         bor_m2a, borreg_m2a, bxor_m2a, bxorreg_m2a): New insns.
20779         (bset.b, bclr.b): Define peepholes.
20780         * config/sh/sh.opt (mbitops): New option.
20781
20782 2008-04-04  Janis Johnson  <janis187@us.ibm.com>
20783
20784         PR target/35620
20785         * config/rs6000/rs6000.c (rs6000_check_sdmode): Handle indirect ref
20786         and view convert expression.
20787
20788 2008-04-04  Jakub Jelinek  <jakub@redhat.com>
20789
20790         PR target/35364
20791         * tree-cfg.c (remove_useless_stmts_1): Handle OMP_* containers.
20792
20793 2008-04-04  H.J. Lu  <hongjiu.lu@intel.com>
20794
20795         * config.gcc (extra_headers): Add wmmintrin.h for x86 and x86-64.
20796
20797         * config/i386/cpuid.h (bit_AES): New.
20798         (bit_PCLMUL): Likewise.
20799
20800         * config/i386/i386.c (pta_flags): Add PTA_AES and PTA_PCLMUL.
20801         (override_options): Handle PTA_AES and PTA_PCLMUL.  Enable
20802         SSE2 if AES or PCLMUL is enabled.
20803         (ix86_builtins): Add IX86_BUILTIN_AESENC128,
20804         IX86_BUILTIN_AESENCLAST128, IX86_BUILTIN_AESDEC128,
20805         IX86_BUILTIN_AESDECLAST128, IX86_BUILTIN_AESIMC128,
20806         IX86_BUILTIN_AESKEYGENASSIST128 and IX86_BUILTIN_PCLMULQDQ128.
20807         (bdesc_sse_3arg): Add IX86_BUILTIN_PCLMULQDQ128.
20808         (bdesc_2arg): Add IX86_BUILTIN_AESENC128,
20809         IX86_BUILTIN_AESENCLAST128, IX86_BUILTIN_AESDEC128,
20810         IX86_BUILTIN_AESDECLAST128 and IX86_BUILTIN_AESKEYGENASSIST128.
20811         (bdesc_1arg): Add IX86_BUILTIN_AESIMC128.
20812         (ix86_init_mmx_sse_builtins): Define __builtin_ia32_aesenc128,
20813         __builtin_ia32_aesenclast128, __builtin_ia32_aesdec128,
20814         __builtin_ia32_aesdeclast128,__builtin_ia32_aesimc128,
20815         __builtin_ia32_aeskeygenassist128 and
20816         __builtin_ia32_pclmulqdq128.
20817         * config/i386/i386.c (ix86_expand_binop_imm_builtin): New.
20818         (ix86_expand_builtin): Use it for IX86_BUILTIN_PSLLDQI128 and
20819         IX86_BUILTIN_PSRLDQI128.  Handle IX86_BUILTIN_AESKEYGENASSIST128.
20820
20821         * config/i386/i386.h (TARGET_AES): New.
20822         (TARGET_PCLMUL): Likewise.
20823         (TARGET_CPU_CPP_BUILTINS): Handle TARGET_AES and TARGET_PCLMUL.
20824
20825         * config/i386/i386.md (UNSPEC_AESENC): New.
20826         (UNSPEC_AESENCLAST): Likewise.
20827         (UNSPEC_AESDEC): Likewise.
20828         (UNSPEC_AESDECLAST): Likewise.
20829         (UNSPEC_AESIMC): Likewise.
20830         (UNSPEC_AESKEYGENASSIST): Likewise.
20831         (UNSPEC_PCLMUL): Likewise.
20832
20833         * config/i386/i386.opt (maes): New.
20834         (mpclmul): Likewise.
20835
20836         * config/i386/sse.md (aesenc): New pattern.
20837         (aesenclast): Likewise.
20838         (aesdec): Likewise.
20839         (aesdeclast): Likewise.
20840         (aesimc): Likewise.
20841         (aeskeygenassist): Likewise.
20842         (pclmulqdq): Likewise.
20843
20844         * config/i386/wmmintrin.h: New.
20845
20846         * doc/extend.texi: Document AES and PCLMUL built-in function.
20847
20848         * doc/invoke.texi: Document -maes and -mpclmul.
20849
20850 2008-04-04  Paolo Bonzini  <bonzini@gnu.org>
20851
20852         * function.c (free_after_parsing): Replace with
20853         cxx_push_function_context from C++ front-end.
20854         (allocate_struct_function): Don't call langhook.
20855         * langhooks.h (struct lang_hooks_for_functions): Delete.
20856         (struct lang_hooks): Add back missing_noreturn_ok_p here, delete
20857         member "function".
20858         * langhooks-def.h (LANG_HOOKS_MISSING_NORETURN_OK_P): Add.
20859         (LANG_HOOKS_FUNCTION_INIT, LANG_HOOKS_FUNCTION_FINAL,
20860         LANG_HOOKS_FUNCTION_MISSING_NORETURN_OK_P,
20861         LANG_HOOKS_FUNCTION_INITIALIZER): Delete.
20862         (LANG_HOOKS_INITIALIZER): Add LANG_HOOKS_MISSING_NORETURN_OK_P,
20863         remove LANG_HOOKS_FUNCTION_INITIALIZER.
20864         * tree-cfg.c: Adjust call to missing_noreturn_ok_p langhook.
20865
20866         * c-objc-common.h (LANG_HOOKS_FUNCTION_MISSING_NORETURN_OK_P):
20867         Rename to LANG_HOOKS_MISSING_NORETURN_OK_P.
20868
20869 2008-04-04  Jakub Jelinek  <jakub@redhat.com>
20870
20871         PR c/35440
20872         * c-pretty-print.c (pp_c_initializer_list): Handle CONSTRUCTOR
20873         for all types.
20874
20875 2008-04-04  Richard Guenther  <rguenther@suse.de>
20876
20877         PR middle-end/35823
20878         * fold-const.c (optimize_minmax_comparison): Use the correct
20879         type for the constant in the simplified comparison.
20880
20881 2008-04-04  Zuxy Meng <zuxy.meng@gmail.com>
20882
20883         * config/i386/driver-i386.c (describe_cache): Add l2_sizekb argument.
20884         Pass L2 size as "--param l2-cache-size" to the compiler.
20885         (decode_l2_cache): New function to decode L2 cache parameters using
20886         0x8000006 extended cpuid function.
20887         (detect_caches_amd): Determine parameters of L2 cache using
20888         decode_l2_caches function.
20889         (decode_caches_intel): Decode L2 cache parameters.
20890         (detect_caches_intel): Determine L2 cache parameters using
20891         decode_caches_intel and decode_l2_caches functions.
20892
20893 2008-04-03  Bob Wilson  <bob.wilson@acm.org>
20894
20895         * config/xtensa/xtensa.c (xtensa_secondary_reload_class): Use a
20896         secondary input reload for subword loads from the constant pool.
20897
20898 2008-04-03  Janis Johnson  <janis187@us.ibm.com>
20899
20900         PR target/35713
20901         * config/rs6000/rs6000.c (rs6000_gimplify_va_arg): Use integer
20902           constants of the appropriate size for runtime calculations.
20903
20904         PR c/35712
20905         * dfp.c (decimal_from_decnumber): Retain trailing zeroes for
20906           decimal-float literal constant zero.
20907
20908 2008-04-03  Jakub Jelinek  <jakub@redhat.com>
20909
20910         PR c/35738
20911         * c-parser.c (c_parser_omp_atomic): Call
20912         default_function_array_conversion on the RHS.
20913
20914         PR middle-end/35818
20915         * omp-low.c (scan_sharing_clauses) <case OMP_CLAUSE_SHARED>: Don't
20916         call is_variable_sized if decl has incomplete type.
20917
20918 2008-04-03  H.J. Lu  <hongjiu.lu@intel.com>
20919
20920         * config/i386/i386-protos.h (ix86_aligned_p): Removed.
20921
20922 2008-04-03  Adam Nemet  <anemet@caviumnetworks.com>
20923
20924         * config/mips/mips.md (any_gt, any_ge, any_lt, any_le): New code
20925         iterators.
20926         (u): Add attribute values for gt, gtu, ge, geu, lt, ltu, le and leu.
20927         (sgt<u>): Merge sgt and sgtu into new expander.
20928         (sgt, sgtu): Remove expanders.
20929         (*sgt<u>_<mode>): Merge *sgt_<mode> and *sgtu_<mode> into new pattern.
20930         (*sgt_<mode>, *sgtu_<mode>): Remove patterns.
20931         (*sgt<u>_<mode>_mips16): Merge *sgt_<mode>_mips16 and
20932         *sgtu_<mode>_mips16 into new pattern.
20933         (*sgt_<mode>_mips16, *sgtu_<mode>_mips16): Remove patterns.
20934         (sge<u>): Merge sge and sgeu into new expander.
20935         (sge, sgeu): Remove expanders.
20936         (*sge<u>_<mode>): Merge *sge_<mode> and second *sge_<mode> into
20937         new pattern.
20938         (*sge_<mode>, second *sge_<mode>): Remove patterns.
20939         (slt<u>): Merge slt and sltu into new expander.
20940         (slt, sltu): Remove expanders.
20941         (*slt<u>_<mode>): Merge *slt_<mode> and *sltu_<mode> into new pattern.
20942         (*slt_<mode>, *sltu_<mode>): Remove patterns.
20943         (*slt<u>_<mode>_mips16): Merge *slt_<mode>_mips16 and
20944         *sltu_<mode>_mips16 into new pattern.
20945         (*slt_<mode>_mips16, *sltu_<mode>_mips16): Remove patterns.
20946         (sle<u>): Merge sle and sleu into new expander.
20947         (sle, sleu): Remove expanders.
20948         (*sle<u>_<mode>): Merge *sle_<mode> and *sleu_<mode> into new pattern.
20949         (*sle_<mode>, *sleu_<mode>): Remove patterns.
20950         (*sle<u>_<mode>_mips16): Merge *sle_<mode>_mips16 and
20951         *sleu_<mode>_mips16 into new pattern.
20952         (*sle_<mode>_mips16, *sleu_<mode>_mips16): Remove patterns.
20953
20954 2008-04-03  Jan Hubicka  <jh@suse.cz>
20955
20956         PR tree-optimization/35795
20957         * alpha/alpha.c (alpha_output_mi_thunk_osf): Free after compilation.
20958         * sparc/sparc.c (sparc_output_mi_thunk): Likewise.
20959         * ia64/ia64.c (ia64_output_mi_thunk): Likewise.
20960         * m68k/m68k.c (m68k_output_mi_thunk): Likewise.
20961         * score/score3.c (score3_output_mi_thunk): Likewise.
20962         * score/score7.c (score7_output_mi_thunk): Likewise.
20963         * mips/mips.c (mips_output_mi_thunk): Likewise.
20964
20965 2008-04-03  Richard Guenther  <rguenther@suse.de>
20966
20967         * tree-vrp.c (extract_range_from_unary_expr): Handle all
20968         conversions.  Simplify code.
20969
20970 2008-04-03  Kaz Kojima  <kkojima@gcc.gnu.org>
20971
20972         * config/sh/sh.c (sh_output_mi_thunk): Free cfun.
20973
20974 2008-04-03  Tom Tromey  <tromey@redhat.com>
20975             Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
20976
20977         * config/m68k/t-uclinux (generated_files): Add sysroot-suffix.h.
20978         * config/bfin/t-bfin-linux (generated_files): Add
20979         linux-sysroot-suffix.h.
20980         * doc/install.texi (Prerequisites): Require make 3.80.
20981         * doc/sourcebuild.texi (Front End Directory): Document new
20982         variable.
20983         * Makefile.in (generated_files): New variable.
20984         (ALL_HOST_OBJS): New variable.
20985         ($(ALL_HOST_OBJS)): New target.
20986
20987 2008-04-03  Paolo Bonzini  <bonzini@gnu.org>
20988
20989         * tree-inline.c (copy_generic_body, copy_decl_no_change): Export.
20990         (remap_block): Call id->transform_lang_insert_block instead
20991         of langhook.
20992         (optimize_inline_calls, unsave_expr_now, tree_function_versioning):
20993         Set id.transform_lang_insert_block to NULL.
20994         (clone_body): Move to cp/optimize.c
20995         * tree-inline.h (struct copy_body_data): Change
20996         transform_lang_insert_block to function pointer.
20997         (copy_generic_body, copy_decl_no_change): Export.
20998         * langhooks.h (struct lang_hooks_for_decls): Kill insert_block.
20999         * langhooks-def.h (LANG_HOOKS_INSERT_BLOCK): Kill.
21000         (LANG_HOOKS_DECLS): Remove LANG_HOOKS_INSERT_BLOCK.
21001
21002         * c-tree.h (insert_block): Kill.
21003         * c-decl.c (insert_block): Kill.
21004
21005 2008-04-03  Paolo Bonzini  <bonzini@gnu.org>
21006
21007         * c-objc-common.h (LANG_HOOKS_FUNCTION_ENTER_NESTED,
21008         LANG_HOOKS_FUNCTION_LEAVE_NESTED): Delete.
21009         * c-tree.h (c_push_function_context, c_pop_function_context): Remove
21010         argument.
21011         * c-decl.c (c_push_function_context, c_pop_function_context): Remove
21012         argument, call {push,pop}_function_context from here.
21013         * c-parser.c: Use c_{push,pop}_function_context.
21014
21015         * function.c (push_function_context_to): Move meat ...
21016         (push_function_context): ... here.  Simplify.
21017         * function.c (pop_function_context_from): Move meat ...
21018         (pop_function_context): ... here.  Simplify.
21019         * langhooks.h (struct lang_hooks_for_functions): Remove enter_nested,
21020         leave_nested).
21021         * langhooks-def.h (LANG_HOOKS_FUNCTION_ENTER_NESTED,
21022         LANG_HOOKS_FUNCTION_LEAVE_NESTED): Delete.
21023         (LANG_HOOKS_FUNCTION_INITIALIZER): Delete them from here.
21024         * tree.h (push_function_context_to, pop_function_context_from): Remove.
21025
21026 2008-04-03  Ben Elliston  <bje@au.ibm.com>
21027
21028         * expmed.c (extract_force_align_mem_bit_field): Remove.
21029
21030 2008-04-03  Richard Guenther  <rguenther@suse.de>
21031
21032         PR middle-end/35800
21033         * expr.h (try_casesi): Adjust prototype.
21034         * expr.c (try_casesi): Take fallback label as extra parameter.
21035         Use that for gen_casesi if default_label is NULL.
21036         * stmt.c (expand_case): Pass fallback label to try_casesi,
21037         make sure to fill gaps with a fallback label if default_label
21038         is not present.
21039
21040 2008-04-03  Dominique d'Humières <dominiq@lps.ens.fr>
21041
21042         PR target/35801
21043         * config/rs6000/rs6000.c (rs6000_output_mi_thunk): Free cfun.
21044
21045 2008-04-03  Ben Elliston  <bje@au.ibm.com>
21046
21047         * expmed.c (extract_split_bit_field): Remove if (0) code.
21048         * tree-ssa-structalias.c (do_sd_constraint): Likewise.
21049         (do_ds_constraint): Likewise.
21050
21051 2008-04-02  Joseph Myers  <joseph@codesourcery.com>
21052
21053         * doc/cppopts.texi (-dU): Document.
21054         * c-common.h (flag_dump_macros): Update comment.
21055         * c-opts.c (handle_OPT_d): Handle -dU.
21056         * c-ppoutput.c (macro_queue, define_queue, undef_queue,
21057         dump_queued_macros, cb_used_define, cb_used_undef): New.
21058         (init_pp_output): Handle -dU.
21059         (cb_line_change): Call dump_queued_macros.
21060         * toplev.c (decode_d_option): Accept -dU as preprocessor option.
21061
21062 2008-04-02  Anatoly Sokolov <aesok@post.ru>
21063
21064         * config/avr/predicates.md (io_address_operand): New predicate.
21065         * config/avr/avr-protos.h (avr_io_address_p): Remove declaration.
21066         * config/avr/avr.c (avr_io_address_p): Remove function.
21067         (out_movqi_r_mr): Use 'io_address_operand' predicate instead of
21068         'avr_io_address_p' function.
21069         (out_movhi_r_mr): (Ditto.).
21070         (out_movqi_mr_r): (Ditto.).
21071         (out_movhi_mr_r): (Ditto.).
21072         (avr_address_cost): (Ditto.).
21073
21074 2008-04-02  Uros Bizjak  <ubizjak@gmail.com>
21075
21076         * config/i386/i386.md (*float<SSEMODEI24:mode><X87MODEF:mode>2_1):
21077         Emit gen_floatdi<X87MODEF:mode>2_i387_with_xmm for DImode values
21078         in 32bit mode when XMM registers are available to avoid store
21079         forwarding stalls.
21080         (floatdi<X87MODEF:mode>2_i387_with_xmm): New insn pattern and
21081         corresponding post-reload splitters.
21082
21083 2008-04-02  H.J. Lu  <hongjiu.lu@intel.com>
21084
21085         * config/i386/i386.c (bdesc_sse_3arg): Add __builtin_ia32_shufps
21086         and __builtin_ia32_shufpd.  Provide __builtin_ia32_roundsd and
21087         __builtin_ia32_roundss.
21088         (ix86_init_mmx_sse_builtins): Remove __builtin_ia32_shufps,
21089         __builtin_ia32_shufpd, __builtin_ia32_roundsd and
21090         __builtin_ia32_roundss.
21091         (ix86_expand_builtin): Don't handle IX86_BUILTIN_SHUFPS and
21092         IX86_BUILTIN_SHUFPD here.
21093
21094 2008-04-02  H.J. Lu  <hongjiu.lu@intel.com>
21095
21096         * config/i386/i386.md (plogic): New.
21097         (plogicprefix): Likewise.
21098
21099         * config/i386/mmx.md (mmx_<code><mode>3): New.
21100         (mmx_and<mode>3): Removed.
21101         (mmx_ior<mode>3): Likewise.
21102         (mmx_xor<mode>3): Likewise.
21103
21104         * config/i386/sse.md (<code><mode>3): New.
21105         (*<code><mode>3): Likewise.
21106         (*<code><mode>3): Likewise.
21107         (<code><mode>3): Likewise.
21108         (*sse_<code><mode>3): Likewise.
21109         (*sse2_<code><mode>3): Likewise.
21110         (<code>tf3): Likewise.
21111         (*<code>tf3): Likewise.
21112         (and<mode>3): Likewise.
21113         (*and<mode>3): Likewise.
21114         (ior<mode>3): Removed.
21115         (*ior<mode>3): Likewise.
21116         (xor<mode>3): Likewise.
21117         (*xor<mode>3): Likewise.
21118         (*and<mode>3): Likewise.
21119         (*ior<mode>3): Likewise.
21120         (*xor<mode>3): Likewise.
21121         (and<mode>3): Likewise.
21122         (*sse_and<mode>3): Likewise.
21123         (*sse2_and<mode>3): Likewise.
21124         (andtf3): Likewise.
21125         (*andtf3): Likewise.
21126         (ior<mode>3): Likewise.
21127         (*sse_ior<mode>3): Likewise.
21128         (*sse2_ior<mode>3): Likewise.
21129         (iortf3): Likewise.
21130         (*iortf3): Likewise.
21131         (xor<mode>3): Likewise.
21132         (*sse_xor<mode>3): Likewise.
21133         (*sse2_xor<mode>3): Likewise.
21134         (xortf3): Likewise.
21135         (*xortf3): Likewise.
21136
21137 2008-04-02  Richard Guenther  <rguenther@suse.de>
21138
21139         PR tree-optimization/14495
21140         PR tree-optimization/34793
21141         * tree-vrp.c (struct switch_update): New structure.
21142         (to_remove_edges, to_update_switch_stmts): New VECs.
21143         (simplify_switch_using_ranges): New function.  Remove not taken
21144         case labels and edges.
21145         (simplify_stmt_using_ranges): Call it.
21146         (identify_jump_threads): Mark edges we have queued for removal
21147         so we don't thread them.
21148         (execute_vrp): Remove edges queued for removal, update SWITCH_STMT
21149         case label vector.
21150         * tree-cfg.c (group_case_labels): Deal with missing default label.
21151         (tree_verify_flow_info): Allow missing default label.
21152         * stmt.c (emit_case_bit_tests): Deal with NULL default_label.
21153         (emit_case_nodes): Likewise.
21154         (expand_case): Do not rely on the default label to be present.
21155         * expr.c (try_casesi): Deal with NULL default_label.
21156         (do_tablejump): Likewise.
21157
21158 2008-04-02  Richard Guenther  <rguenther@suse.de>
21159
21160         PR tree-optimization/14495
21161         * tree-vrp.c (vrp_visit_cond_stmt): Do not handle
21162         SWITCH_EXPR here ...
21163         (vrp_visit_switch_stmt): ... but here (new function).
21164         (find_case_label_index): New helper function.
21165         (vrp_visit_stmt): Dispatch to vrp_visit_switch_stmt.
21166
21167 2008-04-02  Paolo Bonzini  <bonzini@gnu.org>
21168
21169         * fwprop.c: Fix ISO-C99ism.
21170
21171 2008-04-02  Paolo Bonzini  <bonzini@gnu.org>
21172
21173         PR bootstrap/35752
21174         * Makefile.in (objdir): Set it here.
21175         * configure.ac: Not here.  Find dynamic linker characteristics.
21176         * exec-tool.in: Use them.
21177         * aclocal.m4: Regenerate.
21178         * configure: Regenerate.
21179
21180 2008-04-02  Paolo Bonzini  <bonzini@gnu.org>
21181
21182         * expr.c (expand_var): Delete it.
21183         * expr.h (expand_var): Delete prototype.
21184         * function.c (expand_function_start): Use expand_decl instead.
21185         * cfgexpand.c (expand_one_static_var, expand_one_var): Don't call
21186         langhook.
21187
21188 2008-04-02  Andy Hutchinson <hutchinsonamdy@aim.com>
21189
21190         PR rtl-optimization/35542
21191         * fwprop.c (forward_propagate_and_simplify): Replace
21192         loc_reg_mentioned_in_p with reg_mentioned_p.
21193
21194 2008-04-02  Paolo Bonzini  <bonzini@gnu.org>
21195
21196         PR rtl-optimization/35281
21197         * fwprop.c (PR_CAN_APPEAR, PR_HANDLE_MEM): New.
21198         (propagate_rtx_1): Handle PR_HANDLE_MEM.
21199         (propagate_rtx): Pass PR_HANDLE_MEM if appropriate.
21200         (varying_mem_p): Move above propagate_rtx.
21201         (all_uses_available_at): Do not check MEMs.
21202
21203 2008-04-02  Rafael Espíndola  <espindola@google.com>
21204
21205         * tree-vrp.c (extract_code_and_val_from_cond): Remove.
21206         (register_edge_assert_for_2): Split the cond argument.
21207         (register_edge_assert_for_1): Adjust for the change in
21208         register_edge_assert_for_2.
21209         (register_edge_assert_for): Split the cond argument.
21210         (find_switch_asserts): Adjust for the change in
21211         register_edge_assert_for.
21212
21213 2008-04-02  Kai Tietz  <kai.tietz@onevision.com>
21214
21215         * config.gcc: Add for x86_64-*-mingw* the t-crtfm to tbuild.
21216         * config/i386/cygming.h (ASM_OUTPUT_DWARF_OFFSET): Add 8 byte
21217         offsets for 64-bit mingw.
21218         * config/i386/i386.c (ix86_pass_by_reference): Correct calling
21219         abi for x86_64-pc-mingw.
21220
21221 2008-04-02  Richard Guenther  <rguenther@suse.de>
21222
21223         * tree-vrp.c (extract_range_from_assert): Make sure to not
21224         produce range min/max with TREE_OVERFOW set.
21225         If merging a anti-range and a range keep the anti-range if
21226         the range covers all values of the type.
21227         (register_edge_assert_for_2): Only allow sign-changing
21228         conversions in detecting canonical range checks.  Also
21229         register an assert for the unsigned name if useful.
21230
21231         PR tree-optimization/35787
21232         * tree-vrp.c (vrp_val_max): New function.
21233         (vrp_val_min): Likewise.
21234         (vrp_val_is_max): Move earlier, use vrp_val_{min,max}.
21235         (vrp_val_is_min): Likewise.
21236         (supports_overflow_infinity): Use vrp_val_{min,max}.
21237         (negative_overflow_infinity): Likewise.
21238         (positive_overflow_infinity): Likewise.
21239         (is_negative_overflow_infinity): Use vrp_val_is_{min,max}.
21240         (is_positive_overflow_infinity): Likewise.
21241         (is_overflow_infinity): Likewise.
21242         (avoid_overflow_infinity): Use vrp_val_{min,max} and
21243         vrp_val_is_{min,max}.
21244         (set_and_canonicalize_value_range): Canonicalize anti-ranges
21245         to ranges if possible.  Avoid empty ranges.
21246
21247 2008-04-01  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
21248
21249         PR middle-end/35705
21250         * fold-const.c (get_pointer_modulus_and_residue): Return modulus 1 if
21251         the expression is a function address.
21252
21253 2008-04-01  George Helffrich  <george@gcc.gnu.org>
21254
21255         PR fortran/35154, fortran/23057
21256         * dbxout.c: Emit .stabs debug info for Fortran COMMON block
21257         variables as base symbol name + offset using N_BCOMM/N_ECOMM.
21258         (is_fortran, dbxout_common_name, dbxout_common_check): New functions.
21259         (dbxout_symbol_location): Transform N_LCSYM to N_GSYM for storage
21260         in common.
21261         (dbxout_syms): Check for COMMON-based symbol and wrap in
21262         N_BCOMM/N_ECOMM stab bracket, including as many symbols as possible
21263         in bracket for efficiency.
21264
21265         * dwarf2out.c: Emit DWARF debug info for Fortran COMMON block
21266         using DW_TAG_common_block + member offset.
21267         (add_pubname_string): New function.
21268         (dw_expand_expr): New function to find block name and offset for
21269         COMMON var.
21270         (common_check): New function to check whether symbol in Fortran COMMON.
21271         (gen_variable_die): If COMMON, use DW_TAG_common_block.
21272
21273 2008-04-01  Volker Reichelt  <v.reichelt@netcologne.de>
21274
21275         PR c/35436
21276         * c-format.c (init_dynamic_gfc_info): Ignore invalid locus type.
21277
21278 2008-04-02  Ben Elliston  <bje@au.ibm.com>
21279
21280         * config/v850/v850.md (casesi): Remove if (0) code.
21281         * config/i386/uwin.h (ASM_DECLARE_FUNCTION_NAME): Likewise.
21282         * config/alpha/alpha.c (alpha_initialize_trampoline): Likewise.
21283
21284 2008-04-01  Uros Bizjak  <ubizjak@gmail.com>
21285
21286         * config/i386/i386.md (rex64suffix): New mode attribute.
21287         (floathi<mode>2): Disable expander for SSE math.
21288         (*floathi<mode>2_1): New insn insn_and_split pattern.
21289         (*floathi<mode>2_i387_with_temp): New macroized instruction pattern and
21290         corresponding post-reload splitters.
21291         (*floathi<mode>2_i387): New macroized insn pattern.
21292         (float<SSEMODEI24:mode><X87MODEF:mode>2): New macroized expander.
21293         (*float<SSEMODEI24:mode><X87MODEF:mode>2_1): New macroized
21294         insn_and_split pattern.
21295         (*floatsi<mode>2_vector_mixed_with_temp, *floatsi<mode>2_vector_mixed):
21296         New macroized instruction patterns and corresponding post-reload
21297         splitters.
21298         (*floatsi<mode>2_mixed_with_temp): New macroized instruction pattern
21299         and corresponding post-reload splitters.
21300         (*floatsi<mode>2_mixed_interunit, *floatsi<mode>2_mixed_nointerunit):
21301         New macroized instruction patterns.
21302         (*floatsi<mode>2_vector_sse_with_temp, *floatsi<mode>2_vector_sse): New
21303         macroized instruction patterns and corresponding post-reload splitters.
21304         (*floatsi<mode>2_sse_with_temp): New macroized instruction pattern and
21305         corresponding post-reload splitters.
21306         (*floatsi<mode>2_sse_interunit, *floatsi<mode>2_mixed_nointerunit):
21307         New macroized instruction patterns.
21308         (*floatsi<mode>2_i387_with_temp): New macroized instruction pattern and
21309         corresponding post-reload splitters.
21310         (*floatsi<mode>2_i387): New macroized instruction patterns.
21311
21312 2008-04-01  H.J. Lu  <hongjiu.lu@intel.com>
21313
21314         * config/i386/i386.md (smaxmin): New.
21315         (umaxmin): Likewise.
21316         (maxminiprefix): Likewise.
21317         (maxminfprefix): Likewise.
21318         (<code><mode>3): Likewise.
21319         (smin<mode>3): Removed.
21320         (smax<mode>3): Likewise.
21321
21322         * config/i386/mmx.md (mmx_<code>v2sf3): New.
21323         (mmx_<code>v4hi3): Likewise.
21324         (mmx_<code>v8qi3): Likewise.
21325         (mmx_smaxv2sf3): Removed.
21326         (mmx_sminv2sf3): Likewise.
21327         (mmx_umaxv8qi3): Likewise.
21328         (mmx_smaxv4hi3): Likewise.
21329         (mmx_uminv8qi3): Likewise.
21330         (mmx_sminv4hi3): Likewise.
21331
21332         * config/i386/sse.md (<addsub><mode>3): New.
21333         (*<addsub><mode>3): Likewise.
21334         (<sse>_vm<addsub><mode>3): Likewise.
21335         (<maxmin><mode>3): Likewise.
21336         (*<maxmin><mode>3_finite): Likewise.
21337         (*<maxmin><mode>3): Likewise.
21338         (<sse>_vm<maxmin><mode>3): Likewise.
21339         (sse3_h<addsub>v4sf3): Likewise.
21340         (sse3_h<addsub>v2df3): Likewise.
21341         (<maxmin>v16qi3): Likewise.
21342         (*<maxmin>v16qi3): Likewise.
21343         (<maxmin>v8hi3): Likewise.
21344         (*<maxmin>v8hi3): Likewise.
21345         (*sse4_1_<maxmin><mode>3): Likewise.
21346         (*sse4_1_<maxmin><mode>3): Likewise.
21347         (add<mode>3): Removed.
21348         (*add<mode>3): Likewise.
21349         (<sse>_vmadd<mode>3): Likewise.
21350         (sub<mode>3): Likewise.
21351         (*sub<mode>3): Likewise.
21352         (<sse>_vmsub<mode>3): Likewise.
21353         (smin<mode>3): Likewise.
21354         (*smin<mode>3_finite): Likewise.
21355         (*smin<mode>3): Likewise.
21356         (<sse>_vmsmin<mode>3): Likewise.
21357         (smax<mode>3): Likewise.
21358         (*smax<mode>3_finite): Likewise.
21359         (*smax<mode>3): Likewise.
21360         (<sse>_vmsmax<mode>3): Likewise.
21361         (sse3_haddv4sf3): Likewise.
21362         (sse3_haddv2df3): Likewise.
21363         (sse3_hsubv4sf3): Likewise.
21364         (sse3_hsubv2df3): Likewise.
21365         (umaxv16qi3): Likewise.
21366         (*umaxv16qi3): Likewise.
21367         (smaxv8hi3): Likewise.
21368         (*smaxv8hi3): Likewise.
21369         (*sse4_1_smax<mode>3): Likewise.
21370         (*sse4_1_umax<mode>3): Likewise.
21371         (uminv16qi3): Likewise.
21372         (*uminv16qi3): Likewise.
21373         (sminv8hi3): Likewise.
21374         (*sminv8hi3): Likewise.
21375         (*sse4_1_smin<mode>3): Likewise.
21376         (*sse4_1_umin<mode>3): Likewise.
21377
21378 2008-04-01  Rafael Espíndola  <espindola@google.com>
21379
21380         * tree-cfg.c (verify_expr): remove in_phi.
21381         (verify_stmt): Don't call walk_tree with verify_expr. Use
21382         is_gimple_min_invariant instead of is_gimple_val.
21383
21384 2008-04-01  Joseph Myers  <joseph@codesourcery.com>
21385
21386         * doc/include/gpl_v3.texi: Update for manpage generation.
21387         * doc/gcc.texi, doc/gccint.texi: Include gpl_v3.texi instead of
21388         gpl.texi.
21389         * doc/sourcebuild.texi: Document gpl_v3.texi as well as gpl.texi.
21390         * Makefile.in (TEXI_GCC_FILES, TEXI_GCCINT_FILES): Include
21391         gpl_v3.texi instead of gpl.texi.
21392         (gpl.pod): New.
21393
21394 2008-04-01  Jakub Jelinek  <jakub@redhat.com>
21395
21396         PR pch/13675
21397         * c-pch.c (c_common_read_pch): On error close (fd) resp. fclose (f).
21398
21399 2008-04-01  Rafael Espíndola  <espindola@google.com>
21400
21401         * tree-vrp.c (extract_code_and_val_from_cond_with_ops): New.
21402         (extract_code_and_val_from_cond): Use
21403         extract_code_and_val_from_cond_with_ops.
21404
21405 2008-04-01  Jan Hubicka  <jh@suse.cz>
21406
21407         * function.c (free_after_compilation): Free epilogue_delay_list.
21408         (prepare_function_start): Assert that previous compilation was freed.
21409
21410 2008-04-01  Jan Hubicka  <jh@suse.cz>
21411             Jim Wilson  <wilson@tuliptree.org>
21412             Andreas Tobler <andreast@gcc.gnu.org>
21413
21414         PR middle-end/35781
21415         * m32c/m32.c (m32c_leaf_function_p, m32c_function_needs_enter): Use
21416         rtl.emit instead cfun->emit.
21417         * sparc/sparc.h (INIT_EXPANDERS): Likewise.
21418         * ia64/ia64.h (INIT_EXPANDERS): Likewise.
21419
21420 2008-04-01  Ben Elliston  <bje@au.ibm.com>
21421
21422         * doc/c-tree.texi (Function Basics): Fix grammatical error.
21423
21424 2008-03-31  Seongbae Park <seongbae.park@gmail.com>
21425
21426         * common.opt (fprofile-dir=, fprofile-use=, fprofile-generate=):
21427         New options
21428         (fprofile-use): Add var flag_profile_use
21429         * coverage.c (coverage_begin_output): Do not open a gcno file for
21430         output only if -ftest-coverage is set.
21431         Do not add getpwd() to gcda file path.
21432         (build_gcov_info): Check the new flag
21433         flag_profile_datafile_relative_path.
21434         (coverage_init): Use profile_data_prefix.
21435         Read profile counter only if flag_profile_use is set.
21436         * opts.c (common_handle_option): New option fprofile-use=,
21437         fprofile-dir=, fprofile-generate=.
21438         * toplev.c (profile_data_prefix): New variable definition.
21439         * toplev.h (profile_data_prefix): New declaration.
21440         * doc/invoke.tex (Option Summary, Optimization Options):
21441         Add new options.
21442
21443 2008-03-31  James E. Wilson  <wilson@tuliptree.org>
21444
21445         * varasm.c (output_constant_pool_1): In LABEL_REF check,
21446         use tmp consistently.
21447
21448         PR target/35695
21449         * config/ia64/div.md (recip_approx_rf): Use UNSPEC not DIV.
21450         * config/ia64/ia64.c (rtx_needs_barrier): Handle
21451         UNSPEC_FR_RECIP_APPROX_RES.
21452         * config/ia64/ia64.md (UNSPEC_FR_RECIP_APPROX_RES): Define.
21453
21454 2008-03-31  Volker Reichelt  <v.reichelt@netcologne.de>
21455
21456         PR c/35750
21457         * c-decl.c (store_parm_decls_oldstyle): Skip invalid parameters.
21458
21459 2008-03-31  Andrew Pinski  <andrew_pinski@playstation.sony.com>
21460
21461         PR middle-end/30186
21462         * fold-const.c (fold_indirect_ref_1): Support accessing non first
21463         element of the vector via a pointer.
21464
21465 2008-03-31  Ian Lance Taylor  <iant@google.com>
21466
21467         * tlink.c (scan_linker_output): Look for symbol name in single quotes.
21468
21469 2008-03-31  Jan Hubicka  <jh@suse.cz>
21470
21471         * builtins.c (expand_builtin_setjmp_receiver): Update call of
21472         get_arg_pointer_save_area.
21473         * expr.c (init_expr): Just clear out rtl.expr.
21474         * function.c (free_after_compilation): Clear out whole RTL structure.
21475         (get_func_frame_size): Merge into ...
21476         (get_frame_size): ... this one.
21477         (assign_stack_local_1): Merge into ...
21478         (assign_stack_local): ... this one.
21479         (expand_function_end): Update call of get_arg_pointer_save_area.
21480         (get_art_pointer_save_area): Remove cfun argument.
21481         * function.h (emit_status): regno_pointer_align does not need length
21482         attribute. Move x_regno_reg_rtx to ...
21483         (regno_reg_rtx): ... new global array.
21484         (reg_rtx_no, seq_stack, REGNO_POINTER_ALIGN): Update accestors.
21485         (pending_stack_adjust, inhibit_defer_pop, saveregs_value,
21486         apply_args_value, forced_labels, stack_pointer_delta):
21487         Update accestors.
21488         (struct varasm_status): Move here from varasm.c
21489         (struct rtl_data): New. Move here some fields from struct function.
21490         (return_label, naked_return_label, stack_slot_list, parm_birth_insn,
21491         frame_offset, stack_check_probe_note, arg_pointer_save_area,
21492         used_temp_slots avail_temp_slots, temp_slot_level,
21493         nonlocal_goto_handler_labels): Update accesstors.
21494         (rtl): New global variable.
21495         (struct function): Move some fileds to rtl_data.
21496         (get_arg_pointer_save_area): Update prototype.
21497         * emit-rtl.c (rtl): Declare.
21498         (regno_reg_rtx): Declare.
21499         (first_insn, last_insn, cur_insn_uid, last_location, first_label_num):
21500         Update.
21501         (gen_reg_rtx): Update.
21502         (init_virtual_regs): Do not tate emit_status argument.
21503         (init_emit): Do not allocate emit.
21504         * varasm.c (varasm_statuc): Move to function.h.
21505         (n_deferred_constatns): Update accestor.
21506         (init_varasm_status): Do not allocate varasm_status.
21507         (force_const_mem, get_pool_size, output_constant_pool): Update.
21508         * stmt.c (force_label_rtx): Do not use x_ prefixes.
21509         (expand_nl_goto_receiver): Update get_arg_pointer_save_area.
21510
21511 2008-03-31  Zdenek Dvorak  <ook@ucw.cz>
21512
21513         PR rtl-optimization/35729
21514         * loop-invariant.c (check_maybe_invariant): Disallow volatile memory
21515         references.
21516
21517 2008-03-31  H.J. Lu  <hongjiu.lu@intel.com>
21518
21519         PR target/32000
21520         * config/i386/i386.md (*movti_internal): Emit unaligned SSE
21521         load/store if memory is unaligned.
21522         (*movti_rex64): Likewise.
21523
21524         * config/i386/predicates.md (misaligned_operand): New.
21525
21526 2008-03-31  Andrew Pinski  <pinskia@gmail.com>
21527
21528         PR tree-opt/35431
21529         * tree-ssa-phiopt.c (conditional_replacement): Return early for
21530         complex types.
21531
21532 2008-03-31  Jan Beulich  <jbeulich@novell.com>
21533
21534         * config/ia64/constraints.md: Add 'j' constraint.
21535         * config/ia64/ia64.md (movsi_internal): Add addp4 case.
21536         (movdi_internal): Likewise.
21537
21538 2008-03-30  Volker Reichelt  <v.reichelt@netcologne.de>
21539
21540         PR c/35748
21541         * c-typeck.c (build_c_cast): Skip invalid fields in unions.
21542
21543 2008-03-30  H.J. Lu  <hongjiu.lu@intel.com>
21544
21545         PR target/35757
21546         * config/i386/i386.c (ix86_expand_sse_4_operands_builtin): Issue
21547         proper error message for the third argument on blendpd and
21548         blendps.
21549
21550         * config/i386/sse.md (blendbits): New.
21551         (sse4_1_blendp<ssemodesuffixf2c>): Use it.
21552
21553 2008-03-30  Eric Botcazou  <ebotcazou@adacore.com>
21554
21555         * fold-const.c (fold_binary) <BIT_IOR_EXPR>: Add missing conversions.
21556
21557 2008-03-30  Richard Guenther  <rguenther@suse.de>
21558
21559         PR middle-end/31023
21560         * fold-const.c (fold_sign_changed_comparison): Do leave
21561         conversions to base-types alone.
21562
21563 2008-03-29  Andrew Pinski  <andrew_pinski@playstation.sony.com>
21564
21565         * config/rs6000/rs6000.c (rs6000_stack_info): Don't force saving of
21566         the link register if one altivec register is be saved.
21567
21568 2008-03-30  Ben Elliston  <bje@au.ibm.com>
21569
21570         * final.c (final_scan_insn): Remove if (0) code.
21571
21572 2008-03-28  Volker Reichelt  <v.reichelt@netcologne.de>
21573
21574         * c-parser.c (c_parser_next_token_is_keyword): Simplify.
21575
21576 2008-03-28  H.J. Lu  <hongjiu.lu@intel.com>
21577
21578         * config/i386/sse.md (*and<mode>3): Pass <MODE>mode instead
21579         of V4SFmode to ix86_binary_operator_ok.
21580
21581 2008-03-28  Uros Bizjak  <ubizjak@gmail.com>
21582
21583         * config/i386/i386.c (override_options): Initialize
21584         ix86_veclib_handler to ix86_veclibabi_svml when
21585         -mveclibabi=svml is used.
21586         (ix86_veclibabi_svml): New function for SVML ABI style
21587         vectorization support.
21588         * doc/invoke.texi (-mveclibabi) [svml]: Document new target option.
21589
21590 2008-03-28  Rafael Espíndola  <espindola@google.com>
21591
21592         * fold-const.c (tree_unary_nonnegative_warnv_p): Make it public.
21593         (tree_binary_nonnegative_warnv_p): Make it public.
21594         (tree_single_nonnegative_warnv_p): Make it public.
21595         (tree_invalid_nonnegative_warnv_p): Make it public.
21596         (tree_unary_nonzero_warnv_p): Make it public.
21597         (tree_binary_nonzero_warnv_p): Make it public
21598         (tree_single_nonzero_warnv_p): Make it public.
21599         * tree-vrp.c (vrp_evaluate_conditional_warnv_with_ops): New function.
21600         (extract_range_from_binary_expr): Split the expr argument.
21601         (extract_range_from_unary_expr): Split the expr argument.
21602         (extract_range_from_comparison): Split the expr argument.
21603         (extract_range_from_expr): Use the new aux functions.
21604         (vrp_evaluate_conditional_warnv): Use
21605         vrp_evaluate_conditional_warnv_with_ops.
21606         * tree.h (tree_unary_nonzero_warnv_p): Declare.
21607         (tree_binary_nonzero_warnv_p): Declare.
21608         (tree_single_nonzero_warnv_p): Declare.
21609         (tree_expr_nonzero_warnv_p): Declare.
21610         (tree_unary_nonnegative_warnv_p): Declare.
21611         (tree_binary_nonnegative_warnv_p): Declare.
21612         (tree_single_nonnegative_warnv_p): Declare.
21613         (tree_invalid_nonnegative_warnv_p): Declare.
21614
21615 2008-03-28  Richard Guenther  <rguenther@suse.de>
21616
21617         PR tree-optimization/30317
21618         PR tree-optimization/30911
21619         PR tree-optimization/34793
21620         * tree-vrp.c (set_and_canonicalize_value_range): New function.
21621         (struct assert_locus_d): New member EXPR.
21622         (register_new_assert_for): Add EXPR parameter to support
21623         ASSERT_EXPR <name, expr OP limit>.
21624         (register_edge_assert_for_1): Adjust callers.
21625         (find_assert_locations): Likewise.
21626         (process_assert_insertions_for): Build condition from expression.
21627         (extract_range_from_assert): Handle ASSERT_EXPRs
21628         of the form ASSERT_EXPR <name, expr OP limit>.
21629         (register_edge_assert_for_2): New helper registering
21630         asserts for comparisons.  Recognize range tests of the form
21631         (unsigned)i - CST1 OP CST2.
21632         (register_edge_assert_for_1): Use it.
21633         (register_edge_assert_for): Likewise.
21634         (needs_overflow_infinity): Integer sub-types
21635         do not need overflow infinities.
21636         (vrp_val_is_max): The extreme values of integer sub-types
21637         are those of the base type.
21638         (vrp_val_is_min): Likewise.
21639         * tree.def (ASSERT_EXPR): Document extra allowed conditional
21640         expressions.
21641
21642 2008-03-28  Nick Clifton  <nickc@redhat.com>
21643
21644         PR target/31110
21645         * config/mn10300/mn10300.c (mn10300_secondary_reload_class):
21646         Return GENERAL_REGS for stack adjustment reloads.
21647
21648 2008-03-28  Andrew Pinski  <andrew_pinski@playstation.sony.com>
21649
21650         PR target/31334
21651         * config/rs6000/rs6000.c (rs6000_expand_vector_init): Create a
21652         const_vector when all the vectors are constant.
21653
21654 2008-03-27  Bob Wilson  <bob.wilson@acm.org>
21655
21656         * config/xtensa/xtensa.c (gen_float_relational): Handle unordered
21657         comparisons.
21658         * config/xtensa/xtensa.md (any_cond): Add unordered comparisons.
21659         (any_scc_sf): Add uneq, unlt, unle and unordered operators.
21660         (scc_sf): New.
21661         (s<code>_sf): Use new scc_sf attribute for opcode names.
21662
21663 2008-03-27  Tom Tromey  <tromey@redhat.com>
21664
21665         * doc/sourcebuild.texi, doc/install.texi, configure, aclocal.m4,
21666         configure.ac, Makefile.in, config/t-darwin, config/m32c/t-m32c,
21667         config/spu/t-spu-elf, config/i386/t-interix,
21668         config/i386/t-cygming, config/i386/x-i386, config/i386/t-cygwin,
21669         config/i386/x-darwin, config/i386/x-mingw32,
21670         config/i386/t-netware, config/i386/x-cygwin, config/i386/t-nwld,
21671         config/sh/t-sh, config/sh/t-symbian, config/x-linux,
21672         config/t-sol2, config/x-hpux, config/x-darwin, config/ia64/t-ia64,
21673         config/x-solaris, config/t-vxworks, config/m68k/t-uclinux,
21674         config/rs6000/x-rs6000, config/rs6000/x-darwin64,
21675         config/rs6000/x-darwin, config/rs6000/t-rs6000,
21676         config/score/t-score-elf, config/arm/t-strongarm-pe,
21677         config/arm/t-pe, config/arm/t-arm, config/arm/t-wince-pe,
21678         config/v850/t-v850, config/v850/t-v850e, config/bfin/t-bfin-linux:
21679         Revert automatic dependency patch.
21680
21681 2008-03-27  H.J. Lu  <hongjiu.lu@intel.com>
21682
21683         PR target/35657
21684         * config/i386/i386.c (ix86_function_arg_boundary): Align
21685         decimal floating point to its natural boundary.
21686
21687 2008-03-27  Richard Guenther  <rguenther@suse.de>
21688
21689         PR middle-end/35716
21690         * fold-const.c (fold_comparison): Restrict distinct decl
21691         comparison folding to VAR_DECLs and PARM_DECLs.  Do not
21692         solely rely on operand_equal_p.
21693
21694 2008-03-27  Richard Guenther  <rguenther@suse.de>
21695
21696         PR c/32511
21697         * c-common.c (handle_weak_attribute): Reject combination of
21698         weak and inline.
21699
21700 2008-03-27  Richard Guenther  <rguenther@suse.de>
21701
21702         PR tree-optimization/32810
21703         * tree-ssa-ccp.c (get_symbol_constant_value): Strip useless
21704         conversions from DECL_INITIAL.
21705         (fold_const_aggregate_ref): Likewise from constructor elements.
21706
21707 2008-03-27  Zdenek Dvorak  <ook@ucw.cz>
21708
21709         * tree-affine.h (aff_combination_expand): Declare.
21710         (get_inner_reference_aff): Likewise.
21711         * tree-affine.c (aff_combination_expand): Split out from
21712         tree_to_aff_combination_expand.
21713         (get_inner_reference_aff): New function.
21714         * tree-parloops.c (loop_parallel_p): Free vectorizer info.
21715         * tree-ssa-loop-im.c: Include tree-affine.h and pointer-set.h.
21716         (struct lim_aux_data): sm_done field removed.
21717         (mem_ref_loc_p, mem_ref_locs_p): New types.
21718         (struct mem_ref): Added id, stored, accesses_in_loop,
21719         indep_loop, dep_loop, indep_ref, dep_ref fields.
21720         Removed is_stored, locs and next fields.
21721         (memory_accesses): New variable.
21722         (movement_possibility): Do not allow moving statements
21723         that store to memory.
21724         (outermost_indep_loop, simple_mem_ref_in_stmt, mem_ref_in_stmt):
21725         New functions.
21726         (determine_max_movement): For statements with memory references,
21727         find the outermost loop in that the reference is independent.
21728         (move_computations_stmt): Mark the virtual operands for renaming.
21729         (memref_free, mem_ref_alloc, mem_ref_locs_alloc, mark_ref_stored,
21730         gather_mem_refs_stmt, gather_mem_refs_in_loops, vtoe_hash, vtoe_eq,
21731         vtoe_free, record_vop_access, get_vop_accesses, get_vop_stores,
21732         add_vop_ref_mapping, create_vop_ref_mapping_loop,
21733         create_vop_ref_mapping, analyze_memory_references,
21734         cannot_overlap_p, mem_refs_may_alias_p, rewrite_mem_ref_loc,
21735         get_all_locs_in_loop, ref_always_accessed_p,
21736         refs_independent_p, record_indep_loop, ref_indep_loop_p_1,
21737         ref_indep_loop_p, can_sm_ref_p, find_refs_for_sm,
21738         store_motion_loop, store_motion): New functions.
21739         (struct vop_to_refs_elt): New type.
21740         (record_mem_ref_loc, free_mem_ref_locs, rewrite_mem_refs,
21741         memref_hash, memref_eq, hoist_memory_references): Rewritten.
21742         (schedule_sm): Replaced by...
21743         (execute_sm): ... this.
21744         (determine_lsm_ref, hoist_memory_references,
21745         loop_suitable_for_sm, gather_mem_refs_stmt, gather_mem_refs,
21746         find_more_ref_vops, free_mem_ref, free_mem_refs,
21747         determine_lsm_loop, determine_lsm): Removed.
21748         (tree_ssa_lim_finalize): Free data structures used by store motion.
21749         (tree_ssa_lim): Call analyze_memory_references.  Use
21750         store_motion instead of determine_lsm.
21751
21752 2008-03-27  Paolo Bonzini  <bonzini@gnu.org>
21753
21754         * config.cc (m68hc11, m6811, m68hc12, m6812): Add usegas.h,
21755         rename tmake_file to m68hc11/t-m68hc11.
21756         (mcore): Set inhibit_libc to true.
21757         * config.host (alpha*-dec-*vms*): Set extra_programs.
21758         (interix3*): Don't use host_xmake_file.
21759         * configure.ac: Let config.gcc override inhibit_libc.
21760         * configure: Regenerate.
21761
21762         * config/alpha/x-vms (EXTRA_PROGRAMS): Remove.
21763         * config/t-openbsd-thread: Remove commented out lines.
21764
21765         * config/x-interix: Remove.
21766
21767         * config/m68hc11/t-m68hc11-gas: Rename to...
21768         * config/m68hc11/t-m68hc11: ... this.  Remove T_CPPFLAGS.
21769
21770         * config/mcore/t-mcore: Remove T_CFLAGS.
21771         * config/mcore/t-mcore-pe: Likewise.
21772
21773 2008-03-27  Paolo Bonzini  <bonzini@gnu.org>
21774
21775         * configure.ac: Replace custom __GNU_SOURCE test with
21776         AC_USE_SYSTEM_EXTENSIONS.  Move it earlier.
21777         * aclocal.m4: Regenerate.
21778         * configure: Regenerate.
21779         * config.in: Regenerate.
21780
21781 2008-03-27  Richard Guenther  <rguenther@suse.de>
21782
21783         * fold-const.c (target.h): Include.
21784         (fold_comparison): Fold comparison of addresses of decls
21785         that bind locally or of constants.  Consolidate address folding code.
21786         * tree-vrp.c (operand_less_p): Deal with non-INTEGER_CST
21787         results from fold_binary_to_constant.
21788         (compare_values_warnv): Likewise.
21789
21790 2008-03-27  Andrew Pinski  <pinskia@gmail.com>
21791
21792         PR middle-end/35429
21793         * fold-const.c (fold_truthop): Check for integeral types when folding
21794         a == 0 && b == 0 and a != 0 || b != 0 .
21795
21796 2008-03-26  Eric Botcazou  <ebotcazou@adacore.com>
21797
21798         * tree.c (get_unwidened): Remove code fiddling with COMPONENT_REF.
21799
21800 2008-03-26  Andreas Schwab  <schwab@suse.de>
21801
21802         * doc/invoke.texi: Fix use of @item vs. @itemx.
21803
21804 2008-03-26  Tom Tromey  <tromey@redhat.com>
21805
21806         * Makefile.in (build/gensupport.o, build/print-rtl.o,
21807         build/read-rtl.o, build/rtl.o, build/gencondmd.o, build/genattr.o,
21808         build/genattrtab.o, build/genautomata.o, build/gencheck.o,
21809         build/gencodes.o, build/genconditions.o, build/genconfig.o,
21810         build/genconstants.o, build/genemit.o, build/genextract.o,
21811         build/genflags.o, build/genmddeps.o, build/genopinit.o,
21812         build/genoutput.o, build/genpeep.o, build/genrecog.o): Depend on
21813         options.h.
21814
21815 2008-03-26  Richard Guenther  <rguenther@suse.de>
21816
21817         Revert
21818         2008-03-26  Richard Guenther  <rguenther@suse.de>
21819
21820         * fold-const.c (target.h): Include.
21821         (fold_comparison): Fold comparison of addresses of two decls
21822         that bind locally.  Consolidate address folding code.
21823
21824 2008-03-26  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
21825
21826         * builtins.c (expand_builtin_pow, fold_builtin_cabs,
21827         fold_builtin_sqrt, fold_builtin_cbrt, fold_builtin_logarithm,
21828         fold_builtin_hypot, fold_builtin_pow): Remove uses of dconst3,
21829         dconstsqrt2, dconstthird, dconste and/or dconst10.
21830         * config/i386/i386.c (ix86_emit_swsqrtsf): Likewise.
21831         * emit-rtl.c (dconst3, dconst10, dconstm2, dconstthird,
21832         dconstsqrt2, dconste): Delete.
21833         (init_emit_once): Likewise.  Simplify initializing dconstm1.
21834         Constify variable.
21835         * real.c (get_real_const): New.
21836         * real.h (dconst3, dconst10, dconstm2, dconstthird,
21837         dconstsqrt2, dconste): Delete.
21838         (real_value_const, get_real_const): New.
21839
21840 2008-03-26  H.J. Lu  <hongjiu.lu@intel.com>
21841
21842         * config/i386/cygming.h (BIGGEST_ALIGNMENT): Removed.
21843
21844         * config/i386/i386.c (ix86_function_arg_boundary): Check
21845         BIGGEST_ALIGNMENT instead of 128.
21846         (setup_incoming_varargs_64): Likewise.
21847
21848 2008-03-26  Tom Tromey  <tromey@redhat.com>
21849
21850         * Makefile.in (DEPFILES): Add missing '/'.
21851
21852 2008-03-26  Richard Guenther  <rguenther@suse.de>
21853
21854         * fold-const.c (target.h): Include.
21855         (fold_comparison): Fold comparison of addresses of two decls
21856         that bind locally.  Consolidate address folding code.
21857
21858 2008-03-26  Nick Clifton  <nickc@redhat.com>
21859
21860         PR target/31232
21861         * config/stormy16/stormy16.c (xstormy16_legitimate_address_p): Do
21862         not allow INT+INT as a legitimate addressing mode.
21863
21864 2008-03-26  Richard Guenther  <rguenther@suse.de>
21865
21866         * tree-flow.h (widen_bitfield): Remove declaration.
21867         * tree-ssa-ccp.c (visit_assignment): Remove unneeded code.
21868         (widen_bitfield): Remove function.
21869         * tree-ssa-dom.c (record_equivalences_from_stmt): Remove unneeded
21870         code.
21871
21872 2008-03-25  Andrew Pinski  <andrew_pinski@playstation.sony.com>
21873
21874         PR target/31558
21875         * config/rs6000/rs6000-c.c (rs6000_builtin_type_compatible): Handle
21876         error_mark_node's.
21877
21878 2008-03-25  Richard Sandiford  <rsandifo@nildram.co.uk>
21879
21880         PR rtl-optimization/35232
21881         * reload1.c (reg_reloaded_call_part_clobbered): Clarify comment.
21882         (forget_old_reloads_1, forget_marked_reloads): Don't clear
21883         reg_reloaded_call_part_clobbered here.
21884         (reload_regs_reach_end_p): New function.
21885         (reload_reg_rtx_for_input): New variable.
21886         (reload_reg_rtx_for_output): Likewise.
21887         (emit_input_reload_insns): Use reloadreg rather than rl->reg_rtx
21888         when reassigning a pseudo register.  Load reloadreg from
21889         reload_reg_rtx_for_input, moving the mode and register
21890         calculation to...
21891         (do_input_reload): ...here.  Use the mode-adjusted reg_rtx
21892         instead of the original when deciding whether an input reload
21893         would be a no-op or whether an output reload can be deleted.
21894         (emit_output_reload_insns): Use the mode-adjusted reg_rtx
21895         when setting up new_spill_reg_store.  Load it from
21896         reload_reg_rtx_for_output, moving the mode and register
21897         calculation to...
21898         (do_output_reload): ...here.  Use the mode-adjusted reg_rtx
21899         instead of the original when deciding whether an output reload
21900         would be a no-op.  Do the same when modifying insn notes.
21901         Use rtx_equal_p instead of == to compare the registers.
21902         (inherit_piecemeal_p): Take a mode and two register numbers
21903         as argument.
21904         (emit_reload_insns): Clear new_spill_reg_store for every hard
21905         register in the reload register.  Remove spill registers
21906         from reg_reloaded_valid before considering whether to record
21907         inheritance information for them.  Use reload_reg_rtx_for_output
21908         instead of reg_rtx when recording output reloads.  Use
21909         reload_reg_rtx_for_input instead of reg_rtx when recording
21910         input reloads.  Set or clear reg_reloaded_call_part_clobbered
21911         at the same time as setting reg_reloaded_valid.
21912         (delete_output_reload): Add a new_reload_reg parameter and use it
21913         instead of rld[j].reg_rtx.
21914         (emit_input_reload_insns, do_input_reload, do_output_reload): Adjust
21915         calls accordingly.
21916
21917 2008-03-25  Tom Tromey  <tromey@redhat.com>
21918
21919         * Makefile.in (build/gensupport.o): Depend on insn-modes.h.
21920         (build/genattr.o): Likewise.
21921         (build/genattrtab.o): Likewise.
21922         (build/gencodes.o): Likewise.
21923         (build/genconfig.o): Likewise.
21924         (build/genconstants.o): Likewise.
21925         (build/genemit.o): Likewise.
21926         (build/genextract.o): Likewise.
21927         (build/genflags.o): Likewise.
21928
21929 2008-03-25  Bob Wilson  <bob.wilson@acm.org>
21930
21931         * config/xtensa/xtensa.c (xtensa_va_start): Use build_int_cst
21932         instead of size_int for integer types.
21933         (xtensa_gimplify_va_arg_expr): Likewise.  Convert index to sizetype
21934         to match type of MINUS_EXPR.
21935
21936 2008-03-25  Tom Tromey  <tromey@redhat.com>
21937
21938         * configure: Rebuilt.
21939         * configure.ac (BUILD_DEPMODE): Extract CCDEPMODE from temporary
21940         Makefile.
21941
21942 2008-03-25  Tom Tromey  <tromey@redhat.com>
21943
21944         * config/x-solaris (host-solaris.o): Update.
21945         * config/x-linux (host-linux.o): Update.
21946         * config/x-hpux (host-hpux.o): Update.
21947         * config/x-darwin (host-darwin.o): Update.
21948         * config/v850/t-v850e (v850-c.o): Update.
21949         * config/v850/t-v850 (v850-c.o): Update.
21950         * config/t-vxworks (vxworks.o): Update.
21951         * config/t-sol2 (sol2-c.o, sol2.o): Update.
21952         * config/t-darwin (darwin.o, darwin-c.o, darwin-driver.o): Update.
21953         * config/spu/t-spu-elf (spu-c.o): Update.
21954         (spu.o): Remove.
21955         * config/sh/t-symbian (sh-c.o): Update.
21956         (symbian.o): Update.
21957         * config/sh/t-sh (sh-c.o): Update.
21958         * config/score/t-score-elf (score7.o, score3.o): Update.
21959         * config/rs6000/x-rs6000 (driver-rs6000.o): Update.
21960         * config/rs6000/x-darwin64 (host-ppc64-darwin.o): Update.
21961         * config/rs6000/x-darwin (host-ppc-darwin.o): Update.
21962         * config/rs6000/t-rs6000 (rs6000-c.o): Update.
21963         (rs6000.o): Remove.
21964         * config/m68k/t-uclinux (generated_files): Add sysroot-suffix.h.
21965         * config/m32c/t-m32c (m32c-pragma.o): Update.
21966         * config/ia64/t-ia64 (ia64-c.o): Update.
21967         * config/i386/x-mingw32 (host-mingw32.o): Update.
21968         * config/i386/x-i386 (driver-i386.o): Update.
21969         * config/i386/x-darwin (host-i386-darwin.o): Update.
21970         * config/i386/x-cygwin (host-cygwin.o): Update.
21971         * config/i386/t-nwld (nwld.o): Update.
21972         * config/i386/t-netware (netware.o): Update.
21973         * config/i386/t-interix (winnt.o): Update.
21974         * config/i386/t-cygwin (cygwin1.o, cygwin2.o): Update.
21975         * config/i386/t-cygming (winnt.o, winnt-cxx.o, winnt-stubs.o,
21976         msformat-c.o): Update.
21977         * config/bfin/t-bfin-linux (generated_files): Add
21978         linux-sysroot-suffix.h.
21979         * config/arm/t-wince-pe (pe.o): Update.
21980         * config/arm/t-strongarm-pe (pe.o): Update.
21981         * config/arm/t-pe (pe.o): Update.
21982         * config/arm/t-arm (arm-c.o): Update.
21983         * doc/install.texi (Prerequisites): Require make 3.80.
21984         * Makefile.in: Remove .o targets.
21985         (CCDEPMODE, DEPDIR, depcomp, BUILD_DEPMODE): New variables.
21986         (OBSTACK_H, FIBHEAP_H, PARTITION_H, MD5_H, BCONFIG_H): Remove.
21987         (simple_generated_h, simple_generated_c): Move earlier.
21988         (generated_files): New variable.
21989         (TARGET_H, MACHMODE_H, HOOKS_H, HOSTHOOKS_DEF_H, LANGHOOKS_DEF_H,
21990         TARGET_DEF_H, RTL_BASE_H, RTL_H, PARAMS_H, BUILTINS_DEF, TREE_H,
21991         BASIC_BLOCK_H, GCOV_IO_H, COVERAGE_H, DEMANGLE_H, RECOG_H,
21992         ALIAS_H, EMIT_RTL_H, FLAGS_H, FUNCTION_H, EXPR_H, OPTABS_H,
21993         REGS_H, RA_H, RESOURCE_H, SCHED_INT_H, INTEGRATE_H, CFGLAYOUT_H,
21994         CFGLOOP_H, IPA_UTILS_H, IPA_REFERENCE_H, IPA_TYPE_ESCAPE_H,
21995         CGRAPH_H, DF_H, RESOURCE_H, DDG_H, GCC_H, GGC_H, TIMEVAR_H,
21996         INSN_ATTR_H, C_COMMON_H, C_PRAGMA_H, C_TREE_H, SYSTEM_H,
21997         PREDICT_H, DECNUM_H, MKDEPS_H, SYMTAB_H, TREE_DUMP_H,
21998         TREE_GIMPLE_H, TREE_FLOW_H, TREE_SSA_LIVE_H, PRETTY_PRINT_H,
21999         DIAGNOSTIC_H, C_PRETTY_PRINT_H, SCEV_H, LAMBDA_H, TREE_DATA_REF_H,
22000         VARRAY_H, TREE_INLINE_H, REAL_H, DBGCNT_H, EBIMAP_H): Remove.
22001         (.c.o): Remove.
22002         (COMPILE.base, COMPILE): New variables.
22003         (%.o): New pattern rule.
22004         (ALL_HOST_OBJS): New variable.
22005         (xgcc$(exeext), cpp$(exeext)): Remove extra version.o.
22006         (dummy-checksum.o, cc1-checksum.o): Remove.
22007         (DRIVER_SHLIB): New variable.
22008         (DRIVER_DEFINES): Use it.
22009         (gencondmd.c): Move out of build/.
22010         (s-conditions): Update.
22011         (BUILDCOMPILE.base, BUILDCOMPILE): New variables.
22012         (ALL_BUILD_OBJS): Likewise.
22013         (build/%.o): Use BUILDCOMPILE.
22014         (build/ggc-none.o, build/ggc-none.o, build/min-insn-modes.o,
22015         build/print-rtl.o, build/read-rtl.o, build/rtl.o, build/vec.o,
22016         build/gencondmd.o, build/genattrtab.o, build/genautomata.o,
22017         build/gencheck.o, build/gencodes.o, build/genconditions.o,
22018         build/genconfig.o, build/genconstants.o, build/genemit.o,
22019         build/genextract.o, build/genflags.o, build/genmddeps.o,
22020         build/genopinit.o, build/genoutput.o, build/genpeep.o,
22021         build/genpreds.o, build/genrecog.o, build/gcov-iov.o,
22022         build/gen-protos.o, build/scan.o, build/fix-header.o,
22023         build/scan-decls.o): Simplify.
22024         (collect2.o, c-opts.o, gcc.o, gccspec.o, gcc-options.o,
22025         cppdefault.o, protoize.o, unprotoize.o, intl.o, version.o,
22026         prefix.o, toplev.o): Reduce to variable setting.
22027         (libbackend.o): Use COMPILE.  Remove most dependencies.  Move later.
22028         ($(out_object_file), gcc-options.o): New targets.
22029         ($(ALL_HOST_OBJS)): New target.  Include dependency files.
22030         * configure: Rebuilt.
22031         * configure.ac: Call ZW_CREATE_DEPDIR, ZW_PROG_COMPILER_DEPENDENCIES.
22032         * doc/sourcebuild.texi (Front End Directory): Document new variable.
22033
22034 2008-03-25  Douglas Gregor  <doug.gregor@gmail.com>
22035
22036         * c-common.c (c_sizeof_or_alignof_type): If we're not allowed to
22037         complain when we hit an error, return ERROR_MARK_NODE.
22038
22039 2008-03-25  Naveen.H.S  <naveen.hs@kpitcummins.com>
22040
22041         * config/sh/constraints.md (Pso, Psz): New constraints.
22042         * config/sh/sh.c (print_operand): Add %V and %W operand codes.
22043         * config/sh/sh.md (*andsi3_bclr, *iorsi3_bset): New insns.
22044
22045 2008-03-25  Naveen.H.S  <naveen.hs@kpitcummins.com>
22046
22047         * config/sh/sh.c (sh_expand_t_scc): Emit movrt for SH2A if possible.
22048         * config/sh/sh.md (xorsi3_movrt, movrt): New insns.
22049
22050 2008-03-25  Naveen.H.S  <naveen.hs@kpitcummins.com>
22051
22052         * config/sh/sh.md (prefetch): Add condition for SH2A target.
22053         (prefetch_sh2a): New.
22054
22055 2008-03-25  Jayant Sonar  <Jayant.sonar@kpitcummins.com>
22056             Naveen.H.S  <naveen.hs@kpitcummins.com>
22057
22058         * config/sh/constraints.md (I28): New constraint.
22059         * config/sh/sh.c (broken_move): Add support for movi20s.
22060         * config/sh/sh.md (movsi_ie): Add the alternative for movi20s.
22061
22062 2008-03-25  Anil Paranjape  <anil.paranjape@kpitcummins.com>
22063             Jayant Sonar  <Jayant.sonar@kpitcummins.com>
22064             Naveen.H.S  <naveen.hs@kpitcummins.com>
22065
22066         * config/sh/sh.c (SH_ATTRIBUTES): Define.
22067         (SYMBOL_FLAG_FUNCVEC_FUNCTION): Define.
22068         (print_operand): Handle resbank in %@ operand code.
22069         (sh_encode_section_info): New.
22070         (push_regs): Add conditions for resbank.
22071         (sh_expand_epilogue): Likewise.
22072         (sh_insert_attributes): Likewise.
22073         (sh_attribute_table): Likewise.
22074         (sh_handle_resbank_handler_attribute): New.
22075         (sh2a_handle_function_vector_handler_attribute): New.
22076         (sh2a_is_function_vector_call): New.
22077         (sh2a_get_function_vector_number): New.
22078         (sh2a_function_vector_p): New.
22079         (sh_cfun_resbank_handler_p): New.
22080         * config/sh/sh.md (calli): Emit jsr/n if possible.
22081         (calli_tbr_rel): New.
22082         (calli_pcrel): Emit jsr/n if possible.
22083         (return_i): Emit rts/n if possible.
22084         (call_valuei_tbr_rel): New.
22085         (call_valuei_pcrel): Add condition for SH2A target.
22086         (call_value): Likewise.
22087         * config/sh/sh-protos.h (sh_cfun_resbank_handler_p): Declare.
22088         (sh2a_get_function_vector_number): Likewise.
22089         (sh2a_is_function_vector_call): Likewise.
22090         * doc/extend.texi: Document TBR relative addressing of SH2A.
22091         (resbank): Add description for SH2A.
22092
22093 2008-03-24  Richard Guenther  <rguenther@suse.de>
22094
22095         PR c/22371
22096         * gimplify.c (gimplify_modify_expr): For frontend type-correct
22097         pointer assignments change conversions according to middle-end rules.
22098         (gimplify_modify_expr_rhs): Deal with NULL TARGET_EXPR_INITIAL.
22099         * configure.ac: Include type checking in yes.
22100         * configure: Regenerate.
22101
22102 2008-03-24  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
22103
22104         * diagnostic.c (diagnostic_count_diagnostic): Delete.
22105         (diagnostic_report_diagnostic): Update. Handle ICEs here.
22106
22107 2008-03-24  Nathan Sidwell  <nathan@codesourcery.com>
22108
22109         * gthr-vxworks.h (UNUSED): Define.
22110
22111 2008-03-23  H.J. Lu  <hongjiu.lu@intel.com>
22112
22113         * config/i386/i386.h (STATIC_CHAIN_REGNUM): Use R10_REG and CX_REG.
22114
22115 2008-03-23  Zuxy Meng <zuxy.meng@gmail.com>
22116
22117         * doc/extend.texi (Function Attributes): Add missing comma in the
22118         example of the "alloc_size" attribute.
22119
22120 2008-03-23  Uros Bizjak  <ubizjak@gmail.com>
22121
22122         Revert:
22123         2008-03-05  H.J. Lu  <hongjiu.lu@intel.com>
22124
22125         * config/i386/i386-modes.def: Use 4 byte alignment on DI for
22126         32bit host.
22127
22128         2008-03-19  Uros Bizjak  <ubizjak@gmail.com>
22129
22130         PR target/35496
22131         * stor-layout.c (update_alignment_for_field): Set minimum alignment
22132         of the underlying type of a MS bitfield layout to the natural
22133         alignment of the type.
22134
22135         2008-03-22  Uros Bizjak  <ubizjak@gmail.com>
22136
22137         * config/i386/i386.c (assign_386_stack_local): Align DImode slots
22138         to their natural alignment to avoid store forwarding stalls.
22139
22140 2008-03-22  Richard Guenther  <rguenther@suse.de>
22141
22142         * tree-cfg.c (verify_expr): Recurse again for invariant addresses.
22143         For PHI nodes verify the address is invariant.
22144         * tree-ssa-ccp.c (ccp_decl_initial_min_invariant): Remove.
22145         (get_symbol_constant_value): Use is_gimple_min_invariant.
22146         (maybe_fold_stmt_indirect): Likewise.
22147
22148 2008-03-22  Richard Sandiford  <rsandifo@nildram.co.uk>
22149
22150         PR rtl-optimization/33927
22151         * Makefile.in (dse.o): Depend on $(TM_P_H).
22152         * expr.h (extract_low_bits): Declare.
22153         * expmed.c (extract_low_bits): New function.
22154         * rtlhooks.c (gen_lowpart_general): Generalize SUBREG handling.
22155         * dse.c: Include tm_p.h.
22156         (find_shift_sequence): Remove the read_reg argument and return the
22157         read value.  Emit the instructions instead of returning them.
22158         Iterate on new_mode rather than calculating it each time.
22159         Check MODES_TIEABLE_P.  Use simplify_gen_subreg to convert the
22160         source to NEW_MODE and extract_low_bits to convert the shifted
22161         value to READ_MODE.
22162         (replace_read): Allow the load and store to have different mode
22163         classes.  Use extract_low_bits when SHIFT == 0.  Create the shift
22164         or extraction instructions before trying the replacement.  Update
22165         dump-file code accordingly, avoiding use of REGNO (store_info->rhs).
22166
22167 2008-03-22  Uros Bizjak  <ubizjak@gmail.com>
22168
22169         * config/i386/i386.c (assign_386_stack_local): Align DImode slots
22170         to their natural alignment to avoid store forwarding stalls.
22171
22172 2008-03-21  Andrew Pinski  <andrew_pinski@playstation.sony.com>
22173
22174         PR target/27946
22175         * config/rs6000/rs6000.md (floatdidf2): Discouraging fprs and
22176         encouraging but not allowing gprs for input;
22177         change the input constraint to !f#r.
22178         (fix_truncdfdi2): Discouraging fprs and encouraging but not allowing
22179         gprs for output;
22180         change the output constraint to !f#r.
22181
22182 2008-03-21  Uros Bizjak  <ubizjak@gmail.com>
22183
22184         PR target/13958
22185         * config/i386/i386.md ("*floatunssi<mode2>_1"): New pattern with
22186         corresponding post-reload splitters.
22187         ("floatunssi<mode>2"): Expand to unsigned_float x87 insn pattern
22188         when x87 FP math is selected.
22189         * config/i386/i386-protos.h (ix86_expand_convert_uns_sixf_sse):
22190         New function prototype.
22191         * config/i386/i386.c (ix86_expand_convert_uns_sixf_sse): New
22192         unreachable function to ease macroization of insn patterns.
22193
22194 2008-03-21  Martin Jambor  <mjambor@suse.cz>
22195
22196         * tree-data-ref.c (dump_data_dependence_relation): Avoid data
22197         reference dumps if ddr is NULL or dependence is unknown.
22198
22199 2008-03-20  Kaz Kojima  <kkojima@gcc.gnu.org>
22200
22201         * config/sh/linux-atomic.asm (ATOMIC_TEST_AND_SET): Take
22202         unsigned extension into account.
22203         (ATOMIC_COMPARE_AND_SWAP): Likewise.
22204         (ATOMIC_FETCH_AND_OP, ATOMIC_FETCH_AND_COMBOP): Likewise.
22205         Do computations on a scratch register.
22206
22207 2008-03-21  Richard Guenther  <rguenther@suse.de>
22208
22209         * tree-scalar-evolution.c (chrec_contains_symbols_defined_in_loop):
22210         Use is_gimple_min_invariant instead of TREE_INVARIANT.
22211         * tree-ssa-loop-ivopts.c (force_expr_to_var_cost): Likewise.
22212         * tree-ssa-dom.c (record_equality): Likewise.
22213         * tree-inline.c (copy_body_r): Likewise.
22214         * tree-ssa-pre.c (make_values_for_stmt): Remove test for
22215         TREE_INVARIANT.
22216
22217 2008-03-20  Kaz Kojima  <kkojima@gcc.gnu.org>
22218
22219         * config/sh/sh.c (split_branches): Pass zero to redirect_jump
22220         as 'delete_unused' argument.
22221
22222 2008-03-20  Richard Guenther  <rguenther@suse.de>
22223
22224         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Remove
22225         special casing of constant qualifiers.
22226         * tree-ssa.c (useless_type_conversion_p_1): Instead do not
22227         care about them in general.
22228         * tree-ssa-ccp.c (ccp_fold): Addresses are constant or not
22229         regardless of their type.
22230         (fold_stmt_r): Forcefully fold *& if we end up with that.
22231
22232 2008-03-20  Paul Brook  <paul@codesourcery.com>
22233
22234         * config.gcc (arm*-*-uclinux*): Remove duplicate arm/uclinux-elf.h.
22235         * config/arm/uclinux-eabi.h (SUBTARGET_EXTRA_LINK_SPEC): Add extra
22236         linker flags.
22237         * config/arm/bpabi.h (SUBTARGET_EXTRA_LINK_SPEC): Provide default
22238         definition.
22239         (LINK_SPEC): Use SUBTARGET_EXTRA_LINK_SPEC.
22240         * config/arm/unwind-arm.h (_Unwind_decode_target2): Add uClinux.
22241
22242 2008-03-20  Volker Reichelt  <v.reichelt@netcologne.de>
22243
22244         * common.opt (Wmudflap): New option.
22245         * tree-mudflap.c (mf_xform_derefs_1): Guard warning by OPT_Wmudflap.
22246         (mx_register_decls): Likewise.
22247         (mudflap_finish_file): Likewise.
22248         * doc/invoke.texi: Document -Wno-mudflap.
22249
22250 2008-03-20  Kai Tietz  <kai.tietz@onevision.com>
22251
22252         * c-format.c (replace_format_name_to_system_name): New.
22253         (cmp_attribs): New.
22254         (convert_format_name_to_system_name): New.
22255         (decode_format_attr): Add use of convert_format_name_to_system_name.
22256         (format_types_orig): Add gnu_ prefix to names.
22257         (check_format_info_main): Special treating of \0 escaped names for
22258         supporting multi-character format specifiers as I32, I64.
22259         (TARGET_OVERRIDES_FORMAT_ATTRIBUTES): Use of user defined attributes.
22260         (gnu_target_overrides_format_attributes): New.
22261         * c-format.h: Add structure target_ovr_attr to hold
22262         system specific formatter names.
22263         * config.gcc: Add for x86&x86_64 cygwin and mingw32 targets the
22264         msformat-c.o file to c_target_objs and cxx_target_objs.
22265         * config/i386/mingw32.h (TARGET_OVERRIDES_FORMAT_ATTRIBUTES): New.
22266         (TARGET_OVERRIDES_FORMAT_ATTRIBUTES_COUNT): New.
22267         (TARGET_N_FORMAT_TYPES): New.
22268         * config/i386/msformat-c.c: New.
22269         * config/i386/t-cygming: Add build rule for msformat-c.o.
22270         * doc/extend.texi: Add new format names gnu_* and ms_* and
22271         further details.
22272         * doc/tm.texi: (TARGET_OVERRIDES_FORMAT_ATTRIBUTES): New.
22273
22274 2008-03-20  Ira Rosen  <irar@il.ibm.com>
22275
22276         * doc/invoke.texi (-O3): Add -ftree-vectorize to the list of
22277         optimizations turned on under -O3.
22278         (ftree-vectorize): Add that the flag is turned on with -O3.
22279
22280 2008-03-20  Ben Elliston  <bje@au.ibm.com>
22281
22282         * regmove.c (try_auto_increment): Fix spelling error in comment.
22283         * final.c (final_scan_insn): Likewise.
22284
22285 2008-03-20  Uros Bizjak  <ubizjak@gmail.com>
22286
22287         PR target/14552
22288         * config/i386/mmx.md (*mov<mode>_internal_rex64"): Adjust register
22289         allocator preferences for "y" and "r" class registers.
22290         ("*mov<mode>_internal"): Ditto.
22291         ("*movv2sf_internal_rex64"): Ditto.
22292         ("*movv2sf_internal"): Ditto.
22293
22294 2008-03-19  Michael Matz  <matz@suse.de>
22295
22296         PR middle-end/35616
22297         * calls.c (expand_call): Check overlap of arguments with call
22298         address for sibcalls.
22299
22300 2008-03-19  Uros Bizjak  <ubizjak@gmail.com>
22301
22302         PR target/35496
22303         * stor-layout.c (update_alignment_for_field): Set minimum alignment
22304         of the underlying type of a MS bitfield layout to the natural
22305         alignment of the type.
22306
22307 2008-03-19  Jan Hubicka  <jh@suse.cz>
22308
22309         PR other/35094
22310         * toplev.c (decode_d_option): Handle all CPP flags.
22311         * tree-vrp.c: Update tree_pass descriptors.
22312         * regrename.c: Update tree_pass descriptors.
22313         * fwprop.c: Update tree_pass descriptors.
22314         * doc/invoke.texi: Remove documentation of dropped -d? flags.
22315         * tree-into-ssa.c: Update tree_pass descriptors.
22316         * tree-dump.c: Update tree_pass descriptors.
22317         * tree-complex.c: Update tree_pass descriptors.
22318         * tree-dump.h: Update tree_pass descriptors.
22319         * see.c: Update tree_pass descriptors.
22320         * cgraphbuild.c: Update tree_pass descriptors.
22321         * tracer.c: Update tree_pass descriptors.
22322         * tree-loop-distribution.c: Update tree_pass descriptors.
22323         * cgraph.c: Update tree_pass descriptors.
22324         * postreload-gcse.c: Update tree_pass descriptors.
22325         * postreload.c: Update tree_pass descriptors.
22326         * tree-ssa-loop-ch.c: Update tree_pass descriptors.
22327         * tree-tailcall.c: Update tree_pass descriptors.
22328         * tree-pass.h (tree_opt_pass): Rename to ...
22329         (opt_pass) ... this one; add "type" field and remove letter field.
22330         (gimple_opt_pass, rtl_opt_pass, simple_ipa_opt_pass): New.
22331         (execute_pass_list, execute_ipa_pass_list, all_passes, all_ipa_passes,
22332         all_lowering_passes): Update declaration.
22333         * ipa-cp.c: Update tree_pass descriptors.
22334         * final.c: Update tree_pass descriptors.
22335         * omp-low.c: Update tree_pass descriptors.
22336         * tree-ssa-dse.c: Update tree_pass descriptors.
22337         * ipa-reference.c: Update tree_pass descriptors.
22338         * tree-ssa-uncprop.c: Update tree_pass descriptors.
22339         * auto-inc-dec.c: Update tree_pass descriptors.
22340         * reorg.c: Update tree_pass descriptors.
22341         * cgraphunit.c: Update tree_pass descriptors.
22342         * tree-ssa-copyrename.c: Update tree_pass descriptors.
22343         * tree-ssa-ccp.c: Update tree_pass descriptors.
22344         * df-core.c: Update tree_pass descriptors.
22345         * mode-switching.c: Update tree_pass descriptors.
22346         * tree-nomudflap.c: Update tree_pass descriptors.
22347         * modulo-sched.c: Update tree_pass descriptors.
22348         * ipa-pure-const.c: Update tree_pass descriptors.
22349         * cse.c: Update tree_pass descriptors.
22350         * web.c: Update tree_pass descriptors.
22351         * tree-stdarg.c: Update tree_pass descriptors.
22352         * tree-ssa-math-opts.c: Update tree_pass descriptors.
22353         * tree-ssa-dom.c: Update tree_pass descriptors.
22354         * tree-nrv.c: Update tree_pass descriptors.
22355         * tree-ssa-alias.c: Update tree_pass descriptors.
22356         * loop-init.c: Update tree_pass descriptors.
22357         * gimple-low.c: Update tree_pass descriptors.
22358         * ipa-inline.c: Update tree_pass descriptors.
22359         * tree-ssa-sink.c: Update tree_pass descriptors.
22360         * global.c: Update tree_pass descriptors.
22361         * ifcvt.c: Update tree_pass descriptors.
22362         * jump.c: Update tree_pass descriptors.
22363         * predict.c: Update tree_pass descriptors.
22364         * tree-ssa-loop.c: Update tree_pass descriptors.
22365         * recog.c: Update tree_pass descriptors.
22366         * dse.c: Update tree_pass descriptors.
22367         * tree-ssa-ifcombine.c: Update tree_pass descriptors.
22368         * tree-eh.c: Update tree_pass descriptors.
22369         * regmove.c: Update tree_pass descriptors.
22370         * local-alloc.c
22371         * function.c: Update tree_pass descriptors.
22372         * tree-vectorizer.c: Update tree_pass descriptors.
22373         * gcse.c: Update tree_pass descriptors.
22374         * ipa-type-escape.c: Update tree_pass descriptors.
22375         * tree-if-conv.c: Update tree_pass descriptors.
22376         * init-regs.c: Update tree_pass descriptors.
22377         * ipa.c: Update tree_pass descriptors.
22378         * tree-ssa-phiopt.c: Update tree_pass descriptors.
22379         * rtl-factoring.c: Update tree_pass descriptors.
22380         * lower-subreg.c: Update tree_pass descriptors.
22381         * bt-load.c: Update tree_pass descriptors.
22382         * tree-dfa.c: Update tree_pass descriptors.
22383         * except.c: Update tree_pass descriptors.
22384         * emit-rtl.c: Update tree_pass descriptors.
22385         * cfgexpand.c: Update tree_pass descriptors.
22386         * tree-cfgcleanup.c: Update tree_pass descriptors.
22387         * cfgcleanup.c: Update tree_pass descriptors.
22388         * tree-ssa-pre.c: Update tree_pass descriptors.
22389         * tree-sra.c: Update tree_pass descriptors.
22390         * tree-mudflap.c: Update tree_pass descriptors.
22391         * tree-ssa-copy.c: Update tree_pass descriptors.
22392         * cfglayout.c: Update tree_pass descriptors.
22393         * tree-ssa-forwprop.c: Update tree_pass descriptors.
22394         * tree-ssa-dce.c: Update tree_pass descriptors.
22395         * tree-ssa.c: Update tree_pass descriptors.
22396         * regclass.c: Update tree_pass descriptors.
22397         * integrate.c: Update tree_pass descriptors.
22398         * tree-optimize.c: Update tree_pass descriptors.
22399         * tree-ssa-phiprop.c: Update tree_pass descriptors.
22400         * tree-object-size.c: Update tree_pass descriptors.
22401         * combine.c: Update tree_pass descriptors.
22402         * tree-outof-ssa.c: Update tree_pass descriptors.
22403         * bb-reorder.c: Update tree_pass descriptors.
22404         * stack-ptr-mod.c: Update tree_pass descriptors.
22405         * var-tracking.c: Update tree_pass descriptors.
22406         * tree-profile.c: Update tree_pass descriptors.
22407         * tree-vect-generic.c: Update tree_pass descriptors.
22408         * reg-stack.c: Update tree_pass descriptors.
22409         * sched-rgn.c: Update tree_pass descriptors.
22410         * tree-ssa-structalias.c: Update tree_pass descriptors.
22411         * tree-cfg.c: Update tree_pass descriptors.
22412         * passes.c (current_pass): Update declaration.
22413         (finish_optimization_passes): Update.
22414         (all_passes, all_ipa_passes, all_lowering_passes): Update declaration.
22415         (register_one_dump_file, register_dump_files_1, next_pass_1):
22416         Update arguments.
22417         (init_optimization_passes): Update handling of new types.
22418         (execute_one_pass, execute_pass_list, execute_ipa_pass_list): Update.
22419         * ipa-struct-reorg.c: Update tree_pass descriptors.
22420         * tree-ssa-reassoc.c: Update tree_pass descriptors.
22421         * combine-stack-adj.c: Update tree_pass descriptors.
22422         * cfgrtl.c: Update tree_pass descriptors.
22423         * dce.c: Update tree_pass descriptors.
22424         * tree-ssanames.c: Update tree_pass descriptors.
22425
22426 2008-03-19  Richard Guenther  <rguenther@suse.de>
22427
22428         PR middle-end/35609
22429         * tree-ssa.c (walk_data): New structure.
22430         (warn_uninitialized_var): If not always_executed warn with "maybe"
22431         instead of "is".
22432         (execute_early_warn_uninitialized): Compute post-dominators.
22433         Initialize always_executed before processing each basic block.
22434
22435 2008-03-18  Mikulas Patocka  <mikulas@artax.karlin.mff.cuni.cz>
22436
22437         PR target/35504
22438         * config/i386/i386.c (x86_this_parameter): Calculate correct location
22439         of "this" pointer when "regparm = N" or "fastcall" is in effect.
22440
22441 2008-03-18  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
22442
22443         * doc/include/texinfo.tex: Update to version 2008-03-17.10.
22444
22445 2008-03-18  Paolo Bonzini  <bonzini@gnu.org>
22446
22447         * expr.c (store_expr): Assume lang_hooks.reduce_bit_field_operations
22448         is true.
22449         (expand_expr_real_1) <REDUCE_BIT_FIELD>: Don't look at ignore.
22450         (expand_expr_real_1): Assume lang_hooks.reduce_bit_field_operations
22451         is true.  Add "&& !ignore" condition to reduce_bit_field.  Modify
22452         target after ignore has been set, and move there also the commputation
22453         of subtarget and original_target.
22454         * langhooks-def.h (LANG_HOOKS_REDUCE_BIT_FIELD_OPERATIONS): Delete.
22455         (LANG_HOOKS_INITIALIZER): Remove it.
22456         * langhooks.h (struct lang_hooks): Remove reduce_bit_field_operations.
22457
22458 2008-03-18  Richard Guenther  <rguenther@suse.de>
22459
22460         * tree-ssa-sccvn.c (visit_reference_op_load): If the lookup
22461         found an expression with constants, note that in the VN for the lhs.
22462         * tree-ssa-pre.c (eliminate): Visit COND_EXPR statements and
22463         fold them to constants if possible.  Run cleanup_cfg if done so.
22464         (execute_pre): Return todo.
22465         (do_pre): Likewise.
22466         (execute_fre): Likewise.
22467         * tree-ssa-forwprop.c (can_propagate_from): Allow propagation
22468         of constants.
22469         (get_prop_source_stmt): Look through pointer conversions.
22470
22471 2008-03-18  Jan Hubicka  <jh@suse.cz>
22472
22473         * tree-pretty-print.c: Include predict.h.
22474         (dump_generic_node): Dump predictor.
22475         * tree.h (PREDICT_EXPR_OUTCOME, PREDICT_EXPR_PREDICTION): Update.
22476         * tree-gimple.c (is_gimple_stmt): Add PREDICT_EXPR.
22477         * gimple-low.c (lower_stmt): Likewise.
22478         * expr.c (expand_expr_real): Likewise.
22479         * predict.c (tree_bb_level_predictions): Use PREDICT_EXPRs and remove
22480         them.
22481         (build_predict_expr, build_predict_expr): New.
22482         * predict.h (predictor_name, build_predict_expr): Update.
22483         * c-typeck.c (c_finish_bc_stmt): Add prediction.
22484         * gimplify.c (gimplify_expr): Add PREDICT_EXPR.
22485         * predict.def (PRED_CONTINUE): Update hitrate.
22486         * tree.def (PREDICT_EXPR): Define.
22487         * tree-ssa-dce.c (mark_stmt_if_obviously_necessary): Mark PREDICT_EXPR;
22488         do not handle BIND_EXPR.
22489         * tree-inline.c (estimate_num_insns_1): PREDICT_EXPR is free.
22490         * tree-cfg.c (verify_gimple_stmt): PREDICT_EXPR is valid.
22491         * tree-ssa-operands.c (get_expr_operands): PREDICT_EXPR takes no
22492         operands.
22493
22494 2008-03-18  Michael Matz  <matz@suse.de>
22495
22496         * gcov-io.h (__gcov_merge_ior, __gcov_fork): Mark hidden.
22497
22498 2008-03-18  Richard Guenther  <rguenther@suse.de>
22499
22500         * tree-gimple.h (is_gimple_invariant_address): Declare.
22501         (is_gimple_constant): Likewise.
22502         * tree-gimple.c (is_gimple_constant): New function.
22503         (is_gimple_invariant_address): Likewise.
22504         (is_gimple_min_invariant): Implement in terms of is_gimple_constant
22505         and is_gimple_invariant_address.
22506         * tree-ssa-loop-niter.c (expand_simple_operations): Revert
22507         previous change.
22508         * tree-data-ref.c (get_references_in_stmt): A SSA_NAME is not
22509         an addressable base.
22510
22511 2008-03-18  Jakub Jelinek  <jakub@redhat.com>
22512
22513         PR middle-end/35611
22514         * gimplify.c (gimplify_expr): Gimplify second operand of
22515         OMP_ATOMIC_LOAD.
22516
22517 2008-03-17  Richard Guenther  <rguenther@suse.de>
22518
22519         PR tree-optimization/19637
22520         * fold-const.c (fold_unary): Remove restrictions of removing
22521         intermediate pointer-conversions (P2)(P1)P0.
22522         * tree-ssa-ccp.c (maybe_fold_stmt_addition): Recover from
22523         conversion to void pointer.
22524         (get_maxval_strlen): Handle addresses of the form &(*p)[0].
22525
22526 2008-03-16  James E. Wilson  <wilson@tuliptree.org>
22527
22528         PR debug/31510
22529         * dbxout.c (dbxout_expand_expr, case VAR_DECL): Return NULL for
22530         emulated thread local variables.
22531
22532 2008-03-16  Richard Guenther  <rguenther@suse.de>
22533
22534         PR middle-end/35607
22535         * tree-ssa-loop-niter.c (expand_simple_operations): Do not
22536         expand TREE_INVARIANT operations that are not gimple invariant.
22537
22538 2008-03-16  Hans-Peter Nilsson  <hp@axis.com>
22539
22540         * doc/extend.texi (Alignment): Say that the ABI controls
22541         the __alignof__ for non-strict-alignment targets rather
22542         than being a recommendation.
22543
22544 2008-03-15  Paul Brook  <paul@codesourcery.com>
22545
22546         * config/arm/arm.c (arm_unwind_emit): Suppress unused unwinding
22547         annotations.
22548         (arm_output_fn_unwind): Mark functions that can not be unwound.
22549
22550 2008-03-15  Paul Brook  <paul@codesourcery.com>
22551
22552         * config/arm/arm.c (arm_rtx_costs_1): Add costs for ARMv6 value
22553         extension instructions.
22554
22555 2008-03-15  Richard Guenther  <rguenther@suse.de>
22556
22557         * tree-ssa-ccp.c (ccp_fold): Also read from constant values
22558         and fold constant aggregate refs.
22559         (fold_const_aggregate_ref): Handle string constants
22560         and constructors in ARRAY_REFs.  Handle INDIRECT_REF.
22561         (evaluate_stmt): Simplify now that ccp_fold folds constant
22562         aggregate refs.
22563
22564 2008-03-15  Paul Brook  <paul@codesourcery.com>
22565
22566         * config/arm/arm.md (insv): Use gen_insv_t2 and gen_insv_zero.
22567         (extzv): Use gen_extzv_t2.
22568         (insv_t2, insv_zero, extv, extzv_t2): New patterns.
22569
22570 2008-03-15  Richard Guenther  <rguenther@suse.de>
22571
22572         * tree-ssa-ccp.c (get_symbol_constant_value): Export.
22573         (fold_const_aggregate_ref): Likewise.
22574         (get_value): Return NULL if we don't have any values.
22575         (ccp_finalize): Set const_val to NULL after freeing it.
22576         * tree-flow.h (get_symbol_constant_value): Declare.
22577         (fold_const_aggregate_ref): Likewise.
22578         * tree-ssa-sccvn.c (try_to_simplify): Use them.
22579
22580 2008-03-15  Richard Guenther  <rguenther@suse.de>
22581
22582         PR middle-end/35593
22583         * tree-ssa-ccp.c (maybe_fold_offset_to_array_ref): Make sure
22584         to not produce negative array indices if not allowed.  Add
22585         parameter to indicate that.
22586         (maybe_fold_offset_to_component_ref): Allow negative array
22587         indices only for the first member of a structure.
22588         (maybe_fold_offset_to_reference): Allow negative array indices.
22589         (maybe_fold_stmt_addition): Likewise.
22590
22591 2008-03-15  Bjoern Haase  <bjoern.m.haase@web.de>
22592             Anatoly Sokolov <aesok@post.ru>
22593
22594         * config/avr/avr.c (avr_arch_types): Add avr6 entry.
22595         (avr_arch): Add ARCH_AVR6.
22596         (avr_mcu_types): Add 'atmega2560' and 'atmega2561' entry.
22597         (initial_elimination_offset): Initialize and use 'avr_pc_size'
22598         instead of fixed value 2.
22599         (print_operand_address): Use gs() asm specifier instead of pm().
22600         (avr_assemble_integer): (Ditto.).
22601         (avr_output_addr_vec_elt): (Ditto.).
22602         (print_operand): Handle "!" code.
22603         * config/avr/avr.h (TARGET_CPU_CPP_BUILTINS): Add
22604         __AVR_3_BYTE_PC__, __AVR_2_BYTE_PC__ and __AVR_HAVE_JMP_CALL__.
22605         (AVR_HAVE_EIJMP_EICALL): Define.
22606         (AVR_3_BYTE_PC): Redefine.
22607         (AVR_2_BYTE_PC): (Ditto.).
22608         (PRINT_OPERAND_PUNCT_VALID_P): Add '!' code.
22609         (LINK_SPEC): Add atmega2560 and atmega2561.
22610         (CRT_BINUTILS_SPEC): Add atmega2560 (crtm2560.o) and atmega2561
22611         (crtm2561.o).
22612         * config/avr/avr.md (call_insn): Use eicall instead of icall
22613         for 3 byte PC devices.
22614         (call_value_insn): (Ditto.).
22615         (*tablejump_enh): Use eijmp instead of ijmp for 3 byte PC devices.
22616         (indirect_jump): Use only for for 2 byte PC devices.
22617         (*tablejump): (Ditto.).
22618         (*indirect_jump_avr6): Add insn.
22619         (*tablejump_rjmp): Don't use for 3 byte PC devices.
22620         * config/avr/libgcc.S (__prologue_saves__): Use eijmp
22621         instead of ijmp for 3 byte PC devices.
22622         (__tablejump2__): (Ditto.).
22623         * config/avr/t-avr (MULITLIB_OPTIONS): Add avr6 architecture.
22624         (MULITLIB_DIRNAMES): (Ditto.).
22625         (MULTILIB_MATCHES): Add atmega2560 and atmega2561 to list.
22626
22627 2008-03-15  Uros Bizjak  <ubizjak@gmail.com>
22628
22629         * config/i386/mmx.md ("sse2_umulv1siv2di3"): Rename from
22630         "sse2_umulsidi3".  Use V1DI mode for operand 0.
22631         ("mmx_psadbw"): Use V1DI mode for operand 0.
22632         * config/i386/i386-modes.def (V1SI): New vector mode.
22633         * config/i386/i386.c (struct builtin_description)
22634         [IX86_BUILTIN_PMULUDQ]: Use CODE_FOR_sse2_umulv1siv1di3.
22635         (v1di_ftype_v8qi_v8qi): Rename from di_ftype_v8qi_v8qi.
22636         (v1di_ftype_v2si_v2si): Rename from di_ftype_v2si_v2si.
22637         (ix86_init_mmx_sse_builtins) [__builtin_ia32_psadbw]: Use
22638         v1di_ftype_v8qi_v8qi type.
22639         [__builtin_ia32_pmuludq]: Use v1di_ftype_v2si_v2si type.
22640
22641         * doc/extend.texi (X86 Built-in Functions) [__builtin_ia32_psadbw,
22642         __builtin_ia32_pmuludq]: Fix the mode of return value.
22643
22644 2008-03-15  Richard Guenther  <rguenther@suse.de>
22645
22646         PR middle-end/35595
22647         * tree-ssa-pre.c (bitmap_find_leader): Handle expression
22648         being a PHI_NODE.
22649
22650 2008-03-14  Bob Wilson  <bob.wilson@acm.org>
22651
22652         * doc/invoke.texi (Option Summary, Xtensa Options): Document
22653         -mserialize-volatile and -mno-serialize-volatile Xtensa options.
22654         * config/xtensa/xtensa.c (print_operand): Do not emit MEMW instructions
22655         unless TARGET_SERIALIZE_VOLATILE is enabled.
22656         * config/xtensa/xtensa.md (*lsiu, *ssiu): Likewise.
22657         * config/xtensa/xtensa.h (TARGET_DEFAULT): Add MASK_SERIALIZE_VOLATILE.
22658         * config/xtensa/xtensa.opt (mserialize_volatile): New option.
22659
22660 2008-03-14  Richard Guenther  <rguenther@suse.de>
22661
22662         PR tree-optimization/34172
22663         * tree-flow.h (refs_may_alias_p): Declare.
22664         (get_single_def_stmt): Likewise.
22665         (get_single_def_stmt_from_phi): Likewise.
22666         (get_single_def_stmt_with_phi): Likewise.
22667         * tree-dfa.c (refs_may_alias_p): New function.
22668         (get_single_def_stmt): Likewise.
22669         (get_single_def_stmt_from_phi): Likewise.
22670         (get_single_def_stmt_with_phi): Likewise.
22671         * tree-ssa-sccvn.c (get_def_ref_stmt_vuses): New function.
22672         (vn_reference_lookup_1): New helper function.
22673         (vn_reference_lookup): Walk the virtual use-def chain to
22674         continue searching for a match if the def does not alias the
22675         reference we are looking for.
22676
22677 2008-03-14  David Edelsohn  <edelsohn@gnu.org>
22678
22679         * doc/install.texi (Binaries): Remove UCLA archive.  Add HVCC
22680         archive and Perzl.  Update The Written Word listing.
22681
22682 2008-03-14  Richard Guenther  <rguenther@suse.de>
22683
22684         PR tree-optimization/34043
22685         PR tree-optimization/33989
22686         * tree-ssa-pre.c (execute_pre): Allow SCCVN to do insertion
22687         when doing FRE.
22688         (bitmap_find_leader): Use extra argument to verify dominance
22689         relationship inside a basic-block.
22690         (can_PRE_operation): Add VIEW_CONVERT_EXPR.
22691         (find_leader_in_sets): Adjust.
22692         (create_component_ref_by_pieces): Take extra argument for
22693         dominance check, handle lookup failures.
22694         (find_or_generate_expression): Likewise.
22695         (create_expression_by_pieces): Likewise.
22696         (insert_into_preds_of_block): Adjust.
22697         (create_value_expr_from): If asked for, verify all operands
22698         are in the blocks AVAIL_OUT set.
22699         (make_values_for_stmt): Check for SSA_NAMEs that are life
22700         over an abnormal edge.
22701         (compute_avail): Remove such check.
22702         (do_SCCVN_insertion): New function.
22703         (eliminate): If we do not find a leader suitable for replacement
22704         insert a replacement expression from SCCVN if available.
22705         * tree-ssa-sccvn.h (run_scc_vn): Update prototype.
22706         (struct vn_ssa_aux): Add needs_insertion flag.
22707         * tree-ssa-sccvn.c (may_insert): New global flag.
22708         (copy_reference_ops_from_ref): Value-number union member access
22709         based on its size, not type and member if insertion is allowed.
22710         (visit_reference_op_load): For a weak match from union type
22711         punning lookup a view-converted value and insert a SSA_NAME
22712         for that value if that is not found.
22713         (visit_use): Make dumps shorter.  Do not disallow value numbering
22714         SSA_NAMEs that are life over an abnormal edge to constants.
22715         (free_scc_vn): Release inserted SSA_NAMEs.
22716         (run_scc_vn): New flag to specify whether insertion is allowed.
22717         Process SSA_NAMEs in forward order.
22718         * tree-ssa-loop-im.c (for_each_index): Handle invariant
22719         ADDR_EXPRs inside VIEW_CONVERT_EXPR.
22720         * fold-const.c (fold_unary): Fold VIEW_CONVERT_EXPRs from/to
22721         pointer type to/from integral types that do not change the
22722         precision to regular conversions.
22723
22724 2008-03-13  Uros Bizjak  <ubizjak@gmail.com>
22725
22726         * doc/extend.texi (X86 Built-in Functions) [__builtin_ia32_psll?,
22727         __builtin_ia32_psrl?, __builtin_ia32_psra?, __builtin_ia32_psll?i,
22728         __builtin_ia32_psrl?i, __builtin_ia32_psra?i, __builtin_ia32_psll?128,
22729         __builtin_ia32_psrl?128, __builtin_ia32_psra?128]: Fix the mode of
22730         input arguments and the mode of return value.  Built-in functions
22731         that operate on whole 64-bit MMX register now use V1DI mode.
22732
22733 2008-03-13  Alon Dayan  <alond@il.ibm.com>
22734             Olga Golovanevsky  <olga@il.ibm.com>
22735
22736         PR tree-optimization/35041
22737         * ipa-struct-reorg.c (find_pos_in_stmt_1): Add another option
22738         to locate the right position in a statement.
22739
22740 2008-03-13  Uros Bizjak  <ubizjak@gmail.com>
22741
22742         PR target/34000
22743         PR target/35553
22744         * config/i386/xmmintrin.h:  Change all static inline functions to
22745         extern inline and add __gnu_inline__ attribute.
22746         * config/i386/bmintrin.h: Ditto.
22747         * config/i386/smmintrin.h: Ditto.
22748         * config/i386/tmmintrin.h: Ditto.
22749         * config/i386/mmintrin-common.h: Ditto.
22750         * config/i386/ammintrin.h: Ditto.
22751         * config/i386/emmintrin.h: Ditto.
22752         * config/i386/pmmintrin.h: Ditto.
22753         * config/i386/mmintrin.h: Ditto.
22754         * config/i386/mm3dnow.h: Ditto.
22755
22756 2008-03-13  Jakub Jelinek  <jakub@redhat.com>
22757
22758         PR middle-end/35185
22759         * omp-low.c (lower_regimplify, init_tmp_var, save_tmp_var): Removed.
22760         (lower_omp_2): New function.
22761         (lower_omp_1, lower_omp): Rewritten.
22762
22763 2008-03-13  Danny Smith  <dannysmith@users.sourceforge.net>
22764
22765         PR 35054
22766         * doc/extend.texi (Structure-Packing Pragmas): Replace "Win32"
22767         with the phrase "Microsoft Windows compilers".
22768         (Push/Pop Macro Pragmas): New subsection. Document
22769         #pragma push_macro and pragma pop_macro.
22770
22771 2008-03-12  Paul Brook  <paul@codesourcery.com>
22772
22773         * config/arm/arm.c (output_move_double): Prefer LDRD to LDM.
22774
22775 2008-03-12  Paul Brook  <paul@codesourcery.com>
22776
22777         * config/arm/thumb2.md: Extend peephole to cover 3-arg subs.
22778         (thumb2_alusi3_short): Exclude PLUS and MINUS.
22779         (thumb2_addsi_shortim): Rename ...
22780         (thumb2_addsi_short): ... to this.  Allow register operands.
22781         (thumb2_subsi_short): New pattern.
22782         (thumb2_one_cmplsi2_short,
22783         thumb2_negsi2_short): New patterns and peepholes.
22784
22785 2008-03-12  Paul Brook  <paul@codesourcery.com>
22786
22787         * config/arm/arm.c (arm_size_rtx_costs): Use ARM costs for Thumb-2.
22788
22789 2008-03-12  Uros Bizjak  <ubizjak@gmail.com>
22790
22791         * config/i386/i386.md (int_cond): New code iterator.
22792         (fp_cond): Ditto.
22793         ("s<code>"): Macroize expander from seq, sne, sgt, sgtu, slt, sltu,
22794         sge, sgeu, sle and sleu expanders usign int_cond code iterator.
22795         ("s<code>"): Macroize expander from sunordered, sordered, suneq, sunge,
22796         sungt, sunle, sunlt and sltgt expanders usign fp_cond code iterator.
22797         ("b<code>"): Macroize expander from beq, bne, bgt, bgtu, blt, bltu,
22798         bge, bgeu, ble and bleu expanders usign int_cond code iterator.
22799         ("b<code>"): Macroize expander from bunordered, bordered, buneq, bunge,
22800         bungt, bunle, bunlt and bltgt expanders usign fp_cond code iterator.
22801
22802 2008-03-12  Paul Brook  <paul@codesourcery.com>
22803
22804         * config/arm/arm.c (use_return_insn): Use offsets->saved_regs_mask
22805         instead of {arm,thumb}_compute_save_reg_mask.
22806         (output_return_instruction): Ditto.
22807         (thumb_unexpanded_epilogue): Ditto.
22808         (thumb1_expand_prologue): Ditto.
22809         (thumb1_output_function_prologue): Ditto.
22810         (arm_set_return_address): Ditto.
22811         (thumb_set_return_address): Ditto.
22812         (arm_get_frame_offsets): Set offsets->saved_regs_mask.  Push extra
22813         regs to achieve stack alignment.
22814         (thumb1_compute_save_reg_mask): Fix compiler warning.
22815         (arm_output_epilogue): Use offsets->saved_regs_mask.
22816         Adjust stack pointer by poping call clobered registers.
22817         (arm_expand_prologue): Use offsets->saved_regs_mask.
22818         Adjust stack pointer by pushing extra registers.
22819         * config/arm.h (arm_stack_offsets): Add saved_regs_mask.
22820
22821 2008-03-12  Paolo Bonzini  <bonzini@gnu.org>
22822
22823         PR tree-opt/35422
22824         * fold-const.c (fold_unary) <NOP_EXPR>: Distribute a narrowing
22825         conversion to the operands of a multiplication.
22826
22827 2008-03-12  Richard Guenther  <rguenther@suse.de>
22828
22829         * Makefile.in (OBJS-common): Add tree-ssa-phiprop.o
22830         (tree-ssa-phiprop.o): Copy dependencies from tree-ssa-forwprop.o.
22831         * timevar.def (TV_TREE_PHIPROP): Add.
22832         * tree-ssa-phiprop.c: Split from tree-ssa-forwprop.c, added
22833         pass description.  Use TV_TREE_PHIPROP.
22834         * tree-ssa-forwprop.c: Remove phiprop code.
22835
22836 2008-03-12  Jakub Jelinek  <jakub@redhat.com>
22837
22838         PR middle-end/35549
22839         * omp-low.c (maybe_lookup_decl): Constify first argument.
22840         (use_pointer_for_field): Change last argument from bool to
22841         omp_context *.  Disallow shared copy-in/out in nested
22842         parallel if decl is shared in outer parallel too.
22843         (build_outer_var_ref, scan_sharing_clauses,
22844         lower_rec_input_clauses, lower_copyprivate_clauses,
22845         lower_send_clauses, lower_send_shared_vars): Adjust callers.
22846
22847 2008-03-12  Victor Kaplansky  <victork@il.ibm.com>
22848             Ira Rosen  <irar@il.ibm.com>
22849
22850         * tree-vectorizer.c (free_stmt_vec_info): New function.
22851         (destroy_loop_vec_info): Move code to free_stmt_vec_info().
22852         Call free_stmt_vec_info(). Free LOOP_VINFO_STRIDED_STORES..
22853         * tree-vectorizer.h (free_stmt_vec_info): Declare.
22854         * tree-vect-transform.c (vectorizable_conversion): Free
22855         vec_oprnds0 if it was allocated.
22856         (vect_permute_store_chain): Remove unused VECs.
22857         (vectorizable_store): Free VECs that are allocated in the..
22858         function.
22859         (vect_transform_strided_load, vectorizable_load): Likewise.
22860         (vect_remove_stores): Simplify the code.
22861         (vect_transform_loop): Move code to vect_remove_stores().
22862         Call vect_remove_stores() and free_stmt_vec_info().
22863
22864 2008-03-11  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
22865
22866         * pa.h (TARGET_LONG_PIC_SDIFF_CALL): Conditionalize define on
22867         TARGET_HPUX.  Revise comment.
22868         (TARGET_LONG_PIC_PCREL_CALL): Revise comment.
22869         * pa.c (output_call): Update for revised TARGET_LONG_PIC_SDIFF_CALL.
22870         Use sr4 variant of `be' instruction when not generating PIC code.
22871         (attr_length_call): Adjust for above change.
22872
22873 2008-03-11  Andrew Pinski  <andrew_pinski@playstation.sony.com>
22874
22875         * ipa-reference.c (static_execute): Remove module_statics_const and
22876         associated setting code.
22877
22878 2008-03-11  Uros Bizjak  <ubizjak@gmail.com>
22879
22880         PR target/35540
22881         * config/i386/i386.md (paritysi2, paritydi2): Use register_operand
22882         predicate for operand 1.
22883         (paritysi2_cmp): Use register_operand predicate for operand 2.
22884         Use earlyclobber modifier for operand 1.  Remove support for
22885         memory operands.
22886         (paritydi2_cmp): Use register_operand predicate for operand 3.
22887         Use earlyclobber modifier for operand 1.  Remove support for
22888         memory operands.
22889
22890 2008-03-11  Paul Brook  <paul@codesourcery.com>
22891             Vladimir Prus  <vladimir@codesourcery.com>
22892
22893         * config/arm/arm.c (use_return_insn): Check TARGET_APCS_FRAME.
22894         (arm_compute_save_reg0_reg12_mask): Always
22895         check if register 11 must be saved.  Always safe hard frame pointer
22896         when frame_pointer_needeed.
22897         (arm_compute_save_reg_mask): Save IP and PC
22898         only with apcs frames.
22899         (arm_output_epilogue): Adjust Thumb2 codepath to
22900         be also invoked and work for ARM non-apcs frames.
22901         (arm_expand_prologue): Don't bother saving IP
22902         for non-apcs frame, since it's not clobbered by
22903         prologue code.  Implement non-apcs frame
22904         layout.
22905
22906 2008-03-11  Paolo Bonzini  <bonzini@gnu.org>
22907
22908         PR rtl-optimization/35281
22909         * expr.c (convert_move): Use a new pseudo for the intermediate
22910         from_mode->word_mode result.
22911
22912 2008-03-11  Paolo Bonzini  <bonzini@gnu.org>
22913
22914         * langhooks-def.h (LANG_HOOKS_CLEAR_BINDING_STACK): Delete.
22915         * langhooks.h (struct lang_hooks): Delete clear_binding_stack member.
22916         * toplev.c (compile_file): Don't call it.
22917
22918 2008-03-11  Uros Bizjak  <ubizjak@gmail.com>
22919
22920         PR middle-end/35526
22921         * expr.c (store_expr): Call emit_block_move if the mode
22922         of "temp" RTX is BLKmode.
22923
22924 2008-03-11  Andrew Pinski  <andrew_pinski@playstation.sony.com>
22925             Richard Guenther  <rguenther@suse.de>
22926
22927         PR tree-optimization/31358
22928         * tree-ssa-loop-manip.c (create_iv): Call force_gimple_operand for
22929         the step with a NULL_TREE.
22930         * tree-ssa-loop-ivopts.c (find_bivs): Convert the step
22931         to sizetype if type is a pointer type.
22932         (add_candidate_1): Don't convert the base and step to
22933         the generic type if the orginal type is a pointer type.
22934         (add_iv_value_candidates): Use sizetype for the step
22935         if type is a pointer type.
22936         (cand_value_at): Likewise.
22937         * tree-ssa-address.c (add_to_parts): Use POINTER_PLUS_EXPR
22938         for pointer types.
22939         * tree-affine.c (tree_to_aff_combination <POINTER_PLUS_EXPR>):
22940         Don't convert the tem affine to the type.
22941         (add_elt_to_tree): Use sizetype for the step if a pointer.
22942         Use POINTER_PLUS_EXPR for pointers.
22943         (aff_combination_to_tree): Use sizetype for the step if a
22944         pointer.
22945
22946 2008-03-10  Vladimir Makarov  <vmakarov@redhat.com>
22947
22948         * config/i386/sse.md (ssse3_pmaddubswv8hi3, ssse3_pmaddubswv4hi3):
22949         Remove commutativity hint.
22950
22951 2008-03-10  Jakub Jelinek  <jakub@redhat.com>
22952
22953         PR c/35438
22954         PR c/35439
22955         * c-parser.c (c_parser_omp_threadprivate): Don't add vars with
22956         errorneous type.  Check that v is a VAR_DECL.
22957
22958         PR middle-end/35099
22959         * tree-cfg.c (new_label_mapper): Update cfun->last_label_uid.
22960
22961 2008-03-10  H.J. Lu  <hongjiu.lu@intel.com>
22962
22963         PR tree-optimization/35494
22964         * tree-ssa-ccp.c (get_symbol_constant_value): Check if value
22965         may be overriden at link and run time.
22966
22967 2008-03-10  Richard Guenther  <rguenther@suse.de>
22968
22969         PR tree-optimization/34677
22970         * tree-ssa-pre.c (modify_expr_node_pool): Remove.
22971         (poolify_tree): Likewise.
22972         (modify_expr_template): Likewise.
22973         (poolify_modify_stmt): Likewise.
22974         (insert_fake_stores): Handle all component-ref style stores
22975         in addition to INDIRECT_REF.  Also handle complex types.
22976         Do not poolify the inserted load.
22977         (realify_fake_stores): Do not rebuild the tree but only
22978         make it a SSA_NAME copy.
22979         (init_pre): Remove initialzation of modify_expr_template.
22980         Do not allocate modify_expr_node_pool.
22981         (fini_pre): Do not free modify_expr_node_pool.
22982
22983 2008-03-10  Paul Brook  <paul@codesourcery.com>
22984
22985         * config/arm/arm.md (UNSPEC_STACK_ALIGN, UNSPEC_PIC_OFFSET): Renumber
22986         to avoid conflicts.
22987
22988 2008-03-10  Paul Brook  <paul@codesourcery.com>
22989             Mark Shinwell  <shinwell@codesourcery.com>
22990
22991         * config/arm/cortex-r4.md: New.
22992         * config/arm/thumb2.md (divsi3, udivsi3): Annotate with
22993         insn attributes.
22994         * config/arm/arm.md: Include cortex-r4.md.
22995         (insn): Add smmls, sdiv and udiv values.
22996         (generic_sched): Don't use generic scheduling for Cortex-R4.
22997         (arm_issue_rate): New function.
22998         (TARGET_SCHED_ISSUE_RATE): Define.
22999
23000 2008-03-10  Sebastian Pop  <sebastian.pop@amd.com>
23001
23002         * doc/invoke.texi (-ftree-loop-distribution): Add an example.
23003
23004 2008-03-10  Richard Guenther  <rguenther@suse.de>
23005
23006         * tree-ssa-pre.c (get_sccvn_value): Simplify.
23007         (compute_avail): Do not add stmt uses to AVAIL_OUT.
23008
23009 2008-03-10  Paolo Bonzini  <bonzini@gnu.org>
23010
23011         * langhooks-def.h (LANG_HOOKS_REDUCE_BIT_FIELD_OPERATIONS):
23012         Set default to true.
23013
23014 2008-03-09  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
23015
23016         * c.opt (Wsynth): Deprecate.
23017         * doc/invoke.texi (Option Summary, Warning Options): Document
23018         -Wno-format-contains-nul.
23019
23020 2008-03-09  Uros Bizjak  <ubizjak@gmail.com>
23021
23022         PR target/35496
23023         * config/i386/i386.c (ix86_constant_alignment): Compute alignment using
23024         ALIGN_MODE_128 for VECTOR_CST and INTEGER_CST in addition to REAL_CST.
23025
23026 2008-03-09  Ira Rosen  <irar@il.ibm.com>
23027
23028         * config/rs6000/rs6000.c (builtin_description): Rename vector
23029         left shift operations.
23030         * config/rs6000/altivec.md (UNSPEC_VSL): Remove.
23031         (altivec_vsl<VI_char>): Rename to ...
23032         (ashl<mode>3): ... new name.
23033         (mulv4sf3, mulv4si3, negv4sf2): Replace gen_altivec_vslw with
23034         gen_ashlv4si3.
23035         (absv4sf2): Convert to use ashift:V4SI instead of UNSPEC_VSL.
23036
23037 2008-03-08  Richard Guenther  <rguenther@suse.de>
23038
23039         * coverage.h (tree_coverage_counter_addr): Declare.
23040         * coverage.c (tree_coverage_counter_addr): New function.
23041         * tree-profile.c (tree_gen_edge_profiler): Unshare counter
23042         before using again.
23043         (tree_gen_pow2_profiler): Use tree_coverage_counter_addr.
23044         (tree_gen_one_value_profiler): Likewise.
23045         (tree_gen_ic_profiler): Likewise.
23046         (tree_gen_average_profiler): Likewise.
23047         (tree_gen_ior_profiler): Likewise.
23048
23049 2008-03-08  Richard Guenther  <rguenther@suse.de>
23050
23051         * tree-ssa-sccvn.h (vn_binary_op_lookup): Remove.
23052         (vn_binary_op_insert): Likewise.
23053         (vn_unary_op_lookup): Likewise.
23054         (vn_unary_op_insert): Likewise.
23055         (vn_nary_op_lookup): Declare.
23056         (vn_nary_op_insert): Likewise.
23057         * tree-ssa-sccvn.c (struct vn_tables_s): Merge unary
23058         and binary hashes, use a single obstack for unary_op_pool
23059         and binary_op_pool.
23060         (struct vn_binary_op_s, struct vn_unary_op_s): Replace with
23061         a single struct vn_nary_op_s.  Store tree code length and
23062         a variable number of operands.
23063         (struct vn_reference_op_struct): Remove unused op2.
23064         (vn_reference_op_eq): Do not compare op2.
23065         (vn_reference_op_compute_hash): Do not compute hash of op2.
23066         (vn_unary_op_hash, vn_binary_op_hash): Replace with vn_nary_op_hash.
23067         (vn_unary_op_compute_hash, vn_binary_op_compute_hash): Replace
23068         with vn_nary_op_compute_hash.
23069         (vn_unary_op_eq, vn_binary_op_eq): Replace with vn_nary_op_eq.
23070         (vn_unary_op_lookup, vn_binary_op_lookup): Replace with
23071         vn_nary_op_lookup.
23072         (vn_unary_op_insert, vn_binary_op_insert): Replace with
23073         vn_nary_op_insert.
23074         (visit_unary_op): Call nary functions.
23075         (visit_binary_op): Likewise.
23076         (process_scc): Adjust for struct vn_tables_s changes.
23077         (allocate_vn_table): Likewise.
23078         (free_vn_table): Likewise.
23079         * tree-vn.c (vn_add): Call nary functions.
23080         (vn_lookup): Likewise.
23081
23082 2008-03-08  Jakub Jelinek  <jakub@redhat.com>
23083
23084         PR target/35498
23085         * config/rs6000/rs6000.c (rs6000_expand_compare_and_swapqhi): Shift
23086         wdst back after sync_compare_and_swapqhi_internal.
23087
23088 2008-03-08  Uros Bizjak  <ubizjak@gmail.com>
23089
23090         PR target/22152
23091         * config/i386/i386-modes.def (V1DI): New vector mode.
23092         * config/i386/i386.h (VALID_MMX_REG_MODE): Add V1DImode.
23093         * config/i386/mmx.md (MMXMODEI8): New mode iterator.
23094         (MMXMODE248): Ditto.
23095         (MMXMODE): Add V1DI mode.
23096         (mmxvecsize): Change DI mode to V1DI mode.
23097         ("mov<mode>): Use MMXMODEI8 mode iterator.
23098         ("*mov<mode>_internal_rex64"): Ditto.
23099         ("*mov<mode>_internal"): Ditto.
23100         ("mmx_add<mode>3"): Ditto.  Handle V1DImode for TARGET_SSE2.
23101         ("mmx_sub<mode>3"): Ditto.
23102         ("mmx_adddi3"): Remove insn pattern.
23103         ("mmx_subdi3"): Ditto.
23104         ("mmx_ashr<mode>3"): Use SImode and "yN" constraint for operand 2.
23105         ("mmx_lshr<mode>3"): Ditto. Use MMXMODE248 mode iterator.
23106         ("mmx_ashl<mode>3"): Ditto.
23107         ("mmx_lshrdi3"): Remove insn pattern.
23108         ("mmx_ashldi3"): Ditto.
23109         * config/i386/i386.c (classify_argument): Handle V1DImode.
23110         (function_arg_advance_32): Ditto.
23111         (function_arg_32): Ditto.
23112         (struct builtin_description) [IX86_BUILTIN_PADDQ]: Use
23113         mmx_addv1di3 insn pattern.
23114         [IX86_BUILTIN_PSUBQ]: Use mmx_subv1di3 insn pattern.
23115         [IX86_BUILTIN_PSLL?, IX86_BUILTIN_PSRL?, IX86_BUILTIN_PSRA?,
23116         IX86_BUILTIN_PSLL?I, IX86_BUILTIN_PSRL?I, IX86_BUILTIN_PSRA?I,
23117         IX86_BUILTIN_PSLL?I128, IX86_BUILTIN_PSRL?I128, IX86_BUILTIN_PSRA?I128]:
23118         Remove definitions of built-in functions.
23119         (V1DI_type_node): New node.
23120         (v1di_ftype_v1di_int): Ditto.
23121         (v1di_ftype_v1di_v1di): Ditto.
23122         (v2si_ftype_v2si_si): Ditto.
23123         (v4hi_ftype_v4hi_di): Remove node.
23124         (v2si_ftype_v2si_di): Ditto.
23125         (ix86_init_mmx_sse_builtins): Handle V1DImode.
23126         (__builtin_ia32_psll?, __builtin_ia32_psrl?, __builtin_ia32_psra?):
23127         Redefine builtins using def_builtin_const with *_ftype_*_int node.
23128         (__builtin_ia32_psll?i, __builtin_ia32_psrl?i, __builtin_ia32_psra?i):
23129         Add new builtins using def_builtin_const.
23130         (ix86_expand_builtin) [IX86_BUILTIN_PSLL?, IX86_BUILTIN_PSRL?,
23131         IX86_BUILTIN_PSRA?, IX86_BUILTIN_PSLL?I, IX86_BUILTIN_PSRL?I,
23132         IX86_BUILTIN_PSRA?I]: Handle builtin definitions.
23133         * config/i386/mmintrin.h (__v1di): New typedef.
23134         (_mm_add_si64): Cast arguments to __v1di type.
23135         (_mm_sub_si64): Ditto.
23136         (_mm_sll_pi16): Cast __count to __v4hi type.
23137         (_mm_sll_pi32): Cast __count to __v2si type.
23138         (_mm_sll_si64): Cast arguments to __v1di type.
23139         (_mm_srl_pi16): Cast __count to __v4hi type.
23140         (_mm_srl_pi32): Cast __count to __v2si type.
23141         (_mm_srl_si64): Cast arguments to __v1di type.
23142         (_mm_sra_pi16): Cast __count to __v4hi type.
23143         (_mm_sra_pi32): Cast __count to __v2si type.
23144         (_mm_slli_pi16): Use __builtin_ia32_psllwi.
23145         (_mm_slli_pi32): Use __builtin_ia32_pslldi.
23146         (_mm_slli_si64): Use __builtin_ia32_psllqi. Cast __m to __v1di type.
23147         (_mm_srli_pi16): Use __builtin_ia32_psrlwi.
23148         (_mm_srli_pi32): Use __builtin_ia32_psrldi.
23149         (_mm_srli_si64): Use __builtin_ia32_psrlqi. Cast __m to __v1di type.
23150         (_mm_srai_pi16): Use __builtin_ia32_psrawi.
23151         (_mm_srai_pi32): Use __builtin_ia32_psradi.
23152         * config/i386/i386.md (UNSPEC_NOP): Remove unspec definition.
23153         * doc/extend.texi (X86 Built-in Functions) [__builtin_ia32_psll?,
23154         __builtin_ia32_psrl?, __builtin_ia32_psra?, __builtin_ia32_psll?i,
23155         __builtin_ia32_psrl?i, __builtin_ia32_psra?i]: Add new builtins.
23156
23157 2008-03-07  Joseph Myers  <joseph@codesourcery.com>
23158
23159         * doc/include/texinfo.tex: Update to version 2008-03-07.10.
23160
23161 2008-03-07  Peter Bergner  <bergner@vnet.ibm.com>
23162
23163         PR target/35373
23164         * config/rs6000/rs6000.c (rs6000_legitimize_address): Don't generate
23165         reg+const addressing for Altivec modes.  Don't generate reg+reg
23166         addressing for TFmode or TDmode quantities.
23167
23168 2008-03-07  Paolo Bonzini  <bonzini@gnu.org>
23169
23170         * c-common.c (vector_types_convertible_p): Call langhook
23171         instead of comptypes.
23172
23173 2008-03-06  Andrew Pinski  <andrew_pinski@playstation.sony.com>
23174
23175         PR tree-opt/35402
23176         * tree-ssa-ccp.c (get_symbol_constant_value): Handle
23177         integral and scalar float variables which have a
23178         NULL DECL_INITIAL.
23179
23180 2008-03-06  Nathan Froyd  <froydnj@codesourcery.com>
23181
23182         * dwarf2out.c (dwarf2out_frame_debug_expr): Consult the
23183         dwarf_register_span hook when emitting unwind information for
23184         register-to-memory saves.
23185         * config/rs6000/rs6000.c (spe_synthesize_frame): Delete.
23186         (rs6000_frame_related): Remove call to spe_synthesize_frame.
23187
23188 2008-03-06  Jakub Jelinek  <jakub@redhat.com>
23189
23190         * gimplify.c (goa_lhs_expr_p): Allow different ADDR_EXPR nodes
23191         for the same VAR_DECL.
23192
23193 2008-03-06  Tom Tromey  <tromey@redhat.com>
23194
23195         * treelang: Delete.
23196         * doc/standards.texi (Standards): Don't mention treelang.
23197         * doc/invoke.texi (Overall Options): Don't mention treelang.
23198         * doc/install.texi (Prerequisites): Don't mention bison or
23199         treelang.
23200         (Configuration): Don't mention treelang.
23201         (Building): Likewise.
23202         * doc/frontends.texi (G++ and GCC): Don't mention treelang.
23203
23204 2008-03-06  Paolo Bonzini  <bonzini@gnu.org>
23205
23206         * simplify-rtx.c (simplify_subreg): Remove useless shifts from
23207         word-extractions out of a multi-word object.
23208
23209 2008-03-06  Richard Guenther  <rguenther@suse.de>
23210
23211         * tree.def (BIT_FIELD_REF): Constrain result type and its precision.
23212         * tree-cfg.c (verify_expr): Verify BIT_FIELD_REF constraints on
23213         result type and precision.
23214         * expr.c (get_inner_reference): Set unsignedp based on the result
23215         type of BIT_FIELD_REF.
23216         * tree.h (BIT_FIELD_REF_UNSIGNED): Remove.
23217         * tree-sra.c (instantiate_element): Do not set BIT_FIELD_REF_UNSIGNED.
23218         (try_instantiate_multiple_fields): Likewise.  Use the correct type
23219         for BIT_FIELD_REF.
23220         (sra_build_assignment): Likewise.
23221         (sra_build_elt_assignment): Likewise.
23222         (sra_explode_bitfield_assignment): Likewise.
23223         * print-tree.c (print_node): Do not check BIT_FIELD_REF_UNSIGNED.
23224         * tree-vect-transform.c (vect_create_epilog_for_reduction): Do not
23225         set BIT_FIELD_REF_UNSIGNED.
23226         (vectorizable_load): Likewise.
23227
23228 2008-03-06  Andreas Krebbel  <krebbel1@de.ibm.com>
23229
23230         * cse.c (cse_extended_basic_block): Invalidate artificial defs
23231         at bb start.
23232
23233 2008-03-06  Richard Guenther  <rguenther@suse.de>
23234
23235         * alias.c (struct alias_set_entry): Move has_zero_child field
23236         to pack with alias_set.
23237
23238 2008-03-05  H.J. Lu  <hongjiu.lu@intel.com>
23239
23240         * config/i386/i386-modes.def: Use 4 byte alignment on DI for
23241         32bit host.
23242
23243 2008-03-05  Ian Lance Taylor  <iant@google.com>
23244
23245         * alias.h (alias_set_type): Change from HOST_WIDE_INT to int.
23246
23247 2008-03-05  Kenneth Zadeck  <zadeck@naturalbridge.com>
23248
23249         * fwprop.c (update_df): Support width and offset parameters of
23250         df_ref_create.
23251         * ra-conflict.c (mark_reg_store, clear_reg_in_live,
23252         global_conflicts): Change DF_REF_EXTRACT to either
23253         DF_REF_ZERO_EXTRACT or DF_REF_SIGN_EXTRACT.  Change
23254         DF_REF_STRICT_LOWER_PART to DF_REF_STRICT_LOW_PART.
23255         * df-scan.c (df_ref_record, df_defs_record,
23256         df_ref_create_structure, df_def_record_1, df_uses_record,
23257         df_get_conditional_uses, df_get_call_refs, df_insn_refs_collect,
23258         df_bb_refs_collect, df_entry_block_defs_collect,
23259         df_exit_block_uses_collect): Support new width and offset fields.
23260         (ref_extract_pool): New storage pool.
23261         (df_free_ref): New function.
23262         (df_reg_chain_unlink, df_free_collection_rec,
23263         df_sort_and_compress_refs): Call df_free_ref.
23264         (df_ref_equal_p, df_ref_compare): Compare offset and width fields
23265         of df_ref_extract.
23266         (df_ref_create_structure): Allocate df_ref_extract if offset and
23267         width fields are used.
23268         (df_def_record_1): Get offset and width from ZERO_EXTRACT.
23269         (df_uses_record): Get offset and width from ZERO_EXTRACT
23270         and SIGN_EXTRACT.
23271         * global.c (build_insn_chain): Change DF_REF_EXTRACT to either
23272         DF_REF_ZERO_EXTRACT or DF_REF_SIGN_EXTRACT.  Change
23273         DF_REF_STRICT_LOWER_PART to DF_REF_STRICT_LOW_PART.
23274         * df.h (df_ref_flags): Change DF_REF_EXTRACT to either
23275         DF_REF_ZERO_EXTRACT or DF_REF_SIGN_EXTRACT.  Change
23276         DF_REF_STRICT_LOWER_PART to DF_REF_STRICT_LOW_PART.
23277         (df_ref_extract): New structure.
23278         (DF_REF_WIDTH, DF_REF_OFFSET): New macros.
23279         (df_ref_create): Add width and offset parameters.
23280
23281 2008-03-05  Richard Guenther  <rguenther@suse.de>
23282
23283         * tree-ssa-structalias.c (get_constraint_for_component_ref):
23284         Use ranges_overlap_p.
23285         (offset_overlaps_with_access): Rename
23286         to ranges_overlap_p and move ...
23287         * tree-flow-inline.h (ranges_overlap_p): ... here.
23288
23289         * tree.h (get_inner_reference, handled_component_p): Update
23290         comments.
23291
23292         * tree.h (record_component_aliases, get_alias_set,
23293         alias_sets_conflict_p, alias_sets_must_conflict_p,
23294         objects_must_conflict_p): Move declarations ...
23295         * alias.h (record_component_aliases, get_alias_set,
23296         alias_sets_conflict_p, alias_sets_must_conflict_p,
23297         objects_must_conflict_p): ... here.
23298         Include coretypes.h.
23299         * Makefile.in (ALIAS_H): Add coretypes.h dependency.
23300
23301 2008-03-05  Aldy Hernandez  <aldyh@redhat.com>
23302
23303         * cfg.c: Include tree-flow.h.
23304         (remove_edge_raw): Call redirect_edge_var_map_clear.
23305         (redirect_edge_succ_nodup): Call redirect_edge_var_map_dup.
23306         * tree-flow-inline.h (redirect_edge_var_map_def): New.
23307         (redirect_edge_var_map_result): New.
23308         * tree-cfgcleanup.c (remove_forwarder_block_with_phi): Replace
23309         PENDING_STMT use with redirect_edge_var_map_*.
23310         * tree-ssa.c (edge_var_maps): New definition.
23311         (redirect_edge_var_map_add): New.
23312         (redirect_edge_var_map_clear): New.
23313         (redirect_edge_var_map_dup): New.
23314         (redirect_edge_var_map_vector): New.
23315         (redirect_edge_var_map_destroy): New.
23316         (ssa_redirect_edge): Replace PENDING_STMT use with
23317         redirect_edge_var_map_*.
23318         (flush_pending_stmts): Same.
23319         (delete_tree_ssa): Destroy edge var map.
23320         * tree-flow.h (struct _edge_var_map): New.
23321         Define edge_var_map vector type.
23322         Declare redirect_edge_var_map_* prototypes.
23323         * Makefile.in (cfg.o): Depend on TREE_FLOW_H.
23324         * tree-cfg.c (reinstall_phi_args): Replace
23325         PENDING_STMT use with redirect_edge_var_map_*.
23326
23327 2008-03-05  Richard Guenther  <rguenther@suse.de>
23328
23329         PR tree-optimization/35472
23330         * tree-ssa-dse.c (dse_optimize_stmt): Do not delete a store
23331         whose single use_stmt has a overlapping set of loaded and
23332         stored symbols as that use_stmt might be a noop assignment then.
23333
23334 2008-03-05  Joel Sherrill <joel.sherrill@oarcorp.com>
23335
23336         * gthr-rtems.h: Implement __gthread_mutex_destroy.
23337
23338 2008-03-05  Richard Guenther  <rguenther@suse.de>
23339
23340         PR c++/35336
23341         * tree.def (BIT_FIELD_REF): Document that operands 1 and 2
23342         should be constants.
23343         * tree-cfg.c (verify_expr): Verify it.
23344         * fold-const.c (fold_truthop): Remove code generating
23345         BIT_FIELD_REFs of structure bases.
23346         (fold_binary): Likewise.
23347         (fold_ternary): Position and size of BIT_FIELD_REFs are
23348         always host integers.
23349         (make_bit_field_ref): Remove.
23350         (optimize_bit_field_compare): Remove.
23351         (all_ones_mask_p): Remove.
23352
23353 2008-03-05  Gabor Loki  <loki@gcc.gnu.org>
23354
23355         PR gcc/33009
23356         * rtl-factoring.c (clear_regs_live_in_seq): Fix backward steps.
23357         (split_block_and_df_analyze): New. Split basic block and rebuild
23358         dataflow.
23359         (block_label_after): Use SPLIT_BLOCK_AND_DF_ANALYZE instead of
23360         SPLIT_BLOCK.
23361         (split_pattern_seq): Likewise.
23362         (erase_matching_seqs): Likewise.
23363         (split_pattern_seq): Skip return insn in case of REG_NORETURN note.
23364
23365 2008-03-04  Geoff Keating  <geoffk@apple.com>
23366
23367         * fold-const.c (tree_single_nonnegative_warnv_p): Fix mixed
23368         declaration and code.
23369         (tree_invalid_nonnegative_warnv_p): Likewise.
23370
23371 2008-03-05  Serge Belyshev  <belyshev@depni.sinp.msu.ru>
23372
23373         * doc/install.texi (Testing): Correct quoting for the RUNTESTFLAGS
23374         examples.  Truncate option-names then causing overfull hbox.
23375
23376 2008-03-04  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
23377
23378         PR target/35222
23379         * configure.ac (CONFIG_SJLJ_EXCEPTIONS): Force SJLJ exceptions
23380         on hpux10.
23381         * configure: Rebuilt.
23382
23383 2008-03-04  Rafael Espíndola  <espindola@google.com>
23384
23385         * fold-const.c (tree_simple_nonnegative_warnv_p): New.
23386         (tree_unary_nonnegative_warnv_p): New.
23387         (tree_binary_nonnegative_warnv_p): New.
23388         (tree_single_nonnegative_warnv_p): New.
23389         (tree_invalid_nonnegative_warnv_p): New.
23390         (tree_expr_nonnegative_warnv_p): Redefine in term of the new functions.
23391
23392 2008-03-04  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
23393
23394         PR 28322
23395         * opts.c (handle_option): Postpone 'unknown option' errors only for
23396         warning options.
23397
23398 2008-03-04  H.J. Lu  <hongjiu.lu@intel.com>
23399
23400         PR target/35453
23401         * config/i386/smmintrin.h (SIDD_XXX): Renamed to ...
23402         (_SIDD_XXX): This.
23403
23404 2008-03-04  Rafael Espíndola  <espindola@google.com>
23405
23406         * fold-const.c (tree_unary_nonzero_warnv_p): New.
23407         (tree_binary_nonzero_warnv_p): New.
23408         (tree_single_nonzero_warnv_p): New.
23409         (tree_expr_nonzero_warnv_p): Redefine using the new functions.
23410
23411 2008-03-04  Uros Bizjak  <ubizjak@gmail.com>
23412
23413         PR middle-end/35456
23414         * fold-const.c (fold_cond_expr_with_comparison): Prevent
23415         transformations for modes that have signed zeros.
23416         * ifcvt.c (noce_try_abs): Ditto.
23417
23418 2008-03-04  Joseph Myers  <joseph@codesourcery.com>
23419
23420         * config/i386/i386.c (override_options): Force
23421         -maccumulate-outgoing-args on if TARGET_STACK_PROBE.
23422
23423 2008-03-04  Jan Hubicka  <jh@suse.cz>
23424
23425         PR c++/35262
23426         * ipa-inline.c (cgraph_decide_inlining_of_small_function): Fix typo
23427         in last commit.
23428
23429 2008-03-04  Danny Smith  <dannysmith@users.sourceforge.net>
23430
23431         * config/i386/i386.md (allocate_stack_worker_32): Use  __chkstk
23432         label to probe the stack.
23433
23434 2008-03-04  Danny Smith  <dannysmith@users.sourceforge.net>
23435
23436         * gthr-win32.h [__GTHREAD_HIDE_WIN32API]
23437         (__gthr_win32_mutex_destroy): Declare.
23438         [__GTHREAD_HIDE_WIN32API] (__gthread_mutex_destroy): Use
23439         __gthr_win32_mutex_destroy.
23440         * config/i386/gthr-win32.c  (__gthr_win32_mutex_destroy): Define.
23441
23442 2008-03-03  Jan Hubicka  <jh@suse.cz>
23443
23444         PR c++/35262
23445         * ipa-inline.c (cgraph_decide_inlining_of_small_function): Be more
23446         aggressive on inlining cold calls.
23447
23448 2008-03-03  Richard Guenther  <rguenther@suse.de>
23449
23450         * tree-ssa-sccvn.c (visit_reference_op_store): Do not insert
23451         struct copies into the expression table.
23452         (simplify_unary_expression): Handle VIEW_CONVERT_EXPR.
23453         (try_to_simplify): Likewise.
23454         * fold-const.c (fold_unary): Fold VIEW_CONVERT_EXPR of
23455         integral and pointer arguments which do not change the
23456         precision to NOP_EXPRs.
23457         * tree-ssa-loop-ivopts.c (may_be_nonaddressable_p): Adjust
23458         VIEW_CONVERT_EXPR case.
23459
23460 2008-03-02  Sebastian Pop  <sebastian.pop@amd.com>
23461
23462         * tree-scalar-evolution.c (instantiate_parameters_1): An SSA_NAME
23463         defined in a loop at depth 0 is invariant.
23464         * tree-chrec.c (evolution_function_is_invariant_rec_p): Ditto.
23465         * tree-ssa-loop-ivopts.c (expr_invariant_in_loop_p): Should never
23466         be called at loop depth 0.
23467
23468 2008-03-02  Jakub Jelinek  <jakub@redhat.com>
23469
23470         PR driver/35420
23471         * gcc.c (process_command): Update copyright notice dates.
23472         * gcov.c (print_version): Likewise.
23473         * gcov-dump.c (print_version): Likewise.
23474         * mips-tfile.c (main): Likewise.
23475         * mips-tdump.c (main): Likewise.
23476
23477 2008-03-02  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
23478
23479         PR 24924
23480         * c-common.c (flag_permissive): Delete.
23481         (constant_expression_warnings): Check flags first.
23482         (constant_expression_error): New.
23483         * c-common.h (flag_permissive): Delete.
23484         (constant_expression_error): Declare.
23485         * flags.h (flag_permissive): Declare. Update description.
23486         * diagnostic.c (pedwarn): Update.
23487         (permerror): New.
23488         * diagnostic.h: (pedantic_error_kind): Rename as pedantic_warning_kind.
23489         (permissive_error_kind): New.
23490         * toplev.c (flag_permissive): Define. Update description.
23491         * toplev.h (permissive_error_kind): Declare.
23492         * c-errors.c (pedwarn_c99): Use pedantic_warning_kind.
23493         (pedwarn_c90): Use pedantic_warning_kind.
23494         * c-opts.c (c_common_post_options): flag_permissive does not affect
23495         flag_pedantic_errors.
23496
23497 2008-03-02  Joseph Myers  <joseph@codesourcery.com>
23498
23499         * libgcc2.c (__addvSI3, __addvsi3, __addvDI3, __subvSI3,
23500         __subvsi3, __subvDI3, __negvSI2, __negvsi2, __negvDI2, __absvSI2,
23501         __absvsi2, __absvDI2): Use unsigned arithmetic.
23502
23503 2008-03-02  Andi Kleen  <ak@suse.de>
23504             Richard Guenther  <rguenther@suse.de>
23505
23506         * struct-equiv.c: Remove file.
23507         * cfg_cleanup.c (condjump_equiv_p): Remove.
23508         * Makefile.in (OBJS-common): Remove struct-equiv.o.
23509         (struct-equiv.o): Remove rule.
23510         * basic-block.h (struct_equiv_checkpoint, STRUCT_EQUIV_*,
23511         insns_match_p, struct_equiv_block_eq, struct_equiv_init,
23512         rtx_equiv_p, condjump_equiv_p): Remove prototypes.
23513
23514 2008-03-01  Alexandre Oliva  <aoliva@redhat.com>
23515
23516         * ifcvt.c (noce_process_if_block): Try to handle only the then
23517         block if the else block exists but isn't suitable.
23518
23519 2008-03-01  Janne Blomqvist  <jb@gcc.gnu.org>
23520
23521         PR gcc/35063
23522         * gthr-posix.h (__gthread_mutex_destroy): Remove extra declarations.
23523         * gthr-posix95.h (__gthread_mutex_destroy): Likewise. Note this fixes
23524         regression from previous patch.
23525
23526 2008-03-01  Janne Blomqvist  <jb@gcc.gnu.org>
23527
23528         PR gcc/35063
23529         * gthr.h: Add __gthread_mutex_destroy as a function that must be
23530         implemented.
23531         * gthr-vxworks.h (__gthread_mutex_destroy): Null implementation.
23532         * gthr-single.h (__gthread_mutex_destroy): Likewise.
23533         * gthr-rtems.h (__gthread_mutex_destroy): Likewise.
23534         * gthr-mipssde.h (__gthread_mutex_destroy): Likewise.
23535         * gthr-nks.h (__gthread_mutex_destroy): Likewise.
23536         * gthr-solaris.h (__gthread_mutex_destroy): Call mutex_destroy.
23537         * gthr-win32.h (__GTHREAD_MUTEX_DESTROY_FUNCTION): Remove.
23538         (__gthread_mutex_destroy_function): Rename to
23539         __gthread_mutex_destroy.
23540         * gthr-dce.h (__gthread_mutex_destroy): Call
23541         pthread_mutex_destroy.
23542         * gthr-tpf.h (__gthread_mutex_destroy): Likewise.
23543         * gthr-posix.h (__gthread_mutex_destroy): Likewise.
23544         * gthr-posix95.h (__gthread_mutex_destroy): Likewise.
23545
23546 2008-03-01  Alexandre Oliva  <aoliva@redhat.com>
23547
23548         * df-scan.c (df_ref_chain_change_bb): Simplify.
23549         (df_insn_change_bb): Add new_bb argument.  Simplify.  Call
23550         set_block_for_insn if there's any change.
23551         * df.h ((df_insn_change_bb): Fix prototype.
23552         * cfgrtl.c (update_bb_for_insn_chain): Pass bb to
23553         df_insn_change_bb, don't call set_block_for_insn.
23554         * emit-rtl.c (reorder_insns): Likewise.
23555         * haifa-sched.c (move_insn): Likewise.
23556
23557 2008-03-01  Alexandre Oliva  <aoliva@redhat.com>
23558
23559         * rtlanal.c (loc_mentioned_in_p): Test XVECEXPs correctly.
23560
23561 2008-03-01  Alexandre Oliva  <aoliva@redhat.com>
23562
23563         * tree-flow-inline.h (next_readonly_imm_use): Return
23564         NULL_USE_OPERAND_P after the end.
23565
23566 2008-03-01  Richard Guenther  <rguenther@suse.de>
23567
23568         PR tree-optimization/35411
23569         * tree-sra.c (sra_build_assignment): Split conversion to
23570         final type to a separate statement if we are not assigning
23571         to a register.
23572
23573 2008-02-29  Francois-Xavier Coudert  <coudert@clipper.ens.fr>
23574
23575         * fold-const.c (fold_convertible_p): Correct the logic to follow
23576         that in fold_convert().
23577
23578 2008-02-29  Douglas Gregor  <doug.gregor@gmail.com>
23579
23580         PR c++/35315
23581         * tree-inline.c (build_duplicate_type): When we make a
23582         duplicate type, make it unique in the canonical types system.
23583
23584 2008-02-29  Tom Tromey  <tromey@redhat.com>
23585
23586         * toplev.c (input_file_stack, input_file_stack_tick, fs_p,
23587         input_file_stack_history, input_file_stack_restored): Remove.
23588         (push_srcloc, pop_srcloc, restore_input_file_stack): Likewise.
23589         * input.h (struct file_stack): Remove.
23590         (push_srcloc, pop_srcloc, restore_input_file_stack): Likewise.
23591         (input_file_stack, input_file_stack_tick, INPUT_FILE_STACK_BITS):
23592         Likewise.
23593         * diagnostic.h (struct diagnostic_context) <last_module>: Change
23594         type.
23595         (diagnostic_last_module_changed): Add 'map' argument.
23596         (diagnostic_set_last_function): Likewise.
23597         * diagnostic.c (undiagnostic_report_current_module): Iterate using
23598         line map, not input_file_stack.
23599         * c-lex.c (fe_file_change): Don't use push_srcloc or pop_srcloc.
23600
23601 2008-02-29  Paul Brook  <paul@codesourcery.com>
23602
23603         * config/arm/arm.md (arm_addsi3): Add r/k/n alternative.
23604
23605 2008-02-29  Paul Brook  <paul@codesourcery.com>
23606
23607         * config/arm/ieee754-df.S (muldf3): Use RET macros.
23608
23609 2008-02-29  Richard Guenther  <rguenther@suse.de>
23610
23611         * tree-ssa-pre.c (get_sccvn_value): Create missing VNs via
23612         vn_lookup_or_add.
23613         * tree-ssa-sccnv.c (visit_reference_op_store): Use the rhs
23614         value for comparing for a store match.
23615         (simplify_unary_expression): Do nothing for SSA_NAMEs.
23616         (try_to_simplify): Do not do a full-blown reference lookup.
23617
23618 2008-02-29  Kaz Kojima  <kkojima@gcc.gnu.org>
23619
23620         * config/sh/sh.c (sh_scalar_mode_supported_p): New function.
23621         (TARGET_SCALAR_MODE_SUPPORTED_P): Define.
23622
23623         * config/sh/sh.h (OVERRIDE_OPTIONS): Don't warn for profiling.
23624
23625 2008-02-29  Sebastian Pop  <sebastian.pop@amd.com>
23626
23627         * tree-loop-linear.c (try_interchange_loops): Compare memory access
23628         strides against cache sizes.
23629
23630 2008-02-29  Kaz Kojima  <kkojima@gcc.gnu.org>
23631
23632         * config/sh/sh.c (sh_secondary_reload): Handle loading a float
23633         constant to fpul.
23634
23635 2008-02-28  Richard Sandiford  <rsandifo@nildram.co.uk>
23636
23637         * simplify-rtx.c (simplify_unary_operation_1): Extend the handling
23638         of SUBREG_PROMOTED_VAR_P to cope with cases where the extended value
23639         is smaller than the original promoted value.
23640         (simplify_subreg): If OP is a SUBREG, try to preserve its
23641         SUBREG_PROMOTED_VAR_P information.
23642
23643 2008-02-28  Steven Bosscher  <stevenb.gcc@gmail.com>
23644
23645         * tree-ssa-sccvn (vn_ssa_aux_obstack): New obstack.
23646         (VN_INFO_GET): Allocate new objects on the obstack.
23647         (init_scc_vn): Initialize the obstack.  Use XDELETE instead of free
23648         for rpo_numbers_temp, for consistency.
23649         (free_scc_vn): Free the obstack.
23650
23651 2008-02-28  Sebastian Pop  <sebastian.pop@amd.com>
23652
23653         * doc/invoke.texi: Document -ftree-loop-distribution.
23654         * tree-loop-distribution.c: New.
23655         * tree-pass.h (pass_loop_distribution): New.
23656         * graphds.h (struct graph): Add htab_t indices.
23657         * timevar.def (TV_TREE_LOOP_DISTRIBUTION): New.
23658         * tree-vectorizer.c (rename_variables_in_loop): Extern.
23659         (slpeel_tree_duplicate_loop_to_edge_cfg): Init PENDING_STMT to NULL.
23660         * tree-vectorizer.h (tree_duplicate_loop_on_edge): Declared.
23661         * tree-data-ref.c (debug_data_dependence_relations): New.
23662         (dump_data_dependence_relation): Also print data references.
23663         (free_data_ref): Extern.
23664         (same_access_functions): Moved...
23665         (find_vertex_for_stmt): Renamed rdg_vertex_for_stmt.
23666         (dump_rdg_vertex, debug_rdg_vertex, dump_rdg_component,
23667         debug_rdg_component, dump_rdg, debug_rdg, dot_rdg_1, dot_rdg,
23668         struct rdg_vertex_info, rdg_vertex_for_stmt): New.
23669         (create_rdg_edge_for_ddr, create_rdg_vertices): Cleaned up.
23670         (stmts_from_loop): Skip LABEL_EXPR.
23671         (hash_stmt_vertex_info, eq_stmt_vertex_info, hash_stmt_vertex_del):
23672         New.
23673         (build_rdg): Initialize rdg->indices htab.
23674         (free_rdg, stores_from_loop, ref_base_address,
23675         rdg_defs_used_in_other_loops_p, have_similar_memory_accesses,
23676         have_similar_memory_accesses_1, ref_base_address_1,
23677         remove_similar_memory_refs): New.
23678         * tree-data-ref.h: Depend on tree-chrec.h.
23679         (debug_data_dependence_relations, free_data_ref): Declared.
23680         (same_access_functions): ... here.
23681         (ddr_is_anti_dependent, ddrs_have_anti_deps, ddr_dependence_level):
23682         New.
23683         (struct rdg_vertex): Add has_mem_write and has_mem_reads.
23684         (RDGV_HAS_MEM_WRITE, RDGV_HAS_MEM_READS, RDG_STMT,
23685         RDG_MEM_WRITE_STMT, RDG_MEM_READS_STMT): New.
23686         (dump_rdg_vertex, debug_rdg_vertex, dump_rdg_component,
23687         debug_rdg_component, dump_rdg, debug_rdg, dot_rdg,
23688         rdg_vertex_for_stmt): Declared.
23689         (struct rdg_edge): Add level.
23690         (RDGE_LEVEL): New.
23691         (free_rdg, stores_from_loop, remove_similar_memory_refs,
23692         rdg_defs_used_in_other_loops_p, have_similar_memory_accesses):
23693         Declared.
23694         (rdg_has_similar_memory_accesses): New.
23695         * tree-vect-analyze.c: Remove unused static decls.
23696         * lambda.h (dependence_level): New.
23697         * common.opt (ftree-loop-distribution): New.
23698         * tree-flow.h (mark_virtual_ops_in_bb,
23699         slpeel_tree_duplicate_loop_to_edge_cfg,
23700         rename_variables_in_loop): Declared.
23701         * Makefile.in (TREE_DATA_REF_H): Depend on tree-chrec.h.
23702         (OBJS-common): Add tree-loop-distribution.o.
23703         (tree-loop-distribution.o): New rule.
23704         * tree-cfg.c (mark_virtual_ops_in_bb): New.
23705         (mark_virtual_ops_in_region): Use mark_virtual_ops_in_bb.
23706         * passes.c (init_optimization_passes): Schedule pass_loop_distribution.
23707
23708 2008-02-28  Joseph Myers  <joseph@codesourcery.com>
23709
23710         PR target/33963
23711         * tree.c (handle_dll_attribute): Disallow TYPE_DECLs for types
23712         other than structures and unions.
23713
23714 2008-02-28  Richard Guenther  <rguenther@suse.de>
23715
23716         Revert:
23717         2008-02-26  Richard Guenther  <rguenther@suse.de>
23718
23719         * tree-flow.h (uid_decl_map_hash, uid_decl_map_eq): Move ...
23720         * tree.h (uid_decl_map_hash, uid_decl_map_eq): ... here.
23721         (lookup_decl_from_uid): Declare.
23722         (remove_decl_from_map): Likewise.
23723         * tree-ssa.c (uid_decl_map_eq, uid_decl_map_hash): Move ...
23724         * tree.c (uid_decl_map_eq, uid_decl_map_hash): ... here.
23725         (decl_for_uid_map): New global hashtable mapping DECL_UID
23726         to the decl tree.
23727         (init_ttree): Allocate it.
23728         (insert_decl_to_uid_decl_map): New helper function.
23729         (make_node_stat): Insert new decls into the map.
23730         (copy_node_stat): Likewise.
23731         (lookup_decl_from_uid): New function.
23732         (remove_decl_from_map): Likewise.
23733         (print_decl_for_uid_map_statistics): New helper.
23734         (dump_tree_statistics): Call it.
23735
23736         * tree-flow.h (struct gimple_df): Make referenced_vars a bitmap.
23737         (referenced_var_iterator): Adjust.
23738         (FOR_EACH_REFERENCED_VAR): Adjust.
23739         (FOR_EACH_REFERENCED_VAR_IN_BITMAP): New iterator.
23740         (num_referenced_vars): Adjust.
23741         * tree-flow-inline.h (gimple_referenced_vars): Adjust.
23742         (first_referenced_var): Remove.
23743         (end_referenced_vars_p): Likewise.
23744         (next_referenced_var): Likewise.
23745         (referenced_var_iterator_set): New helper function.
23746         * tree-dfa.c (referenced_var_lookup): Adjust.
23747         (referenced_var_check_and_insert): Likewise.
23748         (remove_referenced_var): Likewise.
23749         * tree-ssa.c (verify_flow_insensitive_alias_info): Use
23750         FOR_EACH_REFERENCED_VAR_IN_BITMAP.
23751         (verify_call_clobbering): Likewise.
23752         (verify_memory_partitions): Likewise.
23753         (init_tree_ssa): Allocate bitmap instead of hashtable for
23754         referenced_vars.
23755         (delete_tree_ssa): Adjust.
23756         * tree-ssa-alias.c (mark_aliases_call_clobbered): Use
23757         FOR_EACH_REFERENCED_VAR_IN_BITMAP.
23758         (compute_tag_properties): Likewise.
23759         (set_initial_properties): Likewise.
23760         (find_partition_for): Likewise.
23761         (update_reference_counts): Likewise.
23762         (dump_may_aliases_for): Likewise.
23763         * tree-ssa-operands.c (add_virtual_operand): Likewise.
23764         (add_call_clobber_ops): Likewise.
23765         (add_call_read_ops): Likewise.
23766         (get_asm_expr_operands): Likewise.
23767         * tree-into-ssa.c (dump_decl_set): Likewise.
23768         (update_ssa): Likewise.
23769         * tree-sra.c (scan_function): Likewise.
23770         (decide_instantiations): Likewise.
23771         (scalarize_parms): Likewise.
23772         * tree-ssa-alias-warnings.c (build_reference_table): Likewise.
23773         (dsa_named_for): Likewise.
23774         * tree-ssa-structalias.c (update_alias_info): Likewise.
23775         (merge_smts_into): Likewise.
23776
23777 2008-02-27  David Daney  <ddaney@avtrex.com>
23778
23779         PR target/34409
23780         * config/mips/iris.h (MIPS_DEBUGGING_INFO): Define.
23781         * config/mips/openbsd.h (MIPS_DEBUGGING_INFO): Same.
23782         * config/mips/sde.h (MIPS_DEBUGGING_INFO): Remove undef.
23783         * config/mips/vxworks.h (MIPS_DEBUGGING_INFO): Same.
23784         * config/mips/mips.h (MIPS_DEBUGGING_INFO): Remove define.
23785
23786 2008-02-27  Uros Bizjak  <ubizjak@gmail.com>
23787
23788         PR target/25477
23789         * config/darwin-ppc-ldouble-patch.def (BUILT_IN_NANL): Add.
23790         (BUILT_IN_NEXTTOWARD): Remove.
23791         (BUILT_IN_NEXTTOWARDF): Ditto.
23792         * config/darwin.c (darwin_patch_builtin): Use ACONCAT instead of
23793         alloca/strcpy/strcat.  Remove commented-out code.  Fix whitespace.
23794
23795 2008-02-27  Tom Tromey  <tromey@redhat.com>
23796
23797         * tree-dump.c (dequeue_and_dump) <FUNCTION_DECL>: Check
23798         DECL_SAVED_TREE, not DECL_LANG_SPECIFIC, when dumping body.
23799
23800 2008-02-27  Jan Beulich  <jbeulich@novell.com>
23801
23802         * c-decl.c (merge_decls): Use DECL_USER_ALIGN() on olddecl to
23803         update the respective field on newdecl.
23804
23805 2008-02-27  Revital Eres  <eres@il.ibm.com>
23806
23807         PR rtl-optimization/34999
23808         * bb-reorder.c (add_labels_and_missing_jumps): Do not handle
23809         crossing edges that ends with a call insn.
23810         (fix_up_fall_thru_edges): Handle crossing edges that ends with a
23811         call insn and clear the EDGE_CROSSING flag of the crossing edge
23812         when fixing fallthru edges.
23813
23814 2008-02-27  Richard Guenther  <rguenther@suse.de>
23815
23816         PR middle-end/35390
23817         * fold-const.c (fold_unary): Return the correct argument,
23818         converted to the result type.
23819
23820 2008-02-27  Richard Guenther  <rguenther@suse.de>
23821
23822         PR middle-end/34971
23823         * expr.c (expand_expr_real_1): Assert on rotates that operate
23824         on partial modes.
23825         * fold-const.c (fold_binary): Use the types precision, not the
23826         bitsize of the mode if folding rotate expressions.  Build rotates
23827         only for full modes.
23828
23829 2008-02-27  Jakub Jelinek  <jakub@redhat.com>
23830
23831         * c-ppoutput.c (scan_translation_unit): Handle CPP_PRAGMA
23832         and CPP_PRAGMA_EOL.
23833         * c-pragma.c (pragma_ns_name): New typedef.
23834         (registered_pp_pragmas): New variable.
23835         (c_pp_lookup_pragma): New function.
23836         (c_register_pragma_1): If flag_preprocess_only, do nothing
23837         for non-expanded pragmas, for expanded ones push pragma's
23838         namespace and name into registered_pp_pragmas vector.
23839         (c_invoke_pragma_handler): Register OpenMP pragmas even when
23840         flag_preprocess_only, don't register GCC pch_preprocess
23841         pragma if flag_preprocess_only.
23842         * c-opts.c (c_common_init): Call init_pragma even if
23843         flag_preprocess_only.
23844         * c-pragma.c (c_pp_lookup_pragma): New prototype.
23845         * config/darwin.h (DARWIN_REGISTER_TARGET_PRAGMAS): Don't call
23846         cpp_register_pragma if flag_preprocess_only.
23847
23848 2008-02-26  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
23849
23850         PR c/28800
23851         * c-parser.c (c_parser_translation_unit): Warn for empty
23852         translation unit, not empty source file.
23853
23854 2008-02-26  Paul Brook  <paul@codesourcery.com>
23855
23856         * config/arm/arm.c (thumb_set_frame_pointer): Ensure SP is first
23857         operand for Thumb-2.
23858         * config/arm/arm.h (reg_class): Add CORE_REGS.
23859         (REG_CLASS_NAMES, REG_CLASS_CONTENTS): Ditto.
23860         (BASE_REG_CLASS): Use CORE_REGS.
23861         (PREFERRED_RELOAD_CLASS): Add STACK_REG.
23862         (REGNO_MODE_OK_FOR_REG_BASE_P): Use REGNO_MODE_OK_FOR_BASE_P.
23863         (REGNO_OK_FOR_INDEX_P): Exclude SP.
23864         (ARM_REG_OK_FOR_INDEX_P): Always define.  Use
23865         ARM_REGNO_OK_FOR_INDEX_P.
23866         (ARM_PRINT_OPERAND_ADDRESS): Swap operands for [reg, sp].
23867         * config/arm/arm.md (arm_addsi3, thumb1_addsi3, arm_subsi3_insn,
23868         arm_movsi_insn, thumb1_movsi_insni, stack_tie): Add "k" alternatives.
23869         (ldm/stm peepholes): Ditto.
23870         * config/arm/thumb2.md (thumb2_movdi): Add "k" alternatives.
23871         * config/arm/vfp.md (arm_movsi_vfp, thumb2_movsi_vfp): Ditto.
23872         * config/arm/iwmmxt.md (iwmmxt_movsi_insn): Ditto.
23873         * config/arm/constraints.md: Enable "k" constraint on ARM.
23874
23875 2008-02-27  Ben Elliston  <bje@au.ibm.com>
23876
23877         * config/rs6000/rs6000.c: Annotate cache line size field in all
23878         instances of struct processor_costs.
23879
23880 2008-02-26  David Edelsohn  <edelsohn@gnu.org>
23881
23882         * dbgcnt.def (cfg_cleanup, cprop1, cprop2, dce_fast, dce_ud, dse1,
23883         dse2, gcse, if_conversion, if_after_combine, if_after_reload,
23884         jump_bypass): New counters.
23885         * cfgcleanup.c (cleanup_cfg): Add dbg_cnt.
23886         * dce.c (gate_ud_dce): Same.
23887         (gate_fast_dce): Same.
23888         * dse.c (gate_dse1): New function.
23889         (gate_dse2): New function.
23890         (gate_dse): Merge results of new gate functions.
23891         * gcse.c (gcse_main): Bracket cprop1 and cprop2 with dbg_cnt.
23892         (gate_handle_jump_bypass): Add dbg_cnt.
23893         (gate_handle_gcse): Add dbg_cnt.
23894         * ifcvt.c (gate_handle_if_conversion): Same.
23895         (gate_handle_if_after_combine): Same.
23896         (gate_handle_if_after_reload): Same.
23897         * Makefile.in: Add DBGCNT_H to cfgcleanup.o and ifcvt.o.
23898
23899 2008-02-26  Edmar Wienskoski  <edmar@freescale.com>
23900
23901         * config/rs6000/rs6000.c (processor_costs): Update e300 cache
23902         line sizes.
23903         * doc/invoke.texi: Add e300c2 and e300c3 to list of cpus.
23904
23905 2008-02-26  Jason Merrill  <jason@redhat.com>
23906
23907         PR c++/35315
23908         * attribs.c (decl_attributes): Leave ATTR_FLAG_TYPE_IN_PLACE
23909         alone if it's the naming decl for the type's main variant.
23910
23911 2008-02-26  Tom Tromey  <tromey@redhat.com>
23912
23913         * system.h (USE_MAPPED_LOCATION): Poison.
23914         * Makefile.in (GTFILES): Put CPP_ID_DATA_H first.
23915         * tree-cfg.c (make_cond_expr_edges): Remove old location code.
23916         (make_goto_expr_edges): Likewise.
23917         (remove_bb): Likewise.
23918         (execute_warn_function_return): Likewise.
23919         * basic-block.h (struct edge_def) <goto_locus>: Change type to
23920         location_t.
23921         * c-common.c (fname_decl): Remove old location code.
23922         * tree-vect-transform.c (vect_finish_stmt_generation): Remove old
23923         location code.
23924         * rtl.h (ASM_OPERANDS_SOURCE_LOCATION): Remove old-location
23925         variant.
23926         (ASM_INPUT_SOURCE_LOCATION): Likewise.
23927         (gen_rtx_ASM_INPUT): Likewise.
23928         (gen_rtx_ASM_INPUT_loc): Likewise.
23929         (get_rtx_asm_OPERANDS): Remove.
23930         * cfglayout.c (insn_locators_alloc): Remove old location code.
23931         (set_curr_insn_source_location): Likewise.
23932         (curr_insn_locator): Likewise.
23933         * print-tree.c (print_node): Remove old location code.
23934         * tree-mudflap.c (mf_varname_tree): Remove old location code.
23935         (mf_file_function_line_tree): Remove test of USE_MAPPED_LOCATION.
23936         * cfgexpand.c (expand_gimple_cond_expr): Don't use
23937         location_from_locus.
23938         (construct_exit_block): Remove old location code.
23939         * emit-rtl.c (force_next_line_note): Remove old location code.
23940         * profile.c (branch_prob): Remove old location code.
23941         * tree-vectorizer.h (LOC, UNKNOWN_LOC, EXPR_LOC, LOC_FILE,
23942         LOC_LINE): Remove old-location variants.
23943         * langhooks.c (lhd_print_error_function): Remove old location
23944         code.
23945         * configure, config.in: Rebuilt.
23946         * configure.ac (--enable-mapped-location): Remove.
23947         * c-decl.c (c_init_decl_processing): Remove old location code.
23948         (finish_function): Likewise.
23949         * recog.c (decode_asm_operands): Remove old location code.
23950         * c-pch.c (c_common_read_pch): Remove old location code.
23951         * rtl.def (ASM_INPUT, ASM_OPERANDS): Remove old location
23952         variants.
23953         * gimple-low.c (lower_function_body): Remove old location code.
23954         * toplev.c (unknown_location): Remove.
23955         (push_srcloc): Remove old-location variant.
23956         (process_options): Remove old location code.
23957         (lang_dependent_init): Likewise.
23958         * input.h (UNKNOWN_LOCATION): Move definition.
23959         (location_t): Undeprecate.
23960         (source_locus): Remove.
23961         (location_from_locus): Remove.
23962         (struct location_s): Remove.
23963         Remove all old-location code.
23964         (input_line, input_filename): Remove.
23965         * final.c (final_scan_insn): Remove old location code.
23966         * diagnostic.c (diagnostic_build_prefix): Remove
23967         USE_MAPPED_LOCATION test.
23968         * tree.h (gimple_stmt) <locus>: Now a location_t.
23969         (tree_exp) <locus>: Likewise.
23970         (DECL_IS_BUILTIN): Remove old-location variant.
23971         (annotate_with_file_line, annotate_with_locus): Likewise.
23972         (expr_locus, set_expr_locus): Update.
23973         * tree.c (build1_stat): Remove old location code.
23974         (last_annotated_node): Remove.
23975         (annotate_with_file_line): Remove old-location variant.
23976         (annotate_with_locus): Likewise.
23977         (expr_location): Remove old location code.
23978         (set_expr_location): Likewise.
23979         (expr_has_location): Likewise.
23980         (expr_locus): Likewise.
23981         (set_expr_locus): Likewise.
23982         (expr_filename): Don't use location_from_locus.
23983         (expr_lineno): Likewise.
23984         * rtl-error.c (location_for_asm): Remove old location code.
23985         * c-lex.c (cb_line_change): Remove old location code.
23986         (fe_file_change): Likewise.
23987         (cb_def_pragma): Likewise.
23988         (c_lex_with_flags): Likewise.
23989         * gengtype.c (do_typedef): Don't special-case location types.
23990         (define_location_structures): Remove.
23991         (main): Don't call define_location_structures.
23992         * tree-pretty-print.c (dump_implicit_edges): Remove old location
23993         code.
23994
23995 2008-02-26  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
23996
23997         PR 26264
23998         * builtins.def (BUILT_IN_STDARG_START): Remove.
23999         * builtins.c (expand_builtin): Remove BUILT_IN_STDARG_START.
24000         * tree-stdarg.c (execute_optimize_stdarg): Likewise.
24001         * tree-inline.c (inline_forbidden_p_1): Likewise.
24002
24003 2008-02-26  Richard Guenther  <rguenther@suse.de>
24004
24005         * tree-flow.h (uid_decl_map_hash, uid_decl_map_eq): Move ...
24006         * tree.h (uid_decl_map_hash, uid_decl_map_eq): ... here.
24007         (lookup_decl_from_uid): Declare.
24008         (remove_decl_from_map): Likewise.
24009         * tree-ssa.c (uid_decl_map_eq, uid_decl_map_hash): Move ...
24010         * tree.c (uid_decl_map_eq, uid_decl_map_hash): ... here.
24011         (decl_for_uid_map): New global hashtable mapping DECL_UID
24012         to the decl tree.
24013         (init_ttree): Allocate it.
24014         (insert_decl_to_uid_decl_map): New helper function.
24015         (make_node_stat): Insert new decls into the map.
24016         (copy_node_stat): Likewise.
24017         (lookup_decl_from_uid): New function.
24018         (remove_decl_from_map): Likewise.
24019         (print_decl_for_uid_map_statistics): New helper.
24020         (dump_tree_statistics): Call it.
24021
24022         * tree-flow.h (struct gimple_df): Make referenced_vars a bitmap.
24023         (referenced_var_iterator): Adjust.
24024         (FOR_EACH_REFERENCED_VAR): Adjust.
24025         (FOR_EACH_REFERENCED_VAR_IN_BITMAP): New iterator.
24026         (num_referenced_vars): Adjust.
24027         * tree-flow-inline.h (gimple_referenced_vars): Adjust.
24028         (first_referenced_var): Remove.
24029         (end_referenced_vars_p): Likewise.
24030         (next_referenced_var): Likewise.
24031         (referenced_var_iterator_set): New helper function.
24032         * tree-dfa.c (referenced_var_lookup): Adjust.
24033         (referenced_var_check_and_insert): Likewise.
24034         (remove_referenced_var): Likewise.
24035         * tree-ssa.c (verify_flow_insensitive_alias_info): Use
24036         FOR_EACH_REFERENCED_VAR_IN_BITMAP.
24037         (verify_call_clobbering): Likewise.
24038         (verify_memory_partitions): Likewise.
24039         (init_tree_ssa): Allocate bitmap instead of hashtable for
24040         referenced_vars.
24041         (delete_tree_ssa): Adjust.
24042         * tree-ssa-alias.c (mark_aliases_call_clobbered): Use
24043         FOR_EACH_REFERENCED_VAR_IN_BITMAP.
24044         (compute_tag_properties): Likewise.
24045         (set_initial_properties): Likewise.
24046         (find_partition_for): Likewise.
24047         (update_reference_counts): Likewise.
24048         (dump_may_aliases_for): Likewise.
24049         * tree-ssa-operands.c (add_virtual_operand): Likewise.
24050         (add_call_clobber_ops): Likewise.
24051         (add_call_read_ops): Likewise.
24052         (get_asm_expr_operands): Likewise.
24053         * tree-into-ssa.c (dump_decl_set): Likewise.
24054         (update_ssa): Likewise.
24055         * tree-sra.c (scan_function): Likewise.
24056         (decide_instantiations): Likewise.
24057         (scalarize_parms): Likewise.
24058         * tree-ssa-alias-warnings.c (build_reference_table): Likewise.
24059         (dsa_named_for): Likewise.
24060         * tree-ssa-structalias.c (update_alias_info): Likewise.
24061         (merge_smts_into): Likewise.
24062
24063 2008-02-26  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
24064
24065         PR 34351
24066         * doc/invoke.texi (-Wall): Add -Wvolatile-register-var.
24067         * c-opts.c (c_common_handle_option): Wall enables
24068         Wvolatile-register-var.
24069         * common.opt: Move Wvolatile-register-var to...
24070         * c.opt: ...here.
24071
24072 2008-02-26  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
24073
24074         * common.opt (Wlarger-than=): New.
24075         * doc/invoke.texi (Warning Options): Replace -Wlarger-than- with
24076         -Wlarger-than=.
24077         * opts.c (common_handle_option): Handle -Wlarger-than=.
24078         * optc-gen.awk: Likewise.
24079         * opth-gen.awk: Likewise.
24080         * stor-layout.c (layout_decl): Use -Wlarger-than= for warning.
24081         * tree-optimize.c (tree_rest_of_compilation): Likewise.
24082
24083 2008-02-26  Manuel Lopez-Ibanez <manu@gcc.gnu.org>
24084
24085         * c-common.c (match_case_to_enum_1): Add appropriate
24086         OPT_W* parameter to warning.
24087         (c_do_switch_warnings): Likewise.
24088         * c-typeck.c (warning_init): Add one more parameter following
24089         'warning' function.
24090         (push_init_level): Update call to warning_init.
24091         (pop_init_level): Likewise.
24092         (add_pending_init): Likewise.
24093         (output_init_element: Likewise.
24094
24095 2008-02-26  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
24096
24097         PR 28322
24098         * toplev.c (toplev_main): If there are warnings or error, print
24099         errors for ignored options.
24100         * opts.c (ignored_options): New static variable.
24101         (postpone_unknown_option_error): New.
24102         (print_ignored_options): New.
24103         (handle_option): Postpone errors for unknown -Wno-* options.
24104         * opts.h (print_ignored_options): Declare.
24105
24106 2008-02-25  Richard Sandiford  <rsandifo@nildram.co.uk>
24107
24108         * config/mips/mips.md (loadgp_blockage, blockage): Change type
24109         to "ghost".
24110
24111 2008-02-25  Richard Guenther  <rguenther@suse.de>
24112
24113         Revert:
24114         2008-02-25  Richard Guenther  <rguenther@suse.de>
24115
24116         * tree-flow.h (uid_decl_map_hash, uid_decl_map_eq): Move ...
24117         * tree.h (uid_decl_map_hash, uid_decl_map_eq): ... here.
24118         (lookup_decl_from_uid): Declare.
24119         * tree-ssa.c (uid_decl_map_eq, uid_decl_map_hash): Move ...
24120         * tree.c (uid_decl_map_eq, uid_decl_map_hash): ... here.
24121         (decl_for_uid_map): New global hashtable mapping DECL_UID
24122         to the decl tree.
24123         (init_ttree): Allocate it.
24124         (insert_decl_to_uid_decl_map): New helper function.
24125         (make_node_stat): Insert new decls into the map.
24126         (copy_node_stat): Likewise.
24127         (lookup_decl_from_uid): New function.
24128         (print_decl_for_uid_map_statistics): New helper.
24129         (dump_tree_statistics): Call it.
24130
24131         * tree-flow.h (struct gimple_df): Make referenced_vars a bitmap.
24132         (referenced_var_iterator): Adjust.
24133         (FOR_EACH_REFERENCED_VAR): Adjust.
24134         (FOR_EACH_REFERENCED_VAR_IN_BITMAP): New iterator.
24135         (num_referenced_vars): Adjust.
24136         * tree-flow-inline.h (gimple_referenced_vars): Adjust.
24137         (first_referenced_var): Remove.
24138         (end_referenced_vars_p): Likewise.
24139         (next_referenced_var): Likewise.
24140         (referenced_var_iterator_set): New helper function.
24141         * tree-dfa.c (referenced_var_lookup): Adjust.
24142         (referenced_var_check_and_insert): Likewise.
24143         (remove_referenced_var): Likewise.
24144         * tree-ssa.c (verify_flow_insensitive_alias_info): Use
24145         FOR_EACH_REFERENCED_VAR_IN_BITMAP.
24146         (verify_call_clobbering): Likewise.
24147         (verify_memory_partitions): Likewise.
24148         (init_tree_ssa): Allocate bitmap instead of hashtable for
24149         referenced_vars.
24150         (delete_tree_ssa): Adjust.
24151         * tree-ssa-alias.c (mark_aliases_call_clobbered): Use
24152         FOR_EACH_REFERENCED_VAR_IN_BITMAP.
24153         (compute_tag_properties): Likewise.
24154         (set_initial_properties): Likewise.
24155         (find_partition_for): Likewise.
24156         (update_reference_counts): Likewise.
24157         (dump_may_aliases_for): Likewise.
24158         * tree-ssa-operands.c (add_virtual_operand): Likewise.
24159         (add_call_clobber_ops): Likewise.
24160         (add_call_read_ops): Likewise.
24161         (get_asm_expr_operands): Likewise.
24162         * tree-into-ssa.c (dump_decl_set): Likewise.
24163         (update_ssa): Likewise.
24164         * tree-sra.c (scan_function): Likewise.
24165         (decide_instantiations): Likewise.
24166         (scalarize_parms): Likewise.
24167         * tree-ssa-alias-warnings.c (build_reference_table): Likewise.
24168         (dsa_named_for): Likewise.
24169         * tree-ssa-structalias.c (update_alias_info): Likewise.
24170         (merge_smts_into): Likewise.
24171
24172 2008-02-25  Janne Blomqvist  <jb@gcc.gnu.org>
24173
24174         PR fortran/29549
24175         * doc/invoke.texi (-fcx-limited-range): Document new option.
24176         * toplev.c (process_options): Handle -fcx-fortran-rules.
24177         * common.opt: Add documentation for -fcx-fortran-rules.
24178
24179 2008-02-25  Janne Blomqvist  <jb@gcc.gnu.org>
24180
24181         PR c/35162
24182         * doc/invoke.texi (-fcx-limited-range): Correct to be in line with
24183         actual behaviour and C99.
24184
24185 2008-02-26  Ben Elliston  <bje@au.ibm.com>
24186
24187         * config/rs6000/rs6000.h (ASM_CPU_POWER5_SPEC): Define.
24188         (ASM_CPU_POWER6_SPEC): Likewise.
24189         (ASM_CPU_SPEC): Pass %(asm_cpu_power5) for -mcpu=power5.
24190         Likewise, pass %(asm_cpu_power6) for -mcpu=power6.
24191         (EXTRA_SPECS): Add asm_cpu_power5, asm_cpu_power6 spec strings.
24192
24193 2008-02-25  Richard Guenther  <rguenther@suse.de>
24194
24195         * tree-flow.h (uid_decl_map_hash, uid_decl_map_eq): Move ...
24196         * tree.h (uid_decl_map_hash, uid_decl_map_eq): ... here.
24197         (lookup_decl_from_uid): Declare.
24198         * tree-ssa.c (uid_decl_map_eq, uid_decl_map_hash): Move ...
24199         * tree.c (uid_decl_map_eq, uid_decl_map_hash): ... here.
24200         (decl_for_uid_map): New global hashtable mapping DECL_UID
24201         to the decl tree.
24202         (init_ttree): Allocate it.
24203         (insert_decl_to_uid_decl_map): New helper function.
24204         (make_node_stat): Insert new decls into the map.
24205         (copy_node_stat): Likewise.
24206         (lookup_decl_from_uid): New function.
24207         (print_decl_for_uid_map_statistics): New helper.
24208         (dump_tree_statistics): Call it.
24209
24210         * tree-flow.h (struct gimple_df): Make referenced_vars a bitmap.
24211         (referenced_var_iterator): Adjust.
24212         (FOR_EACH_REFERENCED_VAR): Adjust.
24213         (FOR_EACH_REFERENCED_VAR_IN_BITMAP): New iterator.
24214         (num_referenced_vars): Adjust.
24215         * tree-flow-inline.h (gimple_referenced_vars): Adjust.
24216         (first_referenced_var): Remove.
24217         (end_referenced_vars_p): Likewise.
24218         (next_referenced_var): Likewise.
24219         (referenced_var_iterator_set): New helper function.
24220         * tree-dfa.c (referenced_var_lookup): Adjust.
24221         (referenced_var_check_and_insert): Likewise.
24222         (remove_referenced_var): Likewise.
24223         * tree-ssa.c (verify_flow_insensitive_alias_info): Use
24224         FOR_EACH_REFERENCED_VAR_IN_BITMAP.
24225         (verify_call_clobbering): Likewise.
24226         (verify_memory_partitions): Likewise.
24227         (init_tree_ssa): Allocate bitmap instead of hashtable for
24228         referenced_vars.
24229         (delete_tree_ssa): Adjust.
24230         * tree-ssa-alias.c (mark_aliases_call_clobbered): Use
24231         FOR_EACH_REFERENCED_VAR_IN_BITMAP.
24232         (compute_tag_properties): Likewise.
24233         (set_initial_properties): Likewise.
24234         (find_partition_for): Likewise.
24235         (update_reference_counts): Likewise.
24236         (dump_may_aliases_for): Likewise.
24237         * tree-ssa-operands.c (add_virtual_operand): Likewise.
24238         (add_call_clobber_ops): Likewise.
24239         (add_call_read_ops): Likewise.
24240         (get_asm_expr_operands): Likewise.
24241         * tree-into-ssa.c (dump_decl_set): Likewise.
24242         (update_ssa): Likewise.
24243         * tree-sra.c (scan_function): Likewise.
24244         (decide_instantiations): Likewise.
24245         (scalarize_parms): Likewise.
24246         * tree-ssa-alias-warnings.c (build_reference_table): Likewise.
24247         (dsa_named_for): Likewise.
24248         * tree-ssa-structalias.c (update_alias_info): Likewise.
24249         (merge_smts_into): Likewise.
24250
24251 2008-02-25  Andreas Krebbel  <krebbel1@de.ibm.com>
24252
24253         PR target/35258
24254         * cse.c (cse_insn): Avoid creation of overlapping MEMs.
24255         * alias.c (nonoverlapping_memrefs_p): Export for use in other modules.
24256         * alias.h (nonoverlapping_memrefs_p): Likewise.
24257
24258 2008-02-25  Jan Beulich  <jbeulich@novell.com>
24259
24260         * Makefile.in: Also prefix uses of crt0.o and mcrt0.o with $(T).
24261         * config/i386/netware-libgcc.exp: Add __bswap?i2,
24262         __emultls_get_address, __emultls_register_common,
24263         __floatundi?f, and _Unwind_GetIPInfo.
24264         * config/i386/netware.c (gen_stdcall_or_fastcall_decoration):
24265         Sync with config/i386/winnt.c:gen_stdcall_or_fastcall_suffix().
24266         (gen_regparm_prefix): Likewise.
24267         (i386_nlm_encode_section_info): Sync with
24268         config/i386/winnt.c:i386_pe_encode_section_info().
24269         (i386_nlm_maybe_mangle_decl_assembler_name): New.
24270         i386_nlm_mangle_decl_assembler_name): New.
24271         (netware_override_options): New.
24272         * config/i386/netware.h (netware_override_options): Declare.
24273         (OVERRIDE_OPTIONS): Re-define to netware_override_options.
24274         (i386_nlm_mangle_decl_assembler_name): Declare.
24275         (TARGET_MANGLE_DECL_ASSEMBLER_NAME): Define.
24276
24277 2008-02-25  Ben Elliston  <bje@au.ibm.com>
24278
24279         PR other/32948
24280         * c-decl.c (grokdeclarator): Remove unused local variables
24281         `typedef_type' and `type_as_written'.
24282         * bb-reorder.c
24283         (find_rarely_executed_basic_blocks_and_crossing_edges): Remove
24284         unused local variable `has_hot_blocks'.
24285         (fix_crossing_conditional_branches): Remove unused local variable
24286         `prev_bb'.
24287
24288 2008-02-25  Uros Bizjak  <ubizjak@gmail.com>
24289
24290         PR middle-end/19984
24291         * builtins.def (BUILT_IN_NAN): Define as c99 builtin
24292         using DEF_C99_BUILTIN.
24293         (BUILT_IN_NANF): Ditto.
24294         (BUILT_IN_NANL): Ditto.
24295
24296 2008-02-25  Ayal Zaks  <zaks@il.ibm.com>
24297             Revital Eres  <eres@il.ibm.com>
24298
24299         * modulo-sched.c (calculate_must_precede_follow): Address TODO
24300         regarding the order of two dependent insns in the same row.
24301
24302 2008-02-25  Eric Botcazou  <ebotcazou@adacore.com>
24303
24304         * stor-layout.c (layout_decl): Do not bump the alignment of a
24305         bit-field to more than byte alignment if it is packed.
24306
24307 2008-02-24  David Edelsohn  <edelsohn@gnu.org>
24308
24309         * config/rs6000/rs6000.c (processor_costs): Add cache costs for
24310         e300c2 and e300c3.
24311
24312 2008-02-24  Diego Novillo  <dnovillo@google.com>
24313
24314         http://gcc.gnu.org/ml/gcc-patches/2008-02/msg01094.html
24315
24316         PR 33738
24317         * tree-vrp.c (vrp_evaluate_conditional): With
24318         -Wtype-limits, emit a warning when comparing against a
24319         constant outside the natural range of OP0's type.
24320         * c.opt (Wtype-limits): Move ...
24321         * common.opt (Wtype-limits): ... here.
24322
24323 2008-02-24  Edmar Wienskoski  <edmar@freescale.com>
24324
24325         * config.gcc (powerpc*-*-*): Add new cores e300c2 and e300c3.
24326         * config/rs6000/e300c2c3.md: New file.
24327         * config/rs6000/rs6000.c (processor_costs): Add new costs for
24328         e300c2 and e300c3.
24329         (rs6000_override_options): Add e300c2 and e300c3 cases to
24330         processor_target_table. Do not allow usage of Altivec or Spe
24331         with e300 cores. Initialize rs6000_cost for e300c2 and e300c3.
24332         (rs6000_issue_rate): Set issue rate for e300c2 and e300c3.
24333         * config/rs6000/rs6000.h (processor_type): Add
24334         PROCESSOR_PPCE300C2 and PROCESSOR_PPCE300C3.
24335         (ASM_CPU_SPEC): Add e300c2 and e300c3.
24336         * config/rs6000/rs6000.md (define_attr "cpu"): Add ppce300c2
24337         and ppce300c3. Include e300c2c3.md.
24338
24339 2008-02-23  David Edelsohn  <edelsohn@gnu.org>
24340
24341         * config/rs6000/rs6000.h (CONSTANT_ALIGNMENT): Use STRICT_ALIGNMENT
24342         instead of TARGET_STRICT_ALIGN.
24343
24344 2008-02-23  Joseph Myers  <joseph@codesourcery.com>
24345
24346         * explow.c (memory_address): Assert that the generated address is
24347         valid.
24348
24349 2008-02-23  Francois-Xavier Coudert  <coudert@clipper.ens.fr>
24350
24351         PR target/25477
24352         * config/darwin-protos.h: Add darwin_patch_builtins prototype.
24353         * config/darwin-ppc-ldouble-patch.def: New file.
24354         * config/rs6000/darwin.h (SUBTARGET_INIT_BUILTINS): New macro.
24355         * config/rs6000/rs6000.c (rs6000_init_builtins): Call
24356         SUBTARGET_INIT_BUILTINS if defined.
24357         * config/darwin.c (darwin_patch_builtin, darwin_patch_builtins):
24358         New functions.
24359
24360 2008-02-23  Andrew Pinski  <andrew_pinski@playstation.sony.com>
24361
24362         PR rtl-opt/33512
24363         * simplify-rtx.c (simplify_binary_operation_1): Add simplification
24364         of (and X (ior (not X) Y) and (and (ior (not X) Y) X).
24365
24366 2008-02-23  Andrew Pinski  <andrew_pinski@playstation.sony.com>
24367
24368         PR pch/35027
24369         * c-pch.c (c_common_valid_pch): Make the "too short to be a PCH
24370         file" warning condtional on -Winvalid-PCH.
24371
24372 2008-02-23  Daniel Jacobowitz  <dan@codesourcery.com>
24373
24374         * expmed.c (extract_bit_field): Always use adjust_address for MEM.
24375
24376 2008-02-23  Uros Bizjak  <ubizjak@gmail.com>
24377
24378         PR target/22076
24379         PR target/34256
24380         * config/i386/mmx.md (*mov<mode>_internal_rex64): Use "!y" to
24381         prevent reload from using MMX registers.
24382         (*mov<mode>_internal): Ditto.
24383         (*movv2sf_internal_rex64): Ditto.
24384         (*movv2sf_internal): Ditto.
24385
24386 2008-02-23  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
24387
24388         PR documentation/31569
24389         * doc/install.texi2html: Use makeinfo --no-number-sections.
24390
24391 2008-02-22  Nathan Froyd  <froydnj@codesourcery.com>
24392
24393         * config/rs6000/rs6000.c (rs6000_legitimize_address): Check to
24394         ensure that we can address an entire entity > 8 bytes.  Don't
24395         generate reg+reg addressing for such data.
24396
24397 2008-02-22  Nathan Froyd  <froydnj@codesourcery.com>
24398
24399         * config/rs6000/rs6000.h (CONSTANT_ALIGNMENT): Don't overalign
24400         strings when optimizing for size, unless the target cares about
24401         alignment.
24402
24403 2008-02-22  Tom Tromey  <tromey@redhat.com>
24404
24405         * regclass.c (current_pass): Remove declaration.
24406
24407 2008-02-22  Anatoly Sokolov <aesok@post.ru>
24408
24409         * config/avr/libgcc.S (__RAMPZ__): Define.
24410         (__do_copy_data): Add for devices with 128KB code memory.
24411
24412 2008-02-22  Nathan Froyd  <froydnj@codesourcery.com>
24413
24414         * config/rs6000/linuxspe.h (SUBSUBTARGET_OVERRIDE_OPTIONS):
24415         Use spe_abi.
24416         * config/rs6000/eabispe.h (SUBSUBTARGET_OVERRIDE_OPTIONS): Likewise.
24417
24418 2008-02-22  Hans-Peter Nilsson  <hp@axis.com>
24419
24420         * config/cris/cris.h (REG_CLASS_FROM_LETTER): Recognize 'b' for
24421         GENNONACR_REGS.
24422
24423 2008-02-22  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
24424
24425         PR c/19999
24426         * c-typeck.c (build_binary_op): Warn about floating point
24427         comparisons if FLOAT_TYPE_P, not only for REAL_TYPE.
24428
24429 2008-02-21  Janis Johnson  <janis187@us.ibm.com>
24430
24431         PR target/34526
24432         * config/rs6000/rs6000.c (rs6000_altivec_abi): Clarify comment.
24433         (rs6000_explicit_options): Split abi into spe_abi and altivec_abi,
24434         add vrsave.
24435         (rs6000_override_options): Set altivec_abi as default, not override,
24436         for 64-bit GNU/Linux; for 32-bit GNU/Linux default to altivec_abi for
24437         TARGET_ALTIVEC; default to TARGET_ALTIVEC_VRSAVE when AltiVec ABI
24438         is used; use new member spe_abi.
24439         (rs6000_handle_option): Set rs6000_explicit_options.vrsave; use
24440         spe_abi and altivec_abi.
24441
24442 2008-02-22  Tomas Bily  <tbily@suse.cz>
24443
24444         * tree-vectorizer.c (vect_is_simple_reduction): Fix comment typo.
24445
24446 2008-02-21  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
24447
24448         PR bootstrap/35273
24449         * config.build (build_file_translate): Set to `CMD //c' only if
24450         it works.
24451         * Makefile.in (build_file_translate): Improve comment.
24452
24453 2008-02-21  Jan Hubicka  <jh@suse.cz>
24454
24455         * predict.def (PRED_TREE_OPCODE_POSITIVE, PRED_TREE_OPCODE_NONEQUAL,
24456         PRED_TREE_OPCODE_POSITIVE, PRED_TREE_OPCODE_NONEQUAL, PRED_CALL,
24457         PRED_TREE_EARLY_RETURN, PRED_NULL_RETURN): Update.
24458
24459 2008-02-21  Michael Matz  <matz@suse.de>
24460
24461         PR target/35264
24462         * config/i386/i386.c (ix86_expand_branch): Add missing breaks.
24463
24464 2008-02-21  Uros Bizjak  <ubizjak@gmail.com>
24465
24466         * config/i386/i386.md (mov<mode>cc): Macroize expander from movsfcc,
24467         movdfcc and movxfcc using X87MODEF mode iterator and SSE_FLOAT_MODE_P
24468         as insn constraint.
24469         * config/i386/sse.md (<sse>_movup<ssemodesuffixf2c>): Macroize insn
24470         from sse_movups adn sse2_movupd using SSEMODEF2P mode iterator and
24471         SSE_VEC_FLOAT_MODE_P as insn constraint.
24472         (<sse>_movmskp<ssemodesuffixf2c>): Ditto from similar patterns.
24473         (sse4a_movnt<mode>): Macroize insn from sse4a_movntsf and
24474         sse4a_movntdf using MODEF mode iterator.
24475         (sse4a_vmmovnt<mode>): Macroize insn form sse4a_vmmovntv2df and
24476         sse4a_vmmovntv4sf using SSEMODEF2P mode iterator.
24477         (sse4_1_blendp<ssemodesuffixf2c>): Ditto from similar patterns.
24478         (sse4_1_blendvp<ssemodesuffixf2c>): Ditto.
24479         (sse4_1_dpp<ssemodesuffixf2c>): Ditto.
24480         (sse4_1_roundp<ssemodesuffixf2c>): Ditto.
24481         (sse4_1_rounds<ssemodesuffixf2c>): Ditto.
24482
24483 2008-02-21  Richard Guenther  <rguenther@suse.de>
24484
24485         * tree.def (PAREN_EXPR): New tree code.
24486         * fold-const.c (fold_unary): Remove PAREN_EXPR around constants
24487         and PAREN_EXPR.
24488         * tree-pretty-print.c (dump_generic_node): Handle PAREN_EXPR.
24489         * expr.c (expand_expr_real_1): Likewise.
24490         * tree-inline.c (estimate_num_insns_1): Likewise.
24491         * tree-complex.c (expand_complex_move): Likewise.
24492         * tree-vectorizer.c (vect_is_simple_use): Treat PAREN_EXPR (x)
24493         as plain x.
24494
24495 2008-02-20  Kaz Kojima  <kkojima@gcc.gnu.org>
24496
24497         PR target/35225
24498         * config/sh/sh.c (find_barrier): Don't go past 'from' argument.
24499
24500 2008-02-20  Kaz Kojima  <kkojima@gcc.gnu.org>
24501
24502         PR target/35190
24503         * config/sh/sh.md (jump_compact): Disable for crossing jumps.
24504
24505         * config/sh/sh.c (find_barrier): Don't go past
24506         NOTE_INSN_SWITCH_TEXT_SECTIONS note.
24507
24508 2008-02-20  DJ Delorie  <dj@redhat.com>
24509
24510         * config/h8300/h8300.md (insv): Force source operand to be a register.
24511
24512         * config/h8300/h8300.c (h8300_expand_epilogue): Emit return insn
24513         as a jump, not as a plain insn.
24514
24515 2008-02-20  Seongbae Park <seongbae.park@gmail.com>
24516
24517         * doc/invoke.texi (Warning Options): Add new option
24518         -Wframe-larger-than=.
24519         (-Wframe-larger-than): Document.
24520
24521         * flags.h (warn_frame_larger_than, frame_larger_than_size):
24522         Add declarations for new option variables.
24523
24524         * final.c (final_start_function): Check the frame size
24525         before emission and issue a Wframe-larger-than warning.
24526
24527         * opts.c (warn_frame_larger_than, frame_larger_than_size):
24528         Add definitions for new option variables.
24529         (common_handle_option): Handle new option OPT_Wframe_larger_than_.
24530
24531         * common.opt (Wframe-larger-than=): New option.
24532
24533 2008-02-20  Uros Bizjak  <ubizjak@gmail.com>
24534
24535         * config/i386/sse.md (<sse>_vmmul<mode>3): Fix typo in asm template.
24536         (<sse>_div<mode>3): Ditto.
24537         (<sse>_vmdiv<mode>3): Ditto.
24538         (<sse>_vmsqrt<mode>2): Ditto.
24539         (*smax<mode>3): Ditto.
24540         (sse5_frcz<mode>2): Ditto.
24541         (sse5_vmfrcz<mode>2): Ditto.  Use TARGET_SSE5 instead of TARGET_ROUND
24542         as insn constraint.
24543
24544 2008-02-20  Richard Guenther  <rguenther@suse.de>
24545
24546         PR middle-end/35265
24547         * builtins.c (validate_arg): If we want an INTEGER_TYPE,
24548         be happy with INTEGRAL_TYPE_P.
24549
24550 2008-02-20  Richard Guenther  <rguenther@suse.de>
24551
24552         * fold-const.c (split_tree): Associate floatig-point expressions
24553         if flag_associative_math is set.
24554
24555 2008-02-20  Richard Guenther  <rguenther@suse.de>
24556
24557         * tree.h (fold_real_zero_addition_p): Declare.
24558         * fold-const.c (fold_real_zero_addition_p): Export.
24559         * tree-ssa-reassoc.c (eliminate_using_constants): Also handle
24560         floating-point operations with zero and one.
24561
24562 2008-02-20  Paolo Bonzini  <bonzini@gnu.org>
24563
24564         * doc/install.texi: Correct references to CFLAGS, replacing them
24565         with BOOT_CFLAGS.  Document flags used during bootstrap for
24566         target libraries.
24567
24568 2008-02-20  Uros Bizjak  <ubizjak@gmail.com>
24569
24570         * config/i386/i386.h (SSE_VEC_FLOAT_MODE_P): New define.
24571         * config/i386/i386.md (*sse_setcc<mode>): Macroize from *sse_setccsf
24572         and *sse_setccdf using MODEF mode iterator and SSE_FLOAT_MODE_P as
24573         insn constraint.
24574         (smin<mode>3): Ditto from similar patterns.
24575         (smax<mode>3): Ditto.
24576         (*ieee_smin<mode>3): Ditto.
24577         (*ieee_smax<mode>3): Ditto.
24578         * config/i386/sse.md (sse): New mode attribute.
24579         (mov<mode>): Macroize expander from movv4sf and movv2df using
24580         SSEMODEF2P mode iterator.
24581         (<sse>_movnt<mode>): Ditto from similar patterns. Use
24582         SSE_VEC_FLOAT_MODE_P as insn constraint.
24583         (storent<mode>): Ditto.
24584         (storent<mode>): Macroize expander from storentsf and storentdf using
24585         MODEF mode iterator.
24586         (neg<mode>2): Macroize from negv4sf2 and negv2df2 using SSEMODEF2P
24587         mode iterator and SSE_VEC_FLOAT_MODE_P as insn constraint.
24588         (abs<mode>2): Ditto from similar patterns.
24589         (add<mode>3, *add<mode>3, <sse>_vmadd<mode>3): Ditto.
24590         (sub<mode>3, *sub<mode>3, <sse>_vmsub<mode>3): Ditto.
24591         (<sse>_div<mode>3, <sse>_vmdiv<mode>3): Ditto.
24592         (<sse>_vmsqrt<mode>2): Ditto.
24593         (smin<mode>3, *smin<mode>3_finite, *smin<mode>3)
24594         (<sse>_vmsmin<mode>3, *ieee_smin<mode>3): Ditto.
24595         (smax<mode>3, *smax<mode>3_finite, *smax<mode>3)
24596         (<sse>_vmsmax<mode>3, *ieee_smax<mode>3): Ditto.
24597         (<sse>_maskcmp<mode>3): Macroize from sse_maskcmpv4sf3,
24598         sse_maskcmpsf3, sse2_maskcmpv2df3 and sse2_maskcmpdf3 using SSEMODEF4
24599         mode iterator. Use SSE_FLOAT_MODE_P with SSE_VEC_FLOAT_MODE_P as
24600         insn constraint.
24601         (<sse>_comi): Macroize from sse_comi and sse2_comi using MODEF mode
24602         iterator and SSE_FLOAT_MODE_P as insn constraint.
24603         (<sse>_ucomi): Ditto from similar patterns.
24604         (<sse>_vmmaskcmp<mode>3): Macroize from sse_vmmaskcmpv4sf3 and
24605         sse2_vmmaskcmpv2df3 using SSEMODEF2P mode iterator and
24606         SSE_VEC_FLOAT_MODE_P as insn constraint.
24607         (vcond<mode>): Ditto from similar patterns.
24608         (and<mode>3, *and<mode>3): Ditto.
24609         (<sse>_nand<mode>3): Ditto.
24610         (ior<mode>3, *ior<mode>3): Ditto.
24611         (xor<mode>3, *xor<mode>3): Ditto.
24612         (*and<mode>3): Macroize from *andsf3 and *anddf3 using MODEF mode
24613         iterator and SSE_FLOAT_MODE_P as insn constraint.
24614         (*nand<mode>3): Ditto from similar patterns.
24615         (*ior<mode>3): Ditto.
24616         (*xor<mode>3): Ditto.
24617
24618 2008-02-20  Ira Rosen  <irar@il.ibm.com>
24619
24620         * config/spu/spu.md (vec_unpacku_hi_v8hi, vec_unpacku_lo_v8hi,
24621         vec_unpacks_hi_v8hi, vec_unpacks_lo_v8hi, vec_unpacku_hi_v16qi,
24622         vec_unpacku_lo_v16qi, vec_unpacks_lo_v16qi): Implement.
24623
24624 2008-02-19  Jan Hubicka  <jh@suse.cz>
24625
24626         * predict.c (tree_bb_level_predictions): Remove variable next
24627         mistakely introduced by previous commit.
24628
24629 2008-02-19  Jan Hubicka  <jh@suse.cz>
24630
24631         * predict.c (predict_paths_leading_to): Rewrite.
24632         (predict_paths_for_bb): New.
24633         (tree_bb_level_predictions): Update call of predict_paths_leading_to.
24634
24635 2008-02-19  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
24636
24637         PR bootstrap/35218
24638         * Makefile.in (build_file_translate): New.
24639         (gcc-vers.texi): Use it for translating $(abs_srcdir).
24640         * config.build (build_file_translate): Set to `CMD //c' on MinGW.
24641         * configure.ac (build_file_translate): Substitute it.
24642         * configure: Regenerate.
24643
24644 2008-02-19  Jan Hubicka  <jh@suse.cz>
24645
24646         PR rtl-optimization/34408
24647         * see.c (see_def_extension_not_merged): Copy subreg so we don't have
24648         invalid sharing.
24649
24650 2008-02-19  Jan Hubicka  <jh@suse.cz>
24651
24652         PR middle-end/28779
24653         * tree-inline.c (estimate_num_insns_1): Fix counting of cost of
24654         call_expr.
24655
24656 2008-02-19  H.J. Lu  <hongjiu.lu@intel.com>
24657
24658         PR Ada/35186
24659         * config/i386/i386-modes.def: Revert the last DI alignment
24660         change until Ada people can look into it.
24661
24662 2008-02-19  Nick Clifton  <nickc@redhat.com>
24663
24664         * opts.c (print_specific_help): Fix typo in --help text.
24665
24666 2008-02-19  Jakub Jelinek  <jakub@redhat.com>
24667
24668         PR target/35239
24669         * config/i386/cpuid.h (__cpuid, __get_cpuid_max): Use special
24670         32-bit inline asm without asm alternatives for host GCC < 3.0.
24671
24672 2008-02-19  Richard Guenther  <rguenther@suse.de>
24673
24674         PR tree-optimization/34989
24675         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Re-structure.
24676         Allow propagation to INDIRECT_REF if we can simplify only.
24677
24678 2008-02-19  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
24679
24680         * c-common.c (warn_for_collisions_1): Use appropriate option when
24681         warning.
24682
24683 2008-02-19  Nick Clifton  <nickc@redhat.com>
24684
24685         PR other/31349
24686         * opts.c (undocumented_msg): Leave blank unless checking is enabled.
24687         (handle_options): Fix indentation.
24688         (print_filtered_help): If no language-specific options were
24689         displayed tell the user how to list all the options supported by
24690         the language's front-end.
24691         (print_specific_help): Fix indentation and remove duplicate line.
24692         (common_handle_option): Handle the -v option.
24693         For --help enable the display of undocumented options if the -v
24694         switch has been included on the command line.
24695         For --help= check for overlaps in the arguments between the option
24696         classes and the language names and issue a warning when they
24697         cannot be disambiguated.
24698         * c.opt (v): Pass on to the common option handler.
24699
24700 2008-02-19  Revital Eres  <eres@il.ibm.com>
24701
24702         * modulo-sched.c (sms_schedule): Change dump message when
24703         create_ddg function fails.
24704         (try_scheduling_node_in_cycle): Rename row to cycle.
24705         (print_partial_schedule): Rename CYCLE to ROW.
24706
24707 2008-02-19  Christian Bruel  <christian.bruel@st.com>
24708             Zdenek Dvorak  <ook@ucw.cz>
24709
24710         * tree-ssa-loop-ivopts.c (may_be_unaligned_p): Check step alignment.
24711
24712 2008-02-19  Uros Bizjak  <ubizjak@gmail.com>
24713
24714         PR target/33555
24715         * config/i386/i386.md (*x86_movsicc_0_m1_se): New insn pattern.
24716         (*x86_movdicc_0_m1_se): Ditto.
24717
24718 2008-02-19  Uros Bizjak  <ubizjak@gmail.com>
24719
24720         * config/i386/sfp-machine.h (__gcc_CMPtype): New typedef.
24721         (CMPtype): Define as __gcc_CMPtype.
24722         * config/rs6000/sfp-machine.h (__gcc_CMPtype): New typedef.
24723         (CMPtype): Define as __gcc_CMPtype.
24724
24725 2008-02-19  Hans-Peter Nilsson  <hp@axis.com>
24726
24727         Support valgrind 3.3 for --enable-checking=valgrind.
24728         * system.h: Consolidate ENABLE_VALGRIND_CHECKING-dependent defines
24729         here.
24730         [!VALGRIND_MAKE_MEM_NOACCESS]: Define as VALGRIND_MAKE_NOACCESS.
24731         [!VALGRIND_MAKE_MEM_DEFINED]: Define as VALGRIND_MAKE_READABLE.
24732         [!VALGRIND_MAKE_MEM_UNDEFINED]: Define as VALGRIND_MAKE_WRITABLE.
24733         * ggc-common.c: Remove ENABLE_VALGRIND_CHECKING-dependent defines.
24734         Replace use of VALGRIND_MAKE_READABLE, VALGRIND_MAKE_WRITABLE, and
24735         VALGRIND_MAKE_NOACCESS with VALGRIND_MAKE_MEM_DEFINED,
24736         VALGRIND_MAKE_MEM_UNDEFINED, and VALGRIND_MAKE_MEM_NOACCESS
24737         respectively.
24738         * ggc-zone.c: Similar.
24739         * ggc-page.c: Similar.
24740
24741 2008-02-19  Paul Brook  <paul@codesourcery.com>
24742
24743         PR target/35071
24744         * config/arm/ieee754-df.S: Fix do_it typo.
24745         * config/arm/ieee754-sf.S: Fix do_it typo.
24746
24747 2008-02-18  H.J. Lu  <hongjiu.lu@intel.com>
24748
24749         PR target/35189
24750         * config/i386/i386.c (OPTION_MASK_ISA_MMX_SET): New.
24751         (OPTION_MASK_ISA_3DNOW_SET): Likewise.
24752         (OPTION_MASK_ISA_SSE_SET): Likewise.
24753         (OPTION_MASK_ISA_SSE2_SET): Likewise.
24754         (OPTION_MASK_ISA_SSE3_SET): Likewise.
24755         (OPTION_MASK_ISA_SSSE3_SET): Likewise.
24756         (OPTION_MASK_ISA_SSE4_1_SET): Likewise.
24757         (OPTION_MASK_ISA_SSE4_2_SET): Likewise.
24758         (OPTION_MASK_ISA_SSE4_SET): Likewise.
24759         (OPTION_MASK_ISA_SSE4A_SET): Likewise.
24760         (OPTION_MASK_ISA_SSE5_SET): Likewise.
24761         (OPTION_MASK_ISA_3DNOW_A_UNSET): Likewise.
24762         (OPTION_MASK_ISA_MMX_UNSET): Updated.
24763         (OPTION_MASK_ISA_3DNOW_UNSET): Updated.
24764         (OPTION_MASK_ISA_SSE_UNSET): Likewise.
24765         (OPTION_MASK_ISA_SSE3_UNSET): Likewise.
24766         (OPTION_MASK_ISA_SSSE3_UNSET): Likewise.
24767         (OPTION_MASK_ISA_SSE4_1_UNSET): Likewise.
24768         (OPTION_MASK_ISA_SSE4_2_UNSET): Likewise.
24769         (OPTION_MASK_ISA_SSE4A_UNSET): Likewise.
24770         (OPTION_MASK_ISA_SSE5_UNSET): Likewise.
24771         (OPTION_MASK_ISA_SSE4): Removed.
24772         (ix86_handle_option): Turn on bits in ix86_isa_flags and
24773         ix86_isa_flags_explicit with OPTION_MASK_ISA_XXX_SET for -mXXX.
24774         (override_options): Don't turn on implied SSE/MMX bits in
24775         ix86_isa_flags.
24776
24777 2008-02-18  H.J. Lu  <hongjiu.lu@intel.com>
24778
24779         * config/i386/i386-modes.def: Use 4 byte alignment on DI for
24780         32bit host.
24781
24782 2008-02-18  Joey Ye  <joey.ye@intel.com>
24783
24784         PR middle-end/34921
24785         * tree-nested.c (insert_field_into_struct): Set type alignment
24786         to field alignment if the former is less than the latter.
24787
24788 2008-02-18  Jakub Jelinek  <jakub@redhat.com>
24789
24790         * BASE-VER: Set to 4.4.0.
24791
24792 2008-02-17 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
24793
24794         * doc/c-tree.texi: Use @dots{} and @enddots{} where appropriate.
24795         * doc/cfg.texi: Likewise.
24796         * doc/extend.texi: Likewise.
24797         * doc/gty.texi: Likewise.
24798         * doc/invoke.texi: Likewise.
24799         * doc/loop.texi: Likewise.
24800         * doc/md.texi: Likewise.
24801         * doc/passes.texi: Likewise.
24802         * doc/rtl.texi: Likewise.
24803         * doc/sourcebuild.texi: Likewise.
24804         * doc/tm.texi: Likewise.
24805         * doc/tree-ssa.texi: Likewise.
24806
24807 2008-02-17  Richard Guenther  <rguenther@suse.de>
24808
24809         PR middle-end/35227
24810         * tree-complex.c (init_parameter_lattice_values): Handle parameters
24811         without default definition.
24812
24813 2008-02-17  Richard Guenther  <rguenther@suse.de>
24814
24815         PR tree-optimization/35231
24816         * tree-vrp.c (register_edge_assert_for): Do not assume A == 0
24817         if A | B != 1.
24818
24819 2008-02-17  Uros Bizjak  <ubizjak@gmail.com>
24820
24821         Revert:
24822         2008-02-15  Uros Bizjak  <ubizjak@gmail.com>
24823         * config/i386/sfp-machine.h (CMPtype): Define as typedef using
24824         libgcc_cmp_return mode.
24825
24826 2008-02-16  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
24827
24828         PR c/28368
24829         * doc/invoke.texi (-std): Clarify description of -std= and -ansi.
24830
24831 2008-02-16  Ralf Corsepius  <ralf.corsepius@rtems.org>
24832
24833         * config/m68k/t-rtems (M68K_MLIB_CPU): Add 5208, 5307, 5407, 5475
24834         multilibs.
24835
24836 2008-02-16  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
24837
24838         * doc/c-tree.texi: Use `@.' where appropriate.
24839         * doc/extend.texi: Likewise.
24840         * doc/install.texi: Likewise.
24841         * doc/invoke.texi: Likewise.
24842         * doc/loop.texi: Likewise.
24843         * doc/makefile.texi: Likewise.
24844         * doc/md.texi: Likewise.
24845         * doc/passes.texi: Likewise.
24846         * doc/standards.texi: Likewise.
24847         * doc/tm.texi: Likewise.
24848
24849 2008-02-15  Jakub Jelinek  <jakub@redhat.com>
24850
24851         PR middle-end/35196
24852         * omp-low.c (expand_omp_for_generic): Don't initialize fd->v
24853         in entry_bb.
24854         (expand_omp_for_static_nochunk): Initialize fd->v in seq_start_bb
24855         rather than in entry_bb.
24856
24857 2008-02-15  Uros Bizjak  <ubizjak@gmail.com>
24858
24859         * config/i386/sfp-machine.h (CMPtype): Define as typedef using
24860         libgcc_cmp_return mode.
24861
24862 2008-02-15  Jakub Jelinek  <jakub@redhat.com>
24863
24864         PR middle-end/35130
24865         * tree-nested.c (convert_call_expr): Put FRAME.* vars into
24866         OMP_CLAUSE_SHARED rather than OMP_CLAUSE_FIRSTPRIVATE clause.
24867
24868 2008-02-15  Richard Guenther  <rguenther@suse.de>
24869             Zdenek Dvorak  <ook@ucw.cz>
24870
24871         PR tree-optimization/35164
24872         * tree-flow.h (stmt_references_abnormal_ssa_name): Declare.
24873         * tree-dfa.c (stmt_references_abnormal_ssa_name): New function.
24874         * tree-ssa-forwprop.c (tree_ssa_forward_propagate_single_use_vars):
24875         Only propagate addresses which do not have abnormal SSA_NAMEs
24876         in their operands.
24877
24878 2008-02-15  Joseph Myers  <joseph@codesourcery.com>
24879
24880         PR target/35088
24881         * config/m68k/m68k.h (DWARF_CIE_DATA_ALIGNMENT): Define.
24882
24883 2008-02-15  Jan Hubicka  <jh@suse.cz>
24884
24885         PR middle-end/35149
24886         * ipa.c (cgraph_remove_unreachable_nodes): Clear local.inlinable flag.
24887
24888 2008-02-15  Uros Bizjak  <ubizjak@gmail.com>
24889
24890         PR middle-end/34621
24891         * function.c (pad_to_arg_alignment): Remove test for STACK_BOUNDARY
24892         when calculating alignment_pad.
24893
24894 2008-02-15  Uros Bizjak  <ubizjak@gmail.com>
24895
24896         * config/i386/i386.h (CLEAR_RATIO): Use MIN macro.
24897         (WIDEST_HARDWARE_FP_SIZE): Use LONG_DOUBLE_TYPE_SIZE define.
24898         * config/i386/darwin.h (PREFERRED_STACK_BOUNDARY): Use MAX macro
24899         and STACK_BOUNDARY define.
24900
24901 2008-02-14  Danny Smith  <dannysmith@users.sourceforge.net>
24902
24903         PR preprocessor/35061
24904         * c-pragma.c (handle_pragma_pop_macro): Check that
24905         pushed_macro_table has been allocated.
24906
24907 2008-02-14  Eric Botcazou  <ebotcazou@adacore.com>
24908
24909         PR middle-end/35136
24910         * gimplify.c (force_gimple_operand_bsi): Revert 2008-02-12 change.
24911         (force_gimple_operand): Likewise.
24912         * tree-ssa-loop-ivopts.c (may_be_nonaddressable_p): Add new cases
24913         for TARGET_MEM_REF and CONVERT_EXPR/NON_LVALUE_EXPR/NOP_EXPR.
24914         Also recurse on the operand for regular VIEW_CONVERT_EXPRs.
24915         (find_interesting_uses_address): Check addressability and alignment
24916         of the base expression only after substituting bases of IVs into it.
24917
24918 2008-02-14  Michael Matz  <matz@suse.de>
24919
24920         PR target/34930
24921         * function.c (instantiate_virtual_regs_in_insn): Reload address
24922         before falling back to reloading the whole operand.
24923
24924 2008-02-14  Andreas Krebbel  <krebbel1@de.ibm.com>
24925
24926         * config/s390/s390.c (s390_mainpool_start): Emit the pool
24927         before the first section switch note.
24928
24929 2008-02-14 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
24930
24931         * doc/bugreport.texi: Update copyright years.
24932         * doc/c-tree.texi: Likewise.
24933         * doc/cfg.texi: Likewise.
24934         * doc/cpp.texi: Likewise.
24935         * doc/cppinternals.texi: Likewise.
24936         * doc/fragments.texi: Likewise.
24937         * doc/frontends.texi: Likewise.
24938         * doc/gcc.texi: Likewise.
24939         * doc/gty.texi: Likewise.
24940         * doc/hostconfig.texi: Likewise.
24941         * doc/implement-c.texi: Likewise.
24942         * doc/libgcc.texi: Likewise.
24943         * doc/loop.texi: Likewise.
24944         * doc/makefile.texi: Likewise.
24945         * doc/options.texi: Likewise.
24946         * doc/passes.texi: Likewise.
24947         * doc/rtl.texi: Likewise.
24948         * doc/sourcebuild.texi: Likewise.
24949         * doc/standards.texi: Likewise.
24950         * doc/tree-ssa.texi: Likewise.
24951         * doc/trouble.texi: Likewise.
24952
24953         * doc/extend.texi: Use @: or add comma where appropriate.
24954         * doc/invoke.texi: Likewise.
24955         * doc/tm.texi: Likewise.
24956
24957 2008-02-14  Alan Modra  <amodra@bigpond.net.au>
24958
24959         PR target/34393
24960         * config/rs6000/rs6000.md (restore_stack_block): Force operands[1]
24961         to a reg.
24962
24963 2008-02-14  Jesper Nilsson  <jesper.nilsson@axis.com>
24964
24965         * doc/md.texi (clz, ctz): Add reference.
24966         * doc/rtl.texi (clz, ctz): Likewise.
24967
24968 2008-02-13  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
24969
24970         PR other/35148
24971         * Makefile.in (gcc-vers.texi): Use abs_srcdir for the value of
24972         srcdir.
24973
24974 2008-02-13  Andreas Krebbel  <krebbel1@de.ibm.com>
24975
24976         * config/s390/s390.c (struct constant_pool): New field
24977         emit_pool_after added.
24978         (s390_mainpool_start): Set the emit_pool_after flag according
24979         to the section switch notes.
24980         (s390_mainpool_finish): Consider emit_pool_after when emitting
24981         the literal pool at the end of the function.
24982         (s390_chunkify_start): Force literal pool splits at section
24983         switch notes.
24984
24985 2008-02-13  Michael Matz  <matz@suse.de>
24986
24987         PR debug/35065
24988         * var-tracking.c (clobber_variable_part): Correctly traverse the
24989         list.
24990
24991 2008-02-13  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
24992
24993         PR 29673
24994         * doc/invoke.texi (Debugging Options): Remove -fdump-tree-inlined.
24995         Add -fdump-ipa-inline.
24996         * tree-dump.c (dump_files): Remove tree-inlined dump.
24997         * tree-pass.h (tree_dump_index): Remove TDI_inlined.
24998
24999 2008-02-12  Richard Guenther  <rguenther@suse.de>
25000
25001         PR tree-optimization/35171
25002         * tree-vect-patterns.c (vect_recog_dot_prod_pattern): Deal with
25003         default defs.
25004
25005 2008-02-12  Richard Guenther  <rguenther@suse.de>
25006
25007         PR middle-end/35163
25008         * fold-const.c (fold_widened_comparison): Use get_unwidened in
25009         value-preserving mode.  Disallow final truncation.
25010
25011 2008-02-12  Eric Botcazou  <ebotcazou@adacore.com>
25012
25013         PR middle-end/35136
25014         * gimplify.c (force_gimple_operand_bsi): Move SSA renaming
25015         code from here to...
25016         (force_gimple_operand): ...here.
25017
25018 2008-02-12  Jakub Jelinek  <jakub@redhat.com>
25019
25020         PR c++/35144
25021         * tree-sra.c (sra_build_assignment): fold_convert SRC if copying
25022         non-compatible pointers.
25023         (generate_element_copy): If SRC and DST are RECORD_TYPEs with
25024         different FIELD_DECLs, try harder by comparing field offsets, sizes
25025         and types.
25026
25027         PR inline-asm/35160
25028         * function.c (match_asm_constraints_1): Don't replace the same input
25029         multiple times.
25030
25031 2008-02-12  Anatoly Sokolov <aesok@post.ru>
25032
25033         * config/avr/avr.h (AVR_HAVE_RAMPZ): Define.
25034         * config/avr/avr.c (expand_prologue): Save RAMPZ register.
25035         (expand_epilogue): Restore RAMPZ register.
25036         * config/avr/avr.md (RAMPZ_ADDR): New constant.
25037
25038 2008-02-11  Kai Tietz  <kai.tietz@onevision.com>
25039
25040         * config/i386/cygwin.asm: (__alloca): Correct calling
25041         convention and alignment.
25042         (__chkstk): Force 8 byte stack alignment.
25043
25044 2008-02-11  Uros Bizjak  <ubizjak@gmail.com>
25045             Richard Guenther  <rguenther@suse.de>
25046
25047         PR tree-optimization/33992
25048         * tree-ssa-loop-im.c (rewrite_bittest): Fixup the type of
25049         the zero we compare against.
25050
25051 2008-02-10  Danny Smith  <dannysmith@users.sourceforge.net>
25052
25053         PR libfortran/35063
25054         * gthr-win32.h (__gthread_mutex_destroy_function): New function
25055         to CloseHandle after unlocking to prevent accumulation of handle
25056         count.
25057
25058 2008-02-09  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
25059
25060         PR middle_end/34150
25061         * pa.c (legitimize_pic_address): Add REG_EQUAL note on sets with a
25062         pic_label_operand source.  Similarly, add a REG_LABEL_OPERAND note
25063         and update LABEL_NUSES during and after reload.
25064
25065 2008-02-08  Steven Bosscher  <stevenb.gcc@gmail.com>
25066
25067         PR middle-end/34627
25068         * combine.c (simplify_if_then_else): Make sure the comparison is
25069         against const0_rtx when simplifying to (abs x) or (neg (abs X)).
25070
25071 2008-02-08  Richard Sandiford  <rsandifo@nildram.co.uk>
25072
25073         PR bootstrap/35051
25074         * double-int.h: Don't include gmp.h for GENERATOR_FILEs.
25075         (mpz_set_double_int, mpz_get_double_int): Hide from GENERATOR_FILEs.
25076         * real.h: Don't include gmp.h or mpfr.h for GENERATOR_FILEs.
25077         (real_from_mpfr, mpfr_from_real): Hide from GENERATOR_FILEs.
25078         * tree.h (get_type_static_bounds): Likewise.
25079
25080 2008-02-08  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
25081
25082         * doc/invoke.texi (Option Summary, C++ Dialect Options)
25083         (Objective-C and Objective-C++ Dialect Options, Warning Options):
25084         Make -Wfoo language annotations match what the compiler outputs.
25085
25086 2008-02-08  Sa Liu  <saliu@de.ibm.com>
25087
25088         * config/spu/spu-builtins.def: Fixed wrong parameter type in spu
25089         intrinsics spu_convts, spu_convtu, spu_convtf.
25090
25091 2008-02-08  Hans-Peter Nilsson  <hp@axis.com>
25092
25093         * doc/extend.texi (Function Attributes) <noinline>: Mention
25094         asm ("") as method to keep calls.
25095
25096 2008-02-07  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
25097
25098         PR other/32754
25099         * doc/options.texi (Options): Replace references to opts.sh with
25100         optc-gen.awk.
25101         * opts-common.c: Likewise.
25102         * optc-gen.awk: Likewise.
25103
25104 2008-02-07  Andreas Krebbel  <krebbel1@de.ibm.com>
25105
25106         * config/s390/s390.h (FUNCTION_ARG_REGNO_P): Fix fprs for 64 bit.
25107
25108 2008-02-07  Richard Henderson  <rth@redhat.com>
25109
25110         PR rtl-opt/33410
25111         * config/alpha/alpha.c (alpha_emit_xfloating_compare): Use an
25112         EXPR_LIST for the REG_EQUAL instead of a comparison with a
25113         funny mode.
25114
25115 2008-02-07  Uros Bizjak  <ubizjak@gmail.com>
25116
25117         PR tree-optimization/35085
25118         * tree-ssa-reassoc.c (rewrite_expr_tree): Enable destructive update
25119         for operand entry oe2 in addition to operand entry oe3 in order to
25120         expose more opportunities for vectorizer sum reduction.
25121
25122 2008-02-06  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
25123
25124         PR other/35107
25125         * Makefile.in (LIBS): Remove $(GMPLIBS).
25126         (cc1-dummy, cc1): Add $(GMPLIBS).
25127
25128 2008-02-06  Jan Hubicka  <jh@suse.cz>
25129
25130         PR target/23322
25131         * i386.md (moddf_integer): Do not produce partial memory stalls for
25132         targets where it hurts.
25133
25134 2008-02-06  Uros Bizjak  <ubizjak@gmail.com>
25135
25136         PR target/35083
25137         * optabs.c (expand_float): Do not check for decimal modes when
25138         expanding unsigned integer through signed conversion.
25139
25140 2008-02-06  Nick Clifton  <nickc@redhat.com>
25141
25142         * config/stormy16/stormy16.md (eqbranchsi): Replace a match_dup
25143         inside the clobber with a match_operand and duplicated operand
25144         number in the constraint.
25145         (ineqbranchsi): Delete redundant comment.
25146
25147 2008-02-06  Ralf Corsepius  <ralf.corsepius@rtems.org>
25148
25149         * config/arm/rtems-elf.h (TARGET_OS_CPP_BUILTINS): Add
25150         builtin_define ("__USE_INIT_FINI__").
25151         * config/h8300/t-rtems (MULTILIB_OPTION,MULTILIB_DIRNAMES): Add
25152         -msx multilibs.
25153         * gthr-rtems.h: Remove __GTHREAD_MUTEX_INIT.
25154
25155 2008-02-06  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
25156
25157         PR documentation/30330
25158         * doc/invoke.texi (C++ Dialect Options)
25159         (Objective-C and Objective-C++ Dialect Options, Warning Options):
25160         For each warning option -Wfoo that allows -Wno-foo, ensure both
25161         -Wfoo and -Wno-foo are listed in the option index.  Fix index
25162         entry of -Wswitch-default, index -Wnormalized= including the
25163         `=', and -Wlarger-than-@var{len} including @var{len}.
25164
25165 2008-02-05  Uros Bizjak  <ubizjak@gmail.com>
25166
25167         * config/i386/i386.md (floatunssisf2): Use
25168         ix86_expand_convert_uns_sisf_sse also for TARGET_SSE.
25169         (floatunssi<mode>2): Rename from floatunssisf2 and floatunssidf2.
25170         Macroize expander using MODEF mode iterator.
25171
25172 2008-02-05  Diego Novillo  <dnovillo@google.com>
25173
25174         http://gcc.gnu.org/ml/gcc-patches/2008-02/msg00140.html
25175
25176         PR 33738
25177         * tree-vrp.c (vrp_evaluate_conditional): Revert fix for PR 33738.
25178
25179 2008-02-05  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
25180
25181         PR other/35070
25182         * toplev.c (print_version): Honor `indent' for GMP/MPFR warnings.
25183
25184 2008-02-05  H.J. Lu  <hongjiu.lu@intel.com>
25185
25186         PR target/35084
25187         * config/i386/i386.c (ix86_function_sseregparm): Add an arg
25188         to indicate if a message should be generated.
25189         (init_cumulative_args): Updated.
25190         (function_value_32): Likewise.
25191
25192 2008-02-05  Joseph Myers  <joseph@codesourcery.com>
25193
25194         * doc/include/texinfo.tex: Update to version 2008-02-04.16.
25195
25196 2008-02-05  Uros Bizjak  <ubizjak@gmail.com>
25197
25198         PR target/35083
25199         * config/i386/i386.md (floatunsisf2): Enable for TARGET_SSE_MATH only.
25200         Call ix86_expand_convert_uns_sisf_sse for TARGET_SSE2.
25201
25202 2008-02-04  Diego Novillo  <dnovillo@google.com>
25203
25204         http://gcc.gnu.org/ml/gcc-patches/2008-02/msg00110.html
25205
25206         PR 33738
25207         * tree-vrp.c (vrp_evaluate_conditional): With
25208         -Wtype-limits, emit a warning when comparing against a
25209         constant outside the natural range of OP0's type.
25210
25211 2008-02-04  Richard Guenther  <rguenther@suse.de>
25212
25213         PR middle-end/33631
25214         * expr.c (count_type_elements): Give for unions instead of
25215         guessing.
25216
25217 2008-02-04  Richard Guenther  <rguenther@suse.de>
25218
25219         PR middle-end/35043
25220         * gimplify.c (gimplify_init_ctor_eval): Convert array indices
25221         to TYPE_DOMAINs base type instead of using bitsizetype here.
25222
25223 2008-02-03  Jason Merrill  <jason@redhat.com>
25224
25225         * print-tree.c (print_node) [CONSTRUCTOR]: Print elements.
25226
25227 2008-02-04  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
25228
25229         PR other/29972
25230         * doc/invoke.texi (C++ Dialect Options, Optimize Options)
25231         (HPPA Options, i386 and x86-64 Options, IA-64 Options)
25232         (RS/6000 and PowerPC Options): Fix typos and markup.
25233         * doc/passes.texi (Tree-SSA passes): Likewise.
25234
25235 2008-02-02  Michael Matz  <matz@suse.de>
25236
25237         PR target/35045
25238         * postreload-gcse.c (record_last_reg_set_info_regno): Renamed
25239         from record_last_reg_set_info.
25240         (record_last_reg_set_info): Take an RTX argument, iterate over all
25241         constituent hardregs.
25242         (record_last_set_info, record_opr_changes): Change calls to
25243         new signature or to record_last_reg_set_info_regno.
25244
25245 2008-02-02  Gerald Pfeifer  <gerald@pfeifer.com>
25246
25247         * doc/extend.texi (X86 Built-in Functions): Fix grammar.
25248
25249 2008-02-01  Hans-Peter Nilsson  <hp@axis.com>
25250
25251         PR rtl-optimization/34773
25252         * reg-notes.def (EQUAL): Mention significance of combination of
25253         REG_EQUAL and REG_RETVAL.
25254         * fwprop.c (try_fwprop_subst): Don't add REG_EQUAL to an
25255         insn that has a REG_RETVAL.
25256
25257 2008-02-01  Roger Sayle  <roger@eyesopen.com>
25258
25259         PR bootstrap/33781
25260         * configure.ac (--enable-fixed-point): Disable unless explicitly
25261         requested on IRIX.
25262         * configure: Regenerate.
25263
25264 2008-02-01  Richard Guenther  <rguenther@suse.de>
25265
25266         PR other/35042
25267         * invoke.texi (-finline-limit): Remove no longer true parts
25268         of the documentation.  Note that there is no default value.
25269
25270 2008-02-01  Andrew Pinski  <pinskia@gmail.com>
25271             Mark Mitchell  <mark@codesourcery.com>
25272             Ben Elliston  <bje@au.ibm.com>
25273
25274         PR c/29326
25275         * doc/extend.texi (Other Builtins): Document.
25276
25277 2008-01-31  Tom Browder <tom.browder@gmail.com>
25278
25279         * doc/c-tree.texi (Types): Fix grammar.
25280         (Expression trees): Ditto.
25281         * doc/passes.texi (Tree-SSA passes): Ditto.
25282
25283         * doc/configterms.texi (Configure Terms): Fix typo.
25284         * doc/cpp.texi (Common Predefined Macros): Ditto.
25285         * doc/md.texi (Machine Constraints): Ditto.
25286
25287         * doc/makefile.texi (Makefile): Add comma.
25288
25289 2008-01-31  Tom Browder  <tom.browder@gmail.com>
25290             Gerald Pfeifer  <gerald@pfeifer.com>
25291
25292         * doc/sourcebuild.texi (Front End): Remove references to CVS
25293         and CVSROOT/modules.
25294         (Texinfo Manuals): Replace reference to CVS by one to SVN.
25295         (Back End): Remove reference to CVS.
25296
25297 2008-01-31  Richard Sandiford  <rsandifo@nildram.co.uk>
25298
25299         PR target/34900
25300         * config/mips/mips.c (gen_load_const_gp): New function, taking a
25301         comment from...
25302         (mips16_gp_pseudo_reg): ...here.
25303         * config/mips/mips.md (load_const_gp): Replace with...
25304         (load_const_gp_<mode>): ...this :P-based insn.
25305
25306 2008-01-31  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
25307
25308         * doc/invoke.texi (-ansi): Mention explicitly corresponding -std=
25309         options. Minor fixes.
25310         (-std): Move reference to standards closer to where language
25311         standards are first mentioned.
25312
25313 2008-01-31  Richard Sandiford  <rsandifo@nildram.co.uk>
25314
25315         PR rtl-optimization/34995
25316         * reload.c (alternative_allows_const_pool_ref): Take an rtx
25317         parameter and return a bool.  If the rtx parameter is nonnull,
25318         check that it satisfies an EXTRA_MEMORY_CONSTRAINT.
25319         (find_reloads): Update call accordingly.  Pass the new operand
25320         if it needed no address reloads, otherwise pass null.
25321
25322 2008-01-30  Richard Henderson  <rth@redhat.com>
25323
25324         PR c/34993
25325         * tree.c (build_type_attribute_qual_variant): Skip TYPE_DOMAIN
25326         for unbounded arrays.
25327
25328 2008-01-30  Silvius Rus  <rus@google.com>
25329
25330         * config/i386/xmmintrin.h (_mm_prefetch): Add const to first arg.
25331
25332 2008-01-30  Jan Hubicka  <jh@suse.cz>
25333
25334         PR target/34982
25335         * i386.c (init_cumulative_args): Use real function declaration when
25336         calling locally.
25337
25338 2008-01-30  Richard Sandiford  <rsandifo@nildram.co.uk>
25339
25340         PR rtl-optimization/34998
25341         * global.c (build_insn_chain): Treat non-subreg_lowpart
25342         SUBREGs of pseudos as clobbering all the words covered by the
25343         SUBREG, not just all the bytes.
25344         * ra-conflict.c (clear_reg_in_live): Likewise.  Take the
25345         original df_ref rather than an extract parameter.
25346         (global_conflicts): Update call accordingly.
25347
25348 2008-01-30  Andreas Krebbel  <krebbel1@de.ibm.com>
25349
25350         * config/s390/fixdfdi.h (__fixunstfdi, __fixtfdi): Rearrange
25351         the overflow check to make it easier to read.
25352         (__fixtfdi): Change the type of the ll member in union
25353         long_double to UDItype_x.
25354
25355 2008-01-30  Jakub Jelinek  <jakub@redhat.com>
25356
25357         PR middle-end/34969
25358         * cgraph.h (cgraph_update_edges_for_call_stmt): New prototype.
25359         * cgraph.c (cgraph_update_edges_for_call_stmt): New function.
25360         * tree-inline.c (fold_marked_statements): Call
25361         cgraph_update_edges_for_call_stmt if folding a call statement.
25362         * cgraphunit.c (verify_cgraph_node): Set cfun to this_cfun for
25363         debug_generic_stmt calls, reset it back afterwards.
25364
25365         PR c/35017
25366         * c-decl.c (start_decl): Don't pedwarn about TREE_READONLY
25367         static decls.
25368         * c-typeck.c (build_external_ref): Don't pedwarn about
25369         static vars in current function's scope.
25370
25371 2008-01-29  Joseph Myers  <joseph@codesourcery.com>
25372
25373         * config.gcc (i[34567]86-*-nto-qnx*): Remove deprecation.
25374
25375 2008-01-29  Bernhard Fischer  <aldot@gcc.gnu.org>
25376
25377         PR c/35002
25378         * ipa-struct-reorg.c: Fix spelling.
25379         * params.def: Ditto.
25380
25381 2008-01-29  Richard Guenther  <rguenther@suse.de>
25382
25383         PR middle-end/35006
25384         * tree-inline.h (struct copy_body_data): Add remapping_type_depth
25385         field.
25386         * tree-inline.c (remap_type): Increment remapping_type_depth
25387         around remapping types.
25388         (copy_body_r): Only add referenced variables if they are referenced
25389         from code, not types.
25390
25391 2008-01-29  Douglas Gregor  <doug.gregor@gmail.com>
25392
25393         PR c++/34055
25394         PR c++/34103
25395         PR c++/34219
25396         PR c++/34606
25397         PR c++/34753
25398         PR c++/34754
25399         PR c++/34755
25400         PR c++/34919
25401         PR c++/34961
25402         * c-pretty-print.c (pp_c_type_qualifier_list): Don't try to print
25403         qualifiers for an ERROR_MARK_NODE or a NULL_TREE.
25404
25405 2008-01-28  Andy Hutchinson   <hutchinsonandy@netscape.net>
25406
25407         PR target/34412
25408         * config/avr/avr.c (expand_prologue): Use correct QI mode frame
25409         pointer for tiny stack.
25410
25411 2008-01-28  Bernhard Fischer  <aldot@gcc.gnu.org>
25412
25413         * doc/tree-ssa.texi: Add cindex PHI nodes and improve wording.
25414
25415 2008-01-28  Bernhard Fischer  <aldot@gcc.gnu.org>
25416
25417         * config/vx-common.h: Fix typo in comment.
25418
25419 2008-01-28  Ian Lance Taylor  <iant@google.com>
25420
25421         PR c++/34862
25422         PR c++/33407
25423         * tree-ssa-copyrename.c (copy_rename_partition_coalesce): Don't
25424         coalesce pointers if they have different DECL_NO_TBAA_P values.
25425         * tree-ssa-copy.c (may_propagate_copy): Don't propagate copies
25426         between variables with different DECL_NO_TBAA_P values.
25427
25428 2008-01-28  Nathan Froyd  <froydnj@codesourcery.com>
25429
25430         PR 31535
25431         * config/rs6000/rs6000.c (small_data_operand): Vectors and floats
25432         are not legitimate small data references on SPE targets.
25433
25434 2008-01-28  David Daney  <ddaney@avtrex.com>
25435
25436         * doc/install.texi (mips-*-*): Recommend binutils 2.18.
25437
25438 2008-01-28  David Daney  <ddaney@avtrex.com>
25439
25440         * doc/install.texi (--disable-libgcj-bc):  Reword documentation.
25441
25442 2008-01-27  Joseph Myers  <joseph@codesourcery.com>
25443
25444         * config.gcc (strongarm*-*, ep9312*-*, xscale*-*, parisc*-*,
25445         m680[012]0-*, *-*-beos*, *-*-kaos*, *-*-linux*aout*,
25446         *-*-linux*libc1*, *-*-solaris2.[0-6], *-*-solaris2.[0-6].*,
25447         *-*-sysv*, *-*-windiss*, alpha*-*-unicosmk*, cris-*-aout,
25448         hppa1.1-*-pro*, hppa1.1-*-osf*, hppa1.1-*-bsd*,
25449         i[34567]86-sequent-ptx4*, i[34567]86-*-nto-qnx*,
25450         i[34567]86-*-sco3.2v5*, i[34567]86-*-uwin*, powerpc-*-chorusos*,
25451         vax-*-bsd*, vax-*-ultrix*): Mark obsolete.
25452
25453 2008-01-27  Bernhard Fischer  <aldot@gcc.gnu.org>
25454
25455         * basic-block.h (condjump_equiv_p): Fix comment.
25456
25457 2008-01-27  Bernhard Fischer  <aldot@gcc.gnu.org>
25458
25459         * tree-pretty-print.c (print_generic_decl, print_generic_stmt,
25460         print_generic_stmt_indented): Fix comment.
25461
25462 2008-01-27  Bernhard Fischer  <aldot@gcc.gnu.org>
25463
25464         * configure.ac (__stack_chk_fail): Add detecion for availability
25465         of SSP in uClibc by checking if __UCLIBC_HAS_SSP__ is defined.
25466         * configure: Regenerate.
25467
25468 2008-01-26  Maxim Kuvyrkov  <maxim@codesourcery.com>
25469
25470         PR middle-end/34688
25471         * final.c (output_addr_const): Handle TRUNCATE.
25472
25473 2008-01-26  Zdenek Dvorak  <ook@ucw.cz>
25474
25475         PR target/34711
25476         * tree-ssa-loop-ivopts.c (comp_cost): New type.
25477         (zero_cost, infinite_cost): New constants.
25478         (struct cost_pair): Change type of cost to comp_cost.
25479         (struct iv_ca): Change type of cand_use_cost and cost to comp_cost.
25480         (new_cost, add_costs, sub_costs, compare_costs, infinite_cost_p):
25481         New functions.
25482         (set_use_iv_cost, force_expr_to_var_cost, force_var_cost,
25483         split_address_cost, ptr_difference_cost, difference_cost,
25484         get_computation_cost_at, get_computation_cost,
25485         determine_use_iv_cost_generic, determine_use_iv_cost_address,
25486         determine_use_iv_cost_condition, determine_use_iv_costs,
25487         cheaper_cost_pair, iv_ca_recount_cost, iv_ca_set_no_cp,
25488         iv_ca_set_cp, iv_ca_cost, iv_ca_new, iv_ca_dump, iv_ca_extend,
25489         iv_ca_narrow, iv_ca_prune, try_improve_iv_set, find_optimal_iv_set):
25490         Change type of cost to comp_cost.
25491         (determine_iv_cost): Increase cost of non-original ivs, instead
25492         of decreasing the cost of original ones.
25493         (get_address_cost): Indicate the complexity of the addressing mode
25494         in comp_cost.
25495         (try_add_cand_for): Prefer using ivs not specific to some object.
25496         * tree-flow.h (force_expr_to_var_cost): Declaration removed.
25497
25498 2008-01-26  Peter Bergner  <bergner@vnet.ibm.com>
25499             Janis Johnson  <janis187@us.ibm.com>
25500
25501         PR target/34814
25502         * doc/tm.texi (TARGET_EXPAND_TO_RTL_HOOK): Document.
25503         (TARGET_INSTANTIATE_DECLS): Likewise.
25504         * target.h (expand_to_rtl_hook): New target hook.
25505         (instantiate_decls): Likewise.
25506         * function.c (instantiate_decl): Make non-static.  Rename to...
25507         (instantiate_decl_rtl): ... this.
25508         (instantiate_expr): Use instantiate_decl_rtl.
25509         (instantiate_decls_1): Likewise.
25510         (instantiate_decls): Likewise.
25511         (instantiate_virtual_regs: Call new instantiate_decls taget hook.
25512         * function.h (instantiate_decl_rtl): Add prototype.
25513         * cfgexpand.c (target.h): New include.
25514         (tree_expand_cfg): Call new expand_to_rtl_hook target hook.
25515         * target-def.h (TARGET_EXPAND_TO_RTL_HOOK): New define.
25516         (TARGET_INSTANTIATE_DECLS): Likewise.
25517         (TARGET_INITIALIZER): New target hooks added.
25518         * config/rs6000/rs6000-protos.h (rs6000_secondary_memory_needed_rtx):
25519         New prototype.
25520         * config/rs6000/rs6000.c (tree-flow.h): New include.
25521         (machine_function): Add sdmode_stack_slot field.
25522         (rs6000_alloc_sdmode_stack_slot): New function.
25523         (rs6000_instantiate_decls): Likewise.
25524         (rs6000_secondary_memory_needed_rtx): Likewise.
25525         (rs6000_check_sdmode): Likewise.
25526         (TARGET_EXPAND_TO_RTL_HOOK): Target macro defined.
25527         (TARGET_INSTANTIATE_DECLS): Likewise.
25528         (rs6000_hard_regno_mode_ok): Allow SDmode.
25529         (num_insns_constant): Likewise.  Handle _Decimal32 constants.
25530         (rs6000_emit_move): Handle SDmode.
25531         (function_arg_advance): Likewise.
25532         (function_arg): Likewise.
25533         (rs6000_gimplify_va_arg): Likewise.  Add special handling of
25534         SDmode var args for 32-bit compiles.
25535         (rs6000_secondary_reload_class): Handle SDmode.
25536         (rs6000_output_function_epilogue): Likewise.
25537         (rs6000_function_value): Simplify if statement.
25538         (rs6000_libcall_value): Likewise.
25539         * config/rs6000/rs6000.h (SLOW_UNALIGNED_ACCESS): Handle SDmode.
25540         (SECONDARY_MEMORY_NEEDED_RTX): Add define.
25541         * config/rs6000/dfp.md (movsd): New define_expand and splitter.
25542         (movsd_hardfloat): New define_insn.
25543         (movsd_softfloat): Likewise.
25544         (movsd_store): Likewise.
25545         (movsd_load): Likewise.
25546         (extendsddd2): Likewise.
25547         (extendsdtd2): Likewise.
25548         (truncddsd2): Likewise.
25549         (movdd_hardfloat64): Fixup comment.
25550         (UNSPEC_MOVSD_LOAD): New constant.
25551         (UNSPEC_MOVSD_STORE): Likewise.
25552
25553 2008-01-26  Jakub Jelinek  <jakub@redhat.com>
25554
25555         PR c++/34965
25556         * c-pretty-print.c (pp_c_exclusive_or_expression): Handle
25557         TRUTH_XOR_EXPR.
25558         (pp_c_logical_and_expression): Handle TRUTH_AND_EXPR.
25559         (pp_c_logical_or_expression): Handle TRUTH_OR_EXPR.
25560         (pp_c_expression): Handle TRUTH_AND_EXPR, TRUTH_OR_EXPR
25561         and TRUTH_XOR_EXPR.
25562
25563 2008-01-26  David Edelsohn  <edelsohn@gnu.org>
25564
25565         PR target/34794
25566         * config.gcc: Separate AIX 5.3 from AIX 6.1.
25567         * config/rs6000/rs6000-c.c (rs6000_cpu_cpp_builtins): Define
25568         __LONGDOUBLE128 too.
25569         * config/rs6000/aix61.h: New file.
25570
25571 2008-01-26  Richard Sandiford  <rsandifo@nildram.co.uk>
25572
25573         PR rtl-optimization/34959
25574         * optabs.c (expand_unop): In libcall notes, give ffs, clz, ctz,
25575         popcount and parity rtxes the same mode as their operand.
25576         Truncate or extend the result to the return value's mode
25577         if necessary.
25578
25579 2008-01-26  Richard Sandiford  <rsandifo@nildram.co.uk>
25580
25581         PR target/34981
25582         * config/mips/mips-protos.h (mips_expand_call): Return an rtx.
25583         * config/mips/mips.h (FIRST_PSEUDO_REGISTER): Rename FAKE_CALL_REGNO
25584         to GOT_VERSION_REGNUM.
25585         (CALL_REALLY_USED_REGISTERS): Set the GOT_VERSION_REGNUM entry to 0.
25586         (EPILOGUE_USES): Include GOT_VERSION_REGNUM if TARGET_USE_GOT.
25587         * config/mips/mips.c (mips_emit_call_insn): New function.
25588         (mips_call_tls_get_addr): Call mips_expand_call directly.
25589         (mips16_copy_fpr_return_value): Use mips_emit_call_insn rather than
25590         emit_call_insn.
25591         (mips16_build_call_stub): Likewise.  Return the call insn or null.
25592         (mips_expand_call): Update the call to mips16_build_call_stub
25593         accordingly and a remove redundant condition.  Assert that MIPS16
25594         stubs do not use lazy binding.  Use mips_emit_call_insn and return
25595         the call insn.
25596         (mips_extra_live_on_entry): Include GOT_VERSION_REGNUM if
25597         TARGET_USE_GOT.
25598         (mips_hard_regno_mode_ok_p): Allow SImode for GOT_VERSION_REGNUM.
25599         (mips_avoid_hazard): Remove hazard_set handling.
25600         * config/mips/mips.md (UNSPEC_EH_RECEIVER): Rename to...
25601         (UNSPEC_RESTORE_GP): ...this.
25602         (UNSPEC_SET_GOT_VERSION, UNSPEC_UPDATE_GOT_VERSION): New constants.
25603         (FAKE_CALL_REGNO): Rename to...
25604         (GOT_VERSION_REGNUM): ...this.
25605         (type): Add "ghost" value.  Add an associated insn reservation.
25606         (hazard_set): Remove.
25607         (exception_receiver): Rename to...
25608         (restore_gp): ...this and update the unspec identifier accordingly.
25609         (exception_receiver, nonlocal_got_receiver): New expanders.
25610         (load_call<mode>): Use GOT_VERSION_REGNUM.  Don't set
25611         FAKE_CALL_REGNO.  Remove hazard_set attribute.
25612         (set_got_version, update_got_version): New patterns.
25613
25614 2008-01-26  Danny Smith  <dannysmith@users.sourceforge.net>
25615
25616         PR target/34970
25617         * config/i386/cygming.h (ASM_OUTPUT_LABELREF): Define.
25618
25619 2008-01-25  Joseph Myers  <joseph@codesourcery.com>
25620
25621         PR other/31955
25622         * doc/install.texi2html: Generate gcc-vers.texi.
25623
25624 2008-01-25  DJ Delorie  <dj@redhat.com>
25625
25626         * config/m32c/m32c.h (ASM_PREFERRED_EH_DATA_FORMAT): Define.
25627
25628 2008-01-25  Joseph Myers  <joseph@codesourcery.com>
25629
25630         * config/c4x: Remove directory.
25631         * config.gcc (crx-*, mt-*): Mark obsolete.
25632         (c4x-*, tic4x-*, c4x-*-rtems*, tic4x-*-rtems*, c4x-*, tic4x-*,
25633         h8300-*-rtemscoff*, ns32k-*-netbsdelf*, ns32k-*-netbsd*,
25634         sh-*-rtemscoff*): Remove cases.
25635         * defaults.h (C4X_FLOAT_FORMAT): Remove.
25636         * real.c (encode_c4x_single, decode_c4x_single,
25637         encode_c4x_extended, decode_c4x_extended, c4x_single_format,
25638         c4x_extended_format): Remove.
25639         * real.h (c4x_single_format, c4x_extended_format): Remove.
25640         * doc/extend.texi (interrupt, naked): Remove mention of attributes
25641         on C4x.
25642         (Pragmas): Remove comment about c4x pragmas.
25643         * doc/install.texi (c4x): Remove target-specific instructions.
25644         * doc/invoke.texi (TMS320C3x/C4x Options): Remove.
25645         * doc/md.texi (Machine Constraints): Remove C4x documentation.
25646         * doc/tm.texi (MEMBER_TYPE_FORCES_BLK, c_register_pragma): Do not
25647         refer to C4x source files as examples.
25648         (C4X_FLOAT_FORMAT): Remove documentation.
25649
25650 2008-01-25  Bernd Schmidt  <bernd.schmidt@analog.com>
25651
25652         * config/bfin/bfin.c (override_options): Reorder tests so that
25653         flag_pic gets enabled for -msep-data.
25654
25655 2008-01-25  Richard Guenther  <rguenther@suse.de>
25656
25657         PR middle-end/32244
25658         * expr.c (expand_expr_real_1): Reduce result of LSHIFT_EXPR
25659         to its bitfield precision if required.
25660
25661 2008-01-25  Jakub Jelinek  <jakub@redhat.com>
25662
25663         PR middle-end/33880
25664         * tree-nested.c (walk_omp_for): New function.
25665         (convert_nonlocal_reference, convert_local_reference): Call
25666         walk_omp_for on OMP_FOR.
25667         (convert_call_expr): Call walk_body on OMP_FOR's
25668         OMP_FOR_PRE_INIT_BODY.
25669
25670 2008-01-25  Richard Guenther  <rguenther@suse.de>
25671
25672         PR tree-optimization/34966
25673         * tree-ssa-math-opts.c (execute_cse_sincos_1): For all but
25674         default defs and PHI_NODEs we have to insert after the
25675         defining statement.
25676
25677 2008-01-24  Nick Clifton  <nickc@redhat.com>
25678
25679         * config/stormy16/stormy16-lib2.c (MIN_UNITS_PER_WORD):
25680         Provide a default definition.
25681         (LIBGCC2_UNITS_PER_WORD): Likewise.
25682
25683         * config/stormy16/stormy16.c: Include df.h for the prototype
25684         for df_regs_ever_live_p.
25685         (xstormy16_expand_builtin_va_start): Convert the stack offset
25686         into a component_ref and then use POINTER_PLUS_EXPR to add it
25687         to the incoming_virtual_args_rtx.
25688         (xstormy16_gimplify_va_arg_expr): Rename to
25689         xstormy16_gimplify_va_arg_expr.
25690         Use POINTER_PLUS_EXPR when performing pointer arithmetic.
25691         (TARGET_GIMPLIFY_VA_ARG_EXPR): Use renamed
25692         xstormy16_gimplify_va_arg_expr.
25693         Fix up some formatting issues.
25694
25695         * config/stormy16/stormy16.c: (xstormy16_carry_plus_operand):
25696         Move to predicates.md.
25697         (xs_hi_general_operand): Likewise.
25698         (xs_hi_nonmemory_operand): Likewise.
25699         * config/stormy16/predicates.md:
25700         (xstormy16_carry_plus_operand): New predicate.
25701         (xs_hi_general_operand): New predicate.
25702         (xs_hi_nonmemory_operand): New predicate.
25703         * config/stormy16/stormy16-protos.h:
25704         (xstormy16_carry_plus_operand): Delete prototype.
25705         (xs_hi_general_operand): Likewise.
25706         (xs_hi_nonmemory_operand): Likewise.
25707
25708         * config/storm16/stormy16.md (addhi3): Remove earlyclobber
25709         modifiers as they are no longer needed and they can trigger
25710         reload spill failures.
25711
25712         * config/storm16/stormy16.md (ineqbranchsi): Replace match_dup
25713         with a match_operand in order to help reload.
25714
25715         * config/storm16/stormy16.md (movhi_internal): Replace 'r'
25716         constraint with 'e' for the 8th alternative as this version of
25717         the mov.w instruction only accepts the lower 8 registers.
25718
25719 2008-01-25  Uros Bizjak  <ubizjak@gmail.com>
25720
25721         PR target/34856
25722         * simplifx-rtx.c (simplify_const_binary_operation) [VEC_CONCAT]:
25723         Consider only CONST_INT, CONST_DOUBLE and CONST_FIXED as constant
25724         vector elements.
25725
25726 2008-01-25  Jakub Jelinek  <jakub@redhat.com>
25727
25728         PR middle-end/33333
25729         * gimplify.c (gimplify_omp_for): Gimplify OMP_FOR_PRE_BODY.
25730
25731 2008-01-25  Golovanevsky Olga  <olga@il.ibm.com>
25732
25733         * ipa-struct-reorg.c (remove_str_allocs_in_func, remove_str_allocs):
25734         New functions.
25735         (remove_structure): Update allocations list before removing structure.
25736
25737 2008-01-25  Golovanevsky Olga  <olga@il.ibm.com>
25738
25739         * ipa-struct-reorg.c (is_safe_cond_expr,
25740         create_new_stmts_for_cond_expr): Use integer_zerop function,
25741         that recognize not only zero-pointer, but zero-integer too.
25742
25743 2008-01-25  Ben Elliston  <bje@au.ibm.com>
25744
25745         PR other/22232
25746         * fixproto: Escape "." in sed expression that strips leading "./".
25747
25748 2008-01-24  H.J. Lu  <hongjiu.lu@intel.com>
25749
25750         PR driver/34904
25751         * gcc.c (SWITCH_OK): Removed.
25752         (SWITCH_LIVE): Changed to bit.
25753         (SWITCH_FALSE): Likewise.
25754         (SWITCH_IGNORE): Likewise.
25755         (switchstr): Change live_cond to unsigned int.
25756         (process_command): Replace SWITCH_OK with 0.
25757         (do_self_spec): Likewise.
25758         (set_collect_gcc_options): Check the SWITCH_IGNORE bit.
25759         (give_switch): Likewise.
25760         (used_arg): Likewise.
25761         (do_spec_1): Set the SWITCH_IGNORE bit.
25762         (check_live_switch): Check both SWITCH_LIVE and SWITCH_FALSE
25763         bits.  Set the SWITCH_LIVE bit.
25764
25765 2008-01-24  Andreas Krebbel  <krebbel1@de.ibm.com>
25766
25767         * config/s390/s390.h (MOVE_RATIO): Define new target macro.
25768
25769 2008-01-24  Richard Sandiford  <rsandifo@nildram.co.uk>
25770
25771         PR tree-optimization/34472
25772         * ipa-struct-reorg.c (safe_cond_expr_check): Change the DATA
25773         parameter to a "bool *" and set *DATA to false if there is
25774         an unsafe access.  Do not delete the structure here.
25775         (check_cond_exprs): Delete it here instead.
25776         (check_cond_exprs, exclude_cold_structs): Do not increase
25777         I when removing a structure.
25778
25779 2008-01-24  Uros Bizjak  <ubizjak@gmail.com>
25780
25781         PR target/34856
25782         * config/i386/i386.c (ix86_expand_vector_init): Consider only
25783         CONST_INT, CONST_DOUBLE and CONST_FIXED as constant vector elements.
25784
25785 2008-01-24  Jakub Jakub Jelinek  <jakub@redhat.com>
25786
25787         PR middle-end/34934
25788         * tree-stdarg.c (reachable_at_most_once): Use VEC vector instead of
25789         a fixed vector for stack.
25790
25791 2008-01-24  Ben Elliston  <bje@au.ibm.com>
25792
25793         PR c++/25701
25794         * doc/gcc.texi (Software development): Add a direntry for g++.
25795
25796 2008-01-23  Hans-Peter Nilsson  <hp@axis.com>
25797
25798         * config/cris/cris.h (CC1PLUS_SPEC, OPTIMIZATION_OPTIONS): Drop
25799         stale and straggling -fforce-addr comments above.
25800
25801         * config/cris/cris.h (CRIS_SUBTARGET_VERSION, TARGET_VERSION): Don't
25802         define.
25803         * config/cris/linux.h (CRIS_SUBTARGET_VERSION): Don't define.
25804         * config/cris/aout.h (CRIS_SUBTARGET_VERSION): Don't define.
25805
25806 2008-01-23  Michael Matz  <matz@suse.de>
25807
25808         PR debug/34895
25809         * dwarf2out.c (force_type_die): Use modified_type_die instead of
25810         gen_type_die.
25811
25812 2008-01-23  Andreas Krebbel  <krebbel1@de.ibm.com>
25813
25814         * ipa-struct-reorg.c (create_new_malloc): Use pointer type as
25815         malloc result type.
25816
25817 2008-01-23 Anatoly Sokolov <aesok@post.ru>
25818
25819         * config/avr/avr.c (avr_current_arch): New variable.
25820         (avr_arch_types): Add 'avr31' and 'avr51' entries.
25821         (avr_arch): Add 'ARCH_AVR31' and 'ARCH_AVR51'.
25822         (avr_mcu_types): Add 'avr31' and 'avr51' architectures.
25823         (avr_override_options): Init 'avr_current_arch'.
25824         (base_arch_s): Move from here...
25825         * config/avr/avr.h (base_arch_s): ... here. Add new members
25826         'have_elpm', 'have_elpmx', 'have_eijmp_eicall', 'reserved'. Rename
25827         'mega' to 'have_jmp_call'.
25828         (TARGET_CPU_CPP_BUILTINS): Define "__AVR_HAVE_JMP_CALL__",
25829         "__AVR_HAVE_RAMPZ__", "__AVR_HAVE_ELPM__" and "__AVR_HAVE_ELPMX__"
25830         macros.
25831         (LINK_SPEC, CRT_BINUTILS_SPECS, ASM_SPEC): Add 'avr31' and 'avr51'
25832         architectures.
25833         * config/avr/t-avr (MULTILIB_OPTIONS, MULTILIB_DIRNAMES,
25834         MULTILIB_MATCHES): Ditto.
25835
25836 2008-01-23  Richard Guenther  <rguenther@suse.de>
25837
25838         PR middle-end/31529
25839         * cgraphunit.c (cgraph_reset_node): Always mark the node
25840         not reachable if it is not queued already.
25841
25842 2008-01-23  Bernd Schmidt  <bernd.schmidt@analog.com>
25843
25844         * config/bfin/bfin-protos.h (WA_RETS, ENABLE_WA_RETS): New macros.
25845         * config/bfin/bfin.c (bfin_cpus): Add WA_RETS everywhere.
25846         (cputype_selected): New static variable.
25847         (bfin_handle_option): Set it if -mcpu is used.
25848         (override_option): Select default set of workarounds if no cpu type
25849         selected on the command line.
25850         (workaround_rts_anomaly): Only run if ENABLE_WA_RETS.
25851
25852         From  Michael Frysinger  <michael.frysinger@analog.com>
25853         * config/bfin/bfin-protos.h (enum bfin_cpu_type): Add
25854         BFIN_CPU_BF547, BFIN_CPU_BF523, BFIN_CPU_BF524, and BFIN_CPU_BF526.
25855
25856         * config/bfin/elf.h (LIB_SPEC): Use proper linker script
25857         for bf547, bf523, bf524, and bf526.
25858         * config/bfin/bfin.c (bfin_cpus[]): Add bf547,  bf523, bf524, and
25859         bf526.
25860         * config/bfin/bfin.h (TARGET_CPU_CPP_BUILTINS): Define
25861         __ADSPBF523__ for bf523, __ADSPBF524__ for bf524,
25862         __ADSPBF526__ for bf526, __ADSPBF52x__ for all three, as well as
25863         __ADSPBF547__ and __ADSPBF54x__ for bf547.
25864         * doc/invoke.texi (Blackfin Options): Document that
25865         -mcpu now accept bf547, bf523, bf524, and bf526.
25866
25867 2008-01-22  Eric Botcazou  <ebotcazou@adacore.com>
25868
25869         PR rtl-optimization/34628
25870         * combine.c (try_combine): Stop and undo after the first combination
25871         if an autoincrement side-effect on the first insn has effectively
25872         been lost.
25873
25874 2008-01-22  David Edelsohn  <edelsohn@gnu.org>
25875
25876         PR target/34529
25877         * config/rs6000/rs6000.c (rs6000_legitimate_offset_address_p):
25878         Offset addresses are not valid for Altivec or paired float modes.
25879
25880 2008-01-22  Jakub Jelinek  <jakub@redhat.com>
25881
25882         PR c++/34607
25883         * c-parser.c (c_parser_omp_for_loop): Don't call c_finish_omp_for
25884         if DECL_INITIAL (decl) is error_mark_node.
25885
25886         PR c++/34914
25887         * c-common.c (handle_vector_size_attribute): Only allow
25888         integral, scalar float and fixed point types.  Handle OFFSET_TYPE
25889         the same way as pointer, array etc. types.
25890         * tree.c (reconstruct_complex_type): Handle OFFSET_TYPE.
25891
25892         PR c++/34917
25893         * tree.c (build_type_attribute_qual_variant): Call
25894         build_qualified_type if attributes are equal, but quals are not.
25895
25896 2008-01-22  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
25897
25898         PR 32102
25899         * doc/invoke.texi (-Wall): -Wall enables -Wstrict-overflow=1.
25900         * flags.h (warn_strict_aliasing): Remove.
25901         (warn_strict_overflow): Remove.
25902         * opts.c (warn_strict_aliasing): Remove.
25903         (warn_strict_overflow): Remove.
25904         * c-opts.c (c_common_handle_option): -Wall only sets
25905         -Wstrict-aliasing or -Wstrict-overflow if they are uninitialized.
25906         (c_common_post_options): Give default values to -Wstrict-aliasing
25907         and -Wstrict-overflow if they are uninitialized.
25908         * common.opt (Wstrict-aliasing): Specify Var and Init.
25909         (Wstrict-overflow): Likewise.
25910
25911 2008-01-22  Kenneth Zadeck  <zadeck@naturalbridge.com>
25912
25913         PR rtl-optimization/26854
25914         PR rtl-optimization/34400
25915         PR rtl-optimization/34884
25916         * ddg.c (create_ddg_dep_from_intra_loop_link): Use
25917         DF_RD->gen.
25918         * df.h (df_changeable_flags.DF_RD_NO_TRIM): Deleted
25919         (df_rd_bb_info.expanded_lr_out): Deleted
25920         * loop_invariant.c (find_defs): Deleted DF_RD_NO_TRIM flag.
25921         * loop_iv.c (iv_analysis_loop_init): Ditto.  * df-problems.c
25922         (df_rd_free_bb_info, df_rd_alloc, df_rd_confluence_n,
25923         df_rd_bb_local_compute, df_rd_transfer_function, df_rd_free):
25924         Removed code to allocate, initialize or free expanded_lr_out.
25925         (df_rd_bb_local_compute_process_def): Restructured to make more
25926         understandable.
25927         (df_rd_confluence_n): Removed code to no apply invalidate_by_call
25928         sets if the sets are being trimmed.
25929
25930 2008-01-22  H.J. Lu  <hongjiu.lu@intel.com>
25931
25932         PR bootstrap/32287
25933         * configure.ac (ld_vers): Support GNU linker version xx.xx.*
25934         (as_vers): Likewise.
25935         * configure: Regenerated.
25936
25937 2008-01-22  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
25938
25939         PR middle-end/33092
25940         * tree-pass.h (pass_build_alias): New pass.
25941         * tree-ssa-alias.c (gate_build_alias): New.
25942         (pass_build_alias): New.
25943         * passes.c (init_optimization_passes): Add pass_build_alias after
25944         pass_create_structure_vars.
25945
25946 2008-01-22  Wolfgang Gellerich  <gellerich@de.ibm.com>
25947
25948         * config/s390/s390.h (S390_TDC_POSITIVE_NORMALIZED_NUMBER):
25949         Renamed to S390_TDC_POSITIVE_NORMALIZED_BFP_NUMBER.
25950         (S390_TDC_NEGATIVE_NORMALIZED_NUMBER): Renamed to
25951         S390_TDC_NEGATIVE_NORMALIZED_BFP_NUMBER.
25952         (S390_TDC_POSITIVE_DENORMALIZED_NUMBER): Renamed to
25953         S390_TDC_POSITIVE_DENORMALIZED_BFP_NUMBER.
25954         (S390_TDC_NEGATIVE_DENORMALIZED_NUMBER): Renamed to
25955         S390_TDC_NEGATIVE_DENORMALIZED_BFP_NUMBER.
25956         (S390_TDC_POSITIVE_NORMALIZED_BFP_NUMBER): New constant.
25957         (S390_TDC_NEGATIVE_NORMALIZED_BFP_NUMBER): New constant.
25958         (S390_TDC_POSITIVE_DENORMALIZED_BFP_NUMBER): New constant.
25959         (S390_TDC_NEGATIVE_DENORMALIZED_BFP_NUMBER): New constant.
25960         * config/s390/s390.md (FP_ALL): New mode iterator.
25961         (_d): New mode attribute.
25962         ("*signbit<mode>2>"): Changed mode of first operand.
25963         ("isinf<mode>2"): Changed mode of first operand.
25964         ("*TDC_insn"): Adaptation for DFP modes.
25965
25966 2008-01-22  Ben Elliston  <bje@au.ibm.com>
25967
25968         * tree.c (check_qualified_type): Improve function description.
25969
25970 2008-01-21  Jason Merrill  <jason@redhat.com>
25971
25972         PR c++/34196
25973         * tree.h (TRY_CATCH_IS_CLEANUP): New macro.
25974         * tree-eh.c (honor_protect_cleanup_actions): Strip TRY_CATCH_EXPR
25975         if it is set.
25976
25977 2008-01-21  DJ Delorie  <dj@redhat.com>
25978
25979         * doc/tm.texi (HARD_REGNO_NREGS): Note that this macro must not
25980         return zero.
25981
25982 2008-01-21  Richard Guenther  <rguenther@suse.de>
25983
25984         PR middle-end/34856
25985         * tree-cfg.c (verify_expr): Allow all invariant expressions
25986         instead of just constant class ones as reference argument.
25987         * tree-ssa-loop-im.c (for_each_index): Handle CONSTRUCTOR
25988         like any other constant.
25989         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Likewise.
25990
25991 2008-01-21  H.J. Lu  <hongjiu.lu@intel.com>
25992
25993         * regmove.c (fixup_match_1): Update call crossed frequencies.
25994
25995 2008-01-21  Richard Guenther  <rguenther@suse.de>
25996
25997         PR c/34885
25998         * tree-inline.c (setup_one_parameter): Deal with mismatched
25999         types using a VIEW_CONVERT_EXPR.
26000
26001 2008-01-21  Alon Dayan  <alond@il.ibm.com>
26002             Olga Golovanevsky  <olga@il.ibm.com>
26003
26004         PR tree-optimization/34701
26005         * ipa-struct-reorg.c (gen_size): Fix the malloc parameter calculation
26006         when the structure size is not a power of 2.
26007
26008 2008-01-20  Kenneth Zadeck  <zadeck@naturalbridge.com>
26009
26010         * doc/install.texi: Add doc for --enable-checking=df.
26011
26012 2008-01-20  Kaz Kojima  <kkojima@gcc.gnu.org>
26013
26014         PR rtl-optimization/34808
26015         * emit-rtl.c (try_split): Handle REG_RETVAL notes.
26016
26017 2008-01-20  Richard Sandiford  <rsandifo@nildram.co.uk>
26018
26019         * global.c (find_reg): Only compute EH_RETURN_DATA_REGNO once per
26020         input.
26021
26022 2008-01-19  Kenneth Zadeck  <zadeck@naturalbridge.com>
26023
26024         PR rtl-optimization/26854
26025         PR rtl-optimization/34400
26026         * ddg.c (create_ddg_dep_from_intra_loop_link): Do not use
26027         DF_RD->gen.
26028         * df.h (df_changeable_flags.DF_RD_NO_TRIM): New.
26029         (df_rd_bb_info.expanded_lr_out): New.
26030         * loop_invariant.c (find_defs): Added DF_RD_NO_TRIM flag.
26031         * loop_iv.c (iv_analysis_loop_init): Ditto.
26032         * df-problems.c (df_rd_free_bb_info, df_rd_alloc, df_rd_confluence_n,
26033         df_rd_bb_local_compute, df_rd_transfer_function, df_rd_free):
26034         Added code to allocate, initialize or free expanded_lr_out.
26035         (df_rd_bb_local_compute_process_def): Restructured to make
26036         more understandable.
26037         (df_rd_confluence_n): Add code to do nothing with fake edges and
26038         code to no apply invalidate_by_call sets if the sets are being trimmed.
26039         (df_lr_local_finalize): Renamed to df_lr_finalize.
26040         (df_live_local_finalize): Renamed to df_live_finalize.
26041
26042 2008-01-20  Richard Sandiford  <rsandifo@nildram.co.uk>
26043
26044         PR target/34831
26045         * config/mips/mips.md (div<mode>3): Use <recip_condition> when
26046         deciding whether to use reciprocal instructions.
26047
26048 2008-01-19  Uros Bizjak  <ubizjak@gmail.com>
26049
26050         * dwarf2out.c (dwarf2out_switch_text_section): Do not call
26051         dwarf2out_note_section_used if cold_text_section is NULL.
26052
26053 2008-01-19  Jakub Jelinek  <jakub@redhat.com>
26054
26055         PR gcov-profile/34610
26056         * tree-cfg.c (make_edges): Mark both outgoing edges from
26057         OMP_CONTINUE and from OMP_FOR as EDGE_ABNORMAL.
26058         * omp-low.c (expand_omp_for): Clear EDGE_ABNORMAL bits
26059         from OMP_FOR and OMP_CONTINUE outgoing edges.
26060
26061         * tree-profile.c (tree_profiling): Return early if
26062         cfun->after_tree_profile != 0.  Set cfun->after_tree_profile
26063         at the end.
26064         * omp-low.c (expand_omp_parallel): Copy after_tree_profile
26065         from cfun to child_cfun.
26066         * function.h (struct function): Add after_tree_profile bit.
26067
26068 2008-01-19 Anatoly Sokolov <aesok@post.ru>
26069
26070         * config/avr/avr.S (_exit): Disable interrupt.
26071
26072 2008-01-18  Kenneth Zadeck  <zadeck@naturalbridge.com>
26073             Steven Bosscher  <stevenb.gcc@gmail.com>
26074
26075         PR rtl-optimization/26854
26076         PR rtl-optimization/34400
26077         * df-problems.c (df_live_scratch): New scratch bitmap.
26078         (df_live_alloc): Allocate df_live_scratch when doing df_live.
26079         (df_live_reset): Clear the proper bitmaps.
26080         (df_live_bb_local_compute): Only process the artificial defs once
26081         since the order is not important.
26082         (df_live_init): Init the df_live sets only with the variables
26083         found live by df_lr.
26084         (df_live_transfer_function): Use the df_lr sets to prune the
26085         df_live sets as they are being computed.
26086         (df_live_free): Free df_live_scratch.
26087
26088 2008-01-18  Ian Lance Taylor  <iant@google.com>
26089
26090         * common.opt: Add fmerge-debug-strings.
26091         * dwarf2out.c (DEBUG_STR_SECTION_FLAGS): Test
26092         flag_merge_debug_strings rather than flag_merge_constants.
26093         * doc/invoke.texi (Option Summary): Mention
26094         -fmerge-debug-strings.
26095         (Debugging Options): Document -fmerge-debug-strings.
26096
26097 2008-01-18  Ian Lance Taylor  <iant@google.com>
26098
26099         PR c++/33407
26100         * tree.h (DECL_IS_OPERATOR_NEW): Define.
26101         (struct tree_function_decl): Add new field operator_new_flag.
26102         * tree-inline.c (expand_call_inline): When inlining a call to
26103         operator new, force the return value to go into a variable, and
26104         set DECL_NO_TBAA_P on that variable.
26105         * c-decl.c (merge_decls): Merge DECL_IS_OPERATOR_NEW flag.
26106
26107 2008-01-18  Uros Bizjak  <ubizjak@gmail.com>
26108
26109         PR debug/34484
26110         * dwarf2out.c (dwarf2out_switch_text_section): Do not guard with
26111         DWARF2_DEBUGGING_INFO.
26112         (dwarf2out_note_section_used): Ditto.  Add prototype.
26113         (have_multiple_function_sections, text_section_used,
26114         cold_text_section_used, *cold_text_sections): Move declarations
26115         before their uses.
26116
26117 2008-01-17  Bob Wilson  <bob.wilson@acm.org>
26118
26119         * config/xtensa/unwind-dw2-xtensa.h (_Unwind_FrameState): Remove pc
26120         field and add signal_ra.
26121         * config/xtensa/unwind-dw2-xtensa.c (uw_frame_state_for): Remove
26122         assignments to frame state pc.  Move end of stack check after
26123         MD_FALLBACK_FRAME_STATE_FOR.
26124         (uw_update_context_1): Use frame state signal_regs if set, instead
26125         of checking signal_frame flag.
26126         (uw_update_context): Use frame state signal_ra if set.
26127         * config/xtensa/linux.h (MD_UNWIND_SUPPORT): Define.
26128         * config/xtensa/linux-unwind.h: New file.
26129
26130 2008-01-18  Bernhard Fischer  <aldot@gcc.gnu.org>
26131
26132         * modulo-sched.c (get_sched_window): Fix comment typo.
26133
26134 2008-01-17  Andrew MacLeod  <amacleod@redhat.com>
26135
26136         PR tree-optimization/34648
26137         * tree-ssa-sccvn.c (visit_use): Expressions which can throw are varying.
26138
26139 2008-01-17  Anatoly Sokolov <aesok@post.ru>
26140
26141         * config/avr/avr.h (LINK_SPEC): Support -mrelax and -mpmem-wrap-around.
26142         * config/avr/avr.opt (mrelax, mpmem-wrap-around): Add.
26143
26144 2008-01-17  Seongbae Park  <seongbae.park@gmail.com>
26145
26146         PR rtl-optimization/34400
26147         * df-core.c (df_worklist_dataflow_overeager,
26148         df_worklist_dataflow_doublequeue): New functions.
26149         (df_worklist_dataflow): Two different worklist solvers.
26150         * params.def (PARAM_DF_DOUBLE_QUEUE_THRESHOLD_FACTOR):
26151         New param.
26152
26153 2008-01-16  Sebastian Pop  <sebastian.pop@amd.com>
26154
26155         PR testsuite/34821
26156         * doc/invoke.texi: Document the dependence on pthread for fopenmp
26157         and ftree-parallelize-loops.
26158
26159 2008-01-17  Mircea Namolaru  <namolaru@il.ibm.com>
26160
26161         PR rtl-optimization/34826
26162         * loop-doloop (doloop_modify): Update the REG_BR_PROB note.
26163
26164 2008-01-17  Andreas Krebbel  <krebbel1@de.ibm.com>
26165
26166         * global.c (find_reg): Mark the eh regs as used if necessary.
26167         * ra-conflict.c (global_conflicts): Set no_eh_reg flag.
26168         * ra.h (struct allocno): no_eh_reg field added.  Changed
26169         no_stack_reg type to bitfield.
26170
26171 2008-01-17  Eric Botcazou  <ebotcazou@adacore.com>
26172
26173         * tree.c (substitute_in_expr): Add missing 'break'.
26174
26175 2008-01-17  Richard Guenther  <rguenther@suse.de>
26176
26177         PR tree-optimization/34825
26178         * tree-ssa-math-opts.c (is_division_by): Do not recognize
26179         x / x as division to handle.
26180
26181 2008-01-16  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
26182
26183         * pa64-hpux.h (LIB_SPEC): Add "-lpthread" in shared links if "-mt" or
26184         "-pthread" is specified.
26185         * pa-hpux11.h (LIB_SPEC): Likewise.
26186
26187 2008-01-16  Janis Johnson  <janis187@us.ibm.com>
26188             Peter Bergner  <bergner@vnet.ibm.com>
26189
26190         PR rtl-optimization/33796
26191         * sparseset.c (sparseset_alloc): Use xcalloc rather than xmalloc.
26192
26193 2008-01-16  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
26194
26195         PR libgfortran/34699
26196         * pa-hpux.h (LINK_SPEC): Only search /lib/pa1.1 and /usr/lib/pa1.1 on
26197         static links.
26198         * pa-hpux10.h (LINK_SPEC): Likewise.
26199         * pa-hpux11.h (LINK_SPEC): Don't search /lib/pa1.1 and /usr/lib/pa1.1.
26200
26201 2008-01-16  Richard Guenther  <rguenther@suse.de>
26202
26203         PR middle-end/32628
26204         * fold-const.c (fold_convert_const_int_from_int): Do not
26205         set overflow if that occured only because of a sign extension
26206         change when converting from/to a sizetype with the same
26207         precision and signedness.
26208
26209 2008-01-16  Uros Bizjak  <ubizjak@gmail.com>
26210
26211         PR debug/34249
26212         * dwarf2out.c (output_call_frame_info): Move output of FDE initial
26213         location address to the correct place.  Update copyright year.
26214
26215 2008-01-16  Sebastian Pop  <sebastian.pop@amd.com>
26216
26217         * lambda-code.c (lambda_transform_legal_p): Handle the case of
26218         no dependences in the dependence_relations vector.
26219
26220 2008-01-16  Jan Hubicka  <jh@suse.cz>
26221
26222         PR rtl-optimization/31396
26223         * regstat.c (regstat_bb_compute_ri): Compute FREQ_CALLS_CROSSED.
26224         * cfg.c (dump_reg_info): Print it.
26225         * regs.h (struct reg_info_t): add freq_calls_crossed.
26226         (REG_FREQ_CALLS_CROSSED): New macro.
26227         * global.c (global_alloc): Compute freq_calls_crossed for allocno.
26228         (find_reg): Update call of CALLER_SAVE_PROFITABLE.
26229         * regmove.c (optimize_reg_copy_1, optimize_reg_copy_2, fixup_match_2,
26230         regmove_optimize): Update call crossed frequencies.
26231         * local-alloc.c (struct qty): Add freq_calls_crossed.
26232         (alloc_qty): Copute freq_calls_crossed.
26233         (update_equiv_regs, combine_regs): Update REG_FREQ_CALLS_CROSSED.
26234         (find_free_reg): Update call of CALLER_SAVE_PROFITABLE.
26235         * ra.h (struct allocno): Add freq_calls_crossed.
26236
26237 2008-01-16  Sebastian Pop  <sebastian.pop@amd.com>
26238
26239         * gcc.c (LINK_COMMAND_SPEC): Add includes and link options for
26240         libgomp when compiling with ftree-parallelize-loops.
26241         (GOMP_SELF_SPECS): Add -pthread for ftree-parallelize-loops.
26242
26243 2008-01-16  Richard Guenther  <rguenther@suse.de>
26244
26245         PR tree-optimization/34769
26246         * tree-data-ref.c (initialize_matrix_A): Revert fix for PR34458.
26247         * tree.c (int_cst_value): Instead make this function more
26248         permissive in what it accepts as valid input.  Document this
26249         function always sign-extends the value.
26250
26251 2008-01-16  Jakub Jelinek  <jakub@redhat.com>
26252             Richard Guenther  <rguenther@suse.de>
26253
26254         PR c/34668
26255         * gimplify.c (fold_indirect_ref_rhs): Rename to ...
26256         (gimple_fold_indirect_ref_rhs): ... this.
26257         (gimple_fold_indirect_ref): New function with foldings
26258         that preserve lvalueness.
26259         (gimplify_modify_expr_rhs): Call gimple_fold_indirect_ref_rhs.
26260         * tree-flow.h (gimple_fold_indirect_ref): Declare.
26261         * tree-inline.c (copy_body_r): Use gimple_fold_indirect_ref
26262         to fold an INDIRECT_REF, fall back to the old use of
26263         fold_indirect_ref_1.
26264
26265 2008-01-16  Sebastian Pop  <sebastian.pop@amd.com>
26266
26267         * tree-data-ref.c (subscript_dependence_tester_1): Call
26268         free_conflict_function.
26269         (compute_self_dependence): Same.
26270
26271 2008-01-16  Uros Bizjak  <ubizjak@gmail.com>
26272
26273         PR debug/34249
26274         * debug.h (dwarf2out_switch_text_section): Move declaration from ...
26275         * dwarf2out.c (dwarf2out_switch_text_section): ... here.  Make
26276         function global.
26277         * final.c (final_scan_insn) [NOTE_INSN_SWITCH_TEXT_SECTIONS]:
26278         Depending on dwarf2out_do_frame, call dwarf2out_switch_text_section
26279         for DWARF2_UNWIND_INFO targets.
26280
26281 2008-01-16  Richard Guenther  <rguenther@suse.de>
26282
26283         PR c/34768
26284         * c-typeck.c (common_pointer_type): Do not merge inconsistent
26285         type qualifiers for function types.
26286
26287 2008-01-15  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
26288
26289         * tree-parloops.c (gen_parallel_loop): Fix ommision of declaration for
26290         loop_iterator li from previous commit.
26291
26292 2008-01-15  Sebastian Pop  <sebastian.pop@amd.com>
26293
26294         * tree-parloops.c (gen_parallel_loop): Free loop bound estimations.
26295
26296 2008-01-12  Sebastian Pop  <sebastian.pop@amd.com>
26297
26298         * tree-parloops.c (loop_has_blocks_with_irreducible_flag): New.
26299         (parallelize_loops): Don't parallelize irreducible components.
26300
26301 2008-01-14  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
26302
26303         PR c++/24924
26304         * c-opts (c_common_post_options): Do not enable CPP
26305         flag_pedantic_errors by default.
26306
26307 2008-01-14  Eric Botcazou  <ebotcazou@adacore.com>
26308
26309         PR rtl-optimization/31944
26310         * cse.c (remove_pseudo_from_table): New function.
26311         (merge_equiv_classes): Use above function to remove pseudo-registers.
26312         (invalidate): Likewise.
26313
26314 2008-01-13  Richard Guenther  <rguenther@suse.de>
26315
26316         PR middle-end/34601
26317         * emit-rtl.c (set_reg_attrs_for_decl_rtl): Use DECL_MODE
26318         instead of TYPE_MODE to deal with calls from expand_one_error_var.
26319
26320 2008-01-13  Uros Bizjak  <ubizjak@gmail.com>
26321
26322         * gcse.c (cprop_jump): Call validate_unshare_change instead of
26323         validate_change to unshare the source of the PC set.
26324
26325 2008-01-12  Jan Hubicka  <jh@suse.cz>
26326
26327         PR middle-end/32135
26328         * tree-ssa-ccp.c (maybe_fold_offset_to_array_ref): Do not construct
26329         references above array bounds.  This might trigger bounds checks for
26330         pointers to arrays.
26331
26332 2008-01-12  Sebastian Pop  <sebastian.pop@amd.com>
26333
26334         * tree-ssa-ter.c (free_temp_expr_table): Free num_in_part and
26335         new_replaceable_dependencies.
26336
26337 2008-01-12  Doug Kwan  <dougkwan@google.com>
26338
26339         * c-decl.c: (grokdeclarator): Use OPT_Wignored_qualifiers
26340         instead of OPT_Wreturn_type in warning due to ignored return type
26341         qualifiers.
26342         * c-opt.c (c_common_post_option): Add -Wignored-qualifiers to
26343         options included in -Wextra.
26344         * c.opt: New option -Wignored_qualifiers.
26345         * doc/invoke.texi (Warning Options, -Wextra): Add new option
26346         -Wignore_qualifiers.
26347         (-Wignored-qualifiers): Document.
26348         (-Wreturn-type): Remove description of functionality now handled
26349         by -Wignored-qualifiers.
26350
26351 2008-01-12  Eric Botcazou  <ebotcazou@adacore.com>
26352
26353         PR ada/33788
26354         * fold-const.c (fold_unary) <VIEW_CONVERT_EXPR>: Fold an existing
26355         NOP_EXPR if it is between integral types with the same precision.
26356
26357 2008-01-12  Jan Hubicka  <jh@suse.cz>
26358
26359         PR other/28023
26360         * invoke.texi (max-inline-recursive-depth): Fix default value.
26361
26362 2008-01-12  Zdenek Dvorak  <ook@ucw.cz>
26363
26364         * tree-parloops.c (transform_to_exit_first_loop): Cast nit to the
26365         correct type.
26366
26367 2008-01-11  Bob Wilson  <bob.wilson@acm.org>
26368
26369         * config/xtensa/xtensa.c (override_options): Set flag_shlib.
26370
26371 2008-01-11  James E. Wilson  <wilson@specifix.com>
26372
26373         PR target/26015
26374         * config/vax/elf.h (FRAME_POINTER_CFA_OFFSET): Define.
26375
26376 2008-01-11  Anatoly Sokolov <aesok@post.ru>
26377
26378         * config/avr/avr.c (expand_prologue, expand_epilogue): Don't
26379         save/restore frame pointer register and don't use 'call-prologues'
26380         optimization in function with "OS_task" attribute.
26381
26382 2008-01-11  Eric Botcazou  <ebotcazou@adacore.com>
26383
26384         PR middle-end/31309
26385         * expr.c (copy_blkmode_from_reg): Use a mode suited to the size
26386         when copying to memory.
26387
26388 2008-01-11  Steven Bosscher  <stevenb.gcc@gmail.com>
26389
26390         PR rtl-optimization/30905
26391         * cfgcleanup.c: Include dce.h
26392         (crossjumps_occured): New global variable.
26393         (try_crossjump_bb): Exit loop after finding a fallthru edge.
26394         If something changed, set crossjumps_occured to true.
26395         (try_optimize_cfg): Clear crossjumps_occured at the beginning.
26396         Don't add/remove fake edges to exit here...
26397         (cleanup_cfg): ...but do it here, when crossjumping.
26398         Run a fast DCE when successful crossjumps occured in the latest
26399         iteration of try_optimize_cfg.
26400
26401 2008-01-11  Richard Guenther  <rguenther@suse.de>
26402
26403         * tree-ssa-sccvn.c (struct vn_binary_op_s): Move hashcode near opcode.
26404         (struct vn_unary_op_s): Likewise.
26405         (vn_reference_insert): Free old reference on hash collision.
26406
26407 2008-01-10  Raksit Ashok  <raksit@google.com>
26408
26409         PR rtl-optimization/27971
26410         * combine.c (find_split_point): Split PLUS expressions which are
26411         inside a MEM rtx, and whose first operand is complex.
26412
26413 2008-01-10  DJ Delorie  <dj@redhat.com>
26414
26415         * config/m32c/m32c.c (m32c_hard_regno_nregs_1): Renamed from...
26416         (m32c_hard_regno_nregs): ...this, which is now a wrapper.
26417         (m32c_hard_regno_ok): Call the underlying function.
26418
26419 2008-01-10  Richard Guenther  <rguenther@suse.de>
26420
26421         PR middle-end/34683
26422         * tree-cfg.c (tree_merge_blocks): Do not go through the
26423         full-blown folding and stmt updating path if we just deal
26424         with virtual operands.
26425         * tree-ssa-copy.c (may_propagate_copy): Do not short-cut
26426         test for abnormal SSA_NAMEs.
26427
26428 2008-01-10  Andreas Krebbel  <krebbel1@de.ibm.com>
26429
26430         PR middle-end/34641
26431         * reload.c (push_reload): Add assertions.  All constants from
26432         reg_equiv_constant should have been used for replacing the respective
26433         pseudo earlier.
26434         (find_reloads_address): Invoke find_reloads_address_part for
26435         constant taken from the reg_equiv_constant array.
26436
26437 2008-01-10  Steven Bosscher  <stevenb.gcc@gmail.com>
26438
26439         * tree-ssa-sccvn.h (struct vn_ssa_aux): Make the most accessed
26440         field (valnum) the first in the struct.  Replace bools with
26441         unit bit fields.
26442
26443 2008-01-10  Richard Guenther  <rguenther@suse.de>
26444
26445         PR tree-optimization/34651
26446         * tree-sra.c (sra_build_assignment): Sanitize.  Use the correct
26447         types and ordering for masking and converting.
26448
26449 2008-01-09  Sebastian Pop  <sebastian.pop@amd.com>
26450
26451         PR tree-optimization/34017
26452         * lambda-code.c (lambda_loopnest_to_gcc_loopnest): Generate code
26453         also for PHI_NODE expressions.
26454
26455 2008-01-09  Jan Hubicka  <jh@suse.cz>
26456
26457         PR tree-optimization/34708
26458         * tree-inline.c (estimate_num_insns_1): Compute cost of SWITCH_EXPR
26459         based on number of case labels.
26460         (init_inline_once): Remove switch_cost.
26461         * tree-inline.h (eni_weights_d): Remove switch_cost.
26462
26463 2008-01-09  Richard Guenther  <rguenther@suse.de>
26464         Andrew Pinski  <andrew_pinski@playstation.sony.com>
26465
26466         PR middle-end/30132
26467         * gimplify.c (gimplify_cond_expr): Do not create an addressable
26468         temporary if an rvalue is ok or an lvalue is not required.
26469
26470 2008-01-09  Richard Guenther  <rguenther@suse.de>
26471
26472         PR middle-end/34458
26473         * tree-data-ref.c (initialize_matrix_A): Use tree_low_cst,
26474         adjust return type.
26475
26476 2008-01-09  Richard Guenther  <rguenther@suse.de>
26477
26478         PR middle-end/34679
26479         * tree.c (host_integerp): Check for sizetype only if the
26480         type is an integer type.
26481
26482 2008-01-09  Steven Bosscher  <stevenb.gcc@gmail.com>
26483
26484         PR debug/26364
26485         * opts.c (decode_options): Disable inlining of functions called
26486         once if not in unit-at-a-time mode.
26487
26488 2008-01-09  Alexandre Oliva  <aoliva@redhat.com>
26489
26490         * Makefile.in (dse.o): Remove duplicate $(RECOG_H) dependency.
26491
26492 2008-01-08  Richard Guenther  <rguenther@suse.de>
26493
26494         PR middle-end/31863
26495         * tree-ssa-structalias.c (push_fields_onto_fieldstack): Bail
26496         out early if the result will be unused.
26497
26498 2008-01-08  Uros Bizjak  <ubizjak@gmail.com>
26499
26500         PR target/34709
26501         Revert:
26502
26503         2008-01-05  Uros Bizjak  <ubizjak@gmail.com>
26504         * config/i386/i386.c (ix86_builtin_reciprocal): Remove check
26505         for TARGET_RECIP.
26506
26507 2008-01-08  Jan Sjodin  <jan.sjodin@amd.com>
26508
26509         * config/i386/i386.c (k8_cost, amdfam10_cost): Branch costs
26510         for vectorization tuned.
26511
26512 2008-01-08  Richard Guenther  <rguenther@suse.de>
26513
26514         PR tree-optimization/34683
26515         * tree-ssa-operands.c (operand_build_cmp): Export.
26516         * tree-ssa-operands.h (operand_build_cmp): Declare.
26517         * tree-vn.c (vuses_compare): Remove.
26518         (sort_vuses): Use operand_build_cmp.
26519         (sort_vuses_heap): Likewise.
26520         * tree-ssa-sccvn.c (vuses_to_vec): Use VEC_reserve, not VEC_alloc
26521         to re-use old VEC if available.  Do not sort already sorted VUSEs.
26522         (vdefs_to_vec): Do not sort already sorted VDEFs.
26523
26524 2008-01-08  Jakub Jelinek  <jakub@redhat.com>
26525
26526         PR middle-end/34694
26527         * omp-low.c (copy_var_decl): Copy also DECL_SOURCE_LOCATION.
26528
26529 2008-01-08  Uros Bizjak  <ubizjak@gmail.com>
26530
26531         PR target/34702
26532         * doc/invoke.texi (i386 and x86-64 Options) [mrecip]: Document
26533         limitations of reciprocal sequences on x86 targets.
26534
26535 2008-01-08  Richard Guenther  <rguenther@suse.de>
26536
26537         PR tree-optimization/34683
26538         * tree-flow-inline.h (var_ann): Remove overzealous asserts.
26539
26540 2008-01-07  Jakub Jelinek  <jakub@redhat.com>
26541
26542         PR target/34622
26543         * config/darwin.c (darwin_mergeable_string_section): Don't use
26544         .cstring if int_size_in_bytes != TREE_STRING_LENGTH.
26545
26546 2008-01-07  Uros Bizjak  <ubizjak@gmail.com>
26547
26548         PR target/34682
26549         * config/i386/i386.md (neg<mode>2): Rename from negsf2, negdf2 and
26550         negxf2.  Macroize expander using X87MODEF mode iterator.  Change
26551         predicates of op0 and op1 to register_operand.
26552         (abs<mode>2): Rename from abssf2, absdf2 and negxf2.  Macroize
26553         expander using X87MODEF mode iterator.  Change predicates of
26554         op0 and op1 to register_operand.
26555         ("*absneg<mode>2_mixed", "*absneg<mode>2_sse"): Rename from
26556         corresponding patterns and macroize using MODEF macro.  Change
26557         predicates of op0 and op1 to register_operand and remove
26558         "m" constraint. Disparage "r" alternative with "!".
26559         ("*absneg<mode>2_i387"): Rename from corresponding patterns and
26560         macroize using X87MODEF macro.  Change predicates of op0 and op1
26561         to register_operand and remove "m" constraint.  Disparage "r"
26562         alternative with "!".
26563         (absneg splitter with memory operands): Remove.
26564         ("*neg<mode>2_1", "*abs<mode>2_1"): Rename from corresponding
26565         patterns and macroize using X87MODEF mode iterator.
26566         * config/i386/sse.md (negv4sf2, absv4sf2, neg2vdf2, absv2df2):
26567         Change predicate of op1 to register_operand.
26568         * config/i386/i386.c (ix86_expand_fp_absneg_operator): Remove support
26569         for memory operands.
26570
26571 2008-01-07  Nathan Froyd  <froydnj@codesourcery.com>
26572
26573         * config/rs6000/rs6000.h (ASM_CPU_SPEC): Add clause for mcpu=8548.
26574
26575 2008-01-07  Richard Guenther  <rguenther@suse.de>
26576
26577         * basic-block.h (struct edge_def): Pair dest_idx with goto_locus
26578         fields.
26579
26580 2008-01-07  Richard Guenther  <rguenther@suse.de>
26581
26582         PR tree-optimization/34683
26583         * tree-ssa-sccvn.c (vuses_to_vec): Pre-allocate the vector of
26584         VOPs of the needed size to save memory.  Use VEC_quick_push
26585         to save compile-time.
26586         (vdefs_to_vec): Likewise.
26587
26588 2008-01-07  Sa Liu  <saliu@de.ibm.com>
26589
26590         * config/spu/spu.md (divdf3): Genetate inline code for double
26591         division.  The implementation doesn't handle INF or NAN, therefore it
26592         only applies when -ffinite-math-only is given.
26593
26594 2008-01-06  Paolo Carlini  <pcarlini@suse.de>
26595
26596         PR libstdc++/34680
26597         * c-cppbuiltin.c (c_cpp_builtins): Define __GXX_RTTI, if appropriate.
26598         * doc/cpp.texi ([Common Predefined Macros]): Document.
26599
26600 2008-01-06  Uros Bizjak  <ubizjak@gmail.com>
26601
26602         * config/i386/i386.c (ix86_emit_swsqrtsf): Use negative constants in
26603         order to use commutative addition instead of subtraction.
26604
26605 2008-01-06  Andrew Pinski  <andrew_pinski@playstation.sony.com>
26606             Mircea Namolaru  <namolaru@il.ibm.com>
26607             Vladimir Yanovsky  <yanov@il.ibm.com>
26608             Revital Eres  <eres@il.ibm.com>
26609
26610         PR tree-optimization/34263
26611         * tree-outof-ssa.c (process_single_block_loop_latch,
26612         contains_tree_r): New functions.
26613         (analyze_edges_for_bb): Call process_single_block_loop_latch
26614         function to empty single-basic-block latch block if possible.
26615
26616 2008-01-05  Uros Bizjak  <ubizjak@gmail.com>
26617
26618         * config/i386/i386.c (ix86_builtin_reciprocal): Remove check
26619         for TARGET_RECIP.
26620         (ix86_emit_swsqrtsf): Do not filter out infinity for rsqrt expansion.
26621
26622 2008-01-05  Richard Sandiford  <rsandifo@nildram.co.uk>
26623
26624         * c-omp.c (check_omp_for_incr_expr): Handle CONVERT_EXPR.
26625
26626 2008-01-05  Richard Sandiford  <rsandifo@nildram.co.uk>
26627
26628         * config/mips/mips.c (mips_in_small_data_p): Reinstate size > 0 check.
26629
26630 2008-01-05  Jakub Jelinek  <jakub@redhat.com>
26631
26632         PR tree-optimization/34618
26633         * tree-outof-ssa.c (create_temp): Copy over DECL_GIMPLE_REG_P
26634         flag from T.
26635
26636 2008-01-05  Uros Bizjak  <ubizjak@gmail.com>
26637
26638         PR target/34673
26639         * config/i386/i386.c (ix86_emit_swsqrtsf): Swap input operands
26640         in the call to gen_rtx_NE.  Remove unneeded VECTOR_MODE_P check.
26641         Update copyright year.
26642
26643         * config/i386/i386.md (rsqrtsf2): Enable for TARGET_SSE_MATH.
26644         Update copyright year.
26645         * config/i386/sse.md (rsqrtv4sf2): Ditto. Unconditionally expand
26646         using NR fixup.
26647
26648 2008-01-05  Zhouyi Zhou  <zhouzhouyi@FreeBSD.org>
26649
26650         * tree-vrp.c (find_conditional_asserts): Remove redundant check that
26651         edge does not point to current bb before changing need_assert.
26652
26653 2008-01-04  Richard Guenther  <rguenther@suse.de>
26654
26655         PR middle-end/34029
26656         * tree-cfg.c (verify_expr): Do not look inside ADDR_EXPRs
26657         for verifying purposes if they are is_gimple_min_invariant.
26658
26659 2008-01-04  Aldy Hernandez  <aldyh@redhat.com>
26660
26661         PR tree-optimization/34448
26662         PR tree-optimization/34465
26663         * gimplify.c (gimplify_init_constructor): Add new parameter
26664         notify_temp_creation.  Use it.
26665         (gimplify_modify_expr_rhs): Take volatiles into account when
26666         optimizing constructors.
26667         Do not optimize constructors if gimplify_init_constructor will dump to
26668         memory.
26669         * gcc.dg/tree-ssa/pr32901.c: Tests const volatiles.
26670         * gcc.c-torture/compile/pr34448.c: New.
26671
26672 2008-01-04  Jakub Jelinek  <jakub@redhat.com>
26673
26674         PR gcov-profile/34609
26675         * tree-inline.c (declare_return_variable): Set TREE_ADDRESSABLE on
26676         return_slot if result is TREE_ADDRESSABLE.
26677
26678 2008-01-04  Richard Sandiford  <rsandifo@nildram.co.uk>
26679
26680         * config/mips/mips.md (sqrt_condition): Tweak comment.
26681         (recip_condition): Likewise.  Require TARGET_FLOAT64 for DFmode.
26682
26683 2008-01-03  Tom Tromey  <tromey@redhat.com>
26684
26685         PR c/34457
26686         * c-common.c (c_type_hash): Handle VLAs.
26687
26688 2008-01-03  Jan Hubicka  <jh@suse.cz>
26689
26690         PR tree-optimization/31081
26691         * tree-inline.c (remap_ssa_name): Initialize uninitialized SSA vars to
26692         0 when inlining and not inlining to first basic block.
26693         (remap_decl): When var is initialized to 0, don't set default_def.
26694         (expand_call_inline): Set entry_bb.
26695         * tree-inline.h (copy_body_data): Add entry_bb.
26696
26697 2008-01-03  Jakub Jelinek  <jakub@redhat.com>
26698
26699         PR c++/34619
26700         * cgraphunit.c (cgraph_build_static_cdtor): set_cfun back to NULL
26701         before returning.
26702
26703         PR tree-optimization/29484
26704         * tree-inline.c (inline_forbidden_p_2): New function.
26705         (inline_forbidden_p): Disallow inlining if some static var
26706         has an address of a local LABEL_DECL in its initializer.
26707         * doc/extend.texi (Labels as Values): Document &&foo behaviour
26708         vs. inlining.
26709
26710 2008-01-03  Sebastian Pop  <sebastian.pop@amd.com>
26711
26712         PR tree-optimization/34635
26713         * tree-data-ref.c (add_other_self_distances): Make sure that the
26714         evolution step is constant.
26715
26716 2008-01-03  Jakub Jelinek  <jakub@redhat.com>
26717
26718         PR middle-end/34608
26719         * omp-low.c (expand_omp_parallel): Purge dead EH edges in the child fn.
26720
26721 2008-01-02  Richard Sandiford  <rsandifo@nildram.co.uk>
26722
26723         * tree-sra.c (scalarize_init): Insert the generate_element_init
26724         statements after the generate_element_zero statements.
26725
26726 2008-01-02  Richard Guenther  <rguenther@suse.de>
26727
26728         PR middle-end/34093
26729         PR middle-end/31976
26730         * tree-ssa-operands.c (ssa_operand_alloc): Also allocate a buffer
26731         for very large number of operands instead of ICEing.
26732
26733 2008-01-02  Arthur Norman <acn1@cam.ac.uk>
26734
26735         PR target/34013
26736         * config/i386/i386.c (ix86_expand_prologue): Save red-zone
26737         while stack probing.
26738
26739 2008-01-01  Douglas Gregor  <doug.gregor@gmail.com>
26740
26741         * c-opts.c (sanitize_cpp_opts): Don't warn about "long long" when
26742         in C++0x mode.
26743
26744 2008-01-01  Volker Reichelt  <v.reichelt@netcologne.de>
26745
26746         PR libmudflap/26442
26747         * tree-mudflap.c (mx_register_decls): Guard warning by
26748         !DECL_ARTIFICIAL check.
26749
26750 2008-01-01  Jakub Jelinek  <jakub@redhat.com>
26751
26752         * config/i386/sse.md (sse5_pperm, sse5_pperm_pack_v2di_v4si,
26753         sse5_pperm_pack_v4si_v8hi, sse5_pperm_pack_v8hi_v16qi,
26754         sse5_perm<mode>): Fix constraints.