tree-sra.c (sra_build_elt_assignment): Initialize min/maxshift.
[platform/upstream/gcc.git] / gcc / ChangeLog
1 2007-04-06  Andreas Tobler  <a.tobler@schweiz.org>
2
3         * tree-sra.c (sra_build_elt_assignment): Initialize min/maxshift.
4
5 2007-04-06  Uros Bizjak  <ubizjak@gmail.com>
6
7         * config/i386/i386.md (extend<mode>xf2): Rename from extendsfxf2
8         and extenddfxf2. Macroize expander using X87MODEF12 mode macro.
9         (*truncdfsf_mixed, *truncdfsf_i387, *truncdfsf2_i387_1):
10         Use output_387_reg_move().
11         (*truncxf<mode>2): Rename from *truncxfsf2 and truncxfdf2. Macroize
12         expander using X87MODEF12 mode macro.
13         (*truncxfsf2_mixed): Combine alternatives, ignore "r" alternative when
14         choosing register preferences.  Use output_387_reg_move().
15         (*truncxfdf2_mixed): Combine alternatives, use "r" alternative
16         instead of "x".  Use output_387_reg_move().
17         (*truncxf<mode>2_i387_noop): Rename from *truncxfsf2_i387_noop and
18         *truncxfdf2_i387_noop.  Macroize insn using X87MODEF12 mode macro.
19         (*truncxf<mode>2_i387): Rename from *truncxfsf2_i387 and
20         *truncxfdf2_i387.  Macroize insn using X87MODEF12 mode macro.
21         Use output_387_reg_move().
22         (*truncxf?f_mixed splitter): Macroize splitter using X87MODEF12
23         mode macro.
24         (*truncxf?f_i387 splitter): Ditto.
25
26 >>>>>>> .r123627
27 2007-04-06  Daniel Berlin  <dberlin@dberlin.org>
28
29         * langhooks-def.h (LANG_HOOKS_INITIALIZER): Remove
30         LANG_HOOKS_SAFE_FROM_P.
31         * expr.c (safe_from_p): Remove langhook call.
32         * langhooks.h (lang_hooks): Remove safe_from_p.
33         (lhd_safe_from_p): Remove prototype.
34         * langhooks.c (lhd_safe_from_p): Remove.
35         
36 2007-04-06  Jan Hubicka  <jh@suse.cz>
37
38         * cgraphunit.c (decide_is_function_needed): Do not keep always_inline
39         functions.
40
41 2007-04-06  Uros Bizjak  <ubizjak@gmail.com>
42
43         * config/i386/i386.c (output_387_reg_move): Handle memory operand[0].
44         * config/i386/i386.md (*movsf_1, *movdf_nointeger,
45         *movdf_integer_rex64, *movdf_integer, *movxf_nointeger,
46         *movxf_integer): Use output_387_reg_move() for x87 reg->mem
47         alternative.
48         (*extendsfdf2_mixed, *extendsfdf2_i387, *extendsfxf2_i387,
49         *extenddfxf2_i387, *truncdfsf_fast_mixed): Ditto.
50
51 2007-04-05  Richard Henderson  <rth@redhat.com>
52
53         * config/alpha/alpha.c (print_operand) [+]: Remove.
54         (alpha_end_function): Print nop if call at end of function.
55         * config/alpha/alpha.h (PRINT_OPERAND_PUNCT_VALID_P): Remove +.
56         * config/alpha/alpha.md (UNSPEC_LDGP1): New.
57         (call_osf_1_er_noreturn, call_value_osf_1_er_noreturn): New.
58         (call_osf_2_er_nogp, call_value_osf_2_er_nogp): New.
59         (call_osf_2_er, call_value_osf_2_er): Merge the ldgp highpart into
60         the call pattern. Update peepholes to match.
61
62 2007-04-05  Janis Johnson  <janis187@us.ibm.com>
63
64         * doc/extend.texi (Other Builtins): Add decimal float variants
65         of signbit.
66         * builtins.def: Ditto.
67         * builtins.c (expand_builtin): Ditto.
68
69 2007-04-05  Uros Bizjak  <ubizjak@gmail.com>
70             H.J. Lu  <hongjiu.lu@intel.com>
71
72         PR target/31478
73         * config/i386/sse.md (sse2_umulv2siv2di3): Use V4SImode instead
74         of V8HImode when calling ix86_binary_operator_ok.
75         (sse2_pmaddwd): Call ix86_binary_operator_ok.
76         (sdot_prodv8hi): Operands 1 and 2 must be register.
77
78 2007-04-05  Alexandre Oliva  <aoliva@redhat.com>
79
80         * tree-sra.c (try_instantiate_multiple_fields): Needlessly
81         initialize align to silence bogus warning.
82
83 2007-04-05  Alexandre Oliva  <aoliva@redhat.com>
84
85         PR middle-end/22156
86         * tree-sra.c (struct sra_elt): Add in_bitfld_block.  Remove
87         all_no_warning.
88         (struct sra_walk_fns): Remove use_all parameter from use.
89         (sra_hash_tree): Handle BIT_FIELD_REFs.
90         (sra_elt_hash): Don't hash bitfld blocks.
91         (sra_elt_eq): Skip them in parent compares as well.  Handle
92         BIT_FIELD_REFs.
93         (sra_walk_expr): Don't maintain or pass down use_all_p.
94         (scan_use): Remove use_all parameter.
95         (scalarize_use): Likewise.  Re-expand assignment to
96         BIT_FIELD_REF of gimple_reg.  De-scalarize before input or
97         output, and re-scalarize after output.  Don't mark anything
98         for no warning.
99         (scalarize_ldst): Adjust.
100         (scalarize_walk_gimple_modify_statement): Likewise.
101         (build_element_name_1): Handle BIT_FIELD_REFs.
102         (instantiate_element): Don't warn for any element whose parent
103         is used as a whole.
104         (instantiate_missing_elements_1): Return the sra_elt.
105         (canon_type_for_field): New.
106         (try_instantiate_multiple_fields): New.
107         (instantiate_missing_elemnts): Use them.
108         (mark_no_warning): Removed.
109         (generate_one_element_ref): Handle BIT_FIELD_REFs.
110         (REPLDUP, sra_build_elt_assignment): New.
111         (generate_copy_inout): Use them.
112         (generate_element_copy): Likewise.  Handle bitfld differences.
113         (generate_element_zero): Don't recurse for blocks.  Use
114         sra_build_elt_assignment.
115         (generate_one_element_int): Take elt instead of var.  Use
116         sra_build_elt_assignment.
117         (generate_element_init_1): Adjust.
118         (scalarize_use, scalarize_copy): Use REPLDUP.
119         (scalarize_ldst): Move assert before dereference.
120         (dump_sra_elt_name): Handle BIT_FIELD_REFs.
121
122 2007-04-05  Steven Bosscher  <steven@gcc.gnu.org>
123
124         * regmove.c: Fix unused variable warnings due to previous commit.
125
126 2007-04-05  Steven Bosscher  <steven@gcc.gnu.org>
127
128         * regmove.c (STACK_GROWS_DOWNWARD): Don't boolean-ize.
129         (regmove_bb_head): Remove.
130         (copy_src_to_dest): Don't update regmove_bb_head and BB_HEAD.
131         (regmove_optimize): Don't do unnecessary CFG fixes for non-existing
132         problems with fixup_match_1.
133         Don't initialize/free regmove_bb_head.
134
135         (reg_is_remote_constant_p): If an insn is in the same basic block
136         but not before INSN, consider it remote, too.
137
138 2007-04-05  Anatoly Sokolov <aesok@post.ru>
139
140         PR target/25448
141         * config/avr/avr.c (avr_handle_fndecl_attribute): Use the 
142         DECL_ASSEMBLER_NAME, not the DECL_NAME.
143
144 2007-04-05  H.J. Lu  <hongjiu.lu@intel.com>
145
146         * config/i386/i386.h (TARGET_CPU_CPP_BUILTINS): Reformat.
147         (CONDITIONAL_REGISTER_USAGE): Likewise.
148
149 2007-04-04  Richard Henderson  <rth@redhat.com>
150
151         * config/alpha/lib1funcs.asm: Remove unused file.
152
153 2007-04-04  Brooks Moses  <brooks.moses@codesourcery.com>
154
155         PR other/31356
156         * opts.c (print_specific_help): Fix --help=<language>
157         header line.
158         (common_handle_option): Support --help=common.
159
160 2007-04-04  Brooks Moses  <brooks.moses@codesourcery.com>
161
162         PR other/31353
163         * gcc.c (main): Do not run the linker if
164         print_subprocess_help indicates that it shouldn't be
165         run.
166
167 2007-04-04  Brooks Moses  <brooks.moses@codesourcery.com>
168
169         PR doc/31355
170         * doc/invoke.texi (--help=): Document <languages> value, fix
171         formatting in tables of values.
172
173 2007-04-04  Danny Smith  <dannysmith.users.sourceforge.net>
174
175         * config/i386/winnt-cxx.c (i386_pe_type_dllimport_p): Don't ignore
176         dllimport attribute of virtual methods.
177
178 2007-04-04  Chen Liqin  <liqin@sunnorth.com.cn>
179
180         * config/score/crti.asm: Change _bss_start to __bss_start.
181         * config/score/score.h (CONDITIONAL_REGISTER_USAGE): Added.
182         (OUTGOING_REG_PARM_STACK_SPACE) update.
183         * config/score/score.opt: add options to make backend support
184         score5, score5u, score7 and score7d.
185         * config/score/score.md: Likewise.
186         * config/score/misc.md: Likewise.
187         * config/score/mac.md: Likewise.
188         * doc/invoke.texi: Likewise.
189         * doc/md.texi: update constraints define.
190
191 2007-04-03  Richard Henderson  <rth@redhat.com>
192
193         * expr.c (store_expr): If get_signed_or_unsigned_type doesn't yield
194         an appropriate type, use the mode instead.
195
196 2007-04-03  Richard Sandiford  <richard@codesourcery.com>
197
198         * config.gcc (mips-wrs-vxworks): Add vx-common.h to tm_file.
199         Set the default --with-arch setting to mips2.
200         * config/mips/t-vxworks (MULTILIB_OPTIONS, MULTILIB_MATCHES)
201         (MULTILIB_EXCEPTIONS): Redefine with new multilibs.
202         (MULTILIB_OSDIRNAMES): Delete.
203         (MULTILIB_DIRNAMES): Define.
204         * config/mips/vxworks.h (LINK_SPEC): Add VXWORKS_LINK_SPEC.
205         (LIB_SPEC, STARTFILE_SPEC, ENDFILE_SPEC): Define.
206         (TARGET_OS_CPP_BUILTINS): Incorporate old SUBTARGET_CPP_SPEC
207         definitions, except for _WRS_R3K_EXC_SUPPORT.  Call
208         VXWORKS_OS_CPP_BUILTINS.
209         (SUBTARGET_CPP_SPEC): Redefine to VXWORKS_ADDITIONAL_CPP_SPEC.
210         (MIPS_DEBUGGING_INFO): Undefine.
211         (FUNCTION_PROFILER): Define to VXWORKS_FUNCTION_PROFILER.
212
213 2007-04-03  Jakub Jelinek  <jakub@redhat.com>
214
215         PR middle-end/30704
216         * fold-const.c (native_encode_real): Encode real.c provided longs
217         as a series of 32-bit native integers.
218         (native_interpret_real): Interpret buffer as a series of 32-bit
219         native integers.
220
221 2007-04-03  Richard Guenther  <rguenther@suse.de>
222
223         * genpreds.c (write_insn_constraint_len): Write function
224         optimized for CONSTRAINT_LEN implementation.
225         (write_tm_preds_h): Output insn_constraint_len inline and
226         use it for CONSTRAINT_LEN.
227         (write_insn_preds_c): Don't output insn_constraint_len.
228         * doc/md.texi (define_register_constraint): Document multi-letter
229         constraints shall have the same length if they start with the same
230         letter.
231
232 2007-04-03  Uros Bizjak  <ubizjak@gmail.com>
233
234         PR target/31175
235         * config/i386/i386.md (isinf<mode>2): Expand only when
236         TARGET_C99_FUNCTIONS is set.
237
238 2007-04-03  Uros Bizjak  <ubizjak@gmail.com>
239
240         * config.gcc (i[34567]86-*-linux*): Add i386/t-crtpc to tm-file.
241         (x86_64-*-linux*): Ditto.
242         * config/i386/i386.opt (mpc): New option.
243         * config/i386/i386.c (overrride_options): Handle
244         ix87_precision_string.
245         * config/i386/crtprec.c: New file.
246         * config/i386/t-crtpc: Ditto.
247         * config/i386/linux.h (ENDFILE_SPEC): Add handling of -mpc32, -mpc64
248         and -mpc80 options.
249         * config/i386/linux64.h (ENDFILE_SPEC): Ditto.
250         * config/i386/t-linux64 (EXTRA_MULTILIB_PARTS): Add
251         crtprec32.o, crtprec64.o and crtprec80.o.
252
253         * doc/invoke.texi (Machine Dependent Options): Add -mpc32, -mpc64
254         and -mpc80 options.
255         (i386 and x86-64 Options): Document -mpc32, -mpc64 and -mpc80 options.
256
257 2007-04-02  Eric Christopher  <echristo@apple.com>
258
259         * doc/invoke.texi (i386 and x86-64 Options): Document -m64
260         limitations on darwin.
261
262 2007-04-02  Anatoly Sokolov <aesok@post.ru>
263
264         PR target/31137
265         * config/avr/avr.c (avr_rtx_costs): Add missing 'break' statements.
266
267 2007-04-02  Dave Korn  <dave.korn@artimi.com>
268
269         * doc/tm.texi (FUNCTION_MODE): Update and extend documentation.
270
271 2007-04-02  Dave Korn  <dave.korn@artimi.com>
272
273         * libgcc2.h (exception_descriptor): Don't forward-declare.
274         (__get_eh_table_language, __get_eh_table_version): Delete
275         prototypes of long-dead functions.
276
277 2007-04-01  Daniel Berlin  <dberlin@dberlin.org>
278
279         * ebitmap.h: New file
280         * ebitmap.c: New file
281         * Makefile.in (ebitmap.o): New target.
282
283 2007-04-01  Jan Hubicka  <jh@suse.cz>
284
285         * emit-rtl.c (emit_insn_before_setloc): Do not ICE when asked to emit
286         before very first instruction.
287
288 2007-04-01  Jan Hubicka  <jh@suse.cz>
289
290         * ggc-page.c (ggc_print_statistics): Fix formatting string to avoid
291         waring on 64bit hosts.
292         * bitmap.h: Fix typo in bitmap_head_def.
293
294 2007-04-01  Steven Bosscher  <steven@gcc.gnu.org>
295
296         PR rtl-optimization/31391
297         * cfgcleanup.c (try_optimize_cfg): If a removed label is turned
298         into a DELETED_LABEL note, and the label is in an empty basic
299         block, update BB_END as well as BB_HEAD.
300
301 2007-04-01  Richard Henderson  <rth@redhat.com>
302
303         PR tree-optimization/31169
304         * tree-vrp.c (extract_range_from_binary_expr) <RSHIFT_EXPR>: Drop
305         to varying if the range is outside [0,  prec-1].
306
307 2007-04-01  Richard Sandiford  <richard@codesourcery.com>
308
309         PR target/31388
310         * config/mips/mips.md (load_const_gp): New insn.
311         * config/mips/mips.c (mips_split_symbol): Avoid using or creating
312         the MIPS16 GP pseudo register if no_new_pseudos.
313         (mips16_gp_pseudo_reg): Use gen_load_const_gp.
314
315 2007-03-31  Andrew Pinski  <andrew_pinski@playstation.sony.com>
316
317         PR target/31364
318         * config/rs6000/rs6000.md (call): Convert to LR hard reg for
319         secureplt.
320         (call_value): Likewise.
321
322 2007-03-31  Wolfgang Bangerth  <bangerth@dealii.org>
323             Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
324
325         PR 14737
326         * doc/invoke.texi: (optimization options): Reword description
327         of -ffast-math. Document its primary purpose.
328
329 2007-03-31  Richard Guenther  <rguenther@suse.de>
330
331         * omp-low.c (splay-tree.h): Include.
332         (lookup_decl): Replace splay-tree usage by pointer-map.
333         (maybe_lookup_decl): Likewise.
334         (new_omp_context): Likewise.
335         (delete_omp_context): Likewise.
336         * gimplify.c (splay-tree.h): Include.
337         * tree-inline.c (insert_decl_map): Replace splay-tree usage by
338         pointer-map.
339         (remap_ssa_name): Likewise.
340         (remap_decl): Likewise.
341         (remap_type_1): Likewise.
342         (remap_type): Likewise.
343         (copy_body_r): Likewise.
344         (expand_call_inline): Likewise.
345         (clone_body): Likewise.
346         (copy_tree_r): Likewise.
347         (remap_save_expr): Likewise.
348         (unsave_r): Likewise.
349         (unsave_expr_now): Likewise.
350         (tree_function_versioning): Likewise.
351         (build_duplicate_type): Likewise.
352         * tree-inline.h (pointer-set.h): Include instead of splay-tree.h.
353         (struct copy_body_data): Replace splay-tree by pointer-map.
354         * Makefile.in (TREE_INLINE_H): Depend on pointer-map.h,
355         not $(SPLAY_TREE_H).
356         (gimplify.o): Depend on $(SPLAY_TREE_H).
357         (omp-low.p): Likewise.
358
359 2007-03-31  Anatoly Sokolov <aesok@post.ru>
360
361         * config/avr/predicates.md (even_register_operand,
362         odd_register_operand): New predicates.
363         * config/avr/avr.md (movw peephole2): New.
364         (movw_r peephole2): New.
365
366 2007-03-30  Rafael Avila de Espindola  <espindola@google.com>
367
368         * tree.h (get_signed_or_unsigned_type): New.
369         * fold-const.c (operand_equal_for_comparison_p): Use
370         get_signed_or_unsigned_type instead of
371         lang_hooks.types.signed_or_unsigned_type.
372         * expr.c (store_expr): Ditto.
373         * langhooks.c (get_signed_or_unsigned_type): New.
374         (lhd_signed_or_unsigned_type): New.
375         * langhooks.h (lhd_signed_or_unsigned_type): New.
376         * langhooks-def.h (LANG_HOOKS_SIGNED_OR_UNSIGNED_TYPE): Define.
377
378 2007-03-30  Richard Henderson  <rth@redhat.com>
379
380         * tree-ssa-loop-ivopts.c: Include target.h.
381         (produce_memory_decl_rtl): Pass the rtx through encode_section_info.
382         (get_address_cost): Force SYMBOL_FLAG_LOCAL set.
383         (force_expr_to_var_cost): Use produce_memory_decl_rtl.
384         * Makefile.in (tree-ssa-loop-ivopts.o): Depend on TARGET_H.
385
386 2007-03-30  Richard Henderson  <rth@redhat.com>
387             Kai Tietz  <kai.tietz@onevision.com>
388
389         * config/i386/cygming.h (DWARF2_DEBUGGING_INFO): Enable by
390         default for 64-bit.
391         (PREFERRED_DEBUGGING_TYPE): Prefer dwarf2 for 64-bit.
392         (TARGET_64BIT_MS_ABI): New.
393         (DBX_REGISTER_NUMBER): Handle 64-bit.
394         (SIZE_TYPE, PTRDIFF_TYPE): Use long long for 64-bit.
395         (LONG_TYPE_SIZE): Force to 32.
396         (REG_PARM_STACK_SPACE): New.
397         (OUTGOING_REG_PARM_STACK_SPACE): New.
398         (REGPARM_MAX, SSE_REGPARM_MAX): New.
399         (HANDLE_PRAGMA_PUSH_POP_MACRO): New.
400         (STACK_BOUNDARY): Use 128 for 64-bit.
401         * config/i386/cygwin.asm: Use push/ret to preserve call stack.
402         Add 64-bit implementation.
403         * config/i386/gthr-win32.c (__gthr_win32_key_create): Mark dtor
404         argument unused.
405         * config/i386/i386.c (x86_64_ms_abi_int_parameter_registers): New.
406         (override_options): Set ix86_cmodel for TARGET_64BIT_MS_ABI.
407         Warn for -mregparm, -mrtd in 64-bit mode; force ix86_regparm
408         for 64-bit; use TARGET_SUBTARGET64_DEFAULT.
409         (ix86_handle_cconv_attribute): Don't warn when ignoring if
410         TARGET_64BIT_MS_ABI.
411         (ix86_function_arg_regno_p): Handle TARGET_64BIT_MS_ABI.
412         (ix86_pass_by_reference): Likewise.
413         (ix86_function_value_regno_p): Likewise.
414         (ix86_build_builtin_va_list): Likewise.
415         (ix86_va_start, ix86_gimplify_va_arg): Likewise.
416         (function_arg_advance_ms_64): New.
417         (function_arg_advance): Call it.
418         (function_arg_ms_64): New.
419         (function_arg): Call it.
420         (function_value_ms_64): New.
421         (ix86_function_value_1): Call it.
422         (return_in_memory_ms_64): New.
423         (ix86_return_in_memory): Call it.
424         (setup_incoming_varargs_ms_64): New.
425         (ix86_setup_incoming_varargs): Call it.
426         (ix86_expand_prologue): Handle 64-bit stack probing.
427         (legitimize_pic_address): Handle TARGET_64BIT_MS_ABI.
428         (output_pic_addr_const): Likewise.
429         (x86_this_parameter): Likewise.
430         (x86_output_mi_thunk): Likewise.
431         (x86_function_profiler): Likewise.
432         (TARGET_STRICT_ARGUMENT_NAMING): New.
433         * config/i386/i386.h (TARGET_SUBTARGET64_DEFAULT): New.
434         (TARGET_64BIT_MS_ABI): New.
435         (CONDITIONAL_REGISTER_USAGE): Handle TARGET_64BIT_MS_ABI.
436         * config/i386/i386.md (allocate_stack_worker): Remove.
437         (allocate_stack_worker_32): Rename from allocate_stack_worker_1;
438         describe the clobber of eax without a match_scratch.
439         (allocate_stack_worker_postreload): Remove.
440         (allocate_stack_worker_64): Rename from allocate_stack_worker_rex64;
441         describe the clobbers of rax, r10, r11 properly; use __chkstk symbol.
442         (allocate_stack_worker_rex64_postreload): Remove.
443         (allocate_stack): Handle 64-bit.
444         * config/i386/i386elf (TARGET_SUBTARGET_DEFAULT): Remove.
445         * config/i386/mingw32.h (TARGET_VERSION): Set correctly for 64-bit.
446         (EXTRA_OS_CPP_BUILTINS): Handle 64-bit.
447         (STANDARD_INCLUDE_DIR): Handle TARGET_64BIT_DEFAULT.
448         (STANDARD_STARTFILE_PREFIX_1): Likewise.
449         * config/i386/unix.h (TARGET_SUBTARGET64_DEFAULT): New.
450         * config.build (x86_64-*-mingw*): New host.
451         * config.host (x86_64-*-mingw*): New host.
452         * config.gcc (x86_64-*-mingw*): New target.
453         * gthr-win32.h (__gthread_key_create): Mark dtor unused.
454
455 2007-03-30  Richard Henderson  <rth@redhat.com>
456             Kai Tietz  <kai.tietz@onevision.com>
457
458         * c-pragma.c (struct def_pragma_macro_value): New.
459         (struct def_pragma_macro): New.
460         (pushed_macro_table): New.
461         (dpm_hash, dpm_eq): New.
462         (handle_pragma_push_macro, handle_pragma_pop_macro): New.
463         (init_pragma): Install them.
464         * doc/tm.texi (HANDLE_PRAGMA_PUSH_POP_MACRO): New.
465
466 2007-03-30  Anatoly Sokolov <aesok@post.ru>
467
468         * config/avr/avr.c (avr_override_options): Clear
469         'flag_delete_null_pointer_checks'.
470
471 2007-03-30  Paolo Carlini  <pcarlini@suse.de>
472
473         PR c++/26099
474         * c-common.h (enum rid): Add RID_HAS_NOTHROW_ASSIGN,
475         RID_HAS_NOTHROW_CONSTRUCTOR, RID_HAS_NOTHROW_COPY,
476         RID_HAS_TRIVIAL_ASSIGN, RID_HAS_TRIVIAL_CONSTRUCTOR,
477         RID_HAS_TRIVIAL_COPY, RID_HAS_TRIVIAL_DESTRUCTOR,
478         RID_HAS_VIRTUAL_DESTRUCTOR, RID_IS_ABSTRACT, RID_IS_BASE_OF,
479         RID_IS_CONVERTIBLE_TO, RID_IS_CLASS, RID_IS_EMPTY, RID_IS_ENUM,
480         RID_IS_POD, RID_IS_POLYMORPHIC, RID_IS_UNION, as
481         C++ extensions.
482         * doc/extend.texi (Extensions to the C++ Language): Add Type Traits.
483
484 2007-03-30  Steven Bosscher  <steven@gcc.gnu.org>
485
486         * regmove.c: Move all of pass_stack_adjustments from here...
487         * combine-stack-adj.c: ...to this new file.
488         * Makefile.in: Add rules for combine-stack-adj.o.
489
490 2007-03-30  Zdenek Dvorak  <dvorakz@suse.cz>
491
492         PR tree-optimization/31383
493         * tree-data-ref.c (affine_function_equal_p): Do not require the vectors
494         to have the same length.
495
496 2007-03-30  Jan Hubicka  <jh@suse.cz>
497
498         PR middle-end/30700
499         * dwarf2out.c (reference_to_unused): Ask cgraph for functions
500         availablility; add more sanity checking; ask varpool only about
501         VAR_DECL.
502
503 2007-03-29  Richard Henderson  <rth@redhat.com>
504
505         * unwind-generic.h (_sleb128_t, _uleb128_t): Don't use HAVE_LONG_LONG
506         to decide, but __SIZEOF_LONG_LONG__.
507
508 2007-03-29  Richard Henderson  <rth@redhat.com>
509
510         * emutls.c (struct __emutls_array): New.
511         (emutls_destroy): Use it instead of casting element 0 from void*.
512         (__emutls_get_address): Likewise.
513
514 2007-03-29  Richard Henderson  <rth@redhat.com>
515
516         * varasm.c (initializer_constant_valid_p): Don't deny
517         DECL_DLLIMPORT_P on functions.
518
519         * config/i386/cygming.h: Remove function declarations.
520         (SUBTARGET_ENCODE_SECTION_INFO): Don't undef first.
521         (ASM_OUTPUT_LABELREF): Remove.
522         (COMMON_ASM_OP): Remove.
523         (ASM_OUTPUT_COMMON): Remove.
524         (ASM_OUTPUT_ALIGNED_DECL_COMMON): New.
525         (ASM_DECLARE_OBJECT_NAME): Use i386_pe_maybe_record_exported_symbol.
526         (ASM_DECLARE_FUNCTION_NAME): Likewise.
527         * config/i386/i386-interix.h (SUBTARGET_ENCODE_SECTION_INFO):
528         Rename from TARGET_ENCODE_SECTION_INFO.
529         * config/i386/netware.h: Likewise.
530         * config/i386/i386-protos.h: Update.
531         * config/i386/i386.c (ix86_function_ok_for_sibcall): Turn ifdef
532         of TARGET_DLLIMPORT_DECL_ATTRIBUTES into straight if.
533         (legitimate_constant_p): Reject dllimports.
534         (dllimport_map, get_dllimport_decl): New.
535         (legitimize_dllimport_symbol): New.
536         (legitimize_address, ix86_expand_move): Use it.
537         (TARGET_BINDS_LOCAL_P): Redefine for TARGET_DLLIMPORT_DECL_ATTRIBUTES.
538         * config/i386/i386.h (DLL_IMPORT_EXPORT_PREFIX): Remove.
539         (SYMBOL_FLAG_DLLIMPORT, SYMBOL_REF_DLLIMPORT_P): New.
540         (SYMBOL_FLAG_DLLEXPORT, SYMBOL_REF_DLLEXPORT_P): New.
541         * config/i386/predicates.md (constant_call_address_operand): Only
542         accept symbols; reject dllimport_p symbols.
543         * config/i386/uwin.h (ASM_DECLARE_FUNCTION_NAME): Use
544         i386_pe_maybe_record_exported_symbol.
545         * config/i386/winnt.c (DLL_IMPORT_PREFIX, DLL_EXPORT_PREFIX): Remove.
546         (i386_pe_determine_dllexport_p): Rename from i386_pe_dllexport_p.
547         (i386_pe_determine_dllimport_p): Rename from i386_pe_dllimport_p;
548         trust the setting of DECL_DLLIMPORT_P.
549         (i386_pe_dllexport_name_p, i386_pe_dllimport_name_p): Remove.
550         (i386_pe_mark_dllexport, i386_pe_mark_dllimport): Remove.
551         (gen_stdcall_or_fastcall_suffix): Return NULL if no change required;
552         tidy the argument scanning loop.
553         (i386_pe_encode_section_info): Set SYMBOL_FLAG_DLLIMPORT and
554         SYMBOL_FLAG_DLLEXPORT in SYMBOL_REF_FLAGS.
555         (i386_pe_strip_name_encoding): Remove.
556         (i386_pe_binds_local_p): New.
557         (i386_pe_strip_name_encoding_full): Use default_strip_name_encoding.
558         (i386_pe_output_labelref): Remove.
559         (i386_pe_asm_output_aligned_decl_common): New.
560         (i386_pe_maybe_record_exported_symbol): Rename from
561         i386_pe_record_exported_symbol; check for dllexported symbols.
562
563 2007-03-29  Zack Weinberg  <zack@mrtock.ucsd.edu>
564
565         * gengtype.c (oprintf): Mostly revert changes from 2007-03-26;
566         add comment explaining why vsnprintf cannot be used.
567
568 2007-03-29  Douglas Gregor  <doug.gregor@gmail.com>
569
570         PR tree-optimization/30666
571         * tree.c (build_complex_type): When creating type names for DWARF2
572         debug info, create TYPE_DECLs for TYPE_NAME instead of
573         IDENTIFIER_NODEs.
574         (build_common_tree_nodes_2): Use build_complex_type when building
575         predefined complex types, to preserve canonical types.
576
577 2007-03-29  Steven Bosscher  <steven@gcc.gnu.org>
578
579         * ifcvt.c (struct noce_if_info): Add then_else_reversed field.
580         (noce_get_alt_condition): Look at it to determine whether to
581         reverse the condition or not.
582         (noce_get_condition): Substitute the truth for lies.
583         (noce_find_if_block): Set the then_else_reversed field.
584
585 2007-03-29  Lars Poeschel <larsi@wh2.tu-dresden.de>
586
587         * config/fr30/fr30.md (movdi): Do not accept immediates as the
588         destination of this insn.
589         * config/fr30/fr30.c (fr30_move_double): Use emit_move_insn rather
590         than calling gen_rtx_SET directly.  Use r0 to hold the value of
591         'address + 4' rather than a stack based temporary which can be
592         mis-optimized away.
593
594 2007-03-29  Andreas Krebbel  <krebbel1@de.ibm.com>
595
596         * config/s390/s390.c (s390_secondary_input_reload_class,
597         s390_secondary_output_reload_class): Functions removed.
598         (s390_secondary_reload): New function.
599         (TARGET_SECONDARY_RELOAD): Target macro defined.
600         * config/s390/s390.h (SECONDARY_INPUT_RELOAD_CLASS,
601         SECONDARY_OUTPUT_RELOAD_CLASS): Macro definitions removed.
602         * config/s390/s390.md ("reload_outti", "reload_outdi",
603         "reload_indi", "reload_insi", "reload_out<mode>", "reload_in<mode>",
604         "reload_out<mode>"): Expanders removed.
605         ("reload<mode>_plus", "reload<mode>_nonoffmem_in",
606         "reload<mode>_nonoffmem_out"): Expanders added.
607
608 2007-03-29  Andreas Krebbel  <krebbel1@de.ibm.com>
609
610         * regmove.c (optimize_reg_copy_1): Don't perform DEST->SRC repair action if
611         SRC->DEST replacement failed anyway.
612
613 2007-03-28  Mike Stump  <mrs@apple.com>
614
615         * config/darwin9.h (ASM_OUTPUT_ALIGNED_COMMON): Add.
616         * config/darwin.h (MAX_OFILE_ALIGNMENT): Fix.
617         * config/rs6000/darwin.h (ASM_OUTPUT_ALIGNED_COMMON): Removed #undef.
618
619 2007-03-28  Dwarakanath Rajagopal  <dwarak.rajagopal@amd.com>
620
621         * config.gcc: Accept barcelona as a variant of amdfam10.
622         * config/i386/i386.c (override_options): Likewise.
623         * doc/invoke.texi: Likewise.
624
625 2007-03-28  Eric Botcazou  <ebotcazou@adacore.com>
626
627         * tree-dfa.c (get_ref_base_and_extent): Do not expect positive
628         offsets for BIT_FIELD_REF and COMPONENT_REF.
629
630 2007-03-28  Richard Guenther  <rguenther@suse.de>
631
632         * tree.c (is_global_var): Move ...
633         * tree-flow-inline.h (is_global_var): ... here.
634         * tree.h (is_global_var): Remove declaration.
635
636 2007-03-28  Uros Bizjak  <ubizjak@gmail.com>
637
638         * config/i386/i386.h (X86_TUNE_PROMOTE_HIMODE_IMUL): New tuning
639         option.
640         (TARGET_TUNE_PROMOTE_HIMODE_IMUL): New define. Use new tuning option.
641         * config/i386/i386.c (ix86_tune_features): Initialize new
642         tuning option.
643         * config/i386/predicates.md (promotable_binary_operator): Use
644         TARGET_TUNE_PROMOTE_HIMODE_IMUL.
645
646 2007-03-28  Grigory Zagorodnev <grigory_zagorodnev@linux.intel.com>
647
648         PR target/31380
649         * config/i386/sse.md (uminv16qi3): Use UMIN instead of UMAX.
650
651 2007-03-28  Lars Poeschel <larsi@wh2.tu-dresden.de>
652
653         * config/fr30/fr30.md (movsi_internal): Change destination
654         constraint from m to V and add m to the end.
655
656 2007-03-28  Christian Bruel  <christian.bruel@st.com>
657
658         * config/sh/sh.md (movsi_i): Fix type attribute.
659
660 2007-03-28  Christian Bruel  <christian.bruel@st.com>
661
662         * config/sh/sh.md (movsi_ie): Fix memory constraints attribute length.
663         (movsf_ie): Likewise.
664
665 2007-03-28  Christian Bruel  <christian.bruel@st.com>
666
667         * config.gcc: Add sh4-300 to multilib.
668         * config/sh/t-mlib-sh4-300: New file.
669
670 2007-03-28  Andreas Krebbel  <krebbel1@de.ibm.com>
671
672         * config/s390/s390.md ("fix_trunc<mode>di2"): New expander.
673         ("fix_trunc<DFP:mode>di2_dfp"): New insn definition renamed from
674         fix_trunc<mode>di2.
675         ("fixuns_truncdddi2", "fixuns_trunctddi2"): Use
676         fix_trunc<DFP:mode>di2_dfp instead of fix_trunc<mode>di2.
677         ("fix_truncdfsi2", "fix_truncsfsi2", "fixuns_truncdddi2",
678         "fixuns_trunctddi2"): Whitespace fix.
679
680 2007-03-28  Kaz Kojima  <kkojima@gcc.gnu.org>
681
682         * config/sh/sh.h (CALL_COOKIE_RET_TRAMP_SHIFT): Move after
683         the definition of struct sh_args.
684         (CALL_COOKIE_RET_TRAMP, CALL_COOKIE_STACKSEQ_SHIFT,
685         CALL_COOKIE_INT_REG_GET): Likewise.
686
687 2007-03-28  Steven Bosscher  <steven@gcc.gnu.org>
688
689         * ifcvt.c (cond_exec_find_if_block): Return FALSE if no
690         transformations are applied successfully.
691
692 2007-03-27  Douglas Gregor  <doug.gregor@gmail.com>
693
694         * tree.c (tree_contains_struct): Permit 512 tree codes.
695         * tree.h (tree_contains_struct): Ditto.
696         (MAX_TREE_CODES): Ditto.
697         (struct tree_base): Make CODE 16 bits, instead of 8 bits. Add
698         SPARE member to store remaining padding bits.
699
700 2007-03-27  Anatoly Sokolov <aesok@post.ru>
701
702         * config/avr/avr.c (avr_mcu_types): Move at90usb82 device to 'avr4'
703         architecture.
704
705 2007-03-27  Janis Johnson  <janis187@us.ibm.com>
706
707         * configure.ac: Fix assembler test for powerpc*-linux decimal float.
708         * configure: Regenerate.
709
710         * configure: Regenerate using the correct version of autoconf.
711
712 2007-03-27  Anatoly Sokolov  <aesok@post.ru>
713
714         * config/avr/avr.c (avr_hard_regno_mode_ok): Disallow QImode in stack
715         pointer regs.
716         * config/avr/avr.h (REGISTER_NAMES): Rename "__SPL__" and "__SPH__"
717         regs to "__SP_L__" and "__SP_H__".
718
719 2007-03-27  Richard Guenther  <rguenther@suse.de>
720
721         * tree-dfa.c (get_ref_base_and_extent): Replace bit_offset and
722         computations with it with a HOST_WIDE_INT variable.
723
724 2007-03-26  Mike Stump  <mrs@apple.com>
725
726         * config/rs6000/darwin.h (DARWIN_MINVERSION_SPEC): Add
727         objective-c-header, objective-c++-header and objc++-cpp-output
728         support.
729         * config/i386/darwin.h (DARWIN_MINVERSION_SPEC): Likewise.
730
731 2007-03-26  Richard Henderson  <rth@redhat.com>
732
733         PR target/31361
734         * config/i386/i386.c (IX86_BUILTIN_PSLLDQ128, IX86_BUILTIN_PSLLW128,
735         IX86_BUILTIN_PSLLD128, IX86_BUILTIN_PSLLQ128, IX86_BUILTIN_PSRAW128,
736         IX86_BUILTIN_PSRAD128, IX86_BUILTIN_PSRLW128, IX86_BUILTIN_PSRLD128,
737         IX86_BUILTIN_PSRLQ128): New.
738         (ix86_init_mmx_sse_builtins): Add them.
739         (ix86_expand_builtin): Expand them.
740         * config/i386/sse.md (ashr<mode>3, lshr<mode>3, ashl<mode>3): Make
741         operand 2 be TImode.
742         * config/i386/emmintrin.h (_mm_slli_epi64, _mm_srai_epi16,
743         _mm_srai_epi32, _mm_srli_epi16, _mm_srli_epi32,
744         _mm_srli_epi64): Mark __B const.
745         (_mm_srli_si128, _mm_srli_si128): Fix disabled inline versions.
746         (_mm_sll_epi16, _mm_sll_epi32, _mm_sll_epi64, _mm_sra_epi16,
747         _mm_sra_epi32, _mm_srl_epi16, _mm_srl_epi32, _mm_srl_epi64): Use
748         new two-vector shift builtins.
749
750 2007-03-26  Ian Lance Taylor  <iant@google.com>
751
752         PR tree-optimization/31345
753         * tree-vrp.c (extract_range_from_binary_expr): Turn ranges like
754         [+INF, +INF(OVF)] into VARYING.
755
756 2007-03-26  Zack Weinberg  <zackw@panix.com>
757
758         * gengtype-parse.c: New file.
759         * gengtype-yacc.y: Delete.
760         * gengtype-lex.l: Don't include gengtype-yacc.h.
761         Define YY_DECL and yyterminate appropriately for recursive
762         descent parser.  yylval is now a string out-parameter to yylex.
763         (HWS, EOID): New shorthand.
764         (IWORD): Add a couple more types.
765         (yylex): Add a setup stanza.  Remove the complex rules for
766         detecting GTY'ed types and typedefs; replace with simple
767         keyword detectors.  Adjust everything for the changed
768         definition of yylval.  Ignore all pp-directives, not just #define.
769         (yyerror): Delete.
770         (parse_file): Rename yybegin; do not call yyparse.
771         (yyend): New.
772         * gengtype.c (xasprintf): Export again.
773         (this_file): New.  Use everywhere __FILE__ was being used.
774         (get_lang_bitmap): Special case types defined in gengtype.c.
775         (do_typedef, new_structure): Suppress definition of certain types.
776         (new_structure): Improve diagnostics of duplicate definitions.
777         Make sure location_s is associated with input.h.
778         (nreverse_pairs, define_location_structures): New functions.
779         (main): Improve tagging of kludge types.  Remove old kludges
780         for input.h types; use define_location_structures.
781         * gengtype.h: Update prototypes.  Define token codes here.
782         * Makefile.in: Remove all references to gengtype-yacc.
783         Add rules for gengtype-parse.o.  Adjust rules for gengtype-lex.o
784         and gengtype.
785         * bitmap.h (struct bitmap_head_def): Coalesce definitions,
786         add GTY((skip)) to the field that's only conditionally there.
787         * doc/install.texi: Document that Bison is no longer required
788         unless building treelang.
789
790         * gengtype.c: Don't include gtyp-gen.h.
791         (srcdir): Declare here.
792         (base_files, lang_dir_names): Allocate dynamically.
793         (gt_files, num_gt_files, num_lang_dirs): New globals.
794         (measure_input_list, read_input_line, read_input_list)
795         (set_lang_bitmap): New functions.
796         (get_base_file_bitmap): Rename get_lang_bitmap and drastically
797         simplify, relying on read_input_list to set up the bitmaps.
798         (main): Arguments are no longer unused.  Check for correct number
799         of command line arguments, set srcdir and srcdir_len, then call
800         read_input_list, before doing anything else.  No need to worry
801         about duplicates in main loop.
802         * configure.ac: Simplify the calculation of all_gtfiles.
803         Put language tags in there.  Don't set or substitute
804         all_gtfiles_files_langs or all_gtfiles_files_frags.
805         * Makefile.in: Revamp the way gengtype is invoked, now that it
806         takes a file on its command line with a much simpler format.
807         Remove or replace with gtyp-input.list all references to gtyp-gen.h.
808         (GTFILES): Remove duplicates and C source files.
809         * c-config-lang.in, cp/config-lang.in, objc/config-lang.in
810         * objcp/config-lang.in: Add c-pragma.h to gtfiles.
811         * configure: Regenerate.
812
813         * gengtype.h: Remove all type definitions to gengtype.c; leave
814         only definitions of options_p, type_p, and pair_p as opaque
815         pointers.  Update prototypes.
816         * gengtype.c: Many type definitions moved here from gengtype.h.
817         Consolidate type definitions at the top of the file.
818         (xvasprintf): Delete.
819         (xasprintf): Make static.
820         (create_nested_pointer_option): Add 'next' parameter.
821         (create_field_all, create_field_at): New functions.
822         (create_field): Now a thin wrapper around create_field_all.
823         (create_optional_field): Rename create_optional_field_ and add
824         line argument.  Original name is now a macro which supplies
825         __LINE__.
826         (oprintf): Use vsnprintf directly.
827         (close_output_files): Use fatal rather than perror/exit.
828         (note_def_vec, note_def_vec_alloc): Use create_field_at.
829         (main): Set progname.  Don't use exit.
830         * gengtype-yacc.y (struct_fields): Use create_field_at.
831         (option, optionseqopt): Delete.
832         (optionseq): Consolidate productions from option here so we
833         can use the first argument to create_option.
834
835         * gengtype-lex.l: Distinguish unions from structures in the
836         token type.  Don't call find_structure; return the tag as a string.
837         * gengtype-yacc.y: Add new token types ENT_TYPEDEF_UNION and ENT_UNION.
838         Type of these, ENT_TYPEDEF_STRUCT, and ENT_STRUCT is string.
839         Reorganize typedef_struct production accordingly.
840         Use create_nested_ptr_option.
841         * gengtype.c (create_nested_ptr_option): New function.
842         * gengtype.h: Declare it.
843
844         * gengtype.h (struct type): Replace 'sc' with boolean, scalar_is_char.
845         (string_type): Don't declare.
846         (do_scalar_typedef): Declare.
847         (create_scalar_type): Update prototype.
848         * gengtype.c (string_type): Make static.
849         (scalar_nonchar, scalar_char): New.
850         (do_scalar_typedef): Export.  Always use scalar_nonchar for the type.
851         (resolve_typedef): Use scalar_nonchar for error recovery.
852         (create_scalar_type): Remove name_len field.  Return scalar_char
853         or scalar_nonchar as appropriate.
854         (adjust_field_type): Look at scalar_is_char boolean to decide whether
855         to use string_type.
856         (throughout): Use scalar_nonchar instead of calling create_scalar_type,
857         whenever possible.
858         (main): Initialize scalar_char and scalar_nonchar before calling
859         gen_rtx_next.
860         * gengtype-lex.l: Adjust for removal of second argument to
861         create_scalar_type.  Use yylval.s instead of yylval.t when
862         returning SCALAR.
863         * gengtype-yacc.y: Type of SCALAR is string.  Call
864         create_scalar_type from type:SCALAR rule.  Adjust for removal of
865         second argument to create_scalar_type.
866
867         * vec.h: Remove all #if IN_GENGTYPE blocks.
868         Add comment saying that changes may require adjustments to gengtype.
869         * gengtype.c: Don't include coretypes.h or tm.h.
870         Add comment to inclusion of errors.h.
871         (note_def_vec, note_def_vec_alloc): New functions.
872         * gengtype.h: Declare new functions.
873         * gengtype-lex.l: Don't include coretypes.h.
874         (YY_INPUT, macro_input, push_macro_expansion, mangle_macro_name):
875         Delete.
876         (update_lineno): Remove unnecessary prototype.
877         (DEF_VEC_* rules): Simplify using note_def_vec / note_def_vec_alloc.
878         (VEC rule): Just return VEC_TOKEN.
879         * gengtype-yacc.y (VEC_TOKEN): New token type.
880         (type): Add a production for VEC(a,b).
881         * Makefile.in: Update dependencies.
882
883         * gengtype-lex.l: Remove rules for parsing pointer-to-function
884         typedefs that use the old PARAMS macro.
885
886         * gengtype-lex.l: Remove all rules and states relating to yacc
887         input files.
888         * gengtype-yacc.y: Similarly.
889         * gengtype.c (note_yacc_type): Delete function.
890         * gengtype.h: Update prototypes.
891
892 2007-03-26  Joseph Myers  <joseph@codesourcery.com>
893
894         * tree-pretty-print.c (dump_generic_node): Report precision of
895         unnamed integer types.
896
897 2007-03-26  Steven Bosscher  <steven@gcc.gnu.org>
898
899         * ifcvt.c (noce_try_store_flag_constants): Don't check
900         no_new_pseudos here.
901         (noce_try_store_flag_constants): Don't check no_new_pseudos.
902         (noce_try_addcc, noce_try_store_flag_mask, noce_try_cmove_arith,
903         noce_try_cmove_arith, noce_try_minmax, noce_try_abs,
904         noce_try_sign_mask): Likewise.
905         (if_convert): Check no_new_pseudos here.
906
907         (cond_exec_process_if_block, noce_process_if_block, find_if_block):
908         Remove prototypes.
909         (struct noce_if_info): Add then_bb, else_bb, join_bb members.
910         (noce_get_condition): Handle new then_else_reversed argument.
911         (noce_init_if_info): Remove, fold into noce_find_if_block.
912         (noce_process_if_block): Take a struct noce_if_info as the
913         argument.  Don't set up one based on ce_if_info.  Update pointer
914         references accordingly.
915         (cond_move_process_if_block): Likewise.
916         (process_if_block): Removed.
917         (find_if_block): Removed.  Move functionality two new functions,
918         noce_find_if_block and cond_exec_find_if_block.
919         (noce_find_if_block): New function.  Be aware of IF-THEN-JOIN
920         blocks and the symmetric IF-ELSE-JOIN case.
921         (cond_exec_find_if_block): Also new function mostly based on old
922         find_if_block and process_if_block.
923         (find_if_header): Replace find_if_block call with separately
924         guarded calls to noce_find_if_block and cond_exec_find_if_block.
925         (find_cond_trap): Update noce_get_condition call.
926         (dead_or_predicable): Likewise.
927
928 2007-03-26  Jakub Jelinek  <jakub@redhat.com>
929
930         * config/i386/i386.c (IX86_BUILTIN_CMPNEPD, IX86_BUILTIN_CMPNESD):
931         Remove.
932         (IX86_BUILTIN_PSLLW128, IX86_BUILTIN_PSLLD128, IX86_BUILTIN_PSLLQ128,
933         IX86_BUILTIN_PSRAW128, IX86_BUILTIN_PSRAD128, IX86_BUILTIN_PSRLW128,
934         IX86_BUILTIN_PSRLD128, IX86_BUILTIN_PSRLQ128): Remove.
935         (ix86_init_mmx_sse_builtins): Remove v8hi_ftype_v8hi_v2di and
936         v4si_ftype_v4si_v2di.  Remove __builtin_ia32_psllw128,
937         __builtin_ia32_pslld128, __builtin_ia32_psllq128,
938         __builtin_ia32_psrlw128, __builtin_ia32_psrld128,
939         __builtin_ia32_psrlq128, __builtin_ia32_psraw128 and
940         __builtin_ia32_psrad128 builtins.
941
942 2007-03-26  Uros Bizjak  <ubizjak@gmail.com>
943
944         * reg-stack.c (replace_reg): Use IN_RANGE macro in gcc_assert().
945         * config/i386/constraints.md
946         (define_constraint "I"): Use IN_RANGE macro.
947         (define_constraint "J"): Ditto.
948         (define_constraint "K"): Ditto.
949         (define_constraint "M"): Ditto.
950         (define_constraint "N"): Ditto.
951         (define_constraint "O"): Ditto.
952         * config/i386/predicates.md
953         (define_predicate "register_no_elim_operand"): Use IN_RANGE macro.
954         (define_predicate "const_0_to_3_operand"): Ditto.
955         (define_predicate "const_0_to_7_operand"): Ditto.
956         (define_predicate "const_0_to_15_operand"): Ditto.
957         (define_predicate "const_0_to_63_operand"): Ditto.
958         (define_predicate "const_0_to_255_operand"): Ditto.
959         (define_predicate "const_1_to_31_operand"): Ditto.
960         (define_predicate "const_2_to_3_operand"): Ditto.
961         (define_predicate "const_4_to_7_operand"): Ditto.
962
963 2007-03-25  David Edelsohn  <edelsohn@gnu.org>
964
965         * config/rs6000/rs6000.c (rs6000_emit_prologue): Always clobber LR
966         in SImode for save_world.
967         * config/rs6000/altivec.md (save_world, restore_world): Convert to
968         LR hard reg.
969
970 2007-03-25  Dorit Nuzman  <dorit@il.ibm.com>
971
972         PR tree-optimization/30784
973         * fold-const.c (fold_ternary): Handle CONSTRUCTOR in case
974         BIT_FIELD_REF.
975
976 2007-03-25  Revital Eres  <eres@il.ibm.com>
977
978         * tree-if-conv.c (if_convertible_gimple_modify_stmt_p):
979           Fold movement_possibility function into it.
980
981 2007-03-25  David Edelsohn  <edelsohn@gnu.org>
982
983         * config/rs6000/darwin.md (load_macho_picbase): Ignore operand 0.
984         (load_macho_picbase_{si,di}): Convert to LR hard reg.
985         (call_indirect_nonlocal_darwin64): Same.
986         (call_nonlocal_darwin64): Same.
987         (call_value_indirect_nonlocal_darwin64): Same.
988         (call_value_nonlocal_darwin64): Same.
989         (sibcall_nonlocal_darwin64): Same.
990         (sibcall_value_nonlocal_darwin64): Same.
991         (sibcall_symbolic_64): Same.
992         (sibcall_value_symbolic_64): Same.
993         * config/rs6000/rs6000.c (rs6000_legitimize_tls_address): Remove
994         LR pseudo.
995         (rs6000_emit_load_toc_table): Same.
996         * config/rs6000/altivec.md (restore_world): Convert to LR hard reg.
997         * config/rs6000/rs6000.md (mulh_call): Convert to LR hard reg.
998         (mull_call): Same.
999         (divss_call): Same.
1000         (divus_call): Same.
1001         (quoss_call): Same.
1002         (quous_call): Same.
1003         (load_toc_v4_pic_si): Same
1004         (load_toc_v4_PIC_1): Same.
1005         (load_toc_v4_PIC_1b): Same.
1006         (call_indirect_aix{32,64}): Same.
1007         (call_value_indirect_aix{32,64}): Same.
1008         (call): Same.
1009         (call_value): Same.
1010         (call_local{32,64}): Same.
1011         (call_value_local{32,64}): Same.
1012         (call_indirect_nonlocal_aix{32,64}): Same.
1013         (call_nonlocal_aix{32,64}): Same.
1014         (call_value_indirect_nonlocal_aix{32,64}): Same.
1015         (call_value_nonlocal_aix{32,64}): Same.
1016         (call_indirect_nonlocal_sysv<mode>): Same.
1017         (call_nonlocal_sysv<mode>): Same.
1018         (call_value_indirect_nonlocal_sysv<mode>): Same.
1019         (call_value_nonlocal_sysv<mode>): Same.
1020         (sibcall): Same.
1021         (sibcall_local{32,64}): Same.
1022         (sibcall_value_local{32,64}): Same.
1023         (sibcall_nonlocal_aix{32,64}): Same.
1024         (sibcall_value_nonlocal_aix{32,64}): Same.
1025         (sibcall_nonlocal_sysv<mode>): Same.
1026         (sibcall_value): Same.
1027         (sibcall_value_nonlocal_sysv<mode>): Same.
1028
1029 2007-03-24  Paul Brook  <paul@codesourcery.com>
1030
1031         * config/arm/lib1funcs.asm (div0): Use ARM_FUNC_START and do_push.
1032         * config/arm/linux-eabi.h: Remove legacy syscall hack.
1033
1034 2007-03-24  Richard Henderson  <rth@redhat.com>
1035
1036         * config/ia64/constraints.md: New file.
1037         * config/ia64/predicates.md: Replace CONST_OK_FOR_? with
1038         satisfies_constraint_?.
1039         * config/ia64/ia64.c (ia64_move_ok, ia64_legitimate_constant_p,
1040         ia64_reload_gp, spill_restore_mem, ia64_expand_prologue,
1041         ia64_expand_epilogue, ia64_split_return_addr_rtx, ia64_rtx_costs,
1042         ia64_output_mi_thunk): Likewise.
1043         (ia64_const_ok_for_letter_p): Remove.
1044         (ia64_const_double_ok_for_letter_p): Remove.
1045         (ia64_extra_constraint): Remove.
1046         * config/ia64/ia64.h (REG_CLASS_FROM_LETTER): Remove.
1047         (CONST_OK_FOR_I, CONST_OK_FOR_J, CONST_OK_FOR_K, CONST_OK_FOR_L,
1048         CONST_OK_FOR_M, CONST_OK_FOR_N, CONST_OK_FOR_O, CONST_OK_FOR_P,
1049         CONST_OK_FOR_LETTER_P, CONST_DOUBLE_OK_FOR_G,
1050         CONST_DOUBLE_OK_FOR_LETTER_P, EXTRA_CONSTRAINT,
1051         EXTRA_MEMORY_CONSTRAINT): Remove.
1052         * config/ia64/ia64.md: Include constriants.md.  Replace
1053         CONST_OK_FOR_? with satisfies_constraint_?.
1054
1055 2007-03-23  Michael Meissner  <michael.meissner@amd.com>
1056             H.J. Lu  <hongjiu.lu@intel.com>
1057
1058         * config/dfp-bit.h (DPD_BID_NAME): New macro to give either the
1059         DPD or BID name.
1060         (name macros): Use DPD_BID_NAME to convert names properly.
1061
1062         * optabs.c (DECIMAL_PREFIX): Prefix string to use for the current
1063         decimal floating point format.
1064         (init_floating_libfuncs): Change decimal functions so that they
1065         have a "bid_" prefix if the decimal system uses the BID format,
1066         and "dpd_" prefix if the decimal system uses the DPD format.
1067         (init_interclass_conv_libfuncs): Ditto.
1068         (init_intraclass_conv_libfuncs): Ditto.
1069
1070         * config.in (ENABLE_DECIMAL_BID_FORMAT): New macro to say we are
1071         using the BID format.
1072
1073         * configure.ac (ENABLE_DECIMAL_BID_FORMAT): Set to 1/0 to say
1074         whether we are using the BID decimal format.
1075         * configure: Regenerate.
1076
1077         * c-cppbuiltin.c (c_cpp_builtins): Define __STDC_WANT_DEC_FP__ if
1078         the compiler has decimal floating point enabled.  Define
1079         __DECIMAL_BID_FORMAT__ if BID decimal floating point is used
1080         instead of DPD.
1081
1082         * config.in (ENABLE_DECIMAL_BID_FORMAT): New macro to say we are
1083         using the BID format.
1084
1085         * configure.ac (ENABLE_DECIMAL_BID_FORMAT): Set to 1/0 to say
1086         whether we are using the BID decimal format.
1087         * configure: Regenerate.
1088
1089         * c-cppbuiltin.c (c_cpp_builtins): Define __STDC_WANT_DEC_FP__ if
1090         the compiler has decimal floating point enabled.  Define
1091         __DECIMAL_BID_FORMAT__ if BID decimal floating point is used
1092         instead of DPD.
1093
1094         * doc/install.texi (--enable-decimal-float): Document BID and DPD
1095         options, and that it is enabled for i386/x86_64 systems.
1096
1097         * Makefile.in (enable_decimal_float): New.
1098         (DECNUMFMT): New.
1099         (DECNUMINC): Add  -I$(DECNUMFMT).
1100         (DECNUM_H): Mov decimal32.h, decimal64.h and decimal128.h
1101         to $(DECNUMFMT) from $(DECNUM).
1102
1103         * configure.ac: Support * --enable-decimal-float={no,yes,bid,dpd}.
1104         Substitute enable_decimal_float.
1105         * configure: Regenerated.
1106
1107         PR other/30529
1108         * config/dfp-bit.c (__dec_byte_swap): Use uint32_t instead of
1109         unsigned long.
1110
1111         * configure.ac: Enable decimal float for x86_64-*-linux*.
1112         * configure: Regenerated.
1113
1114         PR other/30530
1115         * dfp.c (decimal_real_arithmetic): Use decimal128FlipSign and
1116         decimal128ClearSign to flip and clear the sign bit in decimal128.
1117         (decimal_real_maxval): Set decimal128SetSign to set the sign
1118         bit in decimal128.
1119
1120 2007-03-23  Ian Lance Taylor  <iant@google.com>
1121
1122         * fold-const.c (fold_binary): Correct warning for X - c >= X.
1123
1124 2007-03-23  Ian Lance Taylor  <iant@google.com>
1125
1126         * tree-dump.c (dump_files): Correct comment.
1127
1128 2007-03-23  Ian Lance Taylor  <iant@google.com>
1129
1130         * tree-vrp.c (operand_less_p): Ignore fold overflow warnings.
1131
1132 2007-03-23  Steven Bosscher  <steven@gcc.gnu.org>
1133
1134         * tracer.c (tracer): Don't take FLAGS argument.  Assert we are
1135         in cfglayout mode.  Don't go into and out of cfglayout mode.
1136         Link the blocks in the order of the constructed traces.
1137         (rest_of_handle_tracer): Adjust call to tracer.
1138         * loop-init.c (rtl_loop_init): Assert we are in cfglayout mode.
1139         Don't go into cfglayout mode.
1140         (rtl_loop_done): Don't go out of cfglayout mode.
1141         * cfglayout.c (relink_block_chain): New function, split out from...
1142         (fixup_reorder_chain): ...here.  Remove redundant checking.
1143         (cfg_layout_finalize): Don't clear the header, footer, and aux
1144         fields here, move the code to do so to relink_block_chain.  Likewise
1145         for free_original_copy_tables.
1146         * rtl.h (tracer): Update prototype.
1147         * bb-reorder.c (reorder_basic_blocks): Don't take FLAGS argument.
1148         Assert we are in cfglayout mode.  Don't go into and out of cfglayout
1149         mode.  Use relink_block_chain to serialize the CFG according to the
1150         new basic block order.  Move targetm.cannot_modify_jumps_p check from
1151         here...
1152         (gate_handle_reorder_blocks): ...to here.
1153         (duplicate_computed_gotos): Move targetm.cannot_modify_jumps_p check
1154         from here...
1155         (gate_duplicate_computed_gotos): ...to here.
1156         (rest_of_handle_reorder_blocks): Don't see if anything has changed,
1157         something always changes when going into and out of cfglayout mode.
1158         Perform an expensive cfg cleanup while going into cfglayout mode.
1159         Always update liveness information on HAVE_conditional_execution
1160         targets.  Reserialize the basic blocks and go out of cfglayout mode.
1161         * reg-stack.c: Include cfglayout.h.
1162         (rest_of_handle_stack_regs): Go into and out of cfglayout mode around
1163         the call to reorder_basic_blocks.
1164         * basic-block.h (reorder_basic_blocks): Update prototype.
1165         (relink_block_chain): New prototype.
1166         * passes.c (pass_outof_cfg_layout_mode): Move after cse2.
1167
1168 2007-03-23  Joseph Myers  <joseph@codesourcery.com>
1169
1170         * config/mips/mips.md (type, hazard, *movdi_32bit,
1171         *movdi_gp32_fp64, *movdi_64bit, *movsi_internal, movcc,
1172         *movhi_internal, *movqi_internal, *movsf_hardfloat,
1173         *movdf_hardfloat_64bit, *movdf_hardfloat_32bit, *movdf_softfloat,
1174         movv2sf_hardfloat_64bit, load_df_low, load_df_high, store_df_high,
1175         mthc1, mfhc1): Change xfer instruction type to mfc and mtc, as
1176         applicable.
1177         (movcc): Change first xfer to multi.
1178         * config/mips/24k.md, config/mips/4100.md, config/mips/4300.md,
1179         config/mips/5000.md, config/mips/5400.md, config/mips/5500.md,
1180         config/mips/5k.md, config/mips/7000.md, config/mips/9000.md,
1181         config/mips/generic.md: Change reservations using "xfer" to use
1182         "mfc,mtc".
1183         * config/mips/sb1.md (ir_sb1_mtxfer): Use "mtc" instead of
1184         using match_operand.
1185         (ir_sb1_mfxfer): Use "mfc" instead of using match_operand.
1186         * config/mips/sr71k.md (ir_sr70_xfer_from): Use "mfc" instead of
1187         examining mode.
1188         (ir_sr70_xfer_to): Use "mtc" instead of examining mode.
1189
1190 2007-03-22  Richard Henderson  <rth@redhat.com>
1191
1192         * config/i386/i386.c: Remove unnecessary function declarations.
1193         Move targetm definition, and all related macros, to the end of
1194         the file.  Resort some functions to put definitions before uses.
1195         (ix86_attribute_table): Make static.  Move to end of file.
1196         (ix86_gimplify_va_arg): Make static.
1197
1198 2007-03-22  Richard Henderson  <rth@redhat.com>
1199
1200         * config/i386/i386.c (ix86_function_regparm): Early exit for 64-bit;
1201         don't increase local_regparm with force_align_arg_pointer check.
1202         (ix86_function_sseregparm): Assert 32-bit.
1203         (type_has_variadic_args_p): New.
1204         (ix86_return_pops_args): Early exit for 64-bit.  Reindent; use
1205         type_has_variadic_args_p.
1206         (ix86_function_arg_regno_p): Use == 0 instead of ! test for eax.
1207         (init_cumulative_args): Remove TARGET_DEBUG_ARG.  Remove zero_cum;
1208         use memset instead.  Do maybe_vaarg check first; skip attribute
1209         tests if true; skip attribute tests for 64-bit.
1210         (construct_container): Remove TARGET_DEBUG_ARG.
1211         (function_arg_advance_32, function_arg_advance_64): Split out ...
1212         (function_arg_advance): ... from here.
1213         (function_arg_32, function_arg_64): Split out ...
1214         (function_arg): ... from here.
1215         (ix86_pass_by_reference): Tidy.
1216         (ix86_function_value_regno_p): Rearrange w/ switch on regno.
1217         (function_value_32): New, from parts of ix86_function_value
1218         and ix86_value_regno.
1219         (function_value_64): New, from parts of ix86_function_value
1220         and ix86_libcall_value.
1221         (ix86_function_value_1): New.
1222         (ix86_function_value, ix86_libcall_value): Use it.
1223         (return_in_memory_32, return_in_memory_64): Split out ...
1224         (ix86_return_in_memory): ... from here.
1225         (ix86_struct_value_rtx): Skip for 64-bit.
1226         (ix86_libcall_value, ix86_value_regno): Remove.
1227         (setup_incoming_varargs_64): Split out ...
1228         (ix86_setup_incoming_varargs): ... from here.
1229         (ix86_va_start): Remove TARGET_DEBUG_ARG.
1230         (legitimate_address_p, legitimize_address): Remove TARGET_DEBUG_ADDR.
1231         * config/i386/i386-protos.h (ix86_function_value): Remove.
1232         * config/i386/i386.opt (TARGET_DEBUG_ADDR, TARGET_DEBUG_ARG): Remove.
1233
1234 2007-03-22  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
1235
1236         PR other/23572
1237         * c-lex.c (interpret_float): On overflow, emit pedantic warning if
1238         infinities not supported, otherwise emit warning if -Woverflow. On
1239         underflow, emit warning if -Woverflow.
1240         * real.c (real_from_string): Return -1 if underflow, +1 if overflow
1241         and 0 otherwise.
1242         * real.h (real_from_string): Update declaration
1243
1244 2007-03-22  Kai Tietz  <kai.tietz@onevision.com>
1245             Richard Henderson  <rth@redhat.com>
1246
1247         * defaults.h (OUTGOING_REG_PARM_STACK_SPACE): Provide default.
1248         * calls.c (compute_argument_block_size, expand_call,
1249         emit_library_call_value_1): Don't ifdef OUTGOING_REG_PARM_STACK_SPACE.
1250         * expr.c (block_move_libcall_safe_for_call_parm): Likewise.
1251         * function.c (STACK_DYNAMIC_OFFSET): Likewise.
1252         * doc/tm.texi (OUTGOING_REG_PARM_STACK_SPACE): Update.
1253         * config/alpha/unicosmk.h, config/bfin/bfin.h, config/iq2000/iq2000.h,
1254         config/mips/mips.h, config/mn10300/mn10300.h, config/mt/mt.h,
1255         config/pa/pa.h, config/rs6000/rs6000.h, config/score/score.h,
1256         config/spu/spu.h, config/v850/v850.h (OUTGOING_REG_PARM_STACK_SPACE):
1257         Set to 1.
1258
1259 2007-03-22  Joseph Myers  <joseph@codesourcery.com>
1260
1261         * c-incpath.c (add_sysroot_to_chain): New.
1262         (merge_include_chains): Add sysroot argument.  Call
1263         add_sysroot_to_chain if sysrooted.
1264         (register_include_chains): Update call to merge_include_chains.
1265         * doc/cppopts.texi: Document use of '=' in include directory
1266         arguments.
1267
1268 2007-03-22  Uros Bizjak  <ubizjak@gmail.com>
1269
1270         * config/i386/i386.md (cmp<mode>): Rename from cmpsf and cmpdf.
1271         Macroize expander using SSEMODEF mode macro.  Use SSE_FLOAT_MODE_P.
1272         (*cmpfp_<mode>): Rename from *cmpfp_sf and *cmpfp_df. Macroize
1273         insn pattern using X87MODEF12 mode macro.
1274
1275 2007-03-21  Seongbae Park <seongbae.park@gmail.com>
1276
1277         * regmove.c (regmove_optimize): Use reg_mentioned_p
1278         instead of reg_overlap_mentioned_p for DST.
1279
1280 2007-03-21  Mike Stump  <mrs@apple.com>
1281
1282         * c.opt: Fixup for Objective-C/C++.
1283
1284 2007-03-21  Steve Ellcey  <sje@cup.hp.com>
1285
1286         * explow.c (convert_memory_address): Fold memory reference when
1287         POINTERS_EXTEND_UNSIGNED < 0
1288
1289 2007-03-21  Richard Henderson  <rth@redhat.com>
1290
1291         PR target/31245
1292         * config/i386/emmintrin.h (__m128i, __m128d): Mark may_alias.
1293         * config/i386/mmintrin.h (__m64): Likewise.
1294         * config/i386/xmmintrin.h (__m128): Likewise.
1295
1296 2007-03-21  Richard Sandiford  <richard@codesourcery.com>
1297
1298         * config/vxworks.h (VXWORKS_ADDITIONAL_CPP_SPEC): Remove -D options.
1299         (VXWORKS_OS_CPP_BUILTINS): Define.
1300         * config/i386/vxworks.h (VXWORKS_CPU_DEFINE): Fold into...
1301         (TARGET_OS_CPP_BUILTINS): ...here.  Use VXWORKS_OS_CPP_BUILTINS.
1302
1303 2007-03-21  Richard Sandiford  <richard@codesourcery.com>
1304
1305         * rtl.h (constant_pool_reference_p): Delete.
1306         (find_constant_src): Declare.
1307         * rtlanal.c (find_constant_src): New function.
1308         * simplify-rtx.c (constant_pool_reference_p): Delete.
1309         * config/i386/i386.md: Use find_constant_src instead of
1310         constant_pool_reference_p/avoid_constant_pool_reference pairs.
1311
1312 2007-03-21  Richard Sandiford  <richard@codesourcery.com>
1313
1314         * doc/invoke.texi (-fpie, -fPIE): Document __pie__ and __PIE__.
1315         * c-cppbuiltin.c (c_cpp_builtins): Define them.
1316
1317 2007-03-20  Mark Mitchell  <mark@codesourcery.com>
1318
1319         * config/arm/elf.h (TARGET_ASM_DESTRUCTOR): Define.
1320         * config/arm/arm.c (arm_elf_asm_cdtor): New function.
1321         (arm_elf_asm_constructor): Use it.
1322         (arm_elf_asm_destructor): New function.
1323
1324 2007-03-20  Bernd Schmidt  <bernd.schmidt@analog.com>
1325
1326         * jump.c (mark_jump_label): Treat SEQUENCE specially.
1327
1328 2007-03-20  Nathan Sidwell  <nathan@codesourcery.com>
1329
1330         * config/vxlib.c (tls_delete_hook): Use TCB for kernel tasks.
1331
1332 2007-03-19  Andrew Haley  <aph@redhat.com>
1333
1334         PR tree-optimization/31264
1335         * tree-vrp.c (register_edge_assert_for_1): Don't look though
1336         VIEW_CONVERT_EXPRs.
1337
1338 2007-03-19  Paolo Bonzini  <bonzini@gnu.org>
1339
1340         PR rtl-optimization/30907
1341         * fwprop.c (forward_propagate_into): Never propagate inside a loop.
1342         (fwprop_init): Always call loop_optimizer_initialize.
1343         (fwprop_done): Always call loop_optimizer_finalize.
1344         (fwprop): We always have loop info now.
1345         (gate_fwprop_addr): Remove.
1346         (pass_fwprop_addr): Use gate_fwprop as gate.
1347
1348         PR rtl-optimization/30841
1349         * df-problems.c (df_ru_local_compute, df_rd_local_compute,
1350         df_chain_alloc): Call df_reorganize_refs unconditionally.
1351         * df-scan.c (df_rescan_blocks, df_reorganize_refs): Change
1352         refs_organized to refs_organized_size.
1353         (df_ref_create_structure): Use refs_organized_size instead of
1354         bitmap_size if refs had been organized, and keep refs_organized_size
1355         up-to-date.
1356         * df.h (struct df_ref_info): Change refs_organized to
1357         refs_organized_size.
1358         (DF_DEFS_SIZE, DF_USES_SIZE): Use refs_organized_size instead of
1359         bitmap_size.
1360
1361 2007-03-19  Mark Mitchell  <mark@codesourcery.com>
1362
1363         * except.c (output_function_exception_table): Do not reference the
1364         EH personality routine for functions that do not require an
1365         exception table.
1366
1367 2007-03-20  Jakub Jelinek  <jakub@redhat.com>
1368
1369         PR c/30762
1370         * c-typeck.c (convert_for_assignment): Call comptypes for
1371         RECORD_TYPE or UNION_TYPE.
1372
1373         PR inline-asm/30505
1374         * reload1.c (reload): Do invalid ASM checking after
1375         cleanup_subreg_operands.
1376
1377 2007-03-19  Jeff Law  <law@redhat.com>
1378
1379         * tree-cfg.c (find_taken_edge): Tighten conditions for
1380         optimizing computed gotos.
1381
1382 2007-03-19  Michael Matz  <matz@suse.de>
1383
1384         * builtins.c (expand_builtin_sync_operation,
1385         expand_builtin_compare_and_swap,
1386         expand_builtin_lock_test_and_set): Care for extending CONST_INTs
1387         correctly.
1388
1389         * config/i386/sync.md (sync_double_compare_and_swapdi_pic,
1390         sync_double_compare_and_swap_ccdi_pic): Use "SD" as constraint
1391         for operand 3.
1392
1393 2007-03-19  Andreas Krebbel  <krebbel1@de.ibm.com>
1394
1395         * doc/tm.texi: Add brackets around the return type of
1396         TARGET_SECONDARY_RELOAD.
1397
1398 2007-03-19  Andrew Pinski  <andrew_pinski@playstation.sony.com>
1399         Richard Guenther  <rguenther@suse.de>
1400
1401         PR tree-optimization/31254
1402         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1):
1403         Use handled_component_p () where appropriate.  Continue
1404         propagating into the rhs if we propagated into an INDIRECT_REF
1405         on the lhs.
1406
1407 2007-03-19  Andreas Krebbel  <krebbel1@de.ibm.com>
1408
1409         * config/s390/s390.md (op_type attribute): RRR instruction type added.
1410         (FP, DFP, SD_SF, DD_DF, TD_TF): New mode macros.
1411         (xde, xdee): Mode attributes adjusted to support DFP modes.
1412         (RRer, f0, op1, Rf, bt, bfp, HALF_TMODE): New mode attributes added.
1413         ("cmp<mode>", "*cmp<mode>_css_0", "*cmp<mode>_ccs", TF move splitters,
1414         DF move splitters, "floatdi<mode>2", "add<mode>3", "*add<mode>3",
1415         "*add<mode>3_cc", "*add<mode>3_cconly", "sub<mode>3", "*sub<mode>3",
1416         "*sub<mode>3_cc", "*sub<mode>3_cconly", "mul<mode>3", "*mul<mode>3",
1417         "div<mode>3", "*div<mode>3", "*neg<mode>2_nocc", "*abs<mode>2_nocc",
1418         "*negabs<mode>2_nocc", "copysign<mode>3"): Adjusted to support DFP
1419         numbers.
1420         ("*movtf_64", "*movtf_31", "*movdf_64dfp", "*movdf_64", "*movdf_31",
1421         "movsf"): Insn definitions removed.
1422         ("*mov<mode>_64", "*mov<mode>_31", "mov<mode>", "*mov<mode>_64dfp",
1423         "*mov<mode>_64", "*mov<mode>_31", "fix_trunc<DFP:mode>di2",
1424         "trunctddd2", "truncddsd2", "extendddtd2", "extendsddd2"): Insn
1425         definitions added.
1426         ("fixuns_truncdddi2", "fixuns_trunctddi2", "mov<mode>",
1427         "reload_in<mode>", "reload_out<mode>"): Expander added.
1428         ("movtf", "movdf", "reload_outtf", "reload_outdf", "reload_intf"):
1429         Expander removed.
1430
1431 2007-03-19  Andreas Krebbel  <krebbel1@de.ibm.com>
1432
1433         * config/s390/s390.md: Only non-functional changes.  Renamed
1434         FPR mode macro to BFP all over the file.
1435
1436 2007-03-19  Andreas Krebbel  <krebbel1@de.ibm.com>
1437
1438         * config/s390/s390.md (UNSPEC_COPYSIGN): New constant.
1439         (op_type attribute): RRF instruction type added.
1440         (fT0): New mode attribute.
1441         ("*movdi_64dfp", "*movdf_64dfp", "*neg<mode>2_nocc", "*abs<mode>2_nocc",
1442         "*negabs<mode>2_nocc", "copysign<mode>3"): Insn definitions added.
1443         * config/s390/s390.h (SECONDARY_MEMORY_NEEDED): Due to a new instruction
1444         no secondary memory is needed when moving DFmode values between GPRs
1445         and FPRs.
1446
1447 2007-03-19  Andreas Krebbel  <krebbel1@de.ibm.com>
1448
1449         * config/s390/s390.opt ("mhard-float", "msoft-float"): Bit value
1450         inverted and documentation adjusted.
1451         ("mhard-dfp", "msoft-dfp"): New options.
1452         * config/s390/s390.c (s390_handle_arch_option): New architecture
1453         switch: z9-ec.
1454         (override_options): Sanity checks for the new options added.
1455         * config.gcc: New architecture switch: z9-ec.
1456         * config/s390/s390.h (processor_flags): PF_DFP added.
1457         (TARGET_CPU_DFP, TARGET_DFP): Macro definitions added.
1458         (TARGET_DEFAULT): Due to the s390.opt changes hard float is enabled
1459         when the bit is NOT set so remove it from the defaults.
1460
1461 2007-03-19  Andreas Krebbel  <krebbel1@de.ibm.com>
1462
1463         * genemit.c (main): Print include statement for dfp.h.
1464         * dfp.h (decimal_real_arithmetic): Hide prototype if tree_code enum
1465         is not available.
1466
1467 2007-03-19  Hans-Peter Nilsson  <hp@axis.com>
1468
1469         * config/cris/t-elfmulti (EXTRA_MULTILIB_PARTS): Do not define here.
1470
1471 2007-03-19  Kaz Kojima  <kkojima@gcc.gnu.org>
1472
1473         PR target/31022
1474         * config/sh/sh.c (sh_adjust_cost): Use the result of single_set
1475         instead of PATTERN.
1476
1477 2007-03-18  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
1478
1479         * pa.c (output_deferred_plabels, output_bb, output_millicode_call,
1480         attr_length_call, output_call, output_indirect_call): Cleanup
1481         formatting of targetm calls.
1482
1483 2007-03-19  Hans-Peter Nilsson  <hp@axis.com>
1484
1485         * config/cris/cris.h (HANDLE_PRAGMA_PACK_PUSH_POP): Define to 1.
1486
1487 2007-03-18  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
1488
1489         * pa.md: Add fpstore_load and store_fpload instruction types.  Provide
1490         reservation, bypass and anti-bypass descriptions for these instructions.
1491         Update move patterns.
1492         * pa.c (hppa_fpstore_bypass_p): Check for both TYPE_FPSTORE_LOAD and
1493         TYPE_FPSTORE.
1494
1495 2007-03-18  Dorit Nuzman  <dorit@il.ibm.com>
1496
1497         * tree-vect-transform.c (get_initial_def_for_induction): Replace
1498         GET_MODE_NUNITS with TYPE_VECTOR_SUBPARTS.
1499         (get_initial_def_for_reduction): Likewise.
1500
1501 2007-03-16  Daniel Berlin  <dberlin@dberlin.org>
1502
1503         Fix PR tree-optimization/29922
1504         * tree-ssa-pre.c (bb_bitmap_sets): Remove RVUSE_* members.
1505         (get_representative): Removed.
1506         (value_dies_in_block_x): Update for rvuse removal.
1507         (valid_in_sets): Update for renaming of vuses_dies_in_block_x.
1508         (compute_antic_aux): Handle when PHI nodes appear in
1509         non-single-successors.
1510         (dump_bitmap_of_names): Removed.
1511         (compute_antic_safe): Renamed and removed rvuse calculation.
1512         Calculate only antic safe.
1513         (insert_into_preds_of_block): Remove assert.
1514         (execute_pre): Update for renamed functions.
1515         (defer_or_phi_translate_block): New function.
1516
1517 2007-03-17  Kazu Hirata  <kazu@codesourcery.com>
1518
1519         * config/arm/arm.c, config/arm/thumb2.md, config/m68k/m68k.c,
1520         config/spu/spu.c, omega.h, passes.c, predict.c: Fix comment
1521         typos.
1522         * doc/cpp.texi, doc/extend.texi, doc/invoke.texi: Fix typos.
1523         Follow spelling conventions.
1524
1525         * tree-data-ref.h: Remove the prototype for analyze_array.
1526
1527 2007-03-17  Dorit Nuzman  <dorit@il.ibm.com>
1528
1529         PR tree-optimization/31041
1530         * tree-vect-transform.c (get_initial_def_for_induction): Call
1531         force_gimple_operand.
1532
1533 2007-03-17  Olga Golovanevsky  <olga@il.ibm.com>
1534
1535         * ipa-type-escape.c (look_for_casts) : Revert code to use
1536         handled_component_p due to ada test a-numaux.adb.
1537
1538 2007-03-17  Kazu Hirata  <kazu@codesourcery.com>
1539
1540         * final.c (final_scan_insn): Alter the condition of a
1541         conditional trap if we have nonstandard CC.
1542
1543 2007-03-16  Alexandre Oliva  <aoliva@redhat.com>
1544
1545         * configure.ac: Remove excess quoting from asm line 0 test.
1546         * configure: Rebuilt.
1547
1548 2007-03-16  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
1549
1550         * doc/invoke.texi (-Wconversion): Document warnings specific to C++.
1551         * c-common.c (convert_and_check): Move warning logic to...
1552         (warnings_for_convert_and_check): ...here. Define.
1553         * c-common.h (warnings_for_convert_and_check): Declare.
1554
1555 2007-03-16  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
1556
1557         * pa.c (attr_length_call): Partially revert change of 2007-03-09.
1558         (output_call): Likewise.
1559
1560 2007-03-16  Richard Sandiford  <richard@codesourcery.com>
1561
1562         * config/vxworks.h (SUPPORTS_INIT_PRIORITY): Define.
1563
1564 2007-03-16  Richard Sandiford  <richard@codesourcery.com>
1565
1566         * config/vx-common.h (WINT_TYPE, WINT_TYPE_SIZE): Define.
1567
1568 2007-03-16  Uros Bizjak  <ubizjak@gmail.com>
1569
1570         * config/i386/i386.c (override_options): Add PTA_NO_SAHF to k8,
1571         opteron, athlon-64 and athlon-fx processor_alias_table entries.
1572
1573 2007-03-16  Sebastian Pop  <sebastian.pop@inria.fr>
1574
1575         PR tree-optimization/31183
1576         * tree-loop-linear.c (gather_interchange_stats, try_interchange_loops):
1577         Use double_int instead of unsigned int for representing access_strides.
1578         * testsuite/gcc.dg/tree-ssa/pr31183.c: New.
1579
1580 2007-03-16  Richard Guenther  <rguenther@suse.de>
1581
1582         PR tree-optimization/31146
1583         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Restructure
1584         to allow recursion of forward_propagate_addr_expr.
1585         (forward_propagate_addr_into_variable_array_index): Likewise.
1586         (forward_propagate_addr_expr): Likewise.
1587         (tree_ssa_forward_propagate_single_use_vars): Likewise.
1588         (forward_propagate_addr_expr_1): Recurse on simple copies
1589         instead of propagating into them.  Do so for useless conversions
1590         as well.
1591         (forward_propagate_addr_expr): Clean up unused statements after
1592         recursion.
1593
1594 2007-03-16  Richard Guenther  <rguenther@suse.de>
1595
1596         * builtins.c (expand_builtin_cexpi): Use the right argument
1597         for the expansion via cexp.
1598
1599 2007-03-16  Alexandre Oliva  <aoliva@redhat.com>
1600
1601         * configure.ac: Don't require ELF binutils to tolerate # 0 "".
1602         * configure: Rebuilt.
1603
1604 2007-03-16  Alexandre Oliva  <aoliva@redhat.com>
1605
1606         PR debug/29906
1607         * dwarf2out.c (force_type_die): Adjust comment.
1608         (dwarf2out_imported_module_or_decl): Handle base AT_import types.
1609
1610 2007-03-15  DJ Delorie  <dj@redhat.com>
1611
1612         * config/frv/predicates.md (minmax_operator): Don't check operands
1613         here.
1614
1615 2007-03-15  Zdenek Dvorak  <dvorakz@suse.cz>
1616
1617         * tree-ssa-loop-niter.c (record_estimate): Add "upper" argument.
1618         Update constant estimates of number of iterations.
1619         (record_nonwrapping_iv): Add "upper" argument.  "data_size_bounds_p"
1620         argument renamed to "realistic".
1621         (compute_estimated_nb_iterations): Removed.
1622         (record_niter_bound): New function.
1623         (idx_infer_loop_bounds): For possible but unlikely tail arrays,
1624         call record_nonwrapping_iv with upper = false.
1625         (infer_loop_bounds_from_signedness): Pass upper argument to
1626         record_nonwrapping_iv.
1627         (estimate_numbers_of_iterations_loop): Do not call
1628         compute_estimated_nb_iterations.  Record estimate based on profile
1629         information.  Initialize the constant estimates of number of
1630         iterations.
1631         * tree-data-ref.c (estimated_loop_iterations): Return the recorded
1632         estimates.
1633         * tree-ssa-loop-prefetch.c (loop_prefetch_arrays): Add dump when
1634         number of iterations is too small.
1635         * cfgloop.h (struct nb_iter_bound): Remove "realistic" field.
1636         (EST_NOT_AVAILABLE): Removed.
1637         (struct loop): Replace estimated_nb_iterations by any_upper_bound,
1638         nb_iterations_upper_bound, any_estimate and nb_iterations_estimate
1639         fields.
1640
1641 2007-03-15  Zdenek Dvorak  <dvorakz@suse.cz>
1642
1643         * tree-ssa-loop-niter.c (refine_bounds_using_guard, bound_difference):
1644         Handle NE_EXPR guards.
1645
1646 2007-03-15  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
1647
1648         PR c++/24924
1649         * c-opts.c (c_common_post_options): Handle C++ post-processing here.
1650         Set also -pedantic-errors by default for the  preprocessor unless
1651         -fpermissive is given.
1652
1653 2007-03-15  Richard Guenther  <rguenther@suse.de>
1654
1655         PR middle-end/29719
1656         PR middle-end/31161
1657         * builtins.c (expand_builtin_cexpi): As a fallback if we
1658         don't have builtins for sincos or cexp create a function
1659         declaration for cexp and expand to a call to that.
1660         (expand_builtin_int_roundingfn): Always fall
1661         back to floor/ceil and its variants even if they may be
1662         not available.
1663
1664 2007-03-15  Steven Bosscher  <steven@gcc.gnu.org>
1665
1666         PR middle-end/31159
1667         * cfglayout.c (fixup_reorder_chain): Postpone deleting dead
1668         jump tables, move the call to delete_dead_jumptables from here...
1669         (cfg_layout_finalize): ...to here.  But rebuild jump labels first.
1670         * cfgrtl.c (cfg_layout_can_merge_blocks_p): When not optimizing,
1671         don't allow merging of blocks that try_redirect_by_replacing_jump
1672         also does not handle when not optimizing.
1673
1674 2007-03-15  Uros Bizjak  <ubizjak@gmail.com>
1675             Francois-Xavier Coudert  <coudert@clipper.ens.fr>
1676
1677         * config/i386/i386.md (x86_sahf_1): Correctly handle
1678         HAVE_AS_IX86_SAHF.
1679
1680 2007-03-15  Uros Bizjak  <ubizjak@gmail.com>
1681
1682         PR target/31167
1683         * config/i386/i386.md (*addti3_1, *addti3_1 splitter): Use
1684         x86_64_general_operand as operand[2] predicate.  Remove "iF"
1685         from operand constraints and use "e" constraint instead.
1686         (*subti3_1, *subti3_1 splitter): Ditto.
1687         (*negti2_1, *negti2_1 splitter): Use nonimmediate_operand as
1688         operand[1] predicate.
1689
1690 2007-03-14  Sebastian Pop  <sebastian.pop@inria.fr>
1691
1692         * tree-loop-linear.c (gather_interchange_stats): For multidimensional
1693         arrays, multiply the access strides by the size of the sub-array.
1694         * testsuite/gcc.dg/tree-ssa/ltrans-5.c: New.
1695
1696 2007-03-14  Uros Bizjak  <ubizjak@gmail.com>
1697
1698         * configure.ac (HAVE_AS_IX86_SAHF): On x86 targets check whether
1699         the configured assembler supports the sahf mnemonic.
1700         * configure: Regenerate.
1701         * config.in: Regenerate.
1702
1703         * config/i386/i386.md (x86_sahf_1): Depending on HAVE_AS_IX86_SAHF,
1704         emit "sahf" or ".byte\t0x9e" as asm template.
1705
1706 2007-03-14  Michael Meissner  <michael.meissner@amd.com>
1707
1708         PR 31018
1709         * config/i386/i386.h (X86_TUNE_SHORTEN_X87_SSE): New tuning
1710         option to replace hard coded TARGET_xxx in md file.
1711         (X86_TUNE_AVOID_VECTOR_DECODE): Ditto.
1712         (X86_TUNE_SLOW_IMUL_IMM32_MEM): Ditto.
1713         (X86_TUNE_SLOW_IMUL_IMM8): Ditto.
1714         (X86_TUNE_MOVE_M1_VIA_OR): Ditto.
1715         (X86_TUNE_NOT_UNPAIRABLE): Ditto.
1716         (X86_TUNE_NOT_VECTORMODE): Ditto.
1717         (TUNE_SHORTEN_X87_SSE): Use new tuning option.
1718         (TUNE_AVOID_VECTOR_DECODE): Ditto.
1719         (TUNE_SLOW_IMUL_IMM32_MEM): Ditto.
1720         (TUNE_SLOW_IMUL_IMM8): Ditto.
1721         (TUNE_MOVE_M1_VIA_OR): Ditto.
1722         (TUNE_NOT_UNPAIRABLE): Ditto.
1723         (TUNE_NOT_VECTORMODE): Ditto.
1724
1725         * config/i386/i386.c (ix86_tune_features): Fill in new tuning
1726         options.
1727
1728         * config/i386/i386.md (fix_trunc?f?1_sse peephole2): Use new
1729         tuning options instead of hard coded TARGET_xxx.
1730         (fix ssemode peephole2's): Ditto.
1731         (imul peephole2's): Ditto.
1732         (movsi_or): Ditto.
1733         (movdi_or_rex64): Ditto.
1734         (move peephole2): Ditto.
1735         (not peephole2's): Ditto.
1736
1737 2007-03-14  Dirk Mueller  <dmueller@suse.de>
1738
1739         * c-common.h (empty_body_warning): Rename to empty_if_body_warning.
1740         * c-common.c (empty_if_body_warning): Rephrase diagnostic message.
1741         * c-parser.c (c_parser_if_body): Always add an empty statement in case
1742         of empty body.
1743         * c-parser.c (c_parser_do_statement): Warn about empty body in
1744         do/while statement.
1745         * c-typeck (c_finish_if_stmt): Call empty_if_body_warning.
1746         * doc/invoke.texi (-Wempty-body): Update documentation.
1747
1748 2007-03-14  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
1749
1750         PR c/21438
1751         * c-common.h (warn_for_div_by_zero): Declare.
1752         * c-common.c (warn_for_div_by_zero): Define.
1753         * c-typeck.c (build_binary_op): Call warn_for_div_zero instead of
1754         warning.
1755
1756 2007-03-14  Richard Sandiford  <richard@codesourcery.com>
1757
1758         * Makefile.in (PREPROCESSOR_DEFINES): Add directory terminators
1759         to PREFIX and STANDARD_PREFIX.
1760
1761 2007-03-14  Richard Sandiford  <richard@codesourcery.com>
1762             Phil Edwards  <phil@codesourcery.com>
1763
1764         * gthr-vxworks.h: Add an extern "C" wrapper for C++.
1765         (__gthread_once_t): Remove busy field for RTPs.
1766         (__GTHREAD_ONCE_INIT): Update accordingly.
1767
1768 2007-03-14  Richard Sandiford  <richard@codesourcery.com>
1769
1770         * doc/invoke.texi: Document VxWorks options.
1771
1772 2007-03-14  Uros Bizjak  <ubizjak@gmail.com>
1773
1774         * doc/invoke.texi (i386 and x86-64 Options): Clarify -msahf option.
1775
1776 2007-03-13  Seongbae Park <seongbae.park@gmail.com>
1777
1778         PR tree-optimization/30590
1779         * tree-nrv.c (tree_nrv): Check for the partial update of the
1780         return value.
1781
1782 2007-03-13  Alexandre Oliva  <aoliva@redhat.com>
1783
1784         * flags.h (flag_random_seed): Remove declaration, in favor of...
1785         * toplev.h (get_random_seed, set_random_seed): ... these.
1786         * tree.c (get_file_function_name): Use the former.
1787         * opts.c (common_handle_option): Use the latter.
1788         * toplev.c
1789
1790 2007-03-13  Steven Bosscher  <steven@gcc.gnu.org>
1791
1792         PR middle-end/31127
1793         * cse.c (cse_find_path): Do not bail out if a basic block that
1794         we already visited now becomes part of a path that starts at a
1795         different basic block.  Just disallow this, to make sure we
1796         visit each basic block at most once.
1797
1798 2007-03-13  Jan Hubicka  <jh@suse.cz>
1799
1800         * ipa-inline.c (cgraph_maybe_hot_edge_p): Look for hot/cold attributes,
1801         when profile esitmate is present, calls with very low frequency are
1802         cold.
1803
1804 2007-03-13  Zdenek Dvorak  <dvorakz@suse.cz>
1805
1806         PR tree-optimization/30730
1807         PR tree-optimization/26900
1808         * tree-ssa-loop-niter.c: Include gmp.h.
1809         (bounds): New type.
1810         (mpz_set_double_int, get_type_bounds, mpz_to_double_int,
1811         split_to_var_and_offset, determine_value_range,
1812         bound_difference_of_offsetted_base, refine_bounds_using_guard,
1813         bound_difference, bounds_add, bounds_negate,
1814         number_of_iterations_ne_max, dump_affine_iv): New functions.
1815         (number_of_iterations_ne, number_of_iterations_lt_to_ne,
1816         assert_loop_rolls_lt, assert_loop_rolls_le): Use bounds on the
1817         difference of initial and final value of control iv to validate
1818         results.
1819         (number_of_iterations_cond): Add loop parameter.  Determine bounds
1820         on the difference of the extremes of the control iv.  Add dumps.
1821         (expand_simple_operations): Handle phi nodes.
1822         (simplify_using_initial_conditions): Do not record used conditions.
1823         (number_of_iterations_exit): Pass loop to number_of_iterations_cond.
1824         Do not set additional_info.
1825         (implies_nonnegative_p, implies_ge_p): Removed.
1826         (derive_constant_upper_bound): Do not use parameter `additional'.
1827         (record_estimate): Parameter `additional' removed.  Parameter
1828         `i_bound' added.  Do not call derive_constant_upper_bound.
1829         (record_nonwrapping_iv): Use derive_constant_upper_bound to
1830         bound the number of iterations estimate.
1831         (estimate_numbers_of_iterations_loop): Pass the estimate from
1832         the number of iterations analysis to record_estimate.
1833         * tree.h (multiple_of_p): Declare.
1834         * tree-scalar-evolution.c (expression_expensive_p): Removed.
1835         (scev_const_prop): Do not check expression_expensive_p.
1836         * fold-const.c (multiple_of_p): Exported.
1837         * double-int.c (double_int_mask): Exported.
1838         * double-int.h (double_int_mask): Declare.
1839         * tree-flow.h (struct tree_niter_desc): Removed additional_info
1840         field.  Added max field.
1841
1842 2007-03-13  David Taylor  <taylor@candd.org>
1843
1844         PR driver/12448:
1845         * gcc.c (cpp_unique_options): If -MT or -MQ is seen, don't pass
1846         default -MQ.
1847
1848 2007-03-13  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
1849
1850         PR target/31123
1851         * pa.md (vdepi_ior): Don't allow zero length deposit.  Likewise for
1852         two unamed patterns.
1853
1854 2007-03-13  Uros Bizjak  <ubizjak@gmail.com>
1855
1856         * config/i386/i386.opt (mcx16, msahf): New options.
1857         * config/i386/i386.c (x86_cmpxchg16b, x86_sahf): Remove.
1858         (ix86_tune_features) [X86_TUNE_USE_SAHF]: Enable for m_GENERIC.
1859
1860         * config/i386/driver-i386.c (bit_LAHF_LM): New define.
1861         (host_detect_local_cpu): Detect cx16 and lahf_lm cpuid bits.
1862         Output -mcx16 and -msahf options when corresponding bit is set.
1863
1864         * doc/invoke.texi (i386 and x86-64 Options): Document -mcx16
1865         and -msahf options.
1866
1867 2007-03-13  Alexandre Oliva  <aoliva@redhat.com>
1868
1869         * configure.ac: Test for assembler tolerance to # 0 "".
1870         * configure, config.in: Rebuilt.
1871         * final.c (final_scan_insn): Emit it if HAVE_AS_LINE_ZERO.
1872
1873 2007-03-13  Geoffrey Keating  <geoffk@apple.com>
1874
1875         * doc/invoke.texi (Spec Files): Update for '%{,' spec.
1876
1877         * config/rs6000/darwin-fallback.c: Compile file only on powerpc.
1878         (handle_syscall): Handle direct system calls.
1879         * config/rs6000/darwin.h (HAS_MD_FALLBACK_FRAME_STATE_FOR): Delete.
1880
1881 2007-03-12  Brooks Moses  <brooks.moses@codesourcery.com>
1882
1883         * doc/invoke.texi: Fix cpp.info cross-reference.
1884         * doc/passes.texi: Fix gcc.info cross-reference.
1885
1886 2007-03-12  Zdenek Dvorak  <dvorakz@suse.cz>
1887
1888         PR tree-optimization/30835
1889         * lambda-code.c (can_convert_to_perfect_nest): Check whether
1890         bb_for_stmt is not NULL before accessing it.
1891
1892 2007-03-12  Joseph Myers  <joseph@codesourcery.com>
1893
1894         * gcc.c (main): Handle target_sysroot_hdrs_suffix being NULL for
1895         some multilibs.
1896
1897 2007-03-12  Brooks Moses  <brooks.moses@codesourcery.com>
1898
1899         PR 30635
1900         * doc/install.texi: Document --enable-stage1-languages
1901
1902 2007-03-12  Steven Bosscher  <steven@gcc.gnu.org>
1903
1904         * tree-pass.h (pass_into_cfg_layout_mode,
1905         pass_outof_cfg_layout_mode): Declare.
1906         * cfglayout.c (into_cfg_layout_mode, outof_cfg_layout_mode,
1907         pass_into_cfg_layout_mode, pass_outof_cfg_layout_mode): New.
1908         * passes.c (pass_into_cfg_layout_mode): Schedule before jump2.
1909         (pass_outof_cfg_layout_mode): Schedule after pass_rtl_ifcvt.
1910
1911 2007-03-12  Seongbae Park <seongbae.park@gmail.com>
1912
1913         * c-decl.c (warn_variable_length_array): New function.
1914         Refactored from grokdeclarator to handle warn_vla
1915         and handle unnamed array case.
1916         (grokdeclarator): Refactored VLA warning case.
1917         * c.opt (Wvla): New flag.
1918         * doc/invoke.texi (Wvla): New warning.
1919
1920 2007-03-12  Richard Henderson  <rth@redhat.com>
1921
1922         * config/alpha/alpha.c (alpha_elf_section_type_flags): New.
1923         (TARGET_SECTION_TYPE_FLAGS): New.
1924
1925 2007-03-12  Richard Henderson  <rth@redhat.com>
1926
1927         * config/darwin.c (machopic_reloc_rw_mask): New.
1928         * config/darwin-protos.h (machopic_reloc_rw_mask): Declare.
1929         * config/darwin.h (TARGET_ASM_RELOC_RW_MASK): New.
1930
1931 2007-03-12  Mark Mitchell  <mark@codesourcery.com>
1932
1933         * cppdefault.c (cpp_EXEC_PREFIX): New variable.
1934         * cppdefault.h (cpp_PREFIX): Document.
1935         (cpp_PREFIX_len): Likewise.
1936         (cpp_EXEC_PREFIX): New variable.
1937         * Makefile.in (PREPROCESSOR_DEFINES): Add STANDARD_EXEC_PREFIX.
1938         * c-incpath.c (add_standard_paths): Correct logic for relocating
1939         paths within prefix.
1940
1941 2007-03-12  Uros Bizjak  <ubizjak@gmail.com>
1942
1943         * config/i386/i386.md (fixuns_trunc<mode>hi2): Implement from
1944         fixuns_truncsfhi2 and fixuns_truncdfhi2 using SSEMODEF
1945         mode macro.
1946         (fix_trunc<mode>di_sse): Implement from fix_truncsfdi_sse and
1947         fix_truncdfdi_sse using SSEMODEF mode macro.
1948         (fix_trunc<mode>si_sse): Implement from fix_truncsfsi_sse and
1949         fix_truncdfsi_sse using SSEMODEF mode macro.
1950         (fix_trunc?f?i_sse peephole2): Implement using SSEMODEF mode macro.
1951         (fix_trunc?f?i_sse K8 peephole2): Fix register constraint.
1952
1953 2007-03-12  Richard Sandiford  <richard@codesourcery.com>
1954
1955         * config.gcc (i[4567]86-wrs-vxworks, i[4567]86-wrs-vxworksae): Add
1956         elfos.h to tm_file.
1957
1958 2007-03-12  Olga Golovanevsky  <olga@il.ibm.com>
1959
1960         * tree.h : Add multiple_of_p declaration.
1961         * fold-const.c (multiple_of_p): Make multiple_of_p public.
1962         * ipa-type-escape.c (results_of_malloc): Redundant.
1963         (visited_stmts): New. Visited stmt for walk_use_def_chains.
1964         (cast_type): Extended with new members.
1965         (check_cast): Returns cast_type.
1966         (cast): New structure for data of walk_use_def_chains.
1967         (is_malloc_result, is_cast_from_non_pointer_1,
1968         is_cast_from_non_pointer,
1969         is_array_access_through_pointer_and_index): New functions.
1970         (look_for_casts): Returns cast types.
1971         (check_call): Returns void.
1972         (okay_pointer_operation): Use support of pointer plus index,
1973         pointer plus constant and allow all multiplications.
1974
1975 2007-03-11  Richard Guenther  <rguenther@suse.de>
1976
1977         PR tree-optimization/31115
1978         * tree-vrp.c (extract_range_from_binary_expr): Make sure
1979         the shift count is positive and non-anti-range for RSHIFT_EXPR.
1980         A shift count of zero is not special as with *_DIV_EXPR.
1981         (vrp_int_const_binop): Handle RSHIFT_EXPR for determining overflow
1982         direction.
1983
1984 2007-03-11  Ian Lance Taylor  <iant@google.com>
1985
1986         * tree-vrp.c (vrp_int_const_binop): Handle PLUS_EXPR and
1987         the *_DIV_EXPR codes correctly with overflow infinities.
1988
1989 2007-03-11  Ira Rosen  <irar@il.ibm.com>
1990
1991         * tree-data-ref.c (analyze_offset): Add a return value (bool) to
1992         indicate success/failure of the analysis. Add negation to subtrahend
1993         in case of subtraction. Fail if both operands contain constants.
1994         (create_data_ref): Fail if analyze_offset fails.
1995
1996 2007-03-11  Uros Bizjak  <ubizjak@gmail.com>
1997
1998         * config/i386/i386.md (frndintxf2): Rename to ...
1999         (rintxf2): ... this. Remove expander having same name.
2000         (rintsf2, rintdf2): Implement using SSEMODEF macro.
2001         (roundsf2, rounddf2): Ditto.
2002         (lrint<mode>di2, lrint<mode>si2): Implement using SSEMODEI24 macro.
2003         (lround<mode>di2, lround<mode>si2): Ditto.
2004
2005 2007-03-11  Steven Bosscher  <steven@gcc.gnu.org>
2006
2007         * lower-subreg.c: Include except.h.
2008         (decompose_multiword_subregs): Verify that the only control flow
2009         insns we can split are loads to multi-words pseudos.
2010         Handle breaking such blocks after splitting, instead of calling
2011         find_many_sub_basic_blocks.
2012
2013         * loop-unroll.c (split_edge_and_insert): Don't set BB_SUPERBLOCK
2014         on the new basic block.  Add a lengthy comment explaining why we
2015         thought this was necessary.
2016         * cfglayout.c (cfg_layout_finalize): Don't break superblocks.
2017
2018 2007-03-10  Mark Mitchell  <mark@codesourcery.com>
2019
2020         PR c++/30924
2021         * tree.c (walk_type_fields): Recurse into the element type of
2022         ARRAY_TYPEs if there is a pointer set.
2023
2024 2007-03-10  Dirk Mueller  <dmueller@suse.de>
2025
2026         * c-common.c (warn_logical_operator): Fix condition.
2027
2028 2007-03-10  Tobias Schlüter  <tobi@gcc.gnu.org>
2029
2030         * config/i386/darwin.h (DARWIN_MINVERSION_SPEC): Add missing
2031         quotation mark.
2032         * config/darwin.c (machopic_select_section): Remove superfluous
2033         argument in call to categorize_decl_for_section.  Remove unused
2034         variable shlib.
2035
2036 2007-03-10  Joseph Myers  <joseph@codesourcery.com>
2037
2038         * configure.ac (glibc_header_dir): Set using with_build_sysroot if
2039         defined.
2040         * configure: Regenerate.
2041
2042 2007-03-10  Uros Bizjak  <ubizjak@gmail.com>
2043
2044         PR target/31101
2045         * config/i386/i386.md (UNSPEC_C2_FLAG): New constant.
2046         (fpremxf4_i387, fprem1xf4_i387): Use UNSPEC_C2_FLAG.
2047         (fmodxf3, fmod<mode>3, remainderxf3, remainder<mode>3):
2048         Add LABEL_NUSES to emitted label.
2049         * config/i386/i386.c (ix86_emit_fp_unordered_jump): Add
2050         branch probability value to emitted jump insn.
2051         * reg-stack.c (subst_stack_regs_pat)[UNSPEC]: Handle UNSPEC_C2_FLAG.
2052         Do not check life information and do not re-arrange input operands
2053         for UNSPEC_FSCALE_EXP, UNSPEC_FPREM_U and UNSPEC_FPREM1_U.
2054
2055 2007-03-10  Kaz Kojima  <kkojima@gcc.gnu.org>
2056
2057         * config/sh/sh.c (sh_insn_length_adjustment): Adjust for
2058         the change of decode_asm_operands.
2059
2060 2007-03-10  Kaz Kojima  <kkojima@gcc.gnu.org>
2061
2062         * mode-switching.c (create_pre_exit): Skip blockage insn.
2063
2064 2007-03-09  Diego Novillo  <dnovillo@redhat.com>
2065
2066         * tree-pass.h (TODO_update_smt_usage): Remove.
2067         Update all users.
2068         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Remove
2069         argument SOME.
2070         Update all users.
2071
2072 2007-03-09  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
2073
2074         * pa.c (attr_length_call): Revise condition for long pc-relative branch.
2075         (output_call): Use "LONG_PIC_SDIFF" instruction sequence for long local
2076         calls on the SOM target.  Don't use "LONG_PIC_PCREL" call sequence on
2077         SOM target.
2078
2079 2007-03-09  Geoffrey Keating  <geoffk@apple.com>
2080
2081         * gcc.c: Document %{, in big comment at top.
2082         (input_suffix_matches): Remove special handling for .s and
2083         .S.
2084         (input_spec_matches): New.
2085         (handle_braces): Handle %{,.
2086         (validate_switches): ',' indicates a value which is not a switch.
2087         * config/alpha/osf.h (ASM_FINAL_SPEC): Use %{, rather than %{.
2088         to detect assembler input.
2089         * config/i386/sol2.h (CPP_SPEC): Likewise.
2090         * config/rs6000/sysv4.h (ASM_SPEC): Likewise.
2091         * config/rs6000/vxworks.h (ASM_SPEC): Likewise.
2092         * config/rs6000/lynx.h (ASM_SPEC): Likewise.
2093         * config/rs6000/linux64.h (ASM_SPEC_COMMON): Likewise.
2094         * config/i386/darwin.h (DARWIN_MINVERSION_SPEC): Objective-C plus
2095         -m64 causes deployment target to default to 10.5.
2096         * config/rs6000/darwin.h (DARWIN_MINVERSION_SPEC): Likewise.
2097
2098 2007-03-09  Richard Henderson  <rth@redhat.com>
2099
2100         PR target/26090
2101         * target.h (targetm.asm.out.reloc_rw_mask): New.
2102         * target-def.h (TARGET_ASM_RELOC_RW_MASK): New.
2103         (TARGET_ASM_OUT): Use it.
2104         * targhooks.c, targhooks.h (default_reloc_rw_mask): New.
2105         * varasm.c (categorize_decl_for_section): Remove shlib argument;
2106         use the new reloc_rw_mask target hook instead.
2107         (default_section_type_flags_1): Merge into...
2108         (default_section_type_flags): ... here.
2109         (decl_readonly_section_1): Merge into...
2110         (decl_readonly_section): ... here.
2111         (default_elf_select_section_1): Merge into...
2112         (default_elf_select_section): ... here.
2113         (default_unique_section_1): Merge into...
2114         (default_unique_section): ... here.
2115         (compute_reloc_for_rtx_1, compute_reloc_for_rtx): New.
2116         (default_select_rtx_section): Use it.
2117         (default_elf_select_rtx_section): Likewise.
2118         * output.h: Update to match.
2119         * doc/tm.texi (TARGET_ASM_RELOC_RW_MASK): New.
2120         * config/alpha/alpha.c (alpha_elf_reloc_rw_mask): New.
2121         (TARGET_ASM_RELOC_RW_MASK): New.
2122         * config/i386/i386.c (x86_64_elf_select_section): Adjust call
2123         to categorize_decl_for_section.
2124         (x86_64_elf_unique_section): Likewise.
2125         * config/ia64/hpux.h (TARGET_ASM_SELECT_SECTION,
2126         TARGET_ASM_UNIQUE_SECTION, TARGET_ASM_SELECT_RTX_SECTION): Remove.
2127         (TARGET_ASM_RELOC_RW_MASK): New.
2128         * config/ia64/ia64.c (ia64_rwreloc_select_section,
2129         ia64_rwreloc_unique_section, ia64_rwreloc_select_rtx_section): Remove.
2130         (ia64_hpux_reloc_rw_mask, ia64_reloc_rw_mask): New.
2131         (TARGET_RWRELOC): Remove.
2132         (ia64_section_type_flags): Adjust call to default_section_type_flags.
2133         * config/ia64/sysv4.h (TARGET_ASM_RELOC_RW_MASK): New.
2134         * config/rs6000/rs6000.c (rs6000_elf_section_type_flags): Remove.
2135         (rs6000_elf_select_section, rs6000_elf_unique_section): Remove.
2136         (rs6000_elf_reloc_rw_mask, rs6000_xcoff_reloc_rw_mask): New.
2137         (rs6000_xcoff_select_section): Use decl_readonly_section.
2138         (rs6000_xcoff_section_type_flags): Use default_section_type_flags.
2139         * config/rs6000/sysv4.h (TARGET_ASM_RELOC_RW_MASK): New.
2140         (TARGET_ASM_SELECT_SECTION, TARGET_ASM_UNIQUE_SECTION): Remove.
2141         (TARGET_SECTION_TYPE_FLAGS): Remove.
2142         * config/rs6000/xcoff.h (TARGET_ASM_RELOC_RW_MASK): New.
2143
2144 2007-03-09  Roger Sayle  <roger@eyesopen.com>
2145
2146         * fold-const.c (fold_comparison): Remove compile-time evaluation of
2147         complex constant equality/inequality comparisons for here.
2148         (fold_binary) <EQ_EXPR>: Simplify complex comparisons that are
2149         known at compile-time or can be simplified to a scalar comparison.
2150         (fold_relational_const): Move compile-time evaluation of complex
2151         constant equality/inequality comparisons to here.
2152
2153 2007-03-09  Alexandre Oliva  <aoliva@redhat.com>
2154
2155         PR rtl-optimization/30643
2156         * cse.c (cse_insn): Recompute dest_hash after insert_regs for
2157         dest_addr_elt.
2158         (fold_rtx): Recurse, like before 2006-11-03.
2159
2160 2007-03-09  DJ Delorie  <dj@redhat.com>
2161
2162         * config/m32c/t-m32c (m32c-pragma.o): Add TM_H dependency to
2163         m32c-pragma.o.
2164
2165 2007-03-09  Aldy Hernandez  <aldyh@redhat.com>
2166
2167         PR tree-optimization/30375
2168         * tree-ssa-dse.c (dse_possible_dead_store_p): Do not eliminate if
2169         LHS of statements is not the same.
2170         * testsuite/gcc.dg/tree-ssa/ssa-dse-10.c: New.
2171
2172 2007-03-09  Chao-ying Fu  <fu@mips.com>
2173
2174         * doc/extend.texi (MIPS DSP Built-in Functions): Document the DSP
2175         REV 2.
2176         * doc/invoke.texi (-mdspr2): Document new option.
2177         * config/mips/mips.md (UNSPEC_ABSQ_S_QB .. UNSPEC_DPSQX_SA_W_PH):
2178         New unspec for DSP REV 2.
2179         (<u>mulsidi3_32bit_internal): Check if !TARGET_DSPR2, because
2180         these instructions are extended in DSP REV 2.
2181         (mips-dspr2.md): Include.
2182         * config/mips/mips.opt (mdspr2): New option.
2183         * config/mips/mips.c (mips_function_type): Add MIPS_V4QI_FTYPE_V4QI,
2184         MIPS_SI_FTYPE_SI_SI_SI, MIPS_DI_FTYPE_DI_USI_USI, MIPS_DI_FTYPE_SI_SI,
2185         MIPS_DI_FTYPE_USI_USI, MIPS_V2HI_FTYPE_SI_SI_SI.
2186         (override_options): Check TARGET_DSPR2 to enable MASK_DSP.
2187         (CODE_FOR_mips_mul_ph): Define it to CODE_FOR_mulv2hi3.
2188         (dsp_bdesc): Add DSP REV 2 builtins.  Remove 32-bit only DSP builtins.
2189         (dsp_32only_bdesc): New description table for 32-bit only DSP REV 1
2190         and 2 builtins.
2191         (bdesc_map): Add one field of unsupported_target_flags.
2192         (bdesc_arrays):  Update entries to have extra fields.  Add
2193         dsp_32only_bdesc.
2194         (mips_init_builtins): Initialize new function types.
2195         Check unsupported_target_fileds to filter out builtins.
2196         * config/mips/mips.h (TARGET_CPU_CPP_BUILTINS): Define __mips_dspr2 if
2197         TARGET_DSPR2.
2198         (ASM_SPEC): Pass mdspr2 to the assembler.
2199         * config/mips/mips-dspr2.md: New file.
2200
2201 2007-03-09  Sa Liu  <saliu@de.ibm.com>
2202
2203         * config/rs6000/altivec.md: Fix vcond patterns using if_then_else.
2204
2205 2007-03-09  Ian Lance Taylor  <iant@google.com>
2206
2207         * opts.c (common_handle_option): Treat -Wstrict-overflow (with no
2208         argument) like -Wstrict-overflow=2.
2209         * doc/invoke.texi (Warning Options): Update documentation.
2210
2211 2007-03-09  Dirk Mueller  <dmueller@suse.de>
2212
2213         PR c++/17946
2214         * doc/invoke.texi (-Wlogical-op): Document.
2215         * common.opt (-Wlogical-op): New.
2216         * c-common.h (warn_logical_operator): Declare.
2217         * c-common.c (warn_logical_operator): Define.
2218         * c-typeck.c (parser_build_binary_op): Call
2219         warn_logical_operator.
2220
2221 2007-03-09  Alexandre Oliva  <aoliva@redhat.com>
2222
2223         * rtl.h (gen_rtx_ASM_INPUT): Use "" instead of NULL file name.
2224         * final.c (final_scan_insn): Test for non-"" file name.
2225
2226 2007-03-09  Sebastian Pop  <sebastian.pop@inria.fr>
2227
2228         * doc/loop.texi: Document the Omega linear constraints solver.
2229         * doc/invoke.texi: Document -fcheck-data-deps, omega-max-vars,
2230         omega-max-geqs, omega-max-eqs, omega-max-wild-cards,
2231         omega-hash-table-size, omega-max-keys, and
2232         omega-eliminate-redundant-constraints.
2233         * tree-pass.h (pass_check_data_deps): Declared.
2234         * omega.c: New.
2235         * omega.h: New.
2236         * timevar.def (TV_CHECK_DATA_DEPS): Declared.
2237         * tree-ssa-loop.c (check_data_deps, gate_check_data_deps,
2238         pass_check_data_deps): New.
2239         * tree-data-ref.c (init_data_ref): Remove declaration.
2240         (dump_data_dependence_relation): Dump DDR_INNER_LOOP.
2241         (analyze_array): Renamed init_array_ref, move up initializations.
2242         (init_data_ref): Renamed init_pointer_ref.  Moved before its call.
2243         Removed arguments that are set to NULL.
2244         (analyze_indirect_ref): Correct indentation, correct call to
2245         init_pointer_ref.
2246         (object_analysis): Call init_array_ref instead of analyze_array.
2247         (initialize_data_dependence_relation): Initialize DDR_INNER_LOOP.
2248         (access_functions_are_affine_or_constant_p): Use DR_ACCESS_FNS instead
2249         of DR_ACCESS_FNS_ADDR.
2250         (init_omega_eq_with_af, omega_extract_distance_vectors,
2251         omega_setup_subscript, init_omega_for_ddr_1, init_omega_for_ddr,
2252         ddr_consistent_p): New.
2253         (compute_affine_dependence): Check consistency of ddrs when
2254         flag_check_data_deps is passed.
2255         (analyze_all_data_dependences): Uncomment.
2256         (tree_check_data_deps): New.
2257         * tree-data-ref.h: Include omega.h.
2258         (DR_ACCESS_FNS_ADDR): Removed.
2259         (data_dependence_relation): Add inner_loop.
2260         (DDR_INNER_LOOP): New.
2261         * common.opt (fcheck-data-deps): New.
2262         * tree-flow.h (tree_check_data_deps): Declare.
2263         * Makefile.in (TREE_DATA_REF_H): Depend on omega.h.
2264         (OBJS-common): Depend on omega.o.
2265         (omega.o): Define.
2266         * passes.c (pass_check_data_deps): Scheduled.
2267         * params.def (PARAM_OMEGA_MAX_VARS, PARAM_OMEGA_MAX_GEQS,
2268         PARAM_OMEGA_MAX_EQS, PARAM_OMEGA_MAX_WILD_CARDS,
2269         PARAM_OMEGA_HASH_TABLE_SIZE, PARAM_OMEGA_MAX_KEYS,
2270         PARAM_VECT_MAX_VERSION_CHECKS,
2271         PARAM_OMEGA_ELIMINATE_REDUNDANT_CONSTRAINTS): New.
2272
2273 2007-03-09  Richard Guenther  <rguenther@suse.de>
2274
2275         PR tree-optimization/30904
2276         PR middle-end/31058
2277         * tree-vrp.c (extract_range_from_binary_expr): Handle RSHIFT_EXPR
2278         the same way as *_DIV_EXPR.
2279
2280 2007-03-09  Alexandre Oliva  <aoliva@redhat.com>
2281
2282         * recog.c (decode_asm_operands): No mixed declarations and code.
2283
2284 2007-03-09  Alexandre Oliva  <aoliva@redhat.com>
2285
2286         * rtl.def (ASM_INPUT): Add location.
2287         * rtl.h (ASM_INPUT_SOURCE_LOCATION): New.
2288         (ASM_INPUT_SOURCE_FILE, ASM_INPUT_SOURCE_LINE): New.
2289         (decode_asm_operands): Add loc operand.
2290         (gen_rtx_ASM_INPUT, gen_rtx_ASM_INPUT_loc): Define.
2291         * stmt.c (expand_asm): Rename to...
2292         (expand_asm_loc): ... this.  Add locus argument.  Pass it on to
2293         gen_rtx_ASM_INPUT_loc.
2294         (expand_asm_expr): Adjust.
2295         * recog.c (decode_asm_operands): Add loc operand.
2296         (check_asm_operands, extract_insn): Adjust.
2297         * reload1.c (maybe_fix_stack_asms): Likewise.
2298         * final.c (asm_insn_count): Likewise.
2299         (final_scan_insn): Output # line before and after asm.
2300
2301 2007-03-09  Daniel Berlin  <dberlin@dberlin.org>
2302
2303         * tree-ssa-structalias.c (variable_info): Remove
2304         finished_solution.
2305         (new_var_info): Ditto.
2306         (shared_bitmap_info_t): New structure.
2307         (shared_bitmap_table): New variable.
2308         (shared_bitmap_hash): New function.
2309         (shared_bitmap_eq): Ditto
2310         (shared_bitmap_lookup): Ditto.
2311         (shared_bitmap_add): Ditto.
2312         (merge_smts_into): Change to take bitmap directly.
2313         (find_what_p_points_to): Rewrite to use shared bitmap hashtable.
2314         (init_alias_vars): Init shared bitmap hashtable.
2315         (delete_points_to_sets): Delete shared bitmap hashtable.
2316         * tree-ssa-operands.c (add_virtual_operand): Partially revert the
2317         is_aliased removal as a change that was still necessary was
2318         deleted.
2319
2320 2007-03-09  Uros Bizjak  <ubizjak@gmail.com>
2321
2322         * config/i386/i386.h (override_options): Conditionally disable
2323         x86_sahf for 64bit targets only.
2324
2325 2007-03-08  Andrew Pinski  <andrew_pinski@playstation.sony.com>
2326
2327         PR C/31072
2328         * c-decl.c (merge_decls): Don't call make_var_volatile.
2329         * varasm.c (make_var_volatile): Remove.
2330         * output.h (make_var_volatile): Remove.
2331
2332 2007-03-08  Zdenek Dvorak  <dvorakz@suse.cz>
2333
2334         PR tree-optimization/31085
2335         * tree-ssa-address.c (create_mem_ref): Fix test of type of base.
2336
2337 2007-03-08  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
2338
2339         * builtins.def (lceil, lceilf, lceill, lfloor, lfloorf, lfloorl,
2340         llceil, llceilf, llceill, llfloor, llfloorf, llfloorl): Mark with
2341         ATTR_CONST_NOTHROW_LIST.
2342
2343         * fold-const.c (tree_expr_nonnegative_warnv_p): Handle
2344         FIX_TRUNC_EXPR.
2345
2346 2007-03-08  Diego Novillo  <dnovillo@redhat.com>
2347
2348         * doc/tree-ssa.texi: Remove documentation for V_MUST_DEF.
2349
2350 2007-03-08  Geoffrey Keating  <geoffk@apple.com>
2351
2352         PR 31013
2353         * gccspec.c (lang_specific_driver): Do nothing when NEXT_OBJC_RUNTIME
2354         is declared.
2355         * config/darwin.h (REAL_LIBGCC_SPEC): When -fgnu-runtime is
2356         passed, use shared libgcc.
2357
2358 2007-03-08  Roger Sayle  <roger@eyesopen.com>
2359
2360         * tree-eh.c (do_return_redirection): Call build_gimple_modify_stmt
2361         instead of calling build2 with a GIMPLE_MODIFY_STMT.
2362         (honor_protect_cleanup_actions, lower_try_finally_switch):
2363         Likewise.
2364         * tree-if-conv.c (replace_phi_with_cond_gimple_modify_stmt,
2365         ifc_temp_var): Likewise.
2366         * tree-inline.c (setup_one_parameter): Likewise.
2367         * tree-mudflap.c (mf_decl_cache_locals,
2368         mf_build_check_statement_for): Likewise.
2369         * tree-nested.c (init_tmp_var, save_tmp_var,
2370         finalize_nesting_tree_1): Likewise.
2371         * tree-outof-ssa.c (insert_copy_on_edge,
2372         insert_backedge_copies): Likewise.
2373         * tree-profile.c (tree_gen_edge_profiler,
2374         tree_gen_ic_profiler): Likewise.
2375         * tree-scalar-evolution.c (scev_const_prop): Likewise.
2376         * tree-sra.c (sra_build_assignment): Likewise.
2377         * tree-ssa-loop-im.c (determine_invariantness_stmt): Likewise.
2378         * tree-ssa-math-opts.c (insert_reciprocals,
2379         execute_cse_sincos_1): Likewise.
2380         * tree-tailcall.c (adjust_accumulator_values,
2381         adjust_return_value): Likewise.
2382         * tree-vect-patterns.c (vect_pattern_recog_1): Likewise.
2383         * tree-vect-transform.c (vect_create_data_ref_ptr,
2384         bump_vector_ptr, vect_init_vector, get_initial_def_for_induction,
2385         vect_create_epilog_for_reduction, vectorizable_reduction,
2386         vectorizable_call, vectorizable_conversion,
2387         vectorizable_assignment, vectorizable_operation,
2388         vectorizable_type_demotion, vect_gen_widened_results_half,
2389         vect_permute_store_chain, vectorizable_store,
2390         vect_setup_realignment, vect_permute_load_chain,
2391         vectorizable_load, vectorizable_condition,
2392         vect_create_cond_for_align_checks): Likewise.
2393         * tree-vrp.c (build_assert_expr_for): Likewise.
2394
2395 2007-03-08  Ian Lance Taylor  <iant@google.com>
2396
2397         * tree-vrp.c: Include "intl.h".
2398         (usable_range_p): New static function.
2399         (compare_values_warnv): Don't test TYPE_OVERFLOW_UNDEFINED for
2400         overflowed values, juts set *strict_overflow_p.
2401         (compare_values): Only return -2 if one of the operands is not a
2402         constant.
2403         (compare_ranges): Call usable_range_p.
2404         (compare_range_with_value): Likewise.
2405         (vrp_evaluate_conditional_warnv): Rename from
2406         vrp_evaluate_conditional.  Make static.  Change all callers.
2407         (vrp_evaluate_conditional): New function.
2408         (simplify_div_or_mod_using_ranges): Issue warning about reliance
2409         on signed overflow.
2410         (simplify_abs_using_ranges): Likewise.
2411         (simplify_stmt_for_jump_threading): Add within_stmt parameter.
2412         * tree-ssa-dom.c (simplify_stmt_for_jump_threading): Add
2413         within_stmt parameter.
2414         * tree-ssa-propagate.c (fold_predicate_in): Update call to
2415         vrp_evaluate_conditional.
2416         * tree-ssa-threadedge.c
2417         (record_temporary_equivalences_from_stmts_at_dest): Change
2418         simplify parameter to take a second tree parameter.
2419         (simplify_control_stmt_condition): Likewise.
2420         (thread_across_edge): Likewise.
2421         * tree-flow.h (vrp_evaluate_conditional): Update declaration.
2422         (thread_across_edge): Likewise.
2423         * gcc/Makefile.in (tree-vrp.o): Depend upon intl.h.
2424
2425 2007-03-08  Uros Bizjak  <ubizjak@gmail.com>
2426
2427         * config/i386/i386.h (TARGET_SAHF): New define.
2428         * config/i386/i386.c (ix86_tune_features) [X86_TUNE_USE_SAHF]:
2429         Also enable for m_K8, m_AMDFAM10 and m_CORE2.
2430         (x86_sahf): New global variable.
2431         (override_options): Add PTA_NO_SAHF to pta_flags enum.  Recode
2432         pta_flags masks using shifts.  Add PTA_NO_SAHF to x86_64 and
2433         nocona processor flags.  Set x86_sahf when PTA_NO_SAHF is not set
2434         in processor flags.  Do not unconditionally disable TARGET_USE_SAHF
2435         for 64-bit.
2436         (ix86_fp_comparison_sahf_cost): Return high value for !TARGET_SAHF.
2437         (ix86_expand_fp_compare): Check for TARGET_CMOVE or TARGET_SAHF
2438         when expanding fcomi/sahf based tests.
2439         (ix86_emit_fp_unordered_jump): Check for TARGET_SAHF when
2440         expanding sahf based alternative. Emit sahf based sequence when
2441         optimizing for code size.
2442         * config/i386/i386.md (x86_sahf_1): Do not disable for
2443         TARGET_64BIT, enable for TARGET_SAHF.
2444
2445 2007-03-08  Martin Michlmayr  <tbm@cyrius.com>
2446
2447         * tree-ssa-coalesce.c (fail_abnormal_edge_coalesce): Remove
2448         spurious whitespace from error message.
2449
2450 2007-03-08  Volker Reichelt  <reichelt@netcologne.de>
2451
2452         PR c++/30852
2453         * c-common.c (fold_offsetof_1): Handle COMPOUND_EXPR.
2454
2455 2007-03-08  Alexandre Oliva  <aoliva@redhat.com>
2456
2457         * c-decl.c (grokdeclarator): Disable warnings for anonymous
2458         bitfields.
2459         * tree-sra.c (instantiate_element): Propagate disabled warnings
2460         from the element itself to the created variable.
2461
2462 2007-03-07  Richard Henderson  <rth@redhat.com>
2463
2464         PR target/30848
2465         * reg-stack.c (emit_swap_insn): If a malformed asm was seen,
2466         silently fix up the stack in the case of a missing register.
2467
2468 2007-03-07  Paul Brook  <paul@codesourcery.com>
2469
2470         * config/arm/libunwind.S: Add .arch/.object_arch for armv4 builds.
2471
2472 2007-03-07  Joseph Myers  <joseph@codesourcery.com>
2473
2474         * config/arm/unwind-arm.c (struct wmmxd_regs, struct wmmxc_regs):
2475         New.
2476         (phase1_vrs): Use them.
2477         (DEMAND_SAVE_WMMXD, DEMAND_SAVE_WMMXC): New.
2478         (__gnu_Unwind_Save_WMMXD, __gnu_Unwind_Restore_WMMXD,
2479         __gnu_Unwind_Save_WMMXC, __gnu_Unwind_Restore_WMMXC): Declare.
2480         (restore_non_core_regs): Call __gnu_Unwind_Restore_WMMXD and
2481         __gnu_Unwind_Restore_WMMXC if required.
2482         (_Unwind_VRS_Pop): Implement iWMMXt support.
2483         * config/arm/libunwind.S (gnu_Unwind_Restore_WMMXD,
2484         gnu_Unwind_Save_WMMXD, gnu_Unwind_Restore_WMMXC,
2485         gnu_Unwind_Save_WMMXC): Define.
2486
2487 2007-03-07  Richard Sandiford  <richard@codesourcery.com>
2488
2489         * config/vxworks.h (vxworks_override_options): Declare.
2490         (VXWORKS_OVERRIDE_OPTIONS): Use it.
2491         * config/vxworks.c: Include target.h and toplev.h.
2492         (vxworks_override_options): New function.
2493         * config/t-vxworks (vxworks.o): Depend on $(TARGET_H) and toplev.h.
2494
2495 2007-03-07  Andreas Krebbel  <krebbel1@de.ibm.com>
2496
2497         * config/s390/s390.c (override_options): Don't emit an error when
2498         -mstack-size is used without providing -mstack-guard.
2499         (s390_emit_prologue): Choose stack_guard value automatically if not
2500         provided via command line.
2501         * doc/invoke.texi: Adjust description of -mstack-guard and -mstack-size.
2502
2503 2007-03-07  Richard Sandiford  <richard@codesourcery.com>
2504
2505         * config/i386/i386.c (output_set_got): Add a GOT initialization
2506         sequence for VxWorks PIC.
2507         (legitimate_pic_address_disp_p): Allow UNSPEC_GOT wrappers
2508         around labels as well as symbols.  Use gotoff_operand instead
2509         of local_symbolic_operand.
2510         (legitimize_pic_address): Use gotoff_operand instead of
2511         local_symbolic_operand.  Use @GOT accesses for labels as
2512         well as symbols.
2513         (ix86_output_addr_diff_elt): Use PC-relative rather than
2514         GP-relative offsets for VxWorks PIC.
2515         (ix86_expand_move): Pass NULL_RTX to legitimize_pic_address unless
2516         no_new_pseudos.  Check whether the returned register is op0.
2517         * config/i386/i386.md (tablejump): Use PC-relative rather than
2518         GP-relative offsets for VxWorks PIC.
2519         * config/i386/predicates.md (gotoff_operand): New predicate.
2520
2521 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
2522
2523         * config/vxworks.h (VXWORKS_GOTT_BASE, VXWORKS_GOTT_INDEX): Undefine
2524         before defining.
2525         * config/vxworks-dummy.h: New file.
2526         * config/i386/i386.h: Include it.
2527
2528 2007-03-07  Alexandre Oliva  <aoliva@redhat.com>
2529
2530         * dwarf2out.c (is_inlined_entry_point): New
2531         (add_high_low_attributes): Emit DW_AT_entry_pc along with
2532         DW_AT_ranges if the first subblock is the entry point.
2533
2534 2007-03-06  David Daney  <ddaney@avtrex.com>
2535
2536         * doc/install.texi (mips-*-*): Change recommended binutils
2537         version.
2538
2539 2007-03-06  Anatoly Sokolov <aesok@post.ru>
2540
2541         * config/avr/avr.c (avr_mcu_types): Add support for ATmega325P,
2542         ATmega3250P, ATmega329P, ATmega3290P, AT90USB82 and AT90USB162
2543         devices.
2544         * config/avr/avr.h (LINK_SPEC, CRT_BINUTILS_SPECS): (Ditto.).
2545         * config/avr/t-avr (MULTILIB_MATCHES): (Ditto.).
2546
2547 2007-03-06  Jan Hubicka  <jh@suse.cz>
2548
2549         * errors.h (warning, error, fatal, internal_error): Mark as cold.
2550         * predict.c (maybe_hot_bb): Cold functions are never hot; hot functions
2551         are hot.
2552         (probably_cold_bb_p): Cold functions are cold.
2553         (probably_never_executed_bb_p): Cold functions are cold.
2554         (tree_bb_level_predictions): Predict calls to cold functions as not
2555         taken.
2556         (compute_function_frequency): Check hot/cold attributes.
2557         * function.h (function_frequency): Update comments.
2558         * predict.def (PRED_COLD_FUNCTION): Predict cold function.
2559         * c-common.c (handle_hot_attribute, handle_cold_attribute): New.
2560         (c_common_att): Add cold and hot.
2561
2562         * doc/extend.texi (hot,cold attributes): Document.
2563
2564 2007-03-06  Andrew Haley  <aph@redhat.com>
2565
2566         * function.c (expand_function_end): Move blockage to just after we
2567         emit the label for the naked return from the function.
2568
2569 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
2570
2571         * config/i386/att.h (ASM_OUTPUT_ASCII, ASM_OUTPUT_SKIP): Undefine
2572         before redefining.
2573
2574 2007-03-06  Jan Hubicka  <jh@suse.cz>
2575
2576         * reg-stack.c (reg_to_stack): Large models don't allow NAN to be
2577         loaded for constant large models.  Non-large 64bit PIC can do.
2578         * i386.h (CASE_VECTOR_MODE): Large PIC cases are 64bit.
2579         * cmodel.h: Add LARGE PIC.
2580         * i386.md (UNSPEC_PLTOFF): New.
2581         (UNSPEC_SET_RIP, UNSPEC_SET_GOT_OFFSET): New; renumber other unspecs as
2582         needed.
2583         (*call_1_rex64): Disable for large models.
2584         (*call_1_rex64_large): New.
2585         (*call_value_1_rex64): Disable for large models.
2586         (*call_value_1_rex64_large): New.
2587         (set_rip_rex4): New.
2588         (set_got_offset_rex64): New.
2589         * predicates.md (constant_call_address_operand): For large model
2590         constant calls are not possible.
2591         * i386-protos.h (construct_plt_address): Declare.
2592         * i386.c (override_options): Accept large models.
2593         (ix86_expand_prologue): Expand large PIC GOT pointer load.
2594         (legitimate_constant_p): Add new UNSPECs.
2595         (legitimate_pic_operand_p): Likewise.
2596         (legitimate_pic_address_disp_p): Disallow local symbols for large PICs.
2597         (legitimize_pic_address): Do easy RIP relative way for TLS only for
2598         non-large model.
2599         (output_pic_addr_const): Add PLTOFF.
2600         (ix86_output_addr_diff_elt): Output 64bit tables when needed.
2601         (ix86_expand_move): Legitimize pic address when in PIC mode.
2602         (construct_plt_address): New function.
2603         (ix86_expand_call): Offload the address to register and use GOT pointer
2604         for large model.
2605         * invoke.texi (mcmodel=large): Update documentation.
2606
2607 2007-03-06  Richard Henderson  <rth@redhat.com>
2608
2609         * config/i386/i386.c (x86_use_leave, x86_push_memory,
2610         x86_zero_extend_with_and, x86_movx, x86_double_with_add,
2611         x86_use_bit_test, x86_unroll_strlen, x86_deep_branch,
2612         x86_branch_hints, x86_use_sahf, x86_partial_reg_stall,
2613         x86_partial_flag_reg_stall, x86_use_himode_fiop, x86_use_simode_fiop,
2614         x86_use_mov0, x86_use_cltd, x86_read_modify_write, x86_read_modify,
2615         x86_split_long_moves, x86_promote_QImode, x86_fast_prefix,
2616         x86_single_stringop, x86_qimode_math, x86_promote_qi_regs,
2617         x86_himode_math, x86_promote_hi_regs, x86_sub_esp_4, x86_sub_esp_8,
2618         x86_add_esp_4, x86_add_esp_8, x86_integer_DFmode_moves,
2619         x86_partial_reg_dependency, x86_memory_mismatch_stall,
2620         x86_prologue_using_move, x86_epilogue_using_move, x86_shift1,
2621         x86_sse_partial_reg_dependency, x86_sse_split_regs,
2622         x86_sse_unaligned_move_optimal, x86_sse_typeless_stores,
2623         x86_sse_load0_by_pxor, x86_use_ffreep, x86_use_incdec,
2624         x86_inter_unit_moves, x86_ext_80387_constants, x86_four_jump_limit,
2625         x86_schedule, x86_use_bt, x86_pad_returns,
2626         x86_use_xchgb): Merge into ...
2627         (ix86_tune_features): ... here.  New array.
2628         (x86_cmove, x86_cmpxchg, x86_cmpxchg8b, x86_xadd,
2629         x86_bswap): Merge into ...
2630         (ix86_arch_features): ... here.  New array.
2631         (x86_3dnow_a): Remove.
2632         (x86_accumulate_outgoing_args): Make static.
2633         (x86_arch_always_fancy_math_387): Make static.
2634         (ix86_tune_mask, ix86_arch_mask): Move ...
2635         (override_options): ... to local variables here.  Apply the
2636         appropriate mask to each element of ix86_arch_features and
2637         ix86_tune_features.  Adjust TARGET_CMOVE and TARGET_USE_SAHF
2638         as were done in the old macros.
2639         (standard_80387_constant_p): Use TARGET_EXT_80387_CONSTANTS.
2640         * config/i386/i386.h (x86_use_leave, x86_push_memory,
2641         x86_zero_extend_with_and, x86_use_bit_test, x86_cmove, x86_deep_branch,
2642         x86_branch_hints, x86_unroll_strlen, x86_double_with_add,
2643         x86_partial_reg_stall, x86_movx, x86_use_himode_fiop,
2644         x86_use_simode_fiop, x86_use_mov0, x86_use_cltd, x86_use_xchgb,
2645         x86_read_modify_write, x86_read_modify, x86_split_long_moves,
2646         x86_promote_QImode, x86_single_stringop, x86_fast_prefix,
2647         x86_himode_math, x86_qimode_math, x86_promote_qi_regs,
2648         x86_promote_hi_regs, x86_integer_DFmode_moves, x86_add_esp_4,
2649         x86_add_esp_8, x86_sub_esp_4, x86_sub_esp_8,
2650         x86_partial_reg_dependency, x86_memory_mismatch_stall,
2651         x86_accumulate_outgoing_args, x86_prologue_using_move,
2652         x86_epilogue_using_move, x86_decompose_lea,
2653         x86_arch_always_fancy_math_387, x86_shift1,
2654         x86_sse_partial_reg_dependency, x86_sse_split_regs,
2655         x86_sse_unaligned_move_optimal, x86_sse_typeless_stores,
2656         x86_sse_load0_by_pxor, x86_use_ffreep, x86_inter_unit_moves,
2657         x86_schedule, x86_use_bt, x86_cmpxchg, x86_cmpxchg8b, x86_xadd,
2658         x86_use_incdec, x86_pad_returns, x86_bswap,
2659         x86_partial_flag_reg_stall): Remove.
2660         (enum ix86_tune_indices): New.
2661         (ix86_tune_features): New.
2662         (TARGET_USE_LEAVE, TARGET_PUSH_MEMORY, TARGET_ZERO_EXTEND_WITH_AND,
2663         TARGET_USE_BIT_TEST, TARGET_UNROLL_STRLEN,
2664         TARGET_DEEP_BRANCH_PREDICTION, TARGET_BRANCH_PREDICTION_HINTS,
2665         TARGET_DOUBLE_WITH_ADD, TARGET_USE_SAHF, TARGET_MOVX,
2666         TARGET_PARTIAL_REG_STALL, TARGET_PARTIAL_FLAG_REG_STALL,
2667         TARGET_USE_HIMODE_FIOP, TARGET_USE_SIMODE_FIOP, TARGET_USE_MOV0,
2668         TARGET_USE_CLTD, TARGET_USE_XCHGB, TARGET_SPLIT_LONG_MOVES,
2669         TARGET_READ_MODIFY_WRITE, TARGET_READ_MODIFY, TARGET_PROMOTE_QImode,
2670         TARGET_FAST_PREFIX, TARGET_SINGLE_STRINGOP, TARGET_QIMODE_MATH,
2671         TARGET_HIMODE_MATH, TARGET_PROMOTE_QI_REGS, TARGET_PROMOTE_HI_REGS,
2672         TARGET_ADD_ESP_4, TARGET_ADD_ESP_8, TARGET_SUB_ESP_4,
2673         TARGET_SUB_ESP_8, TARGET_INTEGER_DFMODE_MOVES,
2674         TARGET_PARTIAL_REG_DEPENDENCY, TARGET_SSE_PARTIAL_REG_DEPENDENCY,
2675         TARGET_SSE_UNALIGNED_MOVE_OPTIMAL, TARGET_SSE_SPLIT_REGS,
2676         TARGET_SSE_TYPELESS_STORES, TARGET_SSE_LOAD0_BY_PXOR,
2677         TARGET_MEMORY_MISMATCH_STALL, TARGET_PROLOGUE_USING_MOVE,
2678         TARGET_EPILOGUE_USING_MOVE, TARGET_SHIFT1, TARGET_USE_FFREEP,
2679         TARGET_INTER_UNIT_MOVES, TARGET_FOUR_JUMP_LIMIT, TARGET_SCHEDULE,
2680         TARGET_USE_BT, TARGET_USE_INCDEC, TARGET_PAD_RETURNS,
2681         TARGET_EXT_80387_CONSTANTS): Use it.
2682         (enum ix86_arch_indices): New.
2683         (ix86_arch_features): New.
2684         (TARGET_CMOVE, TARGET_CMPXCHG, TARGET_CMPXCHG8B, TARGET_XADD,
2685         TARGET_BSWAP): Use it.
2686         (ix86_tune_mask, ix86_arch_mask): Remove.
2687
2688 2007-03-06  Joseph Myers  <joseph@codesourcery.com>
2689
2690         PR bootstrap/31020
2691         * configure.ac (CROSS_SYSTEM_HEADER_DIR, build_system_header_dir):
2692         Define using $${sysroot_headers_suffix}.
2693         * configure: Regenerate.
2694         * cppdefault.c (cpp_include_defaults): Make FIXED_INCLUDE_DIR a
2695         multilib-suffixed directory if SYSROOT_HEADERS_SUFFIX_SPEC
2696         defined.
2697         * doc/invoke.texi (-print-sysroot-headers-suffix): Document.
2698         * gcc.c (print_sysroot_headers_suffix): New.
2699         (option_map): Include --print-sysroot-headers-suffix.
2700         (display_help): Mention -print-sysroot-headers-suffix.
2701         (process_command): Handle -print-sysroot-headers-suffix.
2702         (do_spec_1): Append multilib directory to include-fixed path if
2703         sysroot suffixes in use.
2704         (main): Handle -print-sysroot-headers-suffix.
2705         * Makefile.in (start.encap): Don't depend on xlimits.h
2706         (xlimits.h): Remove.
2707         (stmp-int-hdrs): Don't depend on xlimits.h.  Inline generation of
2708         limits.h for each multilib in fixinc_list.
2709         (fixinc_list, s-fixinc_list): New.
2710         (stmp-fixinc): Depend on fixinc_list.  If not copying headers,
2711         generate them for each multilib in fixinc_list.
2712         (stmp-fixproto): Use include-fixed.  Run fixproto for each
2713         multilib in fixinc_list.
2714         (mostlyclean): Don't remove xlimits.h.
2715         (clean): Remove include-fixed.
2716         (real-install-headers-tar, real-install-headers-cpio,
2717         real-install-headers-cp): Don't copy include, only include-fixed.
2718         (install-mkheaders): Depend on fixinc_list.  Don't depend on
2719         xlimits.h.  Save limits.h files for each multilib in fixinc_list.
2720         Always save mkinstalldirs.  Preserve ${sysroot_headers_suffix} in
2721         SYSTEM_HEADER_DIR setting in mkheaders.conf.
2722
2723 2007-03-06  Jan Hubicka  <jh@suse.cz>
2724
2725         * regstack.c (reg_to_stack): When in 64bit PIC mode, we still can load
2726         NANs easilly.
2727
2728 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
2729
2730         * configure.ac: Allow tm_file to contain build-directory files.
2731         * configure: Regenerate.
2732         * config.gcc (m68k-*-uclinux*): Add ./sysroot-suffix.h to tm_file.
2733         * config/m68k/t-uclinux (sysroot-suffix.h): New target.
2734         * config/m68k/print-sysroot-suffix.sh: New file.
2735
2736 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
2737
2738         * config/m68k/m68k.h (PIC_OFFSET_TABLE_REGNUM): Use the REGNO
2739         of pic_offset_table_rtx if reload_completed.
2740         (CONDITIONAL_REGISTER_USAGE): Use PIC_REG instead of
2741         PIC_OFFSET_TABLE_REGNUM.
2742         * config/m68k/m68k.c (TARGET_ASM_CAN_OUTPUT_MI_THUNK): Always
2743         return true.
2744         (m68k_save_reg): Use PIC_REG instead of PIC_OFFSET_TABLE_REGNO.
2745         (m68k_output_mi_thunk): Rewrite to use RTL.  Honor vcall_offset.
2746
2747 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
2748
2749         * config/m68k/m68k.c (m68k_save_reg): Save the PIC register in
2750         functions that call eh_return.
2751
2752 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
2753
2754         * config/m68k/m68k.c (m68k_save_reg): Save the PIC register in
2755         functions that need a constant pool.
2756
2757 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
2758
2759         PR target/28181
2760         * config/m68k/m68k-protos.h (m68k_secondary_reload_class): Declare.
2761         (m68k_preferred_reload_class): Likewise.
2762         * config/m68k/m68k.h (HARD_REGNO_MODE_OK): Remove duplicated comment.
2763         (SECONDARY_RELOAD_CLASS): Define.
2764         (PREFERRED_RELOAD_CLASS): Use m68k_preferred_reload_class.
2765         (LIMIT_RELOAD_CLASS): Delete.
2766         * config/m68k/m68k.c (m68k_regno_mode_ok): Don't prevent address
2767         registers from storing bytes.
2768         (m68k_secondary_reload_class): New function.
2769         (m68k_preferred_reload_class): Likewise.
2770
2771 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
2772
2773         * config/m68k/m68k.c (m68k_save_reg): Remove special case for
2774         leaf functions.
2775         (m68k_expand_prologue): Likewise.
2776
2777 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
2778
2779         * config/m68k/m68k-protos.h (output_sibcall): Declare.
2780         (mips_expand_epilogue): Add a bool parameter.
2781         (m68k_legitimize_sibcall_address): Declare.
2782         * config/m68k/m68k.c (TARGET_FUNCTION_OK_FOR_SIBCALL): Define.
2783         (m68k_expand_epilogue): Add a parameter to select between sibling
2784         and normal epilogues.  Only generate a return for the latter.
2785         (m68k_ok_for_sibcall_p): New function.
2786         (m68k_legitimize_sibcall_address, output_sibcall): New functions.
2787         * config/m68k/m68k.md (sibcall, *sibcall): New patterns.
2788         (sibcall_value, *sibcall_value): Likewise.
2789         (*call, *call_value): Require !SIBLING_CALL_P.
2790         (epilogue): Update call to m68k_expand_epilogue.
2791         (sibcall_epilogue): New pattern.
2792         * config/m68k/predicates.md (const_call_operand): Say that this
2793         predicate applies to sibling calls too.
2794         (sibcall_operand): New predicate.
2795
2796 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
2797
2798         * config/m68k/m68k.md (movsf_cf_soft): Provide the same non-mov3q
2799         alternatives as movsi_cf.
2800         (movsf_cf_hard): Add commentary.
2801
2802 2007-03-06  Kazu Hirata  <kazu@codesourcery.com>
2803             Richard Sandiford  <richard@codesourcery.com>
2804
2805         * config/m68k/m68k-protos.h (m68k_interrupt_function_p): Declare.
2806         (m68k_movem_pattern_p, m68k_output_movem): Likewise.
2807         (m68k_expand_prologue, m68k_expand_epilogue): Likewise.
2808         * config/m68k/m68k.h (EPILOGUE_USES): Define.  Treat all registers
2809         as being live on exit from an interrupt function.
2810         (PRINT_OPERAND_PUNCT_VALID_P): Return true for '?'.
2811         * config/m68k/m68k.c (MIN_MOVEM_REGS, MIN_FMOVEM_REGS): New macros.
2812         (m68k_frame): Remove reg_rev_mask and fpu_rev_mask.
2813         (TARGET_ASM_FUNCTION_PROLOGUE, TARGET_ASM_FUNCTION_EPILOGUE): Delete.
2814         (m68k_interrupt_function_p): Globalize.
2815         (m68k_compute_frame_layout): Remove reverse mask code.
2816         (m68k_emit_movem, m68k_set_frame_related): New functions.
2817         (m68k_output_function_prologue): Delete in favor of...
2818         (m68k_expand_prologue): ...this new function.
2819         (m68k_output_function_epilogue): Delete in favor of...
2820         (m68k_expand_epilogue): ...this new function.
2821         (m68k_split_offset, m68k_movem_pattern_p, m68k_output_movem): New
2822         functions.
2823         (print_operand): Handle %?.
2824         * config/m68k/m68k.md (UNSPEC_SIN, UNSPEC_COS): Remove excess space.
2825         (UNSPEC_GOT, A1_REG, PIC_REG, FP0_REG): New constants.
2826         (prologue, epilogue): New patterns.
2827         (return): Turn into a define_expand.
2828         (*return): New pattern, derived from old "return" pattern.  Use rte
2829         rather than rts for interrupt functions.  Only use rtd if the pop
2830         count is nonzero.
2831         (*m68k_store_multiple, *m68k_store_multiple_automod): New patterns.
2832         (*m68k_load_multiple, *m68k_load_multiple_automod): Likewise.
2833         (link, *link, unlink, *unlink, load_got): Likewise.
2834
2835 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
2836
2837         PR target/23482
2838         PR target/17114
2839         * config/m68k/m68k-protos.h (m68k_legitimate_base_reg_p): Declare.
2840         (m68k_legitimate_index_reg_p, m68k_legitimate_address_p): Likewise.
2841         (m68k_matches_q_p, m68k_matches_u_p): Likewise.
2842         * config/m68k/m68k.h (EXTRA_CONSTRAINT): Use m68k_matches_q_p
2843         and m68k_matches_u_p.
2844         (PCREL_GENERAL_OPERAND_OK, LEGITIMATE_BASE_REG_P): Delete.
2845         (INDIRECTABLE_1_ADDRESS_P, GO_IF_NONINDEXED_ADDRESS): Delete.
2846         (GO_IF_INDEXABLE_BASE, GO_IF_INDEXING, GO_IF_INDEXED_ADDRESS): Delete.
2847         (LEGITIMATE_INDEX_REG_P, LEGITIMATE_INDEX_P): Delete.
2848         (GO_IF_COLDFIRE_FPU_LEGITIMATE_ADDRESS): Delete.
2849         (REG_STRICT_P): New macro.
2850         (LEGITIMATE_PIC_OPERAND_P): Use REG_STRICT_P rather than
2851         PCREL_GENERAL_OPERAND_OK.
2852         (REG_OK_FOR_BASE_P): Merge definitions.  Use REG_STRICT_P and
2853         m68k_legitimate_base_reg_p.
2854         (REG_MODE_OK_FOR_INDEX_P): Likewise m68k_legitimate_index_reg_p.
2855         (GO_IF_LEGITIMATE_ADDRESS): Likewise m68k_legitimate_address_p.
2856         (PIC_CASE_VECTOR_ADDRESS): Update comment.
2857         * config/m68k/m68k.c (m68k_address): New structure.
2858         (m68k_legitimate_base_reg_p, m68k_legitimate_index_reg_p)
2859         (m68k_decompose_index, m68k_legitimate_constant_address_p)
2860         (m68k_jump_table_ref_p, m68k_decompose_address)
2861         (m68k_legitimate_address_p, m68k_legitimate_mem_p, m68k_matches_q_p)
2862         (m68k_matches_u_p): New functions.
2863         (print_operand_address): Rewrite to use m68k_decompose_index.
2864
2865 2007-03-05  David Taylor  <dtaylor@emc.com>
2866
2867         * gcc.c: Correct copyright date in --version output.
2868
2869 2007-03-05  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
2870
2871         * pa.md: In unamed move patterns, disparge copies between general
2872         and floating point registers using '?' modifier.  Don't include 'f'
2873         constraint for register preferences in DImode, SImode, HImode and
2874         QImode patterns.  Likewise for 'r' in DFmode and SFmode patterns.
2875         Remove constraints for copies between general and floating registers
2876         in soft-float DFmode pattern.
2877         (movdf): Fail if operand1 is a CONST_DOUBLE and operand0 is a hard
2878         floating register.
2879         (movsf): Likewise.
2880
2881 2007-03-05  Mike Stump  <mrs@apple.com>
2882
2883         * c-common.c (targetcm): Add.
2884         * c-opts.c (c_common_handle_option): Handle language specific
2885         target options.
2886         * opts.c (handle_option): Verify language for target options, if
2887         any are given.
2888         * opth-gen.awk: Add CL_LANG_ALL.
2889         * target-def.h (TARGET_HANDLE_C_OPTION): Add.
2890         (TARGETCM_INITIALIZER): Add.
2891         * target.h (struct gcc_targetcm): Add.
2892         (targetcm): Add.
2893         * targhooks.c (default_handle_c_option): Add.
2894         * targhooks.h (default_handle_c_option): Add.
2895         * doc/tm.texi (TARGET_HANDLE_C_OPTION): Add.
2896
2897         * config/darwin.opt (iframework): Add.
2898         * config/darwin.h (TARGET_HAS_TARGETCM): Add.
2899         * config/darwin-c.c (handle_c_option): Add.
2900         (TARGET_HANDLE_C_OPTION): Add.
2901         (targetcm): Add.
2902         * doc/invoke.texi (Darwin Options): Add -iframework.
2903
2904 2007-03-05  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
2905
2906         * convert.c (convert_to_integer): Fix nearbyint/rint -> *lrint
2907         conversion.
2908
2909 2007-03-05  Ian Lance Taylor  <iant@google.com>
2910
2911         * c.opt (fgnu89-inline): New option.
2912         * c-opts.c (c_common_post_options): Set default value for
2913         flag_gnu89_inline.
2914         * c-decl.c (WANT_C99_INLINE_SEMANTICS): Remove.
2915         (pop_scope): Check flag_gnu89_inline rather than flag_isoc99 for
2916         inline functions.
2917         (diagnose_mismatched_decls, merge_decls, start_decl): Likewise.
2918         (grokdeclarator, start_function): Likewise.
2919         * c-cppbuiltin.c (c_cpp_builtins): Define either
2920         __GNUC_GNU_INLINE__ or __GNUC_STDC_INLINE__.
2921         * doc/invoke.texi (Option Summary): Mention -fgnu89-inline.
2922         (C Dialect Options): Document -fgnu89-inline.
2923         * doc/extend.texi (Function Attributes): Explain what the
2924         gnu_inline attribute does.
2925         * doc/cpp.texi (Common Predefined Macros): Document
2926         __GNUC_GNU_INLINE__ and __GNUC_STDC_INLINE__.
2927
2928 2007-03-05  Ian Lance Taylor  <iant@google.com>
2929
2930         PR tree-optimization/31034
2931         * tree-vrp.c (extract_range_from_assert): Don't try to handle a
2932         half-range if the other side is an overflow infinity.
2933
2934 2007-03-05  Bernd Schmidt  <bernd.schmidt@analog.com>
2935
2936         * config.gcc (bfin*-uclinux*): Use t-bfin-uclinux.
2937         (bfin*-linux-uclibc*): New configuration.
2938         * config/linux.h (LINK_GCC_C_SEQUENCE_SPEC): Undefined before
2939         defining.
2940         * config/bfin/linux.h: New file.
2941         * config/bfin/libgcc-bfin.ver: New file.
2942         * config/bfin/t-bfin-uclinux: New file.
2943         * config/bfin/t-bfin-linux: New file.
2944         * config/bfin/uclinux.h (LINUX_TARGET_OS_CPP_BUILTINS): New macro.
2945         (TARGET_OS_CPP_BUILTINS): New macro.
2946
2947 2007-03-05  Richard Guenther  <rguenther@suse.de>
2948
2949         * fold-const.c (fold_binary): Remove duplicate folding
2950         of comparison of non-null ADDR_EXPR against null.
2951
2952 2007-03-05  Richard Guenther  <rguenther@suse.de>
2953             Dorit Nuzman  <dorit@il.ibm.com>
2954
2955         PR tree-optimization/26420
2956         * tree-vectorizer.c (vectorize_loops): Bail out early if there
2957         are no loops in the function.  Only print the number of
2958         vectorized loops if it is greater than zero or we are supposed
2959         to print information about unvectorized loops.
2960
2961 2007-03-05  Revital Eres  <eres@il.ibm.com>
2962
2963         * gcc.dg/var-expand1.c: New test.
2964         * loop-unroll.c (analyze_insn_to_expand_var): Add dump info
2965         when an accumulator is expanded.
2966
2967 2007-03-04  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
2968
2969         PR other/30465
2970         * c-common.c (convert_and_check): Don't give warnings for
2971         conversion if 'expr' already overflowed.
2972
2973 2007-03-04  Roger Sayle  <roger@eyesopen.com>
2974
2975         PR middle-end/30744
2976         * fold-const.c (fold_comparison): Enforce type consistency when
2977         transforming ~X op ~Y to Y op X, and ~X op C to X op' ~C.
2978
2979 2007-03-04  Zdenek Dvorak  <dvorakz@suse.cz>
2980
2981         * tree-ssa-address.c (create_mem_ref): Do not put an expression
2982         containing a cast to the base of TARGET_MEM_REF.
2983
2984 2007-03-04  Martin Michlmayr  <tbm@cyrius.com>
2985
2986         * tree.c (tree_contains_struct_check_failed): Remove spurious
2987         whitespace from error message.
2988
2989 2007-03-04 Andrew Pinski <andrew_pinski@playstation.sony.com>
2990
2991         PR target/30406
2992         * config/rs6000/rs6000.c (rs6000_function_value): Look at bit size
2993         instead of precision.
2994
2995 2007-03-04  Roman Zippel <zippel@linux-m68k.org>
2996             Nathan Sidwell  <nathan@codesourcery.com>
2997
2998         * emit-rtl.c (find_auto_inc): New.
2999         (try_split): recreate REG_INC notes,
3000         Use regular for loops rather than whiles.
3001
3002 2007-03-03  Andreas Schwab  <schwab@suse.de>
3003
3004         * configure.ac (HAVE_AS_REL16): Move test back to correct place.
3005         * configure: Regenerate.
3006
3007 2007-03-03  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
3008
3009         * builtins.def (ATTR_MATHFN_FPROUNDING): Rely on
3010         flag_rounding_math, not flag_unsafe_math_optimizations.
3011
3012         * c-pretty-print.c (pp_c_direct_abstract_declarator): Use
3013         fold_build2.
3014         * config/alpha/alpha.c (alpha_fold_builtin_zapnot,
3015         alpha_fold_vector_minmax): Likewise.
3016         * config/i386/i386.c (ix86_gimplify_va_arg): Likewise.
3017         * config/sparc/sparc.c (sparc_gimplify_va_arg): Likewise.
3018
3019 2007-03-02  Eric Botcazou  <ebotcazou@adacore.com>
3020
3021         * tree-sra.c (sra_walk_fns) <ldst>: Document new restriction.
3022         (sra_walk_modify_expr) <rhs_elt>: Treat the reference as a use
3023         if the lhs has side-effects.
3024         <lhs_elt>: Treat the reference as a use if the rhs has side-effects.
3025
3026 2007-03-02  Uros Bizjak  <ubizjak@gmail.com>
3027
3028         * config/i386/i386.h (TUNEMASK): Remove define.
3029         (ARCHMASK): Remove define.
3030         (TARGET_*): Use ix86_tune_mask variable instead of TUNEMASK.
3031          Use ix86_arch_mask variable instead of ARCHMASK.
3032         * config/i386/i386.c (override_options): Ditto.
3033         (standard_80387_constant_p): Ditto.
3034
3035 2007-03-02  Ian Lance Taylor  <iant@google.com>
3036
3037         Used signed infinities in VRP.
3038         * tree-vrp.c (uses_overflow_infinity): New static function.
3039         (supports_overflow_infinity): New static function.
3040         (make_overflow_infinity): New static function.
3041         (negative_overflow_infinity): New static function.
3042         (positive_overflow_infinity): New static function.
3043         (is_negative_overflow_infinity): New static function.
3044         (is_positive_overflow_infinity): New static function.
3045         (is_overflow_infinity): New static function.
3046         (overflow_infinity_range_p): New static function.
3047         (compare_values_warnv): New function split out of compare_values.
3048         (compare_value): Call it.
3049         (set_value_range_to_nonnegative): Add overflow_infinity
3050         parameter.  Change caller.
3051         (vrp_expr_computes_nonnegative): Add strict_overflow_p parameter.
3052         Change callers.
3053         (vrp_expr_computes_nonzero): Likewise.
3054         (compare_ranges, compare_range_with_value): Likewise.
3055         (compare_name_with_value, compare_names): Likewise.
3056         (vrp_evaluate_conditional): Likewise.
3057         (set_value_range): Handle infinity
3058         (vrp_operand_equal_p, operand_less_p): Likewise.
3059         (extract_range_from_assert): Likewise.
3060         (vrp_int_const_binop): Likewise.
3061         (extract_range_from_binary_expr): Likewise.
3062         (extract_range_from_unary_expr): Likewise.
3063         (extract_range_from_comparison): Likewise.
3064         (extract_range_from_expr): Likewise.
3065         (dump_value_range): Likewise.
3066         (vrp_visit_cond_stmt, vrp_visit_phi_node): Likewise.
3067         (test_for_singularity): Likewise.
3068         (vrp_int_const_binop): Remove inline qualifier.
3069         (adjust_range_with_scev): Add comment.
3070         * tree-flow.h (vrp_evaluate_conditional): Update declaration.
3071
3072 2007-03-02  Diego Novillo  <dnovillo@redhat.com>
3073
3074         * tree-ssa-structalias.c (could_have_pointers): Tidy.
3075         (get_constraint_for): Likewise.
3076         (do_structure_copy): Likewise.
3077         (find_func_aliases): Fix references to MODIFY_EXPR.
3078         (intra_create_variable_infos): Tidy.
3079         * tree-ssa-operands.c (add_virtual_operand): Add argument
3080         IS_CALL_SITE.
3081         When adding members of alias sets, if IS_CALL_SITE is true and
3082         the symbol is not call-clobbered, skip it.
3083         Adjust all callers.
3084
3085 2007-03-02  Eric Botcazou  <ebotcazou@adacore.com>
3086
3087         * config/alpha/alpha.c (alpha_gp_save_rtx): Insert the insns at the
3088         entry by means of emit_insn_at_entry.
3089
3090 2007-03-02  Richard Henderson  <rth@redhat.com>
3091
3092         * expr.h (promoted_input_arg): Remove decl.
3093         * function.c (promoted_input_arg): Merge into ...
3094         * combine.c (setup_incoming_promotions): ... only caller.
3095         Rearrange to avoid double loop.
3096
3097 2007-03-02  Ben Elliston  <bje@au.ibm.com>
3098             Peter Bergner  <bergner@vnet.ibm.com>
3099             Janis Johnson  <janis187@us.ibm.com>
3100
3101         * config/rs6000/dfp.md: New file.
3102         * config/rs6000/rs6000.md: Include dfp.md.
3103         (add<mode>3_internal1): Disable for DECIMAL_FLOAT_MODE_P operands.
3104         * config/rs6000/rs6000.c (rs6000_hard_regno_mode_ok): Handle DDmode
3105         and TDmode decimal float modes in FP registers.
3106         (num_insns_constant): Likewise.
3107         (rs6000_legitimate_offset_address_p): Likewise.
3108         (rs6000_legitimize_address): Likewise.
3109         (rs6000_legitimize_reload_address): Likewise.
3110         (rs6000_legitimate_address): Likewise.
3111         (rs6000_emit_move): Likewise.
3112         (function_arg_boundary): Likewise.
3113         (function_arg_advance): Likewise.
3114         (rs6000_darwin64_record_arg_recurse): Likewise.
3115         (function_arg): Likewise.
3116         (rs6000_gimplify_va_arg): Likewise.
3117         (rs6000_split_multireg_move): Likewise.
3118         (rs6000_output_function_epilogue): Likewise.
3119         (rs6000_output_function_epilogue): Likewise.
3120         (rs6000_register_move_cost): Likewise.
3121         (rs6000_function_value): Likewise.
3122         (rs6000_libcall_value): Likewise.
3123
3124 2007-03-02  Richard Sandiford  <richard@codesourcery.com>
3125
3126         * config/t-vxworks (LIMITS_H_TEST): Define to true for VxWorks.
3127
3128 2007-03-02  Richard Sandiford  <richard@codesourcery.com>
3129
3130         * config/t-vxworks (LIBGCC2_INCLUDES): Pass -nostdinc.
3131         Use $MULTIDIR to choose between the kernel and RTP headers,
3132         and use $WIND_BASE and $WIND_USR to locate them.
3133
3134 2007-03-02  Uros Bizjak  <ubizjak@gmail.com>
3135
3136         * config/i386/i386.c (override_options): Put initialization of
3137         ix86_tune_mask and ix86_arch_mask to the correct place.
3138
3139 2007-03-02  Uros Bizjak  <ubizjak@gmail.com>
3140             Michael Meissner  <michael.meissner@amd.com>
3141
3142         PR target/31019
3143         * config/i386/i386.h (TUNEMASK): Redefine to use ix86_tune_mask.
3144         (ARCHMASK): Define.
3145         (TARGET_CMOVE): Use ARCHMASK.
3146         (TARGET_CMPXCHG): Ditto.
3147         (TARGET_CMPXCHG8B): Ditto.
3148         (TARGET_XADD): Ditto.
3149         (TARGET_BSWAP): Ditto.
3150         * config/i386/i386.c (ix86_tune_mask): New global variable.
3151         (ix86_arch_mask): Ditto.
3152         (override_options): Initialize ix86_tune_mask and
3153         ix86_arch_mask. Use ARCHMASK to clear MASK_NO_FANCY_MATH_387 in
3154         target_flags.
3155
3156 2007-03-02  Ben Elliston  <bje@au.ibm.com>
3157
3158         PR 30992
3159         * config/dfp-bit.c (DFP_TO_INT): Initialise qval with "1.".
3160
3161 2007-03-02  Joseph Myers  <joseph@codesourcery.com>
3162
3163         * target.h (init_dwarf_reg_sizes_extra): New target hook.
3164         * target-def.h (TARGET_INIT_DWARF_REG_SIZES_EXTRA): New default.
3165         * doc/tm.texi (TARGET_INIT_DWARF_REG_SIZES_EXTRA): Document.
3166         * dwarf2out.c (expand_builtin_init_dwarf_reg_sizes): Call this
3167         hook.
3168         * config/rs6000/rs6000.c (TARGET_INIT_DWARF_REG_SIZES_EXTRA,
3169         rs6000_init_dwarf_reg_sizes_extra): New.
3170         * config/rs6000/linux-unwind.h (ppc_fallback_frame_state): Support
3171         SPE register high parts.
3172
3173 2007-03-01  Brooks Moses  <brooks.moses@codesourcery.com>
3174
3175         * Makefile.in: Add install-pdf target as
3176         copied from automake v1.10 rules.
3177         * configure.ac: Add install-pdf to target list.
3178         * configure: Regenerate.
3179
3180 2007-03-01  Paul Brook  <paul@codesourcery.com>
3181
3182         * config/arm/arm.c (arm_legitimate_index_p): Limit iWMMXt addressing
3183         modes to LDRD for DImode.
3184         (output_move_double): Fixup out of range ldrd/strd.
3185         (vfp_secondary_reload_class): Rename...
3186         (coproc_secondary_reload_class): ... to this.  Add wb argument.
3187         * config/arm/arm.h (SECONDARY_OUTPUT_RELOAD_CLASS): Use
3188         coproc_secondary_reload_class for CLASS_IWMMXT.
3189         (SECONDARY_INPUT_RELOAD_CLASS): Ditto.
3190         * arm-protos.h (coproc_secondary_reload_class): Update prototype.
3191
3192 2007-03-01  Zdenek Dvorak  <dvorakz@suse.cz>
3193
3194         * tree-ssa-loop-prefetch.c (determine_unroll_factor):  Bound the unroll
3195         factor by the estimated number of iterations.
3196         (loop_prefetch_arrays): Do not prefetch in loops that iterate less than
3197         prefetch latency.
3198
3199         * config/i386/driver-i386.c (describe_cache, detect_caches_amd,
3200         decode_caches_intel, detect_caches_intel): New functions.
3201         (host_detect_local_cpu): Use detect_caches_amd and
3202         detect_caches_intel.
3203
3204 2007-03-01  Richard Henderson  <rth@redhat.com>
3205
3206         * expr.c (emit_move_complex_push): Export.
3207         (emit_move_complex_parts): Split out from ...
3208         (emit_move_complex): ... here.
3209         * expr.h (emit_move_complex_push, emit_move_complex_parts): Declare.
3210         * config/i386/i386.md (movcdi): New.
3211
3212 2007-03-01  Uros Bizjak  <ubizjak@gmail.com>
3213
3214         * config/i386/i386.c (ix86_modes_tieable_p): Fix typo, use also
3215         size of mode1 to check for tieable modes in MMX case.
3216
3217 2007-03-01  Richard Sandiford  <richard@codesourcery.com>
3218
3219         * Makefile.in (rtlanal.o): Depend on tree.h.
3220         * rtl.h (offset_within_section_p, split_const): Declare.
3221         * rtlanal.c: Include tree.h.
3222         (offset_within_block_p): New function, taken from
3223         mips_offset_within_object_p.
3224         (split_const): New function, taken from mips_split_const.
3225         * config/m68k/m68k-protos.h (m68k_illegitimate_symbolic_constant_p):
3226         Declare.
3227         * config/m68k/m68k.h (M68K_OFFSETS_MUST_BE_WITHIN_SECTIONS_P): Define.
3228         (CONSTANT_ADDRESS_P): Only accept legitimate constants.
3229         (LEGITIMATE_CONSTANT_P): Check m68k_illegitimate_symbolic_constant_p.
3230         * config/m68k/m68k.c (TARGET_CANNOT_FORCE_CONST_MEM): Define.
3231         (m68k_illegitimate_symbolic_constant_p): New function.
3232         * config/m68k/m68k.md (movsi): Remove misleading predicates.
3233         If M68K_OFFSETS_MUST_BE_WITHIN_SECTIONS_P and the source is a
3234         symbolic constant that might be outside the symbol's section,
3235         move the symbol first and then add the offset.
3236         * config/m68k/uclinux.h (M68K_OFFSETS_MUST_BE_WITHIN_SECTIONS_P):
3237         Override.
3238         * config/mips/mips.c (mips_split_const): Delete.
3239         (mips_offset_within_object_p): Delete.
3240         (mips_symbolic_constant_p): Use offset_within_section_p and
3241         split_const instead of mips_offset_within_object_p and
3242         mips_split_const.
3243         (mips_cannot_force_const_mem, mips_const_insns, mips_unspec_address)
3244         (mips_legitimize_const_move, print_operand_reloc)
3245         (mips_dangerous_for_la25_p): Use split_const instead of
3246         mips_split_const.
3247
3248 2007-02-28  Eric Christopher  <echristo@apple.com>
3249
3250         * Makefile.in (install-include-dir): Don't rm -rf include.
3251
3252 2007-02-28  Richard Guenther  <rguenther@suse.de>
3253
3254         PR middle-end/30364
3255         * fold-const.c (fold_binary): Do not associate expressions
3256         with more than one variable for integer types that do not wrap.
3257
3258 2007-02-28  Sandra Loosemore  <sandra@codesourcery.com>
3259
3260         * builtins.c (fold_builtin_call_list, fold_builtin_call_valist):
3261         Delete, and replace with...
3262         (fold_builtin_call_array): This.  Update callers to use it.
3263         * fold-const.c (fold_build_call_list): Delete, and replace with...
3264         (fold_build_call_array): This.
3265         (fold_build_call_list_initializer): Delete, and replace with...
3266         (fold_build_call_array_initializer): This.
3267         * tree.h: Update declarations to reflect above changes.
3268
3269         * c-typeck.c (build_function_call): Store converted arguments
3270         in a stack-allocated array instead of building a list.
3271         (convert_arguments): Store arguments in the array passed in as an
3272         argument, and return the actual number of arguments.
3273         * c-format.c: (check_function_format): Pass arguments in an
3274         array instead of a list.
3275         * c-common.c (check_function_nonnull): Likewise.
3276         (check_function_sentinel): Likewise.
3277         (check_function_arguments): Likewise.
3278         * c-common.h: Update declarations to reflect above changes.
3279
3280 2007-02-28  Jan Hubicka  <jh@suse.cz>
3281
3282         * predict.def (PRED_TREE_EARLY_RETURN, PRED_CONST_RETURN,
3283         PRED_NEGATIVE_RETURN): Update outcomes.
3284
3285 2007-02-28  Bernd Schmidt  <bernd.schmidt@analog.com>
3286
3287         * calls.c (emit_library_call_value_1): Handle partial registers
3288         correctly when building up CALL_INSN_FUNCTION_USAGE.
3289
3290 2007-02-27  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
3291
3292         * pa/predicates.md (move_src_operand): Allow zero for mode.
3293         * pa/pa.md: Fix constraints for zero CONST_DOUBLE in 64-bit DFmode
3294         move pattern.
3295
3296 2007-02-27  Uros Bizjak  <ubizjak@gmail.com>
3297
3298         PR target/30970
3299         * config/i386/sse.md (*mov<mode>_internal, *movv4sf_internal,
3300         *movv2df_internal): Enable pattern only for valid operand
3301         combinations.
3302         * config/i386/i386.c (ix86_modes_tieable_p): For SSE registers,
3303         tie only 128bit modes. For MMX registers, tie only 64bit modes.
3304
3305 2007-02-27  Mike Stump  <mrs@apple.com>
3306
3307         * config/darwin-crt3.c: Avoid compilation when compiling for a
3308         kext multilib.
3309
3310 2007-02-27  Joseph Myers  <joseph@codesourcery.com>
3311
3312         * Makefile.in (PREPROCESSOR_DEFINES, test-protoize-simple): Define
3313         FIXED_INCLUDE_DIR.
3314         (stmp-int-hdrs, stmp-fixinc, install-headers): Use include-fixed
3315         for fixed headers and limits.h.
3316         (install-include-dir, install-headers-tar, install-headers-cpio,
3317         install-headers-cp, real-install-headers-tar,
3318         real-install-headers-cpio, real-install-headers-cp): Handle
3319         include-fixed as well as include.
3320         (install-mkheaders): Don't install files that go only in include
3321         not include-fixed.
3322         * cppdefault.c (cpp_include_defaults): Separate FIXED_INCLUDE_DIR
3323         from GCC_INCLUDE_DIR.
3324         * gcc.c (process_command): Remove special -BstageN/ handling.
3325         (do_spec_1): Add include-fixed directories.
3326
3327 2007-02-27  Bernd Schmidt  <bernd.schmidt@analog.com>
3328
3329         * config/bfin/t-bfin-elf (LIB1ASMFUNCS): Add _umulsi3_highpart and
3330         _smulsi3_highpart.
3331         * config/bfin/lib1funcs.asm (___umulsi3_highpart, ___smulsi3_highpart):
3332         New functions.
3333         * config/bfin/bfin.md (smulsi3_highpart, umulsi3_highpart): New
3334         patterns.
3335
3336 2007-02-27  Mark Mitchell  <mark@codesourcery.com>
3337
3338         * c-common.c (get_priority): Add check for
3339         SUPPORTS_INIT_PRIORITY.
3340
3341 2007-02-27  Bernd Schmidt  <bernd.schmidt@analog.com>
3342
3343         * config/bfin/bfin.md (doloop_end): FAIL if counter reg isn't SImode.
3344
3345         * config/bfin/bfin.c: Include "cfglayout.h".
3346         (MAX_LSETUP_DISTANCE): New macro.
3347         (struct loop_info): New members incoming, incoming_src and
3348         incoming_dest.  Delete member predecessor.
3349         (length_for_loop): New function.
3350         (bfin_optimize_loop): Handle more different loop structures.
3351         (bfin_discover_loop): Rework detection of predecessor blocks by
3352         examining incoming edges.
3353         (bfin_discover_loops, bfin_free_loops): New functions, broken out of
3354         bfin_reorg_loops.
3355         (bfin_reorder_loops): New function.
3356         (bfin_reorg_loops): Use these three new functions.
3357
3358         * config/bfin/bfin.h (enum reg_class, REG_CLASS_NAMES,
3359         REG_CLASS_CONTENTS): Add D0REGS through D7REGS.
3360         (CONSTRAINT_LEN): Add entry for 'q'.
3361         (REG_CLASS_FROM_CONSTRAINT): Renamed from REG_CLASS_FROM_LETTER.
3362         Add 'q' constraints.
3363         (REGNO_REG_CLASS): For R0 through R7, return corresponding regclass.
3364         (CLASS_LIKELY_SPILLED_P): True for R0, R1 and R2.
3365
3366         * config/bfin/bfin.md (add_with_carry): New pattern.
3367         (s_or_u, su_optab, su_modifier): New code macros/attrs.
3368         (<su_optab>hisi_ll, <su_optab>hisi_lh, <su_optab>hisi_hl,
3369         <su_optab>hisi_hh): Renamed from mulhisi_xx patterns; macroized to
3370         support unsigned multiplies too.  Removed incorrect commutativity from
3371         operand 1 constraint where appropriate.
3372         (usmulhisi_ull, usmulhisi_ulh, usmulhisi_uhl, usmulhisi_uhh): New
3373         patterns.
3374         (<su_optab>hisi_ll_lh, <su_optab>hisi_ll_hl, <su_optab>hisi_ll_hh,
3375         <su_optab>hisi_lh_hl, <su_optab>hisi_lh_hh, <su_optab>hisi_hl_hh):
3376         New patterns.
3377         (usmulhisi_ll_lul, usmulhisi_ll_luh, usmulhisi_ll_hul,
3378         usmulhisi_ll_huh, usmulhisi_lh_lul, usmulhisi_lh_luh, usmulhisi_lh_hul,
3379         usmulhisi_lh_huh, usmulhisi_hl_lul, usmulhisi_hl_luh, usmulhisi_hl_hul,
3380         usmulhisi_hl_huh, usmulhisi_hh_lul, usmulhisi_hh_luh, usmulhisi_hh_hul,
3381         usmulhisi_hh_huh): New patterns.
3382
3383         * config/bfin/bfin.md (ssashiftv2hi3, ssashifthi3, lshiftv2hi3,
3384         lshifthi3): Fix output template to use half reg for operand 2.
3385
3386         * config/bfin/bfin.c (bfin_output_mi_thunk): Use R3 as scratch reg
3387         instead of R2.
3388
3389         * config/bfin/bfin.md (rotl16, rotlsi3, rotrsi3): New patterns.
3390
3391 2007-02-27  Andreas Schwab  <schwab@suse.de>
3392
3393         * Makefile.in (TEXI_GCCINSTALL_FILES): Add gcc-common.texi.
3394
3395 2007-02-27  Jan Hubicka  <jh@suse.cz>
3396
3397         * predict.c (last_basic_block_p): Remove.
3398         (tree_estimate_probability): Update return heuristic for commonized
3399         return blocks.
3400
3401 2007-02-26  Brooks Moses  <brooks.moses@codesourcery.com>
3402
3403         * Makefile.in (TEXI_GCCINSTALL_FILES): Add gcc-vers.texi dependency.
3404
3405 2007-02-26  Brooks Moses  <brooks.moses@codesourcery.com>
3406
3407         * doc/include/gcc-common.texi (versionsubtitle): New macro.
3408         * doc/cpp.texi: Standardize title page.
3409         * doc/cppinternals.texi: Likewise.
3410         * doc/gcc.texi: Standardize title page, remove version number
3411         from copyright page.
3412         * doc/gccint.texi: Likewise.
3413         * doc/install.texi: Standardize title page, add table of
3414         contents.
3415
3416 2007-02-26  Jan Hubicka  <jh@suse.cz>
3417
3418         * predict.def: Set outcomes according to more recent results.
3419         (PRED_LOOP_CONDITION, PRED_LOOP_PRECONDITIONING, PRED_LOOP_HEADER):
3420         Remove dead predictors.
3421         * predict.c (return_prediction): Fix pasto.
3422
3423 2007-02-27  Bernd Schmidt  <bernd.schmidt@analog.com>
3424
3425         * loop-iv.c (simplify_using_initial_values): Fix oversight in previous
3426         change; avoid a memory leak when returning early.
3427
3428 2007-02-26  Mark Mitchell  <mark@codesourcery.com>
3429
3430         * c-decl.c (static_ctors): Move to c-common.c.
3431         (static_dtors): Likewise.
3432         (finish_function): Use c_record_cdtor_fn.
3433         (build_cdtor): Move to c-common.c.
3434         (c_write_global_declarations): Use c_build_cdtor_fns.
3435         * c-common.h (static_ctors): Declare.
3436         (static_dtors): Likewise.
3437         (c_record_cdtor_fn): Likewise.
3438         (c_build_cdtor_fns): Likewise.
3439         * c-common.c (static_ctors): New variable.
3440         (static_dtors): Likewise.
3441         (c_record_cdtor_fn): New function.
3442         (build_cdtor): Move from c-decl.c
3443         (c_build_cdtor_fns): New function.
3444
3445         * output.h (assemble_addr_to_section): Declare.
3446         (get_cdtor_priority_section): Likewise.
3447         * varasm.c (assemble_addr_to_section): New function.
3448         (get_cdtor_priority_section): Likewise.
3449         (default_named_section_asm_out_destructor): Use them.
3450         (destor_dtor_section_asm_out_destructor): Likewise.
3451         (default_named_section_asm_out_constructor): Likewise.
3452         (default_ctor_section_asm_out_constructor): Likewise.
3453         * config.gcc (*-*-vxworks*): Include vxworks.o.
3454         * config/t-vxworks (vxworks.o): New target.
3455         * config/vxworks.h (ALWAYS_NUMBER_CTORS_SECTIONS): Remove.
3456         (TARGET_ASM_CONSTRUCTOR): Define.
3457         (TARGET_ASM_DESTRUCTOR): Likewise.
3458         (vxworks_asm_out_constructor): Declare.
3459         (vxworks_asm_out_destructor): Likewise.
3460
3461         * c-common.c (get_priority): Check that we have not just an
3462         INTEGER_CST, but an integer constant with integeral type.
3463
3464 2007-02-25  Uros Bizjak  <ubizjak@gmail.com>
3465
3466         PR tree-optimization/30938
3467         * tree-vect-transform.c (vectorizable_call): Fix off-by-one error:
3468         use &dt[nargs-1] instead of &dt[nargs] in the call to
3469         vect_is_simple_use().
3470
3471 2007-02-25  Ulrich Weigand  <uweigand@de.ibm.com>
3472
3473         * reload.c (find_reloads_address_1): Handle PLUS expressions resulting
3474         from register elimination as PRE_MODIFY / POST_MODIFY increments.
3475         Do not attempt to handle MEM inside auto-inc expressions.
3476         * reload1.c (eliminate_regs_1): Do not attempt to handle elimination
3477         of a register modified by an auto-inc expression.  However, do handle
3478         elimination of a register used as PRE_MODIFY / POST_MODIFY increment.
3479         (elimination_effects): Prohibit elimination of a register modified
3480         by an auto-inc expression.  Disable register elimination rules whose
3481         target register is modified by an auto-inc expression with variable
3482         increment.
3483
3484 2007-02-25  Zdenek Dvorak  <dvorakz@suse.cz>
3485
3486         * tree-ssa-loop-niter.c (compute_estimated_nb_iterations): Fix
3487         off-by-one error.
3488         (array_at_struct_end_p): New function.
3489         (idx_infer_loop_bounds): Use it.
3490         (estimate_numbers_of_iterations_loop): Export.
3491         * predict.c (predict_loops): Use estimated_loop_iterations_int.
3492         Do not use PRED_LOOP_EXIT on exits predicted by # of iterations.
3493         (tree_estimate_probability): Call record_loop_exits.
3494         * tree-data-ref.c (get_number_of_iters_for_loop): Replaced by ...
3495         (estimated_loop_iterations, estimated_loop_iterations_int,
3496         estimated_loop_iterations_tree): New functions.
3497         (analyze_siv_subscript_cst_affine,
3498         compute_overlap_steps_for_affine_1_2,
3499         analyze_subscript_affine_affine): Use estimated_loop_iterations_int.
3500         (analyze_miv_subscript): Use estimated_loop_iterations_tree.
3501         * predict.def (PRED_LOOP_ITERATIONS): Update comment.
3502         (PRED_LOOP_ITERATIONS_GUESSED): New.
3503         * cfgloop.c (record_loop_exits): Do nothing if there are no loops.
3504         * cfgloop.h (estimate_numbers_of_iterations_loop,
3505         estimated_loop_iterations_int): Declare.
3506
3507 2007-02-25  Mark Mitchell  <mark@codesourcery.com>
3508
3509         * doc/extend.texi: Document optional priority argument to
3510         constructors and destructors.
3511         * tree.c (init_priority_for_decl): Adjust GTY markers.
3512         (init_ttree): Use priority-info hash functions for
3513         init_priority_for_decl.
3514         (tree_map_eq): Rename to ...
3515         (tree_map_base_eq): ... this.
3516         (tree_map_marked_p): Rename to ...
3517         (tree_map_base_marked_p): ... this.
3518         (tree_map_base_hash): New function.
3519         (decl_init_priority_lookup): Rework.
3520         (decl_fini_priority_lookup): New function.
3521         (decl_priority_info): New function.
3522         (decl_init_priority_insert): Use it.
3523         (decl_fini_priority_insert): Likewise.
3524         (decl_restrict_base_lookup): Adjust for refactoring of tree_map
3525         hierarchy.
3526         (decl_restrict_base_insert): Likewise.
3527         (decl_debug_expr_insert): Likewise.
3528         (decl_value_expr_lookup): Likewise.
3529         (decl_value_expr_insert): Likewise.
3530         * tree.h (priority_type): New type.
3531         (decl_init_priority_lookup): Use priority_type.
3532         (decl_fini_priority_lookup): New function.
3533         (decl_init_priority_insert): Use priority_type.
3534         (decl_fini_priority_insert): New function.
3535         (DECL_HAS_INIT_PRIORITY): Tweak comments.
3536         (DECL_INIT_PRIORITY): Likewise.
3537         (SET_DECL_INIT_PRIORITY): Add comment.
3538         (DECL_FINI_PRIORITY): New macro.
3539         (SET_DECL_FINI_PRIORITY): Likewise.
3540         (DEFAULT_INIT_PRIORITY): Document.
3541         (MAX_INIT_PRIORITY): Likewise.
3542         (MAX_RESERVED_INIT_PRIORITY): Likewise.
3543         (tree_map_base): New type.
3544         (tree_map_base_eq): New function.
3545         (tree_map_base_hash): Likewise.
3546         (tree_map_base_marked_p): Likewise.
3547         (tree_map): Inherit from tree_map_base.
3548         (tree_map_eq): Make it a macro.
3549         (tree_map_marked_p): Likewise.
3550         (tree_int_map): Inherit from tree_map_base.
3551         (tree_int_map_eq): Make it a macro.
3552         (tree_int_map_hash): Likewise.
3553         (tree_int_map_marked_p): Likewise.
3554         (tree_priority_map): New type.
3555         (tree_priority_map_eq): New macro.
3556         (tree_priority_map_hash): Likewise.
3557         (tree_priority_map_marked_p): Likewise.
3558         * varasm.c (emults_decl): Adjust for refactoring of tree_map
3559         hierarchy.
3560         (emutls_common_1): Likewise.
3561         * lambda-code.c (replace_uses_equiv_to_x_with_y): Likewise.
3562         * tree-ssa-structalias.c (heapvar_lookup): Adjust for refactoring
3563         of tree_map hierarchy.
3564         * tree-cfg.c (move_stmt_r): Likewise.
3565         (new_label_mapper): Likewise.
3566         * c-tree.h (c_expand_body): Move to ...
3567         * c-common.h (c_expand_body): ... here.
3568         * c-decl.c (c_expand_body): Move to ...
3569         * c-common.c (c_expand_body): ... here.
3570         (c_common_attribute_table): Allow 1 argument for the constructor
3571         and destructor attributes.
3572         (get_priority): New function.
3573         (handle_constructor_attribute): Set DECL_INIT_PRIORITY.
3574         (handle_destructor_attribute): Set DECL_FINI_PRIORITY.
3575
3576 2007-02-24  Jan Hubicka  <jh@suse.cz>
3577
3578         PR middle-end/30509
3579         * tree-inline.c (copy_bb): Produce exact copy of EH info when copying for inlining.
3580
3581 2007-02-24  Uros Bizjak  <ubizjak@gmail.com>
3582             Jan Hubicka  <jh@suse.cz>
3583
3584         PR target/30778
3585         * i386.c (counter_mode): New function.
3586         (expand_set_or_movmem_via_loop): Use it.
3587         (expand_movmem_epilogue): Likewise; fix pasto.
3588         (ix86_expand_movmem): Do emit guard even for constant counts.
3589         (ix86_expand_setmem): Likewise.
3590
3591 2007-02-25  Nick Clifton  <nickc@redhat.com>
3592
3593         * config/frv/frv.h (ASM_OUTPUT_CASE_LABEL): Delete.
3594         (JUMP_TABLES_IN_TEXT_SECTION): Define.
3595
3596 2007-02-24  Uros Bizjak  <ubizjak@gmail.com>
3597
3598         PR target/30770
3599         * config/i386/i386.md (expand_movmem_epilogue): Fix typo, mask
3600         count argument with 0x10, not with 0x16.
3601         (expand_setmem_epilogue): Ditto.
3602
3603 2007-02-24  Mike Stump  <mrs@apple.com>
3604
3605         * config/i386/i386.c (output_pic_addr_const): Stubify optimized
3606         symbols.
3607
3608 2007-02-24  Richard Guenther  <rguenther@suse.de>
3609
3610         PR middle-end/30951
3611         * fold-const.c (fold_binary): Fold x +- CST op x for
3612         EQ_EXPR and NE_EXPR.
3613
3614 2007-02-24  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
3615
3616         * pa.md (muldi3): Force subregs to registers in 64-bit expander.
3617
3618 2007-02-24  Jan Hubicka  <jh@suse.cz>
3619
3620         * cgraphunit.c (decide_is_function_needed): Honor
3621         -fkeep-inline-functions.
3622
3623 2007-02-24  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
3624
3625         * builtins.c (fold_builtin_modf): New.
3626         (fold_builtin_2): Use it.
3627
3628 2007-02-24  Bernd Schmidt  <bernd.schmidt@analog.com>
3629
3630         * loop-iv.c (implies_p): Detect additional cases where A implies B.
3631         (determine_max_iter): Take additional LOOP arg; all callers changed.
3632         Lose broken logic dealing with PLUS.  Try to limit the upper bound by
3633         one using simplifications.
3634         (simplify_using_initial_values): Return if the expression becomes
3635         invalid due to altered regs.
3636
3637 2007-02-23  DJ Delorie  <dj@redhat.com>
3638
3639         * doc/tm.h (BIGGEST_ALIGNMENT): Clarify the purpose of this macro.
3640
3641 2007-02-23  Mike Stump  <mrs@apple.com>
3642
3643         * tlink.c (scan_linker_output): Parse linker messages from
3644         darwin9's linker better.
3645
3646 2007-02-23  Steve Ellcey  <sje@cup.hp.com>
3647
3648         PR debug/29614
3649         * varpool.c (varpool_assemble_pending_decls):  Set
3650         varpool_last_needed_node to null.
3651
3652 2007-02-23  DJ Delorie  <dj@redhat.com>
3653
3654         * config/i386/i386.c (ix86_data_alignment): Don't specify an
3655         alignment bigger than the object file can handle.
3656
3657 2007-02-23  Uros Bizjak  <ubizjak@gmail.com>
3658
3659         PR target/30825
3660         * config/i386/i386.md (*movdi_1_rex64, zero_extendsidi2_32,
3661         zero_extendsidi2_rex64): Penalize MMX register<->memory moves.
3662         (*movsf_1): Penalize MMX moves.
3663
3664 2007-02-23  Bernd Schmidt  <bernd.schmidt@analog.com>
3665
3666         * config/bfin/bfin.md (doloop_end): Fail for loops that can iterate
3667         2^32-1 or more times unless flag_unsafe_loop_optimizations.
3668
3669         * loop-iv.c (determine_max_iter): Moved in front of its sole user.
3670
3671 2007-02-23  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
3672
3673         * builtins.c (fold_builtin_logb, fold_builtin_significand): New.
3674         (fold_builtin_1): Use them.
3675         * fold-const.c (tree_expr_nonnegative_warnv_p): Handle
3676         BUILT_IN_SIGNIFICAND.
3677
3678 2007-02-23  H.J. Lu  <hongjiu.lu@intel.com>
3679
3680         * config/i386/i386.c (bdesc_1arg): Initialize
3681         IX86_BUILTIN_MOVSHDUP and IX86_BUILTIN_MOVSLDUP with
3682         "__builtin_ia32_movshdup" and "__builtin_ia32_movsldup".
3683         (ix86_init_mmx_sse_builtins): Remove IX86_BUILTIN_MOVSHDUP
3684         and IX86_BUILTIN_MOVSLDUP.
3685
3686 2007-02-22  Paolo Bonzini  <bonzini@gnu.org>
3687
3688         PR rtl-optimization/30841
3689         * fwprop.c (propagate_rtx_1): Accept a VOIDmode replacement address.
3690
3691 2007-02-22  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
3692
3693         * builtins.c (fold_builtin_frexp): New.
3694         (fold_builtin_2): Use it.
3695
3696 2007-02-22  Mark Mitchell  <mark@codesourcery.com>
3697
3698         * doc/invoke.texi (Spec Files): Document getenv spec function.
3699
3700         * gcc.c (getenv_spec_function): New function.
3701         (static_spec_functions): Add it.
3702         * config/vxworks.h (VXWORKS_TARGET_DIR): Remove.
3703         (VXWORKS_ADDITIONAL_CPP_SPEC): Use getenv to find the VxWorks
3704         header files.
3705
3706 2007-02-22  Michael Matz  <matz@suse.de
3707
3708         PR c++/29433
3709         * dwarf2out.c (add_AT_string): Call ggc_strdup once per string.
3710         (type_tag): Use lang_hooks.dwarf_name instead of DECL_NAME.
3711
3712 2007-02-22  Ian Lance Taylor  <iant@google.com>
3713
3714         PR debug/30898
3715         * dwarf2out.c (concatn_mem_loc_descriptor): New static function.
3716         (mem_loc_descriptor): Call it.
3717
3718 2007-02-22  Zdenek Dvorak  <dvorakz@suse.cz>
3719             Ira Rosen  <irar@il.ibm.com>
3720
3721         * tree-data-ref.c (ptr_ptr_may_alias_p): Take alias sets into account.
3722
3723 2007-02-22  Ira Rosen  <irar@il.ibm.com>
3724
3725         PR tree-optimization/30843
3726         * tree-vect-transform.c (vect_transform_loop): Remove strided scalar
3727         stores only after all the group is vectorized.
3728
3729 2007-02-22  Dorit Nuzman  <dorit@il.ibm.com>
3730
3731         PR tree-optimization/30858
3732         * tree-vectorizer.c (vect_is_simple_reduction): Check that the stmts
3733         in the reduction cycle have a single use in the loop.
3734         * tree-vectorizer.h (relevant): Add documentation.
3735
3736 2007-02-20  Mike Stump  <mrs@apple.com>
3737
3738         * configure.ac (powerpc*-*-darwin*): #include <sys/cdefs.h>.
3739         * configure: Regenerate.
3740
3741 2007-02-21  Trevor Smigiel  <trevor_smigiel@playstation.sony.com>
3742
3743         Change the defaults of some parameters and options.
3744         * config/spu/spu-protos.h (spu_optimization_options): Declare.
3745         * config/spu/spu.c (spu_optimization_options): Add.
3746         (spu_override_options): Change params in spu_optimization_options.
3747         * config/spu/spu.h (OPTIMIZATION_OPTIONS): Define.
3748
3749         Register 127 is only 16 byte aligned when used as a frame pointer.
3750         * config/spu/spu-protos.h (spu_init_expanders): Declare.
3751         * config/spu/spu.c (spu_expand_prologue): Set REGNO_POINTER_ALIGN for
3752         HARD_FRAME_POINTER_REGNUM.
3753         (spu_legitimate_address):  Use regno_aligned_for_reload.
3754         (regno_aligned_for_load):  HARD_FRAME_POINTER_REGNUM is only 16 byte
3755         aligned when frame_pointer_needed is true.
3756         (spu_init_expanders): New.  Set alignment of HARD_FRAME_POINTER_REGNUM
3757         to 8 bits.
3758         * config/spu/spu.h (INIT_EXPANDERS): Define.
3759
3760         Make sure shift and rotate instructions have valid immediate operands.
3761         * config/spu/predicates.md (spu_shift_operand): Remove.
3762         * config/spu/spu.c (print_operand): Add [efghEFGH] modifiers.
3763         * config/spu/constraints.md (W, O): Extend range.
3764         * config/spu/spu.md (umask, nmask): Define.
3765         (ashl<mode>3, ashldi3, ashlti3_imm, shlqbybi_ti, shlqbi_ti, shlqby_ti,
3766         lshr<mode>3, rotm_<mode>, lshr<mode>3_imm, rotqmbybi_<mode>,
3767         rotqmbi_<mode>, rotqmby_<mode>, ashr<mode>3, rotma_<mode>,
3768         rotl<mode>3, rotlti3, rotqbybi_ti, rotqby_ti, rotqbi_ti): Use
3769         spu_nonmem_operand instead of spu_shift_operands.  Use new modifiers.
3770         (lshr<mode>3_reg):  Fix rtl description.
3771
3772         Make sure mulhisi immediate operands are valid.
3773         * config/spu/predicates.md (imm_K_operand): Add.
3774         * config/spu/spu.md (mulhisi3_imm, umulhisi3_imm): Use imm_K_operand.
3775
3776         Generate constants using fsmbi and andi.
3777         * config/spu/spu.c (enum immediate_class): Add IC_FSMBI2.
3778         (print_operand, spu_split_immediate, classify_immediate,
3779         fsmbi_const_p): Handle IC_FSMBI2.
3780
3781         Correctly handle a CONST_VECTOR containing symbols.
3782         * config/spu/spu.c (print_operand): Handle HIGH correctly.
3783         (spu_split_immediate): Split CONST_VECTORs with -mlarge-mem.
3784         (immediate_load_p): Allow symbols that use 2 instructions to create.
3785         (classify_immediate, spu_builtin_splats):  Don't accept a CONST_VECTOR
3786         with symbols when flag_pic is set.
3787         (const_vector_immediate_p): New.
3788         (logical_immediate_p, iohl_immediate_p, arith_immediate_p): Don't
3789         accept a CONST_VECTOR with symbols.
3790         (spu_legitimate_constant_p): Use const_vector_immediate_p.  Don't
3791         accept a CONST_VECTOR with symbols when flag_pic is set.  Handle HIGH
3792         correctly.
3793         * config/spu/spu.md (high, low): Delete.
3794         (low_<mode>): Define.
3795
3796         Remove INTRmode and INTR_REGNUM, which didn't work.
3797         * config/spu/spu.c (spu_conditional_register_usage): Remove reference
3798         of INTR_REGNUM.
3799         * config/spu/spu-builtins.md (spu_idisable, spu_ienable, set_intr,
3800         set_intr_pic, set_intr_cc, set_intr_cc_pic, set_intr_return, unnamed
3801         peephole2 pattern): Don't use INTR or 131.
3802         (movintrcc): Delete.
3803         * config/spu/spu.h (FIRST_PSEUDO_REGISTER, FIXED_REGISTERS,
3804         CALL_USED_REGISTERS, REGISTER_NAMES, INTR_REGNUM): Remove INTR_REGNUM.
3805         * config/spu/spu.md (UNSPEC_IDISABLE, UNSPEC_IENABLE): Remove.
3806         (UNSPEC_SET_INTR): Add.
3807         * config/spu/spu-modes.def (INTR): Remove.
3808
3809         More accurate warnings about run-time relocations.
3810         * config/spu/spu.c (reloc_diagnostic): Test in_section.
3811
3812         Correctly warn about immediate arguments to specific intrinsics.
3813         * config/spu/spu.c (spu_check_builtin_parm): Handle CONST_VECTORs.
3814         (spu_expand_builtin_1): Call spu_check_builtin_parm before checking
3815         the instruction predicate.
3816
3817         Fix tree check errors with latest update.
3818         * config/spu/spu.c (expand_builtin_args, spu_expand_builtin_1): Use
3819         CALL_EXPR_ARG.
3820         (spu_expand_builtin): Use CALL_EXPR_FN.
3821
3822         Add missing specific intrinsics.
3823         * config/spu/spu-builtins.def: Add si_bisled, si_bisledd and
3824         si_bislede.
3825         * config/spu/spu_internals.h: Ditto.
3826
3827         Fix incorrect operand modifiers.
3828         * config/spu/spu-builtins.md (spu_mpy, spu_mpyu):  Remove use of %H.
3829         * config/spu/spu.md (xor<mode>3):  Change %S to %J.
3830
3831         Optimize one case of zero_extend of a vec_select.
3832         * config/spu/spu.md (_vec_extractv8hi_ze):  Add.
3833
3834         Accept any immediate for hbr.
3835         * config/spu/spu.md (hbr):  Change s constraints to i.
3836
3837 2007-02-21  Paul Brook  <paul@codesourcery.com>
3838
3839         * config/arm/arm.c (thumb2_final_prescan_insn): Don't incrememnt
3840         condexec_count when skipping USE and CLOBBER.
3841
3842 2007-02-21  Nick Clifton  <nickc@redhat.com>
3843
3844         * common.opt (Warray-bounds): Add Warning attribute.
3845         (Wstrict-overflow, Wstrict-overflow=, Wcoverage-mismatch):
3846         Likewise.
3847         (fsized-zeroes): Add Optimization attribute.
3848         (fsplit-wide-types, ftree-scev-cprop): Likewise.
3849         * c.opt (Wc++0x-compat): Add Warning attribute.
3850
3851 2007-02-21  Ulrich Weigand  <uweigand@de.ibm.com>
3852
3853         PR middle-end/30761
3854         * reload1.c (eliminate_regs_in_insn): In the single_set special
3855         case, attempt to re-recognize the insn before falling back to
3856         having reload fix it up.
3857
3858 2007-02-20  Eric Christopher  <echristo@gmail.com>
3859
3860         * config/frv/frv.c (frv_read_argument): Take a tree and int argument.
3861         Rewrite accordingly.
3862         (frv_read_iacc_argument): Ditto.
3863         (frv_expand_set_builtin): Take a call instead of arglist, update for
3864         above changes.
3865         (frv_expand_unop_builtin): Ditto.
3866         (frv_expand_binop_builtin): Ditto.
3867         (frv_expand_cut_builtin): Ditto.
3868         (frv_expand_binopimm_builtin): Ditto.
3869         (frv_expand_voidbinop_builtin): Ditto.
3870         (frv_expand_int_void2arg): Ditto.
3871         (frv_expand_prefetches): Ditto.
3872         (frv_expand_voidtriop_builtin): Ditto.
3873         (frv_expand_voidaccop_builtin): Ditto.
3874         (frv_expand_load_builtin): Ditto.
3875         (frv_expand_store_builtin): Ditto.
3876         (frv_expand_mdpackh_builtin): Ditto.
3877         (frv_expand_mclracc_builtin): Ditto.
3878         (frv_expand_mrdacc_builtin): Ditto.
3879         (frv_expand_mwtacc_builtin): Ditto.
3880         (frv_expand_builtin): Remove usage of CALL_EXPR_ARGS, update
3881         calls for above.
3882
3883 2007-02-20  Janis Johnson  <janis187@us.ibm.com>
3884
3885         * doc/invoke.texi (RS/6000 and PowerPC Options): Add -mcmpb and -mdfp.
3886         * configure.ac (HAVE_GAS_CMPB): Check for assembler support of the
3887         cmpb instruction.
3888         (HAVE_GAS_DFP): Check for assembler support of decimal floating
3889         point instructions.
3890         * configure: Regenerate.
3891         * config.in: Regenerate.
3892         * config/rs6000/rs6000.opt (mcmpb, mdfp): New.
3893         * config/rs6000/rs6000.c (rs6000_override_options): Add CMPB and DFP
3894         masks to power6 and power6x and to POWERPC_MASKS.
3895         * config/rs6000/rs6000-c.c (rs6000_cpu_cpp_builtins): Define
3896         _ARCH_PWR6.
3897         * config/rs6000/rs6000.h: Check assembler support for CMPB and DFP.
3898         * config/rs6000/sysv4.opt (mprototype): Use variable, not mask.
3899         * config/rs6000/linux64.h (SUBSUBTARGET_OVERRIDE_OPTIONS):
3900         Access PROTOTYPE as variable, not mask.
3901
3902 2007-02-20  Steven Bosscher  <steven@gcc.gnu.org>
3903
3904         * rtl.h (remove_reg_equal_equiv_notes): New prototype.
3905         * rtlanal.c (remove_reg_equal_equiv_notes): New function.
3906         * combine.c (adjust_for_new_dest): Use it.
3907         * postreload.c (reload_combine): Likewise.
3908
3909 2007-02-20  Steven Bosscher  <steven@gcc.gnu.org>
3910
3911         * rtlanal.c (find_reg_equal_equiv_note): Do not find REG_EQ*
3912         notes on an insn with multiple sets, even if single_set returns
3913         non-NULL for that insn.
3914
3915 2007-02-20  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
3916
3917         * fold-const.c (tree_expr_nonnegative_warnv_p): Handle scalb,
3918         scalbn and scalbln.
3919
3920 2007-02-20  Geoffrey Keating  <geoffk@apple.com>
3921
3922         * config/darwin.h (LINK_SPEC): Default -mmacosx-version-min only
3923         if user didn't pass it.
3924         * config/i386/darwin.h (CC1_SPEC): Likewise.
3925         * config/rs6000/darwin.h (CC1_SPEC): Likewise.
3926         (DARWIN_MINVERSION_SPEC): Don't depend on user's setting of
3927         -mmacosx-version-min.
3928
3929 2007-02-20  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
3930             Uros Bizjak  <ubizjak@gmail.com>
3931
3932         * optabs.h (enum optab_index): Add new OTI_scalb.
3933         (scalb_optab): Define corresponding macro.
3934         * optabs.c (init_optabs): Initialize scalb_optab.
3935         * genopinit.c (optabs): Implement scalb_optab using scalb?f3
3936         patterns.
3937         * builtins.c (expand_builtin_mathfn_2, expand_builtin): Handle
3938         BUILT_IN_SCALB{,F,L}, BUILT_IN_SCALBN{,F,L} and BUILT_IN_SCALBLN{,F,L}.
3939         (expand_builtin): Expand BUILT_IN_SCALB{,F,L}, BUILT_IN_SCALBN{,F,L}
3940         and BUILT_IN_SCALBLN{,F,L} using expand_builtin_mathfn_2 if
3941         flag_unsafe_math_optimizations is set.
3942
3943         * config/i386/i386.md (scalbxf3, scalb<mode>3): New expanders
3944         to implement scalbf, scalb and scalbl built-ins as inline x87
3945         intrinsics.
3946
3947 2007-02-20  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
3948             DJ Delorie <dj@redhat.com>
3949
3950         PR other/30824
3951         * diagnostic.c (diagnostic_count_diagnostic): Move -Werror logic to...
3952         (diagnostic_report_diagnostic): ... here, and turn them into real
3953         errors. If warnings are inhibited, no need to do anything.
3954
3955 2007-02-20  Uros Bizjak  <ubizjak@gmail.com>
3956
3957         * config/i386/i386.md (expm1xf2): Reorder insn sequence for
3958         better code generation.
3959
3960 2007-02-20  Ben Elliston  <bje@au.ibm.com>
3961
3962         * config/m68hc11/m68hc11.h (OVERRIDE_OPTIONS): Remove extra ;.
3963
3964 2007-02-20  Kazu Hirata  <kazu@codesourcery.com>
3965
3966         * config/alpha/alpha.c, config/alpha/alpha.md,
3967         config/alpha/lib1funcs.asm, config/alpha/vms-crt0-64.c,
3968         config/alpha/vms-psxcrt0-64.c, config/arc/arc.c,
3969         config/arc/arc.h, config/arm/arm.c, config/arm/arm.md,
3970         config/arm/lib1funcs.asm: Follow spelling conventions.
3971
3972         * config/c4x/c4x.md, config/cris/cris.c, config/crx/crx.c,
3973         config/fr30/fr30.md, config/i386/i386.h,
3974         config/iq2000/iq2000.h, config/iq2000/predicates.md,
3975         config/pa/milli64.S, config/pa/pa.c, config/pa/pa.h,
3976         config/pa/pa.md, config/pa/pa32-regs.h, config/pa/pa64-regs.h,
3977         config/pdp11/pdp11.c, config/pdp11/pdp11.h,
3978         config/rs6000/altivec.md, config/rs6000/rs6000.c,
3979         config/s390/s390-modes.def, config/sparc/netbsd-elf.h,
3980         config/sparc/sparc.c, config/sparc/sparc.h,
3981         config/sparc/sparc.md, config/spu/constraints.md,
3982         config/spu/spu.c, config/stormy16/stormy16.md: Follow spelling
3983         conventions.
3984
3985 2007-02-20  Alan Modra  <amodra@bigpond.net.au>
3986
3987         PR target/29943
3988         * varasm.c (use_blocks_for_decl_p): Return false for decls with
3989         alias attribute.
3990
3991 2007-02-19  Kazu Hirata  <kazu@codesourcery.com>
3992
3993         * doc/invoke.texi (-ftree-lrs): Remove.
3994
3995 2007-02-19  Diego Novillo  <dnovillo@redhat.com>
3996
3997         * tree-ssa-pre.c (create_value_expr_from): Initialize POOL to
3998         NULL.
3999
4000 2007-02-19  Lee Millward  <lee.millward@codesourcery.com>
4001
4002         * config/ia64/ia64.c (ia64_expand_builtin): Use the
4003         new CALL_EXPR_FN macro for retrieving the function
4004         declaration of the input expression.
4005
4006 2007-02-19  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
4007
4008         * c.opt (Waddress): New.
4009         * common.opt (Walways-true): Delete.
4010         (Wstring-literal-comparison): Delete.
4011         * doc/invoke.texi (Warning Options): Delete -Walways-true and
4012         -Wstring-literal-comparison. Add -Waddress.
4013         (Waddress): New.
4014         (Walways-true): Delete.
4015         (Wstring-literal-comparison): Delete.
4016         * doc/extend.texi (#pragma GCC diagnostic): Use -Wformat
4017         consistently instead of -Walways-true in example.
4018         * c-opts.c (c_common_handle_option): -Waddress is enabled by -Wall.
4019         * c-typeck.c (parser_build_binary_op): Replace
4020         -Wstring-literal-comparison and -Walways-true with -Waddress.
4021         * c-common.c (c_common_truthvalue_conversion): Replace -Walways-true
4022         with -Waddress.
4023
4024 2007-02-19  Eric Botcazou  <ebotcazou@adacore.com>
4025
4026         * tree-cfg.c (dump_function_to_file): Be prepared for functions
4027         without DECL_STRUCT_FUNCTION initialized.
4028
4029 2007-02-19  Eric Botcazou  <ebotcazou@adacore.com>
4030
4031         * gimplify.c (gimplify_init_ctor_preeval_1): Detect potential overlap
4032         due to calls to functions taking pointers as parameters.
4033
4034 2007-02-19  Richard Henderson  <rth@redhat.com>
4035
4036         PR debug/29558
4037         * var-tracking.c (track_expr_p): Disallow AGGREGATE_TYPE_P
4038         in memory.
4039
4040 2007-02-19  Andreas Krebbel  <krebbel1@de.ibm.com>
4041
4042         * config/s390/s390.c (s390_call_saved_register_used,
4043         s390_function_ok_for_sibcall): Adjust the way CALL_EXPR arguments are
4044         accessed to the new scheme.
4045
4046 2007-02-19  Jan-Benedict Glaw  <jbglaw@lug-owl.de>
4047
4048         * config/cris/cris.c (cris_movem_load_rest_p, cris_store_multiple_op_p)
4049         (cris_print_index, cris_print_operand, cris_print_operand_address)
4050         (cris_reload_address_legitimized, cris_rtx_costs, cris_address_cost)
4051         (cris_side_effect_mode_ok, cris_valid_pic_const, cris_split_movdx)
4052         (cris_expand_pic_call_address): Use xxx_P predicate macros instead of
4053         GET_CODE () == xxx.
4054         * config/cris/cris.h (SECONDARY_RELOAD_CLASS, EXTRA_CONSTRAINT_Q,
4055         EXTRA_CONSTRAINT_T, BDAP_INDEX_P, BIAP_INDEX_P, SIMPLE_ADDRESS_P,
4056         GO_IF_LEGITIMATE_ADDRESS): Ditto.
4057         * config/cris/cris.md (define_insns: *btst, movdi, *mov_side<mode>)
4058         (*mov_sidesisf, *mov_side<mode>_mem, *mov_sidesisf_mem)
4059         (*clear_side<mode>, movsi, *movsi_internal, *ext_sideqihi)
4060         (*ext_side<mode>si, *op_side<mode>, *op_swap_side<mode>, addsi3)
4061         (*extopqihi_side, *extop<mode>si_side, *extopqihi_swap_side)
4062         (*extop<mode>si_swap_side, addi_mul, *addi,andsi3, andhi3, ashl<mode>3)
4063         (uminsi3, call, call_value): Ditto.
4064         (define_split: indir_to_reg_split, unnamed): Ditto.
4065
4066 2007-02-19  Dorit Nuzman  <dorit@il.ibm.com>
4067
4068         PR tree-optimization/30975
4069         * tree-vect-trasnform.c (vect_get_vec_def_for_stmt_copy): Remove
4070         wrong assert.
4071
4072 2007-02-18  Eric Christopher  <echristo@gmail.com>
4073
4074         * mips.c (mips_prepare_builtin_arg): Add argnum parameter.
4075         Remove use of arglist.
4076         (mips_expand_builtin): Remove use of arglist, pass in expr.
4077         (mips_expand_builtin_direct): Rewrite handling for arglist removal.
4078         (mips_expand_builtin_movtf): Ditto.
4079         (mips_expand_builtin_compare): Ditto.
4080
4081 2007-02-19  Alexandre Oliva  <aoliva@redhat.com>
4082
4083         * tree-sra.c (sra_build_assignment): Replace assertion
4084         checking with a comment explaining why it can't be done.
4085
4086 2007-02-18  Sandra Loosemore  <sandra@codesourcery.com>
4087
4088         PR middle-end/30833
4089         * tree-dump.c (dequeue_and_dump): Add tcc_vl_exp case missed
4090         during CALL_EXPR representation conversion.
4091         * tree-ssa-propagate.c (set_rhs): Likewise.
4092
4093 2007-02-19  Alexandre Oliva  <aoliva@redhat.com>
4094
4095         * tree-sra.c (sra_build_assignment): Disable assertion checking
4096         for now.
4097
4098 2007-02-18  Roger Sayle  <roger@eyesopen.com>
4099
4100         * function.c (gimplify_parameters): Call build_gimple_modify_stmt
4101         instead of calling build2 with a GIMPLE_MODIFY_STMT.
4102         * gimple-low.c (lower_function_body, lower_builtin_setjmp):
4103         Likewise.
4104         * gimplify.c (build_stack_save_restore, gimplify_return_expr,
4105         gimplify_decl_expr,  gimplify_self_mod_expr, gimplify_cond_expr,
4106         gimplify_init_ctor_eval_range, gimple_push_cleanup,
4107         gimplify_omp_for, gimplify_omp_atomic_pipeline,
4108         gimplify_omp_atomic_mutex, gimplify_expr, gimplify_one_sizepos,
4109         force_gimple_operand): Likewise.
4110         * ipa-cp.c (constant_val_insert): Likewise.
4111         * lambda-code.c (lbv_to_gcc_expression, lle_to_gcc_expression,
4112         lambda_loopnest_to_gcc_loopnest, replace_uses_equiv_to_x_with_y,
4113         perfect_nestify): Likewise.
4114         * langhooks.c (lhd_omp_assignment): Likewise.
4115         * omp-low.c (lower_rec_input_clauses, lower_reduction_clauses,
4116         lower_copyprivate_clauses, lower_send_clauses,
4117         lower_send_shared_vars, expand_parallel_call,
4118         expand_omp_for_generic, expand_omp_for_static_nochunk,
4119         expand_omp_for_static_chunk, expand_omp_sections,
4120         lower_omp_single_copy, lower_omp_for_lastprivate,
4121         lower_omp_parallel, init_tmp_var, save_tmp_var): Likewise.
4122         * value-prof.c (tree_divmod_fixed_value, tree_mod_pow2,
4123         tree_mod_subtract, tree_ic, tree_stringop_fixed_value):
4124         Likewise.
4125
4126 2007-02-19  Kazu Hirata  <kazu@codesourcery.com>
4127
4128         * config/sh/divtab.c, config/sh/sh.c, config/sh/sh.h,
4129         config/sh/sh.md: Follow spelling conventions.
4130
4131         * config/frv/frv.c, config/frv/frv.h, config/frv/frv.md,
4132         config/frv/predicates.md: Follow spelling conventions.
4133
4134         * config/m68k/linux-unwind.h: Fix a comment typo.
4135         * target.h: Follow spelling conventions.
4136
4137 2007-02-18  Roger Sayle  <roger@eyesopen.com>
4138
4139         PR rtl-optimization/28173
4140         * simplify-rtx.c (simplify_binary_operation_1) <IOR>:  Optimize
4141         (X & C1) | C2 as C2 when (C1 & C2) == C1 and X has no side-effects.
4142         Optimize (X & C1) | C2 as X | C2 when (C1 | C2) == ~0.
4143         Canonicalize (X & C1) | C2 as (X & (C1 & ~C2)) | C2.
4144         <AND>: Canonicalize (X | C1) & C2 as (X & C2) | (C1 & C2).
4145
4146 2007-02-18  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
4147
4148         * builtins.c (fold_builtin_load_exponent): New.
4149         (fold_builtin_2): Use it.
4150
4151 2007-02-18  Steven Bosscher  <steven@gcc.gnu.org>
4152
4153         PR rtl-optimization/30773
4154         * local-alloc.c (update_equiv_regs): Do not set reg_equiv_init
4155         if we fail to attach a REG_EQUIV note.
4156
4157 2007-02-18  David Edelsohn  <edelsohn@gnu.org>
4158             Roger Sayle  <roger@eyesopen.com>
4159
4160         * config/rs6000/rs6000.md (bswapsi2): New define_insn and splitter.
4161
4162 2007-02-18  Sandra Loosemore  <sandra@codesourcery.com>
4163
4164         * calls.c (initialize_argument_information): Pass original EXP
4165         and STRUCT_VALUE_ADDR_VALUE instead of a list of arguments.  Move
4166         code to split complex arguments here, as part of initializing the
4167         ARGS array.
4168         (expand_call): Remove code that builds a list of arguments and
4169         inserts implicit arguments into it.  Instead, just count how many
4170         implicit arguments there will be so we can determine the size of
4171         the ARGS array, and let initialize_argument_information do the work.
4172         (split_complex_values): Delete unused function.
4173
4174 2007-02-18  Eric Botcazou  <ebotcazou@adacore.com>
4175
4176         * tree-eh.c (tree_could_trap_p): Handle VIEW_CONVERT_EXPR.
4177
4178 2007-02-18  Eric Botcazou  <ebotcazou@adacore.com>
4179
4180         * calls.c (mem_overlaps_already_clobbered_arg_p): Return true
4181         for arg pointer based indexed addressing.
4182
4183 2007-02-18  Kazu Hirata  <kazu@codesourcery.com>
4184
4185         * config/ia64/ia64.h, config/ia64/ia64.md,
4186         config/ia64/predicates.md, config/ia64/sysv4.h: Follow
4187         spelling conventions.
4188
4189 2007-02-18  Roman Zippel <zippel@linux-m68k.org>
4190
4191         * config/m68k/m68k.c (split_di): New.
4192         * config/m68k/m68k-protos.h: Declare split_di.
4193         * config/m68k/m68k.md (extendsidi2*,ashldi3*,ashrdi3*,lshrdi3*):
4194           Improve predicate handling and split constant shifts.
4195
4196 2007-02-18  Roman Zippel <zippel@linux-m68k.org>
4197
4198         * config/m68k/m68k.md (extv,extzv,insv): disable dynamic
4199         parameter for register bitfield operations, general predicates
4200         cleanup
4201
4202 2007-02-18  Roman Zippel <zippel@linux-m68k.org>
4203
4204         * config/m68k/linux.h (MD_UNWIND_SUPPORT): Define.
4205         * config/m68k/linux-unwind.h: New file.
4206
4207 2007-02-18  Kazu Hirata  <kazu@codesourcery.com>
4208
4209         * cfgloop.c, config/alpha/alpha.c, config/bfin/bfin.c,
4210         config/i386/athlon.md, config/ia64/ia64.md,
4211         config/rs6000/rs6000.c, config/s390/s390.c, config/spu/spu.md,
4212         df-problems.c, df.h, fold-const.c, ipa-cp.c, ipa-inline.c,
4213         ipa-prop.h, see.c, struct-equiv.c, tree-inline.c,
4214         tree-ssa-loop-niter.c, tree-vect-analyze.c,
4215         tree-vect-transform.c: Fix comment typos.
4216
4217 2007-02-17  Kazu Hirata  <kazu@codesourcery.com>
4218
4219         * sched-deps.c (find_insn_list): Remove.
4220         * sched-int.h: Remove the prototype for find_insn_list.
4221
4222 2007-02-16  Geoffrey Keating  <geoffk@apple.com>
4223
4224         * config/darwin.h (LINK_SPEC): Always pass -macosx_version_min
4225         to linker.
4226         (DARWIN_EXTRA_SPECS): Add %(darwin_minversion).
4227         * config/rs6000/darwin.h (SUBTARGET_OVERRIDE_OPTIONS): Just call
4228         darwin_rs6000_override_options.
4229         (C_COMMON_OVERRIDE_OPTIONS): Expect
4230         darwin_macosx_version_min to be non-NULL always.
4231         (TARGET_C99_FUNCTIONS): Likewise.
4232         (CC1_SPEC): Always pass -mmacosx-version-min to cc1*.
4233         (DARWIN_MINVERSION_SPEC): New.
4234         * config/rs6000/rs6000.c (darwin_rs6000_override_options): New.
4235         * config/i386/darwin.h (CC1_SPEC): Always pass -mmacosx-version-min
4236         to cc1*.
4237         (DARWIN_MINVERSION_SPEC): New.
4238         * config/darwin.opt (mmacosx-version-min): Initialize to non-NULL
4239         value.
4240         * config/darwin-c.c (darwin_cpp_builtins): Expect
4241         darwin_macosx_version_min to be non-NULL always.
4242
4243         * config/rs6000/rs6000.c: Clean up trailing whitespace.
4244
4245 2007-02-16  Uros Bizjak  <ubizjak@gmail.com>
4246
4247         * config/i386/i386.h (x86_use_xchgb): New.
4248         (TARGET_USE_XCHGB): New macro.
4249         * config/i386/i386.c (x86_use_xchgb): Set for PENT4.
4250         * config/i386/i386.md (*rotlhi3_1 splitter, *rotrhi3_1 splitter):
4251         Split after reload into bswaphi for shifts of 8.
4252         (bswaphi_lowpart): Generate rolw insn for HImode byte swaps.
4253         (*bswaphi_lowpart_1): Generate xchgb for Q registers for TARGET_XCHGB
4254         or when optimizing for size.
4255
4256 2007-02-16  Richard Guenther  <rguenther@suse.de>
4257             Christian Bruel  <christian.bruel@st.com>
4258
4259         * fold-const.c (tree_swap_operands_p): Treat SSA_NAMEs like
4260         DECLs but prefer SSA_NAMEs over DECLs.
4261
4262 2007-02-16  Richard Guenther  <rguenther@suse.de>
4263
4264         * tree-flow-inline.h (single_imm_use_p): Remove.
4265         (zero_imm_uses_p): Likewise.
4266         * tree-ssa-coalesce.c (create_outofssa_var_map): Use has_single_use
4267         instead of single_imm_use_p.
4268         * tree-cfg.c (replace_uses_by): Use has_zero_use instead of
4269         zero_imm_uses_p.
4270
4271 2007-02-16  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
4272
4273         PR other/27843
4274         * Makefile.in (SYSTEM_HEADER_DIR): Use single quotes to avoid
4275         nested double- and backquotes.
4276
4277 2007-02-15  Roger Sayle  <roger@eyesopen.com>
4278
4279         PR middle-end/30391
4280         * tree.c (expr_align): Handle MODIFY_EXPR.  GIMPLE_MODIFY_STMT
4281         should be unreachable.
4282         (build2_stat): Allow construction of MODIFY_EXPR at any time.
4283         For the time being redirect GIMPLE_MODIFY_STMT to the new
4284         (renamed) build_gimple_modify_stmt_stat.
4285         (build2_gimple_stat): Rename to...
4286         (build_gimple_modify_stmt_stat): Now longer take a CODE argument.
4287         Always build a GIMPLE_MODIFY_STMT node.
4288         * tree.h (build2_gimple, build2_gimple_stat): Delete.
4289         (build_gimple_modify_stmt, build_gimple_modify_stmt_stat): New
4290         declarations.
4291
4292         * tree-cfg.c (factor_computed_gotos, tree_merge_blocks,
4293         gimplify_val): Use build_gimple_modify_stmt instead of build2_gimple.
4294         * tree-complex.c (set_component_ssa_name, expand_complex_move,
4295         expand_complex_div_wide): Likewise.
4296         * tree-ssa-dom.c (record_equivalences_from_stmt): Likewise.
4297         * tree-ssa-loop-im.c (schedule_sm): Likewise.
4298         * tree-ssa-loop-ivopts.c (rewrite_use_nonlinear_expr): Likewise.
4299         * tree-ssa-loop-manip.c (create_iv): Likewise.
4300         * tree-ssa-phiopt.c (conditional_replacement, minmax_replacement,
4301         abs_replacement): Likewise.
4302         * tree-ssa-pre.c (create_expression_by_pieces, poolify_modify_stmt,
4303         realify_fake_stores): Likewise.
4304
4305         * builtins.c (std_expand_builtin_va_start): Build a MODIFY_EXPR
4306         node rather than a GIMPLE_MODIFY_STMT node.
4307         (std_gimpify_va_arg_expr, expand_builtin_va_copy,
4308         fold_builtin_memset, fold_builtin_memory_op, do_mpfr_sincos):
4309         Likewise.
4310         (integer_valued_real_p): Handle MODIFY_EXPR, not GIMPLE_MODIFY_STMT.
4311         * expr.c (expand_expr_real_1): Handle both MODIFY_EXPR and
4312         GIMPLE_MODIFY_STMT.
4313
4314 2007-02-15  Andrew Pinski  <andrew_pinski@playstation.sony.com>
4315
4316         PR middle-end/30433
4317         * fold-const.c (fold_comparison): Add back the
4318         folding of constant complex comparisions.
4319
4320 2007-02-15  Andrew Pinski  <andrew_pinski@playstation.sony.com>
4321
4322         PR middle-end/30729
4323         * stmt.c (warn_if_unused_value): VA_ARG_EXPR has side
4324         effects unknown to this function, return early.
4325
4326 2007-02-15  Ian Lance Taylor  <iant@google.com>
4327
4328         * lower-subreg.c (move_eh_region_note): New static function.
4329         (resolve_simple_move): Call it.
4330         (decompose_multiword_subregs): Track blocks for which we resolve a
4331         simple move which is also a control flow insn.  Pass them to
4332         find_many_sub_basic_blocks.
4333         (pass_lower_subreg): Add TODO_verify_flow.
4334         (pass_lower_subreg2): Likewise.
4335
4336 2007-02-15  Sandra Loosemore  <sandra@codesourcery.com>
4337             Brooks Moses  <brooks.moses@codesourcery.com>
4338             Lee Millward  <lee.millward@codesourcery.com>
4339
4340         * tree.h (enum tree_code_class): Add tcc_vl_exp.
4341         (VL_EXP_CLASS_P): New.
4342         (TREE_OPERAND_CHECK): Use TREE_OPERAND_LENGTH instead of
4343         TREE_CODE_LENGTH.
4344         (TREE_OPERAND_CHECK_CODE): Likewise.
4345         (GIMPLE_STMT_OPERAND_CHECK): Likewise.
4346         (TREE_RTL_OPERAND_CHECK): Likewise.
4347         (tree_operand_check_failed): Make second parameter the whole tree
4348         instead of its code.  Fixed callers.
4349         (VL_EXP_CHECK): New.
4350         (TREE_OPERAND_LENGTH): New.
4351         (VL_EXP_OPERAND_LENGTH): New.
4352         (CALL_EXPR_FN): New.
4353         (CALL_EXPR_STATIC_CHAIN): New.
4354         (CALL_EXPR_ARGS): New.
4355         (CALL_EXPR_ARG): New.
4356         (call_expr_nargs): New.
4357         (CALL_EXPR_ARGP): New.
4358         (build_nt_call_list): Declare.
4359         (build_vl_exp_stat): Declare.
4360         (build_vl_exp): New.
4361         (build_call_list): Declare.
4362         (build_call_nary): Declare.
4363         (build_call_valist): Declare.
4364         (build_call_array): Declare.
4365         (call_expr_arg): Declare.
4366         (call_expr_argp): Declare.
4367         (call_expr_arglist): Declare.
4368         (fold_build_call_list): Declare.
4369         (fold_build_call_list_initializer): Declare.
4370         (fold_call_expr): Declare to replace fold_builtin.
4371         (fold_builtin_fputs): Update to agree with modified definition.
4372         (fold_builtin_strcpy): Likewise.
4373         (fold_builtin_strncpy): Likewise.
4374         (fold_builtin_memory_chk): Likewise.
4375         (fold_builtin_stxcpy_chk): Likewise.
4376         (fold_builtin_strncpy_chk): Likewise.
4377         (fold_builtin_next_arg): Likewise.
4378         (fold_build_call_expr): Declare.
4379         (fold_builtin_call_list): Declare.
4380         (fold_builtin_call_valist): Declare.
4381         (build_call_expr): Declare.
4382         (validate_arglist): Update to agree with modified definition.
4383         (tree_operand_length): New.
4384         (call_expr_arg_iterator): New.
4385         (init_call_expr_arg_iterator): New.
4386         (next_call_expr_arg): New.
4387         (first_call_expr_arg): New.
4388         (more_call_expr_args_p): New.
4389         (FOR_EACH_CALL_EXPR_ARG): New.
4390
4391         * tree.c (tree_code_class_string): Add entries for tcc_vl_exp
4392         and tcc_gimple_stmt.
4393         (tree_code_size): Update documentation.  Use sizeof (tree) rather
4394         than sizeof (char *).
4395         (tree_size): Likewise.  Add case for tcc_vl_exp.
4396         (tree_node_structure): Add case for tcc_vl_exp.
4397         (contains_placeholder_p): Likewise.
4398         (substitute_in_expr): Likewise.
4399         (substitute_placeholder_in_expr): Likewise.
4400         (stabilize_reference_1): Likewise.
4401         (build3_stat): Remove logic for CALL_EXPRs.  Replace with assertion
4402         to diagnose breakage of this interface for constructing CALL_EXPRs.
4403         (build_nt): Add similar assertion here.
4404         (build_nt_call_list): New.
4405         (simple_cst_equal) <CALL_EXPR>: Rewrite to use new accessors.
4406         (iterative_hash_expr): Use TREE_OPERAND_LENGTH instead of
4407         TREE_CODE_LENGTH.
4408         (get_callee_fndecl): Use new CALL_EXPR accessors.
4409         (tree_operand_check_failed): Change parameters to pass entire node
4410         instead of its code, so that we can call TREE_OPERAND_LENGTH on it.
4411         (process_call_operands): New.
4412         (build_vl_exp_stat): New.
4413         (build_call_list): New.
4414         (build_call_nary): New.
4415         (build_call_valist): New.
4416         (build_call_array): New.
4417         (walk_tree): Use TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
4418         (call_expr_arglist): New.
4419
4420         * tree.def (CALL_EXPR): Change representation of CALL_EXPRs to use
4421         tcc_vl_exp instead of a fixed-size tcc_expression.
4422
4423         * doc/c-tree.texi (CALL_EXPR): Document new representation and
4424         accessors for CALL_EXPRs.
4425         (AGGR_INIT_EXPR): Likewise.
4426
4427 2007-02-15  Sandra Loosemore  <sandra@codesourcery.com>
4428             Brooks Moses  <brooks.moses@codesourcery.com>
4429             Lee Millward  <lee.millward@codesourcery.com>
4430
4431         * builtins.c (c_strlen): Return NULL_TREE instead of 0.
4432         (expand_builtin_nonlocal_goto): Change parameter to be entire
4433         CALL_EXPR instead of an arglist.  Use new CALL_EXPR accessors.
4434         (expand_builtin_prefetch): Likewise.
4435         (expand_builtin_classify_type): Likewise.
4436         (mathfn_built_in): Return NULL_TREE instead of 0.
4437         (expand_errno_check): Use new CALL_EXPR accessors.
4438         (expand_builtin_mathfn): Use new CALL_EXPR accessors and constructors.
4439         Return NULL_RTX instead of 0.
4440         (expand_builtin_mathfn_2): Likewise.
4441         (expand_builtin_mathfn_3): Likewise.
4442         (expand_builtin_interclass_mathfn): Likewise.
4443         (expand_builtin_sincos): Likewise.
4444         (expand_builtin_cexpi): Likewise.
4445         (expand_builtin_int_roundingfn): Likewise.
4446         (expand_builtin_int_roundingfn_2): Likewise.
4447         (expand_builtin_pow): Likewise.
4448         (expand_builtin_powi): Likewise.
4449         (expand_builtin_strlen): Pass entire CALL_EXPR as parameter instead
4450         of arglist, fixing callers appropriately.  Use new CALL_EXPR
4451         accessors and constructors.  Return NULL_RTX instead of 0.
4452         (expand_builtin_strstr): Likewise.
4453         (expand_builtin_strchr): Likewise.
4454         (expand_builtin_strrchr): Likewise.
4455         (expand_builtin_strpbrk): Likewise.
4456         (expand_builtin_memcpy): Likewise.
4457         (expand_builtin_mempcpy): Likewise.
4458         (expand_builtin_mempcpy_args): New.
4459         (expand_builtin_memmove): Similarly to expand_builtin_mempcpy.
4460         (expand_builtin_memmove_args): New.
4461         (expand_builtin_bcopy): Similarly to expand_builtin_mempcpy.
4462         (expand_movstr): Likewise.
4463         (expand_builtin_strcpy): Likewise.
4464         (expand_builtin_strcpy_args): New.
4465         (expand_builtin_stpcpy): Similarly to expand_builtin_strcpy.
4466         (expand_builtin_strncpy): Likewise.
4467         (expand_builtin_memset): Likewise.
4468         (expand_builtin_memset_args): New.
4469         (expand_builtin_bzero): Similarly to expand_builtin_memset.
4470         (expand_builtin_memcmp): Likewise.
4471         (expand_builtin_strcmp): Likewise.
4472         (expand_builtin_strncmp): Likewise.
4473         (expand_builtin_strcat): Likewise.
4474         (expand_builtin_strncat): Likewise.
4475         (expand_builtin_strspn): Likewise.
4476         (expand_builtin_strcspn): Likewise.
4477         (expand_builtin_args_info): Likewise.
4478         (expand_builtin_va_start): Likewise.
4479         (gimplify_va_arg_expr): Likewise.
4480         (expand_builtin_va_end): Likewise.
4481         (expand_builtin_va_copy): Likewise.
4482         (expand_builtin_frame_address): Likewise.
4483         (expand_builtin_alloca): Likewise.
4484         (expand_builtin_bswap): Likewise.
4485         (expand_builtin_unop): Likewise.
4486         (expand_builtin_fputs): Likewise.
4487         (expand_builtin_expect): Likewise.
4488         (expand_builtin_fabs): Likewise.
4489         (expand_builtin_copysign): Likewise.
4490         (expand_builtin_printf): Likewise.
4491         (expand_builtin_fprintf): Likewise.
4492         (expand_builtin_sprintf): Likewise.
4493         (expand_builtin_init_trampoline): Likewise.
4494         (expand_builtin_signbit): Likewise.
4495         (expand_builtin_fork_or_exec): Likewise.
4496         (expand_builtin_sync_operation): Likewise.
4497         (expand_builtin_compare_and_swap): Likewise.
4498         (expand_builtin_lock_test_and_set): Likewise.
4499         (expand_builtin_lock_release): Likewise.
4500         (expand_builtin): Likewise.
4501         (builtin_mathfn_code): Likewise.
4502
4503         (fold_builtin_constant_p): Pass call arguments individually instead
4504         of as an arglist, fixing callers appropriately.  Use new CALL_EXPR
4505         accessors and constructors.  Return NULL_TREE instead of 0.
4506         (fold_builtin_expect): Likewise.
4507         (fold_builtin_classify_type): Likewise.
4508         (fold_builtin_strlen): Likewise.
4509         (fold_builtin_nan): Likewise.
4510         (integer_valued_real_p): Likewise.
4511         (fold_trunc_transparent_mathfn): Likewise.
4512         (fold_fixed_mathfn): Likewise.
4513         (fold_builtin_cabs): Likewise.
4514         (fold_builtin_sqrt): Likewise.
4515         (fold_builtin_cbrt): Likewise.
4516         (fold_builtin_cos): Likewise.
4517         (fold_builtin_cosh): Likewise.
4518         (fold_builtin_tan): Likewise.
4519         (fold_builtin_sincos): Likewise.
4520         (fold_builtin_cexp): Likewise.
4521         (fold_builtin_trunc): Likewise.
4522         (fold_builtin_floor): Likewise.
4523         (fold_builtin_ceil): Likewise.
4524         (fold_builtin_round): Likewise.
4525         (fold_builtin_int_roundingfn): Likewise.
4526         (fold_builtin_bitop): Likewise.
4527         (fold_builtin_bswap): Likewise.
4528         (fold_builtin_logarithm): Likewise.
4529         (fold_builtin_hypot): Likewise.
4530         (fold_builtin_pow): Likewise.
4531         (fold_builtin_powi): Likewise.
4532         (fold_builtin_exponent): Likewise.
4533         (fold_builtin_memset): Likewise.
4534         (fold_builtin_bzero): Likewise.
4535         (fold_builtin_memory_op): Likewise.
4536         (fold_builtin_bcopy): Deleted; call site changed to invoke
4537         fold_builtin_memory_op directly.
4538         (fold_builtin_strcpy): Similarly as for fold_builtin_memory_op.
4539         (fold_builtin_strncpy): Likewise.
4540         (fold_builtin_memcmp): Likewise.
4541         (fold_builtin_strcmp): Likewise.
4542         (fold_builtin_strncmp): Likewise.
4543         (fold_builtin_signbit): Likewise.
4544         (fold_builtin_copysign): Likewise.
4545         (fold_builtin_isascii): Likewise.
4546         (fold_builtin_toascii): Likewise.
4547         (fold_builtin_isdigit): Likewise.
4548         (fold_builtin_fabs): Likewise.
4549         (fold_builtin_abs): Likewise.
4550         (fold_builtin_fmin_fmax): Likewise.
4551         (fold_builtin_carg): Likewise.
4552         (fold_builtin_classify): Likewise.
4553         (fold_builtin_unordered_cmp): Likewise.
4554
4555         (fold_builtin_0, fold_builtin_2, fold_builtin_3, fold_builtin_4):
4556         New functions split out from fold_builtin_1.
4557         (fold_builtin_n): New.
4558         (fold_builtin_varargs): New.
4559         (fold_builtin): Deleted.  Most callers changed to use fold_call_expr
4560         instead.
4561         (fold_call_expr): New.
4562         (build_function_call_expr): Rewrite to use new helper function.
4563         (fold_builtin_call_list): New.
4564         (build_call_expr): New.
4565         (fold_builtin_call_valist): New.
4566         (rewrite_call_expr): New.
4567         (validate_arg): New.
4568         (validate_arglist): Change parameter to be entire CALL_EXPR instead
4569         of an arglist.  Change return type to bool.  Use new CALL_EXPR
4570         accessors.
4571
4572         (fold_builtin_strstr):  Pass call arguments individually instead
4573         of as an arglist, fixing callers appropriately.  Use new CALL_EXPR
4574         accessors and constructors.  Return NULL_TREE instead of 0.
4575         (fold_builtin_strchr): Likewise.
4576         (fold_builtin_strrchr): Likewise.
4577         (fold_builtin_strpbrk): Likewise.
4578         (fold_builtin_strcat): Likewise.
4579         (fold_builtin_strncat): Likewise.
4580         (fold_builtin_strspn): Likewise.
4581         (fold_builtin_strcspn): Likewise.
4582         (fold_builtin_fputs): Likewise.
4583         (fold_builtin_next_arg): Likewise.
4584         (fold_builtin_sprintf): Likewise.
4585
4586         (expand_builtin_object_size): Use new CALL_EXPR accessors.  Use
4587         NULL_RTX instead of 0.
4588         (expand_builtin_memory_chk): Likewise.
4589         (maybe_emit_chk_warning): Likewise.
4590         (maybe_emit_sprintf_chk_warning): Likewise.
4591
4592         (fold_builtin_object_size): Pass call arguments individually instead
4593         of as an arglist, fixing callers appropriately.  Use new CALL_EXPR
4594         accessors and constructors.  Return NULL_TREE instead of 0.
4595         (fold_builtin_memory_chk): Likewise.
4596         (fold_builtin_stxcpy_chk): Likewise.
4597         (fold_builtin_strncpy_chk): Likewise.
4598         (fold_builtin_strcat_chk): Likewise.
4599         (fold_builtin_strcat_chk): Likewise.
4600         (fold_builtin_strncat_chk): Likewise.
4601         (fold_builtin_sprintf_chk): Likewise.
4602         (fold_builtin_snprintf_chk): Likewise.
4603         (fold_builtin_printf): Likewise.
4604         (fold_builtin_vprintf): Likewise.
4605
4606         * fold-const.c (negate_expr_p): Use new CALL_EXPR accessors and
4607         constructors.
4608         (operand_equal_p): Add separate tcc_vl_exp/CALL_EXPR case.
4609         (make_range): Use TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
4610         (extract_muldiv_1): Add VL_EXP_CLASS_P case.
4611         (fold_mathfn_compare): Use new CALL_EXPR accessors and constructors.
4612         (fold_unary): Likewise.
4613         (fold_binary): Likewise.
4614         (fold_ternary): Remove CALL_EXPR case, since they are no longer
4615         ternary expressions.
4616         (fold): Add logic for tcc_vl_exp.
4617         (fold_checksum_tree):  Make it know about tcc_vl_exp.  Use
4618         TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
4619         (fold_build3_stat): Add assertion to flag broken interface for
4620         constructing CALL_EXPRs.
4621         (fold_build_call_list): New.
4622         (fold_build_call_list_initializer): New.
4623         (tree_expr_nonnegative_p): Use new CALL_EXPR accessors and
4624         constructors.
4625         (fold_strip_sign_ops): Likewise.
4626
4627 2007-02-15  Sandra Loosemore  <sandra@codesourcery.com>
4628             Brooks Moses  <brooks.moses@codesourcery.com>
4629             Lee Millward  <lee.millward@codesourcery.com>
4630
4631         * tree-dump.c (dequeue_and_dump) <CALL_EXPR>: Use new CALL_EXPR
4632         accessors and dump arguments explicitly.
4633
4634         * tree-pretty-print.c (do_niy): Use TREE_OPERAND_LENGTH instead of
4635         TREE_CODE_LENGTH.
4636         (dump_generic_node): Use new CALL_EXPR accessors and walk arguments
4637         explicitly.
4638         (print_call_name): Use new CALL_EXPR accessors.
4639
4640         * print-tree.c (print_node): Add case tcc_vl_exp.  Print
4641         CALL_EXPR arguments explicitly instead of as a list.  Use
4642         TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
4643
4644         * tree-vrp.c (stmt_interesting_for_vrp): Use new CALL_EXPR accessors.
4645         (vrp_visit_stmt): Likewise.
4646
4647         * tree-ssa-loop-im.c (outermost_invariant_loop_expr):  Make it
4648         know about tcc_vl_exp.  Use TREE_OPERAND_LENGTH instead of
4649         TREE_CODE_LENGTH.
4650         (force_move_till_expr): Likewise.
4651
4652         * targhooks.c (default_external_stack_protect_fail): Use
4653         build_call_expr instead of build_function_call_expr.
4654         (default_hidden_stack_protect_fail): Likewise.
4655
4656         * tree-complex.c (expand_complex_libcall): Use build_call_expr to
4657         build the call.
4658
4659         * cgraphbuild.c (build_cgraph_edges): Use new CALL_EXPR accessors
4660         and walk arguments explicitly.
4661
4662         * tree-ssa-loop-niter.c (simplify_replace_tree): Use
4663         TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
4664         (expand_simple_operations): Likewise.
4665         (infer_loop_bounds_from_array): Use new CALL_EXPR accessors.
4666
4667         * gengtype.c (adjust_field_tree_exp): Use TREE_OPERAND_LENGTH instead
4668         of TREE_CODE_LENGTH.
4669         (walk_type): Tweak walking of arrays not to blow up on CALL_EXPRs.
4670
4671         * optabs.c (expand_widen_pattern-expr): Use TREE_OPERAND_LENGTH
4672         instead of TREE_CODE_LENGTH.
4673
4674         * value_prof.c (tree_ic): Use new CALL_EXPR accessors.
4675         (tree_ic_transform): Likewise.
4676         (interesting_stringop_to_profile_p): Pass entire CALL_EXPR as
4677         parameter instead of arglist.  Fix callers.
4678         (tree_stringop_fixed_value): Use new CALL_EXPR accessors.
4679         (tree_stringops_transform): Likewise.
4680         (tree_indirect_call_to_profile): Likewise.
4681         (tree_stringops_values_to_profile): Likewise.
4682
4683         * tree-tailcall.c (find_tail_calls): Use new CALL_EXPR iterator.
4684         (eliminate_tail_call): Likewise.
4685
4686         * ipa-cp.c (ipcp_update_callgraph): Use new CALL_EXPR accessors.
4687
4688         * tree-scalar-evolution.c (chrec_contains_symbols_defined_in_loop):
4689         Use TREE_OPERAND_LENGTH and generalize to handle any number of
4690         operands.
4691         (instantiate_parameters_1): Can't handle tcc_vl_exp here.
4692
4693         * omp-low.c (build_omp_barrier): Use build_call_expr.
4694         (lower_rec_input_clauses): Likewise.
4695         (lower_reduction_clauses): Likewise.
4696         (expand_parallel_call): Likewise.
4697         (maybe_catch_exception): Likewise.
4698         (expand_omp_for_generic): Likewise.
4699         (expand_omp_for_static_nochunk): Likewise.
4700         (expand_omp_sections): Likewise.
4701         (lower_omp_single_simple): Likewise.
4702         (lower_omp_single_copy): Likewise.
4703         (lower_omp_master): Likewise.
4704         (lower_omp_ordered): Likewise.
4705         (lower_omp_critical): Likewise.
4706
4707         * ipa-reference.c (check-call): Use new CALL_EXPR iterator.
4708         (scan_for_static_refs): Create tcc_vl_exp case for CALL_EXPR.
4709
4710         * tree-gimple.c (is_gimple_call_addr): Fix doc.
4711         (recalculate_side_effects): Use TREE_OPERAND_LENGTH instead of
4712         TREE_CODE_LENGTH.  Add tcc_vl_exp case.
4713
4714         * tree-chrec.c (chrec_contains_symbols): Use TREE_OPERAND_LENGTH
4715         and generalize to handle any number of operands.
4716         (chrec_contains_undetermined): Likewise.
4717         (tree_contains_chrecs): Likewise.
4718         (evolution_function_is_invariant_rec_p): Use TREE_OPERAND_LENGTH.
4719
4720         * cgraphunit.c (update_call_expr): Use new CALL_EXPR accessors.
4721
4722         * tree-ssa-ccp.c (ccp_fold): Use new CALL_EXPR accessors.  Use
4723         fold_call_expr instead of fold_builtin.
4724         (ccp_fold_builtin): Likewise.  Update calls into builtins.c to
4725         match declarations there.
4726         (fold_stmt): Use new CALL_EXPR constructor and accessors.  Doc
4727         updates.
4728
4729         * tree-ssa-loop-ivopts.c (expr_invariant_in_loop_p): Use
4730         TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
4731
4732         * ipa-pure-const.c (check_call): Use new CALL_EXPR accessors.
4733         (scan_function): Add case tcc_vl_exp for CALL_EXPR.
4734
4735         * tree-stdarg.c (execute_optimize_stdarg): Use new CALL_EXPR
4736         accessors.
4737
4738         * tree-ssa-math-opts.c (execute_cse_sincos_1): Use build_call_expr.
4739         (execute_cse_sincos): Use new CALL_EXPR accessors.
4740
4741         * tree-ssa-alias.c (find_used_portions): Use new CALL_EXPR iterator.
4742
4743         * gimple-low.c (lower_function_body): Use build_call_expr.
4744         (lower_builtin_setjmp): Likewise.
4745
4746         * expr.c (emit_block_move_via_libcall): Use build_call_expr.
4747         (set_storage_via_libcall): Likewise.
4748         (safe_from_p): Add tcc_vl_exp case.  Use TREE_OPERAND_LENGTH
4749         instead of TREE_CODE_LENGTH.
4750         (expand_expr_real_1): Use new CALL_EXPR accessors.
4751
4752         * tree-browser.c (store_child_info): Use TREE_OPERAND_LENGTH and
4753         generalize to handle any number of operands.
4754         (TB_parent_eq): Likewise.
4755
4756         * predict.c (expr_expected_value): Use new CALL_EXPR accessors.
4757         (strip_builtin_expect): Likewise.
4758
4759         * function.c (gimplify_parameters): Use build_call_expr.
4760
4761         * tree-vectorizer.c (vect_is_simple_reduction): Use TREE_OPERAND_LENGTH
4762         instead of TREE_CODE_LENGTH.
4763
4764         * ipa-type-escape.c (check_call): Use new CALL_EXPR iterators.
4765         (scan_for_refs): Add case tcc_vl_exp for CALL_EXPR.
4766
4767         * tree-data-ref.c (get_references_in_stmt): Use new CALL_EXPR
4768         iterators.
4769
4770         * gimplify.c (build_stack_save_restore): Use build_call_expr.
4771         (gimplify_decl_expr): Likewise.
4772         (gimplify_call_expr): Use fold_call_expr instead of fold_builtin.
4773         Use new CALL_EXPR iterators.
4774         (gimplify_modify_expr_to_memcpy): Use build_call_expr.
4775         (gimplify_modify_expr_to_memset): Likewise.
4776         (gimplify_variable_sized_compare): Likewise.
4777         (gimplify_omp_atomic_fetch_op): Likewise.
4778         (gimplify_omp_atomic_pipeline): Likewise.
4779         (gimplify_omp_atomic_mutex): Likewise.
4780         (gimplify_function_tree): Likewise.
4781
4782         * calls.c (alloca_call_p): Use new CALL_EXPR accessors.
4783         (call_expr_flags): Likewise.
4784         (expand_call): Likewise.
4785
4786         * except.c (expand_builtin_eh_return_data_regno): Pass entire
4787         CALL_EXPR as parameter instead of arglist.  Use new CALL_EXPR
4788         accessors.
4789
4790         * coverage.c (create_coverage): Use build_call_expr.
4791
4792         * tree-ssa-pre.c (expression_node_pool, list_node_pool): Delete.
4793         (temp_call_expr_obstack): New.
4794         (pool_copy_list): Delete.
4795         (temp_copy_call_expr): New.
4796         (phi_translate): Add case tcc_vl_exp for CALL_EXPR.  Use new
4797         CALL_EXPR accessors.  Get rid of special goo for copying argument
4798         lists and use temp_copy_call_expr instead.
4799         (valid_in_sets): Add case tcc_vl_exp for CALL_EXPR.  Use new
4800         CALL_EXPR accessors.
4801         (create_expression_by_pieces): Likewise.  Use build_call_array
4802         to construct the result instead of fold_build3.
4803         (create_value_expr_from): Add tcc_vl_exp.  Delete special goo for
4804         dealing with argument lists.
4805         (init_pre): Remove references to expression_node_pool and
4806         list_node_pool.  Init temp_call_expr_obstack instead.
4807         (fini_pre): Remove references to expression_node_pool and
4808         list_node_pool.
4809
4810         * tree-sra.c (sra_walk_call_expr): Use new CALL_EXPR accessors
4811         and walk arguments explicitly instead of as a list.
4812
4813         * tree-mudflap.c (mf_build_check_statement_for): Use build_call_expr.
4814         (mx_register_decls): Likewise.
4815         (mudflap_register_call): Likewise.
4816         (mudflap_finish_file): Likewise.
4817
4818         * ipa-prop.c (ipa_callsite_compute_count): Use new CALL_EXPR accessors.
4819         (ipa_callsite_compute_param): Likewise.
4820
4821         * tree-vect-patterns.c (vect_recog_pow_pattern): Use new CALL_EXPR
4822         accessors and constructor.
4823
4824         * tree-nested.c (convert_nl_goto_reference): Use new CALL_EXPR
4825         accessors and constructor.
4826         (convert_tramp_reference): Likewise.
4827         (convert_call_expr): Likewise.
4828         (finalize_nesting_tree_1): Likewise.
4829
4830         * tree-ssa.c (tree_ssa_useless_type_conversion): Use new CALL_EXPR
4831         accessors.
4832
4833         * tree-ssa-loop-prefetch.c (issue_prefetch_ref): Use build_call_expr.
4834
4835         * tree-inline.c (initialize_inlined_parameters): Pass entire
4836         CALL_EXPR as parameter instead of arglist.  Use new CALL_EXPR
4837         accessors.
4838         (estimate_num_insns_1): Use new CALL_EXPR accessors.
4839         (expand_call_inline): Tidy up call to initialize_inlined_parameters.
4840
4841         * tree-vect-transform.c (vect_create_epilog_for_reduction):  Use
4842         TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
4843         (vectorizable_reduction): Likewise.
4844         (vectorizable_call): Use new CALL_EXPR iterators.
4845         (vectorizable_conversion): Use build_call_expr.
4846         (vectorizable_operation): Use TREE_OPERAND_LENGTH.
4847         (vect_gen_widened_results_half): Use build_call_expr.
4848         (vect_setup_realignment): Likewise.
4849         (vectorizable_live_operation): Use TREE_OPERAND_LENGTH.
4850
4851         * tree-object-size.c (alloc_object_size): Use new CALL_EXPR accessors.
4852         (pass_through_call): Likewise.
4853         (compute_object_sizes): Likewise.  Use fold_call_expr instead of
4854         fold_builtin.
4855
4856         * tree-profile.c (tree_gen_interval_profiler): Use build_call_expr.
4857         (tree_gen_pow2_profiler): Likewise.
4858         (tree_gen_one_value_profiler): Likewise.
4859         (tree_gen_ic_func_profiler): Likewise.
4860         (tree_gen_average_profiler): Likewise.
4861         (tree_gen_ior_profiler): Likewise.
4862
4863         * tree-ssa-structalias.c (get_constraint_for): Add case tcc_vl_exp.
4864         (find_func_aliases): Use new CALL_EXPR accessors.  Add case
4865         tcc_vl_exp.  Use TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
4866
4867         * tree-ssa-reassoc.c (get_rank): Use TREE_OPERAND_LENGTH instead
4868         of TREE_CODE_LENGTH.
4869
4870         * stmt.c (warn_if_unused_value): Use TREE_OPERAND_LENGTH instead
4871         of TREE_CODE_LENGTH.
4872
4873         * convert.c (convert_to_real): Use new CALL_EXPR accessors and
4874         constructor.
4875         (convert_to_integer): Likewise.
4876
4877         * tree-ssa-operands.c (get_call_expr_operands): Use new CALL_EXPR
4878         accessors.
4879
4880 2007-02-15  Sandra Loosemore  <sandra@codesourcery.com>
4881             Brooks Moses  <brooks.moses@codesourcery.com>
4882             Lee Millward  <lee.millward@codesourcery.com>
4883
4884         * config/alpha/alpha.c (alpha_expand_builtin): Use new CALL_EXPR
4885         accessors.
4886         * config/frv/frv.c (frv_expand_builtin): Likewise.
4887         * config/s390/s390.c (s390_expand_builtin): Likewise.
4888
4889         * config/sparc/sparc.c (sparc_gimplify_va_arg): Use build_call_expr.
4890         (sparc_expand_builtin): Use new CALL_EXPR accessors.
4891
4892         * config/i386/i386.c (ix86_function_ok_for_sibcall): Likewise.
4893         (ix86_expand_binop_builtin): Pass entire CALL_EXPR as parameter
4894         instead of arglist.  Use new CALL_EXPR accessors on it.  Fix callers.
4895         (ix86_expand_store_builtin): Likewise.
4896         (ix86_expand_unop_builtin): Likewise.
4897         (ix86_expand_unop1_builtin): Likewise.
4898         (ix86_expand_sse_compare): Likewise.
4899         (ix86_expand_sse_comi): Likewise.
4900         (ix86_expand_vec_init_builtin): Likewise.
4901         (ix86_expand_vec_ext_builtin): Likewise.
4902         (ix86_expand_vec_set_builtin): Likewise.
4903         (ix86_expand_builtin): Use new CALL_EXPR accessors.
4904
4905         * config/sh/sh.c (sh_expand_builtin): Use new CALL_EXPR accessors.
4906         * config/c4x/c4x.c (c4x_expand_builtin): Likewise.
4907
4908         * config/iq2000/iq2000.c (expand_one_builtin): Pass entire CALL_EXPR
4909         instead of arglist.  Use new CALL_EXPR accessors.  Fix callers.
4910         (iq2000_expand_builtin): Use new CALL_EXPR accessors.
4911
4912         * config/rs6000/rs6000-c.c (altivec_build_resolved_builtin): Use
4913         build_call_expr.
4914         * config/rs6000/rs6000.c (rs6000_gimplify_va_arg): Likewise.
4915         (rs6000_expand_unop_builtin): Pass entire CALL_EXPR instead of
4916         arglist.  Use new CALL_EXPR accessors.  Fix callers.
4917         (altivec_expand_abs_builtin): Likewise.
4918         (rs6000_expand_binop_builtin): Likewise.
4919         (altivec_expand_predicate_builtin): Likewise.
4920         (altivec_expand_lv_builtin): Likewise.
4921         (spe_expand_stv_builtin): Likewise.
4922         (altivec_expand_stv_builtin): Likewise.
4923         (rs6000_expand_ternop_builtin): Likewise.
4924         (altivec_expand_ld_builtin): Use new CALL_EXPR accessors.
4925         (altivec_expand_st_builtin): Likewise.
4926         (altivec_expand_dst_builtin): Likewise.
4927         (altivec_expand_vec_init_builtin): Pass entire CALL_EXPR instead of
4928         arglist.  Use new CALL_EXPR accessors.  Fix callers.
4929         (altivec_expand_vec_set_builtin): Likewise.
4930         (altivec_expand_vec_ext_builtin): Likewise.
4931         (altivec_expand_builtin): Use new CALL_EXPR accessors.
4932         (spe_expand_builtin): Likewise.
4933         (spe_expand_predicate_builtin): Pass entire CALL_EXPR instead of
4934         arglist.  Use new CALL_EXPR accessors.  Fix callers.
4935         (spe_expand_evsel_builtin): Likewise.
4936         (rs6000_expand_builtin): Use new CALL_EXPR accessors.  VCFUX and
4937         FCFSX cases must construct whole new CALL_EXPR, not just arglist.
4938
4939         * config/arm/arm.c (arm_expand_binop_builtin): Pass entire CALL_EXPR
4940         instead of arglist.  Use new CALL_EXPR accessors.  Fix callers.
4941         (arm_expand_unop_builtin): Likewise.
4942         (arm_expand_builtin): Use new CALL_EXPR accessors.
4943
4944         * config/mips/mips.c (mips_expand_builtin):  Use new CALL_EXPR
4945         accessors.
4946
4947         * config/bfin/bfin.c (bfin_expand_binop_builtin): Pass entire CALL_EXPR
4948         instead of arglist.  Use new CALL_EXPR accessors.  Fix callers.
4949         (bfin_expand_unop_builtin): Likewise.
4950         (bfin_expand_builtin): Use new CALL_EXPR accessors.
4951
4952 2007-02-15  Sandra Loosemore  <sandra@codesourcery.com>
4953             Brooks Moses  <brooks.moses@codesourcery.com>
4954             Lee Millward  <lee.millward@codesourcery.com>
4955
4956         * c-semantics.c (build_stmt): Add internal diagnostic check.
4957
4958         * c-pretty-print.c (pp_c_postfix_expression): Use new CALL_EXPR
4959         accessors.  Print arguments explicitly instead of as a list.
4960
4961         * c-typeck.c (build_function_call): Use new CALL_EXPR constructors.
4962
4963         * c-omp.c (c_finish_omp_barrier): Use build_call_expr.
4964         (c_finish_omp_flish): Likewise.
4965
4966         * c-common.c (verify_tree): Use new CALL_EXPR accessors.  Traverse
4967         arguments explicitly instead of as a list.  Use TREE_OPERAND_LENGTH
4968         instead of TREE_CODE_LENGTH.
4969         (check_function_arguments_recurse): Use new CALL_EXPR accessors.
4970         (c_warn_unused_result): Likewise.
4971
4972 2007-02-15  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
4973
4974         PR c/26494
4975         * doc/invoke.texi (Warning Options): Remove
4976         -Werror-implicit-function-declaration.
4977         (Wimplicit-function-declaration): Update description.
4978         * opts.c (common_handle_option): Move handling of -Werror=* to...
4979         (enable_warning_as_error): ...here.
4980         * opts.h (enable_warning_as_error): Declare.
4981         * c-decl.c (implicit_decl_warning): Unless
4982         -Wno-implicit-function-declaration is given, emit a pedwarn if
4983         -std=c99 or emit a warning if -Wimplicit-function-declaration.
4984         * c.opt (Wimplicit-function-declaration): Replace
4985         mesg_implicit_function_declaration with
4986         warn_implicit_function_declaration.
4987         * c-opts.c (c_common_handle_option):
4988         -Werror-implicit-function-declaration is exactly equal as
4989         -Werror=implicit-function-declaration.
4990         (set_Wimplicit): Replace mesg_implicit_function_declaration with
4991         warn_implicit_function_declaration.
4992         (c_common_post_options): -Wimplict-function-declaration is enabled
4993         by default by -std=c99, otherwise is disabled by default.
4994         * c-objc-common.c (c_objc_common_init): Remove flawed logic.
4995
4996 2007-02-15  Eric Botcazou  <ebotcazou@adacore.com>
4997
4998         * gimplify.c (gimplify_modify_expr): During gimplification, attach a
4999         DECL on the rhs to a DECL on the lhs for debug info purposes if the
5000         former is ignored but not the latter.
5001
5002 2007-02-15  Eric Botcazou  <ebotcazou@adacore.com>
5003
5004         * expr.c (expand_expr_real_1) <normal_inner_ref>: If a temporary
5005         is made and the reference doesn't use the alias set of its type,
5006         do not create the temporary using that type.
5007
5008 2007-02-15  Aldy Hernandez  <aldyh@redhat.com>
5009
5010         * jump.c: Remove prototypes for delete_computation and
5011         delete_prior_computation.
5012
5013 2007-02-15  Paolo Bonzini  <bonzini@gnu.org>
5014
5015         * jump.c (get_label_after): Delete.
5016         (get_label_before, delete_computation, delete_jump,
5017         delete_prior_computation, follow_jumps): Move...
5018         * reorg.c (delete_computation, delete_prior_computation): ... here...
5019         (get_label_before, delete_jump): ... making these static ...
5020         (follow_jumps): ... and simplifying this since it only runs after
5021         reload.
5022         * rtl.h (get_label_after, get_label_before, delete_jump,
5023         follow_jumps): Delete prototypes.
5024
5025 2007-02-15  Paolo Bonzini  <bonzini@gnu.org>
5026
5027         * caller-save.c (save_call_clobbered_regs): Do not process sibcalls.
5028
5029 2007-02-15  Nick Clifton  <nickc@redhat.com>
5030
5031         * varasm.c (default_asm_output_anchor): Prepend * to . symbol in
5032         order to prevent it from being munged by the target.
5033
5034 2007-02-15  Uros Bizjak  <ubizjak@gmail.com>
5035
5036         * config/i386/i386.md: Remove misleading comment.
5037
5038 2007-02-15  Alexandre Oliva  <aoliva@redhat.com>
5039
5040         * config/frv/frv.md (reload_incc, reload_outcc, reload_incc_uns,
5041         reload_outcc_uns, reload_incc_nz, reload_outcc_nz): Remove
5042         invalid patterns.
5043
5044 2007-02-15  Alexandre Oliva  <aoliva@redhat.com>
5045
5046         * tree-sra.c (instantiate_missing_elements): Canonicalize
5047         bit-field types.
5048         (sra_build_assignment): New.
5049         (generate_copy_inout, generate_element_copy,
5050         generate_element_zero, generate_one_element_init): Use it.
5051
5052 2007-02-15  Alexandre Oliva  <aoliva@redhat.com>
5053
5054         * tree-sra.c (instantiate_missing_elements): Canonicalize
5055         bit-field types.
5056         (sra_build_assignment): New.
5057         (generate_copy_inout, generate_element_copy,
5058         generate_element_zero, generate_one_element_init): Use it.
5059
5060 2007-02-15  Alexandre Oliva  <aoliva@redhat.com>
5061
5062         * dwarf2out.c (dwarf2out_finish): Accept namespaces as context of
5063         limbo die nodes.
5064
5065 2007-02-14  Joseph Myers  <joseph@codesourcery.com>
5066
5067         * emit-rtl.c (set_mem_attributes_minus_bitpos): Treat complex
5068         types as aggregates not scalars.
5069         * function.c (assign_stack_temp_for_type): Likewise.
5070
5071 2007-02-14  Roger Sayle  <roger@eyesopen.com>
5072             Zdenek Dvorak  <dvorakz@suse.cz>
5073
5074         * tree-dump.c (dump_switch_p_1): Require exact match of the option
5075         name.
5076
5077 2007-02-14  Zdenek Dvorak  <dvorakz@suse.cz>
5078
5079         * passes.c (next_pass_1): Clear the next field of the copied
5080         pass structure.
5081
5082 2007-02-14  Richard Henderson  <rth@redhat.com>
5083
5084         * tree-sra.c (early_sra): New.
5085         (decl_can_be_decomposed_p): Deny va_list if early_sra.
5086         (tree_sra_early, pass_sra_early): New.
5087         * tree-pass.h (pass_sra_early): Declare.
5088         * passes.c (init_optimization_passes): Use it.
5089
5090 2007-02-14  Richard Guenther  <rguenther@suse.de>
5091
5092         * flags.h (issue_strict_overflow_warning): Convert to a macro.
5093
5094 2007-02-14  Dorit Nuzman  <dorit@il.ibm.com>
5095
5096          PR tree-optimization/30771
5097         * tree-vect-analyze.c (vect_determine_vectorization_factor): Traverse
5098         also phi nodes.
5099         (vect_analyze_operations): Induction phis can now be marked as
5100         used_in_loop.
5101         (vect_mark_stmts_to_be_vectorized): No special treatment for phis.
5102         Update documentation accordingly.
5103
5104 2007-02-14  Nick Clifton  <nickc@redhat.com>
5105
5106         * builtin-types.def (DEF_FUNCTION_TYPE_x): Do not imply that at
5107         most 3 arguments are supported.
5108         (DEF_FUNCTION_TYPE_VAR_5): Fix typo in its description.
5109
5110 2007-02-13  Seongbae Park <seongbae.park@gmail.com>
5111
5112         * bitmap.c (bitmap_and, bitmap_and_compl, bitmap_xor):
5113         Ensure dst->current is valid.
5114
5115 2007-02-13  Paul Brook  <paul@codesourcery.com>
5116
5117         * config.gcc: Add arm*-*-uclinux-*eabi.
5118         * config/arm/uclinux-elf.h (TARGET_OS_CPP_BUILTINS): Define.
5119         (SUBTARGET_EXTRA_LINK_SPEC): Define.
5120         (STARTFILE_SPEC, ENDFILE_SPEC): Remove broken -shared handling.
5121         (LINK_GCC_C_SEQUENCE_SPEC): Undef.
5122         (LINK_SPEC): Define.
5123         (LIB_SPEC): Define.
5124         * config/arm/arm.c (arm_override_options): Use r9 as EABI PIC
5125         register.
5126         * config/arm/uclinux-eabi.h: New file.
5127         * config/arm/linux-eabi.h (WCHAR_TYPE): Remove.
5128         * config/arm/linux-gas.h (WCHAR_TYPE): Use unsigned long on AAPCS
5129         based targets.
5130
5131 2007-02-13  Ian Lance Taylor  <iant@google.com>
5132
5133         * common.opt: Add Wstrict-overflow and Wstrict-overflow=.
5134         * flags.h (warn_strict_overflow): Declare.
5135         (enum warn_strict_overflow_code): Define.
5136         (issue_strict_overflow_warning): New static inline function.
5137         * opts.c (warn_strict_overflow): New variable.
5138         (common_handle_option): Handle OPT_Wstrict_overflow and
5139         OPT_Wstrict_overflow_.
5140         * c-opts.c (c_common_handle_option): Set warn_strict_overflow for
5141         OPT_Wall.
5142         * fold-const.c: Include intl.h.
5143         (fold_deferring_overflow_warnings): New static variable.
5144         (fold_deferred_overflow_warning): New static variable.
5145         (fold_deferred_overflow_code): New static variable.
5146         (fold_defer_overflow_warnings): New function.
5147         (fold_undefer_overflow_warnings): New function.
5148         (fold_undefer_and_ignore_overflow_warnings): New function.
5149         (fold_deferring_overflow_warnings_p): New function.
5150         (fold_overflow_warning): New static function.
5151         (make_range): Add strict_overflow_p parameter.  Change all
5152         callers.
5153         (extract_muldiv, extract_muldiv_1): Likewise.
5154         (fold_unary) [ABS_EXPR]: Check ABS_EXPR before calling
5155         tree_expr_nonnegative_p.
5156         (fold_negate_expr): Call fold_overflow_warning.
5157         (fold_range_test): Likewise.
5158         (fold_comparison): Likewise.
5159         (fold_binary): Likewise.  Call tree_expr_nonnegative_warnv_p
5160         instead of tree_expr_nonnegative_p.
5161         (tree_expr_nonnegative_warnv_p): Rename from
5162         tree_expr_nonnegative_p, add strict_overflow_p parameter.
5163         (tree_expr_nonnegative_p): New function.
5164         (tree_expr_nonzero_warnv_p): Rename from tree_expr_nonzero_p, add
5165         strict_overflow_p parameter.
5166         (tree_expr_nonzero_p): New function.
5167         * passes.c (verify_interpass_invariants): New static function.
5168         (execute_one_pass): Call it.
5169         * tree-ssa-loop-niter.c (expand_simple_operations): Ignore fold
5170         warnings.
5171         (number_of_iterations_exit, loop_niter_by_eval): Likewise.
5172         (estimate_numbers_of_iterations): Likewise.
5173         (scev_probably_wraps_p): Likewise.
5174         * tree-ssa-ccp.c: Include "toplev.h".
5175         (evaluate_stmt): Defer fold overflow warnings until we know we are
5176         going to optimize.
5177         (struct fold_stmt_r_data): Add stmt field.
5178         (fold_stmt_r): Defer fold overflow warnings until we know we
5179         optimized.
5180         (fold_stmt): Initialize stmt field of fold_stmt_r_data.
5181         (fold_stmt_inplace): Likewise.
5182         * tree-cfgcleanup.c: Include "toplev.h" rather than "errors.h".
5183         (cleanup_control_expr_graph): Defer fold overflow warnings until
5184         we know we are going to optimize.
5185         * tree-cfg.c (fold_cond_expr_cond): Likewise.
5186         * tree-ssa-threadedge.c (simplify_control_stmt_condition):
5187         Likewise.
5188         * tree-vrp.c (vrp_expr_computes_nonnegative): Call
5189         tree_expr_nonnegative_warnv_p instead of tree_expr_nonnegative_p.
5190         * tree-ssa-loop-manip.c (create_iv): Likewise.
5191         * c-typeck.c (build_conditional_expr): Likewise.
5192         (build_binary_op): Likewise.
5193         * tree-vrp.c (vrp_expr_computes_nonzero): Call
5194         tree_expr_nonzero_warnv_p instead of tree_expr_nonzero_p.
5195         (extract_range_from_unary_expr): Likewise.
5196         * simplify-rtx.c (simplify_const_relational_operation): Warn when
5197         assuming that signed overflow does not occur.
5198         * c-common.c (pointer_int_sum): Ignore fold overflow warnings.
5199         * tree.h (tree_expr_nonnegative_warnv_p): Declare.
5200         (fold_defer_overflow_warnings): Declare.
5201         (fold_undefer_overflow_warnings): Declare.
5202         (fold_undefer_and_ignore_overflow_warnings): Declare.
5203         (fold_deferring_overflow_warnings_p): Declare.
5204         (tree_expr_nonzero_warnv_p): Declare.
5205         * doc/invoke.texi (Option Summary): Add -Wstrict-overflow to list
5206         of warning options.
5207         (Warning Options): Document -Wstrict-overflow.
5208         * Makefile.in (tree-ssa-threadedge.o): Depend on toplev.h.
5209         (tree-ssa-ccp.o): Likewise.
5210         (tree-cfgcleanup.o): Change errors.h dependency to toplev.h.
5211         (fold-const.o): Depend on intl.h.
5212
5213 2007-02-13  Ian Lance Taylor  <iant@google.com>
5214
5215         PR middle-end/30751
5216         * lower-subreg.c (resolve_simple_move): Decompose subregs in
5217         addresses.
5218
5219 2007-02-13  Stuart Hastings  <stuart@apple.com>
5220
5221         * gcc/config/i386/i386.md (fixuns_truncdfhi2): Require SSE2.
5222
5223 2007-02-13  Richard Henderson  <rth@redhat.com>
5224
5225         * config/alpha/alpha.c (alpha_stdarg_optimize_hook): Strip
5226         handled_component_p before looking for the indirect_ref.
5227
5228 2007-02-13  Richard Henderson  <rth@redhat.com>
5229
5230         * config/i386/i386.md (bswapsi_1): Rename from bswapsi2,
5231         remove flags clobber.
5232         (bswapsi2): New expander, emit code for !TARGET_BSWAP.
5233         (bswaphi_lowpart): New.
5234         (bswapdi2): Rename from bswapdi2_rex, remove flags clobber,
5235         remove TARGET_BSWAP test.  Delete expander of the same name.
5236
5237         * optabs.c (widen_bswap, expand_doubleword_bswap): New.
5238         (expand_unop): Use them.
5239
5240 2007-02-13  Uros Bizjak  <ubizjak@gmail.com>
5241
5242         * config/i386/i386.md (cmpdi_ccno_1_rex64, *cmpsi_ccno_1,
5243         *cmphi_ccno_1, *cmpqi_ccno_1, *movsi_xor, *movstricthi_xor,
5244         *movstrictqi_xor, *movdi_xor_rex64, *ashldi3_1_rex64,
5245         *ashldi3_cmp_rex64, *ashldi3_cconly_rex64, ashlsi3, *ashlsi3_1_zext,
5246         *ashlsi3_cmp, *ashlsi3_cconly, *ashlsi3_cmp_zext, *ashlhi3_1_lea,
5247         *ashlhi3_1, *ashlhi3_cmp, *ashlhi3_cconly, *ashlqi3_1_lea,
5248         *ashlqi3_1, *ashlqi3_cmp, *ashlqi3_cconly): Remove equivalent
5249         assembler dialect choice from asm templates.
5250
5251 2007-02-12  Richard Henderson  <rth@redhat.com>
5252
5253         * config/i386/i386.md (fixuns_trunc<SSEMODEF>si_1): New insn.
5254         (fixuns_trunc<SSEMODEF>si2): Use it.
5255         * config/i386/sse.md (vec_setv4sf_0): Export.
5256         * config/i386/i386.c (ix86_build_const_vector): Export.
5257         (ix86_split_convert_uns_si_sse): Rename from
5258         ix86_expand_convert_uns_si_sse and rewrite as a splitter.
5259         * config/i386/i386-protos.h: Update.
5260
5261 2007-02-13  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
5262
5263         PR c/29521
5264         * c-typeck.c (c_finish_return): Improve warning message.
5265
5266 2007-02-12  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
5267
5268         * alias.c (find_symbolic_term): Delete unused function.
5269
5270 2007-02-12  Uros Bizjak  <ubizjak@gmail.com>
5271
5272         * config/i386/i386.md (paritydi2, paritysi2): New expanders.
5273         (paritydi2_cmp, paritydi2_cmp): New insn and split patterns.
5274         (*parityhi2_cmp, *parityqi2_cmp): New insn patterns.
5275
5276 2007-02-12  Eric Botcazou  <ebotcazou@adacore.com>
5277
5278         * tree.h (DECL_IGNORED_P): Document further effect for FUNCTION_DECL.
5279         * cgraphunit.c (cgraph_expand_function): If DECL_IGNORED_P is set on
5280         the function, temporarily point the debug interface to the null one.
5281
5282 2007-02-12  Eric Botcazou  <ebotcazou@adacore.com>
5283
5284         * dwarf2out.c (round_up_to_align): New static function.
5285         (field_byte_offset): Use it to round the offset.
5286
5287 2007-02-12  Richard Henderson  <rth@redhat.com>
5288
5289         * config/alpha/alpha.md (bswapsi2, bswapdi2): New.
5290         (inswl_const): Export.
5291
5292 2007-02-12  Richard Henderson  <rth@redhat.com>
5293
5294         * calls.c (emit_library_call_value_1): If PROMOTE_MODE modifed the
5295         result mode of the libcall, convert back to outmode.
5296
5297 2007-02-12  Roger Sayle  <roger@eyesopen.com>
5298
5299         * config/i386/i386.md (*bswapdi2_rex): Renamed from bswapdi2.
5300         (bswapdi2): New define_expand to implement 32-bit implementation.
5301
5302 2007-02-12  Nick Clifton  <nickc@redhat.com>
5303
5304         * doc/invoke.texi (Overall Options): Document --help=.
5305         * gcc.c (target_help_flag): Rename to print_subprocess_flag.
5306         (cc1_options): Pass --help= on to cc1.
5307         (display_help): Add description of --help=.
5308         (process_command): Add code to handle --help=.  Allow translated
5309         --help and --target-help switches to be passed on to compiler
5310         sub-process.
5311         (main): Remove unused if statement.
5312         * opts.c (columns): Remove.
5313         (LEFT_COLUMN): Define.
5314         (wrap_help): Add columns argument.
5315         (print_filtered_help): Change parameters to be an include bitmask,
5316         an exclude bitmask, an any bitmask and the column width.  Move the
5317         code to display the params list here.  Add code to display the
5318         status of options rather than their descriptions if the quiet flag
5319         is not active.
5320         (print_specific_help): Change parameters to be an include bitmask,
5321         an exclude bitmask and an any bitmask.  Move code to look up the
5322         column width here.  Decide upon the title for an options listing.
5323         (common_handle_options): Add code to handle --help=.  Adapt code
5324         for --help and --target-help to use the revised form of the
5325         print_specific_help function.
5326         (print_help): Delete.
5327         (print_param_help): Delete.
5328         (print_switch): Delete.
5329         * opts.h (cl_lang_count): Add prototype.
5330         (CL_PARAMS, CL_WARNING, CL_OPTIMIZATION, CL_MIN_OPTION_CLASS,
5331         CL_MAX_OPTION_CLASS): New defines.
5332         * optc-gen.awk: Add construction of cl_lang_count.
5333         * c.opt: Add Warning attribute to warning options and Optimization
5334         attribute to optimization options.
5335         * common.opt: Likewise.
5336         Add --help=.
5337         Add -fhelp and -ftarget-help as aliases for the transformed --help
5338         and --target-help options.
5339         * opt-functions.awk: Add code to handle Warning and Optimization
5340         attributes.
5341
5342 2007-02-12  Richard Henderson  <rth@redhat.com>
5343
5344         * config/alpha/constraints.md: New file.
5345         * config/alpha/alpha.c: Include tm-constrs.h.
5346         (alpha_const_ok_for_letter_p, alpha_const_double_ok_for_letter_p,
5347         alpha_extra_constraint): Remove.
5348         (alpha_emit_conditional_branch): Use satisfies_constraint_*.
5349         * config/alpha/alpha-protos.h: Update.
5350         * config/alpha/alpha.h (REG_CLASS_FROM_LETTER): Remove.
5351         (CONST_OK_FOR_LETTER_P, CONST_DOUBLE_OK_FOR_LETTER_P): Remove.
5352         (EXTRA_CONSTRAINT): Remove.
5353         * config/alpha/alpha.md: Include constraints.md.
5354         (adddi splitter): Use satisfies_constraint_*.
5355         * config/alpha/predicates.md (add_operand): Likewise.
5356         (sext_add_operand, addition_operation): Likewise.
5357
5358 2007-02-12  Dorit Nuzman  <dorit@il.ibm.com>
5359
5360         PR tree-optimization/29145
5361         * tree-data-ref.c (base_addr_differ_p): Make us more conservative
5362         in our handling of restrict qualified pointers.
5363
5364 2007-02-12  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
5365
5366         PR middle-end/7651
5367         * doc/invoke.texi (Wunused-value): Update description.
5368         (Wextra): Delete item.
5369         * opts.c (set_Wextra): Don't use the value of Wextra to set the
5370         value of Wunused-value.
5371         * c-typeck.c (c_process_expr_stmt): Don't check extra_warnings.
5372         (c_finish_stmt_expr): Don't check extra_warnings.
5373         (emit_side_effect_warnings): The caller is responsible to check
5374         warn_unused_value.
5375
5376 2007-02-11  Roger Sayle  <roger@eyesopen.com>
5377             Matt Thomas  <matt@3am-software.com>
5378
5379         * simplify-rtx.c (simplify_relational_operation_1): Correct typo.
5380
5381 2007-02-11  Roger Sayle  <roger@eyesopen.com>
5382
5383         * simplify-rtx.c (simplify_relational_operation_1): Optimize
5384         comparisons of POPCOUNT against zero.
5385         (simplify_const_relational_operation): Likewise.
5386
5387 2007-02-11  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
5388
5389         * doc/invoke.texi (Wextra): Delete outdated paragraph.
5390
5391 2007-02-11  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
5392
5393         * dwarf2out.c (root_type): Delete unused function.
5394
5395 2007-02-11  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
5396
5397         * genattrtab.c (contained_in_p): Delete unused function.
5398         (write_expr_attr_cache): Likewise.
5399
5400 2007-02-11  Jan Hubicka  <jh@suse.cz>
5401
5402         * ipa-inline.c (cgraph_edge_badness): Add "else" missing in the
5403         previous patch.
5404
5405 2007-02-11  Steven Bosscher  <steven@gcc.gnu.org>
5406
5407         * fwprop.c (try_fwprop_subst): Use set_unique_reg_note
5408         to add the REG_EQ* note.
5409         * see.c (see_merge_one_use_extension): Likewise.
5410         * local-alloc.c (update_equiv_regs): Likewise.  Also don't
5411         turn REG_EQUAL notes into REG_EQUIV notes if the target
5412         register may have more than one set.
5413         * function.c (assign_parm_setup_reg): Use set_unique_reg_note.
5414         * gcse.c (try_replace_reg): Likewise.
5415         * alias.c (init_alias_analysis): Use find_reg_equal_equiv_note.
5416         * calls.c (fixup_tail_calls): Likewise.  Abort if there is
5417         more than one REG_EQUIV note.
5418         * reload1.c (gen_reload): Use set_unique_reg_note.
5419
5420 2007-02-11  Uros Bizjak  <ubizjak@gmail.com>
5421
5422         * config/i386/i386.c (TARGET_VECTORIZE_BUILTIN_CONVERSION): Define.
5423         (ix86_builtin_conversion): New function.
5424
5425 2007-02-06  Mark Mitchell  <mark@codesourcery.com>
5426
5427         PR target/29487
5428         * tree.h (DECL_REPLACEABLE_P): New macro.
5429         * except.c (set_nothrow_function_flags): Likewise.
5430
5431 2007-02-11  Tehila Meyzels  <tehila@il.ibm.com>
5432             Ira Rosen  <irar@il.ibm.com>
5433             Dorit Nuzman  <dorit@il.ibm.com>
5434
5435         * doc/tm.texi (TARGET_VECTORIZE_BUILTIN_CONVERSION): New target hook.
5436         * targhooks.c (default_builtin_vectorized_conversion): New.
5437         * targhooks.h (default_builtin_vectorized_function): New declaration.
5438         * target.h (struct vectorize): Add builtin_conversion field.
5439         * tree-vectorizer.h (type_conversion_vec_info_type): New enum
5440         stmt_vec_info_type value.
5441         (vectorizable_conversion): New declaration.
5442         * tree-vect-analyze.c (vect_analyze_operations): Add
5443         vectorizable_conversion call.
5444         * target-def.h (TARGET_VECTORIZE_BUILTIN_CONVERSION): New.
5445         * tree-vect-transform.c (vectorizable_conversion): New function.
5446         (vect_transform_stmt): Add case for type_conversion_vec_info_type.
5447         * tree-vect-generic.c (expand_vector_operations_1): Consider correct
5448         mode.
5449         * config/rs6000/rs6000.c (rs6000_builtin_conversion): New.
5450         (TARGET_VECTORIZE_BUILTIN_CONVERSION): Defined.
5451         (rs6000_expand_builtin): Add handling a case of ALTIVEC_BUILTIN_VCFUX
5452         or ALTIVEC_BUILTIN_VCFSX.
5453
5454 2007-02-10  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
5455
5456         PR target/30634
5457         * pa.md (movdf): For 64-bit target, fail if operand 1 is a non-zero
5458         CONST_DOUBLE and operand 0 is a hard register.
5459         (movdi): For 64-bit target, remove code to force CONST_DOUBLE to
5460         memory.  Fail if operand 1 is a non-zero CONST_INT and operand 0
5461         is a hard floating-point register.
5462
5463 2007-02-10  Richard Henderson  <rth@redhat.com>
5464             Jakub Jelinek  <jakub@redhat.com>
5465             Alexandre Oliva  <aoliva@redhat.com>
5466
5467         * Makefile.in (libgcc-support, libgcc.mvars): Add emutls.c.
5468         * builtin-types.def (BT_WORD): Make unsigned.
5469         (BT_FN_VOID_PTR_WORD_WORD_PTR): New.
5470         * builtins.def (BUILT_IN_EMUTLS_GET_ADDRESS): New.
5471         (BUILT_IN_EMUTLS_REGISTER_COMMON): New.
5472         * c-decl.c (grokdeclarator): Don't error if !have_tls.
5473         * c-parser.c (c_parser_omp_threadprivate): Likewise.
5474         * dwarf2out.c (loc_descriptor_from_tree_1): Don't do anything for
5475         emulated tls.
5476         * expr.c (emutls_var_address): New.
5477         (expand_expr_real_1): Expand emulated tls.
5478         (expand_expr_addr_expr_1): Likewise.
5479         * libgcc-std.ver: Add __emutls_get_address, __emutls_register_common.
5480         * output.h (emutls_finish): Declare.
5481         * toplev.c (compile_file): Call it.
5482         * tree-ssa-address.c (gen_addr_rtx): Check for const-ness of the
5483         address before wrapping in CONST.
5484         * varasm.c (emutls_htab, emutls_object_type): New.
5485         (EMUTLS_VAR_PREFIX, EMUTLS_TMPL_PREFIX): New.
5486         (get_emutls_object_name, get_emutls_object_type): New.
5487         (get_emutls_init_templ_addr, emutls_decl): New.
5488         (emutls_common_1, emutls_finish): New.
5489         (assemble_variable): When emulating tls, swap decls; generate
5490         constructor for the emutls objects.
5491         (do_assemble_alias): When emulating tls, swap decl and target name.
5492         (default_encode_section_info): Don't add SYMBOL_FLAG_TLS_SHIFT
5493         for emulated tls.
5494         * varpool.c (decide_is_variable_needed): Look at force_output.
5495         Recurse for emulated tls.
5496         (cgraph_varpool_remove_unreferenced_decls): Remove checks redundant
5497         with decide_is_variable_needed.
5498         * emutls.c: New file.
5499         * config/sparc/sol2.h (ASM_DECLARE_OBJECT_NAME): Only emit
5500         tls_object for real tls.
5501
5502 2007-02-10  Kaz Kojima  <kkojima@gcc.gnu.org>
5503
5504         PR rtl-optimization/29599
5505         * reload1.c (eliminate_regs_in_insn): Take the destination
5506         mode into account when computing the offset.
5507
5508 2007-02-09  Stuart Hastings  <stuart@apple.com>
5509             Richard Henderson  <rth@redhat.com>
5510
5511         * gcc/config/i386/i386.h (TARGET_KEEPS_VECTOR_ALIGNED_STACK): New.
5512         * gcc/config/i386/darwin.h: (TARGET_KEEPS_VECTOR_ALIGNED_STACK): New.
5513         * gcc/config/i386/i386.md (fixuns_trunc<mode>si2, fixuns_truncsfhi2,
5514         fixuns_truncdfhi2): New.
5515         (fix_truncsfdi_sse): Call ix86_expand_convert_sign_didf_sse.
5516         (floatunsdidf2): Call ix86_expand_convert_uns_didf_sse.
5517         (floatunssisf2): Add call to ix86_expand_convert_uns_sisf_sse.
5518         (floatunssidf2): Allow nonimmediate source.
5519         * gcc/config/i386/sse.md (movdi_to_sse): New.
5520         (vec_concatv2di): Drop '*'.
5521         * gcc/config/i386/i386-protos.h (ix86_expand_convert_uns_si_sse,
5522         ix86_expand_convert_uns_didf_sse, ix86_expand_convert_uns_sidf_sse,
5523         ix86_expand_convert_uns_sisf_sse, ix86_expand_convert_sign_didf_sse):
5524         New.
5525         * gcc/config/i386/i386.c (ix86_expand_convert_uns_si_sse,
5526         ix86_expand_convert_uns_didf_sse, ix86_expand_convert_uns_sidf_sse,
5527         ix86_expand_convert_uns_sisf_sse, ix86_expand_convert_sign_didf_sse,
5528         ix86_build_const_vector, ix86_expand_vector_init_one_nonzero): New.
5529         (ix86_build_signbit_mask): Fix decl of v, refactor to call
5530         ix86_build_const_vector.
5531         (x86_emit_floatuns): Rewrite.
5532
5533 2007-02-10  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
5534
5535         * genautomata.c (longest_path_length): Delete unused function.
5536         (struct state): Delete unused longest_path_length.
5537         (UNDEFINED_LONGEST_PATH_LENGTH): Delete unused macro.
5538         (get_free_state): Delete unused.
5539
5540 2007-02-09  Jan Hubicka  <jh@suse.cz>
5541
5542         * params.def (PARAM_INLINE_UNIT_GROWTH): Set to 30.
5543         * doc/invoke.texi (inline-unit-growth): Update default value.
5544
5545         * Makefile.in (passes.o, ipa-inline.o): Add dependencies.
5546         * cgraphbuild.c (build_cgraph_edges): Compute frequencies.
5547         (rebuild_cgraph_edges): Likewise.
5548         * cgraph.c (cgraph_set_call_stmt): Add new argument frequency.
5549         (dump_cgraph_node): Dump frequencies.
5550         (cgraph_clone_edge): Add frequency scales.
5551         (cgraph_clone_node): Add freuqnecy.
5552         * cgraph.h (cgraph_edge): Add freuqnecy argument.
5553         (CGRAPH_FREQ_BASE, CGRAPH_FREQ_MAX): New constants.
5554         (cgraph_create_edge, cgraph_clone_edge, cgraph_clone_node): Update.
5555         * tree-pass.h (TODO_rebuild_frequencies): New constant.
5556         * cgraphunit.c (verify_cgraph_node): Verify frequencies.
5557         (cgraph_copy_node_for_versioning): Update call of cgraph_clone_edge.
5558         (save_inline_function_body): Likewise.
5559         * ipa-inline.c: inluce rtl.h
5560         (cgraph_clone_inlined_nods): Update call of cgraph_clone_node.
5561         (cgraph_edge_badness): Use frequencies.
5562         (cgraph_decide_recursive_inlining): Update clonning.
5563         (cgraph_decide_inlining_of_small_function): Dump frequency.
5564         * predict.c (estimate_bb_frequencies): Export.
5565         * predict.h (estimate_bb_frequencies): Declare.
5566         * tree-inline.c (copy_bb): Watch overflows.
5567         (expand_call_inline): Update call of cgraph_create_edge.
5568         (optimize_inline_calls): Use TODO flags to update frequnecies.
5569         * passes.h: Include predict.h
5570         (init_optimization_passes): Move profile ahead.
5571         (execute_function_todo): Handle TODO_rebuild_frequencies.
5572
5573 2007-02-09  Roger Sayle  <roger@eyesopen.com>
5574
5575         * config/alpha/alpha.c (emit_insxl): Force the first operand of
5576         the insbl or inswl pattern into a register.
5577
5578 2007-02-09  Roger Sayle  <roger@eyesopen.com>
5579
5580         * config/ia64/ia64.md (bswapdi2): New define_insn.
5581
5582 2007-02-09  Richard Henderson  <rth@redhat.com>
5583
5584         * config/i386/constraints.md (Ym): New constraint.
5585         * config/i386/i386.md (movsi_1): Change Y2 to Yi constraints.
5586         (movdi_1_rex64): Split sse and xmm general register moves from
5587         memory move alternatives.  Use conditional register constraints.
5588         (movsf_1, movdf_integer): Likewise.
5589         (zero_extendsidi2_32, zero_extendsidi2_rex64): Likewise.
5590         (movdf_integer_rex64): New.
5591         (pushsf_rex64): Fix output constraints.
5592         * config/i386/sse.md (sse2_loadld): Split rm alternative, use Yi.
5593         (sse2_stored): Likewise.
5594         (sse2_storeq_rex64): New.
5595         * config/i386/i386.c (x86_inter_unit_moves): Enable for not
5596         amd and not generic.
5597         (ix86_secondary_memory_needed): Don't bypass TARGET_INTER_UNIT_MOVES
5598         for optimize_size.  Remove SF/DFmode hack.
5599
5600 2007-02-09  Dwarakanath Rajagopal  <dwarak.rajagopal@amd.com>
5601
5602         * config/i386/driver-i386.c: Turn on -mtune=native for AMDFAM10.
5603         (bit_SSE4a): New.
5604
5605 2007-02-09  Nathan Sidwell  <nathan@codesourcery.com>
5606             Richard Sandiford  <richard@codesourcery.com>
5607
5608         * config.gcc (m68010-*-netbsdelf*, m68k*-*-netbsdelf*)
5609         (m68k*-*-openbsd*, m68k-*-linux*): Set default_cf_cpu.
5610         (m68k-*-aout*, m68k-*-coff*, m68k-*-uclinux*, m68k-*-rtems*): Add
5611         m68k/t-mlib to tmake_file.
5612         (m68020-*-elf*, m68k-*-elf*): Likewise.  Add t-m68kbare as well.
5613         (m68k*-*-*): Use --with-arch to pick a default for --with-cpu.
5614         (m680[012]0-*-*, m68k*-*-*): Add support for --with-arch.
5615         Allow it to be cf or m68k.  Set m68k_arch_family.  If that
5616         variable is not empty, add t-$m68k_arch_family to tmake_file.
5617         Add t-mlibs to tmake_file.
5618         * doc/install.texi: Document --with-arch=m68k and --with-arch=cf.
5619         * config/m68k/t-cf: New file.
5620         * config/m68k/t-m68k: Likewise.
5621         * config/m68k/t-mlibs: Likewise.
5622         * config/m68k/t-m68kbare (MULTILIB_OPTIONS, MULTILIB_DIRNAMES)
5623         (MULTILIB_MATCHES, MULTILIB_EXCEPTIONS): Delete.
5624         (M68K_MLIB_DIRNAMES, M68K_MLIB_OPTIONS): Define.
5625         * config/m68k/t-m68kelf (MULTILIB_OPTIONS, MULTILIB_DIRNAMES)
5626         (MULTILIB_MATCHES, MULTILIB_EXCEPTIONS, LIBGCC, INSTALL_LIBGCC):
5627         Delete.
5628         * config/m68k/t-openbsd (MULTILIB_OPTIONS, LIBGCC): Delete.
5629         (INSTALL_LIBGCC): Delete.
5630         (M68K_MLIB_DIRNAMES, M68K_MLIB_OPTIONS): Define.
5631         * config/m68k/t-rtems (MULTILIB_OPTIONS, MULTILIB_DIRNAMES)
5632         (MULTILIB_MATCHES, MULTILIB_EXCEPTIONS): Delete.
5633         (M68K_MLIB_CPU): Define.
5634         * config/m68k/t-uclinux (MULTILIB_OPTIONS, MULTILIB_DIRNAMES)
5635         (MULTILIB_MATCHES, MULTILIB_EXCEPTIONS): Delete.
5636         (M68K_MLIB_CPU, M68K_MLIB_OPTIONS, M68K_MLIB_DIRNAMES): Define.
5637
5638 2007-02-09  Zdenek Dvorak  <dvorakz@suse.cz>
5639             Richard Guenther  <rguenther@suse.de>
5640
5641         PR middle-end/23361
5642         * fold-const.c (fold_comparison): Handle obfuscated comparisons
5643         against INT_MIN/INT_MAX.
5644         * tree-ssa-loop-ivcanon.c (remove_empty_loop): Print to dump
5645         file if a loop is removed.
5646
5647 2007-02-09  Joseph Myers  <joseph@codesourcery.com>
5648
5649         * calls.c (store_one_arg): Pass correct alignment to
5650         emit_push_insn for non-BLKmode values.
5651         * expr.c (emit_push_insn): If STRICT_ALIGNMENT, copy to an
5652         unaligned stack slot via a suitably aligned slot.
5653
5654 2007-02-08  DJ Delorie  <dj@redhat.com>
5655
5656         * config/m32c/m32c.c (m32c_unpend_compare): Add default to silence
5657         warnings.
5658         (legal_subregs): Use unsigned char, make const.
5659         (m32c_illegal_subreg_p): Use ARRAY_SIZE.  Delete unused variables.
5660
5661 2007-02-08  Paul Brook  <paul@codesourcery.com>
5662
5663         * config/arm/lib1funcs.asm (RETLDM): Pop directly into PC when no
5664         special interworking needed.
5665
5666 2007-02-08  Harsha Jagasia  <harsha.jagasia@amd.com>
5667
5668         * config/i386/xmmintrin.h: Make inclusion of emmintrin.h
5669         conditional to __SSE2__.
5670         (Entries below should have been added to first ChangeLog
5671         entry for amdfam10 dated 2007-02-05)
5672         * config/i386/emmintrin.h: Generate #error if __SSE2__ is not
5673         defined.
5674         * config/i386/pmmintrin.h: Generate #error if __SSE3__ is not
5675         defined.
5676         * config/i386/tmmintrin.h: Generate #error if __SSSE3__ is not
5677         defined.
5678
5679 2007-02-08  DJ Delorie  <dj@redhat.com>
5680
5681         * config/m32c/m32c-protos.h (m32c_illegal_subreg_p): New.
5682         * config/m32c/m32c.c (legal_subregs): New.
5683         (m32c_illegal_subreg_p): New.
5684         * config/m32c/predicates.md (m32c_any_operand): Use it to reject
5685         unsupported subregs of hard regs.
5686
5687 2007-02-08  Jan Hubicka  <jh@suse.cz>
5688
5689         * tree-cfg.c (bsi_replace): Shortcut when replacing the statement with
5690         the same one; always update histograms.
5691
5692 2007-02-08  Diego Novillo  <dnovillo@redhat.com>
5693
5694         * passes.c (init_optimization_passes): Tidy comment.
5695
5696 2007-02-08  Roger Sayle  <roger@eyesopen.com>
5697
5698         * simplify-rtx.c (simplify_unary_operation_1) <POPCOUNT>: We can
5699         strip zero_extend, bswap and rotates from POCOUNT's argument.
5700         <PARITY>: Likewise, we can strip not, bswap, sign_extend,
5701         zero_extend and rotates from PARITY's argument.
5702         <BSWAP>: A byte-swap followed by a byte-swap is an identity.
5703         (simplify_const_unary_operation) <BSWAP>: Evaluate the byte-swap
5704         of an integer constant at compile-time.
5705
5706 2007-02-08  Diego Novillo  <dnovillo@redhat.com>
5707
5708         PR 30562
5709         * tree-flow.h (struct var_ann_d): Remove field 'is_used'.
5710         Update all users.
5711         * tree-ssa-alias.c (compute_is_aliased): Remove.  Update all
5712         users.
5713         (init_alias_info):
5714         * tree-ssa-live.c (remove_unused_locals): Do not remove
5715         TREE_ADDRESSABLE variables.
5716         * tree-ssa-structalias.c (compute_points_to_sets): Tidy.
5717         * tree-ssa-operands.c (add_virtual_operand): Remove argument
5718         FOR_CLOBBER.  Update all users.
5719         If VAR has an associated alias set, add a virtual operand for
5720         it if no alias is found to conflict with the memory reference.
5721
5722 2007-02-07  Jan Hubicka  <jh@suse.cz>
5723             Robert Kidd <rkidd@crhc.uiuc.edu>
5724
5725         * value-prof.c (visit_hist, free_hist): Return 1 instead of 0.
5726
5727 2007-02-07  Ian Lance Taylor  <iant@google.com>
5728
5729         * lower-subreg.c (simple_move): Reject PARTIAL_INT modes.
5730
5731 2007-02-07  Roger Sayle  <roger@eyesopen.com>
5732
5733         * config/rs6000/rs6000.md (ctz<mode>2, ffs<mode>2, popcount<mode>2,
5734         parity<mode>2, smulsi3_highpart, abstf2_internal, allocate_stack,
5735         tablejumpdi, movsi_to_cr_one): Remove constraints from
5736         define_expand's match_operands.
5737
5738 2007-02-07  Roger Sayle  <roger@eyesopen.com>
5739
5740         * global.c (compute_regsets): Move declatation of "i" inside of
5741         #ifdef ELIMINABLE_REGS to avoid unused variable bootstrap failure.
5742
5743 2007-02-07  Jakub Jelinek  <jakub@redhat.com>
5744
5745         PR c++/30703
5746         * gimplify.c (gimplify_scan_omp_clauses): Remove special casing
5747         of INDIRECT_REF <RESULT_DECL>.
5748
5749         * config/i386/i386.c (override_options): Set PTA_SSSE3 for core2.
5750
5751 2007-02-06  J"orn Rennecke  <joern.rennecke@arc.com>
5752             Kaz Kojima  <kkojima@gcc.gnu.org>
5753
5754         PR target/29746
5755         * config/sh/sh.c (expand_cbranchdi4): Use scratch register
5756         properly.
5757         (sh_initialize_trampoline): Add parentheses to avoid a warning.
5758
5759 2007-02-06  Zdenek Dvorak <dvorakz@suse.cz>
5760
5761         * doc/loop.texi: Document possibility not to perform disambiguation
5762         of loops with multiple latches.
5763         * cfgloopmanip.c (alp_enum_p): Removed.
5764         (add_loop): Handle subloops.  Use get_loop_body_with_size.
5765         (create_preheader): Do not allow ENTRY_BLOCK_PTR to be preheader.
5766         * cfghooks.c (redirect_edge_and_branch_force): Set dominator for
5767         the new forwarder block.
5768         (make_forwarder_block): Only call new_bb_cbk if it is not NULL.
5769         Handle the case latch is NULL.
5770         * tree-ssa-dom.c (tree_ssa_dominator_optimize): Avoid cfg modifications
5771         when marking loop exits.
5772         * ifcvt.c (if_convert): Ditto.  Mark loop exits even if cfg cannot
5773         be modified.
5774         * loop-init.c (loop_optimizer_init): Do not modify cfg.  Call
5775         disambiguate_loops_with_multiple_latches.
5776         * tree-cfgcleanup.c (cleanup_tree_cfg_loop): Calculate dominators
5777         before fix_loop_structure.
5778         * cfgloop.c: Include pointer-set.h and output.h.
5779         (canonicalize_loop_headers, HEADER_BLOCK, LATCH_EDGE,
5780         update_latch_info, mfb_keep_just, mfb_keep_nonlatch): Removed.
5781         (get_loop_latch_edges, find_subloop_latch_edge_by_profile,
5782         find_subloop_latch_edge_by_ivs, find_subloop_latch_edge,
5783         mfb_redirect_edges_in_set, form_subloop, merge_latch_edges,
5784         disambiguate_multiple_latches, get_loop_body_with_size,
5785         disambiguate_loops_with_multiple_latches): New functions.
5786         (flow_loop_dump): Dump multiple latch edges.
5787         (flow_loop_nodes_find): Handle loops with multiple latches.
5788         (flow_loops_find): Ditto. Do not call canonicalize_loop_headers.
5789         (glb_enum_p): Modified.
5790         (get_loop_body): Use get_loop_body_with_size.
5791         * cfgloop.h (LOOPS_HAVE_RECORDED_EXITS): New flag.
5792         (AVOID_CFG_MODIFICATIONS): New constant.
5793         (disambiguate_loops_with_multiple_latches, add_loop,
5794         get_loop_body_with_size): Declare.
5795         * Makefile.in (cfgloop.o): Add pointer-set.h and output.h.
5796
5797 2007-02-06  Seongbae Park <seongbae.park@gmail.com>
5798
5799         PR inline-asm/28686
5800         * global.c (compute_regsets): New function.
5801         (global_alloc): Refactored ELIMINABLE_REGSET
5802         and NO_GLOBAL_ALLOC_REGS computation out.
5803         (rest_of_handle_global_alloc): Call compute_regsets()
5804         for non-optimizing case.
5805
5806 2007-02-06  Richard Henderson  <rth@redhat.com>
5807
5808         * config/i386/constraints.md (Y2): Rename from Y.
5809         (Yi): New constraint.
5810         * config/i386/i386.md (movsi_1, movdi_2, pushdf_nointeger,
5811         pushdf_integer, movdf_nointeger, movdf_integer, zero_extendsidi2_32,
5812         zero_extendsidi2_rex64, truncxfdf2_mixed): Change Y constraints to Y2.
5813         (extendsfdf2_mixed, extendsfdf2_sse, truncdfsf_fast_mixed,
5814         truncdfsf_fast_sse, truncdfsf_mixed, fix_truncdfdi_sse,
5815         fix_truncdfsi_sse, floatsidf2_mixed, floatsidf2_sse,
5816         floatdidf2_mixed, floatdidf2_sse, absnegdf2_mixed,
5817         absnegdf2_sse, sse_setccdf, fop_df_comm_mixed, fop_df_comm_sse,
5818         fop_df_1_mixed, fop_df_1_sse): Change Y constraints to x.
5819         * config/i386/mmx.md (mov<MMXMODEI>_internal_rex64,
5820         mov<MMXMODEI>_internal, movv2sf_internal_rex64, movv2sf_internal,
5821         vec_extractv2si_1): Change Y constraints to Y2.
5822         * config/i386/sse.md (vec_setv4sf_0, vec_concatv2df, vec_dupv4si,
5823         vec_dupv2di, sse2_concatv2si, vec_concatv4si_1, vec_concatv2di):
5824         Change Y constraints to Y2.
5825         (sse2_loadld): Change Y constraints to x.
5826
5827 2007-02-06  Roger Sayle  <roger@eyesopen.com>
5828
5829         * config/rs6000/rs6000.md (popcount<mode>2): Rewrite.
5830         (parity<mode>2): New define_expand using rs6000_emit_parity.
5831         * config/rs6000/rs6000.c (rs6000_emit_popcount,
5832         rs6000_emit_parity): New functions.
5833         * config/rs6000/rs6000-protos.h (rs6000_emit_popcount,
5834         rs6000_emit_parity): Prototype here.
5835
5836 2007-02-06  Ian Lance Taylor  <iant@google.com>
5837
5838         * lower-subreg.c (simple_move_operand): Reject CONST.
5839         (resolve_clobber): Call validate_change rather than directly
5840         assigning to XEXP (pat, 0).
5841
5842 2006-02-06  Paolo Bonzini  <bonzini@gnu.org>
5843
5844         * Makefile.in (tree-ssa-loop-ivopts.o): Add pointer-set.h dependency.
5845         (tree-ssa-reassoc.o): Add pointer-set.h dependency.
5846         (tree-cfg.o): Remove hashtab.h dependency.
5847
5848         * tree-ssa-loop-ivopts.c: Include pointer-set.h.
5849         (struct ivopts_data): Change niters to pointer_map_t.
5850         (struct nfe_cache_elt, nfe_hash, nfe_eq): Delete.
5851         (niter_for_exit): Create pointer_map on demand.  Change for
5852         pointer_map API.
5853         (tree_ssa_iv_optimize_init): Initialize data->niters to NULL.
5854         (free_loop_data): Destroy data->niters if created and reset field.
5855         (tree_ssa_iv_optimize_finalize): Don't delete data->niters here.
5856         (tree_ssa_iv_optimize_loop): Check for presence of stale data.
5857
5858         * tree-ssa-reassoc.c: Include pointer-set.h.
5859         (bb_rank): Change to long *.
5860         (operand_rank): Change to pointer_map_t.
5861         (find_operand_rank): Return long, -1 if not found.  Declare as inline.
5862         (insert_operand_rank): Accept long.
5863         (operand_entry_hash, operand_entry_eq): Remove.
5864         (get_rank): Return long.  Adjust for changes above.
5865         (init_reassoc): Change rank type to long.  Adjust creation of bb_rank
5866         and operand_rank.
5867         (fini_reassoc): Delete operand_rank with pointer_map_destroy.
5868
5869         * tree-ssa-structalias.c (vi_for_tree): Change to pointer_map.
5870         (struct tree_vi, tree_vi_t, tree_vi_hash, tree_vi_eq): Delete.
5871         (insert_vi_for_tree): Rewrite for pointer_map API.  Assert argument
5872         is not NULL.
5873         (lookup_vi_for_tree): Rewrite for pointer_map API.  Return varinfo_t
5874         directly since it cannot be NULL.
5875         (get_vi_for_tree): Rewrite for pointer_map API.
5876         (find_what_p_points_to): Adjust for change to lookup_vi_for_tree.
5877         (init_alias_vars): Create vi_for_tree as pointer_map.
5878         (delete_points_to_sets): Delete vi_for_tree using pointer_map_destroy.
5879
5880         * tree-cfg.c: Don't include hashtab.h.
5881         (edge_to_cases): Declare as pointer_map.
5882         (struct edge_to_cases_elt, edge_to_cases_hash, edge_to_cases_eq):
5883         Delete.
5884         (edge_to_cases_cleanup): Rewrite as pointer_map_traverse callback.
5885         (start_recording_case_labels): Create edge_to_cases as pointer_map.
5886         (end_recoding_case_labels): Cleanup edge_to_cases manually before
5887         destroying it.
5888         (record_switch_edge): Delete.
5889         (get_cases_for_edge): Adjust for pointer_map API, inline
5890         record_switch_edge (rewritten for new API), remove goto.
5891
5892 2006-02-06  Paolo Bonzini  <bonzini@gnu.org>
5893
5894         * Makefile.in (tree-nested.o): Add pointer-set.h dependency.
5895         * tree-nested.c: Include pointer-set.h.
5896         (var_map_elt, var_map_eq, var_map_hash): Delete.
5897         (struct nesting_info): Remove GTY marker.  Change the two htab_t's
5898         to pointer_map_t's.
5899         (nesting_info_bitmap_obstack): New.
5900         (lookup_field_for_decl): Adjust for pointer_map API.
5901         (lookup_tramp_for_decl): Adjust for pointer_map API.
5902         (get_nonlocal_debug_decl): Adjust for pointer_map API.
5903         (get_local_debug_decl): Adjust for pointer_map API.
5904         (convert_nl_goto_reference): Adjust for pointer_map API.
5905         (convert_nl_goto_receiver): Adjust for pointer_map API.
5906         (create_nesting_tree): Create outside GGC space.  Create bitmap on
5907         the new obstack.  Create field_map and var_map as pointer_maps.
5908         (free_nesting_tree): Adjust for changes to create_nesting_tree.
5909         (root): Delete.
5910         (lower_nested_functions): Move root here, no need to NULL it.
5911         Initialize and release the obstack.
5912
5913 2007-02-06  Paolo Bonzini  <bonzini@gnu.org>
5914
5915         * tree.c (tree_int_map_hash, tree_int_map_eq, tree_int_map_marked_p):
5916         Remove prototypes and make them non-static.
5917         (struct tree_int_map): Remove.
5918         * tree.h (struct tree_int_map): Move here, turning TO into an
5919         unsigned int.
5920         (tree_int_map_hash, tree_int_map_eq, tree_int_map_marked_p): Declare.
5921
5922         * tree.h (TREE_COMPLEXITY): Remove.
5923         (struct tree_exp): Remove complexity field.
5924         * tree.c (build1_stat): Don't set it.
5925
5926 2007-02-06  Dorit Nuzman  <dorit@il.ibm.com>
5927             Victor Kaplansky  <victork@il.ibm.com>
5928
5929         * tree-vectorizer.c (vect_is_simple_use): Support induction.
5930         (vect_is_simple_reduction): Support reduction with induction as
5931         one of the operands.
5932         (vect_is_simple_iv_evolution): Fix formatting.
5933         * tree-vect-analyze.c (vect_mark_stmts_to_be_vectorized): Fix
5934         formatting.  Don't mark induction phis for vectorization.
5935         (vect_analyze_scalar_cycles): Analyze all inductions, then reductions.
5936         * tree-vect-transform.c (get_initial_def_for_induction): New function.
5937         (vect_get_vec_def_for_operand): Support induction.
5938         (vect_get_vec_def_for_stmt_copy): Fix formatting and add check for
5939         induction case.
5940         (vectorizable_reduction): Support reduction with induction as one of
5941         the operands.
5942         (vectorizable_type_demotion): Use def-type of stmt argument rather
5943         than dummy def-type.
5944
5945         * tree-ssa-loop.c (gate_scev_const_prop): Return the value of
5946         flag_tree_scev_cprop.
5947         * common.opt (tree-scev-cprop): New flag.
5948
5949         * tree-vect-transform.c (vect_create_destination_var): Use 'kind' in
5950         call to vect_get_new_vect_var.
5951
5952 2007-02-06  Ira Rosen  <irar@il.ibm.com>
5953
5954         * tree-vect-patterns.c (vect_recog_widen_mult_pattern): Check that
5955         vectype is not NULL.
5956         (vect_pattern_recog_1): Likewise.
5957
5958 2007-02-05  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
5959
5960         * fold-const.c (negate_expr_p): Handle CONJ_EXPR.
5961         (fold_negate_expr): Likewise.
5962
5963 2007-02-05  Alexandre Oliva  <aoliva@redhat.com>
5964
5965         PR debug/30189
5966         * dwarf2out.c (modified_type_die): Follow DECL_ORIGINAL_TYPE
5967         even if cv-qualification is the same.
5968
5969 2007-02-05  Geoffrey Keating  <geoffk@apple.com>
5970
5971         * config/rs6000/darwin-tramp.asm (__trampoline_setup): Call
5972         __enable_execute_stack on completion.
5973
5974 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
5975
5976         * config/i386/athlon.md (athlon_fldxf_k8, athlon_fld_k8,
5977         athlon_fstxf_k8, athlon_fst_k8, athlon_fist, athlon_fmov,
5978         athlon_fadd_load, athlon_fadd_load_k8, athlon_fadd, athlon_fmul,
5979         athlon_fmul_load, athlon_fmul_load_k8, athlon_fsgn,
5980         athlon_fdiv_load, athlon_fdiv_load_k8, athlon_fdiv_k8,
5981         athlon_fpspc_load, athlon_fpspc, athlon_fcmov_load,
5982         athlon_fcmov_load_k8, athlon_fcmov_k8, athlon_fcomi_load_k8,
5983         athlon_fcomi, athlon_fcom_load_k8, athlon_fcom): Added amdfam10.
5984
5985 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
5986
5987         * config/i386/i386.md (x86_sahf_1, cmpfp_i_mixed, cmpfp_i_sse,
5988         cmpfp_i_i387, cmpfp_iu_mixed, cmpfp_iu_sse, cmpfp_iu_387,
5989         swapsi, swaphi_1, swapqi_1, swapdi_rex64, fix_truncsfdi_sse,
5990         fix_truncdfdi_sse, fix_truncsfsi_sse, fix_truncdfsi_sse,
5991         x86_fldcw_1, floatsisf2_mixed, floatsisf2_sse, floatdisf2_mixed,
5992         floatdisf2_sse, floatsidf2_mixed, floatsidf2_sse,
5993         floatdidf2_mixed, floatdidf2_sse, muldi3_1_rex64, mulsi3_1,
5994         mulsi3_1_zext, mulhi3_1, mulqi3_1, umulqihi3_1, mulqihi3_insn,
5995         umulditi3_insn, umulsidi3_insn, mulditi3_insn, mulsidi3_insn,
5996         umuldi3_highpart_rex64, umulsi3_highpart_insn,
5997         umulsi3_highpart_zext, smuldi3_highpart_rex64,
5998         smulsi3_highpart_insn, smulsi3_highpart_zext, x86_64_shld,
5999         x86_shld_1, x86_64_shrd, sqrtsf2_mixed, sqrtsf2_sse,
6000         sqrtsf2_i387, sqrtdf2_mixed, sqrtdf2_sse, sqrtdf2_i387,
6001         sqrtextendsfdf2_i387, sqrtxf2, sqrtextendsfxf2_i387,
6002         sqrtextenddfxf2_i387): Added amdfam10_decode.
6003
6004         * config/i386/athlon.md (athlon_idirect_amdfam10,
6005         athlon_ivector_amdfam10, athlon_idirect_load_amdfam10,
6006         athlon_ivector_load_amdfam10, athlon_idirect_both_amdfam10,
6007         athlon_ivector_both_amdfam10, athlon_idirect_store_amdfam10,
6008         athlon_ivector_store_amdfam10): New define_insn_reservation.
6009         (athlon_idirect_loadmov, athlon_idirect_movstore): Added
6010         amdfam10.
6011
6012 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
6013
6014         * config/i386/athlon.md (athlon_call_amdfam10,
6015         athlon_pop_amdfam10, athlon_lea_amdfam10): New
6016         define_insn_reservation.
6017         (athlon_branch, athlon_push, athlon_leave_k8, athlon_imul_k8,
6018         athlon_imul_k8_DI, athlon_imul_mem_k8, athlon_imul_mem_k8_DI,
6019         athlon_idiv, athlon_idiv_mem, athlon_str): Added amdfam10.
6020
6021 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
6022
6023         * config/i386/athlon.md (athlon_sseld_amdfam10,
6024         athlon_mmxld_amdfam10, athlon_ssest_amdfam10,
6025         athlon_mmxssest_short_amdfam10): New define_insn_reservation.
6026
6027 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
6028
6029         * config/i386/athlon.md (athlon_sseins_amdfam10): New
6030         define_insn_reservation.
6031         * config/i386/i386.md (sseins): Added sseins to define_attr type
6032         and define_attr unit.
6033         * config/i386/sse.md: Set type attribute to sseins for insertq
6034         and insertqi.
6035
6036 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
6037
6038         * config/i386/athlon.md (sselog_load_amdfam10, sselog_amdfam10,
6039         ssecmpvector_load_amdfam10, ssecmpvector_amdfam10,
6040         ssecomi_load_amdfam10, ssecomi_amdfam10,
6041         sseaddvector_load_amdfam10, sseaddvector_amdfam10): New
6042         define_insn_reservation.
6043         (ssecmp_load_k8, ssecmp, sseadd_load_k8, seadd): Added amdfam10.
6044
6045 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
6046
6047         * config/i386/athlon.md (cvtss2sd_load_amdfam10,
6048         cvtss2sd_amdfam10, cvtps2pd_load_amdfam10, cvtps2pd_amdfam10,
6049         cvtsi2sd_load_amdfam10, cvtsi2ss_load_amdfam10,
6050         cvtsi2sd_amdfam10, cvtsi2ss_amdfam10, cvtsd2ss_load_amdfam10,
6051         cvtsd2ss_amdfam10, cvtpd2ps_load_amdfam10, cvtpd2ps_amdfam10,
6052         cvtsX2si_load_amdfam10, cvtsX2si_amdfam10): New
6053         define_insn_reservation.
6054
6055         * config/i386/sse.md (cvtsi2ss, cvtsi2ssq, cvtss2si,
6056         cvtss2siq, cvttss2si, cvttss2siq, cvtsi2sd, cvtsi2sdq,
6057         cvtsd2si, cvtsd2siq, cvttsd2si, cvttsd2siq,
6058         cvtpd2dq, cvttpd2dq, cvtsd2ss, cvtss2sd,
6059         cvtpd2ps, cvtps2pd): Added amdfam10_decode attribute.
6060
6061 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
6062
6063         * config/i386/athlon.md (athlon_ssedivvector_amdfam10,
6064         athlon_ssedivvector_load_amdfam10, athlon_ssemulvector_amdfam10,
6065         athlon_ssemulvector_load_amdfam10): New define_insn_reservation.
6066         (athlon_ssediv, athlon_ssediv_load_k8, athlon_ssemul,
6067         athlon_ssemul_load_k8): Added amdfam10.
6068
6069 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
6070
6071         * config/i386/i386.h (TARGET_SSE_UNALIGNED_MOVE_OPTIMAL): New macro.
6072         (x86_sse_unaligned_move_optimal): New variable.
6073
6074         * config/i386/i386.c (x86_sse_unaligned_move_optimal): Enable for
6075         m_AMDFAM10.
6076         (ix86_expand_vector_move_misalign): Add code to generate movupd/movups
6077         for unaligned vector SSE double/single precision loads for AMDFAM10.
6078
6079 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
6080
6081         * config/i386/i386.h (TARGET_AMDFAM10): New macro.
6082         (TARGET_CPU_CPP_BUILTINS): Add code for amdfam10.
6083         Define TARGET_CPU_DEFAULT_amdfam10.
6084         (TARGET_CPU_DEFAULT_NAMES): Add amdfam10.
6085         (processor_type): Add PROCESSOR_AMDFAM10.
6086
6087         * config/i386/i386.md: Add amdfam10 as a new cpu attribute to match
6088         processor_type in config/i386/i386.h.
6089         Enable imul peepholes for TARGET_AMDFAM10.
6090
6091         * config.gcc: Add support for --with-cpu option for amdfam10.
6092
6093         * config/i386/i386.c (amdfam10_cost): New variable.
6094         (m_AMDFAM10): New macro.
6095         (m_ATHLON_K8_AMDFAM10): New macro.
6096         (x86_use_leave, x86_push_memory, x86_movx, x86_unroll_strlen,
6097         x86_cmove, x86_3dnow_a, x86_deep_branch, x86_use_simode_fiop,
6098         x86_promote_QImode, x86_integer_DFmode_moves,
6099         x86_partial_reg_dependency, x86_memory_mismatch_stall,
6100         x86_accumulate_outgoing_args, x86_arch_always_fancy_math_387,
6101         x86_sse_partial_reg_dependency, x86_sse_typeless_stores,
6102         x86_use_ffreep, x86_use_incdec, x86_four_jump_limit,
6103         x86_schedule, x86_use_bt, x86_cmpxchg16b, x86_pad_returns):
6104         Enable/disable for amdfam10.
6105         (override_options): Add amdfam10_cost to processor_target_table.
6106         Set up PROCESSOR_AMDFAM10 for amdfam10 entry in
6107         processor_alias_table.
6108         (ix86_issue_rate): Add PROCESSOR_AMDFAM10.
6109         (ix86_adjust_cost): Add code for amdfam10.
6110
6111 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
6112
6113         * config/i386/i386.opt: Add new Advanced Bit Manipulation (-mabm)
6114         instruction set feature flag. Add new (-mpopcnt) flag for popcnt
6115         instruction. Add new SSE4A (-msse4a) instruction set feature flag.
6116         * config/i386/i386.h: Add builtin definition for SSE4A.
6117         * config/i386/i386.md: Add support for ABM instructions
6118         (popcnt and lzcnt).
6119         * config/i386/sse.md: Add support for SSE4A instructions
6120         (movntss, movntsd, extrq, insertq).
6121         * config/i386/i386.c: Add support for ABM and SSE4A builtins.
6122         Add -march=amdfam10 flag.
6123         * config/i386/ammintrin.h: Add support for SSE4A intrinsics.
6124         * doc/invoke.texi: Add documentation on flags for sse4a, abm, popcnt
6125         and amdfam10.
6126         * doc/extend.texi: Add documentation for SSE4A builtins.
6127
6128 2007-02-05  Bob Wilson  <bob.wilson@acm.org>
6129
6130         * config/xtensa/xtensa.c (constantpool_mem_p): Skip over SUBREGs.
6131
6132 2007-02-05  Richard Guenther  <rguenther@suse.de>
6133
6134         * tree-vectorizer.h (vectorizable_function): Add argument type
6135         argument, change return type.
6136         * tree-vect-patterns.c (vect_recog_pow_pattern): Adjust caller.
6137         * tree-vect-transform.c (vectorizable_function): Handle extra
6138         argument, return vectorized function decl.
6139         (build_vectorized_function_call): Remove.
6140         (vectorizable_call): Handle calls with result and argument types
6141         differing.  Handle loop vectorization factor correctly.
6142         * targhooks.c (default_builtin_vectorized_function): Adjust for
6143         extra argument.
6144         * targhooks.h (default_builtin_vectorized_function): Likewise.
6145         * target.h (builtin_vectorized_function): Add argument type
6146         argument.
6147         * config/i386/i386.c (ix86_builtin_vectorized_function): Handle
6148         extra argument, allow vectorizing of lrintf.
6149         * doc/tm.texi (TARGET_VECTORIZE_BUILTIN_VECTORIZED_FUNCTION): Adjust
6150         documentation of target hook.
6151
6152 2007-02-05  Hans-Peter Nilsson  <hp@axis.com>
6153
6154         PR target/30665
6155         * config/cris/cris.md ("*andsi_movu", "*andsi_clear", "*andhi_movu")
6156         ("*andhi_clear", andu (casesi+45)): For size-changed operand where
6157         memory is allowed, require !side_effects_p, not just !MEM_VOLATILE_P.
6158
6159 2007-02-05  Roger Sayle  <roger@eyesopen.com>
6160
6161         * fold-const.c (fold_unary) <REAL_PART>: Test for availability of
6162         BUILT_IN_COS before simplifying REAL_PART(CEXPI)) to COS.
6163         <IMAG_PART>: Likewise, check for availability of BUILT_IN_SIN.
6164         * builtins.c (fold_builtin_sincos): Check for TARGET_C99_FUNCTIONS
6165         before canonicalizing sincos to cexpi.
6166         (fold_builtin_cexp): Likewise, for canonicalizing cexp to cexpi.
6167
6168 2007-02-05  Roger Sayle  <roger@eyesopen.com>
6169
6170         * config/alpha/alpha.c (alpha_add_builtins): New Helper function.
6171         Set TREE_READONLY and TREE_NOTHROW directly, not via attributes.
6172         (alpha_init_builtins): Use alpha_add_builtins to process tables.
6173
6174 2007-02-05  Roger Sayle  <roger@eyesopen.com>
6175
6176         * mips-tfile.c (initialize_init_file): Correct endianness test.
6177
6178 2007-02-05  Kazu Hirata  <kazu@codesourcery.com>
6179
6180         * config/m68k/m68k.md (pushdi-1, pushdi, movsi+1): Don't use
6181         the 'y' constraint.
6182
6183 2007-02-05  Richard Sandiford  <richard@codesourcery.com>
6184
6185         * dwarf2out.c (dwarf2out_frame_debug_expr): Record the register
6186         saves in a PARALLEL before the register assignments.
6187
6188 2007-02-05  Richard Sandiford  <richard@codesourcery.com>
6189
6190         * doc/tm.texi (DWARF_ALT_FRAME_RETURN_COLUMN): Do not require
6191         DWARF_FRAME_RETURN_COLUMN to be a general register.
6192         * dwarf2out.c (init_return_column_size): New function, split from...
6193         (expand_builtin_init_dwarf_reg_sizes): ...here.  Allow both
6194         DWARF_FRAME_RETURN_COLUMN and DWARF_ALT_FRAME_RETURN_COLUMN
6195         to be nongeneral registers.
6196         * config/m68k/m68k.h (DWARF_FRAME_REGNUM): Only map FP and
6197         integer registers.
6198         (DWARF_FRAME_REGISTERS, DWARF_FRAME_RETURN_COLUMN): Define.
6199         (DWARF_ALT_FRAME_RETURN_COLUMN): Define.
6200
6201 2007-02-04  Zdenek Dvorak <dvorakz@suse.cz>
6202
6203         * cfgcleanup.c (try_optimize_cfg): Avoid removing ENTRY_BLOCK_PTR.
6204
6205 2007-02-04  Zdenek Dvorak <dvorakz@suse.cz>
6206
6207         * cfgloopmanip.c (loop_delete_branch_edge): Removed.
6208         (remove_path): Use can_remove_branch_p and remove_branch instead
6209         of loop_delete_branch_edge.
6210         * tree-ssa-loop-manip.c (scale_dominated_blocks_in_loop): New function.
6211         (tree_transform_and_unroll_loop): Remove dead branches immediately.
6212         Update profile using scale_dominated_blocks_in_loop.
6213         * cfghooks.c (can_remove_branch_p, remove_branch): New functions.
6214         * cfghooks.h (struct cfg_hooks): Add can_remove_branch_p.
6215         (can_remove_branch_p, remove_branch): Declare.
6216         * tree-cfg.c (tree_can_remove_branch_p): New function.
6217         (tree_cfg_hooks): Add tree_can_remove_branch_p.
6218         * cfgrtl.c (rtl_can_remove_branch_p): New function.
6219         (rtl_cfg_hooks, cfg_layout_rtl_cfg_hook): Add rtl_can_remove_branch_p.
6220
6221 2007-02-05  Jan Hubicka  <jh@suse.cz>
6222
6223         PR middle-end/30696
6224         * ipa-inline.c (cgraph_clone_inlined_nodes): When there are unanalyzed
6225         nodes in cgraph, don't remove offline copy of the function.
6226
6227 2007-02-04  Jan Hubicka  <jh@suse.cz>
6228
6229         * tree-sra.c (sra_walk_expr): Add linebreaks. BITFIELD_REFs into
6230         vectors might cause maybe_lookup_element_for_expr to be called
6231         on non-sra-candidate.
6232
6233 2007-02-04  Kazu Hirata  <kazu@codesourcery.com>
6234
6235         * config/bfin/bfin-modes.def, config/bfin/bfin.c,
6236         config/bfin/bfin.md, config/bfin/predicates.md: Follow
6237         spelling conventions.
6238
6239 2007-02-04  Richard Guenther  <rguenther@suse.de>
6240
6241         PR middle-end/30636
6242         * fold-const.c (try_move_mult_to_index): Make sure to not
6243         overflow one dimension of a multi-dimensional array access.
6244
6245 2007-02-04  Jan Hubicka  <jh@suse.cz>
6246
6247         * passes.c (init_optimization_passes): Reindent.
6248
6249 2007-02-04  Jan Hubicka  <jh@suse.cz>
6250             Eric Botcazou  <ebotcazou@adacore.com>
6251
6252         * tree-optimize.c (has_abnormal_outgoing_edge_p): Move to...
6253         (execute_fixup_cfg): Break out the abnormal goto code.
6254         * tree-inline.c (has_abnormal_outgoing_edge_p): ...here.
6255         (make_nonlocal_label_edges): Move here from execute_fixup_cfg.
6256         (optimize_inline_calls): Call make_nonlocal_label_edges.
6257
6258 2007-02-04  Jan Hubicka  <jh@suse.cz>
6259
6260         * tree-ssa-copyrename.c (copy_rename_partition_coalesce): Return
6261         true when something was changed.
6262         (rename_ssa_copies): When something was changed, do
6263         TODO_remove_unused_locals.
6264         * tree-ssa-forwprop.c (tree_ssa_forward_propagate_single_use_value):
6265         add TODO_remove_unused_locals when instruction was removed.
6266
6267 2007-02-04  Jan Hubicka  <jh@suse.cz>
6268
6269         * ipa-inline.c (try_inline): Improve debug output; work on already
6270         inline edges too.
6271         (cgraph_decide_inlining_incrementally): Indent; improve debug output;
6272         call try_inline for already inlined edges too when flattening;
6273         inline also functions that make callee growth but overall unit size
6274         reduce.
6275
6276 2007-02-04  Kazu Hirata  <kazu@codesourcery.com>
6277
6278         * config/m32c/bitops.md, config/m32c/jump.md,
6279         config/m32c/m32c.c, config/m32c/m32c.h, config/m32r/m32r.c,
6280         config/m32r/m32r.h, config/m32r/m32r.md,
6281         config/m32r/predicates.md, config/m68hc11/larith.asm,
6282         config/m68hc11/m68hc11.c, config/m68hc11/m68hc11.h,
6283         config/m68k/m68k.h, config/mcore/mcore.md, config/mips/4k.md,
6284         config/mips/mips-protos.h, config/mips/mips.c,
6285         config/mips/mips.h, config/mips/mips.md, config/mips/mips16.S,
6286         config/mn10300/mn10300.h, config/mn10300/predicates.md,
6287         config/mt/mt.c, config/mt/mt.h, config/mt/mt.md: Follow
6288         spelling conventions.
6289
6290         * config/v850/v850.c, config/v850/v850.h, config/v850/v850.md:
6291         Follow spelling conventions.
6292
6293 2007-02-03  Douglas Gregor  <doug.gregor@gmail.com>
6294
6295         * c-opts.c (c_common_post_options): If C++0x mode is enabled, don't
6296         warn about C++0x compatibility.
6297
6298 2007-02-04  Kazu Hirata  <kazu@codesourcery.com>
6299
6300         * config/h8300/h8300.c, config/h8300/h8300.h,
6301         config/h8300/h8300.md: Follow spelling conventions.
6302
6303 2007-02-03  Uros Bizjak  <ubizjak@gmail.com>
6304
6305         PR middle-end/30667
6306         * combine.c (try_combine): Do not substitute source operand
6307         with constants wider than 2 * HOST_BITS_PER_WIDE_INT.
6308
6309 2007-02-03  Jan Hubicka  <jh@suse.cz>
6310
6311         PR gcov-profile/30650
6312         * value-prof.c (stringop_block_profile): Fix handling of size counter;
6313         do not divide by zero for never executed counters.
6314         (tree_find_values_to_profile): Fix counters.
6315         * gcov-ui.h (GCOV_COUNTER_AVERAGE, GCOV_COUNTER_IOR): Fix comments.
6316
6317 2007-02-03  Ian Lance Taylor  <iant@google.com>
6318
6319         * lower-subreg.c (simple_move_operand): New static function,
6320         broken out of simple_move.  Reject LABEL_REF, SYMBOL_REF, and HIGH
6321         operands.
6322         (simple_move): Call simple_move_operand.
6323         (find_decomposable_subregs): Add special handling of MEMs.
6324         (can_decompose_p): Rename from cannot_decompose_p.  Reverse
6325         meaning of return value.  If we see a hard register, test whether
6326         it can store a word_mode value.  Change all callers.
6327
6328 2007-02-03  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
6329
6330         * pa.md (addvdi3, addvsi3, subvdi3, subvsi3, negvdi2, negvsi2): New
6331         ftrapv insns and expanders.
6332         (subdi3): Change define_expand operand 1 to arith11_operand, and
6333         operand 2 to reg_or_0_operand.  Change constraints of 64-bit insn
6334         pattern to handle reg_or_0 operands.  Revise 32-bit insn pattern to
6335         handle 11-bit constants and reg_or_0 operands in operands 1 and 2,
6336         respectively.
6337
6338         PR middle-end/30174
6339         * varasm.c (notice_global_symbol): Treat global objects as weak when
6340         flag_shlib is true.
6341
6342 2007-02-03  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
6343
6344         * emit-rtl.c (dconstpi): Delete.
6345         (dconstsqrt2): New.
6346         (init_emit_once): Delete dconstpi and init dconstsqrt2.
6347         * real.h (dconstpi): Delete.
6348         (dconstsqrt2): New.
6349         * builtins.c (fold_builtin_cabs): Use dconstsqrt2.
6350         (fold_builtin_hypot): Likewise.
6351
6352 2007-02-03  Tom Tromey  <tromey@redhat.com>
6353
6354         PR driver/30246
6355         * gcc.c (cpp_unique_options): Any of -ggdb3, -gstabs3,
6356         -gcoff3, -gxcoff3, -gvms3 implies -dD.
6357
6358 2007-02-03  Kazu Hirata  <kazu@codesourcery.com>
6359
6360         * c-decl.c, config/avr/avr.c, config/avr/avr.h,
6361         config/m68k/m68k.c, config/m68k/netbsd-elf.h,
6362         config/mn10300/mn10300.c, config/pdp11/pdp11.h,
6363         config/rs6000/cell.md, config/rs6000/darwin.h,
6364         config/sh/sh.md, config/sh/sh4-300.md, config/spu/spu.c,
6365         config/spu/spu.md, cselib.c, expr.c, haifa-sched.c, hwint.h,
6366         jump.c, reload.c, sched-deps.c, sched-int.h, tree-inline.c,
6367         tree-profile.c, tree-ssa-live.h, tree-vrp.c: Fix comment
6368         typos.  Follow spelling conventions.
6369         * doc/invoke.texi: Follow spelling conventions.
6370
6371 2007-02-03  Roger Sayle  <roger@eyesopen.com>
6372
6373         * simplify-rtx.c (simplify_relational_operation_1): Implement some
6374         canonicalization transformations that attempt to simplify integer
6375         constant comparisons to become comparisons against zero.
6376
6377 2007-02-03  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
6378
6379         * builtins.c (fold_builtin_cabs): Fold cabs(x+xi) into
6380         fabs(x)*sqrt(2).
6381         * fold-const.c (fold_binary): Fix comment typos.  Fold complex
6382         (x,0)-(0,y) into (x,-y).  Likewise (0,y)-(x,0) into (-x,y).
6383
6384 2007-02-02  Mike Stump  <mrs@apple.com>
6385
6386         * config/darwin9.h (DARWIN_LINKER_GENERATES_ISLANDS): Add.
6387         * config/rs6000/rs6000.c (DARWIN_GENERATE_ISLANDS): Add.
6388         (output_call): Use DARWIN_GENERATE_ISLANDS to decide when to
6389         generate a branch island.
6390
6391 2007-02-02  Bob Wilson  <bob.wilson@acm.org>
6392
6393         * config/xtensa/xtensa.c (smalloffset_mem_p): Use BASE_REG_P.
6394         (xtensa_legitimate_address_p): New.
6395         (xtensa_legitimize_address): New.
6396         (xtensa_output_addr_const_extra): New.
6397         * config/xtensa/xtensa.h (REG_OK_STRICT_FLAG): Define.
6398         (BASE_REG_P): New.
6399         (REG_OK_FOR_BASE_P): Use BASE_REG_P.
6400         (GO_IF_LEGITIMATE_ADDRESS): Move code to xtensa_legitimate_address_p.
6401         (LEGITIMIZE_ADDRESS): Move code to xtensa_legitimize_address.
6402         (OUTPUT_ADDR_CONST_EXTRA): Move code to xtensa_output_addr_const_extra.
6403         * config/xtensa/xtensa-protos.h (xtensa_legitimate_address_p): New.
6404         (xtensa_legitimize_address): New.
6405         (xtensa_output_addr_const_extra): New.
6406
6407 2007-02-02  Steve Ellcey  <sje@cup.hp.com>
6408
6409         * config/ia64/ia64.c (ia64_print_operand): Fix compare strings.
6410
6411 2007-02-02  Ian Lance Taylor  <iant@google.com>
6412
6413         * expmed.c (expand_divmod): Add comment.
6414
6415 2007-02-02  Kazu Hirata  <kazu@codesourcery.com>
6416
6417         * emit-rtl.c (renumber_insns): Remove.
6418         * flags.h: Remove the extern for flag_renumber_insns.
6419         * rtl.h: Remove the prototype for renumber_insns.
6420         * toplev.c (flag_renumber_insns): Remove.
6421
6422 2007-02-02  Hui-May Chang  <hm.chang@apple.com>
6423
6424         Revert for x86 darwin:
6425         2005-06-19  Uros Bizjak  <uros@kss-loka.si>
6426
6427         * config/i386/i386.c (ix86_function_arg_regno_p): Put back the
6428         code before the following patch under TARGET_MACHO.
6429         (ix86_function_value_regno_p): Likewise.
6430
6431 2007-02-02  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
6432
6433         * fold-const.c (negate_expr_p, fold_negate_expr): Handle
6434         COMPLEX_EXPR.
6435
6436 2007-02-02  Maxim Kuvyrkov  <mkuvyrkov@ispras.ru>
6437
6438         PR target/29682
6439         * config/ia64/ia64.c (ia64_speculate_insn): Restrict to memory loads to
6440         general or fp registers.  Add comments.
6441         * config/ia64/ia64.md (reg_pred_prefix): Add comment.
6442
6443 2007-02-02  Paolo Bonzini  <bonzini@gnu.org>
6444
6445         * pointer-set.c (insert_aux): Only return insertion slot.
6446         (pointer_set_insert): Adjust.
6447         (pointer_set_traverse, struct pointer_map_t, pointer_map_create,
6448         pointer_map_destroy, pointer_map_insert, pointer_map_contains,
6449         pointer_map_traverse): New.
6450         * pointer-set.h (pointer_set_traverse, struct pointer_map_t,
6451         pointer_map_create,  pointer_map_destroy, pointer_map_insert,
6452         pointer_map_contains, pointer_map_traverse): Declare.
6453
6454 2007-02-02  Jakub Jelinek  <jakub@redhat.com>
6455
6456         PR middle-end/30473
6457         * builtins.c (fold_builtin_sprintf): Do not attempt to optimize
6458         sprintf (str, "%s").  Do not optimize sprintf (str, "nopercent", p++).
6459
6460 2007-02-02  Maxim Kuvyrkov  <mkuvyrkov@ispras.ru>
6461
6462         * sched-int.h (ds_to_dk, dk_to_ds): Declare functions.
6463
6464         (struct _dep): New type.
6465         (dep_t): New typedef.
6466         (DEP_PRO, DEP_CON, DEP_KIND): New access macros.
6467         (DEP_STATUS): New access macro.  The macro with the same name was
6468         renamed to DEP_LINK_STATUS.
6469         (dep_init): Declare function
6470
6471         (struct _dep_link): New type.
6472         (dep_link_t): New typedef.
6473         (DEP_LINK_NODE, DEP_LINK_NEXT, DEP_LINK_PREV_NEXTP): New access macros.
6474         (DEP_LINK_DEP, DEP_LINK_PRO, DEP_LINK_CON, DEP_LINK_KIND): New macros.
6475         (DEP_LINK_STATUS): New macro.
6476         (debug_dep_links): New debug function.
6477
6478         (struct _deps_list): New type.
6479         (deps_list_t): New typedef.
6480         (DEPS_LIST_FIRST): New access macro.
6481         (FOR_EACH_DEP_LINK): New cycle macro.
6482         (create_deps_list, free_deps_list, delete_deps_list): Declare
6483         functions.
6484         (deps_list_empty_p, debug_deps_list, add_back_dep_to_deps_list): Ditto.
6485         (find_link_by_pro_in_deps_list, find_link_by_con_in_deps_list): Ditto.
6486         (copy_deps_list_change_con): Ditto.
6487
6488         (move_dep_link): Declare function.
6489
6490         (struct _dep_node): New type.
6491         (dep_node_t): New typedef.
6492         (DEP_NODE_BACK, DEP_NODE_DEP, DEP_NODE_FORW): New access macros.
6493
6494         (struct haifa_insn_data.back_deps): New field to hold backward
6495         dependencies of the insn.
6496         (struct haifa_insn_data.depend): Rename to forw_deps.  Change its type
6497         to deps_list_t.
6498         (struct haifa_insn_data.resolved_deps): Rename to resolved_back_deps.
6499         Change its type to deps_list_t.
6500         (INSN_BACK_DEPS): New access macro to use instead of LOG_LINKS.
6501         (INSN_DEPEND): Rename to INSN_FORW_DEPS.
6502         (RESOLVED_DEPS): Rename to INSN_RESOLVED_BACK_DEPS.
6503
6504         (INSN_COST): Move to haifa-sched.c.  Use insn_cost () instead.
6505
6506         (DEP_STATUS): Rename to DEP_LINK_STATUS.  Fix typo in the comment.
6507
6508         (add_forw_dep, delete_back_forw_dep, insn_cost): Update declaration and
6509         all callers.
6510         (dep_cost): Declare.
6511
6512         * sched-deps.c (CHECK): New macro to (en/dis)able sanity checks.
6513         (ds_to_dk, dk_to_ds): New functions.
6514
6515         (init_dep_1): New static function.
6516         (init_dep): New function.
6517         (copy_dep): New static function.
6518
6519         (dep_link_consistent_p, attach_dep_link, add_to_deps_list): New static
6520         functions.
6521         (detach_dep_link): New static function.
6522         (move_dep_link): New function.
6523
6524         (dep_links_consistent_p, dump_dep_links): New static functions.
6525         (debug_dep_links): New debugging function.
6526
6527         (deps_obstack, dl_obstack, dn_obstack): New static variables.
6528
6529         (alloc_deps_list, init_deps_list): New static functions.
6530         (create_deps_list): New function.
6531         (clear_deps_list): New static function.
6532         (free_deps_list, delete_deps_list, deps_list_empty_p): New functions.
6533         (deps_list_consistent_p, dump_deps_list): New static functions.
6534         (debug_deps_list): New function.
6535         (add_back_dep_to_deps_list, find_link_by_pro_in_deps_list): New
6536         functions.
6537         (find_link_by_con_in_deps_list, copy_deps_list_change_con): Ditto.
6538
6539         (maybe_add_or_update_back_dep_1, add_or_update_back_dep_1): Update to
6540         use new scheduler dependencies lists.
6541         (add_back_dep, delete_all_dependences, fixup_sched_groups): Ditto.
6542         (sched_analyze): Ditto.  Initialize dependencies lists.
6543         (add_forw_dep, compute_forward_dependences): Update to use new
6544         scheduler dependencies lists.
6545
6546         (init_dependency_caches): Init deps_obstack.
6547         (free_dependency_caches): Free deps_obstack.
6548
6549         (adjust_add_sorted_back_dep, adjust_back_add_forw_dep): Update to use
6550         new scheduler dependencies lists.
6551         (delete_forw_dep, add_or_update_back_forw_dep): Ditto.
6552         (add_back_forw_dep, delete_back_forw_dep): Ditto.
6553
6554         * sched-rgn.c (set_spec_fed, find_conditional_protection, is_pfree):
6555         Update to use new scheduler dependencies lists.
6556         (is_conditionally_protected, is_prisky, add_branch_dependences): Ditto.
6557         (debug_dependencies): Ditto.
6558         (schedule_region): Update comments.
6559
6560         * sched-ebb.c (earliest_block_with_similiar_load): Update to use new
6561         scheduler dependencies lists.
6562         (schedule_ebb): Update comments.
6563
6564         * rtl.def (DEPS_LIST): Remove.
6565
6566         * lists.c (unused_deps_list): Remove.
6567         (free_list): Update assertions.
6568
6569         (alloc_DEPS_LIST, free_DEPS_LIST_list, free_DEPS_LIST_node): Remove.
6570         (remove_free_DEPS_LIST_elem, copy_DEPS_LIST_list): Ditto.
6571
6572         * rtl.h (free_DEPS_LIST_list, alloc_DEPS_LIST): Remove declarations.
6573         (remove_free_DEPS_LIST_elem, copy_DEPS_LIST_list): Ditto.
6574
6575         * haifa-sched.c (comments): Update.
6576         (insn_cost1): Remove.  Inline the code into insn_cost ().
6577         (insn_cost): Update to use new scheduler dependencies lists.  Move
6578         processing of the dependency cost to dep_cost ().
6579         (dep_cost): New function.  Use it instead of insn_cost () when
6580         evaluating cost of the dependency.  Use compatible interface to
6581         interact with the target.
6582         (priority): Update to use new scheduler dependencies lists.
6583         (rank_for_schedule): Ditto.  Optimize heuristic that prefers the insn
6584         with greater number of insns that depend on the insn.
6585         (schedule_insn): Update to use new scheduler dependencies lists.  Add
6586         code to free backward dependencies lists.  Inline and optimize code
6587         from resolve_dep () - see PR28071.
6588         (ok_for_early_queue_removal): Update to use new scheduler dependencies
6589         lists.  Update call to targetm.sched.is_costly_dependence hook.
6590
6591         (fix_inter_tick, try_ready, fix_tick_ready): Update to use new
6592         scheduler dependencies lists.
6593
6594         (resolve_dep): Remove.  Move the logic to schedule_insn ().
6595         (init_h_i_d): Initialize dependencies lists.
6596
6597         (process_insn_depend_be_in_spec): Rename to
6598         process_insn_forw_deps_be_in_spec.  Update to use new scheduler
6599         dependencies lists.
6600         (add_to_speculative_block, create_check_block_twin, fix_recovery_deps):
6601         Update to use new scheduler dependencies lists.
6602         (clear_priorities, calc_priorities, add_jump_dependencies): Ditto.
6603
6604         * ddg.c (create_ddg_dependence, create_ddg_dep_no_link): Update to use
6605         new scheduler dependencies lists.
6606         (build_intra_loop_deps): Ditto.
6607
6608         * target.h (struct _dep): Declare to use in
6609         gcc_target.sched.is_costly_dependence.
6610         (struct gcc_target.sched.adjust_cost): Fix typo.
6611         (struct gcc_target.sched.is_costly_dependence): Change signature to use
6612         single dep_t parameter instead of an equivalent triad.
6613         (struct gcc_target.sched.adjust_cost_2): Remove.
6614
6615         * target-def.h (TARGET_SCHED_ADJUST_COST_2): Remove.
6616
6617         * reg-notes.def (DEP_TRUE, DEP_OUTPUT, DEP_ANTI): Update comments.
6618
6619         * doc/tm.texi (TARGET_SCHED_IS_COSTLY_DEPENDENCE): Update
6620         documentation.
6621         (TARGET_SCHED_ADJUST_COST_2): Remove documentation.
6622
6623         * doc/rtl.texi (LOG_LINKS): Remove part about instruction scheduler.
6624         (REG_DEP_TRUE): Document.
6625
6626         * config/ia64/ia64.c (ia64_adjust_cost_2): Rename to ia64_adjust_cost.
6627         Change signature to correspond to the targetm.sched.adjust_cost hook.
6628         Update use in TARGET_SCHED_ADJUST_COST_2.
6629         (TARGET_SCHED_ADJUST_COST_2): Rename to TARGET_SCHED_ADJUST_COST.
6630         (ia64_dependencies_evaluation_hook, ia64_dfa_new_cycle): Update to use
6631         new scheduler dependencies lists.
6632         (ia64_gen_check): Ditto.
6633
6634         * config/mips/mips.c (vr4130_swap_insns_p): Update to use new scheduler
6635         dependencies lists.
6636
6637         * config/rs6000/rs6000.c (rs6000_is_costly_dependence): Change
6638         signature to correspond to the targetm.sched.is_costly_dependence hook.
6639         (is_costly_group): Update to use new scheduler dependencies lists.
6640
6641         * config/spu/spu.c (spu_sched_adjust_cost): Use insn_cost () function
6642         instead of INSN_COST () macro.
6643
6644 2007-02-01  Ian Lance Taylor  <iant@google.com>
6645
6646         * lower-subreg.c (resolve_clobber): Handle a subreg of a concatn.
6647
6648 2007-02-01  Guy Martin  <gmsoft@gentoo.org>
6649
6650         * pa.md (tp_load): Correct mfctl instruction syntax.
6651
6652 2007-02-01  Geoffrey Keating  <geoffk@apple.com>
6653
6654         * config/rs6000/rs6000.c (rs6000_stack_info): Correct
6655         altivec_padding_size calculation on AIX.  Improve comment, add
6656         assert to verify that it's right.
6657
6658         * config/rs6000/darwin.h (MD_UNWIND_SUPPORT): Don't define for
6659         64-bit.
6660
6661 2007-2-01  Seongbae Park  <seongbae.park@gmail.com>
6662
6663         PR inline-asm/28686
6664         * global.c (global_alloc): Add mising initialization of
6665         ELIMINABLE_REGSET.
6666
6667 2007-02-01  Roger Sayle  <roger@eyesopen.com>
6668
6669         * alias.c (init_alias_analysis): Correct whitespace.
6670         * bb-reorder.c (fix_edges_for_rarely_executed_code,
6671         partition_hot_cold_basic_blocks): Likewise.
6672         * builtins.c (expand_builtin_printf, expand_builtin_fprintf,
6673         expand_builtin_sprintf, fold_builtin_carg, fold_builtin_sprintf,
6674         maybe_emit_sprintf_chk_warning, fold_builtin_sprintf_chk,
6675         fold_builtin_snprintf_chk, fold_builtin_printf,
6676         fold_builtin_fprintf, do_mpfr_ckconv, do_mpfr_arg1, do_mpfr_arg2,
6677         do_mpfr_arg3, do_mpfr_sincos): Likewise.
6678         * cfgcleanup.c (cleanup_cfg): Likewise.
6679         * cfgexpand.c (tree_expand_cfg): Likewise.
6680         * fold-const.c (fold_binary) <RDIV_EXPR>: Likewise.
6681         * function.c (get_next_funcdef_no): Likewise.
6682         * gengtype.c (main): Likewise.
6683         * genmodes.c (main): Likewise.
6684         * gcse.c (bypass_conditional_jumps, print_ldst_list): Likewise.
6685         * haifa-sched.c (schedule_block, extend_h_i_d): Likewise.
6686         * ifcvt.c (noce_emit_move_insn): Likewise.
6687         * modulo-sched.c (generate_prolog_epilog, sms_schedule_by_order):
6688         Likewise.
6689         * stor-layout.c (get_best_mode): Likewise.
6690         * tree-ssa-loop-niter.c (get_val_for): Likewise.
6691         * tree-ssa-structalias.c (get_varinfo, get_varinfo_fc,
6692         scc_visit, do_ds_constraint, do_complex_constraint, label_visit,
6693         perform_var_substitution, solve_graph): Likewise.
6694         * tree-vrp.c (vrp_finalize): Likewise.
6695
6696 2007-02-01  Ian Lance Taylor  <iant@google.com>
6697
6698         * lower-subreg.c (simplify_gen_subreg_concatn): If we ask for the
6699         high part of a paradoxical subreg, return a constant zero.
6700
6701 2007-02-01  Zdenek Dvorak <dvorakz@suse.cz>
6702
6703         * toplev.c (lang_dependent_init): Call init_set_costs.
6704         * loop-init.c (loop_optimizer_init): Do not call init_set_costs.
6705
6706 2007-02-01  Richard Guenther  <rguenther@suse.de>
6707
6708         PR middle-end/30656
6709         * fold-const.c (fold_negate_expr): Allow negating a
6710         constant if overflow does not change.
6711
6712 2007-02-01  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
6713
6714         * doc/c-tree.texi (Expression trees): Improve markup.
6715         * doc/tm.texi (Register Classes, Addressing Modes)
6716         (Floating Point): Fix spacing after abbreviations.  Fix some
6717         typos.
6718
6719 2007-02-01  Ben Elliston  <bje@au.ibm.com>
6720
6721         * doc/invoke.texi: Replace "bugfix" with "bug fix" throughout.
6722         * doc/contrib.texi: Likewise.
6723         * doc/install.texi: Likewise.
6724
6725 2007-01-31  Richard Henderson  <rth@redhat.com>
6726             Ian Lance Taylor  <iant@google.com>
6727
6728         * lower-subreg.c: New file.
6729         * rtl.def (CONCATN): Define.
6730         * passes.c (init_optimization_passes): Add pass_lower_subreg and
6731         pass_lower_subreg2.
6732         * emit-rtl.c (update_reg_offset): New static function, broken out
6733         of gen_rtx_REG_offset.
6734         (gen_rtx_REG_offset): Call update_reg_offset.
6735         (gen_reg_rtx_offset): New function.
6736         * regclass.c: Revert patch of 2006-03-05, restoring
6737         reg_scan_update.
6738         (clear_reg_info_regno): New function.
6739         * dwarf2out.c (concatn_loc_descriptor): New static function.
6740         (loc_descriptor): Handle CONCATN.
6741         * common.opt (fsplit_wide_types): New option.
6742         * opts.c (decode_options): Set flag_split_wide_types when
6743         optimizing.
6744         * timevar.def (TV_LOWER_SUBREG): Define.
6745         * rtl.h (gen_reg_rtx_offset): Declare.
6746         (reg_scan_update): Declare.
6747         * regs.h (clear_reg_info_regno): Declare.
6748         * tree-pass.h (pass_lower_subreg): Declare.
6749         (pass_lower_subreg2): Declare.
6750         * doc/invoke.texi (Option Summary): List -fno-split-wide-types.
6751         (Optimize Options): Add -fsplit-wide-types to -O1 list.  Document
6752         -fsplit-wide-types.
6753         * doc/rtl.texi (Regs and Memory): Document concat and concatn.
6754         * Makefile.in (OBJS-common): Add lower-subreg.o.
6755         (lower-subreg.o): New target.
6756
6757 2007-01-31  Kazu Hirata  <kazu@codesourcery.com>
6758
6759         * config/sh/sh.h (HAVE_SECONDARY_RELOADS): Remove.
6760
6761 2007-01-31  Anatoly Sokolov <aesok@post.ru>
6762
6763         PR target/19087
6764         * config/avr/avr.c (DWARF2_ADDR_SIZE): Define.
6765
6766 2007-01-31  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
6767
6768         PR middle-end/29335
6769         * builtins.c (fold_builtin_sqrt): Use MPFR for constant args.
6770
6771 2007-01-31  Zdenek Dvorak <dvorakz@suse.cz>
6772
6773         * cfgloop.h: Include vec-prim.h.
6774         (enum li_flags): Remove LI_ONLY_OLD.
6775         (loop_iterator): Changed.
6776         (fel_next, fel_init): Iterate over loop tree.
6777         (FOR_EACH_LOOP_BREAK): New macro.
6778         * loop-unswitch.c (unswitch_loops): Do not pass LI_ONLY_OLD to
6779         FOR_EACH_LOOP.
6780         * tree-ssa-loop-unswitch.c (tree_ssa_unswitch_loops): Ditto.
6781         * modulo-sched.c (sms_schedule): Ditto.
6782         * tree-vectorizer.c (vectorize_loops): Ditto.
6783         * doc/loop.texi: Update information on loop numbering and behavior of
6784         FOR_EACH_LOOP wrto new loops.
6785         * tree-scalar-evolution.c (compute_overall_effect_of_inner_loop,
6786         add_to_evolution_1): Test nestedness of loops instead of comparing
6787         their numbers.
6788         * tree-chrec.c (chrec_fold_plus_poly_poly,
6789         chrec_fold_multiply_poly_poly, chrec_evaluate,
6790         hide_evolution_in_other_loops_than_loop, chrec_component_in_loop_num,
6791         reset_evolution_in_loop): Ditto.
6792         * Makefile.in (CFGLOOP_H): Add vecprim.h dependency.
6793
6794 2007-01-31  Dirk Mueller  <dmueller@suse.de>
6795
6796         * c-common.c (warn_about_parentheses): Separate warning about
6797         un-parenthized sequence of comparison operators from the one
6798         which is supposed to warn about x <= y <= z.
6799
6800 2007-01-31  Uros Bizjak  <ubizjak@gmail.com>
6801
6802         * optabs.h (enum optab_index): Add new OTI_isinf.
6803         (isinf_optab): Define corresponding macro.
6804         * optabs.c (init_optabs): Initialize isinf_optab.
6805         * genopinit.c (optabs): Implement isinf_optab using isinf?f2
6806         patterns.
6807         * builtins.c (mathfn_built_in): Handle BUILT_IN_ISINF{,F,L}.
6808         (expand_builtin_interclass_mathfn): Expand BUILT_IN_ISINF{,F,L}
6809         using isinf_optab.
6810         (expand_builtin): Expand BUILT_IN_ISINF{,F,L} using
6811         expand_builtin_interclass_mathfn.
6812         * reg_stack.c (subst_stack_regs_pat): Handle UNSPEC_FXAM.
6813         * config/i386/i386.md (UNSPEC_FXAM): New constant.
6814         (fxam<mode>2_i387): New insn pattern.
6815         (isinf<mode>2) New expander to implement isinf, isinff and isinfl
6816         built-in functions as x87 inline asm.
6817
6818 2007-01-31  Kazu Hirata  <kazu@codesourcery.com>
6819
6820         * gcc/config/arm/unwind-arm.h (_sleb128_t, _uleb128_t): New.
6821
6822 2007-01-30  Eric Christopher  <echristo@apple.com>
6823
6824         * config.gcc: Add geode.
6825
6826 2007-01-31  Kazu Hirata  <kazu@codesourcery.com>
6827
6828         * cgraphunit.c, config/arm/arm.c, config/m68k/m68k.c,
6829         ipa-inline.c, tree-profile.c, tree-ssa-live.c,
6830         tree-ssa-math-opts.c, tree-ssanames.c, tree-vect-analyze.c,
6831         value-prof.c: Fix comment typos.
6832
6833 2007-01-30  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
6834
6835         PR c++/24745
6836         * doc/invoke.texi (Wpointer-arith): Document warning.
6837
6838 2007-01-30  Janis Johnson  <janis187@us.ibm.com>
6839
6840         * doc/extend.texi (Decimal Floating Types): Remove decfloat.h from
6841         the list of discrepancies from the draft TR.
6842
6843 2007-01-30  Dirk Mueller  <dmueller@suse.de>
6844
6845         PR c++/30601
6846         * doc/invoke.texi (-Wreturn-type): Update description to
6847         match new behavior.
6848
6849 2007-01-30  Richard Sandiford  <richard@codesourcery.com>
6850
6851         * cfgrtl.c (try_redirect_by_replacing_jump): Check only_sets_cc0_p.
6852
6853 2007-01-30  Uros Bizjak  <ubizjak@gmail.com>
6854
6855         * builtins.c (expand_builtin_int_interclass_roundingfn): New function
6856         to handle optabs that operate on floating point input argument and
6857         output to integer output.
6858         (expand_builtin_mathfn) [BUILT_IN_ILOGB]: Move from here ...
6859         (expand_builtin_interclass_mathfn) [BUILT_IN_ILOGB]: ... to here.
6860         (expand_builtin): Expand BUILT_IN_ILOGB{,F,L} using
6861         expand_builtin_interclass_mathfn ().
6862         * config/i386/i386.md (fxtractxf3_i387): Rename from *fxtractxf3_i387.
6863         (ilogbsi2): Remove.
6864         (ilogbxf2, ilogb<mode>2): New expanders to implement ilogb, ilogbf and
6865         ilogbl built-in functions as x87 intrinsics.
6866
6867 2007-01-30  Richard Guenther  <rguenther@suse.de>
6868
6869         PR middle-end/27657
6870         * dwarf2out.c (reference_to_unused): Query varpool if the
6871         variable was output.
6872
6873 2007-01-30  Richard Guenther  <rguenther@suse.de>
6874
6875         PR middle-end/30313
6876         * passes.c (execute_one_pass): Reset in_gimple_form to not
6877         confuse non-unit-at-a-time mode.
6878
6879 2007-01-29  Roger Sayle  <roger@eyesopen.com>
6880             Richard Guenther  <rguenther@suse.de>
6881
6882         * fold-const.c (round_up): Make HIGH an unsigned HOST_WIDE_INT to
6883         avoid undefined behaviour on overflow.  Use force_fit_type_double
6884         to construct the constant with the specified TREE_OVERFLOW.
6885
6886 2007-01-29  Janis Johnson  <janis187@us.ibm.com>
6887
6888         * config/dfp-bit.c: Add parameterized support for fp exceptions.
6889         * config/dfp-bit.h: Ditto.
6890
6891 2007-01-29  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
6892
6893         * c-decl.c (pop_scope): Replace warnings with call to
6894         warn_for_unused_label.
6895         * c-common.h (warn_for_unused_label): Declare.
6896         * c-common.c (warn_for_unused_label): Define.
6897
6898 2007-01-29  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
6899
6900         * tree-optimize.c (update_inlined_to_pointers): Delete unused
6901         function.
6902
6903 2007-01-29  Janis Johnson  <janis187@us.ibm.com>
6904
6905         * Makefile.in (USER_H): Remove decfloat.h.
6906         * ginclude/decfloat.h: Delete, moving contents to ...
6907         * ginclude/float.h: Add support for decimal floating point,
6908         guarded by __STDC_WANT_DEC_FP__.
6909
6910 2007-01-29  Mike Stump  <mrs@apple.com>
6911
6912         * doc/gccint.texi (Top): Rename Loop Representation to Loop
6913         Analysis and Representation to resolve case insensitive conflict.
6914         * doc/loop.texi (Loop Analysis and Representation): Likewise.
6915
6916 2007-01-28  Daniel Berlin  <dberlin@dberlin.org>
6917
6918         * tree.h (struct tree_memory_tag): Add aliases member.
6919         (MTAG_ALIASES): New macro.
6920         * tree-ssa-alias.c (alias_bitmap_obstack): New variable.
6921         (add_may_alias): Remove pointer-set. Update for may_aliases being
6922         a bitmap.
6923         (mark_aliases_call_clobbered): Update for may_aliases being a
6924         bitmap.
6925         (compute_tag_properties): Ditto.
6926         (create_partition_for): Ditto.
6927         (compute_memory_partitions): Ditto.
6928         (dump_may_aliases_for): Ditto.
6929         (is_aliased_with): Ditto.
6930         (add_may_alias_for_new_tag): Ditto.
6931         (rewrite_alias_set_for): Rewrite for may_aliases being a bitmap.
6932         (compute_is_aliased): New function.
6933         (compute_may_aliases): Call compute_is_aliased).
6934         (init_alias_info): Initialize alias_bitmap_obstack.
6935         (union_alias_set_into): New function.
6936         (compute_flow_sensitive_aliasing): Use union_aliases_into.
6937         (have_common_aliases_p): Rewrite to take two bitmaps and use
6938         intersection.
6939         (compute_flow_insensitive_aliasing): Stop using pointer-sets.
6940         Update for bitmaps.
6941         (finalize_ref_all_pointers): Update for add_may_alias changes.
6942         (new_type_alias): Ditto.
6943         * tree-flow-inline.h (may_aliases): Return a bitmap.
6944         * tree-dfa.c (dump_variable): Check for MTAG_P'ness.
6945         * tree-ssa.c (verify_flow_insensitive_alias_info): Update for
6946         may_aliases being a bitmap.
6947         * tree-flow.h (struct var_ann_d): Remove may_aliases member.
6948         may_aliases now returns a bitmap.
6949         * tree-ssa-structalias.c (merge_smts_into): Update for may_aliases
6950         being a bitmap.
6951         * tree-ssa-operands.c (add_virtual_operand): Update for
6952         may_aliases being a bitmap.
6953
6954 2007-01-29  Daniel Berlin  <dberlin@dberlin.org>
6955
6956         PR tree-optimization/30630
6957         * tree-ssa-structalias.c (do_complex_constraint): Mark correct
6958         variable as changed.
6959
6960 2007-01-29  Simon Martin  <simartin@users.sourceforge.net>
6961
6962         PR c++/28266
6963         * gimplify.c (gimplify_target_expr): Make sure that the TARGET_EXPR is
6964         expanded only once even if an error occurs.
6965
6966 2007-01-29  Ben Elliston  <bje@au.ibm.com>
6967
6968         * gcov-io.h (__gcov_indirect_call_profiler): Declare.
6969         (__gcov_average_profiler): Likewise.
6970         (__gcov_ior_profiler): Likewise.
6971         (__gcov_merge_ior): Likewise.
6972
6973 2007-01-28  Jan Hubicka  <jh@suse.cz>
6974
6975         * builtins.c (expand_builtin_memset): Fix typo in my last patch.
6976         * value-prof.c (stringop_block_profile): Likewise.
6977
6978 2007-01-28  Jan Hubicka  <jh@suse.cz>
6979
6980         * expr.c (emit_block_move_via_movmem, emit_block_move_via_libcall): Add
6981         variant handling histograms; add wrapper.
6982         (clear_storage_via_libcall): Export.
6983         (emit_block_move_hints): Break out from ...; add histograms.
6984         (emit_block_move): ... this one.
6985         (clear_storage_hints): Break out from ...; add histograms.
6986         (clear_storage): ... this one.
6987         (set_storage_via_memset): Handle histogram.
6988         * expr.h (emit_block_move_via_libcall, emit_block_move_hints): Declare.
6989         (clear_storage_hints, clear_storage_via_libcall): Declare.
6990         (set_storage_via_setmem): Update prototype.
6991         * doc/md.texi (movmem, setmem): Document new arguments.
6992
6993         * value-prof.c (dump_histogram_value, tree_find_values_to_profile): Add
6994         new histograms.
6995         (stringop_block_profile): New global function.
6996         (tree_stringops_values_to_profile): Profile block size and alignment.
6997         * value-prof.h (enum hist_type): add HIST_TYPE_AVERAGE and
6998         HIST_TYPE_IOR.
6999         (struct profile_hooks): Add gen_average_profiler and gen_ior_profiler.
7000         (stringop_block_profile): Declare.
7001         * builtins.c: Include value-prof.h.
7002         (expand_builtin_memcpy, expand_builtin_memset): Pass block profile.
7003         * gcov-ui.h (GCOV_COUNTER_NAMES): Add new counter.
7004         (GCOV_COUNTER_AVERAGE, GCOV_COUNTER_IOR): New constants.
7005         (GCOV_COUNTERS, GCOV_LAST_VALUE_COUNTER): Update.
7006         * profile.c (instrument_values): Add new counters.
7007         * cfgexpand.c (expand_gimple_basic_block): Propagate histograms to
7008         calls.
7009         * tree-profile.c (tree_average_profiler_fn, tree_ior_profiler_fn): New.
7010         (tree_init_edge_profiler): Build new profilers.
7011         (tree_gen_average_profiler, tree_gen_ior_profiler): New.
7012         (pass_tree_profile): Add dump.
7013         (tree_profile_hooks): Update.
7014         * Makefile.in (LIBGCOV): Add new constants.
7015         * libgcov.c (__gcov_merge_ior, __gcov_average_profiler,
7016         __gcov_ior_profiler): New.
7017         * i386.md (movmem/setmem expanders): Add new optional arguments.
7018
7019 2007-01-28  David Edelsohn  <edelsohn@gnu.org>
7020
7021         * doc/md.texi (Standard Pattern Names): Document blockage pattern.
7022
7023 2007-01-28  Zdenek Dvorak <dvorakz@suse.cz>
7024
7025         * tree-ssa-loop-unswitch.c: Include tree-inline.h.
7026         (tree_unswitch_single_loop): Pass eni_size_weights to
7027         tree_num_loop_insns.
7028         * tree-ssa-loop-manip.c: Include tree-inline.h.
7029         (can_unroll_loop_p): Pass eni_size_weights to
7030         tree_num_loop_insns.
7031         * tree-ssa-loop-ch.c (should_duplicate_loop_header_p):
7032         Pass eni_size_weights to estimate_num_insns.
7033         * tree.h (init_inline_once): Export.
7034         * toplev.c (backend_init): Call init_inline_once.
7035         * cgraphunit.c (cgraph_process_new_functions,
7036         cgraph_analyze_function): Pass eni_inlining_weights to
7037         estimate_num_insns.
7038         * ipa-inline.c (compute_inline_parameters): Ditto.
7039         * tree-ssa-loop-ivcanon.c (tree_num_loop_insns): Pass weights
7040         to estimate_num_insns.
7041         (try_unroll_loop_completely): Pass eni_size_weights to
7042         tree_num_loop_insns.
7043         * tree-eh.c (decide_copy_try_finally): Pass eni_size_weights
7044         ot estimate_num_insns.
7045         * tree-ssa-loop-prefetch.c: Include tree-inline.h.
7046         (loop_prefetch_arrays): Pass eni_time_weights to tree_num_loop_insns.
7047         * tree-inline.c (eni_inlining_weights, eni_size_weights,
7048         eni_time_weights): New variables.
7049         (init_inline_once): Initialize them.
7050         (struct eni_data): Mew.
7051         (estimate_num_insns_1, estimate_num_insns): Use weights.
7052         * tree-inline.h (struct eni_weights_d): New.
7053         (eni_inlining_weights, eni_size_weights, eni_time_weights): Declare.
7054         (estimate_num_insns): Declaration changed.
7055         * cfgloop.h (tree_num_loop_insns): Declaration changed.
7056         * Makefile.in (tree-ssa-loop-unswitch.o, tree-ssa-loop-prefetch.o,
7057         tree-ssa-loop-manip.o): Add TREE_INLINE_H dependency.
7058
7059 2007-01-28  Zdenek Dvorak <dvorakz@suse.cz>
7060
7061         * tree-data-ref.c (conflict_fn): Assert that the number of affine
7062         relations in the conflict function is valid.
7063
7064 2007-01-27  Ian Lance Taylor  <iant@google.com>
7065
7066         * common.opt: Add fstrict-overflow.
7067         * opts.c (decode_options): Set flag_strict_overflow if -O2.
7068         * flags.h (TYPE_OVERFLOW_WRAPS): Define.
7069         (TYPE_OVERFLOW_UNDEFINED): Define.
7070         (TYPE_OVERFLOW_TRAPS): Define.  This replaces TYPE_TRAP_SIGNED.
7071         Replace all uses.
7072         * tree.h (TYPE_TRAP_SIGNED): Don't define.
7073         * fold-const.c (negate_expr_p): Use TYPE_OVERFLOW_UNDEFINED.
7074         (fold_negate_expr): Likewise.
7075         (make_range): Likewise.
7076         (extract_muldiv_1): Likewise.
7077         (maybe_canonicalize_comparison): Likewise.
7078         (fold_comparison): Likewise.
7079         (fold_binary): Likewise.
7080         (tree_expr_nonnegative_p): Likewise.
7081         (tree_expr_nonzero_p): Likewise.
7082         * tree-vrp.c (compare_values): Likewise.
7083         (extract_range_from_binary_expr): Likewise.
7084         (extract_range_from_unary_expr): Likewise.
7085         * tree-ssa-loop-niter.c (infer_loop_bounds_from_signedness):
7086         Likewise.
7087         (nowrap_type_p): Likewise.
7088         * tree-scalar-evolution.c (simple_iv): Likewise.
7089         * fold-const.c (negate_expr_p): Use TYPE_OVERFLOW_WRAPS.
7090         (build_range_check): Likewise.
7091         (extract_muldiv_1): Likewise.
7092         (fold_comparison): Likewise.
7093         * tree-vrp.c (vrp_int_const_binop): Likewise.
7094         (extract_range_from_unary_expr): Likewise.
7095         * convert.c (convert_to_integer): Likewise.
7096         * fold-const.c (fold_negate_expr): Use TYPE_OVERFLOW_TRAPS.
7097         (fold_comparison): Likewise.
7098         (fold_binary): Likewise.
7099         * optabs.c (optab_for_tree_code): Likewise.
7100         * tree-vectorizer.c (vect_is_simple_reduction): Likewise.
7101         * simplify-rtx.c (simplify_const_relational_operation): Check
7102         flag_strict_overflow and flag_trapv.
7103         (simplify_const_relational_operation): Likewise.
7104         * doc/invoke.texi (Option Summary): Mention -fstrict-overflow.
7105         (Optimize Options): Add -fstrict-overflow to -O2 list.  Document
7106         -fstrict-overflow.
7107
7108 2007-01-27  Roger Sayle  <roger@eyesopen.com>
7109
7110         * tree.c (tree_fold_gcd): Delete.
7111         * tree.h (tree_fold_gcd): Remove prototype.
7112         * tree-data-ref.c (tree_fold_divides_p): Don't use tree_fold_gcd to
7113         test whether one constant integer is a multiple of another.  Instead
7114         call int_const_binop with TRUNC_MOD_EXPR and test for a zero result.
7115         * fold-const.c (multiple_of_p):  We've determined both TOP and
7116         BOTTOM are integer constants so we can call int_const_binop directly
7117         instead of the more generic const_binop.
7118
7119 2007-01-27  Roger Sayle  <roger@eyesopen.com>
7120
7121         * fold-const.c (size_binop): In the fast-paths for X+0, 0+X, X-0 and
7122         1*X check that the constant hasn't overflowed, to preserve the
7123         TREE_OVERFLOW bit.
7124         (round_up): Provide an efficient implementation when rouding-up an
7125         INTEGER_CST to a power-of-two.
7126
7127 2007-01-28  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
7128
7129         * doc/sourcebuild.texi: Add comma for clarity.
7130         * doc/extend.texi: Fix some typos.
7131         * doc/passes.texi: Likewise.
7132         * doc/cppinternals.texi: Likewise.
7133         * doc/c-tree.texi: Likewise.
7134         * doc/tree-ssa.texi: Likewise.
7135         * doc/install.texi: Likewise.
7136
7137 2007-01-27  Jan Hubicka  <jh@suse.cz>
7138
7139         * tree-sra.c (sra_walk_function): Don't rely on aliases being build.
7140         (pass_sra): Do not require alias information.
7141         * passes.c (init_optimization_passes): Add SRA
7142
7143 2007-01-27  Steven Bosscher  <steven@gcc.gnu.org>
7144
7145         * tracer.c (rest_of_handle_tracer): We already cleaned
7146         up the CFG in tracer() so don't do it here again.
7147         * cfgcleanup.c (rest_of_handle_jump2): Don't repeat
7148         cleanup_cfg here, either.  And don't call renumber_insns.
7149
7150         * cfgrtl.c (rtl_verify_flow_info_1): Don't verify that BB_END
7151         and BB_HEAD are in the insn stream here.  Instead make sure
7152         that BB_INSN is valid on all insns.  Also, do check here that
7153         there are no pending branch predictions...
7154         (rtl_verify_flow_info): ...instead of doing it here.  Checks
7155         for BB_END and BB_HEAD moved from rtl_verify_flow_info_1 to
7156         here.
7157
7158 2007-01-26  Roger Sayle  <roger@eyesopen.com>
7159
7160         * config/i386/i386.c (ix86_swap_binary_operands_p): New helper
7161         function to simplify/factorize operand order canonicalization.
7162         (ix86_fixup_binary_operands): Reorganize using the above function.
7163         (ix86_binary_operator_ok): Likewise.
7164
7165 2007-01-27  Jakub Jelinek  <jakub@redhat.com>
7166
7167         * genattrtab.c (struct attr_value_list, insn_code_values): Move to
7168         file scope from optimize_attrs.
7169         (simplify_test_exp): If insn_code_values is not NULL, use it to speed
7170         up search.
7171         (optimize_attrs): Clear insn_code_values after freeing it.
7172
7173 2007-01-26  Zdenek Dvorak <dvorakz@suse.cz>
7174
7175         * tree-ssa-address.c (create_mem_ref): Remove ", bsi" from
7176         a parts.base assignment.
7177
7178 2007-01-26  Zdenek Dvorak <dvorakz@suse.cz>
7179
7180         * tree-data-ref.c (dump_subscript): Use dump_conflict_function.
7181         (compute_subscript_distance, initialize_data_dependence_relation,
7182         finalize_ddr_dependent, analyze_ziv_subscript,
7183         analyze_siv_subscript_cst_affine,
7184         compute_overlap_steps_for_affine_univar,
7185         compute_overlap_steps_for_affine_1_2, analyze_subscript_affine_affine,
7186         analyze_siv_subscript, analyze_miv_subscript,
7187         analyze_overlapping_iterations, subscript_dependence_tester_1,
7188         compute_self_dependence, free_dependence_relation): Work
7189         with affine_fn instead of chrecs.
7190         (dump_affine_function, dump_conflict_function, affine_function_equal_p,
7191         common_affine_function, affine_function_base,
7192         affine_function_constant_p, affine_fn_op, affine_fn_plus,
7193         affine_fn_minus, affine_fn_free, conflict_fn_not_known,
7194         conflict_fn_no_dependence, free_conflict_function, free_subscripts,
7195         conflict_fn, affine_fn_cst, affine_fn_univar): New functions.
7196         (all_chrecs_equal_p): Removed.
7197         * tree-data-ref.h (affine_fn, conflict_function): New types.
7198         (struct subscript): Change type of conflicting_iterations_in_a
7199         and conflicting_iterations_in_b.
7200
7201 2007-01-26  Steve Ellcey  <sje@cup.hp.com>
7202
7203         PR other/30182
7204         * config/pa/pa.h (TARGET_HPUX_11): New.
7205         * config/pa/pa-hpux11.h (TARGET_HPUX_11): New.
7206         * config/pa/pa.c (pa_init_builtins): Use TARGET_HPUX_11.
7207
7208 2007-01-26  Daniel Berlin  <dberlin@dberlin.org>
7209         Richard Guenther  <rguenther@suse.de>
7210
7211         * tree-ssa-structalias.c (solve_graph): Handle case
7212         we merged the variable to another.
7213
7214 2007-01-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
7215
7216         * builtins.c (fold_builtin_1): Treat ccos and ccosh as 'even'
7217         functions.
7218
7219         * fold-const.c (negate_mathfn_p): Treat casin, casinh, catan,
7220         catanh, cproj, csin, csinh, ctan and ctanh as 'odd' functions.
7221
7222 2007-01-25  DJ Delorie  <dj@redhat.com>
7223
7224         * config/m32c/m32c.c (m32c_cannot_change_mode_class): We don't
7225         allow changes to modes which don't fit in those registers.
7226
7227         * reload1.c (choose_reload_regs): Check for invalid subregs before
7228         computing their locations, not after.
7229
7230 2007-01-25  Geoffrey Keating  <geoffk@apple.com>
7231
7232         PR 25127
7233         * config/rs6000/rs6000.c (first_altivec_reg_to_save): On Darwin,
7234         save Altivec registers in an eh_return function.
7235         (compute_vrsave_mask): Likewise.
7236         (rs6000_stack_info): Correct AIX/Darwin stack alignment computation
7237         for saving Altivec registers.
7238         (rs6000_emit_prologue): Don't allocate stack twice in
7239         eh_return function.  Correct expected value of altivec_save_offset
7240         when using save_world.  Describe save of R0 to stack when using
7241         save_world.  Describe stack pointer adjustment when using
7242         save_world.  Remove duplicated eh_return parameter register saving.
7243         Update sp_offset variable after save_world.
7244         * config/rs6000/t-darwin (LIB2FUNCS_STATIC_EXTRA): Remove
7245         darwin-world.asm.
7246         (LIB2FUNCS_EXTRA): Add darwin-world.asm.
7247         * config/rs6000/darwin.h (SUBTARGET_OVERRIDE_OPTIONS): -m64
7248         implies Altivec.
7249
7250 2007-01-25  Steve Ellcey  <sje@cup.hp.com>
7251
7252         * config.gcc (ia64*-*-hpux*): Make posix threads the default.
7253
7254 2007-01-25  Steve Ellcey  <sje@cup.hp.com>
7255
7256         PR other/30182
7257         * config/pa/pa.c (pa_init_builtins): Set asm names for finite routines.
7258         * config/ia64/ia64.c (ia64_init_builtins):  Ditto.
7259
7260 2007-01-25  Richard Guenther  <rguenther@suse.de>
7261
7262         * doc/invoke.texi (-Wcoverage-mismatch): Document.
7263         * common.opt (-Wcoverage-mismatch): New warning option.
7264         * coverage.c (get_coverage_counts): Ignore coverage mismatch
7265         if -Wcoverage-mismatch is given.
7266
7267 2007-01-25  Razya Ladelsky  <razya@il.ibm.com>
7268
7269         * ipa-cp.c (ipcp_insert_stage, ipcp_driver): Support for SSA.
7270         (ipcp_driver): Change to static definition.
7271         Add dumping of the ifunctions.
7272         (constant_val_insert): Remove unused parameter. Support for SSA.
7273         (ipcp_propagate_const): Support for SSA.
7274         (ipcp_profile_bb_print): Print only analyzed nodes.
7275         (ipcp_replace_map_create): Remove support for Fortran constant
7276         for now.
7277         * ipa-prop.c (ipa_method_modify_stmt,
7278         ipa_callsite_compute_param): Support for SSA.
7279         * ipa-prop.h (ipcp_driver): Remove declaration.
7280         (IS_VALID_TREE_MAP_INDEX): Add define.
7281
7282 2007-01-24  Geoffrey Keating  <geoffk@apple.com>
7283
7284         * unwind-dw2.c (execute_stack_op): Handle DW_OP_swap.
7285
7286 2007-01-24  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
7287
7288         PR middle-end/30447
7289         * builtins.c (fold_builtin_cabs): Use MPFR to evaluate a
7290         constant argument to cabs and do it without checking for
7291         -funsafe-math-optimizations.
7292
7293 2007-01-24  Douglas Gregor  <dgregor@osl.iu.edu>
7294
7295         * c-common.h (RID_FIRST_CXX0X): New.
7296         (RID_LAST_CXX0X): New.
7297         * c-opts.c (c_common_handle_option): -Wc++0x-compat is triggered
7298         by -Wall.
7299         * c.opt (Wc++0x-compat): New.
7300         * doc/invoke.texi (-Wc++0x-compat): Document.
7301
7302 2007-01-24  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
7303
7304         * builtins.c (fold_builtin_carg): New.
7305         (fold_builtin_1): Use it.
7306
7307 2007-01-24  Jan Hubicka  <jh@suse.cz>
7308
7309         * ipa-inline.c (cgraph_decide_inlining): Initialize initial_insns.
7310
7311         * ipa-inline.c (initial_insns, max_insns): Delete.
7312         (compute_max_insns): New function.
7313         (cgraph_decide_inlining_of_small_function): Use it; take minimal amount
7314         of insns as base for code growth.
7315         (cgraph_decide_inlining): Make initial_insns local; do not compute
7316         max_insns.
7317         * params.def (PARAM_INLINE_UNIT_GROWTH): Set to 60.
7318         * doc/invoke.texi (inline-unit-growth): Update docs.
7319
7320 2007-01-24  Jakub Jelinek  <jakub@redhat.com>
7321
7322         * config/i386/i386.h (x86_cmpxchg16b): Remove const.
7323         (TARGET_CMPXCHG16B): Define to x86_cmpxchg16b.
7324         * config/i386/i386.c (x86_cmpxchg16b): Remove const.
7325         (override_options): Add PTA_CX16 flag.  Set x86_cmpxchg16b
7326         for CPUs that have PTA_CX16 set.
7327
7328         PR middle-end/27416
7329         * gimplify.c (omp_check_private): New function.
7330         (gimplify_scan_omp_clauses): Use it for
7331         firstprivate/lastprivate/reduction.
7332
7333         PR middle-end/30494
7334         * gimplify.c (omp_add_variable): Don't call omp_notice_variable
7335         on TYPE_SIZE_UNIT for GOVD_LOCAL VLAs.
7336
7337         PR middle-end/30421
7338         * omp-low.c (lower_omp_for_lastprivate): Add dlist argument.
7339         If lower_lastprivate_clauses emits some statements, append them
7340         to dlist rather than body_p and to body_p append an initializer.
7341         (lower_omp_for): Adjust caller.
7342
7343 2007-01-24  Steve Ellcey  <sje@cup.hp.com>
7344
7345         * target.h (globalize_decl_name): New.
7346         * target-def.h (TARGET_ASM_GLOBALIZE_DECL_NAME): New.
7347         * output.h (default_globalize_decl_name): New.
7348         * varasm.c (asm_output_bss): Use globalize_decl_name instead of
7349         globalize_label.
7350         (globalize_decl): Ditto.
7351         (default_globalize_decl_name): New.
7352         * config/ia64/ia64.c (ia64_globalize_decl_name): New.
7353         (ia64_handle_version_id_attribute): New.
7354         (TARGET_ASM_GLOBALIZE_DECL_NAME): New.
7355         (ia64_asm_output_external): Use globalize_decl_name instead
7356         of globalize_label.
7357         * doc/extend.texi (version_id): New pragma.
7358         * doc/tm.texi (ARGET_ASM_GLOBALIZE_DECL_NAME): New target hook.
7359
7360 2007-01-24  Andreas Krebbel  <krebbel1@de.ibm.com>
7361
7362         * unwind-dw2-fde.c (get_cie_encoding): Replaced _Unwind_Word with
7363         _uleb128_t and _Unwind_SWord with _sleb128_t.
7364         * unwind-dw2.c (extract_cie_info, execute_stack_op, execute_cfa_program,
7365         uw_frame_state_for, uw_update_context_1): Likewise.
7366         * unwind-c.c (parse_lsda_header, PERSONALITY_FUNCTION): Likewise.
7367         * unwind-pe.h (read_uleb128, read_sleb128,
7368         read_encoded_value_with_base): Likewise.
7369         * unwind-generic.h: Define _sleb128_t and _uleb128_t types.
7370
7371 2007-01-24  Richard Guenther  <rguenther@suse.de>
7372
7373         * builtins.c (expand_builtin_cexpi): Get the fndecl
7374         for cexp in the correct way.
7375
7376 2007-01-24  Jan Hubicka  <jh@suse.cz>
7377
7378         * tree-ssa-dce.c (eliminate_unnecesary_stmts): Remove dead LHS of calls.
7379
7380 2007-01-24  Andreas Krebbel  <krebbel1@de.ibm.com>
7381
7382         * c-cppbuiltin.c (builtin_define_type_sizeof): New function.
7383         (c_cpp_builtins): New builtin macros: __SIZEOF_INT__, __SIZEOF_LONG__,
7384         __SIZEOF_LONG_LONG__, __SIZEOF_SHORT__, __SIZEOF_POINTER__,
7385         __SIZEOF_FLOAT__, __SIZEOF_DOUBLE__, __SIZEOF_LONG_DOUBLE__,
7386         __SIZEOF_SIZE_T__, __SIZEOF_WCHAR_T__, __SIZEOF_WINT_T__ and
7387         __SIZEOF_PTRDIFF_T__.
7388         * doc/cpp.texi: Documentation for the new builtin macros added.
7389
7390 2007-01-24  Uros Bizjak  <ubizjak@gmail.com>
7391
7392         * config/i386/i386.md (tanxf2, tan<mode>2, atan<mode>2, log<mode>2,
7393         log10<mode>2, log2<mode>2, expxf2, exp10xf2, exp2xf2): Use op2
7394         instead of operands[2] to avoid access past the end of array.
7395
7396 2007-01-24  Richard Sandiford  <richard@codesourcery.com>
7397
7398         * reload1.c (emit_reload_insns): Pass the reload register
7399         for a non-spill output reload through forget_old_reloads_1.
7400
7401 2007-01-23  Joseph Myers  <joseph@codesourcery.com>
7402
7403         * config/rs6000/rs6000-c.c (rs6000_cpu_cpp_builtins): Define
7404         _SOFT_DOUBLE if doubles use software floating-point.
7405         * config/rs6000/libgcc-ppc-glibc.ver: Export additional long
7406         double functions if _SOFT_DOUBLE, not _SOFT_FLOAT.
7407         * config/rs6000/darwin-ldouble.c: Also compile functions for
7408         hard-float without FPRs.  Use fmsub function for all __NO_FPRS__
7409         cases.  Compile extra functions if _SOFT_DOUBLE, not _SOFT_FLOAT.
7410         * config/rs6000/linuxspe.h (SUBSUBTARGET_OVERRIDE_OPTIONS): Remove
7411         commented-out long double override.
7412         (CPP_LONGDOUBLE_DEFAULT_SPEC): Likewise.
7413         * config/rs6000/eabispe.h: Likewise.
7414         * config/rs6000/rs6000.c (rs6000_override_options): Don't override
7415         long double for non-SPE.
7416         (rs6000_handle_option): Likewise.
7417         (invalid_e500_subreg): Disallow more subregs involding DImode,
7418         DFmode, TImode or TFmode.
7419         (rs6000_legitimate_offset_address_p): Check TFmode offsets for
7420         E500 double.
7421         (legitimate_lo_sum_address_p): Also check for TFmode for E500
7422         double.
7423         (rs6000_legitimize_address): Also handle TFmode for E500 double.
7424         (rs6000_legitimize_reload_address): Also handle TFmode for E500
7425         double.
7426         (rs6000_legitimate_address): Also check for TFmode for E500
7427         double.
7428         (rs6000_emit_move): Use DFmode subregs of TFmode for E500 double.
7429         (spe_build_register_parallel): Handle TFmode and TCmode.
7430         (rs6000_spe_function_arg): Handle TFmode and TCmode for E500
7431         double.
7432         (function_arg): Handle TFmode and TCmode for E500 double.
7433         (rs6000_init_libfuncs): Initialize extra libfuncs for soft double
7434         in general.
7435         (print_operand): Handle TFmode and TImode for %y.
7436         (rs6000_generate_compare): Handle TFmode comparisons for E500
7437         double.
7438         (spe_func_has_64bit_regs_p): Check for TFmode for E500 double.
7439         (rs6000_function_value): Handle TFmode and TCmode for E500 double.
7440         (rs6000_libcall_value): Handle TFmode and TCmode for E500 double.
7441         * config/rs6000/rs6000.h (CANNOT_CHANGE_MODE_CLASS): Check for
7442         TFmode for E500 double.
7443         * config/rs6000/rs6000.md (FP): Allow TF for E500 double.
7444         (floatsidf2): Enable for E500 double.
7445         (movtf_softfloat): Use rs6000_nonimmediate_operand.
7446         (extenddftf2): Change to extenddftf2_fprs.
7447         (extenddftf2): Call gen_spe_extenddftf2 or gen_extenddftf2_fprs
7448         depending on TARGET_E500_DOUBLE.
7449         (extendsftf2): Enable for E500 double.
7450         (trunctfdf2): Enable for E500 double.
7451         (trunctfsf2): Change to trunctfsf2_fprs.
7452         (trunctfsf2): Call gen_spe_trunctfsf2 or gen_trunctfsf2_fprs
7453         depending on TARGET_E500_DOUBLE.
7454         (floatsitf2): Enable for E500 double.
7455         (fix_trunctfsi2): Change to fix_trunctfsi2_fprs.
7456         (fix_trunctfsi2): Call gen_spe_fix_trunctfsi2 or
7457         gen_fix_trunctfsi2_fprs depending on TARGET_E500_DOUBLE.
7458         (negtf2): Change to negtf2_internal.
7459         (negtf2): New expander.
7460         (abstf2): Enable for E500 double.  Call gen_spe_abstf2_tst,
7461         gen_spe_abstf2_cmp or gen_abstf2_internal depending on
7462         TARGET_E500_DOUBLE and flag_unsafe_math_optimizations.
7463         (movdi_internal32): Use rs6000_nonimmediate_operand.
7464         (unnamed splitter): Likewise.
7465         * config/rs6000/spe.md (CMPTFEQ_GPR, TSTTFEQ_GPR, CMPTFGT_GPR,
7466         TSTTFGT_GPR, CMPTFLT_GPR, TSTTFLT_GPR): New unspecs.
7467         (SPE64TF, DITI): New mode macros.
7468         (frob_df_di): Change to frob_<SPE64:mode>_<DITI:mode>; allow more
7469         modes.
7470         (frob_tf_ti): New.
7471         (frob_<mode>_di_2): New.
7472         (frob_tf_di_8_2): New.
7473         (frob_di_df): Change to frob_di_<mode>; allow more modes.
7474         (frob_ti_tf): New.
7475         (frob_di_df_2): Change to frob_<DITI:mode>_<SPE64:mode>_2; allow
7476         more modes.
7477         (frob_ti_<mode>_8_2): New.
7478         (frob_ti_tf_2): New.
7479         (mov_si<mode>_e500_subreg0, mov_si<mode>_e500_subreg0_2,
7480         mov_si<mode>_e500_subreg4, mov_si<mode>_e500_subreg4_2): Allow
7481         TFmode.
7482         (mov_sitf_e500_subreg8, mov_sitf_e500_subreg8_2,
7483         mov_sitf_e500_subreg12, mov_sitf_e500_subreg12_2): New.
7484         (spe_trunctfdf2_internal1, spe_trunctfsf2, spe_extenddftf2,
7485         spe_fix_trunctfsi2, spe_fix_trunctfsi2_internal,
7486         spe_negtf2_internal, spe_abstf2_cmp, spe_abstf2_tst): New.
7487         (cmptfeq_gpr, tsttfeq_gpr, cmptfgt_gpr, tsttfgt_gpr, cmptflt_gpr,
7488         tsttflt_gp): New.
7489
7490 2007-01-23  Ian Lance Taylor  <iant@google.com>
7491
7492         * Makefile.in (OBJS-common): Reformat, alphabetize, but put
7493         insn-*.o first.
7494         (OBJS-archive): Reformat, alphabetize.
7495         (OBJS): Change out_object_file to OBJS-md.
7496
7497 2007-01-23  Uros Bizjak  <ubizjak@gmail.com>
7498
7499         * config/i386/i386.md: Use REG_P, MEM_P, CONST_INT_P, LABEL_P,
7500         JUMP_P and CALL_P predicates where applicable.
7501         * config/i386/i386.c: Ditto.
7502         * config/i386/i386.md: Ditto.
7503         * config/i386/mmx.md: Ditto.
7504         * config/i386/predicates.md: Ditto.
7505
7506 2007-01-22  Andreas Schwab  <schwab@suse.de>
7507
7508         * config/m68k/m68k.h: Fix comment.
7509
7510 2007-01-22  Jan Hubicka  <jh@suse.cz>
7511
7512         * passes.c (init_optimization_passes): Do not rerun
7513         pass_early_warn_uninitialized.
7514
7515 2007-01-22  Richard Guenther  <rguenther@suse.de>
7516
7517         PR tree-optimization/30038
7518         * tree-ssa-math-opts.c (maybe_record_sincos): New static helper
7519         function.
7520         (execute_cse_sincos_1): Likewise.
7521         (execute_cse_sincos): Likewise.
7522         (gate_cse_sincos): Likewise.
7523         (pass_cse_sincos): New pass CSEing sin() and cos() calls using
7524         the cexpi() canonicalization of sincos().
7525         * tree-pass.h (pass_cse_sincos): Declare.
7526         * passes.c (init_optimization_passes): New pass pas_cse_sincos.
7527
7528 2007-01-21  Eric Botcazou  <ebotcazou@libertysurf.fr>
7529
7530         PR rtl-optimization/29329
7531         * combine.c (replaced_rhs_insn): Rename to i2mod.
7532         (replaced_rhs_value): Rename to i2mod_new_rhs.
7533         (i2mod_old_rhs): New global variable.
7534         (combine_instructions): Adjust for above change.  Save a copy of
7535         the old RHS into i2mod_old_rhs when the contents of a REG_EQUAL
7536         note are substituted in the second instruction.
7537         (distribute_notes) <REG_DEAD>: Adjust for above change.  Do not
7538         ditch the note if it pertains to the second eliminated register
7539         and this register is mentioned in i2mod_old_rhs.
7540
7541         Revert:
7542         2006-09-12  Eric Botcazou  <ebotcazou@libertysurf.fr>
7543
7544         * combine.c (distribute_notes) <REG_DEAD>: Do not consider SETs past
7545         the insn to which the note was originally attached.
7546
7547 2007-01-21  Jan Hubicka  <jh@suse.cz>
7548
7549         * ipa-inline.c (inlining_mode): Comment, move up.
7550         (cgraph_decide_inlining_incrementally): Do not perform inlining
7551         itself; fix handling of flattening of self recursive functions.
7552         (cgraph_find_cycles): Remove.
7553         (cgraph_flatten_node): Remove.
7554         (cgraph_decide_inlining): Use incremental inliner to handle flattening.
7555         (try_inline): New function.
7556         (cgraph_early_inlining): Update call of
7557         cgraph_decide_inlining_incrementally.  Apply inlining here.
7558         (apply_inline): Update call of cgraph_decide_inlining_incrementally.
7559
7560 2007-01-21  Dirk Mueller  <dmueller@suse.de>
7561
7562         PR bootstrap/30511
7563         * tree-vrp.c (check_array_bounds): do not warn
7564         about ADDR_EXPR's of ARRAY_REF's which are immediately
7565         used in binary expressions.
7566
7567 2007-01-21  Ira Rosen  <irar@il.ibm.com>
7568
7569         * tree-vectorizer.h (struct _stmt_vec_info): Add new field
7570         read_write_dep and macros for its access.
7571         * tree-vectorizer.c (new_stmt_vec_info): Initialize the new field.
7572         * tree-vect-analyze.c (vect_analyze_data_ref_dependence): Remove
7573         argument, call vect_check_interleaving for every independent pair of
7574         data-refs. Mark loads that access the same memory location as a store
7575         in the loop.
7576         (vect_check_dependences): Remove.
7577         (vect_analyze_data_ref_dependences): Remove  vect_check_dependences
7578         call, fix the call to vect_analyze_data_ref_dependence.
7579         (vect_analyze_data_ref_access): For statements that access the same
7580         data-ref, check that they are not stores; for loads, check that there
7581         is no store that access the same location.
7582
7583 2007-01-20  Roger Sayle  <roger@eyesopen.com>
7584             Joseph Myers  <joseph@codesourcery.com>
7585
7586         * doc/invoke.texi (-fdump-rtl-combine): Fix under/overfull hbox.
7587         (-fdump-rtl-stack): Likewise.
7588         (-fno-signed-zeros): Use @minus{} for a minus sign.  Correct typo.
7589         (-mcheck-zero-division, -mcpu): Fix under/overfull hbox.
7590         (-mpt-fixed): Use @minus{} for minus sign.
7591         (Using Precompiled Headers): Fix under/overfull hbox.
7592
7593 2007-01-20  Jan Hubicka  <jh@suse.cz>
7594
7595         * tree-flow.h (struct stmt_ann_d): Move references_memory to proper
7596         place within annotation.
7597
7598 2007-01-20  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
7599
7600         * pa.c (output_move_double): Change array size of xoperands to 4.
7601
7602 2007-01-20  Jan Hubicka  <jh@suse.cz>
7603
7604         * tree-tailcall.c (adjust_return_value): Do not use RESULT_DECL
7605         as temporary.
7606
7607 2007-01-19  Ian Lance Taylor  <iant@google.com>
7608
7609         * expmed.c (expand_divmod) [TRUNC_MOD_EXPR, TRUNC_DIV_EXPR]: Cast
7610         constant to unsigned HOST_WIDE_INT before negating.
7611
7612 2007-01-19  Ian Lance Taylor  <iant@google.com>
7613
7614         * tree-ssa-operands.h (struct vuse_vec_d): Change num_vuse field
7615         to unsigned.
7616         (VUSE_VECT_ELEMENT) [ENABLE_CHECKING]: Use unsigned comparison.
7617         (VUSE_ELEMENT_PTR) [ENABLE_CHECKING]: Likewise.
7618         (SET_VUSE_VECT_ELEMENT) [ENABLE_CHECKING]: Likewise.
7619         (SET_VUSE_ELEMENT_VAR) [ENABLE_CHECKING]: Likewise.
7620         (SET_VUSE_ELEMENT_PTR) [ENABLE_CHECKING]: Likewise.
7621         (realloc_vdef, realloc_vuse): Change second parameter to
7622         unsigned.
7623         (ssa_operand_iterator_d): Change vuse_index and mayuse_index
7624         fields to unsigned.
7625         * tree-ssa-operands.c (realloc_vop): Change num_elem parameter to
7626         unsigned. Change x and lim locals to unsigned.
7627         (realloc_vdef, realloc_vuse): Change num_elem parameter to
7628         unsigned.
7629         (finalize_ssa_vuse_ops): Change old_i local to unsigned.
7630         (copy_virtual_operands): Change i and n locals to unsigned.
7631
7632 2007-01-19  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
7633
7634         PR middle-end/29335
7635         * builtins.c (fold_builtin_1): Handle builtin fdim.
7636
7637 2007-01-20  Jan Hubicka  <jh@suse.cz>
7638
7639         * tree-ssa.c (init_tree_ssa): Do not call init_alias_heapvars.
7640         * tree-ssa-structalias.c (compute_points_to_sets): Do call
7641         init_alias_heapvars.
7642         (init_alias_heapvars): Initialize only when not already initialized.
7643         (delete_alias_heapvars): Set heapvar_for_stmt to NULL.
7644
7645 2007-01-19  Roger Sayle  <roger@eyesopen.com>
7646
7647         * common.opt (fsigned-zeros): New command line option.
7648         * flags.h (HONOR_SIGNED_ZEROS): Control via flag_signed_zeros instead
7649         of flag_unsafe_math_optimizations.
7650         * opts.c (set_fast_math_flags): The -ffast-math command line option
7651         implies -fno-signed-zeros.
7652         (fast_math_flags_set_p): Likewise.
7653
7654         * doc/invoke.texi: Document new -fno-signed-zeros option, and update
7655         the documentation of -ffast-math appropriately.  Wrap long lines.
7656
7657 2007-01-19  Steve Ellcey  <sje@cup.hp.com>
7658
7659         * system.h (ASM_MAKE_LABEL_LINKONCE): Poison.
7660         * varasm.c (globalize_decl): Remove ASM_MAKE_LABEL_LINKONCE ifdef.
7661
7662 2007-01-19  Tomas Bily  <tbily@suse.cz>
7663
7664         * cgraphunit.c (cgraph_finalize_function): Updating of pid
7665         * tree-profile.c:
7666         (tree_init_ic_make_global_vars): New function
7667         (tree_init_edge_profiler): call of tree_init_ic_make_global_vars
7668         (tree_gen_ic_profiler): New function
7669         (tree_gen_ic_func_profiler): New function
7670         (tree_profiling): Added calling of tree_gen_ic_func_profiler
7671         (tree_profile_hooks): Added hook for indirec/virtual calls
7672         * value-prof.c (tree_find_values_to_profile): New case for
7673         indirect calls
7674         (tree_values_to_profile): Call for determining indirect/virtual
7675         counters
7676         (tree_indirect_call_to_profile): New function
7677         (tree_ic_transform): New function
7678         (tree_ic): New function
7679         (find_func_by_pid): New function
7680         (init_pid_map): New function
7681         (tree_value_profile_transformations): Added check for
7682         indirect/virtual call transformation
7683         * value-prof.h (enum hist_type): New counter type for
7684         indirect/virtual calls
7685         (profile_hooks): Added new hook for profiling indirect/virtual
7686         calls
7687         * profile.c (instrument_values): New case for indirect/virtual
7688         call added
7689         * gcov-io.h (GCOV_LAST_VALUE_COUNTER): Changed to 6
7690         (GCOV_COUNTER_V_INDIR): New counter type
7691         (GCOV_COUNTER_NAMES): New name of counter "indirect" added
7692         (GCOV_MERGE_FUNCTIONS): New merge function for indirect/virtual
7693         call added
7694         * cgraph.c: Definition of cgraph_max_pid
7695         (cgraph_create_node): Default init of pid attribute
7696         * cgraph.h: Declaration of cgraph_max_pid
7697         (struct cgraph_node): Added pid attribute
7698         * libgcov.c (__gcov_indirect_call_profiler): New function
7699         (__gcov_one_value_profiler_body): New function
7700         (__gcov_one_value_profiler): Body was moved to
7701         __gcov_one_value_profiler_body and calls it
7702
7703 2007-01-19  Basile Starynkevitch  <basile@starynkevitch.net>
7704
7705         * doc/gty.texi (Options): Document the mark_hook option to GTY.
7706         * gengtype.c (write_types_data, write_func_for_structure,
7707         write_types, ggc_wtd, pch_wtd): Add skip_hooks to
7708         write_types_data, ggc_wtd, pch_wtd for processing mark_hook.
7709         (walk_type, write_func_for_structure): Generate the mark_hook if
7710         needed.
7711
7712 2007-01-19  Jan Hubicka  <jh@suse.cz>
7713
7714         * ipa-inline.c (cgraph_decide_inlining_incrementally): Instead of
7715         'early' argument take inlining mode argument specifying whether to
7716         inline for size/speeed or all functions; add support for flattening;
7717         improve dumpting.
7718         (cgraph_early_inlining): Update call of decide_inlining_incrementally.
7719
7720 2007-01-19  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
7721
7722         PR c++/17947
7723         * toplev.c (warn_deprecated_use): Use %qD instead of %qs to print
7724         the name of the declared identifier.
7725
7726 2007-01-19  Dirk Mueller  <dmueller@suse.de>
7727
7728         * config/i386.h (CONDITIONAL_REGISTER_USAGE): Store
7729         result of PIC_OFFSET_TABLE_REGNUM in temporary variable to avoid
7730         duplicate evaluation.
7731
7732 2007-01-19  Uros Bizjak  <ubizjak@gmail.com>
7733
7734         * config/i386/i386.md (acos<mode>2): Rename from acossf2 and acosdf2.
7735         Macroize expander using X87MODEF12 mode macro.  Extend operand 1
7736         to XFMode, use acosxf2 and truncate result to requested mode.
7737         Use SSE_FLOAT_MODE_P to disable patterns for SSE math.
7738         (asin<mode>2): Similarly, with asin expanders.
7739         (*fscalexf4_i387): Rename from *fscalexf4.
7740         (expNcorexf3): New expander.
7741         (expxf2, exp10xf2, exp2xf2): Use expNcorexf3 expander.
7742         (exp<mode>2): Rename from expsf2 and expdf2. Macroize expander using
7743         X87MODEF12 mode macro.  Extend operand 1 to XFMode, use expxf2 and
7744         truncate result to requested mode. Use SSE_FLOAT_MODE_P to disable
7745         patterns for SSE math.
7746         (exp10<mode>2): Similarly, with exp10 expanders.
7747         (exp2<mode>2): Similarly, with exp2 expanders.
7748         (expm1<mode>2): Similarly, with expm1 expanders.
7749         (ldexp<mode>3): Similarly, with ldexp expanders.
7750         (log<mode>2, log10<mode>2, log2<mode>2, log1p<mode>2, logb<mode>2):
7751         Use gen_truncxf<mode>2_i387_noop to truncate result.
7752
7753 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
7754
7755         * config/m68k/m68k.h (PREFERRED_STACK_BOUNDARY): Define to 32
7756         for ColdFire targets.
7757
7758 2007-01-19  Nathan Sidwell  <nathan@codesourcery.com>
7759             Richard Sandiford  <richard@codesourcery.com>
7760
7761         * config/m68k/m68k.h (M68K_STATIC_CHAIN_REG_NAME): New macro.
7762         (INITIALIZE_TRAMPOLINE): Use STATIC_CHAIN_REGNUM.
7763         (__transfer_from_trampoline): Use M68K_STATIC_CHAIN_REG_NAME.
7764         * config/m68k/m68kelf.h (STATIC_CHAIN_REGNUM): Override.
7765         (M68K_STATIC_CHAIN_REG_NAME): Likewise.
7766         * config/m68k/netbsd-elf.h (M68K_STATIC_CHAIN_REG_NAME): Likewise.
7767
7768 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
7769
7770         * config/m68k/m68k.md (adddi_dilshr32): Rename to...
7771         (*adddi_dilshr32): ...this.  Fix formatting.  Remove commented-out
7772         non-canonical pattern.  Restrict to !TARGET_COLDFIRE.
7773         (*adddi_dilshr32_cf): New pattern.
7774         (adddi3, subdi3): Remove first alternatives.
7775
7776 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
7777
7778         * config/m68k/m68k.c (notice_update_cc): If an SFmode move is
7779         implemented using move.l, do not use its cc result for floating-point
7780         comparisons.
7781
7782 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
7783
7784         * config/m68k/m68k.h (EXTRA_CONSTRAINT): Stop the 'T' constraint
7785         from accepting 's' constraints if flag_pic.
7786
7787 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
7788
7789         * config/m68k/m68k.md (bordered, bunordered, buneq, bunge, bungt)
7790         (bunle, bunlt, bltgt, bordered_rev, bunordered_rev, buneq_rev)
7791         (bunge_rev, bungt_rev, bunle_rev, bunlt_rev, bltgt_rev): Change
7792         condition from TARGET_68881 to TARGET_HARD_FLOAT.
7793
7794 2007-01-19  Sandra Loosemore  <sandra@codesourcery.com>
7795
7796         * longlong.h (count_leading_zeros, COUNT_LEADING_ZEROS_0): Add
7797         ColdFire alternatives.
7798         * config/m68k/m68k.h (CLZ_DEFINED_VALUE_AT_ZERO): New macro.
7799         * config/m68k/m68k.md (clzsi2):  Define for ColdFire
7800         architectures that support ff1 instruction.
7801
7802 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
7803             Julian Brown  <julian@codesourcery.com>
7804
7805         * config/m68k/m68k.h (CONST_OK_FOR_LETTER_P): Add an 'R' case.
7806         * config/m68k/m68k.md (*movsi_cfv4): Fold into...
7807         (*movsi_cf): ...here.  Remove unnecessary 'R' from 'Rg'.
7808         Add commentary.
7809
7810 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
7811
7812         * config/m68k/m68k-protos.h (valid_mov3q_const): Take a HOST_WIDE_INT
7813         and return a bool.
7814         (output_move_const_into_data_reg, output_move_simode_const): Delete.
7815         * config/m68k/m68k.c (const_method, const_int_cost): Take a
7816         HOST_WIDE_INT instead of an rtx.
7817         (m68k_rtx_costs): Update call accordingly.
7818         (output_move_const_into_data_reg): Likewise.  Fix formatting.
7819         (valid_mov3q_const): Take a HOST_WIDE_INT instead of an rtx.
7820         Return a bool.
7821         (output_move_simode_const): Update calls after above changes.
7822         Rework to use automatic variables and predicates like MEM_P.
7823         * config/m68k/m68k.md (pushexthisi_const): Update call to
7824         valid_mov3q_const.
7825
7826 2007-01-19  Dirk Mueller  <dmueller@suse.de>
7827
7828         * tree-ssa-alias.c (perform_var_substitution): Fix typo
7829         in dump_flags test.
7830
7831 2007-01-19  Richard Guenther  <rguenther@suse.de>
7832
7833         * builtins.c (expand_builtin_cexpi): Fall back to expanding
7834         via cexp in case sincos is not available.
7835
7836 2007-01-19  Richard Guenther  <rguenther@suse.de>
7837
7838         * doc/tm.texi (TARGET_HAS_SINCOS): Document new target macro.
7839         * defaults.h (TARGET_HAS_SINCOS): Default to off.
7840         * config/linux.h (TARGET_HAS_SINCOS): Set to on if we have glibc.
7841         * config/alpha/linux.h (TARGET_HAS_SINCOS): Likewise.
7842         * config/sparc/linux.h (TARGET_HAS_SINCOS): Likewise.
7843         * config/sparc/linux64.h (TARGET_HAS_SINCOS): Likewise.
7844         * config/rs6000/linux.h (TARGET_HAS_SINCOS): Likewise.
7845         * config/rs6000/linux64.h (TARGET_HAS_SINCOS): Likewise.
7846
7847 2007-01-19  Uros Bizjak  <ubizjak@gmail.com>
7848
7849         * config/i386/i386.md (*fpatanxf3_i387, fpatan_extend<mode>xf3_i387):
7850         New insn patterns.
7851         (atan2sf3_1, atan2df3_1, atan2xf3_1): Remove insn patterns.
7852         (atan2xf3): Directly generate RTL pattern.
7853         (atan2<mode>3): Rename from atan2sf3 and atan2df3 and macroize insn
7854         patterns using X87MODEF12 mode macro.  Use fpatan_extend<mode>xf3_i387
7855         and truncate result to requested mode.  Use SSE_FLOAT_MODE_P to
7856         disable patterns for SSE math.
7857         (atan<mode>2): Rename from atansf2 and atandf2 and macroize insn
7858         patterns using X87MODEF12 mode macro.  Use fpatan_extend<mode>xf3_i387
7859         and truncate result to requested mode.  Use SSE_FLOAT_MODE_P to
7860         disable patterns for SSE math.
7861
7862 2007-01-19  Alexandre Oliva  <aoliva@redhat.com>
7863
7864         * libgcc-std.ver: Fix typo in %inherit for GCC_4.3.0.
7865
7866 2007-01-18  Roger Sayle  <roger@eyesopen.com>
7867
7868         * fold-const.c (fold_unary) <VIEW_CONVERT_EXPR>: Optimize away a
7869         VIEW_CONVERT_EXPR to the same type as it's operand.
7870
7871 2007-01-18  David Edelsohn  <edelsohn@gnu.org>
7872
7873         * config/rs6000/darwin-ldouble.c: Only build _SOFT_FLOAT if
7874         configured for long double 128.
7875
7876 2007-01-18  Mike Stump  <mrs@apple.com>
7877
7878         * config/rs6000/rs6000.c (rs6000_emit_vector_compare): Fix build
7879         error.
7880
7881 2007-01-18  Michael Meissner  <michael.meissner@amd.com>
7882
7883         * i386.c (ix86_compute_frame_layout): Make fprintf's in #if 0 code
7884         type correct.
7885
7886 2007-01-18  Jan Hubicka  <jh@suse.cz>
7887
7888         * tree-ssa-operands.c (vop_free_bucket_size): Never return value
7889         greater than NUM_VOP_FREE_BUCKETS.
7890
7891 2007-01-18  Daniel Berlin  <dberlin@dberlin.org>
7892
7893         * tree-ssa-structalias.c: Update comments.
7894         (ptabitmap_obstack): Removed.
7895         (pta_obstack): New.
7896         (oldpta_obstack): Ditto.
7897         (stats): Add a few members.
7898         (struct variable_info): Remove node, complex, address_taken, and
7899         indirect_target members. Add oldsolution member.
7900         (new_var_info): Do not initialize removed members.
7901         (constraint_expr_type): Remove INCLUDES.
7902         (constraint_graph): Add size, implicit_preds, rep,
7903         indirect_cycles, eq_rep, label, direct_nodes, and complex members.
7904         (FIRST_REF_NODE): New macro.
7905         (LAST_REF_NODE): Ditto.
7906         (FIRST_ADDR_NODE): Ditto.
7907         (find): New function.
7908         (unite): Ditto.
7909         (dump_constraint): Do not handle INCLUDES.
7910         (insert_into_complex): Do not insert duplicate constraints.
7911         (condense_varmap_nodes): Renamed and rewritten into ...
7912         (merge_node_constraints): This. Also fix bug in handling of
7913         offseted copy constraints.
7914         (clear_edges_for_node): No longer need to deal with preds at all,
7915         or removing associated preds/succs.
7916         (merge_graph_nodes): Deal with indirect_cycles.
7917         Don't deal with predecessors.
7918         (add_implicit_graph_edge): New function.
7919         (add_pred_graph_edge): Ditto.
7920         (add_graph_edge): Don't deal with predecessors.
7921         (build_constraint_graph): Removed.
7922         (build_pred_graph): New function.
7923         (build_succ_graph): Ditto.
7924         (struct scc_info): Removed in_component. Added roots, dfs, and
7925         node_mapping. Remove visited_index, unification_queue.
7926         (scc_visit): Deal with union-find we do now.
7927         Deal with cycles with REF nodes.
7928         (collapse_nodes): Renamed and rewritten to ...
7929         (unify_nodes): This.
7930         (process_unification_queue): Removed.
7931         (topo_visit): Cleanup
7932         (do_da_constraint): Use find.
7933         (do_sd_constraint): Ditto.
7934         (do_ds_constraint): Ditto.
7935         (do_complex_constraint): Ditto.
7936         (init_scc_info): Update for removed and added members.
7937         (find_and_collapse_graph_cycles): Renamed and rewritten into ...
7938         (find_indirect_cycles): This.
7939         (equivalence_class): New variable.
7940         (label_visit): New function.
7941         (perform_variable_substitution): Rewritten.
7942         (free_var_substitution_info): New function.
7943         (find_equivalent_node): Ditto.
7944         (move_complex_constraints): Ditto.
7945         (eliminate_indirect_cycles): Ditto.
7946         (solve_graph): Only propagate changed bits.
7947         Use indirect cycle elimination.
7948         Use find.
7949         (tree_id_t): Rename to tree_vi_t, delete id member, add vi member.
7950         (tree_id_eq): Renamed to ...
7951         (tree_vi_eq): This. Update for member change
7952         (insert_id_for_tree): Renamed and rewritten to ...
7953         (insert_vi_for_tree): This.
7954         (lookup_id_for_tree): Renamed and rewritten to ...
7955         (lookup_vi_for_tree): This.
7956         (get_id_for_tree): Renamed and rewritten to ...
7957         (get_vi_for_tree): Ditto.
7958         (get_constraint_exp_from_ssa_var): Update to use get_vi_for_tree.
7959         (process_constraint): Don't handle INCLUDES.
7960         Remove special ADDRESSOF case.
7961         (find_func_aliases): Rewrite to use vi functions instead of id
7962         ones.
7963         (create_function_info_for): Ditto.
7964         (create_variable_info_for): Ditto.
7965         (intra_create_variable_infos): Ditto.
7966         (merge_smts_into): Ditto.
7967         (find_what_p_points_to): Ditto.
7968         (init_base_vars): Ditto.
7969         (init_alias_vars): Ditto.
7970         (remove_preds_and_fake_succs): New function.
7971         (dump_sa_points_to_info): Dump new stats.
7972         (dump_solution_for_var): Use find.
7973         (set_used_smts): Fix formatting.
7974         (compute_points_to_sets): Updated for new functions.
7975         (ipa_pta_execute): Ditto.
7976
7977 2007-01-18  Kazu Hirata  <kazu@codesourcery.com>
7978             Richard Sandiford  <richard@codesourcery.com>
7979
7980         * doc/tm.texi (TARGET_FUNCTION_VALUE): Expand documentation of
7981         parallels.
7982         * calls.c (expand_call): If the return value is a PARALLEL,
7983         extract its first member.
7984         * config/m68k/linux.h (FUNCTION_EXTRA_EPILOGUE): Remove.
7985         * config/m68k/m68k.c (m68k_output_function_epilogue): Don't
7986         use FUNCTION_EXTRA_EPILOGUE.
7987         (m68k_function_value): Return a PARALLEL if the return value
7988         is of a pointer type.
7989         * config/m68k/netbsd-elf.h (current_function_returns_pointer)
7990         (FUNCTION_EXTRA_EPILOGUE): Remove.
7991         * config/m68k/m68k.md (D0_REG): New constant.
7992
7993 2007-01-18  Kazu Hirata  <kazu@codesourcery.com>
7994
7995         * config/m68k/m68k.c (m68k_output_function_epilogue): Don't
7996         output a NOP for empty epilogues.
7997
7998 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
7999
8000         * config/m68k/m68k.c (m68k_use_return_insn): Update comments
8001         before function.  Extend register save check to include all
8002         registers, not just integer ones.
8003
8004 2007-01-18  Kazu Hirata  <kazu@codesourcery.com>
8005
8006         * config/m68k/m68k-protos.h (use_return_insn): Rename to...
8007         (m68k_use_return_insn): ...this.
8008         * config/m68k/m68k.h (USE_RETURN_INSN): Delete.
8009         * config/m68k/m68k.c (use_return_insn): Rename to...
8010         (m68k_use_return_insn): ...this.
8011         * config/m68k/m68k.md (return): Use m68k_use_return_insn instead
8012         of USE_RETURN_INSN.
8013
8014 2007-01-18  Nathan Sidwell  <nathan@codesourcery.com>
8015
8016         * config/m68k/fpgnulib.c (__truncdfsf2): Implement round to
8017         nearest even, fix denormal rounding overflow.
8018
8019 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
8020
8021         * config/m68k/m68k.md (movsf_cf_hard): Use fsmove instead of
8022         f%$smove and f%$move.
8023         (movdf_cf_hard): Use fdmove for cases 0 and 3 and fmove for case 1.
8024         (extendsfdf2_cf): Use fdmove instead of f%&move.
8025         (truncdfsf2_cf): Use fsmove instead of f%$smove.
8026         (add<mode>3_cf, sub<mode>3_cf): Use <FP:prec> instead of <FP:round>.
8027
8028 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
8029
8030         * config/m68k/m68k.md (movdf_cf_hard): Use output_move_double for
8031         GPR<-GPR moves.
8032
8033 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
8034
8035         * real.h (real_format): Add a canonical_nan_lsbs_set field.
8036         (coldfire_single_format): Declare.
8037         (coldfire_double_format): Likewise.
8038         * real.c (encode_ieee_single): Use canonical_nan_lsbs_set instead
8039         of qnan_msb_set to determine the lower bits of a canonical
8040         NaN significand.
8041         (encode_ieee_double): Likewise.
8042         (encode_ieee_quad): Likewise.
8043         (ieee_single_format): Initialize canonical_nan_lsbs_set.
8044         (mips_single_format): Likewise.
8045         (ieee_double_format): Likewise.
8046         (mips_double_format): Likewise.
8047         (ieee_extended_motorola_format): Likewise.
8048         (ieee_extended_intel_96_format): Likewise.
8049         (ieee_extended_intel_128_format): Likewise.
8050         (ieee_extended_intel_96_round_53_format): Likewise.
8051         (ibm_extended_format): Likewise.
8052         (mips_extended_format): Likewise.
8053         (ieee_quad_format): Likewise.
8054         (mips_quad_format): Likewise.
8055         (vax_f_format): Likewise.
8056         (vax_d_format): Likewise.
8057         (vax_g_format): Likewise.
8058         (i370_single_format): Likewise.
8059         (i370_double_format): Likewise.
8060         (decimal_single_format): Likewise.
8061         (decimal_double_format): Likewise.
8062         (decimal_quad_format): Likewise.
8063         (c4x_single_format): Likewise.
8064         (c4x_extended_format): Likewise.
8065         (real_internal_format): Likewise.
8066         (coldfire_single_format): New real_format.
8067         (coldfire_double_format): Likewise.
8068         * config/pdp11/pdp11.c (pdp11_f_format): Initialize
8069         canonical_nan_lsbs_set.
8070         (pdp11_d_format): Likewise.
8071         * config/m68k/m68k.c (override_options): Override REAL_FORMAT_MODE
8072         if TARGET_COLDFIRE_CPU.
8073
8074 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
8075
8076         * config/m68k/m68k-protos.h (m68k_output_pic_call): Delete.
8077         (output_call, m68k_legitimize_call_address): Declare.
8078         * config/m68k/m68k.h (EXTRA_CONSTRAINT): Remove unnecessary
8079         parenthesees.  Add support for a 'W' constraint.
8080         (LEGITIMATE_PIC_OPERAND_P): Remove SYMBOL_REF_FLAG handling.
8081         (PRINT_OPERAND_PUNCT_VALID_P): Remove comment about 'o'.
8082         (m68k_symbolic_call, m68k_symbolic_jump): Declare.
8083         * config/m68k/m68k.c (m68k_symbolic_call, m68k_symbolic_jump): New
8084         variables.
8085         (override_options): Initialize them.  Do not set flag_no_function_cse
8086         for TARGET_ID_SHARED_LIBRARY.
8087         (m68k_output_pic_call): Delete.
8088         (m68k_legitimize_call_address): New function.
8089         (print_operand): Remove the %o prefix.  Handle the %p prefix.
8090         (output_call): New function.
8091         (m68k_output_mi_thunk): Use m68k_symbolic_jump.  Always load the
8092         target address from the GOT if symbolic jumps are not allowed.
8093         * config/m68k/m68k.md (call, general_operand): Do not set
8094         SYMBOL_REF_FLAG.  Use m68k_legitimize_call_address instead.
8095         Merge separate flag_pic and !flag_pic define_insns into...
8096         (*call, *call_value): ...these new patterns.  Match the address
8097         rather than the containing MEM and require it to be a call_operand.
8098         Use output_call to generate the asm template.
8099         * config/m68k/predicates.md (const_call_operand): New predicate.
8100         (call_operand): Likewise.
8101
8102 2007-01-18  Nathan Sidwell  <nathan@codesourcery.com>
8103
8104         * config/m68k/m68k.h (REGISTER_MOVE_COST): Simplify definition.
8105         (STACK_GROWS_DOWNWARD): Define to 1.
8106         (FUNCTION_VALUE, LIBCALL_VALUE, FUNCTION_VALUE_REGNO_P): Equivocate
8107         comments, emphasizing that these values are only defaults.
8108         * config/m68k/linux.h (LINK_SPEC): Fix formatting in #undef.
8109         * config/m68k/m68k.c (const_method): Remove trailing whitespace.
8110
8111 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
8112
8113         * config/m68k/m68k.md (cmpsi): Remove outdated flag_pic handling.
8114
8115 2007-01-18  Kazu Hirata  <kazu@codesourcery.com>
8116             Richard Sandiford  <richard@codesourcery.com>
8117
8118         * config/m68k/m68k.h (DATA_REGNO_P, ADDRESS_REGNO_P, INT_REGNO_P)
8119         (FP_REGNO_P): New macros.
8120         (REGNO_OK_FOR_INDEX_P, REGNO_OK_FOR_BASE_P, REGNO_OK_FOR_DATA_P)
8121         (REGNO_OK_FOR_FP_P, REG_OK_FOR_INDEX_P, REG_OK_FOR_BASE_P): Use them.
8122         (EH_RETURN_STACKADJ_RTX): Use A0_REG.
8123         * config/m68k/m68k.c (m68k_regno_mode_ok): Use the new REGNO macros.
8124
8125 2007-01-18  Nathan Sidwell  <nathan@codesourcery.com>
8126
8127         * config.gcc (m68k-*-aout*, m68k-*-coff*, m68020-*-elf*, m68k-*-elf*)
8128         (m68k-*-uclinuxoldabi, m68k-*-uclinux*, m68k-*-rtems*): Add t-floatlib
8129         to $tmake_file.
8130         * config/m68k/t-floatlib: New file, extracting common code from...
8131         * config/m68k/t-m68kbare, config/m68k/t-m68kelf,
8132         * config/m68k/t-uclinux: Here.
8133         * config/m68k/fpgnulib.c: Do not compile extendeed precision
8134         routines on ColdFire targets.
8135
8136 2007-01-18  Nathan Sidwell  <nathan@codesourcery.com>
8137
8138         * config.gcc (m68k-*-aout*, m68k-*-coff*, m68020-*-elf*, m68k-*-elf*)
8139         (m68010-*-netbsdelf*, m68k*-*-netbsdelf*, m68k*-*-openbsd*)
8140         (m68k-*-uclinuxoldabi, m68k-*-uclinux*, m68k-*-linux*)
8141         (m68k-*-rtems*): Use tm_file rather than m68k/m68k.h and
8142         explicitly set MOTOROLA to 1.
8143         * config/m68k/m68k.h (MOTOROLA): Simplify definition accordingly.
8144
8145 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
8146             Nathan Sidwell  <nathan@codesourcery.com>
8147
8148         * config/m68k/m68k.h (PCC_STATIC_STRUCT_RETURN): Delete.
8149         (ASM_OUTPUT_REG_PUSH, ASM_OUTPUT_REG_POP): Add MOTOROLA cases.
8150         * config/m68k/coff.h (REGISTER_PREFIX_MD): Delete.
8151         * config/m68k/m68020-elf.h (LIB_SPEC): Delete.
8152         * config/m68k/m68k-none.h (CC1_SPEC, CPP_SUBTARGET_SPEC): Delete.
8153         * config/m68k/m68kelf.h (IMMEDIATE_PREFIX, REGISTER_PREFIX_MD)
8154         (ASM_OUTPUT_REG_PUSH, ASM_OUTPUT_REG_POP): Delete.
8155         (NO_DOLLAR_IN_LABEL, PCC_STATIC_STRUCT_RETURN): Don't undefine.
8156         (BSS_ASM_OP, ASM_OUTPUT_SKIP, ASM_OUTPUT_ASCII): Delete.
8157         * config/m68k/m68kemb.h (PCC_STATIC_STRUCT_RETURN): Don't undefine.
8158         * config/m68k/linux.h (SIZE_TYPE, PTRDIFF_TYPE, WCHAR_TYPE)
8159         (WCHAR_TYPE_SIZE, TARGET_OBJFMT_CPP_BUILTINS): Delete.
8160         (TARGET_OS_CPP_BUILTINS): Don't define mc68000 and mc68020 here.
8161         (DBX_REGISTER_NUMBER): Delete.
8162         * config/m68k/netbsd-elf.h (IMMEDIATE_PREFIX): Delete.
8163         (PCC_STATIC_STRUCT_RETURN): Don't undefine.
8164         * config/m68k/openbsd.h (PCC_STATIC_STRUCT_RETURN): Define.
8165
8166 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
8167
8168         * config.gcc (m68k-*-uclinux*): Add flat.h to $tm_file.
8169         * config/flat.h: New file.
8170         * crtstuff.c (USE_PT_GNU_EH_FRAME): Don't define if
8171         OBJECT_FORMAT_FLAT.
8172         * config/m68k/m68k.h (ASM_PREFERRED_EH_DATA_FORMAT): Do not use
8173         indirect references for -msep-data or -mid-shared-library.
8174         Do not use PC-relative code addresses either.
8175         * config/m68k/m68k.c (override_options): Restrict -fPIC error
8176         to -mpcrel.
8177         * config/m68k/uclinux.h (STARTFILE_SPEC): Define.  Use Scrt1.o
8178         for shared libraries and crt1.o for executables.  Use crti.o and
8179         crtbegin.o.
8180         (ENDFILE_SPEC): Use crtend.o and crtn.o.
8181         (LIB_SPEC): Suppress -Rlibc.gdb if -static-libc is given.
8182         Do not add -elf2flt or -shared-lib-id options here.
8183         (LINK_SPEC): Define.  Pass -elf2flt if no -elf2flt option is given.
8184         Pass -shared-lib-id if -mid-shared-library, taking the library
8185         identifier from -mshared-library-id if given, otherwise
8186         defaulting to 0.
8187         (EH_FRAME_IN_DATA_SECTION): Do not undefine.
8188         (INIT_SECTION_ASM_OP, FINI_SECTION_ASM_OP): Likewise.
8189         (TARGET_OS_CPP_BUILTINS): Define __GXX_MERGED_TYPEINFO_NAMES=0
8190         and __GXX_TYPEINFO_EQUALITY_INLINE=0 if -mid-shared-library.
8191         (DRIVER_SELF_SPECS): Map unadorned PIC options to -msep-data.
8192         * config/m68k/t-uclinux (EXTRA_MULTILIB_PARTS): Add crtbegin.o
8193         and crtend.o.
8194         * config/m68k/lb1sf68.asm (PICCALL): Use an lea and pc-relative
8195         jump sequence for ISA A and ISA A+.
8196         (PICJUMP): Likewise.
8197
8198 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
8199
8200         * config.gcc (m68k-*-uclinux*): Base the port on the common
8201         and m68k GNU/Linux files rather than on the generic ELF ones.
8202         * config/m68k/uclinux.h (TARGET_VERSION): Override.
8203         (TARGET_OS_CPP_BUILTINS): Use LINUX_TARGET_OS_CPP_BUILTINS.
8204
8205 2007-01-18  Julian Brown  <julian@codesourcery.com>
8206             Richard Sandiford  <richard@codesourcery.com>
8207
8208         * config/m68k/m68k.h (LONG_DOUBLE_TYPE_SIZE): Make 64-bit on ColdFire.
8209         (LIBGCC2_LONG_DOUBLE_TYPE_SIZE): Likewise.
8210         * config/m68k/netbsd-elf.h (LIBGCC2_LONG_DOUBLE_TYPE_SIZE): Undefine
8211         before redefining.
8212         * config/m68k/uclinux-oldabi.h (LONG_DOUBLE_TYPE_SIZE): Redefine to
8213         80 unconditionally.
8214         (LIBGCC2_LONG_DOUBLE_TYPE_SIZE): Likewise.
8215
8216 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
8217
8218         * doc/install.texi: Document m68k-uclinuxoldabi.
8219         * config.gcc (m68k-*-uclinuxoldabi): New configuration.
8220         * config/m68k/uclinux-oldabi.h: New file, copied from
8221         config/m68k/uclinux.h.
8222
8223 2007-01-18  Kaz Kojima  <kkojima@rr.iij4u.or.jp>
8224
8225         * config/m32r/m32r-protos.h (m32r_expand_epilogue): Declare it.
8226         * config/m32r/m32r.c (m32r_setup_incoming_varargs): Use gen_frame_mem.
8227         (m32r_compute_frame_size): Use unsigned for regno.
8228         (m32r_reload_lr): Use gen_frame_mem.
8229         (pop): New.
8230         (m32r_output_function_epilogue): Don't output the function epilogue
8231         textually here.
8232         (m32r_expand_epilogue): New.
8233         (direct_return): Return false if the function has the interrupt
8234         attribute.
8235         (m32r_hard_regno_rename_ok): Remove code for the textual epilogue.
8236         * config/m32r/m32r.md (epilogue): New expander.
8237         (return_lr, return_rte): New insns.
8238         (return): Make it expander.
8239         (return_normal): New expander.
8240
8241 2007-01-18  Josh Conner  <jconner@apple.com>
8242
8243         PR target/30485
8244         * config/rs6000/rs6000.c (rs6000_emit_vector_compare): Add
8245         support for UNLE, UNLT, UNGE, and UNGT.
8246
8247 2007-01-18  Jan Hubicka  <jh@suse.cz>
8248
8249         * tree-vrp.c (finalize_jump_threads): Do not call cleanup_cfg by hand.
8250         * tree-tailcall (add_virtual_phis): Likewise.
8251         (optimize_tail_call): Return TODOs.
8252         (execute_tail_calls): Return TODOs.
8253         * tree-ssa-ccp (execute_fold_all_builtins): Do cleanup_cfg via TODO.
8254         * tree-cfgcleanup.c (cleanup_tree_cfg_loop): Return if something
8255         changed.
8256         * tree-ssa-forwprop.c (tree_ssa_forward_propagate_single_use_value):
8257         Cleanup cfg using TODO.
8258         * tree-flow.h (cleanup_tree_cfg_loop): Update prototype.
8259         * passes.c (execute_function_todo): When cleanup did something, remove
8260         unused locals.
8261         * tree-cfg.c (pass_build_cfg): Add cleanup_cfg TODO.
8262         (make_edges): Don't cleanup_cfg.
8263
8264 2007-01-18  Uros Bizjak  <ubizjak@gmail.com>
8265
8266         * reg-stack.c (subst_stack_regs_pat) [UNSPEC_SINCOS_COS,
8267         UNSPEC_XTRACT_FRACT]: Use generic code for instructions that
8268         operate on the top of stack.
8269         [UNSPEC_SINCOS_SIN, UNSPEC_XTRACT_EXP, UNSPEC_TAN]: Rewrite
8270         register handling of instructions that output to the second
8271         stack slot.
8272         [UNSPEC_TAN_ONE, UNSPEC_TAN_TAN]: Remove.
8273         (move_for_stack_reg): Special-case check for dead destination
8274         stack slot for constant load of 1.0 inside UNSPEC_TAN.
8275
8276         * config/i386/i386.md (UNSPEC_TAN): New constant.
8277         (UNSPEC_TAN_ONE, UNSPEC_TAN_TAN): Remove.
8278         (fptanxf4_i387, fptan_extend<mode>xf4_i387): New patterns
8279         to correctly model move of constant 1.0 to top stack slot.
8280         (*tandf3_1, *tansf3_1, *tanxf3_1): Remove insn patterns.
8281         (unnamed peephole2 pattern): Remove corresponding peephole2
8282         pattern that optimizes tan insn and loading of constant 1.0.
8283         (tanxf2): Use fptanxf4_i387.
8284         (tan<mode>2): Rename from tansf2 and tandf2 and macroize insn
8285         patterns using X87MODEF12 mode macro.  Use fptan_extend<mode>xf4_i387
8286         and truncate result to requested mode.  Use SSE_FLOAT_MODE_P to
8287         disable patterns for SSE math.
8288         (sincos<mode>3): Use truncxf<mode>2_i387_noop for truncation.
8289         (fyl2x_extend<mode>xf3_i387): Use X87MODEF12 for operand 1.
8290
8291 2007-01-18  Dirk Mueller  <dmueller@suse.de>
8292             Richard Guenther <rguenther@suse.de>
8293
8294         PR diagnostic/8268
8295         * doc/invoke.texi (Warray-bounds): Document -Warray-bounds.
8296         * common.opt (Warray-bounds): Add new warning option.
8297         * c-opts.c (c_common_handle_option): Define -Warray-bounds
8298         if -Wall is given.
8299         * Makefile.in: make tree-vrp.o depend on toplev.h
8300         * tree-vrp.c (vrp_finalize): Call check_array_refs if -Warray-bounds
8301         is enabled.
8302         (check_array_refs, check_array_bounds, check_array_ref): New.
8303
8304 2007-01-18  Jan Hubicka  <jh@suse.cz>
8305
8306         * tree-ssa-ccp.c (ccp_finalize): Return if something changed.
8307         (execute_ssa_ccp): Return flags conditionally.
8308         * tree-ssa-propagate.c (substitue_and_fold): Return if something was
8309         changed.
8310         * tree-ssa-propagate.h (substitute_and_fold): Update prototype.
8311
8312 2007-01-18  Steven Bosscher  <steven@gcc.gnu.org>
8313
8314         * cfgcleanup.c (cleanup_cfg): Detect cfglayout mode and set
8315         the CLEANUP_CFGLAYOUT flag when in cfglayout mode.
8316
8317         * Makefile.c (GTFILES): Add cfglayout.h.
8318         * gengtype.c (open_base_files): Likewise.
8319         * cfglayout.c (cfg_layout_function_footer,
8320         cfg_layout_function_header) Reindent to make gengtype happy.
8321         * cfglayout.h (cfg_layout_function_footer,
8322         cfg_layout_function_header): Add GTY(()) marker.
8323
8324         * ifcvt.c (noce_try_sign_mask): Make sure INSN_B is non-null.
8325
8326 2007-01-18  Ben Elliston  <bje@au.ibm.com>
8327
8328         * genautomata.c (write_automata): Include xstrerror output in the
8329         error message if writing the DFA description file fails.
8330
8331 2007-01-17  H.J. Lu  <hongjiu.lu@intel.com>
8332
8333         * config/mips/mips-protos.h (mips_output_external): Make it
8334         return void.
8335         * config/mips/iris.h (TARGET_ASM_EXTERNAL_LIBCALL): Removed.
8336         * config/mips/mips.c (irix_output_external_libcall): Likewise.
8337         (extern_list): Likewise.
8338         (extern_head): Likewise.
8339         (TARGET_ASM_FILE_END): Likewise.
8340         (mips_file_end): Likewise.
8341         (mips_output_external): Rewritten.
8342
8343 2007-01-18  Ben Elliston  <bje@au.ibm.com>
8344
8345         * genpreds.c (write_insn_preds_c): Only write out the function
8346         body for regclass_for_constraint if we have register constraints.
8347
8348 2007-01-17  Tom Tromey  <tromey@redhat.com>
8349
8350         * doc/sourcebuild.texi (libgcj Tests): Use sourceware.org.
8351         * doc/install.texi (Testing): Use sourceware.org.
8352         (Binaries): Likewise.
8353         (Specific): Likewise.
8354         * doc/contrib.texi (Contributors): Use sourceware.org.
8355
8356 2007-01-17  Anatoly Sokolov <aesok@post.ru>
8357
8358         * config/avr/avr.h (AVR_HAVE_LPMX): New macro.
8359         (AVR_ENHANCED): Rename to ...
8360         (AVR_HAVE_MUL): ... new.
8361         (avr_enhanced_p): Rename to ...
8362         (avr_have_mul_p): ... new.
8363         (TARGET_CPU_CPP_BUILTINS): Use 'avr_have_mul_p' instead of
8364         'avr_enhanced_p' for "__AVR_ENHANCED__". Define "__AVR_HAVE_MUL__".
8365         * config/avr/avr.c (avr_enhanced_p): Rename to ...
8366         (avr_have_mul_p): ... new.
8367         (base_arch_s): Rename 'enhanced' to 'have_mul'.
8368         (avr_override_options): Use 'avr_have_mul_p' and 'have_mul' instead of
8369         'avr_enhanced_p' and 'enhanced'.
8370         (ashlhi3_out, ashrhi3_out, lshrhi3_out, avr_rtx_costs): Use
8371         AVR_HAVE_MUL instead of AVR_ENHANCED.
8372         * avr.md (*tablejump_enh): Use AVR_HAVE_LPMX instead of AVR_ENHANCED.
8373         (mulqi3, *mulqi3_enh, *mulqi3_call, mulqihi3, umulqihi3, mulhi3,
8374         *mulhi3_enh, *mulhi3_call, mulsi3, *mulsi3_call): Use AVR_HAVE_MUL
8375         instead of AVR_ENHANCED.
8376         (*tablejump_enh): Use AVR_HAVE_LPMX instead of AVR_ENHANCED.
8377         * libgcc.S: Use __AVR_HAVE_MUL__ instead of __AVR_ENHANCED__.
8378         (__tablejump__): Use __AVR_HAVE_LPMX__ instead of __AVR_ENHANCED__.
8379
8380 2007-01-17  Ian Lance Taylor  <iant@google.com>
8381
8382         * vec.h (VEC_reserve_exact): Define.
8383         (vec_gc_p_reserve_exact): Declare.
8384         (vec_gc_o_reserve_exact): Declare.
8385         (vec_heap_p_reserve_exact): Declare.
8386         (vec_heap_o_reserve_exact): Declare.
8387         (VEC_OP (T,A,reserve_exact)): New static inline function, three
8388         versions.
8389         (VEC_OP (T,A,reserve)) [all versions]: Remove handling of
8390         negative parameter.
8391         (VEC_OP (T,A,alloc)) [all versions]: Call ...reserve_exact.
8392         (VEC_OP (T,A,copy)) [all versions]: Likewise.
8393         (VEC_OP (T,a,safe_grow)) [all versions]: Likewise.
8394         * vec.c (calculate_allocation): Add exact parameter.  Change all
8395         callers.
8396         (vec_gc_o_reserve_1): New static function, from vec_gc_o_reserve.
8397         (vec_gc_p_reserve, vec_gc_o_reserve): Call vec_gc_o_reserve_1.
8398         (vec_gc_p_reserve_exact, vec_gc_o_reserve_exact): New functions.
8399         (vec_heap_o_reserve_1): New static function, from vec_heap_o_reserve.
8400         (vec_heap_p_reserve, vec_heap_o_reserve): Call vec_heap_o_reserve_1.
8401         (vec_heap_p_reserve_exact): New function.
8402         (vec_heap_o_reserve_exact): New function.
8403
8404 2007-01-17  Jan Hubicka  <jh@suse.cz>
8405
8406         * ipa-type-escape.c (look_for_casts): Revamp using handled_component_p.
8407
8408 2007-01-17  Eric Christopher  <echristo@apple.com>
8409
8410         * config.gcc: Support core2 processor.
8411
8412 2007-01-16  Jan Hubicka  <jh@suse.cz>
8413
8414         * tree-ssanames.c (release_dead_ssa_names): Instead of ggc_freeing
8415         the names, just unlink the chain so we don't crash on dangling pointers
8416         to dead SSA names.
8417
8418 2007-01-16  Jan Hubicka  <jh@suse.cz>
8419
8420         * cgraph.h (cgraph_decide_inlining_incrementally): Kill.
8421         * tree-pass.h: Reorder to make IPA passes appear toegher.
8422         (pass_early_inline, pass_inline_parameters, pass_apply_inline): Declare.
8423         * cgraphunit.c (cgraph_finalize_function): Do not compute inling
8424         parameters, do not call early inliner.
8425         * ipa-inline.c: Update comments.  Include tree-flow.h
8426         (cgraph_decide_inlining): Do not compute inlining parameters.
8427         (cgraph_decide_inlining_incrementally): Return TODOs; assume to
8428         be called with function context set up.
8429         (pass_ipa_inline): Remove unreachable functions before pass.
8430         (cgraph_early_inlining): Simplify assuming to be called from the
8431         PM as local pass.
8432         (pass_early_inline): New pass.
8433         (cgraph_gate_ipa_early_inlining): New gate.
8434         (pass_ipa_early_inline): Turn into simple wrapper.
8435         (compute_inline_parameters): New function.
8436         (gate_inline_passes): New gate.
8437         (pass_inline_parameters): New pass.
8438         (apply_inline): Move here from tree-optimize.c
8439         (pass_apply_inline): New pass.
8440         * ipa.c (cgraph_remove_unreachable_nodes): Verify cgraph after
8441         transforming.
8442         * tree-inline.c (optimize_inline_calls): Return TODOs rather than
8443         doing them by hand.
8444         (tree_function_versioning): Do not allocate dummy struct function.
8445         * tree-inline.h (optimize_inline_calls): Update prototype.
8446         * tree-optimize.c (execute_fixup_cfg): Export.
8447         (pass_fixup_cfg): Remove
8448         (tree_rest_of_compilation): Do not apply inlines.
8449         * tree-flow.h (execute_fixup_cfg): Declare.
8450         * Makefile.in (gt-passes.c): New.
8451         * passes.c: Include gt-passes.h
8452         (init_optimization_passes): New passes.
8453         (nnodes, order): New static vars.
8454         (do_per_function_toporder): New function.
8455         (execute_one_pass): Dump current pass here.
8456         (execute_ipa_pass_list): Don't dump current pass here.
8457
8458 2007-01-16  Janis Johnson  <janis187@us.ibm.com>
8459
8460         * config/dfp-bit.c (dfp_compare_op): Return separate value for NaN.
8461         (DFP_NE, DFP_LE, DFP_GE): Return false for NaN.
8462
8463 2007-01-16  David Edelsohn  <edelsohn@gnu.org>
8464
8465         * config/rs6000/darwin-ldouble.c: Build file for SOFT_FLOAT.
8466         (strong_alias): Define.
8467         (__gcc_qmul): Provide non-FMA for soft-float.
8468         (__gcc_qdiv): Same.
8469         (__gcc_qneg): New.
8470         (__gcc_qeq): New.
8471         (__gcc_qle): New.
8472         (__gcc_qge): New.
8473         (__gcc_qunord): New.
8474         (__gcc_stoq): New.
8475         (__gcc_dtoq): New.
8476         (__gcc_qtos): New.
8477         (__gcc_qtod): New.
8478         (__gcc_qtoi): New.
8479         (__gcc_qtou): New.
8480         (__gcc_itoq): New.
8481         (__gcc_utoq): New.
8482         (fmsub): New.
8483         * config/rs6000/rs6000.c (rs6000_init_libfuncs): Initialize
8484         soft-float functions.
8485         * config/rs6000/libgcc-ppc-glibc.ver: Version soft-float symbols.
8486         * config/rs6000/sysv4.h (SUBTARGET_OVERRIDE_OPTIONS): Do not warn
8487         about long double soft float.
8488
8489 2007-01-16  Dorit Nuzman  <dorit@il.ibm.com>
8490             Tehila Meyzels  <tehila@il.ibm.com>
8491
8492         * tree-vectorizer.h (is_pattern_stmt_p): New.
8493         * tree-vect-analyze.c (vect_determine_vectorization_factor): Fix
8494         formatting (tabs instead of spaces). Cleanup and clarify setting
8495         of STMT_VINFO_VECTYPE. Call is_pattern_stmt_p.
8496         * tree-vect-transform.c (vect_get_vec_def_for_operand): Fix typo.
8497         (vectorizable_type_demotion): Check that types are integral.
8498         (vectorizable_type_promotion): Likewise.
8499         (vectorizable_store): Fix typo.  Eliminate new-line at end of
8500         comments.
8501
8502 2007-01-16  Jan Hubicka  <jh@suse.cz>
8503
8504         * tree-ssanames.c (release_dead_ssa_names): Remove invalidated
8505         cgraph edges too.
8506
8507 2007-01-15  Eric Christopher  <echristo@apple.com>
8508
8509         * ifcvt.c: Include vec.h, vecprim.h.
8510         (check_cond_move_block): New argument regs.
8511         Reorganize. Add registers used to regs.
8512         (cond_move_process_if_block): Use regs set above as
8513         loop bounds.
8514
8515 2007-01-15  Eric Christopher  <echristo@apple.com>
8516
8517         * config/darwin.h: Update copyright.
8518         (TARGET_OPTION_TRANSLATE_TABLE): Add umbrella.
8519         (LINK_COMMAND_SPEC): Add -u.
8520         (LINK_SPEC): Fix umbrella for above.
8521
8522 2007-01-15  Joseph S. Myers  <joseph@codesourcery.com>
8523
8524         * config/soft-fp/op-common.h, config/soft-fp/op-4.h: Update from
8525         glibc CVS.
8526
8527 2007-01-15  Tom Tromey  <tromey@redhat.com>
8528
8529         * doc/sourcebuild.texi (libgcj Tests): Don't mention jacks.
8530         * doc/install.texi (Testing): Don't mention jacks.
8531         (Configuration): Document --enable-java-maintainer-mode.  Move
8532         --with-java-home to libgcj-specific section.  Document
8533         --with-ecj-jar.
8534         (Prerequisites): Mention --enable-java-maintainer-mode, ecj1.
8535
8536 2007-01-15  Jan Hubicka  <jh@suse.cz>
8537
8538         * tree-ssa-dce.c (DCE_TODOs): New.
8539         (propagate_necessity): Return if something changed.
8540         (eliminate_unnecessary_stmts): Likewise.
8541         (perform_tree_ssa_dce): Return TODO flags when needed.
8542         (pass_dce, pass_dce_loop, pass_cd_dce): Remove TODO flags.
8543
8544 2007-01-15  Uros Bizjak  <ubizjak@gmail.com>
8545
8546         * config/i386/i386.md (fyl2xxf3_i387): Rename from fyl2x_xf3.
8547         (fyl2x_extend<mode>xf3_i387): New insn pattern.
8548         (log<mode>2): Rename from logsf2 and logdf2 and macroize insn
8549         patterns using X87MODEF12 mode macro.  Extend operand 1
8550         to XFmode. Use SSE_FLOAT_MODE_P to disable patterns for SSE math.
8551         (log10<mode>2): Ditto.
8552         (log2<mode>2): Ditto.
8553         (log1p<mode>2): Ditto.
8554         (logb<mode>2): Ditto.
8555         (fyl2xp1xf3_i387): Rename from fyl2xp1_xf3.
8556         (fyl2xp1_extend<mode>xf3_i387): New insn pattern.
8557         (*fxtractxf3_i387): Rename from *fxtractxf3.
8558         (fxtract_extend<mode>xf3_i387): New insn pattern.
8559         (ilogbsi2): Use match_dup 3, not match_operand:XF 3.
8560         * config/i386/i386.c (ix86_emit_i387_log1p): Use gen_fyl2xp1xf3_i387()
8561         and gen_fyl2xxf3_i387().
8562
8563 2007-01-14  Zdenek Dvorak <dvorakz@suse.cz>
8564
8565         * loop-unswitch.c (unswitch_loop): Do not call fix_loop_placement.
8566         * cfgloopmanip.c (fix_loop_placement): Made static.  Use
8567         get_loop_exit_edges.  Changed return type to bool.
8568         * cfgloop.h (fix_loop_placement): Declaration removed.
8569
8570 2007-01-14  Dorit Nuzman  <dorit@il.ibm.com>
8571
8572         * param.h (MIN_VECT_LOOP_BOUND): New.
8573         * params.def (MIN_VECT_LOOP_BOUND): New.
8574         * tree-vectorizer.c (slpeel_tree_peel_loop_to_edge): Takes another
8575         argument - minimum threshold for number of iterations.
8576         * tree-vectorizer.h (slpeel_tree_peel_loop_to_edge): Add another
8577         argument to declaration.
8578         * tree-vect-analyze.c (vect_analyze_operations): Check value of
8579         MIN_VECT_LOOP_BOUND.
8580         * tree-vect-transform.c (vect_do_peeling_for_loop_bound): Call
8581         slpeel_tree_peel_loop_to_edge with additional argument.
8582         (vect_do_peeling_for_alignment): Likewise.
8583         * doc/invoke.texi (min-vect-loop-bound): Document new param option.
8584
8585 2007-01-14  Uros Bizjak  <ubizjak@gmail.com>
8586
8587         PR target/30413
8588         * config/i386/i386.c (print_operand) ['z']: Output 'b' for
8589         operands of size 1.
8590
8591 2007-01-14  Jan Hubicka  <jh@suse.cz>
8592
8593         * tree-dfa.c (remove_referenced_var): New function.
8594         * tree-ssa-live.c (remove_unused_locals): Walk referenced vars and
8595         prune referenced vars list too.
8596         * tree-flow.h (remove_referenced_var): Declare.
8597
8598 2007-01-14  Jan Hubicka  <jh@suse.cz>
8599
8600         * tree-eh.c (add_stmt_to_eh_region_fn): Do not add call_exprs
8601         separately.
8602         (remove_stmt_from_eh_region_fn): Do not remove call_exprs.
8603         (verify_eh_throw_stmt_node, verify_eh_throw_table_statements): Kill.
8604         * except.h (verify_eh_throw_table_statements): Kill prototype.
8605         * cfgexpand.c (expand_gimple_basic_block): Propagate Eh regions
8606         into call exrepssions.
8607         * tree-optimize.c (execute_free_cfg_annotatiosn): Do not call
8608         eh trhow verifier.
8609         * tree-cfg.c: Include pointer-set.h.
8610         (verify_node_sharing): Work on pointer set.
8611         (verify_eh_throw_stmt_node): New.
8612         (verify_stmts): Use pointers sets, verify throw_stmt.
8613
8614 2007-01-13  Zdenek Dvorak <dvorakz@suse.cz>
8615
8616         * ipa-reference.c (analyze_function): Consider also addresses taken
8617         in phi nodes.
8618
8619 2007-01-12  Roger Sayle  <roger@eyesopen.com>
8620
8621         * c-typeck.c (null_pointer_constant_p): Replace use of
8622         TREE_CONSTANT_OVERFLOW with TREE_OVERFLOW.
8623         (build_c_cast): Likewise.
8624
8625 2007-01-12  Roger Sayle  <roger@eyesopen.com>
8626
8627         * tree.h (force_fit_type_double): Remove unused final argument.
8628         * c-common.c (constant_expression_warning): Replace use of
8629         TREE_CONSTANT_OVERFLOW with TREE_OVERFLOW.
8630         (convert_and_check): Likewise.
8631         (shorten_compare): Update call to force_fit_type_double.
8632         (c_common_truthvalue_conversion) <INTEGER_CST>: Use integer_zerop.
8633         * convert.c (convert_to_pointer): Update call to
8634         force_fit_type_double.
8635         * fold-const.c (force_fit_type_double): Remove overflowed_const
8636         argument.
8637         (int_const_binop, fold_convert_const_int_from_int,
8638         fold_convert_const_int_from_real, fold_div_compare,
8639         fold_sign_changed_comparison, fold_unary, fold_negate_const,
8640         fold_abs_const, fold_not_const): Remove the final argument from
8641         calls to force_fit_type_double.
8642
8643 2007-01-12  Andrew Pinski  <andrew_pinski@playstation.sony.com>
8644
8645         * configure.ac: Set insn to "nop" for spu-*-* also.
8646         * configure: Regenerate.
8647
8648 2007-01-12  Olga Golovanevsky  <olga@il.ibm.com>
8649
8650         * builtins.def : Add BUILT_IN_FREE.
8651
8652 2007-01-12  Jan Hubicka  <jh@suse.cz>
8653
8654         PR tree-optimization/30443
8655         * tree-inline.c (tree_function_versioning): Do not optimize when
8656         cloning for inlining.
8657
8658 2007-01-12  Zdenek Dvorak <dvorakz@suse.cz>
8659
8660         * doc/loop.texi: Document recording of loop exits.
8661         * cfgloopmanip.c (loopify, duplicate_loop): Use alloc_loop.
8662         (update_single_exits_after_duplication,
8663         update_single_exit_for_duplicated_loop,
8664         update_single_exit_for_duplicated_loops): Removed.
8665         (duplicate_loop_to_header_edge): Do not call
8666         update_single_exits_after_duplication and
8667         update_single_exit_for_duplicated_loops.
8668         (loop_version): Do not update single_exit information.
8669         (fix_loop_structure): Use record_loop_exits instead of
8670         mark_single_exit_loops.
8671         * tree-ssa-loop-manip.c (tree_transform_and_unroll_loop): Update
8672         the lists of loop exits.
8673         * cfghooks.c (redirect_edge_and_branch, redirect_edge_and_branch_force,
8674         split_edge, merge_blocks): Update the lists of loop exits.
8675         * modulo-sched.c (sms_schedule): Pass LOOPS_HAVE_RECORDED_EXITS to
8676         loop_optimizer_init.
8677         * loop-init.c (loop_optimizer_init): Call record_loop_exits instead
8678         of mark_single_exit_loops.
8679         (loop_optimizer_finalize): Call release_recorded_exits.
8680         * tree-ssa-loop.c (tree_loop_optimizer_init): Pass
8681         LOOPS_HAVE_RECORDED_EXITS to loop_optimizer_init.
8682         * tree-vectorizer.c (slpeel_tree_duplicate_loop_to_edge_cfg): Do not
8683         update single exit information.
8684         * lambda-code.c (perfect_nestify): Ditto.
8685         * cfgloop.c (flow_loop_free): Destroy the list of exits of the loop.
8686         (mark_single_exit_loops): Removed.
8687         (alloc_loop, loop_exit_hash, loop_exit_eq, loop_exit_free,
8688         get_exit_descriptions, rescan_loop_exit, record_loop_exits,
8689         dump_recorded_exit, dump_recorded_exits, release_recorded_exits): New
8690         functions.
8691         (get_loop_exit_edges, single_exit): Use recorded exit lists.
8692         (add_bb_to_loop, remove_bb_from_loops): Update the lists of loop exits.
8693         (verify_loop_structure): Verify consistency of the exit lists.
8694         (flow_loops_find): Use alloc_loop.  Initialize exits hash.
8695         (set_single_exit): Removed.
8696         * cfgloop.h (struct loop_exit): New function.
8697         (struct loop): single_exit_ field replaced by exits field.
8698         (LOOPS_HAVE_MARKED_SINGLE_EXITS): Replaced by LOOPS_HAVE_RECORDED_EXITS.
8699         (struct loops): Added exits hash.
8700         (mark_single_exit_loops, set_single_exit): Declaration removed.
8701         (release_recorded_exits, record_loop_exits, rescan_loop_exit): Declare.
8702
8703 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
8704
8705         * doc/invoke.texi: Avoid use of @headitem.
8706
8707 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
8708
8709         * cse.c (cse_insn): Move HAVE_CC0 code after declarations.
8710
8711 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
8712
8713         * doc/install.texi: Fix m68k-*-* anchor and add m68k-*-* to the
8714         list of targets.
8715
8716 2007-01-12  Nathan Sidwell  <nathan@codesourcery.com>
8717             Richard Sandiford  <richard@codesourcery.com>
8718
8719         * doc/invoke.texi: Document -mno-bitfield, -mno-rtd and -mno-short.
8720         * config/m68k/m68k.opt: Resort options.
8721         (mbitfield, mrtd, mshort): Remove RejectNegative properties.
8722
8723 2007-01-12  Nathan Sidwell  <nathan@codesourcery.com>
8724             Richard Sandiford  <richard@codesourcery.com>
8725
8726         * doc/invoke.texi: Document the macros that are defined by
8727         m68k's -mtune and -mhard-float options.
8728         * config/m68k/m68k-protos.h (m68k_cpp_cpu_ident) Declare.
8729         (m68k_cpp_cpu_family): Likewise.
8730         * config/m68k/m68k.h (TARGET_CPU_CPP_BUILTINS): Add a full set
8731         of __ucfv*__ macros.  Define __mcffpu__ if generating code for
8732         ColdFire FPUs.  Define __mcf_cpu_* and __mcf_family_* macros.
8733         * config/m68k/m68k.c (m68k_cpp_cpu_ident): New function.
8734         (m68k_cpp_cpu_family): Likewise.
8735
8736 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
8737
8738         * config/m68k/m68k.h (TARGET_CPU_CPP_BUILTINS): Treat all mc68*
8739         macros besides mc68000 as tuning macros.  Use a switch statement
8740         to set them and mcpu32.
8741
8742 2007-01-12  Julian Brown  <julian@codesourcery.com>
8743
8744         * config/m68k/m68k.h: Use TARGET_68040 instead of TARGET_68040_ONLY.
8745         (TARGET_68040_ONLY): Rename to...
8746         (TARGET_68040): ...this.
8747         * config/m68k/m68k.c: Use TARGET_68040 instead of TARGET_68040_ONLY.
8748         * config/m68k/m68k.md: Likewise.
8749
8750 2007-01-12  Julian Brown  <julian@codesourcery.com>
8751             Nathan Sidwell  <nathan@codesourcery.com>
8752             Richard Sandiford  <richard@codesourcery.com>
8753
8754         * config.gcc (m680[012]0-*-*, m68k*-*-*): Set m68k_cpu_ident to
8755         the -mcpu= argument associated with the --with-cpu setting.
8756         Define M68K_DEFAULT_TUNE to the default -mtune= option,
8757         if different from the one implied by the -mcpu setting.
8758         Accept --with-cpu=FOO if FOO is listed in m68k-devices.def,
8759         using mcpu=FOO as the default CPU option.  Set target_cpu_default2.
8760         * doc/invoke.texi: Mention ColdFire in the introduction to the
8761         m68k options.  Document the new -march, -mcpu, -mtune, -mdiv,
8762         -mno-div and -mhard-float options.  Make -m68881 a synonym for
8763         -mhard-float.  Document the previously-undocumented -m5206e,
8764         -m528x, -m5307 and -m5407 options.  Tweak the existing option
8765         documentation for consistency.
8766         * doc/install.texi: Mention new --with-cpu arguments.
8767         * config/m68k/m68k.h (OPTION_DEFAULT_SPECS): Only use the
8768         default CPU if neither -mcpu nor -march are specified.
8769         (ASM_CPU_SPEC): Pass down -mcpu and -march options.
8770         (TARGET_CPU_CPP_BUILTINS): Set __mcfisa*__ macros from
8771         TARGET_ISA*.  Set the legacy __mcf*__ cpu macros in the same way,
8772         using m68k_tune to decide between families that implement the
8773         same ISA.  Use m68k_tune to set __mcfv4e__.
8774         (FL_BITFIELD, FL_68881, FL_COLDFIRE, FL_CF_HWDIV, FL_CF_MAC)
8775         (FL_CF_EMAC, FL_CF_EMAC_B, FL_CF_USP, FL_CF_FPU, FL_ISA_68000)
8776         (FL_ISA_68010, FL_ISA_68020, FL_ISA_68040, FL_ISA_A, FL_ISA_B)
8777         (FL_ISA_C, FL_ISA_MMU): New macros.
8778         (MASK_COLDFIRE): Delete.
8779         (TARGET_68010, TARGET_68020, TARGET_68040_ONLY, TARGET_COLDFIRE)
8780         (TARGET_ISAB): Redefine in terms of m68k_cpu_flags.
8781         (TARGET_68881, TARGET_COLDFIRE_FPU): Redefine in terms of m68k_fpu.
8782         (TARGET_HARD_FLOAT): Do not define here.
8783         (TARGET_ISAAPLUS, TARGET_ISAC): New macros.
8784         (TUNE_68000): New macro.
8785         (TUNE_68000_10): Redefine in terms of TUNE_68000 and TUNE_68010.
8786         (TUNE_68010, TUNE_68030, TUNE_68040, TUNE_68060, TUNE_CPU32)
8787         (TUNE_CFV2): Redefine in terms of m68k_tune.
8788         (uarch_type, target_device, fpu_type): New enums.
8789         (m68k_cpu, m68k_tune, m68k_fpu, m68k_cpu_flags): Declare.
8790         * config/m68k/m68k.c (TARGET_DEFAULT): Remove MASK_68881.
8791         (FL_FOR_isa_00, FL_FOR_isa_10, FL_FOR_isa_20, FL_FOR_isa_40)
8792         (FL_FOR_isa_cpu32, FL_FOR_isa_a, FL_FOR_isa_aplus, FL_FOR_isa_b)
8793         (FL_FOR_isa_c): New macros.
8794         (m68k_isa): New enum.
8795         (m68k_target_selection): New structure.
8796         (all_devices, all_isas, all_microarchs): New tables.
8797         (m68k_cpu_entry, m68k_arch_entry, m68k_tune_entry, m68k_cpu)
8798         (m68k_tune, m68k_fpu, m68k_cpu_flags): New variables.
8799         (MASK_ALL_CPU_BITS): Delete.
8800         (m68k_find_selection): New function.
8801         (m68k_handle_option): Handle -mcpu=, -march= and -mtune=.
8802         Map the legacy target options to a combination of the new ones.
8803         (override_options): Set m68k_cpu, m68k_tune, m68k_fpu and
8804         m68k_cpu_flags.  Handle M68K_DEFAULT_TUNE.  Use m68k_cpu_flags
8805         to derive default MASK_BITFIELD, MASK_CF_HWDIV and MASK_HARD_FLOAT
8806         settings.
8807         * config/m68k/m68k.opt (m5200, m5206e, m528x, m5307, m5407, mcfv4e)
8808         (m68010, m68020, m68020-40, m68020-60, m68030, m68040): Remove Mask
8809         properties.
8810         (m68881, msoft-float): Change mask from 68881 to HARD_FLOAT.
8811         (march=, mcpu=, mdiv, mhard-float, mtune=): New options.
8812         * config/m68k/m68k-devices.def: New file.
8813
8814 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
8815             Nathan Sidwell  <nathan@codesourcery.com>
8816
8817         * config/m68k/m68k.h (ASM_CPU_SPEC, ASM_SPEC, EXTRA_SPECS)
8818         (SUBTARGET_EXTRA_SPECS): New macros.
8819         * config/m68k/linux.h (ASM_SPEC): Remove CPU flags;
8820         use %(asm_cpu_spec) instead.
8821         * config/m68k/m68k-none.h (ASM_SPEC): Likewise.
8822         * config/m68k/openbsd.h (ASM_SPEC): Likewise.
8823         * config/m68k/netbsd-elf.h (ASM_SPEC): Likewise.
8824         (EXTRA_SPECS): Rename to...
8825         (SUBTARGET_EXTRA_SPECS): ...this.
8826
8827 2007-01-12  Nathan Sidwell  <nathan@codesourcery.com>
8828             Richard Sandiford  <richard@codesourcery.com>
8829             Julian Brown  <julian@codesourcery.com>
8830
8831         * config.gcc (m68k-*-aout*, m68k-*-coff*, m68020-*-elf*, m68k-*-elf*)
8832         (m68k-*-uclinux*, m68k-*-linux*, m68k-*-rtems*): Set default_m68k_cpu
8833         to the configuration's default CPU.
8834         (m68010-*-netbsdelf*, m68k*-*-netbsdelf*, m68k*-*-openbsd*): Likewise.
8835         Remove default masks.
8836         (m680[012]0-*-*): Set the default with_cpu to the first part of
8837         the target name.
8838         (m68k*-*-*): Set the default with_cpu to m$default_m68k_cpu.
8839         (m68k*-*-linux): Extend the --with-cpu handling to...
8840         (m680[012]0-*-*, m68k*-*-*): ...these configurations.  Allow m68000
8841         and m68010.  Don't set target_cpu_default2.
8842         * doc/install.texi: Document --with-cpu for m68k.
8843         * config/m68k/m68k.h (OPTION_DEFAULT_SPECS): Define.
8844         * config/m68k/m68k-none.h (TARGET_CPU_DEFAULT, M68K_CPU_m68k)
8845         (M68K_CPU_m68000, M68K_CPU_m68010, M68K_CPU_m68020, M68K_CPU_m68030)
8846         (M68K_CPU_m68040, M68K_CPU_m68302, M68K_CPU_m68332, TARGET_DEFAULT)
8847         (ASM_CPU_DEFAULT_SPEC, CC1_CPU_DEFAULT_SPEC): Delete.
8848         (ASM_SPEC): Remove use of %(asm_cpu_default).
8849         (EXTRA_SPECS, SUBTARGET_EXTRA_SPECS, MULTILIB_DEFAULTS): Delete.
8850         * config/m68k/linux.h (TARGET_DEFAULT): Delete.
8851         (CPP_SPEC): Merge definitions.  Do not handle __HAVE_68881__ here.
8852         * config/m68k/netbsd-elf.h (TARGET_OS_CPP_BUILTINS): Define
8853         __HAVE_FPU__ if TARGET_HARD_FLOAT.
8854         (TARGET_DEFAULT): Delete.
8855         (EXTRA_SPECS): Delete cpp_cpu_default_spec, cpp_cpu_spec,
8856         cpp_fpu_spec, asm_default_spec and netbsd_cpp_spec.
8857         (CPP_CPU_SPEC): Delete.
8858         (TARGET_VERSION): Merge definitions, using TARGET_68010 to pick
8859         the appropriate string.
8860         (CPP_CPU_DEFAULT_SPEC, ASM_DEFAULT_SPEC, CPP_FPU_SPEC): Delete.
8861         (CPP_SPEC): Define to NETBSD_CPP_SPEC.
8862         (ASM_SPEC): Don't use %(asm_default_spec).
8863         * config/m68k/m68k.c (TARGET_DEFAULT_TARGET_FLAGS): Remove
8864         TARGET_DEFAULT and add MASK_68881.
8865         * config/m68k/m68k.md: Remove mention of TARGET_DEFAULT from comments.
8866
8867 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
8868
8869         * config.gcc (m68010-*-netbsdelf*): Add MASK_68010.
8870         (m68k*-*-netbsdelf*, m68k*-*-openbsd*, m68k*-linux*): Add
8871         MASK_68010 alongside MASK_68020.
8872         * doc/invoke.texi: Document -m68010.
8873         * config/m68k/m68k.opt (m68010): New.
8874         * config/m68k/m68k.h (TARGET_CPU_CPP_BUILTINS): Define mc68010
8875         if TUNE_68010.
8876         (TUNE_68010): New macro.
8877         * config/m68k/m68k-none.h (M68K_CPU_m68k, M68K_CPU_m68010)
8878         (M68K_CPU_m68020, M68K_CPU_m68030, M68K_CPU_m68040)
8879         (M68K_CPU_m68332): Add MASK_68010.
8880         * config/m68k/linux.h (TARGET_DEFAULT): Add MASK_68010 to
8881         fallback definition.
8882         * config/m68k/netbsd-elf.h (CPP_CPU_SPEC): Remove now-redundant
8883         defines.
8884         * config/m68k/m68k.c (MASK_ALL_CPU_BITS): Add MASK_68010.
8885         (m68k_handle_option): Handle OPT_m68010.  Add MASK_68010
8886         to all entries that use MASK_68020.
8887         (output_move_simode_const, output_move_himode, output_move_qimode)
8888         (output_move_stricthi, output_move_strictqi): Use TARGET_68010
8889         instead of TARGET_68020 to select clr behavior.  Remove comment
8890         about there being no TARGET_68010.
8891         * config/m68k/m68k.md: Likewise throughout.
8892
8893 2007-01-12  Julian Brown  <julian@codesourcery.com>
8894
8895         * config/m68k/m68k.h (TARGET_ISAB): New macro.
8896         * config/m68k/m68k.c: Use TARGET_ISAB rather than TARGET_CFV4.
8897         * config/m68k/m68k.md: Likewise.
8898
8899 2007-01-12  Julian Brown  <julian@codesourcery.com>
8900
8901         * config/m68k/m68k.h (LEGITIMATE_INDEX_P, LEGITIMIZE_ADDRESS): Use
8902         TARGET_COLDFIRE_FPU instead of TARGET_CFV4E.
8903
8904 2007-01-12  Julian Brown  <julian@codesourcery.com>
8905
8906         * config/m68k/m68k.h (TUNE_68040_60): New macro.
8907         * config/m68k/m68k.c (standard_68881_constant_p): Use it.
8908         * config/m68k/m68k.md: Likewise.
8909
8910 2007-01-12  Julian Brown  <julian@codesourcery.com>
8911             Richard Sandiford  <richard@codesourcery.com>
8912
8913         * config/m68k/m68k.h (TARGET_CPU_CPP_BUILTINS): Use TUNE_68030
8914         instead of TARGET_68030, TUNE_68040 instead of TARGET_68040,
8915         TUNE_68060 instead of TARGET_68060 and TUNE_CPU32 instead of
8916         TARGET_CPU32.
8917         (TARGET_CPU32): Rename to...
8918         (TUNE_CPU32): ...this.
8919         (TUNE_68000_10, TUNE_68030, TUNE_68040, TUNE_68060)
8920         (TUNE_CFV2): New macros.
8921         * config/m68k/netbsd-elf.h (LONG_DOUBLE_TYPE_SIZE): Simplify;
8922         remove conditions that are implied by TARGET_68020.
8923         * config/m68k/m68k.c (m68k_output_function_prologue): Use TUNE_68040
8924         instead of TARGET_68040 and TUNE_CPU32 instead of TARGET_CPU32.
8925         (m68k_output_function_epilogue): Likewise.
8926         (m68k_rtx_costs): Likewise.  Use TUNE_68060 instead of TARGET_68060
8927         and TUNE_CFV2 instead of TARGET_5200.  Use TUNE_68000_10 instead of
8928         "!TARGET_68020 && !TARGET_COLDFIRE" to choose between 68000 and
8929         non-68000 timings.  Refactor multiplication and division costs.
8930         (output_addsi3): Use TUNE_68040 instead of TARGET_68040 and
8931         TUNE_CPU32 instead of TARGET_CPU32.
8932         (standard_68881_constant_p): Use TUNE_68040 instead of TARGET_68040
8933         and TUNE_68060 instead of TARGET_68060.
8934         * config/m68k/m68k.md: Use TUNE_68040 instead of TARGET_68040,
8935         TUNE_68060 instead of TARGET_68060, and TUNE_CPU32 instead of
8936         TARGET_CPU32.
8937         (movsi_const0): Use TUNE_68000_10 rather than "!TARGET_68020
8938         && !TARGET_COLDFIRE" to choose between moveq and clr.
8939         Likewise in the unnamed movsf pattern.
8940         (ashlsi_17_24, lshrsi_17_24): Guard with TUNE_68000_10 rather than
8941         "!TARGET_68020 && !TARGET_COLDFIRE".  Likewise the unnamed
8942         ashiftrt pattern.
8943
8944 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
8945
8946         * config/m68k/m68k.h (TARGET_CPU_CPP_BUILTINS): Increase amount
8947         of tabbing before backslashes.
8948
8949 2007-01-11  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
8950
8951         * pa-linux.h (ASM_OUTPUT_INTERNAL_LABEL): Undefine.
8952         * pa.h (ASM_OUTPUT_LABEL): Output colon when using GAS.
8953         (ASM_OUTPUT_INTERNAL_LABEL): Define.
8954
8955 2007-01-11  Zdenek Dvorak <dvorakz@suse.cz>
8956
8957         * tree-ssa-loop-ivopts.c (extract_cond_operands): Split from
8958         find_interesting_uses_cond.
8959         (find_interesting_uses_cond): Use extract_cond_operands.
8960         (rewrite_use_compare): Use extract_cond_operands and
8961         force_gimple_operand_bsi.  Do not call update_stmt.
8962         (determine_use_iv_cost_condition): Use extract_cond_operands.
8963         Return cheaper of using original bound and changing the exit bound.
8964
8965 2007-01-11  Zdenek Dvorak <dvorakz@suse.cz>
8966
8967         PR tree-optimization/29516
8968         * tree-ssa-address.c (tree_mem_ref_addr, add_to_parts,
8969         most_expensive_mult_to_index, addr_to_parts,
8970         create_mem_ref, maybe_fold_tmr): Make the type of
8971         fields of TARGET_MEM_REF sizetype.
8972         (move_fixed_address_to_symbol, move_pointer_to_base):
8973         New functions.
8974         * tree.def (TARGET_MEM_REF): Add comment on types of
8975         the operands.
8976
8977 2007-01-11  Joseph Myers  <joseph@codesourcery.com>
8978
8979         * c-common.c (vector_types_convertible_p): Treat opaque types as
8980         always convertible if they have the same size, but not otherwise.
8981
8982 2007-01-11  Steven Bosscher  <steven@gcc.gnu.org>
8983
8984         * ifcvt.c (struct noce_if_info): Add comments to the fields.
8985         Remove the b_unconditional field.
8986         (noce_try_sign_mask): Do not look at b_unconditional.
8987         (noce_process_if_block): Do not use merge_if_blocks.  Update
8988         the CFG here.  Do not set b_unconditional.
8989         (cond_move_process_if_block): Likewise.
8990         (find_cond_trap): Likewise.
8991         (check_cond_move_block): Require simple jump insns at the end
8992         of the basic block.
8993
8994 2007-01-11  Jan Hubicka  <jh@suse.cz>
8995
8996         PR tree-optimization/1046
8997         * tree-tailcall.c (suitable_for_tail_call_opt_p): Use TREE_ADDRESSABLE
8998         when alias info is not ready.
8999         (pass_tail_recursion): Do not require aliasing.
9000         * tree-ssa-copyrename.c (pass_rename_ssa_cop): Likewise.
9001         * tree-ssa-ccp.c (pass_ccp, pass_fold_builtins): Likewise.
9002         * tree-ssa-copy.c (pass_copy_prop): Likewise.
9003         * tree-ssa-forwprop.c (pass_forwprop): Likewise.
9004         * tree-ssa-dce.c (pass_dce, pass_dce_loop, pass_cd_dce): Likewise.
9005         * passes.c (init_optimization_passes): Execute rename_ssa_copies,
9006         ccp, forwprop, copy_prop, merge_phi, copy_prop, dce and tail recursion
9007         before inlining.
9008         * tree-ssa-operands.c (add_virtual_operand, get_indirect_ref_operand):
9009         When aliasing is not build, mark statement as volatile.
9010
9011 2007-01-11  Tom Tromey  <tromey@redhat.com>
9012
9013         PR preprocessor/15185, PR preprocessor/20989:
9014         * doc/cppopts.texi <-MT>: Update description of algorithm for
9015         computing default target.
9016         <-M, -MD>: Reword "basename" text.
9017
9018 2007-01-11  Roger Sayle  <roger@eyesopen.com>
9019
9020         * builtins.c (expand_builtin_pow, expand_builtin_powi,
9021         fold_builtin_cabs, fold_builtin_sqrt, fold_builtin_trunc,
9022         fold_builtin_floor, fold_builtin_ceil, fold_builtin_round,
9023         fold_builtin_int_int_roundingfn, fold_builtin_bitop,
9024         fold_builtin_bswap, real_constp, fold_builtin_pow,
9025         fold_builtin_powi, fold_builtin_signbit, fold_builtin_copysign,
9026         do_mpfr_arg1, do_mpfr_arg2, do_mpfr_arg3, do_mpfr_sincos): Replace
9027         uses of the macro TREE_CONSTANT_OVERFLOW with TREE_OVERFLOW.
9028         * convert.c (convert_to_pointer): Likewise.
9029         * expr.c (highest_pow2_factor, expand_expr_real_1): Likewise.
9030         * fold-const.c (force_fit_type, fold_negate_expr, int_const_binop,
9031         const_binop, fold_convert_const_int_from_int,
9032         fold_convert_const_int_from_real,
9033         fold_convert_const_real_from_real, sign_bit_p,
9034         optimize_minmax_comparison, extract_muldiv_1, fold_div_compare,
9035         fold_sign_changed_comparison, fold_unary, fold_comparison,
9036         fold_binary, multiple_of_p, tree_Expr_non_zero_p,
9037         fold_negate_const, fold_abs_const, fold_not_const): Likewise.
9038         * print-tree.c (print_node_brief, print_node): Likewise.
9039         * stor-layout.c (place_field, layout_type): Likewise.
9040         * tree-chrec.c (keep_cast): Likewise.
9041         * tree.c (build_vector, build_real, build_real_from_int_cst,
9042         build_complex): Likewise.
9043
9044 2007-01-11  Roger Sayle  <roger@eyesopen.com>
9045
9046         * tree.h (TREE_CONSTANT_OVERFLOW): Obsolete.  For the time being,
9047         treat TREE_CONSTANT_OVERFLOW as a synonym of TREE_OVERFLOW.
9048
9049 2007-01-11  Paolo Bonzini  <bonzini@gnu.org>
9050
9051         * configure.ac (strict1_warn): Rename to strict_warn.
9052         (WERROR, --enable-werror, symlink hacks, stage1_cflags,
9053         cc_set_by_configure, quoted_cc_set_by_configure,
9054         stage_prefix_set_by_configure, quoted_stage_prefix_set_by_configure,
9055         all_boot_languages, all_stagestuff): Remove.
9056         (target_list): Remove bootstrap targets.
9057         * Makefile.in (quickstrap): Unconditionally make a synonym of all.
9058         (BOOT_LANGUAGES, STAGE1_CFLAGS, STAGE1_CHECKING,
9059         REMAKEFLAGS, FLAGS_TO_PASS, PREPEND_DOTDOT_TO_RELATIVE_PATHS,
9060         SUBDIR_FLAGS_TO_PASS, WERROR_FLAGS, STRICT2_WARN, LANG_STAGESTUFF,
9061         VOL_FILES, POSTSTAGE1_FLAGS_TO_PASS, STAGE2_FLAGS_TO_PASS,
9062         STAGEPROFILE_FLAGS_TO_PASS, STAGEFEEDBACK_FLAGS_TO_PASS, stage1_build,
9063         stage1_copy, stage2_build, stage2_copy, stageprofile_build,
9064         stageprofile_copy, stage3_build, stage3_copy, stagefeedback_build,
9065         stagefeedback_copy, stage4_build, clean_s1, clean_sw, bootstrap,
9066         bootstrap-lean, bootstrap2, bootstrap2-lean, bootstrap3,
9067         bootstrap3-lean, bootstrap4, bootstrap4-lean, unstage1, unstage2,
9068         unstage3, unstage4, unstageprofile, unstagefeedback, restage, restage2,
9069         restage3, restage4, restageprofile, restagefeedback, bubbleestrap,
9070         cleanstrap, unstrap, restrap, *compare, *compare3, *compare4,
9071         *compare-lean, *compare3-lean, *compare4-lean, stage1-start, stage1,
9072         stage2-start, stage2, stage3-start, stage3, stage4-start, stage4,
9073         stageprofile-start, stageprofile, stagefeedback-start, stagefeedback,
9074         risky-stage1, risky-stage2, risky-stage3, risky-stage4): Remove.
9075         (ORDINARY_FLAGS_TO_PASS): Rename to FLAGS_TO_PASS.
9076         (STAGECOPYSTUFF, STAGEMOVESTUFF): Consolidate into MOSTLYCLEANFILES.
9077         (mostlyclean): Adjust.
9078         (clean, distclean): Don't mention bootstrap stuff.
9079         * configure: Regenerate.
9080         * ada/config-lang.in, cp/config-lang.in, forttran/config-lang.in,
9081         java/config-lang.in, objc/config-lang.in, objcp/config-lang.in,
9082         treelang/config-lang.in (stagestuff): Remove.
9083         * doc/sourcebuild.texi (stage1, stage2, stage3, stage4,
9084         stageprofile, stagefeedback, stagestuff): Remove mention.
9085
9086 2007-01-11  Nick Clifton  <nickc@redhat.com>
9087
9088         * config/mcore/predicates.md (mcore_general_movesrc_operand):
9089         Accept CONSTs.
9090         (mcore_general_movdst_operand): Do not accept CONST_INTs.
9091         (mcore_arith_K_S_operand): Run the test for the S constraint not
9092         the test for the M constraint.
9093         (mcore_addsub_operand): Do not accept integer values that are
9094         larger than 32 bits.
9095         * config/mcore/mcore.md: Remove unused constraints from split.
9096         (andsi3): Use HOST_WIDE_INT instead of int to hold an INTVAL.
9097         (addsi3): Likewise.
9098         (allocate_stack): Likewise.
9099         * config/mcore/mcore.c (mcore_print_operand): Restrict output of P
9100         operands to 32 bits.
9101         (mcore_const_costs): Use HOST_WIDE_INT instead of int to hold an
9102         INTVAL.
9103         (mcore_and_cost, mcore_modify_comparison, const_ok_for_mcore,
9104         mcore_const_ok_for_inline, mcore_const_trick_uses_not,
9105         try_constant_tricks, mcore_num_ones, mcore_num_zeros,
9106         mcore_output_bclri, mcore_output_andn, output_inline_const,
9107         mcore_output_move, mcore_output_movedouble): Likewise.
9108         (mcore_output_cmov): Use CONST_OK_FOR_M and CONST_OK_FOR_N.
9109         (output_inline_const): Likewise.
9110         (output_inline_const): Fix format strings used in sprintf
9111         statements.
9112         * config/mcore/mcore-protos.h: Update prototypes for changed
9113         functions in mcore.c.
9114         * config/mcore/mcore.h (CONST_OK_FOR_I): Cast values to
9115         HOST_WIDE_INT and not int.
9116         (CONST_OK_FOR_J, CONST_OK_FOR_K, CONST_OK_FOR_L, CONST_OK_FOR_M,
9117         CONST_OK_FOR_N): Likewise.
9118         (LEGITIMATE_CONSTANT_P): Also check CONSTANT_P.
9119         (GO_IF_LEGITIMATE_INDEX): Use HOST_WIDE_INT instead of int to hold
9120         an INTVAL.
9121
9122 2007-01-10  Jan Hubicka  <jh@suse.cz>
9123
9124         * tree-vrp.c (remove_range_assertions): Release defs.
9125         * tree-ssa-loop-ivopts.c (rmeove_statement): Likewise.
9126         * tree-ssa-dom.c (remove_stmt_or_phi): Likewise.
9127
9128 2007-01-10  Paul Brook  <paul@codesourcery.com>
9129
9130         * config/arm/arm.c (arm_rtx_costs_1): Handle mutiply-subtract.
9131         * config/arm/arm.md (mulsi3subsi): New insn.
9132
9133 2007-01-10  Zdenek Dvorak <dvorakz@suse.cz>
9134
9135         * tree-ssa-loop-manip.c (tree_unroll_loop): Make it a wrapper over ...
9136         (tree_transform_and_unroll_loop): New.
9137         * tree-flow.h (transform_callback, tree_transform_and_unroll_loop):
9138         Declare.
9139
9140 2007-01-10  Robert Kennedy <jimbob@google.com>
9141
9142         * fold-const.c (fold_comparison): Fold comparisons like (x *
9143         1000 < 0) to (x < 0).
9144
9145 2007-01-10  Ian Lance Taylor  <iant@google.com>
9146
9147         * tree-pretty-print.c (dump_generic_node): Print parentheses when
9148         operands have the same priority.
9149
9150 2007-01-10  Tom Tromey  <tromey@redhat.com>
9151
9152         * fold-const.c (fold_truthop): Don't check can_use_bit_fields_p.
9153         (fold_binary): Likewise.
9154         * langhooks.c (lhd_can_use_bit_fields_p): Removed.
9155         * langhooks-def.h (lhd_can_use_bit_fields_p): Removed.
9156         (LANG_HOOKS_CAN_USE_BIT_FIELDS_P): Removed.
9157         (LANG_HOOKS_INITIALIZER): Remove LANG_HOOKS_CAN_USE_BIT_FIELDS_P.
9158         * langhooks.h (struct lang_hooks): Removed field
9159         'can_use_bit_fields_p'.
9160
9161 2007-01-10  Ralf Corsépius <ralf.corsepius@rtems.org>
9162
9163         * config/bfin/t-bfin, config/bfin/t-bfin-elf: Remove GCC_CFLAGS.
9164
9165 2007-01-10  Razya Ladelsky  <razya@il.ibm.com>
9166
9167         * function.c (get_last_funcdef_no): New function.
9168         * function.h (get_last_funcdef_no): Declare.
9169         * tree-inline.c (initialize_cfun): Add initialization.
9170         (tree_function_versioning): Cleanup.
9171
9172 2007-01-10  Jan Hubicka  <jh@suse.cz>
9173
9174         * tree-inline.c (setup_one_parameter): Do not propagate into abnormal
9175         PHIs.
9176
9177 2007-01-10  Sa Liu  <saliu@de.ibm.com>
9178             Ben Elliston  <bje@au.ibm.com>
9179
9180         * spu.h (STACK_SAVE_AREA): Use VOIDmode for SAVE_FUNCTION, SImode
9181         for SAVE_NONLOCAL and Pmode for any other save level.
9182         * spu-protos.h (spu_restore_stack_block): Declare.
9183         * spu.md (save_stack_block): Remove.
9184         (restore_stack_block): Call spu_restore_stack_block.
9185         * spu.c (spu_restore_stack_block): New function.
9186         (spu_expand_epilogue): Remove old comment.
9187
9188 2007-01-09  Zdenek Dvorak <dvorakz@suse.cz>
9189
9190         PR tree-optimization/30322
9191         * tree-ssa-loop-ivopts.c (fold_affine_expr, iv_value): Removed.
9192         (cand_value_at): Return the value as aff_tree.
9193         (may_eliminate_iv): Convert the bound from aff_tree to tree.
9194         * tree-affine.c (aff_combination_add_cst, aff_combination_add_product,
9195         aff_combination_mult): New functions.
9196         (aff_combination_add): Use aff_combination_add_cst.
9197         (aff_combination_convert): Allow conversions to a wider type.
9198         (tree_to_aff_combination): Handle BIT_NOT_EXPR.
9199         * tree-affine.h (aff_combination_mult): Declare.
9200
9201 2007-01-09  Carlos O'Donell  <carlos@codesourcery.com>
9202
9203         * doc/tm.texi: Update documentation to reflect reality of exec
9204         and start file search behaviours. Update copyright year.
9205         * doc/invoke.texi: Explain how GCC_EXEC_PREFIX is used to find
9206         header file directories.
9207
9208 2007-01-09  Uros Bizjak  <ubizjak@gmail.com>
9209
9210         * config/i386/i386.md (*sinxf2): Rename to *sinxf2_i387.
9211         (*cosxf2): Rename to cosxf2_i387.
9212         (*sindf2, *sinsf2): Extend operand 1 to XFmode.  Macroize patterns
9213         using X87MODEF12 mode macro. Rename patterns to
9214         *sin_extend<mode>xf2_i387.  Use SSE_FLOAT_MODE_P to disable patterns
9215         for SSE math.
9216         (*cosdf2, *cossf2): Ditto.
9217         (sincosdf3, sincossf3): Ditto.  Rewrite corresponding splitters
9218         to match extended input operands.
9219         (sincos<mode>3): New expander.
9220         (*sinextendsfdf2, *cosextendsfdf2, *sincosextendsfdf3): Remove
9221         insn patterns and corresponding splitters.
9222
9223 2007-01-09  Kaz Kojima  <kkojima@gcc.gnu.org>
9224
9225         * config/sh/t-linux (TARGET_LIBGCC2_CFLAGS): Delete.
9226         (SHLIB_MAPFILES, SHLIB_LINK, SHLIB_INSTALL): Likewise.
9227
9228 2007-01-09  Nicolas Pitre  <nico@cam.org>
9229
9230         PR target/30173
9231         * arm/ieee754-df.S (Lad_s): Also test the low word of X for zero.
9232
9233 2007-01-08  Geoffrey Keating  <geoffk@apple.com>
9234
9235         * target.h (struct gcc_target): New field library_rtti_comdat.
9236         * target-def.h (TARGET_CXX_LIBRARY_RTTI_COMDAT): New.
9237         (TARGET_CXX): Add TARGET_CXX_LIBRARY_RTTI_COMDAT.
9238         * doc/tm.texi (C++ ABI): Document TARGET_CXX_LIBRARY_RTTI_COMDAT.
9239         * config/darwin.h (TARGET_CXX_LIBRARY_RTTI_COMDAT): Define.
9240
9241 2007-01-08  Geoffrey Keating  <geoffk@apple.com>
9242
9243         * doc/invoke.texi (Optimize Options): Correct description of -O0.
9244
9245 2007-01-08  Richard Guenther  <rguenther@suse.de>
9246
9247         * tree.h (force_fit_type_double): Export.
9248         (force_fit_type): Remove.
9249         * fold-const.c (force_fit_type_double): New function.
9250         (force_fit_type): Remove.
9251         (int_const_binop): Use it.
9252         (fold_convert_const_int_from_int): Likewise.
9253         (fold_convert_const_int_from_real): Likewise.
9254         (fold_div_compare): Likewise.
9255         (fold_sign_changed_comparison): Likewise.
9256         (fold_unary): Likewise.
9257         (fold_negate_const): Likewise.
9258         (fold_abs_const): Likewise.
9259         (fold_not_const): Likewise.
9260         * c-common.c (shorten_compare): Use force_fit_type_double.
9261         * convert.c (convert_to_pointer): Likewise.
9262
9263 2007-01-08  Richard Guenther  <rguenther@suse.de>
9264
9265         * tree.h (build_int_cst_wide_type): Export.
9266         * tree.c (build_int_cst_wide_type): New function.
9267         (build_int_cst_wide): Fix comment.
9268         * builtins.c (fold_builtin_object_size): Use build_int_cst
9269         to build -1 or 0 of the correct type.  Use fit_double_type
9270         to check for overflow.
9271         * fold-const.c (optimize_bit_field_compare): Use build_int_cst_type
9272         to build the mask.
9273         (decode_field_reference): Likewise.
9274         (all_ones_mask_p): Likewise.
9275         (native_interpret_int): Use build_int_cst_wide_type.
9276         (fold_binary): Use build_int_cst_type to build an all-ones
9277         value.
9278         * stor-layout.c (set_sizetype): Use build_int_cst_wide_type.
9279
9280 2007-01-08  Daniel Jacobowitz  <dan@codesourcery.com>
9281
9282         * config/pa/t-pa64 (libgcc_stub.a): Use $(T).
9283
9284 2007-01-09  Ben Elliston  <bje@au.ibm.com>
9285
9286         * genautomata.c (STATS_OPTION): New option.
9287         (stats_flag): New flag.
9288         (gen_automata_option): Handle it.
9289         (initiate_automaton_gen): Ditto.
9290         (write_automata): Output statistics only if stats_flag is
9291         set. Likewise, output time statistics only if time_flag is set.
9292         * doc/md.texi (Processor pipeline description): Document new flag.
9293
9294 2007-01-08  Richard Guenther  <rguenther@suse.de>
9295
9296         * builtins.c (fold_builtin_int_roundingfn): Use fit_double_type.
9297         * tree.c (build_int_cst_type): Likewise.
9298         (size_in_bytes): Don't call force_fit_type on the result.
9299         (int_fits_type_p): Use fit_double_type.
9300         * fold-const.c (fit_double_type): New function.
9301         (force_fit_type): Use it.
9302         * tree.h (fit_double_type): Export.
9303
9304 2007-01-08  Jan Hubicka  <jh@suse.cz>
9305
9306         * tree-vectorizer.c (gate_increase_alignment): Fix return type.
9307         * ipa.c (function_and_variable_visibility): Fix return type.
9308
9309 2007-01-08  Richard Guenther  <rguenther@suse.de>
9310
9311         * tree-ssa-ccp.c (maybe_fold_offset_to_array_ref): Use type
9312         of offset to build the index.
9313         * tree-pretty-print.c (dump_generic_node): Don't build negated
9314         const just for printing.
9315         * c-pretty-print.c (pp_c_integer_constant): Likewise.
9316         * builtins.c (fold_builtin_int_roundingfn): Check if result
9317         fits the type by using force_fit_type and comparing the result.
9318         * predict.c (predict_loops): Use compare_tree_int for comparison.
9319         * tree.c (build_int_cst): Fall back to integer_type_node for
9320         NULL_TREE type.
9321         (build_int_cst_wide): Assert type is non-null.
9322
9323 2007-01-08  Roberto Costa  <roberto.costa@st.com>
9324
9325         * tree-vrp.c (extract_range_from_cond_expr): New.
9326         (extract_range_from_expr): Handle COND_EXPR nodes used as expressions.
9327         * tree-ssa-ccp.c (get_maxval_strlen): Handle COND_EXPR nodes used
9328         as expressions.
9329         (fold_stmt): Bug fix, avoid infinite recursion when folding COND_EXPRs.
9330         * tree-ssa-forwprop.c (simplify_cond, forward_propagate_into_cond,
9331         tree_ssa_forward_propagate_single_use_vars): Handle COND_EXPR nodes
9332         used as expressions.
9333         * tree-object-size.c (cond_expr_object_size): New.
9334         (collect_object_sizes_for): Handle COND_EXPR nodes used as expressions.
9335
9336 2007-01-08  Jan Hubicka  <jh@suse.cz>
9337
9338         * tree-ssa-forwprop.c (forward_propagate_into_cond,
9339         tree_ssa_forward_propagate_single_use_va): Release defs of propagated
9340         statement.
9341
9342 2007-01-08  Richard Guenther  <rguenther@suse.de>
9343
9344         PR tree-optimization/23603
9345         * tree-vrp.c (set_value_range_to_truthvalue): New function.
9346         (extract_range_from_binary): Fall back to truthvalue instead of
9347         varying for TRUTH_*_EXPR.
9348         (extract_range_from_comparison): Fall back to truthvalue instead of
9349         varying.
9350         (vrp_visit_phi_node): Don't adjust new range bounds to +INF/-INF
9351         if all visited PHI values were constant.
9352
9353 2007-01-08  Jan Hubicka  <jh@suse.cz>
9354
9355         * cgraphunit.c (cgraph_process_new_functions): Reset reachable flag.
9356         (cgraph_analyze_function): break out from ...
9357         (cgraph_finalize_compilation_unit): ... here.
9358         (cgraph_expand_function): Remove forgoten commented out line.
9359         (cgraph_optimize): Analyze functions.
9360
9361 2007-01-08  Jan Hubicka  <jh@suse.cz>
9362
9363         * tree-pas.h (TODO_remove_function): New flag.
9364         (TODO_update*): Renumber.
9365         (pass_ipa_increase_alignment,
9366         pass_ipa_function_and_variable_visibility): New passes.
9367         * cgraphunit.c (cgraph_increase_alignment): Move to tree-vectorizer.c
9368         (cgraph_function_and_variable_visibility): Move to ipa.c
9369         (cgraph_optimize): Don't call cgraph_function_and_variable_visibility,
9370         cgraph_increase_alignment.
9371         * ipa-inline.c (cgraph_decide_inlining): Don't push timevar.
9372         (cgraph_decide_inlining_incrementally): Push TV_INTEGRATION before
9373         calling tree-inline.
9374         (cgraph_early_inlining): Do not call cgraph_remove_unreachable_nodes.
9375         (pass_ipa_inline, pass_early_ipa_inlining): Set TODO_remove_functions
9376         * tree-vectorizer.c (increase_alignment): Move here from cgraphunit.c
9377         (gate_increase_alignment): New function.
9378         (pass_ipa_increase_alignment): New pass.
9379         * ipa.c: Inline tree-pass.h and timevar.h
9380         (function_and_variable_visibility): Move here from cgraphunit.c
9381         * tree-optimize.c (pass_early_local_passes): Add TODO_remove_functions.
9382         * passes.c (init_optimization_passes): Add the two new passes.
9383         (execute_todo): Handle cgraph_remove_functions.
9384
9385 2007-01-08  Nick Clifton  <nickc@redhat.com>
9386
9387         * config/frv/predicates.md (reg_or_0_operand): Accept
9388         CONST_DOUBLEs.
9389
9390 2007-01-08  Ralf Corsépius <ralf.corsepius@rtems.org>
9391
9392         * config/bfin/rtems.h, config/bfin/t-rtems: New.
9393         * config.gcc: Add bfin*-rtems*.
9394
9395 2007-01-08  Mark Shinwell  <shinwell@codesourcery.com>
9396
9397         * c.opt: Add -flax-vector-conversions.
9398         * c-typeck.c (convert_for_assignment): Pass flag to
9399         vector_types_convertible_p to allow emission of note.
9400         (digest_init): Likewise.
9401         * c-opts.c: Handle -flax-vector-conversions.
9402         * c-common.c (flag_lax_vector_conversions): New.
9403         (vector_types_convertible_p): Unless -flax-vector conversions
9404         has been passed, disallow conversions between vectors with
9405         differing numbers of subparts and/or element types.  If such
9406         a conversion is disallowed, possibly emit a note on the first
9407         occasion only to inform the user of -flax-vector-conversions.
9408         The new last argument specifies this.
9409         * c-common.h (flag_lax_vector_conversions): New.
9410         (vector_types_convertible_p): Add extra argument.
9411         * config/i386/i386.c (ix86_init_mmx_sse_builtins): Use
9412         char_type_node for V*QI type vectors.
9413         * config/rs6000/rs6000-c.c (altivec_overloaded_builtins):
9414         Update to satisfy new typechecking rules.
9415         * config/rs6000/altivec.h (vec_cmple): Use vec_cmpge, for both
9416         C and C++ variants.
9417         * doc/invoke.texi (C Dialect Options): Document
9418         -flax-vector-conversions.
9419
9420 2007-01-08  Mark Shinwell  <shinwell@codesourcery.com>
9421
9422         PR tree-optimization/29877
9423         * tree-ssa-ter.c (is_replaceable_p): Deem assignments with
9424         a register variable on the RHS to not be replaceable.
9425
9426 2007-01-08  Chen Liqin  <liqin@sunnorth.com.cn>
9427         * config/score/t-score-elf (MULTILIB_OPTIONS): Change.
9428         * config/score/predicates.md (const_uimm5, sr0_operand, const_simm12,
9429         const_simm15, const_pow2, const_npow2): Added.
9430         * config/score/misc.md (insv, extv, extzv, movmemsi,
9431         move_lbu_a/b, mov_lhu_a/b etc): Added and fix some bug.
9432         * config/score/score.c (score_address_cost, score_select_cc_mode):
9433         Added.
9434         Change CONST_OK_FOR_LETTER_P/EXTRA_CONSTRAINT define.
9435         Update score_rtx_costs for MACRO TARGET_RTX_COSTS.
9436         Update score_print_operand.
9437         * config/score/score.h (DATA_ALIGNMENT, SELECT_CC_MODE): Added.
9438         Adjust register allocate order and update some macro define.
9439         * config/score/score-mdaux.c (mdx_unaligned_load, mdx_unsigned_store,
9440         mdx_block_move_straight, mdx_block_move_loop_head,
9441         mdx_block_move_loop_body, mdx_block_move_loop_foot, mdx_block_move_loop,
9442         mdx_block_move): Added.
9443         (mdx_movsicc, mdp_select_add_imm, mdp_select, mds_zero_extract_andi,
9444         mdp_limm): Updated and fix some bug and typo.
9445         * config/score/score.md (movqi/hi/si, add/sub/zero/ext): Updated.
9446         (movsf, movdf, doloop_end): Added.
9447
9448 2007-01-08  Kazu Hirata  <kazu@codesourcery.com>
9449
9450         * config/arm/arm.c, config/arm/arm.h, config/arm/arm.md,
9451         config/arm/thumb2.md: Fix comment typos.
9452         * doc/extend.texi: Fix a typo.
9453
9454 2007-01-07  Eric Christopher  <echristo@apple.com>
9455
9456         * configure.ac: Check for __stack_chk_fail for darwin.
9457         * configure: Regenerate.
9458
9459 2007-01-07  Richard Guenther  <rguenther@suse.de>
9460
9461         * tree-vrp.c (extract_range_from_assert): CSE calls to
9462         compare_values where possible.
9463         (extract_range_from_unary_expr): Likewise.
9464
9465 2007-01-07  Anatoly Sokolov <aesok@post.ru>
9466
9467         * config/avr/avr-protos.h (call_insn_operand): Delete prototype.
9468         * config/avr/avr.c (call_insn_operand): Delete function.
9469         * config/avr/avr.md (*pushqi, *pushhi, *pushsi, *pushsf): Use REG_SP
9470         instead of register number. Use predicates.
9471         * config/avr/predicates.md (const0_operand, reg_or_0_operand,
9472         call_insn_operand): Add.
9473
9474 2007-01-06  Jan Hubicka  <jh@suse.cz>
9475
9476         * tree-pass.h (pass_build_cgraph_edges): Declare.
9477         * cgraphunit.c (record_refernece): Move to cgraphbuild.c
9478         (visited_nodes): Remove.
9479         (cgraph_create_edges): Move to cgraphbuild.c; rename to
9480         build_cgrpah_edges; make visited_nodes local.
9481         (cgraph_process_new_functions): DO not call initialize_inline_failed.
9482         (record_references_in_initializer): Move to cgraphbuild.c
9483         (initialize_inline_failed, rebuild_cgraph_edges,
9484         pass_rebuild_cgraph_edges): Move to cgraphbuild.c.
9485         (verify_cgraph_node): Make visited_nodes local.
9486         (cgraph_analyze_function): Do not call cgraph_create_edges and
9487         initialize_inline_failed.
9488         (cgraph_expand_function): Do not call cgraph_lower_function;
9489         assert that function is already lowered.
9490         * Makefile.in (cgraphbuild.o): New.
9491         * passes.c (init_optimization_passes): Add pass_build_cgraph_edges
9492         at the end of lowering passes.
9493
9494 2007-01-06  Steven Bosscher  <steven@gcc.gnu.org>
9495
9496         * ifcvt.c (cond_move_convert_if_block): New function, code
9497         factored out from...
9498         (cond_move_process_if_block): ...here.  Call the new function
9499         on the THEN and ELSE blocks.
9500         (merge_if_block): Do not copy global_live_at_end, merge_blocks
9501         already takes care of this.
9502
9503 2007-01-05  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
9504
9505         PR c/19978
9506         * tree.h (TREE_OVERFLOW_P): New.
9507         * c-typeck.c (parser_build_unary_op): Warn only if result
9508         overflowed and operands did not.
9509         (parser_build_binary_op): Likewise.
9510         (convert_for_assignment): Remove redundant overflow_warning.
9511         * c-common.c (overflow_warning): Don't check or set TREE_OVERFLOW.
9512
9513 2007-01-05  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
9514
9515         * c-typeck.c (store_init_value): Split over two lines to follow
9516         the GNU coding style.
9517
9518 2007-01-05  Benjamin Kosnik  <bkoz@redhat.com>
9519
9520         * c-cppbuiltin.c (c_cpp_builtins): __GXX_EXPERIMENTAL_CPP0X__ to
9521         __GXX_EXPERIMENTAL_CXX0X__.
9522         * doc/cpp.texi: Same.
9523
9524 2007-01-05  Richard Guenther  <rguenther@suse.de>
9525
9526         PR middle-end/27826
9527         * tree.c (get_narrower): Do not construct COMPONENT_REFs
9528         with mismatched types.  Instead explicitly build a
9529         conversion NOP_EXPR.
9530
9531 2007-01-05  Ian Lance Taylor  <iant@google.com>
9532
9533         * c-common.c (decl_with_nonnull_addr_p): New function.
9534         (c_common_truthvalue_conversion): Call it.
9535         * c-typeck.c (build_binary_op): Likewise.
9536         * c-common.h (decl_with_nonnull_addr_p): Declare.
9537
9538 2007-01-05  Jakub Jelinek  <jakub@redhat.com>
9539
9540         PR c/30360
9541         * libgcc2.c (__divdc3): Compare c and d against 0.0 instead of
9542         denom against 0.0.
9543
9544 2007-01-05  Joel Brobecker  <brobecker@adacore.com>
9545
9546         * doc/install.texi (Final install): Document the fact that
9547         the GNAT runtime should not be stripped.
9548
9549 2007-01-04  Jan Hubicka  <jh@suse.cz>
9550
9551         * tree-inline.c (fold_marked_statements): Update operand caches
9552         and EH after folding
9553
9554 2007-01-04  Ian Lance Taylor  <iant@google.com>
9555
9556         * c-common.c (check_function_nonnull): Whitespace fix.
9557
9558 2007-01-04  Jan Hubicka  <jh@suse.cz>
9559
9560         * tree-optimize.c (execute_fixup_cfg): Correct previously mistakely
9561         comitted older version of patch.
9562         (pass_fixup_cfg): Add TODOs to verify flow and statements, dump
9563         function, celanup cfg and collect garbage.
9564
9565 2007-01-04  Mike Stump  <mrs@apple.com>
9566
9567         * Makefile.in (mostlyclean): Don't remove libgcc anymore.
9568         (clean): Likewise.
9569
9570 2007-01-04  Eric Christopher  <echristo@apple.com>
9571
9572         * libgcc2.c (__bswapsi2): Use SItype.
9573         (__bswapdi2): Use DItype.
9574         * libgcc2.h: Update for above.
9575
9576 2007-01-04  Paul Brook  <paul@codesourcery.com>
9577
9578         * config/arm/arm.md (arm_mulsi3, thumb_mulsi3, mulsi3_compare0,
9579         mulsi_compare0_scratch, mulsi3addsi, mulsi3addsi_compare0,
9580         mulsi3addsi_compare0_scratch, mulsidi3adddi, mulsidi3,
9581         umulsidi3, umulsidi3adddi, smulsi3_highpart,
9582         umulsi3_highpart): Make conditional on !arm_arch6.
9583         (arm_mulsi3_v6, thumb_mulsi3_v6, mulsi3_compare0_v6,
9584         mulsi_compare0_scratch_v6, mulsi3addsi_v6, mulsi3addsi_compare0_v6,
9585         mulsi3addsi_compare0_scratch_v6, mulsidi3adddi_v6, mulsidi3_v6,
9586         umulsidi3_v6, umulsidi3adddi_v6, smulsi3_highpart_v6,
9587         umulsi3_highpart_v6): New insns.
9588
9589 2007-01-04  Roger Sayle  <roger@eyesopen.com>
9590
9591         * fold-const.c (fold_convert): When casting an expression to void,
9592         fold_ignored_result may discover a GIMPLE_MODIFY_STMT which doesn't
9593         have a type.  Instead of attempting to build a NOP_EXPR, return
9594         these "special" trees directly.
9595
9596 2007-01-04  Joseph Myers  <joseph@codesourcery.com>
9597
9598         * config/rs6000/rs6000.c (rs6000_rtx_costs): Make adjustment for
9599         MULT inside MINUS as either argument.  Use rs6000_cost->dmul -
9600         rs6000_cost->fp not 0 as adjustment for outer NEG.
9601
9602 2007-01-04  Jan Hubicka  <jh@suse.cz>
9603
9604         * cgraph.c (cgraph_release_function_body): New function.
9605         (cgraph_remove_node): Use it.
9606         * cgraph.h (cgraph_release_function_body): Declare.
9607         * cgraphunit.c (cgraph_expand_function): Use it.
9608         * ipa.c (cgraph_remove_unreahchable_nodes): Use it.
9609         * tree-ssa.c (delete_tree_ssa): Allow to be called before aliasing
9610         is initialized and while compilation of other function is running.
9611         * tree-optimize.c (execute_free_cfg_annotations): Move code to clear
9612         statement CFG annotations from here to ...
9613         * tree-cfg.c (delete_tree_cfg_annotations): ... here.
9614
9615 2007-01-04  Zdenek Dvorak <dvorakz@suse.cz>
9616
9617         * cfgloop.h (enum li_flags): Make the constants powers of two.
9618
9619 2007-01-04  Jan Hubicka  <jh@suse.cz>
9620
9621         * tree-inline.c (copy_bb): Insert new statements to statements_to_fold
9622         set.
9623         (fold_marked_statements): New function.
9624         (optimize_inline_calls, tree_function_versioning): Fold new statements.
9625         * tree-inline.h (copy_body_data): Add statements_to_fold.
9626
9627 2007-01-03  Daniel Jacobowitz  <dan@codesourcery.com>
9628
9629         * config.gcc: Mention libgcc/config.host.
9630         * Makefile.in: Update comments mentioning libgcc.
9631         (LIBGCC, INSTALL_LIBGCC, GCC_PARTS, mklibgcc): Delete.
9632         (all.cross, start.encap, rest.encap, rest.cross): Update
9633         dependencies for libgcc move.
9634         (libgcc.mk, LIBGCC_DEPS, libgcov.a, libgcc.a, stmp-multilib)
9635         (clean-target, clean-target-libgcc): Delete.
9636         (srcdirify, GCC_EXTRA_PARTS): New macros.
9637         (libgcc-support, libgcc.mvars): New rules.
9638         (distclean): Remove mention of mklibgcc.
9639         (install): Don't reference INSTALL_LIBGCC.
9640         (install-common): Don't reference EXTRA_PARTS.
9641         (install-libgcc, install-multilib): Delete rules.
9642         * mklibgcc.in: Delete file.
9643         * doc/configfiles.texi: Don't mention mklibgcc.
9644
9645         * config/i386/t-darwin (SHLIB_VERPFX): Delete (moved to libgcc).
9646         * config/i386/t-darwin64 (SHLIB_VERPFX): Likewise.
9647         * config/rs6000/t-darwin (SHLIB_VERPFX): Likewise.
9648         * config/rs6000/t-ppccomm (TARGET_LIBGCC2_CFLAGS, SHLIB_MAPFILES)
9649         (mklibgcc, ldblspecs): Likewise.
9650
9651         * config/i386/t-nwld (libgcc.def, libc.def, libpcre.def)
9652         (posixpre.def): Use $(T).
9653         (SHLIB_EXT, SHLIB_NAME, SHLIB_SLIBDIR_QUAL, SHLIB_DEF, SHLIB_MAP)
9654         (SHLIB_SRC, SHLIB_INSTALL): Delete.
9655         (SHLIB_LINK): Make dummy.
9656         * config/t-slibgcc-darwin: Delete contents except for dummy SHLIB_LINK.
9657
9658         * config/frv/t-linux (EXTRA_MULTILIB_PARTS): Clear.
9659
9660         * config/alpha/t-crtfm: Use $(T) in rules for EXTRA_PARTS.
9661         * config/alpha/t-vms, config/alpha/t-vms64, config/fr30/t-fr30,
9662         config/i386/t-rtems-i386, config/ia64/t-ia64, config/rs6000/t-beos,
9663         config/rs6000/t-newas, config/sparc/t-elf: Likewise.
9664
9665         * configure.ac (all_outputs): Remove mklibgcc.
9666         * configure: Regenerated.
9667
9668 2007-01-03  Josh Conner  <jconner@apple.com>
9669
9670         PR middle-end/29683
9671         * calls.c (compute_argument_addresses): Set stack and stack_slot
9672         for partial args, too.
9673         (store_one_arg): Use locate.size.constant for the size when
9674         generating a save_area.
9675
9676 2007-01-03  Robert Kennedy <jimbob@google.com>
9677
9678         * tree-cfg.c (tree_merge_blocks): Release SSA_NAME phi results
9679         whose definitions are deleted due to basic block merging.
9680
9681 2007-01-03  Paul Brook  <paul@codesourcery.com>
9682
9683         PR target/16634
9684         * config/arm/arm.c (output_return_instruction): Pop PC in interrupt
9685         functions.
9686         (use_return_insn): Return 0 for Thumb interrupt functions.
9687         (print_multi_reg): Add rfe argument for IRQ returns.
9688         (arm_output_epilogue): Pop interrupt return address directly into PC.
9689         (arm_expand_prologue): Only adjust IRQ return address in Arm mode.
9690
9691 2007-01-03  Paul Brook  <paul@codesourcery.com>
9692
9693         Merge from sourcerygxx-4_1.
9694         * config/arm/thumb2.md: New file.
9695         * config/arm/elf.h (JUMP_TABLES_IN_TEXT_SECTION): Return True for
9696         Thumb-2.
9697         * config/arm/coff.h (JUMP_TABLES_IN_TEXT_SECTION): Ditto.
9698         * config/arm/aout.h (ASM_OUTPUT_ADDR_VEC_ELT): Add !Thumb-2 assertion.
9699         (ASM_OUTPUT_ADDR_DIFF_ELT): Output Thumb-2 jump tables.
9700         * config/arm/aof.h (ASM_OUTPUT_ADDR_DIFF_ELT): Output Thumb-2 jump
9701         tables.
9702         (ASM_OUTPUT_ADDR_VEC_ELT): Add !Thumb-2 assertion.
9703         * config/arm/ieee754-df.S: Use macros for Thumb-2/Unified asm
9704         comptibility.
9705         * config/arm/ieee754-sf.S: Ditto.
9706         * config/arm/arm.c (thumb_base_register_rtx_p): Rename...
9707         (thumb1_base_register_rtx_p): ... to this.
9708         (thumb_index_register_rtx_p): Rename...
9709         (thumb1_index_register_rtx_p): ... to this.
9710         (thumb_output_function_prologue): Rename...
9711         (thumb1_output_function_prologue): ... to this.
9712         (thumb_legitimate_address_p): Rename...
9713         (thumb1_legitimate_address_p): ... to this.
9714         (thumb_rtx_costs): Rename...
9715         (thumb1_rtx_costs): ... to this.
9716         (thumb_compute_save_reg_mask): Rename...
9717         (thumb1_compute_save_reg_mask): ... to this.
9718         (thumb_final_prescan_insn): Rename...
9719         (thumb1_final_prescan_insn): ... to this.
9720         (thumb_expand_epilogue): Rename...
9721         (thumb1_expand_epilogue): ... to this.
9722         (arm_unwind_emit_stm): Rename...
9723         (arm_unwind_emit_sequence): ... to this.
9724         (thumb2_legitimate_index_p, thumb2_legitimate_address_p,
9725         thumb1_compute_save_reg_mask, arm_dwarf_handle_frame_unspec,
9726         thumb2_index_mul_operand, output_move_vfp, arm_shift_nmem,
9727         arm_save_coproc_regs, thumb_set_frame_pointer, arm_print_condition,
9728         thumb2_final_prescan_insn, thumb2_asm_output_opcode, arm_output_shift,
9729         thumb2_output_casesi): New functions.
9730         (TARGET_DWARF_HANDLE_FRAME_UNSPEC): Define.
9731         (FL_THUMB2, FL_NOTM, FL_DIV, FL_FOR_ARCH6T2, FL_FOR_ARCH7,
9732         FL_FOR_ARCH7A, FL_FOR_ARCH7R, FL_FOR_ARCH7M, ARM_LSL_NAME,
9733         THUMB2_WORK_REGS): Define.
9734         (arm_arch_notm, arm_arch_thumb2, arm_arch_hwdiv, arm_condexec_count,
9735         arm_condexec_mask, arm_condexec_masklen)): New variables.
9736         (all_architectures): Add armv6t2, armv7, armv7a, armv7r and armv7m.
9737         (arm_override_options): Check new CPU capabilities.
9738         Set new architecture flag variables.
9739         (arm_isr_value): Handle v7m interrupt functions.
9740         (user_return_insn): Return 0 for v7m interrupt functions.  Handle
9741         Thumb-2.
9742         (const_ok_for_arm): Handle Thumb-2 constants.
9743         (arm_gen_constant): Ditto.  Use movw when available.
9744         (arm_function_ok_for_sibcall): Return false for v7m interrupt
9745         functions.
9746         (legitimize_pic_address, arm_call_tls_get_addr): Handle Thumb-2.
9747         (thumb_find_work_register, arm_load_pic_register,
9748         legitimize_tls_address, arm_address_cost, load_multiple_sequence,
9749         emit_ldm_seq, emit_stm_seq, arm_select_cc_mode, get_jump_table_size,
9750         print_multi_reg, output_mov_long_double_fpa_from_arm,
9751         output_mov_long_double_arm_from_fpa, output_mov_double_fpa_from_arm,
9752         output_mov_double_fpa_from_arm, output_move_double,
9753         arm_compute_save_reg_mask, arm_compute_save_reg0_reg12_mask,
9754         output_return_instruction, arm_output_function_prologue,
9755         arm_output_epilogue, arm_get_frame_offsets, arm_regno_class,
9756         arm_output_mi_thunk, thumb_set_return_address): Ditto.
9757         (arm_expand_prologue): Handle Thumb-2.  Use arm_save_coproc_regs.
9758         (arm_coproc_mem_operand): Allow POST_INC/PRE_DEC.
9759         (arithmetic_instr, shift_op): Use arm_shift_nmem.
9760         (arm_print_operand): Use arm_print_condition.  Handle '(', ')', '.',
9761         '!' and 'L'.
9762         (arm_final_prescan_insn): Use extract_constrain_insn_cached.
9763         (thumb_expand_prologue): Use thumb_set_frame_pointer.
9764         (arm_file_start): Output directive for unified syntax.
9765         (arm_unwind_emit_set): Handle stack alignment instruction.
9766         * config/arm/lib1funcs.asm: Remove default for __ARM_ARCH__.
9767         Add v6t2, v7, v7a, v7r and v7m.
9768         (RETLDM): Add Thumb-2 code.
9769         (do_it, shift1, do_push, do_pop, COND, THUMB_SYNTAX): New macros.
9770         * config/arm/arm.h (TARGET_CPU_CPP_BUILTINS): Define __thumb2__.
9771         (TARGET_THUMB1, TARGET_32BIT, TARGET_THUMB2, TARGET_DSP_MULTIPLY,
9772         TARGET_INT_SIMD, TARGET_UNIFIED_ASM, ARM_FT_STACKALIGN, IS_STACKALIGN,
9773         THUMB2_TRAMPOLINE_TEMPLATE, TRAMPOLINE_ADJUST_ADDRESS,
9774         ASM_OUTPUT_OPCODE, THUMB2_GO_IF_LEGITIMATE_ADDRESS,
9775         THUMB2_LEGITIMIZE_ADDRESS, CASE_VECTOR_PC_RELATIVE,
9776         CASE_VECTOR_SHORTEN_MODE, ADDR_VEC_ALIGN, ASM_OUTPUT_CASE_END,
9777         ADJUST_INSN_LENGTH): Define.
9778         (TARGET_REALLY_IWMMXT, TARGET_IWMMXT_ABI, CONDITIONAL_REGISTER_USAGE,
9779         STATIC_CHAIN_REGNUM, HARD_REGNO_NREGS, INDEX_REG_CLASS,
9780         BASE_REG_CLASS, MODE_BASE_REG_CLASS, SMALL_REGISTER_CLASSES,
9781         PREFERRED_RELOAD_CLASS, SECONDARY_OUTPUT_RELOAD_CLASS,
9782         SECONDARY_INPUT_RELOAD_CLASS, LIBCALL_VALUE, FUNCTION_VALUE_REGNO_P,
9783         TRAMPOLINE_SIZE, INITIALIZE_TRAMPOLINE, HAVE_PRE_INCREMENT,
9784         HAVE_POST_DECREMENT, HAVE_PRE_DECREMENT, HAVE_PRE_MODIFY_DISP,
9785         HAVE_POST_MODIFY_DISP, HAVE_PRE_MODIFY_REG, HAVE_POST_MODIFY_REG,
9786         REGNO_MODE_OK_FOR_BASE_P, LEGITIMATE_CONSTANT_P,
9787         REG_MODE_OK_FOR_BASE_P, REG_OK_FOR_INDEX_P, GO_IF_LEGITIMATE_ADDRESS,
9788         LEGITIMIZE_ADDRESS, THUMB2_LEGITIMIZE_ADDRESS,
9789         GO_IF_MODE_DEPENDENT_ADDRESS, MEMORY_MOVE_COST, BRANCH_COST,
9790         ASM_APP_OFF, ASM_OUTPUT_CASE_LABEL, ARM_DECLARE_FUNCTION_NAME,
9791         FINAL_PRESCAN_INSN, PRINT_OPERAND_PUNCT_VALID_P,
9792         PRINT_OPERAND_ADDRESS): Adjust for Thumb-2.
9793         (arm_arch_notm, arm_arch_thumb2, arm_arch_hwdiv): New declarations.
9794         * config/arm/arm-cores.def: Add arm1156t2-s, cortex-a8, cortex-r4 and
9795         cortex-m3.
9796         * config/arm/arm-tune.md: Regenerate.
9797         * config/arm/arm-protos.h: Update prototypes.
9798         * config/arm/vfp.md: Enable patterns for Thumb-2.
9799         (arm_movsi_vfp): Add movw alternative.  Use output_move_vfp.
9800         (arm_movdi_vfp, movsf_vfp, movdf_vfp): Use output_move_vfp.
9801         (thumb2_movsi_vfp, thumb2_movdi_vfp, thumb2_movsf_vfp,
9802         thumb2_movdf_vfp, thumb2_movsfcc_vfp, thumb2_movdfcc_vfp): New.
9803         * config/arm/libunwind.S: Add Thumb-2 code.
9804         * config/arm/constraints.md: Update include Thumb-2.
9805         * config/arm/ieee754-sf.S: Add Thumb-2/Unified asm support.
9806         * config/arm/ieee754-df.S: Ditto.
9807         * config/arm/bpabi.S: Ditto.
9808         * config/arm/t-arm (MD_INCLUDES): Add thumb2.md.
9809         * config/arm/predicates.md (low_register_operand,
9810         low_reg_or_int_operand, thumb_16bit_operator): New.
9811         (thumb_cmp_operand, thumb_cmpneg_operand): Rename...
9812         (thumb1_cmp_operand, thumb1_cmpneg_operand): ... to this.
9813         * config/arm/t-arm-elf: Add armv7 multilib.
9814         * config/arm/arm.md: Update patterns for Thumb-2 and Unified asm.
9815         Include thumb2.md.
9816         (UNSPEC_STACK_ALIGN, ce_count): New.
9817         (arm_incscc, arm_decscc, arm_umaxsi3, arm_uminsi3,
9818         arm_zero_extendsidi2, arm_zero_extendqidi2): New
9819         insns/expanders.
9820         * config/arm/fpa.md: Update patterns for Thumb-2 and Unified asm.
9821         (thumb2_movsf_fpa, thumb2_movdf_fpa, thumb2_movxf_fpa,
9822         thumb2_movsfcc_fpa, thumb2_movdfcc_fpa): New insns.
9823         * config/arm/cirrus.md: Update patterns for Thumb-2 and Unified asm.
9824         (cirrus_thumb2_movdi, cirrus_thumb2_movsi_insn,
9825         thumb2_cirrus_movsf_hard_insn, thumb2_cirrus_movdf_hard_insn): New
9826         insns.
9827         * doc/extend.texi: Document ARMv7-M interrupt functions.
9828         * doc/invoke.texi: Document Thumb-2 new cores+architectures.
9829
9830 2007-01-03  Jakub Jelinek  <jakub@redhat.com>
9831
9832         * unwind-dw2.c (SIGNAL_FRAME_BIT, EXTENDED_CONTEXT_BIT): Define.
9833         (struct _Unwind_Context): Rename args_size to flags, remove
9834         signal_frame field, add a new args_size field and version field.
9835         (_Unwind_IsSignalFrame, _Unwind_SetSignalFrame,
9836         _Unwind_IsExtendedContext): New inline functions.
9837         (_Unwind_GetGR, _Unwind_SetGR, _Unwind_GetGRPtr, _Unwind_SetGRPtr):
9838         Assume by_value array is only present if _Unwind_IsExtendedContext.
9839         (_Unwind_GetIPInfo, execute_cfa_program, uw_frame_state_for): Use
9840         _Unwind_IsSignalFrame.
9841         (__frame_state_for): Initialize context.flags to EXTENDED_CONTEXT_BIT.
9842         (uw_update_context_1): Use _Unwind_SetSignalFrame.
9843         (uw_init_context_1): Initialize context->flags to
9844         EXTENDED_CONTEXT_BIT.
9845         * config/rs6000/linux-unwind.h (frob_update_context): Use
9846         _Unwind_SetSignalFrame.
9847
9848 2007-01-03  Andrew Pinski  <andrew_pinski@playstation.sony.com>
9849
9850         PR middle-end/30353
9851         * gimplify.c (gimplify_modify_expr_complex_part): Move below
9852         tree_to_gimple_tuple.  Call tree_to_gimple_tuple when we need
9853         the value.
9854
9855 2007-01-03  Kazu Hirata  <kazu@codesourcery.com>
9856
9857         * config/i386/i386.h (NON_STACK_REG_P, REGNO_OK_FOR_SIREG_P,
9858         REGNO_OK_FOR_DIREG_P, REWRITE_ADDRESS, ASM_OPERAND_LETTER,
9859         RET, AT_SP): Remove.
9860         * config/i386/i386.md (*sse_prologue_save_insn): Use return
9861         instead of RET.
9862
9863         * alias.c (init_alias_analysis): Use VEC_safe_grow_cleared.
9864         * cfgbuild.c (find_basic_blocks): Likewise.
9865         * cfgrtl.c (rtl_create_basic_block): Likewise.
9866         * function.c (temp_slots_at_level): Likewise.
9867         * reg-stack.c (stack_regs_mentioned): Likewise.
9868         * regclass.c (allocate_reg_info): Likewise.
9869         * tree-cfg.c (init_empty_tree_cfg, build_tree_cfg, create_bb,
9870         set_bb_for_stmt, move_block_to_fn): Likewise.
9871         * tree-complex.c (tree_lower_complex): Likewise.
9872         * vec.h (VEC_safe_grow_cleared): New.
9873
9874         * cgraphunit.c, tree-ssa-alias.c: Fix comment typos.
9875
9876 2007-01-03  Zdenek Dvorak <dvorakz@suse.cz>
9877
9878         * loop-unswitch.c (unswitch_loop): Pass probabilities to loopify.
9879         * tree-ssa-loop-unswitch.c (tree_unswitch_loop): Pass probabilities
9880         to loop_version.
9881         * cfgloopmanip.c (scale_loop_frequencies): Export.
9882         (loopify): Scale the frequencies by prescribed coefficients.
9883         (set_zero_probability): New function.
9884         (duplicate_loop_to_header_edge): Improve updating of frequencies.
9885         (lv_adjust_loop_entry_edge, loop_version): Set probabilities
9886         and frequencies according to arguments.
9887         * tree-ssa-loop-manip.c (tree_unroll_loop): Set probabilities
9888         correctly.
9889         * cfg.c (scale_bbs_frequencies_int): Allow scaling the frequencies up.
9890         * modulo-sched.c (sms_schedule): Set probabilities for entering
9891         versioned loop correctly.
9892         * tree-vect-transform.c (vect_transform_loop): Ditto.
9893         * cfgloop.h (loopify, loop_version): Declaration changed.
9894         (scale_loop_frequencies): Declared.
9895
9896 2007-01-02  Jan Hubicka  <jh@suse.cz>
9897
9898         * cgraph.c: Include tree-flow.h
9899         (cgraph_add_new-function): Handle IPA_SSA mode; execute
9900         early_local_passes.
9901         * cgraph.h (enum cgraph_state): Add CGRAPH_STATE_IPA_SSA.
9902         * tree-pass.h (pass_all_early_optimizations): Declare.
9903         * cgraphunit.c (cgraph_process_new_functions): Add IPA_SSA; execute
9904         early_local_passes.
9905         (cgraph_analyze_function): Do early_local_passes.
9906         * tree-mudflap.c (mf_decl_cache_locals, mf_build_check_statement_for):
9907         Do not add referenced vars.
9908         * tree-optimize.c (gate_all_optimizations): Do not execute when not in
9909         SSA form.
9910         (gate_all_early_local_passes): New gate.
9911         (pass_early_local_passes): Use new gate.
9912         (execute_early_local_optimizations): New functions.
9913         (gate_all_early_optimizations): New gate.
9914         (pass_all_early_optimizations): New pass.
9915         (execute_free_datastructures): Free SSA only when initialized.
9916         (gate_init_datastructures): Init only when optimizing.
9917         (tree_lowering_passes): Do early local passes when called late.
9918         * tree-profile.c (do_tree_profiling): Don't profile functions added
9919         late.
9920         (do_early_tree_profiling, pass_early_tree_profile): Kill.
9921         * tree-cfg.c (update_modified_stmts): Do not update when operands are
9922         not active.
9923         * passes.c (init_optimizations_passes): Reorder so we go into SSA
9924         during early_local_passes.
9925         * Makefile.in (cgraph.o): Add dependency on tree-flow.h.
9926
9927
9928 2007-01-02  Carlos O'Donell  <carlos@codesourcery.com>
9929
9930         * Makefile.in: Update copyright year.
9931
9932 2007-01-02  Carlos O'Donell  <carlos@codesourcery.com>
9933
9934         * Makefile.in: Export GCC_EXEC_PREFIX before calling $(RUNTEST)
9935         in $(lang_checks) and check-consistency targets.
9936
9937 2007-01-02  Jan Hubicka  <jh@suse.cz>
9938
9939         * tree-mudflap.c (mf_decl_cache_locals, mf_build_check_statement_for):
9940         Do not add referenced vars.
9941         * tree-cfg.c (update_modified_stmts): Do not update when SSA operands
9942         are not active.
9943         * passes.c (init_optimization_passes): Put mudflap_2 after
9944         free_datastructures.
9945
9946 2007-01-02  Jan Hubicka  <jh@suse.cz>
9947
9948         * tree-optimize (execute_fixup_cfg): Set after_inlining flag.
9949         Set NOTHROW flag on call statements proved to be nothrow.
9950         Update statement of local calls so new pure/const functions are
9951         updated. Update_ssa when in ssa form. Mark PHI nodes of nonlocal
9952         goto receivers.
9953         (tree_rest_of_compilation): Register hooks and initialize bitmap
9954         early. Do not set after_inlining flag.
9955
9956 2007-01-02  Steve Ellcey  <sje@cup.hp.com>
9957
9958         * sbitmap.c (HOST_BITS_PER_LONG_LONG):  Change to
9959         HOST_BITS_PER_LONGLONG
9960
9961 2007-01-02  Manuel Lopez-Ibanez <manu@gcc.gnu.org>
9962
9963         PR c/19977
9964         * c-typeck.c (store_init_value): Don't emit pedantic overflow
9965         warning for non-static initializers.
9966
9967 2007-01-02  Steven Bosscher  <steven@gcc.gnu.org>
9968
9969         * config/alpha/alpha.md, arm/arm.c, darwin.c, frv/frv.md,
9970         m32r/m32r.c, m32r/m32r.c, mn10300/mn10300.md, pa/pa.c,
9971         rs6000/rs6000.c, s390/s390.md, sh/sh.md, sparc/sparc.c:
9972         Always use set_unique_reg_note to add REG_EQUAL notes.
9973
9974 2007-01-02  Kazu Hirata  <kazu@codesourcery.com>
9975
9976         Revert:
9977         2007-01-02  Kazu Hirata  <kazu@codesourcery.com>
9978
9979         * alias.c (init_alias_analysis): Use VEC_safe_grow_cleared.
9980         * cfgbuild.c (find_basic_blocks): Likewise.
9981         * cfgrtl.c (rtl_create_basic_block): Likewise.
9982         * function.c (temp_slots_at_level): Likewise.
9983         * reg-stack.c (stack_regs_mentioned): Likewise.
9984         * regclass.c (allocate_reg_info): Likewise.
9985         * tree-cfg.c (init_empty_tree_cfg, build_tree_cfg, create_bb,
9986         set_bb_for_stmt, move_block_to_fn): Likewise.
9987         * tree-complex.c (tree_lower_complex): Likewise.
9988         * vec.h (VEC_safe_grow_cleared): New.
9989
9990 2007-01-02  Ian Lance Taylor  <iant@google.com>
9991
9992         * c-common.c (c_common_truthvalue_conversion): When warning about
9993         using an assignment as a truth value, set TREE_NO_WARNING.
9994
9995 2007-01-02  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
9996
9997         PR middle-end/7651
9998         * c.opt (Wold-style-declaration): New.
9999         * doc/invoke.texi (C-only Warning Options): New.
10000         (Wold-style-declaration): Document it.
10001         (Wextra): Enabled by -Wextra.
10002         * c-opts.c (c_common_post_options): Enabled by -Wextra.
10003         * c-decl.c (declspecs_add_scspec): Replace -Wextra with
10004         -Wold-style-declaration.
10005
10006 2007-01-02  Kazu Hirata  <kazu@codesourcery.com>
10007
10008         * alias.c (init_alias_analysis): Use VEC_safe_grow_cleared.
10009         * cfgbuild.c (find_basic_blocks): Likewise.
10010         * cfgrtl.c (rtl_create_basic_block): Likewise.
10011         * function.c (temp_slots_at_level): Likewise.
10012         * reg-stack.c (stack_regs_mentioned): Likewise.
10013         * regclass.c (allocate_reg_info): Likewise.
10014         * tree-cfg.c (init_empty_tree_cfg, build_tree_cfg, create_bb,
10015         set_bb_for_stmt, move_block_to_fn): Likewise.
10016         * tree-complex.c (tree_lower_complex): Likewise.
10017         * vec.h (VEC_safe_grow_cleared): New.
10018
10019 2007-01-02  Douglas Gregor  <doug.gregor@gmail.com>
10020
10021         * c-common.c (c_common_nodes_and_builtins): Since variants of
10022         void_type_node get built before it is given a name, we need to
10023         give those variants the name, too.
10024         (complete_array_type): We need to work with the canonical main
10025         type of the array, from which we will build the qualified version.
10026         * params.def (PARAM_VERIFY_CANONICAL_TYPES): New.
10027         * print-tree.c (print_node): Display canonical type information
10028         for each type.
10029         * stor-layout.c (layout_type): When we don't know the
10030         alignment of a type for which we're building an array, we end up
10031         guessing wrong, so make the type require structural equality.
10032         * tree.c (make_node_stat): When we build a new type, it is its
10033         own canonical type.
10034         (build_type_attribute_qual_variant): When building an attribute
10035         variant, its canonical type is the non-attribute variant. However,
10036         if the attributes are target-dependent and they differ, we need to
10037         use structural equality checks for this type.
10038         (build_qualified_type): A qualified type is not equivalent to its
10039         unqualified variant; set the canonical type appropriately.
10040         (build_distinct_type_copy): When building a distinct type from
10041         another type, the new type is its own canonical type.
10042         (build_variant_type_copy): When building a new type variant, we
10043         assume that it is equivalent to the original type.
10044         (build_pointer_type_for_mode): When building a pointer type, also
10045         build a canonical type pointer.
10046         (build_reference_type_for_mode): When building a reference type,
10047         also build a canonical type reference.
10048         (build_index_type): When we can't hash an index type (e.g.,
10049         because its maximum value is negative), the index type requires
10050         structural equality tests.
10051         (build_array_type): Build the canonical form of an array type.
10052         (build_function_type): Function types require structural equality,
10053         because they contain default arguments, attributes, etc.
10054         (build_method_type_directly): Ditto for method types.
10055         (build_offset_type): Build the canonical offset type.
10056         (build_complex_type): Build the canonical vector type.
10057         (make_vector_type): Build the canonical vector type.
10058         * tree.h (TYPE_CANONICAL): New.
10059         (TYPE_STRUCTURAL_EQUALITY_P): New.
10060         (SET_TYPE_STRUCTURAL_EQUALITY): New.
10061         (struct tree_type): Added "canonical" field.
10062         * params.h (VERIFY_CANONICAL_TYPES): New.
10063         * doc/c-tree.texi (TYPE_CANONICAL): Document.
10064         (TYPE_STRUCTURAL_EQUALITY_P): Document.
10065         (SET_TYPE_STRUCTURAL_EQUALITY): Document.
10066         * doc/invoke.texi (verify-canonical-types): Document --param
10067         parameter for verifying canonical types.
10068
10069 2007-01-02  Joseph Myers  <joseph@codesourcery.com>
10070
10071         * config.gcc (powerpc-*-eabispe*, powerpc-*-eabisimaltivec*,
10072         powerpc-*-eabisim*, powerpc-*-eabialtivec*, powerpc-*-eabi*,
10073         powerpc-*-rtems*, powerpc-wrs-vxworks, powerpc-wrs-vxworksae,
10074         powerpcle-*-eabisim*, powerpcle-*-eabi*): Add rs6000/e500.h to
10075         tm_file.
10076         * config/rs6000/e500.h: New.
10077         * config/rs6000/eabi.h (TARGET_SPE_ABI, TARGET_SPE, TARGET_E500,
10078         TARGET_ISEL, TARGET_FPRS, TARGET_E500_SINGLE, TARGET_E500_DOUBLE):
10079         Remove.
10080         * config/rs6000/linuxspe.h (TARGET_SPE_ABI, TARGET_SPE,
10081         TARGET_E500, TARGET_ISEL, TARGET_FPRS, TARGET_E500_SINGLE,
10082         TARGET_E500_DOUBLE): Remove.
10083         * config/rs6000/vxworks.h (TARGET_SPE_ABI, TARGET_SPE,
10084         TARGET_E500, TARGET_ISEL, TARGET_FPRS): Remove.
10085         * config/rs6000/rs6000.h (CHECK_E500_OPTIONS): Define.
10086         * config/rs6000/rs6000.c (rs6000_override_options): Use
10087         CHECK_E500_OPTIONS.
10088
10089 2007-01-02  Joseph Myers  <joseph@codesourcery.com>
10090
10091         * config/rs6000/rs6000.c (print_operand): Check (TARGET_SPE ||
10092         TARGET_E500_DOUBLE), not TARGET_E500, for %y.
10093         (rs6000_generate_compare, rs6000_emit_sCOND, output_cbranch,
10094         rs6000_emit_cmove): Don't check TARGET_E500.
10095         * config/rs6000/rs6000.md (bunordered, bordered, sunordered,
10096         sordered): Don't check TARGET_E500.
10097
10098 2007-01-01  Eric Christopher  <echristo@apple.com>
10099
10100         * config/mips/mips.c (mips_regno_mode_ok_for_base_p): Use
10101         HARD_REGISTER_NUM_P.
10102
10103 2007-01-01  Roger Sayle  <roger@eyesopen.com>
10104
10105         * fold-const.c (fold_binary) <EQ_EXPR>: Fold "(X^C1) eq/ne C2" into
10106         "X eq/ne (C1^C2)".  Fold "(X^Z) eq/ne (Y^Z)" as "X eq/ne Y" when Z
10107         has no side-effects.  Fold "(X^C1) eq/ne (Y^C2)" as "(X^(C1^C2))
10108         eq/ne Y".
10109
10110 2007-01-01  Mike Stump  <mrs@apple.com>
10111
10112         * configure.ac: Remove support for building with Apple's gcc-3.1.
10113
10114 2007-01-02  Joseph Myers  <joseph@codesourcery.com>
10115
10116         PR middle-end/30311
10117         * caller-save.c (add_stored_regs): Only handle SUBREGs if inner
10118         REG is a hard register.  Do not modify REG before calling
10119         subreg_nregs.
10120         * rtlanal.c (subreg_get_info): Don't assert size of XMODE is a
10121         multiple of the size of YMODE for certain lowpart cases.
10122
10123 2007-01-01  Andrew Pinski  <pinskia@gmail.com>
10124
10125         PR middle-end/30253
10126         * gimplify (voidify_wrapper_expr): Update for
10127         GIMPLE_MODIFY_STMT.
10128
10129 2007-01-01  Andreas Schwab  <schwab@suse.de>
10130
10131         PR target/29166
10132         * config/ia64/ia64.c (ia64_compute_frame_size): Account space for
10133         save of BR0 in extra_spill_size instead of spill_size.
10134         (ia64_expand_prologue): Save BR0 outside of the gr/br/fr spill
10135         area.
10136         (ia64_expand_epilogue): Restore BR0 from its new location.
10137
10138 2007-01-01  Andrew Pinski  <pinskia@gmail.com>
10139
10140         * gimplify.c (gimplify_init_constructor <case VECTOR_TYPE>):
10141         Use a temporary variable if the left hand side is not a gimple
10142         register.
10143
10144 2007-01-01  Andrew Pinski  <pinskia@gmail.com>
10145
10146         * gimplify.c (gimplify_return_expr): Make the temporary variable
10147         for the return expression, a gimple register variable.
10148
10149 2007-01-01  Jan Hubicka  <jh@suse.cz>
10150
10151         * emit-rtl.c (emit_copy_of_insn_after): Do not call copy_insn_1 for
10152         INSN_LIST.
10153
10154 2007-01-01  Mike Stump  <mrs@apple.com>
10155
10156         * configure.ac (HAVE_GAS_LITERAL16): Add autoconf check for
10157         .literal16.
10158         * config/darwin.c (machopic_select_rtx_section): Use
10159         HAVE_GAS_LITERAL16.
10160         (darwin_mergeable_constant_section): Likewise.
10161         * configure: Regenerate.
10162         * config.in: Regenerate.
10163
10164 2007-01-01  Jan Hubicka  <jh@suse.cz>
10165             Andrew Pinski  <pinskia@gmail.com>
10166
10167         * cgraphunit.c (cgraph_optimize): Call cgraph_add_new_functions
10168         before starting IPA passes.