OSDN Git Service

* pa.md (vdepi_ior): Don't allow zero length deposit. Likewise for
[pf3gnuchains/gcc-fork.git] / gcc / ChangeLog
1 2007-03-13  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
2
3         * pa.md (vdepi_ior): Don't allow zero length deposit.  Likewise for
4         two unamed patterns.
5         
6 2007-03-13  Uros Bizjak  <ubizjak@gmail.com>
7
8         * config/i386/i386.opt (mcx16, msahf): New options.
9         * config/i386/i386.c (x86_cmpxchg16b, x86_sahf): Remove.
10         (ix86_tune_features) [X86_TUNE_USE_SAHF]: Enable for m_GENERIC.
11
12         * config/i386/driver-i386.c (bit_LAHF_LM): New define.
13         (host_detect_local_cpu): Detect cx16 and lahf_lm cpuid bits.
14         Output -mcx16 and -msahf options when corresponding bit is set.
15
16         * doc/invoke.texi (i386 and x86-64 Options): Document -mcx16
17         and -msahf options.
18
19 2007-03-13  Alexandre Oliva  <aoliva@redhat.com>
20
21         * configure.ac: Test for assembler tolerance to # 0 "".
22         * configure, config.in: Rebuilt.
23         * final.c (final_scan_insn): Emit it if HAVE_AS_LINE_ZERO.
24
25 2007-03-13  Geoffrey Keating  <geoffk@apple.com>
26
27         * doc/invoke.texi (Spec Files): Update for '%{,' spec.
28
29         * config/rs6000/darwin-fallback.c: Compile file only on powerpc.
30         (handle_syscall): Handle direct system calls.
31         * config/rs6000/darwin.h (HAS_MD_FALLBACK_FRAME_STATE_FOR): Delete.
32
33 2007-03-12  Brooks Moses  <brooks.moses@codesourcery.com>
34
35         * doc/invoke.texi: Fix cpp.info cross-reference.
36         * doc/passes.texi: Fix gcc.info cross-reference.
37
38 2007-03-12  Zdenek Dvorak  <dvorakz@suse.cz>
39
40         PR tree-optimization/30835
41         * lambda-code.c (can_convert_to_perfect_nest): Check whether
42         bb_for_stmt is not NULL before accessing it.
43
44 2007-03-12  Joseph Myers  <joseph@codesourcery.com>
45
46         * gcc.c (main): Handle target_sysroot_hdrs_suffix being NULL for
47         some multilibs.
48
49 2007-03-12  Brooks Moses  <brooks.moses@codesourcery.com>
50
51         PR 30635
52         * doc/install.texi: Document --enable-stage1-languages
53
54 2007-03-12  Steven Bosscher  <steven@gcc.gnu.org>
55
56         * tree-pass.h (pass_into_cfg_layout_mode,
57         pass_outof_cfg_layout_mode): Declare.
58         * cfglayout.c (into_cfg_layout_mode, outof_cfg_layout_mode,
59         pass_into_cfg_layout_mode, pass_outof_cfg_layout_mode): New.
60         * passes.c (pass_into_cfg_layout_mode): Schedule before jump2.
61         (pass_outof_cfg_layout_mode): Schedule after pass_rtl_ifcvt.
62
63 2007-03-12  Seongbae Park <seongbae.park@gmail.com>
64
65         * c-decl.c (warn_variable_length_array): New function.
66         Refactored from grokdeclarator to handle warn_vla
67         and handle unnamed array case.
68         (grokdeclarator): Refactored VLA warning case.
69         * c.opt (Wvla): New flag.
70         * doc/invoke.texi (Wvla): New warning.
71
72 2007-03-12  Richard Henderson  <rth@redhat.com>
73
74         * config/alpha/alpha.c (alpha_elf_section_type_flags): New.
75         (TARGET_SECTION_TYPE_FLAGS): New.
76
77 2007-03-12  Richard Henderson  <rth@redhat.com>
78
79         * config/darwin.c (machopic_reloc_rw_mask): New.
80         * config/darwin-protos.h (machopic_reloc_rw_mask): Declare.
81         * config/darwin.h (TARGET_ASM_RELOC_RW_MASK): New.
82
83 2007-03-12  Mark Mitchell  <mark@codesourcery.com>
84
85         * cppdefault.c (cpp_EXEC_PREFIX): New variable.
86         * cppdefault.h (cpp_PREFIX): Document.
87         (cpp_PREFIX_len): Likewise.
88         (cpp_EXEC_PREFIX): New variable.
89         * Makefile.in (PREPROCESSOR_DEFINES): Add STANDARD_EXEC_PREFIX.
90         * c-incpath.c (add_standard_paths): Correct logic for relocating
91         paths within prefix.
92
93 2007-03-12  Uros Bizjak  <ubizjak@gmail.com>
94
95         * config/i386/i386.md (fixuns_trunc<mode>hi2): Implement from
96         fixuns_truncsfhi2 and fixuns_truncdfhi2 using SSEMODEF
97         mode macro.
98         (fix_trunc<mode>di_sse): Implement from fix_truncsfdi_sse and
99         fix_truncdfdi_sse using SSEMODEF mode macro.
100         (fix_trunc<mode>si_sse): Implement from fix_truncsfsi_sse and
101         fix_truncdfsi_sse using SSEMODEF mode macro.
102         (fix_trunc?f?i_sse peephole2): Implement using SSEMODEF mode macro.
103         (fix_trunc?f?i_sse K8 peephole2): Fix register constraint.
104
105 2007-03-12  Richard Sandiford  <richard@codesourcery.com>
106
107         * config.gcc (i[4567]86-wrs-vxworks, i[4567]86-wrs-vxworksae): Add
108         elfos.h to tm_file.
109
110 2007-03-12  Olga Golovanevsky  <olga@il.ibm.com>
111   
112         * tree.h : Add multiple_of_p declaration.
113         * fold-const.c (multiple_of_p): Make multiple_of_p public. 
114         * ipa-type-escape.c (results_of_malloc): Redundant.
115         (visited_stmts): New. Visited stmt for walk_use_def_chains.
116         (cast_type): Extended with new members.
117         (check_cast): Returns cast_type.
118         (cast): New structure for data of walk_use_def_chains.
119         (is_malloc_result, is_cast_from_non_pointer_1,
120         is_cast_from_non_pointer, 
121         is_array_access_through_pointer_and_index): New functions.
122         (look_for_casts): Returns cast types.
123         (check_call): Returns void.
124         (okay_pointer_operation): Use support of pointer plus index,
125         pointer plus constant and allow all multiplications.
126         
127 2007-03-11  Richard Guenther  <rguenther@suse.de>
128
129         PR tree-optimization/31115
130         * tree-vrp.c (extract_range_from_binary_expr): Make sure
131         the shift count is positive and non-anti-range for RSHIFT_EXPR.
132         A shift count of zero is not special as with *_DIV_EXPR.
133         (vrp_int_const_binop): Handle RSHIFT_EXPR for determining overflow
134         direction.
135
136 2007-03-11  Ian Lance Taylor  <iant@google.com>
137
138         * tree-vrp.c (vrp_int_const_binop): Handle PLUS_EXPR and
139         the *_DIV_EXPR codes correctly with overflow infinities.
140
141 2007-03-11  Ira Rosen  <irar@il.ibm.com>
142
143         * tree-data-ref.c (analyze_offset): Add a return value (bool) to 
144         indicate success/failure of the analysis. Add negation to subtrahend
145         in case of subtraction. Fail if both operands contain constants.
146         (create_data_ref): Fail if analyze_offset fails.
147
148 2007-03-11  Uros Bizjak  <ubizjak@gmail.com>
149
150         * config/i386/i386.md (frndintxf2): Rename to ...
151         (rintxf2): ... this. Remove expander having same name.
152         (rintsf2, rintdf2): Implement using SSEMODEF macro.
153         (roundsf2, rounddf2): Ditto.
154         (lrint<mode>di2, lrint<mode>si2): Implement using SSEMODEI24 macro.
155         (lround<mode>di2, lround<mode>si2): Ditto.
156
157 2007-03-11  Steven Bosscher  <steven@gcc.gnu.org>
158
159         * lower-subreg.c: Include except.h.
160         (decompose_multiword_subregs): Verify that the only control flow
161         insns we can split are loads to multi-words pseudos.
162         Handle breaking such blocks after splitting, instead of calling
163         find_many_sub_basic_blocks.
164
165         * loop-unroll.c (split_edge_and_insert): Don't set BB_SUPERBLOCK
166         on the new basic block.  Add a lengthy comment explaining why we
167         thought this was necessary.
168         * cfglayout.c (cfg_layout_finalize): Don't break superblocks.
169
170 2007-03-10  Mark Mitchell  <mark@codesourcery.com>
171
172         PR c++/30924
173         * tree.c (walk_type_fields): Recurse into the element type of
174         ARRAY_TYPEs if there is a pointer set.
175
176 2007-03-10  Dirk Mueller  <dmueller@suse.de>
177
178         * c-common.c (warn_logical_operator): Fix condition.
179
180 2007-03-10  Tobias Schl├╝ter  <tobi@gcc.gnu.org>
181
182         * config/i386/darwin.h (DARWIN_MINVERSION_SPEC): Add missing
183         quotation mark.
184         * config/darwin.c (machopic_select_section): Remove superfluous
185         argument in call to categorize_decl_for_section.  Remove unused
186         variable shlib.
187
188 2007-03-10  Joseph Myers  <joseph@codesourcery.com>
189
190         * configure.ac (glibc_header_dir): Set using with_build_sysroot if
191         defined.
192         * configure: Regenerate.
193
194 2007-03-10  Uros Bizjak  <ubizjak@gmail.com>
195
196         PR target/31101
197         * config/i386/i386.md (UNSPEC_C2_FLAG): New constant.
198         (fpremxf4_i387, fprem1xf4_i387): Use UNSPEC_C2_FLAG.
199         (fmodxf3, fmod<mode>3, remainderxf3, remainder<mode>3):
200         Add LABEL_NUSES to emitted label.
201         * config/i386/i386.c (ix86_emit_fp_unordered_jump): Add
202         branch probability value to emitted jump insn.
203         * reg-stack.c (subst_stack_regs_pat)[UNSPEC]: Handle UNSPEC_C2_FLAG.
204         Do not check life information and do not re-arrange input operands
205         for UNSPEC_FSCALE_EXP, UNSPEC_FPREM_U and UNSPEC_FPREM1_U.
206
207 2007-03-10  Kaz Kojima  <kkojima@gcc.gnu.org>
208
209         * config/sh/sh.c (sh_insn_length_adjustment): Adjust for
210         the change of decode_asm_operands.
211
212 2007-03-10  Kaz Kojima  <kkojima@gcc.gnu.org>
213
214         * mode-switching.c (create_pre_exit): Skip blockage insn.
215
216 2007-03-09  Diego Novillo  <dnovillo@redhat.com>
217
218         * tree-pass.h (TODO_update_smt_usage): Remove.
219         Update all users.
220         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Remove
221         argument SOME.
222         Update all users.
223
224 2007-03-09  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
225
226         * pa.c (attr_length_call): Revise condition for long pc-relative branch.
227         (output_call): Use "LONG_PIC_SDIFF" instruction sequence for long local
228         calls on the SOM target.  Don't use "LONG_PIC_PCREL" call sequence on
229         SOM target.
230
231 2007-03-09  Geoffrey Keating  <geoffk@apple.com>
232
233         * gcc.c: Document %{, in big comment at top.
234         (input_suffix_matches): Remove special handling for .s and
235         .S.
236         (input_spec_matches): New.
237         (handle_braces): Handle %{,.
238         (validate_switches): ',' indicates a value which is not a switch.
239         * config/alpha/osf.h (ASM_FINAL_SPEC): Use %{, rather than %{.
240         to detect assembler input.
241         * config/i386/sol2.h (CPP_SPEC): Likewise.
242         * config/rs6000/sysv4.h (ASM_SPEC): Likewise.
243         * config/rs6000/vxworks.h (ASM_SPEC): Likewise.
244         * config/rs6000/lynx.h (ASM_SPEC): Likewise.
245         * config/rs6000/linux64.h (ASM_SPEC_COMMON): Likewise.
246         * config/i386/darwin.h (DARWIN_MINVERSION_SPEC): Objective-C plus
247         -m64 causes deployment target to default to 10.5.
248         * config/rs6000/darwin.h (DARWIN_MINVERSION_SPEC): Likewise.
249
250 2007-03-09  Richard Henderson  <rth@redhat.com>
251
252         PR target/26090
253         * target.h (targetm.asm.out.reloc_rw_mask): New.
254         * target-def.h (TARGET_ASM_RELOC_RW_MASK): New.
255         (TARGET_ASM_OUT): Use it.
256         * targhooks.c, targhooks.h (default_reloc_rw_mask): New.
257         * varasm.c (categorize_decl_for_section): Remove shlib argument;
258         use the new reloc_rw_mask target hook instead.
259         (default_section_type_flags_1): Merge into...
260         (default_section_type_flags): ... here.
261         (decl_readonly_section_1): Merge into...
262         (decl_readonly_section): ... here.
263         (default_elf_select_section_1): Merge into...
264         (default_elf_select_section): ... here.
265         (default_unique_section_1): Merge into...
266         (default_unique_section): ... here.
267         (compute_reloc_for_rtx_1, compute_reloc_for_rtx): New.
268         (default_select_rtx_section): Use it.
269         (default_elf_select_rtx_section): Likewise.
270         * output.h: Update to match.
271         * doc/tm.texi (TARGET_ASM_RELOC_RW_MASK): New.
272         * config/alpha/alpha.c (alpha_elf_reloc_rw_mask): New.
273         (TARGET_ASM_RELOC_RW_MASK): New.
274         * config/i386/i386.c (x86_64_elf_select_section): Adjust call
275         to categorize_decl_for_section.
276         (x86_64_elf_unique_section): Likewise.
277         * config/ia64/hpux.h (TARGET_ASM_SELECT_SECTION,
278         TARGET_ASM_UNIQUE_SECTION, TARGET_ASM_SELECT_RTX_SECTION): Remove.
279         (TARGET_ASM_RELOC_RW_MASK): New.
280         * config/ia64/ia64.c (ia64_rwreloc_select_section,
281         ia64_rwreloc_unique_section, ia64_rwreloc_select_rtx_section): Remove.
282         (ia64_hpux_reloc_rw_mask, ia64_reloc_rw_mask): New.
283         (TARGET_RWRELOC): Remove.
284         (ia64_section_type_flags): Adjust call to default_section_type_flags.
285         * config/ia64/sysv4.h (TARGET_ASM_RELOC_RW_MASK): New.
286         * config/rs6000/rs6000.c (rs6000_elf_section_type_flags): Remove.
287         (rs6000_elf_select_section, rs6000_elf_unique_section): Remove.
288         (rs6000_elf_reloc_rw_mask, rs6000_xcoff_reloc_rw_mask): New.
289         (rs6000_xcoff_select_section): Use decl_readonly_section.
290         (rs6000_xcoff_section_type_flags): Use default_section_type_flags.
291         * config/rs6000/sysv4.h (TARGET_ASM_RELOC_RW_MASK): New.
292         (TARGET_ASM_SELECT_SECTION, TARGET_ASM_UNIQUE_SECTION): Remove.
293         (TARGET_SECTION_TYPE_FLAGS): Remove.
294         * config/rs6000/xcoff.h (TARGET_ASM_RELOC_RW_MASK): New.
295
296 2007-03-09  Roger Sayle  <roger@eyesopen.com>
297
298         * fold-const.c (fold_comparison): Remove compile-time evaluation of
299         complex constant equality/inequality comparisons for here.
300         (fold_binary) <EQ_EXPR>: Simplify complex comparisons that are
301         known at compile-time or can be simplified to a scalar comparison.
302         (fold_relational_const): Move compile-time evaluation of complex
303         constant equality/inequality comparisons to here.
304
305 2007-03-09  Alexandre Oliva  <aoliva@redhat.com>
306
307         PR rtl-optimization/30643
308         * cse.c (cse_insn): Recompute dest_hash after insert_regs for
309         dest_addr_elt.
310         (fold_rtx): Recurse, like before 2006-11-03.
311
312 2007-03-09  DJ Delorie  <dj@redhat.com>
313
314         * config/m32c/t-m32c (m32c-pragma.o): Add TM_H dependency to
315         m32c-pragma.o.
316
317 2007-03-09  Aldy Hernandez  <aldyh@redhat.com>
318
319         PR tree-optimization/30375
320         * tree-ssa-dse.c (dse_possible_dead_store_p): Do not eliminate if
321         LHS of statements is not the same.
322         * testsuite/gcc.dg/tree-ssa/ssa-dse-10.c: New.
323
324 2007-03-09  Chao-ying Fu  <fu@mips.com>
325
326         * doc/extend.texi (MIPS DSP Built-in Functions): Document the DSP
327         REV 2.
328         * doc/invoke.texi (-mdspr2): Document new option.
329         * config/mips/mips.md (UNSPEC_ABSQ_S_QB .. UNSPEC_DPSQX_SA_W_PH):
330         New unspec for DSP REV 2.
331         (<u>mulsidi3_32bit_internal): Check if !TARGET_DSPR2, because
332         these instructions are extended in DSP REV 2.
333         (mips-dspr2.md): Include.
334         * config/mips/mips.opt (mdspr2): New option.
335         * config/mips/mips.c (mips_function_type): Add MIPS_V4QI_FTYPE_V4QI,
336         MIPS_SI_FTYPE_SI_SI_SI, MIPS_DI_FTYPE_DI_USI_USI, MIPS_DI_FTYPE_SI_SI,
337         MIPS_DI_FTYPE_USI_USI, MIPS_V2HI_FTYPE_SI_SI_SI.
338         (override_options): Check TARGET_DSPR2 to enable MASK_DSP.
339         (CODE_FOR_mips_mul_ph): Define it to CODE_FOR_mulv2hi3.
340         (dsp_bdesc): Add DSP REV 2 builtins.  Remove 32-bit only DSP builtins.
341         (dsp_32only_bdesc): New description table for 32-bit only DSP REV 1
342         and 2 builtins.
343         (bdesc_map): Add one field of unsupported_target_flags.
344         (bdesc_arrays):  Update entries to have extra fields.  Add
345         dsp_32only_bdesc.
346         (mips_init_builtins): Initialize new function types.
347         Check unsupported_target_fileds to filter out builtins.
348         * config/mips/mips.h (TARGET_CPU_CPP_BUILTINS): Define __mips_dspr2 if
349         TARGET_DSPR2.
350         (ASM_SPEC): Pass mdspr2 to the assembler.
351         * config/mips/mips-dspr2.md: New file.
352
353 2007-03-09  Sa Liu  <saliu@de.ibm.com>
354
355         * config/rs6000/altivec.md: Fix vcond patterns using if_then_else.
356
357 2007-03-09  Ian Lance Taylor  <iant@google.com>
358
359         * opts.c (common_handle_option): Treat -Wstrict-overflow (with no
360         argument) like -Wstrict-overflow=2.
361         * doc/invoke.texi (Warning Options): Update documentation.
362
363 2007-03-09  Dirk Mueller  <dmueller@suse.de>
364
365         PR c++/17946
366         * doc/invoke.texi (-Wlogical-op): Document.
367         * common.opt (-Wlogical-op): New.
368         * c-common.h (warn_logical_operator): Declare.
369         * c-common.c (warn_logical_operator): Define.
370         * c-typeck.c (parser_build_binary_op): Call
371         warn_logical_operator.
372
373 2007-03-09  Alexandre Oliva  <aoliva@redhat.com>
374
375         * rtl.h (gen_rtx_ASM_INPUT): Use "" instead of NULL file name.
376         * final.c (final_scan_insn): Test for non-"" file name.
377
378 2007-03-09  Sebastian Pop  <sebastian.pop@inria.fr>
379
380         * doc/loop.texi: Document the Omega linear constraints solver.
381         * doc/invoke.texi: Document -fcheck-data-deps, omega-max-vars,
382         omega-max-geqs, omega-max-eqs, omega-max-wild-cards, 
383         omega-hash-table-size, omega-max-keys, and 
384         omega-eliminate-redundant-constraints.
385         * tree-pass.h (pass_check_data_deps): Declared.
386         * omega.c: New.
387         * omega.h: New.
388         * timevar.def (TV_CHECK_DATA_DEPS): Declared.
389         * tree-ssa-loop.c (check_data_deps, gate_check_data_deps, 
390         pass_check_data_deps): New.
391         * tree-data-ref.c (init_data_ref): Remove declaration.
392         (dump_data_dependence_relation): Dump DDR_INNER_LOOP.
393         (analyze_array): Renamed init_array_ref, move up initializations.
394         (init_data_ref): Renamed init_pointer_ref.  Moved before its call.
395         Removed arguments that are set to NULL.
396         (analyze_indirect_ref): Correct indentation, correct call to 
397         init_pointer_ref.
398         (object_analysis): Call init_array_ref instead of analyze_array.
399         (initialize_data_dependence_relation): Initialize DDR_INNER_LOOP.
400         (access_functions_are_affine_or_constant_p): Use DR_ACCESS_FNS instead
401         of DR_ACCESS_FNS_ADDR.
402         (init_omega_eq_with_af, omega_extract_distance_vectors, 
403         omega_setup_subscript, init_omega_for_ddr_1, init_omega_for_ddr,
404         ddr_consistent_p): New.
405         (compute_affine_dependence): Check consistency of ddrs when 
406         flag_check_data_deps is passed.
407         (analyze_all_data_dependences): Uncomment.
408         (tree_check_data_deps): New.
409         * tree-data-ref.h: Include omega.h.
410         (DR_ACCESS_FNS_ADDR): Removed.
411         (data_dependence_relation): Add inner_loop.
412         (DDR_INNER_LOOP): New.
413         * common.opt (fcheck-data-deps): New.
414         * tree-flow.h (tree_check_data_deps): Declare.
415         * Makefile.in (TREE_DATA_REF_H): Depend on omega.h.
416         (OBJS-common): Depend on omega.o.
417         (omega.o): Define.
418         * passes.c (pass_check_data_deps): Scheduled.
419         * params.def (PARAM_OMEGA_MAX_VARS, PARAM_OMEGA_MAX_GEQS, 
420         PARAM_OMEGA_MAX_EQS, PARAM_OMEGA_MAX_WILD_CARDS,
421         PARAM_OMEGA_HASH_TABLE_SIZE, PARAM_OMEGA_MAX_KEYS,
422         PARAM_VECT_MAX_VERSION_CHECKS,
423         PARAM_OMEGA_ELIMINATE_REDUNDANT_CONSTRAINTS): New.
424
425 2007-03-09  Richard Guenther  <rguenther@suse.de>
426
427         PR tree-optimization/30904
428         PR middle-end/31058
429         * tree-vrp.c (extract_range_from_binary_expr): Handle RSHIFT_EXPR
430         the same way as *_DIV_EXPR.
431
432 2007-03-09  Alexandre Oliva  <aoliva@redhat.com>
433
434         * recog.c (decode_asm_operands): No mixed declarations and code.
435
436 2007-03-09  Alexandre Oliva  <aoliva@redhat.com>
437
438         * rtl.def (ASM_INPUT): Add location.
439         * rtl.h (ASM_INPUT_SOURCE_LOCATION): New.
440         (ASM_INPUT_SOURCE_FILE, ASM_INPUT_SOURCE_LINE): New.
441         (decode_asm_operands): Add loc operand.
442         (gen_rtx_ASM_INPUT, gen_rtx_ASM_INPUT_loc): Define.
443         * stmt.c (expand_asm): Rename to...
444         (expand_asm_loc): ... this.  Add locus argument.  Pass it on to
445         gen_rtx_ASM_INPUT_loc.
446         (expand_asm_expr): Adjust.
447         * recog.c (decode_asm_operands): Add loc operand.
448         (check_asm_operands, extract_insn): Adjust.
449         * reload1.c (maybe_fix_stack_asms): Likewise.
450         * final.c (asm_insn_count): Likewise.
451         (final_scan_insn): Output # line before and after asm.
452
453 2007-03-09  Daniel Berlin  <dberlin@dberlin.org>
454
455         * tree-ssa-structalias.c (variable_info): Remove
456         finished_solution.
457         (new_var_info): Ditto.
458         (shared_bitmap_info_t): New structure.
459         (shared_bitmap_table): New variable.
460         (shared_bitmap_hash): New function.
461         (shared_bitmap_eq): Ditto
462         (shared_bitmap_lookup): Ditto.
463         (shared_bitmap_add): Ditto.
464         (merge_smts_into): Change to take bitmap directly.
465         (find_what_p_points_to): Rewrite to use shared bitmap hashtable.
466         (init_alias_vars): Init shared bitmap hashtable.
467         (delete_points_to_sets): Delete shared bitmap hashtable.
468         * tree-ssa-operands.c (add_virtual_operand): Partially revert the
469         is_aliased removal as a change that was still necessary was
470         deleted.
471
472 2007-03-09  Uros Bizjak  <ubizjak@gmail.com>
473
474         * config/i386/i386.h (override_options): Conditionally disable
475         x86_sahf for 64bit targets only.
476
477 2007-03-08  Andrew Pinski  <andrew_pinski@playstation.sony.com>
478
479         PR C/31072
480         * c-decl.c (merge_decls): Don't call make_var_volatile.
481         * varasm.c (make_var_volatile): Remove.
482         * output.h (make_var_volatile): Remove.
483
484 2007-03-08  Zdenek Dvorak  <dvorakz@suse.cz>
485
486         PR tree-optimization/31085
487         * tree-ssa-address.c (create_mem_ref): Fix test of type of base.
488
489 2007-03-08  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
490
491         * builtins.def (lceil, lceilf, lceill, lfloor, lfloorf, lfloorl,
492         llceil, llceilf, llceill, llfloor, llfloorf, llfloorl): Mark with
493         ATTR_CONST_NOTHROW_LIST.
494         
495         * fold-const.c (tree_expr_nonnegative_warnv_p): Handle
496         FIX_TRUNC_EXPR.
497
498 2007-03-08  Diego Novillo  <dnovillo@redhat.com>
499
500         * doc/tree-ssa.texi: Remove documentation for V_MUST_DEF.
501
502 2007-03-08  Geoffrey Keating  <geoffk@apple.com>
503
504         PR 31013
505         * gccspec.c (lang_specific_driver): Do nothing when NEXT_OBJC_RUNTIME
506         is declared.
507         * config/darwin.h (REAL_LIBGCC_SPEC): When -fgnu-runtime is
508         passed, use shared libgcc.
509
510 2007-03-08  Roger Sayle  <roger@eyesopen.com>
511
512         * tree-eh.c (do_return_redirection): Call build_gimple_modify_stmt
513         instead of calling build2 with a GIMPLE_MODIFY_STMT.
514         (honor_protect_cleanup_actions, lower_try_finally_switch):
515         Likewise.
516         * tree-if-conv.c (replace_phi_with_cond_gimple_modify_stmt,
517         ifc_temp_var): Likewise.
518         * tree-inline.c (setup_one_parameter): Likewise.
519         * tree-mudflap.c (mf_decl_cache_locals,
520         mf_build_check_statement_for): Likewise.
521         * tree-nested.c (init_tmp_var, save_tmp_var,
522         finalize_nesting_tree_1): Likewise.
523         * tree-outof-ssa.c (insert_copy_on_edge,
524         insert_backedge_copies): Likewise.
525         * tree-profile.c (tree_gen_edge_profiler,
526         tree_gen_ic_profiler): Likewise.
527         * tree-scalar-evolution.c (scev_const_prop): Likewise.
528         * tree-sra.c (sra_build_assignment): Likewise.
529         * tree-ssa-loop-im.c (determine_invariantness_stmt): Likewise.
530         * tree-ssa-math-opts.c (insert_reciprocals,
531         execute_cse_sincos_1): Likewise.
532         * tree-tailcall.c (adjust_accumulator_values,
533         adjust_return_value): Likewise.
534         * tree-vect-patterns.c (vect_pattern_recog_1): Likewise.
535         * tree-vect-transform.c (vect_create_data_ref_ptr,
536         bump_vector_ptr, vect_init_vector, get_initial_def_for_induction,
537         vect_create_epilog_for_reduction, vectorizable_reduction,
538         vectorizable_call, vectorizable_conversion,
539         vectorizable_assignment, vectorizable_operation,
540         vectorizable_type_demotion, vect_gen_widened_results_half,
541         vect_permute_store_chain, vectorizable_store,
542         vect_setup_realignment, vect_permute_load_chain,
543         vectorizable_load, vectorizable_condition,
544         vect_create_cond_for_align_checks): Likewise.
545         * tree-vrp.c (build_assert_expr_for): Likewise.
546
547 2007-03-08  Ian Lance Taylor  <iant@google.com>
548
549         * tree-vrp.c: Include "intl.h".
550         (usable_range_p): New static function.
551         (compare_values_warnv): Don't test TYPE_OVERFLOW_UNDEFINED for
552         overflowed values, juts set *strict_overflow_p.
553         (compare_values): Only return -2 if one of the operands is not a
554         constant.
555         (compare_ranges): Call usable_range_p.
556         (compare_range_with_value): Likewise.
557         (vrp_evaluate_conditional_warnv): Rename from
558         vrp_evaluate_conditional.  Make static.  Change all callers.
559         (vrp_evaluate_conditional): New function.
560         (simplify_div_or_mod_using_ranges): Issue warning about reliance
561         on signed overflow.
562         (simplify_abs_using_ranges): Likewise.
563         (simplify_stmt_for_jump_threading): Add within_stmt parameter.
564         * tree-ssa-dom.c (simplify_stmt_for_jump_threading): Add
565         within_stmt parameter.
566         * tree-ssa-propagate.c (fold_predicate_in): Update call to
567         vrp_evaluate_conditional.
568         * tree-ssa-threadedge.c
569         (record_temporary_equivalences_from_stmts_at_dest): Change
570         simplify parameter to take a second tree parameter.
571         (simplify_control_stmt_condition): Likewise.
572         (thread_across_edge): Likewise.
573         * tree-flow.h (vrp_evaluate_conditional): Update declaration.
574         (thread_across_edge): Likewise.
575         * gcc/Makefile.in (tree-vrp.o): Depend upon intl.h.
576
577 2007-03-08  Uros Bizjak  <ubizjak@gmail.com>
578
579         * config/i386/i386.h (TARGET_SAHF): New define.
580         * config/i386/i386.c (ix86_tune_features) [X86_TUNE_USE_SAHF]:
581         Also enable for m_K8, m_AMDFAM10 and m_CORE2.
582         (x86_sahf): New global variable.
583         (override_options): Add PTA_NO_SAHF to pta_flags enum.  Recode
584         pta_flags masks using shifts.  Add PTA_NO_SAHF to x86_64 and
585         nocona processor flags.  Set x86_sahf when PTA_NO_SAHF is not set
586         in processor flags.  Do not unconditionally disable TARGET_USE_SAHF
587         for 64-bit.
588         (ix86_fp_comparison_sahf_cost): Return high value for !TARGET_SAHF.
589         (ix86_expand_fp_compare): Check for TARGET_CMOVE or TARGET_SAHF
590         when expanding fcomi/sahf based tests.
591         (ix86_emit_fp_unordered_jump): Check for TARGET_SAHF when
592         expanding sahf based alternative. Emit sahf based sequence when
593         optimizing for code size.
594         * config/i386/i386.md (x86_sahf_1): Do not disable for
595         TARGET_64BIT, enable for TARGET_SAHF. 
596
597 2007-03-08  Martin Michlmayr  <tbm@cyrius.com>
598
599         * tree-ssa-coalesce.c (fail_abnormal_edge_coalesce): Remove
600         spurious whitespace from error message.
601
602 2007-03-08  Volker Reichelt  <reichelt@netcologne.de>
603
604         PR c++/30852
605         * c-common.c (fold_offsetof_1): Handle COMPOUND_EXPR.
606
607 2007-03-08  Alexandre Oliva  <aoliva@redhat.com>
608
609         * c-decl.c (grokdeclarator): Disable warnings for anonymous
610         bitfields.
611         * tree-sra.c (instantiate_element): Propagate disabled warnings
612         from the element itself to the created variable.
613
614 2007-03-07  Richard Henderson  <rth@redhat.com>
615
616         PR target/30848
617         * reg-stack.c (emit_swap_insn): If a malformed asm was seen,
618         silently fix up the stack in the case of a missing register.
619
620 2007-03-07  Paul Brook  <paul@codesourcery.com>
621
622         * config/arm/libunwind.S: Add .arch/.object_arch for armv4 builds.
623
624 2007-03-07  Joseph Myers  <joseph@codesourcery.com>
625
626         * config/arm/unwind-arm.c (struct wmmxd_regs, struct wmmxc_regs):
627         New.
628         (phase1_vrs): Use them.
629         (DEMAND_SAVE_WMMXD, DEMAND_SAVE_WMMXC): New.
630         (__gnu_Unwind_Save_WMMXD, __gnu_Unwind_Restore_WMMXD,
631         __gnu_Unwind_Save_WMMXC, __gnu_Unwind_Restore_WMMXC): Declare.
632         (restore_non_core_regs): Call __gnu_Unwind_Restore_WMMXD and
633         __gnu_Unwind_Restore_WMMXC if required.
634         (_Unwind_VRS_Pop): Implement iWMMXt support.
635         * config/arm/libunwind.S (gnu_Unwind_Restore_WMMXD,
636         gnu_Unwind_Save_WMMXD, gnu_Unwind_Restore_WMMXC,
637         gnu_Unwind_Save_WMMXC): Define.
638
639 2007-03-07  Richard Sandiford  <richard@codesourcery.com>
640
641         * config/vxworks.h (vxworks_override_options): Declare.
642         (VXWORKS_OVERRIDE_OPTIONS): Use it.
643         * config/vxworks.c: Include target.h and toplev.h.
644         (vxworks_override_options): New function.
645         * config/t-vxworks (vxworks.o): Depend on $(TARGET_H) and toplev.h.
646
647 2007-03-07  Andreas Krebbel  <krebbel1@de.ibm.com>
648
649         * config/s390/s390.c (override_options): Don't emit an error when
650         -mstack-size is used without providing -mstack-guard.
651         (s390_emit_prologue): Choose stack_guard value automatically if not
652         provided via command line.
653         * doc/invoke.texi: Adjust description of -mstack-guard and -mstack-size.
654
655 2007-03-07  Richard Sandiford  <richard@codesourcery.com>
656
657         * config/i386/i386.c (output_set_got): Add a GOT initialization
658         sequence for VxWorks PIC.
659         (legitimate_pic_address_disp_p): Allow UNSPEC_GOT wrappers
660         around labels as well as symbols.  Use gotoff_operand instead
661         of local_symbolic_operand.
662         (legitimize_pic_address): Use gotoff_operand instead of
663         local_symbolic_operand.  Use @GOT accesses for labels as
664         well as symbols.
665         (ix86_output_addr_diff_elt): Use PC-relative rather than
666         GP-relative offsets for VxWorks PIC.
667         (ix86_expand_move): Pass NULL_RTX to legitimize_pic_address unless
668         no_new_pseudos.  Check whether the returned register is op0.
669         * config/i386/i386.md (tablejump): Use PC-relative rather than
670         GP-relative offsets for VxWorks PIC.
671         * config/i386/predicates.md (gotoff_operand): New predicate.
672
673 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
674
675         * config/vxworks.h (VXWORKS_GOTT_BASE, VXWORKS_GOTT_INDEX): Undefine
676         before defining.
677         * config/vxworks-dummy.h: New file.
678         * config/i386/i386.h: Include it.
679
680 2007-03-07  Alexandre Oliva  <aoliva@redhat.com>
681
682         * dwarf2out.c (is_inlined_entry_point): New
683         (add_high_low_attributes): Emit DW_AT_entry_pc along with
684         DW_AT_ranges if the first subblock is the entry point.
685
686 2007-03-06  David Daney  <ddaney@avtrex.com>
687
688         * doc/install.texi (mips-*-*): Change recommended binutils
689         version.
690
691 2007-03-06  Anatoly Sokolov <aesok@post.ru>
692
693         * config/avr/avr.c (avr_mcu_types): Add support for ATmega325P,
694         ATmega3250P, ATmega329P, ATmega3290P, AT90USB82 and AT90USB162 
695         devices.
696         * config/avr/avr.h (LINK_SPEC, CRT_BINUTILS_SPECS): (Ditto.).
697         * config/avr/t-avr (MULTILIB_MATCHES): (Ditto.).
698
699 2007-03-06  Jan Hubicka  <jh@suse.cz>
700
701         * errors.h (warning, error, fatal, internal_error): Mark as cold.
702         * predict.c (maybe_hot_bb): Cold functions are never hot; hot functions
703         are hot.
704         (probably_cold_bb_p): Cold functions are cold.
705         (probably_never_executed_bb_p): Cold functions are cold.
706         (tree_bb_level_predictions): Predict calls to cold functions as not
707         taken.
708         (compute_function_frequency): Check hot/cold attributes.
709         * function.h (function_frequency): Update comments.
710         * predict.def (PRED_COLD_FUNCTION): Predict cold function.
711         * c-common.c (handle_hot_attribute, handle_cold_attribute): New.
712         (c_common_att): Add cold and hot.
713
714         * doc/extend.texi (hot,cold attributes): Document.
715
716 2007-03-06  Andrew Haley  <aph@redhat.com>
717
718         * function.c (expand_function_end): Move blockage to just after we
719         emit the label for the naked return from the function.
720
721 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
722
723         * config/i386/att.h (ASM_OUTPUT_ASCII, ASM_OUTPUT_SKIP): Undefine
724         before redefining.
725
726 2007-03-06  Jan Hubicka  <jh@suse.cz>
727
728         * reg-stack.c (reg_to_stack): Large models don't allow NAN to be
729         loaded for constant large models.  Non-large 64bit PIC can do.
730         * i386.h (CASE_VECTOR_MODE): Large PIC cases are 64bit.
731         * cmodel.h: Add LARGE PIC.
732         * i386.md (UNSPEC_PLTOFF): New.
733         (UNSPEC_SET_RIP, UNSPEC_SET_GOT_OFFSET): New; renumber other unspecs as
734         needed.
735         (*call_1_rex64): Disable for large models.
736         (*call_1_rex64_large): New.
737         (*call_value_1_rex64): Disable for large models.
738         (*call_value_1_rex64_large): New.
739         (set_rip_rex4): New.
740         (set_got_offset_rex64): New.
741         * predicates.md (constant_call_address_operand): For large model
742         constant calls are not possible.
743         * i386-protos.h (construct_plt_address): Declare.
744         * i386.c (override_options): Accept large models.
745         (ix86_expand_prologue): Expand large PIC GOT pointer load.
746         (legitimate_constant_p): Add new UNSPECs.
747         (legitimate_pic_operand_p): Likewise.
748         (legitimate_pic_address_disp_p): Disallow local symbols for large PICs.
749         (legitimize_pic_address): Do easy RIP relative way for TLS only for
750         non-large model.
751         (output_pic_addr_const): Add PLTOFF.
752         (ix86_output_addr_diff_elt): Output 64bit tables when needed.
753         (ix86_expand_move): Legitimize pic address when in PIC mode.
754         (construct_plt_address): New function.
755         (ix86_expand_call): Offload the address to register and use GOT pointer
756         for large model.
757         * invoke.texi (mcmodel=large): Update documentation.
758
759 2007-03-06  Richard Henderson  <rth@redhat.com>
760
761         * config/i386/i386.c (x86_use_leave, x86_push_memory,
762         x86_zero_extend_with_and, x86_movx, x86_double_with_add,
763         x86_use_bit_test, x86_unroll_strlen, x86_deep_branch,
764         x86_branch_hints, x86_use_sahf, x86_partial_reg_stall,
765         x86_partial_flag_reg_stall, x86_use_himode_fiop, x86_use_simode_fiop,
766         x86_use_mov0, x86_use_cltd, x86_read_modify_write, x86_read_modify,
767         x86_split_long_moves, x86_promote_QImode, x86_fast_prefix, 
768         x86_single_stringop, x86_qimode_math, x86_promote_qi_regs,
769         x86_himode_math, x86_promote_hi_regs, x86_sub_esp_4, x86_sub_esp_8,
770         x86_add_esp_4, x86_add_esp_8, x86_integer_DFmode_moves, 
771         x86_partial_reg_dependency, x86_memory_mismatch_stall, 
772         x86_prologue_using_move, x86_epilogue_using_move, x86_shift1,
773         x86_sse_partial_reg_dependency, x86_sse_split_regs, 
774         x86_sse_unaligned_move_optimal, x86_sse_typeless_stores,
775         x86_sse_load0_by_pxor, x86_use_ffreep, x86_use_incdec,
776         x86_inter_unit_moves, x86_ext_80387_constants, x86_four_jump_limit,
777         x86_schedule, x86_use_bt, x86_pad_returns,
778         x86_use_xchgb): Merge into ...
779         (ix86_tune_features): ... here.  New array.
780         (x86_cmove, x86_cmpxchg, x86_cmpxchg8b, x86_xadd,
781         x86_bswap): Merge into ...
782         (ix86_arch_features): ... here.  New array.
783         (x86_3dnow_a): Remove.
784         (x86_accumulate_outgoing_args): Make static.
785         (x86_arch_always_fancy_math_387): Make static.
786         (ix86_tune_mask, ix86_arch_mask): Move ...
787         (override_options): ... to local variables here.  Apply the
788         appropriate mask to each element of ix86_arch_features and
789         ix86_tune_features.  Adjust TARGET_CMOVE and TARGET_USE_SAHF
790         as were done in the old macros.
791         (standard_80387_constant_p): Use TARGET_EXT_80387_CONSTANTS.
792         * config/i386/i386.h (x86_use_leave, x86_push_memory,
793         x86_zero_extend_with_and, x86_use_bit_test, x86_cmove, x86_deep_branch,
794         x86_branch_hints, x86_unroll_strlen, x86_double_with_add,
795         x86_partial_reg_stall, x86_movx, x86_use_himode_fiop,
796         x86_use_simode_fiop, x86_use_mov0, x86_use_cltd, x86_use_xchgb,
797         x86_read_modify_write, x86_read_modify, x86_split_long_moves,
798         x86_promote_QImode, x86_single_stringop, x86_fast_prefix,
799         x86_himode_math, x86_qimode_math, x86_promote_qi_regs,
800         x86_promote_hi_regs, x86_integer_DFmode_moves, x86_add_esp_4,
801         x86_add_esp_8, x86_sub_esp_4, x86_sub_esp_8,
802         x86_partial_reg_dependency, x86_memory_mismatch_stall,
803         x86_accumulate_outgoing_args, x86_prologue_using_move,
804         x86_epilogue_using_move, x86_decompose_lea,
805         x86_arch_always_fancy_math_387, x86_shift1,
806         x86_sse_partial_reg_dependency, x86_sse_split_regs,
807         x86_sse_unaligned_move_optimal, x86_sse_typeless_stores,        
808         x86_sse_load0_by_pxor, x86_use_ffreep, x86_inter_unit_moves,
809         x86_schedule, x86_use_bt, x86_cmpxchg, x86_cmpxchg8b, x86_xadd,
810         x86_use_incdec, x86_pad_returns, x86_bswap,
811         x86_partial_flag_reg_stall): Remove.
812         (enum ix86_tune_indices): New.
813         (ix86_tune_features): New.
814         (TARGET_USE_LEAVE, TARGET_PUSH_MEMORY, TARGET_ZERO_EXTEND_WITH_AND,
815         TARGET_USE_BIT_TEST, TARGET_UNROLL_STRLEN,
816         TARGET_DEEP_BRANCH_PREDICTION, TARGET_BRANCH_PREDICTION_HINTS,
817         TARGET_DOUBLE_WITH_ADD, TARGET_USE_SAHF, TARGET_MOVX,
818         TARGET_PARTIAL_REG_STALL, TARGET_PARTIAL_FLAG_REG_STALL,
819         TARGET_USE_HIMODE_FIOP, TARGET_USE_SIMODE_FIOP, TARGET_USE_MOV0,
820         TARGET_USE_CLTD, TARGET_USE_XCHGB, TARGET_SPLIT_LONG_MOVES,
821         TARGET_READ_MODIFY_WRITE, TARGET_READ_MODIFY, TARGET_PROMOTE_QImode,
822         TARGET_FAST_PREFIX, TARGET_SINGLE_STRINGOP, TARGET_QIMODE_MATH,
823         TARGET_HIMODE_MATH, TARGET_PROMOTE_QI_REGS, TARGET_PROMOTE_HI_REGS,
824         TARGET_ADD_ESP_4, TARGET_ADD_ESP_8, TARGET_SUB_ESP_4,
825         TARGET_SUB_ESP_8, TARGET_INTEGER_DFMODE_MOVES,
826         TARGET_PARTIAL_REG_DEPENDENCY, TARGET_SSE_PARTIAL_REG_DEPENDENCY,
827         TARGET_SSE_UNALIGNED_MOVE_OPTIMAL, TARGET_SSE_SPLIT_REGS,
828         TARGET_SSE_TYPELESS_STORES, TARGET_SSE_LOAD0_BY_PXOR,
829         TARGET_MEMORY_MISMATCH_STALL, TARGET_PROLOGUE_USING_MOVE,
830         TARGET_EPILOGUE_USING_MOVE, TARGET_SHIFT1, TARGET_USE_FFREEP,
831         TARGET_INTER_UNIT_MOVES, TARGET_FOUR_JUMP_LIMIT, TARGET_SCHEDULE,
832         TARGET_USE_BT, TARGET_USE_INCDEC, TARGET_PAD_RETURNS,
833         TARGET_EXT_80387_CONSTANTS): Use it.
834         (enum ix86_arch_indices): New.
835         (ix86_arch_features): New.
836         (TARGET_CMOVE, TARGET_CMPXCHG, TARGET_CMPXCHG8B, TARGET_XADD,
837         TARGET_BSWAP): Use it.
838         (ix86_tune_mask, ix86_arch_mask): Remove.
839
840 2007-03-06  Joseph Myers  <joseph@codesourcery.com>
841
842         PR bootstrap/31020
843         * configure.ac (CROSS_SYSTEM_HEADER_DIR, build_system_header_dir):
844         Define using $${sysroot_headers_suffix}.
845         * configure: Regenerate.
846         * cppdefault.c (cpp_include_defaults): Make FIXED_INCLUDE_DIR a
847         multilib-suffixed directory if SYSROOT_HEADERS_SUFFIX_SPEC
848         defined.
849         * doc/invoke.texi (-print-sysroot-headers-suffix): Document.
850         * gcc.c (print_sysroot_headers_suffix): New.
851         (option_map): Include --print-sysroot-headers-suffix.
852         (display_help): Mention -print-sysroot-headers-suffix.
853         (process_command): Handle -print-sysroot-headers-suffix.
854         (do_spec_1): Append multilib directory to include-fixed path if
855         sysroot suffixes in use.
856         (main): Handle -print-sysroot-headers-suffix.
857         * Makefile.in (start.encap): Don't depend on xlimits.h
858         (xlimits.h): Remove.
859         (stmp-int-hdrs): Don't depend on xlimits.h.  Inline generation of
860         limits.h for each multilib in fixinc_list.
861         (fixinc_list, s-fixinc_list): New.
862         (stmp-fixinc): Depend on fixinc_list.  If not copying headers,
863         generate them for each multilib in fixinc_list.
864         (stmp-fixproto): Use include-fixed.  Run fixproto for each
865         multilib in fixinc_list.
866         (mostlyclean): Don't remove xlimits.h.
867         (clean): Remove include-fixed.
868         (real-install-headers-tar, real-install-headers-cpio,
869         real-install-headers-cp): Don't copy include, only include-fixed.
870         (install-mkheaders): Depend on fixinc_list.  Don't depend on
871         xlimits.h.  Save limits.h files for each multilib in fixinc_list.
872         Always save mkinstalldirs.  Preserve ${sysroot_headers_suffix} in
873         SYSTEM_HEADER_DIR setting in mkheaders.conf.
874
875 2007-03-06  Jan Hubicka  <jh@suse.cz>
876
877         * regstack.c (reg_to_stack): When in 64bit PIC mode, we still can load
878         NANs easilly.
879
880 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
881
882         * configure.ac: Allow tm_file to contain build-directory files.
883         * configure: Regenerate.
884         * config.gcc (m68k-*-uclinux*): Add ./sysroot-suffix.h to tm_file.
885         * config/m68k/t-uclinux (sysroot-suffix.h): New target.
886         * config/m68k/print-sysroot-suffix.sh: New file.
887
888 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
889
890         * config/m68k/m68k.h (PIC_OFFSET_TABLE_REGNUM): Use the REGNO
891         of pic_offset_table_rtx if reload_completed.
892         (CONDITIONAL_REGISTER_USAGE): Use PIC_REG instead of
893         PIC_OFFSET_TABLE_REGNUM.
894         * config/m68k/m68k.c (TARGET_ASM_CAN_OUTPUT_MI_THUNK): Always
895         return true.
896         (m68k_save_reg): Use PIC_REG instead of PIC_OFFSET_TABLE_REGNO.
897         (m68k_output_mi_thunk): Rewrite to use RTL.  Honor vcall_offset.
898
899 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
900
901         * config/m68k/m68k.c (m68k_save_reg): Save the PIC register in
902         functions that call eh_return.
903
904 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
905
906         * config/m68k/m68k.c (m68k_save_reg): Save the PIC register in
907         functions that need a constant pool.
908
909 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
910
911         PR target/28181
912         * config/m68k/m68k-protos.h (m68k_secondary_reload_class): Declare.
913         (m68k_preferred_reload_class): Likewise.
914         * config/m68k/m68k.h (HARD_REGNO_MODE_OK): Remove duplicated comment.
915         (SECONDARY_RELOAD_CLASS): Define.
916         (PREFERRED_RELOAD_CLASS): Use m68k_preferred_reload_class.
917         (LIMIT_RELOAD_CLASS): Delete.
918         * config/m68k/m68k.c (m68k_regno_mode_ok): Don't prevent address
919         registers from storing bytes.
920         (m68k_secondary_reload_class): New function.
921         (m68k_preferred_reload_class): Likewise.
922
923 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
924
925         * config/m68k/m68k.c (m68k_save_reg): Remove special case for
926         leaf functions.
927         (m68k_expand_prologue): Likewise.
928
929 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
930
931         * config/m68k/m68k-protos.h (output_sibcall): Declare.
932         (mips_expand_epilogue): Add a bool parameter.
933         (m68k_legitimize_sibcall_address): Declare.
934         * config/m68k/m68k.c (TARGET_FUNCTION_OK_FOR_SIBCALL): Define.
935         (m68k_expand_epilogue): Add a parameter to select between sibling
936         and normal epilogues.  Only generate a return for the latter.
937         (m68k_ok_for_sibcall_p): New function.
938         (m68k_legitimize_sibcall_address, output_sibcall): New functions.
939         * config/m68k/m68k.md (sibcall, *sibcall): New patterns.
940         (sibcall_value, *sibcall_value): Likewise.
941         (*call, *call_value): Require !SIBLING_CALL_P.
942         (epilogue): Update call to m68k_expand_epilogue.
943         (sibcall_epilogue): New pattern.
944         * config/m68k/predicates.md (const_call_operand): Say that this
945         predicate applies to sibling calls too.
946         (sibcall_operand): New predicate.
947
948 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
949
950         * config/m68k/m68k.md (movsf_cf_soft): Provide the same non-mov3q
951         alternatives as movsi_cf.
952         (movsf_cf_hard): Add commentary.
953
954 2007-03-06  Kazu Hirata  <kazu@codesourcery.com>
955             Richard Sandiford  <richard@codesourcery.com>
956
957         * config/m68k/m68k-protos.h (m68k_interrupt_function_p): Declare.
958         (m68k_movem_pattern_p, m68k_output_movem): Likewise.
959         (m68k_expand_prologue, m68k_expand_epilogue): Likewise.
960         * config/m68k/m68k.h (EPILOGUE_USES): Define.  Treat all registers
961         as being live on exit from an interrupt function.
962         (PRINT_OPERAND_PUNCT_VALID_P): Return true for '?'.
963         * config/m68k/m68k.c (MIN_MOVEM_REGS, MIN_FMOVEM_REGS): New macros.
964         (m68k_frame): Remove reg_rev_mask and fpu_rev_mask.
965         (TARGET_ASM_FUNCTION_PROLOGUE, TARGET_ASM_FUNCTION_EPILOGUE): Delete.
966         (m68k_interrupt_function_p): Globalize.
967         (m68k_compute_frame_layout): Remove reverse mask code.
968         (m68k_emit_movem, m68k_set_frame_related): New functions.
969         (m68k_output_function_prologue): Delete in favor of...
970         (m68k_expand_prologue): ...this new function.
971         (m68k_output_function_epilogue): Delete in favor of...
972         (m68k_expand_epilogue): ...this new function.
973         (m68k_split_offset, m68k_movem_pattern_p, m68k_output_movem): New
974         functions.
975         (print_operand): Handle %?.
976         * config/m68k/m68k.md (UNSPEC_SIN, UNSPEC_COS): Remove excess space.
977         (UNSPEC_GOT, A1_REG, PIC_REG, FP0_REG): New constants.
978         (prologue, epilogue): New patterns.
979         (return): Turn into a define_expand.
980         (*return): New pattern, derived from old "return" pattern.  Use rte
981         rather than rts for interrupt functions.  Only use rtd if the pop
982         count is nonzero.
983         (*m68k_store_multiple, *m68k_store_multiple_automod): New patterns.
984         (*m68k_load_multiple, *m68k_load_multiple_automod): Likewise.
985         (link, *link, unlink, *unlink, load_got): Likewise.
986
987 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
988
989         PR target/23482
990         PR target/17114
991         * config/m68k/m68k-protos.h (m68k_legitimate_base_reg_p): Declare.
992         (m68k_legitimate_index_reg_p, m68k_legitimate_address_p): Likewise.
993         (m68k_matches_q_p, m68k_matches_u_p): Likewise.
994         * config/m68k/m68k.h (EXTRA_CONSTRAINT): Use m68k_matches_q_p
995         and m68k_matches_u_p.
996         (PCREL_GENERAL_OPERAND_OK, LEGITIMATE_BASE_REG_P): Delete.
997         (INDIRECTABLE_1_ADDRESS_P, GO_IF_NONINDEXED_ADDRESS): Delete.
998         (GO_IF_INDEXABLE_BASE, GO_IF_INDEXING, GO_IF_INDEXED_ADDRESS): Delete.
999         (LEGITIMATE_INDEX_REG_P, LEGITIMATE_INDEX_P): Delete.
1000         (GO_IF_COLDFIRE_FPU_LEGITIMATE_ADDRESS): Delete.
1001         (REG_STRICT_P): New macro.
1002         (LEGITIMATE_PIC_OPERAND_P): Use REG_STRICT_P rather than
1003         PCREL_GENERAL_OPERAND_OK.
1004         (REG_OK_FOR_BASE_P): Merge definitions.  Use REG_STRICT_P and
1005         m68k_legitimate_base_reg_p.
1006         (REG_MODE_OK_FOR_INDEX_P): Likewise m68k_legitimate_index_reg_p.
1007         (GO_IF_LEGITIMATE_ADDRESS): Likewise m68k_legitimate_address_p.
1008         (PIC_CASE_VECTOR_ADDRESS): Update comment.
1009         * config/m68k/m68k.c (m68k_address): New structure.
1010         (m68k_legitimate_base_reg_p, m68k_legitimate_index_reg_p)
1011         (m68k_decompose_index, m68k_legitimate_constant_address_p)
1012         (m68k_jump_table_ref_p, m68k_decompose_address)
1013         (m68k_legitimate_address_p, m68k_legitimate_mem_p, m68k_matches_q_p)
1014         (m68k_matches_u_p): New functions.
1015         (print_operand_address): Rewrite to use m68k_decompose_index.
1016
1017 2007-03-05  David Taylor  <dtaylor@emc.com>
1018
1019         * gcc.c: Correct copyright date in --version output.
1020
1021 2007-03-05  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
1022
1023         * pa.md: In unamed move patterns, disparge copies between general
1024         and floating point registers using '?' modifier.  Don't include 'f'
1025         constraint for register preferences in DImode, SImode, HImode and
1026         QImode patterns.  Likewise for 'r' in DFmode and SFmode patterns.
1027         Remove constraints for copies between general and floating registers
1028         in soft-float DFmode pattern.
1029         (movdf): Fail if operand1 is a CONST_DOUBLE and operand0 is a hard
1030         floating register.
1031         (movsf): Likewise. 
1032
1033 2007-03-05  Mike Stump  <mrs@apple.com>
1034
1035         * c-common.c (targetcm): Add.
1036         * c-opts.c (c_common_handle_option): Handle language specific
1037         target options.
1038         * opts.c (handle_option): Verify language for target options, if
1039         any are given.
1040         * opth-gen.awk: Add CL_LANG_ALL.
1041         * target-def.h (TARGET_HANDLE_C_OPTION): Add.
1042         (TARGETCM_INITIALIZER): Add.
1043         * target.h (struct gcc_targetcm): Add.
1044         (targetcm): Add.
1045         * targhooks.c (default_handle_c_option): Add.
1046         * targhooks.h (default_handle_c_option): Add.
1047         * doc/tm.texi (TARGET_HANDLE_C_OPTION): Add.
1048
1049         * config/darwin.opt (iframework): Add.
1050         * config/darwin.h (TARGET_HAS_TARGETCM): Add.
1051         * config/darwin-c.c (handle_c_option): Add.
1052         (TARGET_HANDLE_C_OPTION): Add.
1053         (targetcm): Add.
1054         * doc/invoke.texi (Darwin Options): Add -iframework.
1055
1056 2007-03-05  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
1057
1058         * convert.c (convert_to_integer): Fix nearbyint/rint -> *lrint
1059         conversion.
1060
1061 2007-03-05  Ian Lance Taylor  <iant@google.com>
1062
1063         * c.opt (fgnu89-inline): New option.
1064         * c-opts.c (c_common_post_options): Set default value for
1065         flag_gnu89_inline.
1066         * c-decl.c (WANT_C99_INLINE_SEMANTICS): Remove.
1067         (pop_scope): Check flag_gnu89_inline rather than flag_isoc99 for
1068         inline functions.
1069         (diagnose_mismatched_decls, merge_decls, start_decl): Likewise.
1070         (grokdeclarator, start_function): Likewise.
1071         * c-cppbuiltin.c (c_cpp_builtins): Define either
1072         __GNUC_GNU_INLINE__ or __GNUC_STDC_INLINE__.
1073         * doc/invoke.texi (Option Summary): Mention -fgnu89-inline.
1074         (C Dialect Options): Document -fgnu89-inline.
1075         * doc/extend.texi (Function Attributes): Explain what the
1076         gnu_inline attribute does.
1077         * doc/cpp.texi (Common Predefined Macros): Document
1078         __GNUC_GNU_INLINE__ and __GNUC_STDC_INLINE__.
1079
1080 2007-03-05  Ian Lance Taylor  <iant@google.com>
1081
1082         PR tree-optimization/31034
1083         * tree-vrp.c (extract_range_from_assert): Don't try to handle a
1084         half-range if the other side is an overflow infinity.
1085
1086 2007-03-05  Bernd Schmidt  <bernd.schmidt@analog.com>
1087
1088         * config.gcc (bfin*-uclinux*): Use t-bfin-uclinux.
1089         (bfin*-linux-uclibc*): New configuration.
1090         * config/linux.h (LINK_GCC_C_SEQUENCE_SPEC): Undefined before
1091         defining.
1092         * config/bfin/linux.h: New file.
1093         * config/bfin/libgcc-bfin.ver: New file.
1094         * config/bfin/t-bfin-uclinux: New file.
1095         * config/bfin/t-bfin-linux: New file.
1096         * config/bfin/uclinux.h (LINUX_TARGET_OS_CPP_BUILTINS): New macro.
1097         (TARGET_OS_CPP_BUILTINS): New macro.
1098
1099 2007-03-05  Richard Guenther  <rguenther@suse.de>
1100
1101         * fold-const.c (fold_binary): Remove duplicate folding
1102         of comparison of non-null ADDR_EXPR against null.
1103
1104 2007-03-05  Richard Guenther  <rguenther@suse.de>
1105             Dorit Nuzman  <dorit@il.ibm.com>
1106
1107         PR tree-optimization/26420
1108         * tree-vectorizer.c (vectorize_loops): Bail out early if there
1109         are no loops in the function.  Only print the number of
1110         vectorized loops if it is greater than zero or we are supposed
1111         to print information about unvectorized loops.
1112
1113 2007-03-05  Revital Eres  <eres@il.ibm.com>
1114
1115         * gcc.dg/var-expand1.c: New test.
1116         * loop-unroll.c (analyze_insn_to_expand_var): Add dump info
1117         when an accumulator is expanded.
1118
1119 2007-03-04  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
1120
1121         PR other/30465
1122         * c-common.c (convert_and_check): Don't give warnings for
1123         conversion if 'expr' already overflowed.
1124         
1125 2007-03-04  Roger Sayle  <roger@eyesopen.com>
1126
1127         PR middle-end/30744
1128         * fold-const.c (fold_comparison): Enforce type consistency when
1129         transforming ~X op ~Y to Y op X, and ~X op C to X op' ~C.
1130
1131 2007-03-04  Zdenek Dvorak  <dvorakz@suse.cz>
1132
1133         * tree-ssa-address.c (create_mem_ref): Do not put an expression
1134         containing a cast to the base of TARGET_MEM_REF.
1135
1136 2007-03-04  Martin Michlmayr  <tbm@cyrius.com>
1137
1138         * tree.c (tree_contains_struct_check_failed): Remove spurious
1139         whitespace from error message.
1140
1141 2007-03-04 Andrew Pinski <andrew_pinski@playstation.sony.com>
1142
1143         PR target/30406
1144         * config/rs6000/rs6000.c (rs6000_function_value): Look at bit size
1145         instead of precision.
1146
1147 2007-03-04  Roman Zippel <zippel@linux-m68k.org>
1148             Nathan Sidwell  <nathan@codesourcery.com>
1149
1150         * emit-rtl.c (find_auto_inc): New.
1151         (try_split): recreate REG_INC notes,
1152         Use regular for loops rather than whiles.
1153
1154 2007-03-03  Andreas Schwab  <schwab@suse.de>
1155
1156         * configure.ac (HAVE_AS_REL16): Move test back to correct place.
1157         * configure: Regenerate.
1158
1159 2007-03-03  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
1160
1161         * builtins.def (ATTR_MATHFN_FPROUNDING): Rely on
1162         flag_rounding_math, not flag_unsafe_math_optimizations.
1163
1164         * c-pretty-print.c (pp_c_direct_abstract_declarator): Use
1165         fold_build2.
1166         * config/alpha/alpha.c (alpha_fold_builtin_zapnot,
1167         alpha_fold_vector_minmax): Likewise.
1168         * config/i386/i386.c (ix86_gimplify_va_arg): Likewise.
1169         * config/sparc/sparc.c (sparc_gimplify_va_arg): Likewise.
1170
1171 2007-03-02  Eric Botcazou  <ebotcazou@adacore.com>
1172
1173         * tree-sra.c (sra_walk_fns) <ldst>: Document new restriction.
1174         (sra_walk_modify_expr) <rhs_elt>: Treat the reference as a use
1175         if the lhs has side-effects.
1176         <lhs_elt>: Treat the reference as a use if the rhs has side-effects.
1177
1178 2007-03-02  Uros Bizjak  <ubizjak@gmail.com>
1179
1180         * config/i386/i386.h (TUNEMASK): Remove define.
1181         (ARCHMASK): Remove define.
1182         (TARGET_*): Use ix86_tune_mask variable instead of TUNEMASK.
1183          Use ix86_arch_mask variable instead of ARCHMASK.
1184         * config/i386/i386.c (override_options): Ditto.
1185         (standard_80387_constant_p): Ditto.
1186
1187 2007-03-02  Ian Lance Taylor  <iant@google.com>
1188
1189         Used signed infinities in VRP.
1190         * tree-vrp.c (uses_overflow_infinity): New static function.
1191         (supports_overflow_infinity): New static function.
1192         (make_overflow_infinity): New static function.
1193         (negative_overflow_infinity): New static function.
1194         (positive_overflow_infinity): New static function.
1195         (is_negative_overflow_infinity): New static function.
1196         (is_positive_overflow_infinity): New static function.
1197         (is_overflow_infinity): New static function.
1198         (overflow_infinity_range_p): New static function.
1199         (compare_values_warnv): New function split out of compare_values.
1200         (compare_value): Call it.
1201         (set_value_range_to_nonnegative): Add overflow_infinity
1202         parameter.  Change caller.
1203         (vrp_expr_computes_nonnegative): Add strict_overflow_p parameter.
1204         Change callers.
1205         (vrp_expr_computes_nonzero): Likewise.
1206         (compare_ranges, compare_range_with_value): Likewise.
1207         (compare_name_with_value, compare_names): Likewise.
1208         (vrp_evaluate_conditional): Likewise.
1209         (set_value_range): Handle infinity
1210         (vrp_operand_equal_p, operand_less_p): Likewise.
1211         (extract_range_from_assert): Likewise.
1212         (vrp_int_const_binop): Likewise.
1213         (extract_range_from_binary_expr): Likewise.
1214         (extract_range_from_unary_expr): Likewise.
1215         (extract_range_from_comparison): Likewise.
1216         (extract_range_from_expr): Likewise.
1217         (dump_value_range): Likewise.
1218         (vrp_visit_cond_stmt, vrp_visit_phi_node): Likewise.
1219         (test_for_singularity): Likewise.
1220         (vrp_int_const_binop): Remove inline qualifier.
1221         (adjust_range_with_scev): Add comment.
1222         * tree-flow.h (vrp_evaluate_conditional): Update declaration.
1223
1224 2007-03-02  Diego Novillo  <dnovillo@redhat.com>
1225
1226         * tree-ssa-structalias.c (could_have_pointers): Tidy.
1227         (get_constraint_for): Likewise.
1228         (do_structure_copy): Likewise.
1229         (find_func_aliases): Fix references to MODIFY_EXPR.
1230         (intra_create_variable_infos): Tidy.
1231         * tree-ssa-operands.c (add_virtual_operand): Add argument
1232         IS_CALL_SITE.
1233         When adding members of alias sets, if IS_CALL_SITE is true and
1234         the symbol is not call-clobbered, skip it.
1235         Adjust all callers.
1236
1237 2007-03-02  Eric Botcazou  <ebotcazou@adacore.com>
1238
1239         * config/alpha/alpha.c (alpha_gp_save_rtx): Insert the insns at the
1240         entry by means of emit_insn_at_entry.
1241
1242 2007-03-02  Richard Henderson  <rth@redhat.com>
1243
1244         * expr.h (promoted_input_arg): Remove decl.
1245         * function.c (promoted_input_arg): Merge into ...
1246         * combine.c (setup_incoming_promotions): ... only caller.
1247         Rearrange to avoid double loop.
1248
1249 2007-03-02  Ben Elliston  <bje@au.ibm.com>
1250             Peter Bergner  <bergner@vnet.ibm.com>
1251             Janis Johnson  <janis187@us.ibm.com>
1252
1253         * config/rs6000/dfp.md: New file.
1254         * config/rs6000/rs6000.md: Include dfp.md.
1255         (add<mode>3_internal1): Disable for DECIMAL_FLOAT_MODE_P operands.
1256         * config/rs6000/rs6000.c (rs6000_hard_regno_mode_ok): Handle DDmode
1257         and TDmode decimal float modes in FP registers.
1258         (num_insns_constant): Likewise.
1259         (rs6000_legitimate_offset_address_p): Likewise.
1260         (rs6000_legitimize_address): Likewise.
1261         (rs6000_legitimize_reload_address): Likewise.
1262         (rs6000_legitimate_address): Likewise.
1263         (rs6000_emit_move): Likewise.
1264         (function_arg_boundary): Likewise.
1265         (function_arg_advance): Likewise.
1266         (rs6000_darwin64_record_arg_recurse): Likewise.
1267         (function_arg): Likewise.
1268         (rs6000_gimplify_va_arg): Likewise.
1269         (rs6000_split_multireg_move): Likewise.
1270         (rs6000_output_function_epilogue): Likewise.
1271         (rs6000_output_function_epilogue): Likewise.
1272         (rs6000_register_move_cost): Likewise.
1273         (rs6000_function_value): Likewise.
1274         (rs6000_libcall_value): Likewise.
1275
1276 2007-03-02  Richard Sandiford  <richard@codesourcery.com>
1277
1278         * config/t-vxworks (LIMITS_H_TEST): Define to true for VxWorks.
1279
1280 2007-03-02  Richard Sandiford  <richard@codesourcery.com>
1281
1282         * config/t-vxworks (LIBGCC2_INCLUDES): Pass -nostdinc.
1283         Use $MULTIDIR to choose between the kernel and RTP headers,
1284         and use $WIND_BASE and $WIND_USR to locate them.
1285
1286 2007-03-02  Uros Bizjak  <ubizjak@gmail.com>
1287
1288         * config/i386/i386.c (override_options): Put initialization of
1289         ix86_tune_mask and ix86_arch_mask to the correct place.
1290
1291 2007-03-02  Uros Bizjak  <ubizjak@gmail.com>
1292             Michael Meissner  <michael.meissner@amd.com>
1293
1294         PR target/31019
1295         * config/i386/i386.h (TUNEMASK): Redefine to use ix86_tune_mask.
1296         (ARCHMASK): Define.
1297         (TARGET_CMOVE): Use ARCHMASK.
1298         (TARGET_CMPXCHG): Ditto.
1299         (TARGET_CMPXCHG8B): Ditto.
1300         (TARGET_XADD): Ditto.
1301         (TARGET_BSWAP): Ditto.
1302         * config/i386/i386.c (ix86_tune_mask): New global variable.
1303         (ix86_arch_mask): Ditto.
1304         (override_options): Initialize ix86_tune_mask and
1305         ix86_arch_mask. Use ARCHMASK to clear MASK_NO_FANCY_MATH_387 in
1306         target_flags.
1307
1308 2007-03-02  Ben Elliston  <bje@au.ibm.com>
1309
1310         PR 30992
1311         * config/dfp-bit.c (DFP_TO_INT): Initialise qval with "1.".
1312
1313 2007-03-02  Joseph Myers  <joseph@codesourcery.com>
1314
1315         * target.h (init_dwarf_reg_sizes_extra): New target hook.
1316         * target-def.h (TARGET_INIT_DWARF_REG_SIZES_EXTRA): New default.
1317         * doc/tm.texi (TARGET_INIT_DWARF_REG_SIZES_EXTRA): Document.
1318         * dwarf2out.c (expand_builtin_init_dwarf_reg_sizes): Call this
1319         hook.
1320         * config/rs6000/rs6000.c (TARGET_INIT_DWARF_REG_SIZES_EXTRA,
1321         rs6000_init_dwarf_reg_sizes_extra): New.
1322         * config/rs6000/linux-unwind.h (ppc_fallback_frame_state): Support
1323         SPE register high parts.
1324
1325 2007-03-01  Brooks Moses  <brooks.moses@codesourcery.com>
1326
1327         * Makefile.in: Add install-pdf target as
1328         copied from automake v1.10 rules.
1329         * configure.ac: Add install-pdf to target list.
1330         * configure: Regenerate.
1331
1332 2007-03-01  Paul Brook  <paul@codesourcery.com>
1333
1334         * config/arm/arm.c (arm_legitimate_index_p): Limit iWMMXt addressing
1335         modes to LDRD for DImode.
1336         (output_move_double): Fixup out of range ldrd/strd.
1337         (vfp_secondary_reload_class): Rename...
1338         (coproc_secondary_reload_class): ... to this.  Add wb argument.
1339         * config/arm/arm.h (SECONDARY_OUTPUT_RELOAD_CLASS): Use
1340         coproc_secondary_reload_class for CLASS_IWMMXT.
1341         (SECONDARY_INPUT_RELOAD_CLASS): Ditto.
1342         * arm-protos.h (coproc_secondary_reload_class): Update prototype.
1343
1344 2007-03-01  Zdenek Dvorak  <dvorakz@suse.cz>
1345
1346         * tree-ssa-loop-prefetch.c (determine_unroll_factor):  Bound the unroll
1347         factor by the estimated number of iterations.
1348         (loop_prefetch_arrays): Do not prefetch in loops that iterate less than
1349         prefetch latency.
1350
1351         * config/i386/driver-i386.c (describe_cache, detect_caches_amd,
1352         decode_caches_intel, detect_caches_intel): New functions.
1353         (host_detect_local_cpu): Use detect_caches_amd and
1354         detect_caches_intel.
1355
1356 2007-03-01  Richard Henderson  <rth@redhat.com>
1357
1358         * expr.c (emit_move_complex_push): Export.
1359         (emit_move_complex_parts): Split out from ...
1360         (emit_move_complex): ... here.
1361         * expr.h (emit_move_complex_push, emit_move_complex_parts): Declare.
1362         * config/i386/i386.md (movcdi): New.
1363
1364 2007-03-01  Uros Bizjak  <ubizjak@gmail.com>
1365
1366         * config/i386/i386.c (ix86_modes_tieable_p): Fix typo, use also
1367         size of mode1 to check for tieable modes in MMX case.
1368
1369 2007-03-01  Richard Sandiford  <richard@codesourcery.com>
1370
1371         * Makefile.in (rtlanal.o): Depend on tree.h.
1372         * rtl.h (offset_within_section_p, split_const): Declare.
1373         * rtlanal.c: Include tree.h.
1374         (offset_within_block_p): New function, taken from
1375         mips_offset_within_object_p.
1376         (split_const): New function, taken from mips_split_const.
1377         * config/m68k/m68k-protos.h (m68k_illegitimate_symbolic_constant_p):
1378         Declare.
1379         * config/m68k/m68k.h (M68K_OFFSETS_MUST_BE_WITHIN_SECTIONS_P): Define.
1380         (CONSTANT_ADDRESS_P): Only accept legitimate constants.
1381         (LEGITIMATE_CONSTANT_P): Check m68k_illegitimate_symbolic_constant_p.
1382         * config/m68k/m68k.c (TARGET_CANNOT_FORCE_CONST_MEM): Define.
1383         (m68k_illegitimate_symbolic_constant_p): New function.
1384         * config/m68k/m68k.md (movsi): Remove misleading predicates.
1385         If M68K_OFFSETS_MUST_BE_WITHIN_SECTIONS_P and the source is a
1386         symbolic constant that might be outside the symbol's section,
1387         move the symbol first and then add the offset.
1388         * config/m68k/uclinux.h (M68K_OFFSETS_MUST_BE_WITHIN_SECTIONS_P):
1389         Override.
1390         * config/mips/mips.c (mips_split_const): Delete.
1391         (mips_offset_within_object_p): Delete.
1392         (mips_symbolic_constant_p): Use offset_within_section_p and
1393         split_const instead of mips_offset_within_object_p and
1394         mips_split_const.
1395         (mips_cannot_force_const_mem, mips_const_insns, mips_unspec_address)
1396         (mips_legitimize_const_move, print_operand_reloc)
1397         (mips_dangerous_for_la25_p): Use split_const instead of
1398         mips_split_const.
1399
1400 2007-02-28  Eric Christopher  <echristo@apple.com>
1401
1402         * Makefile.in (install-include-dir): Don't rm -rf include.
1403
1404 2007-02-28  Richard Guenther  <rguenther@suse.de>
1405
1406         PR middle-end/30364
1407         * fold-const.c (fold_binary): Do not associate expressions
1408         with more than one variable for integer types that do not wrap.
1409
1410 2007-02-28  Sandra Loosemore  <sandra@codesourcery.com>
1411
1412         * builtins.c (fold_builtin_call_list, fold_builtin_call_valist):
1413         Delete, and replace with...
1414         (fold_builtin_call_array): This.  Update callers to use it.
1415         * fold-const.c (fold_build_call_list): Delete, and replace with...
1416         (fold_build_call_array): This.
1417         (fold_build_call_list_initializer): Delete, and replace with...
1418         (fold_build_call_array_initializer): This.
1419         * tree.h: Update declarations to reflect above changes.
1420
1421         * c-typeck.c (build_function_call): Store converted arguments
1422         in a stack-allocated array instead of building a list.
1423         (convert_arguments): Store arguments in the array passed in as an
1424         argument, and return the actual number of arguments.
1425         * c-format.c: (check_function_format): Pass arguments in an
1426         array instead of a list.
1427         * c-common.c (check_function_nonnull): Likewise.
1428         (check_function_sentinel): Likewise.
1429         (check_function_arguments): Likewise.
1430         * c-common.h: Update declarations to reflect above changes.
1431
1432 2007-02-28  Jan Hubicka  <jh@suse.cz>
1433
1434         * predict.def (PRED_TREE_EARLY_RETURN, PRED_CONST_RETURN,
1435         PRED_NEGATIVE_RETURN): Update outcomes.
1436
1437 2007-02-28  Bernd Schmidt  <bernd.schmidt@analog.com>
1438
1439         * calls.c (emit_library_call_value_1): Handle partial registers
1440         correctly when building up CALL_INSN_FUNCTION_USAGE.
1441
1442 2007-02-27  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
1443
1444         * pa/predicates.md (move_src_operand): Allow zero for mode.
1445         * pa/pa.md: Fix constraints for zero CONST_DOUBLE in 64-bit DFmode
1446         move pattern.
1447
1448 2007-02-27  Uros Bizjak  <ubizjak@gmail.com>
1449
1450         PR target/30970
1451         * config/i386/sse.md (*mov<mode>_internal, *movv4sf_internal,
1452         *movv2df_internal): Enable pattern only for valid operand
1453         combinations.
1454         * config/i386/i386.c (ix86_modes_tieable_p): For SSE registers,
1455         tie only 128bit modes. For MMX registers, tie only 64bit modes.
1456
1457 2007-02-27  Mike Stump  <mrs@apple.com>
1458
1459         * config/darwin-crt3.c: Avoid compilation when compiling for a
1460         kext multilib.
1461
1462 2007-02-27  Joseph Myers  <joseph@codesourcery.com>
1463
1464         * Makefile.in (PREPROCESSOR_DEFINES, test-protoize-simple): Define
1465         FIXED_INCLUDE_DIR.
1466         (stmp-int-hdrs, stmp-fixinc, install-headers): Use include-fixed
1467         for fixed headers and limits.h.
1468         (install-include-dir, install-headers-tar, install-headers-cpio,
1469         install-headers-cp, real-install-headers-tar,
1470         real-install-headers-cpio, real-install-headers-cp): Handle
1471         include-fixed as well as include.
1472         (install-mkheaders): Don't install files that go only in include
1473         not include-fixed.
1474         * cppdefault.c (cpp_include_defaults): Separate FIXED_INCLUDE_DIR
1475         from GCC_INCLUDE_DIR.
1476         * gcc.c (process_command): Remove special -BstageN/ handling.
1477         (do_spec_1): Add include-fixed directories.
1478
1479 2007-02-27  Bernd Schmidt  <bernd.schmidt@analog.com>
1480
1481         * config/bfin/t-bfin-elf (LIB1ASMFUNCS): Add _umulsi3_highpart and
1482         _smulsi3_highpart.
1483         * config/bfin/lib1funcs.asm (___umulsi3_highpart, ___smulsi3_highpart):
1484         New functions.
1485         * config/bfin/bfin.md (smulsi3_highpart, umulsi3_highpart): New
1486         patterns.
1487
1488 2007-02-27  Mark Mitchell  <mark@codesourcery.com>
1489
1490         * c-common.c (get_priority): Add check for
1491         SUPPORTS_INIT_PRIORITY.
1492
1493 2007-02-27  Bernd Schmidt  <bernd.schmidt@analog.com>
1494
1495         * config/bfin/bfin.md (doloop_end): FAIL if counter reg isn't SImode.
1496
1497         * config/bfin/bfin.c: Include "cfglayout.h".
1498         (MAX_LSETUP_DISTANCE): New macro.
1499         (struct loop_info): New members incoming, incoming_src and
1500         incoming_dest.  Delete member predecessor.
1501         (length_for_loop): New function.
1502         (bfin_optimize_loop): Handle more different loop structures.
1503         (bfin_discover_loop): Rework detection of predecessor blocks by
1504         examining incoming edges.
1505         (bfin_discover_loops, bfin_free_loops): New functions, broken out of
1506         bfin_reorg_loops.
1507         (bfin_reorder_loops): New function.
1508         (bfin_reorg_loops): Use these three new functions.
1509
1510         * config/bfin/bfin.h (enum reg_class, REG_CLASS_NAMES,
1511         REG_CLASS_CONTENTS): Add D0REGS through D7REGS.
1512         (CONSTRAINT_LEN): Add entry for 'q'.
1513         (REG_CLASS_FROM_CONSTRAINT): Renamed from REG_CLASS_FROM_LETTER.
1514         Add 'q' constraints.
1515         (REGNO_REG_CLASS): For R0 through R7, return corresponding regclass.
1516         (CLASS_LIKELY_SPILLED_P): True for R0, R1 and R2.
1517
1518         * config/bfin/bfin.md (add_with_carry): New pattern.
1519         (s_or_u, su_optab, su_modifier): New code macros/attrs.
1520         (<su_optab>hisi_ll, <su_optab>hisi_lh, <su_optab>hisi_hl,
1521         <su_optab>hisi_hh): Renamed from mulhisi_xx patterns; macroized to
1522         support unsigned multiplies too.  Removed incorrect commutativity from
1523         operand 1 constraint where appropriate.
1524         (usmulhisi_ull, usmulhisi_ulh, usmulhisi_uhl, usmulhisi_uhh): New
1525         patterns.
1526         (<su_optab>hisi_ll_lh, <su_optab>hisi_ll_hl, <su_optab>hisi_ll_hh,
1527         <su_optab>hisi_lh_hl, <su_optab>hisi_lh_hh, <su_optab>hisi_hl_hh):
1528         New patterns.
1529         (usmulhisi_ll_lul, usmulhisi_ll_luh, usmulhisi_ll_hul,
1530         usmulhisi_ll_huh, usmulhisi_lh_lul, usmulhisi_lh_luh, usmulhisi_lh_hul,
1531         usmulhisi_lh_huh, usmulhisi_hl_lul, usmulhisi_hl_luh, usmulhisi_hl_hul,
1532         usmulhisi_hl_huh, usmulhisi_hh_lul, usmulhisi_hh_luh, usmulhisi_hh_hul,
1533         usmulhisi_hh_huh): New patterns.
1534
1535         * config/bfin/bfin.md (ssashiftv2hi3, ssashifthi3, lshiftv2hi3,
1536         lshifthi3): Fix output template to use half reg for operand 2.
1537
1538         * config/bfin/bfin.c (bfin_output_mi_thunk): Use R3 as scratch reg
1539         instead of R2.
1540
1541         * config/bfin/bfin.md (rotl16, rotlsi3, rotrsi3): New patterns.
1542
1543 2007-02-27  Andreas Schwab  <schwab@suse.de>
1544
1545         * Makefile.in (TEXI_GCCINSTALL_FILES): Add gcc-common.texi.
1546
1547 2007-02-27  Jan Hubicka  <jh@suse.cz>
1548
1549         * predict.c (last_basic_block_p): Remove.
1550         (tree_estimate_probability): Update return heuristic for commonized
1551         return blocks.
1552
1553 2007-02-26  Brooks Moses  <brooks.moses@codesourcery.com>
1554
1555         * Makefile.in (TEXI_GCCINSTALL_FILES): Add gcc-vers.texi dependency.
1556
1557 2007-02-26  Brooks Moses  <brooks.moses@codesourcery.com>
1558
1559         * doc/include/gcc-common.texi (versionsubtitle): New macro.
1560         * doc/cpp.texi: Standardize title page.
1561         * doc/cppinternals.texi: Likewise.
1562         * doc/gcc.texi: Standardize title page, remove version number
1563         from copyright page.
1564         * doc/gccint.texi: Likewise.
1565         * doc/install.texi: Standardize title page, add table of
1566         contents.
1567
1568 2007-02-26  Jan Hubicka  <jh@suse.cz>
1569
1570         * predict.def: Set outcomes according to more recent results.
1571         (PRED_LOOP_CONDITION, PRED_LOOP_PRECONDITIONING, PRED_LOOP_HEADER):
1572         Remove dead predictors.
1573         * predict.c (return_prediction): Fix pasto.
1574
1575 2007-02-27  Bernd Schmidt  <bernd.schmidt@analog.com>
1576
1577         * loop-iv.c (simplify_using_initial_values): Fix oversight in previous
1578         change; avoid a memory leak when returning early.
1579
1580 2007-02-26  Mark Mitchell  <mark@codesourcery.com>
1581
1582         * c-decl.c (static_ctors): Move to c-common.c.
1583         (static_dtors): Likewise.
1584         (finish_function): Use c_record_cdtor_fn.
1585         (build_cdtor): Move to c-common.c.
1586         (c_write_global_declarations): Use c_build_cdtor_fns.
1587         * c-common.h (static_ctors): Declare.
1588         (static_dtors): Likewise.
1589         (c_record_cdtor_fn): Likewise.
1590         (c_build_cdtor_fns): Likewise.
1591         * c-common.c (static_ctors): New variable.
1592         (static_dtors): Likewise.
1593         (c_record_cdtor_fn): New function.
1594         (build_cdtor): Move from c-decl.c
1595         (c_build_cdtor_fns): New function.
1596
1597         * output.h (assemble_addr_to_section): Declare.
1598         (get_cdtor_priority_section): Likewise.
1599         * varasm.c (assemble_addr_to_section): New function.
1600         (get_cdtor_priority_section): Likewise.
1601         (default_named_section_asm_out_destructor): Use them.
1602         (destor_dtor_section_asm_out_destructor): Likewise.
1603         (default_named_section_asm_out_constructor): Likewise.
1604         (default_ctor_section_asm_out_constructor): Likewise.
1605         * config.gcc (*-*-vxworks*): Include vxworks.o.
1606         * config/t-vxworks (vxworks.o): New target.
1607         * config/vxworks.h (ALWAYS_NUMBER_CTORS_SECTIONS): Remove.
1608         (TARGET_ASM_CONSTRUCTOR): Define.
1609         (TARGET_ASM_DESTRUCTOR): Likewise.
1610         (vxworks_asm_out_constructor): Declare.
1611         (vxworks_asm_out_destructor): Likewise.
1612
1613         * c-common.c (get_priority): Check that we have not just an
1614         INTEGER_CST, but an integer constant with integeral type.
1615
1616 2007-02-25  Uros Bizjak  <ubizjak@gmail.com>
1617
1618         PR tree-optimization/30938
1619         * tree-vect-transform.c (vectorizable_call): Fix off-by-one error:
1620         use &dt[nargs-1] instead of &dt[nargs] in the call to
1621         vect_is_simple_use().
1622
1623 2007-02-25  Ulrich Weigand  <uweigand@de.ibm.com>
1624
1625         * reload.c (find_reloads_address_1): Handle PLUS expressions resulting
1626         from register elimination as PRE_MODIFY / POST_MODIFY increments.
1627         Do not attempt to handle MEM inside auto-inc expressions.
1628         * reload1.c (eliminate_regs_1): Do not attempt to handle elimination
1629         of a register modified by an auto-inc expression.  However, do handle
1630         elimination of a register used as PRE_MODIFY / POST_MODIFY increment.
1631         (elimination_effects): Prohibit elimination of a register modified
1632         by an auto-inc expression.  Disable register elimination rules whose
1633         target register is modified by an auto-inc expression with variable
1634         increment.
1635
1636 2007-02-25  Zdenek Dvorak  <dvorakz@suse.cz>
1637
1638         * tree-ssa-loop-niter.c (compute_estimated_nb_iterations): Fix
1639         off-by-one error.
1640         (array_at_struct_end_p): New function.
1641         (idx_infer_loop_bounds): Use it.
1642         (estimate_numbers_of_iterations_loop): Export.
1643         * predict.c (predict_loops): Use estimated_loop_iterations_int.
1644         Do not use PRED_LOOP_EXIT on exits predicted by # of iterations.
1645         (tree_estimate_probability): Call record_loop_exits.
1646         * tree-data-ref.c (get_number_of_iters_for_loop): Replaced by ...
1647         (estimated_loop_iterations, estimated_loop_iterations_int,
1648         estimated_loop_iterations_tree): New functions.
1649         (analyze_siv_subscript_cst_affine,
1650         compute_overlap_steps_for_affine_1_2,
1651         analyze_subscript_affine_affine): Use estimated_loop_iterations_int.
1652         (analyze_miv_subscript): Use estimated_loop_iterations_tree.
1653         * predict.def (PRED_LOOP_ITERATIONS): Update comment.
1654         (PRED_LOOP_ITERATIONS_GUESSED): New.
1655         * cfgloop.c (record_loop_exits): Do nothing if there are no loops.
1656         * cfgloop.h (estimate_numbers_of_iterations_loop,
1657         estimated_loop_iterations_int): Declare.
1658
1659 2007-02-25  Mark Mitchell  <mark@codesourcery.com>
1660
1661         * doc/extend.texi: Document optional priority argument to
1662         constructors and destructors.
1663         * tree.c (init_priority_for_decl): Adjust GTY markers.
1664         (init_ttree): Use priority-info hash functions for
1665         init_priority_for_decl.
1666         (tree_map_eq): Rename to ...
1667         (tree_map_base_eq): ... this.
1668         (tree_map_marked_p): Rename to ...
1669         (tree_map_base_marked_p): ... this.
1670         (tree_map_base_hash): New function.
1671         (decl_init_priority_lookup): Rework.
1672         (decl_fini_priority_lookup): New function.
1673         (decl_priority_info): New function.
1674         (decl_init_priority_insert): Use it.
1675         (decl_fini_priority_insert): Likewise.
1676         (decl_restrict_base_lookup): Adjust for refactoring of tree_map
1677         hierarchy.
1678         (decl_restrict_base_insert): Likewise.
1679         (decl_debug_expr_insert): Likewise.
1680         (decl_value_expr_lookup): Likewise.
1681         (decl_value_expr_insert): Likewise.
1682         * tree.h (priority_type): New type.
1683         (decl_init_priority_lookup): Use priority_type.
1684         (decl_fini_priority_lookup): New function.
1685         (decl_init_priority_insert): Use priority_type.
1686         (decl_fini_priority_insert): New function.
1687         (DECL_HAS_INIT_PRIORITY): Tweak comments.
1688         (DECL_INIT_PRIORITY): Likewise.
1689         (SET_DECL_INIT_PRIORITY): Add comment.
1690         (DECL_FINI_PRIORITY): New macro.
1691         (SET_DECL_FINI_PRIORITY): Likewise.
1692         (DEFAULT_INIT_PRIORITY): Document.
1693         (MAX_INIT_PRIORITY): Likewise.
1694         (MAX_RESERVED_INIT_PRIORITY): Likewise.
1695         (tree_map_base): New type.
1696         (tree_map_base_eq): New function.
1697         (tree_map_base_hash): Likewise.
1698         (tree_map_base_marked_p): Likewise.
1699         (tree_map): Inherit from tree_map_base.
1700         (tree_map_eq): Make it a macro.
1701         (tree_map_marked_p): Likewise.
1702         (tree_int_map): Inherit from tree_map_base.
1703         (tree_int_map_eq): Make it a macro.
1704         (tree_int_map_hash): Likewise.
1705         (tree_int_map_marked_p): Likewise.
1706         (tree_priority_map): New type.
1707         (tree_priority_map_eq): New macro.
1708         (tree_priority_map_hash): Likewise.
1709         (tree_priority_map_marked_p): Likewise.
1710         * varasm.c (emults_decl): Adjust for refactoring of tree_map
1711         hierarchy.
1712         (emutls_common_1): Likewise.
1713         * lambda-code.c (replace_uses_equiv_to_x_with_y): Likewise.
1714         * tree-ssa-structalias.c (heapvar_lookup): Adjust for refactoring
1715         of tree_map hierarchy.
1716         * tree-cfg.c (move_stmt_r): Likewise.
1717         (new_label_mapper): Likewise.
1718         * c-tree.h (c_expand_body): Move to ...
1719         * c-common.h (c_expand_body): ... here.
1720         * c-decl.c (c_expand_body): Move to ...
1721         * c-common.c (c_expand_body): ... here.
1722         (c_common_attribute_table): Allow 1 argument for the constructor
1723         and destructor attributes.
1724         (get_priority): New function.
1725         (handle_constructor_attribute): Set DECL_INIT_PRIORITY.
1726         (handle_destructor_attribute): Set DECL_FINI_PRIORITY.
1727
1728 2007-02-24  Jan Hubicka  <jh@suse.cz>
1729
1730         PR middle-end/30509
1731         * tree-inline.c (copy_bb): Produce exact copy of EH info when copying for inlining.
1732
1733 2007-02-24  Uros Bizjak  <ubizjak@gmail.com>
1734             Jan Hubicka  <jh@suse.cz>
1735
1736         PR target/30778
1737         * i386.c (counter_mode): New function.
1738         (expand_set_or_movmem_via_loop): Use it.
1739         (expand_movmem_epilogue): Likewise; fix pasto.
1740         (ix86_expand_movmem): Do emit guard even for constant counts.
1741         (ix86_expand_setmem): Likewise.
1742
1743 2007-02-25  Nick Clifton  <nickc@redhat.com>
1744
1745         * config/frv/frv.h (ASM_OUTPUT_CASE_LABEL): Delete.
1746         (JUMP_TABLES_IN_TEXT_SECTION): Define.
1747
1748 2007-02-24  Uros Bizjak  <ubizjak@gmail.com>
1749
1750         PR target/30770
1751         * config/i386/i386.md (expand_movmem_epilogue): Fix typo, mask
1752         count argument with 0x10, not with 0x16.
1753         (expand_setmem_epilogue): Ditto.
1754
1755 2007-02-24  Mike Stump  <mrs@apple.com>
1756
1757         * config/i386/i386.c (output_pic_addr_const): Stubify optimized
1758         symbols.
1759
1760 2007-02-24  Richard Guenther  <rguenther@suse.de>
1761
1762         PR middle-end/30951
1763         * fold-const.c (fold_binary): Fold x +- CST op x for
1764         EQ_EXPR and NE_EXPR.
1765
1766 2007-02-24  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
1767
1768         * pa.md (muldi3): Force subregs to registers in 64-bit expander.
1769
1770 2007-02-24  Jan Hubicka  <jh@suse.cz>
1771
1772         * cgraphunit.c (decide_is_function_needed): Honor
1773         -fkeep-inline-functions.
1774
1775 2007-02-24  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
1776
1777         * builtins.c (fold_builtin_modf): New.
1778         (fold_builtin_2): Use it.
1779
1780 2007-02-24  Bernd Schmidt  <bernd.schmidt@analog.com>
1781
1782         * loop-iv.c (implies_p): Detect additional cases where A implies B.
1783         (determine_max_iter): Take additional LOOP arg; all callers changed.
1784         Lose broken logic dealing with PLUS.  Try to limit the upper bound by
1785         one using simplifications.
1786         (simplify_using_initial_values): Return if the expression becomes
1787         invalid due to altered regs.
1788
1789 2007-02-23  DJ Delorie  <dj@redhat.com>
1790
1791         * doc/tm.h (BIGGEST_ALIGNMENT): Clarify the purpose of this macro.
1792
1793 2007-02-23  Mike Stump  <mrs@apple.com>
1794
1795         * tlink.c (scan_linker_output): Parse linker messages from
1796         darwin9's linker better.
1797
1798 2007-02-23  Steve Ellcey  <sje@cup.hp.com>
1799
1800         PR debug/29614
1801         * varpool.c (varpool_assemble_pending_decls):  Set
1802         varpool_last_needed_node to null.
1803
1804 2007-02-23  DJ Delorie  <dj@redhat.com>
1805
1806         * config/i386/i386.c (ix86_data_alignment): Don't specify an
1807         alignment bigger than the object file can handle.
1808
1809 2007-02-23  Uros Bizjak  <ubizjak@gmail.com>
1810
1811         PR target/30825
1812         * config/i386/i386.md (*movdi_1_rex64, zero_extendsidi2_32,
1813         zero_extendsidi2_rex64): Penalize MMX register<->memory moves.
1814         (*movsf_1): Penalize MMX moves.
1815
1816 2007-02-23  Bernd Schmidt  <bernd.schmidt@analog.com>
1817
1818         * config/bfin/bfin.md (doloop_end): Fail for loops that can iterate
1819         2^32-1 or more times unless flag_unsafe_loop_optimizations.
1820
1821         * loop-iv.c (determine_max_iter): Moved in front of its sole user.
1822
1823 2007-02-23  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
1824
1825         * builtins.c (fold_builtin_logb, fold_builtin_significand): New.
1826         (fold_builtin_1): Use them.
1827         * fold-const.c (tree_expr_nonnegative_warnv_p): Handle
1828         BUILT_IN_SIGNIFICAND.
1829
1830 2007-02-23  H.J. Lu  <hongjiu.lu@intel.com>
1831
1832         * config/i386/i386.c (bdesc_1arg): Initialize
1833         IX86_BUILTIN_MOVSHDUP and IX86_BUILTIN_MOVSLDUP with
1834         "__builtin_ia32_movshdup" and "__builtin_ia32_movsldup".
1835         (ix86_init_mmx_sse_builtins): Remove IX86_BUILTIN_MOVSHDUP
1836         and IX86_BUILTIN_MOVSLDUP.
1837
1838 2007-02-22  Paolo Bonzini  <bonzini@gnu.org>
1839
1840         PR rtl-optimization/30841
1841         * fwprop.c (propagate_rtx_1): Accept a VOIDmode replacement address.
1842
1843 2007-02-22  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
1844
1845         * builtins.c (fold_builtin_frexp): New.
1846         (fold_builtin_2): Use it.
1847
1848 2007-02-22  Mark Mitchell  <mark@codesourcery.com>
1849
1850         * doc/invoke.texi (Spec Files): Document getenv spec function.
1851
1852         * gcc.c (getenv_spec_function): New function.
1853         (static_spec_functions): Add it.
1854         * config/vxworks.h (VXWORKS_TARGET_DIR): Remove.
1855         (VXWORKS_ADDITIONAL_CPP_SPEC): Use getenv to find the VxWorks
1856         header files.
1857
1858 2007-02-22  Michael Matz  <matz@suse.de
1859
1860         PR c++/29433
1861         * dwarf2out.c (add_AT_string): Call ggc_strdup once per string.
1862         (type_tag): Use lang_hooks.dwarf_name instead of DECL_NAME.
1863
1864 2007-02-22  Ian Lance Taylor  <iant@google.com>
1865
1866         PR debug/30898
1867         * dwarf2out.c (concatn_mem_loc_descriptor): New static function.
1868         (mem_loc_descriptor): Call it.
1869
1870 2007-02-22  Zdenek Dvorak  <dvorakz@suse.cz>
1871             Ira Rosen  <irar@il.ibm.com>
1872
1873         * tree-data-ref.c (ptr_ptr_may_alias_p): Take alias sets into account.
1874
1875 2007-02-22  Ira Rosen  <irar@il.ibm.com>
1876
1877         PR tree-optimization/30843
1878         * tree-vect-transform.c (vect_transform_loop): Remove strided scalar
1879         stores only after all the group is vectorized.
1880
1881 2007-02-22  Dorit Nuzman  <dorit@il.ibm.com>
1882
1883         PR tree-optimization/30858
1884         * tree-vectorizer.c (vect_is_simple_reduction): Check that the stmts
1885         in the reduction cycle have a single use in the loop.
1886         * tree-vectorizer.h (relevant): Add documentation.
1887
1888 2007-02-20  Mike Stump  <mrs@apple.com>
1889
1890         * configure.ac (powerpc*-*-darwin*): #include <sys/cdefs.h>.
1891         * configure: Regenerate.
1892
1893 2007-02-21  Trevor Smigiel  <trevor_smigiel@playstation.sony.com>
1894
1895         Change the defaults of some parameters and options.
1896         * config/spu/spu-protos.h (spu_optimization_options): Declare.
1897         * config/spu/spu.c (spu_optimization_options): Add.
1898         (spu_override_options): Change params in spu_optimization_options.
1899         * config/spu/spu.h (OPTIMIZATION_OPTIONS): Define.
1900
1901         Register 127 is only 16 byte aligned when used as a frame pointer.
1902         * config/spu/spu-protos.h (spu_init_expanders): Declare.
1903         * config/spu/spu.c (spu_expand_prologue): Set REGNO_POINTER_ALIGN for
1904         HARD_FRAME_POINTER_REGNUM.
1905         (spu_legitimate_address):  Use regno_aligned_for_reload.
1906         (regno_aligned_for_load):  HARD_FRAME_POINTER_REGNUM is only 16 byte
1907         aligned when frame_pointer_needed is true.
1908         (spu_init_expanders): New.  Set alignment of HARD_FRAME_POINTER_REGNUM
1909         to 8 bits.
1910         * config/spu/spu.h (INIT_EXPANDERS): Define.
1911
1912         Make sure shift and rotate instructions have valid immediate operands.
1913         * config/spu/predicates.md (spu_shift_operand): Remove.
1914         * config/spu/spu.c (print_operand): Add [efghEFGH] modifiers.
1915         * config/spu/constraints.md (W, O): Extend range.
1916         * config/spu/spu.md (umask, nmask): Define.
1917         (ashl<mode>3, ashldi3, ashlti3_imm, shlqbybi_ti, shlqbi_ti, shlqby_ti,
1918         lshr<mode>3, rotm_<mode>, lshr<mode>3_imm, rotqmbybi_<mode>,
1919         rotqmbi_<mode>, rotqmby_<mode>, ashr<mode>3, rotma_<mode>,
1920         rotl<mode>3, rotlti3, rotqbybi_ti, rotqby_ti, rotqbi_ti): Use
1921         spu_nonmem_operand instead of spu_shift_operands.  Use new modifiers.
1922         (lshr<mode>3_reg):  Fix rtl description.
1923
1924         Make sure mulhisi immediate operands are valid.
1925         * config/spu/predicates.md (imm_K_operand): Add.
1926         * config/spu/spu.md (mulhisi3_imm, umulhisi3_imm): Use imm_K_operand.
1927
1928         Generate constants using fsmbi and andi.
1929         * config/spu/spu.c (enum immediate_class): Add IC_FSMBI2.
1930         (print_operand, spu_split_immediate, classify_immediate,
1931         fsmbi_const_p): Handle IC_FSMBI2.
1932
1933         Correctly handle a CONST_VECTOR containing symbols.
1934         * config/spu/spu.c (print_operand): Handle HIGH correctly.
1935         (spu_split_immediate): Split CONST_VECTORs with -mlarge-mem.
1936         (immediate_load_p): Allow symbols that use 2 instructions to create.
1937         (classify_immediate, spu_builtin_splats):  Don't accept a CONST_VECTOR
1938         with symbols when flag_pic is set.
1939         (const_vector_immediate_p): New.
1940         (logical_immediate_p, iohl_immediate_p, arith_immediate_p): Don't
1941         accept a CONST_VECTOR with symbols.
1942         (spu_legitimate_constant_p): Use const_vector_immediate_p.  Don't
1943         accept a CONST_VECTOR with symbols when flag_pic is set.  Handle HIGH
1944         correctly.
1945         * config/spu/spu.md (high, low): Delete.
1946         (low_<mode>): Define.
1947
1948         Remove INTRmode and INTR_REGNUM, which didn't work.
1949         * config/spu/spu.c (spu_conditional_register_usage): Remove reference
1950         of INTR_REGNUM.
1951         * config/spu/spu-builtins.md (spu_idisable, spu_ienable, set_intr,
1952         set_intr_pic, set_intr_cc, set_intr_cc_pic, set_intr_return, unnamed
1953         peephole2 pattern): Don't use INTR or 131.
1954         (movintrcc): Delete.
1955         * config/spu/spu.h (FIRST_PSEUDO_REGISTER, FIXED_REGISTERS,
1956         CALL_USED_REGISTERS, REGISTER_NAMES, INTR_REGNUM): Remove INTR_REGNUM.
1957         * config/spu/spu.md (UNSPEC_IDISABLE, UNSPEC_IENABLE): Remove.
1958         (UNSPEC_SET_INTR): Add.
1959         * config/spu/spu-modes.def (INTR): Remove.
1960
1961         More accurate warnings about run-time relocations.
1962         * config/spu/spu.c (reloc_diagnostic): Test in_section.
1963
1964         Correctly warn about immediate arguments to specific intrinsics.
1965         * config/spu/spu.c (spu_check_builtin_parm): Handle CONST_VECTORs.
1966         (spu_expand_builtin_1): Call spu_check_builtin_parm before checking
1967         the instruction predicate.
1968
1969         Fix tree check errors with latest update.
1970         * config/spu/spu.c (expand_builtin_args, spu_expand_builtin_1): Use
1971         CALL_EXPR_ARG.
1972         (spu_expand_builtin): Use CALL_EXPR_FN.
1973
1974         Add missing specific intrinsics.
1975         * config/spu/spu-builtins.def: Add si_bisled, si_bisledd and
1976         si_bislede.
1977         * config/spu/spu_internals.h: Ditto.
1978
1979         Fix incorrect operand modifiers.
1980         * config/spu/spu-builtins.md (spu_mpy, spu_mpyu):  Remove use of %H.
1981         * config/spu/spu.md (xor<mode>3):  Change %S to %J.
1982
1983         Optimize one case of zero_extend of a vec_select.
1984         * config/spu/spu.md (_vec_extractv8hi_ze):  Add.
1985
1986         Accept any immediate for hbr.
1987         * config/spu/spu.md (hbr):  Change s constraints to i.
1988
1989 2007-02-21  Paul Brook  <paul@codesourcery.com>
1990
1991         * config/arm/arm.c (thumb2_final_prescan_insn): Don't incrememnt
1992         condexec_count when skipping USE and CLOBBER.
1993
1994 2007-02-21  Nick Clifton  <nickc@redhat.com>
1995
1996         * common.opt (Warray-bounds): Add Warning attribute.
1997         (Wstrict-overflow, Wstrict-overflow=, Wcoverage-mismatch):
1998         Likewise.
1999         (fsized-zeroes): Add Optimization attribute.
2000         (fsplit-wide-types, ftree-scev-cprop): Likewise.
2001         * c.opt (Wc++0x-compat): Add Warning attribute.
2002
2003 2007-02-21  Ulrich Weigand  <uweigand@de.ibm.com>
2004
2005         PR middle-end/30761
2006         * reload1.c (eliminate_regs_in_insn): In the single_set special
2007         case, attempt to re-recognize the insn before falling back to
2008         having reload fix it up.
2009
2010 2007-02-20  Eric Christopher  <echristo@gmail.com>
2011
2012         * config/frv/frv.c (frv_read_argument): Take a tree and int argument.
2013         Rewrite accordingly.
2014         (frv_read_iacc_argument): Ditto.
2015         (frv_expand_set_builtin): Take a call instead of arglist, update for
2016         above changes.
2017         (frv_expand_unop_builtin): Ditto.
2018         (frv_expand_binop_builtin): Ditto.
2019         (frv_expand_cut_builtin): Ditto.
2020         (frv_expand_binopimm_builtin): Ditto.
2021         (frv_expand_voidbinop_builtin): Ditto.
2022         (frv_expand_int_void2arg): Ditto.
2023         (frv_expand_prefetches): Ditto.
2024         (frv_expand_voidtriop_builtin): Ditto.
2025         (frv_expand_voidaccop_builtin): Ditto.
2026         (frv_expand_load_builtin): Ditto.
2027         (frv_expand_store_builtin): Ditto.
2028         (frv_expand_mdpackh_builtin): Ditto.
2029         (frv_expand_mclracc_builtin): Ditto.
2030         (frv_expand_mrdacc_builtin): Ditto.
2031         (frv_expand_mwtacc_builtin): Ditto.
2032         (frv_expand_builtin): Remove usage of CALL_EXPR_ARGS, update
2033         calls for above.
2034
2035 2007-02-20  Janis Johnson  <janis187@us.ibm.com>
2036
2037         * doc/invoke.texi (RS/6000 and PowerPC Options): Add -mcmpb and -mdfp.
2038         * configure.ac (HAVE_GAS_CMPB): Check for assembler support of the
2039         cmpb instruction.
2040         (HAVE_GAS_DFP): Check for assembler support of decimal floating
2041         point instructions.
2042         * configure: Regenerate.
2043         * config.in: Regenerate.
2044         * config/rs6000/rs6000.opt (mcmpb, mdfp): New.
2045         * config/rs6000/rs6000.c (rs6000_override_options): Add CMPB and DFP
2046         masks to power6 and power6x and to POWERPC_MASKS.
2047         * config/rs6000/rs6000-c.c (rs6000_cpu_cpp_builtins): Define
2048         _ARCH_PWR6.
2049         * config/rs6000/rs6000.h: Check assembler support for CMPB and DFP.
2050         * config/rs6000/sysv4.opt (mprototype): Use variable, not mask.
2051         * config/rs6000/linux64.h (SUBSUBTARGET_OVERRIDE_OPTIONS):
2052         Access PROTOTYPE as variable, not mask.
2053
2054 2007-02-20  Steven Bosscher  <steven@gcc.gnu.org>
2055
2056         * rtl.h (remove_reg_equal_equiv_notes): New prototype.
2057         * rtlanal.c (remove_reg_equal_equiv_notes): New function.
2058         * combine.c (adjust_for_new_dest): Use it.
2059         * postreload.c (reload_combine): Likewise.
2060
2061 2007-02-20  Steven Bosscher  <steven@gcc.gnu.org>
2062
2063         * rtlanal.c (find_reg_equal_equiv_note): Do not find REG_EQ*
2064         notes on an insn with multiple sets, even if single_set returns
2065         non-NULL for that insn.
2066
2067 2007-02-20  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
2068
2069         * fold-const.c (tree_expr_nonnegative_warnv_p): Handle scalb,
2070         scalbn and scalbln.
2071
2072 2007-02-20  Geoffrey Keating  <geoffk@apple.com>
2073
2074         * config/darwin.h (LINK_SPEC): Default -mmacosx-version-min only
2075         if user didn't pass it.
2076         * config/i386/darwin.h (CC1_SPEC): Likewise.
2077         * config/rs6000/darwin.h (CC1_SPEC): Likewise.
2078         (DARWIN_MINVERSION_SPEC): Don't depend on user's setting of
2079         -mmacosx-version-min.
2080
2081 2007-02-20  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
2082             Uros Bizjak  <ubizjak@gmail.com>
2083
2084         * optabs.h (enum optab_index): Add new OTI_scalb.
2085         (scalb_optab): Define corresponding macro.
2086         * optabs.c (init_optabs): Initialize scalb_optab.
2087         * genopinit.c (optabs): Implement scalb_optab using scalb?f3
2088         patterns.
2089         * builtins.c (expand_builtin_mathfn_2, expand_builtin): Handle
2090         BUILT_IN_SCALB{,F,L}, BUILT_IN_SCALBN{,F,L} and BUILT_IN_SCALBLN{,F,L}.
2091         (expand_builtin): Expand BUILT_IN_SCALB{,F,L}, BUILT_IN_SCALBN{,F,L}
2092         and BUILT_IN_SCALBLN{,F,L} using expand_builtin_mathfn_2 if
2093         flag_unsafe_math_optimizations is set.
2094
2095         * config/i386/i386.md (scalbxf3, scalb<mode>3): New expanders
2096         to implement scalbf, scalb and scalbl built-ins as inline x87
2097         intrinsics.
2098
2099 2007-02-20  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
2100             DJ Delorie <dj@redhat.com>
2101
2102         PR other/30824
2103         * diagnostic.c (diagnostic_count_diagnostic): Move -Werror logic to...
2104         (diagnostic_report_diagnostic): ... here, and turn them into real
2105         errors. If warnings are inhibited, no need to do anything.
2106
2107 2007-02-20  Uros Bizjak  <ubizjak@gmail.com>
2108
2109         * config/i386/i386.md (expm1xf2): Reorder insn sequence for
2110         better code generation.
2111
2112 2007-02-20  Ben Elliston  <bje@au.ibm.com>
2113
2114         * config/m68hc11/m68hc11.h (OVERRIDE_OPTIONS): Remove extra ;.
2115
2116 2007-02-20  Kazu Hirata  <kazu@codesourcery.com>
2117
2118         * config/alpha/alpha.c, config/alpha/alpha.md,
2119         config/alpha/lib1funcs.asm, config/alpha/vms-crt0-64.c,
2120         config/alpha/vms-psxcrt0-64.c, config/arc/arc.c,
2121         config/arc/arc.h, config/arm/arm.c, config/arm/arm.md,
2122         config/arm/lib1funcs.asm: Follow spelling conventions.
2123
2124         * config/c4x/c4x.md, config/cris/cris.c, config/crx/crx.c,
2125         config/fr30/fr30.md, config/i386/i386.h,
2126         config/iq2000/iq2000.h, config/iq2000/predicates.md,
2127         config/pa/milli64.S, config/pa/pa.c, config/pa/pa.h,
2128         config/pa/pa.md, config/pa/pa32-regs.h, config/pa/pa64-regs.h,
2129         config/pdp11/pdp11.c, config/pdp11/pdp11.h,
2130         config/rs6000/altivec.md, config/rs6000/rs6000.c,
2131         config/s390/s390-modes.def, config/sparc/netbsd-elf.h,
2132         config/sparc/sparc.c, config/sparc/sparc.h,
2133         config/sparc/sparc.md, config/spu/constraints.md,
2134         config/spu/spu.c, config/stormy16/stormy16.md: Follow spelling
2135         conventions.
2136
2137 2007-02-20  Alan Modra  <amodra@bigpond.net.au>
2138
2139         PR target/29943
2140         * varasm.c (use_blocks_for_decl_p): Return false for decls with
2141         alias attribute.
2142
2143 2007-02-19  Kazu Hirata  <kazu@codesourcery.com>
2144
2145         * doc/invoke.texi (-ftree-lrs): Remove.
2146
2147 2007-02-19  Diego Novillo  <dnovillo@redhat.com>
2148
2149         * tree-ssa-pre.c (create_value_expr_from): Initialize POOL to
2150         NULL.
2151
2152 2007-02-19  Lee Millward  <lee.millward@codesourcery.com>
2153
2154         * config/ia64/ia64.c (ia64_expand_builtin): Use the
2155         new CALL_EXPR_FN macro for retrieving the function
2156         declaration of the input expression.
2157
2158 2007-02-19  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
2159
2160         * c.opt (Waddress): New.
2161         * common.opt (Walways-true): Delete.
2162         (Wstring-literal-comparison): Delete.
2163         * doc/invoke.texi (Warning Options): Delete -Walways-true and
2164         -Wstring-literal-comparison. Add -Waddress.
2165         (Waddress): New.
2166         (Walways-true): Delete.
2167         (Wstring-literal-comparison): Delete.
2168         * doc/extend.texi (#pragma GCC diagnostic): Use -Wformat
2169         consistently instead of -Walways-true in example.
2170         * c-opts.c (c_common_handle_option): -Waddress is enabled by -Wall.
2171         * c-typeck.c (parser_build_binary_op): Replace
2172         -Wstring-literal-comparison and -Walways-true with -Waddress.
2173         * c-common.c (c_common_truthvalue_conversion): Replace -Walways-true
2174         with -Waddress.
2175
2176 2007-02-19  Eric Botcazou  <ebotcazou@adacore.com>
2177
2178         * tree-cfg.c (dump_function_to_file): Be prepared for functions
2179         without DECL_STRUCT_FUNCTION initialized.
2180
2181 2007-02-19  Eric Botcazou  <ebotcazou@adacore.com>
2182
2183         * gimplify.c (gimplify_init_ctor_preeval_1): Detect potential overlap
2184         due to calls to functions taking pointers as parameters.
2185
2186 2007-02-19  Richard Henderson  <rth@redhat.com>
2187
2188         PR debug/29558
2189         * var-tracking.c (track_expr_p): Disallow AGGREGATE_TYPE_P
2190         in memory.
2191
2192 2007-02-19  Andreas Krebbel  <krebbel1@de.ibm.com>
2193
2194         * config/s390/s390.c (s390_call_saved_register_used,
2195         s390_function_ok_for_sibcall): Adjust the way CALL_EXPR arguments are
2196         accessed to the new scheme.
2197
2198 2007-02-19  Jan-Benedict Glaw  <jbglaw@lug-owl.de>
2199
2200         * config/cris/cris.c (cris_movem_load_rest_p, cris_store_multiple_op_p)
2201         (cris_print_index, cris_print_operand, cris_print_operand_address)
2202         (cris_reload_address_legitimized, cris_rtx_costs, cris_address_cost)
2203         (cris_side_effect_mode_ok, cris_valid_pic_const, cris_split_movdx)
2204         (cris_expand_pic_call_address): Use xxx_P predicate macros instead of
2205         GET_CODE () == xxx.
2206         * config/cris/cris.h (SECONDARY_RELOAD_CLASS, EXTRA_CONSTRAINT_Q,
2207         EXTRA_CONSTRAINT_T, BDAP_INDEX_P, BIAP_INDEX_P, SIMPLE_ADDRESS_P,
2208         GO_IF_LEGITIMATE_ADDRESS): Ditto.
2209         * config/cris/cris.md (define_insns: *btst, movdi, *mov_side<mode>)
2210         (*mov_sidesisf, *mov_side<mode>_mem, *mov_sidesisf_mem)
2211         (*clear_side<mode>, movsi, *movsi_internal, *ext_sideqihi)
2212         (*ext_side<mode>si, *op_side<mode>, *op_swap_side<mode>, addsi3)
2213         (*extopqihi_side, *extop<mode>si_side, *extopqihi_swap_side)
2214         (*extop<mode>si_swap_side, addi_mul, *addi,andsi3, andhi3, ashl<mode>3)
2215         (uminsi3, call, call_value): Ditto.
2216         (define_split: indir_to_reg_split, unnamed): Ditto.
2217
2218 2007-02-19  Dorit Nuzman  <dorit@il.ibm.com>
2219
2220         PR tree-optimization/30975
2221         * tree-vect-trasnform.c (vect_get_vec_def_for_stmt_copy): Remove
2222         wrong assert.
2223
2224 2007-02-18  Eric Christopher  <echristo@gmail.com>
2225
2226         * mips.c (mips_prepare_builtin_arg): Add argnum parameter.
2227         Remove use of arglist.
2228         (mips_expand_builtin): Remove use of arglist, pass in expr.
2229         (mips_expand_builtin_direct): Rewrite handling for arglist removal.
2230         (mips_expand_builtin_movtf): Ditto.
2231         (mips_expand_builtin_compare): Ditto.
2232
2233 2007-02-19  Alexandre Oliva  <aoliva@redhat.com>
2234
2235         * tree-sra.c (sra_build_assignment): Replace assertion
2236         checking with a comment explaining why it can't be done.
2237
2238 2007-02-18  Sandra Loosemore  <sandra@codesourcery.com>
2239
2240         PR middle-end/30833
2241         * tree-dump.c (dequeue_and_dump): Add tcc_vl_exp case missed
2242         during CALL_EXPR representation conversion.
2243         * tree-ssa-propagate.c (set_rhs): Likewise.
2244
2245 2007-02-19  Alexandre Oliva  <aoliva@redhat.com>
2246
2247         * tree-sra.c (sra_build_assignment): Disable assertion checking
2248         for now.
2249
2250 2007-02-18  Roger Sayle  <roger@eyesopen.com>
2251
2252         * function.c (gimplify_parameters): Call build_gimple_modify_stmt
2253         instead of calling build2 with a GIMPLE_MODIFY_STMT.
2254         * gimple-low.c (lower_function_body, lower_builtin_setjmp):
2255         Likewise.
2256         * gimplify.c (build_stack_save_restore, gimplify_return_expr,
2257         gimplify_decl_expr,  gimplify_self_mod_expr, gimplify_cond_expr,
2258         gimplify_init_ctor_eval_range, gimple_push_cleanup,
2259         gimplify_omp_for, gimplify_omp_atomic_pipeline,
2260         gimplify_omp_atomic_mutex, gimplify_expr, gimplify_one_sizepos,
2261         force_gimple_operand): Likewise.
2262         * ipa-cp.c (constant_val_insert): Likewise.
2263         * lambda-code.c (lbv_to_gcc_expression, lle_to_gcc_expression,
2264         lambda_loopnest_to_gcc_loopnest, replace_uses_equiv_to_x_with_y,
2265         perfect_nestify): Likewise.
2266         * langhooks.c (lhd_omp_assignment): Likewise.
2267         * omp-low.c (lower_rec_input_clauses, lower_reduction_clauses,
2268         lower_copyprivate_clauses, lower_send_clauses,
2269         lower_send_shared_vars, expand_parallel_call,
2270         expand_omp_for_generic, expand_omp_for_static_nochunk,
2271         expand_omp_for_static_chunk, expand_omp_sections,
2272         lower_omp_single_copy, lower_omp_for_lastprivate,
2273         lower_omp_parallel, init_tmp_var, save_tmp_var): Likewise.
2274         * value-prof.c (tree_divmod_fixed_value, tree_mod_pow2,
2275         tree_mod_subtract, tree_ic, tree_stringop_fixed_value):
2276         Likewise.
2277
2278 2007-02-19  Kazu Hirata  <kazu@codesourcery.com>
2279
2280         * config/sh/divtab.c, config/sh/sh.c, config/sh/sh.h,
2281         config/sh/sh.md: Follow spelling conventions.
2282
2283         * config/frv/frv.c, config/frv/frv.h, config/frv/frv.md,
2284         config/frv/predicates.md: Follow spelling conventions.
2285
2286         * config/m68k/linux-unwind.h: Fix a comment typo.
2287         * target.h: Follow spelling conventions.
2288
2289 2007-02-18  Roger Sayle  <roger@eyesopen.com>
2290
2291         PR rtl-optimization/28173
2292         * simplify-rtx.c (simplify_binary_operation_1) <IOR>:  Optimize
2293         (X & C1) | C2 as C2 when (C1 & C2) == C1 and X has no side-effects.
2294         Optimize (X & C1) | C2 as X | C2 when (C1 | C2) == ~0.
2295         Canonicalize (X & C1) | C2 as (X & (C1 & ~C2)) | C2.
2296         <AND>: Canonicalize (X | C1) & C2 as (X & C2) | (C1 & C2).
2297
2298 2007-02-18  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
2299
2300         * builtins.c (fold_builtin_load_exponent): New.
2301         (fold_builtin_2): Use it.
2302
2303 2007-02-18  Steven Bosscher  <steven@gcc.gnu.org>
2304
2305         PR rtl-optimization/30773
2306         * local-alloc.c (update_equiv_regs): Do not set reg_equiv_init
2307         if we fail to attach a REG_EQUIV note.
2308
2309 2007-02-18  David Edelsohn  <edelsohn@gnu.org>
2310             Roger Sayle  <roger@eyesopen.com>
2311
2312         * config/rs6000/rs6000.md (bswapsi2): New define_insn and splitter.
2313
2314 2007-02-18  Sandra Loosemore  <sandra@codesourcery.com>
2315
2316         * calls.c (initialize_argument_information): Pass original EXP
2317         and STRUCT_VALUE_ADDR_VALUE instead of a list of arguments.  Move
2318         code to split complex arguments here, as part of initializing the
2319         ARGS array.
2320         (expand_call): Remove code that builds a list of arguments and
2321         inserts implicit arguments into it.  Instead, just count how many
2322         implicit arguments there will be so we can determine the size of
2323         the ARGS array, and let initialize_argument_information do the work.
2324         (split_complex_values): Delete unused function.
2325
2326 2007-02-18  Eric Botcazou  <ebotcazou@adacore.com>
2327
2328         * tree-eh.c (tree_could_trap_p): Handle VIEW_CONVERT_EXPR.
2329
2330 2007-02-18  Eric Botcazou  <ebotcazou@adacore.com>
2331
2332         * calls.c (mem_overlaps_already_clobbered_arg_p): Return true
2333         for arg pointer based indexed addressing.
2334
2335 2007-02-18  Kazu Hirata  <kazu@codesourcery.com>
2336
2337         * config/ia64/ia64.h, config/ia64/ia64.md,
2338         config/ia64/predicates.md, config/ia64/sysv4.h: Follow
2339         spelling conventions.
2340
2341 2007-02-18  Roman Zippel <zippel@linux-m68k.org>
2342
2343         * config/m68k/m68k.c (split_di): New.
2344         * config/m68k/m68k-protos.h: Declare split_di.
2345         * config/m68k/m68k.md (extendsidi2*,ashldi3*,ashrdi3*,lshrdi3*):
2346           Improve predicate handling and split constant shifts.
2347
2348 2007-02-18  Roman Zippel <zippel@linux-m68k.org>
2349
2350         * config/m68k/m68k.md (extv,extzv,insv): disable dynamic
2351         parameter for register bitfield operations, general predicates
2352         cleanup
2353
2354 2007-02-18  Roman Zippel <zippel@linux-m68k.org>
2355
2356         * config/m68k/linux.h (MD_UNWIND_SUPPORT): Define.
2357         * config/m68k/linux-unwind.h: New file.
2358
2359 2007-02-18  Kazu Hirata  <kazu@codesourcery.com>
2360
2361         * cfgloop.c, config/alpha/alpha.c, config/bfin/bfin.c,
2362         config/i386/athlon.md, config/ia64/ia64.md,
2363         config/rs6000/rs6000.c, config/s390/s390.c, config/spu/spu.md,
2364         df-problems.c, df.h, fold-const.c, ipa-cp.c, ipa-inline.c,
2365         ipa-prop.h, see.c, struct-equiv.c, tree-inline.c,
2366         tree-ssa-loop-niter.c, tree-vect-analyze.c,
2367         tree-vect-transform.c: Fix comment typos.
2368
2369 2007-02-17  Kazu Hirata  <kazu@codesourcery.com>
2370
2371         * sched-deps.c (find_insn_list): Remove.
2372         * sched-int.h: Remove the prototype for find_insn_list.
2373
2374 2007-02-16  Geoffrey Keating  <geoffk@apple.com>
2375
2376         * config/darwin.h (LINK_SPEC): Always pass -macosx_version_min
2377         to linker.
2378         (DARWIN_EXTRA_SPECS): Add %(darwin_minversion).
2379         * config/rs6000/darwin.h (SUBTARGET_OVERRIDE_OPTIONS): Just call
2380         darwin_rs6000_override_options.
2381         (C_COMMON_OVERRIDE_OPTIONS): Expect
2382         darwin_macosx_version_min to be non-NULL always.
2383         (TARGET_C99_FUNCTIONS): Likewise.
2384         (CC1_SPEC): Always pass -mmacosx-version-min to cc1*.
2385         (DARWIN_MINVERSION_SPEC): New.
2386         * config/rs6000/rs6000.c (darwin_rs6000_override_options): New.
2387         * config/i386/darwin.h (CC1_SPEC): Always pass -mmacosx-version-min
2388         to cc1*.
2389         (DARWIN_MINVERSION_SPEC): New.
2390         * config/darwin.opt (mmacosx-version-min): Initialize to non-NULL
2391         value.
2392         * config/darwin-c.c (darwin_cpp_builtins): Expect
2393         darwin_macosx_version_min to be non-NULL always.
2394
2395         * config/rs6000/rs6000.c: Clean up trailing whitespace.
2396
2397 2007-02-16  Uros Bizjak  <ubizjak@gmail.com>
2398
2399         * config/i386/i386.h (x86_use_xchgb): New.
2400         (TARGET_USE_XCHGB): New macro.
2401         * config/i386/i386.c (x86_use_xchgb): Set for PENT4.
2402         * config/i386/i386.md (*rotlhi3_1 splitter, *rotrhi3_1 splitter):
2403         Split after reload into bswaphi for shifts of 8.
2404         (bswaphi_lowpart): Generate rolw insn for HImode byte swaps.
2405         (*bswaphi_lowpart_1): Generate xchgb for Q registers for TARGET_XCHGB
2406         or when optimizing for size.
2407
2408 2007-02-16  Richard Guenther  <rguenther@suse.de>
2409             Christian Bruel  <christian.bruel@st.com>
2410
2411         * fold-const.c (tree_swap_operands_p): Treat SSA_NAMEs like
2412         DECLs but prefer SSA_NAMEs over DECLs.
2413
2414 2007-02-16  Richard Guenther  <rguenther@suse.de>
2415
2416         * tree-flow-inline.h (single_imm_use_p): Remove.
2417         (zero_imm_uses_p): Likewise.
2418         * tree-ssa-coalesce.c (create_outofssa_var_map): Use has_single_use
2419         instead of single_imm_use_p.
2420         * tree-cfg.c (replace_uses_by): Use has_zero_use instead of
2421         zero_imm_uses_p.
2422
2423 2007-02-16  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
2424
2425         PR other/27843
2426         * Makefile.in (SYSTEM_HEADER_DIR): Use single quotes to avoid
2427         nested double- and backquotes.
2428
2429 2007-02-15  Roger Sayle  <roger@eyesopen.com>
2430
2431         PR middle-end/30391
2432         * tree.c (expr_align): Handle MODIFY_EXPR.  GIMPLE_MODIFY_STMT
2433         should be unreachable.
2434         (build2_stat): Allow construction of MODIFY_EXPR at any time.
2435         For the time being redirect GIMPLE_MODIFY_STMT to the new
2436         (renamed) build_gimple_modify_stmt_stat.
2437         (build2_gimple_stat): Rename to...
2438         (build_gimple_modify_stmt_stat): Now longer take a CODE argument.
2439         Always build a GIMPLE_MODIFY_STMT node.
2440         * tree.h (build2_gimple, build2_gimple_stat): Delete.
2441         (build_gimple_modify_stmt, build_gimple_modify_stmt_stat): New
2442         declarations.
2443
2444         * tree-cfg.c (factor_computed_gotos, tree_merge_blocks,
2445         gimplify_val): Use build_gimple_modify_stmt instead of build2_gimple.
2446         * tree-complex.c (set_component_ssa_name, expand_complex_move,
2447         expand_complex_div_wide): Likewise.
2448         * tree-ssa-dom.c (record_equivalences_from_stmt): Likewise.
2449         * tree-ssa-loop-im.c (schedule_sm): Likewise.
2450         * tree-ssa-loop-ivopts.c (rewrite_use_nonlinear_expr): Likewise.
2451         * tree-ssa-loop-manip.c (create_iv): Likewise.
2452         * tree-ssa-phiopt.c (conditional_replacement, minmax_replacement,
2453         abs_replacement): Likewise.
2454         * tree-ssa-pre.c (create_expression_by_pieces, poolify_modify_stmt,
2455         realify_fake_stores): Likewise.
2456
2457         * builtins.c (std_expand_builtin_va_start): Build a MODIFY_EXPR
2458         node rather than a GIMPLE_MODIFY_STMT node.
2459         (std_gimpify_va_arg_expr, expand_builtin_va_copy,
2460         fold_builtin_memset, fold_builtin_memory_op, do_mpfr_sincos):
2461         Likewise.
2462         (integer_valued_real_p): Handle MODIFY_EXPR, not GIMPLE_MODIFY_STMT.
2463         * expr.c (expand_expr_real_1): Handle both MODIFY_EXPR and
2464         GIMPLE_MODIFY_STMT.
2465
2466 2007-02-15  Andrew Pinski  <andrew_pinski@playstation.sony.com>
2467
2468         PR middle-end/30433
2469         * fold-const.c (fold_comparison): Add back the
2470         folding of constant complex comparisions.
2471
2472 2007-02-15  Andrew Pinski  <andrew_pinski@playstation.sony.com>
2473
2474         PR middle-end/30729
2475         * stmt.c (warn_if_unused_value): VA_ARG_EXPR has side
2476         effects unknown to this function, return early.
2477
2478 2007-02-15  Ian Lance Taylor  <iant@google.com>
2479
2480         * lower-subreg.c (move_eh_region_note): New static function.
2481         (resolve_simple_move): Call it.
2482         (decompose_multiword_subregs): Track blocks for which we resolve a
2483         simple move which is also a control flow insn.  Pass them to
2484         find_many_sub_basic_blocks.
2485         (pass_lower_subreg): Add TODO_verify_flow.
2486         (pass_lower_subreg2): Likewise.
2487
2488 2007-02-15  Sandra Loosemore  <sandra@codesourcery.com>
2489             Brooks Moses  <brooks.moses@codesourcery.com>
2490             Lee Millward  <lee.millward@codesourcery.com>
2491
2492         * tree.h (enum tree_code_class): Add tcc_vl_exp.
2493         (VL_EXP_CLASS_P): New.
2494         (TREE_OPERAND_CHECK): Use TREE_OPERAND_LENGTH instead of
2495         TREE_CODE_LENGTH.
2496         (TREE_OPERAND_CHECK_CODE): Likewise.
2497         (GIMPLE_STMT_OPERAND_CHECK): Likewise.
2498         (TREE_RTL_OPERAND_CHECK): Likewise.
2499         (tree_operand_check_failed): Make second parameter the whole tree
2500         instead of its code.  Fixed callers.
2501         (VL_EXP_CHECK): New.
2502         (TREE_OPERAND_LENGTH): New.
2503         (VL_EXP_OPERAND_LENGTH): New.
2504         (CALL_EXPR_FN): New.
2505         (CALL_EXPR_STATIC_CHAIN): New.
2506         (CALL_EXPR_ARGS): New.
2507         (CALL_EXPR_ARG): New.
2508         (call_expr_nargs): New.
2509         (CALL_EXPR_ARGP): New.
2510         (build_nt_call_list): Declare.
2511         (build_vl_exp_stat): Declare.
2512         (build_vl_exp): New.
2513         (build_call_list): Declare.
2514         (build_call_nary): Declare.
2515         (build_call_valist): Declare.
2516         (build_call_array): Declare.
2517         (call_expr_arg): Declare.
2518         (call_expr_argp): Declare.
2519         (call_expr_arglist): Declare.
2520         (fold_build_call_list): Declare.
2521         (fold_build_call_list_initializer): Declare.
2522         (fold_call_expr): Declare to replace fold_builtin.
2523         (fold_builtin_fputs): Update to agree with modified definition.
2524         (fold_builtin_strcpy): Likewise.
2525         (fold_builtin_strncpy): Likewise.
2526         (fold_builtin_memory_chk): Likewise.
2527         (fold_builtin_stxcpy_chk): Likewise.
2528         (fold_builtin_strncpy_chk): Likewise.
2529         (fold_builtin_next_arg): Likewise.
2530         (fold_build_call_expr): Declare.
2531         (fold_builtin_call_list): Declare.
2532         (fold_builtin_call_valist): Declare.
2533         (build_call_expr): Declare.
2534         (validate_arglist): Update to agree with modified definition.
2535         (tree_operand_length): New.
2536         (call_expr_arg_iterator): New.
2537         (init_call_expr_arg_iterator): New.
2538         (next_call_expr_arg): New.
2539         (first_call_expr_arg): New.
2540         (more_call_expr_args_p): New.
2541         (FOR_EACH_CALL_EXPR_ARG): New.
2542
2543         * tree.c (tree_code_class_string): Add entries for tcc_vl_exp
2544         and tcc_gimple_stmt.
2545         (tree_code_size): Update documentation.  Use sizeof (tree) rather
2546         than sizeof (char *).
2547         (tree_size): Likewise.  Add case for tcc_vl_exp.
2548         (tree_node_structure): Add case for tcc_vl_exp.
2549         (contains_placeholder_p): Likewise.
2550         (substitute_in_expr): Likewise.
2551         (substitute_placeholder_in_expr): Likewise.
2552         (stabilize_reference_1): Likewise.
2553         (build3_stat): Remove logic for CALL_EXPRs.  Replace with assertion
2554         to diagnose breakage of this interface for constructing CALL_EXPRs.
2555         (build_nt): Add similar assertion here.
2556         (build_nt_call_list): New.
2557         (simple_cst_equal) <CALL_EXPR>: Rewrite to use new accessors.
2558         (iterative_hash_expr): Use TREE_OPERAND_LENGTH instead of
2559         TREE_CODE_LENGTH.
2560         (get_callee_fndecl): Use new CALL_EXPR accessors.
2561         (tree_operand_check_failed): Change parameters to pass entire node
2562         instead of its code, so that we can call TREE_OPERAND_LENGTH on it.
2563         (process_call_operands): New.
2564         (build_vl_exp_stat): New.
2565         (build_call_list): New.
2566         (build_call_nary): New.
2567         (build_call_valist): New.
2568         (build_call_array): New.
2569         (walk_tree): Use TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
2570         (call_expr_arglist): New.
2571
2572         * tree.def (CALL_EXPR): Change representation of CALL_EXPRs to use
2573         tcc_vl_exp instead of a fixed-size tcc_expression.
2574
2575         * doc/c-tree.texi (CALL_EXPR): Document new representation and
2576         accessors for CALL_EXPRs.
2577         (AGGR_INIT_EXPR): Likewise.
2578
2579 2007-02-15  Sandra Loosemore  <sandra@codesourcery.com>
2580             Brooks Moses  <brooks.moses@codesourcery.com>
2581             Lee Millward  <lee.millward@codesourcery.com>
2582
2583         * builtins.c (c_strlen): Return NULL_TREE instead of 0.
2584         (expand_builtin_nonlocal_goto): Change parameter to be entire
2585         CALL_EXPR instead of an arglist.  Use new CALL_EXPR accessors.
2586         (expand_builtin_prefetch): Likewise.
2587         (expand_builtin_classify_type): Likewise.
2588         (mathfn_built_in): Return NULL_TREE instead of 0.
2589         (expand_errno_check): Use new CALL_EXPR accessors.
2590         (expand_builtin_mathfn): Use new CALL_EXPR accessors and constructors.
2591         Return NULL_RTX instead of 0.
2592         (expand_builtin_mathfn_2): Likewise.
2593         (expand_builtin_mathfn_3): Likewise.
2594         (expand_builtin_interclass_mathfn): Likewise.
2595         (expand_builtin_sincos): Likewise.
2596         (expand_builtin_cexpi): Likewise.
2597         (expand_builtin_int_roundingfn): Likewise.
2598         (expand_builtin_int_roundingfn_2): Likewise.
2599         (expand_builtin_pow): Likewise.
2600         (expand_builtin_powi): Likewise.
2601         (expand_builtin_strlen): Pass entire CALL_EXPR as parameter instead
2602         of arglist, fixing callers appropriately.  Use new CALL_EXPR
2603         accessors and constructors.  Return NULL_RTX instead of 0.
2604         (expand_builtin_strstr): Likewise.
2605         (expand_builtin_strchr): Likewise.
2606         (expand_builtin_strrchr): Likewise.
2607         (expand_builtin_strpbrk): Likewise.
2608         (expand_builtin_memcpy): Likewise.
2609         (expand_builtin_mempcpy): Likewise.
2610         (expand_builtin_mempcpy_args): New.
2611         (expand_builtin_memmove): Similarly to expand_builtin_mempcpy.
2612         (expand_builtin_memmove_args): New.
2613         (expand_builtin_bcopy): Similarly to expand_builtin_mempcpy.
2614         (expand_movstr): Likewise.
2615         (expand_builtin_strcpy): Likewise.
2616         (expand_builtin_strcpy_args): New.
2617         (expand_builtin_stpcpy): Similarly to expand_builtin_strcpy.
2618         (expand_builtin_strncpy): Likewise.
2619         (expand_builtin_memset): Likewise.
2620         (expand_builtin_memset_args): New.
2621         (expand_builtin_bzero): Similarly to expand_builtin_memset.
2622         (expand_builtin_memcmp): Likewise.
2623         (expand_builtin_strcmp): Likewise.
2624         (expand_builtin_strncmp): Likewise.
2625         (expand_builtin_strcat): Likewise.
2626         (expand_builtin_strncat): Likewise.
2627         (expand_builtin_strspn): Likewise.
2628         (expand_builtin_strcspn): Likewise.
2629         (expand_builtin_args_info): Likewise.
2630         (expand_builtin_va_start): Likewise.
2631         (gimplify_va_arg_expr): Likewise.
2632         (expand_builtin_va_end): Likewise.
2633         (expand_builtin_va_copy): Likewise.
2634         (expand_builtin_frame_address): Likewise.
2635         (expand_builtin_alloca): Likewise.
2636         (expand_builtin_bswap): Likewise.
2637         (expand_builtin_unop): Likewise.
2638         (expand_builtin_fputs): Likewise.
2639         (expand_builtin_expect): Likewise.
2640         (expand_builtin_fabs): Likewise.
2641         (expand_builtin_copysign): Likewise.
2642         (expand_builtin_printf): Likewise.
2643         (expand_builtin_fprintf): Likewise.
2644         (expand_builtin_sprintf): Likewise.
2645         (expand_builtin_init_trampoline): Likewise.
2646         (expand_builtin_signbit): Likewise.
2647         (expand_builtin_fork_or_exec): Likewise.
2648         (expand_builtin_sync_operation): Likewise.
2649         (expand_builtin_compare_and_swap): Likewise.
2650         (expand_builtin_lock_test_and_set): Likewise.
2651         (expand_builtin_lock_release): Likewise.
2652         (expand_builtin): Likewise.
2653         (builtin_mathfn_code): Likewise.
2654
2655         (fold_builtin_constant_p): Pass call arguments individually instead
2656         of as an arglist, fixing callers appropriately.  Use new CALL_EXPR
2657         accessors and constructors.  Return NULL_TREE instead of 0.
2658         (fold_builtin_expect): Likewise.
2659         (fold_builtin_classify_type): Likewise.
2660         (fold_builtin_strlen): Likewise.
2661         (fold_builtin_nan): Likewise.
2662         (integer_valued_real_p): Likewise.
2663         (fold_trunc_transparent_mathfn): Likewise.
2664         (fold_fixed_mathfn): Likewise.
2665         (fold_builtin_cabs): Likewise.
2666         (fold_builtin_sqrt): Likewise.
2667         (fold_builtin_cbrt): Likewise.
2668         (fold_builtin_cos): Likewise.
2669         (fold_builtin_cosh): Likewise.
2670         (fold_builtin_tan): Likewise.
2671         (fold_builtin_sincos): Likewise.
2672         (fold_builtin_cexp): Likewise.
2673         (fold_builtin_trunc): Likewise.
2674         (fold_builtin_floor): Likewise.
2675         (fold_builtin_ceil): Likewise.
2676         (fold_builtin_round): Likewise.
2677         (fold_builtin_int_roundingfn): Likewise.
2678         (fold_builtin_bitop): Likewise.
2679         (fold_builtin_bswap): Likewise.
2680         (fold_builtin_logarithm): Likewise.
2681         (fold_builtin_hypot): Likewise.
2682         (fold_builtin_pow): Likewise.
2683         (fold_builtin_powi): Likewise.
2684         (fold_builtin_exponent): Likewise.
2685         (fold_builtin_memset): Likewise.
2686         (fold_builtin_bzero): Likewise.
2687         (fold_builtin_memory_op): Likewise.
2688         (fold_builtin_bcopy): Deleted; call site changed to invoke
2689         fold_builtin_memory_op directly.
2690         (fold_builtin_strcpy): Similarly as for fold_builtin_memory_op.
2691         (fold_builtin_strncpy): Likewise.
2692         (fold_builtin_memcmp): Likewise.
2693         (fold_builtin_strcmp): Likewise.
2694         (fold_builtin_strncmp): Likewise.
2695         (fold_builtin_signbit): Likewise.
2696         (fold_builtin_copysign): Likewise.
2697         (fold_builtin_isascii): Likewise.
2698         (fold_builtin_toascii): Likewise.
2699         (fold_builtin_isdigit): Likewise.
2700         (fold_builtin_fabs): Likewise.
2701         (fold_builtin_abs): Likewise.
2702         (fold_builtin_fmin_fmax): Likewise.
2703         (fold_builtin_carg): Likewise.
2704         (fold_builtin_classify): Likewise.
2705         (fold_builtin_unordered_cmp): Likewise.
2706
2707         (fold_builtin_0, fold_builtin_2, fold_builtin_3, fold_builtin_4):
2708         New functions split out from fold_builtin_1.
2709         (fold_builtin_n): New.
2710         (fold_builtin_varargs): New.
2711         (fold_builtin): Deleted.  Most callers changed to use fold_call_expr
2712         instead.
2713         (fold_call_expr): New.
2714         (build_function_call_expr): Rewrite to use new helper function.
2715         (fold_builtin_call_list): New.
2716         (build_call_expr): New.
2717         (fold_builtin_call_valist): New.
2718         (rewrite_call_expr): New.
2719         (validate_arg): New.
2720         (validate_arglist): Change parameter to be entire CALL_EXPR instead
2721         of an arglist.  Change return type to bool.  Use new CALL_EXPR
2722         accessors.
2723
2724         (fold_builtin_strstr):  Pass call arguments individually instead
2725         of as an arglist, fixing callers appropriately.  Use new CALL_EXPR
2726         accessors and constructors.  Return NULL_TREE instead of 0.
2727         (fold_builtin_strchr): Likewise.
2728         (fold_builtin_strrchr): Likewise.
2729         (fold_builtin_strpbrk): Likewise.
2730         (fold_builtin_strcat): Likewise.
2731         (fold_builtin_strncat): Likewise.
2732         (fold_builtin_strspn): Likewise.
2733         (fold_builtin_strcspn): Likewise.
2734         (fold_builtin_fputs): Likewise.
2735         (fold_builtin_next_arg): Likewise.
2736         (fold_builtin_sprintf): Likewise.
2737
2738         (expand_builtin_object_size): Use new CALL_EXPR accessors.  Use
2739         NULL_RTX instead of 0.
2740         (expand_builtin_memory_chk): Likewise.
2741         (maybe_emit_chk_warning): Likewise.
2742         (maybe_emit_sprintf_chk_warning): Likewise.
2743
2744         (fold_builtin_object_size): Pass call arguments individually instead
2745         of as an arglist, fixing callers appropriately.  Use new CALL_EXPR
2746         accessors and constructors.  Return NULL_TREE instead of 0.
2747         (fold_builtin_memory_chk): Likewise.
2748         (fold_builtin_stxcpy_chk): Likewise.
2749         (fold_builtin_strncpy_chk): Likewise.
2750         (fold_builtin_strcat_chk): Likewise.
2751         (fold_builtin_strcat_chk): Likewise.
2752         (fold_builtin_strncat_chk): Likewise.
2753         (fold_builtin_sprintf_chk): Likewise.
2754         (fold_builtin_snprintf_chk): Likewise.
2755         (fold_builtin_printf): Likewise.
2756         (fold_builtin_vprintf): Likewise.
2757
2758         * fold-const.c (negate_expr_p): Use new CALL_EXPR accessors and
2759         constructors.
2760         (operand_equal_p): Add separate tcc_vl_exp/CALL_EXPR case.
2761         (make_range): Use TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
2762         (extract_muldiv_1): Add VL_EXP_CLASS_P case.
2763         (fold_mathfn_compare): Use new CALL_EXPR accessors and constructors.
2764         (fold_unary): Likewise.
2765         (fold_binary): Likewise.
2766         (fold_ternary): Remove CALL_EXPR case, since they are no longer
2767         ternary expressions.
2768         (fold): Add logic for tcc_vl_exp.
2769         (fold_checksum_tree):  Make it know about tcc_vl_exp.  Use
2770         TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
2771         (fold_build3_stat): Add assertion to flag broken interface for
2772         constructing CALL_EXPRs.
2773         (fold_build_call_list): New.
2774         (fold_build_call_list_initializer): New.
2775         (tree_expr_nonnegative_p): Use new CALL_EXPR accessors and
2776         constructors.
2777         (fold_strip_sign_ops): Likewise.
2778
2779 2007-02-15  Sandra Loosemore  <sandra@codesourcery.com>
2780             Brooks Moses  <brooks.moses@codesourcery.com>
2781             Lee Millward  <lee.millward@codesourcery.com>
2782
2783         * tree-dump.c (dequeue_and_dump) <CALL_EXPR>: Use new CALL_EXPR
2784         accessors and dump arguments explicitly.
2785
2786         * tree-pretty-print.c (do_niy): Use TREE_OPERAND_LENGTH instead of
2787         TREE_CODE_LENGTH.
2788         (dump_generic_node): Use new CALL_EXPR accessors and walk arguments
2789         explicitly.
2790         (print_call_name): Use new CALL_EXPR accessors.
2791
2792         * print-tree.c (print_node): Add case tcc_vl_exp.  Print
2793         CALL_EXPR arguments explicitly instead of as a list.  Use
2794         TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
2795
2796         * tree-vrp.c (stmt_interesting_for_vrp): Use new CALL_EXPR accessors.
2797         (vrp_visit_stmt): Likewise.
2798
2799         * tree-ssa-loop-im.c (outermost_invariant_loop_expr):  Make it
2800         know about tcc_vl_exp.  Use TREE_OPERAND_LENGTH instead of
2801         TREE_CODE_LENGTH.
2802         (force_move_till_expr): Likewise.
2803
2804         * targhooks.c (default_external_stack_protect_fail): Use
2805         build_call_expr instead of build_function_call_expr.
2806         (default_hidden_stack_protect_fail): Likewise.
2807
2808         * tree-complex.c (expand_complex_libcall): Use build_call_expr to
2809         build the call.
2810
2811         * cgraphbuild.c (build_cgraph_edges): Use new CALL_EXPR accessors
2812         and walk arguments explicitly.
2813
2814         * tree-ssa-loop-niter.c (simplify_replace_tree): Use
2815         TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
2816         (expand_simple_operations): Likewise.
2817         (infer_loop_bounds_from_array): Use new CALL_EXPR accessors.
2818
2819         * gengtype.c (adjust_field_tree_exp): Use TREE_OPERAND_LENGTH instead
2820         of TREE_CODE_LENGTH.
2821         (walk_type): Tweak walking of arrays not to blow up on CALL_EXPRs.
2822
2823         * optabs.c (expand_widen_pattern-expr): Use TREE_OPERAND_LENGTH
2824         instead of TREE_CODE_LENGTH.
2825
2826         * value_prof.c (tree_ic): Use new CALL_EXPR accessors.
2827         (tree_ic_transform): Likewise.
2828         (interesting_stringop_to_profile_p): Pass entire CALL_EXPR as
2829         parameter instead of arglist.  Fix callers.
2830         (tree_stringop_fixed_value): Use new CALL_EXPR accessors.
2831         (tree_stringops_transform): Likewise.
2832         (tree_indirect_call_to_profile): Likewise.
2833         (tree_stringops_values_to_profile): Likewise.
2834
2835         * tree-tailcall.c (find_tail_calls): Use new CALL_EXPR iterator.
2836         (eliminate_tail_call): Likewise.
2837
2838         * ipa-cp.c (ipcp_update_callgraph): Use new CALL_EXPR accessors.
2839
2840         * tree-scalar-evolution.c (chrec_contains_symbols_defined_in_loop):
2841         Use TREE_OPERAND_LENGTH and generalize to handle any number of
2842         operands.
2843         (instantiate_parameters_1): Can't handle tcc_vl_exp here.
2844
2845         * omp-low.c (build_omp_barrier): Use build_call_expr.
2846         (lower_rec_input_clauses): Likewise.
2847         (lower_reduction_clauses): Likewise.
2848         (expand_parallel_call): Likewise.
2849         (maybe_catch_exception): Likewise.
2850         (expand_omp_for_generic): Likewise.
2851         (expand_omp_for_static_nochunk): Likewise.
2852         (expand_omp_sections): Likewise.
2853         (lower_omp_single_simple): Likewise.
2854         (lower_omp_single_copy): Likewise.
2855         (lower_omp_master): Likewise.
2856         (lower_omp_ordered): Likewise.
2857         (lower_omp_critical): Likewise.
2858
2859         * ipa-reference.c (check-call): Use new CALL_EXPR iterator.
2860         (scan_for_static_refs): Create tcc_vl_exp case for CALL_EXPR.
2861
2862         * tree-gimple.c (is_gimple_call_addr): Fix doc.
2863         (recalculate_side_effects): Use TREE_OPERAND_LENGTH instead of
2864         TREE_CODE_LENGTH.  Add tcc_vl_exp case.
2865
2866         * tree-chrec.c (chrec_contains_symbols): Use TREE_OPERAND_LENGTH
2867         and generalize to handle any number of operands.
2868         (chrec_contains_undetermined): Likewise.
2869         (tree_contains_chrecs): Likewise.
2870         (evolution_function_is_invariant_rec_p): Use TREE_OPERAND_LENGTH.
2871
2872         * cgraphunit.c (update_call_expr): Use new CALL_EXPR accessors.
2873
2874         * tree-ssa-ccp.c (ccp_fold): Use new CALL_EXPR accessors.  Use
2875         fold_call_expr instead of fold_builtin.
2876         (ccp_fold_builtin): Likewise.  Update calls into builtins.c to
2877         match declarations there.
2878         (fold_stmt): Use new CALL_EXPR constructor and accessors.  Doc
2879         updates.
2880
2881         * tree-ssa-loop-ivopts.c (expr_invariant_in_loop_p): Use
2882         TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
2883
2884         * ipa-pure-const.c (check_call): Use new CALL_EXPR accessors.
2885         (scan_function): Add case tcc_vl_exp for CALL_EXPR.
2886
2887         * tree-stdarg.c (execute_optimize_stdarg): Use new CALL_EXPR
2888         accessors.
2889
2890         * tree-ssa-math-opts.c (execute_cse_sincos_1): Use build_call_expr.
2891         (execute_cse_sincos): Use new CALL_EXPR accessors.
2892
2893         * tree-ssa-alias.c (find_used_portions): Use new CALL_EXPR iterator.
2894
2895         * gimple-low.c (lower_function_body): Use build_call_expr.
2896         (lower_builtin_setjmp): Likewise.
2897
2898         * expr.c (emit_block_move_via_libcall): Use build_call_expr.
2899         (set_storage_via_libcall): Likewise.
2900         (safe_from_p): Add tcc_vl_exp case.  Use TREE_OPERAND_LENGTH
2901         instead of TREE_CODE_LENGTH.
2902         (expand_expr_real_1): Use new CALL_EXPR accessors.
2903
2904         * tree-browser.c (store_child_info): Use TREE_OPERAND_LENGTH and
2905         generalize to handle any number of operands.
2906         (TB_parent_eq): Likewise.
2907
2908         * predict.c (expr_expected_value): Use new CALL_EXPR accessors.
2909         (strip_builtin_expect): Likewise.
2910
2911         * function.c (gimplify_parameters): Use build_call_expr.
2912
2913         * tree-vectorizer.c (vect_is_simple_reduction): Use TREE_OPERAND_LENGTH
2914         instead of TREE_CODE_LENGTH.
2915
2916         * ipa-type-escape.c (check_call): Use new CALL_EXPR iterators.
2917         (scan_for_refs): Add case tcc_vl_exp for CALL_EXPR.
2918
2919         * tree-data-ref.c (get_references_in_stmt): Use new CALL_EXPR
2920         iterators.
2921
2922         * gimplify.c (build_stack_save_restore): Use build_call_expr.
2923         (gimplify_decl_expr): Likewise.
2924         (gimplify_call_expr): Use fold_call_expr instead of fold_builtin.
2925         Use new CALL_EXPR iterators.
2926         (gimplify_modify_expr_to_memcpy): Use build_call_expr.
2927         (gimplify_modify_expr_to_memset): Likewise.
2928         (gimplify_variable_sized_compare): Likewise.
2929         (gimplify_omp_atomic_fetch_op): Likewise.
2930         (gimplify_omp_atomic_pipeline): Likewise.
2931         (gimplify_omp_atomic_mutex): Likewise.
2932         (gimplify_function_tree): Likewise.
2933
2934         * calls.c (alloca_call_p): Use new CALL_EXPR accessors.
2935         (call_expr_flags): Likewise.
2936         (expand_call): Likewise.
2937
2938         * except.c (expand_builtin_eh_return_data_regno): Pass entire
2939         CALL_EXPR as parameter instead of arglist.  Use new CALL_EXPR
2940         accessors.
2941
2942         * coverage.c (create_coverage): Use build_call_expr.
2943
2944         * tree-ssa-pre.c (expression_node_pool, list_node_pool): Delete.
2945         (temp_call_expr_obstack): New.
2946         (pool_copy_list): Delete.
2947         (temp_copy_call_expr): New.
2948         (phi_translate): Add case tcc_vl_exp for CALL_EXPR.  Use new
2949         CALL_EXPR accessors.  Get rid of special goo for copying argument
2950         lists and use temp_copy_call_expr instead.
2951         (valid_in_sets): Add case tcc_vl_exp for CALL_EXPR.  Use new
2952         CALL_EXPR accessors.
2953         (create_expression_by_pieces): Likewise.  Use build_call_array
2954         to construct the result instead of fold_build3.
2955         (create_value_expr_from): Add tcc_vl_exp.  Delete special goo for
2956         dealing with argument lists.
2957         (init_pre): Remove references to expression_node_pool and
2958         list_node_pool.  Init temp_call_expr_obstack instead.
2959         (fini_pre): Remove references to expression_node_pool and
2960         list_node_pool.
2961
2962         * tree-sra.c (sra_walk_call_expr): Use new CALL_EXPR accessors
2963         and walk arguments explicitly instead of as a list.
2964
2965         * tree-mudflap.c (mf_build_check_statement_for): Use build_call_expr.
2966         (mx_register_decls): Likewise.
2967         (mudflap_register_call): Likewise.
2968         (mudflap_finish_file): Likewise.
2969
2970         * ipa-prop.c (ipa_callsite_compute_count): Use new CALL_EXPR accessors.
2971         (ipa_callsite_compute_param): Likewise.
2972
2973         * tree-vect-patterns.c (vect_recog_pow_pattern): Use new CALL_EXPR
2974         accessors and constructor.
2975
2976         * tree-nested.c (convert_nl_goto_reference): Use new CALL_EXPR
2977         accessors and constructor.
2978         (convert_tramp_reference): Likewise.
2979         (convert_call_expr): Likewise.
2980         (finalize_nesting_tree_1): Likewise.
2981
2982         * tree-ssa.c (tree_ssa_useless_type_conversion): Use new CALL_EXPR
2983         accessors.
2984
2985         * tree-ssa-loop-prefetch.c (issue_prefetch_ref): Use build_call_expr.
2986
2987         * tree-inline.c (initialize_inlined_parameters): Pass entire
2988         CALL_EXPR as parameter instead of arglist.  Use new CALL_EXPR
2989         accessors.
2990         (estimate_num_insns_1): Use new CALL_EXPR accessors.
2991         (expand_call_inline): Tidy up call to initialize_inlined_parameters.
2992
2993         * tree-vect-transform.c (vect_create_epilog_for_reduction):  Use
2994         TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
2995         (vectorizable_reduction): Likewise.
2996         (vectorizable_call): Use new CALL_EXPR iterators.
2997         (vectorizable_conversion): Use build_call_expr.
2998         (vectorizable_operation): Use TREE_OPERAND_LENGTH.
2999         (vect_gen_widened_results_half): Use build_call_expr.
3000         (vect_setup_realignment): Likewise.
3001         (vectorizable_live_operation): Use TREE_OPERAND_LENGTH.
3002
3003         * tree-object-size.c (alloc_object_size): Use new CALL_EXPR accessors.
3004         (pass_through_call): Likewise.
3005         (compute_object_sizes): Likewise.  Use fold_call_expr instead of
3006         fold_builtin.
3007
3008         * tree-profile.c (tree_gen_interval_profiler): Use build_call_expr.
3009         (tree_gen_pow2_profiler): Likewise.
3010         (tree_gen_one_value_profiler): Likewise.
3011         (tree_gen_ic_func_profiler): Likewise.
3012         (tree_gen_average_profiler): Likewise.
3013         (tree_gen_ior_profiler): Likewise.
3014
3015         * tree-ssa-structalias.c (get_constraint_for): Add case tcc_vl_exp.
3016         (find_func_aliases): Use new CALL_EXPR accessors.  Add case
3017         tcc_vl_exp.  Use TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
3018
3019         * tree-ssa-reassoc.c (get_rank): Use TREE_OPERAND_LENGTH instead
3020         of TREE_CODE_LENGTH.
3021
3022         * stmt.c (warn_if_unused_value): Use TREE_OPERAND_LENGTH instead
3023         of TREE_CODE_LENGTH.
3024
3025         * convert.c (convert_to_real): Use new CALL_EXPR accessors and
3026         constructor.
3027         (convert_to_integer): Likewise.
3028
3029         * tree-ssa-operands.c (get_call_expr_operands): Use new CALL_EXPR
3030         accessors.
3031
3032 2007-02-15  Sandra Loosemore  <sandra@codesourcery.com>
3033             Brooks Moses  <brooks.moses@codesourcery.com>
3034             Lee Millward  <lee.millward@codesourcery.com>
3035
3036         * config/alpha/alpha.c (alpha_expand_builtin): Use new CALL_EXPR
3037         accessors.
3038         * config/frv/frv.c (frv_expand_builtin): Likewise.
3039         * config/s390/s390.c (s390_expand_builtin): Likewise.
3040
3041         * config/sparc/sparc.c (sparc_gimplify_va_arg): Use build_call_expr.
3042         (sparc_expand_builtin): Use new CALL_EXPR accessors.
3043
3044         * config/i386/i386.c (ix86_function_ok_for_sibcall): Likewise.
3045         (ix86_expand_binop_builtin): Pass entire CALL_EXPR as parameter
3046         instead of arglist.  Use new CALL_EXPR accessors on it.  Fix callers.
3047         (ix86_expand_store_builtin): Likewise.
3048         (ix86_expand_unop_builtin): Likewise.
3049         (ix86_expand_unop1_builtin): Likewise.
3050         (ix86_expand_sse_compare): Likewise.
3051         (ix86_expand_sse_comi): Likewise.
3052         (ix86_expand_vec_init_builtin): Likewise.
3053         (ix86_expand_vec_ext_builtin): Likewise.
3054         (ix86_expand_vec_set_builtin): Likewise.
3055         (ix86_expand_builtin): Use new CALL_EXPR accessors.
3056
3057         * config/sh/sh.c (sh_expand_builtin): Use new CALL_EXPR accessors.
3058         * config/c4x/c4x.c (c4x_expand_builtin): Likewise.
3059
3060         * config/iq2000/iq2000.c (expand_one_builtin): Pass entire CALL_EXPR
3061         instead of arglist.  Use new CALL_EXPR accessors.  Fix callers.
3062         (iq2000_expand_builtin): Use new CALL_EXPR accessors.
3063
3064         * config/rs6000/rs6000-c.c (altivec_build_resolved_builtin): Use
3065         build_call_expr.
3066         * config/rs6000/rs6000.c (rs6000_gimplify_va_arg): Likewise.
3067         (rs6000_expand_unop_builtin): Pass entire CALL_EXPR instead of
3068         arglist.  Use new CALL_EXPR accessors.  Fix callers.
3069         (altivec_expand_abs_builtin): Likewise.
3070         (rs6000_expand_binop_builtin): Likewise.
3071         (altivec_expand_predicate_builtin): Likewise.
3072         (altivec_expand_lv_builtin): Likewise.
3073         (spe_expand_stv_builtin): Likewise.
3074         (altivec_expand_stv_builtin): Likewise.
3075         (rs6000_expand_ternop_builtin): Likewise.
3076         (altivec_expand_ld_builtin): Use new CALL_EXPR accessors.
3077         (altivec_expand_st_builtin): Likewise.
3078         (altivec_expand_dst_builtin): Likewise.
3079         (altivec_expand_vec_init_builtin): Pass entire CALL_EXPR instead of
3080         arglist.  Use new CALL_EXPR accessors.  Fix callers.
3081         (altivec_expand_vec_set_builtin): Likewise.
3082         (altivec_expand_vec_ext_builtin): Likewise.
3083         (altivec_expand_builtin): Use new CALL_EXPR accessors.
3084         (spe_expand_builtin): Likewise.
3085         (spe_expand_predicate_builtin): Pass entire CALL_EXPR instead of
3086         arglist.  Use new CALL_EXPR accessors.  Fix callers.
3087         (spe_expand_evsel_builtin): Likewise.
3088         (rs6000_expand_builtin): Use new CALL_EXPR accessors.  VCFUX and
3089         FCFSX cases must construct whole new CALL_EXPR, not just arglist.
3090
3091         * config/arm/arm.c (arm_expand_binop_builtin): Pass entire CALL_EXPR
3092         instead of arglist.  Use new CALL_EXPR accessors.  Fix callers.
3093         (arm_expand_unop_builtin): Likewise.
3094         (arm_expand_builtin): Use new CALL_EXPR accessors.
3095
3096         * config/mips/mips.c (mips_expand_builtin):  Use new CALL_EXPR
3097         accessors.
3098
3099         * config/bfin/bfin.c (bfin_expand_binop_builtin): Pass entire CALL_EXPR
3100         instead of arglist.  Use new CALL_EXPR accessors.  Fix callers.
3101         (bfin_expand_unop_builtin): Likewise.
3102         (bfin_expand_builtin): Use new CALL_EXPR accessors.
3103
3104 2007-02-15  Sandra Loosemore  <sandra@codesourcery.com>
3105             Brooks Moses  <brooks.moses@codesourcery.com>
3106             Lee Millward  <lee.millward@codesourcery.com>
3107
3108         * c-semantics.c (build_stmt): Add internal diagnostic check.
3109
3110         * c-pretty-print.c (pp_c_postfix_expression): Use new CALL_EXPR
3111         accessors.  Print arguments explicitly instead of as a list.
3112
3113         * c-typeck.c (build_function_call): Use new CALL_EXPR constructors.
3114
3115         * c-omp.c (c_finish_omp_barrier): Use build_call_expr.
3116         (c_finish_omp_flish): Likewise.
3117
3118         * c-common.c (verify_tree): Use new CALL_EXPR accessors.  Traverse
3119         arguments explicitly instead of as a list.  Use TREE_OPERAND_LENGTH
3120         instead of TREE_CODE_LENGTH.
3121         (check_function_arguments_recurse): Use new CALL_EXPR accessors.
3122         (c_warn_unused_result): Likewise.
3123
3124 2007-02-15  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
3125
3126         PR c/26494
3127         * doc/invoke.texi (Warning Options): Remove
3128         -Werror-implicit-function-declaration.
3129         (Wimplicit-function-declaration): Update description.
3130         * opts.c (common_handle_option): Move handling of -Werror=* to...
3131         (enable_warning_as_error): ...here.
3132         * opts.h (enable_warning_as_error): Declare.
3133         * c-decl.c (implicit_decl_warning): Unless
3134         -Wno-implicit-function-declaration is given, emit a pedwarn if
3135         -std=c99 or emit a warning if -Wimplicit-function-declaration.
3136         * c.opt (Wimplicit-function-declaration): Replace
3137         mesg_implicit_function_declaration with
3138         warn_implicit_function_declaration.
3139         * c-opts.c (c_common_handle_option):
3140         -Werror-implicit-function-declaration is exactly equal as
3141         -Werror=implicit-function-declaration.
3142         (set_Wimplicit): Replace mesg_implicit_function_declaration with
3143         warn_implicit_function_declaration.
3144         (c_common_post_options): -Wimplict-function-declaration is enabled
3145         by default by -std=c99, otherwise is disabled by default.
3146         * c-objc-common.c (c_objc_common_init): Remove flawed logic.
3147
3148 2007-02-15  Eric Botcazou  <ebotcazou@adacore.com>
3149
3150         * gimplify.c (gimplify_modify_expr): During gimplification, attach a
3151         DECL on the rhs to a DECL on the lhs for debug info purposes if the
3152         former is ignored but not the latter.
3153
3154 2007-02-15  Eric Botcazou  <ebotcazou@adacore.com>
3155
3156         * expr.c (expand_expr_real_1) <normal_inner_ref>: If a temporary
3157         is made and the reference doesn't use the alias set of its type,
3158         do not create the temporary using that type.
3159
3160 2007-02-15  Aldy Hernandez  <aldyh@redhat.com>
3161
3162         * jump.c: Remove prototypes for delete_computation and
3163         delete_prior_computation.
3164
3165 2007-02-15  Paolo Bonzini  <bonzini@gnu.org>
3166
3167         * jump.c (get_label_after): Delete.
3168         (get_label_before, delete_computation, delete_jump,
3169         delete_prior_computation, follow_jumps): Move...
3170         * reorg.c (delete_computation, delete_prior_computation): ... here...
3171         (get_label_before, delete_jump): ... making these static ...
3172         (follow_jumps): ... and simplifying this since it only runs after
3173         reload.
3174         * rtl.h (get_label_after, get_label_before, delete_jump,
3175         follow_jumps): Delete prototypes.
3176
3177 2007-02-15  Paolo Bonzini  <bonzini@gnu.org>
3178
3179         * caller-save.c (save_call_clobbered_regs): Do not process sibcalls.
3180
3181 2007-02-15  Nick Clifton  <nickc@redhat.com>
3182
3183         * varasm.c (default_asm_output_anchor): Prepend * to . symbol in
3184         order to prevent it from being munged by the target.
3185
3186 2007-02-15  Uros Bizjak  <ubizjak@gmail.com>
3187
3188         * config/i386/i386.md: Remove misleading comment.
3189
3190 2007-02-15  Alexandre Oliva  <aoliva@redhat.com>
3191
3192         * config/frv/frv.md (reload_incc, reload_outcc, reload_incc_uns,
3193         reload_outcc_uns, reload_incc_nz, reload_outcc_nz): Remove
3194         invalid patterns.
3195
3196 2007-02-15  Alexandre Oliva  <aoliva@redhat.com>
3197
3198         * tree-sra.c (instantiate_missing_elements): Canonicalize
3199         bit-field types.
3200         (sra_build_assignment): New.
3201         (generate_copy_inout, generate_element_copy,
3202         generate_element_zero, generate_one_element_init): Use it.
3203
3204 2007-02-15  Alexandre Oliva  <aoliva@redhat.com>
3205
3206         * tree-sra.c (instantiate_missing_elements): Canonicalize
3207         bit-field types.
3208         (sra_build_assignment): New.
3209         (generate_copy_inout, generate_element_copy,
3210         generate_element_zero, generate_one_element_init): Use it.
3211
3212 2007-02-15  Alexandre Oliva  <aoliva@redhat.com>
3213
3214         * dwarf2out.c (dwarf2out_finish): Accept namespaces as context of
3215         limbo die nodes.
3216
3217 2007-02-14  Joseph Myers  <joseph@codesourcery.com>
3218
3219         * emit-rtl.c (set_mem_attributes_minus_bitpos): Treat complex
3220         types as aggregates not scalars.
3221         * function.c (assign_stack_temp_for_type): Likewise.
3222
3223 2007-02-14  Roger Sayle  <roger@eyesopen.com>
3224             Zdenek Dvorak  <dvorakz@suse.cz>
3225
3226         * tree-dump.c (dump_switch_p_1): Require exact match of the option
3227         name.
3228
3229 2007-02-14  Zdenek Dvorak  <dvorakz@suse.cz>
3230
3231         * passes.c (next_pass_1): Clear the next field of the copied
3232         pass structure.
3233
3234 2007-02-14  Richard Henderson  <rth@redhat.com>
3235
3236         * tree-sra.c (early_sra): New.
3237         (decl_can_be_decomposed_p): Deny va_list if early_sra.
3238         (tree_sra_early, pass_sra_early): New.
3239         * tree-pass.h (pass_sra_early): Declare.
3240         * passes.c (init_optimization_passes): Use it.
3241
3242 2007-02-14  Richard Guenther  <rguenther@suse.de>
3243
3244         * flags.h (issue_strict_overflow_warning): Convert to a macro.
3245
3246 2007-02-14  Dorit Nuzman  <dorit@il.ibm.com>
3247
3248          PR tree-optimization/30771
3249         * tree-vect-analyze.c (vect_determine_vectorization_factor): Traverse
3250         also phi nodes.
3251         (vect_analyze_operations): Induction phis can now be marked as
3252         used_in_loop.
3253         (vect_mark_stmts_to_be_vectorized): No special treatment for phis.
3254         Update documentation accordingly.
3255
3256 2007-02-14  Nick Clifton  <nickc@redhat.com>
3257
3258         * builtin-types.def (DEF_FUNCTION_TYPE_x): Do not imply that at
3259         most 3 arguments are supported.
3260         (DEF_FUNCTION_TYPE_VAR_5): Fix typo in its description.
3261
3262 2007-02-13  Seongbae Park <seongbae.park@gmail.com>
3263
3264         * bitmap.c (bitmap_and, bitmap_and_compl, bitmap_xor):
3265         Ensure dst->current is valid.
3266
3267 2007-02-13  Paul Brook  <paul@codesourcery.com>
3268
3269         * config.gcc: Add arm*-*-uclinux-*eabi.
3270         * config/arm/uclinux-elf.h (TARGET_OS_CPP_BUILTINS): Define.
3271         (SUBTARGET_EXTRA_LINK_SPEC): Define.
3272         (STARTFILE_SPEC, ENDFILE_SPEC): Remove broken -shared handling.
3273         (LINK_GCC_C_SEQUENCE_SPEC): Undef.
3274         (LINK_SPEC): Define.
3275         (LIB_SPEC): Define.
3276         * config/arm/arm.c (arm_override_options): Use r9 as EABI PIC
3277         register.
3278         * config/arm/uclinux-eabi.h: New file.
3279         * config/arm/linux-eabi.h (WCHAR_TYPE): Remove.
3280         * config/arm/linux-gas.h (WCHAR_TYPE): Use unsigned long on AAPCS
3281         based targets.
3282
3283 2007-02-13  Ian Lance Taylor  <iant@google.com>
3284
3285         * common.opt: Add Wstrict-overflow and Wstrict-overflow=.
3286         * flags.h (warn_strict_overflow): Declare.
3287         (enum warn_strict_overflow_code): Define.
3288         (issue_strict_overflow_warning): New static inline function.
3289         * opts.c (warn_strict_overflow): New variable.
3290         (common_handle_option): Handle OPT_Wstrict_overflow and
3291         OPT_Wstrict_overflow_.
3292         * c-opts.c (c_common_handle_option): Set warn_strict_overflow for
3293         OPT_Wall.
3294         * fold-const.c: Include intl.h.
3295         (fold_deferring_overflow_warnings): New static variable.
3296         (fold_deferred_overflow_warning): New static variable.
3297         (fold_deferred_overflow_code): New static variable.
3298         (fold_defer_overflow_warnings): New function.
3299         (fold_undefer_overflow_warnings): New function.
3300         (fold_undefer_and_ignore_overflow_warnings): New function.
3301         (fold_deferring_overflow_warnings_p): New function.
3302         (fold_overflow_warning): New static function.
3303         (make_range): Add strict_overflow_p parameter.  Change all
3304         callers.
3305         (extract_muldiv, extract_muldiv_1): Likewise.
3306         (fold_unary) [ABS_EXPR]: Check ABS_EXPR before calling
3307         tree_expr_nonnegative_p.
3308         (fold_negate_expr): Call fold_overflow_warning.
3309         (fold_range_test): Likewise.
3310         (fold_comparison): Likewise.
3311         (fold_binary): Likewise.  Call tree_expr_nonnegative_warnv_p
3312         instead of tree_expr_nonnegative_p.
3313         (tree_expr_nonnegative_warnv_p): Rename from
3314         tree_expr_nonnegative_p, add strict_overflow_p parameter.
3315         (tree_expr_nonnegative_p): New function.
3316         (tree_expr_nonzero_warnv_p): Rename from tree_expr_nonzero_p, add
3317         strict_overflow_p parameter.
3318         (tree_expr_nonzero_p): New function.
3319         * passes.c (verify_interpass_invariants): New static function.
3320         (execute_one_pass): Call it.
3321         * tree-ssa-loop-niter.c (expand_simple_operations): Ignore fold
3322         warnings.
3323         (number_of_iterations_exit, loop_niter_by_eval): Likewise.
3324         (estimate_numbers_of_iterations): Likewise.
3325         (scev_probably_wraps_p): Likewise.
3326         * tree-ssa-ccp.c: Include "toplev.h".
3327         (evaluate_stmt): Defer fold overflow warnings until we know we are
3328         going to optimize.
3329         (struct fold_stmt_r_data): Add stmt field.
3330         (fold_stmt_r): Defer fold overflow warnings until we know we
3331         optimized.
3332         (fold_stmt): Initialize stmt field of fold_stmt_r_data.
3333         (fold_stmt_inplace): Likewise.
3334         * tree-cfgcleanup.c: Include "toplev.h" rather than "errors.h".
3335         (cleanup_control_expr_graph): Defer fold overflow warnings until
3336         we know we are going to optimize.
3337         * tree-cfg.c (fold_cond_expr_cond): Likewise.
3338         * tree-ssa-threadedge.c (simplify_control_stmt_condition):
3339         Likewise.
3340         * tree-vrp.c (vrp_expr_computes_nonnegative): Call
3341         tree_expr_nonnegative_warnv_p instead of tree_expr_nonnegative_p.
3342         * tree-ssa-loop-manip.c (create_iv): Likewise.
3343         * c-typeck.c (build_conditional_expr): Likewise.
3344         (build_binary_op): Likewise.
3345         * tree-vrp.c (vrp_expr_computes_nonzero): Call
3346         tree_expr_nonzero_warnv_p instead of tree_expr_nonzero_p.
3347         (extract_range_from_unary_expr): Likewise.
3348         * simplify-rtx.c (simplify_const_relational_operation): Warn when
3349         assuming that signed overflow does not occur.
3350         * c-common.c (pointer_int_sum): Ignore fold overflow warnings.
3351         * tree.h (tree_expr_nonnegative_warnv_p): Declare.
3352         (fold_defer_overflow_warnings): Declare.
3353         (fold_undefer_overflow_warnings): Declare.
3354         (fold_undefer_and_ignore_overflow_warnings): Declare.
3355         (fold_deferring_overflow_warnings_p): Declare.
3356         (tree_expr_nonzero_warnv_p): Declare.
3357         * doc/invoke.texi (Option Summary): Add -Wstrict-overflow to list
3358         of warning options.
3359         (Warning Options): Document -Wstrict-overflow.
3360         * Makefile.in (tree-ssa-threadedge.o): Depend on toplev.h.
3361         (tree-ssa-ccp.o): Likewise.
3362         (tree-cfgcleanup.o): Change errors.h dependency to toplev.h.
3363         (fold-const.o): Depend on intl.h.
3364
3365 2007-02-13  Ian Lance Taylor  <iant@google.com>
3366
3367         PR middle-end/30751
3368         * lower-subreg.c (resolve_simple_move): Decompose subregs in
3369         addresses.
3370
3371 2007-02-13  Stuart Hastings  <stuart@apple.com>
3372
3373         * gcc/config/i386/i386.md (fixuns_truncdfhi2): Require SSE2.
3374
3375 2007-02-13  Richard Henderson  <rth@redhat.com>
3376
3377         * config/alpha/alpha.c (alpha_stdarg_optimize_hook): Strip
3378         handled_component_p before looking for the indirect_ref.
3379
3380 2007-02-13  Richard Henderson  <rth@redhat.com>
3381
3382         * config/i386/i386.md (bswapsi_1): Rename from bswapsi2,
3383         remove flags clobber.
3384         (bswapsi2): New expander, emit code for !TARGET_BSWAP.
3385         (bswaphi_lowpart): New.
3386         (bswapdi2): Rename from bswapdi2_rex, remove flags clobber,
3387         remove TARGET_BSWAP test.  Delete expander of the same name.
3388
3389         * optabs.c (widen_bswap, expand_doubleword_bswap): New.
3390         (expand_unop): Use them.
3391
3392 2007-02-13  Uros Bizjak  <ubizjak@gmail.com>
3393
3394         * config/i386/i386.md (cmpdi_ccno_1_rex64, *cmpsi_ccno_1,
3395         *cmphi_ccno_1, *cmpqi_ccno_1, *movsi_xor, *movstricthi_xor,
3396         *movstrictqi_xor, *movdi_xor_rex64, *ashldi3_1_rex64,
3397         *ashldi3_cmp_rex64, *ashldi3_cconly_rex64, ashlsi3, *ashlsi3_1_zext,
3398         *ashlsi3_cmp, *ashlsi3_cconly, *ashlsi3_cmp_zext, *ashlhi3_1_lea,
3399         *ashlhi3_1, *ashlhi3_cmp, *ashlhi3_cconly, *ashlqi3_1_lea,
3400         *ashlqi3_1, *ashlqi3_cmp, *ashlqi3_cconly): Remove equivalent
3401         assembler dialect choice from asm templates.
3402
3403 2007-02-12  Richard Henderson  <rth@redhat.com>
3404
3405         * config/i386/i386.md (fixuns_trunc<SSEMODEF>si_1): New insn.
3406         (fixuns_trunc<SSEMODEF>si2): Use it.
3407         * config/i386/sse.md (vec_setv4sf_0): Export.
3408         * config/i386/i386.c (ix86_build_const_vector): Export.
3409         (ix86_split_convert_uns_si_sse): Rename from
3410         ix86_expand_convert_uns_si_sse and rewrite as a splitter.